From 0898be5750a9e5f0cfab566a34b65e4a227d82e6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 31 Jan 2011 22:54:36 +0000 Subject: [PATCH 001/192] Change SimianGroupsServicesConnectorModule.GetAgentGroupMembership() so that it returns null if the user isn't a member of the group. This matches the behaviour of the same method for Flotsam Groups. This is the behaviour assumed by existing code. Method doc also added to IGroupsServicesConnector to the make the contract clear. --- .../XmlRpcGroups/IGroupsServicesConnector.cs | 19 ++++++ .../SimianGroupsServicesConnectorModule.cs | 66 +++++++++---------- 2 files changed, 52 insertions(+), 33 deletions(-) diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs index 5c779debc5..6d2607541e 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs @@ -63,7 +63,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups void SetAgentActiveGroupRole(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID); void SetAgentGroupInfo(UUID RequestingAgentID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile); + /// + /// Get information about a specific group to which the user belongs. + /// + /// The agent requesting the information. + /// The agent requested. + /// The group requested. + /// + /// If the user is a member of the group then the data structure is returned. If not, then null is returned. + /// GroupMembershipData GetAgentGroupMembership(UUID RequestingAgentID, UUID AgentID, UUID GroupID); + + /// + /// Get information about the groups to which a user belongs. + /// + /// The agent requesting the information. + /// The agent requested. + /// + /// Information about the groups to which the user belongs. If the user belongs to no groups then an empty + /// list is returned. + /// List GetAgentGroupMemberships(UUID RequestingAgentID, UUID AgentID); void AddGroupNotice(UUID RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket); diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs index 0d265f2501..81725c55c7 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs @@ -704,7 +704,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } } - return findings; } @@ -712,54 +711,55 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups { if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); - GroupMembershipData data = new GroupMembershipData(); - - /////////////////////////////// - // Agent Specific Information: - // - OSDMap UserActiveGroup; - if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup)) - { - data.Active = UserActiveGroup["GroupID"].AsUUID().Equals(groupID); - } + GroupMembershipData data = null; + bool foundData = false; OSDMap UserGroupMemberInfo; if (SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out UserGroupMemberInfo)) { + data = new GroupMembershipData(); data.AcceptNotices = UserGroupMemberInfo["AcceptNotices"].AsBoolean(); data.Contribution = UserGroupMemberInfo["Contribution"].AsInteger(); data.ListInProfile = UserGroupMemberInfo["ListInProfile"].AsBoolean(); - data.ActiveRole = UserGroupMemberInfo["SelectedRoleID"].AsUUID(); + data.ActiveRole = UserGroupMemberInfo["SelectedRoleID"].AsUUID(); + + /////////////////////////////// + // Agent Specific Information: + // + OSDMap UserActiveGroup; + if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup)) + { + data.Active = UserActiveGroup["GroupID"].AsUUID().Equals(groupID); + } /////////////////////////////// // Role Specific Information: // - OSDMap GroupRoleInfo; if (SimianGetGenericEntry(groupID, "GroupRole", data.ActiveRole.ToString(), out GroupRoleInfo)) { data.GroupTitle = GroupRoleInfo["Title"].AsString(); data.GroupPowers = GroupRoleInfo["Powers"].AsULong(); - } - } - - /////////////////////////////// - // Group Specific Information: - // - OSDMap GroupInfo; - string GroupName; - if (SimianGetFirstGenericEntry(groupID, "Group", out GroupName, out GroupInfo)) - { - data.GroupID = groupID; - data.AllowPublish = GroupInfo["AllowPublish"].AsBoolean(); - data.Charter = GroupInfo["Charter"].AsString(); - data.FounderID = GroupInfo["FounderID"].AsUUID(); - data.GroupName = GroupName; - data.GroupPicture = GroupInfo["InsigniaID"].AsUUID(); - data.MaturePublish = GroupInfo["MaturePublish"].AsBoolean(); - data.MembershipFee = GroupInfo["MembershipFee"].AsInteger(); - data.OpenEnrollment = GroupInfo["OpenEnrollment"].AsBoolean(); - data.ShowInList = GroupInfo["ShowInList"].AsBoolean(); + } + + /////////////////////////////// + // Group Specific Information: + // + OSDMap GroupInfo; + string GroupName; + if (SimianGetFirstGenericEntry(groupID, "Group", out GroupName, out GroupInfo)) + { + data.GroupID = groupID; + data.AllowPublish = GroupInfo["AllowPublish"].AsBoolean(); + data.Charter = GroupInfo["Charter"].AsString(); + data.FounderID = GroupInfo["FounderID"].AsUUID(); + data.GroupName = GroupName; + data.GroupPicture = GroupInfo["InsigniaID"].AsUUID(); + data.MaturePublish = GroupInfo["MaturePublish"].AsBoolean(); + data.MembershipFee = GroupInfo["MembershipFee"].AsInteger(); + data.OpenEnrollment = GroupInfo["OpenEnrollment"].AsBoolean(); + data.ShowInList = GroupInfo["ShowInList"].AsBoolean(); + } } return data; From 2344150b6e9dd056769f8ce565ec35243bef2538 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 19:39:33 +0000 Subject: [PATCH 002/192] Stop double counting dequeued packets for packets sent number This is already being incremented in LLUDPServer.SendPacketFinal for every packet --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index d4c33075eb..21bd99efe9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -441,13 +441,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// an outgoing packet from each, obeying the throttling bucket limits /// /// + /// /// Packet queues are inspected in ascending numerical order starting from 0. Therefore, queues with a lower /// ThrottleOutPacketType number will see their packet get sent first (e.g. if both Land and Wind queues have /// packets, then the packet at the front of the Land queue will be sent before the packet at the front of the /// wind queue). /// - /// This function is only called from a synchronous loop in the - /// UDPServer so we don't need to bother making this thread safe + /// This function is only called from a synchronous loop in the + /// UDPServer so we don't need to bother making this thread safe + /// + /// /// True if any packets were sent, otherwise false public bool DequeueOutgoing() { @@ -476,7 +479,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; - this.PacketsSent++; } } else @@ -493,7 +495,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - this.PacketsSent++; } else { From 2413e9eb3fe63307660202f913eee1c877340372 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 20:00:50 +0000 Subject: [PATCH 003/192] Record number of resent packets in LindenUDP stack and display in stats report --- .../ClientStack/LindenUDP/LLUDPClient.cs | 7 ++++-- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 +++- .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 24 ++++++++++--------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 21bd99efe9..65a8fe3ca8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -122,6 +122,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public int PacketsReceived; /// Number of packets sent to this client public int PacketsSent; + /// Number of packets resent to this client + public int PacketsResent; /// Total byte count of unacked packets sent to this client public int UnackedBytes; @@ -256,9 +258,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP public string GetStats() { return string.Format( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}", + PacketsReceived, PacketsSent, - PacketsReceived, + PacketsResent, UnackedBytes, m_packetOutboxes[(int)ThrottleOutPacketType.Resend].Count, m_packetOutboxes[(int)ThrottleOutPacketType.Land].Count, diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index df8ddbbd8b..5ff9aeee8b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -506,7 +506,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Bump up the resend count on this packet Interlocked.Increment(ref outgoingPacket.ResendCount); - //Interlocked.Increment(ref Stats.ResentPackets); // Requeue or resend the packet if (!outgoingPacket.Client.EnqueueOutgoing(outgoingPacket, false)) @@ -582,6 +581,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP udpClient.NeedAcks.Add(outgoingPacket); } } + else + { + Interlocked.Increment(ref udpClient.PacketsResent); + } #endregion Sequence Number Assignment diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 87d067c961..6630edb15e 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -154,24 +154,26 @@ namespace OpenSim.Region.CoreModules.UDP.Linden report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); report.AppendFormat( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}\n", "Pkts", "Pkts", + "Pkts", "Bytes", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts"); + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts"); report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); report.AppendFormat( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", - "Out", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}\n", "In", + "Out", + "Resent", "Unacked", "Resend", "Land", From 4f7cf491e6fa06a6ac4672fa81e707437f3fa537 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 20:02:10 +0000 Subject: [PATCH 004/192] Comment out texture CAPS 'texture not found' message for now --- OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs index 6fb8b4625c..df4d561024 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs @@ -245,14 +245,12 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps WriteTextureData(httpRequest, httpResponse, texture, format); return true; } - } // not found - m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found"); +// m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found"); httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound; return true; - } private void WriteTextureData(OSHttpRequest request, OSHttpResponse response, AssetBase texture, string format) From 8fdc810a2329063d136458dff5a4c7d307db3feb Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 3 Feb 2011 04:07:36 -0800 Subject: [PATCH 005/192] Addresses mantis #5360: CreatorData was being written as long as it wasn't null. This made iars backwards incompatible when some items had non-null foreign creators. This patch adds an explicit option (-c) to preserve foreign creator information. --- .../Serialization/External/UserInventoryItemSerializer.cs | 2 +- .../Avatar/Inventory/Archiver/InventoryArchiverModule.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs index d5e84c779e..f138437ad5 100644 --- a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs +++ b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs @@ -303,7 +303,7 @@ namespace OpenSim.Framework.Serialization.External writer.WriteStartElement("GroupOwned"); writer.WriteString(inventoryItem.GroupOwned.ToString()); writer.WriteEndElement(); - if (inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty) + if (options.ContainsKey("creators") && inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty) writer.WriteElementString("CreatorData", inventoryItem.CreatorData); else if (options.ContainsKey("profile")) { diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 1a96098f18..26edba4b6c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -128,6 +128,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver + " is the user's last name." + Environment.NewLine + " is the path inside the user's inventory for the folder/item to be saved." + Environment.NewLine + "-p|--profile= adds the url of the profile service to the saved user information." + Environment.NewLine + + "-c|--creators preserves information about foreign creators." + Environment.NewLine + "-v|--verbose extra debug messages." + Environment.NewLine + " is the filesystem path at which to save the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), @@ -396,6 +397,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver //ops.Add("v|version=", delegate(string v) { options["version"] = v; }); ops.Add("p|profile=", delegate(string v) { options["profile"] = v; }); ops.Add("v|verbose", delegate(string v) { options["verbose"] = v; }); + ops.Add("c|creators", delegate(string v) { options["creators"] = v; }); List mainParams = ops.Parse(cmdparams); From cf24069227f9a32272c873d4423e2e11f5da25a8 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Thu, 3 Feb 2011 12:43:46 -0800 Subject: [PATCH 006/192] Change UpdateAgent (for changes in agent position) to be sent once to each simulator rather than once to each region. This should help with some of the delays caused by multiple outstanding requests to a single service point. --- .../Simulation/LocalSimulationConnector.cs | 14 ++--- .../Scenes/SceneCommunicationService.cs | 43 ++++++++------- .../Simulation/SimulationServiceConnector.cs | 55 ++++++++++++++++++- 3 files changed, 81 insertions(+), 31 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index c5972ddf1e..56720b7b7a 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs @@ -225,17 +225,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation if (destination == null) return false; + // We limit the number of messages sent for a position change to just one per + // simulator so when we receive the update we need to hand it to each of the + // scenes; scenes each check to see if the is a scene presence for the avatar + // note that we really don't need the GridRegion for this call foreach (Scene s in m_sceneList) { - if (s.RegionInfo.RegionHandle == destination.RegionHandle) - { - //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); - s.IncomingChildAgentDataUpdate(cAgentData); - return true; - } + //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); + s.IncomingChildAgentDataUpdate(cAgentData); } //m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); - return false; + return true; } public bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent) diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index f8ff308893..837e65523e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -193,7 +193,8 @@ namespace OpenSim.Region.Framework.Scenes } } - public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, UUID scopeID, ulong regionHandle); + public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, UUID scopeID, GridRegion dest); + /// /// This informs all neighboring regions about the settings of it's child agent. @@ -202,31 +203,17 @@ namespace OpenSim.Region.Framework.Scenes /// This contains information, such as, Draw Distance, Camera location, Current Position, Current throttle settings, etc. /// /// - private void SendChildAgentDataUpdateAsync(AgentPosition cAgentData, UUID scopeID, ulong regionHandle) + private void SendChildAgentDataUpdateAsync(AgentPosition cAgentData, UUID scopeID, GridRegion dest) { //m_log.Info("[INTERGRID]: Informing neighbors about my agent in " + m_regionInfo.RegionName); try { - //m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle, cAgentData); - uint x = 0, y = 0; - Utils.LongToUInts(regionHandle, out x, out y); - GridRegion destination = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); - m_scene.SimulationService.UpdateAgent(destination, cAgentData); + m_scene.SimulationService.UpdateAgent(dest, cAgentData); } catch { // Ignore; we did our best } - - //if (regionAccepted) - //{ - // //m_log.Info("[INTERGRID]: Completed sending a neighbor an update about my agent"); - //} - //else - //{ - // //m_log.Info("[INTERGRID]: Failed sending a neighbor an update about my agent"); - //} - } private void SendChildAgentDataUpdateCompleted(IAsyncResult iar) @@ -240,14 +227,28 @@ namespace OpenSim.Region.Framework.Scenes // This assumes that we know what our neighbors are. try { + uint x = 0, y = 0; + List simulatorList = new List(); foreach (ulong regionHandle in presence.KnownChildRegionHandles) { if (regionHandle != m_regionInfo.RegionHandle) { - SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync; - d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, regionHandle, - SendChildAgentDataUpdateCompleted, - d); + // we only want to send one update to each simulator; the simulator will + // hand it off to the regions where a child agent exists, this does assume + // that the region position is cached or performance will degrade + Utils.LongToUInts(regionHandle, out x, out y); + GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); + if (! simulatorList.Contains(dest.ServerURI)) + { + // we havent seen this simulator before, add it to the list + // and send it an update + simulatorList.Add(dest.ServerURI); + + SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync; + d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, dest, + SendChildAgentDataUpdateCompleted, + d); + } } } } diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index c5313fc8b9..cc6bffb7bb 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -48,6 +48,9 @@ namespace OpenSim.Services.Connectors.Simulation { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + // we use this dictionary to track the pending updateagent requests, maps URI --> position update + private Dictionary m_updateAgentQueue = new Dictionary(); + //private GridRegion m_Region; public SimulationServiceConnector() @@ -133,10 +136,56 @@ namespace OpenSim.Services.Connectors.Simulation /// public bool UpdateAgent(GridRegion destination, AgentPosition data) { - // we need a better throttle for these - // return false; + // The basic idea of this code is that the first thread that needs to + // send an update for a specific avatar becomes the worker for any subsequent + // requests until there are no more outstanding requests. Further, only send the most + // recent update; this *should* never be needed but some requests get + // slowed down and once that happens the problem with service end point + // limits kicks in and nothing proceeds + string uri = destination.ServerURI + AgentPath() + data.AgentID + "/"; + lock (m_updateAgentQueue) + { + if (m_updateAgentQueue.ContainsKey(uri)) + { + // Another thread is already handling + // updates for this simulator, just update + // the position and return, overwrites are + // not a problem since we only care about the + // last update anyway + m_updateAgentQueue[uri] = data; + return true; + } + + // Otherwise update the reference and start processing + m_updateAgentQueue[uri] = data; + } - return UpdateAgent(destination, (IAgentData)data); + AgentPosition pos = null; + while (true) + { + lock (m_updateAgentQueue) + { + // save the position + AgentPosition lastpos = pos; + + pos = m_updateAgentQueue[uri]; + + // this is true if no one put a new + // update in the map since the last + // one we processed, if thats the + // case then we are done + if (pos == lastpos) + { + m_updateAgentQueue.Remove(uri); + return true; + } + } + + UpdateAgent(destination,(IAgentData)pos); + } + + // unreachable + return true; } /// From c1665cfe9c02f9f8dcf5ff97afe1cf8bba4fa39a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 3 Feb 2011 22:34:10 +0000 Subject: [PATCH 007/192] Make UUID 3a367d1c-bef1-6d43-7595-e88c1e3aadb3 reference a full alpha texture. SL's viewer and some downstream projects assume that this UUID points to a full alpha texture, as per http://opensimulator.org/mantis/bug_view_advanced_page.php?bug_id=4751 and http://forums.kokuaviewer.org/viewtopic.php?f=8&t=1323 If the request isn't satified, some viewers will continuously make the request. --- bin/assets/TexturesAssetSet/TexturesAssetSet.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml index 5484ee237f..3af9c994d1 100644 --- a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml +++ b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml @@ -413,6 +413,15 @@ + + + +
+ + + + +
From ba8826d2b8362890fd97d9878b2b9cb7b5488669 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 17:11:35 +0000 Subject: [PATCH 008/192] Fix "set log level" to once again display current log level if it's not given a parameter This addresses http://opensimulator.org/mantis/view.php?id=5345 --- .../Framework/Servers/BaseOpenSimServer.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index b28ad69a5e..21e1e09b70 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs @@ -319,18 +319,21 @@ namespace OpenSim.Framework.Servers return; } - string rawLevel = cmd[3]; - - ILoggerRepository repository = LogManager.GetRepository(); - Level consoleLevel = repository.LevelMap[rawLevel]; - - if (consoleLevel != null) - m_consoleAppender.Threshold = consoleLevel; - else - Notice( - String.Format( - "{0} is not a valid logging level. Valid logging levels are ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF", - rawLevel)); + if (cmd.Length > 3) + { + string rawLevel = cmd[3]; + + ILoggerRepository repository = LogManager.GetRepository(); + Level consoleLevel = repository.LevelMap[rawLevel]; + + if (consoleLevel != null) + m_consoleAppender.Threshold = consoleLevel; + else + Notice( + String.Format( + "{0} is not a valid logging level. Valid logging levels are ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF", + rawLevel)); + } Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold)); } From 1613d89383574f7bba3102376e6f3a2ee99b1270 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 20:51:51 +0000 Subject: [PATCH 009/192] minor: Correct misspelling of neighbour in log messages. Thanks Fly-Man- --- .../Framework/EntityTransfer/EntityTransferModule.cs | 2 +- OpenSim/Services/GridService/GridService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 54b95f7de0..80a804137f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -983,7 +983,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer ///
public void EnableChildAgent(ScenePresence sp, GridRegion region) { - m_log.DebugFormat("[ENTITY TRANSFER]: Enabling child agent in new neighour {0}", region.RegionName); + m_log.DebugFormat("[ENTITY TRANSFER]: Enabling child agent in new neighbour {0}", region.RegionName); AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); AgentCircuitData agent = sp.ControllingClient.RequestClientInfo(); diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 125c2be8cf..aeff9b524f 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -286,7 +286,7 @@ namespace OpenSim.Services.GridService } } - m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighours", region.RegionName, rinfos.Count); + m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count); return rinfos; } From 034327b51fc496702b84b101123140b017bf68ff Mon Sep 17 00:00:00 2001 From: Kevin Cozens Date: Thu, 3 Feb 2011 12:03:17 -0500 Subject: [PATCH 010/192] Send object date to viewer in microseconds (Fixes mantis bug #3990) --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4fcd8f5c9d..6a92378ea7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2055,8 +2055,9 @@ namespace OpenSim.Region.Framework.Scenes public void GetProperties(IClientAPI client) { + //Viewer wants date in microseconds so multiply it by 1,000,000. client.SendObjectPropertiesReply( - m_fromUserInventoryItemID, (ulong)_creationDate, _creatorID, UUID.Zero, UUID.Zero, + m_fromUserInventoryItemID, (ulong)_creationDate*(ulong)1e6, _creatorID, UUID.Zero, UUID.Zero, _groupID, (short)InventorySerial, _lastOwnerID, UUID, _ownerID, ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, ParentGroup.RootPart._ownerMask, ParentGroup.RootPart._nextOwnerMask, ParentGroup.RootPart._groupMask, ParentGroup.RootPart._everyoneMask, From 144f3678631436a252ccd9a149f41e4f3711b50a Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 12:57:22 -0800 Subject: [PATCH 011/192] Bug fixed on map search for HG. Affected queries that had a region name at the end. --- OpenSim/Services/GridService/HypergridLinker.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 588c1dd0ed..80f2caf52f 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -220,9 +220,15 @@ namespace OpenSim.Services.GridService string[] parts = mapName.Split(new char[] {' '}); string regionName = String.Empty; if (parts.Length > 1) - regionName = parts[1]; + { + regionName = mapName.Substring(parts[0].Length + 1); + regionName = regionName.Trim(new char[] {'"'}); + } if (TryCreateLink(scopeID, xloc, yloc, regionName, 0, null, parts[0], ownerID, out regInfo, out reason)) + { + regInfo.RegionName = mapName; return regInfo; + } } return null; @@ -311,15 +317,15 @@ namespace OpenSim.Services.GridService { RemoveHyperlinkRegion(regInfo.RegionID); reason = "Region is too far (" + x + ", " + y + ")"; - m_log.Info("[HYPERGRID LINKER]: Unable to link, region is too far (" + x + ", " + y + ")"); + m_log.Info("[HYPERGRID LINKER]: Unable to link, reqgion is too far (" + x + ", " + y + ")"); return false; } regInfo.RegionID = regionID; - if ( externalName == string.Empty ) + if (externalName == string.Empty) regInfo.RegionName = regInfo.ServerURI; - else + else regInfo.RegionName = externalName; m_log.Debug("[HYPERGRID LINKER]: naming linked region " + regInfo.RegionName); From 456cdee5ce0aa6508702d6d5051e17162bf772eb Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 21:42:45 +0000 Subject: [PATCH 012/192] minor: correct a log spelling mistake that was pointed out to me --- OpenSim/Services/GridService/HypergridLinker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 80f2caf52f..9d98c8f59c 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -317,7 +317,7 @@ namespace OpenSim.Services.GridService { RemoveHyperlinkRegion(regInfo.RegionID); reason = "Region is too far (" + x + ", " + y + ")"; - m_log.Info("[HYPERGRID LINKER]: Unable to link, reqgion is too far (" + x + ", " + y + ")"); + m_log.Info("[HYPERGRID LINKER]: Unable to link, region is too far (" + x + ", " + y + ")"); return false; } From 3585130ac8b805296323105a5b50c5d416210266 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Jan 2011 02:42:22 -0500 Subject: [PATCH 013/192] SetTexture_fix --- .../Shared/Api/Implementation/LSL_Api.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 30fb252cbd..38a16a4928 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -1750,13 +1750,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { UUID textureID=new UUID(); - if (!UUID.TryParse(texture, out textureID)) - { - textureID=InventoryKey(texture, (int)AssetType.Texture); - } - - if (textureID == UUID.Zero) - return; + textureID=InventoryKey(texture, (int)AssetType.Texture); + if (textureID == UUID.Zero) + { + if (!UUID.TryParse(texture, out textureID)) + return; + } Primitive.TextureEntry tex = part.Shape.Textures; From bc2e254b55b65cf267b8027e3e696acbc0f3c60b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 21:55:22 +0000 Subject: [PATCH 014/192] minor: fix indentation, spacing on commit 3585130 this previous commit tries to look up the texture by name first before just using the uuid. this allows correct resolution of inventory textures which have uuids as names. --- .../Shared/Api/Implementation/LSL_Api.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 38a16a4928..e8da274d22 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -1748,14 +1748,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api protected void SetTexture(SceneObjectPart part, string texture, int face) { - UUID textureID=new UUID(); + UUID textureID = new UUID(); - textureID=InventoryKey(texture, (int)AssetType.Texture); - if (textureID == UUID.Zero) - { - if (!UUID.TryParse(texture, out textureID)) - return; - } + textureID = InventoryKey(texture, (int)AssetType.Texture); + if (textureID == UUID.Zero) + { + if (!UUID.TryParse(texture, out textureID)) + return; + } Primitive.TextureEntry tex = part.Shape.Textures; From 7a6e1fa4cfa01873f9e9420267cae47f58839128 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Fri, 4 Feb 2011 14:21:18 -0800 Subject: [PATCH 015/192] Convert SimianMaptile refresh time from ms to seconds. Too many 0's in the config file. --- .../SimianGrid/SimianGridMaptileModule.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs index dd8fe2b800..93fdae38c1 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs @@ -87,16 +87,17 @@ namespace OpenSim.Region.OptionalModules.Simian if (String.IsNullOrEmpty(m_serverUrl)) return; - m_refreshtime = Convert.ToInt32(config.GetString("RefreshTime")); - if (m_refreshtime <= 0) + int refreshseconds = Convert.ToInt32(config.GetString("RefreshTime")); + if (refreshseconds <= 0) return; + m_refreshtime = refreshseconds * 1000; // convert from seconds to ms m_log.InfoFormat("[SIMIAN MAPTILE] enabled with refresh timeout {0} and URL {1}", m_refreshtime,m_serverUrl); - + m_enabled = true; } - + /// /// /// @@ -106,7 +107,7 @@ namespace OpenSim.Region.OptionalModules.Simian { m_refreshTimer.Enabled = true; m_refreshTimer.AutoReset = true; - m_refreshTimer.Interval = 5 * 60 * 1000; // every 5 minutes + m_refreshTimer.Interval = 5 * 60 * 1000; // every 5 minutes m_refreshTimer.Elapsed += new ElapsedEventHandler(HandleMaptileRefresh); } } @@ -120,12 +121,12 @@ namespace OpenSim.Region.OptionalModules.Simian if (! m_enabled) return; - // Every shared region module has to maintain an indepedent list of - // currently running regions + // Every shared region module has to maintain an indepedent list of + // currently running regions lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; } - + /// /// /// @@ -150,7 +151,7 @@ namespace OpenSim.Region.OptionalModules.Simian // loaded and initialized if (m_lastrefresh > 0 && Util.EnvironmentTickCountSubtract(m_lastrefresh) < m_refreshtime) return; - + m_log.DebugFormat("[SIMIAN MAPTILE] map refresh fired"); lock (m_scenes) { @@ -169,7 +170,7 @@ namespace OpenSim.Region.OptionalModules.Simian m_lastrefresh = Util.EnvironmentTickCount(); } - + /// /// /// @@ -211,7 +212,7 @@ namespace OpenSim.Region.OptionalModules.Simian HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(m_serverUrl); request.Timeout = 20000; request.ReadWriteTimeout = 5000; - + using (HttpWebResponse response = MultipartForm.Post(request, postParameters)) { using (Stream responseStream = response.GetResponseStream()) From 722f0ba18cbea725235f1c31cf3bd3d6a66def29 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:06:24 +0000 Subject: [PATCH 016/192] Put something in the ImprovedInstantMessage.BinaryBucket for llInstantMessage() to stop this crashing viewer 2.4.0 (1.23.5 was fine with this). We're putting in a string of format " which appears to be the expected value. This resolves http://opensimulator.org/mantis/view.php?id=5356 --- OpenSim/Framework/Util.cs | 10 ++++++++++ .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index d1d8736062..533e53abd5 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1334,6 +1334,11 @@ namespace OpenSim.Framework return (ipaddr1 != null) ? "http://" + ipaddr1.ToString() + ":" + port1 : uri; } + public static byte[] StringToBytes256(string str, params object[] args) + { + return StringToBytes256(string.Format(str, args)); + } + public static byte[] StringToBytes256(string str) { if (String.IsNullOrEmpty(str)) { return Utils.EmptyBytes; } @@ -1352,6 +1357,11 @@ namespace OpenSim.Framework return data; } + public static byte[] StringToBytes1024(string str, params object[] args) + { + return StringToBytes1024(string.Format(str, args)); + } + public static byte[] StringToBytes1024(string str) { if (String.IsNullOrEmpty(str)) { return Utils.EmptyBytes; } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e8da274d22..73fe16090c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3063,12 +3063,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api msg.ParentEstateID = 0; //ParentEstateID; msg.Position = Vector3.Zero;// new Vector3(m_host.AbsolutePosition); msg.RegionID = World.RegionInfo.RegionID.Guid;//RegionID.Guid; - msg.binaryBucket = new byte[0];// binaryBucket; + msg.binaryBucket + = Util.StringToBytes256( + "{0}/{1}/{2}/{3}", + World.RegionInfo.RegionName, + (int)Math.Floor(m_host.AbsolutePosition.X), + (int)Math.Floor(m_host.AbsolutePosition.Y), + (int)Math.Floor(m_host.AbsolutePosition.Z)); if (m_TransferModule != null) { m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); } + ScriptSleep(2000); } From 5b7a5a5b8b6221b2fe42f645c757c2e5e9132aa6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:14:21 +0000 Subject: [PATCH 017/192] Add position to IM sent from llInstantMessage(), to better fulfill client expectations --- .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 73fe16090c..72ee495906 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3061,7 +3061,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api msg.fromGroup = false;// fromGroup; msg.offline = (byte)0; //offline; msg.ParentEstateID = 0; //ParentEstateID; - msg.Position = Vector3.Zero;// new Vector3(m_host.AbsolutePosition); + msg.Position = new Vector3(m_host.AbsolutePosition); msg.RegionID = World.RegionInfo.RegionID.Guid;//RegionID.Guid; msg.binaryBucket = Util.StringToBytes256( From 1ffd70cef7dcabfe9c680affcc95de3bcd913ecd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:20:10 +0000 Subject: [PATCH 018/192] minor: remove some mono compiler warnings --- .../Rest/Inventory/RestAppearanceServices.cs | 6 +++--- .../Rest/Inventory/RestInventoryServices.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs index 019ca73dd1..0188eb716e 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs @@ -44,7 +44,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // private static readonly int PARM_PATH = 1; - private bool enabled = false; +// private bool enabled = false; private string qPrefix = "appearance"; /// @@ -74,7 +74,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Activate if everything went OK - enabled = true; +// enabled = true; Rest.Log.InfoFormat("{0} User appearance services initialization complete", MsgId); } @@ -95,7 +95,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public void Close() { - enabled = false; +// enabled = false; Rest.Log.InfoFormat("{0} User appearance services closing down", MsgId); } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index c3cf08c18d..b4156621bb 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs @@ -46,12 +46,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public class RestInventoryServices : IRest { // private static readonly int PARM_USERID = 0; - private static readonly int PARM_PATH = 1; +// private static readonly int PARM_PATH = 1; // private bool enabled = false; private string qPrefix = "inventory"; - private static readonly string PRIVATE_ROOT_NAME = "My Inventory"; +// private static readonly string PRIVATE_ROOT_NAME = "My Inventory"; /// /// The constructor makes sure that the service prefix is absolute From cdd64bb8f51df51858b841de4def7808735b02dd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Feb 2011 00:15:25 +0000 Subject: [PATCH 019/192] For now, reinstate the call to World.GridService.GetRegionsByName() commented out in 933f47e Even though we don't use the results, just getting the regions may have side effects in making hypergrid links available for the later World.RequestTeleportLocation() --- .../Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index c0c790dd28..3f8735e0c1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -702,7 +702,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // and convert the regionName to the target region if (regionName.Contains(".") && regionName.Contains(":")) { -// List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); + World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); +// List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); + string[] parts = regionName.Split(new char[] { ':' }); if (parts.Length > 2) regionName = parts[0] + ':' + parts[1] + "/ " + parts[2]; From f5a3eb9fd547df043b00a2934d891dcfff3142ab Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 17:05:45 -0800 Subject: [PATCH 020/192] Added a config var to HGInventoryAccessModule called OutboundPermission that controls whether the sim lets asset POSTs happen to foreign grids or not. It's True by default. If ppl want to allow foreign visitors but don't want to allow any assets out of their grid, they should set this to False. This is the beginning of policies for these things... --- .../InventoryAccess/HGInventoryAccessModule.cs | 8 ++++++-- bin/config-include/GridCommon.ini.example | 4 ++++ bin/config-include/HyperSimianGrid.ini | 11 +++++++++++ bin/config-include/StandaloneCommon.ini.example | 4 ++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 34b811428d..4565d103ff 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -55,6 +55,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } private string m_ProfileServerURI; + private bool m_OutboundPermission; // private bool m_Initialized = false; @@ -78,7 +79,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"]; if (thisModuleConfig != null) + { m_ProfileServerURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty); + m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true); + } else m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!"); } @@ -103,7 +107,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess public void UploadInventoryItem(UUID avatarID, UUID assetID, string name, int userlevel) { string userAssetServer = string.Empty; - if (IsForeignUser(avatarID, out userAssetServer)) + if (IsForeignUser(avatarID, out userAssetServer) && m_OutboundPermission) { Util.FireAndForget(delegate { m_assMapper.Post(assetID, avatarID, userAssetServer); }); } @@ -197,7 +201,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (IsForeignUser(sender, out userAssetServer)) m_assMapper.Get(item.AssetID, sender, userAssetServer); - if (IsForeignUser(receiver, out userAssetServer)) + if (IsForeignUser(receiver, out userAssetServer) && m_OutboundPermission) m_assMapper.Post(item.AssetID, receiver, userAssetServer); } diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 761e5eb1dd..e1bcf00f51 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -88,6 +88,10 @@ ; accessible from other grids ; ProfileServerURI = "http://mygridserver.com:8002/user" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False + [Modules] ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. diff --git a/bin/config-include/HyperSimianGrid.ini b/bin/config-include/HyperSimianGrid.ini index 0b011168d8..89d6be79e3 100644 --- a/bin/config-include/HyperSimianGrid.ini +++ b/bin/config-include/HyperSimianGrid.ini @@ -82,3 +82,14 @@ [Profiles] Module = "SimianProfiles" + +[HGInventoryAccessModule] + ; + ; === HG ONLY === + ; Change this to your profile server + ; accessible from other grids + ; + ProfileServerURI = "http://mygridserver.com:8002/user" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 4956bc34fa..213219c12b 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -33,6 +33,10 @@ [HGInventoryAccessModule] ProfileServerURI = "http://127.0.0.1:9000/profiles" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False + [Modules] ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. From 632babf8fba8180764b359b9716eaac904b1b4ac Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 19:19:38 -0800 Subject: [PATCH 021/192] Added an additional debug message, and removed a bunch of files that weren't being used anymore -- the old RemotsInventory connectors stuff. --- .../Inventory/HGInventoryBroker.cs | 5 + .../RemoteInventoryServiceConnector.cs | 362 ----------- .../Inventory/HGInventoryServiceConnector.cs | 335 ---------- .../Inventory/ISessionAuthInventoryService.cs | 140 ----- .../Inventory/InventoryServiceConnector.cs | 582 ------------------ .../QuickAndDirtyInventoryServiceConnector.cs | 196 ------ 6 files changed, 5 insertions(+), 1615 deletions(-) delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index 39410b561b..3f63db371f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs @@ -200,6 +200,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory return; } } + else + { + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: User {0} does not have InventoryServerURI. OH NOES!", userID); + return; + } } } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs deleted file mode 100644 index 9213132866..0000000000 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ /dev/null @@ -1,362 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Statistics; -using OpenSim.Services.Connectors; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory -{ - public class RemoteInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private bool m_Enabled = false; - private bool m_Initialized = false; - private Scene m_Scene; - private InventoryServicesConnector m_RemoteConnector; - - private IUserManagement m_UserManager; - private IUserManagement UserManager - { - get - { - if (m_UserManager == null) - { - m_UserManager = m_Scene.RequestModuleInterface(); - } - return m_UserManager; - } - } - - - public Type ReplaceableInterface - { - get { return null; } - } - - public string Name - { - get { return "RemoteInventoryServicesConnector"; } - } - - public RemoteInventoryServicesConnector() - { - } - - public RemoteInventoryServicesConnector(IConfigSource source) - { - Init(source); - } - - protected override void Init(IConfigSource source) - { - m_RemoteConnector = new InventoryServicesConnector(source); - base.Init(source); - } - - #region ISharedRegionModule - - public void Initialise(IConfigSource source) - { - IConfig moduleConfig = source.Configs["Modules"]; - if (moduleConfig != null) - { - string name = moduleConfig.GetString("InventoryServices", ""); - if (name == Name) - { - Init(source); - m_Enabled = true; - - m_log.Info("[INVENTORY CONNECTOR]: Remote inventory enabled"); - } - } - } - - public void PostInitialise() - { - } - - public void Close() - { - } - - public void AddRegion(Scene scene) - { -// m_Scene = scene; - //m_log.Debug("[XXXX] Adding scene " + m_Scene.RegionInfo.RegionName); - - if (!m_Enabled) - return; - - if (!m_Initialized) - { - m_Initialized = true; - } - - scene.RegisterModuleInterface(this); - m_cache.AddRegion(scene); - - if (m_Scene == null) - m_Scene = scene; - } - - public void RemoveRegion(Scene scene) - { - if (!m_Enabled) - return; - - m_cache.RemoveRegion(scene); - } - - public void RegionLoaded(Scene scene) - { - if (!m_Enabled) - return; - - m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled remote inventory for region {0}", scene.RegionInfo.RegionName); - - } - - #endregion ISharedRegionModule - - #region IInventoryService - - public override bool CreateUserInventory(UUID user) - { - return false; - } - - public override List GetInventorySkeleton(UUID userId) - { - return new List(); - } - - public override InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback) - { - UUID sessionID = GetSessionID(userID); - try - { - m_RemoteConnector.GetUserInventory(userID.ToString(), sessionID, callback); - } - catch (Exception e) - { - if (StatsManager.SimExtraStats != null) - StatsManager.SimExtraStats.AddInventoryServiceRetrievalFailure(); - - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Request inventory operation failed, {0} {1}", - e.Source, e.Message); - } - - } - - // inherited. See base class - // public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - - public override Dictionary GetSystemFolders(UUID userID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetSystemFolders(userID.ToString(), sessionID); - } - - public override InventoryCollection GetFolderContent(UUID userID, UUID folderID) - { - UUID sessionID = GetSessionID(userID); - try - { - InventoryCollection invCol = m_RemoteConnector.GetFolderContent(userID.ToString(), folderID, sessionID); - foreach (InventoryItemBase item in invCol.Items) - UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData); - return invCol; - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed, {0} {1}", - e.Source, e.Message); - } - InventoryCollection nullCollection = new InventoryCollection(); - nullCollection.Folders = new List(); - nullCollection.Items = new List(); - nullCollection.UserID = userID; - return nullCollection; - } - - public override List GetFolderItems(UUID userID, UUID folderID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetFolderItems(userID.ToString(), folderID, sessionID); - } - - public override bool AddFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.AddFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool UpdateFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.UpdateFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool MoveFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool DeleteFolders(UUID ownerID, List folderIDs) - { - if (folderIDs == null) - return false; - if (folderIDs.Count == 0) - return false; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.DeleteFolders(ownerID.ToString(), folderIDs, sessionID); - } - - - public override bool PurgeFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.PurgeFolder(folder.Owner.ToString(), folder, sessionID); - } - - // public bool AddItem(InventoryItemBase item) inherited - // Uses AddItemPlain - - protected override bool AddItemPlain(InventoryItemBase item) - { - if (item == null) - return false; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.AddItem(item.Owner.ToString(), item, sessionID); - } - - public override bool UpdateItem(InventoryItemBase item) - { - if (item == null) - return false; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); - } - - public override bool MoveItems(UUID ownerID, List items) - { - if (items == null) - return false; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.MoveItems(ownerID.ToString(), items, sessionID); - } - - - public override bool DeleteItems(UUID ownerID, List itemIDs) - { - if (itemIDs == null) - return false; - if (itemIDs.Count == 0) - return true; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.DeleteItems(ownerID.ToString(), itemIDs, sessionID); - } - - public override InventoryItemBase GetItem(InventoryItemBase item) - { - if (item == null) - return null; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.QueryItem(item.Owner.ToString(), item, sessionID); - } - - public override InventoryFolderBase GetFolder(InventoryFolderBase folder) - { - if (folder == null) - return null; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.QueryFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool HasInventoryForUser(UUID userID) - { - return false; - } - - public override List GetActiveGestures(UUID userId) - { - return new List(); - } - - public override int GetAssetPermissions(UUID userID, UUID assetID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetAssetPermissions(userID.ToString(), assetID, sessionID); - } - - - #endregion - - private UUID GetSessionID(UUID userID) - { - return UUID.Zero; - } - - } -} diff --git a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs deleted file mode 100644 index 9878855355..0000000000 --- a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using Nini.Config; -using System; -using System.Collections.Generic; -using System.Reflection; -using OpenSim.Framework; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors.Inventory -{ - public class HGInventoryServiceConnector : ISessionAuthInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - private Dictionary m_connectors = new Dictionary(); - - public HGInventoryServiceConnector(IConfigSource source) - { - IConfig moduleConfig = source.Configs["Modules"]; - if (moduleConfig != null) - { - - IConfig inventoryConfig = source.Configs["InventoryService"]; - if (inventoryConfig == null) - { - m_log.Error("[HG INVENTORY SERVICE]: InventoryService missing from OpenSim.ini"); - return; - } - - m_log.Info("[HG INVENTORY SERVICE]: HG inventory service enabled"); - } - } - - private bool StringToUrlAndUserID(string id, out string url, out string userID) - { - url = String.Empty; - userID = String.Empty; - - Uri assetUri; - - if (Uri.TryCreate(id, UriKind.Absolute, out assetUri) && - assetUri.Scheme == Uri.UriSchemeHttp) - { - url = "http://" + assetUri.Authority; - userID = assetUri.LocalPath.Trim(new char[] { '/' }); - return true; - } - - return false; - } - private ISessionAuthInventoryService GetConnector(string url) - { - InventoryServicesConnector connector = null; - lock (m_connectors) - { - if (m_connectors.ContainsKey(url)) - { - connector = m_connectors[url]; - } - else - { - // We're instantiating this class explicitly, but this won't - // work in general, because the remote grid may be running - // an inventory server that has a different protocol. - // Eventually we will want a piece of protocol asking - // the remote server about its kind. Definitely cool thing to do! - connector = new InventoryServicesConnector(url); - m_connectors.Add(url, connector); - } - } - return connector; - } - - public string Host - { - get { return string.Empty; } - } - - public void GetUserInventory(string id, UUID sessionID, InventoryReceiptCallback callback) - { - m_log.Debug("[HGInventory]: GetUserInventory " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - connector.GetUserInventory(userID, sessionID, callback); - } - - } - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - public Dictionary GetSystemFolders(string id, UUID sessionID) - { - m_log.Debug("[HGInventory]: GetSystemFolders " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetSystemFolders(userID, sessionID); - } - - return new Dictionary(); - } - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - public InventoryCollection GetFolderContent(string id, UUID folderID, UUID sessionID) - { - m_log.Debug("[HGInventory]: GetFolderContent " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetFolderContent(userID, folderID, sessionID); - } - - return null; - } - - public bool AddFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.AddFolder(userID, folder, sessionID); - } - return false; - } - - public bool UpdateFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.UpdateFolder(userID, folder, sessionID); - } - return false; - } - - public bool MoveFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.MoveFolder(userID, folder, sessionID); - } - return false; - } - - public bool DeleteFolders(string id, List folders, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.DeleteFolders(userID, folders, sessionID); - } - return false; - } - - public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.PurgeFolder(userID, folder, sessionID); - } - return false; - } - - public List GetFolderItems(string id, UUID folderID, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetFolderItems(userID, folderID, sessionID); - } - return new List(); - } - - public bool AddItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.AddItem(userID, item, sessionID); - } - return false; - } - - public bool UpdateItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.UpdateItem(userID, item, sessionID); - } - return false; - } - - public bool MoveItems(string id, List items, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.MoveItems(userID, items, sessionID); - } - return false; - } - - public bool DeleteItems(string id, List itemIDs, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.DeleteItems(userID, itemIDs, sessionID); - } - return false; - } - - public InventoryItemBase QueryItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - //m_log.DebugFormat("[HGInventory CONNECTOR]: calling {0}", url); - ISessionAuthInventoryService connector = GetConnector(url); - return connector.QueryItem(userID, item, sessionID); - } - return null; - } - - public InventoryFolderBase QueryFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.QueryFolder(userID, folder, sessionID); - } - return null; - } - - public int GetAssetPermissions(string id, UUID assetID, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetAssetPermissions(userID, assetID, sessionID); - } - return 0; - } - } -} diff --git a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs deleted file mode 100644 index da8c7e2e61..0000000000 --- a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using OpenSim.Framework; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - /// - /// Defines all operations to access a remote inventory service - /// using session authentication as a form of security. - /// - public interface ISessionAuthInventoryService - { - string Host - { - get; - } - - /// - /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the - /// inventory has been received - /// - /// - /// - void GetUserInventory(string userID, UUID session_id, InventoryReceiptCallback callback); - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - Dictionary GetSystemFolders(string userID, UUID session_id); - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - InventoryCollection GetFolderContent(string userID, UUID folderID, UUID session_id); - - /// - /// Add a new folder to the user's inventory - /// - /// - /// true if the folder was successfully added - bool AddFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Update a folder in the user's inventory - /// - /// - /// true if the folder was successfully updated - bool UpdateFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Move an inventory folder to a new location - /// - /// A folder containing the details of the new location - /// true if the folder was successfully moved - bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Delete a list of inventory folders (from trash) - /// - bool DeleteFolders(string userID, List folders, UUID session_id); - - /// - /// Purge an inventory folder of all its items and subfolders. - /// - /// - /// true if the folder was successfully purged - bool PurgeFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Get items from a folder. - /// - /// - /// true if the folder was successfully purged - List GetFolderItems(string userID, UUID folderID, UUID session_id); - - /// - /// Add a new item to the user's inventory - /// - /// - /// true if the item was successfully added - bool AddItem(string userID, InventoryItemBase item, UUID session_id); - - /// - /// Update an item in the user's inventory - /// - /// - /// true if the item was successfully updated - bool UpdateItem(string userID, InventoryItemBase item, UUID session_id); - - bool MoveItems(string userID, List items, UUID session_id); - - /// - /// Delete an item from the user's inventory - /// - /// - /// true if the item was successfully deleted - bool DeleteItems(string userID, List itemIDs, UUID session_id); - - InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id); - - InventoryFolderBase QueryFolder(string userID, InventoryFolderBase item, UUID session_id); - - int GetAssetPermissions(string userID, UUID assetID, UUID session_id); - - } -} diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs deleted file mode 100644 index f86b453665..0000000000 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ /dev/null @@ -1,582 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - public class InventoryServicesConnector : ISessionAuthInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - private string m_ServerURI = String.Empty; - - private Dictionary m_RequestingInventory = new Dictionary(); - private Dictionary m_RequestTime = new Dictionary(); - - public InventoryServicesConnector() - { - } - - public InventoryServicesConnector(string serverURI) - { - m_ServerURI = serverURI.TrimEnd('/'); - } - - public InventoryServicesConnector(IConfigSource source) - { - Initialise(source); - } - - public virtual void Initialise(IConfigSource source) - { - IConfig inventoryConfig = source.Configs["InventoryService"]; - if (inventoryConfig == null) - { - m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini"); - throw new Exception("InventoryService missing from OpenSim.ini"); - } - - string serviceURI = inventoryConfig.GetString("InventoryServerURI", - String.Empty); - - if (serviceURI == String.Empty) - { - m_log.Error("[INVENTORY CONNECTOR]: No Server URI named in section InventoryService"); - throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's"); - } - m_ServerURI = serviceURI.TrimEnd('/'); - } - - #region ISessionAuthInventoryService - - public string Host - { - get { return m_ServerURI; } - } - - /// - /// Caller must catch eventual Exceptions. - /// - /// - /// - /// - public void GetUserInventory(string userIDStr, UUID sessionID, InventoryReceiptCallback callback) - { - UUID userID = UUID.Zero; - if (UUID.TryParse(userIDStr, out userID)) - { - lock (m_RequestingInventory) - { - // *HACK ALERT* - - // If an inventory request times out, it blocks any further requests from the - // same user, even after a relog. This is bad, and makes me sad. - - // Really, we should detect a timeout and report a failure to the callback, - // BUT in my testing i found that it's hard to detect a timeout.. sometimes, - // a partial response is recieved, and sometimes a null response. - - // So, for now, add a timer of ten seconds (which is the request timeout). - - // This should basically have the same effect. - - lock (m_RequestTime) - { - if (m_RequestTime.ContainsKey(userID)) - { - TimeSpan interval = DateTime.Now - m_RequestTime[userID]; - if (interval.TotalSeconds > 10) - { - m_RequestTime.Remove(userID); - if (m_RequestingInventory.ContainsKey(userID)) - { - m_RequestingInventory.Remove(userID); - } - } - } - if (!m_RequestingInventory.ContainsKey(userID)) - { - m_RequestTime.Add(userID, DateTime.Now); - m_RequestingInventory.Add(userID, callback); - } - else - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetUserInventory - ignoring repeated request for user {0}", userID); - return; - } - } - } - - m_log.InfoFormat( - "[INVENTORY CONNECTOR]: Requesting inventory from {0}/GetInventory/ for user {1}", - m_ServerURI, userID); - - RestSessionObjectPosterResponse requester - = new RestSessionObjectPosterResponse(); - requester.ResponseCallback = InventoryResponse; - - requester.BeginPostObject(m_ServerURI + "/GetInventory/", userID.Guid, sessionID.ToString(), userID.ToString()); - } - } - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - public Dictionary GetSystemFolders(string userID, UUID sessionID) - { - List folders = null; - Dictionary dFolders = new Dictionary(); - try - { - folders = SynchronousRestSessionObjectPoster>.BeginPostObject( - "POST", m_ServerURI + "/SystemFolders/", new Guid(userID), sessionID.ToString(), userID.ToString()); - - foreach (InventoryFolderBase f in folders) - dFolders[(AssetType)f.Type] = f; - - return dFolders; - } - catch (Exception e) - { - // Maybe we're talking to an old inventory server. Try this other thing. - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetSystemFolders operation failed, {0} {1} (old sever?). Trying GetInventory.", - e.Source, e.Message); - - try - { - InventoryCollection inventory = SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/GetInventory/", new Guid(userID), sessionID.ToString(), userID.ToString()); - folders = inventory.Folders; - } - catch (Exception ex) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetInventory operation also failed, {0} {1}. Giving up.", - e.Source, ex.Message); - } - - if ((folders != null) && (folders.Count > 0)) - { - m_log.DebugFormat("[INVENTORY CONNECTOR]: Received entire inventory ({0} folders) for user {1}", - folders.Count, userID); - foreach (InventoryFolderBase f in folders) - { - if ((f.Type != (short)AssetType.Folder) && (f.Type != (short)AssetType.Unknown)) - dFolders[(AssetType)f.Type] = f; - } - - UUID rootFolderID = dFolders[AssetType.Animation].ParentID; - InventoryFolderBase rootFolder = new InventoryFolderBase(rootFolderID, new UUID(userID)); - rootFolder = QueryFolder(userID, rootFolder, sessionID); - dFolders[AssetType.Folder] = rootFolder; - m_log.DebugFormat("[INVENTORY CONNECTOR]: {0} system folders for user {1}", dFolders.Count, userID); - return dFolders; - } - } - - return new Dictionary(); - } - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - public InventoryCollection GetFolderContent(string userID, UUID folderID, UUID sessionID) - { - try - { - // normal case - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString()); - } - catch (TimeoutException e) - { - m_log.ErrorFormat( - "[INVENTORY CONNECTOR]: GetFolderContent operation to {0} for {1} timed out {2} {3}.", - m_ServerURI, folderID, e.Source, e.Message); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed for {0}, {1} {2} (old server?).", - folderID, e.Source, e.Message); - } - - InventoryCollection nullCollection = new InventoryCollection(); - nullCollection.Folders = new List(); - nullCollection.Items = new List(); - nullCollection.UserID = new UUID(userID); - return nullCollection; - } - - public bool AddFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool UpdateFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/UpdateFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool DeleteFolders(string userID, List folderIDs, UUID sessionID) - { - try - { - List guids = new List(); - foreach (UUID u in folderIDs) - guids.Add(u.Guid); - return SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - "POST", m_ServerURI + "/DeleteFolders/", guids, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory folders operation failed, {0} {1}", - e.Source, e.Message); - } - - return false; - } - - public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/MoveFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool PurgeFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/PurgeFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Purge inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public List GetFolderItems(string userID, UUID folderID, UUID sessionID) - { - try - { - InventoryFolderBase folder = new InventoryFolderBase(folderID, new UUID(userID)); - return SynchronousRestSessionObjectPoster>.BeginPostObject( - "POST", m_ServerURI + "/GetItems/", folder, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Get folder items operation failed for folder {0}, {1} {2}", - folderID, e.Source, e.Message); - } - - return null; - } - - public bool AddItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory item operation failed for {0} {1}, {2} {3}", - item.Name, item.ID, e.Source, e.Message); - } - - return false; - } - - public bool UpdateItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update new inventory item operation failed for {0} {1}, {2} {3}", - item.Name, item.ID, e.Source, e.Message); - } - - return false; - } - - /** - * MoveItems Async group - */ - - delegate void MoveItemsDelegate(string userID, List items, UUID sessionID); - - private void MoveItemsAsync(string userID, List items, UUID sessionID) - { - if (items == null) - { - m_log.WarnFormat("[INVENTORY CONNECTOR]: request to move items got a null list."); - return; - } - - try - { - //SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - // "POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString()); - - //// Success - //return; - string uri = m_ServerURI + "/inventory/" + userID; - if (SynchronousRestObjectRequester. - MakeRequest, bool>("PUT", uri, items)) - m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster succeeded {1}", items.Count, uri); - else - m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster failed {1}", items.Count, uri); ; - - return; - - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory items operation failed, {0} {1} (old server?). Trying slow way.", - e.Source, e.Message); - } - - } - - private void MoveItemsCompleted(IAsyncResult iar) - { - MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState; - d.EndInvoke(iar); - } - - public bool MoveItems(string userID, List items, UUID sessionID) - { - MoveItemsDelegate d = MoveItemsAsync; - d.BeginInvoke(userID, items, sessionID, MoveItemsCompleted, d); - return true; - } - - public bool DeleteItems(string userID, List items, UUID sessionID) - { - try - { - List guids = new List(); - foreach (UUID u in items) - guids.Add(u.Guid); - return SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - "POST", m_ServerURI + "/DeleteItem/", guids, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory items operation failed, {0} {1}", - e.Source, e.Message); - } - - return false; - } - - public InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/QueryItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory item operation failed, {0} {1}", - e.Source, e.Message); - } - - return null; - } - - public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/QueryFolder/", folder, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory folder operation failed, {0} {1}", - e.Source, e.Message); - } - - return null; - } - - public int GetAssetPermissions(string userID, UUID assetID, UUID sessionID) - { - try - { - InventoryItemBase item = new InventoryItemBase(); - item.Owner = new UUID(userID); - item.AssetID = assetID; - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/AssetPermissions/", item, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: AssetPermissions operation failed, {0} {1}", - e.Source, e.Message); - } - - return 0; - } - - #endregion - - /// - /// Callback used by the inventory server GetInventory request - /// - /// - private void InventoryResponse(InventoryCollection response) - { - UUID userID = response.UserID; - InventoryReceiptCallback callback = null; - lock (m_RequestingInventory) - { - if (m_RequestingInventory.ContainsKey(userID)) - { - callback = m_RequestingInventory[userID]; - m_RequestingInventory.Remove(userID); - lock (m_RequestTime) - { - if (m_RequestTime.ContainsKey(userID)) - { - m_RequestTime.Remove(userID); - } - } - } - else - { - m_log.WarnFormat( - "[INVENTORY CONNECTOR]: " + - "Received inventory response for {0} for which we do not have a record of requesting!", - userID); - return; - } - } - - m_log.InfoFormat("[INVENTORY CONNECTOR]: " + - "Received inventory response for user {0} containing {1} folders and {2} items", - userID, response.Folders.Count, response.Items.Count); - - InventoryFolderImpl rootFolder = null; - - ICollection folders = new List(); - ICollection items = new List(); - - foreach (InventoryFolderBase folder in response.Folders) - { - if (folder.ParentID == UUID.Zero) - { - rootFolder = new InventoryFolderImpl(folder); - folders.Add(rootFolder); - - break; - } - } - - if (rootFolder != null) - { - foreach (InventoryFolderBase folder in response.Folders) - { - if (folder.ID != rootFolder.ID) - { - folders.Add(new InventoryFolderImpl(folder)); - } - } - - foreach (InventoryItemBase item in response.Items) - { - items.Add(item); - } - } - else - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Did not get back an inventory containing a root folder for user {0}", userID); - } - - callback(folders, items); - } - } -} diff --git a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs deleted file mode 100644 index a7aa1382c4..0000000000 --- a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - /// - /// This connector is temporary. It's used by the user server, before that server is refactored. - /// - public class QuickAndDirtyInventoryServiceConnector : IInventoryService - { -// private static readonly ILog m_log = -// LogManager.GetLogger( -// MethodBase.GetCurrentMethod().DeclaringType); - - private string m_ServerURI = String.Empty; - - //private Dictionary m_RequestingInventory = new Dictionary(); - - public QuickAndDirtyInventoryServiceConnector() - { - } - - public QuickAndDirtyInventoryServiceConnector(string serverURI) - { - m_ServerURI = serverURI.TrimEnd('/'); - } - - /// - /// - /// - /// - /// - public bool CreateUserInventory(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject( - "POST", m_ServerURI + "CreateInventory/", userId.Guid); - } - - /// - /// - /// - /// - /// - public List GetInventorySkeleton(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject>( - "POST", m_ServerURI + "RootFolders/", userId.Guid); - } - - /// - /// Returns a list of all the active gestures in a user's inventory. - /// - /// - /// The of the user - /// - /// - /// A flat list of the gesture items. - /// - public List GetActiveGestures(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject>( - "POST", m_ServerURI + "ActiveGestures/", userId.Guid); - } - - public InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public void GetUserInventory(UUID userID, InventoryReceiptCallback callback) - { - } - - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - { - return null; - } - - public InventoryCollection GetFolderContent(UUID userID, UUID folderID) - { - return null; - } - - public List GetFolderItems(UUID userID, UUID folderID) - { - return null; - } - - public bool AddFolder(InventoryFolderBase folder) - { - return false; - } - - public bool UpdateFolder(InventoryFolderBase folder) - { - return false; - } - - public bool MoveFolder(InventoryFolderBase folder) - { - return false; - } - - public bool DeleteFolders(UUID ownerID, List folderIDs) - { - return false; - } - - - public bool PurgeFolder(InventoryFolderBase folder) - { - return false; - } - - public bool AddItem(InventoryItemBase item) - { - return false; - } - - public bool UpdateItem(InventoryItemBase item) - { - return false; - } - - public bool MoveItems(UUID ownerID, List items) - { - return false; - } - - public bool DeleteItems(UUID owner, List itemIDs) - { - return false; - } - - public InventoryItemBase GetItem(InventoryItemBase item) - { - return null; - } - - public InventoryFolderBase GetFolder(InventoryFolderBase folder) - { - return null; - } - - public bool HasInventoryForUser(UUID userID) - { - return false; - } - - public InventoryFolderBase GetRootFolder(UUID userID) - { - return null; - } - - public int GetAssetPermissions(UUID userID, UUID assetID) - { - return 0; - } - - } -} From 4e0b0f0f4c30eeb256b88ca0f141ad7e014a5e0b Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 5 Feb 2011 04:24:43 +0000 Subject: [PATCH 022/192] Fix a typo in the QUERYACCESS method name --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 2601d2ac5a..c3545aa17c 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -110,7 +110,7 @@ namespace OpenSim.Server.Handlers.Simulation DoAgentDelete(request, responsedata, agentID, action, regionID); return responsedata; } - else if (method.Equals("QUERYACCESSS")) + else if (method.Equals("QUERYACCESS")) { DoQueryAccess(request, responsedata, agentID, regionID); return responsedata; From 67555994adc6b5449a0a1c21997e7bfcf880ad02 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 07:55:54 -0800 Subject: [PATCH 023/192] Amend to yesterday's deletions: forgot to delete the RemoteInventory module in th addin.xml file. --- OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index 43de2abd15..a9d247a2b8 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml @@ -47,7 +47,6 @@ - From 3a2a48a8cad9914862b6804cb46b21bc2c8d6bf7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 08:20:13 -0800 Subject: [PATCH 024/192] Add sane packing of ServiceURLs -- OSDMap. The old way (OSDArray) is still supported for backwards compatibility, but will be removed in the future. --- OpenSim/Framework/AgentCircuitData.cs | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 1600bdc00d..3dbc215d46 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -220,6 +220,8 @@ namespace OpenSim.Framework args["packed_appearance"] = appmap; } + // Old, bad way. Keeping it fow now for backwards compatibility + // OBSOLETE -- soon to be deleted if (ServiceURLs != null && ServiceURLs.Count > 0) { OSDArray urls = new OSDArray(ServiceURLs.Count * 2); @@ -232,6 +234,19 @@ namespace OpenSim.Framework args["service_urls"] = urls; } + // again, this time the right way + if (ServiceURLs != null && ServiceURLs.Count > 0) + { + OSDMap urls = new OSDMap(); + foreach (KeyValuePair kvp in ServiceURLs) + { + //System.Console.WriteLine("XXX " + kvp.Key + "=" + kvp.Value); + urls[kvp.Key] = OSD.FromString((kvp.Value == null) ? string.Empty : kvp.Value.ToString()); + } + args["serviceurls"] = urls; + } + + return args; } @@ -327,7 +342,20 @@ namespace OpenSim.Framework } ServiceURLs = new Dictionary(); - if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) + // Try parse the new way, OSDMap + if (args.ContainsKey("serviceurls") && args["serviceurls"] != null && (args["serviceurls"]).Type == OSDType.Map) + { + OSDMap urls = (OSDMap)(args["serviceurls"]); + foreach (KeyValuePair kvp in urls) + { + ServiceURLs[kvp.Key] = kvp.Value.AsString(); + //System.Console.WriteLine("XXX " + kvp.Key + "=" + ServiceURLs[kvp.Key]); + + } + } + // else try the old way, OSDArray + // OBSOLETE -- soon to be deleted + else if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) { OSDArray urls = (OSDArray)(args["service_urls"]); for (int i = 0; i < urls.Count / 2; i++) From b20ab1063f5717a69fb3226c44b4af5228280d35 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 17:57:30 -0800 Subject: [PATCH 025/192] Added a couple of console commands to help diagnose issues: show circuits: shows the lists of agent circuit data show http-handlers: shows the currently registered http handlers --- .../Servers/HttpServer/BaseHttpServer.cs | 32 ++++++++++++ OpenSim/Region/Application/OpenSim.cs | 50 +++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index d4ee7ba56d..4c35132ad1 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -143,6 +143,11 @@ namespace OpenSim.Framework.Servers.HttpServer } } + public List GetStreamHandlerKeys() + { + return new List(m_streamHandlers.Keys); + } + private static string GetHandlerKey(string httpMethod, string path) { return httpMethod + ":" + path; @@ -179,6 +184,11 @@ namespace OpenSim.Framework.Servers.HttpServer } } + public List GetXmlRpcHandlerKeys() + { + return new List(m_rpcHandlers.Keys); + } + public bool AddHTTPHandler(string methodName, GenericHTTPMethod handler) { //m_log.DebugFormat("[BASE HTTP SERVER]: Registering {0}", methodName); @@ -196,6 +206,12 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetHTTPHandlerKeys() + { + return new List(m_HTTPHandlers.Keys); + } + + public bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args) { bool pollHandlerResult = false; @@ -214,6 +230,12 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetPollServiceHandlerKeys() + { + return new List(m_pollHandlers.Keys); + } + + // Note that the agent string is provided simply to differentiate // the handlers - it is NOT required to be an actual agent header // value. @@ -232,6 +254,11 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetAgentHandlerKeys() + { + return new List(m_agentHandlers.Keys); + } + public bool AddLLSDHandler(string path, LLSDMethod handler) { lock (m_llsdHandlers) @@ -245,6 +272,11 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetLLSDHandlerKeys() + { + return new List(m_llsdHandlers.Keys); + } + public bool SetDefaultLLSDHandler(DefaultLLSDMethod handler) { m_defaultLlsdHandler = handler; diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index ed4b6203c7..bbcc588fcc 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -294,6 +294,14 @@ namespace OpenSim "show connections", "Show connection data", HandleShow); + m_console.Commands.AddCommand("region", false, "show circuits", + "show circuits", + "Show agent circuit data", HandleShow); + + m_console.Commands.AddCommand("region", false, "show http-handlers", + "show http-handlers", + "Show all registered http handlers", HandleShow); + m_console.Commands.AddCommand("region", false, "show modules", "show modules", "Show module data", HandleShow); @@ -943,6 +951,48 @@ namespace OpenSim MainConsole.Instance.Output(connections.ToString()); break; + case "circuits": + System.Text.StringBuilder acd = new System.Text.StringBuilder("Agent Circuits:\n"); + m_sceneManager.ForEachScene( + delegate(Scene scene) + { + //this.HttpServer. + acd.AppendFormat("{0}:\n", scene.RegionInfo.RegionName); + foreach (AgentCircuitData aCircuit in scene.AuthenticateHandler.AgentCircuits.Values) + acd.AppendFormat("\t{0} {1} ({2})\n", aCircuit.firstname, aCircuit.lastname, (aCircuit.child ? "Child" : "Root")); + } + ); + + MainConsole.Instance.Output(acd.ToString()); + break; + + case "http-handlers": + System.Text.StringBuilder handlers = new System.Text.StringBuilder("Registered HTTP Handlers:\n"); + + handlers.AppendFormat("* XMLRPC:\n"); + foreach (String s in HttpServer.GetXmlRpcHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* HTTP:\n"); + List poll = HttpServer.GetPollServiceHandlerKeys(); + foreach (String s in HttpServer.GetHTTPHandlerKeys()) + handlers.AppendFormat("\t{0} {1}\n", s, (poll.Contains(s) ? "(poll service)" : string.Empty)); + + handlers.AppendFormat("* Agent:\n"); + foreach (String s in HttpServer.GetAgentHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* LLSD:\n"); + foreach (String s in HttpServer.GetLLSDHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* StreamHandlers ({0}):\n", HttpServer.GetStreamHandlerKeys().Count); + foreach (String s in HttpServer.GetStreamHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + MainConsole.Instance.Output(handlers.ToString()); + break; + case "modules": MainConsole.Instance.Output("The currently loaded shared modules are:"); foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) From 30fa5ad1e29df50de99611b43adfd577696bfdda Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:21:12 -0800 Subject: [PATCH 026/192] One more diagnosis command: show caps --- .../Agent/Capabilities/CapabilitiesModule.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs index c023a6f738..75df6cc512 100644 --- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs @@ -26,12 +26,14 @@ */ using System; +using System.Collections; using System.Collections.Generic; using System.Reflection; using log4net; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Console; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using Caps=OpenSim.Framework.Capabilities.Caps; @@ -61,6 +63,10 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities { m_scene = scene; m_scene.RegisterModuleInterface(this); + MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", + "show capabilities", + "Shows all registered capabilities", CapabilitiesCommand); + m_log.Error("\n\n**************************************************************\n\n"); } public void RegionLoaded(Scene scene) @@ -72,7 +78,9 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities m_scene.UnregisterModuleInterface(this); } - public void PostInitialise() {} + public void PostInitialise() + { + } public void Close() {} @@ -226,5 +234,23 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities m_log.Info(" >> "+x+", "+y+": "+kvp.Value); } } + + private void CapabilitiesCommand(string module, string[] cmdparams) + { + System.Text.StringBuilder caps = new System.Text.StringBuilder(); + caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName); + + foreach (KeyValuePair kvp in m_capsHandlers) + { + caps.AppendFormat("** User {0}:\n", kvp.Key); + for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); ) + { + Uri uri = new Uri(kvp2.Value.ToString()); + caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery); + } + } + + MainConsole.Instance.Output(caps.ToString()); + } } } From cc81d924cab97889538c20e9bfa45008ecfead3e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:34:02 -0800 Subject: [PATCH 027/192] Fixed Caps handlers leak --- OpenSim/Framework/Capabilities/CapsHandlers.cs | 2 +- .../Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/OpenSim/Framework/Capabilities/CapsHandlers.cs b/OpenSim/Framework/Capabilities/CapsHandlers.cs index 864e6ddb7e..e1c800e907 100644 --- a/OpenSim/Framework/Capabilities/CapsHandlers.cs +++ b/OpenSim/Framework/Capabilities/CapsHandlers.cs @@ -88,8 +88,8 @@ namespace OpenSim.Framework.Capabilities /// handler to be removed public void Remove(string capsName) { - // This line must be here, or caps will break! m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path); + m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path); m_capsHandlers.Remove(capsName); } diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs index 75df6cc512..1d8e70ed54 100644 --- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs @@ -66,7 +66,6 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", "show capabilities", "Shows all registered capabilities", CapabilitiesCommand); - m_log.Error("\n\n**************************************************************\n\n"); } public void RegionLoaded(Scene scene) From 3411d4867d01d4cf87f09300f69d149c5269c611 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:40:55 -0800 Subject: [PATCH 028/192] Honor check of m_Enabled in WorldViewModule. --- .../Region/OptionalModules/World/WorldView/WorldViewModule.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs index d4b7020542..cee8851c3a 100644 --- a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs +++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs @@ -71,6 +71,9 @@ namespace OpenSim.Region.OptionalModules.World.WorldView public void RegionLoaded(Scene scene) { + if (!m_Enabled) + return; + m_Generator = scene.RequestModuleInterface(); if (m_Generator == null) { From 2c7e87c45bb0d543ba0ab9342a1bc29f92fb4fd3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 6 Feb 2011 07:51:20 -0800 Subject: [PATCH 029/192] Better output for show neighbours --- .../Grid/LocalGridServiceConnector.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs index 023a44c601..3c36799050 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs @@ -247,13 +247,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid public void NeighboursCommand(string module, string[] cmdparams) { + System.Text.StringBuilder caps = new System.Text.StringBuilder(); + foreach (KeyValuePair kvp in m_LocalCache) { - m_log.InfoFormat("*** Neighbours of {0} {1} ***", kvp.Key, kvp.Value.RegionName); + caps.AppendFormat("*** Neighbours of {0} ({1}) ***\n", kvp.Value.RegionName, kvp.Key); List regions = kvp.Value.GetNeighbours(); foreach (GridRegion r in regions) - m_log.InfoFormat(" {0} @ {1}={2}", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); + caps.AppendFormat(" {0} @ {1}-{2}\n", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); } + + MainConsole.Instance.Output(caps.ToString()); } } From 98ea78fc77b3dd6da185d71dfab402a0ef8780d6 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 6 Feb 2011 19:39:29 -0800 Subject: [PATCH 030/192] New command: show pending-objects --- OpenSim/Region/Application/OpenSim.cs | 22 +++++++++++++++++++ .../Framework/Interfaces/ISceneViewer.cs | 1 + .../Region/Framework/Scenes/SceneViewer.cs | 8 +++++++ 3 files changed, 31 insertions(+) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index bbcc588fcc..bd1aa468ed 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -302,6 +302,10 @@ namespace OpenSim "show http-handlers", "Show all registered http handlers", HandleShow); + m_console.Commands.AddCommand("region", false, "show pending-objects", + "show pending-objects", + "Show # of objects on the pending queues of all scene viewers", HandleShow); + m_console.Commands.AddCommand("region", false, "show modules", "show modules", "Show module data", HandleShow); @@ -993,6 +997,24 @@ namespace OpenSim MainConsole.Instance.Output(handlers.ToString()); break; + case "pending-objects": + System.Text.StringBuilder pending = new System.Text.StringBuilder("Pending objects:\n"); + m_sceneManager.ForEachScene( + delegate(Scene scene) + { + scene.ForEachScenePresence( + delegate(ScenePresence sp) + { + pending.AppendFormat("{0}: {1} {2} pending\n", + scene.RegionInfo.RegionName, sp.Name, sp.SceneViewer.GetPendingObjectsCount()); + } + ); + } + ); + + MainConsole.Instance.Output(pending.ToString()); + break; + case "modules": MainConsole.Instance.Output("The currently loaded shared modules are:"); foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) diff --git a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs index 7251d57f69..2397f223b3 100644 --- a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs +++ b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs @@ -36,5 +36,6 @@ namespace OpenSim.Region.Framework.Interfaces void Close(); void QueuePartForUpdate(SceneObjectPart part); void SendPrimUpdates(); + int GetPendingObjectsCount(); } } diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs index b44a0100a4..7c067ca148 100644 --- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs +++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs @@ -205,6 +205,14 @@ namespace OpenSim.Region.Framework.Scenes Reset(); } + public int GetPendingObjectsCount() + { + if (m_pendingObjects != null) + return m_pendingObjects.Count; + + return 0; + } + public class ScenePartUpdate { public UUID FullID; From ebeef02fef1a04b5b4cfe13dad588bcce7f9ba21 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 07:45:03 -0800 Subject: [PATCH 031/192] Hunting down mantis #5365 Revert "refactor: remove redundant null checks" This reverts commit 6e58996b4d9db202cd7795a37bd687362effef48. --- .../LindenUDP/UnackedPacketCollection.cs | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 9d40688ac6..d762bef134 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -141,31 +141,46 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds + OutgoingPacket pendingAdd; - while (m_pendingAdds.TryDequeue(out pendingAdd)) - m_packets[pendingAdd.SequenceNumber] = pendingAdd; + if (m_pendingAdds != null) + { + while (m_pendingAdds.TryDequeue(out pendingAdd)) + { + if (pendingAdd != null && m_packets != null) + { + m_packets[pendingAdd.SequenceNumber] = pendingAdd; + } + } + } // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_pendingRemoves != null) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) + while (m_pendingRemoves.TryDequeue(out pendingRemove)) { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) + if (m_pendingRemoves != null && m_packets != null) { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) + { + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) + { + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); + } + } } } } } } -} \ No newline at end of file +} From d934add0213400f03bc4dc2d24e1b0ccee965101 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 14:49:18 -0800 Subject: [PATCH 032/192] Thanks Tokeiito for noticing this bug. mantis #5366 --- .../Authorization/RemoteAuthorizationServiceConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs index 01a2615dc0..66994facff 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs @@ -139,7 +139,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization if (scene != null) { - UserAccount account = scene.UserAccountService.GetUserAccount(UUID.Zero, userID); + UserAccount account = scene.UserAccountService.GetUserAccount(UUID.Zero, new UUID(userID)); isAuthorized = IsAuthorizedForRegion(userID, account.FirstName, account.LastName, account.Email, scene.RegionInfo.RegionName, regionID, out message); } From d627122cdcbff1888b7334a524ed652731ba3766 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 19:44:55 -0800 Subject: [PATCH 033/192] Mantis #5368 -- exception on WorldMap --- .../Region/CoreModules/World/WorldMap/WorldMapModule.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index e0f36a2081..10949701d9 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -764,10 +764,11 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if (!responseMap.ContainsKey(itemtype.ToString())) // remote sim doesnt have the stated region handle { - if (!m_blacklistedregions.ContainsKey(regionhandle)) + m_log.DebugFormat("[WORLD MAP]: Remote sim does not have the stated region. Blacklisting."); + lock (m_blacklistedregions) { - m_log.DebugFormat("[WORLD MAP]: Remote sim does not have the stated region. Blacklisting."); - m_blacklistedregions.Add(regionhandle, Environment.TickCount); + if (!m_blacklistedregions.ContainsKey(regionhandle)) + m_blacklistedregions.Add(regionhandle, Environment.TickCount); } } From 305c755cfbf92b47ccf6823c38d7f9f01a2b03e2 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 07:50:01 -0800 Subject: [PATCH 034/192] XFF header again -- debug. --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index c3545aa17c..3b2c972f2e 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -200,6 +200,11 @@ namespace OpenSim.Server.Handlers.Simulation // We're behind a proxy Hashtable headers = (Hashtable)request["headers"]; + + // DEBUG + foreach (object o in headers.Keys) + m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); + string xff = "X-Forwarded-For"; if (headers.ContainsKey(xff.ToLower())) xff = xff.ToLower(); From 34bd41d1867656d0c7b9147484f1095e5cbfdb0b Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 11:16:38 -0800 Subject: [PATCH 035/192] Comment previous debug --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 3b2c972f2e..6a23deefb2 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -201,9 +201,9 @@ namespace OpenSim.Server.Handlers.Simulation // We're behind a proxy Hashtable headers = (Hashtable)request["headers"]; - // DEBUG - foreach (object o in headers.Keys) - m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); + //// DEBUG + //foreach (object o in headers.Keys) + // m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); string xff = "X-Forwarded-For"; if (headers.ContainsKey(xff.ToLower())) From ac7bc78555c1dd51724790032f0711b24bc8c67d Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 12:06:14 -0800 Subject: [PATCH 036/192] Added emergency monitoring of UDP Outgoing packets thread. Just type "emergency-monitoring on/off" --- .../ClientStack/LindenUDP/LLUDPServer.cs | 100 ++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 2 + .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 30 +++++- 3 files changed, 130 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 5ff9aeee8b..72257d28ce 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Net; using System.Net.Sockets; @@ -1053,6 +1054,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Update Timers + if (m_scene.EmergencyMonitoring) + clientPacketHandler = MonitoredClientOutgoingPacketHandler; + // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent m_scene.ForEachClient(clientPacketHandler); @@ -1068,6 +1072,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler loop threw an exception: " + ex.Message, ex); } + } Watchdog.RemoveThread(); @@ -1105,6 +1110,101 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } + #region Emergency Monitoring + private Stopwatch watch1 = new Stopwatch(); + private Stopwatch watch2 = new Stopwatch(); + + private float avgProcessingTicks = 0; + private float avgResendUnackedTicks = 0; + private float avgSendAcksTicks = 0; + private float avgSendPingTicks = 0; + private float avgDequeueTicks = 0; + private long nticks = 0; + private long nticksUnack = 0; + private long nticksAck = 0; + private long nticksPing = 0; + + private void MonitoredClientOutgoingPacketHandler(IClientAPI client) + { + nticks++; + watch1.Start(); + try + { + if (client is LLClientView) + { + LLUDPClient udpClient = ((LLClientView)client).UDPClient; + + if (udpClient.IsConnected) + { + if (m_resendUnacked) + { + nticksUnack++; + watch2.Start(); + + ResendUnacked(udpClient); + + watch2.Stop(); + avgResendUnackedTicks = (nticksUnack - 1)/(float)nticksUnack * avgResendUnackedTicks + (watch2.ElapsedTicks / (float)nticksUnack); + watch2.Reset(); + } + + if (m_sendAcks) + { + nticksAck++; + watch2.Start(); + + SendAcks(udpClient); + + watch2.Stop(); + avgSendAcksTicks = (nticksAck - 1) / (float)nticksAck * avgSendAcksTicks + (watch2.ElapsedTicks / (float)nticksAck); + watch2.Reset(); + } + + if (m_sendPing) + { + nticksPing++; + watch2.Start(); + + SendPing(udpClient); + + watch2.Stop(); + avgSendPingTicks = (nticksPing - 1) / (float)nticksPing * avgSendPingTicks + (watch2.ElapsedTicks / (float)nticksPing); + watch2.Reset(); + } + + watch2.Start(); + // Dequeue any outgoing packets that are within the throttle limits + if (udpClient.DequeueOutgoing()) + m_packetSent = true; + watch2.Stop(); + avgDequeueTicks = (nticks - 1) / (float)nticks * avgDequeueTicks + (watch2.ElapsedTicks / (float)nticks); + watch2.Reset(); + + } + else + m_log.WarnFormat("[LLUDPSERVER]: Client is not connected"); + } + } + catch (Exception ex) + { + m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler iteration for " + client.Name + + " threw an exception: " + ex.Message, ex); + } + watch1.Stop(); + avgProcessingTicks = (nticks - 1) / (float)nticks * avgProcessingTicks + (watch1.ElapsedTicks / (float)nticks); + watch1.Reset(); + + // reuse this -- it's every 100ms + if (m_scene.EmergencyMonitoring && nticks % 100 == 0) + { + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (pack sent? {5})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, m_packetSent); + } + + } + + #endregion + private void ProcessInPacket(object state) { IncomingPacket incomingPacket = (IncomingPacket)state; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 4fca2610d2..355671cde3 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -64,6 +64,8 @@ namespace OpenSim.Region.Framework.Scenes #region Fields + public bool EmergencyMonitoring = false; + public SynchronizeSceneHandler SynchronizeScene; public SimStatsReporter StatsReporter; public List NorthBorders = new List(); diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 6630edb15e..53cebb2189 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -95,7 +95,15 @@ namespace OpenSim.Region.CoreModules.UDP.Linden "Show throttle settings for each client and for the server overall", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", - ShowThrottlesReport); + ShowThrottlesReport); + + scene.AddCommand( + this, "emergency-monitoring", + "Go on/off emergency monitoring mode", + "Go on/off emergency monitoring mode", + "Go on/off emergency monitoring mode", + EmergencyMonitoring); + } public void RemoveRegion(Scene scene) @@ -120,7 +128,25 @@ namespace OpenSim.Region.CoreModules.UDP.Linden { MainConsole.Instance.Output(GetThrottlesReport(cmd)); } - + + protected void EmergencyMonitoring(string module, string[] cmd) + { + bool mode = true; + if (cmd.Length == 1 || (cmd.Length > 1 && cmd[1] == "on")) + { + mode = true; + MainConsole.Instance.Output("Emergency Monitoring ON"); + } + else + { + mode = false; + MainConsole.Instance.Output("Emergency Monitoring OFF"); + } + + foreach (Scene s in m_scenes.Values) + s.EmergencyMonitoring = mode; + } + protected string GetColumnEntry(string entry, int maxLength, int columnPadding) { return string.Format( From 82846afe4b2a141421bff136dec9eef553522aa7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 12:37:37 -0800 Subject: [PATCH 037/192] Minor improvement to previous commit. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 72257d28ce..703ef6ad04 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1056,6 +1056,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (m_scene.EmergencyMonitoring) clientPacketHandler = MonitoredClientOutgoingPacketHandler; + else + clientPacketHandler = ClientOutgoingPacketHandler; // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent @@ -1197,8 +1199,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP // reuse this -- it's every 100ms if (m_scene.EmergencyMonitoring && nticks % 100 == 0) { - m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (pack sent? {5})", - avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, m_packetSent); + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution); } } From f431bd20ec18222a69fe1371b6145cf7415fdf9f Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 14:49:50 -0800 Subject: [PATCH 038/192] Minor addition to the previous commit --- .../Region/ClientStack/LindenUDP/LLUDPServer.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 703ef6ad04..bfbe95964b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1125,6 +1125,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP private long nticksUnack = 0; private long nticksAck = 0; private long nticksPing = 0; + private int npacksSent = 0; + private int npackNotSent = 0; private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { @@ -1177,7 +1179,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP watch2.Start(); // Dequeue any outgoing packets that are within the throttle limits if (udpClient.DequeueOutgoing()) + { m_packetSent = true; + npacksSent++; + } + else + npackNotSent++; + watch2.Stop(); avgDequeueTicks = (nticks - 1) / (float)nticks * avgDequeueTicks + (watch2.ElapsedTicks / (float)nticks); watch2.Reset(); @@ -1196,11 +1204,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP avgProcessingTicks = (nticks - 1) / (float)nticks * avgProcessingTicks + (watch1.ElapsedTicks / (float)nticks); watch1.Reset(); - // reuse this -- it's every 100ms + // reuse this -- it's every ~100ms if (m_scene.EmergencyMonitoring && nticks % 100 == 0) { - m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5})", - avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution); + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5} sent: {6} notsent: {7})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution, npacksSent, npackNotSent); + npackNotSent = npacksSent = 0; } } From 117462cba18fd0f9610d854760b92362b3beea7c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 17:53:01 -0800 Subject: [PATCH 039/192] Avoid potential race conditions on UseCircuitCode. I artificially made the race condition happen, and got very similar results to those described in mantis #5365 -- no prims/avie sent back. --- .../ClientStack/LindenUDP/LLUDPServer.cs | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index bfbe95964b..04fec95e23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -640,10 +640,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { object[] array = new object[] { buffer, packet }; - if (m_asyncPacketHandling) - Util.FireAndForget(HandleUseCircuitCode, array); - else - HandleUseCircuitCode(array); + Util.FireAndForget(HandleUseCircuitCode, array); return; } @@ -857,11 +854,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint; + // Acknowledge the UseCircuitCode packet immediately, even before processing further + // This is so that the client doesn't send another one + SendAckImmediate(remoteEndPoint, packet.Header.Sequence); + // Begin the process of adding the client to the simulator AddNewClient((UseCircuitCodePacket)packet, remoteEndPoint); - - // Acknowledge the UseCircuitCode packet - SendAckImmediate(remoteEndPoint, packet.Header.Sequence); // m_log.DebugFormat( // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", @@ -927,25 +925,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected virtual void AddClient(uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo) { - // Create the LLUDPClient - LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); - IClientAPI existingClient; - - if (!m_scene.TryGetClient(agentID, out existingClient)) + // In priciple there shouldn't be more than one thread here, ever. + // But in case that happens, we need to synchronize this piece of code + // because it's too important + lock (this) { - // Create the LLClientView - LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); - client.OnLogout += LogoutHandler; + IClientAPI existingClient; - client.DisableFacelights = m_disableFacelights; + if (!m_scene.TryGetClient(agentID, out existingClient)) + { + // Create the LLUDPClient + LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); + // Create the LLClientView + LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); + client.OnLogout += LogoutHandler; - // Start the IClientAPI - client.Start(); - } - else - { - m_log.WarnFormat("[LLUDPSERVER]: Ignoring a repeated UseCircuitCode from {0} at {1} for circuit {2}", - udpClient.AgentID, remoteEndPoint, circuitCode); + client.DisableFacelights = m_disableFacelights; + + // Start the IClientAPI + client.Start(); + + } + else + { + m_log.WarnFormat("[LLUDPSERVER]: Ignoring a repeated UseCircuitCode from {0} at {1} for circuit {2}", + existingClient.AgentId, remoteEndPoint, circuitCode); + } } } From 585473aade100c3ffeef27e0c8e6b6c8c09d0109 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 20:12:33 -0800 Subject: [PATCH 040/192] Brute-force debug -- mantis #5365 --- .../ClientStack/LindenUDP/LLUDPClient.cs | 18 +++++++++++++++--- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 65a8fe3ca8..2d58b941b5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -463,12 +463,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool packetSent = false; ThrottleOutPacketTypeFlags emptyCategories = 0; - //string queueDebugOutput = String.Empty; // Serious debug business + string queueDebugOutput = String.Empty; // Serious debug business for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - //queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business + if (i == 4) + queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) { @@ -476,13 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; + if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { + if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } + else + if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -491,6 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -498,11 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; + if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; + if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -513,17 +521,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); } } + } if (emptyCategories != 0) BeginFireQueueEmpty(emptyCategories); - //m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business + if (m_udpServer.EmergencyMonitoring) + m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business + return packetSent; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 04fec95e23..922e2bcaba 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1133,6 +1133,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int npacksSent = 0; private int npackNotSent = 0; + public bool EmergencyMonitoring + { + get { return m_scene.EmergencyMonitoring; } + } + private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { nticks++; From ba202ea9b08b1205de343c65fd209b6cca4cb6bc Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 21:09:10 -0800 Subject: [PATCH 041/192] Don't build strings unless we're in emergency debugging. --- .../Region/ClientStack/LindenUDP/LLUDPClient.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 2d58b941b5..20f0410979 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -468,7 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (i == 4) + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) @@ -477,17 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (i == 4) queueDebugOutput += " removed tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } else - if (i == 4) queueDebugOutput += " did not remove tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (i == 4) queueDebugOutput += " removed tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (i == 4) queueDebugOutput += " did not remove tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,7 +521,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); From 473fac4dc71858139bd44c1e9ce4fd03d9d1bd91 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:06:20 -0800 Subject: [PATCH 042/192] Detect negative dripAmounts in TokenBuckets. These negatives result from overflown integer operations. Also added Total to the scene throttles in show throttles. --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 3 +++ .../OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index bdbd2848c6..dd526830a3 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -207,6 +207,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP int dripAmount = deltaMS * tokensPerMS; + if (dripAmount < 0) + Console.WriteLine("MAY DAY MAY DAY! Drip amount is " + dripAmount + ". This should not happen"); + content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 53cebb2189..dfeecb1bbc 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -361,7 +361,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden ThrottleRates throttleRates = udpServer.ThrottleRates; report.AppendFormat( "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", - "n/a", + (throttleRates.Total * 8) / 1000, (throttleRates.ResendLimit * 8) / 1000, (throttleRates.LandLimit * 8) / 1000, (throttleRates.WindLimit * 8) / 1000, From 477a869fb2cc615430d78cbad6a5a0eedf6b9bf8 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:08:57 -0800 Subject: [PATCH 043/192] More detection of negatives. --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index dd526830a3..de8b521b67 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -213,6 +213,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; + if (content < 0) + Console.WriteLine("MAY DAY MAY DAY! Content is " + content + ". This should not happen"); + return true; } } From 1bba9c6300db10c78f606bf0c21be17004dde704 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:35:21 -0800 Subject: [PATCH 044/192] Revert "Don't build strings unless we're in emergency debugging." This reverts commit ba202ea9b08b1205de343c65fd209b6cca4cb6bc. --- .../Region/ClientStack/LindenUDP/LLUDPClient.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 20f0410979..2d58b941b5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -468,7 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (m_udpServer.EmergencyMonitoring && i == 4) + if (i == 4) queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) @@ -477,17 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; + if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; + if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } else - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; + if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; + if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; + if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,7 +521,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); From 830fee145d8e8fabc32365ee6f04732d4c85b1e3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:35:36 -0800 Subject: [PATCH 045/192] Revert "Brute-force debug -- mantis #5365" This reverts commit 585473aade100c3ffeef27e0c8e6b6c8c09d0109. --- .../ClientStack/LindenUDP/LLUDPClient.cs | 18 +++--------------- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 ----- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 2d58b941b5..65a8fe3ca8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -463,13 +463,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool packetSent = false; ThrottleOutPacketTypeFlags emptyCategories = 0; - string queueDebugOutput = String.Empty; // Serious debug business + //string queueDebugOutput = String.Empty; // Serious debug business for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (i == 4) - queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business + //queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) { @@ -477,17 +476,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } - else - if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +491,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +498,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,21 +513,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); } } - } if (emptyCategories != 0) BeginFireQueueEmpty(emptyCategories); - if (m_udpServer.EmergencyMonitoring) - m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business - + //m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business return packetSent; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 922e2bcaba..04fec95e23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1133,11 +1133,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int npacksSent = 0; private int npackNotSent = 0; - public bool EmergencyMonitoring - { - get { return m_scene.EmergencyMonitoring; } - } - private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { nticks++; From 1cd951e5aedad4be809fc2674e57e34d0972b67c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 09:39:53 -0800 Subject: [PATCH 046/192] Fix the negative number problem in TokenBucket. mantis #5365 --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index de8b521b67..0a8331f32a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -207,14 +207,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP int dripAmount = deltaMS * tokensPerMS; - if (dripAmount < 0) - Console.WriteLine("MAY DAY MAY DAY! Drip amount is " + dripAmount + ". This should not happen"); - content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; - if (content < 0) - Console.WriteLine("MAY DAY MAY DAY! Content is " + content + ". This should not happen"); + if (dripAmount < 0 || content < 0) + // sim has been idle for too long, integer has overflown + // previous calculation is meaningless, let's put it at correct max + content = maxBurst; return true; } From f33e51e2ffd475ccdbc69429b4b4d707e88cc050 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 09:50:26 -0800 Subject: [PATCH 047/192] Comment instrumentation out. Not needed anymore. Left in comments, in case it is needed again. Mantis #5365 --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 04fec95e23..207d21332c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1059,10 +1059,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Update Timers - if (m_scene.EmergencyMonitoring) - clientPacketHandler = MonitoredClientOutgoingPacketHandler; - else - clientPacketHandler = ClientOutgoingPacketHandler; + // Use this for emergency monitoring -- bug hunting + //if (m_scene.EmergencyMonitoring) + // clientPacketHandler = MonitoredClientOutgoingPacketHandler; + //else + // clientPacketHandler = ClientOutgoingPacketHandler; // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent @@ -1118,6 +1119,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } #region Emergency Monitoring + // Alternative packet handler fuull of instrumentation + // Handy for hunting bugs private Stopwatch watch1 = new Stopwatch(); private Stopwatch watch2 = new Stopwatch(); From 21715396fa0d87bd4936bd37151487346794806d Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 17:45:19 -0800 Subject: [PATCH 048/192] Put the Ack of UseCircuitCode back to where it used to be. Some ppl are reporting login issues. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 207d21332c..584c57719a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -854,14 +854,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint; - // Acknowledge the UseCircuitCode packet immediately, even before processing further - // This is so that the client doesn't send another one - SendAckImmediate(remoteEndPoint, packet.Header.Sequence); - // Begin the process of adding the client to the simulator AddNewClient((UseCircuitCodePacket)packet, remoteEndPoint); - -// m_log.DebugFormat( + + // Send ack + SendAckImmediate(remoteEndPoint, packet.Header.Sequence); + + // m_log.DebugFormat( // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); } From 89bb5c0941625542ce3fe364cf91a2e2fa60cbcf Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 10 Feb 2011 06:09:04 -0800 Subject: [PATCH 049/192] Revert "Hunting down mantis #5365" This reverts commit ebeef02fef1a04b5b4cfe13dad588bcce7f9ba21. --- .../LindenUDP/UnackedPacketCollection.cs | 45 +++++++------------ 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index d762bef134..9d40688ac6 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -141,46 +141,31 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds - OutgoingPacket pendingAdd; - if (m_pendingAdds != null) - { - while (m_pendingAdds.TryDequeue(out pendingAdd)) - { - if (pendingAdd != null && m_packets != null) - { - m_packets[pendingAdd.SequenceNumber] = pendingAdd; - } - } - } + while (m_pendingAdds.TryDequeue(out pendingAdd)) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - if (m_pendingRemoves != null) + while (m_pendingRemoves.TryDequeue(out pendingRemove)) { - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - if (m_pendingRemoves != null && m_packets != null) + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) - { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) - { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); - } - } + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); } } } } } -} +} \ No newline at end of file From 45382e6f828395cbbcc1324d366c4f3e0eff7ad7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 10 Feb 2011 06:26:26 -0800 Subject: [PATCH 050/192] Reinstated a couple of null checks related to the previous revert. --- .../LindenUDP/UnackedPacketCollection.cs | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 9d40688ac6..d195110a23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -143,7 +143,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Process all the pending adds OutgoingPacket pendingAdd; while (m_pendingAdds.TryDequeue(out pendingAdd)) - m_packets[pendingAdd.SequenceNumber] = pendingAdd; + if (pendingAdd != null) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; @@ -152,17 +153,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) + if (ackedPacket != null) { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) + { + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); + } } } } From 8fd58aa00c092da188a67573d4aa87c363f44eff Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 22:09:46 +0000 Subject: [PATCH 051/192] add estate name to show regions console command --- OpenSim/Region/Application/OpenSim.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index bd1aa468ed..408188824d 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -1030,11 +1030,12 @@ namespace OpenSim delegate(Scene scene) { MainConsole.Instance.Output(String.Format( - "Region Name: {0}, Region XLoc: {1}, Region YLoc: {2}, Region Port: {3}", + "Region Name: {0}, Region XLoc: {1}, Region YLoc: {2}, Region Port: {3}, Estate Name: {4}", scene.RegionInfo.RegionName, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY, - scene.RegionInfo.InternalEndPoint.Port)); + scene.RegionInfo.InternalEndPoint.Port, + scene.RegionInfo.EstateSettings.EstateName)); }); break; From 98af0db8c0b38c385bc0136bac5b3b213f8c699c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 22:16:53 +0000 Subject: [PATCH 052/192] minor: Add some more information to the mesh_sculpted_prim [PHYSICS] setting --- bin/OpenSim.ini.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 7245bee2e3..5bac56e66a 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -306,6 +306,9 @@ [ODEPhysicsSettings] ;# {mesh_sculpted_prim} {[Startup]physics:OpenDynamicsEngine} {Mesh sculpties so they collide as they look?} {true false} true ;; Do we want to mesh sculpted prim to collide like they look? + ;; If you are seeing sculpt texture decode problems + ;; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ;; then you might want to try setting this to false. ; mesh_sculpted_prim = true ;# {use_NINJA_physics_joints} {[Startup]physics:OpenDynamicsEngine} {Use jointed (NINJA) physics?} {true false} false From 754c244f468a038be2417ed611e5bf3fb962a987 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 23:06:14 +0000 Subject: [PATCH 053/192] In SQLiteSimulationData.RemoveLandObject(), don't manually remove the row from the data adaptor's Rows list in addition to calling Delete. This matches the behaviour for other deletions and stops this operation failing on Windows .NET (though mono is fine with the duplication). Probably a holdover from copying code from the older legacy adaptor. Resolves http://opensimulator.org/mantis/view.php?id=5361 --- OpenSim/Data/SQLite/SQLiteSimulationData.cs | 6 ------ bin/sqlite3.dll | Bin 505771 -> 559244 bytes 2 files changed, 6 deletions(-) diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs index 8d93354391..377c680d70 100644 --- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs +++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs @@ -669,10 +669,6 @@ namespace OpenSim.Data.SQLite } } - /// - /// - /// - /// public void RemoveLandObject(UUID globalID) { lock (ds) @@ -698,7 +694,6 @@ namespace OpenSim.Data.SQLite if (landRow != null) { landRow.Delete(); - land.Rows.Remove(landRow); } List rowsToDelete = new List(); foreach (DataRow rowToCheck in landaccesslist.Rows) @@ -709,7 +704,6 @@ namespace OpenSim.Data.SQLite for (int iter = 0; iter < rowsToDelete.Count; iter++) { rowsToDelete[iter].Delete(); - landaccesslist.Rows.Remove(rowsToDelete[iter]); } } Commit(); diff --git a/bin/sqlite3.dll b/bin/sqlite3.dll index 558a015a7f83e96d3589f5cbb878736f919ac541..f29dc625fae5afb09cd52653920c967b26fd15e1 100755 GIT binary patch literal 559244 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

0_~1A*iBbE;~Vt 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

ZGCQ@ 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 z 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

K<3PxM1DJte}BV#lxyn@ru4{nSPwWt-oU+r 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

a_VQJ@2Kx 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 P4$!5B^t|>fyYK%20D)O2 From 26727ee044f0be22abf070c7d320bce2da2c0d9a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 23:32:38 +0000 Subject: [PATCH 054/192] refactor: split out estate management commands into separate class --- .../World/Estate/EstateManagementCommands.cs | 156 +++++ .../World/Estate/EstateManagementModule.cs | 584 ++++++++---------- 2 files changed, 400 insertions(+), 340 deletions(-) create mode 100644 OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs new file mode 100644 index 0000000000..14f5b1ef94 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs @@ -0,0 +1,156 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Security; +using log4net; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.Estate +{ + public class EstateManagementCommands + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + protected EstateManagementModule m_module; + + public EstateManagementCommands(EstateManagementModule module) + { + m_module = module; + } + + public void Initialise() + { + m_module.Scene.AddCommand(this, "set terrain texture", + "set terrain texture [] []", + "Sets the terrain to , if or are specified, it will only " + + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + + " that coordinate.", + consoleSetTerrainTexture); + + m_module.Scene.AddCommand(this, "set terrain heights", + "set terrain heights [] []", + "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + + " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", + consoleSetTerrainHeights); + } + + protected void consoleSetTerrainTexture(string module, string[] args) + { + string num = args[3]; + string uuid = args[4]; + int x = (args.Length > 5 ? int.Parse(args[5]) : -1); + int y = (args.Length > 6 ? int.Parse(args[6]) : -1); + + if (x == -1 || m_module.Scene.RegionInfo.RegionLocX == x) + { + if (y == -1 || m_module.Scene.RegionInfo.RegionLocY == y) + { + int corner = int.Parse(num); + UUID texture = UUID.Parse(uuid); + + m_log.Debug("[ESTATEMODULE]: Setting terrain textures for " + m_module.Scene.RegionInfo.RegionName + + string.Format(" (C#{0} = {1})", corner, texture)); + + switch (corner) + { + case 0: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; + break; + case 1: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; + break; + case 2: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; + break; + case 3: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; + break; + } + + m_module.Scene.RegionInfo.RegionSettings.Save(); + m_module.TriggerRegionInfoChange(); + m_module.sendRegionInfoPacketToAll(); + } + } + } + + protected void consoleSetTerrainHeights(string module, string[] args) + { + string num = args[3]; + string min = args[4]; + string max = args[5]; + int x = (args.Length > 6 ? int.Parse(args[6]) : -1); + int y = (args.Length > 7 ? int.Parse(args[7]) : -1); + + if (x == -1 || m_module.Scene.RegionInfo.RegionLocX == x) + { + if (y == -1 || m_module.Scene.RegionInfo.RegionLocY == y) + { + int corner = int.Parse(num); + float lowValue = float.Parse(min, Culture.NumberFormatInfo); + float highValue = float.Parse(max, Culture.NumberFormatInfo); + + m_log.Debug("[ESTATEMODULE]: Setting terrain heights " + m_module.Scene.RegionInfo.RegionName + + string.Format(" (C{0}, {1}-{2}", corner, lowValue, highValue)); + + switch (corner) + { + case 0: + m_module.Scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2SW = highValue; + break; + case 1: + m_module.Scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2NW = highValue; + break; + case 2: + m_module.Scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2SE = highValue; + break; + case 3: + m_module.Scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2NE = highValue; + break; + } + + m_module.Scene.RegionInfo.RegionSettings.Save(); + m_module.TriggerRegionInfoChange(); + m_module.sendRegionHandshakeToAll(); + } + } + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 01f04d93d3..54d3c6126d 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -24,6 +24,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + using System; using System.Collections.Generic; using System.IO; @@ -44,7 +45,9 @@ namespace OpenSim.Region.CoreModules.World.Estate private delegate void LookupUUIDS(List uuidLst); - private Scene m_scene; + public Scene Scene { get; private set; } + + protected EstateManagementCommands m_commands; private EstateTerrainXferHandler TerrainUploader; @@ -58,89 +61,89 @@ namespace OpenSim.Region.CoreModules.World.Estate { uint sun = 0; - if (!m_scene.RegionInfo.EstateSettings.UseGlobalTime) - sun=(uint)(m_scene.RegionInfo.EstateSettings.SunPosition*1024.0) + 0x1800; + if (!Scene.RegionInfo.EstateSettings.UseGlobalTime) + sun = (uint)(Scene.RegionInfo.EstateSettings.SunPosition * 1024.0) + 0x1800; UUID estateOwner; - estateOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; + estateOwner = Scene.RegionInfo.EstateSettings.EstateOwner; - if (m_scene.Permissions.IsGod(remote_client.AgentId)) + if (Scene.Permissions.IsGod(remote_client.AgentId)) estateOwner = remote_client.AgentId; remote_client.SendDetailedEstateData(invoice, - m_scene.RegionInfo.EstateSettings.EstateName, - m_scene.RegionInfo.EstateSettings.EstateID, - m_scene.RegionInfo.EstateSettings.ParentEstateID, + Scene.RegionInfo.EstateSettings.EstateName, + Scene.RegionInfo.EstateSettings.EstateID, + Scene.RegionInfo.EstateSettings.ParentEstateID, GetEstateFlags(), sun, - m_scene.RegionInfo.RegionSettings.Covenant, - m_scene.RegionInfo.EstateSettings.AbuseEmail, + Scene.RegionInfo.RegionSettings.Covenant, + Scene.RegionInfo.EstateSettings.AbuseEmail, estateOwner); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, - m_scene.RegionInfo.EstateSettings.EstateManagers, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateManagers, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, - m_scene.RegionInfo.EstateSettings.EstateAccess, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateAccess, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, - m_scene.RegionInfo.EstateSettings.EstateGroups, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateGroups, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendBannedUserList(invoice, - m_scene.RegionInfo.EstateSettings.EstateBans, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateBans, + Scene.RegionInfo.EstateSettings.EstateID); } private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, int matureLevel, bool restrictPushObject, bool allowParcelChanges) { if (blockTerraform) - m_scene.RegionInfo.RegionSettings.BlockTerraform = true; + Scene.RegionInfo.RegionSettings.BlockTerraform = true; else - m_scene.RegionInfo.RegionSettings.BlockTerraform = false; + Scene.RegionInfo.RegionSettings.BlockTerraform = false; if (noFly) - m_scene.RegionInfo.RegionSettings.BlockFly = true; + Scene.RegionInfo.RegionSettings.BlockFly = true; else - m_scene.RegionInfo.RegionSettings.BlockFly = false; + Scene.RegionInfo.RegionSettings.BlockFly = false; if (allowDamage) - m_scene.RegionInfo.RegionSettings.AllowDamage = true; + Scene.RegionInfo.RegionSettings.AllowDamage = true; else - m_scene.RegionInfo.RegionSettings.AllowDamage = false; + Scene.RegionInfo.RegionSettings.AllowDamage = false; if (blockLandResell) - m_scene.RegionInfo.RegionSettings.AllowLandResell = false; + Scene.RegionInfo.RegionSettings.AllowLandResell = false; else - m_scene.RegionInfo.RegionSettings.AllowLandResell = true; + Scene.RegionInfo.RegionSettings.AllowLandResell = true; - m_scene.RegionInfo.RegionSettings.AgentLimit = (byte) maxAgents; + Scene.RegionInfo.RegionSettings.AgentLimit = (byte) maxAgents; - m_scene.RegionInfo.RegionSettings.ObjectBonus = objectBonusFactor; + Scene.RegionInfo.RegionSettings.ObjectBonus = objectBonusFactor; if (matureLevel <= 13) - m_scene.RegionInfo.RegionSettings.Maturity = 0; + Scene.RegionInfo.RegionSettings.Maturity = 0; else if (matureLevel <= 21) - m_scene.RegionInfo.RegionSettings.Maturity = 1; + Scene.RegionInfo.RegionSettings.Maturity = 1; else - m_scene.RegionInfo.RegionSettings.Maturity = 2; + Scene.RegionInfo.RegionSettings.Maturity = 2; if (restrictPushObject) - m_scene.RegionInfo.RegionSettings.RestrictPushing = true; + Scene.RegionInfo.RegionSettings.RestrictPushing = true; else - m_scene.RegionInfo.RegionSettings.RestrictPushing = false; + Scene.RegionInfo.RegionSettings.RestrictPushing = false; if (allowParcelChanges) - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = true; + Scene.RegionInfo.RegionSettings.AllowLandJoinDivide = true; else - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false; + Scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); @@ -154,19 +157,19 @@ namespace OpenSim.Region.CoreModules.World.Estate switch (corner) { case 0: - m_scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; break; case 1: - m_scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; break; case 2: - m_scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; break; case 3: - m_scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; break; } - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); } @@ -176,23 +179,23 @@ namespace OpenSim.Region.CoreModules.World.Estate switch (corner) { case 0: - m_scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SW = highValue; + Scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2SW = highValue; break; case 1: - m_scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NW = highValue; + Scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2NW = highValue; break; case 2: - m_scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SE = highValue; + Scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2SE = highValue; break; case 3: - m_scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NE = highValue; + Scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2NE = highValue; break; } - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); } @@ -208,30 +211,30 @@ namespace OpenSim.Region.CoreModules.World.Estate bool UseGlobal, bool EstateFixedSun, float EstateSunHour) { // Water Height - m_scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; + Scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; // Terraforming limits - m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit = TerrainRaiseLimit; - m_scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; + Scene.RegionInfo.RegionSettings.TerrainRaiseLimit = TerrainRaiseLimit; + Scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; // Time of day / fixed sun - m_scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; - m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; - m_scene.RegionInfo.RegionSettings.SunPosition = SunHour; + Scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; + Scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; + Scene.RegionInfo.RegionSettings.SunPosition = SunHour; - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString()); //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString()); sendRegionInfoPacketToAll(); - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); } private void handleEstateRestartSimRequest(IClientAPI remoteClient, int timeInSeconds) { - IRestartModule restartModule = m_scene.RequestModuleInterface(); + IRestartModule restartModule = Scene.RequestModuleInterface(); if (restartModule != null) { List times = new List(); @@ -252,8 +255,8 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) { - m_scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); } @@ -261,17 +264,17 @@ namespace OpenSim.Region.CoreModules.World.Estate { // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. - if (user == m_scene.RegionInfo.EstateSettings.EstateOwner) + if (user == Scene.RegionInfo.EstateSettings.EstateOwner) return; // never process EO if ((estateAccessType & 4) != 0) // User add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateUser(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateUser(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -281,13 +284,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 8) != 0) // User remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateUser(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -296,12 +299,12 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 16) != 0) // Group add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateGroup(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateGroup(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -310,13 +313,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 32) != 0) // Group remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -325,9 +328,9 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 64) != 0) // Ban add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || Scene.Permissions.BypassPermissions()) { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; + EstateBan[] banlistcheck = Scene.RegionInfo.EstateSettings.EstateBans; bool alreadyInList = false; @@ -346,20 +349,20 @@ namespace OpenSim.Region.CoreModules.World.Estate EstateBan item = new EstateBan(); item.BannedUserID = user; - item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID; + item.EstateID = Scene.RegionInfo.EstateSettings.EstateID; item.BannedHostAddress = "0.0.0.0"; item.BannedHostIPMask = "0.0.0.0"; - m_scene.RegionInfo.EstateSettings.AddBan(item); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddBan(item); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - ScenePresence s = m_scene.GetScenePresence(user); + ScenePresence s = Scene.GetScenePresence(user); if (s != null) { if (!s.IsChildAgent) { - m_scene.TeleportClientHome(user, s.ControllingClient); + Scene.TeleportClientHome(user, s.ControllingClient); } } @@ -369,7 +372,7 @@ namespace OpenSim.Region.CoreModules.World.Estate remote_client.SendAlertMessage("User is already on the region ban list"); } //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -378,9 +381,9 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 128) != 0) // Ban remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || Scene.Permissions.BypassPermissions()) { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; + EstateBan[] banlistcheck = Scene.RegionInfo.EstateSettings.EstateBans; bool alreadyInList = false; EstateBan listitem = null; @@ -393,20 +396,21 @@ namespace OpenSim.Region.CoreModules.World.Estate listitem = banlistcheck[i]; break; } - } + if (alreadyInList && listitem != null) { - m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); } else { remote_client.SendAlertMessage("User is not on the region ban list"); } + //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -415,12 +419,12 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 256) != 0) // Manager add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateManager(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -429,13 +433,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 512) != 0) // Manager remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -447,7 +451,7 @@ namespace OpenSim.Region.CoreModules.World.Estate private void SendSimulatorBlueBoxMessage( IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message) { - IDialogModule dm = m_scene.RequestModuleInterface(); + IDialogModule dm = Scene.RequestModuleInterface(); if (dm != null) dm.SendNotificationToUsersInRegion(senderID, senderName, message); @@ -462,61 +466,62 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleEstateDebugRegionRequest(IClientAPI remote_client, UUID invoice, UUID senderID, bool scripted, bool collisionEvents, bool physics) { if (physics) - m_scene.RegionInfo.RegionSettings.DisablePhysics = true; + Scene.RegionInfo.RegionSettings.DisablePhysics = true; else - m_scene.RegionInfo.RegionSettings.DisablePhysics = false; + Scene.RegionInfo.RegionSettings.DisablePhysics = false; if (scripted) - m_scene.RegionInfo.RegionSettings.DisableScripts = true; + Scene.RegionInfo.RegionSettings.DisableScripts = true; else - m_scene.RegionInfo.RegionSettings.DisableScripts = false; + Scene.RegionInfo.RegionSettings.DisableScripts = false; if (collisionEvents) - m_scene.RegionInfo.RegionSettings.DisableCollisions = true; + Scene.RegionInfo.RegionSettings.DisableCollisions = true; else - m_scene.RegionInfo.RegionSettings.DisableCollisions = false; + Scene.RegionInfo.RegionSettings.DisableCollisions = false; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); - m_scene.SetSceneCoreDebug(scripted, collisionEvents, physics); + Scene.SetSceneCoreDebug(scripted, collisionEvents, physics); } private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey) { - if (!m_scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) return; if (prey != UUID.Zero) { - ScenePresence s = m_scene.GetScenePresence(prey); + ScenePresence s = Scene.GetScenePresence(prey); if (s != null) { - m_scene.TeleportClientHome(prey, s.ControllingClient); + Scene.TeleportClientHome(prey, s.ControllingClient); } } } private void handleEstateTeleportAllUsersHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID) { - if (!m_scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) return; - m_scene.ForEachScenePresence(delegate(ScenePresence sp) + Scene.ForEachScenePresence(delegate(ScenePresence sp) { if (sp.UUID != senderID) { - ScenePresence p = m_scene.GetScenePresence(sp.UUID); + ScenePresence p = Scene.GetScenePresence(sp.UUID); // make sure they are still there, we could be working down a long list // Also make sure they are actually in the region if (p != null && !p.IsChildAgent) { - m_scene.TeleportClientHome(p.UUID, p.ControllingClient); + Scene.TeleportClientHome(p.UUID, p.ControllingClient); } } }); } + private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) { if (TerrainUploader != null) @@ -547,11 +552,11 @@ namespace OpenSim.Region.CoreModules.World.Estate TerrainUploader = null; } remoteClient.SendAlertMessage("Terrain Upload Complete. Loading...."); - ITerrainModule terr = m_scene.RequestModuleInterface(); + ITerrainModule terr = Scene.RequestModuleInterface(); if (terr != null) { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); + m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); try { @@ -597,7 +602,6 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) { - if (TerrainUploader == null) { @@ -615,16 +619,16 @@ namespace OpenSim.Region.CoreModules.World.Estate { remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); } - } + private void handleTerrainRequest(IClientAPI remote_client, string clientFileName) { // Save terrain here - ITerrainModule terr = m_scene.RequestModuleInterface(); + ITerrainModule terr = Scene.RequestModuleInterface(); if (terr != null) { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); + m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); if (File.Exists(Util.dataDir() + "/terrain.raw")) { File.Delete(Util.dataDir() + "/terrain.raw"); @@ -635,7 +639,7 @@ namespace OpenSim.Region.CoreModules.World.Estate byte[] bdata = new byte[input.Length]; input.Read(bdata, 0, (int)input.Length); remote_client.SendAlertMessage("Terrain file written, starting download..."); - m_scene.XferManager.AddNewFile("terrain.raw", bdata); + Scene.XferManager.AddNewFile("terrain.raw", bdata); // Tell client about it m_log.Warn("[CLIENT]: Sending Terrain to " + remote_client.Name); remote_client.SendInitiateDownload("terrain.raw", clientFileName); @@ -645,35 +649,35 @@ namespace OpenSim.Region.CoreModules.World.Estate private void HandleRegionInfoRequest(IClientAPI remote_client) { RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.estateID = m_scene.RegionInfo.EstateSettings.EstateID; - args.maxAgents = (byte)m_scene.RegionInfo.RegionSettings.AgentLimit; - args.objectBonusFactor = (float)m_scene.RegionInfo.RegionSettings.ObjectBonus; - args.parentEstateID = m_scene.RegionInfo.EstateSettings.ParentEstateID; - args.pricePerMeter = m_scene.RegionInfo.EstateSettings.PricePerMeter; - args.redirectGridX = m_scene.RegionInfo.EstateSettings.RedirectGridX; - args.redirectGridY = m_scene.RegionInfo.EstateSettings.RedirectGridY; + args.billableFactor = Scene.RegionInfo.EstateSettings.BillableFactor; + args.estateID = Scene.RegionInfo.EstateSettings.EstateID; + args.maxAgents = (byte)Scene.RegionInfo.RegionSettings.AgentLimit; + args.objectBonusFactor = (float)Scene.RegionInfo.RegionSettings.ObjectBonus; + args.parentEstateID = Scene.RegionInfo.EstateSettings.ParentEstateID; + args.pricePerMeter = Scene.RegionInfo.EstateSettings.PricePerMeter; + args.redirectGridX = Scene.RegionInfo.EstateSettings.RedirectGridX; + args.redirectGridY = Scene.RegionInfo.EstateSettings.RedirectGridY; args.regionFlags = GetRegionFlags(); - args.simAccess = m_scene.RegionInfo.AccessLevel; - args.sunHour = (float)m_scene.RegionInfo.RegionSettings.SunPosition; - args.terrainLowerLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit; - args.terrainRaiseLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit; - args.useEstateSun = m_scene.RegionInfo.RegionSettings.UseEstateSun; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; - args.simName = m_scene.RegionInfo.RegionName; - args.regionType = m_scene.RegionInfo.RegionType; + args.simAccess = Scene.RegionInfo.AccessLevel; + args.sunHour = (float)Scene.RegionInfo.RegionSettings.SunPosition; + args.terrainLowerLimit = (float)Scene.RegionInfo.RegionSettings.TerrainLowerLimit; + args.terrainRaiseLimit = (float)Scene.RegionInfo.RegionSettings.TerrainRaiseLimit; + args.useEstateSun = Scene.RegionInfo.RegionSettings.UseEstateSun; + args.waterHeight = (float)Scene.RegionInfo.RegionSettings.WaterHeight; + args.simName = Scene.RegionInfo.RegionName; + args.regionType = Scene.RegionInfo.RegionType; remote_client.SendRegionInfoToEstateMenu(args); } private void HandleEstateCovenantRequest(IClientAPI remote_client) { - remote_client.SendEstateCovenantInformation(m_scene.RegionInfo.RegionSettings.Covenant); + remote_client.SendEstateCovenantInformation(Scene.RegionInfo.RegionSettings.Covenant); } private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) { - if (!m_scene.Permissions.CanIssueEstateCommand(remoteClient.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remoteClient.AgentId, false)) return; Dictionary SceneData = new Dictionary(); @@ -681,11 +685,11 @@ namespace OpenSim.Region.CoreModules.World.Estate if (reportType == 1) { - SceneData = m_scene.PhysicsScene.GetTopColliders(); + SceneData = Scene.PhysicsScene.GetTopColliders(); } else if (reportType == 0) { - SceneData = m_scene.SceneGraph.GetTopScripts(); + SceneData = Scene.SceneGraph.GetTopScripts(); } List SceneReport = new List(); @@ -693,7 +697,7 @@ namespace OpenSim.Region.CoreModules.World.Estate { foreach (uint obj in SceneData.Keys) { - SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); + SceneObjectPart prt = Scene.GetSceneObjectPart(obj); if (prt != null) { if (prt.ParentGroup != null) @@ -765,7 +769,7 @@ namespace OpenSim.Region.CoreModules.World.Estate { // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); - IUserManagement userManager = m_scene.RequestModuleInterface(); + IUserManagement userManager = Scene.RequestModuleInterface(); if (userManager != null) userManager.GetUserName(uuidarr[i]); @@ -780,7 +784,7 @@ namespace OpenSim.Region.CoreModules.World.Estate public void sendRegionInfoPacketToAll() { - m_scene.ForEachScenePresence(delegate(ScenePresence sp) + Scene.ForEachScenePresence(delegate(ScenePresence sp) { if (!sp.IsChildAgent) HandleRegionInfoRequest(sp.ControllingClient); @@ -791,99 +795,99 @@ namespace OpenSim.Region.CoreModules.World.Estate { RegionHandshakeArgs args = new RegionHandshakeArgs(); - args.isEstateManager = m_scene.RegionInfo.EstateSettings.IsEstateManager(remoteClient.AgentId); - if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero && m_scene.RegionInfo.EstateSettings.EstateOwner == remoteClient.AgentId) + args.isEstateManager = Scene.RegionInfo.EstateSettings.IsEstateManager(remoteClient.AgentId); + if (Scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero && Scene.RegionInfo.EstateSettings.EstateOwner == remoteClient.AgentId) args.isEstateManager = true; - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.terrainStartHeight0 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SW; - args.terrainHeightRange0 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SW; - args.terrainStartHeight1 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NW; - args.terrainHeightRange1 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NW; - args.terrainStartHeight2 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SE; - args.terrainHeightRange2 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SE; - args.terrainStartHeight3 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NE; - args.terrainHeightRange3 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NE; - args.simAccess = m_scene.RegionInfo.AccessLevel; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; + args.billableFactor = Scene.RegionInfo.EstateSettings.BillableFactor; + args.terrainStartHeight0 = (float)Scene.RegionInfo.RegionSettings.Elevation1SW; + args.terrainHeightRange0 = (float)Scene.RegionInfo.RegionSettings.Elevation2SW; + args.terrainStartHeight1 = (float)Scene.RegionInfo.RegionSettings.Elevation1NW; + args.terrainHeightRange1 = (float)Scene.RegionInfo.RegionSettings.Elevation2NW; + args.terrainStartHeight2 = (float)Scene.RegionInfo.RegionSettings.Elevation1SE; + args.terrainHeightRange2 = (float)Scene.RegionInfo.RegionSettings.Elevation2SE; + args.terrainStartHeight3 = (float)Scene.RegionInfo.RegionSettings.Elevation1NE; + args.terrainHeightRange3 = (float)Scene.RegionInfo.RegionSettings.Elevation2NE; + args.simAccess = Scene.RegionInfo.AccessLevel; + args.waterHeight = (float)Scene.RegionInfo.RegionSettings.WaterHeight; args.regionFlags = GetRegionFlags(); - args.regionName = m_scene.RegionInfo.RegionName; - args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; + args.regionName = Scene.RegionInfo.RegionName; + args.SimOwner = Scene.RegionInfo.EstateSettings.EstateOwner; args.terrainBase0 = UUID.Zero; args.terrainBase1 = UUID.Zero; args.terrainBase2 = UUID.Zero; args.terrainBase3 = UUID.Zero; - args.terrainDetail0 = m_scene.RegionInfo.RegionSettings.TerrainTexture1; - args.terrainDetail1 = m_scene.RegionInfo.RegionSettings.TerrainTexture2; - args.terrainDetail2 = m_scene.RegionInfo.RegionSettings.TerrainTexture3; - args.terrainDetail3 = m_scene.RegionInfo.RegionSettings.TerrainTexture4; + args.terrainDetail0 = Scene.RegionInfo.RegionSettings.TerrainTexture1; + args.terrainDetail1 = Scene.RegionInfo.RegionSettings.TerrainTexture2; + args.terrainDetail2 = Scene.RegionInfo.RegionSettings.TerrainTexture3; + args.terrainDetail3 = Scene.RegionInfo.RegionSettings.TerrainTexture4; - remoteClient.SendRegionHandshake(m_scene.RegionInfo,args); + remoteClient.SendRegionHandshake(Scene.RegionInfo,args); } public void sendRegionHandshakeToAll() { - m_scene.ForEachClient(sendRegionHandshake); + Scene.ForEachClient(sendRegionHandshake); } public void handleEstateChangeInfo(IClientAPI remoteClient, UUID invoice, UUID senderID, UInt32 parms1, UInt32 parms2) { if (parms2 == 0) { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = true; - m_scene.RegionInfo.EstateSettings.SunPosition = 0.0; + Scene.RegionInfo.EstateSettings.UseGlobalTime = true; + Scene.RegionInfo.EstateSettings.SunPosition = 0.0; } else { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = false; - m_scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; + Scene.RegionInfo.EstateSettings.UseGlobalTime = false; + Scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; } if ((parms1 & 0x00000010) != 0) - m_scene.RegionInfo.EstateSettings.FixedSun = true; + Scene.RegionInfo.EstateSettings.FixedSun = true; else - m_scene.RegionInfo.EstateSettings.FixedSun = false; + Scene.RegionInfo.EstateSettings.FixedSun = false; if ((parms1 & 0x00008000) != 0) - m_scene.RegionInfo.EstateSettings.PublicAccess = true; + Scene.RegionInfo.EstateSettings.PublicAccess = true; else - m_scene.RegionInfo.EstateSettings.PublicAccess = false; + Scene.RegionInfo.EstateSettings.PublicAccess = false; if ((parms1 & 0x10000000) != 0) - m_scene.RegionInfo.EstateSettings.AllowVoice = true; + Scene.RegionInfo.EstateSettings.AllowVoice = true; else - m_scene.RegionInfo.EstateSettings.AllowVoice = false; + Scene.RegionInfo.EstateSettings.AllowVoice = false; if ((parms1 & 0x00100000) != 0) - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; + Scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; else - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; + Scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; if ((parms1 & 0x00800000) != 0) - m_scene.RegionInfo.EstateSettings.DenyAnonymous = true; + Scene.RegionInfo.EstateSettings.DenyAnonymous = true; else - m_scene.RegionInfo.EstateSettings.DenyAnonymous = false; + Scene.RegionInfo.EstateSettings.DenyAnonymous = false; if ((parms1 & 0x01000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyIdentified = true; + Scene.RegionInfo.EstateSettings.DenyIdentified = true; else - m_scene.RegionInfo.EstateSettings.DenyIdentified = false; + Scene.RegionInfo.EstateSettings.DenyIdentified = false; if ((parms1 & 0x02000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyTransacted = true; + Scene.RegionInfo.EstateSettings.DenyTransacted = true; else - m_scene.RegionInfo.EstateSettings.DenyTransacted = false; + Scene.RegionInfo.EstateSettings.DenyTransacted = false; if ((parms1 & 0x40000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyMinors = true; + Scene.RegionInfo.EstateSettings.DenyMinors = true; else - m_scene.RegionInfo.EstateSettings.DenyMinors = false; + Scene.RegionInfo.EstateSettings.DenyMinors = false; - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); sendDetailedEstateData(remoteClient, invoice); } @@ -893,121 +897,21 @@ namespace OpenSim.Region.CoreModules.World.Estate #region IRegionModule Members public void Initialise(Scene scene, IConfigSource source) - { - m_scene = scene; - m_scene.RegisterModuleInterface(this); - m_scene.EventManager.OnNewClient += EventManager_OnNewClient; - m_scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; - - m_scene.AddCommand(this, "set terrain texture", - "set terrain texture [] []", - "Sets the terrain to , if or are specified, it will only " + - "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + - " that coordinate.", - consoleSetTerrainTexture); - - m_scene.AddCommand(this, "set terrain heights", - "set terrain heights [] []", - "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + - "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + - " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", - consoleSetTerrainHeights); + { + Scene = scene; + Scene.RegisterModuleInterface(this); + Scene.EventManager.OnNewClient += EventManager_OnNewClient; + Scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; + + m_commands = new EstateManagementCommands(this); + m_commands.Initialise(); } - #region Console Commands - - public void consoleSetTerrainTexture(string module, string[] args) - { - string num = args[3]; - string uuid = args[4]; - int x = (args.Length > 5 ? int.Parse(args[5]) : -1); - int y = (args.Length > 6 ? int.Parse(args[6]) : -1); - - if (x == -1 || m_scene.RegionInfo.RegionLocX == x) - { - if (y == -1 || m_scene.RegionInfo.RegionLocY == y) - { - int corner = int.Parse(num); - UUID texture = UUID.Parse(uuid); - - m_log.Debug("[ESTATEMODULE] Setting terrain textures for " + m_scene.RegionInfo.RegionName + - string.Format(" (C#{0} = {1})", corner, texture)); - - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; - break; - case 1: - m_scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; - break; - case 2: - m_scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; - break; - case 3: - m_scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - TriggerRegionInfoChange(); - sendRegionInfoPacketToAll(); - - } - } - } - - public void consoleSetTerrainHeights(string module, string[] args) - { - string num = args[3]; - string min = args[4]; - string max = args[5]; - int x = (args.Length > 6 ? int.Parse(args[6]) : -1); - int y = (args.Length > 7 ? int.Parse(args[7]) : -1); - - if (x == -1 || m_scene.RegionInfo.RegionLocX == x) - { - if (y == -1 || m_scene.RegionInfo.RegionLocY == y) - { - int corner = int.Parse(num); - float lowValue = float.Parse(min, Culture.NumberFormatInfo); - float highValue = float.Parse(max, Culture.NumberFormatInfo); - - m_log.Debug("[ESTATEMODULE] Setting terrain heights " + m_scene.RegionInfo.RegionName + - string.Format(" (C{0}, {1}-{2}", corner, lowValue, highValue)); - - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SW = highValue; - break; - case 1: - m_scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NW = highValue; - break; - case 2: - m_scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SE = highValue; - break; - case 3: - m_scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NE = highValue; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - TriggerRegionInfoChange(); - sendRegionHandshakeToAll(); - } - } - } - - #endregion - public void PostInitialise() { // Sets up the sun module based no the saved Estate and Region Settings // DO NOT REMOVE or the sun will stop working - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); } public void Close() @@ -1031,14 +935,14 @@ namespace OpenSim.Region.CoreModules.World.Estate public void changeWaterHeight(float height) { setRegionTerrainSettings(height, - (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit, - (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit, - m_scene.RegionInfo.RegionSettings.UseEstateSun, - m_scene.RegionInfo.RegionSettings.FixedSun, - (float)m_scene.RegionInfo.RegionSettings.SunPosition, - m_scene.RegionInfo.EstateSettings.UseGlobalTime, - m_scene.RegionInfo.EstateSettings.FixedSun, - (float)m_scene.RegionInfo.EstateSettings.SunPosition); + (float)Scene.RegionInfo.RegionSettings.TerrainRaiseLimit, + (float)Scene.RegionInfo.RegionSettings.TerrainLowerLimit, + Scene.RegionInfo.RegionSettings.UseEstateSun, + Scene.RegionInfo.RegionSettings.FixedSun, + (float)Scene.RegionInfo.RegionSettings.SunPosition, + Scene.RegionInfo.EstateSettings.UseGlobalTime, + Scene.RegionInfo.EstateSettings.FixedSun, + (float)Scene.RegionInfo.EstateSettings.SunPosition); sendRegionInfoPacketToAll(); } @@ -1078,32 +982,32 @@ namespace OpenSim.Region.CoreModules.World.Estate // Fully implemented // - if (m_scene.RegionInfo.RegionSettings.AllowDamage) + if (Scene.RegionInfo.RegionSettings.AllowDamage) flags |= RegionFlags.AllowDamage; - if (m_scene.RegionInfo.RegionSettings.BlockTerraform) + if (Scene.RegionInfo.RegionSettings.BlockTerraform) flags |= RegionFlags.BlockTerraform; - if (!m_scene.RegionInfo.RegionSettings.AllowLandResell) + if (!Scene.RegionInfo.RegionSettings.AllowLandResell) flags |= RegionFlags.BlockLandResell; - if (m_scene.RegionInfo.RegionSettings.DisableCollisions) + if (Scene.RegionInfo.RegionSettings.DisableCollisions) flags |= RegionFlags.SkipCollisions; - if (m_scene.RegionInfo.RegionSettings.DisableScripts) + if (Scene.RegionInfo.RegionSettings.DisableScripts) flags |= RegionFlags.SkipScripts; - if (m_scene.RegionInfo.RegionSettings.DisablePhysics) + if (Scene.RegionInfo.RegionSettings.DisablePhysics) flags |= RegionFlags.SkipPhysics; - if (m_scene.RegionInfo.RegionSettings.BlockFly) + if (Scene.RegionInfo.RegionSettings.BlockFly) flags |= RegionFlags.NoFly; - if (m_scene.RegionInfo.RegionSettings.RestrictPushing) + if (Scene.RegionInfo.RegionSettings.RestrictPushing) flags |= RegionFlags.RestrictPushObject; - if (m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide) + if (Scene.RegionInfo.RegionSettings.AllowLandJoinDivide) flags |= RegionFlags.AllowParcelChanges; - if (m_scene.RegionInfo.RegionSettings.BlockShowInSearch) + if (Scene.RegionInfo.RegionSettings.BlockShowInSearch) flags |= RegionFlags.BlockParcelSearch; - if (m_scene.RegionInfo.RegionSettings.FixedSun) + if (Scene.RegionInfo.RegionSettings.FixedSun) flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.RegionSettings.Sandbox) + if (Scene.RegionInfo.RegionSettings.Sandbox) flags |= RegionFlags.Sandbox; - if (m_scene.RegionInfo.EstateSettings.AllowVoice) + if (Scene.RegionInfo.EstateSettings.AllowVoice) flags |= RegionFlags.AllowVoice; // Fudge these to always on, so the menu options activate @@ -1125,32 +1029,32 @@ namespace OpenSim.Region.CoreModules.World.Estate { RegionFlags flags = RegionFlags.None; - if (m_scene.RegionInfo.EstateSettings.FixedSun) + if (Scene.RegionInfo.EstateSettings.FixedSun) flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.EstateSettings.PublicAccess) + if (Scene.RegionInfo.EstateSettings.PublicAccess) flags |= (RegionFlags.PublicAllowed | RegionFlags.ExternallyVisible); - if (m_scene.RegionInfo.EstateSettings.AllowVoice) + if (Scene.RegionInfo.EstateSettings.AllowVoice) flags |= RegionFlags.AllowVoice; - if (m_scene.RegionInfo.EstateSettings.AllowDirectTeleport) + if (Scene.RegionInfo.EstateSettings.AllowDirectTeleport) flags |= RegionFlags.AllowDirectTeleport; - if (m_scene.RegionInfo.EstateSettings.DenyAnonymous) + if (Scene.RegionInfo.EstateSettings.DenyAnonymous) flags |= RegionFlags.DenyAnonymous; - if (m_scene.RegionInfo.EstateSettings.DenyIdentified) + if (Scene.RegionInfo.EstateSettings.DenyIdentified) flags |= RegionFlags.DenyIdentified; - if (m_scene.RegionInfo.EstateSettings.DenyTransacted) + if (Scene.RegionInfo.EstateSettings.DenyTransacted) flags |= RegionFlags.DenyTransacted; - if (m_scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) + if (Scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) flags |= RegionFlags.AbuseEmailToEstateOwner; - if (m_scene.RegionInfo.EstateSettings.BlockDwell) + if (Scene.RegionInfo.EstateSettings.BlockDwell) flags |= RegionFlags.BlockDwell; - if (m_scene.RegionInfo.EstateSettings.EstateSkipScripts) + if (Scene.RegionInfo.EstateSettings.EstateSkipScripts) flags |= RegionFlags.EstateSkipScripts; - if (m_scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) + if (Scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) flags |= RegionFlags.ResetHomeOnTeleport; - if (m_scene.RegionInfo.EstateSettings.TaxFree) + if (Scene.RegionInfo.EstateSettings.TaxFree) flags |= RegionFlags.TaxFree; - if (m_scene.RegionInfo.EstateSettings.DenyMinors) + if (Scene.RegionInfo.EstateSettings.DenyMinors) flags |= (RegionFlags)(1 << 30); return (uint)flags; @@ -1158,38 +1062,38 @@ namespace OpenSim.Region.CoreModules.World.Estate public bool IsManager(UUID avatarID) { - if (avatarID == m_scene.RegionInfo.EstateSettings.EstateOwner) + if (avatarID == Scene.RegionInfo.EstateSettings.EstateOwner) return true; - List ems = new List(m_scene.RegionInfo.EstateSettings.EstateManagers); + List ems = new List(Scene.RegionInfo.EstateSettings.EstateManagers); if (ems.Contains(avatarID)) return true; return false; } - protected void TriggerRegionInfoChange() + public void TriggerRegionInfoChange() { ChangeDelegate change = OnRegionInfoChange; if (change != null) - change(m_scene.RegionInfo.RegionID); + change(Scene.RegionInfo.RegionID); } - protected void TriggerEstateInfoChange() + public void TriggerEstateInfoChange() { ChangeDelegate change = OnEstateInfoChange; if (change != null) - change(m_scene.RegionInfo.RegionID); + change(Scene.RegionInfo.RegionID); } - protected void TriggerEstateMessage(UUID fromID, string fromName, string message) + public void TriggerEstateMessage(UUID fromID, string fromName, string message) { MessageDelegate onmessage = OnEstateMessage; if (onmessage != null) - onmessage(m_scene.RegionInfo.RegionID, fromID, fromName, message); + onmessage(Scene.RegionInfo.RegionID, fromID, fromName, message); } } } From 7e21c1eadf28e86b29fdd24b33e29950e195c6db Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 00:46:01 +0000 Subject: [PATCH 055/192] Hack in a crude temporary "estate show" command This will show the estate for each region, along with that estate's id and the estate owner. This is temporary because the command output might change. This commit also converts the estate module from the old to the new region module format --- .../World/Estate/EstateManagementCommands.cs | 74 ++++++++++++++++++- .../World/Estate/EstateManagementModule.cs | 40 +++++----- .../Framework/Interfaces/IEstateModule.cs | 2 +- 3 files changed, 94 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs index 14f5b1ef94..f6d1a826c7 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs @@ -30,21 +30,29 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Security; +using System.Text; using log4net; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.CoreModules.Framework.InterfaceCommander; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.World.Estate { + ///

+ /// Estate management console commands. + /// public class EstateManagementCommands { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected EstateManagementModule m_module; + protected Commander m_commander = new Commander("estate"); + public EstateManagementCommands(EstateManagementModule module) { m_module = module; @@ -52,20 +60,60 @@ namespace OpenSim.Region.CoreModules.World.Estate public void Initialise() { - m_module.Scene.AddCommand(this, "set terrain texture", + m_log.DebugFormat("[ESTATE MODULE]: Setting up estate commands for region {0}", m_module.Scene.RegionInfo.RegionName); + + m_module.Scene.AddCommand(m_module, "set terrain texture", "set terrain texture [] []", "Sets the terrain to , if or are specified, it will only " + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + " that coordinate.", consoleSetTerrainTexture); - m_module.Scene.AddCommand(this, "set terrain heights", + m_module.Scene.AddCommand(m_module, "set terrain heights", "set terrain heights [] []", "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", consoleSetTerrainHeights); - } + + Command showCommand + = new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowEstatesCommand, "Shows all estates on the simulator."); + + m_commander.RegisterCommand("show", showCommand); + + m_module.Scene.RegisterModuleCommander(m_commander); + + m_module.Scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; + } + + public void Close() + { + m_module.Scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole; + m_module.Scene.UnregisterModuleCommander(m_commander.Name); + } + + /// + /// Processes commandline input. Do not call directly. + /// + /// Commandline arguments + protected void EventManagerOnPluginConsole(string[] args) + { + if (args[0] == "estate") + { + if (args.Length == 1) + { + m_commander.ProcessConsoleCommand("help", new string[0]); + return; + } + + string[] tmpArgs = new string[args.Length - 2]; + int i; + for (i = 2; i < args.Length; i++) + tmpArgs[i - 2] = args[i]; + + m_commander.ProcessConsoleCommand(args[1], tmpArgs); + } + } protected void consoleSetTerrainTexture(string module, string[] args) { @@ -152,5 +200,25 @@ namespace OpenSim.Region.CoreModules.World.Estate } } } + + protected void ShowEstatesCommand(Object[] args) + { + StringBuilder report = new StringBuilder(); + RegionInfo ri = m_module.Scene.RegionInfo; + EstateSettings es = ri.EstateSettings; + + report.AppendFormat("Estate information for region {0}\n", ri.RegionName); + report.AppendFormat( + "{0,-20} {1,-7} {2,-20}\n", + "Estate Name", + "ID", + "Owner"); + + report.AppendFormat( + "{0,-20} {1,-7} {2,-20}\n", + es.EstateName, es.EstateID, m_module.UserManager.GetUserName(es.EstateOwner)); + + MainConsole.Instance.Output(report.ToString()); + } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 54d3c6126d..57ab13550a 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -31,6 +31,7 @@ using System.IO; using System.Reflection; using System.Security; using log4net; +using Mono.Addins; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; @@ -39,15 +40,17 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.World.Estate { - public class EstateManagementModule : IEstateModule + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "EstateManagementModule")] + public class EstateManagementModule : IEstateModule, INonSharedRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private delegate void LookupUUIDS(List uuidLst); public Scene Scene { get; private set; } + public IUserManagement UserManager { get; private set; } - protected EstateManagementCommands m_commands; + protected EstateManagementCommands m_commands; private EstateTerrainXferHandler TerrainUploader; @@ -895,9 +898,15 @@ namespace OpenSim.Region.CoreModules.World.Estate #endregion #region IRegionModule Members + + public string Name { get { return "EstateManagementModule"; } } + + public Type ReplaceableInterface { get { return null; } } - public void Initialise(Scene scene, IConfigSource source) - { + public void Initialise(IConfigSource source) {} + + public void AddRegion(Scene scene) + { Scene = scene; Scene.RegisterModuleInterface(this); Scene.EventManager.OnNewClient += EventManager_OnNewClient; @@ -906,26 +915,21 @@ namespace OpenSim.Region.CoreModules.World.Estate m_commands = new EstateManagementCommands(this); m_commands.Initialise(); } - - public void PostInitialise() + + public void RemoveRegion(Scene scene) {} + + public void RegionLoaded(Scene scene) { // Sets up the sun module based no the saved Estate and Region Settings // DO NOT REMOVE or the sun will stop working - Scene.TriggerEstateSunUpdate(); + scene.TriggerEstateSunUpdate(); + + UserManager = scene.RequestModuleInterface(); } - public void Close() + public void Close() { - } - - public string Name - { - get { return "EstateManagementModule"; } - } - - public bool IsSharedModule - { - get { return false; } + m_commands.Close(); } #endregion diff --git a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs index c850f7fd81..721f0eedea 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs @@ -32,7 +32,7 @@ namespace OpenSim.Region.Framework.Interfaces public delegate void ChangeDelegate(UUID regionID); public delegate void MessageDelegate(UUID regionID, UUID fromID, string fromName, string message); - public interface IEstateModule : IRegionModule + public interface IEstateModule { event ChangeDelegate OnRegionInfoChange; event ChangeDelegate OnEstateInfoChange; From 03d82a5a8524cfba07d95456d59be6f35ab72048 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 01:08:56 +0000 Subject: [PATCH 056/192] Fix bug where "My estate" name was always used even if the user entered a different name on initial setup. Turns out we had stopped saving estate settings immediately after the name change. The scene constructor then reloade the settings and oblitereted the different name. This code could be more efficient since there's no reason for scene to reload the settings when they are already known to be valid. Thanks to Thoneve for the spot on this. --- .../LoadRegions/LoadRegionsPlugin.cs | 2 ++ OpenSim/Region/Application/OpenSimBase.cs | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index 7ef0f5f455..f37c399050 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -122,9 +122,11 @@ namespace OpenSim.ApplicationPlugins.LoadRegions m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId.ToString() + ")"); + m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]); m_openSim.CreateRegion(regionsToLoad[i], true, out scene); regionsToLoad[i].EstateSettings.Save(); + if (scene != null) { m_newRegionCreatedHandler = OnNewRegionCreated; diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 1652b82542..e950613e6b 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -795,9 +795,7 @@ namespace OpenSim /// /// Load the estate information for the provided RegionInfo object. /// - /// - /// A - /// + /// public void PopulateRegionEstateInfo(RegionInfo regInfo) { IEstateDataService estateDataService = EstateDataService; @@ -819,7 +817,13 @@ namespace OpenSim regInfo.EstateSettings = estateDataService.LoadEstateSettings(regInfo.RegionID, true); regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); - //regInfo.EstateSettings.Save(); + + // FIXME: Later on, the scene constructor will reload the estate settings no matter what. + // Therefore, we need to do an initial save here otherwise the new estate name will be reset + // back to the default. The reloading of estate settings by scene could be eliminated if it + // knows that the passed in settings in RegionInfo are already valid. Also, it might be + // possible to eliminate some additional later saves made by callers of this method. + regInfo.EstateSettings.Save(); break; } else From 9801bf03f8ab59e1fe8d439a216ca48a5bd68dc7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 01:14:12 +0000 Subject: [PATCH 057/192] minor: add comment explaining that GetRegionsByName needs to stay in TeleportAgent for its side effects. --- .../Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 3f8735e0c1..688dfe4649 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -702,6 +702,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // and convert the regionName to the target region if (regionName.Contains(".") && regionName.Contains(":")) { + // Even though we use none of the results, we need to perform this call because it appears + // to have some the side effect of setting up hypergrid teleport locations. World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); // List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); From a8ced66e873d09bd1c9fd0cfe5d0487bf0ee27e7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 07:28:21 -0800 Subject: [PATCH 058/192] Improved error message on TP failure --- .../Framework/EntityTransfer/EntityTransferModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 80a804137f..1337143a31 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer } catch (Exception e) { - m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0} {1}", e.Message, e.StackTrace); sp.ControllingClient.SendTeleportFailed("Internal error"); } } From 059e9eaf98c93c0befd84b99c88d9411ddd73817 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 14:38:46 -0800 Subject: [PATCH 059/192] Fixed a couple of tests in the HttpServer. Not sure if this is enough. Mantis #5373 and #5384 --- bin/HttpServer_OpenSim.dll | Bin 115712 -> 115712 bytes bin/HttpServer_OpenSim.pdb | Bin 409088 -> 409088 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/HttpServer_OpenSim.dll b/bin/HttpServer_OpenSim.dll index d7503a0915af2502889385f98811510dc784a79a..a7a1303c63a454d186cd99f206b470a6127d054c 100644 GIT binary patch delta 253 zcmVJK6BT57>P4?zU%KC zuW_Ci{0d{AudhKr6z0W1V3$w2hN9{1Vqu&J8PX> z_5ljB&;nCT0Wz~BPck3@F|${1cJU-eGBY?eG&wabIWsaaEi^JRGc7?eG(s&fLqjz= zGDAc|HZ?G}@n8XLJr7hk@*tBVLZM3x#gfg&P`7NJ0U#X%mIhaskGlaW0R*?Xy8%ZC D!ZK&R delta 253 zcmVGDbAF@n8XLJrBFeK6v$~N}dV%hHtfk^tWuD0U#X%{c8=EkGlaW0Ry+Wy8%ZC D8Y*fD diff --git a/bin/HttpServer_OpenSim.pdb b/bin/HttpServer_OpenSim.pdb index 4151588c66c50454ae010ae60b3cd6c3ae16444a..c6f3b235f1d96ddf38bce3e3b6b4e5ee4c7959d2 100644 GIT binary patch delta 9437 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 DS+?Da delta 12764 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 Rb8u;pEp$x+-x_VR{U0C!R&f9T From c169a62f557c9361da73da901e9f188d8b8bdeb8 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 18:05:25 -0800 Subject: [PATCH 060/192] Typo --- OpenSim/Services/AssetService/AssetService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 3fd2fcf4d6..a81af4355a 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -93,7 +93,7 @@ namespace OpenSim.Services.AssetService if (!UUID.TryParse(id, out assetID)) { - m_log.WarnFormat("[ASSET SERVICE]: Could not parse requested sset id {0}", id); + m_log.WarnFormat("[ASSET SERVICE]: Could not parse requested asset id {0}", id); return null; } From 19d3792278643af0d45dd09f338a33ad78a138b7 Mon Sep 17 00:00:00 2001 From: Marck Date: Sat, 12 Feb 2011 20:02:42 +0100 Subject: [PATCH 061/192] Fix and simplify QBasedComparer. Make parsing of qvalues independent from a system's language setting and ensure that the comparison adheres to a descending order. --- OpenSim/Framework/WebUtil.cs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index d731ac5882..1feeeb31e5 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -29,6 +29,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; +using System.Globalization; using System.IO; using System.Net; using System.Net.Security; @@ -557,34 +558,27 @@ namespace OpenSim.Framework { float qx = GetQ(x); float qy = GetQ(y); - if (qx < qy) - return -1; - if (qx == qy) - return 0; - return 1; + return qy.CompareTo(qx); // descending order } private float GetQ(Object o) { // Example: image/png;q=0.9 + float qvalue = 1F; if (o is String) { string mime = (string)o; - string[] parts = mime.Split(new char[] { ';' }); + string[] parts = mime.Split(';'); if (parts.Length > 1) { - string[] kvp = parts[1].Split(new char[] { '=' }); + string[] kvp = parts[1].Split('='); if (kvp.Length == 2 && kvp[0] == "q") - { - float qvalue = 1F; - float.TryParse(kvp[1], out qvalue); - return qvalue; - } + float.TryParse(kvp[1], NumberStyles.Number, CultureInfo.InvariantCulture, out qvalue); } } - return 1F; + return qvalue; } } From c75e916ccfb195554c5010ab4187c4d74b81c4e1 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 Feb 2011 00:30:43 -0500 Subject: [PATCH 062/192] Set filter to send proper rotations for root part This allows the root prim, alone or in a set, to send it's rotation. This fixes unsitting the avatar on sit-offsest type teleports where the sit target is in the root prim of a linkset. --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 6a92378ea7..4d5eedfc95 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2099,7 +2099,7 @@ namespace OpenSim.Region.Framework.Scenes { Quaternion newRot; - if (this.LinkNum == 0) + if (this.LinkNum == 0 || this.LinkNum == 1) { newRot = RotationOffset; } From 5d6d0aa14226fe31e59c4f2e8a9bd6d6dfc4f995 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 15 Feb 2011 08:38:37 -0800 Subject: [PATCH 063/192] Catch HttpServer exception: mantis #5381 --- bin/HttpServer_OpenSim.dll | Bin 115712 -> 115712 bytes bin/HttpServer_OpenSim.pdb | Bin 409088 -> 409088 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/HttpServer_OpenSim.dll b/bin/HttpServer_OpenSim.dll index a7a1303c63a454d186cd99f206b470a6127d054c..95ea5dd7ffc4891df56a52ba27d558cb81ea2d1a 100644 GIT binary patch delta 434 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 Hd3gLAM%y~8 delta 7702 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 k<&mTmn(o#5ysNL2K` Date: Wed, 16 Feb 2011 08:06:11 +0000 Subject: [PATCH 064/192] Change the QUERYACCESS method to eliminate spurious access denied messages --- .../EntityTransfer/EntityTransferModule.cs | 10 +++++----- .../Simulation/LocalSimulationConnector.cs | 5 +++-- .../Simulation/RemoteSimulationConnector.cs | 7 ++++--- OpenSim/Region/Framework/Scenes/Scene.cs | 3 ++- .../Server/Handlers/Simulation/AgentHandlers.cs | 11 +++++++++-- .../Simulation/SimulationServiceConnector.cs | 17 ++++++++++++++++- .../Services/Interfaces/ISimulationService.cs | 2 +- 7 files changed, 40 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 1337143a31..98aa563a4f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -284,9 +284,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer return; } - if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero)) + string reason; + if (!m_aScene.SimulationService.QueryAccess(finalDestination, sp.ControllingClient.AgentId, Vector3.Zero, out reason)) { - sp.ControllingClient.SendTeleportFailed("The destination region has refused access"); + sp.ControllingClient.SendTeleportFailed("Teleport failed: " + reason); return; } @@ -323,8 +324,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); } - string reason = String.Empty; - // Let's create an agent there if one doesn't exist yet. bool logout = false; if (!CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout)) @@ -778,7 +777,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer GridRegion neighbourRegion = scene.GridService.GetRegionByPosition(scene.RegionInfo.ScopeID, (int)x, (int)y); - if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos)) + string reason; + if (!scene.SimulationService.QueryAccess(neighbourRegion, agent.ControllingClient.AgentId, newpos, out reason)) { agent.ControllingClient.SendAlertMessage("Cannot region cross into banned parcel"); if (r == null) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index 56720b7b7a..a298b65820 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs @@ -257,15 +257,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation return false; } - public bool QueryAccess(GridRegion destination, UUID id, Vector3 position) + public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason) { + reason = "Communications failure"; if (destination == null) return false; foreach (Scene s in m_sceneList) { if (s.RegionInfo.RegionID == destination.RegionID) - return s.QueryAccess(id, position); + return s.QueryAccess(id, position, out reason); } //m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess"); return false; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs index c4919b319c..0c92bd1c57 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs @@ -239,18 +239,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation } - public bool QueryAccess(GridRegion destination, UUID id, Vector3 position) + public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason) { + reason = "Communications failure"; if (destination == null) return false; // Try local first - if (m_localBackend.QueryAccess(destination, id, position)) + if (m_localBackend.QueryAccess(destination, id, position, out reason)) return true; // else do the remote thing if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) - return m_remoteConnector.QueryAccess(destination, id, position); + return m_remoteConnector.QueryAccess(destination, id, position, out reason); return false; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 355671cde3..2fd6b52cea 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4923,8 +4923,9 @@ namespace OpenSim.Region.Framework.Scenes // from logging into the region, teleporting into the region // or corssing the broder walking, but will NOT prevent // child agent creation, thereby emulating the SL behavior. - public bool QueryAccess(UUID agentID, Vector3 position) + public bool QueryAccess(UUID agentID, Vector3 position, out string reason) { + reason = String.Empty; return true; } } diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 6a23deefb2..372a59c038 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -341,10 +341,17 @@ namespace OpenSim.Server.Handlers.Simulation GridRegion destination = new GridRegion(); destination.RegionID = regionID; - bool result = m_SimulationService.QueryAccess(destination, id, position); + string reason; + bool result = m_SimulationService.QueryAccess(destination, id, position, out reason); responsedata["int_response_code"] = HttpStatusCode.OK; - responsedata["str_response_string"] = result.ToString(); + + OSDMap resp = new OSDMap(2); + + resp["success"] = OSD.FromBoolean(result); + resp["reason"] = OSD.FromString(reason); + + responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp); } protected virtual void DoAgentGet(Hashtable request, Hashtable responsedata, UUID id, UUID regionID) diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index cc6bffb7bb..f6ee493bfc 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -256,8 +256,10 @@ namespace OpenSim.Services.Connectors.Simulation /// /// - public bool QueryAccess(GridRegion destination, UUID id, Vector3 position) + public bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason) { + reason = "Failed to contact destination"; + // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess start, position={0}", position); IPEndPoint ext = destination.ExternalEndPoint; @@ -283,8 +285,21 @@ namespace OpenSim.Services.Connectors.Simulation m_log.Info("[REMOTE SIMULATION CONNECTOR]: The above web util error was caused by a TP to a sim that doesn't support QUERYACCESS and can be ignored"); return true; } + + reason = result["Message"]; } + else + { + reason = "Communications failure"; + } + + return false; } + + OSDMap resp = (OSDMap)result["_Result"]; + success = resp["success"].AsBoolean(); + reason = resp["reason"].AsString(); + return success; } catch (Exception e) diff --git a/OpenSim/Services/Interfaces/ISimulationService.cs b/OpenSim/Services/Interfaces/ISimulationService.cs index 48a2185b62..b7967578ce 100644 --- a/OpenSim/Services/Interfaces/ISimulationService.cs +++ b/OpenSim/Services/Interfaces/ISimulationService.cs @@ -60,7 +60,7 @@ namespace OpenSim.Services.Interfaces bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent); - bool QueryAccess(GridRegion destination, UUID id, Vector3 position); + bool QueryAccess(GridRegion destination, UUID id, Vector3 position, out string reason); ///
/// Message from receiving region to departing region, telling it got contacted by the client. From fc84225038a44e114fe58e4b789b746c9b7a8338 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 16 Feb 2011 08:18:49 -0800 Subject: [PATCH 065/192] XFF capitalization strikes again -- this time in the XMLRPC method. mantis #5386 --- .../Framework/Servers/HttpServer/BaseHttpServer.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 4c35132ad1..1d05b0284b 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -785,7 +785,19 @@ namespace OpenSim.Framework.Servers.HttpServer if (methodWasFound) { xmlRprcRequest.Params.Add(request.Url); // Param[2] - xmlRprcRequest.Params.Add(request.Headers.Get("X-Forwarded-For")); // Param[3] + + string xff = "X-Forwarded-For"; + string xfflower = xff.ToLower(); + foreach (string s in request.Headers.AllKeys) + { + if (s != null && s.Equals(xfflower)) + { + xff = xfflower; + break; + } + } + xmlRprcRequest.Params.Add(request.Headers.Get(xff)); // Param[3] + try { From 5c15c5e0ffa2da1bbc57e590d05ca19d46470f89 Mon Sep 17 00:00:00 2001 From: Marck Date: Wed, 16 Feb 2011 17:42:01 +0100 Subject: [PATCH 066/192] Changed default directory for storing map tile images from remote regions. --- OpenSim/Services/GridService/HypergridLinker.cs | 2 +- bin/Robust.HG.ini.example | 2 +- bin/config-include/GridCommon.ini.example | 2 +- bin/config-include/StandaloneCommon.ini.example | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 9d98c8f59c..12ea453bbc 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -121,7 +121,7 @@ namespace OpenSim.Services.GridService m_Check4096 = gridConfig.GetBoolean("Check4096", true); - m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", string.Empty); + m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", "maptiles"); m_GatekeeperConnector = new GatekeeperServiceConnector(m_AssetService); diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index 9adf1ac5ff..f12a1434ef 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -72,7 +72,7 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 AssetService = "OpenSim.Services.AssetService.dll:AssetService" ;; Directory for map tile images of linked regions - ; MapTileDirectory = "./" + ; MapTileDirectory = "./maptiles" ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = "" diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index e1bcf00f51..4dc0e53342 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -43,7 +43,7 @@ ;AllowHypergridMapSearch = true ;; Directory for map tile images of linked regions - ; MapTileDirectory = "./" + ; MapTileDirectory = "./maptiles" [AvatarService] ; diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 213219c12b..816e9a6f10 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -70,7 +70,7 @@ ; Check4096 = true ;; Directory for map tile images of remote regions - ; MapTileDirectory = "./" + ; MapTileDirectory = "./maptiles" ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = "" From 25265c964f22a34fa3757ae487c15744f1da5850 Mon Sep 17 00:00:00 2001 From: Marck Date: Wed, 16 Feb 2011 18:34:44 +0100 Subject: [PATCH 067/192] Changed console command "alert" and added new command "alert-user". This addresses Mantis #4709. Command "alert" always sends a message to everybody; the variant "alert general" has been removed. Sending messages to one user is done with the dedicated command "alert-user". --- .../CoreModules/Avatar/Dialog/DialogModule.cs | 60 ++++++------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs index 2b3d2a9b14..8a977c9b44 100644 --- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs @@ -49,16 +49,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog { m_scene = scene; m_scene.RegisterModuleInterface(this); - + m_scene.AddCommand( - this, "alert", "alert ", - "Send an alert to a user", + this, "alert", "alert ", + "Send an alert to everyone", HandleAlertConsoleCommand); m_scene.AddCommand( - this, "alert general", "alert [general] ", - "Send an alert to everyone", - "If keyword 'general' is omitted, then must be surrounded by quotation marks.", + this, "alert-user", "alert-user ", + "Send an alert to a user", HandleAlertConsoleCommand); } @@ -177,55 +176,32 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog { if (m_scene.ConsoleScene() != null && m_scene.ConsoleScene() != m_scene) return; - - bool isGeneral = false; - string firstName = string.Empty; - string lastName = string.Empty; + string message = string.Empty; - if (cmdparams.Length > 1) + if (cmdparams[0].ToLower().Equals("alert")) { - firstName = cmdparams[1]; - isGeneral = firstName.ToLower().Equals("general"); - } - if (cmdparams.Length == 2 && !isGeneral) - { - // alert "message" - message = cmdparams[1]; - isGeneral = true; - } - else if (cmdparams.Length > 2 && isGeneral) - { - // alert general - message = CombineParams(cmdparams, 2); + message = CombineParams(cmdparams, 1); + m_log.InfoFormat("[DIALOG]: Sending general alert in region {0} with message {1}", + m_scene.RegionInfo.RegionName, message); + SendGeneralAlert(message); } else if (cmdparams.Length > 3) { - // alert - lastName = cmdparams[2]; + string firstName = cmdparams[1]; + string lastName = cmdparams[2]; message = CombineParams(cmdparams, 3); + m_log.InfoFormat( + "[DIALOG]: Sending alert in region {0} to {1} {2} with message {3}", + m_scene.RegionInfo.RegionName, firstName, lastName, message); + SendAlertToUser(firstName, lastName, message, false); } else { OpenSim.Framework.Console.MainConsole.Instance.Output( - "Usage: alert \"message\" | alert general | alert "); + "Usage: alert | alert-user "); return; } - - if (isGeneral) - { - m_log.InfoFormat( - "[DIALOG]: Sending general alert in region {0} with message {1}", - m_scene.RegionInfo.RegionName, message); - SendGeneralAlert(message); - } - else - { - m_log.InfoFormat( - "[DIALOG]: Sending alert in region {0} to {1} {2} with message {3}", - m_scene.RegionInfo.RegionName, firstName, lastName, message); - SendAlertToUser(firstName, lastName, message, false); - } } private string CombineParams(string[] commandParams, int pos) From c6f2d66eae890bae56cdb9acf6b2691fe539b5f0 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 16 Feb 2011 09:57:12 -0800 Subject: [PATCH 068/192] Fix bug introduced by Query Access. The response does not come in a packaged _Result field, it comes as simple OSDMap with 2 fields in it. Also in this commit: comment out irrelevant debug message on AuthService. --- .../PasswordAuthenticationService.cs | 2 +- .../Simulation/SimulationServiceConnector.cs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs index 17619ff14f..2fc92487d6 100644 --- a/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs @@ -71,7 +71,7 @@ namespace OpenSim.Services.AuthenticationService string hashed = Util.Md5Hash(password + ":" + data.Data["passwordSalt"].ToString()); - m_log.DebugFormat("[PASS AUTH]: got {0}; hashed = {1}; stored = {2}", password, hashed, data.Data["passwordHash"].ToString()); + //m_log.DebugFormat("[PASS AUTH]: got {0}; hashed = {1}; stored = {2}", password, hashed, data.Data["passwordHash"].ToString()); if (data.Data["passwordHash"].ToString() == hashed) { diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index f6ee493bfc..8aa88cbeec 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -274,7 +274,11 @@ namespace OpenSim.Services.Connectors.Simulation try { OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 10000); - bool success = result["Success"].AsBoolean(); + bool success = result["success"].AsBoolean(); + reason = result["reason"].AsString(); + + //m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: QueryAccess to {0} returned {1}", uri, success); + if (!success) { if (result.ContainsKey("Message")) @@ -296,10 +300,6 @@ namespace OpenSim.Services.Connectors.Simulation return false; } - OSDMap resp = (OSDMap)result["_Result"]; - success = resp["success"].AsBoolean(); - reason = resp["reason"].AsString(); - return success; } catch (Exception e) From 47a5d8d7420f86088d75e4b578e7e997ba2d11c8 Mon Sep 17 00:00:00 2001 From: Marck Date: Fri, 21 Jan 2011 19:55:35 +0100 Subject: [PATCH 069/192] Make osTeleportOwner work in foreign regions by relaxing the restrictions on teleporting an agent. --- .../Shared/Api/Implementation/OSSL_Api.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 688dfe4649..402d3a5ecf 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -681,10 +681,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); - TeleportAgent(agent, regionName, position, lookat); + TeleportAgent(agent, regionName, position, lookat, false); } - private void TeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) + private void TeleportAgent(string agent, string regionName, + LSL_Types.Vector3 position, LSL_Types.Vector3 lookat, bool relaxRestrictions) { m_host.AddScriptLPS(1); UUID agentId = new UUID(); @@ -694,7 +695,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (presence != null) { // agent must be over owners land to avoid abuse - if (m_host.OwnerID + if (relaxRestrictions || + m_host.OwnerID == World.LandChannel.GetLandObject( presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) { @@ -728,10 +730,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // CheckThreatLevel(ThreatLevel.High, "osTeleportAgent"); - TeleportAgent(agent, regionX, regionY, position, lookat); + TeleportAgent(agent, regionX, regionY, position, lookat, false); } - private void TeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) + private void TeleportAgent(string agent, int regionX, int regionY, + LSL_Types.Vector3 position, LSL_Types.Vector3 lookat, bool relaxRestrictions) { ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize)); @@ -742,8 +745,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ScenePresence presence = World.GetScenePresence(agentId); if (presence != null) { - // agent must be over owners land to avoid abuse - if (m_host.OwnerID + // For osTeleportAgent, agent must be over owners land to avoid abuse + // For osTeleportOwner, this restriction isn't necessary + if (relaxRestrictions || + m_host.OwnerID == World.LandChannel.GetLandObject( presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) { @@ -766,7 +771,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // Threat level None because this is what can already be done with the World Map in the viewer CheckThreatLevel(ThreatLevel.None, "osTeleportOwner"); - TeleportAgent(m_host.OwnerID.ToString(), regionName, position, lookat); + TeleportAgent(m_host.OwnerID.ToString(), regionName, position, lookat, true); } public void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat) @@ -778,7 +783,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { CheckThreatLevel(ThreatLevel.None, "osTeleportOwner"); - TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat); + TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat, true); } // Functions that get information from the agent itself. From 4f9c3c73ad8cc2178e44c724c72a4bb292e5ea93 Mon Sep 17 00:00:00 2001 From: Marck Date: Fri, 21 Jan 2011 20:00:04 +0100 Subject: [PATCH 070/192] Add support for new naming syntax of linked regions to osTeleportAgent and osTeleportOwner. --- OpenSim/Region/Framework/Scenes/Scene.cs | 6 +++--- .../Shared/Api/Implementation/OSSL_Api.cs | 17 ++--------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2fd6b52cea..02a0268e36 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3770,15 +3770,15 @@ namespace OpenSim.Region.Framework.Scenes public void RequestTeleportLocation(IClientAPI remoteClient, string regionName, Vector3 position, Vector3 lookat, uint teleportFlags) { - GridRegion regionInfo = GridService.GetRegionByName(UUID.Zero, regionName); - if (regionInfo == null) + List regions = GridService.GetRegionsByName(RegionInfo.ScopeID, regionName, 1); + if (regions == null || regions.Count == 0) { // can't find the region: Tell viewer and abort remoteClient.SendTeleportFailed("The region '" + regionName + "' could not be found."); return; } - RequestTeleportLocation(remoteClient, regionInfo.RegionHandle, position, lookat, teleportFlags); + RequestTeleportLocation(remoteClient, regions[0].RegionHandle, position, lookat, teleportFlags); } /// diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 402d3a5ecf..64931d06c5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -694,26 +694,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ScenePresence presence = World.GetScenePresence(agentId); if (presence != null) { - // agent must be over owners land to avoid abuse + // For osTeleportAgent, agent must be over owners land to avoid abuse + // For osTeleportOwner, this restriction isn't necessary if (relaxRestrictions || m_host.OwnerID == World.LandChannel.GetLandObject( presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID) { - // Check for hostname, attempt to make a HG link, - // and convert the regionName to the target region - if (regionName.Contains(".") && regionName.Contains(":")) - { - // Even though we use none of the results, we need to perform this call because it appears - // to have some the side effect of setting up hypergrid teleport locations. - World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); -// List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); - - string[] parts = regionName.Split(new char[] { ':' }); - if (parts.Length > 2) - regionName = parts[0] + ':' + parts[1] + "/ " + parts[2]; - regionName = "http://" + regionName; - } World.RequestTeleportLocation(presence.ControllingClient, regionName, new Vector3((float)position.x, (float)position.y, (float)position.z), new Vector3((float)lookat.x, (float)lookat.y, (float)lookat.z), (uint)TPFlags.ViaLocation); From 47252214354cb768ecddb50062d650d22f7d1c4f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 20:54:00 +0000 Subject: [PATCH 071/192] Stop the avatar sometimes pausing for more than a second on the border when region crossing. This restores a RemoveFromPhysicalScene() call in ScenePresence.CheckForBorderCrossing() when the agent has been placed in transit. If we don't remove the agent from the physical scene, then the method continues to be called via ScenePresence.Update() until the handover of the client between regions is completed. Since this handover can take more than 1000ms (due to the 1000ms event queue polling response from the server), this results in the avatar pausing on the border for the entire handover period. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cd70de8440..4150f4a245 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2776,6 +2776,13 @@ namespace OpenSim.Region.Framework.Scenes } else { + // We must remove the agent from the physical scene if it has been placed in transit. If we don't, + // then this method continues to be called from ScenePresence.Update() until the handover of the client between + // regions is completed. Since this handover can take more than 1000ms (due to the 1000ms + // event queue polling response from the server), this results in the avatar pausing on the border + // for the handover period. + RemoveFromPhysicalScene(); + // This constant has been inferred from experimentation // I'm not sure what this value should be, so I tried a few values. timeStep = 0.04f; From e774679f62dc0de54c1926b1b4a611ca317d2bd7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 21:19:16 +0000 Subject: [PATCH 072/192] minor: add method doc to a few ScenePresence methods --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 4150f4a245..b47ec3c6ce 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2652,8 +2652,11 @@ namespace OpenSim.Region.Framework.Scenes #region Border Crossing Methods /// - /// Checks to see if the avatar is in range of a border and calls CrossToNewRegion + /// Starts the process of moving an avatar into another region if they are crossing the border. /// + /// + /// Also removes the avatar from the physical scene if transit has started. + /// protected void CheckForBorderCrossing() { if (IsChildAgent) @@ -2721,7 +2724,6 @@ namespace OpenSim.Region.Framework.Scenes neighbor = HaveNeighbor(Cardinals.N, ref fix); } - // Makes sure avatar does not end up outside region if (neighbor <= 0) { @@ -2794,6 +2796,15 @@ namespace OpenSim.Region.Framework.Scenes } } + /// + /// Checks whether this region has a neighbour in the given direction. + /// + /// + /// + /// + /// An integer which represents a compass point. N == 1, going clockwise until we reach NW == 8. + /// Returns a positive integer if there is a region in that direction, a negative integer if not. + /// protected int HaveNeighbor(Cardinals car, ref int[] fix) { uint neighbourx = m_regionInfo.RegionLocX; From 88da253c947c78e97f78119203e3c2f216a788e2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 21:54:44 +0000 Subject: [PATCH 073/192] Add very basic test which invokes the scene update loop once and checks the frame number. This makes Scene.Update() match its original description of performing a single update, which also matches the semantics of SOG and ScenePresence. --- OpenSim/Region/Framework/Scenes/Scene.cs | 323 +++++++++--------- .../Scenes/Tests/ScenePresenceTests.cs | 3 - .../Framework/Scenes/Tests/SceneTests.cs | 71 ++++ 3 files changed, 232 insertions(+), 165 deletions(-) create mode 100644 OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 02a0268e36..e0af2d6709 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -129,7 +129,16 @@ namespace OpenSim.Region.Framework.Scenes protected ICapabilitiesModule m_capsModule; // Central Update Loop protected int m_fps = 10; - protected uint m_frame; + + /// + /// Current scene frame number + /// + public uint Frame + { + get; + protected set; + } + protected float m_timespan = 0.089f; protected DateTime m_lastupdate = DateTime.UtcNow; @@ -1183,7 +1192,8 @@ namespace OpenSim.Region.Framework.Scenes try { - Update(); + while (!shuttingdown) + Update(); m_lastUpdate = Util.EnvironmentTickCount(); m_firstHeartbeat = false; @@ -1200,187 +1210,176 @@ namespace OpenSim.Region.Framework.Scenes Watchdog.RemoveThread(); } - /// - /// Performs per-frame updates on the scene, this should be the central scene loop - /// public override void Update() - { - float physicsFPS; - int maintc; + { + TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate; + float physicsFPS = 0f; - while (!shuttingdown) + int maintc = Util.EnvironmentTickCount(); + int tmpFrameMS = maintc; + tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0; + + // Increment the frame counter + ++Frame; + + try { - TimeSpan SinceLastFrame = DateTime.UtcNow - m_lastupdate; - physicsFPS = 0f; + // Check if any objects have reached their targets + CheckAtTargets(); - maintc = Util.EnvironmentTickCount(); - int tmpFrameMS = maintc; - tempOnRezMS = eventMS = backupMS = terrainMS = landMS = 0; + // Update SceneObjectGroups that have scheduled themselves for updates + // Objects queue their updates onto all scene presences + if (Frame % m_update_objects == 0) + m_sceneGraph.UpdateObjectGroups(); - // Increment the frame counter - ++m_frame; + // Run through all ScenePresences looking for updates + // Presence updates and queued object updates for each presence are sent to clients + if (Frame % m_update_presences == 0) + m_sceneGraph.UpdatePresences(); - try + // Coarse locations relate to positions of green dots on the mini-map (on a SecondLife client) + if (Frame % m_update_coarse_locations == 0) { - // Check if any objects have reached their targets - CheckAtTargets(); - - // Update SceneObjectGroups that have scheduled themselves for updates - // Objects queue their updates onto all scene presences - if (m_frame % m_update_objects == 0) - m_sceneGraph.UpdateObjectGroups(); - - // Run through all ScenePresences looking for updates - // Presence updates and queued object updates for each presence are sent to clients - if (m_frame % m_update_presences == 0) - m_sceneGraph.UpdatePresences(); - - // Coarse locations relate to positions of green dots on the mini-map (on a SecondLife client) - if (m_frame % m_update_coarse_locations == 0) + List coarseLocations; + List avatarUUIDs; + SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60); + // Send coarse locations to clients + ForEachScenePresence(delegate(ScenePresence presence) { - List coarseLocations; - List avatarUUIDs; - SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60); - // Send coarse locations to clients - ForEachScenePresence(delegate(ScenePresence presence) - { - presence.SendCoarseLocations(coarseLocations, avatarUUIDs); - }); + presence.SendCoarseLocations(coarseLocations, avatarUUIDs); + }); + } + + int tmpPhysicsMS2 = Util.EnvironmentTickCount(); + if ((Frame % m_update_physics == 0) && m_physics_enabled) + m_sceneGraph.UpdatePreparePhysics(); + physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2); + + // Apply any pending avatar force input to the avatar's velocity + if (Frame % m_update_entitymovement == 0) + m_sceneGraph.UpdateScenePresenceMovement(); + + // Perform the main physics update. This will do the actual work of moving objects and avatars according to their + // velocity + int tmpPhysicsMS = Util.EnvironmentTickCount(); + if (Frame % m_update_physics == 0) + { + if (m_physics_enabled) + physicsFPS = m_sceneGraph.UpdatePhysics(Math.Max(SinceLastFrame.TotalSeconds, m_timespan)); + if (SynchronizeScene != null) + SynchronizeScene(this); + } + physicsMS = Util.EnvironmentTickCountSubtract(tmpPhysicsMS); + + // Delete temp-on-rez stuff + if (Frame % 1000 == 0 && !m_cleaningTemps) + { + int tmpTempOnRezMS = Util.EnvironmentTickCount(); + m_cleaningTemps = true; + Util.FireAndForget(delegate { CleanTempObjects(); m_cleaningTemps = false; }); + tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpTempOnRezMS); + } + + if (RegionStatus != RegionStatus.SlaveScene) + { + if (Frame % m_update_events == 0) + { + int evMS = Util.EnvironmentTickCount(); + UpdateEvents(); + eventMS = Util.EnvironmentTickCountSubtract(evMS); ; } - int tmpPhysicsMS2 = Util.EnvironmentTickCount(); - if ((m_frame % m_update_physics == 0) && m_physics_enabled) - m_sceneGraph.UpdatePreparePhysics(); - physicsMS2 = Util.EnvironmentTickCountSubtract(tmpPhysicsMS2); - - // Apply any pending avatar force input to the avatar's velocity - if (m_frame % m_update_entitymovement == 0) - m_sceneGraph.UpdateScenePresenceMovement(); - - // Perform the main physics update. This will do the actual work of moving objects and avatars according to their - // velocity - int tmpPhysicsMS = Util.EnvironmentTickCount(); - if (m_frame % m_update_physics == 0) + if (Frame % m_update_backup == 0) { - if (m_physics_enabled) - physicsFPS = m_sceneGraph.UpdatePhysics(Math.Max(SinceLastFrame.TotalSeconds, m_timespan)); - if (SynchronizeScene != null) - SynchronizeScene(this); - } - physicsMS = Util.EnvironmentTickCountSubtract(tmpPhysicsMS); - - // Delete temp-on-rez stuff - if (m_frame % 1000 == 0 && !m_cleaningTemps) - { - int tmpTempOnRezMS = Util.EnvironmentTickCount(); - m_cleaningTemps = true; - Util.FireAndForget(delegate { CleanTempObjects(); m_cleaningTemps = false; }); - tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpTempOnRezMS); + int backMS = Util.EnvironmentTickCount(); + UpdateStorageBackup(); + backupMS = Util.EnvironmentTickCountSubtract(backMS); } - if (RegionStatus != RegionStatus.SlaveScene) + if (Frame % m_update_terrain == 0) { - if (m_frame % m_update_events == 0) - { - int evMS = Util.EnvironmentTickCount(); - UpdateEvents(); - eventMS = Util.EnvironmentTickCountSubtract(evMS); ; - } - - if (m_frame % m_update_backup == 0) - { - int backMS = Util.EnvironmentTickCount(); - UpdateStorageBackup(); - backupMS = Util.EnvironmentTickCountSubtract(backMS); - } - - if (m_frame % m_update_terrain == 0) - { - int terMS = Util.EnvironmentTickCount(); - UpdateTerrain(); - terrainMS = Util.EnvironmentTickCountSubtract(terMS); - } - - //if (m_frame % m_update_land == 0) - //{ - // int ldMS = Util.EnvironmentTickCount(); - // UpdateLand(); - // landMS = Util.EnvironmentTickCountSubtract(ldMS); - //} - - frameMS = Util.EnvironmentTickCountSubtract(tmpFrameMS); - otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS; - lastCompletedFrame = Util.EnvironmentTickCount(); - - // if (m_frame%m_update_avatars == 0) - // UpdateInWorldTime(); - StatsReporter.AddPhysicsFPS(physicsFPS); - StatsReporter.AddTimeDilation(TimeDilation); - StatsReporter.AddFPS(1); - StatsReporter.SetRootAgents(m_sceneGraph.GetRootAgentCount()); - StatsReporter.SetChildAgents(m_sceneGraph.GetChildAgentCount()); - StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount()); - StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount()); - StatsReporter.addFrameMS(frameMS); - StatsReporter.addPhysicsMS(physicsMS + physicsMS2); - StatsReporter.addOtherMS(otherMS); - StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount()); - StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); + int terMS = Util.EnvironmentTickCount(); + UpdateTerrain(); + terrainMS = Util.EnvironmentTickCountSubtract(terMS); } - if (LoginsDisabled && m_frame == 20) - { - // In 99.9% of cases it is a bad idea to manually force garbage collection. However, - // this is a rare case where we know we have just went through a long cycle of heap - // allocations, and there is no more work to be done until someone logs in - GC.Collect(); + //if (Frame % m_update_land == 0) + //{ + // int ldMS = Util.EnvironmentTickCount(); + // UpdateLand(); + // landMS = Util.EnvironmentTickCountSubtract(ldMS); + //} - IConfig startupConfig = m_config.Configs["Startup"]; - if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false)) - { - m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); - LoginsDisabled = false; - m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface(), RegionInfo); - } + frameMS = Util.EnvironmentTickCountSubtract(tmpFrameMS); + otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS; + lastCompletedFrame = Util.EnvironmentTickCount(); + + // if (Frame%m_update_avatars == 0) + // UpdateInWorldTime(); + StatsReporter.AddPhysicsFPS(physicsFPS); + StatsReporter.AddTimeDilation(TimeDilation); + StatsReporter.AddFPS(1); + StatsReporter.SetRootAgents(m_sceneGraph.GetRootAgentCount()); + StatsReporter.SetChildAgents(m_sceneGraph.GetChildAgentCount()); + StatsReporter.SetObjects(m_sceneGraph.GetTotalObjectsCount()); + StatsReporter.SetActiveObjects(m_sceneGraph.GetActiveObjectsCount()); + StatsReporter.addFrameMS(frameMS); + StatsReporter.addPhysicsMS(physicsMS + physicsMS2); + StatsReporter.addOtherMS(otherMS); + StatsReporter.SetActiveScripts(m_sceneGraph.GetActiveScriptsCount()); + StatsReporter.addScriptLines(m_sceneGraph.GetScriptLPS()); + } + + if (LoginsDisabled && Frame == 20) + { + // In 99.9% of cases it is a bad idea to manually force garbage collection. However, + // this is a rare case where we know we have just went through a long cycle of heap + // allocations, and there is no more work to be done until someone logs in + GC.Collect(); + + IConfig startupConfig = m_config.Configs["Startup"]; + if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false)) + { + m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); + LoginsDisabled = false; + m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface(), RegionInfo); } } - catch (NotImplementedException) - { - throw; - } - catch (AccessViolationException e) - { - m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); - } - //catch (NullReferenceException e) - //{ - // m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); - //} - catch (InvalidOperationException e) - { - m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); - } - catch (Exception e) - { - m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); - } - finally - { - m_lastupdate = DateTime.UtcNow; - } - - maintc = Util.EnvironmentTickCountSubtract(maintc); - maintc = (int)(m_timespan * 1000) - maintc; - - if (maintc > 0) - Thread.Sleep(maintc); - - // Tell the watchdog that this thread is still alive - Watchdog.UpdateThread(); } - } + catch (NotImplementedException) + { + throw; + } + catch (AccessViolationException e) + { + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + } + //catch (NullReferenceException e) + //{ + // m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + //} + catch (InvalidOperationException e) + { + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + } + catch (Exception e) + { + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + } + finally + { + m_lastupdate = DateTime.UtcNow; + } - + maintc = Util.EnvironmentTickCountSubtract(maintc); + maintc = (int)(m_timespan * 1000) - maintc; + + if (maintc > 0) + Thread.Sleep(maintc); + + // Tell the watchdog that this thread is still alive + Watchdog.UpdateThread(); + } public void AddGroupTarget(SceneObjectGroup grp) { diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index ef52363611..8286e4f919 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -116,9 +116,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests agent.ChildrenCapSeeds = new Dictionary(); agent.child = true; - if (scene.PresenceService == null) - Console.WriteLine("Presence Service is null"); - scene.PresenceService.LoginAgent(agent.AgentID.ToString(), agent.SessionID, agent.SecureSessionID); string reason; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs new file mode 100644 index 0000000000..9aba8a8bfc --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs @@ -0,0 +1,71 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Timers; +using Timer=System.Timers.Timer; +using Nini.Config; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.CoreModules.World.Serialiser; +using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.Framework.Scenes.Tests +{ + /// + /// Scene presence tests + /// + [TestFixture] + public class SceneTests + { + /// + /// Very basic scene update test. Should become more elaborate with time. + /// + [Test] + public void TestUpdateScene() + { + TestHelper.InMethod(); + + Scene scene = SceneSetupHelpers.SetupScene(); + scene.Update(); + + Assert.That(scene.Frame, Is.EqualTo(1)); + } + } +} \ No newline at end of file From 60d47836ce4bc25d6eed637f506a459dccde6b82 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 22:00:52 +0000 Subject: [PATCH 074/192] minor: remove mono compiler warning --- .../Connectors/Simulation/SimulationServiceConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index 8aa88cbeec..463b2fbc7f 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -185,7 +185,7 @@ namespace OpenSim.Services.Connectors.Simulation } // unreachable - return true; +// return true; } /// From c763edf56dab869982b5ba002d798f147112a361 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 22:20:08 +0000 Subject: [PATCH 075/192] separate attachment tests out into their own class --- .../Framework/Scenes/Tests/AttachmentTests.cs | 180 ++++++++++++++++++ .../Scenes/Tests/ScenePresenceTests.cs | 50 ----- 2 files changed, 180 insertions(+), 50 deletions(-) create mode 100644 OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs diff --git a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs new file mode 100644 index 0000000000..60e47f6881 --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs @@ -0,0 +1,180 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Timers; +using Timer=System.Timers.Timer; +using Nini.Config; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.CoreModules.World.Serialiser; +using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.Framework.Scenes.Tests +{ + /// + /// Scene presence tests + /// + [TestFixture] + public class AttachmentTests + { + public Scene scene, scene2; + public UUID agent1; + public static Random random; + public ulong region1, region2; + public AgentCircuitData acd1; + public SceneObjectGroup sog1, sog2, sog3; + + [TestFixtureSetUp] + public void Init() + { + TestHelper.InMethod(); + + scene = SceneSetupHelpers.SetupScene("Neighbour x", UUID.Random(), 1000, 1000); + scene2 = SceneSetupHelpers.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000); + + ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); + interregionComms.Initialise(new IniConfigSource()); + interregionComms.PostInitialise(); + SceneSetupHelpers.SetupSceneModules(scene, new IniConfigSource(), interregionComms); + SceneSetupHelpers.SetupSceneModules(scene2, new IniConfigSource(), interregionComms); + + agent1 = UUID.Random(); + random = new Random(); + sog1 = NewSOG(UUID.Random(), scene, agent1); + sog2 = NewSOG(UUID.Random(), scene, agent1); + sog3 = NewSOG(UUID.Random(), scene, agent1); + + //ulong neighbourHandle = Utils.UIntsToLong((uint)(neighbourx * Constants.RegionSize), (uint)(neighboury * Constants.RegionSize)); + region1 = scene.RegionInfo.RegionHandle; + region2 = scene2.RegionInfo.RegionHandle; + + SceneSetupHelpers.AddRootAgent(scene, agent1); + } + + [TearDown] + public void TearDown() + { + if (MainServer.Instance != null) MainServer.Instance.Stop(); + } + + [Test] + public void T030_TestAddAttachments() + { + TestHelper.InMethod(); + + ScenePresence presence = scene.GetScenePresence(agent1); + + presence.AddAttachment(sog1); + presence.AddAttachment(sog2); + presence.AddAttachment(sog3); + + Assert.That(presence.HasAttachments(), Is.True); + Assert.That(presence.ValidateAttachments(), Is.True); + } + + [Test] + public void T031_RemoveAttachments() + { + TestHelper.InMethod(); + + ScenePresence presence = scene.GetScenePresence(agent1); + presence.RemoveAttachment(sog1); + presence.RemoveAttachment(sog2); + presence.RemoveAttachment(sog3); + Assert.That(presence.HasAttachments(), Is.False); + } + + // I'm commenting this test because scene setup NEEDS InventoryService to + // be non-null + //[Test] + public void T032_CrossAttachments() + { + TestHelper.InMethod(); + + ScenePresence presence = scene.GetScenePresence(agent1); + ScenePresence presence2 = scene2.GetScenePresence(agent1); + presence2.AddAttachment(sog1); + presence2.AddAttachment(sog2); + + ISharedRegionModule serialiser = new SerialiserModule(); + SceneSetupHelpers.SetupSceneModules(scene, new IniConfigSource(), serialiser); + SceneSetupHelpers.SetupSceneModules(scene2, new IniConfigSource(), serialiser); + + Assert.That(presence.HasAttachments(), Is.False, "Presence has attachments before cross"); + + //Assert.That(presence2.CrossAttachmentsIntoNewRegion(region1, true), Is.True, "Cross was not successful"); + Assert.That(presence2.HasAttachments(), Is.False, "Presence2 objects were not deleted"); + Assert.That(presence.HasAttachments(), Is.True, "Presence has not received new objects"); + } + + private SceneObjectGroup NewSOG(UUID uuid, Scene scene, UUID agent) + { + SceneObjectPart sop = new SceneObjectPart(); + sop.Name = RandomName(); + sop.Description = RandomName(); + sop.Text = RandomName(); + sop.SitName = RandomName(); + sop.TouchName = RandomName(); + sop.UUID = uuid; + sop.Shape = PrimitiveBaseShape.Default; + sop.Shape.State = 1; + sop.OwnerID = agent; + + SceneObjectGroup sog = new SceneObjectGroup(sop); + sog.SetScene(scene); + + return sog; + } + + private static string RandomName() + { + StringBuilder name = new StringBuilder(); + int size = random.Next(5,12); + char ch; + for (int i = 0; i < size; i++) + { + ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ; + name.Append(ch); + } + + return name.ToString(); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index 8286e4f919..d82760ee94 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -331,56 +331,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); } - [Test] - public void T030_TestAddAttachments() - { - TestHelper.InMethod(); - - ScenePresence presence = scene.GetScenePresence(agent1); - - presence.AddAttachment(sog1); - presence.AddAttachment(sog2); - presence.AddAttachment(sog3); - - Assert.That(presence.HasAttachments(), Is.True); - Assert.That(presence.ValidateAttachments(), Is.True); - } - - [Test] - public void T031_RemoveAttachments() - { - TestHelper.InMethod(); - - ScenePresence presence = scene.GetScenePresence(agent1); - presence.RemoveAttachment(sog1); - presence.RemoveAttachment(sog2); - presence.RemoveAttachment(sog3); - Assert.That(presence.HasAttachments(), Is.False); - } - - // I'm commenting this test because scene setup NEEDS InventoryService to - // be non-null - //[Test] - public void T032_CrossAttachments() - { - TestHelper.InMethod(); - - ScenePresence presence = scene.GetScenePresence(agent1); - ScenePresence presence2 = scene2.GetScenePresence(agent1); - presence2.AddAttachment(sog1); - presence2.AddAttachment(sog2); - - ISharedRegionModule serialiser = new SerialiserModule(); - SceneSetupHelpers.SetupSceneModules(scene, new IniConfigSource(), serialiser); - SceneSetupHelpers.SetupSceneModules(scene2, new IniConfigSource(), serialiser); - - Assert.That(presence.HasAttachments(), Is.False, "Presence has attachments before cross"); - - //Assert.That(presence2.CrossAttachmentsIntoNewRegion(region1, true), Is.True, "Cross was not successful"); - Assert.That(presence2.HasAttachments(), Is.False, "Presence2 objects were not deleted"); - Assert.That(presence.HasAttachments(), Is.True, "Presence has not received new objects"); - } - [TearDown] public void TearDown() { From c155f57dbe6b36697d2e1e50d4de43f7af2b97d1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 22:22:51 +0000 Subject: [PATCH 076/192] remove unused test teardown method --- .../Region/Framework/Scenes/Tests/AttachmentTests.cs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs index 60e47f6881..af4464081b 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs @@ -49,7 +49,7 @@ using OpenSim.Tests.Common.Setup; namespace OpenSim.Region.Framework.Scenes.Tests { /// - /// Scene presence tests + /// Attachment tests /// [TestFixture] public class AttachmentTests @@ -86,13 +86,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests region2 = scene2.RegionInfo.RegionHandle; SceneSetupHelpers.AddRootAgent(scene, agent1); - } - - [TearDown] - public void TearDown() - { - if (MainServer.Instance != null) MainServer.Instance.Stop(); - } + } [Test] public void T030_TestAddAttachments() From 023f953f39709e90c8eb31bc332dc2c01346cbd9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 22:25:45 +0000 Subject: [PATCH 077/192] remove another unused test teardown method --- OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index d82760ee94..ddff89669a 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -331,12 +331,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); } - [TearDown] - public void TearDown() - { - if (MainServer.Instance != null) MainServer.Instance.Stop(); - } - public static string GetRandomCapsObjectPath() { UUID caps = UUID.Random(); From eb699df5f6c7a68a500e38dc994ed7c2f2aa89d9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 22:49:19 +0000 Subject: [PATCH 078/192] On SceneSetupHelpers, go back to calling ScenePresence.CompleteMovement() for the last stage of AddRootAgent() instead of SP.MakeRootAgent() Going this extra step doesn't appear to cause any test failures. This is arguably better for test purposes, though at some stage another method may arise which does just call AddRootAgent(). --- .../Scenes/Tests/ScenePresenceTests.cs | 60 +++++++++++++------ .../Tests/Common/Setup/SceneSetupHelpers.cs | 8 +-- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index ddff89669a..92c73be722 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -172,25 +172,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(neighbours.Count, Is.EqualTo(2)); } - - public void fixNullPresence() - { - string firstName = "testfirstname"; - - AgentCircuitData agent = new AgentCircuitData(); - agent.AgentID = agent1; - agent.firstname = firstName; - agent.lastname = "testlastname"; - agent.SessionID = UUID.Zero; - agent.SecureSessionID = UUID.Zero; - agent.circuitcode = 123; - agent.BaseFolder = UUID.Zero; - agent.InventoryFolder = UUID.Zero; - agent.startpos = Vector3.Zero; - agent.CapsPath = GetRandomCapsObjectPath(); - - acd1 = agent; - } [Test] public void T013_TestRemoveNeighbourRegion() @@ -208,6 +189,28 @@ namespace OpenSim.Region.Framework.Scenes.Tests CompleteAvatarMovement */ } + + /// + /// Test that if a root agent logs into a region, a child agent is also established in the neighbouring region + /// + /// + /// Please note that unlike the other tests here, this doesn't rely on structures + /// + [Test] + public void TestChildAgentEstablished() + { + UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); + + TestScene myScene1 = SceneSetupHelpers.SetupScene("Neighbour x", UUID.Random(), 1000, 1000); + TestScene myScene2 = SceneSetupHelpers.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000); + + SceneSetupHelpers.AddRootAgent(myScene1, agent1Id); + ScenePresence childPresence = myScene2.GetScenePresence(agent1); + + // TODO: Need to do a fair amount of work to allow synchronous establishment of child agents +// Assert.That(childPresence, Is.Not.Null); +// Assert.That(childPresence.IsChildAgent, Is.True); + } // I'm commenting this test, because this is not supposed to happen here //[Test] @@ -330,7 +333,26 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(presence2.IsChildAgent, Is.True, "Did not return from region as expected."); Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); } + + public void fixNullPresence() + { + string firstName = "testfirstname"; + AgentCircuitData agent = new AgentCircuitData(); + agent.AgentID = agent1; + agent.firstname = firstName; + agent.lastname = "testlastname"; + agent.SessionID = UUID.Zero; + agent.SecureSessionID = UUID.Zero; + agent.circuitcode = 123; + agent.BaseFolder = UUID.Zero; + agent.InventoryFolder = UUID.Zero; + agent.startpos = Vector3.Zero; + agent.CapsPath = GetRandomCapsObjectPath(); + + acd1 = agent; + } + public static string GetRandomCapsObjectPath() { UUID caps = UUID.Random(); diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 8b1649635c..d199e42440 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -504,12 +504,10 @@ namespace OpenSim.Tests.Common.Setup TestClient client = new TestClient(agentData, scene); scene.AddNewClient(client); - // Stage 3: Invoke agent crossing, which converts the child agent into a root agent (with appearance, - // inventory, etc.) - //scene.AgentCrossing(agentData.AgentID, new Vector3(90, 90, 90), false); OBSOLETE - + // Stage 3: Complete the entrance into the region. This converts the child agent into a root agent. ScenePresence scp = scene.GetScenePresence(agentData.AgentID); - scp.MakeRootAgent(new Vector3(90, 90, 90), true); + scp.CompleteMovement(client); + //scp.MakeRootAgent(new Vector3(90, 90, 90), true); return client; } From dd9efc183812a66b1654aaeb419945cf57650b08 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 23:05:56 +0000 Subject: [PATCH 079/192] extend TestChildAgentEstablished() test slightly to put in EntityTransferModule. Not yet enabled. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 4 +++- .../Framework/Scenes/Tests/ScenePresenceTests.cs | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b47ec3c6ce..51b8dcc004 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1161,7 +1161,9 @@ namespace OpenSim.Region.Framework.Scenes if (m_agentTransfer != null) m_agentTransfer.EnableChildAgents(this); else - m_log.DebugFormat("[SCENE PRESENCE]: Unable to create child agents in neighbours, because AgentTransferModule is not active"); + m_log.DebugFormat( + "[SCENE PRESENCE]: Unable to create child agents in neighbours, because AgentTransferModule is not active for region {0}", + m_scene.RegionInfo.RegionName); IFriendsModule friendsModule = m_scene.RequestModuleInterface(); if (friendsModule != null) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index 92c73be722..60bc86c719 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -40,6 +40,7 @@ using OpenSim.Framework; using OpenSim.Framework.Communications; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.CoreModules.Framework.EntityTransfer; using OpenSim.Region.CoreModules.World.Serialiser; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; using OpenSim.Tests.Common; @@ -199,10 +200,16 @@ namespace OpenSim.Region.Framework.Scenes.Tests [Test] public void TestChildAgentEstablished() { + TestHelper.InMethod(); + log4net.Config.XmlConfigurator.Configure(); + UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); - TestScene myScene1 = SceneSetupHelpers.SetupScene("Neighbour x", UUID.Random(), 1000, 1000); - TestScene myScene2 = SceneSetupHelpers.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000); + TestScene myScene1 = SceneSetupHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); + TestScene myScene2 = SceneSetupHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); + + EntityTransferModule etm = new EntityTransferModule(); + SceneSetupHelpers.SetupSceneModules(myScene1, etm); SceneSetupHelpers.AddRootAgent(myScene1, agent1Id); ScenePresence childPresence = myScene2.GetScenePresence(agent1); From 5c92f62941e21b6e5eec503ab95f149092e20217 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 23:10:46 +0000 Subject: [PATCH 080/192] minor: remove mono compiler warning --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 584c57719a..583214ca0b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -845,7 +845,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void HandleUseCircuitCode(object o) { - DateTime startTime = DateTime.Now; +// DateTime startTime = DateTime.Now; object[] array = (object[])o; UDPPacketBuffer buffer = (UDPPacketBuffer)array[0]; UseCircuitCodePacket packet = (UseCircuitCodePacket)array[1]; From 8249d77991352697b4972f7109c014db0ebd5f68 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 23:25:59 +0000 Subject: [PATCH 081/192] If GridService.GetNeighbours() could not find the region then log a warning rather than causing a null reference on the normal log line This also extends the TestChildAgentEstablished() test to actually activate the EntityTransferModule, though the test is not yet viable --- .../Framework/Scenes/Tests/ScenePresenceTests.cs | 7 +++++-- OpenSim/Services/GridService/GridService.cs | 12 +++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index 60bc86c719..5e1ff79b6b 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -201,15 +201,18 @@ namespace OpenSim.Region.Framework.Scenes.Tests public void TestChildAgentEstablished() { TestHelper.InMethod(); - log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); TestScene myScene1 = SceneSetupHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); TestScene myScene2 = SceneSetupHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); + IConfigSource configSource = new IniConfigSource(); + configSource.AddConfig("Modules").Set("EntityTransferModule", "BasicEntityTransferModule"); EntityTransferModule etm = new EntityTransferModule(); - SceneSetupHelpers.SetupSceneModules(myScene1, etm); + + SceneSetupHelpers.SetupSceneModules(myScene1, configSource, etm); SceneSetupHelpers.AddRootAgent(myScene1, agent1Id); ScenePresence childPresence = myScene2.GetScenePresence(agent1); diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index aeff9b524f..985d77b02d 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -271,6 +271,7 @@ namespace OpenSim.Services.GridService { List rinfos = new List(); RegionData region = m_Database.Get(regionID, scopeID); + if (region != null) { // Not really? Maybe? @@ -278,15 +279,24 @@ namespace OpenSim.Services.GridService region.posX + (int)Constants.RegionSize + 1, region.posY + (int)Constants.RegionSize + 1, scopeID); foreach (RegionData rdata in rdatas) + { if (rdata.RegionID != regionID) { int flags = Convert.ToInt32(rdata.Data["flags"]); if ((flags & (int)Data.RegionFlags.Hyperlink) == 0) // no hyperlinks as neighbours rinfos.Add(RegionData2RegionInfo(rdata)); } + } + m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count); } - m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count); + else + { + m_log.WarnFormat( + "[GRID SERVICE]: GetNeighbours() called for scope {0}, region {1} but no such region found", + scopeID, regionID); + } + return rinfos; } From 60fe3d48ee83f004861044c51537256c0c389478 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 18 Feb 2011 23:50:54 +0000 Subject: [PATCH 082/192] Put some CapabilitiesModule null checks in Scene Stop tests setting up a capabilities module by default --- OpenSim/Framework/Capabilities/Caps.cs | 1 - OpenSim/Region/Framework/Scenes/Scene.cs | 15 +++++++++++---- OpenSim/Tests/Common/Mock/TestClient.cs | 7 +++++-- OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs | 8 ++++---- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index c2f9c3ab7b..3be97b5c89 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs @@ -181,7 +181,6 @@ namespace OpenSim.Framework.Capabilities RegisterRegionServiceHandlers(capsBase); RegisterInventoryServiceHandlers(capsBase); - } public void RegisterRegionServiceHandlers(string capsBase) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e0af2d6709..ee1e0beee4 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3010,7 +3010,9 @@ namespace OpenSim.Region.Framework.Scenes (childagentYN ? "child" : "root"), agentID, RegionInfo.RegionName); m_sceneGraph.removeUserCount(!childagentYN); - CapsModule.RemoveCapsHandler(agentID); + + if (CapsModule != null) + CapsModule.RemoveCapsHandler(agentID); // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever // this method is doing is HORRIBLE!!! @@ -3265,8 +3267,11 @@ namespace OpenSim.Region.Framework.Scenes RegionInfo.RegionName, (agent.child ? "child" : "root"), agent.firstname, agent.lastname, agent.AgentID, agent.circuitcode); - CapsModule.NewUserConnection(agent); - CapsModule.AddCapsHandler(agent.AgentID); + if (CapsModule != null) + { + CapsModule.NewUserConnection(agent); + CapsModule.AddCapsHandler(agent.AgentID); + } } else { @@ -3281,7 +3286,9 @@ namespace OpenSim.Region.Framework.Scenes agent.AgentID, RegionInfo.RegionName); sp.AdjustKnownSeeds(); - CapsModule.NewUserConnection(agent); + + if (CapsModule != null) + CapsModule.NewUserConnection(agent); } } diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index dc0d4deb18..ebe0a72a87 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -560,8 +560,11 @@ namespace OpenSim.Tests.Common.Mock agentData.lastname = m_lastName; ICapabilitiesModule capsModule = m_scene.RequestModuleInterface(); - agentData.CapsPath = capsModule.GetCapsPath(m_agentId); - agentData.ChildrenCapSeeds = new Dictionary(capsModule.GetChildrenSeeds(m_agentId)); + if (capsModule != null) + { + agentData.CapsPath = capsModule.GetCapsPath(m_agentId); + agentData.ChildrenCapSeeds = new Dictionary(capsModule.GetChildrenSeeds(m_agentId)); + } return agentData; } diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index d199e42440..91426166e0 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -164,10 +164,10 @@ namespace OpenSim.Tests.Common.Setup TestScene testScene = new TestScene( regInfo, acm, scs, simDataService, estateDataService, null, false, false, false, configSource, null); - INonSharedRegionModule capsModule = new CapabilitiesModule(); - capsModule.Initialise(new IniConfigSource()); - testScene.AddRegionModule(capsModule.Name, capsModule); - capsModule.AddRegion(testScene); +// INonSharedRegionModule capsModule = new CapabilitiesModule(); +// capsModule.Initialise(new IniConfigSource()); +// testScene.AddRegionModule(capsModule.Name, capsModule); +// capsModule.AddRegion(testScene); IRegionModule godsModule = new GodsModule(); godsModule.Initialise(testScene, new IniConfigSource()); From 9d668b09ca893c706745cd2b8fb9b7922b6eeee6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 19 Feb 2011 00:07:16 +0000 Subject: [PATCH 083/192] remove unused code to share services between scenes in SceneSetupHelpers - this is done differently elsewhere --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 68 +++++-------------- 1 file changed, 16 insertions(+), 52 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 91426166e0..3980c180cd 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -132,24 +132,11 @@ namespace OpenSim.Tests.Common.Setup public static TestScene SetupScene( string name, UUID id, uint x, uint y, String realServices) { - bool newScene = false; - Console.WriteLine("Setting up test scene {0}", name); - // REFACTORING PROBLEM! - //// If cm is the same as our last commsManager used, this means the tester wants to link - //// regions. In this case, don't use the sameshared region modules and dont initialize them again. - //// Also, no need to start another MainServer and MainConsole instance. - //if (cm == null || cm != commsManager) - //{ - // System.Console.WriteLine("Starting a brand new scene"); - // newScene = true; - MainConsole.Instance = new MockConsole("TEST PROMPT"); - // MainServer.Instance = new BaseHttpServer(980); - // commsManager = cm; - //} - // We must set up a console otherwise setup of some modules may fail + MainConsole.Instance = new MockConsole("TEST PROMPT"); + RegionInfo regInfo = new RegionInfo(x, y, new IPEndPoint(IPAddress.Loopback, 9000), "127.0.0.1"); regInfo.RegionName = name; regInfo.RegionID = id; @@ -164,50 +151,27 @@ namespace OpenSim.Tests.Common.Setup TestScene testScene = new TestScene( regInfo, acm, scs, simDataService, estateDataService, null, false, false, false, configSource, null); -// INonSharedRegionModule capsModule = new CapabilitiesModule(); -// capsModule.Initialise(new IniConfigSource()); -// testScene.AddRegionModule(capsModule.Name, capsModule); -// capsModule.AddRegion(testScene); - IRegionModule godsModule = new GodsModule(); godsModule.Initialise(testScene, new IniConfigSource()); testScene.AddModule(godsModule.Name, godsModule); realServices = realServices.ToLower(); - // IConfigSource config = new IniConfigSource(); - // If we have a brand new scene, need to initialize shared region modules - if ((m_assetService == null && m_inventoryService == null) || newScene) - { - if (realServices.Contains("asset")) - StartAssetService(testScene, true); - else - StartAssetService(testScene, false); - - // For now, always started a 'real' authentication service - StartAuthenticationService(testScene, true); - - if (realServices.Contains("inventory")) - StartInventoryService(testScene, true); - else - StartInventoryService(testScene, false); - - StartGridService(testScene, true); - StartUserAccountService(testScene); - StartPresenceService(testScene); - } - // If not, make sure the shared module gets references to this new scene + if (realServices.Contains("asset")) + StartAssetService(testScene, true); else - { - m_assetService.AddRegion(testScene); - m_assetService.RegionLoaded(testScene); - m_inventoryService.AddRegion(testScene); - m_inventoryService.RegionLoaded(testScene); - m_userAccountService.AddRegion(testScene); - m_userAccountService.RegionLoaded(testScene); - m_presenceService.AddRegion(testScene); - m_presenceService.RegionLoaded(testScene); + StartAssetService(testScene, false); - } + // For now, always started a 'real' authentication service + StartAuthenticationService(testScene, true); + + if (realServices.Contains("inventory")) + StartInventoryService(testScene, true); + else + StartInventoryService(testScene, false); + + StartGridService(testScene, true); + StartUserAccountService(testScene); + StartPresenceService(testScene); m_inventoryService.PostInitialise(); m_assetService.PostInitialise(); From b3a1d8c7f787dd2ad24b925bfcdd08b676b3d8b3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 19 Feb 2011 00:11:08 +0000 Subject: [PATCH 084/192] Remove unused SceneSetupHelpers.DeleteObjectAsync(). Calling async code in automated tests is never a good idea - things become very fragile very quickly --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 3980c180cd..5be70bc710 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -505,24 +505,5 @@ namespace OpenSim.Tests.Common.Setup return part; } - - /// - /// Delete a scene object asynchronously - /// - /// - /// - /// - /// - /// - public static void DeleteSceneObjectAsync( - TestScene scene, SceneObjectPart part, DeRezAction action, UUID destinationId, IClientAPI client) - { - // Turn off the timer on the async sog deleter - we'll crank it by hand within a unit test - AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; - sogd.Enabled = false; - - scene.DeRezObjects(client, new List() { part.LocalId }, UUID.Zero, action, destinationId); - sogd.InventoryDeQueueAndDelete(); - } } } From 9e47018cfb42cc67a1d414e73396861b3a6b99ea Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 19 Feb 2011 00:14:13 +0000 Subject: [PATCH 085/192] Remove test T020_TestMakeRootAgent() which hasn't been active for ages anyway This test was non-viable. Keeping inactive T021_TestCrossToNewRegion() around for now since it's still useful for reference purposes in constructing a future working test. --- .../Scenes/Tests/ScenePresenceTests.cs | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index 5e1ff79b6b..fd2d6fab2d 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -222,25 +222,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests // Assert.That(childPresence.IsChildAgent, Is.True); } - // I'm commenting this test, because this is not supposed to happen here - //[Test] - public void T020_TestMakeRootAgent() - { - TestHelper.InMethod(); - - ScenePresence presence = scene.GetScenePresence(agent1); - Assert.That(presence.IsChildAgent, Is.False, "Starts out as a root agent"); - - presence.MakeChildAgent(); - Assert.That(presence.IsChildAgent, Is.True, "Did not change to child agent after MakeChildAgent"); - - // Accepts 0 but rejects Constants.RegionSize - Vector3 pos = new Vector3(0,unchecked(Constants.RegionSize-1),0); - presence.MakeRootAgent(pos,true); - Assert.That(presence.IsChildAgent, Is.False, "Did not go back to root agent"); - Assert.That(presence.AbsolutePosition, Is.EqualTo(pos), "Position is not the same one entered"); - } - // I'm commenting this test because it does not represent // crossings. The Thread.Sleep's in here are not meaningful mocks, // and they sometimes fail in panda. From af22b7cb1af041ab685128f507265d9c7e7fac9c Mon Sep 17 00:00:00 2001 From: Marck Date: Tue, 22 Feb 2011 13:00:45 +0100 Subject: [PATCH 086/192] GetRegion(s)ByName with SQLite behaves like it does with other databases. The in-memory storage of region data that is used by default with SQLite now handles wildcards in region names in the same way as SQL queries do with other databases. --- OpenSim/Data/Null/NullRegionData.cs | 50 ++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs index 2065355890..53e5207a6e 100644 --- a/OpenSim/Data/Null/NullRegionData.cs +++ b/OpenSim/Data/Null/NullRegionData.cs @@ -51,27 +51,55 @@ namespace OpenSim.Data.Null //Console.WriteLine("[XXX] NullRegionData constructor"); } + private delegate bool Matcher(string value); + public List Get(string regionName, UUID scopeID) { if (Instance != this) return Instance.Get(regionName, scopeID); + string cleanName = regionName.ToLower(); + + // Handle SQL wildcards + const string wildcard = "%"; + bool wildcardPrefix = false; + bool wildcardSuffix = false; + if (cleanName.Equals(wildcard)) + { + wildcardPrefix = wildcardSuffix = true; + cleanName = string.Empty; + } + else + { + if (cleanName.StartsWith(wildcard)) + { + wildcardPrefix = true; + cleanName = cleanName.Substring(1); + } + if (regionName.EndsWith(wildcard)) + { + wildcardSuffix = true; + cleanName = cleanName.Remove(cleanName.Length - 1); + } + } + Matcher queryMatch; + if (wildcardPrefix && wildcardSuffix) + queryMatch = delegate(string s) { return s.Contains(cleanName); }; + else if (wildcardSuffix) + queryMatch = delegate(string s) { return s.StartsWith(cleanName); }; + else if (wildcardPrefix) + queryMatch = delegate(string s) { return s.EndsWith(cleanName); }; + else + queryMatch = delegate(string s) { return s.Equals(cleanName); }; + + // Find region data List ret = new List(); foreach (RegionData r in m_regionData.Values) { - if (regionName.Contains("%")) - { - string cleanname = regionName.Replace("%", ""); - m_log.DebugFormat("[NULL REGION DATA]: comparing {0} to {1}", cleanname.ToLower(), r.RegionName.ToLower()); - if (r.RegionName.ToLower().Contains(cleanname.ToLower())) + m_log.DebugFormat("[NULL REGION DATA]: comparing {0} to {1}", cleanName, r.RegionName.ToLower()); + if (queryMatch(r.RegionName.ToLower())) ret.Add(r); - } - else - { - if (r.RegionName.ToLower() == regionName.ToLower()) - ret.Add(r); - } } if (ret.Count > 0) From 5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 22 Feb 2011 13:23:54 -0800 Subject: [PATCH 087/192] Parameterizes the view distance used to compute and manage child agents in neighbor regions. This means you can extend the view on a simulator beyond the default 3x3 regions. This uses a region default draw distance and should be replaced at some point by the avatar specified draw distance. That will require more careful, dynamic recomputation of child agents every time the draw distance changes. WARNING: this is experimental and has known instabilities. specifically all regions "within site" should be running the same default draw distance or agents will not be closed correctly. --- OpenSim/Framework/Util.cs | 13 +++++-- .../EntityTransfer/EntityTransferModule.cs | 37 +++++++++++++------ .../EntityTransfer/HGEntityTransferModule.cs | 4 +- OpenSim/Region/Framework/Scenes/Scene.cs | 9 +++++ .../Region/Framework/Scenes/ScenePresence.cs | 24 +++++++++--- bin/OpenSimDefaults.ini | 7 ++++ 6 files changed, 73 insertions(+), 21 deletions(-) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 533e53abd5..5a5046e547 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -459,10 +459,17 @@ namespace OpenSim.Framework /// Old region y-coord /// New region y-coord /// - public static bool IsOutsideView(uint oldx, uint newx, uint oldy, uint newy) + public static bool IsOutsideView(float drawdist, uint oldx, uint newx, uint oldy, uint newy) { - // Eventually this will be a function of the draw distance / camera position too. - return (((int)Math.Abs((int)(oldx - newx)) > 1) || ((int)Math.Abs((int)(oldy - newy)) > 1)); + int dd = (int)((drawdist + Constants.RegionSize - 1) / Constants.RegionSize); + + int startX = (int)oldx - dd; + int startY = (int)oldy - dd; + + int endX = (int)oldx + dd; + int endY = (int)oldy + dd; + + return (newx < startX || endX < newx || newy < startY || endY < newy); } public static string FieldToString(byte[] bytes) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 98aa563a4f..95c771e60f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -318,7 +318,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer agentCircuit.Id0 = currentAgentCircuit.Id0; } - if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) + if (NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY)) { // brand new agent, let's create a new caps seed agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); @@ -336,7 +336,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer // OK, it got this agent. Let's close some child agents sp.CloseChildAgents(newRegionX, newRegionY); IClientIPEndpoint ipepClient; - if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) + if (NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY)) { //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); #region IP Translation for NAT @@ -447,7 +447,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone - if (NeedsClosing(oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) + if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) { Thread.Sleep(5000); sp.Close(); @@ -521,14 +521,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer return region; } - protected virtual bool NeedsNewAgent(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY) + protected virtual bool NeedsNewAgent(float drawdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY) { - return Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY); + return Util.IsOutsideView(drawdist, oldRegionX, newRegionX, oldRegionY, newRegionY); } - protected virtual bool NeedsClosing(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) + protected virtual bool NeedsClosing(float drawdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) { - return Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY); + return Util.IsOutsideView(drawdist, oldRegionX, newRegionX, oldRegionY, newRegionY); } protected virtual bool IsOutsideRegion(Scene s, Vector3 pos) @@ -1045,7 +1045,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if (m_regionInfo != null) { - neighbours = RequestNeighbours(sp.Scene, m_regionInfo.RegionLocX, m_regionInfo.RegionLocY); + neighbours = RequestNeighbours(sp, m_regionInfo.RegionLocX, m_regionInfo.RegionLocY); } else { @@ -1272,8 +1272,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer /// /// /// - protected List RequestNeighbours(Scene pScene, uint pRegionLocX, uint pRegionLocY) + protected List RequestNeighbours(ScenePresence avatar, uint pRegionLocX, uint pRegionLocY) { + Scene pScene = avatar.Scene; RegionInfo m_regionInfo = pScene.RegionInfo; Border[] northBorders = pScene.NorthBorders.ToArray(); @@ -1281,10 +1282,24 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer Border[] eastBorders = pScene.EastBorders.ToArray(); Border[] westBorders = pScene.WestBorders.ToArray(); - // Legacy one region. Provided for simplicity while testing the all inclusive method in the else statement. + // Leaving this as a "megaregions" computation vs "non-megaregions" computation; it isn't + // clear what should be done with a "far view" given that megaregions already extended the + // view to include everything in the megaregion if (northBorders.Length <= 1 && southBorders.Length <= 1 && eastBorders.Length <= 1 && westBorders.Length <= 1) { - return pScene.GridService.GetNeighbours(m_regionInfo.ScopeID, m_regionInfo.RegionID); + int dd = avatar.DrawDistance < Constants.RegionSize ? (int)Constants.RegionSize : (int)avatar.DrawDistance; + + int startX = (int)pRegionLocX * (int)Constants.RegionSize - dd + (int)(Constants.RegionSize/2); + int startY = (int)pRegionLocY * (int)Constants.RegionSize - dd + (int)(Constants.RegionSize/2); + + int endX = (int)pRegionLocX * (int)Constants.RegionSize + dd + (int)(Constants.RegionSize/2); + int endY = (int)pRegionLocY * (int)Constants.RegionSize + dd + (int)(Constants.RegionSize/2); + + List neighbours = + avatar.Scene.GridService.GetRegionRange(m_regionInfo.ScopeID, startX, endX, startY, endY); + + neighbours.RemoveAll(delegate(GridRegion r) { return r.RegionID == m_regionInfo.RegionID; }); + return neighbours; } else { diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 35dcd95aa0..79e76b4cbf 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs @@ -130,9 +130,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer return region; } - protected override bool NeedsClosing(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) + protected override bool NeedsClosing(float drawdist, uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) { - if (base.NeedsClosing(oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) + if (base.NeedsClosing(drawdist, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) return true; int flags = m_aScene.GridService.GetRegionFlags(m_aScene.RegionInfo.ScopeID, reg.RegionID); diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ee1e0beee4..7def7e9ca3 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -83,6 +83,13 @@ namespace OpenSim.Region.Framework.Scenes public bool m_useFlySlow; public bool m_usePreJump; public bool m_seeIntoRegionFromNeighbor; + + protected float m_defaultDrawDistance = 255.0f; + public float DefaultDrawDistance + { + get { return m_defaultDrawDistance; } + } + // TODO: need to figure out how allow client agents but deny // root agents when ACL denies access to root agent public bool m_strictAccessControl = true; @@ -627,6 +634,8 @@ namespace OpenSim.Region.Framework.Scenes // IConfig startupConfig = m_config.Configs["Startup"]; + m_defaultDrawDistance = startupConfig.GetFloat("DefaultDrawDistance",m_defaultDrawDistance); + //Animation states m_useFlySlow = startupConfig.GetBoolean("enableflyslow", false); // TODO: Change default to true once the feature is supported diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 51b8dcc004..9e9481e815 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -626,7 +626,7 @@ namespace OpenSim.Region.Framework.Scenes Utils.LongToUInts(handle, out x, out y); x = x / Constants.RegionSize; y = y / Constants.RegionSize; - if (Util.IsOutsideView(x, Scene.RegionInfo.RegionLocX, y, Scene.RegionInfo.RegionLocY)) + if (Util.IsOutsideView(DrawDistance, x, Scene.RegionInfo.RegionLocX, y, Scene.RegionInfo.RegionLocY)) { old.Add(handle); } @@ -700,6 +700,7 @@ namespace OpenSim.Region.Framework.Scenes private ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) : this() { + m_DrawDistance = world.DefaultDrawDistance; m_rootRegionHandle = reginfo.RegionHandle; m_controllingClient = client; m_firstname = m_controllingClient.FirstName; @@ -1279,7 +1280,11 @@ namespace OpenSim.Region.Framework.Scenes m_CameraUpAxis = agentData.CameraUpAxis; // The Agent's Draw distance setting - m_DrawDistance = agentData.Far; + // When we get to the point of re-computing neighbors everytime this + // changes, then start using the agent's drawdistance rather than the + // region's draw distance. + // m_DrawDistance = agentData.Far; + m_DrawDistance = Scene.DefaultDrawDistance; // Check if Client has camera in 'follow cam' or 'build' mode. Vector3 camdif = (Vector3.One * m_bodyRot - Vector3.One * CameraRotation); @@ -2913,7 +2918,7 @@ namespace OpenSim.Region.Framework.Scenes //m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); //m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); - if (Util.IsOutsideView(x, newRegionX, y, newRegionY)) + if (Util.IsOutsideView(DrawDistance, x, newRegionX, y, newRegionY)) { byebyeRegions.Add(handle); } @@ -2989,7 +2994,12 @@ namespace OpenSim.Region.Framework.Scenes Vector3 offset = new Vector3(shiftx, shifty, 0f); - m_DrawDistance = cAgentData.Far; + // When we get to the point of re-computing neighbors everytime this + // changes, then start using the agent's drawdistance rather than the + // region's draw distance. + // m_DrawDistance = cAgentData.Far; + m_DrawDistance = Scene.DefaultDrawDistance; + if (cAgentData.Position != new Vector3(-1f, -1f, -1f)) // UGH!! m_pos = cAgentData.Position + offset; @@ -3139,7 +3149,11 @@ namespace OpenSim.Region.Framework.Scenes m_CameraLeftAxis = cAgent.LeftAxis; m_CameraUpAxis = cAgent.UpAxis; - m_DrawDistance = cAgent.Far; + // When we get to the point of re-computing neighbors everytime this + // changes, then start using the agent's drawdistance rather than the + // region's draw distance. + // m_DrawDistance = cAgent.Far; + m_DrawDistance = Scene.DefaultDrawDistance; if ((cAgent.Throttles != null) && cAgent.Throttles.Length > 0) ControllingClient.SetChildAgentThrottle(cAgent.Throttles); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 475d4a0c53..96ffb7ea6b 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -94,6 +94,13 @@ ; Warning! Don't use this with regions that have existing content!, This will likely break them CombineContiguousRegions = false + ; Extend the region's draw distance; 255m is the default which includes + ; one neighbor on each side of the current region, 767m would go three + ; neighbors on each side for a total of 49 regions in view. Warning, unless + ; all the regions have the same drawdistance, you will end up with strange + ; effects because the agents that get closed may be inconsistent. + ; DefaultDrawDistance = 255.0 + ; If you have only one region in an instance, or to avoid the many bugs ; that you can trigger in modules by restarting a region, set this to ; true to make the entire instance exit instead of restarting the region. From 1bb0bae78aa6654730e1095ba07086679de529de Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 22 Feb 2011 13:30:38 -0800 Subject: [PATCH 088/192] Forces the owner of a rezzed object to be the "rezzer" of the object rather than the owner of the inventory item. In theory, this shouldn't happen unless you are using grid-wide library for inventory. --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 7bb8789f16..bd316c6200 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -524,6 +524,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (item != null) { + item.Owner = remoteClient.AgentId; + AssetBase rezAsset = m_Scene.AssetService.Get(item.AssetID.ToString()); if (rezAsset != null) From db7c758b7f4d2d1f7f7fa7708256ef18bd69c294 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 24 Feb 2011 00:55:50 +0000 Subject: [PATCH 089/192] On a Grid Handler exception, explicitly log the exception message and stack trace so that we get somewhat better diagnostics on windows --- OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs index 913c6c9b3a..edc05612db 100644 --- a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs @@ -115,15 +115,15 @@ namespace OpenSim.Server.Handlers.Grid case "get_region_flags": return GetRegionFlags(request); } + m_log.DebugFormat("[GRID HANDLER]: unknown method {0} request {1}", method.Length, method); } catch (Exception e) { - m_log.DebugFormat("[GRID HANDLER]: Exception {0}", e); + m_log.ErrorFormat("[GRID HANDLER]: Exception {0} {1}", e.Message, e.StackTrace); } return FailureResult(); - } #region Method-specific handlers From 2f5394e70ddefb5e7ec6a04022eef42a8ac89b0d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 24 Feb 2011 22:33:54 +0000 Subject: [PATCH 090/192] Fix bug where avatars in other regions would not always show up on the mini-map --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 969ff13ac7..734ba22e9c 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -204,9 +204,10 @@ namespace OpenSim.Region.Framework.Scenes for (int i = 0; i < Math.Min(presences.Count, maxLocations); ++i) { ScenePresence sp = presences[i]; + // If this presence is a child agent, we don't want its coarse locations if (sp.IsChildAgent) - return; + continue; if (sp.ParentID != 0) { From 197cc3883fe5c532588f6b721d5f9d1295c24abc Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Feb 2011 01:16:47 +0000 Subject: [PATCH 091/192] Fix bug where having no maximum memory cache timeout would cause the flotsam asset cache to try using Double.MaxValue, which would cause the underlying OpenMetaverse.ExpiringCache to choke. There is probably an underlying bug to fix in ExpiringCache. --- OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 6ed48674b2..edb6710829 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache } else { - m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue); + m_MemoryCache.AddOrUpdate(key, asset, m_DefaultMemoryExpiration); } } } From beff0ac32f0575e7805fd0691ba3907b3d13b70c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Feb 2011 01:18:43 +0000 Subject: [PATCH 092/192] log actual cache directory for FlotsamAssetCache instead of always logging the default --- OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index edb6710829..90fb9b3175 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -147,7 +147,7 @@ namespace Flotsam.RegionModules.AssetCache } m_CacheDirectory = assetConfig.GetString("CacheDirectory", m_DefaultCacheDirectory); - m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory", m_DefaultCacheDirectory); + m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory", m_CacheDirectory); m_MemoryCacheEnabled = assetConfig.GetBoolean("MemoryCacheEnabled", false); m_MemoryExpiration = TimeSpan.FromHours(assetConfig.GetDouble("MemoryCacheTimeout", m_DefaultMemoryExpiration)); From 939c47ac521dee943083d87abe70a7271ee78077 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Feb 2011 01:25:38 +0000 Subject: [PATCH 093/192] instead of using different default memory expiration depending on whether there is a [FLOTSAM ASSET CACHE] section present at all, use the same default all the time this simplifies the code --- .../Region/CoreModules/Asset/FlotsamAssetCache.cs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 90fb9b3175..02a4e4d979 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -92,7 +92,7 @@ namespace Flotsam.RegionModules.AssetCache // Expiration is expressed in hours. private const double m_DefaultMemoryExpiration = 1.0; private const double m_DefaultFileExpiration = 48; - private TimeSpan m_MemoryExpiration = TimeSpan.Zero; + private TimeSpan m_MemoryExpiration = TimeSpan.FromHours(m_DefaultMemoryExpiration); private TimeSpan m_FileExpiration = TimeSpan.Zero; private TimeSpan m_FileExpirationCleanupTimer = TimeSpan.Zero; @@ -245,16 +245,7 @@ namespace Flotsam.RegionModules.AssetCache private void UpdateMemoryCache(string key, AssetBase asset) { if (m_MemoryCacheEnabled) - { - if (m_MemoryExpiration > TimeSpan.Zero) - { - m_MemoryCache.AddOrUpdate(key, asset, m_MemoryExpiration); - } - else - { - m_MemoryCache.AddOrUpdate(key, asset, m_DefaultMemoryExpiration); - } - } + m_MemoryCache.AddOrUpdate(key, asset, m_MemoryExpiration); } public void Cache(AssetBase asset) From 0f545abfc17392c4a2113b07a945bd4cc7b8366f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Feb 2011 01:31:38 +0000 Subject: [PATCH 094/192] Make the file expiration defaults the same whether the whole [FLOTSAM ASSET CACHE] section is missing or just the particular config values --- OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 02a4e4d979..9adb68bc0d 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -93,8 +93,8 @@ namespace Flotsam.RegionModules.AssetCache private const double m_DefaultMemoryExpiration = 1.0; private const double m_DefaultFileExpiration = 48; private TimeSpan m_MemoryExpiration = TimeSpan.FromHours(m_DefaultMemoryExpiration); - private TimeSpan m_FileExpiration = TimeSpan.Zero; - private TimeSpan m_FileExpirationCleanupTimer = TimeSpan.Zero; + private TimeSpan m_FileExpiration = TimeSpan.FromHours(m_DefaultFileExpiration); + private TimeSpan m_FileExpirationCleanupTimer = TimeSpan.FromHours(m_DefaultFileExpiration); private static int m_CacheDirectoryTiers = 1; private static int m_CacheDirectoryTierLen = 3; @@ -441,7 +441,7 @@ namespace Flotsam.RegionModules.AssetCache private void CleanupExpiredFiles(object source, ElapsedEventArgs e) { if (m_LogLevel >= 2) - m_log.DebugFormat("[FLOTSAM ASSET CACHE]: Checking for expired files older then {0}.", m_FileExpiration.ToString()); + m_log.DebugFormat("[FLOTSAM ASSET CACHE]: Checking for expired files older then {0}.", m_FileExpiration); // Purge all files last accessed prior to this point DateTime purgeLine = DateTime.Now - m_FileExpiration; From 2b04cab1ee4b7c89bdfbe93622f421f031879943 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Feb 2011 02:15:06 +0000 Subject: [PATCH 095/192] change some log messages from info to debug --- .../CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 2 +- OpenSim/Region/Framework/Scenes/Scene.cs | 2 +- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index f8ce444b50..08ac62418e 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory } } - m_log.InfoFormat("[AVFACTORY]: complete texture check for {0}", client.AgentId); + m_log.DebugFormat("[AVFACTORY]: complete texture check for {0}", client.AgentId); // If we only found default textures, then the appearance is not cached return (defonly ? false : true); diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 7def7e9ca3..1a6a70bfbe 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3210,7 +3210,7 @@ namespace OpenSim.Region.Framework.Scenes // TeleportFlags.ViaLandmark | TeleportFlags.ViaLocation | TeleportFlags.ViaLandmark | TeleportFlags.Default - Regular Teleport // Don't disable this log message - it's too helpful - m_log.InfoFormat( + m_log.DebugFormat( "[CONNECTION BEGIN]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, teleportflags {6})", RegionInfo.RegionName, (agent.child ? "child" : "root"), agent.firstname, agent.lastname, agent.AgentID, agent.circuitcode, teleportFlags); diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 9e9481e815..00a1487ab6 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2442,7 +2442,7 @@ namespace OpenSim.Region.Framework.Scenes // If we are using the the cached appearance then send it out to everyone if (cachedappearance) { - m_log.InfoFormat("[SCENEPRESENCE]: baked textures are in the cache for {0}", Name); + m_log.DebugFormat("[SCENEPRESENCE]: baked textures are in the cache for {0}", Name); // If the avatars baked textures are all in the cache, then we have a // complete appearance... send it out, if not, then we'll send it when From cea47491de6723230a49b1ac99cecc5c32758f40 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 27 Feb 2011 18:55:17 +0100 Subject: [PATCH 096/192] Fix a few little things --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 3 +++ OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index bd316c6200..798547a82d 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -148,6 +148,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); item = m_Scene.InventoryService.GetItem(item); + if (item.Owner != remoteClient.AgentId) + return UUID.Zero; + if (item != null) { if ((InventoryType)item.InvType == InventoryType.Notecard) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index e2d96d9a37..fcbcf593ba 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -321,6 +321,8 @@ namespace OpenSim.Region.Framework.Scenes // Passing something to another avatar or a an object will already InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); item = InventoryService.GetItem(item); + if (item.Owner != remoteClient.AgentId) + return; if (item != null) { From b82b0b16770af89b0bbe48ba63a0d9fec9839d6d Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 1 Mar 2011 09:20:50 -0800 Subject: [PATCH 097/192] Normalizing comparison to lower case, just in case ppl set their config vars inconsistently. (maybe related to mantis #5386) --- OpenSim/Services/HypergridService/UserAgentService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 3ead180a0b..445d45e250 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs @@ -253,7 +253,7 @@ namespace OpenSim.Services.HypergridService TravelingAgentInfo travel = m_TravelingAgents[sessionID]; - return travel.GridExternalName == thisGridExternalName; + return travel.GridExternalName.ToLower() == thisGridExternalName.ToLower(); } public bool VerifyClient(UUID sessionID, string reportedIP) From 3c89527b222c2ddc50553ce1c49f22e9f05db11b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 00:06:51 +0000 Subject: [PATCH 098/192] Fix bug where llSetPrimMediaParams() reported success but never set the media texture. We weren't setting the TextureEntryFace.MediaFlags = true when a media texture was set directly via a script. This was being done when the viewer was setting them directly. --- .../CoreModules/World/Media/Moap/MoapModule.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs index 7c5d044347..9132753460 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs @@ -227,15 +227,24 @@ namespace OpenSim.Region.CoreModules.Media.Moap public void SetMediaEntry(SceneObjectPart part, int face, MediaEntry me) { +// m_log.DebugFormat("[MOAP]: SetMediaEntry for {0}, face {1}", part.Name, face); + CheckFaceParam(part, face); if (null == part.Shape.Media) part.Shape.Media = new PrimitiveBaseShape.MediaList(new MediaEntry[part.GetNumberOfSides()]); - + lock (part.Shape.Media) - part.Shape.Media[face] = me; + part.Shape.Media[face] = me; UpdateMediaUrl(part, UUID.Zero); + + // Temporary code to fix llSetPrimMediaParams() bug, pending refactoring + Primitive.TextureEntry te = part.Shape.Textures; + Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); + teFace.MediaFlags = true; + part.Shape.Textures = te; + part.ScheduleFullUpdate(); part.TriggerScriptChangedEvent(Changed.MEDIA); } @@ -333,7 +342,7 @@ namespace OpenSim.Region.CoreModules.Media.Moap } // m_log.DebugFormat("[MOAP]: Received {0} media entries for prim {1}", omu.FaceMedia.Length, primId); - +// // for (int i = 0; i < omu.FaceMedia.Length; i++) // { // MediaEntry me = omu.FaceMedia[i]; @@ -380,6 +389,8 @@ namespace OpenSim.Region.CoreModules.Media.Moap } else { +// m_log.DebugFormat("[MOAP]: Setting existing media list for {0}", part.Name); + // We need to go through the media textures one at a time to make sure that we have permission // to change them From 481ca910da47e68546623573ac9bba669d7b44c1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 01:07:05 +0000 Subject: [PATCH 099/192] add test for MoapModule.SetMediaUrl() --- .../World/Media/Moap/Tests/MoapTests.cs | 72 +++++++++++++++++++ prebuild.xml | 1 + 2 files changed, 73 insertions(+) create mode 100644 OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs new file mode 100644 index 0000000000..d4c9245ec4 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs @@ -0,0 +1,72 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Threading; +using log4net.Config; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenMetaverse; +using OpenMetaverse.Assets; +using OpenSim.Framework; +using OpenSim.Region.CoreModules.Media.Moap; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.CoreModules.World.Media.Moap.Tests +{ + [TestFixture] + public class MoapTests + { + [Test] + public void TestSetMediaUrl() + { + TestHelper.InMethod(); + + string homeUrl = "opensimulator.org"; + + MoapModule module = new MoapModule(); + TestScene scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(scene, module); + + SceneObjectPart part = SceneSetupHelpers.AddSceneObject(scene); + MediaEntry me = new MediaEntry() { HomeURL = homeUrl }; + + module.SetMediaEntry(part, 1, me); + + Assert.That(part.Shape.Media[1].HomeURL, Is.EqualTo(homeUrl)); + Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000000/" + UUID.Zero)); + Assert.That(part.Shape.Textures.FaceTextures[1].MediaFlags, Is.True); + } + } +} \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index cbe539ea17..b31812dc17 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2927,6 +2927,7 @@ + From 72cb498fd0c167867d71c26e55afedc2e23ab9b4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 01:13:59 +0000 Subject: [PATCH 100/192] minor: Make MoapModule namespace consistent with other modules --- OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs | 2 +- OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs index 9132753460..b6ec6dc9f2 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs @@ -50,7 +50,7 @@ using Caps = OpenSim.Framework.Capabilities.Caps; using OSDArray = OpenMetaverse.StructuredData.OSDArray; using OSDMap = OpenMetaverse.StructuredData.OSDMap; -namespace OpenSim.Region.CoreModules.Media.Moap +namespace OpenSim.Region.CoreModules.World.Media.Moap { [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MoapModule")] public class MoapModule : INonSharedRegionModule, IMoapModule diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs index d4c9245ec4..9e5c7ae5d2 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs @@ -36,7 +36,7 @@ using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.Assets; using OpenSim.Framework; -using OpenSim.Region.CoreModules.Media.Moap; +using OpenSim.Region.CoreModules.World.Media.Moap; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes.Serialization; using OpenSim.Tests.Common; From 8efb01b3df1ea98d5e4a68aa220bafc4ab5306f4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 01:15:27 +0000 Subject: [PATCH 101/192] minor: remove some mono compiler warnings --- .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 2 +- .../Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs | 12 ++++++------ .../SimianGroupsServicesConnectorModule.cs | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index dfeecb1bbc..6a24cc1092 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -51,7 +51,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LindenUDPInfoModule")] public class LindenUDPInfoModule : ISharedRegionModule { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected Dictionary m_scenes = new Dictionary(); diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs index e9c545308c..05a1c3b427 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs @@ -92,7 +92,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice private static string m_freeSwitchUrlResetPassword; private uint m_freeSwitchServicePort; private string m_openSimWellKnownHTTPAddress; - private string m_freeSwitchContext; +// private string m_freeSwitchContext; private readonly Dictionary m_UUIDName = new Dictionary(); private Dictionary m_ParcelAddress = new Dictionary(); @@ -144,7 +144,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice m_freeSwitchDefaultWellKnownIP = map["DefaultWellKnownIP"].AsString(); m_freeSwitchDefaultTimeout = map["DefaultTimeout"].AsInteger(); m_freeSwitchUrlResetPassword = String.Empty; - m_freeSwitchContext = map["Context"].AsString(); +// m_freeSwitchContext = map["Context"].AsString(); if (String.IsNullOrEmpty(m_freeSwitchRealm) || String.IsNullOrEmpty(m_freeSwitchAPIPrefix)) @@ -662,7 +662,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice resp.Append(""); response["str_response_string"] = resp.ToString(); - Regex normalizeEndLines = new Regex(@"\r\n", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); +// Regex normalizeEndLines = new Regex(@"\r\n", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); //m_log.DebugFormat("[FREESWITCH]: {0}", normalizeEndLines.Replace((string)response["str_response_string"],"")); return response; @@ -671,9 +671,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice public Hashtable FreeSwitchSLVoiceSigninHTTPHandler(Hashtable request) { m_log.Debug("[FreeSwitchVoice] FreeSwitchSLVoiceSigninHTTPHandler called"); - string requestbody = (string)request["body"]; - string uri = (string)request["uri"]; - string contenttype = (string)request["content-type"]; +// string requestbody = (string)request["body"]; +// string uri = (string)request["uri"]; +// string contenttype = (string)request["content-type"]; Hashtable requestBody = ParseRequestBody((string)request["body"]); diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs index 81725c55c7..02751eafa7 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs @@ -712,7 +712,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); GroupMembershipData data = null; - bool foundData = false; +// bool foundData = false; OSDMap UserGroupMemberInfo; if (SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out UserGroupMemberInfo)) From 3c0d607f454492bbec622e4dc36696ca969dd247 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Fri, 4 Mar 2011 17:17:53 -0800 Subject: [PATCH 102/192] Changed order of checks for local regions when processing AgentUpdate messages. Should improve throttles and reprioritization when an avatar is moving. --- .../Simulation/RemoteSimulationConnector.cs | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs index 0c92bd1c57..67f4d6030c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs @@ -192,15 +192,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation return false; // Try local first - if (m_localBackend.UpdateAgent(destination, cAgentData)) - return true; - - // else do the remote thing - if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) - return m_remoteConnector.UpdateAgent(destination, cAgentData); - - return false; + if (m_localBackend.IsLocalRegion(destination.RegionHandle)) + return m_localBackend.UpdateAgent(destination, cAgentData); + return m_remoteConnector.UpdateAgent(destination, cAgentData); } public bool UpdateAgent(GridRegion destination, AgentPosition cAgentData) @@ -209,15 +204,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation return false; // Try local first - if (m_localBackend.UpdateAgent(destination, cAgentData)) - return true; - - // else do the remote thing - if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) - return m_remoteConnector.UpdateAgent(destination, cAgentData); - - return false; + if (m_localBackend.IsLocalRegion(destination.RegionHandle)) + return m_localBackend.UpdateAgent(destination, cAgentData); + return m_remoteConnector.UpdateAgent(destination, cAgentData); } public bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent) From 9f85ee29ac9f5e0aa8c1976944f9af12da3514db Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 02:18:03 +0000 Subject: [PATCH 103/192] Change MoapModule.ClearMediaEntry to set TextureEntryFace.MediaFlags back to false Implement test for ClearMediaEntry() --- OpenSim/Framework/PrimitiveBaseShape.cs | 2 +- .../World/Media/Moap/MoapModule.cs | 30 ++++++++++++- .../World/Media/Moap/Tests/MoapTests.cs | 45 ++++++++++++++++--- 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index 927415e850..7b5fb2e8f1 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs @@ -250,7 +250,7 @@ namespace OpenSim.Framework { get { - //m_log.DebugFormat("[SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length); +// m_log.DebugFormat("[SHAPE]: get m_textureEntry length {0}", m_textureEntry.Length); try { return new Primitive.TextureEntry(m_textureEntry, 0, m_textureEntry.Length); } catch { } diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs index b6ec6dc9f2..ffb3221bc6 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs @@ -225,6 +225,12 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap return me; } + /// + /// Set the media entry on the face of the given part. + /// + /// /param> + /// + /// public void SetMediaEntry(SceneObjectPart part, int face, MediaEntry me) { // m_log.DebugFormat("[MOAP]: SetMediaEntry for {0}, face {1}", part.Name, face); @@ -249,9 +255,31 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap part.TriggerScriptChangedEvent(Changed.MEDIA); } + /// + /// Clear the media entry from the face of the given part. + /// + /// + /// public void ClearMediaEntry(SceneObjectPart part, int face) { - SetMediaEntry(part, face, null); + CheckFaceParam(part, face); + + // If no media has been set up yetthen we don't need to clear anything + if (null == part.Shape.Media) + return; + + lock (part.Shape.Media) + part.Shape.Media[face] = null; + + UpdateMediaUrl(part, UUID.Zero); + + Primitive.TextureEntry te = part.Shape.Textures; + Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); + teFace.MediaFlags = false; + part.Shape.Textures = te; + + part.ScheduleFullUpdate(); + part.TriggerScriptChangedEvent(Changed.MEDIA); } /// diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs index 9e5c7ae5d2..7a68e55c7e 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs @@ -48,21 +48,52 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap.Tests [TestFixture] public class MoapTests { + protected TestScene m_scene; + protected MoapModule m_module; + + [SetUp] + public void SetUp() + { + m_module = new MoapModule(); + m_scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(m_scene, m_module); + } + + [Test] + public void TestClearMediaUrl() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + SceneObjectPart part = SceneSetupHelpers.AddSceneObject(m_scene); + MediaEntry me = new MediaEntry(); + + m_module.SetMediaEntry(part, 1, me); + m_module.ClearMediaEntry(part, 1); + + Assert.That(part.Shape.Media[1], Is.EqualTo(null)); + + // Although we've cleared one face, other faces may still be present. So we need to check for an + // update media url version + Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000001/" + UUID.Zero)); + + // By changing media flag to false, the face texture once again becomes identical to the DefaultTexture. + // Therefore, when libOMV reserializes it, it disappears and we are left with no face texture in this slot. + // Not at all confusing, eh? + Assert.That(part.Shape.Textures.FaceTextures[1], Is.Null); + } + [Test] public void TestSetMediaUrl() { TestHelper.InMethod(); - string homeUrl = "opensimulator.org"; + string homeUrl = "opensimulator.org"; - MoapModule module = new MoapModule(); - TestScene scene = SceneSetupHelpers.SetupScene(); - SceneSetupHelpers.SetupSceneModules(scene, module); - - SceneObjectPart part = SceneSetupHelpers.AddSceneObject(scene); + SceneObjectPart part = SceneSetupHelpers.AddSceneObject(m_scene); MediaEntry me = new MediaEntry() { HomeURL = homeUrl }; - module.SetMediaEntry(part, 1, me); + m_module.SetMediaEntry(part, 1, me); Assert.That(part.Shape.Media[1].HomeURL, Is.EqualTo(homeUrl)); Assert.That(part.MediaUrl, Is.EqualTo("x-mv:0000000000/" + UUID.Zero)); From 9e579a7891d6eb4c3e5a0593d67837ed423135ee Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 02:21:53 +0000 Subject: [PATCH 104/192] Fold ClearMediaEntry() back into SetMediaEntry() --- .../World/Media/Moap/MoapModule.cs | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs index ffb3221bc6..b8943adbe8 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs @@ -230,7 +230,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap /// /// /param> /// - /// + /// If null, then the media entry is cleared. public void SetMediaEntry(SceneObjectPart part, int face, MediaEntry me) { // m_log.DebugFormat("[MOAP]: SetMediaEntry for {0}, face {1}", part.Name, face); @@ -238,7 +238,12 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap CheckFaceParam(part, face); if (null == part.Shape.Media) - part.Shape.Media = new PrimitiveBaseShape.MediaList(new MediaEntry[part.GetNumberOfSides()]); + { + if (me == null) + return; + else + part.Shape.Media = new PrimitiveBaseShape.MediaList(new MediaEntry[part.GetNumberOfSides()]); + } lock (part.Shape.Media) part.Shape.Media[face] = me; @@ -248,7 +253,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap // Temporary code to fix llSetPrimMediaParams() bug, pending refactoring Primitive.TextureEntry te = part.Shape.Textures; Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); - teFace.MediaFlags = true; + teFace.MediaFlags = me != null; part.Shape.Textures = te; part.ScheduleFullUpdate(); @@ -262,24 +267,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap /// public void ClearMediaEntry(SceneObjectPart part, int face) { - CheckFaceParam(part, face); - - // If no media has been set up yetthen we don't need to clear anything - if (null == part.Shape.Media) - return; - - lock (part.Shape.Media) - part.Shape.Media[face] = null; - - UpdateMediaUrl(part, UUID.Zero); - - Primitive.TextureEntry te = part.Shape.Textures; - Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); - teFace.MediaFlags = false; - part.Shape.Textures = te; - - part.ScheduleFullUpdate(); - part.TriggerScriptChangedEvent(Changed.MEDIA); + SetMediaEntry(part, face, null); } /// From 2e46027c14fb7a7084e3909cd8b57db5565cce7d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 02:34:44 +0000 Subject: [PATCH 105/192] Construct test load iar only once and reuse for each test, rather than recreating it every time --- .../Archiver/Tests/InventoryArchiverTests.cs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 76d0b85774..8a84c7a2d9 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -53,9 +53,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests public class InventoryArchiverTests { protected ManualResetEvent mre = new ManualResetEvent(false); - + /// - /// Stream of data representing a common IAR that can be reused in load tests. + /// A raw array of bytes that we'll use to create an IAR memory stream suitable for isolated use in each test. + /// + protected byte[] m_iarStreamBytes; + + /// + /// Stream of data representing a common IAR for load tests. /// protected MemoryStream m_iarStream; @@ -79,12 +84,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests } [SetUp] - public void Init() + public void SetUp() { - ConstructDefaultIarForTestLoad(); + m_iarStream = new MemoryStream(m_iarStreamBytes); } - protected void ConstructDefaultIarForTestLoad() + [TestFixtureSetUp] + public void FixtureSetup() + { + ConstructDefaultIarBytesForTestLoad(); + } + + protected void ConstructDefaultIarBytesForTestLoad() { string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); @@ -107,7 +118,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), scene.UserAccountService)); tar.Close(); - m_iarStream = new MemoryStream(archiveWriteStream.ToArray()); + m_iarStreamBytes = archiveWriteStream.ToArray(); } /// @@ -392,8 +403,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "meowfood"); UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); - + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); From 9b345ebf73663a04d8baa69f0fb48ab80b8b1a58 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Mar 2011 02:42:47 +0000 Subject: [PATCH 106/192] factor out SetPartMediaFlags() function in MoapModule. --- .../World/Media/Moap/MoapModule.cs | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs index b8943adbe8..898ca4a4c3 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs @@ -250,11 +250,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap UpdateMediaUrl(part, UUID.Zero); - // Temporary code to fix llSetPrimMediaParams() bug, pending refactoring - Primitive.TextureEntry te = part.Shape.Textures; - Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); - teFace.MediaFlags = me != null; - part.Shape.Textures = te; + SetPartMediaFlags(part, face, me != null); part.ScheduleFullUpdate(); part.TriggerScriptChangedEvent(Changed.MEDIA); @@ -270,6 +266,23 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap SetMediaEntry(part, face, null); } + /// + /// Set the media flags on the texture face of the given part. + /// + /// + /// The fact that we need a separate function to do what should be a simple one line operation is BUTT UGLY. + /// + /// + /// + /// + protected void SetPartMediaFlags(SceneObjectPart part, int face, bool flag) + { + Primitive.TextureEntry te = part.Shape.Textures; + Primitive.TextureEntryFace teFace = te.CreateFace((uint)face); + teFace.MediaFlags = flag; + part.Shape.Textures = te; + } + /// /// Sets or gets per face media textures. /// @@ -393,10 +406,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap // FIXME: Race condition here since some other texture entry manipulator may overwrite/get // overwritten. Unfortunately, PrimitiveBaseShape does not allow us to change texture entry // directly. - Primitive.TextureEntry te = part.Shape.Textures; - Primitive.TextureEntryFace face = te.CreateFace((uint)i); - face.MediaFlags = true; - part.Shape.Textures = te; + SetPartMediaFlags(part, i, true); // m_log.DebugFormat( // "[MOAP]: Media flags for face {0} is {1}", // i, part.Shape.Textures.FaceTextures[i].MediaFlags); @@ -428,8 +438,7 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap if (null == media[i]) continue; - Primitive.TextureEntryFace face = te.CreateFace((uint)i); - face.MediaFlags = true; + SetPartMediaFlags(part, i, true); // m_log.DebugFormat( // "[MOAP]: Media flags for face {0} is {1}", From 9923a2ff1002d722ccebea8bf4d71718ed4e2a03 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Mar 2011 09:02:29 -0800 Subject: [PATCH 107/192] Pull up Assembly of the MySQL classes as a protected property, so that it can be overwritten in subclasses. That way extensions can decide in which assembly migration resources should be looked up. This is just a refactor -- no functional changes whatsoever. --- OpenSim/Data/MySQL/MySQLAssetData.cs | 10 ++++++---- OpenSim/Data/MySQL/MySQLAuthenticationData.cs | 8 +++++++- OpenSim/Data/MySQL/MySQLEstateData.cs | 8 ++++++-- OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 7 ++++++- OpenSim/Data/MySQL/MySQLRegionData.cs | 9 ++++++++- OpenSim/Data/MySQL/MySQLSimulationData.cs | 8 ++++++-- 6 files changed, 39 insertions(+), 11 deletions(-) diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs index ed92f3ebc2..e740232a31 100644 --- a/OpenSim/Data/MySQL/MySQLAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLAssetData.cs @@ -47,6 +47,11 @@ namespace OpenSim.Data.MySQL private string m_connectionString; private object m_dbLock = new object(); + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + #region IPlugin Members public override string Version { get { return "1.0.0.0"; } } @@ -66,13 +71,10 @@ namespace OpenSim.Data.MySQL { m_connectionString = connect; - // This actually does the roll forward assembly stuff - Assembly assem = GetType().Assembly; - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); - Migration m = new Migration(dbcon, assem, "AssetStore"); + Migration m = new Migration(dbcon, Assembly, "AssetStore"); m.Update(); } } diff --git a/OpenSim/Data/MySQL/MySQLAuthenticationData.cs b/OpenSim/Data/MySQL/MySQLAuthenticationData.cs index 5056aee6c1..8d82f61bda 100644 --- a/OpenSim/Data/MySQL/MySQLAuthenticationData.cs +++ b/OpenSim/Data/MySQL/MySQLAuthenticationData.cs @@ -28,6 +28,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Reflection; using System.Data; using OpenMetaverse; using OpenSim.Framework; @@ -42,6 +43,11 @@ namespace OpenSim.Data.MySQL private int m_LastExpire; // private string m_connectionString; + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + public MySqlAuthenticationData(string connectionString, string realm) : base(connectionString) { @@ -51,7 +57,7 @@ namespace OpenSim.Data.MySQL using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); - Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore"); + Migration m = new Migration(dbcon, Assembly, "AuthStore"); m.Update(); } } diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index c42c687ed9..de72a6a931 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -54,6 +54,11 @@ namespace OpenSim.Data.MySQL private Dictionary m_FieldMap = new Dictionary(); + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + public MySQLEstateStore() { } @@ -82,8 +87,7 @@ namespace OpenSim.Data.MySQL { dbcon.Open(); - Assembly assem = GetType().Assembly; - Migration m = new Migration(dbcon, assem, "EstateStore"); + Migration m = new Migration(dbcon, Assembly, "EstateStore"); m.Update(); Type t = typeof(EstateSettings); diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 7c23a47d04..8efe4e9bd6 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs @@ -46,6 +46,11 @@ namespace OpenSim.Data.MySQL protected string m_Realm; protected FieldInfo m_DataField = null; + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + public MySQLGenericTableHandler(string connectionString, string realm, string storeName) : base(connectionString) { @@ -57,7 +62,7 @@ namespace OpenSim.Data.MySQL using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); - Migration m = new Migration(dbcon, GetType().Assembly, storeName); + Migration m = new Migration(dbcon, Assembly, storeName); m.Update(); } } diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index d04e3dc996..c20c39263a 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs @@ -29,6 +29,8 @@ using System; using System.Collections; using System.Collections.Generic; using System.Data; +using System.Reflection; + using OpenMetaverse; using OpenSim.Framework; using OpenSim.Data; @@ -42,6 +44,11 @@ namespace OpenSim.Data.MySQL private List m_ColumnNames; //private string m_connectionString; + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + public MySqlRegionData(string connectionString, string realm) : base(connectionString) { @@ -51,7 +58,7 @@ namespace OpenSim.Data.MySQL using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); - Migration m = new Migration(dbcon, GetType().Assembly, "GridStore"); + Migration m = new Migration(dbcon, Assembly, "GridStore"); m.Update(); } } diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs index 02997b3278..e14d775b45 100644 --- a/OpenSim/Data/MySQL/MySQLSimulationData.cs +++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs @@ -52,6 +52,11 @@ namespace OpenSim.Data.MySQL private string m_connectionString; private object m_dbLock = new object(); + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + public MySQLSimulationData() { } @@ -71,8 +76,7 @@ namespace OpenSim.Data.MySQL // Apply new Migrations // - Assembly assem = GetType().Assembly; - Migration m = new Migration(dbcon, assem, "RegionStore"); + Migration m = new Migration(dbcon, Assembly, "RegionStore"); m.Update(); // Clean dropped attachments From 743a6b0da5a98329997c98463feca37885ae7c58 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 8 Mar 2011 22:44:02 +0000 Subject: [PATCH 108/192] Make -m shortcut option for --merge on load iar specific. Correct some log message origins. --- .../Inventory/Archiver/InventoryArchiverModule.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 26edba4b6c..576a154719 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -109,9 +109,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver scene.AddCommand( this, "load iar", - "load iar [--merge] []", + "load iar [-m|--merge] []", "Load user inventory archive (IAR).", - "--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones" + "-m|--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones" + " is user's first name." + Environment.NewLine + " is user's last name." + Environment.NewLine + " is the path inside the user's inventory where the IAR should be loaded." + Environment.NewLine @@ -181,7 +181,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver catch (EntryPointNotFoundException e) { m_log.ErrorFormat( - "[ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "[INVENTORY ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); m_log.Error(e); @@ -221,7 +221,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver catch (EntryPointNotFoundException e) { m_log.ErrorFormat( - "[ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "[INVENTORY ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); m_log.Error(e); @@ -269,7 +269,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver catch (EntryPointNotFoundException e) { m_log.ErrorFormat( - "[ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "[INVENTORY ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); m_log.Error(e); @@ -317,7 +317,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver catch (EntryPointNotFoundException e) { m_log.ErrorFormat( - "[ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "[INVENTORY ARCHIVER]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); m_log.Error(e); @@ -358,7 +358,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (mainParams.Count < 6) { m_log.Error( - "[INVENTORY ARCHIVER]: usage is load iar [--merge] []"); + "[INVENTORY ARCHIVER]: usage is load iar [-m|--merge] []"); return; } From 8a2360bf815d4d78fcff34a69dec24782494bd2e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 01:21:31 +0000 Subject: [PATCH 109/192] Simplify TestLoadIarV0_1AbsentUsers() to use common IAR test setup. Make static dictionaries on NullUserAccountData instance instead to stop user accounts being carried over between tests --- OpenSim/Data/Null/NullUserAccountData.cs | 65 +++++++++++++++---- .../Serialization/External/OspResolver.cs | 19 +++++- .../Archiver/InventoryArchiveReadRequest.cs | 2 + .../Archiver/Tests/InventoryArchiverTests.cs | 65 +++++-------------- .../Tests/Common/Setup/SceneSetupHelpers.cs | 6 +- 5 files changed, 89 insertions(+), 68 deletions(-) diff --git a/OpenSim/Data/Null/NullUserAccountData.cs b/OpenSim/Data/Null/NullUserAccountData.cs index ede23fb8fe..ec54dba2e8 100644 --- a/OpenSim/Data/Null/NullUserAccountData.cs +++ b/OpenSim/Data/Null/NullUserAccountData.cs @@ -28,6 +28,9 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Reflection; +using System.Text; +using log4net; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Data; @@ -36,12 +39,17 @@ namespace OpenSim.Data.Null { public class NullUserAccountData : IUserAccountData { - private static Dictionary m_DataByUUID = new Dictionary(); - private static Dictionary m_DataByName = new Dictionary(); - private static Dictionary m_DataByEmail = new Dictionary(); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private Dictionary m_DataByUUID = new Dictionary(); + private Dictionary m_DataByName = new Dictionary(); + private Dictionary m_DataByEmail = new Dictionary(); public NullUserAccountData(string connectionString, string realm) { +// m_log.DebugFormat( +// "[NULL USER ACCOUNT DATA]: Initializing new NullUserAccountData with connectionString [{0}], realm [{1}]", +// connectionString, realm); } /// @@ -54,6 +62,15 @@ namespace OpenSim.Data.Null /// public UserAccountData[] Get(string[] fields, string[] values) { +// if (m_log.IsDebugEnabled) +// { +// m_log.DebugFormat( +// "[NULL USER ACCOUNT DATA]: Called Get with fields [{0}], values [{1}]", +// string.Join(", ", fields), string.Join(", ", values)); +// } + + UserAccountData[] userAccounts = new UserAccountData[0]; + List fieldsLst = new List(fields); if (fieldsLst.Contains("PrincipalID")) { @@ -61,41 +78,61 @@ namespace OpenSim.Data.Null UUID id = UUID.Zero; if (UUID.TryParse(values[i], out id)) if (m_DataByUUID.ContainsKey(id)) - return new UserAccountData[] { m_DataByUUID[id] }; - } - if (fieldsLst.Contains("FirstName") && fieldsLst.Contains("LastName")) + userAccounts = new UserAccountData[] { m_DataByUUID[id] }; + } + else if (fieldsLst.Contains("FirstName") && fieldsLst.Contains("LastName")) { int findex = fieldsLst.IndexOf("FirstName"); int lindex = fieldsLst.IndexOf("LastName"); if (m_DataByName.ContainsKey(values[findex] + " " + values[lindex])) - return new UserAccountData[] { m_DataByName[values[findex] + " " + values[lindex]] }; - } - if (fieldsLst.Contains("Email")) + { + userAccounts = new UserAccountData[] { m_DataByName[values[findex] + " " + values[lindex]] }; + } + } + else if (fieldsLst.Contains("Email")) { int i = fieldsLst.IndexOf("Email"); if (m_DataByEmail.ContainsKey(values[i])) - return new UserAccountData[] { m_DataByEmail[values[i]] }; + userAccounts = new UserAccountData[] { m_DataByEmail[values[i]] }; } - - // Fail - return new UserAccountData[0]; + +// if (m_log.IsDebugEnabled) +// { +// StringBuilder sb = new StringBuilder(); +// foreach (UserAccountData uad in userAccounts) +// sb.AppendFormat("({0} {1} {2}) ", uad.FirstName, uad.LastName, uad.PrincipalID); +// +// m_log.DebugFormat( +// "[NULL USER ACCOUNT DATA]: Returning {0} user accounts out of {1}: [{2}]", userAccounts.Length, m_DataByName.Count, sb); +// } + + return userAccounts; } public bool Store(UserAccountData data) { if (data == null) return false; - + + m_log.DebugFormat( + "[NULL USER ACCOUNT DATA]: Storing user account {0} {1} {2} {3}", + data.FirstName, data.LastName, data.PrincipalID, this.GetHashCode()); + m_DataByUUID[data.PrincipalID] = data; m_DataByName[data.FirstName + " " + data.LastName] = data; if (data.Data.ContainsKey("Email") && data.Data["Email"] != null && data.Data["Email"] != string.Empty) m_DataByEmail[data.Data["Email"]] = data; + +// m_log.DebugFormat("m_DataByUUID count is {0}, m_DataByName count is {1}", m_DataByUUID.Count, m_DataByName.Count); return true; } public UserAccountData[] GetUsers(UUID scopeID, string query) { +// m_log.DebugFormat( +// "[NULL USER ACCOUNT DATA]: Called GetUsers with scope [{0}], query [{1}]", scopeID, query); + string[] words = query.Split(new char[] { ' ' }); for (int i = 0; i < words.Length; i++) diff --git a/OpenSim/Framework/Serialization/External/OspResolver.cs b/OpenSim/Framework/Serialization/External/OspResolver.cs index 7e3dd1b79b..d31d27c4a6 100644 --- a/OpenSim/Framework/Serialization/External/OspResolver.cs +++ b/OpenSim/Framework/Serialization/External/OspResolver.cs @@ -66,6 +66,8 @@ namespace OpenSim.Framework.Serialization UserAccount account = userService.GetUserAccount(UUID.Zero, userId); if (account != null) return MakeOspa(account.FirstName, account.LastName); +// else +// m_log.WarnFormat("[OSP RESOLVER]: No user account for {0}", userId); return null; } @@ -77,6 +79,8 @@ namespace OpenSim.Framework.Serialization /// public static string MakeOspa(string firstName, string lastName) { +// m_log.DebugFormat("[OSP RESOLVER]: Making OSPA for {0} {1}", firstName, lastName); + return OSPA_PREFIX + OSPA_NAME_KEY + OSPA_PAIR_SEPARATOR + firstName + OSPA_NAME_VALUE_SEPARATOR + lastName; } @@ -97,7 +101,10 @@ namespace OpenSim.Framework.Serialization public static UUID ResolveOspa(string ospa, IUserAccountService userService) { if (!ospa.StartsWith(OSPA_PREFIX)) - return UUID.Zero; + { +// m_log.DebugFormat("[OSP RESOLVER]: ResolveOspa() got unrecognized format [{0}]", ospa); + return UUID.Zero; + } // m_log.DebugFormat("[OSP RESOLVER]: Resolving {0}", ospa); @@ -161,7 +168,17 @@ namespace OpenSim.Framework.Serialization UserAccount account = userService.GetUserAccount(UUID.Zero, firstName, lastName); if (account != null) + { +// m_log.DebugFormat( +// "[OSP RESOLVER]: Found user account with uuid {0} for {1} {2}", +// account.PrincipalID, firstName, lastName); + return account.PrincipalID; + } +// else +// { +// m_log.DebugFormat("[OSP RESOLVER]: No resolved OSPA user account for {0}", name); +// } // XXX: Disable temporary user profile creation for now as implementation is incomplete - justincc /* diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 603070614c..7849d88320 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -400,6 +400,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.UserAccountService); if (UUID.Zero != ospResolvedId) // The user exists in this grid { +// m_log.DebugFormat("[INVENTORY ARCHIVER]: Found creator {0} via OSPA resolution", ospResolvedId); + item.CreatorIdAsUuid = ospResolvedId; // XXX: For now, don't preserve the OSPA in the creator id (which actually gets persisted to the diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 8a84c7a2d9..de9550557b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -97,6 +97,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests protected void ConstructDefaultIarBytesForTestLoad() { +// log4net.Config.XmlConfigurator.Configure(); + + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); MemoryStream archiveWriteStream = new MemoryStream(); @@ -106,14 +111,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.Name = m_item1Name; item1.AssetID = UUID.Random(); item1.GroupID = UUID.Random(); - //item1.CreatorId = OspResolver.MakeOspa(m_ua2.FirstName, m_ua2.LastName); - //item1.CreatorId = userUuid.ToString(); - item1.CreatorId = m_ua2.PrincipalID.ToString(); + item1.CreatorIdAsUuid = m_ua2.PrincipalID; item1.Owner = UUID.Zero; - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); - string item1FileName = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), scene.UserAccountService)); @@ -390,7 +390,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests public void TestLoadIarV0_1ExistingUsers() { TestHelper.InMethod(); - //log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); SerialiserModule serialiserModule = new SerialiserModule(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(); @@ -414,9 +414,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // Assert.That( // foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), // "Loaded item non-uuid creator doesn't match original"); - Assert.That( - foundItem1.CreatorId, Is.EqualTo(m_ua2.PrincipalID.ToString()), - "Loaded item non-uuid creator doesn't match original"); +// Assert.That( +// foundItem1.CreatorId, Is.EqualTo(m_ua2.PrincipalID.ToString()), +// "Loaded item non-uuid creator doesn't match original"); Assert.That( foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua2.PrincipalID), @@ -529,64 +529,29 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// embedded creators do not exist in the system /// - /// - /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature - /// (as tested in the a later commented out test) - /// This test is currently disabled [Test] public void TestLoadIarV0_1AbsentUsers() { TestHelper.InMethod(); - //log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); - string userFirstName = "Charlie"; - string userLastName = "Chan"; - UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); - string userItemCreatorFirstName = "Bat"; - string userItemCreatorLastName = "Man"; - //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); - - string itemName = "b.lsl"; - string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); - - MemoryStream archiveWriteStream = new MemoryStream(); - TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); - - InventoryItemBase item1 = new InventoryItemBase(); - item1.Name = itemName; - item1.AssetID = UUID.Random(); - item1.GroupID = UUID.Random(); - item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); - //item1.CreatorId = userUuid.ToString(); - //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; - item1.Owner = UUID.Zero; - - string item1FileName - = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); - tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), null)); - tar.Close(); - - MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); SerialiserModule serialiserModule = new SerialiserModule(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene Scene scene = SceneSetupHelpers.SetupScene("inventory"); - SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userUuid, "meowfood"); - archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password"); + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "password", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userUuid, itemName); + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); // Assert.That( // foundItem1.CreatorId, Is.EqualTo(userUuid), // "Loaded item non-uuid creator doesn't match that of the loading user"); Assert.That( - foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), + foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); } diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 5be70bc710..08cc7c5fcd 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -304,12 +304,12 @@ namespace OpenSim.Tests.Common.Setup config.Configs["UserAccountService"].Set( "LocalServiceModule", "OpenSim.Services.UserAccountService.dll:UserAccountService"); - if (m_userAccountService == null) - { +// if (m_userAccountService == null) +// { ISharedRegionModule userAccountService = new LocalUserAccountServicesConnector(); userAccountService.Initialise(config); m_userAccountService = userAccountService; - } +// } m_userAccountService.AddRegion(testScene); m_userAccountService.RegionLoaded(testScene); From f375a5e9cbe96b0a07c52f27b0a4b2b620e5d6d8 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 01:31:47 +0000 Subject: [PATCH 110/192] Simplify SceneSetupHelpers class by removing all code which was originally preserving service instances between tests. This wasn't being used anyway and just leads to hard to diagnose test failures. --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 93 ++++++++----------- 1 file changed, 40 insertions(+), 53 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 08cc7c5fcd..2aeafc823f 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -59,19 +59,14 @@ namespace OpenSim.Tests.Common.Setup { // These static variables in order to allow regions to be linked by shared modules and same // CommunicationsManager. - private static ISharedRegionModule m_assetService = null; -// private static ISharedRegionModule m_authenticationService = null; private static ISharedRegionModule m_inventoryService = null; - private static ISharedRegionModule m_gridService = null; - private static ISharedRegionModule m_userAccountService = null; - private static ISharedRegionModule m_presenceService = null; /// /// Set up a test scene /// - /// + /// /// Automatically starts service threads, as would the normal runtime. - /// + /// /// public static TestScene SetupScene() { @@ -156,10 +151,7 @@ namespace OpenSim.Tests.Common.Setup testScene.AddModule(godsModule.Name, godsModule); realServices = realServices.ToLower(); - if (realServices.Contains("asset")) - StartAssetService(testScene, true); - else - StartAssetService(testScene, false); + LocalAssetServicesConnector assetService = StartAssetService(testScene, realServices.Contains("asset")); // For now, always started a 'real' authentication service StartAuthenticationService(testScene, true); @@ -169,14 +161,15 @@ namespace OpenSim.Tests.Common.Setup else StartInventoryService(testScene, false); - StartGridService(testScene, true); - StartUserAccountService(testScene); - StartPresenceService(testScene); + StartGridService(testScene, true); + LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); + LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); m_inventoryService.PostInitialise(); - m_assetService.PostInitialise(); - m_userAccountService.PostInitialise(); - m_presenceService.PostInitialise(); + assetService.PostInitialise(); + userAccountService.PostInitialise(); + presenceService.PostInitialise(); + testScene.RegionInfo.EstateSettings.EstateOwner = UUID.Random(); testScene.SetModuleInterfaces(); @@ -191,11 +184,7 @@ namespace OpenSim.Tests.Common.Setup // It's really not a good idea to use static variables as they carry over between tests, leading to // problems that are extremely hard to debug. Really, these static fields need to be eliminated - // tests using multiple regions that need to share modules need to find another solution. - m_assetService = null; m_inventoryService = null; - m_gridService = null; - m_userAccountService = null; - m_presenceService = null; testScene.RegionInfo.EstateSettings = new EstateSettings(); testScene.LoginsDisabled = false; @@ -203,9 +192,9 @@ namespace OpenSim.Tests.Common.Setup return testScene; } - private static void StartAssetService(Scene testScene, bool real) + private static LocalAssetServicesConnector StartAssetService(Scene testScene, bool real) { - ISharedRegionModule assetService = new LocalAssetServicesConnector(); + LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); config.AddConfig("AssetService"); @@ -219,7 +208,8 @@ namespace OpenSim.Tests.Common.Setup assetService.AddRegion(testScene); assetService.RegionLoaded(testScene); testScene.AddRegionModule(assetService.Name, assetService); - m_assetService = assetService; + + return assetService; } private static void StartAuthenticationService(Scene testScene, bool real) @@ -268,7 +258,7 @@ namespace OpenSim.Tests.Common.Setup m_inventoryService = inventoryService; } - private static void StartGridService(Scene testScene, bool real) + private static LocalGridServicesConnector StartGridService(Scene testScene, bool real) { IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); @@ -277,24 +267,25 @@ namespace OpenSim.Tests.Common.Setup config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll:NullRegionData"); if (real) config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); - if (m_gridService == null) - { - ISharedRegionModule gridService = new LocalGridServicesConnector(); - gridService.Initialise(config); - m_gridService = gridService; - } + + LocalGridServicesConnector gridService = new LocalGridServicesConnector(); + gridService.Initialise(config); + //else // config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestGridService"); - m_gridService.AddRegion(testScene); - m_gridService.RegionLoaded(testScene); + gridService.AddRegion(testScene); + gridService.RegionLoaded(testScene); //testScene.AddRegionModule(m_gridService.Name, m_gridService); + + return gridService; } /// /// Start a user account service /// /// - private static void StartUserAccountService(Scene testScene) + /// + private static LocalUserAccountServicesConnector StartUserAccountService(Scene testScene) { IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); @@ -304,23 +295,21 @@ namespace OpenSim.Tests.Common.Setup config.Configs["UserAccountService"].Set( "LocalServiceModule", "OpenSim.Services.UserAccountService.dll:UserAccountService"); -// if (m_userAccountService == null) -// { - ISharedRegionModule userAccountService = new LocalUserAccountServicesConnector(); - userAccountService.Initialise(config); - m_userAccountService = userAccountService; -// } + LocalUserAccountServicesConnector userAccountService = new LocalUserAccountServicesConnector(); + userAccountService.Initialise(config); - m_userAccountService.AddRegion(testScene); - m_userAccountService.RegionLoaded(testScene); - testScene.AddRegionModule(m_userAccountService.Name, m_userAccountService); + userAccountService.AddRegion(testScene); + userAccountService.RegionLoaded(testScene); + testScene.AddRegionModule(userAccountService.Name, userAccountService); + + return userAccountService; } /// /// Start a presence service /// /// - private static void StartPresenceService(Scene testScene) + private static LocalPresenceServicesConnector StartPresenceService(Scene testScene) { IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); @@ -330,16 +319,14 @@ namespace OpenSim.Tests.Common.Setup config.Configs["PresenceService"].Set( "LocalServiceModule", "OpenSim.Services.PresenceService.dll:PresenceService"); - if (m_presenceService == null) - { - ISharedRegionModule presenceService = new LocalPresenceServicesConnector(); - presenceService.Initialise(config); - m_presenceService = presenceService; - } + LocalPresenceServicesConnector presenceService = new LocalPresenceServicesConnector(); + presenceService.Initialise(config); - m_presenceService.AddRegion(testScene); - m_presenceService.RegionLoaded(testScene); - testScene.AddRegionModule(m_presenceService.Name, m_presenceService); + presenceService.AddRegion(testScene); + presenceService.RegionLoaded(testScene); + testScene.AddRegionModule(presenceService.Name, presenceService); + + return presenceService; } /// From 2fa8fc505223cbd2b6e327fe946748c717dda3b5 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 01:37:31 +0000 Subject: [PATCH 111/192] remove inventory service preserving code from SceneSetupHelpers too --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 47 ++++--------------- 1 file changed, 10 insertions(+), 37 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 2aeafc823f..aa4b285981 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -57,10 +57,6 @@ namespace OpenSim.Tests.Common.Setup /// public class SceneSetupHelpers { - // These static variables in order to allow regions to be linked by shared modules and same - // CommunicationsManager. - private static ISharedRegionModule m_inventoryService = null; - /// /// Set up a test scene /// @@ -81,24 +77,9 @@ namespace OpenSim.Tests.Common.Setup /// public static TestScene SetupScene(String realServices) { - return SetupScene( - "Unit test region", UUID.Random(), 1000, 1000, realServices); + return SetupScene("Unit test region", UUID.Random(), 1000, 1000, realServices); } - // REFACTORING PROBLEM. No idea what the difference is with the previous one - ///// - ///// Set up a test scene - ///// - ///// - ///// Starts real inventory and asset services, as opposed to mock ones, if true - ///// This should be the same if simulating two scenes within a standalone - ///// - //public static TestScene SetupScene(String realServices) - //{ - // return SetupScene( - // "Unit test region", UUID.Random(), 1000, 1000, ""); - //} - /// /// Set up a test scene /// @@ -110,7 +91,7 @@ namespace OpenSim.Tests.Common.Setup /// public static TestScene SetupScene(string name, UUID id, uint x, uint y) { - return SetupScene(name, id, x, y,""); + return SetupScene(name, id, x, y, ""); } /// @@ -156,16 +137,12 @@ namespace OpenSim.Tests.Common.Setup // For now, always started a 'real' authentication service StartAuthenticationService(testScene, true); - if (realServices.Contains("inventory")) - StartInventoryService(testScene, true); - else - StartInventoryService(testScene, false); - + LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene, realServices.Contains("inventory")); StartGridService(testScene, true); LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); - m_inventoryService.PostInitialise(); + inventoryService.PostInitialise(); assetService.PostInitialise(); userAccountService.PostInitialise(); presenceService.PostInitialise(); @@ -181,11 +158,6 @@ namespace OpenSim.Tests.Common.Setup testScene.PhysicsScene = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", new IniConfigSource(), "test"); - // It's really not a good idea to use static variables as they carry over between tests, leading to - // problems that are extremely hard to debug. Really, these static fields need to be eliminated - - // tests using multiple regions that need to share modules need to find another solution. - m_inventoryService = null; - testScene.RegionInfo.EstateSettings = new EstateSettings(); testScene.LoginsDisabled = false; @@ -233,9 +205,9 @@ namespace OpenSim.Tests.Common.Setup //m_authenticationService = service; } - private static void StartInventoryService(Scene testScene, bool real) + private static LocalInventoryServicesConnector StartInventoryService(Scene testScene, bool real) { - ISharedRegionModule inventoryService = new LocalInventoryServicesConnector(); + LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); config.AddConfig("InventoryService"); @@ -255,7 +227,8 @@ namespace OpenSim.Tests.Common.Setup inventoryService.AddRegion(testScene); inventoryService.RegionLoaded(testScene); testScene.AddRegionModule(inventoryService.Name, inventoryService); - m_inventoryService = inventoryService; + + return inventoryService; } private static LocalGridServicesConnector StartGridService(Scene testScene, bool real) @@ -423,7 +396,7 @@ namespace OpenSim.Tests.Common.Setup /// /// Add a root agent. /// - /// + /// /// This function /// /// 1) Tells the scene that an agent is coming. Normally, the login service (local if standalone, from the @@ -434,7 +407,7 @@ namespace OpenSim.Tests.Common.Setup /// /// This function performs actions equivalent with notifying the scene that an agent is /// coming and then actually connecting the agent to the scene. The one step missed out is the very first - /// + /// /// /// /// From ae507bb0600774624f876c4562391cec0111eee8 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 01:53:27 +0000 Subject: [PATCH 112/192] Split out path tests from InventoryArchiveTests. Factor common code into test case parent --- .../Tests/InventoryArchiveTestCase.cs | 124 ++++ .../Archiver/Tests/InventoryArchiverTests.cs | 533 +----------------- .../Inventory/Archiver/Tests/PathTests.cs | 436 ++++++++++++++ 3 files changed, 562 insertions(+), 531 deletions(-) create mode 100644 OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs create mode 100644 OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs new file mode 100644 index 0000000000..023c452a23 --- /dev/null +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -0,0 +1,124 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Threading; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenMetaverse; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Serialization; +using OpenSim.Framework.Serialization.External; +using OpenSim.Framework.Communications; +using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver; +using OpenSim.Region.CoreModules.World.Serialiser; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests +{ + [TestFixture] + public class InventoryArchiveTestCase + { + protected ManualResetEvent mre = new ManualResetEvent(false); + + /// + /// A raw array of bytes that we'll use to create an IAR memory stream suitable for isolated use in each test. + /// + protected byte[] m_iarStreamBytes; + + /// + /// Stream of data representing a common IAR for load tests. + /// + protected MemoryStream m_iarStream; + + protected UserAccount m_ua1 + = new UserAccount { + PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), + FirstName = "Mr", + LastName = "Tiddles" }; + protected UserAccount m_ua2 + = new UserAccount { + PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), + FirstName = "Lord", + LastName = "Lucan" }; + protected string m_item1Name = "b.lsl"; + + [SetUp] + public void SetUp() + { + m_iarStream = new MemoryStream(m_iarStreamBytes); + } + + [TestFixtureSetUp] + public void FixtureSetup() + { + ConstructDefaultIarBytesForTestLoad(); + } + + protected void ConstructDefaultIarBytesForTestLoad() + { +// log4net.Config.XmlConfigurator.Configure(); + + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + + string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); + + MemoryStream archiveWriteStream = new MemoryStream(); + TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = m_item1Name; + item1.AssetID = UUID.Random(); + item1.GroupID = UUID.Random(); + item1.CreatorIdAsUuid = m_ua2.PrincipalID; + item1.Owner = UUID.Zero; + + string item1FileName + = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); + tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), scene.UserAccountService)); + tar.Close(); + m_iarStreamBytes = archiveWriteStream.ToArray(); + } + + protected void SaveCompleted( + Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, + Exception reportedException) + { + mre.Set(); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index de9550557b..edbbd81106 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -50,195 +50,8 @@ using OpenSim.Tests.Common.Setup; namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests { [TestFixture] - public class InventoryArchiverTests - { - protected ManualResetEvent mre = new ManualResetEvent(false); - - /// - /// A raw array of bytes that we'll use to create an IAR memory stream suitable for isolated use in each test. - /// - protected byte[] m_iarStreamBytes; - - /// - /// Stream of data representing a common IAR for load tests. - /// - protected MemoryStream m_iarStream; - - protected UserAccount m_ua1 - = new UserAccount { - PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), - FirstName = "Mr", - LastName = "Tiddles" }; - protected UserAccount m_ua2 - = new UserAccount { - PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), - FirstName = "Lord", - LastName = "Lucan" }; - string m_item1Name = "b.lsl"; - - private void SaveCompleted( - Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, - Exception reportedException) - { - mre.Set(); - } - - [SetUp] - public void SetUp() - { - m_iarStream = new MemoryStream(m_iarStreamBytes); - } - - [TestFixtureSetUp] - public void FixtureSetup() - { - ConstructDefaultIarBytesForTestLoad(); - } - - protected void ConstructDefaultIarBytesForTestLoad() - { -// log4net.Config.XmlConfigurator.Configure(); - - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); - - string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); - - MemoryStream archiveWriteStream = new MemoryStream(); - TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); - - InventoryItemBase item1 = new InventoryItemBase(); - item1.Name = m_item1Name; - item1.AssetID = UUID.Random(); - item1.GroupID = UUID.Random(); - item1.CreatorIdAsUuid = m_ua2.PrincipalID; - item1.Owner = UUID.Zero; - - string item1FileName - = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); - tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), scene.UserAccountService)); - tar.Close(); - m_iarStreamBytes = archiveWriteStream.ToArray(); - } - - /// - /// Test saving an inventory path to a V0.1 OpenSim Inventory Archive - /// (subject to change since there is no fixed format yet). - /// - [Test] - public void TestSavePathToIarV0_1() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); - SceneSetupHelpers.SetupSceneModules(scene, archiverModule); - - // Create user - string userFirstName = "Jock"; - string userLastName = "Stirrup"; - string userPassword = "troll"; - UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); - UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword); - - // Create asset - SceneObjectGroup object1; - SceneObjectPart part1; - { - string partName = "My Little Dog Object"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - Vector3 offsetPosition = new Vector3(5, 10, 15); - - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - scene.AddNewSceneObject(object1, false); - } - - UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); - AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); - scene.AssetService.Store(asset1); - - // Create item - UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); - InventoryItemBase item1 = new InventoryItemBase(); - item1.Name = "My Little Dog"; - item1.AssetID = asset1.FullID; - item1.ID = item1Id; - InventoryFolderBase objsFolder - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0]; - item1.Folder = objsFolder.ID; - scene.AddInventoryItem(item1); - - MemoryStream archiveWriteStream = new MemoryStream(); - archiverModule.OnInventoryArchiveSaved += SaveCompleted; - - // Test saving a particular path - mre.Reset(); - archiverModule.ArchiveInventory( - Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); - mre.WaitOne(60000, false); - - byte[] archive = archiveWriteStream.ToArray(); - MemoryStream archiveReadStream = new MemoryStream(archive); - TarArchiveReader tar = new TarArchiveReader(archiveReadStream); - - //bool gotControlFile = false; - bool gotObject1File = false; - //bool gotObject2File = false; - string expectedObject1FileName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1); - string expectedObject1FilePath = string.Format( - "{0}{1}{2}", - ArchiveConstants.INVENTORY_PATH, - InventoryArchiveWriteRequest.CreateArchiveFolderName(objsFolder), - expectedObject1FileName); - - string filePath; - TarArchiveReader.TarEntryType tarEntryType; - -// Console.WriteLine("Reading archive"); - - while (tar.ReadEntry(out filePath, out tarEntryType) != null) - { -// Console.WriteLine("Got {0}", filePath); - -// if (ArchiveConstants.CONTROL_FILE_PATH == filePath) -// { -// gotControlFile = true; -// } - - if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) - { -// string fileName = filePath.Remove(0, "Objects/".Length); -// -// if (fileName.StartsWith(part1.Name)) -// { - Assert.That(expectedObject1FilePath, Is.EqualTo(filePath)); - gotObject1File = true; -// } -// else if (fileName.StartsWith(part2.Name)) -// { -// Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); -// gotObject2File = true; -// } - } - } - -// Assert.That(gotControlFile, Is.True, "No control file in archive"); - Assert.That(gotObject1File, Is.True, "No item1 file in archive"); -// Assert.That(gotObject2File, Is.True, "No object2 file in archive"); - - // TODO: Test presence of more files and contents of files. - } - + public class InventoryArchiverTests : InventoryArchiveTestCase + { /// /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive /// (subject to change since there is no fixed format yet). @@ -356,30 +169,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // TODO: Test presence of more files and contents of files. } - /// - /// Test that things work when the load path specified starts with a slash - /// - [Test] - public void TestLoadIarPathStartsWithSlash() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - SerialiserModule serialiserModule = new SerialiserModule(); - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/Objects", "password", m_iarStream); - - InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath( - scene.InventoryService, m_ua1.PrincipalID, "/Objects/" + m_item1Name); - - Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1 in TestLoadIarFolderStartsWithSlash()"); - } - /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// an account exists with the creator name. @@ -443,88 +232,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); } - [Test] - public void TestIarV0_1WithEscapedChars() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - string itemName = "You & you are a mean/man/"; - string humanEscapedItemName = @"You & you are a mean\/man\/"; - string userPassword = "meowfood"; - - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); - SceneSetupHelpers.SetupSceneModules(scene, archiverModule); - - // Create user - string userFirstName = "Jock"; - string userLastName = "Stirrup"; - UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); - UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood"); - - // Create asset - SceneObjectGroup object1; - SceneObjectPart part1; - { - string partName = "part name"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - Vector3 offsetPosition = new Vector3(5, 10, 15); - - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - scene.AddNewSceneObject(object1, false); - } - - UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); - AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); - scene.AssetService.Store(asset1); - - // Create item - UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); - InventoryItemBase item1 = new InventoryItemBase(); - item1.Name = itemName; - item1.AssetID = asset1.FullID; - item1.ID = item1Id; - InventoryFolderBase objsFolder - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0]; - item1.Folder = objsFolder.ID; - scene.AddInventoryItem(item1); - - MemoryStream archiveWriteStream = new MemoryStream(); - archiverModule.OnInventoryArchiveSaved += SaveCompleted; - - mre.Reset(); - archiverModule.ArchiveInventory( - Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); - mre.WaitOne(60000, false); - - // LOAD ITEM - MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); - - archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); - - InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath( - scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); - - Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); -// Assert.That( -// foundItem1.CreatorId, Is.EqualTo(userUuid), -// "Loaded item non-uuid creator doesn't match that of the loading user"); - Assert.That( - foundItem1.Name, Is.EqualTo(itemName), - "Loaded item name doesn't match saved name"); - } - /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// embedded creators do not exist in the system @@ -554,241 +261,5 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); } - - /// - /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where - /// no account exists with the creator name - /// - /// Disabled since temporary profiles have not yet been implemented. - /// - //[Test] - //public void TestLoadIarV0_1TempProfiles() - //{ - // TestHelper.InMethod(); - - // //log4net.Config.XmlConfigurator.Configure(); - - // string userFirstName = "Dennis"; - // string userLastName = "Menace"; - // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000aaa"); - // string user2FirstName = "Walter"; - // string user2LastName = "Mitty"; - - // string itemName = "b.lsl"; - // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); - - // MemoryStream archiveWriteStream = new MemoryStream(); - // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); - - // InventoryItemBase item1 = new InventoryItemBase(); - // item1.Name = itemName; - // item1.AssetID = UUID.Random(); - // item1.GroupID = UUID.Random(); - // item1.CreatorId = OspResolver.MakeOspa(user2FirstName, user2LastName); - // item1.Owner = UUID.Zero; - - // string item1FileName - // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); - // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); - // tar.Close(); - - // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); - // SerialiserModule serialiserModule = new SerialiserModule(); - // InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene - // Scene scene = SceneSetupHelpers.SetupScene(); - // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; - - // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - // userAdminService.AddUser( - // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); - - // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "troll", archiveReadStream); - - // // Check that a suitable temporary user profile has been created. - // UserProfileData user2Profile - // = scene.CommsManager.UserService.GetUserProfile( - // OspResolver.HashName(user2FirstName + " " + user2LastName)); - // Assert.That(user2Profile, Is.Not.Null); - // Assert.That(user2Profile.FirstName == user2FirstName); - // Assert.That(user2Profile.SurName == user2LastName); - - // CachedUserInfo userInfo - // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); - // userInfo.OnInventoryReceived += InventoryReceived; - - // lock (this) - // { - // userInfo.FetchInventory(); - // Monitor.Wait(this, 60000); - // } - - // InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); - - // Assert.That(foundItem.CreatorId, Is.EqualTo(item1.CreatorId)); - // Assert.That( - // foundItem.CreatorIdAsUuid, Is.EqualTo(OspResolver.HashName(user2FirstName + " " + user2LastName))); - // Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); - - // Console.WriteLine("### Successfully completed {0} ###", MethodBase.GetCurrentMethod()); - //} - - /// - /// Test replication of an archive path to the user's inventory. - /// - [Test] - public void TestNewIarPath() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); - - Dictionary foldersCreated = new Dictionary(); - HashSet nodesLoaded = new HashSet(); - - string folder1Name = "1"; - string folder2aName = "2a"; - string folder2bName = "2b"; - - string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1Name, UUID.Random()); - string folder2aArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2aName, UUID.Random()); - string folder2bArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2bName, UUID.Random()); - - string iarPath1 = string.Join("", new string[] { folder1ArchiveName, folder2aArchiveName }); - string iarPath2 = string.Join("", new string[] { folder1ArchiveName, folder2bArchiveName }); - - { - // Test replication of path1 - new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) - .ReplicateArchivePathToUserInventory( - iarPath1, scene.InventoryService.GetRootFolder(ua1.PrincipalID), - foldersCreated, nodesLoaded); - - List folder1Candidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1Name); - Assert.That(folder1Candidates.Count, Is.EqualTo(1)); - - InventoryFolderBase folder1 = folder1Candidates[0]; - List folder2aCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2aName); - Assert.That(folder2aCandidates.Count, Is.EqualTo(1)); - } - - { - // Test replication of path2 - new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) - .ReplicateArchivePathToUserInventory( - iarPath2, scene.InventoryService.GetRootFolder(ua1.PrincipalID), - foldersCreated, nodesLoaded); - - List folder1Candidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1Name); - Assert.That(folder1Candidates.Count, Is.EqualTo(1)); - - InventoryFolderBase folder1 = folder1Candidates[0]; - - List folder2aCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2aName); - Assert.That(folder2aCandidates.Count, Is.EqualTo(1)); - - List folder2bCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2bName); - Assert.That(folder2bCandidates.Count, Is.EqualTo(1)); - } - } - - /// - /// Test replication of a partly existing archive path to the user's inventory. This should create - /// a duplicate path without the merge option. - /// - [Test] - public void TestPartExistingIarPath() - { - TestHelper.InMethod(); - //log4net.Config.XmlConfigurator.Configure(); - - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); - - string folder1ExistingName = "a"; - string folder2Name = "b"; - - InventoryFolderBase folder1 - = UserInventoryTestUtils.CreateInventoryFolder( - scene.InventoryService, ua1.PrincipalID, folder1ExistingName); - - string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random()); - string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); - - string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName }); - - new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) - .ReplicateArchivePathToUserInventory( - itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID), - new Dictionary(), new HashSet()); - - List folder1PostCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName); - Assert.That(folder1PostCandidates.Count, Is.EqualTo(2)); - - // FIXME: Temporarily, we're going to do something messy to make sure we pick up the created folder. - InventoryFolderBase folder1Post = null; - foreach (InventoryFolderBase folder in folder1PostCandidates) - { - if (folder.ID != folder1.ID) - { - folder1Post = folder; - break; - } - } -// Assert.That(folder1Post.ID, Is.EqualTo(folder1.ID)); - - List folder2PostCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1Post, "b"); - Assert.That(folder2PostCandidates.Count, Is.EqualTo(1)); - } - - /// - /// Test replication of a partly existing archive path to the user's inventory. This should create - /// a merged path. - /// - [Test] - public void TestMergeIarPath() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); - - string folder1ExistingName = "a"; - string folder2Name = "b"; - - InventoryFolderBase folder1 - = UserInventoryTestUtils.CreateInventoryFolder( - scene.InventoryService, ua1.PrincipalID, folder1ExistingName); - - string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random()); - string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); - - string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName }); - - new InventoryArchiveReadRequest(scene, ua1, folder1ExistingName, (Stream)null, true) - .ReplicateArchivePathToUserInventory( - itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID), - new Dictionary(), new HashSet()); - - List folder1PostCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName); - Assert.That(folder1PostCandidates.Count, Is.EqualTo(1)); - Assert.That(folder1PostCandidates[0].ID, Is.EqualTo(folder1.ID)); - - List folder2PostCandidates - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1PostCandidates[0], "b"); - Assert.That(folder2PostCandidates.Count, Is.EqualTo(1)); - } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs new file mode 100644 index 0000000000..34eeaf3672 --- /dev/null +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -0,0 +1,436 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Threading; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; +using OpenMetaverse; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Serialization; +using OpenSim.Framework.Serialization.External; +using OpenSim.Framework.Communications; +using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver; +using OpenSim.Region.CoreModules.World.Serialiser; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests +{ + [TestFixture] + public class PathTests : InventoryArchiveTestCase + { + /// + /// Test saving an inventory path to a V0.1 OpenSim Inventory Archive + /// (subject to change since there is no fixed format yet). + /// + [Test] + public void TestSavePathToIarV0_1() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); + + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule); + + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + string userPassword = "troll"; + UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword); + + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "My Little Dog Object"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + } + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); + scene.AssetService.Store(asset1); + + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = "My Little Dog"; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + InventoryFolderBase objsFolder + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0]; + item1.Folder = objsFolder.ID; + scene.AddInventoryItem(item1); + + MemoryStream archiveWriteStream = new MemoryStream(); + archiverModule.OnInventoryArchiveSaved += SaveCompleted; + + // Test saving a particular path + mre.Reset(); + archiverModule.ArchiveInventory( + Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); + mre.WaitOne(60000, false); + + byte[] archive = archiveWriteStream.ToArray(); + MemoryStream archiveReadStream = new MemoryStream(archive); + TarArchiveReader tar = new TarArchiveReader(archiveReadStream); + + //bool gotControlFile = false; + bool gotObject1File = false; + //bool gotObject2File = false; + string expectedObject1FileName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1); + string expectedObject1FilePath = string.Format( + "{0}{1}{2}", + ArchiveConstants.INVENTORY_PATH, + InventoryArchiveWriteRequest.CreateArchiveFolderName(objsFolder), + expectedObject1FileName); + + string filePath; + TarArchiveReader.TarEntryType tarEntryType; + +// Console.WriteLine("Reading archive"); + + while (tar.ReadEntry(out filePath, out tarEntryType) != null) + { +// Console.WriteLine("Got {0}", filePath); + +// if (ArchiveConstants.CONTROL_FILE_PATH == filePath) +// { +// gotControlFile = true; +// } + + if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) + { +// string fileName = filePath.Remove(0, "Objects/".Length); +// +// if (fileName.StartsWith(part1.Name)) +// { + Assert.That(expectedObject1FilePath, Is.EqualTo(filePath)); + gotObject1File = true; +// } +// else if (fileName.StartsWith(part2.Name)) +// { +// Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); +// gotObject2File = true; +// } + } + } + +// Assert.That(gotControlFile, Is.True, "No control file in archive"); + Assert.That(gotObject1File, Is.True, "No item1 file in archive"); +// Assert.That(gotObject2File, Is.True, "No object2 file in archive"); + + // TODO: Test presence of more files and contents of files. + } + + /// + /// Test that things work when the load path specified starts with a slash + /// + [Test] + public void TestLoadIarPathStartsWithSlash() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + SerialiserModule serialiserModule = new SerialiserModule(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password"); + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/Objects", "password", m_iarStream); + + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath( + scene.InventoryService, m_ua1.PrincipalID, "/Objects/" + m_item1Name); + + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1 in TestLoadIarFolderStartsWithSlash()"); + } + + [Test] + public void TestIarV0_1WithEscapedChars() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + string itemName = "You & you are a mean/man/"; + string humanEscapedItemName = @"You & you are a mean\/man\/"; + string userPassword = "meowfood"; + + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); + + Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule); + + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, "meowfood"); + + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "part name"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + } + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); + scene.AssetService.Store(asset1); + + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = itemName; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + InventoryFolderBase objsFolder + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0]; + item1.Folder = objsFolder.ID; + scene.AddInventoryItem(item1); + + MemoryStream archiveWriteStream = new MemoryStream(); + archiverModule.OnInventoryArchiveSaved += SaveCompleted; + + mre.Reset(); + archiverModule.ArchiveInventory( + Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); + mre.WaitOne(60000, false); + + // LOAD ITEM + MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); + + archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); + + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath( + scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); + + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); +// Assert.That( +// foundItem1.CreatorId, Is.EqualTo(userUuid), +// "Loaded item non-uuid creator doesn't match that of the loading user"); + Assert.That( + foundItem1.Name, Is.EqualTo(itemName), + "Loaded item name doesn't match saved name"); + } + + /// + /// Test replication of an archive path to the user's inventory. + /// + [Test] + public void TestNewIarPath() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); + + Dictionary foldersCreated = new Dictionary(); + HashSet nodesLoaded = new HashSet(); + + string folder1Name = "1"; + string folder2aName = "2a"; + string folder2bName = "2b"; + + string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1Name, UUID.Random()); + string folder2aArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2aName, UUID.Random()); + string folder2bArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2bName, UUID.Random()); + + string iarPath1 = string.Join("", new string[] { folder1ArchiveName, folder2aArchiveName }); + string iarPath2 = string.Join("", new string[] { folder1ArchiveName, folder2bArchiveName }); + + { + // Test replication of path1 + new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) + .ReplicateArchivePathToUserInventory( + iarPath1, scene.InventoryService.GetRootFolder(ua1.PrincipalID), + foldersCreated, nodesLoaded); + + List folder1Candidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1Name); + Assert.That(folder1Candidates.Count, Is.EqualTo(1)); + + InventoryFolderBase folder1 = folder1Candidates[0]; + List folder2aCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2aName); + Assert.That(folder2aCandidates.Count, Is.EqualTo(1)); + } + + { + // Test replication of path2 + new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) + .ReplicateArchivePathToUserInventory( + iarPath2, scene.InventoryService.GetRootFolder(ua1.PrincipalID), + foldersCreated, nodesLoaded); + + List folder1Candidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1Name); + Assert.That(folder1Candidates.Count, Is.EqualTo(1)); + + InventoryFolderBase folder1 = folder1Candidates[0]; + + List folder2aCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2aName); + Assert.That(folder2aCandidates.Count, Is.EqualTo(1)); + + List folder2bCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, folder2bName); + Assert.That(folder2bCandidates.Count, Is.EqualTo(1)); + } + } + + /// + /// Test replication of a partly existing archive path to the user's inventory. This should create + /// a duplicate path without the merge option. + /// + [Test] + public void TestPartExistingIarPath() + { + TestHelper.InMethod(); + //log4net.Config.XmlConfigurator.Configure(); + + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); + + string folder1ExistingName = "a"; + string folder2Name = "b"; + + InventoryFolderBase folder1 + = UserInventoryTestUtils.CreateInventoryFolder( + scene.InventoryService, ua1.PrincipalID, folder1ExistingName); + + string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random()); + string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); + + string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName }); + + new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false) + .ReplicateArchivePathToUserInventory( + itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID), + new Dictionary(), new HashSet()); + + List folder1PostCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName); + Assert.That(folder1PostCandidates.Count, Is.EqualTo(2)); + + // FIXME: Temporarily, we're going to do something messy to make sure we pick up the created folder. + InventoryFolderBase folder1Post = null; + foreach (InventoryFolderBase folder in folder1PostCandidates) + { + if (folder.ID != folder1.ID) + { + folder1Post = folder; + break; + } + } +// Assert.That(folder1Post.ID, Is.EqualTo(folder1.ID)); + + List folder2PostCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1Post, "b"); + Assert.That(folder2PostCandidates.Count, Is.EqualTo(1)); + } + + /// + /// Test replication of a partly existing archive path to the user's inventory. This should create + /// a merged path. + /// + [Test] + public void TestMergeIarPath() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); + + string folder1ExistingName = "a"; + string folder2Name = "b"; + + InventoryFolderBase folder1 + = UserInventoryTestUtils.CreateInventoryFolder( + scene.InventoryService, ua1.PrincipalID, folder1ExistingName); + + string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random()); + string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); + + string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName }); + + new InventoryArchiveReadRequest(scene, ua1, folder1ExistingName, (Stream)null, true) + .ReplicateArchivePathToUserInventory( + itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID), + new Dictionary(), new HashSet()); + + List folder1PostCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName); + Assert.That(folder1PostCandidates.Count, Is.EqualTo(1)); + Assert.That(folder1PostCandidates[0].ID, Is.EqualTo(folder1.ID)); + + List folder2PostCandidates + = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1PostCandidates[0], "b"); + Assert.That(folder2PostCandidates.Count, Is.EqualTo(1)); + } + } +} \ No newline at end of file From 3e5b1a1de5931afc431fe55db4bd3b5e7f0637df Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 20:53:35 +0000 Subject: [PATCH 113/192] Update MySql.Data.dll to version 6.3.6. This version fixes a bug so that MySqlCommand.CommandTimeout = 0 now correctly sets an infinite command timeout. This might help with failures on long-running migrations. The mysql.data.dll v2 is used from the mysql package (as opposed to v4). The v4 version (probably standing for NET 4.0) does not work under mono 2.6.7, which is still commonly used. --- bin/MySql.Data.dll | Bin 360448 -> 353792 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/MySql.Data.dll b/bin/MySql.Data.dll index c28c618f236031e21d0cea03b22b6e8790107df4..992aa5621cc13880d2c16d9527816c58193d3a26 100644 GIT binary patch literal 353792 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Ξ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 ey literal 360448 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 I|AQ3xzpOfD3;+NC From 20aeace8d75fa5a1a3d0ba1d3d9ab6cdad2cf088 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 22:03:12 +0000 Subject: [PATCH 114/192] Add log messages on teleport failure to better pin down the cause. --- .../Framework/EntityTransfer/EntityTransferModule.cs | 12 +++++++++--- .../Simulation/SimulationServiceConnector.cs | 6 +++--- OpenSim/Services/Interfaces/ISimulationService.cs | 7 +++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 95c771e60f..c88be7ddb0 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -399,6 +399,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if (!UpdateAgent(reg, finalDestination, agent)) { // Region doesn't take it + m_log.WarnFormat( + "[ENTITY TRANSFER MODULE]: UpdateAgent failed on teleport of {0} to {1}. Returning avatar to source region.", + sp.Name, finalDestination.RegionName); + Fail(sp, finalDestination); return; } @@ -425,16 +429,18 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer // that the client contacted the destination before we send the attachments and close things here. if (!WaitForCallback(sp.UUID)) { - Fail(sp, finalDestination); + m_log.WarnFormat( + "[ENTITY TRANSFER MODULE]: Teleport of {0} to {1} failed due to no callback from destination region. Returning avatar to source region.", + sp.Name, finalDestination.RegionName); + + Fail(sp, finalDestination); return; } - // CrossAttachmentsIntoNewRegion is a synchronous call. We shouldn't need to wait after it CrossAttachmentsIntoNewRegion(finalDestination, sp, true); // Well, this is it. The agent is over there. - KillEntity(sp.Scene, sp.LocalId); // May need to logout or other cleanup diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index 463b2fbc7f..93b3ae62a9 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -79,9 +79,6 @@ namespace OpenSim.Services.Connectors.Simulation return "agent/"; } - /// - /// - /// public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string reason) { // m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: CreateAgent start"); @@ -109,6 +106,9 @@ namespace OpenSim.Services.Connectors.Simulation if (result["Success"].AsBoolean()) return true; + m_log.WarnFormat( + "[REMOTE SIMULATION CONNECTOR]: Failed to create agent {0} {1} at remote simulator {1}", + aCircuit.firstname, aCircuit.lastname, destination.RegionName); reason = result["Message"] != null ? result["Message"].AsString() : "error"; return false; } diff --git a/OpenSim/Services/Interfaces/ISimulationService.cs b/OpenSim/Services/Interfaces/ISimulationService.cs index b7967578ce..55c9cc5717 100644 --- a/OpenSim/Services/Interfaces/ISimulationService.cs +++ b/OpenSim/Services/Interfaces/ISimulationService.cs @@ -40,6 +40,13 @@ namespace OpenSim.Services.Interfaces #region Agents + /// + /// Ask the simulator hosting the destination to create an agent on that region. + /// + /// + /// + /// + /// Reason message in the event of a failure. bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string reason); /// From 9456bb77fbf794bb6fc2808e6cfd69c9bb1d1326 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 23:25:24 +0000 Subject: [PATCH 115/192] Upgrade nunit.framework.dll to version 2.5.9. Fix up tests appropriately. This version removes the NUnit.Framework.SyntaxHelpers namespace, so any modules with their own tests will need to delete this using statement. --- OpenSim/Data/Tests/AssetTests.cs | 18 +----------------- OpenSim/Data/Tests/EstateTests.cs | 15 +-------------- OpenSim/Data/Tests/InventoryTests.cs | 12 ------------ .../Data/Tests/PropertyCompareConstraint.cs | 1 - OpenSim/Data/Tests/PropertyScrambler.cs | 2 -- OpenSim/Data/Tests/RegionTests.cs | 11 ----------- .../Framework/Servers/Tests/OSHttpTests.cs | 1 - OpenSim/Framework/Tests/AnimationTests.cs | 1 - .../Framework/Tests/PrimeNumberHelperTests.cs | 3 --- OpenSim/Framework/Tests/UtilTest.cs | 1 - .../Tests/InventoryArchiveTestCase.cs | 1 - .../Archiver/Tests/InventoryArchiverTests.cs | 1 - .../Inventory/Archiver/Tests/PathTests.cs | 1 - .../Grid/Tests/GridConnectorsTests.cs | 1 - .../Presence/Tests/PresenceConnectorsTests.cs | 1 - .../World/Archiver/Tests/ArchiverTests.cs | 1 - .../World/Media/Moap/Tests/MoapTests.cs | 1 - .../World/Serialiser/Tests/SerialiserTests.cs | 1 - .../Framework/Scenes/Tests/AttachmentTests.cs | 1 - .../Scenes/Tests/EntityManagerTests.cs | 1 - .../Framework/Scenes/Tests/SceneGraphTests.cs | 1 - .../Scenes/Tests/SceneObjectBasicTests.cs | 1 - .../Scenes/Tests/SceneObjectDeRezTests.cs | 1 - .../Scenes/Tests/SceneObjectLinkingTests.cs | 1 - .../Scenes/Tests/SceneObjectUserGroupTests.cs | 1 - .../Scenes/Tests/ScenePresenceTests.cs | 1 - .../Framework/Scenes/Tests/SceneTests.cs | 1 - .../Scenes/Tests/StandaloneTeleportTests.cs | 1 - .../Scenes/Tests/TaskInventoryTests.cs | 1 - .../Scenes/Tests/UuidGathererTests.cs | 1 - .../XmlRpcGroups/Tests/GroupsModuleTests.cs | 1 - .../Tests/Common/DoubleToleranceConstraint.cs | 1 + OpenSim/Tests/Common/TestHelper.cs | 3 +-- .../Tests/Common/VectorToleranceConstraint.cs | 1 + bin/nunit.framework.dll | Bin 77824 -> 135168 bytes 35 files changed, 5 insertions(+), 86 deletions(-) diff --git a/OpenSim/Data/Tests/AssetTests.cs b/OpenSim/Data/Tests/AssetTests.cs index 800b9bfba2..32f74a9b1e 100644 --- a/OpenSim/Data/Tests/AssetTests.cs +++ b/OpenSim/Data/Tests/AssetTests.cs @@ -35,10 +35,6 @@ using OpenSim.Framework; using System.Data.Common; using log4net; -#if !NUNIT25 -using NUnit.Framework.SyntaxHelpers; -#endif - // DBMS-specific: using MySql.Data.MySqlClient; using OpenSim.Data.MySQL; @@ -51,15 +47,6 @@ using OpenSim.Data.SQLite; namespace OpenSim.Data.Tests { - -#if NUNIT25 - - [TestFixture(typeof(MySqlConnection), typeof(MySQLAssetData), Description="Basic Asset store tests (MySQL)")] - [TestFixture(typeof(SqlConnection), typeof(MSSQLAssetData), Description = "Basic Asset store tests (MS SQL Server)")] - [TestFixture(typeof(SqliteConnection), typeof(SQLiteAssetData), Description = "Basic Asset store tests (SQLite)")] - -#else - [TestFixture(Description = "Asset store tests (SQLite)")] public class SQLiteAssetTests : AssetTests { @@ -75,9 +62,6 @@ namespace OpenSim.Data.Tests { } -#endif - - public class AssetTests : BasicDataServiceTest where TConn : DbConnection, new() where TAssetData : AssetDataBase, new() @@ -218,4 +202,4 @@ namespace OpenSim.Data.Tests Assert.That(a3a, Constraints.PropertyCompareConstraint(a3)); } } -} +} \ No newline at end of file diff --git a/OpenSim/Data/Tests/EstateTests.cs b/OpenSim/Data/Tests/EstateTests.cs index fbf8ba658e..3354e284da 100644 --- a/OpenSim/Data/Tests/EstateTests.cs +++ b/OpenSim/Data/Tests/EstateTests.cs @@ -28,7 +28,6 @@ using System; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; @@ -49,15 +48,6 @@ using OpenSim.Data.SQLite; namespace OpenSim.Data.Tests { - -#if NUNIT25 - - [TestFixture(typeof(MySqlConnection), typeof(MySQLEstateStore), Description = "Estate store tests (MySQL)")] - [TestFixture(typeof(SqlConnection), typeof(MSSQLEstateStore), Description = "Estate store tests (MS SQL Server)")] - [TestFixture(typeof(SqliteConnection), typeof(SQLiteEstateStore), Description = "Estate store tests (SQLite)")] - -#else - [TestFixture(Description = "Estate store tests (SQLite)")] public class SQLiteEstateTests : EstateTests { @@ -73,8 +63,6 @@ namespace OpenSim.Data.Tests { } -#endif - public class EstateTests : BasicDataServiceTest where TConn : DbConnection, new() where TEstateStore : class, IEstateDataStore, new() @@ -520,6 +508,5 @@ namespace OpenSim.Data.Tests } #endregion - } -} +} \ No newline at end of file diff --git a/OpenSim/Data/Tests/InventoryTests.cs b/OpenSim/Data/Tests/InventoryTests.cs index 9c2a2d6fd5..758f9704b7 100644 --- a/OpenSim/Data/Tests/InventoryTests.cs +++ b/OpenSim/Data/Tests/InventoryTests.cs @@ -25,12 +25,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -// #define NUNIT25 - using System; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using log4net; @@ -49,14 +46,6 @@ using OpenSim.Data.SQLite; namespace OpenSim.Data.Tests { -#if NUNIT25 - - [TestFixture(typeof(SqliteConnection), typeof(SQLiteInventoryStore), Description = "Inventory store tests (SQLite)")] - [TestFixture(typeof(MySqlConnection), typeof(MySQLInventoryData), Description = "Inventory store tests (MySQL)")] - [TestFixture(typeof(SqlConnection), typeof(MSSQLInventoryData), Description = "Inventory store tests (MS SQL Server)")] - -#else - [TestFixture(Description = "Inventory store tests (SQLite)")] public class SQLiteInventoryTests : InventoryTests { @@ -71,7 +60,6 @@ namespace OpenSim.Data.Tests public class MSSQLInventoryTests : InventoryTests { } -#endif public class InventoryTests : BasicDataServiceTest where TConn : DbConnection, new() diff --git a/OpenSim/Data/Tests/PropertyCompareConstraint.cs b/OpenSim/Data/Tests/PropertyCompareConstraint.cs index f3d41df586..6c79bda9ec 100644 --- a/OpenSim/Data/Tests/PropertyCompareConstraint.cs +++ b/OpenSim/Data/Tests/PropertyCompareConstraint.cs @@ -34,7 +34,6 @@ using System.Linq.Expressions; using System.Reflection; using NUnit.Framework; using NUnit.Framework.Constraints; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; diff --git a/OpenSim/Data/Tests/PropertyScrambler.cs b/OpenSim/Data/Tests/PropertyScrambler.cs index 132294ad30..c5d40c2373 100644 --- a/OpenSim/Data/Tests/PropertyScrambler.cs +++ b/OpenSim/Data/Tests/PropertyScrambler.cs @@ -32,13 +32,11 @@ using System.Linq.Expressions; using System.Reflection; using System.Text; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; namespace OpenSim.Data.Tests { - //This is generic so that the lambda expressions will work right in IDEs. public class PropertyScrambler { diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs index 23d498d6fa..9598716e0d 100644 --- a/OpenSim/Data/Tests/RegionTests.cs +++ b/OpenSim/Data/Tests/RegionTests.cs @@ -31,7 +31,6 @@ using System.Drawing; using System.Text; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; @@ -52,14 +51,6 @@ using OpenSim.Data.SQLite; namespace OpenSim.Data.Tests { -#if NUNIT25 - - [TestFixture(typeof(SqliteConnection), typeof(SQLiteRegionData), Description = "Region store tests (SQLite)")] - [TestFixture(typeof(MySqlConnection), typeof(MySqlRegionData), Description = "Region store tests (MySQL)")] - [TestFixture(typeof(SqlConnection), typeof(MSSQLRegionData), Description = "Region store tests (MS SQL Server)")] - -#else - [TestFixture(Description = "Region store tests (SQLite)")] public class SQLiteRegionTests : RegionTests { @@ -75,8 +66,6 @@ namespace OpenSim.Data.Tests { } -#endif - public class RegionTests : BasicDataServiceTest where TConn : DbConnection, new() where TRegStore : class, ISimulationDataStore, new() diff --git a/OpenSim/Framework/Servers/Tests/OSHttpTests.cs b/OpenSim/Framework/Servers/Tests/OSHttpTests.cs index e62407adfa..dc4eb8f4bf 100644 --- a/OpenSim/Framework/Servers/Tests/OSHttpTests.cs +++ b/OpenSim/Framework/Servers/Tests/OSHttpTests.cs @@ -34,7 +34,6 @@ using System.Text; using HttpServer; using HttpServer.FormDecoders; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenSim.Framework.Servers.HttpServer; namespace OpenSim.Framework.Servers.Tests diff --git a/OpenSim/Framework/Tests/AnimationTests.cs b/OpenSim/Framework/Tests/AnimationTests.cs index 719ddce306..9aa95afa43 100644 --- a/OpenSim/Framework/Tests/AnimationTests.cs +++ b/OpenSim/Framework/Tests/AnimationTests.cs @@ -28,7 +28,6 @@ using System; using System.Reflection; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.StructuredData; using OpenSim.Framework; diff --git a/OpenSim/Framework/Tests/PrimeNumberHelperTests.cs b/OpenSim/Framework/Tests/PrimeNumberHelperTests.cs index d741f9116d..36bc6e75f9 100644 --- a/OpenSim/Framework/Tests/PrimeNumberHelperTests.cs +++ b/OpenSim/Framework/Tests/PrimeNumberHelperTests.cs @@ -28,7 +28,6 @@ using System; using System.Reflection; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.StructuredData; using OpenSim.Framework; @@ -38,8 +37,6 @@ namespace OpenSim.Framework.Tests [TestFixture] public class PrimeNumberHelperTests { - - [Test] public void TestGetPrime() { diff --git a/OpenSim/Framework/Tests/UtilTest.cs b/OpenSim/Framework/Tests/UtilTest.cs index 89f5c0cba9..5eac411944 100644 --- a/OpenSim/Framework/Tests/UtilTest.cs +++ b/OpenSim/Framework/Tests/UtilTest.cs @@ -27,7 +27,6 @@ using System; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Tests.Common; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index 023c452a23..3ec5e53114 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -31,7 +31,6 @@ using System.IO; using System.Reflection; using System.Threading; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Data; using OpenSim.Framework; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index edbbd81106..67d71596bf 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -31,7 +31,6 @@ using System.IO; using System.Reflection; using System.Threading; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Data; using OpenSim.Framework; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 34eeaf3672..4b7de0ca47 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -31,7 +31,6 @@ using System.IO; using System.Reflection; using System.Threading; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Data; using OpenSim.Framework; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs index e54ee02f43..18db9fa0e3 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs @@ -32,7 +32,6 @@ using System.Reflection; using System.Threading; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using Nini.Config; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs index ef910f4c26..e471f756d0 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs @@ -32,7 +32,6 @@ using System.Reflection; using System.Threading; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using Nini.Config; diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index 04b6e3d3f9..e2760a2065 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -32,7 +32,6 @@ using System.Reflection; using System.Threading; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.Assets; using OpenSim.Framework; diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs index 7a68e55c7e..5b85830f5f 100644 --- a/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs +++ b/OpenSim/Region/CoreModules/World/Media/Moap/Tests/MoapTests.cs @@ -32,7 +32,6 @@ using System.Reflection; using System.Threading; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.Assets; using OpenSim.Framework; diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs index f10e848f68..dafaa0c107 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs @@ -30,7 +30,6 @@ using System.IO; using System.Xml; using log4net.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Scenes; diff --git a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs index af4464081b..855b5894b6 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/AttachmentTests.cs @@ -34,7 +34,6 @@ using System.Timers; using Timer=System.Timers.Timer; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs index b3c3e22af6..667b74ea95 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs @@ -32,7 +32,6 @@ using System.Text; using System.Collections.Generic; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs index 9244bc3461..ca635d708d 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs @@ -28,7 +28,6 @@ using System; using System.Reflection; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs index 4969b09149..a6a95ef885 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs @@ -28,7 +28,6 @@ using System; using System.Reflection; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs index 39116b6615..0d260266ef 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs @@ -30,7 +30,6 @@ using System.Collections.Generic; using System.Reflection; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs index b84298f2fa..bdfcd1dc29 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs @@ -29,7 +29,6 @@ using System; using System.Collections.Generic; using System.Reflection; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs index c78038f7a7..8876a435b6 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs @@ -30,7 +30,6 @@ using System.Collections.Generic; using System.Reflection; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs index fd2d6fab2d..efb757fa6c 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs @@ -34,7 +34,6 @@ using System.Timers; using Timer=System.Timers.Timer; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs index 9aba8a8bfc..abcce66e23 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs @@ -34,7 +34,6 @@ using System.Timers; using Timer=System.Timers.Timer; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs index cafe48afdd..8588f7f599 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs @@ -29,7 +29,6 @@ using System; using System.Reflection; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs index fe59d4f031..8138bcc19a 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs @@ -34,7 +34,6 @@ using System.Timers; using Timer=System.Timers.Timer; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenMetaverse.Assets; using OpenSim.Framework; diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs index 5e6124b4f9..6b70865533 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs @@ -28,7 +28,6 @@ using System.Collections.Generic; using System.Text; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Scenes; diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs index bc55b04743..6de97b7269 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs @@ -29,7 +29,6 @@ using System; using System.Reflection; using Nini.Config; using NUnit.Framework; -using NUnit.Framework.SyntaxHelpers; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; diff --git a/OpenSim/Tests/Common/DoubleToleranceConstraint.cs b/OpenSim/Tests/Common/DoubleToleranceConstraint.cs index c397a6230b..b2f20571ae 100644 --- a/OpenSim/Tests/Common/DoubleToleranceConstraint.cs +++ b/OpenSim/Tests/Common/DoubleToleranceConstraint.cs @@ -27,6 +27,7 @@ using System; using NUnit.Framework; +using NUnit.Framework.Constraints; namespace OpenSim.Tests.Common { diff --git a/OpenSim/Tests/Common/TestHelper.cs b/OpenSim/Tests/Common/TestHelper.cs index 9d530635f3..1722e59864 100644 --- a/OpenSim/Tests/Common/TestHelper.cs +++ b/OpenSim/Tests/Common/TestHelper.cs @@ -27,11 +27,10 @@ using System; using System.Diagnostics; +using NUnit.Framework; namespace OpenSim.Tests.Common { - public delegate void TestDelegate(); - public class TestHelper { public static bool AssertThisDelegateCausesArgumentException(TestDelegate d) diff --git a/OpenSim/Tests/Common/VectorToleranceConstraint.cs b/OpenSim/Tests/Common/VectorToleranceConstraint.cs index 118cc707f8..2fa20edec9 100644 --- a/OpenSim/Tests/Common/VectorToleranceConstraint.cs +++ b/OpenSim/Tests/Common/VectorToleranceConstraint.cs @@ -28,6 +28,7 @@ using System; using OpenMetaverse; using NUnit.Framework; +using NUnit.Framework.Constraints; namespace OpenSim.Tests.Common { diff --git a/bin/nunit.framework.dll b/bin/nunit.framework.dll index d68d9f20c5ab7154fa4cf17b0f720c5c5b48eade..875e0984208d52e5c96a409b52996547198af17a 100644 GIT binary patch literal 135168 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 literal 77824 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 YFyg?710xQMI56VChyx=IyxSc3AOBQO>Hq)$ From 07f68c83181dffcdc1a064b10ef805b1d4605602 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 23:54:52 +0000 Subject: [PATCH 116/192] minor: change the order of some default iar setup in test case --- .../Archiver/Tests/InventoryArchiveTestCase.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index 3ec5e53114..5ec7bc4e52 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -93,8 +93,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Scene scene = SceneSetupHelpers.SetupScene("Inventory"); UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); - - string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); MemoryStream archiveWriteStream = new MemoryStream(); TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); @@ -106,10 +104,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.CreatorIdAsUuid = m_ua2.PrincipalID; item1.Owner = UUID.Zero; - string item1FileName - = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); - tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1, new Dictionary(), scene.UserAccountService)); + string archiveItem1Name = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); + string archiveItem1Path = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItem1Name); + tar.WriteFile( + archiveItem1Path, + UserInventoryItemSerializer.Serialize( + item1, new Dictionary(), scene.UserAccountService)); tar.Close(); + m_iarStreamBytes = archiveWriteStream.ToArray(); } From fa1996155e26847a508739e512513cf1f52b687e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 9 Mar 2011 23:58:26 +0000 Subject: [PATCH 117/192] Make the item created in the default test iar an object rather than a script --- .../Tests/InventoryArchiveTestCase.cs | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index 5ec7bc4e52..ca5bc53561 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -73,7 +73,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), FirstName = "Lord", LastName = "Lucan" }; - protected string m_item1Name = "b.lsl"; + protected string m_item1Name = "Ray Gun Item"; [SetUp] public void SetUp() @@ -96,10 +96,35 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests MemoryStream archiveWriteStream = new MemoryStream(); TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); + + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "Ray Gun Object"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object1 = new SceneObjectGroup(part1); + scene.AddNewSceneObject(object1, false); + } + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); + scene.AssetService.Store(asset1); + + // Create item InventoryItemBase item1 = new InventoryItemBase(); item1.Name = m_item1Name; - item1.AssetID = UUID.Random(); + item1.AssetID = asset1.FullID; item1.GroupID = UUID.Random(); item1.CreatorIdAsUuid = m_ua2.PrincipalID; item1.Owner = UUID.Zero; From 549b0ea17ced61af995984bf8c155477bf9d624b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 00:06:32 +0000 Subject: [PATCH 118/192] Split the inventory path testing parts of TestLoadIarV0_1ExistingUsers() into a new test TestLoadIarToInventoryPaths() --- .../Archiver/Tests/InventoryArchiverTests.cs | 22 --------- .../Inventory/Archiver/Tests/PathTests.cs | 47 ++++++++++++++++++- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 67d71596bf..5f75c4aab6 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -172,8 +172,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// an account exists with the creator name. /// - /// - /// This test also does some deeper probing of loading into nested inventory structures [Test] public void TestLoadIarV0_1ExistingUsers() { @@ -194,8 +192,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); - - Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); // We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the // UUID, not the OSPA itself. @@ -211,24 +207,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests "Loaded item uuid creator doesn't match original"); Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), "Loaded item owner doesn't match inventory reciever"); - - // Now try loading to a root child folder - UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xA"); - MemoryStream archiveReadStream = new MemoryStream(m_iarStream.ToArray()); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xA", "meowfood", archiveReadStream); - - InventoryItemBase foundItem2 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xA/" + m_item1Name); - Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); - - // Now try loading to a more deeply nested folder - UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xB/xC"); - archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xB/xC", "meowfood", archiveReadStream); - - InventoryItemBase foundItem3 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xB/xC/" + m_item1Name); - Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); } /// diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 4b7de0ca47..1220a7090a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -169,6 +169,51 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // TODO: Test presence of more files and contents of files. } + /// + /// Test loading an IAR to various different inventory paths. + /// + [Test] + public void TestLoadIarToInventoryPaths() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + SerialiserModule serialiserModule = new SerialiserModule(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); + + // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene + Scene scene = SceneSetupHelpers.SetupScene("inventory"); + + SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); + + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "meowfood"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + + Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); + + // Now try loading to a root child folder + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xA"); + MemoryStream archiveReadStream = new MemoryStream(m_iarStream.ToArray()); + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xA", "meowfood", archiveReadStream); + + InventoryItemBase foundItem2 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xA/" + m_item1Name); + Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); + + // Now try loading to a more deeply nested folder + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xB/xC"); + archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); + archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xB/xC", "meowfood", archiveReadStream); + + InventoryItemBase foundItem3 + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xB/xC/" + m_item1Name); + Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); + } + /// /// Test that things work when the load path specified starts with a slash /// @@ -194,7 +239,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests } [Test] - public void TestIarV0_1WithEscapedChars() + public void TestLoadIarPathWithEscapedChars() { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); From 4dd60b7dce4421bec89e9964a3fb51a1658945ad Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 00:19:17 +0000 Subject: [PATCH 119/192] Change existing users load iar test so that it fulfills it's original intention (i.e. OSPA resolution, which is still active). Will need to write a separate test for the simplest case where creator accounts with appropriate uuids exist on iar load. --- .../Tests/InventoryArchiveTestCase.cs | 7 ++++++- .../Archiver/Tests/InventoryArchiverTests.cs | 19 +++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index ca5bc53561..dcafc49ee4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -72,7 +72,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), FirstName = "Lord", - LastName = "Lucan" }; + LastName = "Lucan" }; + protected UserAccount m_ua3 + = new UserAccount { + PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000777"), + FirstName = "Lord", + LastName = "Lucan" }; protected string m_item1Name = "Ray Gun Item"; [SetUp] diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 5f75c4aab6..b52014b12a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -170,10 +170,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where - /// an account exists with the creator name. + /// an account exists with the same name as the creator, though not the same id. /// [Test] - public void TestLoadIarV0_1ExistingUsers() + public void TestLoadIarV0_1SameNameCreator() { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); @@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "meowfood"); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua3, "hampshire"); archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 @@ -198,12 +198,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // Assert.That( // foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), // "Loaded item non-uuid creator doesn't match original"); -// Assert.That( -// foundItem1.CreatorId, Is.EqualTo(m_ua2.PrincipalID.ToString()), -// "Loaded item non-uuid creator doesn't match original"); - Assert.That( - foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua2.PrincipalID), + foundItem1.CreatorId, Is.EqualTo(m_ua3.PrincipalID.ToString()), + "Loaded item non-uuid creator doesn't match original"); + Assert.That( + foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua3.PrincipalID), "Loaded item uuid creator doesn't match original"); Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), "Loaded item owner doesn't match inventory reciever"); @@ -211,10 +210,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where - /// embedded creators do not exist in the system + /// the creator or an account with the creator's name does not exist within the system. /// [Test] - public void TestLoadIarV0_1AbsentUsers() + public void TestLoadIarV0_1AbsentCreator() { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); From a151afebe3348ad05db3d78074e3eaf99dc06afe Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 19:40:19 +0000 Subject: [PATCH 120/192] When setting up default iar for testing, use iar archiving code rather than constructing the tar manually --- .../Tests/InventoryArchiveTestCase.cs | 20 +++++++++---------- .../Archiver/Tests/InventoryArchiverTests.cs | 6 ++++++ .../Inventory/Archiver/Tests/PathTests.cs | 4 +--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index dcafc49ee4..d77bff2741 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -96,11 +96,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests { // log4net.Config.XmlConfigurator.Configure(); + InventoryArchiverModule archiverModule = new InventoryArchiverModule(); Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(scene, archiverModule); + UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); MemoryStream archiveWriteStream = new MemoryStream(); - TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); // Create asset SceneObjectGroup object1; @@ -129,18 +131,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // Create item InventoryItemBase item1 = new InventoryItemBase(); item1.Name = m_item1Name; + item1.ID = UUID.Parse("00000000-0000-0000-0000-000000000020"); item1.AssetID = asset1.FullID; item1.GroupID = UUID.Random(); item1.CreatorIdAsUuid = m_ua2.PrincipalID; - item1.Owner = UUID.Zero; - - string archiveItem1Name = InventoryArchiveWriteRequest.CreateArchiveItemName(m_item1Name, UUID.Random()); - string archiveItem1Path = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItem1Name); - tar.WriteFile( - archiveItem1Path, - UserInventoryItemSerializer.Serialize( - item1, new Dictionary(), scene.UserAccountService)); - tar.Close(); + item1.Owner = m_ua2.PrincipalID; + item1.Folder = scene.InventoryService.GetRootFolder(m_ua2.PrincipalID).ID; + scene.AddInventoryItem(item1); + + archiverModule.ArchiveInventory( + Guid.NewGuid(), m_ua2.FirstName, m_ua2.LastName, m_item1Name, "hampshire", archiveWriteStream); m_iarStreamBytes = archiveWriteStream.ToArray(); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index b52014b12a..3eb4104e73 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -206,6 +206,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests "Loaded item uuid creator doesn't match original"); Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), "Loaded item owner doesn't match inventory reciever"); + +// AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); +// string xmlData = Utils.BytesToString(asset1.Data); +// SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); +// +// Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua3.PrincipalID.ToString())); } /// diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 1220a7090a..66c19f4a34 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -84,9 +84,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); Vector3 offsetPosition = new Vector3(5, 10, 15); - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1 = new SceneObjectPart(ownerId, shape, groupPosition, rotationOffset, offsetPosition); part1.Name = partName; object1 = new SceneObjectGroup(part1); From db2ad62c9b52baaa7e2b1d8fed481cbd336f4f1b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 19:52:19 +0000 Subject: [PATCH 121/192] in AssetHelpers.CreateAsset(), create objects using the 'original' xml format rather than 'xml2' --- OpenSim/Tests/Common/Setup/AssetHelpers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index 8647cfed51..ff4423f7ab 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs @@ -68,7 +68,7 @@ namespace OpenSim.Tests.Common return CreateAsset( assetUuid, AssetType.Object, - Encoding.ASCII.GetBytes(SceneObjectSerializer.ToXml2Format(sog)), + Encoding.ASCII.GetBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)), sog.OwnerID); } From b821f748ac591258f015ecf3ba8011d5561c488d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 21:56:15 +0000 Subject: [PATCH 122/192] For objects loaded from an IAR, make sure the CreatorID points towards the OSP resolved ID if newer CreationData is not present. This should resolve issues where the creator for rezzed objects was being shown as "Unknown user" where previous behaviour was to show the OSP resolved account. This is being done by parsing the serialized objects and updating the CreatorID if no CreationData exists. This operation might be expensive for sculpties where the sculpt texture is inlined with the object data. Will just have to see. This relies on the IAR streaming inventory data before asset data (as is currently the case). Will need to introduce more stringent checks for file order on loading (much like JAR zips must start with the manifest file). This is for IAR loading only. Tests updated to check this behaviour. --- .../Archiver/InventoryArchiveReadRequest.cs | 40 +++++++++++++++++-- .../Archiver/Tests/InventoryArchiverTests.cs | 10 ++--- .../Scenes/SceneObjectPartInventory.cs | 8 +++- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 7849d88320..d0510d3da1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -41,6 +41,7 @@ using OpenSim.Framework.Serialization; using OpenSim.Framework.Serialization.External; using OpenSim.Region.CoreModules.World.Archiver; using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Scenes.Serialization; using OpenSim.Region.Framework.Interfaces; using OpenSim.Services.Interfaces; @@ -75,6 +76,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// The stream from which the inventory archive will be loaded. /// private Stream m_loadStream; + + /// + /// Record the creator id that should be associated with an asset. This is used to adjust asset creator ids + /// after OSP resolution (since OSP creators are only stored in the item + /// + protected Dictionary m_creatorIdForAssetId = new Dictionary(); public InventoryArchiveReadRequest( Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge) @@ -420,6 +427,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // Reset folder ID to the one in which we want to load it item.Folder = loadFolder.ID; + // Record the creator id for the item's asset so that we can use it later, if necessary, when the asset + // is loaded. + // FIXME: This relies on the items coming before the assets in the TAR file. Need to create stronger + // checks for this, and maybe even an external tool for creating OARs which enforces this, rather than + // relying on native tar tools. + m_creatorIdForAssetId[item.AssetID] = item.CreatorIdAsUuid; + m_scene.AddInventoryItem(item); return item; @@ -448,18 +462,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver } string extension = filename.Substring(i); - string uuid = filename.Remove(filename.Length - extension.Length); + string rawUuid = filename.Remove(filename.Length - extension.Length); + UUID assetId = new UUID(rawUuid); if (ArchiveConstants.EXTENSION_TO_ASSET_TYPE.ContainsKey(extension)) { sbyte assetType = ArchiveConstants.EXTENSION_TO_ASSET_TYPE[extension]; if (assetType == (sbyte)AssetType.Unknown) - m_log.WarnFormat("[INVENTORY ARCHIVER]: Importing {0} byte asset {1} with unknown type", data.Length, uuid); + { + m_log.WarnFormat("[INVENTORY ARCHIVER]: Importing {0} byte asset {1} with unknown type", data.Length, assetId); + } + else if (assetType == (sbyte)AssetType.Object) + { + if (m_creatorIdForAssetId.ContainsKey(assetId)) + { + string xmlData = Utils.BytesToString(data); + SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); + foreach (SceneObjectPart sop in sog.Parts) + { + if (sop.CreatorData == null || sop.CreatorData == "") + { + sop.CreatorID = m_creatorIdForAssetId[assetId]; + } + } + + data = Utils.StringToBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)); + } + } //m_log.DebugFormat("[INVENTORY ARCHIVER]: Importing asset {0}, type {1}", uuid, assetType); - AssetBase asset = new AssetBase(new UUID(uuid), "RandomName", assetType, UUID.Zero.ToString()); + AssetBase asset = new AssetBase(assetId, "From IAR", assetType, UUID.Zero.ToString()); asset.Data = data; m_scene.AssetService.Store(asset); diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 3eb4104e73..5065227967 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -207,11 +207,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), "Loaded item owner doesn't match inventory reciever"); -// AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); -// string xmlData = Utils.BytesToString(asset1.Data); -// SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); -// -// Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua3.PrincipalID.ToString())); + AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); + string xmlData = Utils.BytesToString(asset1.Data); + SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); + + Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua3.PrincipalID)); } /// diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 67e59c6564..fa404c01bd 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1089,9 +1089,13 @@ namespace OpenSim.Region.Framework.Scenes public Dictionary GetScriptStates() { + Dictionary ret = new Dictionary(); + + if (m_part.ParentGroup.Scene == null) // Group not in a scene + return ret; + IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces(); - - Dictionary ret = new Dictionary(); + if (engines == null) // No engine at all return ret; From ce4421497e47d709018e6aba9e99317d6a936b98 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 22:38:52 +0000 Subject: [PATCH 123/192] re-enable item.CreatorId check in TestLoadIarV0_1AbsentCreator() --- .../Inventory/Archiver/InventoryArchiveReadRequest.cs | 5 +++-- .../Inventory/Archiver/Tests/InventoryArchiverTests.cs | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index d0510d3da1..7d50e51173 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -411,7 +411,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver item.CreatorIdAsUuid = ospResolvedId; - // XXX: For now, don't preserve the OSPA in the creator id (which actually gets persisted to the + // Don't preserve the OSPA in the creator id (which actually gets persisted to the // database). Instead, replace with the UUID that we found. item.CreatorId = ospResolvedId.ToString(); @@ -419,7 +419,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver } else if (item.CreatorData == null || item.CreatorData == String.Empty) { - item.CreatorIdAsUuid = m_userInfo.PrincipalID; + item.CreatorId = m_userInfo.PrincipalID.ToString(); + item.CreatorIdAsUuid = new UUID(item.CreatorId); } item.Owner = m_userInfo.PrincipalID; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 5065227967..a092b6578e 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -236,9 +236,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); -// Assert.That( -// foundItem1.CreatorId, Is.EqualTo(userUuid), -// "Loaded item non-uuid creator doesn't match that of the loading user"); + Assert.That( + foundItem1.CreatorId, Is.EqualTo(m_ua1.PrincipalID.ToString()), + "Loaded item non-uuid creator doesn't match that of the loading user"); Assert.That( foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); From 66d2d35425ee61e11445fc04c6d4949cdde85b87 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 22:40:24 +0000 Subject: [PATCH 124/192] extend TestLoadIarV0_1AbsentCreator() to check serialized object CreatorId as well --- .../Inventory/Archiver/Tests/InventoryArchiverTests.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index a092b6578e..78faefd242 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -242,6 +242,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That( foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); + + AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); + string xmlData = Utils.BytesToString(asset1.Data); + SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); + + Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua1.PrincipalID)); } } } \ No newline at end of file From 9ecb745ed77c33631503e8ebbbfe82fd5fc3bb7c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 22:48:19 +0000 Subject: [PATCH 125/192] factor out common scene setup code in InventoryArchiveTestCase --- .../Tests/InventoryArchiveTestCase.cs | 2 +- .../Archiver/Tests/InventoryArchiverTests.cs | 72 +++++++++---------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index d77bff2741..31e6d75488 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -81,7 +81,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests protected string m_item1Name = "Ray Gun Item"; [SetUp] - public void SetUp() + public virtual void SetUp() { m_iarStream = new MemoryStream(m_iarStreamBytes); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 78faefd242..79b47777f5 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -50,7 +50,22 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests { [TestFixture] public class InventoryArchiverTests : InventoryArchiveTestCase - { + { + protected TestScene m_scene; + protected InventoryArchiverModule m_archiverModule; + + [SetUp] + public override void SetUp() + { + base.SetUp(); + + SerialiserModule serialiserModule = new SerialiserModule(); + m_archiverModule = new InventoryArchiverModule(); + + m_scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule); + } + /// /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive /// (subject to change since there is no fixed format yet). @@ -61,17 +76,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); - SceneSetupHelpers.SetupSceneModules(scene, archiverModule); - // Create user string userFirstName = "Jock"; string userLastName = "Stirrup"; string userPassword = "troll"; UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); - UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword); + UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); // Create asset SceneObjectGroup object1; @@ -90,12 +100,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests part1.Name = partName; object1 = new SceneObjectGroup(part1); - scene.AddNewSceneObject(object1, false); + m_scene.AddNewSceneObject(object1, false); } UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); - scene.AssetService.Store(asset1); + m_scene.AssetService.Store(asset1); // Create item UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); @@ -105,15 +115,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.AssetID = asset1.FullID; item1.ID = item1Id; InventoryFolderBase objsFolder - = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0]; + = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, userId, "Objects")[0]; item1.Folder = objsFolder.ID; - scene.AddInventoryItem(item1); + m_scene.AddInventoryItem(item1); MemoryStream archiveWriteStream = new MemoryStream(); - archiverModule.OnInventoryArchiveSaved += SaveCompleted; + m_archiverModule.OnInventoryArchiveSaved += SaveCompleted; mre.Reset(); - archiverModule.ArchiveInventory( + m_archiverModule.ArchiveInventory( Guid.NewGuid(), userFirstName, userLastName, "Objects/" + item1Name, userPassword, archiveWriteStream); mre.WaitOne(60000, false); @@ -177,27 +187,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - - SerialiserModule serialiserModule = new SerialiserModule(); - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - - // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - - SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "meowfood"); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua3, "hampshire"); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua1, "meowfood"); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua3, "hampshire"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); + m_archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_ua1.PrincipalID, m_item1Name); -// We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the -// UUID, not the OSPA itself. -// Assert.That( -// foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), -// "Loaded item non-uuid creator doesn't match original"); Assert.That( foundItem1.CreatorId, Is.EqualTo(m_ua3.PrincipalID.ToString()), "Loaded item non-uuid creator doesn't match original"); @@ -207,7 +204,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), "Loaded item owner doesn't match inventory reciever"); - AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); + AssetBase asset1 = m_scene.AssetService.Get(foundItem1.AssetID.ToString()); string xmlData = Utils.BytesToString(asset1.Data); SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); @@ -224,16 +221,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - SerialiserModule serialiserModule = new SerialiserModule(); - InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); - SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "password", m_iarStream); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua1, "password"); + m_archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "password", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_ua1.PrincipalID, m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); Assert.That( @@ -243,7 +235,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); - AssetBase asset1 = scene.AssetService.Get(foundItem1.AssetID.ToString()); + AssetBase asset1 = m_scene.AssetService.Get(foundItem1.AssetID.ToString()); string xmlData = Utils.BytesToString(asset1.Data); SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); From 8d69e6831136fea089ed0ca04249bf65ba66db28 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 22:52:41 +0000 Subject: [PATCH 126/192] refactor: rename test user account fields --- .../Tests/InventoryArchiveTestCase.cs | 16 +++++------ .../Archiver/Tests/InventoryArchiverTests.cs | 28 +++++++++---------- .../Inventory/Archiver/Tests/PathTests.cs | 26 ++++++++--------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index 31e6d75488..e5127a0118 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -63,17 +63,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests /// protected MemoryStream m_iarStream; - protected UserAccount m_ua1 + protected UserAccount m_uaMT = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), FirstName = "Mr", LastName = "Tiddles" }; - protected UserAccount m_ua2 + protected UserAccount m_uaLL1 = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), FirstName = "Lord", LastName = "Lucan" }; - protected UserAccount m_ua3 + protected UserAccount m_uaLL2 = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000777"), FirstName = "Lord", @@ -100,7 +100,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Scene scene = SceneSetupHelpers.SetupScene("Inventory"); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire"); MemoryStream archiveWriteStream = new MemoryStream(); @@ -134,13 +134,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.ID = UUID.Parse("00000000-0000-0000-0000-000000000020"); item1.AssetID = asset1.FullID; item1.GroupID = UUID.Random(); - item1.CreatorIdAsUuid = m_ua2.PrincipalID; - item1.Owner = m_ua2.PrincipalID; - item1.Folder = scene.InventoryService.GetRootFolder(m_ua2.PrincipalID).ID; + item1.CreatorIdAsUuid = m_uaLL1.PrincipalID; + item1.Owner = m_uaLL1.PrincipalID; + item1.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; scene.AddInventoryItem(item1); archiverModule.ArchiveInventory( - Guid.NewGuid(), m_ua2.FirstName, m_ua2.LastName, m_item1Name, "hampshire", archiveWriteStream); + Guid.NewGuid(), m_uaLL1.FirstName, m_uaLL1.LastName, m_item1Name, "hampshire", archiveWriteStream); m_iarStreamBytes = archiveWriteStream.ToArray(); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 79b47777f5..c7aad5eedc 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -188,27 +188,27 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua1, "meowfood"); - UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua3, "hampshire"); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaMT, "meowfood"); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL2, "hampshire"); - m_archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); + m_archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaMT.PrincipalID, m_item1Name); Assert.That( - foundItem1.CreatorId, Is.EqualTo(m_ua3.PrincipalID.ToString()), + foundItem1.CreatorId, Is.EqualTo(m_uaLL2.PrincipalID.ToString()), "Loaded item non-uuid creator doesn't match original"); Assert.That( - foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua3.PrincipalID), + foundItem1.CreatorIdAsUuid, Is.EqualTo(m_uaLL2.PrincipalID), "Loaded item uuid creator doesn't match original"); - Assert.That(foundItem1.Owner, Is.EqualTo(m_ua1.PrincipalID), + Assert.That(foundItem1.Owner, Is.EqualTo(m_uaMT.PrincipalID), "Loaded item owner doesn't match inventory reciever"); AssetBase asset1 = m_scene.AssetService.Get(foundItem1.AssetID.ToString()); string xmlData = Utils.BytesToString(asset1.Data); SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); - Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua3.PrincipalID)); + Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_uaLL2.PrincipalID)); } /// @@ -221,25 +221,25 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - UserProfileTestUtils.CreateUserWithInventory(m_scene, m_ua1, "password"); - m_archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "password", m_iarStream); + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaMT, "password"); + m_archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "password", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaMT.PrincipalID, m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); Assert.That( - foundItem1.CreatorId, Is.EqualTo(m_ua1.PrincipalID.ToString()), + foundItem1.CreatorId, Is.EqualTo(m_uaMT.PrincipalID.ToString()), "Loaded item non-uuid creator doesn't match that of the loading user"); Assert.That( - foundItem1.CreatorIdAsUuid, Is.EqualTo(m_ua1.PrincipalID), + foundItem1.CreatorIdAsUuid, Is.EqualTo(m_uaMT.PrincipalID), "Loaded item uuid creator doesn't match that of the loading user"); AssetBase asset1 = m_scene.AssetService.Get(foundItem1.AssetID.ToString()); string xmlData = Utils.BytesToString(asset1.Data); SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); - Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_ua1.PrincipalID)); + Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_uaMT.PrincipalID)); } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 66c19f4a34..0e8f647dbc 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -184,31 +184,31 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "meowfood"); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua2, "hampshire"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "meowfood"); + UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/", "meowfood", m_iarStream); + archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/", "meowfood", m_iarStream); InventoryItemBase foundItem1 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, m_item1Name); + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_uaMT.PrincipalID, m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); // Now try loading to a root child folder - UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xA"); + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xA"); MemoryStream archiveReadStream = new MemoryStream(m_iarStream.ToArray()); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xA", "meowfood", archiveReadStream); + archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "xA", "meowfood", archiveReadStream); InventoryItemBase foundItem2 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xA/" + m_item1Name); + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_uaMT.PrincipalID, "xA/" + m_item1Name); Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); // Now try loading to a more deeply nested folder - UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_ua1.PrincipalID, "xB/xC"); + UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, m_uaMT.PrincipalID, "xB/xC"); archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "xB/xC", "meowfood", archiveReadStream); + archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "xB/xC", "meowfood", archiveReadStream); InventoryItemBase foundItem3 - = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_ua1.PrincipalID, "xB/xC/" + m_item1Name); + = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, m_uaMT.PrincipalID, "xB/xC/" + m_item1Name); Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); } @@ -226,12 +226,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Scene scene = SceneSetupHelpers.SetupScene("inventory"); SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); - UserProfileTestUtils.CreateUserWithInventory(scene, m_ua1, "password"); - archiverModule.DearchiveInventory(m_ua1.FirstName, m_ua1.LastName, "/Objects", "password", m_iarStream); + UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "password"); + archiverModule.DearchiveInventory(m_uaMT.FirstName, m_uaMT.LastName, "/Objects", "password", m_iarStream); InventoryItemBase foundItem1 = InventoryArchiveUtils.FindItemByPath( - scene.InventoryService, m_ua1.PrincipalID, "/Objects/" + m_item1Name); + scene.InventoryService, m_uaMT.PrincipalID, "/Objects/" + m_item1Name); Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1 in TestLoadIarFolderStartsWithSlash()"); } From ad1dea5affe24674ada19b801cab423f667f7979 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Mar 2011 22:56:11 +0000 Subject: [PATCH 127/192] Add test for simple case where creator account with appropriate uuid exists on the target system for an iar load --- .../Archiver/Tests/InventoryArchiverTests.cs | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index c7aad5eedc..7f156f8904 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -178,6 +178,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // TODO: Test presence of more files and contents of files. } + /// + /// Test case where a creator account exists for the creator UUID embedded in item metadata and serialized + /// objects. + /// + [Test] + public void TestLoadIarCreatorAccountPresent() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "meowfood"); + + m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "meowfood", m_iarStream); + InventoryItemBase foundItem1 + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaLL1.PrincipalID, m_item1Name); + + Assert.That( + foundItem1.CreatorId, Is.EqualTo(m_uaLL1.PrincipalID.ToString()), + "Loaded item non-uuid creator doesn't match original"); + Assert.That( + foundItem1.CreatorIdAsUuid, Is.EqualTo(m_uaLL1.PrincipalID), + "Loaded item uuid creator doesn't match original"); + Assert.That(foundItem1.Owner, Is.EqualTo(m_uaLL1.PrincipalID), + "Loaded item owner doesn't match inventory reciever"); + + AssetBase asset1 = m_scene.AssetService.Get(foundItem1.AssetID.ToString()); + string xmlData = Utils.BytesToString(asset1.Data); + SceneObjectGroup sog1 = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); + + Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_uaLL1.PrincipalID)); + } + /// /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where /// an account exists with the same name as the creator, though not the same id. From 836ab6b0e87c16bcff171d0491476f19d7c18a2c Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Thu, 10 Mar 2011 15:23:46 -0800 Subject: [PATCH 128/192] Change how map blocks are encoded to make map search work with viewer 2. --- .../Region/CoreModules/World/WorldMap/MapSearchModule.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs index a9e46d04c2..7bb7544e89 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs @@ -113,7 +113,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap data = new MapBlockData(); data.Agents = 0; data.Access = info.Access; - data.MapImageId = info.TerrainImage; + data.MapImageId = UUID.Zero; // could use info.TerrainImage but it seems to break viewer2 data.Name = info.RegionName; data.RegionFlags = 0; // TODO not used? data.WaterHeight = 0; // not used @@ -135,7 +135,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap data.Y = 0; blocks.Add(data); - remoteClient.SendMapBlock(blocks, 0); + // not sure what the flags do here, but seems to be necessary + // to set to "2" for viewer 2 + remoteClient.SendMapBlock(blocks, 2); } // private Scene GetClientScene(IClientAPI client) From cb863851e0149a931f3c79fdc7301e7086c3c16f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Mar 2011 22:38:51 +0000 Subject: [PATCH 129/192] Update/simplify test running instructions --- TESTING.txt | 81 +++++------------------------------------------------ 1 file changed, 7 insertions(+), 74 deletions(-) diff --git a/TESTING.txt b/TESTING.txt index e0a7748e6f..54fc976e95 100644 --- a/TESTING.txt +++ b/TESTING.txt @@ -2,23 +2,14 @@ == Running Tests == -On Linux: +On Linux you will need to have NUnit installed (http://www.nunit.org). +This is commonly available in distribution package repositories. + +When this is installed, run the command > nant test -This will print out to the console the test state. - -On Windows: Please see the TESTING ON WINDOWS section below. - - -Also, every checkin will run tests that are kicked off by bamboo. -Results are posted here: http://www.opensimulator.org:8085/ as well as -to #opensim-dev IRC channel. - -== Writing Tests == - -Tests are written to run under NUnit. For more information on NUnit -please see: http://www.nunit.org/index.php +Please see the TESTING ON WINDOWS section below for Windows instructions. == Adding Tests == @@ -32,70 +23,15 @@ that if you are writing tests they end up in a "Tests" sub-directory of the directory where the code you are testing resides. If you have added a new test assembly that hasn't existed before you -must list it in both ".nant/local.include" and ".nant/bamboo.build" +must list it in both ".nant/local.include" for it to be accessible to Linux users and to the continuous integration system. - -=== The Gory Details === -The following is the original document which started off this -document. It should probably be better integrated with the new info. - -==UPDATE== - -The text immediately following is an update to the testing documentation. The -update is written on 2008.08.30 and is copied from an email to the opensim-dev -mailing list[1]. The information below the update, beginning with the section -titled TESTING, is still relevant, so please read this document in its -entirety. - -Mike Mazur - -[1] https://lists.berlios.de/pipermail/opensim-dev/2008-August/002695.html - -""" -The tests are contained in certain DLLs. At the time of writing, these DLLs -have tests in them: - -OpenSim.Region.ScriptEngine.Common.Tests.dll -OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests.dll -OpenSim.Region.ScriptEngine.Shared.Tests.dll -OpenSim.Framework.Tests.dll OpenSim.Region.CoreModules.dll -OpenSim.Region.Physics.OdePlugin.dll[2] - -The console command used to run the tests is `nunit-console` (or -`nunit-console2` on some systems). This command takes a listing of DLLs to -inspect for tests. - -Currently Bamboo's[3] build file (.nant/bamboo.build) lists only those DLLs -for nunit-console to use. However it would be equally correct to simply pass -in all DLLs in bin/; those without tests are just skipped. - -The nunit-console command generates a file TestResults.txt by default. This is -an XML file containing a listing of all DLLs inspected, tests executed, -successes, failures, etc. If nunit-console is passed in all DLLs in bin/, this -file bloats with lots of entries like this: - - - - - - - - -Therefore it makes more sense to me to specify the DLLs when running -nunit-console. - -[2] Note that OpenSim.Region.Physics.OdePlugin.dll is in bin/Physics/ and -needs to be first copied to bin/ before nunit-console is executed. -[3] http://opensimulator.org:8085/ -""" - ==TESTING ON WINDOWS== To use nunit testing on opensim code, you have a variety of methods. The easiast methods involve using IDE capabilities to test code. Using -VS2005/2008 I recommend using the testing capabilities of Resarper(commercial) +VS2005/2008 I recommend using the testing capabilities of Resharper(commercial) or TestDriven.Net(free). Both will recognize nunit tests within your application and allow you to test them individually, or all at once, etc. You will also be able to step into debug mode into a test through these add-ins @@ -133,6 +69,3 @@ Example nunit-console2 OpenSim.Framework.Tests.dll (on linux) nunit-console OpenSim.Framework.Tests.dll (on windows) - -For more information on testing contact the autor of this testing readme: Daedius Moskvitch ( daedius @@@@ daedius com) - From 367ed585e0f4a7e4d540230c586531abd75e2228 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Mar 2011 00:21:52 +0000 Subject: [PATCH 130/192] introduce iar load checks which make sure archive.xml comes first, then inventory nodes, then assets this is necessary for correct loading. "save iar" always saves in this order so there shouldn't be any problems - these checks are to give better feedback to other systems that may construct IARs. --- .../Archiver/InventoryArchiveReadRequest.cs | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 7d50e51173..4d97c0aed4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -111,6 +111,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// A list of the inventory nodes loaded. If folders were loaded then only the root folders are /// returned /// + /// Thrown if load fails. public HashSet Execute() { try @@ -143,15 +144,29 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver byte[] data; TarArchiveReader.TarEntryType entryType; + bool controlFileLoaded = false, assetsLoaded = false, inventoryNodesLoaded = false; while ((data = archive.ReadEntry(out filePath, out entryType)) != null) { if (filePath == ArchiveConstants.CONTROL_FILE_PATH) { LoadControlFile(filePath, data); + controlFileLoaded = true; } else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) { + if (!controlFileLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list {0} before {1}. Aborting load", + ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH)); + + if (!inventoryNodesLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list all {0} before {1}. Aborting load", + ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); + if (LoadAsset(filePath, data)) successfulAssetRestores++; else @@ -160,10 +175,24 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if ((successfulAssetRestores) % 50 == 0) m_log.DebugFormat( "[INVENTORY ARCHIVER]: Loaded {0} assets...", - successfulAssetRestores); + successfulAssetRestores); + + assetsLoaded = true; } else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) { + if (!controlFileLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list {0} before {1}. Aborting load", + ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.INVENTORY_PATH)); + + if (assetsLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list all {0} before {1}. Aborting load", + ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); + filePath = filePath.Substring(ArchiveConstants.INVENTORY_PATH.Length); // Trim off the file portion if we aren't already dealing with a directory path @@ -188,6 +217,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver loadedNodes.Add(item); } } + + inventoryNodesLoaded = true; } } From a3c7c04ead1b1388d2093edf66d37edecdeccc61 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Mar 2011 00:28:23 +0000 Subject: [PATCH 131/192] refactor: make boolean load indicators on load iars instance fields --- .../Archiver/InventoryArchiveReadRequest.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 4d97c0aed4..367960c9da 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -82,6 +82,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// after OSP resolution (since OSP creators are only stored in the item /// protected Dictionary m_creatorIdForAssetId = new Dictionary(); + + protected bool m_controlFileLoaded; + protected bool m_assetsLoaded; + protected bool m_inventoryNodesLoaded; public InventoryArchiveReadRequest( Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge) @@ -144,24 +148,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver byte[] data; TarArchiveReader.TarEntryType entryType; - bool controlFileLoaded = false, assetsLoaded = false, inventoryNodesLoaded = false; while ((data = archive.ReadEntry(out filePath, out entryType)) != null) { if (filePath == ArchiveConstants.CONTROL_FILE_PATH) { LoadControlFile(filePath, data); - controlFileLoaded = true; + m_controlFileLoaded = true; } else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) { - if (!controlFileLoaded) + if (!m_controlFileLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list {0} before {1}. Aborting load", ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH)); - if (!inventoryNodesLoaded) + if (!m_inventoryNodesLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list all {0} before {1}. Aborting load", @@ -177,17 +180,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver "[INVENTORY ARCHIVER]: Loaded {0} assets...", successfulAssetRestores); - assetsLoaded = true; + m_assetsLoaded = true; } else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) { - if (!controlFileLoaded) + if (!m_controlFileLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list {0} before {1}. Aborting load", ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.INVENTORY_PATH)); - if (assetsLoaded) + if (m_assetsLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list all {0} before {1}. Aborting load", @@ -218,7 +221,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver } } - inventoryNodesLoaded = true; + m_inventoryNodesLoaded = true; } } From c4060e56ef2aa2d4d68d33ae3081c6a0d2d37f7c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Mar 2011 00:35:40 +0000 Subject: [PATCH 132/192] factor out iar asset load code into its own method --- .../Archiver/InventoryArchiveReadRequest.cs | 69 +++++++++++-------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 367960c9da..cf4ba91eef 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -86,6 +86,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver protected bool m_controlFileLoaded; protected bool m_assetsLoaded; protected bool m_inventoryNodesLoaded; + + protected int m_successfulAssetRestores; + protected int m_failedAssetRestores; public InventoryArchiveReadRequest( Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge) @@ -121,8 +124,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver try { string filePath = "ERROR"; - int successfulAssetRestores = 0; - int failedAssetRestores = 0; int successfulItemRestores = 0; HashSet loadedNodes = new HashSet(); @@ -154,33 +155,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (filePath == ArchiveConstants.CONTROL_FILE_PATH) { LoadControlFile(filePath, data); - m_controlFileLoaded = true; - } + } else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) { - if (!m_controlFileLoaded) - throw new Exception( - string.Format( - "The IAR you are trying to load does not list {0} before {1}. Aborting load", - ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH)); - - if (!m_inventoryNodesLoaded) - throw new Exception( - string.Format( - "The IAR you are trying to load does not list all {0} before {1}. Aborting load", - ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); - - if (LoadAsset(filePath, data)) - successfulAssetRestores++; - else - failedAssetRestores++; - - if ((successfulAssetRestores) % 50 == 0) - m_log.DebugFormat( - "[INVENTORY ARCHIVER]: Loaded {0} assets...", - successfulAssetRestores); - - m_assetsLoaded = true; + LoadAssetFile(filePath, data); } else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) { @@ -229,7 +207,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_log.DebugFormat( "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures", - successfulAssetRestores, failedAssetRestores); + m_successfulAssetRestores, m_failedAssetRestores); m_log.InfoFormat("[INVENTORY ARCHIVER]: Successfully loaded {0} items", successfulItemRestores); return loadedNodes; @@ -566,7 +544,40 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver majorVersion, MAX_MAJOR_VERSION)); } - m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); + m_controlFileLoaded = true; + m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); } + + /// + /// Load asset file + /// + /// + /// + protected void LoadAssetFile(string path, byte[] data) + { + if (!m_controlFileLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list {0} before {1}. Aborting load", + ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH)); + + if (!m_inventoryNodesLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list all {0} before {1}. Aborting load", + ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); + + if (LoadAsset(path, data)) + m_successfulAssetRestores++; + else + m_failedAssetRestores++; + + if ((m_successfulAssetRestores) % 50 == 0) + m_log.DebugFormat( + "[INVENTORY ARCHIVER]: Loaded {0} assets...", + m_successfulAssetRestores); + + m_assetsLoaded = true; + } } } \ No newline at end of file From f6b638fec92596e0671d0484c3b63bd600ef38ea Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Mar 2011 00:49:13 +0000 Subject: [PATCH 133/192] factor inventory file loading into its own method --- .../Archiver/InventoryArchiveReadRequest.cs | 137 ++++++++++-------- 1 file changed, 80 insertions(+), 57 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index cf4ba91eef..9b98de3b67 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -77,18 +77,35 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// private Stream m_loadStream; - /// - /// Record the creator id that should be associated with an asset. This is used to adjust asset creator ids - /// after OSP resolution (since OSP creators are only stored in the item - /// - protected Dictionary m_creatorIdForAssetId = new Dictionary(); - protected bool m_controlFileLoaded; protected bool m_assetsLoaded; protected bool m_inventoryNodesLoaded; protected int m_successfulAssetRestores; protected int m_failedAssetRestores; + protected int m_successfulItemRestores; + + /// + /// Root destination folder for the IAR load. + /// + protected InventoryFolderBase m_rootDestinationFolder; + + /// + /// Inventory nodes loaded from the iar. + /// + protected HashSet m_loadedNodes = new HashSet(); + + /// + /// In order to load identically named folders, we need to keep track of the folders that we have already + /// resolved. + /// + Dictionary m_resolvedFolders = new Dictionary(); + + /// + /// Record the creator id that should be associated with an asset. This is used to adjust asset creator ids + /// after OSP resolution (since OSP creators are only stored in the item + /// + protected Dictionary m_creatorIdForAssetId = new Dictionary(); public InventoryArchiveReadRequest( Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge) @@ -114,6 +131,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// /// Execute the request /// + /// + /// Only call this once. To load another IAR, construct another request object. + /// /// /// A list of the inventory nodes loaded. If folders were loaded then only the root folders are /// returned @@ -124,9 +144,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver try { string filePath = "ERROR"; - int successfulItemRestores = 0; - - HashSet loadedNodes = new HashSet(); List folderCandidates = InventoryArchiveUtils.FindFolderByPath( @@ -137,16 +154,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // Possibly provide an option later on to automatically create this folder if it does not exist m_log.ErrorFormat("[INVENTORY ARCHIVER]: Inventory path {0} does not exist", m_invPath); - return loadedNodes; + return m_loadedNodes; } - InventoryFolderBase rootDestinationFolder = folderCandidates[0]; + m_rootDestinationFolder = folderCandidates[0]; archive = new TarArchiveReader(m_loadStream); - - // In order to load identically named folders, we need to keep track of the folders that we have already - // resolved - Dictionary resolvedFolders = new Dictionary(); - byte[] data; TarArchiveReader.TarEntryType entryType; @@ -162,44 +174,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver } else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) { - if (!m_controlFileLoaded) - throw new Exception( - string.Format( - "The IAR you are trying to load does not list {0} before {1}. Aborting load", - ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.INVENTORY_PATH)); - - if (m_assetsLoaded) - throw new Exception( - string.Format( - "The IAR you are trying to load does not list all {0} before {1}. Aborting load", - ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); - - filePath = filePath.Substring(ArchiveConstants.INVENTORY_PATH.Length); - - // Trim off the file portion if we aren't already dealing with a directory path - if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) - filePath = filePath.Remove(filePath.LastIndexOf("/") + 1); - - InventoryFolderBase foundFolder - = ReplicateArchivePathToUserInventory( - filePath, rootDestinationFolder, resolvedFolders, loadedNodes); - - if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) - { - InventoryItemBase item = LoadItem(data, foundFolder); - - if (item != null) - { - successfulItemRestores++; - - // If we aren't loading the folder containing the item then well need to update the - // viewer separately for that item. - if (!loadedNodes.Contains(foundFolder)) - loadedNodes.Add(item); - } - } - - m_inventoryNodesLoaded = true; + LoadInventoryFile(filePath, entryType, data); } } @@ -208,9 +183,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_log.DebugFormat( "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures", m_successfulAssetRestores, m_failedAssetRestores); - m_log.InfoFormat("[INVENTORY ARCHIVER]: Successfully loaded {0} items", successfulItemRestores); + m_log.InfoFormat("[INVENTORY ARCHIVER]: Successfully loaded {0} items", m_successfulItemRestores); - return loadedNodes; + return m_loadedNodes; } finally { @@ -548,6 +523,54 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); } + /// + /// Load inventory file + /// + /// + /// + /// + protected void LoadInventoryFile(string path, TarArchiveReader.TarEntryType entryType, byte[] data) + { + if (!m_controlFileLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list {0} before {1}. Aborting load", + ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.INVENTORY_PATH)); + + if (m_assetsLoaded) + throw new Exception( + string.Format( + "The IAR you are trying to load does not list all {0} before {1}. Aborting load", + ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH)); + + path = path.Substring(ArchiveConstants.INVENTORY_PATH.Length); + + // Trim off the file portion if we aren't already dealing with a directory path + if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) + path = path.Remove(path.LastIndexOf("/") + 1); + + InventoryFolderBase foundFolder + = ReplicateArchivePathToUserInventory( + path, m_rootDestinationFolder, m_resolvedFolders, m_loadedNodes); + + if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) + { + InventoryItemBase item = LoadItem(data, foundFolder); + + if (item != null) + { + m_successfulItemRestores++; + + // If we aren't loading the folder containing the item then well need to update the + // viewer separately for that item. + if (!m_loadedNodes.Contains(foundFolder)) + m_loadedNodes.Add(item); + } + } + + m_inventoryNodesLoaded = true; + } + /// /// Load asset file /// @@ -578,6 +601,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_successfulAssetRestores); m_assetsLoaded = true; - } + } } } \ No newline at end of file From f6f8d124d16783d44758b19d621d027b9cf72572 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Mar 2011 00:52:43 +0000 Subject: [PATCH 134/192] minor: remove mono compiler warning --- OpenSim/Data/Tests/InventoryTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Data/Tests/InventoryTests.cs b/OpenSim/Data/Tests/InventoryTests.cs index 758f9704b7..6cf7e20f3f 100644 --- a/OpenSim/Data/Tests/InventoryTests.cs +++ b/OpenSim/Data/Tests/InventoryTests.cs @@ -153,7 +153,7 @@ namespace OpenSim.Data.Tests db.addInventoryFolder(f1); InventoryFolderBase f1a = db.getUserRootFolder(owner1); Assert.That(folder1, Is.EqualTo(f1a.ID), "Assert.That(folder1, Is.EqualTo(f1a.ID))"); - Assert.That(name1, Text.Matches(f1a.Name), "Assert.That(name1, Text.Matches(f1a.Name))"); + Assert.That(name1, Is.StringMatching(f1a.Name), "Assert.That(name1, Text.Matches(f1a.Name))"); } // we now have the following tree From cee5e3e264a71861dd018ee9bad47e6ea2ac0338 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 14 Mar 2011 12:56:50 +0100 Subject: [PATCH 135/192] Up the timeout on slow requests to 3000 to stop console spam. Make sure request method and target are reported correctly and drop the txn id as it's empty 99% of the time. --- .../Servers/HttpServer/BaseHttpServer.cs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 1d05b0284b..953ed856b6 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -378,6 +378,22 @@ namespace OpenSim.Framework.Servers.HttpServer /// public virtual void HandleRequest(OSHttpRequest request, OSHttpResponse response) { + if (request.HttpMethod == String.Empty) // Can't handle empty requests, not wasting a thread + { + try + { + SendHTML500(response); + } + catch + { + } + + return; + } + + string requestMethod = request.HttpMethod; + string uriString = request.RawUrl; + string reqnum = "unknown"; int tickstart = Environment.TickCount; @@ -495,7 +511,7 @@ namespace OpenSim.Framework.Servers.HttpServer request.InputStream.Close(); - // HTTP IN support. The script engine taes it from here + // HTTP IN support. The script engine takes it from here // Nothing to worry about for us. // if (buffer == null) @@ -609,9 +625,9 @@ namespace OpenSim.Framework.Servers.HttpServer { m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw ", e); } - catch (InvalidOperationException e) + catch (Exception e) { - m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw {0}", e); + m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw " + e.ToString()); SendHTML500(response); } finally @@ -619,9 +635,9 @@ namespace OpenSim.Framework.Servers.HttpServer // Every month or so this will wrap and give bad numbers, not really a problem // since its just for reporting, 200ms limit can be adjusted int tickdiff = Environment.TickCount - tickstart; - if (tickdiff > 500) + if (tickdiff > 3000) m_log.InfoFormat( - "[BASE HTTP SERVER]: slow request <{0}> for {1} took {2} ms", reqnum, request.RawUrl, tickdiff); + "[BASE HTTP SERVER]: slow {0} request for {1} from {2} took {3} ms", requestMethod, uriString, request.RemoteIPEndPoint.ToString(), tickdiff); } } From 9885f68f44ec91155d435ba9693eb57107378f45 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Mar 2011 22:47:14 +0000 Subject: [PATCH 136/192] When setting media on a prim values, use generic object permissions instead of media permissions. Media permissions are just meant to be checked when we want to know if a user should be shown the navigation bar or allowed to navigate. It should not be checked when we're setting the media up. This bug was preventing a user from ever setting any more values if they had unchecked the owner settings. --- .../Region/CoreModules/World/Permissions/PermissionsModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 364dd6cb28..170c35f814 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -642,7 +642,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions /// implemented by callers. /// /// - /// + /// This is a scene object group UUID /// /// protected bool GenericObjectPermission(UUID currentUser, UUID objId, bool denyOnLocked) @@ -1896,7 +1896,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions // "[PERMISSIONS]: Checking CanControlPrimMedia for {0} on {1} face {2} with control permissions {3}", // agentID, primID, face, me.ControlPermissions); - return GenericPrimMediaPermission(part, agentID, me.ControlPermissions); + return GenericObjectPermission(agentID, part.ParentGroup.UUID, true); } private bool CanInteractWithPrimMedia(UUID agentID, UUID primID, int face) From 48c62eb51bdf475303ee3007354b98fd6fd4fc05 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Mar 2011 23:17:15 +0000 Subject: [PATCH 137/192] Add current method output to all persistence level tests so that we can track where we are in the test suite --- OpenSim/Data/Tests/AssetTests.cs | 7 ++++ OpenSim/Data/Tests/EstateTests.cs | 17 ++++++++ OpenSim/Data/Tests/InventoryTests.cs | 27 +++++++++++++ OpenSim/Data/Tests/RegionTests.cs | 59 ++++++++++++++++++++++------ 4 files changed, 99 insertions(+), 11 deletions(-) diff --git a/OpenSim/Data/Tests/AssetTests.cs b/OpenSim/Data/Tests/AssetTests.cs index 32f74a9b1e..b5ae2444eb 100644 --- a/OpenSim/Data/Tests/AssetTests.cs +++ b/OpenSim/Data/Tests/AssetTests.cs @@ -32,6 +32,7 @@ using NUnit.Framework; using NUnit.Framework.Constraints; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Tests.Common; using System.Data.Common; using log4net; @@ -105,6 +106,8 @@ namespace OpenSim.Data.Tests [Test] public void T001_LoadEmpty() { + TestHelper.InMethod(); + Assert.That(m_db.ExistsAsset(uuid1), Is.False); Assert.That(m_db.ExistsAsset(uuid2), Is.False); Assert.That(m_db.ExistsAsset(uuid3), Is.False); @@ -113,6 +116,8 @@ namespace OpenSim.Data.Tests [Test] public void T010_StoreReadVerifyAssets() { + TestHelper.InMethod(); + AssetBase a1 = new AssetBase(uuid1, "asset one", (sbyte)AssetType.Texture, critter1.ToString()); AssetBase a2 = new AssetBase(uuid2, "asset two", (sbyte)AssetType.Texture, critter2.ToString()); AssetBase a3 = new AssetBase(uuid3, "asset three", (sbyte)AssetType.Texture, critter3.ToString()); @@ -178,6 +183,8 @@ namespace OpenSim.Data.Tests [Test] public void T020_CheckForWeirdCreatorID() { + TestHelper.InMethod(); + // It is expected that eventually the CreatorID might be an arbitrary string (an URI) // rather than a valid UUID (?). This test is to make sure that the database layer does not // attempt to convert CreatorID to GUID, but just passes it both ways as a string. diff --git a/OpenSim/Data/Tests/EstateTests.cs b/OpenSim/Data/Tests/EstateTests.cs index 3354e284da..8d332daa2f 100644 --- a/OpenSim/Data/Tests/EstateTests.cs +++ b/OpenSim/Data/Tests/EstateTests.cs @@ -31,6 +31,7 @@ using NUnit.Framework; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; +using OpenSim.Tests.Common; using System.Text; using log4net; using System.Reflection; @@ -106,6 +107,8 @@ namespace OpenSim.Data.Tests [Test] public void T010_EstateSettingsSimpleStorage_MinimumParameterSet() { + TestHelper.InMethod(); + EstateSettingsSimpleStorage( REGION_ID, DataTestUtil.STRING_MIN, @@ -137,6 +140,8 @@ namespace OpenSim.Data.Tests [Test] public void T011_EstateSettingsSimpleStorage_MaximumParameterSet() { + TestHelper.InMethod(); + EstateSettingsSimpleStorage( REGION_ID, DataTestUtil.STRING_MAX(64), @@ -168,6 +173,8 @@ namespace OpenSim.Data.Tests [Test] public void T012_EstateSettingsSimpleStorage_AccurateParameterSet() { + TestHelper.InMethod(); + EstateSettingsSimpleStorage( REGION_ID, DataTestUtil.STRING_MAX(1), @@ -199,6 +206,8 @@ namespace OpenSim.Data.Tests [Test] public void T012_EstateSettingsRandomStorage() { + TestHelper.InMethod(); + // Letting estate store generate rows to database for us EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true); new PropertyScrambler() @@ -218,6 +227,8 @@ namespace OpenSim.Data.Tests [Test] public void T020_EstateSettingsManagerList() { + TestHelper.InMethod(); + // Letting estate store generate rows to database for us EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true); @@ -237,6 +248,8 @@ namespace OpenSim.Data.Tests [Test] public void T021_EstateSettingsUserList() { + TestHelper.InMethod(); + // Letting estate store generate rows to database for us EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true); @@ -256,6 +269,8 @@ namespace OpenSim.Data.Tests [Test] public void T022_EstateSettingsGroupList() { + TestHelper.InMethod(); + // Letting estate store generate rows to database for us EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true); @@ -275,6 +290,8 @@ namespace OpenSim.Data.Tests [Test] public void T022_EstateSettingsBanList() { + TestHelper.InMethod(); + // Letting estate store generate rows to database for us EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true); diff --git a/OpenSim/Data/Tests/InventoryTests.cs b/OpenSim/Data/Tests/InventoryTests.cs index 6cf7e20f3f..cf3bac1cf9 100644 --- a/OpenSim/Data/Tests/InventoryTests.cs +++ b/OpenSim/Data/Tests/InventoryTests.cs @@ -30,6 +30,7 @@ using log4net.Config; using NUnit.Framework; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Tests.Common; using log4net; using System.Reflection; using System.Data.Common; @@ -113,6 +114,8 @@ namespace OpenSim.Data.Tests [Test] public void T001_LoadEmpty() { + TestHelper.InMethod(); + Assert.That(db.getInventoryFolder(zero), Is.Null); Assert.That(db.getInventoryFolder(folder1), Is.Null); Assert.That(db.getInventoryFolder(folder2), Is.Null); @@ -131,6 +134,8 @@ namespace OpenSim.Data.Tests [Test] public void T010_FolderNonParent() { + TestHelper.InMethod(); + InventoryFolderBase f1 = NewFolder(folder2, folder1, owner1, name2); // the folder will go in db.addInventoryFolder(f1); @@ -141,6 +146,8 @@ namespace OpenSim.Data.Tests [Test] public void T011_FolderCreate() { + TestHelper.InMethod(); + InventoryFolderBase f1 = NewFolder(folder1, zero, owner1, name1); // TODO: this is probably wrong behavior, but is what we have // db.updateInventoryFolder(f1); @@ -164,6 +171,8 @@ namespace OpenSim.Data.Tests [Test] public void T012_FolderList() { + TestHelper.InMethod(); + InventoryFolderBase f2 = NewFolder(folder3, folder1, owner1, name3); db.addInventoryFolder(f2); @@ -178,6 +187,8 @@ namespace OpenSim.Data.Tests [Test] public void T013_FolderHierarchy() { + TestHelper.InMethod(); + int n = db.getFolderHierarchy(zero).Count; // (for dbg - easier to see what's returned) Assert.That(n, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0))"); n = db.getFolderHierarchy(folder1).Count; @@ -191,6 +202,8 @@ namespace OpenSim.Data.Tests [Test] public void T014_MoveFolder() { + TestHelper.InMethod(); + InventoryFolderBase f2 = db.getInventoryFolder(folder2); f2.ParentID = folder3; db.moveInventoryFolder(f2); @@ -205,6 +218,8 @@ namespace OpenSim.Data.Tests [Test] public void T015_FolderHierarchy() { + TestHelper.InMethod(); + Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0))"); Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2), "Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2))"); Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0))"); @@ -216,6 +231,8 @@ namespace OpenSim.Data.Tests [Test] public void T100_NoItems() { + TestHelper.InMethod(); + Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0))"); Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0))"); Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0))"); @@ -228,6 +245,8 @@ namespace OpenSim.Data.Tests [Test] public void T101_CreatItems() { + TestHelper.InMethod(); + db.addInventoryItem(NewItem(item1, folder3, owner1, iname1, asset1)); db.addInventoryItem(NewItem(item2, folder3, owner1, iname2, asset2)); db.addInventoryItem(NewItem(item3, folder3, owner1, iname3, asset3)); @@ -237,6 +256,8 @@ namespace OpenSim.Data.Tests [Test] public void T102_CompareItems() { + TestHelper.InMethod(); + InventoryItemBase i1 = db.getInventoryItem(item1); InventoryItemBase i2 = db.getInventoryItem(item2); InventoryItemBase i3 = db.getInventoryItem(item3); @@ -254,6 +275,8 @@ namespace OpenSim.Data.Tests [Test] public void T103_UpdateItem() { + TestHelper.InMethod(); + // TODO: probably shouldn't have the ability to have an // owner of an item in a folder not owned by the user @@ -272,6 +295,8 @@ namespace OpenSim.Data.Tests [Test] public void T104_RandomUpdateItem() { + TestHelper.InMethod(); + PropertyScrambler folderScrambler = new PropertyScrambler() .DontScramble(x => x.Owner) @@ -329,6 +354,8 @@ namespace OpenSim.Data.Tests [Test] public void T999_StillNull() { + TestHelper.InMethod(); + // After all tests are run, these should still return no results Assert.That(db.getInventoryFolder(zero), Is.Null); Assert.That(db.getInventoryItem(zero), Is.Null); diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs index 9598716e0d..2dc177a0ce 100644 --- a/OpenSim/Data/Tests/RegionTests.cs +++ b/OpenSim/Data/Tests/RegionTests.cs @@ -35,6 +35,7 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; +using OpenSim.Tests.Common; using log4net; using System.Reflection; using System.Data.Common; @@ -120,15 +121,18 @@ namespace OpenSim.Data.Tests string[] reg_tables = new string[] { "prims", "primshapes", "primitems", "terrain", "land", "landaccesslist", "regionban", "regionsettings" }; + if (m_rebuildDB) { DropTables(reg_tables); ResetMigrations("RegionStore"); - }else + } + else + { ClearTables(reg_tables); + } } - // Test Plan // Prims // - empty test - 001 @@ -147,6 +151,8 @@ namespace OpenSim.Data.Tests [Test] public void T001_LoadEmpty() { + TestHelper.InMethod(); + List objs = db.LoadObjects(region1); List objs3 = db.LoadObjects(region3); List land = db.LoadLandObjects(region1); @@ -163,6 +169,8 @@ namespace OpenSim.Data.Tests [Test] public void T010_StoreSimpleObject() { + TestHelper.InMethod(); + SceneObjectGroup sog = NewSOG("object1", prim1, region1); SceneObjectGroup sog2 = NewSOG("object2", prim2, region1); @@ -196,6 +204,8 @@ namespace OpenSim.Data.Tests [Test] public void T011_ObjectNames() { + TestHelper.InMethod(); + List objs = db.LoadObjects(region1); foreach (SceneObjectGroup sog in objs) { @@ -208,6 +218,8 @@ namespace OpenSim.Data.Tests [Test] public void T012_SceneParts() { + TestHelper.InMethod(); + UUID tmp0 = UUID.Random(); UUID tmp1 = UUID.Random(); UUID tmp2 = UUID.Random(); @@ -241,6 +253,8 @@ namespace OpenSim.Data.Tests [Test] public void T013_DatabasePersistency() { + TestHelper.InMethod(); + // Sets all ScenePart parameters, stores and retrieves them, then check for consistency with initial data // The commented Asserts are the ones that are unchangeable (when storing on the database, their "Set" values are ignored // The ObjectFlags is an exception, if it is entered incorrectly, the object IS REJECTED on the database silently. @@ -416,6 +430,8 @@ namespace OpenSim.Data.Tests [Test] public void T014_UpdateObject() { + TestHelper.InMethod(); + string text1 = "object1 text"; SceneObjectGroup sog = FindSOG("object1", region1); sog.RootPart.Text = text1; @@ -521,6 +537,8 @@ namespace OpenSim.Data.Tests [Test] public void T015_LargeSceneObjects() { + TestHelper.InMethod(); + UUID id = UUID.Random(); Dictionary mydic = new Dictionary(); SceneObjectGroup sog = NewSOG("Test SOG", id, region4); @@ -565,6 +583,8 @@ namespace OpenSim.Data.Tests //[Test] public void T016_RandomSogWithSceneParts() { + TestHelper.InMethod(); + PropertyScrambler scrambler = new PropertyScrambler() .DontScramble(x => x.UUID); @@ -631,15 +651,16 @@ namespace OpenSim.Data.Tests return sog; } - // NOTE: it is a bad practice to rely on some of the previous tests having been run before. // If the tests are run manually, one at a time, each starts with full class init (DB cleared). // Even when all tests are run, NUnit 2.5+ no longer guarantee a specific test order. // We shouldn't expect to find anything in the DB if we haven't put it there *in the same test*! - + [Test] public void T020_PrimInventoryEmpty() { + TestHelper.InMethod(); + SceneObjectGroup sog = GetMySOG("object1"); TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1); Assert.That(t, Is.Null); @@ -659,10 +680,11 @@ namespace OpenSim.Data.Tests db.StorePrimInventory(sog.RootPart.UUID, list); } - [Test] public void T021_PrimInventoryBasic() { + TestHelper.InMethod(); + SceneObjectGroup sog = GetMySOG("object1"); InventoryItemBase i = NewItem(item1, zero, zero, itemname1, zero); @@ -690,20 +712,19 @@ namespace OpenSim.Data.Tests Assert.That(t2.Name, Is.EqualTo("My New Name"), "Assert.That(t.Name, Is.EqualTo(\"My New Name\"))"); // Removing inventory - List list = new List(); db.StorePrimInventory(prim1, list); sog = FindSOG("object1", region1); t = sog.GetInventoryItem(sog.RootPart.LocalId, item1); Assert.That(t, Is.Null); - } - [Test] public void T025_PrimInventoryPersistency() { + TestHelper.InMethod(); + InventoryItemBase i = new InventoryItemBase(); UUID id = UUID.Random(); i.ID = id; @@ -775,6 +796,8 @@ namespace OpenSim.Data.Tests [ExpectedException(typeof(ArgumentException))] public void T026_PrimInventoryMany() { + TestHelper.InMethod(); + UUID i1,i2,i3,i4; i1 = UUID.Random(); i2 = UUID.Random(); @@ -805,15 +828,18 @@ namespace OpenSim.Data.Tests [Test] public void T052_RemoveObject() { + TestHelper.InMethod(); + db.RemoveObject(prim1, region1); SceneObjectGroup sog = FindSOG("object1", region1); Assert.That(sog, Is.Null); } - [Test] public void T100_DefaultRegionInfo() { + TestHelper.InMethod(); + RegionSettings r1 = db.LoadRegionSettings(region1); Assert.That(r1.RegionUUID, Is.EqualTo(region1), "Assert.That(r1.RegionUUID, Is.EqualTo(region1))"); @@ -824,6 +850,8 @@ namespace OpenSim.Data.Tests [Test] public void T101_UpdateRegionInfo() { + TestHelper.InMethod(); + int agentlimit = random.Next(); double objectbonus = random.Next(); int maturity = random.Next(); @@ -922,13 +950,14 @@ namespace OpenSim.Data.Tests //Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid), "Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid))"); Assert.That(r1a.FixedSun,Is.True); Assert.That(r1a.SunPosition, Is.EqualTo(sunpos), "Assert.That(r1a.SunPosition, Is.EqualTo(sunpos))"); - Assert.That(r1a.Covenant, Is.EqualTo(cov), "Assert.That(r1a.Covenant, Is.EqualTo(cov))"); - + Assert.That(r1a.Covenant, Is.EqualTo(cov), "Assert.That(r1a.Covenant, Is.EqualTo(cov))"); } [Test] public void T300_NoTerrain() { + TestHelper.InMethod(); + Assert.That(db.LoadTerrain(zero), Is.Null); Assert.That(db.LoadTerrain(region1), Is.Null); Assert.That(db.LoadTerrain(region2), Is.Null); @@ -938,6 +967,8 @@ namespace OpenSim.Data.Tests [Test] public void T301_CreateTerrain() { + TestHelper.InMethod(); + double[,] t1 = GenTerrain(height1); db.StoreTerrain(t1, region1); @@ -950,6 +981,8 @@ namespace OpenSim.Data.Tests [Test] public void T302_FetchTerrain() { + TestHelper.InMethod(); + double[,] baseterrain1 = GenTerrain(height1); double[,] baseterrain2 = GenTerrain(height2); double[,] t1 = db.LoadTerrain(region1); @@ -960,6 +993,8 @@ namespace OpenSim.Data.Tests [Test] public void T303_UpdateTerrain() { + TestHelper.InMethod(); + double[,] baseterrain1 = GenTerrain(height1); double[,] baseterrain2 = GenTerrain(height2); db.StoreTerrain(baseterrain2, region1); @@ -972,6 +1007,8 @@ namespace OpenSim.Data.Tests [Test] public void T400_EmptyLand() { + TestHelper.InMethod(); + Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0))"); Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0))"); Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0))"); From 8509678e483bc7b91721d25d822be0a21e4f7be9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Mar 2011 23:26:50 +0000 Subject: [PATCH 138/192] Add method doc to T015_LargeSceneObjects() and slightly clean up formatting. This test takes a considerable time on SQLite but should remain since it's testing storage and retrieval of a scene object with 31 parts. --- OpenSim/Data/Tests/RegionTests.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs index 2dc177a0ce..edc9d84c9b 100644 --- a/OpenSim/Data/Tests/RegionTests.cs +++ b/OpenSim/Data/Tests/RegionTests.cs @@ -533,7 +533,10 @@ namespace OpenSim.Data.Tests Assert.That(clickaction,Is.EqualTo(p.ClickAction), "Assert.That(clickaction,Is.EqualTo(p.ClickAction))"); Assert.That(scale,Is.EqualTo(p.Scale), "Assert.That(scale,Is.EqualTo(p.Scale))"); } - + + /// + /// Test storage and retrieval of a scene object with a large number of parts. + /// [Test] public void T015_LargeSceneObjects() { @@ -543,7 +546,7 @@ namespace OpenSim.Data.Tests Dictionary mydic = new Dictionary(); SceneObjectGroup sog = NewSOG("Test SOG", id, region4); mydic.Add(sog.RootPart.UUID,sog.RootPart); - for (int i=0;i<30;i++) + for (int i = 0; i < 30; i++) { UUID tmp = UUID.Random(); SceneObjectPart sop = NewSOP(("Test SOP " + i.ToString()),tmp); @@ -568,7 +571,7 @@ namespace OpenSim.Data.Tests SceneObjectGroup retsog = FindSOG("Test SOG", region4); SceneObjectPart[] parts = retsog.Parts; - for (int i=0;i<30;i++) + for (int i = 0; i < 30; i++) { SceneObjectPart cursop = mydic[parts[i].UUID]; Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition), "Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition))"); From 38c3be07b8e9c6a4cec312118bf908305af6495f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Mar 2011 23:32:44 +0000 Subject: [PATCH 139/192] when retrieving a sog in database tests, don't bother adding the scene since this isn't used --- OpenSim/Data/Tests/RegionTests.cs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs index edc9d84c9b..e049826eb8 100644 --- a/OpenSim/Data/Tests/RegionTests.cs +++ b/OpenSim/Data/Tests/RegionTests.cs @@ -1047,25 +1047,12 @@ namespace OpenSim.Data.Tests return true; } - private SceneObjectGroup FindSOG(string name, UUID r) { List objs = db.LoadObjects(r); foreach (SceneObjectGroup sog in objs) - { - SceneObjectPart p = sog.RootPart; - if (p.Name == name) { - RegionInfo regionInfo = new RegionInfo(); - regionInfo.RegionID = r; - regionInfo.RegionLocX = 0; - regionInfo.RegionLocY = 0; - - Scene scene = new Scene(regionInfo); - sog.SetScene(scene); - + if (sog.Name == name) return sog; - } - } return null; } From fdcf910e00824ceb3db5166a2b3173c882ee059f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Mar 2011 23:35:03 +0000 Subject: [PATCH 140/192] Fix a bug in T015_LargeSceneObjects() where the large scene object was stored 31 times (1 time for each added part) instead of once at the end, even though only the largest 31 prim scene object was retrieved and tested. This considerably speeds up the test, when on sqlite it now only takes 2 seconds rather than 30+ --- OpenSim/Data/Tests/RegionTests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs index e049826eb8..44cf1ab3ef 100644 --- a/OpenSim/Data/Tests/RegionTests.cs +++ b/OpenSim/Data/Tests/RegionTests.cs @@ -565,10 +565,11 @@ namespace OpenSim.Data.Tests sop.Acceleration = accel; mydic.Add(tmp,sop); - sog.AddPart(sop); - db.StoreObject(sog, region4); + sog.AddPart(sop); } + db.StoreObject(sog, region4); + SceneObjectGroup retsog = FindSOG("Test SOG", region4); SceneObjectPart[] parts = retsog.Parts; for (int i = 0; i < 30; i++) From 28c335e25f6641b259f1e3315045f253887429e4 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 15 Mar 2011 17:16:50 -0400 Subject: [PATCH 141/192] Hello, World! --- CONTRIBUTORS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 38343a4bbc..a0af1ca941 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -28,7 +28,7 @@ people that make the day to day of OpenSim happen. * Diva (Crista Lopes, University of California, Irvine) * nlin (3Di) * Arthur Rodrigo S Valadares (IBM) - +* BlueWall (James Hughes) = Past Open Sim Developers = These folks are alumns of the OpenSim core group, but are now From aadd0e8d42b0a5b401cde9d4d3a56ce2e527201a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 16 Mar 2011 00:14:58 +0000 Subject: [PATCH 142/192] minor: bring comment into line with code reality --- OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 953ed856b6..ccec9b70eb 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -633,7 +633,7 @@ namespace OpenSim.Framework.Servers.HttpServer finally { // Every month or so this will wrap and give bad numbers, not really a problem - // since its just for reporting, 200ms limit can be adjusted + // since its just for reporting, tickdiff limit can be adjusted int tickdiff = Environment.TickCount - tickstart; if (tickdiff > 3000) m_log.InfoFormat( From a3651eb5d0325807baa9a2bdc9a1bae8d413bc9f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 17 Mar 2011 05:48:42 -0400 Subject: [PATCH 143/192] Thanks Kevin Cozens for a patch that: Fixes several spelling mistakes --- .../Rest/Inventory/RestInventoryServices.cs | 6 +++--- OpenSim/Framework/Servers/HttpServer/OSHttpHandler.cs | 2 +- OpenSim/Framework/UndoStack.cs | 2 +- OpenSim/Region/CoreModules/LightShare/LightShareModule.cs | 4 ++-- .../CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index b4156621bb..536f167793 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs @@ -2129,17 +2129,17 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory } catch (DllNotFoundException) { - Rest.Log.ErrorFormat("OpenJpeg is not installed correctly on this system. Asset Data is emtpy for {0}", ic.Item.Name); + Rest.Log.ErrorFormat("OpenJpeg is not installed correctly on this system. Asset Data is empty for {0}", ic.Item.Name); ic.Asset.Data = new Byte[0]; } catch (IndexOutOfRangeException) { - Rest.Log.ErrorFormat("OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", ic.Item.Name); + Rest.Log.ErrorFormat("OpenJpeg was unable to encode this. Asset Data is empty for {0}", ic.Item.Name); ic.Asset.Data = new Byte[0]; } catch (Exception) { - Rest.Log.ErrorFormat("OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", ic.Item.Name); + Rest.Log.ErrorFormat("OpenJpeg was unable to encode this. Asset Data is empty for {0}", ic.Item.Name); ic.Asset.Data = new Byte[0]; } } diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpHandler.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpHandler.cs index 129a5449fb..2c2b47ded2 100644 --- a/OpenSim/Framework/Servers/HttpServer/OSHttpHandler.cs +++ b/OpenSim/Framework/Servers/HttpServer/OSHttpHandler.cs @@ -83,7 +83,7 @@ namespace OpenSim.Framework.Servers.HttpServer /// /// Regular expression used to match against path of the /// incoming HTTP request. If you want to match any string - /// either use '.*' or null. To match on the emtpy string use + /// either use '.*' or null. To match on the empty string use /// '^$'. /// public virtual Regex Path diff --git a/OpenSim/Framework/UndoStack.cs b/OpenSim/Framework/UndoStack.cs index 4d800ae425..fde63b1cf1 100644 --- a/OpenSim/Framework/UndoStack.cs +++ b/OpenSim/Framework/UndoStack.cs @@ -90,7 +90,7 @@ namespace OpenSim.Framework return deleted; } else - throw new InvalidOperationException("Cannot pop from emtpy stack"); + throw new InvalidOperationException("Cannot pop from empty stack"); } public T Peek() diff --git a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs index 88f392dcdb..00b0aa9137 100644 --- a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs +++ b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs @@ -75,7 +75,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare m_scene = scene; m_scene.RegisterModuleInterface(this); m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; - + // ini file settings try { @@ -229,7 +229,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare { Command wlload = new Command("load", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleLoad, "Load windlight profile from the database and broadcast"); Command wlenable = new Command("enable", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleEnable, "Enable the windlight plugin"); - Command wldisable = new Command("disable", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleDisable, "Enable the windlight plugin"); + Command wldisable = new Command("disable", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleDisable, "Disable the windlight plugin"); m_commander.RegisterCommand("load", wlload); m_commander.RegisterCommand("enable", wlenable); diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs index 071314ac9a..aa14054cf5 100644 --- a/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs +++ b/OpenSim/Region/CoreModules/World/LegacyMap/TexturedMapTileRenderer.cs @@ -188,17 +188,17 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap } catch (DllNotFoundException) { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg is not installed correctly on this system. Asset Data is emtpy for {0}", id); + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg is not installed correctly on this system. Asset Data is empty for {0}", id); } catch (IndexOutOfRangeException) { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is empty for {0}", id); } catch (Exception) { - m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is emtpy for {0}", id); + m_log.ErrorFormat("[TexturedMapTileRenderer]: OpenJpeg was unable to encode this. Asset Data is empty for {0}", id); } return null; From f4a30f3a234e8fbc946bf3fd5a1f96a39d9e79ea Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 18 Mar 2011 12:12:08 -0400 Subject: [PATCH 144/192] Upgrade SQLite: Fixes metadata issues. Tested on Linux and Windows - may fix issues seen on OSx as well. --- bin/libsqlite3.so.0 | Bin 0 -> 871398 bytes bin/libsqlite3.txt | 1 + bin/sqlite-3.6.21.so | Bin 392316 -> 0 bytes 3 files changed, 1 insertion(+) create mode 100755 bin/libsqlite3.so.0 create mode 100644 bin/libsqlite3.txt delete mode 100644 bin/sqlite-3.6.21.so diff --git a/bin/libsqlite3.so.0 b/bin/libsqlite3.so.0 new file mode 100755 index 0000000000000000000000000000000000000000..0512d8a3c0d09d93c9651848dc6d1ce837bff149 GIT binary patch literal 871398 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≠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%0A*)?WB%5pV;CdjHYbSIaPPc6qO}#=_~Bc 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

#V84|g zux~#;Dt5LsL1fpXwvwq|1Xtc*Q*H^KD5W?nW2WzZhyC=o!ykM0RLR|KdJ(Za@$b=P zlnMZ}0@9bwI**Xcw{(ZIO@o=c)Rirnb^LuH3_3it3Zw3Vo=j^vvTVDOS3Ok)0o0E2W>Cdd(8RVha%!;Y zdO?rqgE&Vv$h6N63Nr&6Eq-IrP$1fn9{9-+dS`n>)WA7^j)&%9og0so1Qxdl8c-!j7qjH$IZ}W1Ty_lZa z<~z-Caa{AP_x14QHM4I1(AqzRg5dkz##$3-Mmdu*xai5!%S*^CwD^_u|U(u zpJn6PjtFd@jDe+flh5Bj3=qB?V;(Ymq(kop+C#!9`fe3L=^GXpOH|E>XU~xN<_3Wq z4UOcjaG0l8QTM;0H1a5YCK8XkW?OEvMgH8Ox{@6lUP;Y{go6rpse*5Z_xVKm6~IW` zm0&b{qtYVkpo%cWwPP>?Af`Zs0t)Oj3~S#~+t;@PQPekU@fxs$4jYlgTSG_Jolde> zH*jo7d$-aE8)&3!gK39+=>AoF(Z)T4UHur1^r3uYCn`eQ3)JT3xQJ;M759Dv63$n8 z5ym6S*1Oc`G9t-s4uwQy7X*mzJ&lh^bY<%b%lfM@C@*$58@ht>E^57z zHq?BsY9`WP9J^)!dy}=9vNkP5Vf<0OeN*^;`>D>-aVXu2NmPlf<^>X`wwy_Keajrp zLwF(tE!r=>p)T#YMlqIys{80r_Zie}<6+b`K%8g;=_7_3Pm4&ViL{D*Kl)*%GxCTWOypt?YI3* z)GV(&@O!_>P@mi1xx?1AlyQ$1G+kC%w%)-XU>f29q=7`9*4YNh9n2*#-?~(8L8Mu~7G=AxZ9i`z5Yt|?fDUY4fDCX! zVOzJa`RUjPR2d}CiAF|RgZ~tdfD-Nt-vwPXX8#~G>Fwq{BNU9vj2vGio@yQ-lm zgP)LNZWnyFQxR8H;Z1j6uY55)%~_P29QJE)`E(l90qwz5{;efdyis+F7|;N#d=fkx%I;QFD$A9-$JsURwuiiKLt>u6F< z_j->fD%#4L0HY!}0;umn$q5K2I5=WXF+c*Sc{zc}x|bT$C_AT^!nAi@$V_ChZJhsobwPu_^ioD3Jh7nfVgOs zx!aV!X~aIoJTjh_J;p4#O}Uv?wYl?o8dlSEA+rNN>GX}d`;qZ6RV#RKgwrRxl9O5q z)$H0L9A)jI%at?LYLH(eJdcRbzx*L^CL@taF{6r`Y1KXtHZK*DyqHETNVI!BvuISb zuv4265f0h+;{3B-?W?*A52Z5Z-EbaYb)ZHW>rVD8*3ldY+?rtHa`(^J!4N6F1sJ;oI zRz|4drDSe4j3Ism%jtnxa$nu{9_k$Bl}uLWRu*LVJnAY-JIy{SY)%y9(wvjcoV-T3 zU|ieJs}D|CCKet^EDz`%^O16HNnIHGNhWPYa3F@F$j;xZ2JX03);}4?G7^X>igz1h zaj5C@_DLhz9WfCl7JIVTmz}J=umwH#_Zb=?u^-+)O4;Bk>fVq;Jyd93NgUTxHm#iF zi7WL(KOSvN^y4Twi?QY(dp8RSWpJ~<#mi9UEy>Iia)VOlqsbgi2=B9MjfC*cu5~sj z1&o&h#@|ceF_4RrWdorGZb~-rg{Xlapjw9Mgnrm`(i^oy;i2qxn?_{dJ!Lre7Ny4~ zp^d*W6h_m-Bh=&NeAnmxW?|fA*s-_Zxur8cYC-O=o8%`U9J!ekk!iB-TjiQ6KM_|6 zfx7vY5@yC#MVRcWHzrHC58vNJo3VuN`W&@cn}_B%w*OEfiA@F38IFK(bhJYkCY%G8 z{tX%}dx?5qVh!m6^i}2ka&sUp(V)J9%1aJP4D2E~Z)vQylY!i+bk}p96`+i)>7TK| zBL&r<&Yan3&>--{<8W=+xc1#qDztG0!tJfq_tq<|ZD~}L;`@~x7CO?>iu3^E z@_z!JD#*YAx}fi?fAcqeLJk@E9qX31V4__yK{*=~YomSu(MImU^6{5}8QCPP9`DM* zq$y=f^FGsK8uL#_YZR@Q1b--}a@vZcq)W5VQ~RKZBcNum{M~s}R$S8O?}n=1a!pGZ z4dqyW;@=QT+QwM!Q=d_i0wqh4WjJ?|t8|!I@q%4{rPj;dZ=IN;c+!NvQ{4$$drWL! zeYFz@Gm6v9?rnQqx2nA7tW?TQtPDwzf|X<+FZ-1fChxtAc$Ptv3 ztP<^=b3h{NaFo?ffGDpN0o!Hjz2C>rIP1Q(HYUl|e?2NW&sOQHO|#AP`sn@sW_UH; zl&acV3BXYjRr~#?`Mb|G;)p_0X7$DpgVa}jhNk4n=QcGZ9irBy6*2nM;d+M&(~ted z#A|%`;9uzEsE=mQ1I(YwDWPm+Oc$kB@giQD2(0z5?BDR^08@@RsX#R*&33H$wv@K& zEB0^-`Gs#jBOb875W3~Tb|CXPwZJqmhF=8SyrXW-&Lt-Hn_S{Nm3Tm1qop9&kBV9; z9`M{w1?H&04PL)#}__otFL?KPIB3!o=~-M>?vPl9FzqN*0|c%Kn?nQfqY z+7fhnZVb<(G5Kygi23!k*<#Uct7a=r($BTX(nyWEZhNn)s`ZV}Ta4^Qd0PuF%7=Qw zd`qLnOwaubC>FQ)o1zhaH*~@9xJw+F!f<}hqC9LfE7<}*8(7uPZHdnZt8RRUSZU(* zQT-qV9*bpjtBdk(wz0;RN_ccUAb*oo8?+XkLP9tO4LjY*)}sh(q_C`06}aw{Sohwz zhaD#uXz8vH6@p$2mdCzqD|SR(rh9;C+qmIA;yp$8N*2v5EsevcyYJk^`Z2TB;Hx6c zzkN3PCiS;F>fTCH(L}TyE7E`pXNe6#6$oMT9MZY7xhAV^`{jOerQ+zJUphwSj3}QA z|6ynQ=UBUf=M~1sT=2%G^~>=DuwcFnd7X`RS)=+lJn)Ioza^~W!qM;8udy5ku?0Lw zV<*D%mfmEkqER2R*XjMb&7!GVYY42J8)qc=lQfZYGf^&WB$5j4@4kO@YT)1i&iQD! z5uJ8yUl8f3D2F2~&j3A#7}W(&K|R$$67wa%T@DroWE zk?QBvt4++F>R%f9p$bC4*sp75)aM(W$EOn$Rqmiji@(&%5@tz-yw!JuZlrhOQgfhe zotMb*yP6z_na0YsEKA8!iqBfU7NYGZBRsx&L6w-03?7DH?DP6&Ti-q$-un3ehL46iJjad=O6 zy+7)K4>)VBD)3(lfW-&>n^ar6>vNOS5%s`<&R_sEB><>+C+7NkN+TfZPiS`tUq#UG0O`RmzbZs?{|OzB%NWm#9My z?$tVkA?j#uhSeMox$A2oYKo{3VN|wy3e8I;W4?Wp&4d%M-8fz_-OkE-rT0C!-le?N z!SXcXi6l$zcf*TL?~}T%juz+te6Ixm{b@f_?k7+Ls4!KPCt1LP4Us39u<|WIolemW z0m`=DQf00&+R-)Zu&XLJXdz}4|3vaYr`0^8OhpfvjSAH!CC#J1I zgx-~snzO8*VkMJ72nZJ?$0WOQ3|-M-O0SzLq!rIi=BW414$)ck8ih+(^~|)kea$#O z%L;(@M;KuaOC>BDGAA%1!RsoIuAXmMM|J>GpLN{8)mK~3v|Hb`@g6R-wQSPxU8+2f zO;*kY+#8tgeus}Du70UgPqmAT$?aEDgXqet;F7?#u!YQeyDVVYIsu0p98Qy%+2kA) zxd`bX_H@L0Q=xhPQ#R&a4=P?cGY5A|Aj}3;$Kaole!R}b<}+(e@wDKR~RWfVJykw;YX_M7P%$CNpP zu9Ji9D;`!Sn~X{{WTOI9dXu{g5P zBo`*QAX*SaS{Rv5F_A6w1lB~l2!*7WWKn7m94c-feATR}g9KhwPhnrgP^e-eT1iw3 za@QCp*t~SkiSC{zmjV-m?c)NO|0ao=aO2nzgR{PyXv(6iLi>>T18FKByXd_#!(I?J zkpb)@B!KGfK5`2Iwe%RpCm11@1xDGdXujI&;R3jlUEC_aXKsni?bg0(Ln=}?W}2L~ z4vciS){l(=biBdRzK*uE$D+l+Xu)1l*z>{LP|k-5p!|`IY-rHd-9P-PR=&c`C`c6C zo~7L$>F@{qy*K()=uv~&OCQPRhm7He?8KrN9<{DxldWv?o=JVfA6{e11Hl%AFuJ&8 z1KrRg!?#}QWJN(yM+Xgf4T;`h3NuMmiAds4ECl`;1L&-Atu1I`^ncVo{FCT+!~nt- z2A>db*Kh)Ac7}Vv>nc!$aCFDPCj}YJ<_^=|IAJaT!x1k0cO=NYDyU=OY=cfCcH(Pa zHyrl!eq<*a(#-H)a3}b`IE^A+2FoYk92RZ9s`{3X&~O~w`Lx&Cl-nN#V@==K?O8%f z%`MKqraNJd2rN66cXX3mQK62^Y-h}`5dSfU_&o8(*GDZ}6y=D{4_U5(BLZHIbWkL; zf()BOE&ZwtV{pf&_Z4RKgqjC*CP&@-{cBjB)%84n`SuRqlz|(t@s`s!{VRwM&KGuj zVn1Bi4q|rpx`B=y(rLS5iNhRj%pL z>!7_Vx84NoHCk+i=To2d^g>T`A~SLU0ZG=i{i&MSN^9XqLM35*zwfVNb|Z&xMQs$? zrT9wD$TrZ=9x&^my$qPG0Yxg5O%j78NpiYwn4;hh{U>IGe(f`?`)U$ z?j4$`JoYg*bEQ7X=VG|O!>&MzGCM%i51$S`!uJ5FEyVxjQPmsnmrs5;!9I9{Q$a;Y zRLa}Z=$Yu#lCj-J%S(_WVfVkdmJ^)~SDIRX-aQB4C z9gH{&JHRf>cBF68y*wmSXX3)|1(UQvYmqKJd7eBjB8BgZHui#rVbG2#e%?MZzhIz| zc3~U$D!cny=N7lK|7YhG$D@rvb9dLu1<7c-->BO1mCKj^Amw(@RE+W!SnF-&A`xnt zPy_SH9Pf}lpTb+3kC4oy@uVT+6^H8R88t(NU%s2K>n9D>E)lO)-9J5!f8O23QRjF^ z8M3C@A^Vw5Q^cqFry4R{cvUlGNmB>d8K>fjKr{13ZC)VBOhQreQA48fnw@a}$4! zoM;-(Y1#-WSn~>tA;i{33uac$2VL2Ds4}Ja9;mGCRTT9kRrIVa#&i*IBC)}1Z(U%i zdHt%Dn8DVIY^6DI=xP&@@AXXk3GE3?&kMXEqV^bR>iV1m{>HlENjB>38tV~Y1793a ziMN`=5hUv>JS14g?S;}Cxb{Z%rEk)lQax~jy7AJQ_2h(I1=6qore}d9N~GYo--KEb zo`(Pd5yY&Dfny{I^MHE8nAeAr$o=crTvnp$O ztalc2Dmt}~6|}IJsJ?VLL}kQHde3aWK3h1aKAYD$t8*IorH#dn8dc(9)z$VieUshM z2Mj1$$3nurey&8@-Hy-}nv7yT#?!>pZ3Zc7{Dd#tR9t3}vwuDHU{W_&) zMF*Td33%f^809b+S9{Z>+TtWio`c7`XEqC6l$@>R7NJDRCsvbTxH$RMBu6&Ed8D)V zr*lr}n{uWIAfnv<7gh5=#IdT%i3PUkiA?J0&MTyVm?UhVt|1iT1zJErW3ze3+}u3R z)&3HJ|J0l%>3XNG1u80|yM%$5oR~?XN@MaMUME+ofQDpY{CM6x|@`79rmvhd;ig9KA zXl+iE|F3HDoJ8_4E0>Tvn@DbXkA}7efY+TYUav{IkUGN-QgyP^3Qxlln{y)WVP%~Z zN1^-3E>0H42t$cjS}#C?=(bxX9zEFRq*0pZFP0I1_C-e!P9`r+I8|W*6lRDJ2*^C0 z%w-7%wFaq7Z9!VL;{U=RnDd>V2}!rnm+4-8La$1wD08A7hEe}|7kFgw5Tky2^|5V1 z*BIfUfMu(&485Xcj{o7f@3ZCG?NGSP5X5R9_HVFaDn5Ai^;g+SqwEK-I4_eLfGvP> zuzcac_KDs{OCc;!z7*=%9Qmy?qkD;h5Z<}YW7Uw^;BcTC)R0mRlhNX@zGcskirTc}^%GIO~L!2Yod_$no@c{Hb2DG`) zUAriJV@rL0F_jeN^x6CZgKdE ze8a{dO*(hFYL5=3J-^+0TkijeMUG)o4hmXv{-0h*AmVby-FKmUJsnBos&fILw1>!h z`C=Ow;D#5iNYBa_buS_uHA;Up2HlbHEVlHrWb!@iW$pIGor#Zv7~K4dEq)su(D8t3 zOzFVBZHGg(klK;vajlci-C#GDg!k^h;;(U6q9iw_2BWO`bpr#6LiZe|VU&Y(VQXU#&@`_6jf6x?JtXl7OJaM%3Vs4*q4e%~t&&S<$jS&nG{t&>gF_ zAADC#6K(rYRex+4{O@|3c<6r!6ife?lB2ueKlvW5A}pa@PwwdV3fXmj+OzA4%>{ee zsdj}>y3?*$&}@Zgw8%CN^|ESroj9^D&at;JKlx4?8 zQ)r*Cyasht|DK_m_v;f!*Ou7Vgo{#iLhZ$whJ^n3gxcAAhlFE872l$RmE$Lc5UNq> zX7#`La_#pT_o8T@qn{bZkl@qDsPKWVAL8JQgn7Q6G2#nDJqc z%+eB`mbh+ar!6mS!A`fix>{<$O3j$IU}Nq|FR9Jj$(v>I=B;-MkhpEsNA}SFYog#} zM8I(9-FBbV-HP?i7o@}3x2R*c-b06zQV%T>CW0A3EXXi+x-7+s~+ zS}jb3&M9fiU`YGxltuTMb83vUD4}6Ny(RPFrBo~j=wAc-*pK-KYY-b@B2`b9+$V#ba_IB;}HiefZMcZc3@F=Cy6b zv#LFwElX&sRKKy~2#A8%R z?qiqLBpv|pM@dyUt?i>9Oj+^ED%z4)Pqbxs7$4L3WL}I_@}^iNp98D><}|A1rf~lBIW_c}&d+O}ettB?*HqhK(eNRt)%d zbyhSuR;SVV_^wF7V1uHx8c3<}z0Z?+X2u7S8?5%?{HwM0x2=5kr zhyqsMtw>(br}_jY+4U1ucN&01dVa_DsW+e^A(wg!o~tj20Uk z2Zie}5P61|F6|q(QU#axQNLEPO^@)pn#I;Xgc6@gZ7h@&!GAP;6UH|NOs}jlR-?un zrsdnb;w07P4Xu`$|CRa=sIUq2BN5dm2UsmnkN=J9mXH44CX`d<;gx%%Rl8&xW=?{= z8x?_cYfQtZqlEngb=qS%`t*je4zOtFDRs4g#`5`JC&u!S-!cLH2D&t%3YON72T4EpIh^k#0v@yF%)`f+S`2>waU|DJ(odd^lHIQ$)TWC7Z~SpAjOLfIWe3|`w0*=PeR=oo(JXSwEnK^fq95$v__2k~%_&i2BkTe^4V>x2G=wn0>n&lqp#mSlp?SDLS-X zVC>vn+zRuQ;Zs+>SEu8p;JpvLuM3kdS=Jd#AP6G=JMBa|%M6zHK_luY&8*9mP3PxY zrFkl169y3pytrt&%$dWNm2Fk|#5G5AhejbgJw{F-gg&|Bxf&9sk`~Z7AfDJKu z9>Zz-j`GD?U+k||Q=o5NcO1(OX`ks=j?Gn%-Rri?(F*UQA!*n7yG!=t zmuTmUzLDK!-%PBrMtwjRY^QRs;z^&;2EU2%gMP7Yc3-dC?LCx==0IOV5(3jRgT>Yr zDimh3Q%;emw#(B(bJixduNwO7mhRefYp;JVJt^9S-1lEZrg#~7ARj(3XdkePMU2ul zs!o}t?i%NDuxkdW(|=f=z2AO6xL29YcP-%CmafJ8>r-c;HA{Q*RKlgt8Wz>E5%;_K zl&(ix4l=O~7kYXGJ5A>8WJmRTy6dCU^(C}BSbo!ofK*P>Zo&IEudv^>qR8Iz@ju0f zWaogI9Gh!1pZbOIEgUrS$No54Igpn}tLZ-o>D8e+$T-g$58)15g!6v40@)n%IzbMF z{^6eszYMj4t@U7QJ(PF4;WEQjXR{pH`awq63W{0Fe%B8+a{}0gV?D0Z z4gOrCZC(8T0d!~lrB`3fbZGkI zuzMrTe7RS)qcq8#@P{%~XkIS*J;DZL^mukSF;yeFnRGeVI&cr#r z6^v`Iw`93L@XN4+P19hNtt@UO;}=r0{p-EhF{4NiSnWXbuOx+&@RfMp>9%4A_EO*!!^kXFdtH*k0QrRcQ6WM zItxoW?cG)q%YXjj%f(i6>Sudn$|zWx0^&0q*KN1n)ZX?PZUFH!#ki$v&B`X=xsr$> zT)xc@qv5S!{;(L{SZaDS{o?#zJ)I!@F)$5>hqdo$5UYDN*QLgmi)%vF?hRYG-B0cM zHes%T`|6`Js1jMhFYNT^6Tn2%j+>C>)D`v^ku7cP#ZGSdGsF`f`<h!0Y1{hDIZ?e@b2zi!O=&=8DdqEXI4~V8tv`_$gBz!otAKDdr8YQga)1ct>gBcSn z%56eZ+s80hM625wn2<#7p~{Sok9dUJ)yK+U-kW8ijM9dnsV*@t`p?7?qYm&Nt;rf% zHOeRoWb2k~xW-}d9kRw}=Cnhnxeu!v8XK~~ z$&_M&$c?6vf9sv$8+th$5l%UAb&Uq4WQo^mYqI3x4sx0Qv!5ndWdH`YZThiGLm5`- z3^N=4CS`nD{oQHcHIKYU$7g0d(X)=Dn4HgJcjh895tRDv{!4~*VJIls+o4NP0zz#Nc0#T)B=ztzv=D~EC$GuQN?^S z50=YG81@;Q^D~;kDQ`1(Da_!*)ft=vfbk6O&3MaqJ#A2f!{!w}P>WZj?_GRV$0O5l z5WC9k+U&@hB48_E2YfsL{#mX8hxTl-S9Ql|(mFccUC_LSw>om) zqM}{3E31b*DuKP~QMnk{!OnAkGwdW>59RHZw{4ygfNW$>s-9*dK=nLPIiA*{E>L-< zj7f<2Uw+>w%MVw2Ya!f9zNkj<`U*9Uk`oizoT$c8t8tFEndo!4BQ7$>BmrmQfA;-G ziUJQZWGVS+S!lL#0>q-?23M_-f%j|B_`chiDGHW%#z``E4hR3Qfyn=h2Zo4Fu$&b_ zhm#21x3Fqk@D8H^MM+59XK=z3;^&}Z?e>^Ht?2lH~J-Hl)O{DLDGGLTz&1J$#;F^4WkdABL=tFWH4E4Z36+q?`zYgRlrislCG z(Br8Tr!t%3=rF(=e}C>+&2kLLD8?!4fUU%HD42*~xeC7z=@A(;;>%Ea5vV=+B{vX9 zo&vR4(4}bA`4Exk!>Y4Ja5Dv);S0d6-_LS?l9qeAU@KO^@7@py<3S#P zpPJ{!1iLwen&AVw(}O)eE2W zP_*ZtF>GIb9rEy#><$g1Y8W20eM?SPlP48BCRyyWDt1dKW?}83Vzw8RXzh?>u?tiz z>|inGL>aumq(>j*(+By?md-Qf=(4!+bx7|3Q=5(A#POE7c6?+O=!-pXKJ?!bHX^Z> z9zM{d@zI(89uHtdd1v?)N+Y^gS)xaIjU+FA(v&)qnwuF}*K>2M`VxepMVYQLr=5C! z)>UzR+K&>r&OK}sjdI1rJ#t?l?&o-*Y0AQy%S5xjYCP6z2qNtyuVENqCR0CzVk@|D zty975o{!SlF5%ic3D+-%6r=lwlwxDcauMiybs8)ej~BIS>5%7d-2YhV!2gVq9KnY(1k}b{vzZ66o!=vhOLRPT6F)JBk0VOBQ~3n8Me&xFMTP17)7kTA&w=WTt`_ z&Y+rZ#F}EB%J55kOx1pR5VRGYgll(#WJ5QhwIK)x%PSw_v_h$_j_J{NW9cuuv1=aj znYrXcc<|?Ky&oyn<1Plu5MO^bFUkfr@hPBs-pN^Nj-w0BP{asrX6l2PWlgOW)OlO6 zJ71E=*uNXGNLKr-%bSM7E`i{E4af}N)Y}pldRw)$l_zM54JxZR8&p3SQO>tEkNpz7 z2ZV&Z@vWq!Djy;%WGHT}L5|I`bV|E_Tc;RrcK_gFgZ5e=!X_b4-Eydn9hL8T@YigOwiPBr&UjgLO7Z8k0;WVrKB}qKFTgMrjof3I>fV7yO(jLB zbsDB5#FskgEh~!FThAokm zYP&8r@0`>lLNpmx3RBTuCu{y#0=~63W4R_yBB@5K)hwkVSv3JvIBFeE$qD+k0A_JD zv~3^hr{aFwcE=9X$h$@_$Kp?jcR)0d+97Vy{3ineA-P(RxA3J-7XA^^M?C z929oVFHE@rJk@EPx%U_$OwuaX&(&zQvpmB062{YUYUg5bT_X^g{;#2is97m4rC7H) zov2L^94mmWg=KPIAU5C8aZjG(ET$dW%#?g`J;MfSu)O^l#dW>QAsQ^7vr20*cH!3h z5l;j446|_rBiRWVZRXxdfp!%0;|K(Bg`N?d(=&Iv<8Mj$dfh0HmZr(qm)y*knhA5g zg=Kw(mOETwQXh5OQRpK}J5VuL{v03)p8Ht4u$gqg=Wy8^0NwWSw4>;Vpfe;5ye%Xj zx*DJZ> z0l@`nze%7Mi@vq!Fc)qQ8$RA2vzGoIbrF6rcIX~|l{M!OL;*PPW?ic~0~~?kKYub= zO&D|u9}o_6)d{fGXv!`=hAFkUjjq>dKv*}y=Z)D@Hsx3pmBgMHTLqq({cbmying`r zCf)1s?hMp=`FF+e+BkAZJX?TdkdHLvAZpeKk5UB;bFoo!ONpF<*^j0ilkBbI`yi4k zZw}?EDqmFM3D$HFSWVxYE`P=tNUT<X@?Gnp^a}Y`k3iBDsCRt*wO64t=Cq2L$cb>s@gwT9+3g`j6@vF=w^#lg%%_pZJO=vAd#;3rgCFG zt{AlL2%TZv-jS^Jckav)p=yQIZ+k#Ce|EKk065g`WncPMSUL9b07vK}n~>t4sm?t; z^gYM$(NsE!wrD-2DwuF9>OVE8Be2cgUeS_ayW7(SDYj3n4wY=Fo)y6A)cUOplIYgif`-Ak_-fZ2b zkj$g+_H>jQLwp+lq8zG?U#3J~rlHaqzc>%x*KO-7COk`wrj;X+E&w%xE`E{yvTf+0^(WLM$L~$IXzy`K7AId9EoqjdOLyUJ=B4DV^qOd?{0RRxf z`XbXm_E*ivtkg)ThnD71WH2+N0;GGS8gnY${@)CYp(n7)hfjJ7W6M%s3#qf+tXaq|zLQgjcFz#yMrv zlORd+*`B+_m}rd`B@rXgEyD$j)QH>Tk(tf;F2q!zyjB3+8aP*}-P24KbY%LQXiVbB z1VZ{Id~v)8NIKElb5MefNnYz+Uvhe(<2K2(kA2D$+Wp`IUhDOzY$BL0se@*?5-E+{ z<@D5Umm!&n(p|-BS)_pH(2C5jCS+tSTve!J7daXY z8J=;W1;dj0DGL46q_2+eFG7H5jE8j??6P5K@v+d}(l?z##%Oh%_+Vx=7A)dl9ocL? zZo#H>=LK$vvxUs5m)d2p_Kj!ZU4!h}Lvj9rwv!N4ge?yk<%M$Tt^>Uu%3A&Hh>5Y? zNE3Gnp$j070>SRa_|U1 zb%|>Sg3?<|}+>O1;!Vs(b@)rxmV&^yxbj=xC=pTfILO3aE zD6ylc_C#{NOWV=`SpvQ8tU3*N%E8hPD%=EBnX+!h;x+5?14%Bb0{^Jo0~ZSwRJ8ap zmVr8(+;%0^yOvlFjv9?OH^pgWej+>fp)3)~u^@CjAZeY-DHhed-k|Sv+%J9S_KT?A ztmKa~gCN)1lpO8--GMI^a9=?lg3Jxt1CUToA_RdT2ACJ?Qj5P5>V6*&(5dS7y+`DK zbu$;4;_H)w-2jl)mFnJOi>t1{zizbuyNvk}EUW)hl?6vVmq||ht*Zet9=Tfqudvqf zFA_222I2T23wu!tiC+5YVO6VsM05fY?zV;lVgH}63JLgcsh~#Vm0h^TwrZtr8C?VW zL>Rke{y|8I{V&Zg)t8uEW90LZnrUWAFpR8XPLQCn7qRH6GjsB(<~^Q9H4eP9`iF)q z%cI;3+;R<^M7SQD=fYz(g$CH3h~GmSkH$%6Fjmzx6LMKgYL#T{b75UxIku-Vr>AmM zPvwZ7%3(c~LwhO*_f!t-sqEJ?#lC`0X4#epm~Wj&)kZ8nCaYJ1akFM5Q~C%|$_T6KL_O=J-uj{@k=kVS0QYs9Wss=G!!6Sz{%nF656?{n?i<6bXXf*9Z8Gd} z&7MjaOi?-7$%OyBL`|tmlY7i7`0{l2vx&^qfW>g;)wl`8QJ=~Z%xrDjmcFo!wdf$V zMmn=yC_9)^g^>->?>A>s&#lWZxsA+yJ{L3URX?e3nP}n@a^eWQ24&N`)zj92<9hP) z>uZa^5KoDx;@!BDJ67G6(&bWir=Q>02Qxf$kGL=}!|1&l8hOW~=DgKw*Yt2ay*NT2 zqPgKK$x`2>)Yt(bH?TAd?l5)z4p4DLV`o>G|43&uCEwLXUVm=oV^)6qcgPBdD}D|gQ~zj8O6g9; z`WWh*H4}z}R|eHyJNZ|saEV)lI<~iBJxA2!hVx6d=35j8nn2y!QotWgJ?@vrwekvosw?4t zhi?b0nBSECuCB*z8Rioe_(qV}KQi3sRJ>s@g?LoghAZqenpYFK&7#tHjg*d!e?9Ea ztF|&f(w0jCYEY%DmonwB_atai>F=7(Iz3a4?PT*_XDs8OHdt{ox?#U$uftV7&qiIf zvrMw}m|MU|Y{Q-Z2?O7a8&Rb3uQ~ zr0#d~u-PvQ60X)ydd3QY*u&Sp8k7VC8cI&1j2Xx(gpn5(p!w~-!X-q&py(v>N^y>FS5m==TY<6qb{hBv$CWb8pv)#cxD^f+3_o1#K*qu{a-DdaDVwL z1#RK=W&iw~w#_$|XK1l$8`(w>id;8M73&fJU|~0B>}$ZukzB@K?y~~P_uQwreSkFy zH@u5bh*SQE+c6%=*8MnJrx&dV(LyGNOgyJCo6kbG=QQ!##P1w_=kPm^-+BBl;CBJP z&HOg=o8>plFA_s1Ll=W_Zdk@g7gAoB=}#Bm;f$_M=-luI;Es9+xo_AN{P~UQxnjg2 z0d|$iBCbCY^ZkM&waeNMo+>y5>G&9(hpnc(oB=yTscEozf6YOfy3H>vT=?lID8R-Xy86f_2 zvNQN*imx^7=DF|KXlGil%apQBHg$Dc&R z5=DvYewtuR3gt#=jvbe4tKQV4li165o5B&x9e1L&`VD=smru@UCK@@=DT2>;9ma*>n0Tz7`ha|6#p zy`CF+7QTn0%l%MvkO#k;W;G;-^J5d1B-BOioV<6P^KzpFoP zO*`W&?Vn)$35v+_reJmQ2C}ikjHLzEg!zGlK*lM$6fyE`Mt>Z8CcZ&5wdPkj=cYTm z9O=#{;BbYY5{KE0wWD%AF&j0JTG))?T?!?Har&Mt&IHRwDX?p?ZFlN)X9+mDqfTe2 z*Q`@}TbfUdmX(pa_fT~D9{CpJSmK&MHuT>^B)tJlKYSi6FT2Ip8aH@vhLrXIXCx>p z%(HS{f$QV$ZHrmGkOf~gUiUzKVTqNh%rw^o^RrkslHV9^gLt-lz=r4;e(>b}9TtfY ze#zCS?Q8DUFqpdT#*4!R0j)p%{dik{3dt$jv5sj(%e5Wr_(q~*oxSQ(2%K?R*QpI~$vNtq351V&FVikcTiukZgG=NAz$nR4DP zB7rmURxNl5su#LP3YpDDZTTni8=rVSKjK&4lnXtVQ4ayt42R$XDjOI;}O{UCfJ}Qo!^x5{bY#PQ||6j5-`Q# zgQbpl{0|efZ7akLZRah6+bpN}OAEez-GFB|YbzpfrYEE|t%V!>EqhH2= zGp!o?zG#}tGRXKz!3NUJeEqbGKeXumKtp^h(2wtt<-U6TRw6=lwAy?N)r>N%t?|k? z-Yb#h!qi) z59#@I4V<6t0JW}A|BP}?@SHj!Z?_$VB|DTJuXny{+i)(#a4D2LG=s~Z{CG6=+n$e$ z$lSlj&^1GRLqJ!ewjt+_(Qtc+w{Kg%6O~rpR7oR$Xfs4gPq>_lAEfWgr!ySAh@&rAf8hN`1$gJF1d#1>p1oP7lcHCQENrT8|LJ;Gg^s%{rMgV@KxR z7!60$b3dAEhkV44RAaG^x_Vs-Se0^0b!2y9djaVv{*8 z1lMSrIaUeqAh#SqX~T58^}a@vK8m=7V~ef+n)JO%&lX$yr~z1)^;oyPjn`oIL^{b> zn(p4ui;@p|@K*MA;D<1KQ;8*mVjCIdfkxh z19`HMmM!(7cF(_zu3T@e?Nnpxi&o=$8Vd~>LS9D^8d;xeJHdIjI%qH0fec$f)Lepo z3j5dYmJgE~%ugv;#5aLw3`zBOgFDu> z;Yy2+jnlIEvmU9p_E^aJ28TJAP-B*4MJOU(BqyG=L9g&bFJZG-dBgul+PT2jSrq+0 zy#!KjCqRLK6$%t6H?2saSi}@Kk|KqORI5?}5kxL>G121N(qa}7U#c6N4lc6OG| z<+NlCVKqYuqm$3@OzR7QPA7#LM%^W-VYD!(Xt!SGQ&pR|S#S0MtC)f{MhJP0soq?s zHQ3{*(^H&z1A^RCctc?zXuA|G$H+h8XF3DS4kRAB13$J(L3zg|QsFU{7<_9AftJj4 z5E3^;d>NbyWJS52;$&Lzbv%X^O*EY#N*Nx_I7F#$5iSV!r$Y7Cq`lM{%#R$c{p8Cn82Agn38wxIEj=f^3sbnKGjTxqC zz@5xYj8^UT79u~H116pKBK#T4sit&L`dkbxm$Z$gqB6izfSNR&NNY(IN9_*e#TEd4 zr~=R-G{fLKpuGYo^arl`2?7*mlPxMleRp)S`T zyqh7y+fx$PQJ8Co6u7c5{fuv?3xJG1N6b}_ozAZhS+As%jSauiEeH_2ozqE8;Zd1G0rPL44N*8Z^S}YQM zwME`SP#{cPp{&=KcFay=s&%sEo&_$+Aa3_mvSpyt@5aru8_DJYG46(ImO#NO2-zJN z^3|P;G^8S?Y?C#9?0RsC1!1|uchp;#0_@~0O3DjZ@Dsu}?JKHiLqX%31MsHF#TN;1 zHG&c1%;Owk8dNUIZDDSIZq8%vv~GIUBwJ@}>J$T#pYdTHu6WDIb)u#{2w(d=ucBC-lUnQ9?A;SGW@1pSJTG|qJ1_^CM@Th&0kc0Wb&X# z*H4xlJskiNTmgX9;ZPN9rY>1D;94-ceEry?$2Ae^ zcVL{Iqb@TW`i%ERW``lwPU}brCL<(hj`&mnjXna-#ZD2tqx@{jb(M*huYewX7v9TVf1K zVy{B=4HqVXJ92Bs&DnV8Z;##e=3MWqFBZmcqcg$rx!$$Id*vQI@Lp};o`>fy=-w@N z-+}k!h{2}W1ynF5F5-NfYc9!NOwV&OdGu2Z`A_l0FBJL5?-Ejg)FgxiYiJl4qI~L z1r@!&>8*Rujpze?B4FJ%V_U}P>)3d?a?gH!1V-!L0;ATS(mqdzS6`v)NWsA0=~f{w{35RJAJ0bHBfBBDN2aC!9U)z?G1=dt1%VU~ixXw4$^LI5ZHjvkC^;){g>nXnY zQ|kg&!S2cW-tlMl4Hq-nCsT6R`5+jaR{l5Jb4#pJ2^RoQHWadugvT4pz(A^}Sn%(D z12(k`Ow7f9(TcUxa_PZpDFu`;g&Z9LWN{g2qrNYW-#zu`G4?`dNYPdZ68+p8`cT}G zL>khm^l_7f8$-U!&yfsW3sf73mtJNX<8WzbOLEiNj87P=gf2>}Hrtn-O${TBFCn^+ z7>5EnwdyIZywND9ZyN0>E-QZ12sUgXS9CVUx zaOYJv%b}lT*6|kt(=}U7Z~2x{mufO+HrCmg$q$WJgY2y|YaOCZqXeZiFjjFFcCSGv z8xDl7L=te#Lph64OAwzB?oF~l{B5HtfDSCPUW`*u2lVGWt%#h|GIFur7*0F0p`MEs zwcdP~k|?BCQ3MtQYpqma`riMY($#+Tt@vWmF$z=C{9Z3xZ=T*GDsGdm_~oRc8#EKn zxdhJXH3grklbdr30DGN7MWk+aWK-2fdhgu&3a?@Kw9q~K2aG#yi(OId<-c07)vBH{ zYZ{GVoHoS~i-Omjf@w^hj})yj@+cqqTt&ntQA}vd{p9katK~Ep^S0Yd0frcE_(!Fz?Wc-aiRq2|cj??`kw& zNqsbq*7NY23b{cHYzMHFlCTRc&<1odToSMDZxwatOs$&2W1N*5+Ax&6YW)3m>dFwZ z8>`A37B3FCmwUW1;SjxU7^2*xZ`cT~L6HYN#d6$FuVW+TK9JDL-%<($omWnl=Z_w= z&900O^1!qVYftgP?{jLn=q41e^-5`3qgle&YWosLwf$T_p>85b5x|+Yt1T5{hSR1j zWkTHs0kzL987As`D8GWXpfzIWi<23>w*aO4)#;KuJ;taE^ z7aXYMg+~UTv>jn!oh_5&+A?j@>{UUs6?yZ{O-N=Qt>F0G?+M2+=+~v@{jAkBbi*hS zi14)&#%l6#LPOw_OzU{8F$DI^69OS62zX25;b3AnPlSK$plNhfe$G_^fv(R5>g;VT zSB(AcVO;Im$F7N?;P7=u#$_VuDRaRg@bdrwxJxA7ZQipIjXMsox`x4Oyd8+QWAP-R zRCc8<=(~{OYT~tm(XUZTb41fcE}o=P+2X#K=|bO^Y%aBKdxD(&oF)0WD+C-)AR;21 z@Y~AgEA8~34xD41u_0A|{`dk`+>^ri`Gn0Z?^dAo5Tj;McmCFe0NjkyG;}tdoE?Ir zSyyk@p2lng$vBf@y!b0RY9@4MjrHi$P|ryBrIDR)J_o~`)iZ7nyi1r(wma~yLM3z- zCP@vVmE2QZ2ZtsaX(FE4S90Bvvm zv`q<$Olzy!tpI|Htk)<5`E&(KX%QFMe{Ai8P$bU{cNveZ^o5K#qcgugzRGl!WGVgZ z8tj^*UKsF&S8x|zF4-KG&xCpIeaccLj38QMsZGzI)?B$xt9ueM*1hRXjVeDRgZmIu zOoGRUBA87{8c>^0(ie%u`K$AD5R5FW*#WWm;i0czyhdG{-z^ZE3APExn_%0PIj!(q z1nUwrQ+B>JiR+GeQ5(vOt}rnW4THA4rR#v07MnaVg)1XRGh%;p`$`Ri)XOtKMwd4L!T!SbE=VKa0gw zlHJ9#aLE`mpwoTpDkK;Ra;tZOJi6prV{H@8W%17{JGntmtEjK1O{oD~?6R1{DVEY{ zZtWO@IN1WNw^-FA-9n=lMydlb&>P0H>nKt+*c)j; zxfbgQSg0_Z^=s|v;y?7@p5nY8R^SlU$biN5b4CvE7W&T0vw7d|K%evZ6i$KO$v|Ou zUXWtohPV%qRTsy%vMf>8O&{{ZF+1*JTsL9|(D9RBFIknB5-`t+GeGZpQ@Um71hN3G z+n}zqMN)_mWYXNb3X^1>wP^y97Kk0`bV8uq#oxALiBSa791{xLjrF$z2fE~`uECmgwK(05K?bi< znnQ&dgWtN{=cKm}kRyjQ?wL1FvHlu3gKJZ1peqw#_Nu4Hgff%HT40--sBThWQYdt0 zhqwf&W^Ed{!@0*M^(Po*kqHPy4$WM39(gT`uCHn$3i@NB_WVxwvM_*q27nm=HpuOd zhJqY;T+Eh}J!!zEQNp6PqVEV+BXhQo?A5*#dhkfrIpky6ofuvkCZGT6=OsJMdQvN% z(uR)bzV@1Kli+6tI&!vAf9z>wMu&Vthu9`DJW~Qp_{2uw=zqV4yH0hcbtx5t(YZ9= z4-aMG=E_DWxs#V{x^P5hjS$rJsHCuMHf^i&TI;{xd~f!Zw(bSQ3Ejk|Fgb^OY~goD z)YDuBSreiE{O4=oUToY4j(9@6eDD*|`@$x5WNg!6{Ihs#92c8*DAl(Nk87IPGCaQN zKrFU}>Tc}DFl@2(UOvug2_O6O@q?JNJ0FcPXFEQYhn!{bN>M1fNECs?eEjV{Ab$Du zDLHgVJkppTM(e)Uh2prT_w&!64|;Qa@(R zgASmL?TZ6}%MT)FSfL-_-#yfd>(7Ph4_;{&o8oVWY5xliug)K4g7IHsavFG*4D-bj zV)qEmlTyu`MZ(LO9Wn7`KGuD1=3Vsp>Tam8>&uziIYazYea2tLSCP5aN|7LYk@xZ( z{0>4F6JeNZz6HBzX9#~l$xbuo`B1#_uP~2ZWa(gu8mFhAtOS&^!FnW?xZk!lE$m9IZDDF|lo(c57PlYmqdrZXwq$7g_}1K?g@B$1~|dsw+E za4Wy4Zwx1SYVHb{{-R!vzSmVX?FE3|h65u!akaw>p{qn}H^te@_8glfv?!KoVak;9 zM$p1q1*EcIG;>MqY+rVivil3)Kv@*3))S^&ulsscF>q(kz8qlu^04Lxg9vgy#5 zm=tGGx|g{_PjT)OL3#6blK(oG{wL#7rY98)Jel`4j2jK|ajyV5xhPm(vou{y2?`D( zVR?u8W1BTQSEnY;-Hf;`KJBJ>SLA(UNL;=V^X#5_%g}-n%T{~2K5Wbd%csznBAnwQ z98W)k-fM36o00d!n&JJ-_unE6)@J@&vf%xa1^to*XAepikZv+!za;&Wyfyi9X5QMD z8#0G<^Up!u266Bna4@hRwW2}BgzCqVrl#IiJrS@D@?8nY8UuNH1<2a%A0aggqyEyl z1_2#}qq)NSA6q!S%3KMGcllHg_A(vB^=j@k|CP~juRy;3%%wAiuMm_QO|!68%~@>6 z4g;!l78JHtB9Kc2#A7vn(d1#W8LHIZYx8$D|=>Awek9VWw3F zG0xMjg7yYo0&yU+2? zkJ{^dQ@yU)yw`<|6}=v*I~C9jIQNq&uK1j|N~!|)yy{F7FlCplB@OTCYk0Mvt__dS z5W4>M+6dSBl;+GpFbF-x!BUhoRf{EDG+oqX^JD?4X{0at0f5iDCj46oT~C?Z;{ee5 zD!$-O3JCT$b&HH29558UE@q78-Rnr@aH&hQQz9|1IfU2I4Ct zKXhu{GAfz)paVAco#zkIP0z_ZY4#5Aou@LG*AYfO9g3GpgC-=2Nkf7Op|&;Bm_ z9EW3BP(B9F#r(}-JZ5RdE5Nj zASi(Uklfa+!0YFk?})%1mEG8MdjQn*3zOE{m>3=0gL;hL%^EI@7ig zW-vAzEMfry)b9+%^GGHPHJD{?t6lOMI`%y*YhxI}?$$?|rkD#6TDPZoF)F9E?WaR3 zYmg*lHw*<5pTN+`(IH1R?vb&S8H+vO+eu+RKN|cb$SjfLuQ@=rEGjNuEEADfwosj$ zUG@*j7U{?0#cW-Tp9|F&rZYFP5vrta7yg=PiX$K%nXaTvIqK@oh>gv6n-gw&fc`51 z5nqY_**ij6RDGo>0FYNBgFw^0AJ7R&j>Kz1&k{uNskn5P`ycU zVY8JItv=QKP5@D2WRX*oBJ(qClGzN^eED|`j8b?%FC5-aE*{!^sv2aL9X-G4gzyty z;$7zcDm|7}flLuEaz@n{zJFoH{uU+ctfd$whIibV5XA%oMmU@er22K8gEAi2hJQi* zA{JQt-j0_^8OMyHZ~tJ5 zqfrSf*!?@{Oz&fn*Ia41s&qu$=Ty?8AAj>OgqgN4zs{;?GgLagr{whZ$Vg`W0035m<>aXsEQw`+B>7|bDs!(VO9O}{r%Aw?X=@XY=MPsKCGf1*um0J(*lmxu$oB2` z)5D7Q)W5JjY3b^8P&a}e1_OwCUJU6I{W231Nm0a{;BQqAQ?=hI2l3o$ppC!lXgA<~ zgN%@}35g*=vO=zXKD|CoO_?Q%>us3OMY6@s%s1Om4cy`lCn;VPbzf6HyP(nPKKRFq zx+B$>fIMCMjS5EX*B&~vWqwacZ=@Xf? zcJVsBdUjrlm8las@d)t1D3xiw7|~O@If-(EvB?+k1*hb9J941K>3 zt_wwsEr0o}^%*rQY3CTQb*DWvW8!Ud+fp?mw5$GJp`acD+^B@gNgf-K*Genp$iSVt zUmKt4dZgvKjBDd{mqdlMTuH{svL>%e=^B5!IMzrkzv~tj@GVR?xxVUva*Dy@m>uj1 z)IU#uwBA!D%!bae5l`#*-xoz}yTQ@tb5QQXzHr20uzdM$_{$sbCN~;7qmbTR{H|?@ zG_0c!XqG{*pSQS+*sIGKSYn>gcTi#RGsJOmT#C~B5Xl^VTt!QI|5Qd4a#w+VXfP~U zrFwVR9*2b=uOJ*r#?7T=d(is%iYCFOHYp377S_B`&{{RJOzPX6-RG||JoDQ>`OZX% zK6d~SBKLt#pT1~s_!3Qjqrt`F31p|D7L^5!SbiQXzdG3N9I|oe&d(Tk4y2M+GW+}x z0}3k^t=$$~9a#NuLq;;Ob1$SrLYXVjw?QQ`DIvtozSExVL9OWNE{;d(YZ-torI%fK zkulj=3iY?w+PJAyl7H6b`F336?>^`-V&V5y7p~Lk!QqUUTsB~r{4PJAWE;xd%RvTD zSMSP3nau@LQ3CgrD3!{B>MmbPhJZVqulKF}(4ye*+fyu1qcoAsp|sdKAtknwM`zk| z&8-c&js@C&r=IrgDcEBIajA_3JNM(rl549-q9QHJ(QW}tau#b&5ytWoF9#L2OBMeSJV3s(CkLQF}` zU*SrC-Pwsvcm35ECYoLEWj0&zmygHx=4%yWn;_7(I(U7K-F^FAH` z$E_P=+VQO~hZ{kI<#2C}peh!1Kxxwy5H?Nw#|)Y~kkJJDy-VelhRRKjirC$Bm;rcR z5^ALnJ!V3wBXo#&4qSE_-y9&KCKn3*>Dy?IH0|M|8*GTZ>lQQ7U_A7DlC>HD?~i`~ z#wsR{`%5SI)3;S&sqbc5lRHMYvhU)IbPUD{v`5G=GuxT@MjyIAzd6PWz0d>bA|Ek< z#?9e(ph$prnL#TTH?X0I3G(^SuHU+w-+un?iR^h1q$}{YFtGhqOkqg{w2{?HmhZ#%)0x?r2%Gd`$B}!Dfyy z`TYYDeXv5IdT@epMJS=qgIHC#M@qY8Ue9_P1GF(f8^7?GGeEV~;XK1^|F)=v6Qk8- zd-rNt_?1_=hkc=i1v2Eg?SEZW<{OWJ0_&t?o?Vu)tI{Sd7#ZV^AD4n8bqPAfk?BqD z%zF*7xz19{7+xl@sgp)2tC}VMN30!+O(R@&A5Jwpjy-sOr`-KhAI+H!FWtKq3m5Q> zQ{svZ3lG8N_(;N{EjlQ1mz)wYisZz=qR_8Dr4u3}G9g7k-Y>Bo(T2qb@)t6BesX?V zLywqcc7D18Vq6(YWOufoS1Oit1X2{S9MR*rd<`GUAvzfM+^UyFdeQMINGq{vZ_x5=&~{gY zLCgEM;Fhhrtiz26iy-uXZM+Xnk$a zQidD2mPGEDOk22&ygG=T7eN(z(1YwS=KdO;VPuOs((sfWC2fWY1}&QKx4v#dAI#jg zQbZtyMryRM1e*Hy+Tjl%l*leN*w21`4){+l3H39adn=B_t9`kL_g?D>6Z&55+n3N1 zz3fmsv^^Z=wE}N|Ws`U#3dUwAa^A9|yi26nAlZ6~S3?I7wlwhc zLr1WY|RZnhZ~`I+U; zC6_X4w!Z$-Ik&%SM(D-~-rx|(4l$9Id%o@gO(7sy)5QSkS9jYt1dT0xXT(EdSM)IC zHg^Rj2-W<>2ank^RU+3o*{px_aSs^V{BDvu zQ^L3NkS_inYV7PQ3JXj?Zd5|?+ojQqVsYk`2q6L$a;$ReG%Pj7982E7W z@;9l?OVhUAuelGjV@0TNb*iTgi4L0p+cQ!}e9A|Pu=IuM{lZ7Wq46e>t`tegU^nuJ z#3vQDFTCh4`)Gh;PtP_0J;j}fm;JVYG^Bx`NsC;21|a`?jesx=Z-vFy063{o{n`2B ztIQ8SV)8TzB42v|a%TX(KBRw*-G~ukYx5OGnyDXfX%S)!T`UvR0z^^+Cnd~8!V{0bgp%BT@)Lm&5%Rnd9khyE>%?&Z9# zT;^vrZR>Gvk#`#`f7lfd6xUV1{${aj z=SWgma|!&|*^p~q2}M^x(Pc!S)TV5h!H|)1$o`^g=Jo91W1zbN@-;w=UW)>LHYx0W zYv@nAtrOa##FMM1eW$V#lGKKB0cWg5yxy~RfH=$k3Y3oX9OY}cMGQ$#v=fQJ?+S#) zA36&C2&Z4V=rYPnA353FBz&o&T`|$%x!!I&GXO$Z(;!_3(!+yKQvwJWYjBQzEYo&R z_+~r_V4rEdS>M))PpTNnhaNo^Z$nSka(E*@qXp|AET*=_8jH#|M0;Eu;p9*u%XpIY zSpq)a#|A07H^?OQ;NV48-<0M--a$8PKo2KgGZ^~ANP2pAooFW7mA8i@=mxjDWv#!e zS@PrapDTGW2ux*cY+wv~3gSNb&2xyNHc4_fZ= zmuDHwusN{9SmV7uE>bd(?}nO$L_9)MBY73TDFuj;lqwN+MTXMnMXPVy-bg>22n=Q> zTaDRO_aPKq0|2OU0aXg;1Yodj)r4wAF`uG1%i=2%-PL!|io zKUQ89%eQM+?-6gmij|gu`!HN({24`4V#Q1B8oV6ME0Eg7os{#}K{R!cI$cjQGMdGYFvA;{F`z;W@fTNX`*ZpX=<;;-54?c8Z-@4&SP*-!ET zzJL?%o7d||19o&LzZ}@X-`keTu3bW-XOfY!Qo@Wgv+d3M(bX}{djZ9bNjQmfC5+1z zT_=TlFPtk+@j31Jxy$|O(-rBbPydWVxmDKYN|n9Q!$ajxDhI&050O}v+~Mi_tl+W> zgO>9yP^?4UZx1&W>OLR*-DASmmY}Y#@cHuz?&l2dW`ZUX5t-<5x70y^KZhhAzTK~U8E0%Zol}M3jD6!!bonVK_({q9LO)3 zS#i?GL1*IY%oVt}Bm*`cb zN~M`{eK;eXn!HGxW0YAA0?CW0d?SqH7(@16`iw8)t~es~BJRPzK-8Tfd2j{Zur@rt zQZ-Ml1Zkn9ViOiua>e>3p94G=$E2Exkvb|4bbUT_=(o@(($%Q5z;i z<6gN@OBgrJXXwNtck49!(=pZl6ejZr`B!Iu3bjfMulm7Uk|V+Rnm8QzlYh*`?>#A~ zQZJB!oMFXlf0BV<9wvB{g4=)@@-wjE;59C>`h2RlhCcrDhZYi`8?mNy5P3dw+gB*^ z^?iNi!y9H=g)5lUJUYT#Zd!=@M^#{09RZ=Pn_AH?pOAjOu(!iXwVWsVM!(wwTd&4? zBsZ$=_Hbfm5y%4tY!E(lt_UV4u4AXNp`)non^{!s?)CL!J_GuqDMp6$yi-!16X-y+ ze0{y6uTjuO&s2%gdtjr&Otl+1eO-G5%H8z?qg*EfnE&LuU|5C_22n&0IDJ=Ag8wR9 zL{IpU0T{58IUh@3ZZbhK#UueZ*iM=qSPJF=s_UHsd+6 znXb?yow|5zVWiMj0`XQD@$&YDV!rWkU@UX0F5?k_!-dbBW%L5z>3&9eH0%vXujIdq zexBhZ7-%Ti>z|dE-d|lS3qyFgF}xfaMmxL}ibc;W1`%~N@0`)f01u4Wyh@{EGAW!} z?z0VBG%gyOfT$1D3<3i4pf^$uf?HdeMBI2UQkE2Al|Vk&Ci72w0%*F4a;(y_8m{@2WfIO{bK5F_eYC^K02AWFPIMtvz605HlRi!D~ zOezMH@4Y2ShCpEBrT_U0V?O|z-8CkE!GLIJl9E@~rf{l{Rs`FlN@CdDvVO7&QADTl zDBi6fb5Yd`wGXq6q=gok6;kPif~#cO6znl<`e?CVWLo$bh@~v{ztBWN(>{j+y`lR< z7E5d>u!8Q443SeqwXjus7Tp@EX+!gX&$9u+zVi&p(@lP%X#kyx=BpB&^IA-A!eYH? z(X1?P7&2)a3`_6-nI`;Nl}aan>erfFu_jF8iq|t|N%0!1�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 ^Ponof1a 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

?oe1fw+HUa_t`ss5Z-Q(_1$Co1~aqqVxw5 z<9W0-H(M1+@ML9 zf)#MXI-kZms;o?|*a^|WF$k)QO)P%n?@@zuAEM5?%DznQ=Ed8Gm1e6ukLM z=NQzCHd;?46X-<$Ij$J0KuxS8_w?h3lZD;9>W*Q_o4(1DN7V*_V2;BIeEx^)xn;_p zph<(>qzjiMaFq3!0^lXy#`DN)AVC&;PLryNI@g)K2R7q4!I-d&9u=Mg4 zpr-favrM&&64dM{QI4Z}hvrKjDerbH1Qk1q-+okj;{Mn?Fp6aHLs4w?()=Wxp#1KA zotZFpf~*Q#JxsQI%P_^-BAUnSg%AFhI_%aKWt1XywLVnR4Bb%M^TeMBlxI$gYRgJ% z7L|A~SSv|u?yd9>eCaP!`Yp0u@3Sor*{J(__%$NyMAP3C+6U#4?WQ95e6;(cNi5fZ zIzRtW^iA%R5%$gW43;a4HO(&%_YqnoHg8MCyjBybw%e>T?PH711ogWaYp4qi|4f!d=jmI*;FT@1Krk0>bj3vfI=>uK2~&~(n+pT zP{F3h{R9k*Abw;!s@_GrPSHGOlKVSu)xW$u2FM1HO3O1)v_L$f5K%at(cPMSlv!iB zK6i8kIB?sS=MJJq{?pw9LKJW~84r=PVH?Fc)FfGJkz2D#;53xKy z7GjEl!2*e;%Kk|Oh!!a6t$U9nyUz&%f}f%DjQp5*ULp^0b|s%|8@IBIW63^3O$p8z z1n+udt(eAuQrp%*sf}>V228D1)Z;qVw%1I}6;_B5uv;M@0`I|wGfW=JhF70x+51lV zugtDPeX^W~AZM3#K{GYk$iH{kBGIO9ZTe`9-QD{GKGAu980{~)YWJ7F&*Zw{h)zyK zI-X!i;X9Lye*u{?L|~Bpx-##@{(#;05dup4-k5%^=)wy-GyA2BVdL2mig2({Evu)b z7WQL5iQ974l~>UG>fcapTZNc3oq$vjOp1}?w|X2UBAfj7vDhAkItketXVtiljM*(6?|huqIM#aeaE*ybu4`EPurA#;lzx=AiX8%xr_JC%Tj{SGN{6m$HS;jT(8kI*wchH+FJu3pDpOh+;k5T^w4~aw<@& ztGQ>Gr1izXSY#6`+`{IwVh*g+nr!+f%ZW+efPWz;-tADC$GR~`lPR6TZ%NhspuN@P&qja$z-Ns6a(8uG` zx3E5}$hsR&grS9g=kCT;Z*Q{Fct%GfWiOLxq$xA*I=T}X?Kke+q~7KH!3OszZ|+ts z(1DyqDNM;(NCE_&MVfEHA(DaB96z3Fk*c-!%wFFV8rKvhm)_`KF|uV@JRQ|mi)20R z*!_f*vAg$s;3)C~N-WEMW875T@96pkP7&kN-bc(mvS)$JdnAFN#6}X&22eB2QGO`6 zkX)$S;I@q*^IB*%Hn2rOcUr?d=Y4?%v?Ob6&^z9xQIWZXkegL^qNdiu3F}Z(xD98w z#`TkNf~)fs=Kc-ImVQ&y7V*C&GeUEvbPA7!)RN6!ZbPA=ntBzLg+fD7F+i`si#Kr! zd*L9Tjl|o+a>d=eBEh+>tf6-T5IQrviIBeh?Q@NU>23#+n~0^bi>V*#Q6+V%-U{GG>kWmvb%cc<;jM$yPi%fb10sPC-cEmwhHW%bEk8f*VVO^norAKlwRVRJoz1gO8;y$S1NAyWqQ~E5u2$>V7`w@w zl>^Vrm6$#ymh%`C0u?K?$8b5g)_r1mxvPi!(PIe8XW@1h;2A~0Y(Bjfi=-5;$uoql z?Zm<@gc(L7Wm52RUJv#FAI zO(~rik30|t)+jQ-2NUJ--Lq4lZY9n29NJ zM$;+5$ek`z~kl&hZx)2NR*;d>?|`)xfl?4jMh$_6{R&zn@EnZiDYv- zegjTPjwBK)GXw|sv zdjID7vI#IYgXT@{@(|ERLa|qoP~L@5y4YKg6}|Ixq9oXuUL!^_GjmX;Y7w)X$)7bN zl;P)G{Vmhk+TUj=nc!g2v+c6nkguI+3}i5sPE~I=vx&L=<$XQdZC?9SmeGwS3Yn^m zENc)9xlC&wgM6t34xHlhhk2r}9mUI!^tUHK{@C`r+C66`eH5W{_}Mkx`;NnxygRwA z$-5Y<%m_EN=@v7`k)JZK29}t89DzBhh@;^mqg#noG==gR2Hsr#xGMu!WhSV(`;d;H z^}9Z%N6;$NVj96D&LbsHjBVei-cdDlyC*(vI0>_uTtXcKivZjyl z@0_L&@$V7~$3RK=Lou^wkXS!B@jWCiiV~g2Jv)lT#-@GvcLhc%_(_!B%Y{j=VPzK1 zozJ#TODp~jjKcy&jtMnCL(n&POLd9Lc8YMr8F%^~eC_1ShCQdoTW@@^Y9mx_c`7?< z?6B%8MI&bqC>_R}UeqofD+Gxwc!d;D;FsA*8ih~>GQHM{b_m+k9T3osszW{^uWFY> zox0xxv^+z6r^x>Hb;*voqTO~6TSahs0fNUidVJ&EX1O>mC~fHN_iEFG!=!bYt})-y zoI;K@;#?2lt=-|L;-ZuC#(pvYO1j?#S8VASiBR4)6Pr+b`j+~|}i#MTO_(ZpFf;u8IL&O)GX(Ehw?R{>N)vUR&kr^8$)n8P6&Z;WdN zfQsw6$mB`nwa8{z{Ot6b$(v_GH}CZ9JqhG`+rUq`d`C(IXU8he>r$0|nF(Cj?zEDx zZ}l_1TM(=;;(LEnK*y)~R8bM=fPdvGRfSCicWft1qBIL?^d#( z-cG3=JFHp0O8>o`<84!xCyVQg{K zjJ#+k*%^*82?`_6957@npZSgKUv{ ztL7Lc?{-?B-g0obOed?;D7_Z;N`7T}b+d zNP+x#w5c5?!96NpI){?2kPr-$GnM*$a2Yu#hA>(tkv%I>u_eow1b zDiaG?{0TTQ^A*Rj??nMEHw3eMy+4A7AtQnXUg#yuuyp(h6kQ`(B7ce7Pq&G|Xd^jc)dVPo36Rl9+A}gnQ@lsix;JT~4aH<|Gxl+Mi^d*R zP`g0G!1>XO9FwjSYYwxmO5^;eSpw@eSi;`R$FdT3T{}z7NBI<~p<`$xmyERo@i_!y zhq^d(Q|`Q!vNMD+GYC99Mv7Dc#~V#Qp?o;!!@Q6eK%imxqtkY5Rg{OrQf0*ga7Xde zK!#Jt3>B}*@O2@Xa`vE450Sh`c)`N7Sut3{m@OkYB**361Vx1w=qq11#F&~j`9wbk z9CAa1m)YxR$(c(*p}IV?B61viphIFu?F_IaC9OZ9Z7(ApH`ZqD3`m5nNgKGs^ETbx z&@nn(2qKyt1pP0W7lC>w5Z97kcs=Q5h%nLfr8#!om#feN1^++ znNm$Puc}F`I2=rJHkHW8S!M2!(H#umrD{%Vc%z#qKjhm*ne5mXAl?xjn-4OXy|q># zN>e-5Z>x;k|H3H6?RTo-Uj5tAk|MueJ6gv0r%Xr7xbou!|LCq5ORT`P+IhBJyOnIY zk#bWDRz;@pz(jIFyePQ?7 zpY%_CQ@-22!FnwpnvS+W0pmKSH)cD6eYUMWuS(SE-O{H=OatvzZK+>#a(KXgpx+KsHfD)*=D+?n8oiS(bIqLH zs8z_0;-znsW>2pH&^2nDO=NbVU2obJu7ggRz{X1PO)!ZMbSAOeZQ0S%#HYbMDcovH z7lqSbmpg~1zVI7~ZqY~(>h;0DukLG5wD0Bf6uQMoXVY$N79O&WyI?&FiCk=o(e+|A z&vea25(iqi9kuzH_ruQZ&f+aE7bIKU^wTeV%Aa7X1+Eq?6u2*i2QHJ+DBN>}{VAAx zUN;^WX0v5#P>k`;-ftigPSdZ33A%->U{lK}u_hWb;Z*Ebvotn~Yhd?@WZ3MM%{6s$ zJc}D{)loxzaE_A@;LNq?J>YXDVUs_K;tnuZ?jbA>neTJUfit# z-QJ*iq8qiLfIh!+_CG;`8E_jg0N-)#^?g` z0r9v^PCAO?Zr_{E?Ue-Q)2%A8m=fCMy@7cutlCQ3G6~SUSDkN~H#!>a)sb&-lEjVM zq>ctzyJ*`i%pkwAm#h>hhhLYw9%f+Ea?9DGy5MvMvNSteIVkIp2x+b_Y z`UIe_pTu$HMBf65sd6Hh-wF~EN0$>vMu|1$#C@W~>T=?~J~57peqs#q1a9fC&S~n< zzplnWWdI;`-S9SabJ$T+##@g@`ZpPFw-gm_2j;98BClek*7#!*xdPDMtE2Z3yi+ZM zW4YRX*uRfj`Z8OJoM~7IhD-0CU^U=~uuBEW**`8yVfv}E{i!IW%BPHuQskUe9tWA~ z*~h0i*p#xbQUI>H5;)t-q}>_)`Pv$1ob+RdM$Xe3OsCKVvZQpW+6H8RE=?azL?ZV1 zRzJ%BqWHF9raSuZHKGUNI1sne`7OI0vux>~kU80Kp}v+MQ{~6e<;R-xV|C`_uFR>S zvJYgoygZ5Fs<~%%=D4m1<`gg&LA&I%M^c$ZvK%Sp!)xA(^i*{r`2BYL7z|xY5y{gk zHg+j|S4q_v(mmPd^|qIqm518jq1s*O4U!VIaA=on-uAo{{g=W;w5=7$LpxoigTueO zt!32QGKA2bGw&cp85= zB;>tTt=TPhE;!{m7}7P-Lj}AG2pr0u-7&D0u-VbYEu{3;c(W~&Uo%U#E)7S!fRA-t z&KTsrQGXSPa?Yu_$(G-_9*6G{k{+ruY(h+2_7=LjN0#k>e|=!m!^xJf_$newoI2df zx~^&$q#d+Sy2f=j>XgSnXf^!zl<}{wgHBC0nRM4`H#EHhcYz%Q6tp#;2$>lS6$kG| z*9NuDuqae+C31u30J@US_}lBg_lYcy_M#?AMv{~H(>}~D&vaFi`2>p@WheA`I0e<_ z3C;cEZisGGwsL8+%06K52@-}8we#nG1Z|5el`70qup8yavDquv?VSsEPTCUHWtB{D zkQ`>z71)k-PA~%r`@^3W9H?Jn-;3kQt04u?+?yp-4RXtbP<~S~{?Kxj^Q%$-mAp$n zrYgyb`7HXV3(AYrkVIqO-v|=~*l8~6)`1ll(G3l&8AnXaSBISU)wswy&@ zDr7`_6Uw&HQ4}EH9Ch>BsN3qBvc4F+`tzVcX0hg zUSKNqaJh=iZNh5Pwh2QhPfte&;GtUkf69qj5nXYG^oYZ&gu#~YY|$C6kyMti)qM2L z*9S@(lgmlJ=b}pziup`RwR=YE^ZU7F$4EdP@Z+zZJ^#jJ9WLr9er}g!)o|#6$ewH) zM2=VWhCg!6FoD-NbsnIZ!CUlP`wG;8J@*_EL+2&I$+fq-jyp9g(7l>f0<(M_RP3;z zRbnkr7CUNBFbmi|*tAo-S;cx>k|;CC6QKrK5N|Sd7Cy z8U}-9vwb<+q0;Bkik&0**cp?Lj^f`j^eZ|Y3g+sHQ{5b5aCy#d-}1unVV%wGqa^2& zWWXSh_L<_esJ045&*AdnvH_brpnWaB2^7vKkf`>iBzF{lP)=IrlfF_;TH%w{m6O)^q-;59 zolm;5oYd-*K3q=P;FHb?NicKQ8?TocGU~0^d^dtn;U;vHg?t+SBvSg#n&|$nnBe{{ z^Y0n|KFz-q#e`co5Lp2_7e5gKbS@J-Za&YMBbX)T^sd~;;pM+L#UJdnh`*r%gH zOVDz^JqG)qf+v~Au$HU&hPHA`aba1WFXYNoJtMfURdWE-wN@Qf+9>6QJeNi5QR^fx z1TvsF*HlI_P}QQ-gZkXE$@lrt_?JBC>N35RB?Br$1@9_n)4FA49cHn*+U;Y!8u(JSQdM(ta&v!G z^0V^xSA>c@^Rrl}$j^9@xjN9JVy`4?GLWDq-90ZkeoOL8?Q$liZ|hZ*iT_?(%_nw^ zhi|1tdwjs>X2bX%wQ=EgbQKdd;&ZvJbRy{HE)JHk-3SxVt`mY_DGvKV8r^kM>DxR% zkVL>VY=C6hDLMq1StOuAvH(Ymams!GeisOS`tN80x-J2O>oNUo8KE>?@8< z$ZLLWlajyK0S3MaWK!ZrH8x8ikLmFnFd!MfD9R_M^{kx>RbGpgCMli4PD{$Vc0`ME z^l~=UsG0JmB0mF(&U2B-HZWCnk-DglaQpv0~7hG3|0t1}cg~>858grcO)kYb9sIP1&Irf}$; zTx4t=c7D_auo$dFJt|{w?g!;q}>N{H^aM{g4O^>{Cg{T`s# zbjqc%>F^;9W?Yattmp+3Et=icX z5oV}3d*_`m8-K-0s}HXi>4QecP^A)IAkn**DtFtc8=VMiI|ca5Q8IrrIPLiW0CWs| z>Y*umWw|=aX}BKc`L#Xt^yyEE)5g1hw~6P9jbMBBi1d$BDM8 zehwfzDE|DCD%!#;oqo>q*9m{LBAnE6?)TCM=gc9EB#tHoC$piseI%y{VY3iUVl3ZL zd=qNgP6s=BhPrJC>B;0wvV16XS-w)PoMlqxYTn@rdj~!8-%J~AjEzbv?^ue=;IL__ zycL%UHk8%W24i7=&~4d3rrM5TQ=ivMJU{Gp6kAgX=I4CdVcBJV1h>ivy?`!MMoi$$ z&4ZM}Y-ij7E?pbU%$0w>&AT)Xf^0^RbFOjFWz#doo47-ZdyOsD!Z8$a0sodM;_s9G^YzH;+w2vhY8h<& zcfuI5^l_xF)1u^qU9{Y35kD?nW_tM6UYPbZ`%M4Roif$?FUX$gIM>dYGCN3EH1CgT z#aB#A7n^nC*DIrnjds;*0gjpo$JC2ah4R94sScQk8 zTQO7+QbN224ORxLHpFWTJ3GB?jpaC{R7y>RH_Hhsfw0=i`7q;(!x(hy%>_=$-3WvsH>;?)u6oI@`BpdWE)=_tuUi zKzQv|hc&Ey4P$rvH@;S#Gd$UH2k*hRH<8{_vv`XWVxEE>N8n_L)b*a99>w=1_a44L zTnH=MRldU=|5L8Y)+R$$o`geIrSY~kV-#F$!yr`EJcZ$G8@7WL@k{#`voqMujF`+$@H2lS}X7-*o96{Ci&MApSkS zbO8TODUIac3xHaarsno5FyoW=rvD@j4+RP%uiKJHB=4;v?10HCCYF?aqVz#rFg7_( z-aBRFMmDr^z)5zz{4yItN>sy{2gjyaI>4@^{Puy^t7*_t}!nv!b1`pkRe~=c?`8MZG@a+r*x58!PNdxyRR6qqM7-%Nf? zzOAy+@=jWC9$IZ)sPy<$e9C)|Petj`y!E)fHx!*JXVGKHk3Cj8xSa0Gq315!@=Eg3 zt@ALD=HXC!6*tP8P(|o1dY3o5bUtdG0k6y_W@qb;fX8n(PbqRV6ofu7P zdV(dHYplv>xYRGc`D?67oDHm7GymfcvqiaGe#-%=x8C z4hCm+b66;hAI2vL%)7_5FL<=Vw6^#Ajv%PBX|xztg3Ig3e$}V)0|Rt_B6|+76(OPe z*vH>QAY68uzF@jmDOF$nb41$gcng0yN%?Fh$8mNXF(V1IaxP7!l+HcsK*>RAOsj={ z#%8w?oxFK6=r<$Q%U1KwD`3Pn7!gm!%uSeoo6%J5_f1eY-Ndl!MYNPV;F^3kh~JE# z#Y7mE+T@%h*c&eUQBs7J*{`tdmql*;7_zywY6=?-4c@Zzp!Z}Vh`knL0sb}hrnlb> z>Yg^JN%g)`5H$PhH2o7}d-P|gAt88dIRs;{N#IT=h|84odvk~MTVxfpOFMfXED}fr zVqhKs{C~Y6d7s;8qOCN!qM@NN(LMww%zDq%42f*cckhtb0-KKX7}B9#Gq zZp97Y)ilKll_uG7?WhVMR1b0L!*_m?G7v*#9!5a^k?C;sV zuQUmPuj^ybR2K4GmM$_(Zix?*eO_q=A$~1+^XtqpD46blH91R~E zW&9R`P}&p|3wEZM?$!x9O=qb8PlNY1!+Z7^y|?lH^z}zakJ)$Vv5VBZ9d!tIGIy=r zvB2i)`-!(l#K5K@ZRO3cBpYm9>F8-+7aA~@; z0{RPnXH{S)rZ>s6W^1mj&{$!Dv5xnl@dS~t##`qrFw!}PZN=d-ax1L}vnQ1MI-tYU z53KY+0X$<7j?7+6WQ^ zcXv2Css|Lcfm%Fcy30cmDI+YQi!mQ2ow+GL+d@(uF;*KlhYu>;0!Ta{Y%kM6hEmkJeB6HD{s^vuKiC}<*!yd-TbfO2J$oq? zos*(tEv?kfVZ9rzl$?sLZ}|11=S>P5e_R|NzH*Lc^lV={r3E_C0*^Z_z}P(myhF9D zO&CLD9ja>%7s>V7o9B9%T)$nCT;5I)q;?amy)ifQwp`r?B7Itk^jXKRh~geS|*gOy~fbl1o>Yvp{tVNVUVB2N8p6buH12IfxKx!n9Y|7e_@XysUG!FhdW#d3Fu1YyHEq21tbe7DZ zHd#uYZp1!L37tx4yFOEX&Yq*^%}Q_ItGI5Ae7~r=vZ5GDT*>-Y;(9Stnjo&{X?jy0 zh!k@(TEUiP&gMwSwov`p5D6Xz-RFH&jH~!YINI}I)1hlIzN4kRCVFVgTZR@F4sRL9C`>2P#wi^5DOvU zjF@8wRb$qJ*YxIM+pfbg+zx4jb>$O-N{mK1ZO-Hkn_Lu_cMZBOhHy8t8aj#kalr?n z`xa<&8aNJ7AUQXgl=G-N!jcPC_GQN9T6Us_L&)+2_Oj)^f0;RRX0G#%mvfz4`i~0w zw6nJz1vUuW1jET-iPf2Q1#v^BU}w|D=hT~@vd}IYf;_4dzK@`(`DMrkQio}jdaG(D zP@{2A z_AAOTOm5?Oz;6BYw&+YQ1XQ)0_&G%Dtysr=ZFy5e_fYLFwG6W?gR0r|zsq(|u{@i( z)9FT=&D@C!eERwmWxUv9)+RQZ&1`at@n9`)$@aO^CNP^A_ubhAp7sCRa=^ivMx*1p zH0>$qWG2m1nrZ|?4-I!m4e!jQi}*vB0TY;_Gp{X3s6tNXQalWOks!Pk)8}n-c%13y z{z9_khM=elrj>8S;3Mq(2w%&i=$e}1yQn5;jBh(lsACcKgLE};M~OXpZi6kS-NO6f zn{;}qiovu7O}$}HI3kO2NI`ROP_h-3&QAun;m3>GO;1Qr?8}DAFKq;5goQ(+M{@l| zfC3;``P{es^AKln<2H>?v5=RE%qP0BF1wgebmD*0nVsCySs3|ER*LCnVdQ}d5`uPi z67h#5228wP$kXcfF45>yVVgtKanohuy5ztL)-qHGeN#uRPL8&SWFtVGugx)m5kWZb=~ z{WO64)Z;e1wllo8+hx!@_NA`g3r9-5Kdw;~&v@*l6B(lI;HAw~q7436FOVLMsQ=ax z@lok4DaoM}ILCr&SHtZNYEN3&{EO zvl*X88B5hV|1a6H#!xpz{mmkq%@Bt8IM01752YvA3W9Ya#~QMuh2NOtnO1AdWg0m~ zdhKD@?X-|=W3$F*n8f45y4wF}07V?wQG6b{La^>c6Q_l);#fdp1RUKy&oCdFBYXg~ zi)mqrh&1~@s%ePT&a$7&L9SSi;v=sQaJbAelcZIAt7ARoappYW)j?Ibr&b^1N6QGT zJ|YMGss729-8RFK)Wmyo)z4#Dc6ettt!uMUmYtD0&mf-v?09~i>qdVBZFMH+FYUJO z>D9p-WWcDKJv-kbL2*kWR6RNqIn11;YV7v)17#N30p`iI^7Hgw6hVgk5x-ct)ka~v zc*lch6aCA&qwZwS&lmhq?I2Mwh|g=SG)QNJ<`vBuuV@t2_oV!0E66H=Ku3 zR%MavsiRUiQ_Ab^QiDmB^h>;vZ-Y#_vng-dBV#H}XVt}_{Eda*%O5ETl5_0r^d?<` zXJ<&cGr7mnk{ia17Eyr3D-S6IbLZ+$Q`*TZbW+&h@&MPx4z4nh4U0(!*Tx7gzS}7} zF&drk;Bo+b7aDm0$XXi#aJ2{E%cYZ=6+d!Z)Q!>cy5s#VS%i+!J{*qfKbz#WJ!W)4 zgLcs-%h)>-*$H5-+yl$@`6yervh8tu`(QDsC;y(ce8^IzUWrHArU88ik;57UVk1{Z zo-i#{d7L5;n;~kC-O}dg9;Eg7Xsb3ng4)6pc?0)Hy7?Z`)z(X>1Q(MwH>;J%@Ga6A zj{*#BFl<>{U3Oq6%q8LIG7V&#(n*2fSVUP3jHsof=_7#H_0+&z5o!0st-|c~SaSkp z{gwcV?bPMM4vR9*x&Sm9L`_6najlnvp~sxW9DJ^BJD#(3VBS%s(Fk=S`C#0weW)A%U=&t*!(75C( z1`Uhq=1>%O-ltXGRLuz4TZK@$Mr0ZY*K4$mE27(Uwu{Eng{+etDMMBzO>K|x=c@Hf zwZI-#tG!xLwSV0jRU7tjb&J{#f{^r=hsxDjTm2pG(9w;R z#gNVe(L5{fiU8N>mEMT=A1xB5ma)S7J|$=!-<_c$Ct4H99<^8NA!` zyvNConPBs>*_u6^6h>fWP*_QS5ra)*s>P5}vNrB}Gt~*j`PQuTzLN#p4!@duB>a&g zF8&lS9#-wx7;Z;2PvbbDD!3O`-JcuMw=n79RqwR$+=^B&VunPw6oXpI5|>B9_gfkNYm}SU%c;aiE@8N(;p)yleivvr#Q2w z$~!|kif5vDWnC7iT)_n7XK&+*quQC!J^aaV-Hz4_!YW=d=T+ceDO zv`|7gL9u*QxeH{)XU&v%N=vH+ebWKALoP%a5GT54t3Zhvu%{;*huK?ZE;~(UMT^6t zJP;fN1paaFz)X0n`iJo85_-0GcwGK}0Ftv&97<}(m{0C81XRnK)XmyXa{c>w57yE7 zdvxK|YELR}6Rouv>K(e6z$?kUWc-E8=vMGCnlBC{_v3*_)wrB3=Z8_jP7EA+V0fcz zM7oC!UdfyPBE;I|Ko3aE4~4l0Szu>k)O*`MjWvZStjpVlJ{YWnTmmUIF=MK5m%{&{F-SPcf`A|vKY%?d1sH#*KKn}ZIzVn7;cWWDelhR zFB;J_25ifLY;GNo&T}JvI{PE*_{!|dOvred?Etrz%asPG{4V!?I-iW3bHv!rVPGBnY`%Gxn!Yt3UY` zeS(v_g2gX_Q(?g{+hTdqW~5BKPkX?)`TYy>;yC1ybx<(Z$?$rxvL{e|tb)%{fys>9 z3nau)-k9klHqm#s`CN#DYe>6AG|N>UqjeXK$x!pV?UF{hg3=Y24=i}i@=($~c_LmU zvl-_sO9>((%LT5bwAG$pv&JSP7VdcojDX}0xp>S0Zry(B|$FLH1O4qc4BY`perTv zywY5LjZH!s8A~V&>eVbFj`joH?1FNn+B6kXhMDVTvD8QySpdZ9vfOwhzHe2IHdI*W ztQ%_>x&gg}-$F57>a?XVAYBELEib{G%@2sviD%Kh7RnXEL6R-nRUM8VcPla5v0a+m zN3fR70#BS>GmtmfIXaqL_V8L4F2`-03KDlktM)AVwph{394wl0K{M>5YHXbzqiDU= z8)CMbbQba9@;ROZI79Sg{ALC{V(jKTm0N39 zU6A*!JMiXR5Qez+D0^l@{+7^p13K^eKtOl|>>`ZaJ%N=46!buIdyP$SJBlSF3}upi zcP1=?Mzp-&T#`F`b98FYg6G{UCE{HXe*M%KXcfDLG!xebS69Ik{R57RTYAF}>Pm&7#8y86}5W>?n?a`88d+ahtS#%%+(Y z9C76Al;(x4v<$^-PbMGE{h2jE?^E-ciSBQ$y(6*qjt=0xuHBA;%B>v3Xw$?Q@b2(; z9b$dt7`OH48LLdwCVLoxgFcmFGN~ zk+Y1SWiRRN3ir0by~(pl(;MBJtYwmYO8FNG5EgiV2gdB!7j!$Jc+ zQY1ho9&X6bx)D~FIt9k<7H{-*fXYTh-Z6ikd;_MsyA(VG^t{?OyP zAWOrU)s8xY0NDvkhauB;{|kzJ>60{y9mEs4y8iqfsUB9prL>Kbs~uq-M~B_m_{nPn zU^osfAbd3?x=i45+RXRGm4T)HNDW}G4|Rjo+lhKDTN5pvn4CO0mM6UoP&jiw$ zrF}xrxbI1dW47o9F^fMx>aA}*H<~oBT9ZiL%DFP_;v0W|0nD~}tugrq9)IN?F_uQY z;vP3OKd=&vjJ)Ak_i*6qclhhdbqNU(%sMo9*l}H@k!>vLCiue$%iNL+Xr9Ip$aCBj zD;rIx#9oaS$1pxPB-F!uVKng96ZW3!mWNF*G`Cm#G49*n71Mx8H>EERemB{N$MLyh zj1sjx^1DbJ7`s4K%l@;V0e?~PGXN-j&rxPTRFrd}RV5%-d&G91`?kQst!YQ&p)Krl zrf^vOPGnP)PUv(ybe5#sOXKJ!s*7S+|TRj(JDYVf9Mu=`kdQY)G#0`0wB(HwJMw)=UN; zOTE{bmnQu!>rFpa))C&Qj_%K1r^csPFpbS8?${NL&Q03@o3-g5OYFj^~x#w>FWxBdafBfi^(boKNl!^HMU+(~{LQ5Y;<9%Z8=)-mT zkZ-ZlZUTGkztOFhL;p(K_AhoUq{y|5CMD!7OYh+-56!|}qw^qpG+Y$gX-|Re@;12E zz4i8Cx$*;D zyNKHqjjX~)d`)o;T&wqQ3>*k(5h954nfzf@FGy)s*aEq4Qp=6o#35xT3yNe_F~@o5 zoW%?r{3wR=0>0$jJ9kH^PwN#|_77XFL-~r%$S9nCC_t*fdOnt<1VRn({D#5YPg1`! zEcq%NDfL%$BJx+DiMF}cY9MDryl|~O>#C+>%9v_i6B!Om)!(Uwx4i=old~@98KlB; zI{oe&9013QH{CFveg9k3QH9t?b*Me+xZcV&HL%{r{|R;r zr`P#%$wB2TB!zO&qq5xFUAcGqa?gMR+Ka|`Od52vyRkwzJ2t{m6ctdui>XsNe&uAW zC!gMCC*!~wIvR(?eE6O3r;EKpEJRi(BU`Z_Y8xPpC_2Q+UzbmAu+t zy<55*qtizFNkZu)=^w9)Wd<7?%oNqB!mUd%B37}bql%zbe~8Mqm5;e&aJvkY!rMkd z4lnqZsxR@?Qn$OR8y6rTC`7TY{UJ1GqIkLMHU2_*758n^l&o|)HG=RE%BaV7*As1? z^B&*AVYf(Bax<8L4Z&ca=OcI0{FETWaEYvqbYB%3-DIlO{g=@NE`NVW4AeUTZNPhY z{o&VNA84JK$^Ah@tIp&{Uhyd0(%e75*>Ht-UBXN9DBere9J84pp%2+VQ+YK)*-AOe z6j`Dr$F}O(4;N3}^!mWViNvYn&m4a`scLY@|Aq}8Q8jX(eXIA||A0|%J1|*u(7}fs zdf40FG5YW$-g)G^-hEW+Jx9NH%-Ca&9e3ROjz8hV@h43<`IJ*nJN=9^Cr&!+>~qe2 z{|9R8ubeZtVcz@&3qN_)qQy&=F1vbpV^j8;Ygb%%{l_nx{fW!3*!%ZStz31(>NPih zx_NEOXFj_w_qqJ~!c8}~e*Ry-aLcV<{L+Rm|F5sycKcVqw(;xV_~sq|_N{Mk`p$R1 zcjxziaM$J^{^-Yd-*fLz+J1W9zu*7BgAcWD+4}IdM;`6yeC%gGfBZk5_(j)~PyO=g zU;X--?q{F-&Gz5^?)jbA&bLdQehr^p;4BivIJ7``drRhxkt!Y7_6X|BfEwKdYej|KtBABu@4n*~_0{ zBde-v60UoRG191Gszx&04;v|FmognL+0uUp@n5z68Lnjh8=f$%PMunv7(R03VfNp! zsnLJK#*i`O9hE+882PJ5`g%Prh9!pcTaEseXA=YU#XGV)4=?O$!p&HPkOp@FlTeX?A&H@xmq9riMgg!!Ud@A&=gXAX|TV=#rZ z!7vU^5AO%Z$__3w_&t=V8dTTLS1@)B?e3QuD>4})c*dYi67?GFI?0xH`TN>Rli8` z-_(#An@wGLT~kA&1buPC;-$;4E9Z0XspSog3$M4F6b$)Q-CqAIkEfH*JAX?0g7Ui? zI1?wXn2?w?VXx)q?ypg+F;T_PKR+?7>fMR!6IIwXS0}3WPb5B)sA8}GwTY@^A~7eC z*e{V-T8$|%JiEUPf)zE1VKu{M@o%DPUIOi#Xh;kj@$N*Le-BK2klGGREVTNUBob)* zv55qh^|G48fr()=62nI&5|<=~6S2K~{}BuUV-pwGUz|Ac!X@(($Lk;c5*N>$IyEs) z{~nhZuTK1`@AZKf`2CUJZ~R|95B2+nPk$`-{Ux67;gY<+zxw*X3=W|Wzjty3!Bt$w zq2C6c@8vgqntzOf<2D6phqPSe7rOH#|0E?m;o zu$*CK>9U3;4RaFHMf>g#i!Iq{Q> zO-t$*B~HASe-hIfovvwE4$F_7o0_-0eldJLZ~4;2sgF*cnwp0!&@iZFmLJd z#q~|8Qxj)7&Oa+rn@T124;@G?tDoPHT9RFSWy5kROq{Z0F0wI?`j^aUkWkroK3ouq z+46?^xv6DMRJ$y7Rl{}X@=^bt=TcKjZdlT^{5t6it&q@h){g+)*e%GI{-WhT9I8=8y*Q$X$s5oZPUHj${yVmU5@1G0^hC}^%R z1eysdk8I_;V0r!g#UQNSs&=gFMw{groXcVKl;}sXh(?LJdRh*Q35lkPohfQ8vV7^% zrbZIQPb#;tF}0)t#up%n)-Zv#FY!- z1TxmAuFN)GH$;nPr9M8kadzUw6H|#}$BuvB)yF2TZ&q#GLviOO_&4jL)gY`fHFy;s3-G<6s$4))`{}6j)-((o|!1 z&Vq7wYi>C_b!9!n^zsIVkj4hre5fCM{FAj;mJ78a^Yu#_>m73661vLrbCxb%ypVC} zpDyk35w&|_itfgXOZoxh8s9;m-?#IRazhV?Z#Sc^uc%p;6a=hDWR~sCs>V4B8Wz{5 z7N8~PF#gO($u(ZR2wUZHn0eXdi|gUBO$u|xohD2zuqPc+_h`q(%riT zPW$VwfsgPz@lE$z1+4n5``fO8pZ%SB26hb`3(TM5w_n@PzfFnV18@FlSH-XKd%Fe( z|9-z|*MRc=3_QICUY{Jcd*I9wy9cIJx!;rgUAE8efmVKP{CfCR@4I_o{C>L!p5}Mk z{<{YrJz)31w3^)mC4QG2w0q!Qe$O9Foe(!^}qHp}y z1#Lfn@2-K9e!_Uh@2C7u1vl^Fw~XJ%_+7{k6Mm6+y#ek|EXginAdP8HW;WRdGf%Et zhDB1=lO{;;u-q{f1r{!E$|4oU?Z)GkUmLEq#Gq~&w6lwsoRvCyY~#`KaTAEoasM%K(7=UN#W0E5#tfT3e|f`va|o3C;Oa@# zFJ?ZFm9_0FmR?DW#SUYVX8)I8{F84-gG_z4X~ELvHW*`4#m7tQsO5~o6Twj)RmZ=t zaolnL4{hfGP*wRi{^y)?uc9{0y{emLVquDV3nD6|fPji4ktrlghN3N+(zYx@O-1V} z4MDS#vSGF??U!vE7HwN*OL3n6=XuUKmkWXQzQ6bH_2F~I^L_St_W2%P1LRysnj4l! zi}G@4rtOiLj8)#eLfO{S@6PdSo-KzE$uCTzea_2B&8H2{NzX{4Mx`^E?FpM09(K8G zv+X{K?LJ)yqD)o$FYWhae3&n*Q$(_yp$n}Moz^~{eCAIXsnGvRN-bcvHQN)cdWiJI zeD$uBQ|+&>VouIXB<+Mc7r5`cp}a_uJy)69j9+P_Wz}uxm9ImRPoLeBpQ?HyfA_}< zuI-6P^h}6}ni?%*U|o{cvh34j$gWgUs_ejdCWcOnh@2plO*_BqN|BRGRMl8j<$xKd zMOG@y9#R7jEC<4i=&v!RrHiDx`}it@szzX*Kn7zOS%q12rRDHWc3u}I=4Gf>!_IoA zW9=mD7%OGR_$RIG<2Z8pbt!Homr8S<;)Ix}=@H`+go22Q7$+u0#Kwu(u+T}NF(ND~ zCMJARXk7R>j|h(s51Se%8&Q%lcIwzEQ^R9s5I82teb1Ovre%SrBs&8JCylI<%ncC} z8W9`LI5~^?_nhp^#j=o)>sGJU?j@*ZxKCZjyn6L9bKyhB%n2Lo%#js!$Ntw(ciesD z|6Hai_ktd+@78r2>Yq21>;2#{Q<}n6$IP6EkD2R;k86!(J|tX?8R>>2_fM2|WjZY{ zs~?Vc8k{!_*S|e)nEwApZX|xs!~BW)mi#LIU*wrguZDiLUwh1a^?_q%8R-`S<@tKj zHjX@yHD>poi)c)!r=1fatMgGkr*Mf{MRgkGSpf~&s9turua_q@a-1iyC*#I~q|5|I zf(MzWTXv2!$Bhqj~o}| zancj#W!PkZIjrwB`5+~Gd6c(3r&xhfRwqSV9`5O7dqZ2xNREy{&z@F}S(&IV*}{Lb zn$XL0_0@PS|I#kf@C8bTnSHz@cxZ2riiPrt(Aufy1es!Dl?%J9SYf0L)$`VO?v$n8 zBZM7ZrXvdFz|#Ewy56_smY?zFw+|3NBv?V z!mOTOVhSB5PjpPg8X-FH#f+ej=ZNMvZww4goG&!=N3C!6Uw@Gsda zXQ6R%pwE#7pX++UT z`);@B(nVHg8tFi*c~Fs3n46iQ7MShoMhf^sSihEHz-C*L)0i?XWdb_Yl8TS4H`Ewd zO@*;aEz2kCF*(^R8|7tW$*3}$EFvP~!Y72ss6^mT=+wBVh)Ak}$>EW4(qYx9mTTW~ zBqAqbvpu$me|7H5F@lw8P1!pwm5M@;=q*~ZG8iQPv}EbYzpk;;RH%wa^QtFvR7Q0Tk~(oF^G5Yxfl&4?WE*T%UTVfcUZ=kI4-l?9 zHIv=kS`9o=^6SmXDM8^k&TVAaCd+TWuTw^9CTHX&7cw|wphAvjWK*E5e}C&w`GVau z#SSguRDB2E9T{-DIM!0%_vC(Zij6hBovQN!Em<8zg|ERE_=&cu15 zB0XVIk>e*tFhOrkuCPkNs=rksd#qlg{R9(^h{$o_@lKr)5g8jE6DO;zD63E7nHD-} zYItm5FBR@yLDU!gmvsYUoDo75VfkdMN6o)i?yKUIAhlYojENQd#Qgl6X2+!^P@c zq8bQTtM$rSYEg1#VZK})&6Yc;GC_8#NRw+NY;VX@%kEs2Pmb{IF_ZzWdvxT(B=>aK zC7tKPUhh23%AuU@QCT4m*ku?xbyA#Q;v_6|T)2n{kBy6=junwnp3tzk2x^KxJ>!Jk z^GryV!>ZT$q=dU_DLri@2`#hzJI0%qRIy<-mi2pCA`Gg}wQ# z{)zM>Av1#oX*uA?Nm!VeTv(XppD@lPnHmW)AyQSsSceHI%(*9XaWSdNYKlj$=%~k` z?neIN?BsNoKv<$t#X!U+rll6xtGE6I*GW@~HWd?&`41(Ps}#Gm9Ffd3C+lc62`K$l z>s~2onFWNE1uv01-)bu?>+~eEbL@~YF3TfLU7~6_l4o%OIm)I4)+>_d z+sC}H;PD%_%1V?=Ersee^LSF<)a|9S+CgD0EA^1;Wb(0+%SAY0-^`gWoIx>hmDP^5 zp~<~XRSmaJ-dKoWA)KCFC_%Ku!jl5WLBJ=*G27AF-^ z>(UrO;mjmS<;cuQc8|S-KuvxS=RQQ7bRrkoSm*S;>xJKG-$-lmZ}$=S7Nb;ZiiV!k zMER}h*DdC&wH;RO@ZZ`(MMdqOlvgsDsruBUWgP#RvzDV_)=45JOk~VTk9)k_xf8_# zOpI#!>$;dczH+M`on>FvFyG;c42_!_!{$%rwA0?Evjs*D1?id*0@b0g`w-USL}63= zWt6=nX1JwI>ASyGRW@WRuO>~T`@Z=M6nUW-XD4O|{j7(Xi?YFoILN<%msPD=k)~pI{yPgt;5DblwS5p8o_l zVz#B7Fn{5?H1Zm~Jz^J13nxd$F|lkUVUa5=JUULOTXeXXR^#;(&)7b3yo%x(&jc@p z%1R6W8;nDvCPzn2Wwy^=7>i)8la^S{{{eeS&MGs$b!6GA_LV1l_0e83<&hwt(&${s z$5*DCwG>JJh0dJQ?fWOo(3{6@#@vVJ}24PUxAN;IpMNU)e&= zDhYlg1X(0~>$kS|vfS7KQY*aUSgd5;gGaYe%>OHEy`71R^B5XUz+0Q9m4!M)TzAk5dJoQJ2j)<&Q8k_lQ z)E((e{$e&VfBQ}; zkOEDQ`)m)Kkzc={Ue4SPbtE%k9tMBR^89@*&o?xzD|S{=Q}ANt21I&KmIDpz5s=gp{Na!nxn@ zdUQ#4Nw)D;Y?cBw0u|9{f!UkC8-Mc00C8V^_fhj*D7oK2jZgciK8o#+<&E6wS2ULG>=AOpijIbSiH9bg zKBhC0$jwZ|16g|sPoNkjMvIYDDxopV@-Q5a6f}kYd!snD(>Pz=qB5rg85T7yJchYE zk6N~2iYOw?Bkxi(b5ZWEQWcUsz_#y3W9v8E3{-8>s4?CBwReGs`K%yF9I1Qqjs*{Q5pNY;x-3W(i zJB(+=L%h8BxX9P1>O+L}>n8@;zky<)7@&Ur#X)hY)>X^Vvvrql=#lzFpZzXc(4Wa{(v4Pup+t6!^K zr7h8#i=Q+Zrd{H7@tPPe7HdJ;8ZArzQX4B|n6vb8`YAC(pL3cpt!*+)?ewq2G3~f^ zv)ICi4ZCUAYaO*>?Gf>+n5NyO9T#7TlcKG5leV$m-QoJrLWZeaKg8YDD$Ez_Pib{2 zI$hhQ_12%(nog&8nn>GW+AUiB+*zt^APolF>9InqR%v)bRBH+PSkgly4T5=*bh!#s z7Mcg%)t(nw`ZLtUL`w^rF0MdI<1%9Lrl`f=%e*`z4kO=8q#EWTBQZ+!Fp>w(@vvpB17w`pP?@#wWjK8 zv_qnw-jC;CwhGfk!gGa6g*B>-{~`wJefb6G_i|^tSfRZuWY{Z&S9{uMu0L%wU7mI{ znNIO~Pi=s1YCnop?OySz_NkUbX!`4`v^4EJ{SoakQt>0POr?cKAFU;lZoA39wkk|L z33a78YlodIm3A}qE5#8cGq971 z$r5`+x6`E4>B1yS@+z&J_Mwm|maTmtuEFJ7L>ui-eBLN-P`<9xk~k~k&QftbKBlO2 znxUtQmU;^nrW$dM7O!s<6SOXHhCWZcueJDJrc+my8jA?kMlnzG=(1g#p(lu9@rAnM zRe!SxZo%%G<-Zh<0?FfsN zP9A+X`SX}~M|^>wB|?^-EK2Y-_?e~Wl9pMzMlMd)ClRvCRhZt?UeG##JaAUT(Opnl;YJ-~&)8)iphUsmQtbay`_G#tfD&jaxglTT=Z2a1*?#pya z(mtnb&CoC7{!A67wLFt+u=5snvUpn7Xp2RW=*;~Y7#3#;eS8z?l3muUf7ws=cCshz72)?Za&&CXx8KbD-$(nrt*U!$F=wNkD7g(`)ln^VLz{U>3ikj#@< zy@eJ}xN1d^zDYbI{A2NnI2X6iCvL%7KdrB}RrJB;VEr}X7A-E&qUyzYm3BU{ctDhB zhlLA!uZWjLD|`$mlz$PHv-HmTx!TQIEWWPMI&tS5aiz9`JMU_5<6@*($?<=*GGaYh zBx@#qzs~g*@CNNU&8;8d$O@kf`JbHqAu6?I`h~Sher=t& zQ_R=i)0T)>Z96(gW^1#wLct1`$P>BZY4L^@qID2kw9VQMt*uDZtF*_p(c&c$r;pMv z)-KTl^%44gT6gVg?RV{z_N&%k>#Y5u9YgWRZ`vMhhW4U1OutA!C@#^?*3Z;WXfGLu zwZHg#59U4bqn4rxj=sh;_RG^689Z>QtyDSIN$WB>GAepXOl;iLY189p%$zm*?4&MT zn+F8g zEl%%!Wj&W#`McECj!xIPrDF+4ZfRcrZKdnhXV3GZ8ZEfLx5Kbb-bWu>IOoyFIwo~~ z=Gi~$xpb|+OXz8f@A&v8Vo}!nP6DY@P(CMN&Pea*+%9?f#T_rKtcnlrKdguw9p@wz4d`5g z(zl(%>$y}f#Y@jPqvJP(sN)Zvy=_b9cni99%dO1I&#bH>iG%xp-ztcA`YWq)%k%R4 zcj!2*b3K<9`NwYOmmNEP)HXrJu48G}j$xfk|MT{ogbnGRcsqErg8LVFJ6Bd!R&{Lu zV`Wu`j=y%U@6ucTE_LX*uOn$Y=CdB9r4M};hUU6bVzF+0XRo)Ebn0B_t*q*Sy1nvp zZ&6Cvk=lA;ddc6VojXgHcDl94_qUZ^f5U&?KCkNs-tG(8hN62vsjTWB+`mIV8J3QJ z;u)S4{o1jfOQrrUm2UDr^>nAOF6mD_S6Nls%Ue3Ilz+?asjNDBjCAr2^zyH=>RcJe z%Bu4EWxT#ibG)Ucr@@1c%6J8#e0DNjxl zrVd_`x^wA0a+8rQSn4bJC@b9Xod(Ee)-#I-3V~toM#mR496PCXqtM z!!O}u>9pytCrfLOb9vvBNyokWOYd*ywNxm+L?{cqZQGT0xc>oszTdv=?TOg^ZQGq` z1?b-850rKuTDEqj4A4vEV+&rw%gU;qub1w+cIeetmAg_8rue5{r39omnmnYNf z{Wixtd-Jyi)tk3IxOsD%)ervCXZ3?iSFb+!;JDS#KY#nD9agv5!N2D}eSP)sfvaEt zeZ}gF{(5D@f!DTdIq>y6Pi%O4!+l$}yz|PI*WY=4!`|61S5|I2v2ELl7f<~3>~FuF zc=klyzn}e@inooKt}*VJuIKs96f?Q=iz$z--wf?}?HxVLckW#Ow|xIJlCRU-dtM7O z!i+5K4%ZN|ly>qDMvMvcaCS4w=xY4)FBLmg#!-IT&G&pi(;O~t6Di7l=|@w)&dlo6 z-OJK?84tRjHs$Y3cZ7I?`IRBsa9ZrH+IjTo-}AFuC-px$3Kj3_^0%4!j5}QNXZcpb zxU)k1DAG0gtJDg#t=e3Ap4W=cOzY>>Zr9~eH2s_RnPphRh;I*bAZswo7_F{U=4O2* zS6A}us9(r0OS@4!!OTjv`!&~VuFdYv@M-rA?mJ!2xvk%8t~=G08@N;99`3$J*{o1! z^2+V*3)FAEJC2_`8;Y5)u6^g)?{bWEf4$4=dcbv$YdLP-;ri6|8NcW3pA}E*?_)-~ zsGu)2fjOu5jV@x3vDCrR#(d>-yQ4?Mih0VqEUpX0&zvWV~UtceQdoZJg`s=+a!3#yv)jaopHq>@yxW zGK~`B8Kc{#sH(Iak1exe$`LuJM}&KR{arusD8J8t^P1Gr|0T1`gDB= z?4Tc~H}<>MN`F_omieb*EmdnqZ?Q()&BS&abjbA*Eu`wWCjaG|Um0^;Ux?LWw|Rw_ zfkwGS+6~$@%!dx7?;ftbV|Eq$T<^N}xL$QtyB=~~=bG-C>Kf!a&vnYEH4Yee8+RDD z8B2^J<4R+!(a-Q0wfbTG5B)p+YyCrg6Z4i2>MQg+^kh9zPta#GJ{hZ@r8j4+^ojNw zqr2_&x1ZHMX5Qid@^^!ft}S-mX-sp4xJJ5KxPCNVH3k~t#*ca>WAb1lNq@lDF9ztB z8hwld`fB|{?R>p11U=~MuGR0=-!xjfo4cF2b$2tpnJ(O>>!jrdCOu3ua~yAHU% zc75U6?ONwr=DORp)OEEh-*tuSVpnI^LE}5)8{=!^E#pn&HRBcIYU7x`$6R1MY;-q1 zmGg&2nSP(1ua{_-Ygda%_hk1Z_hs&h?g{R2cQ5x~_gIYoFVNjdo%eD_yZg9jxG#10 zaG&pP?+$Xea}RNkcZa&ixktMPxktG>x(B)kxLxj3u4Aqd?sMJU++pq?T_Ns~?jKy= zx`w%rx;nVqy4$$VakqA#?e6D3%YDdohP##fVs~%%hpxS@i`+fk7rMKh!GwafK~OLPC`I_P@O^}XvU*IL&q*9zBdt^(Kfu5#BJSEMV&73G@X8tV#m zg}dTivs|NHQ(WU*V_ZS5oyKR~irE->t?s`UCn=>Yrcr8};*y0Dkuy=V6{h zx*ay!8PDkLxY~|ik{!ZYY`>USG=Dx3GJ zGkGP`_(Ye#-FhxHqda>~oyluw7|jjGNcUefIvZyi9gX&c>P6!}`tAIR?ca08bH+B~ z1^os6@dj}%v_sl3=JNb%{Rwrq>NIxh%Pp^G^A6+odgt}+HhtCssk1PtjY|KZ58!%# zW3UlyJVPSBg=T1 zmTZ^)y8fE}s{V@plDCfv=>u=Gx@TfRX6BfeU|Z){-ZwKh%+YfCA@fJsxjG! zFeVt|jiJU6V-W2|KVz7&M*mqqpnp$`aZvw7ucB>xOfS<*X_fD!eY;D)O)t@x>bK}O z>o@7^X!q9AsywLQpkGI;y+mKEFS3<#*RTJC=)ynw$2#C#{g<}noqzF9yt4MB`AGTy z+o&UNS9U)Hhj zTx-Z2+wI$IO8=Z|j$L_;ovG}8mTyca&#!wIrD48V=XYs$GYh*+TV~uN?$Pcs?$wqX z_cM!nzkZ*%Pm{mpy8J!BY$G(5yO--_%~om;iU(QqStVAuR_JStHQG93y~c2tHKkJZ zdx$mljoL=n#%2{-1uJKdXb_?H^rwuc^lDMf^R`y3)t{lJX2n*2w)wMeel4F9&uN>*X5)GBy#9hFf6HAv z^c`Y(z;f4etz0WNUe;dLU)FZEctztU_UL=WtH!JPtFE{7x3ss!YvMK9khjHun#xMg7iWyO z{C}TopX<^{+g0+fQRRZ__l5R_UgfUQYWS<}ySV56%Kep#wn==ceJS>9`^7$EpSHXe zeM7NTY&EvKw;SJzZ*`e6c78UK;rxzyS?l*G^}+$|dsfSqyMJi)6Dy5BF^m1P#?Sag z{9+sw2lXH6haS=n8NZ3&jNkNMoBtZ{tDB#O|IJ=xru9W~V0p9U#vg(@kFf@R8Ok(U z-t13$%ztT|xehl!q8%}6MXi2RJ8H1EKpb}+*QNFe^#(&WTJU)jIj;L~HiM!jv&d3r zYn5ByzFcQpt=fC)yjjj}Q@gm=ZD6%_*vS1rbz9e+4c=@TwKh}*d8~~{L28q-z3I%i zjh+{uEFFUOUQjk8%l*n~%L*Eb#`^1Uk~@U_oVWKkvB&6NI7-;1yHf3hs$oBjR& zox@Som#LVmF!x~AV=jEJ&g|g)Z9nrZ$I=|eIQE)T$MnR6VdS+$xD``_`PDY^_!Q=n zb#-#{Io^W#z6m4UYPR0G-yLSy$4^4X?}n`9Ub}}*nvw(IgBWRNKRklz^YBUYTFe^E zXPCnnC!B4(C(R2mm)j-<7Gu_8DlyMv_Fz86NSPmP$~emN6P$P0@b|C{@ zM>cY!<;E2-!#=(W-iBF$aol~K<4Y?}nzJ#lVm`*mJel~2#p%$oE8YHs^Hz_ZG`nKf zV7|jRX?(|HC(Tuu?U>IoGakopjIoI@Vjifp>~4YIV*bQjSas5zg;{~wgmLUV&+$i? zUop}@6Sm!a(!3rc?S2h^$4EN&rM$eSZ8>Rn!;HWrVQ$4Z_x5p|@x)2+fJf~@uZoFc@xw3nUiMw zXHS|bn3w*+=-Vm37>98jM?H7a%zyr*xf$~#X2J`E#Wvr<^IxnhUo-rUuiSCc{O~30 z?j&w6lMk<+GzYy#xy3}kUYFKRn#;76Y3Rg#4R)sNI%&?u$m=rCb2!d?Xg6`itid>CqA5Dh)@Rrqy@zM#Ez%NmIYu7Ow9Qq}vAcrfM=;N0&iRk! zM>v%CuZAlyPh$e!K53?5Ucel}bl6K7z?}1r6)z9$i z{L*MB{x!5K$9y>wOjV z)=S;1FT7otB6x=@lO67|+t9q`q$y3>mlmC4dH&xT$F25_xYgJ->EG3MSX$fsw_!N- z#eW~(f9qFc_C9DNyfTh5jr;ct4(`)0xKIC~p5P(F`wbXAsGlb_WyqjmDT5M+rKThe zNJ>f^ls0f^TK|CqQql$vNlNWMEOkIy>d@qrAxi!rW&gXAW(;ONrsn&T=8XqVnk7H* zO#OJ$?9crn9N)yf{@j!2M}9tO&iRRF65jWV6^^?1y^}L@c+Eehkhhsoo|$-nZ)Ssn@#^v0k}UuYk+2%YSw5STEf6wKWdN_g4G(y0La> zEQQ$q0dd@P-v9LNc5cdDUSDgVU&o2+-yOF?X#ah4{B+_(jOTSGUjJiD{gg{l{lVMC=zqvA==D$b@>A8P z8uF#Z)47K|-aJ>%oz`ATPO^OU{h$3s8xCsiQFJ7FE>YmUQGfkKMZCLAWIPii#*GV) z4C2L1UQf5rdJF5U(U$<0pqMVXXNpv8WdEz@ZiDpkQx8|)f7_lfedOm7cd3v4oFd98(vb>b+UYBZiQUjv&;CZ$Heal(F0 zkA$vMz)+Aw`-nF@sc1A-S_#q$@&`~w`8A@xd#a|Xcgv^BO5L&_0+F8~^_hr2$DcB# zSrmTCTsiKP`A(Q+?&Mq=`~5%r9kT`n#eVO|N}f@kF}&!aUcqkMwo2)`_wtqI6Terp z?GHX=@Q&;})VQT(@S#bc`f6F{^TNro=4&46(8|Dnr}sKPI|B_`1t=J{ zkHmwyr%Y*X#$;orV?r^PU~~rU}S#@20Yf1hKog`nx z_vu{puYNopbX|r{=GE~i`S}4~wWP{oBXUkLY$)ekZ%R(Ki@Zr$-!pX)iAMbKJ=P6H zoa#_|)VQ3i20efC%Bmhm2&E1pPsl=>;1p(cIuHltS2=BC9a(>MjW2ERNgY%)fDDm} z3P%iGM#zgsDC9^)sZXlNM6C~5vm`_C;#Cd`L4?w{Wt~X96ez<;&PK#ON)&mi(sIr` zkufg^wJbOw)!NhiV!MEY0&F9M+fs{2MrM9t4oxR6BWC%KmxDK1`5A~vRWJD{EZ`$d zQq7Ax&MZt*l!EBwkhajwk)e(=2yU{F3LlBnLK$2_W7*(Jro8Nk3j!h)kMLLik$y`- z>5LHD%1)WxA3S9Stgtx4=5;pZJ;!+ct}R$ucU|89iSxTwoib;xK4n&}J7wN$)3hnC zNi$@PMR}ZKAAbfnudTZ-?*)}pmtb~b+S;;?8}eK}8~*>udi$S!)j9n;r3F=1{(ehc zQ4ToMjq2^kI@L)|f6Q0>>}t~L`T4H$h8&tytkz$uj6!otZ0NM`XjEy%c~qr~w)1da z5VTKhomuipR(EB;v9U^-HwAgGKfeH9lZA+DXPQO_)BLrqMS0wm>DJ!5*WQ+S!%t=> z_voAX{)^mXpMEO8ev8z4ruskGXy)lPqOm*b4Z+55(R#=}lYI6I2btzb+sua2#0)Xb zn!%=d0@I1(L72^9mbuqvnN8>Vng-|2b%ziC!+pnIQ+yQpM(QaQ{d%<&+LaUJ)$Su2 zv2I7)uQHU@t*ea+Sc&Lg3rYcXwY#dLWdW_%KTz78eSrv+L7`*ZXlF|H&+Se^<4#!q zSnql^?nHg(dyi<`9Xo=j4UA<+y65=RdxZZB&-F{3qnR%_$m9PBC-u2Fr^k?)nmw-| zJy6E7xApRM12-%!lXetFc^oywVtRw`T{vn$lu8&>fvArss8NQh9z+};QAk7e<-f6~ zzWZ|;i}eyv_RXn2P^m6K$I{c2uhHgvuIib8jZlA703vLKLv{63julAtDF-?xD#S9L z){(kw9a?`AG6wX=CA+7kibdUrjAVC0%J#B*X1??q?j)F`XRI*6e~;B3EBtj5dKs6Y*|~`V_g6n4c}=z zvcugS4qM<9CBgbU#{_9xRa1$R5`QbCzq(KL2#f` zV$_&XMfNoATp(W;KaHP_-E$hwUQOIoW93HNbo#N4im4%SU3qVOWMP+fl>(#c#oviF zs)rbW71?!*9dUd7X-iw9P)0GmJ(twgFaFh9otXNfPA_NpYY%mMJCDtnARJM-;CoJ! za}qOC^OI8p{R3o=p8pmo%XJluAWyL6Qsd!J{cgL6jS2Go5V3RHQO)j*qJz-zRDbv! zy%;Gpt$Zv%=_K%UJNa8-jPV9L2Yq`Ks z5?K#l?M@V#{21OUSN&bj=PKGG`J0VBsdZY@-7U{<*ST}&{{2(UC82GZC(CvB`q|r&JirKdGxs&XhYN zm(&!cnG79#@^hPY)5Si8hIN;$Io-M&DnL?`ZdNW|qRdfhJ5gST%ZVvUt)DMIz6Bz} zz!zcXdm{Qq*^zSW$S=jt_n_t;4XJqHn@;l0;@8dV`$UMlCB+ANr6$(8Ie0Zq?X#z} zvZ@(P)D!ZF19VC{tp&mNuQb1U0X}IM3TC2RQR4I{~YC29v+|f*%$Cq;D zT)M3T&i-z$qt^&~bO`x2r2G)Kt))>$k6=snHYvUjG^iB|zii@0Q3fBbL(y$rG^}rT zTZO^;&Z_(pwVYzN)b7>$44cXwp)}G;ADJ-8TbwHuUXyB^tCHn&+qUcnJ~nT-c)yfx zibam)KaCBO>bm^na_i0577gk)Kui~NyNCn= zH!J>%xQw%UrHjd;&D8lGQ8+1U_@&W8%namB)e8l$^2Ur9DcTJ~b4>H*ZdWsx+i2F@ zXx6NGb0dI|x?Dy}SF={lbi&x8S&J6UTXL!!EnM6q{KTL+Hg%T^8CUaWXEbZ!LZ~@+ zaE#l{jpk<(>1NFW+~=IpJRks@{L_(UuX}(&BDh+x9Ap2}g)Rb!4T!oHh0!Gd=OI>v1<#(WXcQ8CAMxOGaDW#w@CNwhE(sgWU zIb||deo)TQZl{)ooQWMvv!|uw&-WoB6w{+M8DHa2j)zudw0uUzpqbm!+!iy#(z6#T zzxyY@4=6vrrPQfM@*yKNLu9w^QE^f)GfKs6ZOrm(J5s|`7*j{cSVPFLseDB*GA=>7 zVtw%?V)EqhaS@zKE$&j&y_zj286ra`&6pW(Efb85iixvYOIt;g)cr|I8>w1bImN6L zGFsz2S}{v6biFTu5R^EAGIesKr3T*7#~&6G6&vdWD=uO(Dx^av+lwexY7;z5v!c`porb9D8Et>5g8E| zf!5U-@&O6ydRy-)m!uBtp55otV7=cRft?CkCzQ0xx;3xax#0pQbFUjb zD6@V0aVf?HS6?;Xop9EK%i0b|3ck>D)wV~$?3s0PP z_QakSwd|EJc5HIwd3qjC?M0AR;Kdl8Wb5B3iSviF?k<;R<-bUbFT z!o(>*+Z;Bhx(jUS_MGMJ*VZ+(qg(6duB(gcTa{;gr@b(bu}fM3O%~q?otIu9+t7^c z?9{yEyd37|`2-l9np{4Lgfi@4k=tM74iLEmMeZQl$Sn1p@q9G#^T~%4k&~B_n#Tk_ zO{u+3;>@8)ExOifiLE0~sQ|Z>M+Wk78P%{#P5$yrGjfxt$2oDnJmS0HsI#N7Q|kVu z1dgive4?iQKgWNi*Rq~^zW<-T)`g)vhdt=ZEkHY1b6SGwXrr=@HPM=-knZFy_g!5y zLEh`w(P$Z(b7uW(r9b}gyEE$Ri!2lIRo#O6m(;ir zE#dM*vvi~Bc`oJ?h*D`Z`tGfsZN88Tjme7>WTz`ZDho%=w=COfQZ=fmQzxEKcQKET zfU|c$p%Cr3U@j}BTUPGrehME+WT&^wuvMmosJS7E7f6^Th`^pJ{<1&Z8x zTICm_@_3Z32@H`gBbTPM;Pdgd6g1RZU{sr=J_?<|;+Lh;+0pfGpXTQj<|U^lPz~4@ zq}F57-cs|Pz|NW`?w~^%1@T(hf{!dr7IMZ^ zFnt<2$%#m!`i7lzW_`|0ejQZqWeAd^TIZJi6;5kD+D--Mnx%8NflX^>u>K=k?@T^9 zJuz2dWP2kwc$~pVcc5sgbtBhXllL0+!X;dH+76T{GN(vILz&=MoF^MN*?(^q5WtcD zzhcw+cb)&mrjGf}K@o$ijG{j3s~74hC8t0Qt3>zM(Ys#!yQHP{WL`S&|7T`p=j1M6 z)xU7zqN2r1LdS;H(+N?hy`}CODxxpnFYa5Al`Hxd=GzDIYyx99{!pStjMC95W@Myh zrih7rVJRXlQVs&;Aq)7{$IRj2fg+ZN0u}t~_E=e*r`aD>7L)m6j0nrgU5pM-`8P&Y zB{4aRxR{w4o4P=Z=b=>#&yhI=A~Yo>A}dQw<^zIbQ*j&niJ75k>T^(wMKt5>LJEca zFjSaS{LNP`E-NI|5o!FF@;FNECVUc;6X&PKuwgPUgOX#QGbNKh^pS2G_%_PwSCx);CWh zQx}nzR16X7(Y7HIZXDGsAtSwIEM(NNcsZZ91LNc{+>(=7#*vsr{UBoH1Vv2hBBCLp zsj)>Q559=X6QNv)NGWnWNhz{j=bGhAM83*i3Iq`(s>BbQd{|{{MuBt+ z;Am`mMq0rn`bXALjO-!F0w7`wllZ1caskC4vmhfkbFmo5CIC7~F=(TeNt{P!s>%je zCxlDqWZqkaa40dS{?1uUYV(?n2%}*rpeV_v#X63Y69XbzzDgFW6x@nQ)N!GF0dX}p1peEETpu=z3#DI_w?){!a})?pl>AQ5xs@zroLqswYM(KAF_ji6A$Y(r zS(L5gf&ExOjFZJFE=Sc6aXFENJRof8h|7`XH7-YaT#%k$ke$NgDm9(c-%gDCVxX zFH~I*x!bxfYNY*;z1NIX*GoS5G9*p@yJe1b|NVs_iE%N#%2$lG?RQfQS#-JO&ZJ-L z>-PP<3q#JGnKI%FbFzJ1lfdque)+DSZvJD>m)G6)x2zRM#!aWm#(iIo8`Qg7GhlwP%OS_bg0(V81W!Gn}4SfEjatIxsT&%tq+^E z@HW_Ks1T3Bp)mHG!)84E8WzE2Z4R4daAb$WW;LAM8F~187v$k*-H>On_T+iU!yz8z z;UZWBvo1Jnmct8s95#2r%nJ{j2jIOhU^sFx5QbcI*qjJ|2|jG*!k__%&1LW&SPkb4 zJZ#p$4ugL z3Q9!Cgu|u>roa$*9h?hS!eXdRL>>mh9WV~ozz?AuY#o3ecm#$(EdqIXE-Z%6!gBZ> z+yT$I40$*Tim^f@K@VICLtr(W3-`lfcmS5eKj03iU5-3#1?3>GJ@mi}VFdAud3XdC!~W68!(_Mv-VbZwfGL#Q@j|qSp}fOlI1z4y>2Oo*VY3A8i92joz_X_w zHg~~3@Bq991~ADIFb#RQ4@Sexc%B!y1}=l2!p*S9jKk($ICth@^AL=ib=Yh@QHXW0 zA8b7vd3Y7fh1XnxJp37MhF8o%9&Uw);H8TwcT95+T1>fvK}#sNa5*f3?yD%ba2wnq zuU}2PVaYY5+ht4~T}!y3>pJ2M^I{8M(6RU?r#(l&W zPQRb@noN0wLt$Ad`3$?S#$UJvR=_9L;xBxx9Dm_{7!WB$=T?~vXw4<3RG-o@W(LfiuT!BsFCZicyV`1|+^$9+J3 z4$u0K`W*KE2!E&ZeDA|wIOSvfg`a#zIe|I*@fVKy9Dm^%U*Iq73lG5(*eRZN7!HM> z!g#o*hUXDJ2g~4qFNrTKf;I3ih$<`bHT1xPFa)0a74e0)e2u@b@H@&EOgcb#;dWRH zcf(FIiOOKJypxg$H0YY<`$aEN6bL@L-Ql%L};`) zVy43@VF?`G@`zahr@>wDI6MGLS{*S15`|cO2J-OAGm(cY&O#pcJ{x&>5>~*{*2u%N z&p{sE3UkfWL4ztbpw=#9vqf55Ny$ zK&lX_z3~^e3?jYZfIdgeV(5kCFf153_-y|p<{@~+fFow>H0m$d4<-&IyzrtyoV*@SJmLCT#B)CF&K%@mA&iD5y(h1%K)8U)21RjMIuvIqla4|dt zSHjjg)SIv$JU@qc!?myo_RS^SaKr-A3+~UuUw9Y>sNIAd%(xjjIC3d+`M3*1;LckKFTCSU)gJiLloy!V4cNC!R2O z9q9|pVGW$No^r8}aSZgp=U@o@4$g%&4^b{)_lGGLa17i5XTutJofr8<^n0KO{gY7qy-f#un2M=x`+)HTppFj@o*h+bXUp<8!yy0o& z;Nfk^$@6OB3tiihyGn?GFA!h2Whef@n_nip@QT+6FRXr@@WL^>2rt|S55PZQz}2|( z2L8hCa3XvZ=EAq(GT7}+$}^k@_rlBHrF_8i-=jQVBg70i6y6Hs;n(j|o?-9@gd5%i ztKmMl4}S0=^6*F4=~~%;LLM%L@o+yZf|>h}hr405}F!%=eTJIPgc}3x9+G#gyw`cffk0 z;BMIZditfmBMAq) zYsn}0{R!k?kCVv3a@grc%H=7Z2Y3+9g#%5V2RKyJn&t2=xC0jIwPp=mVbq!dH!(hT z)tZ6uJ2(+$yKBvKSkkK2Tn5*}&9LiPwdOv!t#z#_ZsxoTa`3KmYt3l*4$Ou5=hvEL zaCQ&;g8@D954r=9yM^|scdhAx9fR->=Jvrq`0!Z#gWbo~n$<9IJaVwbWrTAn?QUeP z*$>7|sWs!_YFGsK#u7g`FRs?y1>MtY%|mc9Y+WKm73>GY;|V9cV z?220R0Q?HJz7_xH)|x|M<@{Q6E-!2)>q&zqeC93h@^v!FcFeM0nvPunhKIOnBiESOedH;ttZi z7=PiB>+u%`++y(P)B;4>d7;q>3tecUC^KL;NUb+-{_ysJ1UzJb} z;F?o6Xs-%)E8!{1;z48D_a!#r36N8W|Mchi2rKp1p4 z{=#&a4qt*LaP~674WEU(VCX%B8`i*pWt8uGk%v#-hrDDNV3GRc} zuO+?i;kkw$*u1>f41vXPF6_3BaKi<#96knjz}ofr3%5RmzxPs)K8(Ncc{mXshUu`M zmvF;nutHvkyWrCskcUTLz;ecU8cylH4Fn9~{_w#(iKv?q>&jn0-nsNqLZ6n=aWHs@I zeP2KhR>6Q$`in1<&+s`I4dY)Sz2Qr*^8CUUuTf6m&u}kX`g*Nd3qO8~^nQTn@IRzC z%zm5nhIheYc-~&p8}4}@f8jT<2JZNf{3>Id@)7dzF*p(awvYJ2vX6-`T=EI=mG?g- zzVHKh0JhmrxK~gvYKSj<rceJ$y7m~?}uj*xD! zZ7t;m_Jqset#C7(aFle1W$+Lb$4U2c`a`fE41v+G2up04aUR1r^q*$1iA z4tKz8SOdLKJVbei9@tt(9*%=^VSCq6vjom^A2m0_^>8oj)9k2O3*%v@hbdn$1O_!n z4(7vR_$(}kM+1(UyWsULj+%$yCfM4``bo>9WC}B z2rv9{D{_xeE}kTvU<#ZI7s6s#4$I+wxC5SoHL%4~`1>gR_NS4Dc`yWCw+(st2P}r( zYUE+ycI4sISBWp2{u=RpjCyM~=>)s(A)R1{w@4>A1D3(3_aX;t-$4$BzlYr8%t!4* z4(|FG|6s>Y@DF|o%VGCVk%JGx8tB@8)C}0fd=3nR$KXUb;d9an-UUlw;1{G5d=Ku0 zJ!>czFdnw9WS$cCgExIi{=iOOkw5TqxC}0Yn_=^BkcWxz5S;QY@>RGChr$Wp5pMV< zEQas=fWPpIA1ROU!k>sQyd4H?=DCD{FzaXhg@=A6o!~`>NGJI0Z;+ zImb-TldO-nIc83T54SyLro$fXkb|RP1$+tag3a0=GY`Pcu=P`nA3ES4JP6}qhmOb0 zBKQg{hZl4@X6}Gr2O$Sz`W!O@o~GXk1L1X-;xA0;d(6y*kM%odE`zOu2`_vd?t^6m zj+tT`{kS2>!6hS(nbGj8QOLo+Mk5DjjzJE-2=~G{k?cOnOCVFhe^H~9(s-a~ldB-nZf>n8USUbt;J`2xf4J7yNc z6|fwRyPtT%&*1?$pp^W4iRa}3!V4?mMA&u>@r1L>$xrwktcI_xBfN0VdeRq`K14a% z$#{MP;f3G9x$vwC!VBMqn_=D~$iYfj3wu6>+{^TTHX#Qe-%32;BTtjA@abyg;G@qF zPdMjU;tBh1NA4BU2M&dozJ!0!{Tlwk$*=-WdjmOm_+$Ko_k4oftIR9x$3M9EbL3#^ z7s$aMU$tfL8fPCjH^XCa zFWk`jxLFIApM%^U+O0On&7siS{kW+}s7B!zkuNYg5;>R`O}@Z`GYBudXC`v*(NCC#fAG%P_y-@kf^fq7=8&#% zdjjEvC+6ZGbR`qc_nAL{fpBT+adRSUaV_D5o?D3@{OdO4;Q4nPHxIyU81Mn^-iaLa zK7fC)&4c&{1J~joTn%@@v&xZ!MKIt)+R1gu!O!4C_|1C!gPR^Ae(+7W8G0V3{J_od z5WLV!IrxZlg8krS8}Jv7-iSP0RDnGF9&U#1A3+}8`U&|77k^5+?!(>B@fU9T203`} zTjb!Z?~sH4kFfKB&uaYt|90-X|C6vNhGGbdWD=W2U*x8-JY9024u3@zmyQO#_UIz)$Sfn+W$K^OZ&TiM?_$;jr7W zbFjBAAsqIGV#)=(_IAnzd&ymt3wATM*H6qt?#5s2@hk8bTaR6Uop=xaV)tM-U~jyS zbg^$@Td@DVpLBob`g?$Mu>=1@y4ZT`GVGR>_=}ymihN?%W0UH+k3C90u{o>5Y7BPh zW2A@OfnAN=@_1Nn!Tz`=taf2{zKWl}(63cd@7OD_Q?UoVK|0tUu=5h@>{M*>X4(sOD0Ve=J$4gz!h86MeG{AXEA3(n;jy#cCp`Ah56K^P zEp{1p+{dJgU5?#~-HqLaJ?L}%-O0LgE#a_Zz93!fvM&jT-S=z4VQaBlu^YZ29QLJe zX+OWQK7<{BZNrYi*4NSQu;YH9KCl;Tr#`UHVYgv_z_ws}{7AaLGw%3_`ovcMOuE>d zdh&~1ja`kc!EVAn{R{cU?z@Bh{=xnewhvZehhTGdl3(my*k#xeztfJe%duOqfB%W! z*sK4-?*_^dI{G-*e_KzKm{T(|M zJADT4^~HXOU57n6Kcco`FU9V{uA51?|Ir?1ksdZ5I|lp4Y~Bx!O`gNMv9a^8>#-@9 z5+2)wcj_no!+sjJ4|WxH2sXSrqUK;PdYo|B>#^&x&pbmo?5QvC-ga!?mkIYT*Ee~`!T>>t?G*e2{I>_5DVemiy+@1f_x=%j1jCOozi?}HzL?Twv^4f1aIW!TfO z>#)CIx5(d{DPQbpZ0FsKi?RK%bFm|^e_-ce$MUZDW!RTKBs{i_ce!uDj^`ciJFyub z6TXS@7`7jFFW$#K0{aAZ4mN^ahV9Aw+1Ft=@ecK^*rRw)`7Z2u-aFo_nepxy_>FDG z&cROM9o);X?_$?sGkBNz7VLf4o!C}v=N9_?ZKR966FUOih@FG|nD>bwgtOv2j$&L zIrBc~5!mOjS7C428Br^-zhO6E$MW9jZP+|)3-)SkuQsk@>|pHA*a_G)-ZQ-bdl+^l z_BP%ry$QPmyB&KH@0?BwGk^G-bg|Q$C@<_5>{RT`X4(n147(b;3A+h@w`%o%g79*kN6GpCa}Z>`v^AuDthAas8z1QT?zNb>E}LU|+;ug`K?j9<>77tq1RC z#LmQS#lDZ-g}r0HJ*rnya?+Gud(;qYp94u3yS^{sumy+jQ5&$Y9QVTM-Gd#0z4RE;!}iSBqgG;H!EV5=?!QNE!;U+Sa8`2C4=3U$_UTOg#10v>M=ik4 zJ$a8>jXh%U9<>SEjNOS{bjltj&z7z_bB`K~oik*Qnu@)3=pMBQdphr_U56cq-GY4v zyAyjC@2l+*OitR29f17@I|iG~`)#kn_Q0;d9*caYV1`x_=_Dmn)1PJKacw8n4Hx8eDaCS9!vRPZ^q8SR$-T6-@Jfy zv2EC`*as%;Q7zbId6X-U^lros!CpC;aM*2A@fTY@jdI2A#%{w7oK84w4z^e4=10OaRvTjU&C(2{({|wJ^EhK-8(ty{rgB4`}h5{E9`^^ zC}-?z*wxsl|3f)r*RQ0UvCDaHYY!ga{E2t84#qylds-)8NAqshMcA9LtFiyCCLH$U z#|Vc#_;K3fKGbVD<%>;vg7U=>TVCZ1W4`6FcKY{M|1(X~#?Wi!H3gU+hO4@E6>Kd@u4_k4}N*rUE7U2GY4J@yUkR%`=y7k2))lv6M2 z={wTJe)v7@0lWGK(#1aYBjtp>^C!~9POm2%w$o1h?M=Un9gLmz8{x1s|Day5LmLQ( z{TjOkJN{3?VMEv+yg=aCzwj5^@o)Uami!NYvG?w#-DBTvreDK$ZX=)ApRk<|qCZYj zY5?}bWThrxcVib|$6HFR#3lul+JNnk-G(j3wqW}Pc_(Zd<%=DRU51^2ZN@IZj_p8r z?336H*kd~KE?MlW*rbD#lk&PK)eoE0RjCo!H?ecDv%4v^0-K-0duFkH_EKsqb|Q8c zb}hEYAzatpNf&!7b^`WW>;h~UyAu2R-lU7|(gVM-pJ9^@O->rLk5YZGb=V=;f%_^o z6+0fg2)hsO;9ZC9-IH{&Exf&f|ljdbmKiK@^$R~El z@%V|Y#IDBn8=%xC?12N7+KGLi_xAQUoa-=)^1&W*I(}jY^4{EK*qgE`S8U&NC>LzO zaLOf}{%QpEfgO0hQe&`>j-foU#bZea+hrW-U^`AA9c(SO#}Ua%DU(PC`y_TM_WnHl z!)};LzOcVdCtujPGsqYA`h3D2nVfVVb^vziO!9^8H;ZuC!Pu49Mc54|C)xj{IwmRk zhH**B3wk6U#EX|!&~(!HUH-R;vgsk3q1}5dwX(bS8rj|cQ&<-NEB$J>Vk&R*VN0#O zI$GZmgA+E7pD*0DTV?8eu8r-ui}?LAcpsfl@_1R4Kc#c4+>O7A-~T223WML_@;ZK> z@%3)?tijj0Jk0OA;1vP>LH=z2`7Wyn()fu>Dyir@{4@ALF3%FaeYcv1^}^>R$HM3F z`x`&*R)<fp_ArZ%2`mn;cbpE(-&S@IdgzjuG#tzI?KdC^Ws;z@_+{kEI2D}ThwY2uPV;22xN zk4`)}=!$;dt&Wr*V!CNgT9Qryd@=kmolo|73A`9yqNfwM&Gn-KzUvR_vzr$GmH2T( zH#b9)PA$4?ns=)+jd)IV<7tGKw(M3jbw4IiE@!*Z*yWc-y?=`CBVBg|x>cqw8{M^` z-HiSDFP3l7Ej4uo=sLFURxifu7MZ$IbSu!^-${$_Qt~;wlPi>bR-ua|H>qRw_+~j0 z;dSuNmOl@}_iKlz1zA&pPuAnNCfEr`{8{ix@N*14)a7~bTi|Eu{IVs13s6Y-BKVqi zcp3a%cz-?o94~)W@Xz4K=zONf>)>_mgb%}iYbShK2l|(Gcosa;PW*ZBt^uCe(fy;H zNeSBdhaVQt=X?H_!B2%Bria(AmnwJ`{B)hqS`ru+jlT{)v7PW?_$0Vr`KEQ`>?3@H z9zWOH_-OoD@D=b0I=^m7ATP@E;9KB>bUtB8U}BUP!M}%}sq@)h`zV7);OFR^^keO( z3VwL7o%)COho7W}C;eFYhv8?zjryTqyEy7!8rR>&?Zlr2&u=IGJoxqSqxAHr6FGm| z^$%YJU#4?wi7iOyw=(!n_;Q`kp*1}Hwm{-fhwp;lY4Bw(&xTL#*rZ-D_zN!2hyM#d+u%c7UJUQmsYywm zUH>n!v7NticpCg5onPqjYWM-|@Ot>Z@Y#BJ%c%&-U$6_;3H&IXYxR^4p9;^=`D`!! zYD!{RWA6-_HK|ONSo<_q)$z!;fw!d_Mdn_z}8)Q$7ER;itC4%i(9jPtd~`c;Tzz zW7-K{4<8SgVS`&f=Xl|RfFbShbojCG?t1ufCzFEx%%T&o2J`PdPjdew#6#U2KnMCH-pnlCDjPY=>AbE6Vo0Uwa!Ursgfli?kWa!Pi~sR4fQUevR}4|I779dKIr zCN)e?f1y`S8SpdVhv-}eGyE<7<-kvekI}g`%FSN^{0exYb|mFk0^bJTs)xULNw6ef zIX6>&mvk!8E!w+Dl^XfD+s#KUys<~(`jYUC@Q(Y$jT;wu`AB7ke>i-E?uRwZ%||AD zl!Q0ZAMB=|3!k%ZlVVHHYme67ZumlY)_zTDw85PYOZ+Q^UkaaV@XOrrmGBMl%MI>K zd?b7=JdoO?EZsjV;)ZX8{{r`mKXo6@{`PEAR~zv=HynvS6MifFLW7UBQu4 z*o!}6U(X9hMYwqP|s zciCLh$%ijGu}S?$=NFPrk(o}3q=W7kU1x1~Hu>4kKf0=u;{2LHe9<*3(b@UmkNf|iCiRv45UbDVB8u>A_)qYy2LI6YJ0E`U z$xUj9-X1SvKL3Gz$w(+Wof33oPT`#v@`Ia>vmhqvRKQoj{raC8_+9Pr26zda+kqFq zHcm)kG4OhLrOvJA?R-f38SuSM<((4DCtUvm|JsWZ!gJui3~f>@oohVR?H3B*-=7sX zpRtPFaw>rjAJ(MqBe)ws^I0o;FO{Dqol0~sqWegGaLZ|n>t`+elI$imROivQCgB_5 zi{O6!TWU|vUcjF)^0C^@M<%@gIZZ0x;Fq{O7k>5dCiRz|zV(}%&qDZ_BbwAbIzQj; z=bcFdzf1cp6F<yQC&5<0VA8#?aXK0@{sm*WyhGzF1H4B_nzOR?$+b8 zZgHIMt>A`^OXVrX>60?$bpxR)#!%Lfo~k=f8Qy9e+2*32w&rdFM%(- zph;b1a9Pc8>b(N~GJLn;-!8YmtbyNtVUzmP2*1+}-vGbpBLDS*lmmFi1b)5|-kFHm z?H|4Z?$>T|;2YplcWymI=dtoz0lW(SiOw&#>+@0DNq(1fO3}@j;6LB0gkK4tp~quQ zar0RVe*r$q;Ld>GZvXH)_{log)&o+xZ~Y6uS?AUbZv2_>aTA-=1qMIQ<+<=%;ePF; z5I*H%#-qmdGstacrSR){SJ);a{*7+@mGItqP3l*J|73G1=UVu7_^mphOg}QimdLM8 z|BvqU$@JU0A5*w)p0!=Eby8mGz3JDcG^xJwORT?%uE7Y;hVOtAoyTR7ia&+t!@qBb z7sJ1Vm+9fH|G4=rhmX6YNj+t7Zy%%@{w=)1;A`FR_3+tKo778sJ_FCWV);f)M z1{vW$cf+T{U!2~g-eSGj&41wafC%jT!^h5QQsa&A&Q00QKYS_t)Sw>zq+l$3F?{u9 z{^R;`_*(e8M*N#x|El3Rm&et&waDf5@E70*>)~Y)kiW&hAPY;+!5I#C`P0^C(&4My z;o0ze;UwdQ*XFnR@DljdI=8&>WHJ0Zc$>kST>s1A8w%paY1XqYuZEv{h5x*x9)1J- zQ6v6`?C^5E1Sy0N{C=IY4r^WNl#%=_<&?qy&AQS*o*eiu@Kt&|Gl}PFGoC_p6XrIl z!*!k0ec9=h!Y9Gs)4BDIo8L;fbyec^Ec^P0-wZeIuLbxKU2~FXMHfc56WvPvx?p`Z zaCzMIPs5ook9UI^{;YBR$%b!-@2zuf{VpH=Njtn4{wDl(J$!WXjEhO-@P6}~)DH&# z#!g@IQ4RkU{*QiN%p)J4+P6jtWtVFMx)-kHooBi(FvAu}JShw;LkpVJ3p%$(5K+Dx zk@%B|ZZYp#^y}|(;WxmQBpmB6tyZ_Z3gHurniRtkk4MMw5`QWDymojce3%cn>mNQC ze!E_;78@_xhNYwvM)%N7tlR0jKnJ&9OgogdsfA7I1Km&SUANq`;K$v}{az2BLo)lB z?I$1IF^l}K?_zj|TjJsg9BM}*`6-8YSBBnJ(ztQ;T&^2;wCS{?OmvyICBA;e-(2{~@QM7}t^YB^lWn^qzuN7ws1NG| z=uVO!V(sKAMfUc2>-9ntvB8L*1->1mN>ll8HT69uhYY`|6@hd zke|hm^uD|s2i@7a&KlyTlMP=1XL#xP=`07>;q&23;p254owQ2)#qf>rZaUZ2XUpMF z!jIRvvm9dgW7Y7N;g=>Oh?V2{G>`FKJCyu3ple#*r2f{g?+eg<l7XDin&mpu4JILj@bU(RxvolX(_8Tj>jyO#bp#~xZpD7*a1 z(S`5fU5@fYEPvLwZaUTQs(a)5d#l9d_3-}p#f_JzE(yrep5!CQjp!=)F?#$n?ch%R z!*75eq4VgyM8apoZ-)ETUq1XY__ccY=uOeCfA}VNuEEc@9k8!|cq4qfg&>xHDW{jb zdXso+&{aIpq?Q=*NG_dnY=H0mpTy%JNhgK>OM%~}hnI5^+PaCPlZozfbQkJ6%W3e! zbK#G{FE+R{AQD~({}z6n&ZA=u;id53;ECp8Al}=}di~0{dF(a#869&;v=UDpx|`9x zE)pD0rpLwe^xb_(u3p{W=O{*%y(- zUj(mv$bTKQ4Bll`liEj*KgUbI3f@Y1mUTS;oN1VofB2v9ES+EHg%3yLAF6Y0og|G7 zonuJ7~Gjy z39o`5^+=OqI_u@%SuSw$4?hI%H!csud%*|k;iF?!i9hWq?(gs`^!x?pxb>F>zwyz; z>z)!m4?bpflPcEZk1nnXFM?OXFEO~&z=W5<|AqU_`>NnYkJ0ZN;q%?{t%JV{r`N6%;&ay=k zPd@x1_yqxt7t((nX!i3Z=-z$Of8U@2{@_~b)9|;aTOT#>`_}odhd02#fhQXONO`0j z&HB+({`=?|@TKr4(0ch??Ur{AyxY_M=OhZ?3*a1~_QD5xxc-;GuXrYI{AGFTnicQ^ zE9kF`@XjGT@xKOs^s~I9+wkuW*S`k%gYa5|f8z2KZh)hoYf=vyywv3x@Xhe+4PNN- z9QdKn``_mZ;Mc&7^)KrKH+%^^eSPBbn&htnei*#eNdIm(d=2~o_^~>7wuS6=+5mqH zZj4JA@7+iYcKs9Z8~7+aJo6|SY6;JPcX**mP13pL97GYG10MpPZ*b=zj$8)?@cZD` z>h;I`IFMsE0SRUMS&Ht*7ya9DCA{BD?Dy*N1Uk9bZ7n>tl6>mpg&Rqyw>Mr8f5Pa_ zeue!MUB~&*z$jCfp27OX2Ht(G>tsCG!_(RMM_2lK+<7k6(`2bkcmez+_z9BHSU=$` zgV^~lfmg%*?$;IYDI1&ALOr~7y;uM6D)=m;T&B6#R|DL7qe-2jhj*HRt?fk=6!q3y=w?^9j+4T?K48J?5<)3q+fywq#n1r&&#ii)_ zSJThveq4_38n3)1zAAK2Z*EdY>-n8c|Lkma+VP2B_2`~?&wn2<$UrOte?;$}ZzjEq zz5ZF!%Ro2(L*`3*de*rJ`?(ER(#u8nPEC_qBOb)+*?PpSr$YGIA2q3a4SuJ~OX07= z=Na7Fx2%MB`8aMpQ0_|)+fhg;yFTmCJ&A6b5s$NQD}ILIzrsH@`1@{sr7_{U|C1*5 zyUv+6M3(^MSG&Hl(OtBaeO$f#@F(ztS6`A|0lGn-Q(qD=RxZx%+G+prGvROP+?(qhA_u9DiuE2fn^^rorrC<23%VfZBgwu_B{zvCY z(mrzFx5AC}i0)f-2kY@@>#?QqZSc`Lw???-PzmqwrT@6E79J-2R3rQ( zJG}VW2+txskC1rz;9O`R;5K8sJk#i?GQUbZew28!;K#w&=+~*tr|xp&d$c&f8~Cb2EJo3#59It)J@XJfpVnw}Z@CeQE(cxG4$eX9*MY15@P(V4T|ZUm2K^B??qt6>cE72EPlhMz@9q48{)rohSl<3!CH&xj{nv|Y;kUu(5|>x6&VrG|-w6K_o~85XyioF!no0WbbM<9NygKUryEV-{3v<@Y;HMJ^XtgF8K^H0sb7mm!40# z4t_GPgA8;VBL05nz@LKetNSt9DJscl0elsFtj;YbqrywzHSqaHIbP|OV+H(B<)6T1VMBZ*JdyuWP8smi;8*J5Wjx>v@#I&#J>;Uh z1)X2JErc(IkJRIdE{=;IrSNCqSvuFQ&r0}v@I^YOpS7ZMd-+-7sY7=t-+Ec0>nvwJ zDESG)?}i)m2+7Z{Zu7S9C+UM3_a!&0$Mt%dP5ZdkY#%x3{P3w{JVRp-vKvfVzy@ZRu;b*?@4k#;KcY53tfpF-mNZRa2U zApAO=Th2ieDepY^F1T?X>{^QPdnXPFCc0vDKXz_bm+0j!^PS_p_9eOsbiKMZtBpba zaK|g>A)Mn*pv13QbkB5eHlLf(&Y3mBQ}=FGnR!C zeModQ=*I2etUl21+ZGpeV5WQH7F{E{#@@~5bD^?NU*pw_o&PMxJqI?caYp_|+rHcR zhc_P7Z0>(*`<8j|7QU@?x9*R)bD8Uo-HwXUUDBsn<=~r}Kh_~)*GW124)`dYTh4e$ z@>30e1s>A<TMJ1Fo{zv!x5zVTo z13$Re$w-998RPmey1=o`<~d5PyZCu@`Wc)vcCsE zSP!qwN7LcgwZpUFg>WAE_xukW;$A2D68^a6gy-p`UW?&h!vECMm**$6d7b!Kfo|3D z&1$-?vnIRwtbuNQMamGKLxI0#g!k4TGT@c)9}NDDn|=;_{t0{w z#^4{iya0aqz-D!g!R2n}+)qm23*dhBTmfGUr~C5CS$mG92L3R7md>qdZu|}KpW(L} ze38pjhVqWO6PtbaH8bD~;eP(*z?Z>!#fs-&U~jh_6u^rzo7GK5`c6Za`YnNf4QE>F zg?E;{?CZJ${s;UkowJV;U0Rc0o$DXnLnrZ#9$hycUG$ky`B~BnqiaQXqpq`@0u`Qi z7SGKMYEHO+CG9o~{u+FIGJnMS8JRa|?*$NDKDr$z$F*-6XF6LOC>*~_&^Av6Td3a%{ir69cJ-IEZxAt_RUbztA$^78sFUF-!7Ma&1q`#tCN3pKcO?`|AD!7 zeMvlN!<=vCl}LbCI^s`s&02mIf3nd%#5eR78~)s6`y)Ib9_HJ51N8e~;8^=6DCrc# zQ-;wlg8UInN5(&+-C>QLP6fJY!<&8gZ))H@NAS%l!;jBhKN{d4o!hJ?>Gc)3&~2Y7 z*^D=Hn$7)xYq5KMWWeXb=isL6C+k=@qmX>&z+Z(M_i<~u8@>SkGu&^UTLQ0zAEL(} zJ&TjhZx!&*;6}UVoO^tI)S??Wy4m-Dg*X>INJqYKBH$K#E(q)Rqz1) zmRkY^;HB{aE7B^Jl8leNcb{%?+g9!yH)U`;TIeA=^Xlz z@OAJR7x|Aj!ti_GQ_;HlU>qntfP_zDBK;{m(Y~(mEO-k%qKCIy-1^Rge=)&-zE=eQ z06xM9Kgy0!BU|6_7J&6?FUTX7!Wauh0($-m$wDTPNj_gD(5B#N$BmzX1LX{9!#FSy#N)jHeXc`Byai zo`}CH+&}i zzPa>cdbtHs+?!5`2ph|9@Rx3ZHZ}^BIFTy1WveIWMl=vd>zC zLj13V&xd!@!#mR@yI*RAPk~FFxaFsv3rRhfcY4D8*6A|g_rVjblS%ry@LS<+di++C z?Z2d12%kE?Sv{t6Id{3lmdLMmJ1#@_HM*s`PM-IR_Qf$>HM)}vDQ~?#ZlGN`M=L~T z=eq&jlxq@?KgF*UCYUe5i-Y{(wksYS2^{9$h$VlS==Q#W^&$T4>X1p#A@StGkA)lK zJbCYucCJ)(Md%ixRe;?VMJS z8}h(9`X92q9H#e()jCB5V z^HBnyw21ME!7p@q1^fZ{GJ`vfM*OIO?|~oKkw0Sf$NPo?f4I|Lr~RYbwbXyTC6$4} z@9^vOeoFSACVBmoq?d*6wB__u@w$bkE+5_VcW|HTqWNXn1=J;0(-L0^x<5*r)qMRv zAp1z#eL%{w65XJc{`Z|)_(Zs|UMu6td0u@;dSP^*KiI5()6=u$#&fNE`s59 zS)Hlp%aR+`HdiR|Wuv?PE!Lfla+D3_QEoYkt^i%=9o9L5x_@%u=4(S&imv;6&8oW| zpX@t*=d~*-*D7?4eDjv>T+45^ol!}z4u0?l&FVzme;Eg)dhv)Z$O3e~nr8F)Y&lOc zH`Y3x{x}2Of6zUm$9FaH&GF(BzjD#-^@;zut`L3_d^%dMp1gI8QuuZ72Mm6Xo3Bdv zpYY+jAF|JUr0GW;x|Gink3S{fVR$mUOm7F49DM0z)NeXB!fQTnHs60D&#ymcmQN14 z{cD@e=j3U}(MPo;H}-w45ZwppZr1&uO|lnw{)>NQ==y%eJf$0dxb0ak81mh~~7zGvJrPkJiKIJDy0r=fLN|FVnd- z(-sIXfLFl})OqyGw(t`8EAZYr&-LQ3fIkmUwBI1%Yv3J!^}fcJwJ>+wg=<4QTE zT!0VoyLB%2?dV#k{4D8YqWc%!VY<#~zBbQ=?}mS^^XOupq*DlgZfCQ~)!UtP0|VS< zXU9{9?wjA@t|R6Ta#@NWRdDO~xPCtHupNo;I(YFP%?aOYC4PkAcfj}Pe#m;V*S*<( zr025k@TdQHFdKd^obJYJSJCmVq>~SS8~(I@U*^1i;Hr*J<)RUPOVAB#q<(aN0yn$) zserHD?Z19d17Fz=Z-6g{FCZ#qzwqaEZawXW&w(#) zqFxQ|Y`97I0{AQN8Y6%2x%n%BPj6{fUl`$?%}EJg0Y4zr?E73~4g5{`3r6?~+drv? z2Kf1{tXt^mUr+mf*R2M-9#Ro*Zdbcj@72m->4kL|27wHoC`jovhE@V&;4SThZ-AeGVwE1=dcaLTg$k>HPcgVNX_5Fd;J?FfGx%aRd=7kU za!bPJj3s;ld@CHIU4LG?C;@b~T2zsKUkqGl-xQ^sE8zJ-z5yK6!^?t-^Uhw0R&=%K zvO4n(X1$%ucygkBsfo;P=V5eZU0M{cME3j%^mVVtG%Dipt}VX%j#==J;I;ZV%{pgE zhmzo(fxvQmOeguyM|XYq7IR&c^>3NR3NMB~0ry)6EQh}ZzaFjEZxy=bUJdWHcZ=_O zNjiLd8WgEhL6_EX*T8Q6qUqkmuC*T&ik~ejq-y#UU|h$ zrvSbN{+Yo)a(M}S{Jwk}S?4^*C_@Y>rwaHL@KbcoG)k5(gxA2A!cWyX{ejHOg*U)g z!>8(;{R&xf6`n$ev>iSxj>n!4$bcWYUyItLb891^qxpw#h9~MLB>n>UukfCFc&8ei z`yadxZp=#p*Sqbp0)A@G7T@*r8u+nrhB;dKd+S;a@X7G$dOZdvyYZ*w@ol61{r%5? zZ)%6s5LBY)1r{1Sfy z{PAA&FM4>(=|F|2OlJK6K0xQ%K6eJZd+!#tR_E5^Uj4)Ghs%4a-S!_?YxiFge*wI2 zT1&$B+sJiR0-pe%p!aWbE+yR^#@qc{CAwvOTFiAZnUBPcQ|r*}KzEW+9?l?B(hI}e z`nIT-__ymX^SS7&OXXKPy>xB}OAl*NKX%Y`mb@rsp}Vjm`O86fX1^A-h=05BSJEIR+=|h?FsMZp80k5S zoWjfD5xDW3MGcwL%5HSR z)8WC>`F1`3cI(x-ZQJo@!^2rEs?KO8 zQ!$nG!82RbIYv4|-E?Z;w+!*WJ{#bjhqm~BuOMX_^K$qJM*JCW{2B0X&ua1C|A+qq z_j@m50o=-NQIG56g}}q^IH3eyJiJBqF#3;fZvRmMFC6KAebvBg;pY20^>cM)6Hk=i2=a{h5|H0pfzoTwfosQ3RhjCUHL}{YROE zhySUEXL&aINRa$$=d&7J`PjJoL39!%`KX6?9oORf9D6XI=c(G^>G00*10}&&d(qZy zvf)-cJRcs$KfmzB@Fw`7di>5dtewAd`0jRiHN3GMUJw7b9Uh#?J~P~}y{5x|g)@Bg z^3OiG94C?T&4%|S|3h`o@^5V1nh!q<-cRQqIfr^8=_8~I~?D@$H>{^6g;b3Om?#&&oy zyypdR@oVAB;e+6Q`KyMX2|rTzf0|dm_3*RdQ+3Y!Gi2pQ{147%zY;z~=gzRjZhz_U zC*UXPTq>Wx)A?UE{B`)3I+y?6OoLsJFi$7x5k-Vod?mbPV==xvOq8>E* z=Tf(Su7p21!N0xM!dJofm4svIIMV<-KaKD^;anCTk3Kvg<&ipvb06?G4gQ*)8R41m zxf5G__lI-gtKo^xMN9ZX_|A*{{V#=o2R~L%f0k30623AT-k2v!Wx}MKYvD=;w@Mczew4%0;KqHLbpf~kgAZsYd_8=4JK=+u<7YeJ z)8X^l37-vL+D`a<_`~glFNVL+PWW>87N77^&eiZb_@{b*AF*`IO!x=zJ0#**|02&1MEhL%S?VnhUH|EcuVaa) z2tF8Y#KUkk`e_b{#*U{P-70h=<%d{$RMkKh%2|6)dq z`MoH4PQiIKyu@mkUk19P^I2DvA7XyUKB+WB`HlZ1yycXVZR*O1O=h3sjlHW#nZ}@vUXInA)%2D~% z&PUpn%-hhd)pgo>M;83d*)6`~wmkS5aKHO<5j-1ijH{wAaguTFpt&vPb7R&Jw|*<(li(-l;iG4g zB|o+B0ysu1m&@F8X#{M9KUJdh)nusXcG*}S+AUiD6i8N>cC3$A0!P_%Nhy~s_=r6% zYH}w%o*RkhJ7aw#AKgtILJ7~AOFYH!ZE$0~M$VC+;gzrCs{&o`P9gJt$GI!n!WLcw zKe-*=03Q!G?jzCpp7@b+HTyj9X8!G7w=$0V(k?pr)$Ru}(GBh#QVaCxpo=*HOM)z9RkncIva(D||;&lDe&g)gf!*IXxUOoIT_%V8TZN46y z=fr=y&b8-n(&0V3g?!HqWW)D|(`-Ed&T-02@|O=!hWnjAD~A69XPV-Lk9MjOz8ro` zN=WUcmv^AEU5LV~;Roy$@*T(2!!L)wXvF`l?VyAY&S!lMzQkzf&LJ)-^K|&s9wF7g zD}TiLbL(Cz@&V)gRt~zE2Zqe=PRRQ&YR&dji0;gTLh9rWdVFUS-=9XmREF-nJ|W-l zZdJiI!rO?(^Q+0tR~`I;z9I8`GV8?BLrT8F@Ympz16ugmxN(BLBqg!h?LD0V;$P_@ zb(UWKqTAnV#}Z!-y3R+2%zYv`m*Xswi>8_0;n($69`Ivu~$chVH^;q~yl;U9) zaO=AU{uSI92U%yiyaB!k{*V#gS&x!@q+HAMS0{wjGdh>`rf6RvKZ_rk=-SYY({+}& z&y)-AKQNSV{2}2B;X~jPjPTw*aH;qKuQm85ZaymE87GE(-vd?)UkyJ|4<8->NcxTN zm*B_hT$^8}UdK5K_&s{N3zWG1O(y*KlS1aWh5P)qcqsAb!Y_sI(&M-Ou>F^EE`*;l zC}e&wPWBHjvLzDAY5(Z%Lr3%V>YH^DT_@>Pqx%8f5?yC4bknPcpLKHR|NDNTlm*Q9 zP7SHLqh5X zjI2cMK3N_cKs!WY30J16A(9fUIY>BHOU|KU%=R}z=k zAKd4bcb&vPBILVH6NX;^f7J-@%_Guo;JgQXg~9J|{x7r-sOezfmEh2a;U8%p?GuGCN3jocsMXX^gnU}xX< zKMTGM?iYU^{Pj_xg!2=-{^6Z+7+2~3Y46`GgLfVsQiJvTq$LC6kK7xjTo2XgdW{RI zG5R=Mo`2Y?O5DFoJelzRc_DND%64${ z5gQavdU@zxL1&z=;heSgm+O}8S24QE$szMRnC$-z^>k^(S%L0XbcxQ93$KA^UgBS$ z4ed~(qJdu=G;yi<4q{H*Kz@7pEtSKtq# z_0lP|lMp{D;Kwfrna>Byd*!#rym0bUi>?8k-+N>l;rrc?c)lU&q~1)w1vmOdITvw@ zmyYPN(EW1rD?xYRqL6Bg*RA(-QjV4A z4l52N{Emb0TKHv4Lux;xU+M1Nmm1-dZ;Q)6>t(Th(bPrkC;4#kGZX$R{LvtP#PVZZ zVn1hbTC`^pKl0E`DM@_47hVKk2Oq}2-FUS7LmB)-_ynC>-Z-%e9=J24@(k__qQuWS z_?hsaT{#X1iMR)Q&aq}LD?|d&l@v92mP4_0gZiUyuUx#y>^UBw{ z#`ary7@m5c|9CBpf|~^Y%LxCQ8$JtubZJOEmaN4eD6^fEeB{BOzCWZ+>8NqL-|*fq zD1H>9+qf!}@VlK7PdWUtvXJ^%zb@oF=cDFzQG;&y>X2%+wDbbI?ZTCK8sL4`gv|9U zS*~jE%2jl!OQ@$OLh60i5#4raZ9tgPIo1P+-&yE3KO6Gj|A7Al{~fIt59fcPYpC+G zq*sit{JD_%-WcYO*78_tj;;b-#`7VyT`zCep932_|HZFbboJ{)YPGHltg=PI8{zpc zGS27Uu3saawCwyBbB+!^LJu$NR?esVB$PA$K{xNEkhy*z{VuM=lL!9}UZ9U(np<{BzNDc`KyeFyh%@7qFyL2!9g3 z#o+&Sc`5w7P5$@MO8CR@dyVjSy5Vc#d%qpmziaDhjqqIf33~YG`my9Qbt&su@V)hX za;`ZL{pPa-6I~X%oOeR1O4k)p9yfaBA-a5Y+y5IA;&n1fCuJGy`S64E@{w_=bM(n z!e4D2MbfKBw-Mcix-R;Bv!oYX&bS_Ktb4J4YB^JB31ydW2D-x9#Or60P7eGpxY568 z=LrhnhkwENP9ltzi}qdQ5_mJ5YSQ>(yWqsn3iy;Sxvo3vT;9XGpS#~8x>|Ir>OyLy zUO)02@xE?%Y3C=5uIl@cno1bYALrnxS;&F_`Qw?7T@29ty+0TUk* z<##B;=wTmz7G3Hc>?iD?pU`#E9^&RrS?KOXm!<2X=O4uHJos~P<9+GThp_GZ!#nH@ zscZE7vtJMx?q=WirySk5-`U^M>s|WUPrdu7#8-nZYgfp84%-@waIG7m_|=GRpMTj; z(bJ8-)K+*Z7u23c|8|-Q|7>?C;dgJuk6ieyCgw%_+bw4~pZS8T=KvvHl_F6)ZE~)#x^d=|6*7dX{{MZK=CXBIz}tyC%8ScO0K`C-+r&7rj5X zW)siDZuyB{ndlY04e!;eekY7up4KmJzfcX|r+2Gr&^i63K{-wgOtc#iI`)W`mwzoN@U_jFpTI#0hIWgn=&*MHmfk8bP1t-j-!GWc1Cw5l{c zp1=Wa|4{`$}cqx`Bta`o8C`5Pn-bycAvs|42_K`m!|fw-Ubm@VNTsI}-Z2VA0i~ z8=c;&4%5p|>LJ-HA3Ogn@D4ws)!a{!a|_Wkj^c*oD+Aq2=uVX%V)rj+I%)G9_(wim z(kX!d3cpehFYEi~o8?!EuK$s(3HJ%ak4pG;@JIA`q8}*~UJKt1r`kO~qmwD|qY*yi zs8)53-i~D+b%@uFC7!fiJvdlp*y#KtNC7X zId3}3tAEL7kcq_dF}@MFNy;(|F!SWX2UN%zEv$UxN}dHa>|Fl4{z1E z^iSV;^)9*+bgKrm#?A9&K;7y(EdErY`*L8b?{gZp@Lx}CHJ@vWzN|sQH^OhoZ1w$) zQ|f)Zmks`t?r+pt37-jn`=nO$Tt~or4@oY(bx^DNvlHT2dC7X;Q|5Yn5xTd|XjO0P z?U4Q?aGTc-rCiF@h1zZ!HQbj$SiXn()eJD6hUAKk=Zt-j|)QcHPn z9lY7d|37wO;!h_0u!K0H6Nv8}x z=$uw{yna9CdI)sz=2xPtMtAziR`WaFvaa@=+iaZsAG%-8^}oNR+)uwfs?{9tO8?|+ z-AXR(>n{^sYEG;9{$$a86_KcTx=0>;`w^n9E6T?9`XO?~NH;>J$#c77e9gz@Z2W+k05`zevYC5SGnUS(Pf}3AJ=NW?^D)u2AbuZ zi|*44TGdp-c=37jibD84xvl27nft9Ak(72(3h&TyWu0?`+1@MBy)>oO+@BD?wEjTKp$^?ym$a%2_5L6*)~+n! zVfccntqI?=BRp*-^I3R4|Mu$9d%t29eBiWJm96ueowh6C^WYc46YVPrFM{6(AFhYD z&axvAUIu?1?$>`*!Ec*R{*3V6cS!5tZ@?4n&r7|8;ng!*&F_TEzGHL_C(()@>1;^# z&u=x)r_XcpDe+{(v*9x(KD0oXf*b2nfnjzdl5`s3pI%D)4{G7%{Zj9^m%H81r9C8P za9h<`y3QhFfqJ(=N_yGoUYY0L|K!8Jg46wK{@(4@b1{6>{8m+Bl*?^yxs=0SEo@ag zI_TkLL1?)<5tMw@pu6UVR`dCJnNOW(_D_xIKD@D2?X6#rfv)z&DDkAOqTSups*1Yk z>D_GaZ?!~s07RFCuKR7R<~qS_v;BxJAKh|v#`!tvH=R#>qj2skCFs^HYc;=rC*%6K z{o_h>CoPYg7sL|E1Y+$(bXz=~)L*bn)ynn|Y%iPhg~5FBR~U?`c(wdm)bH z$9k27HXjhnk@!=K?w+Sw)dAgf-Eedt%JF7?bjmx7Zc$~c`a;i_oZHjJ4H94a!(9Kb zw5nrtos2`0%>3n`JO0&H-*bos@F{TPJVf**8j?;4Jby#0+NUdj#PTQmQ=fK;x$TVq z(T#qGaZFItEkt*WdHvR*yLWS|+F!q)T#N2o^S%>gBDLuKxcRE|J7e5r?fxqR-ACxI zCRx|N=*ySW_$dc|$Or!OwgUJZcqhFa1D0Kg621g}{)dV07g9bI@Dg}uJ-oDMXDI}Q z)6dqTE2xPZFGu$-B%MZh&yQMt*QZk-<#`ae-+d($J_61(QY#1VTvRT61H91SbM3;E z^b6rBAGi9xC#4j=7Jj)A-Z`Ks;Va?)z#9$zw;O*geDf!*>J+`40-0_(H^P6|+M4ir z2Z=v*HSPG*)`Z{ZmU_s9pAIiPfj?sH)RK8xw-aJ5Ms#`TmRoJ+IY^neycJV9*I_Zb zv4J+VR=@788;Gx;+feQLN4K>@o4Qk92bJq^hP(W2x6@j5C#AF{?62(lhhMl?Tf%iN zJO7W-55xV|y))r=c5m|?*XP3DgCDQouVlUUFZ22=Lih20ZRWXn>F+-?%cmUO)2VH0 za}xi>%3Ic_Uhs6{cMZA`J=@IpM={R48kz70_$@wM$~Wb4?tAbF$yz$%x3lENkIwa# ziSGCP+syO7v%T*U<-*er@aKi_^WfVh!dQN^_Y0K5yZ37Io$pk_Pk>kIeg>X*+jlMe z-QH~p&+SP*8{zfv5B2c&zQayZysQrnQ;t z2(mxrJbECZ?DkrWE^u&L!f~?1Qw|>jUl`yIx4h(gE(6?gnCNQIJ({1^)%^|}>DFgC{I;Xx+LLzPyc+%*yx8!=nTVwGTRr^X zW7^F3MM!>}qh%5*NpvYsFwR8R-ggg0mx=D{{%z`jAb+^|X5tWd!>ErubX!hnGoORD zIDiyzzFAIaJKbV*olk628}$0U$sTUHFXEMQszA4LP@8&K*9BI(k#zvSasHixXW1y71^WbyQH(aXkh8af{t9 z&subCW7||x4^3yW0Tp;+Z#}*+y3ePzsay5(l46+Y7MC4g`dXeZp22;G=-hIcEcN5P zaY_8kL3cm8k$QZrqwCLmiLMacEBS4zXNne|B@45!b&L5Y+>Ax@B4b=O-Uzx9sAZrZE8RM?dJbH$5Y|i@crS# zbRJ!wl63Onr@+HH=f0#r7bWqOpxf)F#PJBPfDeFg)Z>Y6DhjWGe+a)pFaN+bc4dkm z4e%pwZZqF2CC|6W0U(K!|3sJi6y=U?gT)`Qc0ZePDe>C1=(5nAxVTNdaiFHNqyV!H zjKwH^<)hnD)~2q~;|pAFM<($U!+Sm2rjFCO>|=S$-u87=f$osU+7f;j+s;4yDma(7 z=eM=mc13std^dcz!FSnQ{78A4=ei$nQ~f*Y;iX^u+?Z!)qWffBTz_S8usblsy$~h6 zJam^-wE3=66v3Z_vrVP>d%Npz8NBDSZR#6?f8p{f@dN&{!PmRI4xay9o9{kc82%dE zue{QpVSn*?`X!@1EpYEkS@2cs6Sr3>&ph~>@D6&tGQJCZZuT$563>fmszuKS_wDGb z1?5+#{?T3jQk(z#kKymYU)1A?4mQM}26%2|o2u9O<#s>jo+QeErB?8ryO-&&b-#<2 zbSmk1XNS9jcLxGvyz4;fIUD`eueSNV*DfEv4*rjR-;#Ogt8R0#ue%a-^ES4b=jWML z#GkvaMAwMUXvfl@d}LR>TarG$ZP+SUNO3pe_+0*r^o)N zj5O^0!zaMc(K+KcIZ`IP8om&Ikj}N|I_lxq!-wcRnjZ-te4g{)@VPp-oag0*r^9!` zxqW!~jc)o2&xT*Mz0LQz&V2YQaF!jk@DJLBF5!#enLj3;Z%TQW!w>nXO}(a3@3eD>|bv@rR+tHSAy<7avguehU;NNcj zM?cCU>EyyA@FRmdm+{R9Zo3v;5xTbD+st(e+3$$^Zb&)0l!mzRL-bp`5>GXJCw#D8 zJ~HmLoIOhKNiQ425lw@qEC=TqwWWHX;(bT961 zQ^`iTIfv#XpK07k?rUl@pUcvoKgxoC3_n5lLwgTJ9{h)PcoBRT+~~(GZ#+^4f48|! zy`}pn=XLKj+kG{hwL`6kMtn^_Ju=<334 z=66od_0G39!1usk*UK~TvK@((LrNv{%RO=ZaC9G8+EoVpHTW$3K5of`siS*cOFX&g znv=ukb2rhK$_g)pPqf0m>ocYB1@Lz}A$G4X*`S@}9-t6^s?hc98dmbY5>I!fJ#qdx zy3#M{)uTJEXW0B6Q}m&Bi6_Va@(%c;`t@S3XAW{N7>OqXoz*L>=JRhYJ-ebLo*eji zxUqk0jl=IgM)?$?D?cdgJ5DQw4@wKG^?E(Y{Wb1feHFSl4-TsZ#&}%@m>t~(Q9J+W zx~GR#vR-e2u$?#I!B>)!{ys9C@Vk(buXOk^{le-JJ-oeMcA$~39CXu;4JX`}mv{=` zCGgL?@`q8cg~q;2DY}yfh0Xp|o*S)jt_ech*F_b&f6@IQKg8mbanC!R&dxu&r%w)> z`{mY)w#d%^s{|h$R=?}z9r(q*F6{inyPX;~p98lZq@3&A3sB<8K{q)o?ECyk0lW(S zxt@-_F5%26BpZ@mDZ1Hbgw6d~<^zFO++{N-|L6t|3#)$m{F86jpzPK=S_F3fMK?LD zF3{7BZi-5J!3{j`F(s^Wy7Nb@9PM?w*1cjSDY^`F%L~G)P#^bMbTEM<+<~8@my7O; ztHb8`j_97c#8U|WAABDFcGII9vBt$xbIPF%-D&f}=D1AO?S`7VYIKXyEzskW^GIVo zo%q#&?lW|k>bmHAwZyNK*OHPBnjbdDH4@L+W;~hbE&K+~&GvNSPb0dwo)7zezbBOirnlh(yC9C` zFVNp!6cc|k;h%2^tGkWs;4Bgv;a&%#%R_hSn_=~<-fxOOTitHcp4S(n3%wooU56-# zFMKDg_99N#pAlYrtA=0R4zGt#fXi*t4S$XoK3K(fciQ3U@Z;cNz5D~scA-jnX2ZKy z(=X`pYtPT-!>7RaHp;WBU7ixY7(V)=u)5cX|4ujla`;;xhZCMxlya_yzX1P34{yCj zL3;tpPyyvH3-+kd6_$c_kdic>^ITyfBhwr2F z9FLd4k86ilzz>BN>EX5S7u3LSgwHbgG&=!1|M0ir#{2LBlkJ;|@RT>%hx#&XKKB_t zOfNhGe(YD_g!`VtbKo=KUm58;o0-B3;Az{qj~d)LKrXxlel2{q!Kb_aSHRzZuQa%` z-zMQ};3s_@PPiW>ya9d%yq6x{*{-ttkCeCYA8yQ#$Mu4x|ZZcSA_1Q@51Kyo@9OMX;W8@?k98~Nx)ct#B}=q?Ej*> z?fW>tv~yt%@Q>T!DVu2DKlq2wfakTtbKq;*;RW#D;n_+27t4osUa$n-eS6sV{7eP> zbhuypsDT&5zae@ze(MXj{WQSO_%ZJO9$mMP_L1^7-*JK;sD~f#)P?X2crl#elor1? zj?94{^b`G%!FRan7r=MGCmGyXsFL_g;C+7%oBQg~eNJgF74Qq-N9ywwSx<8wC6!q1 z_F0Q=>@Q*8{oO|RM)(K%{Y&<#o^)?tc06hCFrNJ*Y@XL*-h2r;5`VMc^WdjQ!m;`! z9w{>MHxGUXJfd?MpKo`{RDKp+F}kS@VRL^_)?Y6*brtB|M|Zy--|YXZt3@~HPsZ80 zj&&ug+>1~A52O1Lo!`7Y?Z2F#`^%qa!LNq<-Bal710tc4GZaPRNM@QeQqtL^$cHt?-Ihn4ut;Rm+*-`A?) zQ{fLA={tv^C44>nJNU^upXZfx@Lk4)@N}I^Bj;~B|L_+0hdQ@5yZOt8uW1XL`yV`y z6I)-(hkpYfria(g?-#=(@M4{7-=!>vPYZ|D*?Rd|9Qe~Fy5f5cx`mOj8l&rE-ngG# z)DpX$pGI^~?qNKs>!N%A5>M)8*8Nmi?a;ZbyT!dvIt$&{Y)PN9i1cQJ_zdqvF{Mnz&EwS8{oU)m+AS6 zZuU$3Dev*Vn643XoiO@vn(z$xe0ZYuAK^Lh&2Y9^w0x{{+ercZf^HFYv8D0Ac>7wD zawvh{xmQFzr28l9;m#+lBv!lrD$%L#5%WGmzZz?AweVB-j+oE0M>l!I&qnyWaJEG> zKc8~_Ox=Q?J@C`u&W%vQXTtA<=NsI)U?d;8@K53I==r>kd@Oal6=(c|?(+R;KS2V; z>U}o4wdOiUIlBFO5uaWz(ynjy+O?!xgKmBAh+5G}i_c!C`N!@{_|;Cg5nZpo5%awj zJl`ECH{(ltpEh?`M2*t(A?KRoo} zi>?IS^Cv{iewKd6dc=&c65Y6g5%qxH9%MhP(5$~Y@$bZlI$qbwI45r1JV?j>US>qG zOsM74Ib11zrNbwm6j7h)T=My{=~oWAPJ<%mcSc1Q-4l`E5?>*@Ip_{D`a4-i-)NLa z8M;YX5p&$nzNod z7G4Q|2)?(@o#BSfYvIe=;f?SG@I&?R&Tz&KpUOn*I{0v%Q|{BE{$;`+flt;s=bELO zr5tkM-@=W3E5ZjJ^xCK7qX^x+VgBu|4Bk0Aq8`=j)jFGqycZx#Jk{uKK09%LEW956 zU-*ms+pD){?E)1Z{Fr@F{;%uZ{4vc6iBeHhkLfi21%2882LB=C=Ud))A3} z=gP&868QJ+yYz}Sd+?&W4=&&93(p_@8B zlJI@S5>GjNKAi14FFhG&IZGe%tDV0ZbbHWUW{l_MfpqVIS&6R^-H?e9#bw~dC+$l6 z;GUF2+E&^Qy0M1NS+EkG1@C!r;&Kw62OkLcn@<*_~g8Z`rGjDclWxhf@e&Qn9l{U9$-D}w0Q|8}me>UJ5UQ`;}`Y{6=_{?yvQ# zTko~-1ExoO=X;Itq^(ZM)(VGzjdtCTIz9TB;olL=|3{z zhtGI{%OjBD-jB237cBIzw>UU}BQNBD3_rvZKue4ZX&o*$HhKJpv?Nx7!d zAwPz0s{9bEH%q(z;XlGNbRHd_N;z{RmxqW3>^@0LUoe%IU1KLgt@;MeNoCh5=Oz9*1@?(h}VD`~ss zsO?|mz=y+k=-m3zE$0IGUiU=QBK>->&siMjUJ(C}z4w5xqImnhHwlE^dr?CN>Ahp< zARXyN0wfTS5=f{vdhbm-ND~kN1rY=hr3unOKm_RsQlyJ$;GNm)dxdk3InV$0z3}<2!J;UfCrpG?-?B(Z8*N=_gXyR9zc(3~%d9R+0KVjl` z%!u{-Ue<>uzTixscFvAV@4P5CTeq{HG1sR)h<(1^GaunEF7tc7AIqj&-{?O#`aeAN zT=cT>Jxu(h*|C1#_cg)9J9A>auLJO$kX?U`iSJ|L<11eqf560-oonV9%cy2$ArrsS#Cx@$fj#5m>znweCf;it88{>^ zzK4nL@R85_NZ<%J-X4b&O#F8y-m8DM=aIQy)XVHfx6$bCu8j45pH$$ZxO7gK`2DMV z+B-8(Y=^UU{f8z#+3NV?Z9dYUGj-X-*YKL3vGdU%d(F>OGP=n1rl0Vv4}mp|E>m2E zu>Qi0Zt(`wj(e8B83%d3SIFjTg3&G980-BW5s&xwt}*eKO?*eAeX)ODwBrX%eD2Rp zf9;u$>30HeyG3Kya_hrGqf4>Lj0-&5q5f|BJ5(DYo1g4In|^R}tl#_IE1CELTjD=n z?E39Yd=nEt&L$jJpGL;*r*};JRuk{<{B6F85Bf4T-s?`bT(_C{Y9@Y+=XTin^47W) zwEsr8WSjqbm*Bjq4`0Rlyf?FsakM_pk=>p`Mt9-sSijHX)i?29?C?3SX(sdXHorYg z{2dd&&isxm4|~2g>c#%C>C7;?e&57;-w$PU&8fc|P5g8dzrxcGA3wM2pD^)RzBTis zUh(oUh>d?};wPKrJA|zL@5)0)x`T7hcz?t4^8}N&-IyG zu;mbA;@j?weZJbWo|26x4QX8cW#%tPT{F@`^$E5Lc2Y?jIQ&ZSnvBN_$Y++ zbH&7G-W&ToiDx}=$5G#U`AL4!+=umDtoMDV+}CgY6f*H&?KA0k=EvTLJw48idwexB zy6)e{K40$DE=)DTRB`Qs&G$P-_sgN!=bg;&xcU%iuV%?{I^V<>IBe>rXS{tc$LSaK z#pY|5(LFP|=K-F6>tfxO-T4v*uUo!7aITjo5{Wb3PoA@Nh zW4-S`GLO~r2{Y@}tsl*duD#JMvmoxcUldorVodx+6JNqJUb+!?{TU|yfr&TWmdE-h z5$6lwB zTic96_CxN=X8!za?DOhg`}1uh-09Um)Hk}!7h>bR|HP)(!^9sm@e953Wgfr^3iX;d zoMCizuA1vkp8M1G*FOE=Hlus%T5P=UJGcAutcmYu;=|1E7yIGGdCXrX{&N%mu~+Z#mp1_5*zPx3D$ol6W_qZxAa>7#r$166F!csU_-x8KAMF!61?;%zG`_4F?j|EY;@?iDXLXyi65`&Dzl zj)@=P8E?)D_+*)-Zhfs`bk%OeKkl@C!cF`-6TjTEp4on?e_Zu({Y)^rLbv=MH)~A% zdK16hCLDKMZE?59rgOl=H@xjTUs}~CFIp%^m;q z2Bl1Vo!|V=TQoEA9Zh^gn_yf%>&E3X#>7uH@nbyW&3Rj(oZ?vO=5xN${bqD6JauNA z+{t*d+p*2W=eg@Y{;Y{_YvOZwuJ6&0{bl0YnfN=N@x0v6`p^E0nTNX<|NM$A?@A`V zfQdJkQD1DQIh+GOjw^0=JHm}_ztM$z>H_6@xlLz;iBEaoe}BHr#LqDCUgf~e?RNcL z*1w6*<>{ZYwE4VZ;t!hmZJzOFJj~GBQn%kqe%7drDOo?sZAVc~17$wKKXCM&~sTWXCxLUu?hiH^S)d{$;Lb2AKujKKs3mpj~kdge|8vMtADD z8FzW=f?jp|G#h`w#9s@1_S{T!dH6Z%X3ECjGV$|+;*WQ?|5tNeJ;Af*lRV4O&Rh9h z$17!Yn-f0seqKHBL0me`O#GDKXMV?*F(&@1jrZD)D0e$-K4zHs3Q3Mhx>r*@d%n(dyX<__$hcvLo9`H-`!uc51$*YlUWaVxb)U+7qbrx? znfEx~_CKS&>)9@&+hlapK4^Zs6(X*WFQBW?XiaNCTPjBcdONL>Apc?);{ zoA|1QpFNLF=n-#U^RX?ic-?%}H@b`^pFKC1nP2#^?>qCj9%uc<7~M9bE9W^Lu-9Kb zCg7}YzR?{h{mlD09D6>`HE)}Y&HpZ=t5W8f-|K`|Oni#6&z|Q>V8n6TXD5o*#8ph2 zUUJhBCa(DGd2!Etnful~$HO+gQbw1i^0Vio%985@+{u#!Zsf>Onh4t|G?9~oku?9UGKLUUEbH8d4FHQ9v|<#(4{v%t{B~7qf2f5 z5iI}9@Y#l^Quwd^w*>wzfqzTj-xB!$eF;1#XhHZcEB9v?KTP6A*)GtAB|ghdA4z;S zY(MNU>}0I0{rA7Ni?(6D`?5K6o!EW2!pu*)AKfwY5$;74bDvBj$-#M+JB7;fdiUdw z=6vThSx)Re9B$?puwP>fxGw`W^MY+eSFOF+HrUp0%Ch9<#b2eJUYB40)%;aK-x!+% z`~Nn7z5YY~=GOmb`MXViuDg?SW)AninZM!xA%FQp?V!z^M^_RXRYmN+*TmK*{!Q$Q zJ@CKhSLW%7-Gp{d6Wf#J6eDH%^7G3cl#p>4A{9TskW4B@lJQ3a{nH-0z_qDguN&J)aVl!nBdmNiIWBlt!MkRG! z&BmU^KEY<_Bk{$s^|6uI+1Lx%kiMdi#LmVhjut);yB>Q1n>t3~8)FAzS7J|N6ZaEc zIqU^&pd(u=RDba|8>{8IjpftW-?2#ti2k`FHb2V^ zu&uF?*s<7o*p1ku*h|>3gyQddpx8g)$p*@D2(}KkD|QHWG4?yGZb#tzvVJ0LN^BZz zdTb_aR_sgIJlG=GcDco0DVCj~vaIcBLZ9ViENefIo@G1rV8cs3@p*jW3$rY0b57^8 ztlXb%ioP|rBQ^qCF{k9e7t6kW`YM;|<&4l}4&M)SnUl8Vx*Q^&w&}9_l2EqIK{cU?$mM;t!yN_iz()_s&fA&<`mpd#!z&^pM-q)IM6Zj%`dH0_bxKHe}|KQI@ zZoJ3uzj%P1B>8(tKEiwZeHB+JpR7JQ-F{!aT@G;KPs>xg%l)W`dH!^wLu_+w2W%H?AM8Nv5bP-I zB)4yvJJ^TVKd}L0q}-BWGh(x1 zb72c%OJXZyYhYi;Ho>;WcEonYMq}T{j>pc%F2SzBZpQAy9>V^Jy@I`ky^sA1n{cdb zUvg|(Y-a2$*nHSx*oxTN*oN5F*f4B&Y#;0(>@e&Y>=f*5>;mjk?8n#**srjAum`Y5 zu|Hz3V((#}V4q`?jFat8h1GURZ7y@quMI`8<*|Y0URWFQW2<4Ku@d{A|L%4#GTHai ziuNb$4eSGKEH*jm|7Xvl80KDtGw;#GRx$J>@7Z(7e;xE@zS+I4P4jV=<)-Ci{XbZ)s~Hpgf85^-2c`UcGnR3xki6J3 z*jm^Y*e=-q*iqP7*cI4K*ge>j*lXCw*x+fBZbocgY#D4VYzu4`Y=7)1>@4gG>?Z6U z>`Cl3>|<>3bkfJ>#g@U=!nVM6!S=_F!p_33z;43s!Jfok!#>6a&metlUThg`Eo=*H z7i@p*DC{ik3hXBA9_&f%HSA+-@J!Oj=Eau5*21>HcER??j>68uuE1`>?!lhKUc)}d z2G1gWY+h^`Y%OdHY!_^Q>?rIk>>lh%>^1CTZ14x9kIjoMgRO;af$f6rj~#`b zgj18Vm`q;eKGT2(!7T7M>{@792S=bfWP1rrylh|w6$JpRGq>s&u zErYFvZGr8A?T;OWorPV2-GtqPJ&C=BeT)sBOZwQn*fQ8!*cR9>*#6j2*c~V0Z`Z`T zott{`-?Z)ThnwYx+6k)YU;95<0-^Ca%QRPd+Md`{pUCpDd1CKjznm}2yB3IbR*UVq zTx`~bVsm~Z_V^01_s)rpFYWl)oy(#h*h@wr>#^6dnR^Rwj2(mBjD3PF#&x9l(y&bD zXML;OJDYT5qqnBYyJ7r?egcxcf0-Bo=1^7*HJ{N-o= z()jap)=z%?`8lyHem|G~p&#FRpv%|&`1yMauWQ6_{rNG+duV)Xq*)vPcKP$;uY9t8 z7Qdf+ezwc(_kWb1M}GYHE1&(#sjx~$o*c-!YsKZ)N@NmU00 z&5xfU|IkmdkK*61F@F5`>o3M{h~LjFKYsk}_ndzGEc}Ol9&Cv}KOgz=pR?bgI!59@_^>oh%+A9tv__rK_;mLEUn zIQ<{-1@>1D4T)0ufM?Bw&guSaA3m3PaN@%yRh$B(~u=%o|!`)T6G&x?FHj{6=Q zpA*gG+;{Wc7McGkA0cNF-$sgU*-dP|?qVNeGrc9tQP}0!o!C)5BtBbDv0>O{aGQj)b03C3KhJi= z@2Ac`^i#`^p9cTX&mceB)$||wS^rJ^+tt>OAAjSbn)~AS6aEkV%=6=?&p-4N<;Tx( zKYn^gM-Axe)UIB=LP-8Mn!iyqq<*(v{RS2YDOIF&k>VjGiWM(byhO2bA#J;M?p(N3 zhth>R_3hZJb7V;0i2mK8yY=oBQoKyr(&b9GcM6$ekS0im`>DD9$!)QJDlI_-5>7Qs3A)*sQPs>} zw;>N4UD5t*YN7(ixIYV6!8li7+up$OF5P441ee+;R{|&6mj~DneL8_N-JfMGUFQCr zXz6PE)8r)Fn1nUWpVUDEgN!D)llc=g_%j=u%Lz_nY|z`THdkUNk^Pa*2ol?r0-c2O z%)G{& zM!8GbgNNItVQw+y3JD%(mqxU7<8lW#wCjzO6!Hh#U729iM{ZoP;0kuheo@T$EEn9z zE=~N-T?!5U#4gP|<1W<+&S95k$x^G}>NbTBWGOPZh+SG{%ONn=KqpCn-M)Yl0X74^ zdpU4G;?jZULvSrjTtEr?(}rZ7`gJjjp=Pm+T~40ZR;3ij-JiDPoU&#)&{=DKQH_=u zYO9e}pQ2P@dj;{|YGexG|Nd%Zzi>h|^4-g(8kI6NB59X!qp8hnO9yF33x5Jte!7<-E=mk(4W-+lOVi%LAGC8s7rO0a>nN0s5kXw)JCDZIVQ%v3hoqjfl0e_}UVg9PqN=D=+Wo&Numd7|t3FK0?C zrerF)$yA39{knyBh%uS((93M}TTV>>4!xoyI$IFkZE%FOJc9XfRD)w@h7k(!@2 zqEnBzT#YS*=qOpKZ+Jw1r%SgU5l+8e(cQZCiU<$s9NDq2S>Hs++MRmz?)+A?)1!B< zt|4(E+dp=&9y|9kU9}ZP_U;?w9dDBCD0#6dinE@*!z0X!ZsrZC-LQE`^?y7fDcUc( zZ_((!or^|w?EF^8t`X5it2M7%zedrnJ-T)3T)0G$;>C-UEZVKNNvB`0e$f%(l2g0w zl8MeXS0;C+EKO8bw?sR1=-s7@i8cjl%dS-}>TF=h=Ti0T+#OiIPZ z>afIXAKS|3nB&(C0Zw!MsY9m#rx}rdGv@GhgOTXZ7i%^7n;f8L@Fp$&sl%@SMOr!^ zU?lqU#ae$$%XZ!7_%Xo_%WT)LmBkJiw1(Q@f|l(l_qSF^dtk*CuN{B9s1A1IpgY12 zcRF;S=GZ}mTiw`+b{OGR{p@JLYTbHmTV{_@qGVXdkpCBC*eMb{sAo*aPR7Rc6&tC) zdi9QpDAKi8zapLbb?Xsc*wjRKDY9d9q*Ek(P%pEl*qFW&(?6oG9nO0#bTDy!BYJeS zEAT6-M~qXXTd!{BZ%o8M^S6sxFmb)ZJH~W$ibO89H+zB1 z+7X@lb?wm6oS2w{ToH2z~s@l*@qSQQU`k4hgp~l+YRM*%0Ue(@D zgAhaU#KAh|m%Zmy*Vp?@)oMBD_Nq>8bF;p^hgFyLK3271q-67N^QrjV3O*eOu1H>kl-{mWej^df%~HO~**wp!v|{X!FB! zeaAMmHejbDkwyKh>ub02o{8{Wf681@sy*G(+kvj9{zmw$ulGr-&8R}GrmuJ$>udQB z;iOA#B=^s$K16?D?d`2L|GNJ5@zMpVonO{_1>f`+`>a1^r>w6w{cqmu>;6-^n)Tfg zrTM*hb3r$1@n-4veap*t{ZD+fKF-}HQ!Z69mPPxF6)^)Il# zlfguKgb>o9oD%C_V}|w)7Nr2ZkT8Ki@EQ8@nKoNj=R>2 zKf1o!(?09#ee>5@|Fq8z*Y(t1^jTl;uiSA$(hu>ez#%WP;{N)@{I$N~w*S|HF2C@r ztUpCJ+@+2af>m?N{IJ_!OaWHc*LFdpt=0y$&-v}U{x#CC=Bi)((e>0OHb3NF)*r+Ac2dkU_^zMN&-y!Af0)ny^IgBBpY?0rmHgN8S;1$~sp@C_ z@%Lo?0zNDFEIJKX-?#iX-k0^)_^hCdYVB)o^tWd@g*}w@ZTCMx`^@rX(t)u;%H&5qi|K-ioJK8UK^9)XW&-ny786E9M zy!DwJ?H{~(W=Gq7Z=S`uKzr`ZvwAMZ{SI>M*}&gJko&gG`1nhIhlT_>FZYl37mVjoACSIXp8o`xR%kKf z4%LUc{O|Roq09eXPud!8^Ru4ut66kIAM-cBd9fe0{TKqj&i>VQX_DdAPqBIChez<2 zf18}m|4N_yf8_Gi&g{>m9aUHMN>G6F_xyijxSOs|x%n&qQ$`Pv~-h~?;8!V|wN1I`b~Pj~qA z&eF^3cxV_r_Y!dsLMJ={UIWJ+@iP~`e1+&=G0QfrfbUu<%cs$=htIbsNG1%2Z->9K zMtG{x8WVoKZeJ`U&|qmwcAT>w!@a&ketHDF@VktZ*J!WP56TR&==6o_{T>mr znll8h_e&gvPlVUnAwZAES@36Yl6Mxt^?r$&QjMH7@MKrTPi6A|HT>>H;YY+c2jP0Z zgdDBrJ@Ih8Z$bG*xZW3`{4RXYK5^V0|7lD^VcU(x*F_m>_O}gr47dAt%Sfr`PX#*_ z;JNGxsR^~jICbIO;ML$Q;UD|(F7Vs%!srLWvwkn&Rrn})4Y=xO!~6K?SHS1_@J;aD zK7NkE@59TH?lt(U2Lvd83hxBh`kBQPmo2vu@XGjk75CTTz2NKNW#I3@ufbn~PlD$;BtZA0eLTVD|1G$d|3>&scxn9XhVO@K`J8|U($1)# ztMEc__45b3BixPyY)EX{6`P;b91vp#JK5p)&IuR*e-%CleMxv__yM?1SJgAz_G`s% z6?B!-`lz{~=u8w=)bs!KQt(<*e`BNej;m*Z1(Gg6D(ldwG(= zE5L7@5Fq1J$7y7EfRo+{`A*6?6n$s(2`T3V@EG{S(*jb!$G|h%ftd-)=fIcv?5|aD zeVS5MEu3^FBNSF^zw1n~MoX9;{K`?n7IP4GI`1U!WA zh1+i&+0a0Y^D}%byf^#~{0aOm_;YyY>jDDVuGFSt+xl>u0?=`hy?x#Ch#R6;|3%?- zIPX}FpGtijP z?Z#q`Q;Nf>gnn2`(O(ne)JDJKc0t#(>RX}z&YlRHpyk{Xe$9uEgeP!6g8HKUpJ%vx ze*LGEaH#9eaXvwx2K`3(SMc5NCsd#x;Dghc0ka8oCyt$_w&m6Ff zGvVC|3a<}e3BPS8983roW4@;(+tnmQz#a5^;YpdWpA7#2J_jB^{x8Gl78E~!pnm|L zUPyQe_;dJfIKwO_wdv?>InOFA`j+T(!EeJKk!~sYrDCGLjlMSgaB<|}-ahuiaT8}h;Rdk^^pJ0;+!m}uDz4~6S@C3L^M4%hE7yoA0JT)*3( z=LJ3C`W*-5gW>vJ2p#W@g6sDbwEtZM*Y7U;NxC1y^*aoo!MDKmyAC=o+5`W!zLe)8 z^vB@(eTtdzpWrVy^wwX8>vuNhp}!Ar#rHOH!DHe29ge;5;MB5z^*bGUUXu>4-|Lu) zJ_H`sMDk-RiNHr&tvuHW}i-W7i64RJgU{UCU&X2KbsI-}ra zn+v~ByE+g4z0W-Ddboa1Boh5rxPD*cQ}|xEes4sN-;;3t{>XFkdD(E=4umpaJqCUs zy?&=813W<*(d%=3dR(W4U-0ph({Q(c=X)LMr!;zf{!abWfDhrhJk3vY{OET-)K53` z`rMrQ8H9c|>DmWCY#0O2873epd=|VA6UO^R?yPYAXLiDv$14Wkfc`Q1-1yn)>Qg$Q zJSX=W`XlJGb{3%?kLTeT7$B%0d*7KYH+@cWEbZ8zaD8r4kGo*gP*}Y_M|p&F)4=t) z%7gHnaDC2FkGsNfeeSX~`topn4zo18I$WR2)Ny7bxIU-36aAZTeQs0rk#K!(a{&5x z4Y%XZ{FJBe--+n;xzC#D7r^y7(2Vf4t{*cWdrkVI_3W=L=uh?(P!#<^c*0)7yP-c1 z?`1FanD86N-CcP5zQS*#4@xKd<@Fc=TArEVOX22lbHl6f4e&wi_v-LM1I5n;^zGrv z2MM1F?+af5?+kwr?hF>aj?-qrbIua3^Gj>tucFU`pIz`q@MQ3l@HX)N@aym+a2;<4 zq?hu^{WjZ0d8UUacu)9n{1kwXhHHOX0lo}A8hw3u!S}_Fo`-gZ4~4fuKN$WKya;>> zJjoF8(+Iu>-U>b$z8(Gx{7d)=_=iKqkJh(e;78!EpnnSg4Zabc$~1uXcwah9{8Sa= z4UOT|;AS_up*y@eyb^pUd@8&ue4gR%bxg*4k?`f{kD)&a z-wt0nQu32PjPpHw%_sq}=ug2{G2zq;ejT1^jOg|J@d>;)JQMn)ra`dfHVUresI2hC z@G|I2!%xC#CY;*v>U1oR(6@k>8!!180q+6d2JZkL2G2G@^g14%4cG5*bVI)kuHWU* z^P`P${Z2;?ap!ys*Y9>5#m{lLe#fIW{0dyZ>+uHd&po()=i?#zXK?-QM^@5JW(wSv zvwjDpEBb73{Vs_1Q?DBC&RcRmqWkeR^i^n=mgA=h{4#tZJRBay1>_9mXCQne13>Ku zN5GrT5n)mEli@?>3Ydcb#qc!qgr9(~hhK%yfqw&kZ@%aU!4JWIhxdnHfcIP=`or-1 zhTDE{>R(A*qWz$K@v<%FN()7={b_P|8~6*b4$AG;mNW|`JY0s+nWbocZc}djlL8-RX*|aPC|*O2~YWr=sTkC0PjsbtPg)r zIr>BJiSXw+#eX6ALU`qG#s9DHjquTb3fK1eJ9xgG!V|H-&clQ9i2vF6`5j(lkLU}) zQ=5jx*3Xvkui*vZ8EH2{;pO2i;Kkt0;4kkJ|7KX?hVJl^a2AHZwNYR>oY3g)P>LHm&(;o&@GJomF%5n%Sp0N=e+X}!Sol`PrJur+Q6IE@ z`x^dTO3~-Q&tdqDRKg?Sr{PWLK`WxQn?M{LgwJUxdYw1>5#Fj#GF;C?bHIOs>o}?y{1)5{Q{7M#o|O8j`@I?b3wQ(c9pDLCNPhHu zwm&?58)-2Hqn`{fhCWE5oyG8+T?A-p0%^+)&C86M|e2;Kr=A5$NO&hWO#OXvvBd#0bT~a z0d5|0b3>@|NYPhE-wgg3K9q6`gAcF|K$*~+<7)u?T2JAt(2s^sW`dL9h%*O1zmMn_ zqF({85H0+Y80T~NqWJ>ClSoGQ!n5}muJe9B!;iri;O94Z??D3QiyJ4Y={Rh8CL1h# zHT-4x=kV$9^6)xui@qtmK71~G3%n~l{9V!Oc=cWQ2KaaAr^DZVPxODl7r|rR7q0vF zGx%}1&I9a&{|wKKp9}Cnju$=u`V;;JT+f3t7L@V{prIXwpMvnw@J8&%itv-eC7(J@ zs12_-Lih;kVRLx0vBI@K?E)VIPmKR)_>^&?uSI^wz)$+{h4Ad-MX%=V{I3)Z%^gqIr9ufYU80R9q?lA!?*{+B1dp`)TOubE1SoT+uGs3wH;ADoEzAU^G z`?nDM1Nba>b$F$7qOS{Y3m*w*`0n(CZ$2;j573W*H@YBvp%`a6{5B109rUZL*L$LEI++n<-ye2#c+%)@cXbXQG-W}c-z7ej+*97<>xXyE@MG}Y&m{laUtfc7fagT-6qW7$0sbRA6MXG+@zad@oC97cM?zOQ7kx?izW%~* z!Rx^T1Ehj$eP{{46)4;cx7-j8PZuPd=^m#qJWWF3+K-HccY-&<&usXgStUQ&Wiy-& z@Q*ow)}j9nzLxvp53s#I!5gKOboZiv2+x>K_^0qxW&mm1)xGc_{N#i0PcQmy=&Qg- zWe|QH-VUBSt8hK;`oj0{ynwdzLkzd)>8H7lkQhG`;TL@PT>Rw7B>pF%UkhIc{}8?t z-q=2fZNgai&+s4Nq43|~S+a<}Dm+DTDW5j*{qWrIt!!^=colg1Y~n}Hmz%>I!&ToC zz6w4MKO^BavWuTL;d9|j;G^Li;RRk2{UZ2Y_;>JD@H6oFA)?oD?=5)lyu$NRA7WLX zTR6AZI2p`|ysbYodCuYl?p}q@TOz=$?uHuh-CUTBg13Wz&T|=hzS9%_8+;J@_u-L+ z#J`SLr@|8y7Tz5FQuuUu1GZ}e{6Z1YZ$VK0E{bDO|?`1>n`o zihu3bD#LrgtB}t(;H%+Ls2(oK+{C7hu-)Z3C~(y^zXoD!e_xv^Wuhe z@ICO4;CtbRnuz~w@Kf+C_C*jTw1i(b+}^(z#(ZXG_(Swj=vy&Pcn1Hjs`%0Klys$~ zoEugXUYc^q1s`5r_y+t}fIn*}d!r+%%NekZweJ^+>E<6r_4}yOH z?@InB!Iw1>|GHmRz(X4g??(PN!B;gAuKoCS_&xY#(meq`(Ny%>4*v@8{f6+S!Lq_5 z_~I_Izy8Ee!ZK2xUw0Lr8=eXNO>6Pf1703pxQ*}vW zpC#R_@Rb~2jqpZ%J|sf;CG@S}ow^7wj{jcp>0O0uK1UmF#~a@FB>g&tpr@O8C=A@k2M}d<8$(M>w~wI7i`&IdQyz|6k#&DYp#pK+|#9e)DU%_7^$f zPvF|#7K110C+U8RpBnJ*;SJ$!;0^kVz7jkFJ{GR+;Q;stgGH~$>3I0K_k^Fs&s=!e z`@(P2PpyDgTq=Ck1X*Dd{LCOZfcD^LFFeHv(TBr-R{x`g{|diuxV`T*g!@j-q8lEg ze|?PTo5Pcug04myeIrUc*i1gJeEiz5tHDZ=Zd})$MsTpY5Rg56S!T{`3!z$vG9xH#@P$s z`k`=b-+q7}pn_|^cFk~mysYPVAv?}v_!b|Y&eixiav?m+MPXTzx zu2LU9qW)Bd-~U5AXnWNJzUUS4L$z{x!Y|kt&X|ym{WTW;aSmyRpOEfH@J$g?&e{%d zfgdg<`7x)TZa4x@^t$-jA;~xw;g@OWZ=k;qFV|7@<;YLsic$_w!-ebd`wIL@QQ6)? zltW?o&zU5_6Zj8>H;9&ewt+V{+?M|k%3sGD;pnfI7ysHn_Ju#GBzz$Gd=DN~MYzr* z*{==R{kZQn;X1!M51yadZufgn()(a3pd@L8=Aq( z_Ypn}-Vwf~pYW8V8x2ogTX^B5vch}tCF6u^`!ErnKDpF~ZTMLLuiQlRf$-1aZ}t*C z6}|`lT2tX=sm~|j8%7D}Og;P+ek6tPXKdG>@c#D2Rwhh@C#fvu9K^u$Pk3Hl-JZ>eQ58&$~M6ctV6sE(q^>FK3!u7lHuE-A(W;BShZ| z{XTf=VZxWd&%tj+N5AHth<6RzXfM6XHtT!J@1|1!L2chT2|7lHSO&xOAZPfa<0 z3~vEX(L?;0(@!^ahKIsi!DHaF;o1%lhxh0yerBMb3U@f})c*>2Nw~Sp;fC$-x>4fi zF8nlnEA5H4OTWO2_7(kb^nb#C8Yx`IA!$OTJU>I9h~uRYJkJoRw`O%Wgu?gs7e6)O zjo`@#2=5B-43CC)hxdb@gAarchc_Qc{>jgHc=e&e^}5o0c*=K#&!8TzgD>HR1ujE6 z-@vmE5q&=N$KbCH7hVy59Uj32H*LqB!|%gqI}$QhmGT@%IX8h9hffzq z`$9hxs-vF(kDMy`X)MDm=R=Cp@b*dkoppPuk} z^Mq^vG5~%XuIDd9;0x!AUgvu!z;`VW-j@8#hrhB=xL%k13_f9zaIJ6q;H%iKn)ta2 zzXM+lPgq0BZG92hfqI{3R`~1>#s6jWCE;&V&YI7<@MrL~=-b2BEEPZP;eFuWZx*iS zK_lS>_};U&!*k$IwuxTb+fU&KA|?O50wsZi@CEp(L%LVty>^P9hd~nY1ipNb)bk4H z6Pp6G_3Aua``?%0ho}#8(3gRC{Zjm2g*S%R-zvN|$I+Yc>1;kAy4Ui+ie zwWwEcQ~lgf82$jR{eEq@e&<`y<66S?d)pP*zmahLp0|!~2g7%tlKg0Wn_{?q-|UX7 zG7>mVem+8<^R(y(!#BX^!?pk21s`=p%B?E;)9|1l#m^o1ukfC!q<%hv$HMQS|B(Ha zsF2!4*pqY$)A=_bAb4XL~QfzrQHk8w~#we)N*?L)7z3=0LW` z<0AWlToaz+zXW{F4dHrTA8NQg&rQwzRci9t0R8TpqTiQTBHF_zJrr(EyWG$nz8|i~ z%V7A%N1|Vkel$G%vG5CQ*DUzSKC)wbqF)K$!*z3=Pum2~mQ%{@A^Lsr8c)RkV*HPKSzk4dGJJar93PADf;p7Eb!g%9y0KHC88a^{hwyP@nsR}P1 zAo|4Yuln%vLBjR?wJyNcOQI3V&UJxPs4j95w88(P53$ZH1q+lOZlHLAAPl17kU9wtk)vjsktc|tuO-wDq+R)l&T;Rkr=8;M*$UC7T(cqy)roPY<_lX4q$ zP5kJ5LOS>g{47MD8$Oit@sHsZ;j?HbBWQ0M!2c{D{_9e2--Op-ejp4#QSh~eMX%>C zBjL4*2-kjXKK#9+!cXG=Q+So;!WYwE?SeNeAzb^ZpW%n#`Kc!l;Z=u<{xJCrt}o@* zrnGQv-_pWo!3W?c8~ioq$#deT2s{N7TK&j>6~oGhP!tw=p@R;6WXvo|H$w0Dii+==J#80$*4|xVE1M;I(QAKT1B&!ZXztz88K2 z{xe+9zn;R|9u@rr@{^*0l=F&LB%eG+<>Z2AY#@4uDNaTB?IyyteQOFY-BfrIj>iai zlR3i2knX$ir?k(@$^SI?pe~~4b}nZrykmFax6pq9Z}67z5%BNfN8vr;Kf|lgQPihC zJcN(yC4L%`&m;|{d`9&VuJtW1Jhrd!`S`B_pA+rP+rUf52tS9uFFb8O;r-y_;iG-{ z3iw~}gXq67+}3A@`kWcQ!{sTRv%{0RM0!uhIe?$HIA757h@asN21|ar%;Jo@I~WAe+m8peCPz>dL3jfybtpR8_Cbt z@G}!de_IYS=O{dDE&-a)Yw&t!M4yWK`2_yxN72_$DH%%ISjxHTb>UPmCoBA1M%k`c z$xmr`g||c>0B-=_J5$pAhIG5YbNnW}A^bh~p~B)v%V!4s;Azq8{X)y(1<)_2Jh#Gs zIVO6#NoPNN%xvNN&|in2yefPt{114)>%w*1p2keX*?RcnT;XZa=Y!vb{|+w!zcf$u zYv7gPljaM*4X*=#dx7xF@W${r7YgTgF{dqj;)lYIQ2r6{_DhBL#7{JQKV0Ye--Vx8 zCi=(dN2`9h@HX&i@Z2kekAW|MuYp&GuY>;vuL}PHUhE_BqkOmF_Bh@7ig!D62)@^c z{{;WuhyQ~AKKSRf$9W8Iw?@*{=j@)tKm9~_82L=vRQ7wCwZe7$kP+U%hv$Nig_~iC z8_L5^z~6v3G~8})G5f-H6H>!lq0hHY(tW`3(g~jRGvSHZ@7>`!Hwf>Bp8@dk@O$_f z4u5Bp=m*dsPB7f&=M?QE?wvU}%=ySNU zP53PG`3-y)JRE)y{uEvV{u8{)SK>$KJ+8v%!E2*`0KWv+;H3&lJFoLXRpC=_i2f#iTEpM@Rk)UaIDF|%;d#S#;gA<(yyhF!_S!yzn4UKrexx18$59a;XhEHe}E^-EZlUjZnzC^0oQr& z0CU1_$5&x|pM_zHlfrOY-=5|ZKN&e5bHYa!6y68_AJYd_e>^<(bq7$yZEd&hjY4L;h3PlQi_XCOaw;LCmVD-5^WHM6Ls`x5$3;h(|v zdhrf;;$otog8mSEHarIY6Fhlw(Qk#{gYSjE1rIU_+5D6!A^L~#bnv_-h3k3N%Z9t- zVcNaB=nJ9m!2LW?@UrN4d@aXaF?b#HvFKxpOGFD-pVA2(BIO@~z8gFYuH*25@FDO* z=tshL!1KeW!SBLT!xy_ey%Rz{r@+^tuP{{dlN|mvyp|6?Vz@2OOP!^?()RfpyiXS? z&%5|}2v6Ky_(U;IP)q4|Lf@Bk`=ZYd-vN(=7c<8zEf#$KT;maBjPFlC+ZYyfa$# zciG;|@Sn#DA4h(2!6W$~;WBtJc=GY0H;Zm)1P_Pjm*&{%0G}{L^aV*b8veyp;ij8* z!w`6qX~IXqr@|+~zlAS>H<~VbeGk{Q==4$J!mq)r!=J+oTo?Uc@GRzp#kLQ5ZU|R>33#qwg%4(XtHT%E z6utsKt>D#f3E#~4xjTGw66rCc;P1n~ODTLgerCfvr4~;2?5u%L&L~{#)i?0kS%r7S z&l&hy_+E?C=g$dq09=kO5t0eC-ndH6NH$NDbiQy<=$`8_SqwuamG zZ3yjHZv6B_zci<$I{-ceet`LkEAUD1^|?jQ>sOo);rogTPn2F(SO>3aKagjFY1Z8E zEqpfoKF8xx__%_iUyc4e{77}-#W-H>!<{<9&2YjE0qvwbo5R<_lfZ-OihdV71AH$$ z6rRg)TW;McH|aecr>N@fhx|+!LityM&*u4{mH250uhC5O+7E`o8#Wid1wZ}aiCPLD zgP$?*$#6aISOl-oM)YOTe+KUZ?*ZQnKL^iCdHw{i6efQDLjMbVTZC|}50BvUe4cYj zVmdNgpDXqdz1dA}$O4}QXL#ilgg=2lLSG5K*GJz7e!Hjm=XIz~NBElF!nNFbz)M95 zH^Y86#K6bEb)5D-d?Wm4^poIE`-q<%@TKr+@JRS3_?LY}Ul_gv{tI01FFgP+Wk2|6 zLN)Y1!u!L&q@G-Y7wa$js_5^*+Yf_teiRGugPzA`oTP8c{yH^C^uzFz72bNVaJ{Zq z6h0fiTcVw+hTG#MlH-Nu)~Sbn;Y1O>i~o-BY?Fj9VudL9ms5mCqaOe-JXN^Phm3`{ zTrXVf=XCh88Nxrq&vJMRK195p^4ts${y_8$H=QH!_ZA4}v2f=S{Qbqk;ft4}-tTIIR_Y@oS=II>U*8@2Dxf76lg#52-7> zFUQd^^;1vyE!z2s${P!>?nszzxGm3D?#gzRfPV~c0)LHi-U6R;PxN}69)t(o7hV@X z=i&9?dOhVKeE9>>*Fc}NqvYoXybnApyv;+=&xPkQ+?I1#Q`xR*ltU5p578$mBP*1H z*DRRW1y%4<4gTa+;SJzT;lt5)43LO0_?1GU*LI+X;qHF7AIdc0eUUo@;XB}i;KNlv zSoHVdQhm&U2<+;7L2#@=5Pp_)5z^a%0O68q$oVI{V=o%%0uBj;oaHZX7E!pM6cu3&hUaWg=>2o4WDpZ zcoWIKGg|fSWV=i^=Z59*h4}ddz7bw;miTEyIqZWkpDlbY`8*9Dn@{}f`>bxmUz;m> z9sfHKQf_nMACqosc+GjDUklF#e*kX-F9~ljU-Tw9H`IWC3jdb;H-|?r68-T6qVEB( zwM_W8Y}ZhD;uXRfhC0*Wvp*58&)=sqi27LKv zqJIPKm93B2V_;hV_M zYm*K16{f~;Da_}$V^QaGcKi)C;TJ&0qdp@b|8WUguZa8g9#NG2`t}((R5u>bmH4Tr>c_6utrd1bB-Z zqVFCg5p&_^7>8&+SHZJV{!9-zo8YB>6F-so{}w(U9tuASKMU7!(K&dryW&Unx8PB5 zJx>3EPxj%dddU7-3qM7=dEg`OiT~f=#o#gbh3|paf>(GTT<=eN6W-#X@R8{I!+(O; zgpY&Q{9W`q{`>$wAFkWA9KIF44L|GQ1D=SVvhZz&yXU7}le$Fr%eUy)q92U@5Ip}M z;wKD#5&Y5;rVPTh zo_qm64%d3J6P`4q=+m&hhYWYy6QAw9g1#i}>R9x5(O*EngZ%%6ep^=Y|2aHmFWJ9+ zvI#E=&ktYh!>hs%!~3Fd06)mMr3U5G4W8y@@xK`UKK#>HgzG%Oboi+p!n@&r75qc` z{d@2&@M*b3ujBvk;InfJ*Z%G#yiXqCIzM&|zCW*U?O*JbQWJx8T>{i7N=N1OEfw7|v^+oFq|FZs#kD-ZVRI z$PTYpMfh;)$*b@~uL+-ozAU_5sPNYG%XQ$N*ATArgl*xeYYA_RpPukAxYp-E@MCc8 zN5;Wh))qfw@v{(q0j~2E>)^%eivB739q?BHe{&V$Cm+rlSz7C+i=M!~Pa*P$N@ zpBXNCod=!@KMr4kehGX~gy?6%x4=_%5#A4e2tERy1AYa*99|Uu1bzZO8lKEl09$Tt zyNdtSlv{3i!fwLX!pp)pbQk^uej3Bayd^vd+1iZlj;b+lbhZh(qd^Y?~_&4x(;3>?&z?NI( zL84yJPaMR4X;W_*~ybU~MjO>^4Q^kLC_)G9f@DcDr@U+uJukC*+_#(Kz4?h%MW2WeJ zzc+o{r@JnDouL^I7|Hbgh@GT-(q5@Lh1-u9EPq3q_v`Kb7E>;abkG!~cNm^S`a&0UwH=^Ry>j z;TM(&-wf{upS?`@0MZ=+PqkdQp4ZHP_k?%B&qDa|6{2s1pH=Xj9|=DW{~Z1Zz8C&2 zeA`OV>v;7f+*vI=747XMc&bl?>+?tV47cYm9irs?B^dvK{bheuSugsN@MQ4xpL+9* z@L%DR*xnHMzzw2*f}g_hsExu+Hr!ASepNa7uK{nfS@ieu-w0m+OX1r7w}I#1D%?~{ zH$=ea`|v*S)Z4uM4}k}67ru`COo4y;4V;2o0uTF6xYpRhoyYf(OLAV(WfTjva8SR>^R}Azw7d}&gRYDJQn{K4tn$8 zf#w?_X1~|qy}sI>zXZ=TPAa~RdyB)5;h_(7Mm;9)MJe?&fK6ZaI} zoEz;+!!rz$a_h*AW-H*i;FZH9KR>`LyPO3N(*%8VAJOahA?zXE4&`O9u2?dC*1H5G@d5f4W9Ks_lB ze;xi?L&=Ypd0Y57-gm9XOO(t1o}Y2(zo(wmMKa&zDV#{3_GbzDv>heggXp)x3m+4( z34RoQrn>00U%mwI@~&)e0rbDa^M;FF$4hD7k#d`uE7(=?dQImQc+&o&=XLN-W%vq? zm-_f`2A>rzdL4K5b~z#sGt>{C<%h4v|B#WgUHTl#cKA`B_UcDJer}_0SVQv3Z6(fM z@cV3+mRqWKrF_bBpHfq{AwPU8$9oERd3Yb*ude4iZ@~BYwEx}Un|+SQ_uyHWP}F)m z37)>Qsw=NS+4Rn zn8YDCU`ugGu%d_%2jrmP%;U_NBRSafJZG-w<=J!2weJPmJ$v__={tLO@7vvb9tR|Y zO$ZQBKuOHgN&=GQ_=lw^4}L_l6@H*7h$sXS@^BpTFxbeEh?IyRaLD(qwW_+R_a2`g zXS!CcdaYWuYOPhPYJbe&|H1TuZ?}5>nZXaNpNK5zez3ixJ&f1|-4cJ}>cgFm$%wJ@AiOJ%6sFPySs|GYCV z|H$C~#P;hCSeaij_=R1J`%Z)Zj=|sFkyn3Y@HhObB7W5H-~3^v&j(E|eaztRF!GDlgMa=96z=Btg9iVLe^vSFw>7)>V+Q{N;|Hf- zeL~>Yx!}*I4F8pmzVT}Y|Ms6%WXI3{^PYOX^81wzfA8NZ{@bmMKV$G09r^GMgTK}6 zly@8cp2172XW8KI6SyUUKV!rH@20;wefYx$|5tZPAE%G~{d?;9wBi4JM}Pje_uzjX z@HfN${mtKTl3zRZzwg0++h0@qe97j~m3mP%&-WSr^j!BN`}y16 z#Ncl&$s)FhW~Ym;x8G0{%3=~)AWsBu%cfy z_?t~{nHl^IKcIAYwId(C-r#@J*6Ck1{BJY(UdMiUm%+c|XB6?j8U8B*w?y!#xCj0r ztLLqq{q7@xbAG44>t;$T`x(Rkhp#Cee%RXh2L^v;`e$SCPYFEeh<*MW!~eTx?>K$n zx9-9JlHq^Ln{?inzEUgty1%aU{2v{@{bqsBxBKpU;Lq-XUt0bD#q6dFtMc05A2K=V z4F1IQ zG*{0b8T>~({QtHeG*t$( zNa^s{^pmeK{BJV&AAXP0$Ju2Y2LCl1m&1RL!T;;u)^^dH{7V5}BquKg-;jboKVtQK zh1t1($MQaI@PE;1_ZJQRMbl48!~b=I|ES5g_Zj>P0uLIr&o^Nq)35m2cPo83E!6Ov)muo3v_rNtLDJgqgiT)zr;wGy+zVY@Z#UCI|cdvm`-kCrZ7v9b^s5%P}mJDZ;$(?Iw_h?6&**o1l z+)Z4H&A9Kjm4R=ietn!b*($ngUuBWG&u7zVR-KgxTI{FNrpmJ2qRFbw z@z@m<;7NMXl0g!O+2mQB`RWDhAWN^apy(l3r5yD07rt9N8E5sZ$}fWY449tddXbIj z`S3hb@bUR;*`VoNWX(=~kvDa3npSmomQS)5oGnQ`y*!*C)PzhkYqFPi6#D+VySu~5 z4!Vf4DOyFDvvPY@RaxPwa9kUJxtOZ;H7(2n#}$FDOPGNDZ3LKE4>y}~&$ame!yWhe z^sw(f0Zk-1&eF;f$=NGCkR%;9sQGv_Lf5pt!*ZC9a?m)h*>vx<**H&&VR}b?>J0&6 z2}$@5LIqMc)yPAwe>>+&{nPZub$RD}5A)jtdsyh1wlC8v9e^aDOFr;x97QfCam4^^rB%f#_5B9ySuttlhZGCs$#H!=&59OZS3sNI z91OBLXmoEj9-pMmWdV8EV(pAOwTz=heq8U2`*)KNzdJWzymC@RP4&lF=6PTHsr=>Y ziBmS;!f$@~``AQ!*Q5FX#Ph|lU~eHZ$^mmQae3hO>x z(;MpF!>qY1hgdz2mmj-MACewnWmZPu4(X^Yrx8FB7;mp|IZ}mBMOjL1pC@DYDUtqd zHD}dbn-KBdtEDk?`q64{+FWAy9|}ZT3;}F3Ol!N2Mnck8va0Ms>|iZP9a+7!v9=o5 zEBy=W(JqD%_A*RI9o<-axZay&6YQMjsCk;D(}R4HH@n5CtOo7s#0-_y-R3y0{L)Z1 z2`7W4k08y*5X8c;@@L#CBiX`K)K(sm*} zWX}$7Ius?WO7WfZIV1xdS0Ur?oMVgIX}Ma`M*#pF3=F6)Zk*2#PmpXzF1N zO~G^ZKYyP!|KhkBE^Rzoedu!b>!b9@C0t={0KRVyxR)1sec43~=e#q1MZ6ct{*oYRwITr!;vu3n$hNkLe zHx@!L&z>o%Qh~_@X&jU^_+fgL$u`_o!%*fFT3g!g-d5r%1~$&NO21y%A~(o`b`Jw+ zdA%w9L|RehB-c{{QLeav?g>3OU@$38(gjtDntPOatwz#ug~E8jwCrTB&q`313SwGi zE7S63ebu!NMJ|WdXH)ScYoG{FV2hBOsS>9Za7@6Yx@-1*tgTmEvYKG%;SD(I$6(>WZ10QhchCEKq=x> zwD>L^6o^4Rn~JuG2Lxq0FfitLyk9&sTK71@oxBoS-pSC;GMH>&F+j0s@PECu{9pq+ zAqNM!!hA6gUQjYi=Gr6S_tR`vQ`YYdCAnQ?*c4b5OwpFsQjggotkO&nen!>@0cLpU zXFCyUZYWe20l!aMBZEn`FZeZQj}y2%EeDrN%gYbe9!QS@BsbE7v~IM~^!W$_U4HP; z>jPVPbDa%zh>l|vc7`1`hF~j+0VWPrnbJ}_C{>krFFCzS|C8D*2eN{+k zGa3%$9Na$hsCyYS*SJ?54M8h7&Aeu)fE_rv;&RkFWYF_qlD#u_0l|!jk!5};p!UY; zg|`>A#Y1dJF}4?A5tWoLJ0R|YQz80c2Km#SoPJrsC*@`_DtiwY1lfk===n?gNFpO= zusCM{7*j1%UXuy5gUgB6L6sf0;D*gAU_zfa6t%xBp;na)Zdo$e3x~-}NxMNIFSb;e z8&>g*Vp1hC)cm@hRlYLlu-q7^HCWpxc@ehOu89!I?6br4HpF$a_pGR)=(q|+fw9Ux zzgyZCy-RVagmh!&N@BxM=C*{cKTDiuR~hU~rJ3u9OFN0sG3}R^AFi%B20SfqFd?C~ zrI1L#I3)3&RZ>E@uczN+I{Q4sEWtrdXNu+>?Z8JvsHK^8Rt5mWwprDdj9JLg&-w`6>?z#(LJR=Fx()25#eEAx=PfSbTF0qik}zYy^oD{ImzG+{_?D?%Jh7ScEa^~D+{0w7VHH?A?WWVoQ2X*A zyUw5{yUsv`Z#R1aQNz}(z5~tRHt=3?j;o@Us@|WlW|RHf(Z)!0(vO?PZ9wO*|O|erJ zV{ZWn@|+S!!ZBxIhU^i;^QdA@)m)R|vW&2~1j3^q=>%+_Iiv_+JT+JFsH|!2hoh(V zJSA&|Kp2%c{7bvA-COKP5s=ISU!LqWRsn`W7rH8n5i*2>bu7e}5uw5RvW~BCpesW7 zJ`97C+r{l4HL6?HNfQeran8to?vT0Qd4w1NrEkpXY%dEy4z)j{CY(#N1F+@N#$z~!Xu~Wbh`2}L6TvtlxcEsI zz@^#Es!H!-4{X~f$&_lN3fqEGb?=4P2Uyd=KCIjz%7Pdtug|jTE&!g<>qJIjV8%lD z0H!}fP!?s@aHQQ77ZqB(7b7pO;US>{dJJY5jmsP94P4m{j-vNv?PDJ~hl^dwR`<@a zqtd$qwxdIns+EAiu3eBAasjZ0VW8E}Egib)h0yQG?qnAZXB#l*o|ZMhD$rTinGjW4 zv&oenQCv5E|Kh0%mqRs#6&on_(zK##M!TJ}i2C|mj#i)pCja6v>dOpBvp@h=&%@se z!44b-)~_XIh<6b%S3BMAei}0Pbz~SP4Di`Tl7cyg^acQvX3X+69$$|H7q)kmUhtSg zNSE@^9z39m<%qK=2aH1%XyPoA>bbh51T{1HuvY2gfTvE)3xT26F@o6(kMxRl-TDHWl++5XB=^i-a{U3^APv6^RclBUy=aY>$l4hzKj9R=$&q ztJ>?GI;eU7q`+;C=Gp)pEX)|7s85Tm46A$nioQ zE^7bnRp=tSp&oS}9IQ&SvS*0>PWiZfnU9Cyb}Xd2H(`+29hvEb?gs30a6$-=3xiPu z)=u>s1nanYm0ATM>?*~ajUe@dQB61+QlK1DZ$2kW!%4Bg!65Af=z%UBWJQ%D5O8{r zbQ3c4n~67MrH)oPmX0joyL&-%{GgbxV9iH;ay$x;$W0z|9Hv*;cR?1XQd+pk8Yj|( z=7VyI8M_;oa7m;RzvWWlY=}mUliR`NqFihWk+p;J0Hh`5fZRKtA*wT0Yad&L&VIgunHA{`v|5Ux_JA4^7KSfCP_5I86Et3z3on5Y<-1BZv+1d`FJ7ikvl=zxBCu|E2T(Cv-9~C6Xr6os zw~+N0E&^HSZXw5&Bf=xAYIfX>!?mbrYlPbx!&WkS>}{`)27^T*RTz+K7+S&; z92>ZP8ff=+3gts0Ok&)l+4wB0CV3Hfb*&6Ssh~<=W9rleVnpYZhHgiN@E1sTJB1*9 z(bO19{tOFTf?p7vgLW~zCAiC$mwS^G0g{?POrNq3>jqF_fkGJAW;_QZrC@$?V#yMw*}bcn6OVPV`IaV}Il3l4{@32KiK&kG`<;2m#$3J_9fe0L9(`!pra zaGk>Sz^cLFm77vtXHcJogJ6>5Gko?51nR%;JthLVLEOg$nEQAtW~{Ff*f?fCp03V8 zB1RG%A4kU;1+p?%YAuAQAL=B6Nx3ylcZkR{?}PLlzVcvPSif-|5Ti#>QZ82&@3`L1q zl|VvQ8%HL00O*a{6{9A|+NMUZ7tPdDT%K`#b4Dfx?LgYh+=;CAn6jOFr1ERjJ<>pU zC4$P%N^1%qjNA{pCRrh1(SA421xhK(-q=;s$1akNBZ(;U<)91~6$=CGx%Ti;*svCb z7Bde7TZh2?;caBqkRCgl+9_Rj0;;H!${cJ`w!0lY!rY1?W@xgohCnu%Ik$189CYCq=x+((?NHqm>@+T(-$o-p`Q; zE95>}@f#+sOKPm-Xm2gk$>rwAb$1i%?ylywhBhW0k{yy8UNK!KXJPDlCodvgC$Dp# zP=rQwRuh~Kg{H{qtcaaBB!)O1T&D@(KssuNL0!-f-Nk*x(Vmr9U9Kp07)(brBvs9+ z)RGBGmTe;a<|S+E@9UjW`^SQ)#*+npV?>blvRbdr@*s$tb?UvO^2U}3T8gwB0!w$feQU_T`03w34vg$iD02tc2 zXHHj#Fcs9ai{?^#%Yp3k%n(cQOku^$Fp* zS5qxhJSLBdGfO-xb5ISko&zHk+g-4o>xrPF$Y8bQeW9 zSKYeyM|_Audav!<-}5UyL& zSK7;9fJg-_<7#!~oy4d`ijdE@vgRghcS9oXkDviY=h2GZGbO^B;P zlp*wpfystN+Ccq>g8m`{sLC!RzXO2k5w99{MAZ7ARA*ChRm!ZuMTL!AxJg>nGz=ZM zt^$Cm^8zu7Z;oL*5kTKj-Ag6yE5dD`jnxOsy_-w;n~p{6(r*wQdu##G;k&hmhag~b zWpJn=7>WhRT-Kz=vb6P@>?4iEf=fDa+K$OlnW9k8LqH@Mx2ZR&4?o;sp6A((UqQ_9 z{Q>lORHaxcVi7=EBC;vC0;;ll8v)L_XOJUEKioNHWQFUL+Z|QiHaZ`|BR-i;Xf%L! zllF-jodD$4mvAz6xQde_9cr^^+|WIsolfNsW@!xp`^IND>CjA4*BOT{(;t@@ax`{h zIX4g*0rA9e0$MKw&Y>}I-N~goGeTQkMYR-}p+25K8MkydF$cqA7gEJ^X;q?R>FSwG z$f?>B%$Mt)Y&t`n3=S>@k3wB*a2Pw1iB}?TQZOiAkPXX=a(TfpC z+T6Md2$4-N07&<3){)O-C^-SLH4xYbw2E-+_!PH_s)B;a)#q$6@I?rMB*SYKO}H70 zVP)WUHx%Yk?j(6+wy6<#{>O}h^Ux%vr;`Z?TVTk8TuhFvcG&e&StY*bXyxhj&=u>d z;U1wL=3xBF5z6M#LfpHGHDGZNg!?d+7rj;z@hsLtWsAXee{LBKhu-m}N}pd&q2UCe zab@IJ0~oI%Oki<9+PSf*O&k$`byE7w?_b&)p9Tn~XsI0@iLU$DZZ<;M>mt-GEvgd|k)V7k)J2QU06W>p;mC8I0qeKLCa-GPng zH^m$=f3)SXG#Wr~4o?;#3UPPS`K??!>doANI;OpQ@-6^<$coWuHmlm*cHePuOc^#X zza2R+_9D6A8)?l21v-v10SxBS#ur~)VJD*LRSPFJXUyt}1iiwdqSnA}fj3ZE)yk1I zdU+!PieU~m}qeS-uNmilERSG=D*c^ZYN!YGZ`b7ht-z z4cvETuphr4uen|xg57d;sSV&lkR9}pPqIMD=On!{geBa5aJRXJsiXhZ!*sgpd;^JBj^q=UG~g1D&-A>O zzcmckM)X-+)r6x@fCJqY?V>HN3aG{lPbi)s6bxMX!^2#`r-T=b5uKH2bW~DF%-X;X zvYHanC3YvK?(vaDxgRjjuOMAUI1|O9bqOeVxRua=ld!XEU>CEbF&>NLIv5yJ41E!B zjmt-aOb=3EqRNYf<&=!fJ3@jIK`#&|L_-6wn#i+1bx)pUaWMHSm!r^8Nx%;|#*;wu z-C%Q*50De885WoSU@3-`SYI;C(bLGPMPRA-?c3loOkqxAa1e+yN7N&v#sqR0QO%E80PFNt{*-5jDq)Au=@&7PK0gORPy)y~&}ea1CpPF)NI7KG9;85PIkj02!^RkM~>a1yuD%k>_#q?UUxc+x1}4|=)ifRb2c9b09| zLw|l!e}=X!*Qttztz_%w1w@-U` z*^7VCi$@PO5adc07qd2f!Pfc7yw+f`a_EORO6ct+0v;y8x?r^AI+Gh1_>gb;AhGdq zqlY(Ua8}I(NRrW~KV-3u)eWQu1lQrm_8#%L2e-H(NNvGF6%{3POa* zZN}J^r1=IJ(`!Jn1p5pGWKzSQCF6a(%5bzU3}>T)u+Jx1+Yn+qHJ8_2CD>wVW#z#G zuaI!QuzNZzV<<~5uWNK{tQ*q@ELv1*>Nje{rTE?pB$Y{!T*bKP##2VdW<1X5p$cH> za47rvnJ94#+RVcfG(^?#*-3FYPvKWR#!EYVh5+{S08?Oh^!bS}eLQ!9b3+UtVH;&7 zN|rXIJ=bHdT8zr3ZVv!q$PW~cX zpDLz~8dJh87QiQK7m;TF)JSDhA~pwf}$84cWk=}w+6EwqDO_X6~klD z*_&Kh8Nbxfs0GJw?-#W`7_x2{VRM$D!QBfow4Y%{U@P`yRPd?W8^}Z2mHNH3vbv10 z3t2qMh2pzLFe97?Acz@Ivg)izC*sXsU1<0=1a>!Zg6NXt@(i?M)E1<48lK}V8yF(Ti`Qo|#MATL$k$z39$-yS1ad-TX00FeDNge_lVzz_`3ZVPAvw7?;6 zG;g!IK=f?uL8qx8bE&Q%;5m%5l6k&KeCzxwqU#C3C?F2E7$iILP`V<~96XcbX(ad( zji7QdBgL50A>*1**qF06)nU9nPNCpRGvYu##!1+yG_6P=ilIjy0)VtwjAL4jAoZuP z2Dx<~GBQfNDDue#dPceTtmfv-q^`IQkYXSJ!8C>GfOuCsNSI6@qZoD~H({mbQO>|6 zm;tQQ{HmOyAPLzas%k}r5(zPqkMWQZHJnyrIqN%PIEewFlTP zEAM?jZeUhQcWcTg2yPVCT?#H5UXwk?-{Z=Wn;I%1wvnM)97gU`c+Ny2%%heA(>fn0 z2u!CF-GP%bRDA_Y1R1$>%U8~-Y&mE}GCvZiL6vwH#xhYP5>ycoEy@X!!E&v^0~5qP z6SDidTKg@^cpSonY~1D4dE;h<5NSeM=fn^Kjf5T14YPBi>PVqhs5%_}z?J2W}4t)R@SX>C!eA_nx zS}!~l1jgA7>|ow2_MOJZDWsk7lJ7cmQ{4H&EB^SRZz#P@GKust`J|no0_44?Deli+ zF0DLV-oPxu4B+SEA*1W#di50WKpli4|1HHtk(gJU-`(cPRn|Q78VHd^81`_f~zx-!Mbq zG#32BhlryVb6XS3J*YFsBSfMh?~&Z=;BOE}0^ye8Hn!$rQh^W^;x*v^lTbP5f^%|t zuc=oyUo zVZ!ZmPw@6}4$y`V2n=`RCHUX=fyL-@m?QQ_@(lvm|VTrtg zF7y!V*|Kecuz5H{DrVG2JMPv*sd>g0z)3MCd`8zNA?i6P(!FM5jeE>!q&I38wD+g@v9M@z67GI zV8a%x2;Vv024>%dX5>1Uy@7Lw)ks#$_f|o_!9`}wy1emVb1ze>(<7C(li6WyW5Nd?u;WNu9zi3Bk(+6V+sJyMELR*Mp00t04Ij7K%;p`2$!{oi-EH8 z!^}PCD>1`4s~Q%N^tfN-I6_d5d%$r978F$}>_|ertn8D46-8aG_B%5Hj==>GYPsNM~~d07oXsS|NneHjGZA>SRz*!Z%Nr`ul;R%M_HHAWtuL(3IZMc&(^-A-|8iqE`20!JAskEv-O3Ug_21 zw1XyMyF&sib6oJz5%uO(47BiAwZ2I$SwaTG(#PKgEFDpBwNj#=QG;gM3^nu zmJ}C)-Xn4CsOm)}C#sddJQe{^mFS*bIEONaOy`Oemw*QwO$5MTB@O8VbDh1T@*^OM zDNvjhOPbF^U~$8{>Q!ofXe#(up!nKCkhOsNWi zx~{tbc(?^gXBDV!AgUIqHX;}@dEP{2J<@>)f`AS59TtP$=_S%mHV0A$!vuKNR@DNK zGoH9B*~|_z2cK3IDcib;;ar_;4J77H$e~P!MgYiQD#H*Ao%0v95L;%;E6_iSx{#gQXrD|tyqcSiYE3JKIA1_j&> z*pfInM|89#T5pY|&HE*pvbByNsnpp(4FO*8oX>wtzFx(YPd8P@h?S=RU=C%9cUhp)|WQbA!4yxgw5PGxX9?cA`o?l29wIt8KQk}wR_ zAm>R5#|3As^t`7>Sh#hKAI!Mu$w`WgTXF-=!sf;Gbcc1BAnXH=bGzT`wcpO&dH>Po;r_PM?h?2V zW?90>?&bCNdRH;%m<6<=2;qQL;lY{-O?PO(XWy$%nR});>!A= zLDJB^a}61}$ebPqVFq7K0{P<|P2fX#-Gp9P<@hxQ{UOVQC#1Isqp0){sk~b}=5_@H zjqp4)8Jbf*VLVbmbxw404U5iLa(J$7d4Tb=Ui^aqAjQiOegJrJ4`ikpm)X;w-gfmu zoXKrB&w#!GJl_CT)gScrz`FB0rDSIExeU-_-5`n-+=icEf<_cQtdKAuz~kWzb(}dl zfITK9HGFQkgaXRgg2DK8@gj>$wKHtU5r~l(I1%QJVU7;EKyITB_$Ev~prx5SK(V-r zLGAM{DsMcx(c_LY2Kk~#PyIH`8`rmV&7m`;e-ck)^`$qJI?nQDmVDRVjg|2 z^#ofiv;uC*ZfZcRNqrG;fH8(}vqN%m1?>_|lF_a1Rg0$!E2=YNWi4a!4Y#Xyc^#Xa zYf6?V75-?oBkF8IBS9edkUHI#-*fN4OgPw*m`DIkC^bYpC9%ww zy^$-%chq_SPQ||NMrpu~STeCkX&Af|<@b@GJef!%vV4^sB4{4`pjC1WzX96yCu>d^ z3~`t#aym%{w<$%I#APoYzRr_K!hlO;6YtU*<8HE6)B?x<`+2P6cDvAP2idfc*I5CyUJZ%vQS8S--=9|N_&TlC8}ap_A4lG3kD+k z)8c_xTV1;0fE~LT1#!IGVFB>CGp=h^^LM^u7`Lwb^q1~*+ft5|H!3C3hHNa$iakB7 zWX!ZG;bHYwI9R|;-`5QrIlFq7HwHo)EgHcWNUu;<_`0}-f?e8`#$S{U z*dSOgkpQ;txkV5#waFP&3U``sC)_Q<)kUjJ9>;MUW1C3=DP)>Egw$YqkIrBu7E<`O zSSN1#>b(tyUGfnjT17DvxE56cL0q(NM>>UFo-A;9VOvR4mgntTm8$sQ2dwV6DP_g= z;+9D48Ge$fqp|os*IM9|)=(ZXs-nbR1U7-%y|_v%VteiDHH^#{F-gv$`$NdUT^g+x zQ3=5=lwolZH(;CNSRCq#HZ7#7<}?^rn4AIYH(?Z-pP6=29ojsb2dspZ0~+Ahcu3X3 zO=qk3Rm2iA++0u^`?7ETzHQyD=Adb#Dj_=XT#LUX5Jl zosG-YqO{Uo1guW$c5z>x7q99I;7H&Ri4VmDZYLj?Gq6J6E5 zySmqk_2vrG3J~QOTem8s-u%sF^0YMY#Y1Dv3aFFicYnOpZvJSz%dO zE@^36E|Hm{l44Qej*5zfg@T4kiAwT*?{j~F1NFb&>wmrP>6$+0ezuu;=9y<^4scu$ zFmkAkjg3+LvNP-qiPr2g3}3ji!oiZ|Yq%Q@hNsceaI@rBmlxMub+9a!k}ihUm$bXO zR5me;%}8$`g`q9jf&3lFmn9#uERt`JCGfH-JpT&Pxp*N>7Ri(4S>%I%y{hYfkDPz7 z%*OILOSOd;_+Ge&V8A~bCgjQI( zV(E}`DWha*HShit#4$FBgW-QjP<_LOPB@DHCKL+p5V(DR(_6OdFVfh715|(GM{ElTL zmI^HWv1DU;9gDp7W7&e`9F{{^s$YNd%_aIHyoO~rP-WGp{1 zQO42%EU#iYjpaKm%dnWR$ZH^$GAw(rtio~=i}mYU1RJqT#L|Kp1LzVs3(GAm?_w#! zQvEuPH#e~OW0{O41&a@s5G?OwiO13%%ML7au^hy58OsDL4`V68@-dc+SZ-sHS0a|D zu>2(fUO!_g#PSxFlUTmMBCknUe6cjeG6&1wSQcQB*Ig{fEbspR{U1(c%ggEiW3$ez z-|7FdopvnWfp+=7tpC4y<@?r)t-}BWepp6XCA#CiE0zbD){zRW`98=hP2P^J7gvW5 z;mu>!!GAadY2B>SpRjuWIN$f7)2;HV-@4(=@ah0g<@;b7LwmynzE6eI_`aGqs^7px zeE*_Vn)TZ^5e&i-YnAvm-g{tKilrr%bSw+8RKKF}W?gkaKeLM8!~3mRUcwTHWgHf7 zEGw~$#`6F6dJP4JVTohGd9Xc}2*%aS$D1?;t6?UV#aN!lvL4F_EKyk2VyS-Z!kauS zPh#nZWiOWRv1DPfe!YX>Ste|N8GQdJ{RqB*WjU5JSgv5%j747K72_LtnD49ky7~?L zlJAFDrCGlXl8wd7&TzCS*L!){8I3K5hd3~9Vlk;E*0Wu%&GNFd%s99%<9e=fGmCQV z*Vx(O#+um05^t-Cn_J?nd)4LjY+BQxfhFC}c*uAToA^^FTSHoEf$jSaS2cB4a-Em*-(y!=w6n2{ONk@waZUKr!9cS{ zbHmB_8RZ`Q|F*6!ar8=N24^xi@0??Ai(vGlyeJ8_6ceQaxVVB8G# zm!N)idwo&<%RIxfJ}G||<-?BH8a-^a{_Bl!O&nxfvwb1lpWc@CaDHG#Eza2*ZCU;Z z^Zl7G*PcjRROLuX`x8;_QM4yVQsSXlU-$>MmTR5FFJs4>eq>{O#{Ah$ao$|AHM%hV z7V8^>{*y5+xDx3#n-@l)8}%7L~0S1k3>m|R07zk>T; zg>tg~K3re*_?w9B+xelbA=g7Ge;@IOxwe*jW{EFg{FS$|G2~2^I0V~&_iY=?{h!4C zY_GzSkGT-%mtA`s%e|oFzl8qme4%!{J&x^|?Qd&2^CkZ{&X2eLv9B5b&!GKqwBL>E z`v~X5hPF0FAI84e5D%P>Lm5xQcs*5Y)NJ1tjE}kKgaOR|f&1Uq5@YU0{pXI_8Uf5d zit^ z*2cy%-%I<&=-xReyCtyz-Kr zu?yo)+E3&D%G@u^E)x$9{Cqq*XG~A@sU>$7O6i1>up$Q)XblU z5r1_}?-ixJz38t~S8NS`L)#BV{HoRYc?A1&a-D6>cxjLEc@OoaZK;0^{dpVnr4Qo= zQQj8&@5eY9{qNVicKmP0cwA~V9@DVC@BXMgUKJQ`i8y}Vtp7ar?*RJ0di)&3{@Jat zH6qcDtp6j_{|)sgu)GiI-@y6bf$_^I?~n8GRmQg1{{gr-w_t%&z3f5 zNy|H+KORMYq%-~t$4g#sas3Hc|9WhH_3=E9_Ll`Y81JEsY)?C`Z@MMMGakyH!}eCs z_bympr-rrb&qn+^j&Jq$KZfl~!SVBAdks;)k5zx|ME*t04{|>)>+68y`7@6HBa8>4 zJ-df(j1HFVMLz0}v#NhtR)p6RIIgk}GEUyY&5+KIjg4P$eA98i@TMidvEhyKS1;Qc zuP{zSN8P~u*#Y%r{lnogtNI@!zr{zj`B#vC4%d(B`SuLP!@HQ@!&v_e+TC}pc0P;7 zc7Jufc6{vQd~n-R9?$70U;UDD6V0(YS{58aq-`MDh{_WA&#`63w`@atT)1=bg@>zq#zvFm>ueGZ= zA74g(*hzciZ`70gOs?-SuJ2PgAN|vV?SF~wF1FhLr_kO6%r9M;KMdQq4dX+$RoWXW z8;;iv%kjbI2sqv`R>!+H>U&$wPt#HVp4I%|fd2Z@YQFS9JG-*=Ia}HvhV6ORYJ2Ws zeV$ivy|Szi^C8y#HMUccURvZx4=~^oBMyll5ZI9C|`o|)%BO~ z_;qEzE6&F~I3KI$pI;G=vASN}!h9J!p!R(4kGKQwe?z(cW?Y{G$3qbMXNgt+Jj3xY znCp}KUU}`p(h-X<>NUmwSFb+=$1@A#35OHs^h3rS^zXNrzq}F4{x@WM-FZB|$Bw;u z&c^b&lH|J}K9y!;`J6)H0f=L8f7FHbOJ(B1OUDED6)WL|GM_6z5h){f1Jnt zhV~ck2kVV@+?rTkyYYV+GXaQ4HqlO&^8r(Z;g)3>!Iu2S#=B_G{$g!=^SM7mxIY(A zbqFrbE6|U!{mDFD)&18H{dMgco*~%YE!6t~aVN&FV}Jat_NNr**Fl`D?#v&?^*wEg z^>drO7+-CfzXSa>3jH~Rad(#A%<_+8dv0PpVK*$>cL)8MvD%jRtBs9vj)&^|!Qoi{ ziJxsPpMlB#tikpTvf4fwm@#{5@9*9~`PI0es$TyB?BAv0+WG5_?6_s!+TR~?eQ3tg z|EIA%W8bwkZdt}-W8)n2_4cqoz?a9I{Kr^ z>i%Pjj1P>r4wmwbjaAr>pRU)=*J(KMXIagk^W{L`m4rpw{}laKi2jSQ#MnL@uWLy* zhCAac?2qc>zXQj21fD9b;@gX2x1 zai-v4BY0Y5bR-hP5<}%}XjJ4Y5k~Nc*}-EXrbot`BH{)|g~rE6#2fK1MMat-{wEbp z3AJJP)cPs25=;?^!PDX*B5LYrQbaVGtCwbqn^P|(Dk5}tZOz%!;)4^SZ6r>lQ3wa6)`Ucui3)5ui7)4vh+pn^jY~&SuA(;-VwNX2lxe zQSozX%f!S7M?}}IAR;<+YE(pU{EX1Ji16UB(6AY`n?E%)Y-U1ia9qT!P;_(j^qTcB zBQ|t;L|9Bhw5cWo-CXlNA~7}+ZPvuIL!%NRf=zQ`Ygd3>jSCJBHHFp`3X4HECz^tB zU}l6yhey?xogQHd4oyg`Q#y3|baXEICAjWpgvCT9%!;m;C^hRPv0QZMtlIT(GqDj? z8)a!uiuv@eNv$ntmB<#uBf_HU>}kF9|EPhjn<|5%&c;+%v(Ef?UDU)O{I80&IsdK| z6Bju>GWtKOS!G$(n;ID%9vmAQhi+{z#3QRMwg|AqhjvU2NF`?nXXgVS~J~Ae{=19qD5p3y-nxwFpS+P;rjhck0 z$f>g<;_6hZAIHZe#Dzsf){f}fI>FHiv!+^Yk7-6+L}++?=(O4upc5<;N$na#<4wVl z(KrQ6!ErG!TeTa8p+DVfr%f@Y(5T@0sZ$f;=kO${otI+cVsJ{t$NwwCQrZ+bD|^w*JeeUf@j3U%&ggsgjk$d5p~nzVxppCj;Nc8 zRfWZb*S2msP~n($>SshnVl6c*z&Q{VYQpghj*f^x@&99n)li*|k%KOa!}NrsSW`pi z5L1lqM@_OGt>7@s%Fzk2HOV#GhYn4MGGV}n8V2Z82ywp1jaKc0+ z8Zr^fJX~D}BLUOgw8+}|v|fnG))cANvg$gsLZhN$!fKkpBrb(&Vr-$F7%~4b{AbUK zjl+?iW>s2Sn`Vmt-XWKo8G~uN}5p>OZ#9 zGG|+zjx1PbCg(i_ZqjOxEoOQ-&7w`1K#WjROr)G&vv3O6Y%hCJ549;KW~$X$R41>_ zOkmee{!+LBWD zSXU?2tlpAPZ~X8e$X#^&jM|cV-&bdb3Bv`=a-UT_8P9&KrhNUpnhcqIE!X5}3DIFP zh1cY;%D>ZjUAFEKUGuD%@C4lDSgkfDHX_=poP_nW>#t86sY(4m+%H(}J6?{%14B(o zOOjmEYg6QINJqoJ)9R+wIpUVXU^yXb3h^%Qzit@ot$-!}yE;zd`c2jy60D8H`sL~k z3l^+@8e1pVZ=udU;+()GvijOp^I%q;VCl@d16^*I@dOe)8@FjS6=UNfaJyOOm@}!S zNS)~;A~7P&kc-+=xHe9(Zb>fub#DMI5#}1pojq=7L+dJ_PzuT9~W2D9y)x&=c`rZ~O9sIy*6GLEcepw`LxKNYTS9V-rvlDp5~ zIAdB^v?&U^hp8_*Mt06}b62wg5icc#O7^rwc~-}@G90&L)hp9JtqEU@iHtU;$&rhn z6D@~64)YAADb$LJkBFEFL&L)4RslU089mdGV~4~9*_3z#qr!4Wj27k?@=j7>aU&ic zrK1zipK?!u*mBU38}@RzG0n2F;Na>FL~=y*?3y7FA2SWN$PuBj!FBIrz3~dP^K8?|K`-5tiW^96S}b`j!tvjA0|6 z8ZV^{eYjn*7#eb)LSH-1;q6m-uh1TX3k^s_K2yoQ5@PsI6aJr#402 z;e#psoKx~@+tL!XjRt!Nwg$q`$X zSo0j2B8OUz+I4&$Cm*@`V`&i?iBG>97_IT)rKGu7Vh5u$Z}i+?XvwC{2U4&e;SGOHEO1x(p~g> zx;Inn{X#F&FTc_Bz4QjXOVnTPrG8uLOP``sXacpz z4_l=CgS0j6K)X;c8bRY|BAriD=*RRc`Zc{yZT9JU8`7rKjkcrRs5gCrj-b!c8FU-{ zhW<=1P^TD9&>?gL9ZM(CX*8BDrf<_t^apy5es)0D*Y2RY zJX?K-uBTtn3$%#-P30HgU4! z#?yuLZTczQPmj~TsOw2>w;lDMJ?V1#4*igJIHmP`=m0u}#?Te?WBMuGOMjpz=>_^5 zZE;%H6GD^dM|3y+iJqiq>96z}?Qu@q3n);X3)QZd)aJjdw~JMK{Jco|-RY|OaEUqz zKgW~whPTvabnssqkDxRD)_5*Wqs{MXx*J{ckH*j2*jU>A0>5k`?eC_?slUCZkEBK; zjT_Pv^c;1;&*!C`hiL;BjoVXi`ZS$DL+ERC8Qny`qI>E0^bGx#KGa;-*NZwopz)8c zY8h?xpvFCE0G&wZ(rkK~HhD8{o1UW$-LzaA`T~uoOX+)bC;gck_&KQbqc@#` z-hndWd@T)$}h0srkdy&STWq>F>{LJOIC3C+$q6zfhOynm%uanoi%R zhiI2b&Ch;OJxYJ0AI{YDpeS_;-9k^&3-k`Pou%d5QV;qh9Ztv76uN@0qS^E$eJn=X z-4Lrj_L4e)E{N0k?F4o3LiHJ%OxMr@uWA10DQf3MY8ZVFzgHyv`!zjGkJIzCl>SYd zFV=eQv_BnAU!Vyzg)XJ<(GBzqx`*b`e0r5Srs{ehq8({3`YfG7r_&fZo6e<4bP-)b zSJKt=6Pitbqy@Bu-k^?V-Ogt8VcL=U&;fJ=9Y-h8X*7n;qf6*#bO+r>b7&qtON;1L zdXL&J(d}(RJ5qo83>{A=(r7x5CetM}gRY^Q=-2c+nn&+ZTl_wbjLU|!DQ!jFX&354 z`_N%@6n&0H&;+`GE~anMPw7|mJ6cYSrMi8MX;8Yx3+Ur-Xgq*EODE9jbTM5&neoOP{NqUz4K}+ck+Tcz0BXyyjX?OZ4?MDaF zp>!e*p%HX8olBGGoAe#}K3z{gqg!bf{ht0n&(T79nYLb``{hnM( zl19^b`YL^mE~Xju1NsU5f^Mgo^bC!COSd^zTE06CrV%unMy}Cv*S4rtbi@}LPp016HSY3_>Pw%Xlj$CMfHvH%<@?fY z^Z?DFf79mpy)>CuJJ8o@7Cl8T(VMh__Q&ttN&TU8G&Rwmsn>T}?pb<{2JY4LCG;3A zpnuS7wCz4EKZHI_gJ}|7m8Ip{>{q88P~+&wbTi#Sw;j}Sm+AFvjiU~!H>ty6jR(?j zx|IGw6LPeinf5uN@x&k0Bs%a%jh~?>=|9vrSMy_kQCCveJdF?1kYgIpp$qBi6Plhw zho91TDm_Z`={4$fTFZ5$p7|QzKcjk`Rj1HR^bEB-r}=9O)C<(+yv8l*Y??~9(XJP? z+_$uhzI9R4f1*bUH4eX|&Z8%&->;e;Lf8JL@e$gpNaIYJOJBRJ>8W%heeicpkEPy! zXxyI;rZ3VjXxCyb7fQdUBv4{ECJa#pvxsI8l;|4`o+8V{k)t{N|H zsWxe)Hgi{7(Ia$V7ftW(rTWk@k7)cBEvIfhHT|bYRr|-(BeeY!8egL){WboTHXp6A z?Q`m0T0wt#QPWS;OSF_$QrnqY&XKy)F0?20r96`Rh zx}Tn=rSul9q7JjQo#wOyJwYAkYW}Gt^^4ckUMcFFMe3T@)s)5RrBrpTS#9@*+7N$? zB;(L+rCLH`@q6Wx{t8_{)97-#hJKG<-j?z|(0qD@j(tz_Bk8L&l`f-iy|3lo!|&Nk zdtc)3*~B*ZJ$7+2J&nH$lDLpQv_|9iY3q+Q{__*{fwgL9I*guOr|DPdT{>lhrg!~R zUAaj;Ka_3G=tFAr!|IhB_3I<*Ub^cijkD+vzi3=RJ@9vS(!a5^<1vjJolrgK0J@d-JgND^ z=tvq$U!uEzf(7tpq&7=pYaaQY%J*Up3>uAdY zO`l5V(}(f*7;@bG=sUk_-0KhZ>#J&7i8}O8HTbsLutM!}U)^r2-*oU?V|8Q`weUgJ zp|!fVtD5GidOf0!pt1A~`aV5CFVYMD(|Xf-sdMO;12q1DPVv|HsR?Qr{bZ8HPLtJ# zsXOgTAEATkGxRw+g@)5p^b);FZ_wNHeu%EOZK&EQMjc1z#B1Efq`p8e;Eze=xb>f{ z4yGGu!CXy`UZ{SPqOMq^=Dn__ELLA!rk2rz_#-W8{~WzW+q|vm&(Mr_G~PvvsPV3* zkDy!V0eXa9qMxtQ^4sZYdWp_{PxIHjujbLh)f!*;Nd5R@)$0>Ah_1umRm%R1+^Cx9 zGTLanrtjaQzW$wh>ahA_j+*p?dXs+jqsC)?QL|5|@1Ie7oKwRK)b;cj-F9Bn2VYPx zQlE<&KSN{a$Mg*Syim(k(kYiTPX0|@LATQL)U!zQ2h$n!IBkf(+m-(Mn9j!^BTKxO zh8JtRiT*%~XzMGQ{|N0(`_e$_cvZ_yrc0=6iKah8O?1{ZP5+*bxvp^{UGk^KgUZy8 z=pVG4p1Yy>_BYk1=!bL%ZF@`eAETq_bovuLLI0#Z%e7t@EunX4gTFLCk*3mv^eFwE zR??^c)_OZ=+-;3NrYGp%)U87Ed(xS71O1&2x})WW(FAIyt?p|6tMo0piSDDv>2*5c zp4PihBP%stK;Nb<{?YU$bPe4_d)(Ljm*`^p0S&0q{FiAuy-VlduWn`hE~D$|xAYf! zl^Ql${vq0rK1)MrB#onU=^ONY`U%}cqinVPZM2wPqc^FeotAT^uJlprOZ(7KbSgE` zMf466LB`A7=BiB#wJB{+Z_|fe zHNSv{J*ctk!|DfgE3Keetu=o@8#SFaXsdBM`WT%^r_vbuK5g7i>ounioiu*MLw&rP z8bGJf6FoHjJ8!l7W9rwwY7TYjrEv%9NtgL)dgK%8`~dah2z5-L`Zk^Lti~TrRKJ+4 zeoMWlXl#V24X6`M57qQeQ`L|#brFpX*LX2qO?Oj!d|8wn-{!O{^`U+=pDv!R<=aPc zJtpTVik*7(&W>Jgep3#gH<`5tsP&7r^0mzHa}CU2`Q8&%U5^^2|QPWlh+ zvQ5(y@ntZwzu!}j9U3RogS5>~O~0I}_S>s&qPJ zFX@@;^wXMuJYT&)FVix*?2P9BN^jGV=QKTrCec;&6unTO|sbx}KWLH2)Yapuf{=^ftA*q2>K)5$$zT(?`=d`T_l$wz#F`I+UvmXxG0qUPM>Z zPw3|~n_i+<>52-i{{_vVcc{l*&3}>(rQtM@uApC2pZi*GGcBYot2Eu4j;1frb#@Mx z`7VbR(#H4_FU!17-Dn5uNqy+9Mq0jSWA*taY6QJZ$2w_x23=48rW2bopO(|uW}1GQ z&Ue=M2YQvZbkX#u=|8l8b4?GR4`{tO>foyJ zdiv~x8tU;F_RvN$GS{>a+eUq-DKT@Z*n%|dBq+iio+NhnD zE2O>KYg|O%>ZI|H9_mqgmU?y8^bNF(w(6qkgS)E7>F>0Z-lF$uLr*Q=n?6fZX)Ybt zUCX^pchNs-Y7fm{MyL1G*yyEJQJ3BtpP_>u*EpMQ^V9ezdWxQ>Mby8KmYX?1{hpqr zf732cYW_QPJ^hycL|6H1xqEcOK#lj%^YpR7n*JpHhdK|@^zn2Gok{HiG~b1GAEt32 zbs4U)2Yrf8raS0A^u?#Nd;uLeLgShAP1^ivO?RU?BQ-9kS4U}_^NeacS{+O$(>7x? z{mmeCE!{$Q(tR|C9;0Vz5xq`t(+2p`Kba4k(N;8Ty{2c=9GXk>=n0xn3uqxNqQ$h7 zmeF!rK`W`TLDz3j9jOy_p{~@8wxRCSgL+ag>P>yAAMHo|=@2@cj--Kf91WtAXb26b zGiVfzr6!t4=g}mZLR0Bdx}2`08FV#WL)X!bbTi#XchF3_hi1`innQDG9z8+xX#p*y zMYNcf(lT03D`+J(KIQSJj?{^|P*>_k+faAvK|QG#^`^emkM^VfbO;?zN76t#jt0?5 zG=zrJ88nKGl4w^~#&@7rwb7(Hj zqbF!SEue+8h!)dQT1Lxh1+ApUCLVw4NS&w)b){~!4Rxm;)RTHqZ|Y0^Xg}&thtT14 zBn_nFXb_!5LufdiL8E9aHPJ*mk0#L+no5__<#Z*@psVQ`x{hw7o9Q;XgJ#k_G>c}_ z9GXk>=n0xn3uqxNqQ$h7meF!rK`W{88IM18q)ya@x>7gVhPqP^>Pfw*H}$1{v>)}S zL+Efik_OUoG>A^3AvB!MpiwlInrI@ON0Vp@O{Giea=Mac(A9JeT}L<4&2$^xK{M$d znnkl|4$Y-`^aRbP1+9vA#^w$NdxIP8bl}25E@Qr&?p*9O*E0tqe(P{rqZQ!IbBIJ=xVx#uA>|2X1a~; zpqX?J&7#>fhvw2edV=QD0$NCmXfZ9NWwe}D&`N4-=JBVF)QP%KSL#OFPXPj6HTP^XcA4KsdOn_PFK*z+h znQo&yXeQl5vuHNWp}91Vo}l@(fELmsT1-o687-$3w2~TIc>Jj&b)qiRmAcV3)SY@z zPwGXzsW0`T{ir`3LWk3lG?0#?L39!gq2Y7}jiRyCL=)*ennY7*DqTvK)0H%XuBL0~ zI=Yc=rrYQano0N2ESgPoXfDm8Culw`poO%E7SmE%M$2ght)#{mJpR;?I#CzuO5JE1 z>P|hVC-tJ<)R+3ve$<~1p~LA&8c4^{AUcVL&~Q3~M$uSmqKR}KO`<6@l`f^r=}MYG zSJO3g9oqvf=MR#Iatk3V&!PSl0E zQa9R$x>FD8Nxi5y^`(BaAN8k0=x{oc2GVgfh)$v*G@Q<$Q8bpCXd<0QlV}P}rAz5@ zx{_wl)pQMAM>o>VbQ|44GwB|hMYCxR&82zt1kI-fw2&6jVp>YeXgRH*mDJeA<4+x_ z6Lq1k)Qz^G?$m>NQZMRFeW@SqNB!v#I-HKAfpi=VqLXL{4W~0`6pf`Onn>r-B$`4~ z=~B9!uA~`sHC;p3(T#L7-9~rNOuC0=(QKMSb7>wuLGx(=Eu=-Xn3mEqT23oyB{ja} z@u!Z|iMmi%>PFj8cj`essTcL8zSNKQqsDfwpE^+&>Pp>c8|qFys3-NJzSNKU(;;*? z9Z3V}I2uGJ(GVI=XV7(fb^ABc&2$^xK{M$dnnkl|4$Y-`^aRbP1+rmasfi}ic{GWp&{VpVE~hJL23<|p&~rw2YS13R+2xVjh3$NS&w)b){~!4Rxm;)RTHqZ|Y0^Xg}&thtT14Bn_nF zXb_!5LufdiL8E9aHPJ*mk0#L+noVPEe&9}S|h)I<~M zQkp?G(@dI6^JyuqpicNsT^ToS)QkGjku-=#(L}nGX3$KUPfKY9b+Y05s2BC4BWVzg zqKR}V&7hlUCe5Y!w3Jp*CtI$cdQm?*k_OQznn;(@47!PEe&A00`9XcSGP zOKAq(OfzXN&8MZbf;!P7wNNE$?Asfi}ic{GWp&{VpVE~hJL23<|p&~-GE z?x9&Uo9575nnzF2d|E&YX%Q`^rPRQ`7b*Q=PaUZfb)l}*jkclg)Ps6bFX~Nw>2Nxd z2GVgfh)$v*G@Q<$Q8bpCXd<0Qm(t~QCC#W#$M;v;;yYg(;rpb;4RkNQ=UL+aWvK)3 zy~+|lj_(~7ui$%t#rN>Nz2YI-1>ch^aTtA4kmNB))8s&5#{P5;{ffTUPV@KBX6-fJo2tg9sbACUw9Px3-UHvW zCF`F`{da5JZI8MS-{&LwPvLuX#L6bN7MtPwWh8zS-xp&^Z?Aspq2BGKCJs^y@O>*% zE*#&3BEFZP-lZ*9Xxy8&!uNbgxhj0mhWIAFk3#(XM|By#k3!-N^g8}MO^KV}dnv?8 z_&y3ToQC1wf0TG5y+bGB`zj>e8UG%rxESA0A@;=gH;A3_JqY3p=hfTzeglc$ELKae zs7*e!v!r{iRokssH=a>1;osAgdJ9kDUloAc@2PJ1cYG!8`;Ynpes5P|uf6y#eE6Y^ z!$8eO4V|Yr&G5kWtFU+T-WZWV)(VH|z#x2sf(3^Cc zjANvy$~cCVGLGR(GLGSV8OLyxjAPhT#w|>u*J)Q7uSgG}tLQPhLB=og3uzY_$B18) z@d`hno9P4iUP?(f$vB2j%J_v&GJatizRyhzk#P)*WgNpH_&z6bp^RVnl#E|E>;W}_ zrqc}C-<{>?Wf|wF*S)v8RmM5u8#2ye9~tLx4Lu~|9C4S~>I3hnlj;9tydytwz526^ zcZp@Z!#r9+m*r~u9$H18m-7MTqvSk*i>Zx_cf?L~89h!1%6WkNC3NR;jYrFQfb{kF zz7X*y?I7m^;=kz6_#P06Jqy)ta(*D*L>=&bAQC?!=LvNBNNpwO3*zM))Dif81BpMy z-{p%>pT&6r|B>?rhRXQ@yUO_jFUk1=edTSNr4p%_WX0RFBc|jWNEEK8wz8sqwas>OT5hCyn3n zP&d)7^v|xEZtJN!(k|4wyQaHQclsn9M#s@;I-Aa?Df9_nZLfDf^-tXjwx z9XSuNpTEj^2p7Dq4%n<-{!)$pTD?V=%lV1&XD_I~(dPKxJ4tUzbLff+OGxe^V-$-vO=P~r8Npvm!f_7=A zXVG~272Qpb&~>YE-lBZiI@Nolnn{14pKsFi6DS10M^E!DmFdpe0<>ZFeCp?*f~y);hoR(I1ZIs$($ zCiQcnY{zu`y_lu_KI%7pHGR_vjb9q6298#jL8*6w@skrY-SIn3KZJiT#CDruG`7Kf z0Dp8*L)_FkbPfHMo}hWHwA^2N)e3wMs2h-cz^Si~-E(VuYj zMYSXT?pNYn_`6lHi4V3HZpg!SzK8ooxsQ4T-h^@@_oi_)y`QE}9-zMVq`H)@9i;IV`qE&H=h4OV z;~|>#?@JLEV#ZWvdoyYxTe33MrKF860h zf0Bkt|0B+qc3>A=?`_;L@8bA~>*fA;ieZe~gM2ul7h>F-r%Y9|!qjlNt|C3+L)F|6 z?IPamqVDgY+H_P$k5>It)oGqM?kIm!o-g1Axo?7B%Xtn%o>7+!M*H};rdH8&Pifrp zY4rg8ZIs3xo>hORWn(lxHdf6Ur#g>U^XO~OYaBgUb(o@d3su+Bm!%)DJ=>)ppm&6N zmA0Oy@pZZXK>l5mT9lyL%vJ{`sx#>~wATVnzr9#pma10CeGA$jRp%S(u$$_Fa`k8W=zWbt2$k1Utm4!*Q;OB@94X7AAq?l`3BWAJ@%(*7#BpMgE({smq-r_Pq=9mFMaKLRVM<8K@>pjZflj|Lf!gXETLLc+jIA)kSU(UzXhOwXiLR%$ixs|;gyGo-^5XSJKmKg$iHA3Y=UejM)8HmZF$ zsqfLDGXEgI>*wlix>BCAknVu*+ZUthDtdmWrf-z_3i&N$zJjyqE!tI{$B_Pj%vZ2b z&Tn{)E|TX9#OqG0jeb?nu0=l~y``K#@bDMv3)@szIX{qoF-vW{UmYUn0n(rRS=}l3 z>4=@=z8ub#@ef!1s*aKSTf|lJybnK=>lrMQ;{uc9xWJWiT;Tccs#{NWyNpYu&wWhI zqeBBV_WlmnW#nI%9ZpJ%`)=}BoH|AyXY>FP^wt4HY5 zvR>q0rFk-55c|mZfWa5kn2Ty=5!QqB%LmY}@STHdn#@;-on^j)f5>ry#q!(*yPZ&* z{-HiD=Qq+5$EtzSkBCcUzwvLkc}jmlv+Vz~IBz6|TcjU)pm`~=^T`&u|$o{QjA>MQ+;_+=Sik71stBPuj@md{C$?j@g-z|rzK3GC*K^9qJG zMSJi=`VY;Mc?;=fw7rYQq0QB0^cHn%q3KUin+G(WE8`jM+?VZoKt4}U+n&UBARZ^< z1Kzue^sg{}{g4iw<#QGIN`|^l?lTa7^&z$!e(8yJVXV}LP3@6?7UPh9+JLdYx>d#r z@;zjnz@dMr>G=LPiPy>X6ds`d5gPwW$H;XO`Mc;qd_R)JP4PW8;uiWmzQ0D|4f6af z>7CVXUDUT^yODlR<}3L70JWh!2O;(uu0~LYr!`wTDAjmFF9}F_tH-=UdA`=_+wcwERy*U{wc=;&KswuKd0tOJ4g?aarmuaL|#%y$@4bi|4BR0 zUbYja%k>Fvmd`!l9-1xfAf6?d^Ur}iAG4wv%}>9?d_JFHjA z!;Nx&!I$N_4JXKc!T@Opj+Xjxh}4JcWn9k1=PFVkKEFmSpgW}BkbX$UAADN+OUlW( zg|lf78JCEs)5SDewj1dkWFCdS^e+8I?%$A}FXII6k^YAJWxKj!d`f@7Sv1cMke)yc6$MD`jHD20Byq4aT^&qa0^}rBW4?HdF>0lUd$^OHirT^e}vcE7e#2lk*0eWc%T(vRwg& zF;I>-bdmmrL9+kwES)a|?`NbW#0o1Ii=Lr7b?yxC4!+Gv)pl<=o}Gf#*M0o#lBF@$d3^Hnh)DAEsStD)q_L z{DJf<`Vqb#T!}x(-qd8I!=_jNdOqcZ2_?%YK zVOLry>qGpK#O?-uPKy|>l>UDT^NhrBr^Mq895BQ%TjGZdV}?i#P-=m&V53x~* za!+D>NjW%3`Uj4oeo_u`I~iYThT$*A54PH)J}1vBh_}mg3fxcg=>O!t80kyoc@eIZ z_TU@RUK#FRW&hwZd0rZg^~>)8!0*ngR}5?q;yw=QHmQ$zy_D~U`BCo2VV;Zw_<^h! zwwCq6;ZhIANb1mmK-!0yk`719&vByh@3+f1hGjHB`UUZNx<|$_;)&7^@D+MX z#xvs1o7JY$KZtwLvC{8|zofII-w=N!+YLMXq`phL$bKN*O~x}kK%M00Jcy&{dD>lm zu7mW8@_Y#Yq7!6XB5o`F2%Y6~ZMcL3Pr5v@F zm50^_lxJCM5ChkuphSwxMi2GaV4|tyX%l;rv zm;U(@$5+b39WtNC;yID_knw}~IGro~hqzqI!*F>%zGoOYg=$NA-bFl@-k0ZG#CzrW z6`FrnOaD+yiq*L#YQJr0ALWYgs~zON1F;{il=UJ$DBJT4?(>V(Vo66lRo3$Y=6AYI z*7phS1E`0r7qOGSv=E;oNx3R~pS0~PjI#sqBCa#Cop0cH z%l1vj{3So1f-~g01jopH^Czx5j_M#9D}Ijar}z`*Cou>=ZxD-ce;|H`c}@JtFdmZ6 zU*TXk_2V{b^LFYJ-5E={IXG{{$%YXrCgOT3df`4%oQU(1&KED^`L;3KfX`jzK5iHK z`yq8Y-9m5Eu@7thVc8y(AKy}SlkGx$L$(W!Zm-^@x8=DP>2@CK!?N9oJJBbl{gHTn zp;Kf%i1*Pe^qj00>5;Ntc!J(Y(u;dY1O=sOgibr))Rc z36|}K88oh&#ye%Zd@&!;A7pzF&z1gwcVvBVsnml}otZDs{fO7e{=+UZPeUI%R`&A` z+*e6|!ke;x71$ryKbS3EFpSBvo_^>zF&o!!S>J=W@00yW!Tcbe!}yf_fj>#y6URs5 zzi=MQ_P}o>9*fWUXkSl_uhDkW5B>4`akAa;y6itJlJr6Nd`$Ka`bc{)T=L<1+F$bX zaXiI+_`NA9w-EEUXflkEVn@SRERMnbx#)~}Pka@>?lJv3-xiVfg(_>MlQzKz#pk*b2{Eerl}D1BmncAnt_gQ$P3vwp-3$_=J2ubq1dc zNenm0=b9e4?+Sv4kiG}$Com6)uNj8FcpJ~H;#J&_iFw#B@kcyYh^cr^7yYpwaT4YW zajRjN#4wzvVgx=f5NBgP6Z>Mm5^otss<;v3N!)~f5;F{Ajkp=(N!*L;l4!=~1!6kp zcX2oFL&Y_ix5anxJR|;!`%2Lj{UNT!bH5ma+h%b;jH$ahhQSip?=z#7}WwA{Ju)5P!#b5#L3Bh=b7|;(YXn_zK30cn$q=&%tPrh5it) zX7Wc&&AjShBC=Aw)Z4lS}Q3rNG362TO-I7-?@+B4g1plSA>(coQ`7$id|`FDYOA z1`01cxDRDfHR)T&CWsUK(vr)iUY4nKTCyin%=R9|uOg+SNphCGIoS(IRmajSrnxLS zmT=`zvedLm&bFU8`C$5vE+`=THMY1X-Yh&AtnH`0<))kSVA@+1`mRZOvZP@JRmZe; zS{sjp%k5kjxi@TJnD_T}T{Hx5(3V+~<~PdpkeqR;?voFW&wLQ=V?Ak;9h2`lzT6|t z=>w^k7T{!dObc*HbNxVSn_Yael3#T-Oii@z$P9O%ENtj_{NzolC%@`sq>XY+@Jf5L z5DBPgc1a6xO?$IQvMrU}3{$hTg_3JtD5*YKsBXUe+ywI>bh=+sVt2!NQ3o`al;~+B zJh(5fA$|}SP$cai4#*NpT+oIbcs@K-ROL+Z*W_@_%!_B|qFSAB;S_1;=fl3=fCO7lt%Oh8@;* zFfCxus@qlO!#!TzlRl)qZQ!)DfSc#+J^W3rn}FQr zo}6PTmYnT3 zaY`_IZ>;$s#=i8K^P*;!-s^58v^wnXXz4$HCrkhN;}^;>#?i8oW~7a^e-S6aq%IB) zM$flwlaCo=0*h_d*c-{&F1w{i%%=j)`?1&gotMfUzIs!7A-~sh-GAA4?De_HrP!&o zfYMbq`)}XhExm6(-EIHE{eL;&os$RZ7j&*bmHb{SrInf*38j&Tr1R0w-S%t2^A1KR zy6(=IBeliGmzrIr5p?|ptK@*vZu^t(HZ?!(l0K+vzFqpDTQU>|JI!}Ye|_aOoL>#n zUw<2#2Rj}b>}iu8QC{6u6D&RDl9bpDJ(Y^hEuQ~RRaKhZUYBO*mH+CK542AX4en+W zDBaOZ4)B>*|3-KGje&rUC_gi+{M>kS$KPqA%FH>dZr|VAPddV~`xma52fIdQN%PoI z$utjko0-+Gdaq^A_Me~Vo*q##af;<=VhfAA-p9u0Pn>+^DV)?Y0i?N@5Bg+b25K_4 zYK;90hwZQeBW-f!5jlItrnyxmI8`M$K079`YOLdbCp%dsTgtg;LYkxbGO9i6il(aH zyIH+&WA)x$-n*DD2Ud;o##@~*u#+sRT!TJn89sOEjYns@%%hWU7MsZ*N2Tl)C&G^1GN@k4{V+njNb)3IPwdG&a8 z$Uv-zNyh8Nz8J1phfG?FvdouFkEAs`!Q%HqdFUyf10F=!ogTv}c{r+s*nM zFxi`rmfXOEV;<-<`CwYp89I%kjNRm_OOg^*FJ-(BT2349i28PEgDNZsH7&q#a&lI~ zLIGJ?M|Xd?4tEIZt{DwQ%uhl-6_zk}YeqP8|MU zi6fcllU1jIz?!m|wlX$xNl8MV1!Anpr41`8F2R@^tI_02pDc8<><2cqE|#n8i$;1t zMPPbBW#Eej8>l?8O4f*J2uJ&0xfPl_!F&qCyQ)_){-&*Z#cAW6G{M}q9LeTh75M+! zQhEDeS#>#_9=O!-1WB9hnl=ho7DrSyPj)hoa-2B1~mG)%j#@gS#q|U*-~e%RH>OrEMun? z4)8;Lm*W=7h-=n&c^PzGk>$KAtHhReSTtjnNadRB92~`iep&|3ZMdyMN z+ErKViriZ`kk+}T7UuloXjCyDG9U2CD*od(-nKWF)$9#M1MXUI?N1+E)&Ktess*zf z9S*<~8ZNee$^8wi#V~nT^-KEr3bg2n7OfIrc)kR4lWtQ$MNnEmMfI62*LL&q;=|Z1 z8O_dLzg{3sJEFAo&P1!J58JTloN09RN*}jsA8Y&!E!@tx>_aE)1M0UyeXJ(vV;N8{ zm;)S-T#?~yo-C7KT2skBQgx|jLu6|G;x1~M4_S^p)@&~0sG1-*KWPb0=6v(b;?}yY zZfVJK8(5WAi2s`#n72zL<;@9>z_KnGcILw}urc%&WhFEnQ~WtU7u2^g?CDkhrm^$94&sC7=k4Yk2;a8AL~qG8n) zeS293PcIof&tvFV!n6PmnI5W2eFKJra=JV!*Q!uh{^|IWZ$eDs}H%;-$N}Aiw zNSK`T?FHaVT)6M* z6`|rx)|puq=O*IJJ?<( z>i-oVkqrnsJlGK}*IbFsf%fJ=OiPZF4@-WGm2t@5&5#CV z%sB6IOb@bIcn6;+81tWY-eu0(A%~@;i8&|v*C+QEHb{4Jao#o7X0SQ0a~8@ZXC;}6 zlJ6{--^!fR*}%hYe$cN5vXF0!jpiv%XJX|D>$dNW5NU$q$8I<&dk#N_16gPsGFixJFY|dc^ zR>eA2c^AKdA;yk7JlG$5WjTjmz%(gsOc-k#zQir*URTqD3mlT}bu4jAx;N3(FzH@M zf_I7S_Q`wYF4pHr$wPi;6Po&s^R`KNAl21z=)e+tFmUJ+SMQW#3BMh(cQi`ul8;nP zH0S7LL#Lq<+o6M(G{bJXI`4YGdDs3WNlEygxF=qd|C@?5&3Tt4apDx`T`MGgayQG> zcmgguV=+Tuo+z;$JoG6Hu0>h%TP?9m$&%I{LO;}Lt-$Blq9ch&wsYRKT-tHo)qqWR zJ226lC!3XY$3_PNerXX0?V!mq>5ko3wh1LNG09X;GY*0#i^ zUj)_=knk89vFXT?`6V`kmNZ8H z>RN3QZY14#B%$%3!vO^t5mhBklkW7ud)bTx8>Grl+@3~+f<(3#@6R= zpQ@5hnT?S*^OwfAe@}O9?!0%@_2etw=AX^K?5}EXbEx_0!KkzZhw=b-Fm?QOQ;UUF zxw*Mc^RgE>F1-H(-p<~AIH1t7js_@R6;PNqs&I)bdak-wLb1({Nq2jiCl{N#mW0<| z<^RLj+rURrp6kQ=F-dmA!fe8V3q%YW6$D!%w6bQ^&2F-ZU@#E!0T{GebFA1FVTJ_B z$KoV5Po{fnkG8cvt+lT`|KsWLt=3vVRLBOJ1?;f_tR?~y5p=>tyMPTz;AP+Ier7fa zw*CK3e#*`~^L)+oaXMUE1RS$P(EZ0wHN;t)1DgYRI{C9&2C49I-1nz%_=o< zyDc>hx>~038JLuR*k24ALyQDoMMJI*8z#aTRNhXqN= zaj6W?>C@^<`qGHz>h@y?mhD=M&fqXU1gRX*$Y;lUtEp>MCl=&IznSMap5}nGxW&~eL9>_bnvROc%MKh*b0f2!cI<$nPe)HK9Pg#Ns#BG15k5StyFNUi zJ9v_^51_}pYGv=dO6|B8BRqjqqO%?+y%(rMhXvD=SrRWEEk34Zg|&tm-<&i%+j zB2Ov{tk@x8iQB`r*vTo*uGYg1bCi!-ww-M0yv7pyC}Sr{*3N_Ms(6V}WfiY7Y>$03 z#mMB0q4wFalNsASqB72dJ1OIMf$NO|0u3=0`k3dULV2+>*{mo3aO~p@*5&NmiDDLK zY$w=j3lmwjz@ZuREDe=AKZt!i#ksfjXv0k?Wi-Xheso1yIt7ffzr_{GrlU#T!<%Dg zCK+wB9$q|wX7dj_`&d`1VPI=UVO>JW3^ZuI5;c2c?2N$6C;maR#PslH_1jR=5&K9q znu?tiVjnx4F(eAkKAHi|?(Cup##^Pe!^@5@NiG?IVH3A6v(m&KXvq4~?CE7RXQ8n< zyXqg#nSLYdjaCk7e*tf%%8C2~YVDx!tStDBN{)C2Q9#|st^vVbz1CJL23cr70th=Fh-17(5^NGjV%4I#pv6w+FBYys?vRCny@d=Gz3(?8Ph(c)`xK zJLt+?+g@s=3rBmYt-aj7mvzNP(<_yeIOn6D!?jlIDUrA#E;Q`NM#T18#wrJQ(IRE< z0U)Z&9|DKQhP6FFk6CR3Oi^4e(3i6W&x3d3L=nV6+%3%3{vEHSRt}2WdqFm)Ta|8G z>|;S|qtr6Z+1oCN1#+UX%cwuWj{Nk(#cm-3IG>9Fa-v-&Ojg+tarcByh}Q$oP10oEG>ikVW*?lHB0pl1)6!*<6z+$yBeY=E>|tTe3zz z8xQlHG)_cg81($3`c+ZkIMuQ=f3LW`Fln+z`Fjf?G@ar@TiJG)xTEe0=_{%YvSUD9 zBLtX@EyZyHOg$v98LUviFP;g^q1)MV2U{lS*QsHMV$3SpS*Z{&RO7x8wJ*+ItK#NS6!N?26G|ErLn?XJ?(`@ zfv2fUDIr}A=CQ)OmHa&nTo2j>LrUUk$(KGE= zyISaFc2oag!RDEWRqgE5AVv{*wKFh~y0WCM2v~E)19`L-cuu~y(I9CoDuExlOws;J zeZsosYXyV5slZ+T-L}KgjY&CMuLF5YTsW`Zz0HL;tzqw}s{v!k1KWJhV?^t(W(nn! z3{XOGdy&<}&K?<7`mOpRV~Z_#1FB&QOXMF8UpUW>=-Ix6bUGTc<{#z{C`~Q;Db|_% zNq*-VzG!LO2}+XYC=Cva;jkuUbk}PtC#} zEziMD3+5_YpkA@ccI-)Ii^C#2hXSY{w+_Ih<&;}_JjWvCU^`gljCgPX)$@p@Jh^dh za#{oM2y7^EHqudRt9-hi(Qo;$loj zN1Hb2>6}FWcqwHoZ!KW7X01qWFk1syz#CM{J=C?6Cx*Igb&%8L$+gNsels9co(bY(bQ_5gsn2MwfvsezvuHwLjX*I!;#epjCfxVj+d+LTEo?;Z6nhwfli z4lKQujyFk4-mdT9@ROfzSIHME*(F_#vk`BBlvyn?gjNi?7u>HD{n%W8P zfSLy|=2yH#s;j)CSLP+QdqN7@u1Vn-tV>#>mVzS4fNmF~2l6sC=q57HN?qzwA{8Kt zZdT~_O()s|$b8(jz0f$FE!0cE1)!ed}e zZ1xp7x;Zu)r-Z~7}5oPxAG{M($VUQO+R zcD-v9GNm0C_!9^+)O5U9qaXcNRo3kFIr_DbOnml@UTW+f4=~bR4G1z-z6C$%%_c#e zjS727{wdZ3wK!2w;@ud-!btIdDdbhzDp;gjCX6Oa%n!M&ylV_c?yczbuV}HY2GDCz zHjcnfAaWB5lX{@WGa+Go7J*c#O@#I0aIphp9$UZ!rB9wXAa3l(XXtej+Hb&9>ev5@ z<_B{)nQd_MYZi9tKwxRuk|l2THG0lF$@|Flj$<$}9Ucy985;FkmnwVg*AVnO-o9Fr zlYdyf#|s1)!+PN?1}o}$s^-c$Ws8`NA2{^5pgtElR46|MHgmI`)#v_`#_`HnV6{-S zjJ<8ay4;$2ktNs%S{B|B;6DpbC=TXu4B;khd_qYy->V(Rfc%P<4JPRY`u){he&cw7 zel>>26N)4^@vs*QFU(oa z6ssAAr4OmdXIjUnzZ$$8S1{En4PJ|Uy&4d9eF1hw+dM$32W-fds=Y2A^4@7-wrEgb zQ(4HZR=Deu%e+zS#E?54em3xmFD<9(WR2X^{|*zT$P_X1nXgyFL zk4Y!W5-^TZdhI|u8mQ%JRGho~z0?(@`A5}25qsYm#|gRm(flE$Gg*a0r2@ti`ii@P62{W4hE|oRMd@y(J4d@7FIup*rcsX& z8Jwhs0^64KgGa!w4F$B}6By}DtN0d*hhR;H4H2p_en_`r0jp;iIl#E2XWL0=04$Yc zB5@iL?Pw-3VR^=Brba0J z0d_?irr5(IfL$TVQ>}7f!XZz zBbF5^COH4FHu_;Q$r)DDehDic061iCvF&H*aHL_HMM?w1r#E8I@(<(#haE&Z4pDxV zVi=_$4WWX1K%YoL?7~|1(TQ_Hhc+vrmJKQwEi^vLhy~*lZulvP$z)DUOd;J(i7U%1 zR%pRSz5*l7Q!G*@3wuG%yTjA01>r`V4BU| zV1tbwCs;NO*u&K1@4t^;C!cP|zaY%gB>fn+ZyHOqho(%Zilp@hCm&{ed%1w>1gs-N zhJOzWzTuWg!(?;~vK*~Sn|y6#t7wsP)C#|H8;GnLDw-53g$lMubD(jmJ`JExnz@@% z11NfO!$Q6bV63A;=m0s+w3<90pXCWz@Q7=c_!N=E6lri;q^e}V6=}${$Ym3PES=M}1M6{PTh%AR>RmYavO>P(vQP#Mvvmtzjvd-9~qJ&>ipYIbz4+u%Q?PX)Y)i z8h@CA#0a(kL`+m1Td%~SuCfc*Cf>;7=s>m_OubVEW~l@9fquIS>V?L4Q}m6_b3%92 zRnG}mW?zf!p@P|sr_Biki&p!>YoKw4v5K(>)pCJP(?VacNJ@`9UTTr&slkAr zd>aJWy`0H_AE6 z7NZ%$7CHa?Mj9Rf<*QRSOb2xU2$ZM;T2KpRj-uPd9s5~t;f1r}j%p8kkL?v-?u#z7 zsaN;Itd(pPFXIdeSYe=KM>26wQ0o$CN0kE!e+SFPL+9G`I)Ievkp`PZs*E(?2$?VL z*c)}(I;_CSCj-C(Q)xgBQ=*kHQ`4S+0EIH0*1dX$x#*~bkP)pCw5P#^(Zi_U4la|J z+&l0vUdS1P|68pK%vz0tCey~k0+7Ph&xs~*mAe;5XPc@wzwl66|Db7MhA6l z`E-NVlfxWS*YBiKwb%wQ7Fe4p?g&hu*T-u6qve;_es%;P+IetB)}Df5tr^|yuVdlq zY`D%Io{lRoOlbXkXK2zMj(n@gdkvShmJ-5>6 z4m^jIN+WE@?W7E;2kqF`!*wy(wp&Zz@_Q>O-J>sKq6Z9BPP^9($-bOTpagI@FTO#Eh!nP_ocFw|H3 z)XIHO72gJ9%W~|@jx}lO(tx_r4~;b|-p|UQaQ9f%;(gkKnE$p;v5k}`YS@EfrQJa* zOl*VMbt;wxD}(MdXvdN~0@lJ_wts!+rD&rKh~2(A*5K+`k=9=Mr;ft(_Tm%b_7#+` zP>7v$ID1f&xT6>KxCw08#q}lcDVhTt%ePnj!5{bl#gV`AL^P)cW2G_R>&5+wCSVXz zjTO&U+wjj_8L@tcb8koSpXj#-s}{DOXY_l-9Ty9l1{=Rq(3EKT78nrgsJI=P?;w>~ zL!~!DZQ!6X-F41BX^ObxJ#j}Yy6P&sucvv5xT70euAsQT<>or8e1^SU2b%K|4(U2y z<(c{!IRESBm7Rgj${AJ0tA?lKcXp>+LFs5Blzj_R!~pW$20`_*s?wz_Tm%59RO$a_ zdl+XlTNhx<{U%W)#vEMRrFb#zxTF?<9hF*qiBm=J$ZAlCfGKfz!(CH(e7dz6eDKZK z3!L8I096|9w#Y7QM32_>IZo)%-D8AM4cx7LfV6n%Zdy?$2Wcql0H$kOV639r)yVUB z$QmF9%*6qgSq*!*M{xqwtic)Ei7a3zXceU>oM~7kPz|@@ab#Qt2m>#gbZ-XWYc*%k>L%T()(At+9;b^XXc zX8gjJF;D^*mI5dM7NPbkA26tLH46qD=TNiTvWI#huYvB>Dg!atoOa`AjWpb8mBcu>Thwf5O!coo zR))1sj<_dK6J3@o?sz8j5+18X%DvhFn96mB?y#z%Jhfsj1imU^Eu=KQ7>pYKFNME9 zR(Qc$mYym`B08<3L4g_sgnAnk*a=lq?v=AsZKE4l40ofvxT9im{sDVME>T_Ct}e?1 zYrP}%bxE)uoVTB>t*ua&7*k6x$4<*>wJ;6(F_+uS6h|$W9`tR7FlQW_$l+Ks1=AB>^ac1Vh=B;9}{(btH%qSP9m3I87G7Za4wik`a`t93yr{ z4dl|%Y+UBiB@Pc5Q1zw#8iozWVK?<${ldPq7je^f;P^);`j7WLSAR`k(`D@N%Z63j zrM_=pI?)81w963X)yiSrdAv8ja~FCSF_;%(I$W@%(w@T(UcDNM{H_({FpGfM!g0vr zcCyZb7VJ4W=kb}*ZB)+L19i>_a<|C#pp;gpEX#qpC+&K1M=2mDc6un5ElrP{4gjW? zY<3dT3(8ByU*g?*xUPpZA)pVD$N$9w)bfc}P%H7WrMc`ha7^;YxNw*WKQ#CfV}>2- zR+oAU21H%vxrcU7aiTj^XVt&au>xmlS7bE1BXa+VG)sHo=Tcf^bd#J8YWr9Hy2$9Y zvP;?Wg+-c;{1&icqub;(weSlVf{ixGPPOouFVSpc-9v?+TfvbQe$m#sWfJD+$|4Q0kW63yfychuV+!Gi*l7;58+c9N(IY3@y5u#^9u|HSE+iib z(RB?3aW`6pwxkq{w17$XtIHemhX6h4*F!5L_{xRNv!WhV&j5A5iv=CZ8Nqk91Ywwc6z3+|S#PQXw@vm97lseR{ASA+v#Nz^`C?Y_ zFc|I>or2^L-O!*A*W^I|iOKwPiC6&9MD*WO%Bw{x-g zTHv5(+gwVwGiWQeSYEMj_R(#ou`^#0Hs7@Eq9p>y&`zZ@UB7xL=GaLV8uHYkKL#N0 zVPD!04JaR3qeX=#>Il^?JH0tW(Oic#Jp&5#mrlc45!&EU>`Rc@W>-A&E~=oTUUx^A zCV8ih^g9(wr6tW1_}0dFIl-zu{(uD}jW2d0Vqkh_j}bHoKf>5ez-wNT-ZVf^sR%i; zDYNZxL%Lej0|e4Ef;VX4Lckz~D*?y|!7k#C;KEchDC|-i7J#&XwSbXl$}22oSM7q( zT&6)ZBbIDO$wD723}8gn2HHTv|(9WLN+%LTO}poZP7sN+(J((NhO>S{c#+PgzOYbtxqgsoQv zB@F2nfNYQL{@21+_=Cs?H|}0?Fi(s(=S@FW`eWR z^t=}Zer45XzUbgrHXS-!8>}rzrwUQCJvbW$$2$nm9|FH9fp-+UKrI7B#9nc*6#}zP zSmPX`hV6;i+J*L^rv$o6Hd^pUsTN2RLZ&`#MqBEoy}ackp7yb9ud5;l&;IOX!qqiKiRZWaHUAYQ+NF{R_X7N+Ei?qZ;nf&v>@9Ak}- zDGb1};(294_UO}bw3VPqRY*rO+CIENK|$jglNUB+e7FWlOG%e?PJ00v01)Epr~GOz zu71F;7T}5-i`jAUuRO_(t5$yH#nt0JeH-_f9)5i@Kw=x7$UQK{!Al5WOCUdVZM58v1tt#1L9b;E>ywxZu>Y1m&Q^qwJ-w2?$fy^t1YFQbwR-9*iC=14iD@;b*gVeA|<9U&KQ1(Lg!RJDow zQZq~zOT{iY4}y1)(}w~!Fe9)N{)sfDKHWc4o~2Ln|EzwRPUyEZg|9agQyV+Zl`t) zX7E)jj4#r47@9$?I;GpbO---cw#;UMbStnP!%!(Q`T*x~+mFa;`U9|0>Bx!(zv;Jb z{vtBkD%(3&fY*OQnpy9PjINVzAU3~9&yS2M($^!S&&o^m*^!G6iO+OJEQmyx^JJL({s$&J^Oz zdGu)De!>fZZzVwdIcT74bz7u`z%qSPfn`@}z6wE}!}adZVo25SD$=PI!&TW~A#5OA z1DrrF2q?pukTv&u^*z|=FyemPZIS0w?jUjxG8<{Sf-tCXbVF<19fZ;$$O{KO0T!;& zA2KWG^6LArMDq{4fyP>tKPSPE`#xwA*q@;f{-979$&@mbPA_cFK50ufd{wPlwLb0z zjL2|Sq5E!h7;a7A+PY!%*&RSLUy#ej#n)^wrFHZPEZXhBb z;Mn*rXmmV8$cQDZTsB|q_!wp6I;if7dF886mX8-KN?ZluRn1g9p?!C}c!`oUi@%@R zb*4O!Dr&UoA1^ZA;t8XO(s@7j1&*Dll!-O1mb!g?jSfgf!1x_jXvC?7POtt+O5jKV z!9+*Ecgh*Q^8@eTUBn&bwxMpf*rxNFkZoumZpgz;ISB^A?duZTdT`f~ew$rv1FVJ< z+X2W&`%g>;j_g(h%%DSD4ZE~w%%tZjDNL3^VVr5i7LcC=aa;wq6oJasn?O(@cB`Hx zumn?uC0ZpfENGmQpVS4UtPJKfp|fFM{JV8K#-QfYf|8o(K~=m{?f0@p)= z&`S%=tvnZ7HGjxg?v^1KIIX(ZTqcP0-WuW_#(|#u=fVk!cw^SSre?VRCmsMY)MpD#0vfQrEDhJ$OIj_Q7Cw= z995d5+9206s1F^gUZ&<^ARK1=Eb7ea{ewr@1rhBJ5~N;(5g z`<~HaTy}=gRzZ!>_&ORK$4sj+mVhd1-QbL>)u~w0E4bC!GPM-Axb`o63$bpgKwTza zz1^^WZ)RciUU!eUJ4+e;YBP>)U$c(A%5rv+2V5>TOo=rHS2)R8&@8l&H2N+zOs1vQbz)uyU zYPntd&bI(%?EWSdziRh4=qGLWL-+}GOl>_Zw$a$bNJiYJeUOgaavv3PvUHx`(`@wA^WN#r&-Zt_q{Q^#GmFKACb1}g)#XY4tJE>VX zV`ky>ULW(qQNlf47sTBGEAdySE834}4Aqe%XX{bP?SFtgPakOZ?4;q-v)j8IA4nNi zI9PN-q@WQNT4)1`7{SMMz{OyOGu1#IeqdNZ#EiH)n9bF=;`TsL zv_NSdbv>;+;Ojuj=B3Jj03(Z*1lJPb$-EvN7Wu-`03N`*;)_T#0`X*m!p8-LD0J$W z!;U0rteYK?-9QiR$;HDZRoaIz7p+-SuvKXMEV-yk`!jB_koV(0aNtIJ(O5J3YN4xVSy| za0p5BdX+PaA+UbdT{t84;^;BX8r9NXcCk(wPD<0C_4Pd_04$w?JKgcx+ z@USKfr6XipQhX6$V9ch^h%{Za$%5YwjJoNfU3U6ya#|r+(F5=#GS&(JRR^i-)tsmF ztE;P$o4g#b0{;Z^=>)zP@k8^L!6jw+1Vq-<0bx>UIt^XWw`xDc+k;HtIEQkOkb&)P zM6fWob2KOO^{dc19_0xBKWrG07n(6ztgG#C4a~}d4w!$ljSk&y>gHA9mn@va7XNZg zN~UuTjd@wwF_54RAj6e|?eMX+wilo7D73W~f6`HCZ!i9I;7JJAqzDt+8nB4O?Zu~| zQfjk+z%yZ+nZAffghb#rM z11to1&{6FOGGSV~#kP;|UITtSMea|0NFc@va!T=FhdY1~iHz>4cj(ijLBxE5Sqp~5 zc6}$Zkk9-X+(Qj5LI0LOd=jMY6wHR+yK+AtZCVIPHqB!v3<71ho^UjN{de7xGei#`sNBHbL%Z1eeB{Q1BhydED7jQb8;n@@kqpAyw4 z$6gw5Slyk|+L3I!K`X=SKwB}u=d_JRDl%G>;aVx3J6+c*7i&2;h$AQgqXzA6~beI9S}DtIJGcgx$|RM(3YTQ;B#3Fc4%u6t!MGT5^%d9 zwS;>f0h_{6=%K)rfY|yGYJg?`)i|n2tfJYABMDO4);zwFx^M??D1ENFDwd}7hR6LH|C7h)RZKtXuz%T6B4?$@7~|@>tt? z7@U_q>Zpvx=q+6KsfEvo_F0#U;GL$o65=?8R zp~7n&(pvS|7cob$gs_2wdir@>>ozqTXGDf?qagoH|C(yqMY5#!bBsP#(@m^PRVW*K z9K;Ryh8ikmyd3(-a2<3dL#1laWkAVv_!vh89Mcc$B9E*k!Y1l3Z}GYOlEWiSKFq9z zf}kMZ+Y$EWV;3dRy5+W@SMuw3(d$-$Szl5h+$I+g4;-4SR?Y1Y9JdLX@=a=Z0ZD10 z1<0Yq1#KH&Fj6*V0SgvlSL1HJBB^g<0`Wxdp5p4&NX~7`V0~q?=o#A{bS0Bm*Yja7CLZ!>?8)^J2Ma3|V;M#UKoFuygkiiV6 zP7{419>bKYxji@O*`}){fCC70)c*TTKJYG}oZf=_0P-VR!J6?S%Ro-_=}tn3^{ zsE%#Q)lTBo)wOU5lE)-#!$L$EEJF9oUKv~KgEYS8wia87G8(w}8eAbh!n0DA|7X%< z|0c2R2BZwobijKeUi_v}u9JRXpR*lC_~M?atdCXh#6Vbs1(iFSW~+rcN^CLwP~^X^ z?^GR$`$+U`ptV)TM4%GJ`dC ztA&netrmqngnSBiRcd-gw05up=2uaeR*?(Y>UFRbwP7BcUICPaRi{?ILI4u%;tAma zVhQ2PO*tko9%H%-F7^_Klt**aBi%m~OwU!9$TjFDoE`8o1=#}L>C}r(t3|sJe7dqV zV3B>17O1lqsbxLDOnbFUnwdU_r_YKOzf0(G?^j>6q3pXhwgm0S3ArdP> zv8f=jeO=vpDH^)OPZJseH`LpgFiIJQcWh1Ace!y8FZU(an=cU=UZ2}sXpx;938hh8 znIkVNs4jw&@x}#uzPb)}_uhh%A~}zoI6{KTD5}4(_;tO7|Gy13K%T1X>rr}5yzy@fdRDxkOX;nVDCD#s6l;T zY!PxgyVbS1*o;^gFlbIA6k#FceNt(yoilD|MBRt}mRtUYT=G?hc0EJ2txT4?Yaj}| z^;$By4thNl;j#%gXEvzj(#3eCcyKW`fdvOcRsqPzV{Um0`!id%I9^CZoP2+tAZJ{- z!m$p1aTaImku~FTdxiQGrN<-mFa6;txK535HQz*pLtW#>iCjvrc$9r0Crs9xfCkRt zD?4+j0@9(}q_0#Jx>FbL1ocLRZq-J#TfjEuHUl**QNq2o3*N{@zQ&&9?xSxLXEh<>pUM&ONr=TOa##yZqW(3ZsxEBE;;Ja~1t@b+4lEK>vJWy+osdB$_ zuhYow(&+7Ahv}pOtPGaDniC~JK@-|M{wSfgV&P)$}{z2yzS_8VWp5)yjTl zUyiXi3?pfDmChKbKtTbeZ$@r=RuOyn{POEf?+pi7#?iYlk=Qsq3#UiYRAuKCQ>B1^-Y?GM(4tj3-5vR#8wLuK+L;4$So4*oSTD?I?foBowR&)ks=P!aiA5r z8{a`+Qij492=119Ysb=T7{kb4<%kivpvOWbkqLf5v7ze1xeh^N~+>-kt3OiYJ&Nq{{LK5N~7I|BGw z>K#j-vK&maNVh_=m=_rh)_XdBnA?+P!EGjkHSS>$82vxz?N>TOa5ULTc|#Hmqg!WL z{)pq$fh$V{`BQW#Wk3Qn#M-AZ||yc(Hz4e$OtL=veY&u;oFN){AhC zioA|0Zxy#I5rk-g^maY96WNhwsj5!1AR2;k>X-sNvRUv*M<6Q2f`ZW+kf1GHJ7=QO zF{)sS@?^8`P-kKW!IB_y7{aCS=w2_T%W093`{c>ND5B^<^hP)~xgSx(QZb`Q0ZwR| zGCWfXaV(-+xaQgrUov`DyKqe?(s)bqS~-m;2Rn*x0i-2=3emzy!D){t7B;iSIGV6R z2yGI#@0YjhuX9DCDeDLn+(_JxK!gut%Ea&e8(zboC$=sG@=;&vpIqa{EAP^q`UcI>sAhy9l&N46?x&3z_P$ClRi~PR&tNjZ_ zrIAveF3!*WzR{7k(&ru|@#d`A|(cXX;D7g1$$_c$G zZmXtxe}`t`^o1zP!2jWw1o#a6JHO-&KgBPrD7B4W*3jkSxI_at$r%7~uq-CU?W-yM z0i*+Z#8+PMK5*LVEK!DUlG7u8@vD-P_dz~`-p1`eqTD`S;TpP}$1m^3C91uh&Z6zZ z1IN&PKt}%CWk;O8a$?cH{gI4)w&G<@BV;e+T8Nr0XSd8)D5{ z2KFHrRgVBZ^f5JyeofrIjDD{|Y9kDH=#vkYfnOk7oW2fX;o~4g45W>WXa;5=9Y=+I8)dhmE_hgug_lbpxSR}ATNqG+;uU3#mHyoNe%$^9 zigXA*Gag@Ybg{3a3PFd)N?#QjolmIt&GI~iR!YT?LnMv3jh*95DQF9(sKi;LzNp6s z#~wQk8kU+3tr|ooET0*`r{^uu?9@tLW07r7$O+u;q|9Pl7*9Fj8t~(aFX6bY&3LQv zMJr&@&Zl~=NK%s4<|%P|D{}LwawYm>Mg?}Nz~s91DslTcar=`L((uKwlm`b z^u0iph;5|lFtQC$Z?If$l#BT4h}#t;=s9vBV<|vtC(F0A#jq=G0alD*`0D@Eo zh=RA5P{b?VasFB_h7s`cYCZ(x;|tglSVH3ncoREf4)H1Axk)*bl52=3g;+Ci7Og}^ zt`&D55?e_>+_E4tGPz|&WW*&#Nz#cHULg9~g+~Lw<#|C?U!yz1J0c@rm2PhFL`H5D zTZtP+ltr=a$GFf7BO`02HIb3~rA_&VBO@Sxn~`5{ifpys6s@pJ=>y-yeXt{#WJie1 zwBXKvll*z)wy(+q14UH#Rx2vI16K$}NmkTND7HO~MCEe2*w%rIN75gD0Ft#41O$ijtAf5!xtt+;9?5u^ zeRtx6bOc7aEXdABgonR{61q#d?39;2;(Yi!6U#%?`#QoOU$&zL`@;HKQ9XJv9{^R7I}jh zc#Gsp{+^gxu5+jXpLbahpX)50)6Id%_W!{n!ruRgU!KzX2ET%&>(?AFfXzk3jphvH z(_!)Dc)51)KhW`R&58$YLyT7(=V5zM2&l^&ByZHn*Xgw+A74PJzkA9Q>J1c4a0qwg zA6O1qo>u^Wi>HazwvHA?!!~$5YP6Zz)5M8)D`Zz;6`xV)m2_`h;r#j76J+4;3d#7I zIIka%Af9p79anX69&i{%|2Q_z+};;n8%4xeLlLT5m$n^lc61ab@ABtL=ixE}`-^9I zEOpaX)#E$QdSRQFC{M}=yYHT$#SvIyUhlXRj4`W)fx8-5NR{)ufPeflK$j3pb#kg* zS-})KbhM2a+L|@$({uyMb1JUvr^&`&T=|oE)vff<75Ct{K8Y(x4l~*5`bnzLW`T|Z zOE+z249f<~hnzdURqWDmR>M9cjeZNZ5#?yfQmwm4cc}gJ`DBu_klfRQ_Y|5%VcXtk zkPVtNQj^aCg4fpBFta?lNk|@EP43e0ly`s^MRdnxh+BIb9wm4ukhL*v5`nf9Vu|RF zDO4jjQFs;?V|m8S5e%>gpA6xlxYZ^Cx>DKNhE_L2a!s%|E>T^-7f=OLEcjQS9akug z{^AOy8&~v<{($Fy2@<0DfE6&p>mP2O!k(h>D1Z3dv#el%5WIApv*%&(`G^>X^i&~7 zI5_Q2^^EYd-#?2-ctL88Y%u6H^_+~46Q)S=_XVHl1%I9@NVosHg1_bki8AsQ>GpqD zkWLS#5Q*Uh>GpqD@FiaGl~h5x{YM390RXO>4bbm-*ir79hI}B5Q+WVz2aJ%ftMDL@ z962{23^E^2v&bwI`Sye&ZeAn}R?J_@4_oRgbiM+pGYAN5*y?Arb*lINYbjLxo@nPE zAh2~|lXkIH|5{3@^jIUQ{-SVP=|m6ck122BUv5OR4;N#3#unz4OBy99Km9RY$3HDO z2BFgKhc87A?fJj!3(z-f&5X|LX}y+0-~IRPbMv#ksd%hrDAsm6+aGfF$XevVWXn8I zrIgeQ)`Fk15Hk@OpS1pl>qI%KnS|NU}6&)7rkyKWbE z5A%0~`2-@iclm~8vg%l5#f6g%hueiog?eVUFbT(dyJr%G1z!Zt{x4(fS4!>RQ1Jq;+u9HB59rULva2zpy49k0kE9Tz?;<57wS zT_rFB|H<**wxI@?h`XbnzwsUjZmOia$c+$a`|u&Av0=bI;ur~Pg9q3A>9dx@ja=&> zwJ8kvsstJi2fGFyoCeE7mnAot+}~l;6#HeRLV#&b+=h8+$K6sxEUR)7P@)f{FTLC8dx_c>a}XsI&+Z z8@ba8xo^pnR!b_bsx$`)LIlSxI4BL)E6Gi61Xab?SFk$KhT9COnhxE>hhNf4(M*}T zV$9dAB!4rAxq>#P9il0D=ua(3yQF4nseRwT7}X^zxUJRZ)iOke?F ziov-!^RzdJy@w|m;sj=&KZ8|Tj20%Op4lKe;_j#Zya(nXqt+HDUwSaJN{8VVcz#;c zT^%sEBa>8V9%LYKcRSBKVr`xodE9E@@EvSbB$xJUbdJ8CApR(p`cwjDSI0*mdbM^u z1GDu-q`)FgHB8Jm67KHcD&gkRPU#{vc~H|(mYB!bVaV|ltkYbqJpVzle}Ygee7+GZ^W2+ z*4EEQw4;9oV8jrxzcgA7m zWQNjZj|$naUu(u!uoC&;WS~hIoOi_fq4kjN=m;l6CGFP2FqJtM&AE-Ew==<}IGA@l zT92V=$FSTed0QNKu_@+xc>~T%d=vvFso#w*v+CBujx4O(>Lp$B-^ZwtZK^mBis(3`1iHY_?T}NP+ zDSCQnU=!BD7$@?--dLtNywh3jQyz2ssRBw8-4OABx|pXf@(h5N+b<`SBP2M z1}EiEXQ=wzYQtijsx&nl*~pJ z+CvL`-5Vj?ET(4k9O4cV+JC_NAKXDyNM|83O|piTWFcx*%9xqxE;sNae@3NcF^mVg za0E5eMdv&OK$pLw-se}V{OUbR)bJAD5rh?rL5Z9`KSTHUjx_bL#mX5(47WpfMYklQu6FW0o1a{i+;mCVDXh_1pGl99l|XzSCP(}UnVg%b6^9I4{Pp^x6sJG!n$elIo0slz!pxnTi+49|Z4iyG+w9K(E!Q#zG>4#h~| zVNT3=-N{W8i8>}Pb*h8Mz>e-z1{VX)sNB!W_KB^u@5w9UI2s`HE-t#J6Vu^E{0Fh^ zQU07F)u-u-Wii>+z zTrMRalm8D>fhkvKzzLuA%r8Dw3RBGQe@dxkr=mh8{CRwP8~r6}?Vs2%DvaK3cN8?e z+xP}FfB6RxwjZV_wfhUnPA6XEPQRQ~x-dG&(7OUhyyK>wu4Gib8cY*N3GYbM|I z!NB$VgCOhhh*8T>cE7f4B9WhN>M=`{n47zo(uMvLW#3}Hh1j9W*ocFI^S759Uy-2W zj9fVk0RW=QWf%utU~l7doDi2{BW`?FCU)7Ie}E6ou5f#=e)PgU`e2(mtcXUG?N#2It^=pPZY*DX=48alo^1 zg>kO74;iD#Na1L`sSv|nW;0{eq@+*c0p02h(of?&t8|DjBlH6p?q0;9L;T0b1SRI6 zDC_UT77m6%J@kQuYmhHC>}>}J3R597jh%}PyW30P1u`MQ(O!ZuJ!1*&C3e<}4>)++ zON7`c$Phb+JCsU`jlzqZ-#Oav%ZQCS@{hKcq(dv7rNjha2K12;Z+p>mh&CA0+_;!b z7Y63_cweYo zcwjO3SLC>Hgg50@P{atWkA}O%6Rog9Hqq{dC{zjPN8|N3n&zFEN&(#-^X zt;1p6&(4b5H`}v5px{CkrCtBme7dG&J2nw%d_`ruZ z*6+4<;hw@~S@Go?m-P@cs6C2?5CPH}$Xe6}{o; zE86X#*hSCP3&;C(8?cIdDe(>TbGIw?pcfDN@W2Jh-1mNCT%WJr{j@_Z`mw{eAIRK( zRz!DCyVSdX?DFkzGE!XFJHFAzahQf^l`>e$%3d1y4K2_Fx0Y8cJEOJxDnM?FUqRBx z*hK1+)MHFk23cNn}BP z7~Be8VSU;txYQcl6G#JVQnBqWEQ1Nlj>{tN;hi2ea6~6?pI|7#y5J!_mrp8hN}Xi@%R}Cr|l`zu(vk z{~lPj!3-2$AmD1wY4^}TRklaVc%Ap4tGGiY-$c2IVL7lktJ@AVXTW6zQ=f|;d`K_9 z^U}HBUO04@K41b1cM-5q0$`y8L4)=CCIAa`%2Z1TwF{_8ecW?N8L(j$oc~Qc$O#>> zwy!&Ais1YPdqsRIv}qXCpZ{-sH8gIasK+%1`)h>v2n#Uc@*2Xj9p2e)g91{bJ za^}H9z&!~Ze?)ppk_Yk<@Kc!G`3NOKfsC$;Y)wNbj|e{9AZ2KqkyUpCCGK7Ox+Ryw zqRe~|!Gy1rB(QG-s0Ex?M<@-59l$0AUvzv%#oF%i&FHj_AjY43Ug^h|W@vs87%{`5 zHVsClbO)Z4T-9EfR;QLsM_5Jrshfu=n4u{Uh`;;WWU{09JPe~<-65+5!ESLbAXXfp zBcNlY$dx@V=5ZKl+aRI+k%pNTx%uJeaf$Enw%v`F7&ArEzYbeq1g8kW6^uq0CdOb3 zYN4o$3p?mO%wo~EsE8`;z(Ag4-~R)@TZYd@$a^`Ysy_1v0s`3nu$G5{%H?@1hRB4d z(g3Rv03BG62kb>|v<%)o3GLgYA;ft}Svc~k=>REEVr=2RJ_&7Kg11{|^&Sd9fBwHs z`G(9CLACJZav0vi9?b_FbVJVOH0^soM-2!pB7X+6L138+(4MF+!Gc=mxpe+F90G)W z1{6~GoJRypX5D>btzlgmasDVaYGprSS6js=Kf~l`jlf#ekl$p!Ve1FS0q7>g)(v=i zJCC9dfqtM}D3%j-GFMGIWZ zGal6-+92Fzsv}$B&*AN;KzI$ma?lMmvvw155be=qpOUmRE=K6+%a+Xu>g*>+EbrLU zS-z%3&Y$;uVGo}13^-1a;4^dKE2Sxy~L`Msn8ziFMKZcZwl6%R$ zDM4y4{WcIV^6^ohdW`(XhvHGg|l7_*I}4Z zZbfk3(DZrn=#v&4CAV9eVe6J14JX^W*7Ru8nlUtQE#Z;)E8#ke8S|?Z=d?}1g*LwyJL<9vWiF^yty{{xUtOU`SfhXflIWF7Gl$ri_&(4%{tcu-ii9Mj9?dWxfp+C3D{=|FF@j2N zc*F+BP|&jpwM%y(HoAPBy37l1@%>9mEbshp5TKGlRO(@C@K#>75#IKB%tjGg5hW8b z!t0X3>C5F=tYQINb`VbnFG;>>h!8l1hm=DoK!AuioF}XmS|pL@kuO?yX$1%x0j_E> z1>zxU%Goe4F#`BJLM4P&s1*6er|+fp!2JVB&$P}7k}o_TAf`;(iE55<8SV9gY$i+sOua|s^D|aorrpR@Xntg9cN-6zP-c8 zYZ8R8sAoTb9%!}zBH&|W_~Ljcav^3{B|b6QueI~4`0VHhi7rA{oH~FFr45~dcVN5- zgi5F-xyHA*N^-?EvbrVPeh5QfC5XwZZpg(B%zP5B0-6|8u^2yi1YWit?GW*o7y`>4 z+WImnmo4(!YJHymZGvyApxVOvz?Lp|>GL_A22ZU~Fm^k1d#LmeZ5YE3P-jUIRuNn< zwPsYgno80lL0q{Ys>x9^v_YWJYE>?-PSVvnp(=SR`%qhiNvK%^ec2D#Fa}`+GC{Il zz&HD}8F-ScpG%ihaH&?48B%Tzjo{kjc_-d!o!Eb9q6|a8kRBib{ukAi!i7GM4$ocbb71{M{$LC z3Au9CQ0Q8yZed|mrLE^x@GuHykT(#Lu^?~cMu6DCHcNvO&E1K-~CVQ=Fh zMDx)WqaRh2;cI{24By@OlqK}eW+T{xdtutRG`UHu((EXKpgNe>Rak1tO^GTk(M%U# zRB4~`3oOVFae>un_^ToyRY8fXF_x@%SK*sC*y!tkUs3PlB`*4zaHfn2yR-+EA%>6H z1yC-uIjr?#bEC~_t(%%P|<2_4IWfgYZb=xzi$JAPZdHPs_SwM z>xC+cbhri8lLS1hts=@)m4mBkZ=oXgVYTK!Rh(3GPpA!sZ;oj2e*dca6+nfOh`8|| zX%^M4WEv9II4y}2_EO{;p zU#;hO$;H}_@mr_VExjBM7g5R78*og)ps5mKH{zo)9_{&y^wvbFen3OdY1<=|R_#LC z6Sx9F%x%14@1+J60HQng9_O^bPawg53ArX ztL(v>zA*XRTg0BU!zhA>ffn1yTzh@k<*|o7_A1im!4#AeP@ zJp3@F#KYy7Av|~xYU%xyg1;0gQB&_S5JVl7yL$1A3!z#sRw|F8_!Zzz5Ng};1l_b# zj6Hr64;KB$nKy4R&8Qdxw(##R8J3bp_X+6bOCAL$*WtUYRs`mooyKb1=BZ`~LFL+< zhGg=-FD*lCsPTn3#-y0B@Q?f$WMk`Gi;M{BFz`a$K6IZ!T?;fkghOA;fy4$m$aHO{ z&4jjCkCgSg1Pp7}D!dI3HmYat<-Pg4s`tgyuEvPRMok_J(HOv6ByV7 z3=lDD)KH0_f}#=ZOz7X<2!LZKaneryFgNC$E z^>!5w%xpa?y$z=5NjG&6J{CbqWUs2c)7tlbL&=8qX*R9#DV}QHg0Q^9Jhjdmqt@6+ zB1+%`HHoa6y;*1Ez!uEr{MVVE{YGC?1!Jz_4yc>>?FM99saKdbFehX@ERJa|B?@7`n_dY$-A(@XSH+#+V0x5}cFdcvJqbaou!y+gl)7PXN2m@|&E zJ;h`|!Dg7)1rB1kZwk66BK(5!73k5vcNIHW-}~l(-k#frE_>UDDT$EVeguAkn6hHs zOE!!{dn%QN1!5I4kwbWW{@zOa38lJ(h)RWG^C%)MT4{%q{W|=T12NH(HR^iNwGF>! z2^5@L1u$U)?0qD3X-(^NqwavikKAB8@`D|&nmyBpy~VR@{Kq7LOh?IabSTH*TmEu0 zSeRed7rc~U3LgqPKlAXP-;EPh;mA)zQ}53m!BiQ zto=0=)IKwO2(l$y#%#LACWV+g6;EsGDh>BEG*8UvdiHGSxL9AH8A#X9=KjUVtXx=O zw=^_Jk}ZcEuTP)#}en@<;ZBDr_k(@OgMhSF~MZXC%2Tpmu;EXWqE~Cek29N!j3#< z{d8GBhpZn3o;&@*oVA(XAOu4+&}~PHhvk7>?W6u^pi8ijzw!vp91ZO?mU9oX&AYiJ z(a;&8G<0wdq#vx%k1u2;cO8;z2`uz&B_aNs~@4j9}Hqw7A)IbHvmqVIz02QB!|E9VL+!tsS^qIe) z0IXcJXP5WI$4VNwfJ!qZO=!ey;20~@>=Dm;5{ZTx6(>lM@2ls249!qnDHInVY|U2n zfF{(dJe|M6UUi7FA;#vDc(W6>#cO4Wxs{bz=WDcS+fD_JC^uVin*$xRy zh{y~TJz7d`f~2P^17tuMyUXTjm~9V@k1jP9k5H<#qo%>HPn951Fv`b|L-jmyc9TlQ3sxE4x%oGGNU;C5N&4j?k=l+ z5Ht2qpSg`D!~QO|!y(pauWYIBsU&NM0Lj=_2D^(*^?vPAHq~F&-eLG(eH=-qy==Q4 zcwx-)7xL>~*mMhyL_^!x%~B3$8ox%z!*x60aOYA=A{U$%GcShRBT1BVR%UV_l#vb1a6C}vQ! zx+llxuoKxA@`7%>8rFV>IXJA?jeHN+y^c+pbPl#m;B{^Zn2CrNegy^%eF0tYBu{`i zak{q3+I_*V4PUu0-WXiD<)$w-mwj0`&8p)bDd`udUBT(e(9LKm>damyW0-9?R=%Pl2%v-s^nDasz4$zdpD+r=-lI_{tdLtzM~ zgs74O;*u@MSuu6HrEbK{dj2^P!Mi9V5axs^w@qcA)K(+Ls(Gs%#=ZQ_3roWSK7;@S4{V%z)@!0o!893Zp{E*XKc~ zEF_Qsq$fYcS_F9*%A5pUscD-+oep1??r9EuqE~@KIa#ViQ~6jrJ6vT*Mb(O&Xj*nogmw0>StF88AhZTKk8cPqtZY=wW?at%dYk+oA^=~E zA*eWcv+vz0mhF$9JjKj&XQm1#l4}He7V|mq(j+s103YIRuIq+dqWeT@?uSHhltWiJS;he?I)@NQxi_A;h ziF+w;nD}9#(cyaBOyb^_=ad;I{%M*-7mFY><`3CL!fRb+UzNhKwjv);70@YFKiyRB z7``bb(w6vC*~gSM1>#!cLkt}r*g~n~wCHr=GbOcA%_;1^jcN_sL*EujPH+uhqm?(A zSAMF7_jL(ES)dcgLp&0DJA9dVRh!b`o93uooE)J;|Fpw7odNb&7~{-NaRQ}u`7Z_t z%s5IE4Lcl%$L4(Ce`V&1r938k9d&2$=DQaC0I z2h<0bYv50FJTi9tKVA3<6=VP6VT~UVw6j#)l^zb?~cW zK`LjfpI-Tii}oXUTC@PxFM_JEi5n}-4{OLR$h2+AUGWRRwCgm7zju`|I)gK30w)Uo@7y$*CZexA!<^?01T$A{~Se};J4lqcTJ76YH zMlgHx>CF^HIBRE`+#;&aTO+lghg$C}MMIt$i7uXQ`j|fI#$n{6s)C;YnEDY6I6s!1H~eIww}mn0 z*3W6pm@X{Wh8-^16^P+0gwlN!(5L&R2~(M!w_o@}(_^=iFDoq;y?qtr0srqeMw@KKgzgZ#Q9S-5_7Vr*!&%rW`WAE=wDqu3 zA|RktiF1V%Ds?*2?;5US0ZAf3yUrCuA|j2=8!V?2}@P2pn}6FJYDev63zGkx{}I}A}0V&kZgqug=Fp=XKcLBb-L zr&BGrtIn0n#_2Ohv$hJ3aqh+nd=9!-hUcbm{3P&cHtaWXMNVacX9T=oMxVLdMEXGd zwB_Es`!Yi#^Qt65t2h8FR6*BME<^2++6Nz$${=npw~QYClYI!hkn8qux)_W~ks-oZQb-lTM6AwP&s! z`A$2Pe8CewJrb}ZWbi}pah?)6TfD!5Z|;XJC(NnXpGeep)2Uv)4YV06|9Q@poyA#B zn^OHyes}qkN2IsI+= znxen=3i)j+ysL+5Rh_ANs6S&5{?G#b8K~-md%^(eL($U;K5JjuStOPJor2m+mq_LG zE2Zs26m>lrf9BmG1CocdjBcyBRMi|-jI^X$qzSZS2U|>+<}wb$|4pMk1YW8|+P9h_ zNajMP_({eP*QHD7NEJQul4^wFO!N{I*$6q;lU_)a+$?q1z@JhW7jbfRduNeM3f>c> z+o%IhXKPVc_#393hQj}FzxfYZw(IM?dUq;9=~6LmO9ZMg>K~DA;tX#XR;*aJg~-bmhVS>< zg11HeukIv}5s2>&qi%=Nl7wbn33V(UbTJ~p82b>J$`gycqEE8MV_tm^(AWR^sww43 zJY3E?mTy9|44f~5$TkWK^}wO#$|1FG7%L?OO@X8EHCUes(cAz13}7DG+wdQP(_m*Z zj}c1Q?eHH16H=@g9$eA&XX7)7%?Aw+!PJx6PLPNJSCeyI)1C9|RyvHt-f}df?MEyc z2aG{Prk_Aq9TGDo?8-Onl4f7>AEjzk_Q7bI1BaTb(wfSh`Vp0Y?Jmth4jfvU+r2Wk zWHeF338pa22fadjbC?w1B}_gTtXf1|Hc^Dijpbe1%LGhWR2X$uAq)||9G=265y7P@ z`0%02eq0Z9XS9d+&{ntFpWOsxl>PcrF?klHDS(4r0I^32%w349HcV{t^ZmW`qXFuj zcF}c=wX@wyIH&PZ$iwp5w1>Y=0#=9t(~j#S2@ox?D5EX!Fo6vBZ8{=H%9Mpi2|ziofw?SG2Q?a#VrgRT0L1g3<68?XX*f z&&k0do#Q0jNmRxFZTQe}78UIWFJdy{QHuimt)|dw&w87efk})Z(*x ze-lzH4piV6XErZzsP@Pmf9lA^QCJ6yi#y__{IIv`xBuHW7}nF;WonN_{<1Ch;wqS@d-(LN4aYa zeYpANrvQxWF3?YhKe9|G^;2#Ca2)J8*_AzKf;+ytT5$X53b)eH5IC$7RwaEzDWM>6 zF)5mc+iu)poB{C8M6DRjjjN)?iIzIm3F$%tEp!)ZVs#g^Ub-h-`$Gu!Po>Np9%)rVdg4u~unFDCQET@B5MO`nqm0R+wYs@iKPVlIZm?V3bBF7l8?^^z zE5t9zqsLmK=&hbVhL6Z})7lLLn3l;hZ(pJM0$ugpq1m(c!+CROq*+bEg9^9S!iG8x zB?%SNZ>BKKOsXQg4DSx6GlNty;LB(yC{kVMBlKY)GMeucHKn+RY1Qc(R?4Zb2%Rmv z;+%3CE;e8hS+>@S1s#W-fGL@y_zv#b{BrL)!lHQ0s8ruk8g3VzuKe{?wMUlf=R&?K z!50EN4x)+MX3=0I%FeC8DCBXUCY65Hhg+T6?@Fgj$4&hRIFc;Qj*wCu3|)sck+EQX z_-&kw7eY0HK>P&7hh-}urSVB*CQ1oq?3TVmC&5B1WEO_)g$l9C6dwy161as#ZrFH% zEqEQw0KC5w(~bCFj$*TmDG^aA1X>VvQFkGlV$PwfGLB+xCUgguPf4XrQSMcT29m0| zFmpu7BrPJm-^jiV8R)Qoi=`AbSFQ1PBnqEiYy1UI5Li*??EDgs_HYBQ4fPj5^6KxL ze8*Am=_r|Gk0dtL#5ZvU2rPc^ajYBdZP?L_IrunIka0>1GKv+A(^<(K4;X3se(qp% zjMe@2;DspcB-XmDZ9~>pJ^(j}Z66=oQIcub2UV0~zvK%#jE)kQ=+IdO$Z4;asT@w9 z5}eMv^CEiNvJlrkSaQcNGEcGS;V-f_eZ-A6212fXnfeHs{ytxlx?q+k>OXJp16#6* z;4?CXkNTDz{>Fah#-H8f;1&A&3Kn1@kJ~yDGO+yrJQn4vVP!vUK1_a`4d{{kcxd*4 zAcizmsO1g(Y{l*&ueN({M`RYCZ5@$3>u0w0lW+Zqc@E!hlAmZ%Pk6wy&WDE494IBL zpgndC^;o6tvCGx7RAG-zRL@e6JvLH3OJ(+00zeu*b!BH{rc}zm&;nxublets-=Lj5 zVm&3RPpIC9JDkRoG7N3^$oP~RRdj^)DSErB%TSs0sMMhCc14T2!UGv=yThlh?u<+) zP5y_f>zni-expH1QfF9IlVY{>_>8XHE?pIuMssS^;|OU^k4mN5 z?s;}vDwd``&{f^xQ}=d6Zsr>ka*OH?YC#Cm2yFcA_Z785&{DiKH7(%4}}_;trnmC)e{_ z&sX`Clx9`U+yYH|sEn2^y|X5@E7Z`E<2QDxs!MUdyslxFnv$R=iUM_|Q;*zBT}E0Q zg`A<6#|e*p$;ob*2yBB$AsO^7bNJg4na|&=V#CKge#{ zB1PgW2b;|@(xUTK!%=B?c=7n`hFxma=m{2J6Oe7F&goHUTi+u6Kq-CnjHAi)Csle> z(yg9x=p<>R>awCuxz8iA_ZxPpvlF}wBOo=44ZEaYHvE0$w&y)5t5BDwtKWuQvNWD( z-G`xX!Y?0@cv0$1yeQ3>lRkIYV3vdj9D4hvYyRo;E63GmNnccM{`Y6<4a@6K?HO;v zocYy#^I3Nr4 zzbrbhPY=?J5tSnJtl4RAO0TRqFT-T3SJoP4?6KxN^y_H!L8)8~THl*HkSdM{g!+o7 zE|}YqKAk{UCzI2JH(#~%3!2g!b}5*ITR&@?7pLMl1W(khsYP@>?p#pVG*N`dp%b~M zqK`|JvCq-~HEO5ZSo?R=bhY${TaVWDZg5*$ogB9K1nW4+O(UCJ7Db*9fBdf4Tdo~_ zxQ7xQk#(eB6~Fx5?gncMS}9XQW6s-llFM33VpFygnr$q+N2?Rs&suX;?S}e$ICbmY zskV1hGXckO$FY6b32ZtgwaY$83Av8`TW@z8E%OT_@ZBeCNq#q?{$}O8`(!4s=BUMD zu^VZ9HzKdWG4FQ2_9oT6qWDOkrP^#1KKwDNCfL5dd-$i?gCaY|C^qBRsBH3uJG0+S zox;OVj@9EfCsr_d_3ufZ=_-%waO!q?dM?kHp*-owMoITe52rqHUXH<9-~o1zlEUFn zT<@kzb!tx6{UcexjHe&o-@Whf{sr%TAj&YuMYYAMosrjHFVmss{k8w1EdKb^+tk;N z$Xn`bNBKeIHv_~*Z;v?`@4MYIlGC3Oyn?~M*QVC{%l&gF`%NQa4a_oKncQI7W0A#7 zWjJxB_L_XPZkw*iRlgmPwR}j4U*4?XYlq5*&t>4PdtAWH4ohBRtcxxBq@0Z4*k-lYqECu%pr(kV;Yuy7!!g|#M+c>U zJ`qgJeH9|=@P*H!McuGV>at_{Pc5pWVb?6_nia`5Ux8Qsoz6(P zB=S#-rV3Yi*LvQg?s3M8@{s!;Zi)2MaXgCK=Qa84x89a_yzVm`JgJQ(a5>tTD$Rks z7AB_8FO&)X9}9Lzcgcry4a9ySJeuefsekAan?P(^JtbDdrw+Arll2$n#=$BhExN*) z+!p$ilGfB_t*#=GHh8W2U*YuGVmDI0$?Yl3SD?b0f!dFgK=YkgCZD7APJNfUMQ=vl zHRiRc^%&g^jXpkJ2DN}z(izm;O9yoI3BtqzMjIUQOke(!vNg2EgS6RDkZ%k9cT9Y@ za-`lvw7`)PUbj_?MlCpVnA31sQ{5P4yk-K@8b%}dts~WIUOQ=MEI0*Zb^4-`aC7PZ20QV7w>S^8=p*NIA+ZjibO#oLf zZ8ua=``+lBD*H_eV&#;Zy=6*yl*kL6)^M>rSNL#8VWvIya|ZL}HAJuVXmC{X78z30 zM8(?2KjT*n)pNPjA`|6{b7HgVbMY+o9&(aWT$CS`KG#YWBbuYC3irffP)V2oYSBBK z6D4|yEWEYi$TaVez^$HmaZQPHrXx+lU{;B(!R1y*v069ZLO^f5S@`b}NthG+$;MwU9HJ-*bB)c|f4|wy3>-1mCeElcfTm0acFHYt}2o$Z2ya6(x({ zRq&sSTt<=bE_J+c&itZ0D2~q(3uQLckS#abk;UYV&m@|rntn5ZP(D7{q9p9+BgKvQ zncJ&1niPm_<6O%!7&h=0>;NPt&5iU$B5(dRVPmCGUD&x7orV zT=Nyu*31BJGE?KOpK^ zr!mGnCzeSsf|}{==Ko3uxP8@kOfM}Q_nH?`M}(T4!BOnB3`N>k(aAy5)Uq-^I3$an4B360;iDS|BZ5uv zzcdI*-w_nR4U7{DeA!tFHtdA<%GD-g!VBV_ihBL4G%-EGC6c)JeGRucoXoLIi{hRn zeX-z0hy@ZhXK%2s1)|qx{`NN23f!A}875NOVy9k;6C?h*;KHHUCC$=w7>C>JDkDhkfRH zw7Qop!%}icf5TYqj?WWeUL~5seWrx0Fe=f*S8sJ9ajyJa_c5M6^E$B=yBw4jZD>L*__ECOP=Wcj9S@bK7pMQFLCcyq8N}fA8c3 z%v%XT&l01cQX)P_N187%eQ?nGL>0JCDnS`G+=J@pvEXQyk$u>&pkzD`8C1$Eq8M}H z^}>*6vMrk~BFH=%{xB00wThvfJExOpMr-b2$MXI&`uoC)#bUA zD>r{&yE~(6q`ybR?+7hZpk0*=10@^rPrBAQbbMDDl?WAZLA7#ZQHnHvO~cu&DkMY=vq~;d&OO9jc(#>i8fja5dzD)nc>2YqRVWd zuTUS}8R$ulOlzPU%6zaEbBrWO=cp48_Cvfk7`46h8zXQ9E0rHj44kw^VJb_QuDN;h zGDAM2I14Df!PSxSwOE6y$_2po8VlXD=oK@P?MbKu9-=&lpj+a_>I(hGKd~D=i={JCa2X(OvE9GKR5-V0fP~fXtGGb zvF7(xujv@Cj0=l%Wtx_J4XRh~;8$f_Zw(QnMH%8xWEs)$WY8FjOUn18h|dL>lylu{S?_C&BjiA) zw9H}va>J&}4I9M<31D7YVu4vxYwYE-h`WbORF!}mMS&EYPsCp2YmL8urpSfcky}MK zI-~dD4o%f^Y=Hj5n?hBII{%{HTnYsCnyu<>8eqG*WPDR8wpf_MWHy(0n=pzY_fve= zOQ$uLOlT^dV3bVP;jfFWJMc2-T$w1$9z1Qm<{i>QOv16}Cpal({R%K<>!k<-dd=-( zWLP;x*0VGlrZ6%f>?j^CX-lr`U+0V@3 z8kKwaKc#iVH=e^S>P!GL?nbwaSdEREp zCh7DQ$dB%u#>J4<=@VH+BHVM5D(jXel`VrHIQg}-y zorHyFqtgRsX*Wol-Vr%bHMnHd*5_D=GS~g++>S9G>f$&Q>gtEx4U9&`pwB2qfIG+K zL8&)B9{}VEr5hWa(1&bNlnrUB8y{MNO@*$BuTNUc4u0CjC!O4a{@vLy_cA;9JDOsD z`X7=Nf^nkIf%j*8tgYNUUrbC(*a^L4S-JUEBt)RKZLNvKs_BAz4O7|DQCCCV!U9P# zUy;IS2X`zJg>(uy<|fD{s^?W6qLmy$0qpo9(fawW<&J{u54qKsqLnPRd~Gck?K=QY zUU*}sh^Q)a3}24^PHyLh(TfteCRsbhx_{lu@lx_lRR}_PF}#4WV%%uCzoiDq(p<>e zkkc49b%KE9AvJRPn2+{cz$4@F=mEFo!hE?R-xUgI)OqvKXROe_sCVFDA1Q9;dGS`5 zb>c;#YdV>ofwo%i5qr0JJ>G`sK5^1BaZM{Jm#Y+9iGF3eMQ65EMCoN_ zu+*IJ9nOMi;1%FkXEs7jaGYsINuiOo1FZK_!G=S9L;hx&MKoj0h60Bzl#0YG?kdg4 zsnQ$gSqHEnOe&W`xA`_=bcs62IYLZzKj&_cTmd@6Vc6&aSC=4q;-yS$JkA!zACB2H zo9pj&@U3H7L_qGg&v6N5R7^qBVA}wXoCh&9Sp)7wBe$bwVR=`>HBW*5&Z0^&%=oW7 zi?<16*DF=_qS5NR z*Y2A$rebb9b>}zef}FX%gAgjog^S207vr)=88A5wZ# zM)zhGy>G3yz0d z`=u<%v=m-V;U#DUpx1Gg5#oN}ib0LNu3Ovf%qz;>llLk1lo*SOHE8z*t(Sw6`1?g0 zKqhEN=Rs7y$5xwgsfLbcP3s7@e!8~XH#Tg}8j}AH@(sY~;*JEJLL-qQx#xt6^Jj;X zO}s!iA5d>(fx(lBBA8Tl#7&fp0&K8f$_k;@kOz|*Iq8WcsajH! zB@IdRpAm!}{j@Vr+oYUmPtk^v^7K|-fuv7Ap-QNs7Q3E)insXvR*q+qIi5W)$Mcc{ z_oio7O&jXcosyOvzUgj$r9ZQi{h3xRU#$Klu2rW<7SkP{WVPT?Um^d`NKd@HCB1f5 zH~ep^ZPjR1Vo4Qir2nltyNx8LN~)4&12>caio=)fK2|+^lUkPGZQ+{=Rd=r4)+&`{ zRv+M}dJbt%&*IOv*Li)qfG1Vuw!OU4wWp;}V!Y(w7Sr6{pOUn<)=x(tG~6?w7D@Zvo~RSU`lruOD(=+XO+{8dqJAIO$4f(T zZ)d91CjUB9r8@byO%{^DpwV@Qag(ejm^Xc`FEK{RYU1X#00p`a2BLGCi3Eud3GPsC zoA$d?y81q2pZ&Bx-j;5)+FZ0v3gLA4v!{ELZAt_3uQOF@mw$=tXY!O7KaIc2(Vi9& zX+ij=1CpULRc247&2p-*4wZTQTA5d;WO!P#X^rd25@~%+l)^M+02^DWDtT4%Siucf z-T9jBEX!-F7IVJNRQV(oTdRc1(P?GphhWxxaV-iMiEL+@EfjlAeujN}-1?R(-@-TT zmHI=I&uwTiW=ULsC&`KNck?$nB%Ov#r5%p zD%*}^tza6+t&59t&8`i;ymwZdD=8#SdOaBRJAS?wlc4XPpM3#NWKU9jNWsu%yq z;{KQb957|{(**KDgZPT*OguIwd6G-PF>sG@o$7Zdkc04caF`tW8W&7uhXWnAB+4zK zCx+|bXjNb`=MfBG@Qzd3iqp7x@W>MTl-x4tiY>YDnDhMg)~=sirnweNkOtYZ7* znp)SDzdp163P|#3saG$~EKjVqVr9@eGg0JSs>1ax(Hegw)%#&3?v@DDj^$ktu)6<1 zwDf<&17p_a#j~5e7g(WiG6;p!H0Sz57*-emjLf?+-LeCSM}D^zrhM$L z?1!THd8a~u!c|hVF8*AUeE7J8>)TJHq&1;(;e+;u<)F8G0b;}=e}$3|C!y?Ws zYlLIB@rU%$q>EDKMJm7E4gJ60JoO`CG4wBkKa4gMD38>aN&&F6>Psi%w#I3d?jj?L zs71s#QME>x+ZGpJc8V~V%74#iiF|p9`lM1@e*3ig^g}+;AFc6cloVXFQG)Q&x$B>z za}%vh-zAfDuAcNbNiBI+vrDXILn|5IB5Cg|@oH(WDB0e8QK}y>f3roAwih<1&n7Ol z7yUO+!J44E;QkZx8!$h$a!siNIXl!A*xrxt0 zTKw9Ji@~SU8opim$ z%jekta$cpB`SZb27h0uOQA*A7hjOB2{&!~crDd{|lAy~V`DzNRwyu=qKO~c{;l)b6 zPLh9Owb3$bFj>tjQCfQmRWL*RZ~*%`w_) z^NztT2}^O<=YUlDd(vbsWenht+`@CWHJ@I~3pxG+$H7zoqC#!&~;9FYc7G6Q4%gvzBECOUWGB!*%oH1-G zX)>rq#MNzcaZ15gwZ;=nmCW;ODaMf12>u{Y?)TP^|3Nis^S>vPDqk#6_OkW)&wN&! z|F!c!`}iEczhQPLbYZkOrQH1czgwrEQMR5KlEl8p1N{!0Yb0WM18+k!sM>#3YM9+H z``<#}WM;k!A5pq z!6cWulUH!Jpm2K|X5AZdH>|hc8!fk!0pAyOxI6(ZI0I#Q{I`bx0HG0dB96Lj_O`gI zuxVl9Rv@nIebJ-*gnLxDvJ1Tu2^F?ym;7cTA>%iYWfXbzltS25MV@$`%IY$1b?0NQ zS=LpX-trBm5|yX2E*wHUbHSUAdL6M#rC|SHxPj&vdb*9Uho}6Rj|Oip&f8y0^s^{zKU;a? zkCLv?oFzKk-718oVJW2lKtAX*A1Kt-dpyl>;Fu0|5s*a7Q2~k;m4k>PjFK9Qy88Sp z=cp@Vyx@hX_>K}xG5oqSo|adzIhcw`Xzd9i$JrehBlfwFV zDXJGdQ24aGT7&+QR4^&pIM}crN3q|8MLk-k4>NzvH%g|0T~3^$_Qs9c%Sz8Pue08# zL>IYy6ofu_ZSqTbh2_NoMs=n6hg|3wTzE}fY>iToLdNOpD7l!hkTXP@0mRN_)ua-VWVh{6J24l$9nMXTt|2q7X4EZ3|v+ydp);L<@H4{m;oi z-H`l7Sdy)>a9ecu1G2SLVxq_`?kdkAo0!)K^Ar{U(vDd$!S%Kxecmi%Q30*WG^xR-+ylpC#PQncGW1XU%pdscI>HF>3!|@y5;Hlag2i`?JsdC68z`BX^=6=u-{@ zj5BdF=}qsPlPGAplO zUPV@>f1!&_lR4|;rFp~!3sdYi?KOubfIA{w z$-l914Vx~uEg@R!C`OsAWQXOs;PJ+x^lCR<^Y}i&7Jtpy1Vc4Sc+yqh(7KoC#Aw)v&rQAzkh$Xo5 zP&*eVhxYml4I(@_wbw4jI_kEXqcaWf81q*`!_B!)DFY3c)4Yv(8O$EF89m~1!JX%+ zoyBZL-Q{d6;(Yz?&*o&9GqSLuk+@<|!H5Z1Bx)%VM|aKSL_%>lfV33X-`5YH(SA1z zilg9WQ3`R3WE%$#d`s9c9~(L%gYz!x17&7tqNR#7<~M567wYXv1s}QUL>;9(>T~hG zleu4&iZ+1=TcI;J2gDY{4}fFCD5dxi{kmEOku)-?|LB%E?$e#e&!1IcaZO>EB0?&c zE}}2DIt#%MhDwiXjegES!Hy1)DhBmYG-ATie43vBBLb zg4Ob9Nhbe$%U3yMS=nM-hcd*3UPnk3{5@$+Ve-{9Hr;X>>Z7`N{H^32dUu1}+w zgX3PAU!0{iUPw8N|Bx1%wQqzsxNRFope+EYT&S18RB(4VevB7NeN7JDLoQZ^n8mo3 z&)cs(9HZy43??yrKeEcm7cwm?vQg>BKN|G8X}?o?6dFnGp8Wcp+E_e;AMN1|$r$Lt z;R#Dp?lKm+n-|^M6!^rb%w8CsKZXBu7Vh+rX_dpw7kz}m*w;(U+m5*`ApA@XhPmid-R)bGDoU!6m!*w%Qe;>Ha@ zWTo{Z?sjl|H!Cz&skpIQy}ugV{PZT@vFV!V?KVQRFd)SC=1)OI=<#*z1EuD0>QaEK zy1l-lIU>VgjG!t?|03LXJ8sqd z&+BE+k}vX0X^>mivuX|zk(O__u3lz=Kmb`d1-g&c;e?H^tfQ!QwFR(pw6gUU?U0;L#%nXSt zmu}qe%zJ;+4anxB?ssKlaYLzDo{O^ap4?MsP$`Jk4v1jX{htDcxLYt+EOw$Fi-q?Q zHfeM{H%D+Jz?j8xE=qJ&$$gBQ*K~b>GoGoW-iXar(vX5d;;%z{q2)T6MWvQ&shT># zN^16djWj&3o4-E6qO~i(vk1yD5Mu&t*~1oIU*W}0xP+i1LzlI}dpvrV!{^RN0Y=H- z>&J4*iw0Oy*NM}&7F$^99g|YOs%F3|5;#*ha9(Zq?b}nDo!cY(FhfUXw0q8W8S@6b zIi#Fuxchw=vnW{j`%k_}z{6sqOz87a&Jletvi{yt(ot;3E3ix_?tmS(d@j9WcW4`G zV0PIJ0@2Q01L}U`4l?d@=iP^=o&HT8^CN{71=Du}LTvGCYdXC2%jYEoOOvOg5Q{FZ zO++v#x&R~sZek9pwhD1nT~5%iuYLKVQ74Ty^7aRB!BiMEu!Z`YEu$!8u4hi73+|o) zx@9c%anxq`h9y8{;#lbmf zQjd8wz(|0dsA7T};qv3aJg~X_HU0xL0lnfCN$%w?TpG0Xq(y_C?3l>;(Ub(5o0+9p zP?Y2rM1mI^^QUPqbtTqL7bVJHFi_lVTq)0AkZ0M+G@D1W1-~jmpX-;2MjBs^ph;)c z&x~eCd|sPl#Vow%RGeABr(*LkrHtDKT8jBXBxlJkMgV*d;|kfZh82-0D#Jk-#O@CeLB~UNZx6o@IMo-QN;as(!(zbBN-7&diF_J{R z>X;zXci5d!vZ%6ScPsks;q_Tu#9cfY{?|_wIBz~FR;oil^ixTke`x6AJHtP2mXE}NyB|_-J@twonE87RLd`AWn4{_}O6KsRzsa0N z=X&D{j3T0IbcKA)MSTTX#O}sbz)_=+ebR-pDf;3Zh@#K)onT%>bnmL|i(jBG`P?Wu zq!;zaM;8I!X4eKm-W3!3YQ(ShvM?K(((K2#KorQBWww zg80Fs?6w&vFdn*4Y%@$p_%RalW+BGGquF|AFi=9gjJ&sN|4M8o!jaAM7(b94Dt?Ag z7`iGDoNa`qCJO0$;7O=wu@i8j$)Mj)2&!iPCrxNUbMY6u<5{>(9Z~MmwiLSJ9wAp-nVwT_w6MyVk#96;Q>i(0UI7US_XxL}0td9A^9-hC*OeEUO z6y1lj!)&H4z01L)icbWDbE-jupKTh)W!oyXiw;k^F3S?qvGMuj)O zA_rA@uF6l%M^zI!U@GyOl5U@FynwC2$K&RMOgKIQbE+uAou5T<`k6!PV{mLT3L^{* zn^`jf)hB!xVcuf(EsY52iLNCoD>Ylb_w2TK+RDxMWF zsg$ZRhC&G7c1TSrV0VPR zoOs2tXC`ne24jh?%2Z!>B0YoUAUw0NDlo`%)AuRtS1?dTmwJr4Gx}cZI!<1hxDYxR zZq2fm%qo0ciX?OeG=G>JOm{woE*Te!9C1u zK)8OLZ^_ULtG=!}h=0lDXDp=)b*bhUlb|;7f`t`F$Ae59~t>Co~^0ip!;&}(i%hbNxp%0`g^5fQByu7L}J+?hcCx` zC5XxcxV~!iOW%IRw`c(fy^`tXz{JA!STZ&aq&WwKnUk9>>YT`t#_w;LJMXs4x{LHT z?1{yRHCbxbgv)0I6Vx|i)x=Rp_u0eDfWcXP1;j{L1PBaoY(FEQ8bJ$h^8%48Jh7K0 z2{P@01|Gt#Q--az<+bMwj6orlc8X3`q(^4H-|Qtdc8F)icyPt` z@hJUZes}_%-609$6x^d6a#Ca?2bsGCYZ!N4iL-Vh#5bwmP^rO;q!Y9FtQ~@dn3G8s zPgWKyA^2~qYu78qOkz0pnyIQ7ERT>zA9JLS06;VdeAeVyn}L}^f+LE(V9C8O8i4ne zSZd(2Yu@EpP=4TWRC>%8teVw5e#LqOwxdwGel*&utOt$>dvKRH!B~C(mRF*} zb62Ndtn6*EkL70a??`==7v2A=`Ihu6umgG@g{@ZO0f9os_a9bYpVtH1wZ_+_#PS`$ zUB^V7Z~$S!cQJd;g%*4vY7QmC4qd1Ef_&ojspVN0&dsJUNE`a(=9Hl-AbjYr z@^f|4P8zHWqwq6QQQJSJu% zWsf4#HI~CzKFGON^MjR#yOW->&0Zlb>b_Pl+ZuIaasV!aZ4#1_t$NuLQL&kAm28|P zMwE=j!8}M>GXBi@fkw=qA`?-2#Eh2hH6P_IT6#7-kg7fOeNF?4$FHJRpib^W2^|tR zfEbv8=N$~)D4wh;2o19kVlU8YPWv{%Es?rp8Ifn$^rZEftF}t*Tj?0xF|Vce_;MoA zT(2V0T$2bLN`$(Q!c!bLAl}xgplWGo1Z7DWczjst_*Hm^OoaB59SuC%d)3OmqDrz$ zyzqT0JF}qTp8V-vYJ+WuWP)8SBM9w|t#-(fJ8u{>7{*l<3#kzSgZWJ=J=fvQ)FG2& z)wqT?ETk`I0Athukn<#mhIj0tY_|_K+~}k=)$qeHi3F==@#-%%@1=RqP(7wb;rLaw zkgHm_JUK;H=k}}aY-K8$P_ws2?k2)L4z>IiDKg~HmY7a^aE}vdSU`bA&Ak*h|5LGF zvJJk}{#~@c43vuTqo&xp(5QPoDn5Omk=a-x4f>yAdKclFT@gR#4wh7b%n;YxGkS>V zVr+Y^PnilDjHnb;DaanGvG|`*03Q@zzG?E;3UTkl*u8q3{7v4&m?thj+z^0FVjkoj1twlr; z98X^TwsUnvPw0aXN7HB_q=Txj2Z$cGn5qsmWmQ4Yqk-1 zjA($ZXchca^yQRd*3V_0{jZ7%#-kOLoKgl^*JsuxGX&RIX3BwQXY8va_$BlWKsPcp)n>ZGcB5vI`XVMtN;#wxv7HV@t%qm3qfK1&qvF;&6AI@gK|g= zN&qMl&EKPpCK4sU-wQ+<;)=k7tf-I-?q2ipZw*dAu<&24*|({}%6@LmmZ~&49IV-5 zYEU@X2y4B*2e3lmAm0;{;?x{d3yOQw;R2~inl_EX%aYh{mrFdg32YjiLN^Qi# ziEp#Ku4-tpW)8_$;+KYRwoA$dtxz|usf#d_XSXk!@m7WT1UCopn-otIA2`3prr0HVpL0M*0VU~JO0YAfG zPpoz)R=dpD&y~+Mt_}<{t8GAR)rP3MrLEjC!W~~4IckA(kUa-D4wM-9931B&&nr?- z?q_*lU^R&@yes#8qu3)JWN{EW z5MSj;N(IJ7_%xo-4OmiQqUUm?=Fo$wsvn#~BBY1^Le3hWJHzrf^)~gN$Rmtt_$4{q zZ)gt)U2ETmg&Ds9sdYjD*!VVVfMRG`1;V@y*Re3_+CEBIOuR&E5PZ@*j%Pr~jQv{;%VW8*SrcoU3tIuq(Q7J$3|5N8#oPJOoi2DZC@7sI8xzWj}u ztGfp2ciEh4#L&7*;x22AC+Ti@qth0gZ`?GKF*8wf;1m_+``l|rZJS0)zM6~LtD#ZW zOaj>+Fw^-l7Q2j;e4Kglz5#X|mqW30s?V95DrLY_91`Y;Ia&DV5&ne7-Q|}_{e1I^m-)K z3HwudD&h*}HI&M5d=#wf9oS++d! zSH;?5Hw*tEX}J+N1Jmv`*}53Ij9QhZ3NC$G5;{}G_<@y&8Os^4C{GxvL$#x}G0##4 z`^a`q84So)!E3nAZ3E3fH4HlsbhSL&-wzepaq{fptOxb>w;b+;vq;GAJX*sS`^qcB9doT6_JtF4=Of76A-SXl3>hi#&?hc+7SCn&!yBj2o+pY}*#CJD z&P0~F5n8T9Kh*s8vn=Qd;Jq&kCIJlC9RpIb7MG7stIcYcj*W#dfS5~yGt`7#lM zT5(Fq{+gsHNxMW-EzPfRt<@G)??vx%VTHMp+Txc-y<5m*Luzh}AdF{dV!0|*{XUtv z{ffxMtrQ=LXGHC#foPFkMI#wD4GMTNu+_4bsKpa-5edancb=#KhaV~tB67f)w_u87cZzHP(j)dSKK6Rk;H1AFaN zOR;>2Uo1hcosN|Ro@kmoI^616B@C(|0`puG5)xf{2w-P5nfF_a)zg^OSw@vt1cuqj zl{Lu6M$2_|wfP^~Bp~4V!7G zAFcCNXH&953C&bFP)p1W2aQnRev04eY+-$h?*YiR9(bUL<+-^Bqe)cFKu&$==RKGb zR64bn9@@rJ-k#7kJU+$aqSRLYmM3no_L?vrM0w>9N;OER2{BOD>kM8J9~<@`a)dh_ zo9hm}O#a~N`0t^&jbNk~#>bO-cev-$@W7?P)D!K6!5KoR>?nJLY^ghL=ZDEuPVS(X zx*?jXtJQS$m?J>|xPIeTo@mbwPL@hC!vn71h1HLdL6s1Z;@=>vaKoJ%{&QjchjM7n zm(XO3mI~B(kyo7DFPs7kmuZ*_@DELcJ!lkR9J2maafI@9HVty=n$}Fi2|C?tHWPb} z;ZBRq;|oi7xyWBZvxwP}V*U*nqz;FG!F)2{V$Q+rgMD?g+_4YXfn?6BaB2~;if-T{ z&>Af+Nw381B5jCS64|D5Tz~}eS3F@cgo#P)*E~wdhdFQN5I?mzKhRU#AA3v^CCV50 zP1M4YK>7fA-%?ioOrfzXJ<}$Kkl}from9wa{MQOx;+F!_cdOGv=9msVc}H}YhMhrR|c!jVPs zkYh7vo(tEJh1j!(*U!XxY54DUgj$Xhg`->{Ps7G>SQaN%JF7op2IFJd0T+kw&$0zG zCC&MDIp?RrN0acuEeCz5ZA;0i0tKfl!gXHTE5H11stq4=DE_>1B_)GnDypaRTW;>4 z2H}a_%9-Pe{pQ;;D}sv5GScv&6P%%Z=-inGeeMpg2YYa%n=oLG{yq6b#|XV5kJ2kb zPJxsln{`0raA3v>^PO6m!b~!+Es!SW%%B>+@o0UxS= zkSr9TP*RC)*^1bk(o27rsIv8nQfQzz+&VcrvkNz3Wd~~7y*~8e(J^tF|G}1z2B+H% z|AG9>+7E@EgPcgfk=EEG6$N_G1j6l)$0*K0sgR8ty|XPlieO`*uw+y$N=qx3 zwmRlGoV4ACU%;~ob~x)O%wb$HFdyKXNMb_O0-uWAb9G-%yjs{SIGMR)78Umxb3HZf zKsJ~8M~VX$aD;|JNsoT#@tpi6?%J#389uV*SGj9DDTp2rBO!pgv-;EIMAQzby%YNj zI~(B8TbEvQ*2_u3TK<47xRkiQ0{jNgR5a+Y$8Qp5PcaiR%V|DwmR<{ye?Zu}$MoRd zDSWC(1ZO$XX0l`?3`x0J3|?$k7X7^vi|`eONZ$WC%LY|sS9MpzL<~v9{>Tw6btcv!&FnWnCbWQf|DmacPUBWr?wjVg|Bwu>yQ-4u zV+O}{5p~f=D_W&tYgk`v3*Df=(R2lxu3VK~eLKAvQV(bIOsK5BgQN=cnlDh(8CJa;$jwjv`gCR`%>m)pE7@zNO< z!4eKGT$I>8KziaJ2nVPYnwS%+Td2Cyj8HW(iA!+Zs^n;`!SN^u1i?2I3SuHFN?2wQ z=L}MYT!gsM`xox2$tD%;Gp8r>dLO-6Y@YmFHi9=kR+6j#q0&B7X`aqftBd0Zl#xP|N}Qb%+Hk-;C_57F z-0+L)o#ck(zFWbK6kW=;Ru?Vp$LAnJ!VDNmCP;?OeET^zjsshoK)<=}3k5r_2DT!) zSs*jn8oJr2ApDp4BkOItSP!&gJ&>N~@2h=*3;6QHbyhr$YS&5t@eSs+bU1mBdB3c$ zYpG|VU^m+sN2QNjm0mB-_4>_1=9&htFi^YgH@{+iy8vN6Zz8GW+el*>-aSKmhBSeb zx|%XzYQ^cIPq{q2>BQ?ESO;nx56Kdau%4$_)l9USXtx^7u!8Wm$1OZS?%p94P;`Yr z`MH6yKgcnbqW2B%fM#RA`JgHsOqLm;^t*4a{cuKW(m|Nq+Uj%|h2_C~QBJx(Ixp&NH&D&q^U07YFGW8uFn#Cczb2UndvpXS|MX#8q6m;URD&@s@ zDqCcU6bUt*-mW5yiTOY?iz_~8LL-%FP{ul@VwAp7Ukqpg3w%p!ptQhS)C`5us)!%CFURvNvxu zfB2~dX;V8=R(vUrF*wtrh1HLeuiX5O%H|!eA435A|97_!LzXyg^wNxEF6u#vlvdrBl5;+l&-(!73{#hy}l9d_GsYv7%4zB2zzXHe;$H zh)(~e@i0@F?Hi{^0yKj-cC0rD8hBc)se1Gy#6LU@ck?MwaF!z~)*9m9wKsoa?Q=55 zQ_?iP!F~W3TQ(esRpMkpIw^W6xWjsRVcLm35Ku3}D@DP%;R6p2gmH|`#G+^)5iqUS zHH30OHc>t^^GQ~Tvc0rOJEcVNU5o7GDYjZF3Ahn|fP&*KbW1C7bEqL2IzaqFi~V_$ zIIU?ZpFOAd8&RpO9_-=EOg~zXy&Z0UtRATH}pUha*~dKmaKUssrY3 z^fhG~s^kkGn@I4RnL zHg6G4bSDKS3UG7GWnP;s~dO%@|B#4hWqg}7WuZM&FhonwpTA}H2=iXa^h~VPTWW% z^k{yX_C4jEtnSeknNlSB))7eDSY&3g7K(YfH1?|0RMv<9$@*-*dZ|=}L>h0SidA6* z8X3O-Ve=<&33dNg9+eSlU9{}kc_==l}N)*FwXO+a2%x*@L=XJ)H8?Fz|(c?j^KJ^$j`58$GM z>IS4EW|;_)L4GzN(;T~U1rs}}!Td37zn$qax0M>2zu^{HwF&j*s>zB$P1gz`Wnh|ve?B*5_l zvI?9_G`wgg(OE2b5Auz^A=!SnBqRx>q&w``_vPquQ>=9&>6Ayfz}$ph2S2c8!y^5iCTc%=>-To`l%;kKf-v zKP}m__qsmoSulx=->=i4>$|LO`Vpb1k?6q9UDn4MBkYN)^h8wRlcrk(5$r+8ci&>au z`HRhO&JaQ03hwt^6mvwI_=iIc3+6UmJ@|lFMU-U4eTS@t#pdc6mWJ%C7vXbmI{raIrCQ-$5DjnHWC$J^T>DiqPR@Cw&=@v|nBGuVs3 zr$!S6WWQe$BU%AMnyR+@P0L^74o--T^@lsN^4FwqdQWHS3cnubhY=B$vHA3RSUVhy zoOh9auQEfN7h&tm+C-#xewwxAIfj@J?3o`U*z1=3qz}s5*ySUNi8}vZi^*Fs11#qO z9PX1pwdOao&80K6_`-&!V64WZ%bAyo##t?t?YQRAzQAw!Rd1L1TLwl zYnN>tY*Uy0`NAHKUQ9!E67fQ;KuPTmN7bf&^M6E|8kJ0J;)Kze$;bS$o4%#fj_cVx z+Ggv{38~b)^c;wG87WhUOt{NIw7_7-X@8O@V05Ie==AHI9({tQsOSvb)6}-7kAVbJ z_WX@M_WpzMiU)U*!gX<7N}WB(hChLsNaL@QHUpFG5{v7`CqA#xpEF}bCv-2a%TBy4 z)o+$%*W%oQ_D4FC>x96bTGPdr2^Mg10kZ+GF z%pJ982E*6%#I07>L12Znq<8w=0(f-?Z^8|I&Q5>2{FbcU%foF2EvcFk$^_x<_#lgi z$QNpFu&|M{ARrOw$HJaXUXiE-(`M*Yad5~f#S`*yPQZ*%ytwvOVKK%XNY~K zuWgAs`ZqWfaWP1x#}4P68a@OQ?uR~la$=|KgJ7&CwK?#JQDI8{nXDs%g*>Li>q;5` zedV&gy3J)YhXfVNklcn}C4smcT7;=-dY>t*n_Ms@a6>_C&Z2rMc1k|6q}_kiJR)e zy9jqdWW{8)!RXRM?t%0wt~ly`PIb;GbH6r-6sG-Vc4(h0g(O($W$G{heHNC8RKp?J zg@<2j_048C+A6i;BazLKcGcMNE~X59+&z%^rI|H7Y7GoA4GV)3oP~V9tRG>Xl#N?y zs>=SD5ZVnH7vS%7^829sku}yLUmz4%dPo7ox z1#o+by8lDnYuul~R9M1j3P954S=WXdGabPz5yOet#;;3zD9t@aN<(U{=gigX#f3F` zm~PObA?ZofSfy)>)$Nm9HbYy(=s*tuzr*oFhyP+H%1J0V_aZDsCfT}5ecVYN2Y;w> zB0k{hfiZPI&`llq0Bl3-C)XqtT&i>;7YM$C&qNO|P0EQ)kSdhlugia*^3}J8H+v-1 zDK-eg+6AuGV#?T;5`+AUE_n|nnS)Hr9?WtEqh|)P4qe6dZyleMh^B&ix4`2Oxte-@cVkE%6gVTNQR z$Y8XJQb*gHK=4zvi6}hJ>6a2r?-jHAK;`b4vZ#NY-L|CaTt%dTfD8pF$xr=K?oxaC z1SV+yG%79{_xkpd*wq!PmspN3@xsaopCvzOsNTiZ;aOh5&1G~F{Eq($;r3magu3%F zz4B*lf-l(Hi3*ud9mQQP2vn{V>vVO?D@}!SJ<&ZpH{RXqaTT}&Ut;Se1tt`@g15yo z3o-&z3vz)u`m zSHKA(EWbZ%nH@GS@HGOomA~uCC7MmoP22Avao>tuG_!kwgl*C8x+v3va)W_pHz%^6)ucOy_nB<4C&h)(2!#`;Jw zqt10tVq7aB6R~`P8(+km5mITRxr}MFdfkx9=*e{)q`sCOiGkqf48`a|q0y2`7_2waZXPY=7UUiiHb-viEshYzo=BN!!0E?-7fd`^oUR0-fS5NiUAo5XWsC^Cl1 zfla@|FAFhsIvuAmTHWi2LtdMb064mflx1Sv!qT51d>9961z~(I>Z5CXTTrg*xKv_R zs10Fch04yULljNeDB+VYF<3Ut<-%tb6`)W??}}Zhh8lR1n4sE0KUaCAqX_*Rx{f|=F@|(7IEA+B8dw(T;4;R5W*mJ?bC=VjCJ#Fe;2bWrw$}TtyvL(Hv0FynRk|zx~-N;wU_1ZORaP z%BG+55*Feo@1KvaN?lU-Dt*AXXuP9krg~9pNh*B$R|;|hv(3*4T$H;it)lLgA(XTW zjcxU&QOL!4knE3LZjgI#SubAZPP|%go0S&Ho;{@xyIKg@^ij51Moe~@+tZN!%ZA1K^|1-YEA{A%1Et&RYlz!tQ@={ z4OT2+kN!umAY~Q;%7}T2`>(dC*>$h451D|9BmK^1qx9$b`iw^|qF1g!r^#xG7&h(ZgER5NXc!x5Uu$NPFPge z@h!peZX|s&-OkwLMbLJQ_j`GVm3gOn;axpqIg3%`YPaKdeHyd4WT<-}8y(c@;y|w1 zrM`iT-#h>Tn~=9A6TRC-+Ek>4d1%9+V02g$V^gwVx=qQ5pNAbSr|6d@KhzCXgjk+O zujaHBD@Rbjgky`#nnmGIBOoa`?H}t3mSQ`ZvS-bsocwivWb9RFywwkA2tHJ+Jf~PI z5&1wB%IjRKm~WMOP8+>sn#s}(>No)vqB8AuS|UEh_CN_r<~IKr$PDl9kqy6j+NQ$r z?j!PudD||{9d5dYTn@W5hqyMk(^EZxj~$-5N#VBTb?J1rs9dEplwDE@5R0DBCc$>3 zcZrOn!}4=L49GPpORVG!|Oo2rf@ScF}cUwLBlrTXGA&e)fVfmRSVr+$BlnGt(}2mV49hZhq!eQXrP zT{2Vrl?bGe&;OHzO0T+cRhB$gs9Q8RujGPiG~dQt$mMclWK9Zg63k0HIfkowQ_EGh zE}d0sG|$jw-B(8t|9ri*VpL@QsNrM|uD~J^Ppd@Y<&<4;kg?RGuO5Ak|F_o~`}X%9 zDlBgucU*Ir@BQ!5Ll_9I?2TqbNY=PsW$YS!Bd?j+9|Cywcx72w1O)%ix!v+e;6LToq#ig8_0iC z<&1fo+hVtdUnA^M-w5cO5a^86kg9SnRx?FPcTfNnyy0Hoi2_L+R+Vb}rpH{F9dj17 zjvih%XYk{uSCB0tT7+DT4sXUbduz!R|3>SrZ8b$yL#Y3OeUja#Z`i~%9yr!F!iyN9 zk!js_?1Y)2F)ilyhCfRVz9R}h+xmhXtD{uTepjD0^qfaP^F>F_4<`VywAFESY$BF_ z6XR<#Y*s~FPw-D%Cb2aBWOw-aNKX|6tr6C6_A97j0$KM|x)mZ}H5nU&J@TZ(@59;? zxLg7N?1Jy+x&<@8rC)4viQlGPqing^jJVX!7P~BZj6$KC`mlm_NMPxXln>;wBjtVh zqq~c2{eqHn|9xtEEt^Hs|OXx!icy5xH!IQ0*O0C(alb)8hNl$)7YP3EkKa3p* zT3h6yk*8K&?HOs`+5J=b!?#x5 zd&?HP13hHB`K0gKuMQhK9@O2XmBh=$MK^AnO2%Ipp1Rn0k06qEoZG}$O9X=mg$DAy)tipOz@*So zXd_O6-eQwN-UVhwdGKOM%!Cy(NtsS{pO0TIktze(Iv*3VS2NX4$3!SDzgwMvZ;7Rz zGtUs;A>zHVJmHLuRx{#Hk2Geh0~D|-vLpTswM#$V7x8DR|Iv^21lUtQmB+Gvbf)2G zwp_FEHk%n=Q;J}7O|huI$(oeOFratsY+gI*j$|qdx|7Ah;l9;}-G~ao@@A=zmum*qJI82}+m^J4|M_mc-=@ur0H&z2)7GsuuHzTL8<(;F>o`7xk&XK}0zY7MEHf@GK z9|+Ztb+(jF4CYy$x%vvNu3%)e+R4bga@2Kr$0h~F?{U!x9sHfu)_s17$tDG6q2%-w zgy%XiO7RwxZ7IkoX2;de#Lxl;Fz->{m%Hs54yyR=BhCmpurtKMk%P%$ZQxN^D|4IQ zC99{={3G^TXmdKYq2MHY-eIdFF|rN*QJ9hw>Ri7JMcm0ws9);m;HZug!x>#nRb$7k z6X_Z?Ep&tdi%zkW_g0CF7W~}I=neUG>tu z#>3h#8E4Kx)%_QSQ***vQf%E?$|j(+Yd`~deSMaCZ- z5w`qaDPon><1vL+aDV%!(~_4IPq?)d5G*M+Z!N`RbfPpzh}b1G7cMDwg_o2{gwoJv zw}XA@JAq^^6Z@15C+dI{02ixeEb)>VRtbvqboC_aJu!sTC;y;&1GoNBJ%LMw(Yz_N zc^n*Iq9xM1hHtT35(wNL)3C)W=7joyN}~5|_gUO-2UJvmCx+v2Z3B7TYuz&kJtB7* z7b%_=&+EoGcWvs-vqdm4=4ZoN!V@e7Y`i|4V-Fx1!JITO*7DDRW8MrY;2@gwlfKVV z98a8StoP&{2$Uk{dnbZJ!hl*tj5rPzt}?-EAq6Uc7GLf)@If%#6qvHW#+UxU_|u+D zmxN+aOu?Z%_?y9ivnP5%gg&IWd6g#`MvEo{)5du0N-j?`kno8A?j? zL2f1#+Aziu9L^pb#3n#p5$w98;gC+7#LXyi7Cf=IoZ)cMt~{bf-6Ns;4st9;stHkw z?40h)Gc~ZyH=a22sX+UFrbWO{^Bqp{4`6>e?b#MV{P71=x3<5LpB}Ez_*9cP?ygld zS|%|BE%ZI&Iqf{a>oQ*R4(U&_udUqnq@)QLUV80dGt%6%Oe8tjJ)z-`q4-glB;jmSaYm!dr2I7*YsQ~TEZPFAWfG1eCwd_iG zl($Blp5p4l^$${IG)Y)^t3Jafjf3hP_KdY;ZumwN(MI$0^6}OH1mbTf70d(CpUMj; zoCg9T_g3TKhviMBI$e~R6Kq60wq!0eBB3N;!^sL`$NM_@#BLD|p8MNxI%InxIDB7> zUI&tcJyqqbl)8ba(?Gzv!aPuo#+tpkWcjL$a9dU)K#u^evOj-`__r;|p-=1KpGoJ) z<@(j1n6Dm~T%Vb4!ZEfS*vYAJ!6;9*xE7W6S|Q;bBp$2yxts`aL+rIS6yP9=@5*`) z;v`}FN%cCPe3t5N1nhzYKt+O|i?At35LQuBEfm^Et`S09oRDL2Nmqhul0;DSsg}Rq zLd^na(}r`@b5A&(p5;!jKvRHSuMkx8~Yq6Mi(L8OpL4UZDJ9>(U>%+t18NXx3o3$!q z;R=}AMeK{F4f337?b9r6shfi4*+TUKSAVNB;tn z!#Tx+mva)Lt^}$zeKXNS)K4ZnnHz#yu}JOvx+ZTRi7;8g(s0Ai9Kj-M;eE5;OtB0|%xw;Sp7i7kSIwj@FGb{TQF zv6RhoUvOHUzZerY=*WOt4C7>j;~TOK5uN$7up_PtH#~>Hf&%{#k$>6th`(5C)3}Jj zs}3j!M-&u9PjkAS<~6#$jH=W3oOEYm7*kameH&6zl6Xae*VX?W{a@a+`Y&qnkB`dU z7f&viR4#iKu7OmF+*9|fz`UV#lB1SL0HL|)!g_hO*W|Fgo%nnjCk{bLoo%WR;v|Qh zuPeFGB|%d-C^4gxVr5+tE5>&SM|Y=(V|z1kHZ`LS#z>YLPQ?f(Sst%#SX?PDVL=eq zo^@=Vu!&2$V;xLqo6O6W$JQM3pf=D-h(c#qIo3^TfIX@Ch;F0lBMOQ{+Seu!BUsBD z7y)<)twUd``M~-3$^@2)NXM#aqbu{c$n#p=cLIoH24S z3DpxG)@@%af{3OnCg`Y|(Sy1dA~*FOmpjEfVuu|1Xg8uUxkY+&6N(OzUe)J1f|KNi zw04}jLIB^RssVwTt)GcpSca{=~XZst7e@Xkwy;&Le`tVZ$k%hjW_ z)X9UagP)WS)p;F_f3n>UUQJxhqIc4gHsu$~cH~8|X(E%wEsP@~BUJBB3Xaw+kJ>3nB%~G*8{}}r0W3Us6?d4#HbUuPj1)oK#lOXjBrqG0T%%9>vFrp zbK8qXB`7iYOw98{y&@6DB>E`oi_tO{zfPi_n1hJuR3qb|g_*QKdq1MRrQ$&`6i8Jc zF2b_XpXHgOdjFsgzD~~^8C$5)4bAx;Pn;twT;W}h@aSxumA9riIL-2U61VXVZsQ%^ zn;o&V4v*WZ=NSBZhu=-=7F);?+2|odz_lR57QL%KDIc^#Kl z$Bbwa)zrq^B*Dj7qFmk-<#2y;L$`)5T+zqaPKgDQ)gOl7ybqAXY-W8H zQW$rMHMwB@wd@M#+J&Kw1{cPVglb6T=I#u9!QNPEFb|;Z2Ws>;nyWT0b$ z7(VveUS$tHLlH4R>rr>HO;=JxlypXOfhOiXR-Slh7|mLP?(4-Mw1kui5_j5W{mNkd z)^o}0Fq$sqrRdVT)b~-T=-v`Rb8rK$XSa_c-`pm#n=7aL{MDP*iVjj@hHG6A@2^n4 zm%)j$-u!Q7uN!R@&cRpg_Pe1v%;%(fw3e-ZJq4l%r~})E5B$7yFmAD2!ueTC(ydZl z@atisk+f?buivaWLgMpz*bN^g`bN}}dfdg!(1mvK>_A>{kkf!roQELZ;-(txK6CdW z<2S*Bk?e^T@G1S)Bvtehn7mA97w1+Y06IZX12JJzHj_V+!4l{NvtwUi%<5}UI=S$1 z;G$j-J1DJ<7*uDGj>e9`TMl7u!gWV)5p43rg|JLmM>SoRU3>0~0~@&1eynyvScIYY zd|nd?$-spV|G-3f;@zt$362A4Z>q{-G@?otVw+Isi7e7()mMYUwc+^q&3@_fH#8xL z7`%yFq4DzDSTEPcy%4`9uRcE<7sz03czuS$To7K4|G{nFU*1}nbYoFcAZ4FSa~L@x z`f{P}sEExpc6d{gy&jk_Rf6yZi@93!(MD;NEkH~yyXXDET;t`&YHRtv<)Mwqj=(FJ zo?@seq}TsdM`^9uq^l6oHbGmYaWqu<#?Fd#W9K6ar9nuBv2)q@Nct_Lp)_`kGj`mJ zN56a2tJB|f5&`TGG)lS@`7xaOSmWh|boed1!<{1`glMeZ)#{x`1o#OB$t;a`L3Fo_ zxJUgI^kLYE>++?F@e&*f;5O$12LevNCvO2!=cOMb0>9@Csu`QA%==2I@(8 z3)*!GK@q|my_n9ZU~KiW2@=|{A&M*%Lr(j7*wknCm@%PD}I`nhTuL)9o7t)Rp(V0GX4Qi0}b1LOk4LrAnA zyNYCW6^N=Cv7iT>pLyPLM_fB1<)2|F+3FhCVtY)EjTDb_Dkl>by)(N00X21y?M9i@ z(gN4olotgFKgZk*$F8PdxgX=WQg%xHC-W6G$Ct2H2&COKIvqX3P~?-Ux-X;e6H^Rj z?a_CQ*mbSGQ|8&Z-5^4xJFl`oa2eu3GzI3_a&%d2-SVoslA%gfx>C;PcDZCn!XhnO z3^=qJ9a%(l8BmUMt$ug&bVxB|hlV`mbq#hyD1voESy3#CRNn!7^?pIZaw&@*3QU{2NBv0;?jlX$Ik&1w|lh%83wd7)HojBU8cNS zsFrjDRe|V|4a7>TwLBAR2@-DXBsfVDTFA`?V#$O?KYYL)yS1Y3&`_sK?M|6i>_0)A zDrvvNN(ydW0* zRjckYw-)nYHY3uvby${ulzaF~@`Vgi2;U}}&38z#t#|P+_P313vMV07%d3OC>~-oG z{=_m_x)w7}I;)XAkXc^$4|=bPzo7ferV=i?lI@fuYe1E=M>?BtlWzI1vsw6Hc@lf6 z-+%z+bzivmLhbi<%Aq-+F2}1`Ytf?f={){|)Q`U)gO5aHmUTB%Y0;{?^hJUS)>Be~ zSz&MNiKO3-Y!eE~9bhE+j1)|bAa**dri*og2o5v3Ux(HwIfBW_H9f}8;756<%omX3 z#*K$UjM3Q1G5Uf)DUz9H?DS7eF7)K>Usq>#t3s}EAcY2oMvUo^tuinhbi0$Oy%_F9 z4_W1L{{cxfr0wxv@s#wkC{jG(v+zeQ$%sbkmXBv2E>D2oqK4oDYL;Y{UIqh}97673 zk4G?y%hmLVcKb8mNz~gd3e7~P2O&mus+ZnI4fe#xYCjjK@Jo6<%maQ%Ccl%phFCsjqv9l;6PycAhu$vd(KBKt`{M6+AE+Oo8m&rDHpTNNF zVbyJt_DN%wSh}qOT`)7Wfz6eTd9)tyh4QKo8zqQeF>*YS?HtGdC2gGux_7-tV;aov7KLgE%1ZSQ_ThLIWlJ_W3;(j1oD z)=SdHIp;g(R^$eF!pXnJj>Rds;uNM@+Jj7v=I+^tjhzE6-7`OSo;mf)s#VVT3sTWW zPF)o!8ap;50~lBPpWUO#2t8oz@FaIO-$yytj68AYBFmH0lb@2VwXL+V^n#d1I_VxR3DNO1O#L&gfAC^#eR5Uv^Pny6qUxDppNJ7 zMwe8|jHVAOXyJ?0p5IXuC2+3b6`8d-qzKp{Vhe6)J?b!)bFquj2m=ybPL?&UivGqw z-=(Uk-eb@4H!Ok~RrjhqKEtEsnZfCdspQ2?1gNV{C{}7l#G2dEFCs*xPYS;zuSh;)FK}qXr3eW+o8{#t_oX<__|nA+B5+xv9MSe7 z@(uA{aMG5$)8pXCma=p)5*R9RNu5;G<}-0k%57PbFcu^SwO)|1?YdH?bG;c1saXZc zH8gsN*_Duu`zT;EtwUzUMcrY&Boz{ko1SdEWEqgd*xD=tFZ8W*S%b^;kCx_Dy6RLR zA$kg08Y$6NWgZODXd(*-z7KA1g;LK0*R9f-bSgW$qiB?KMR1~h=U;YVP|+Aei@zX6 z%%hfuq2&vyOx9=@^ueLBeydGZWH0K;+Cl!3^xICG2wnOBSy~}Nv5my0+YzFc-Jt#| z629O{e3tXZ2CHod;Q<*bjZ0v;@&TM%HPlEUD4~M@UkDIZYW*{$x$(|FVooM=OT#RWJ<|IUn9+(>8}WzC14 z;orz(J@Q;N*Fp-eVMmh0Do?UzVa%!m`+;1OkA)}~SR5&y;xr$U1*%wL<7dT^_zwB4 z5eOHHgIUS?d#B^7Ro@79dR(jT|Jr?)=AzgISW@e+@PzjGh=LQs+G=QDO*I<>fd_^+ zP2ldZjyd26F1HrW6$OeON4eRvBtfFp`_Hm{D*IP1C9a049o}t#kLnH<1N8gkl3sNm z4BW}Q?lsqLIqS%AIM%u~{^Z0it2HZ6#4GBgA#O=FwWW%5$e*<~XmVDy>xqXlPk@ajTwoi~pil?FZgc z#bcmQ{DHBDl;sJ^)jQ zl~@OTX_aHQOi~On)aqXj%d-;D$7kDU*5O-hUQiQMn`Wa=z>%QQm2k!E47JeA)0Ys; z<+(?AN_b?#jHI`aOm&CvahSTwC))d9VImJYI9O_Lax~VORhjFspEwL()x4iP$(p!e z1pSiGdZZtPne312Its@-ItnK^Vlxxh1>fG*nkPH_T=cVE6mHbm>L=NKml{3vYl8KX zK)~4Xnx$D_D~&J@3TKgF%t}ZyOEMYPo3%5$aqFLGli5)HC}`LjnMBE4p+Ppm9|sa9 z!o+el_|oh)6$f4*YRRnNWcz%@nPCKljlN4=8{j{Y^TD2+Sy)hEj*;K?QamMRRQ2tl zjne6Z)UZzjB7z@A+#UNy0@@S}rNHQu1zbtv+c-|G+MsRJMg#2rX~Pvh)B*tq^k;hWBUW9o-bMG+T-- zs!in>lf(RKY+fQrn@ww12Chj!HixIX>EVYhAapES5q@d8tZ5)U z{(?N{&r65sz$&XILr*zbeQ}N~5+`M)`0m#qMk2c4U(P)IJ90ja$A{hzH#p*095D(m zK=xF`V%sJfBN-{32oay>uCyg6Pd&81af6%Y#WbAs@9A<@4;Z$j7V^Y3su;F4uid zhl#u#PY1wSBhIK=<*QCV0*7serO3+W)Ae2}ET-AEb0r?~R(|vT;MMraFL9gti#e3; z5@}A;^LJ2op`9S!mj9)&0wY0ySvYdyk;6f-UPU4EV{K$i?8~r-`prRixSGF1vO;mx zLsl%NKN8!HtPKdG3E__fMypFiUSN5O)dNTM&g&!#GNup3kL4mGSK*!PsD}Qu;HXyY zZz=~`iqI&kjnoCYpR-5QGCRCA5zDud>JC?K$&|4-VF}gZdl4zUwU`e_R1ap75?T@& zQ6aL=Ty+`-As=Up4kLUG=e`I=p5-VBHM}U=ObKf0UYpwC`?Ey1u5@!}pe-&9_s7tB zu*9gR2VGzdW)+otLk;~&=4j(l-=EPdTSdj{@g6-d3Q4LB`i)e@6aD@-{gO9ZLS^&@ z$fxL0_wh!uEl`t@<*4ODBU_uMCm5S3HuL4&^&haD}xHv>hOzL6lVSbhBV&@e|y8{F;DPZI~$ z<1w$b7I_Fsx<5zDN=e{grVjOYKR6Gd@h|_JaIeRBc%KH~pP^W!D{|xo-A3~i9th1~ zPL|eL@y6jUAJc^oI|5&{P4ouv76~2!Ai%)3Oe*wPi#^tOGb1Y67u^6K-75bDd+9oj zhZoR@hK>j``_%~|3vlN!nzdPoT0!pVh)~l_ z%kl=9YN-^8WWFE=BSsvQSR8IkFJENSFH8{!-`Cq+1}}-(6RXFq8vBvLVzu=xfvwT} zbAcB2Q+^L3ux;DLG0tAL8~Gp>I<_WEmg7!cMNn&l{w8^olq_+;Yx%lf29ge$egTbG z!LBQ~q;{k~VZJ&0z|1#e5^L`ZeBkX9v%6<@=k+wCNchhKgokqFH}nLLi_KVNS0wvE zIA1l$JqYYK9=?d4LJe=iE9Mg}t63{lfk)ZiTZrasI@gTR_FP?7@o!x^*6Sg4LatCG zLJjUk<7Q2S9%bfdtQ)1avu*itAs8Md0KlVdEI$Holw$|2iK^(25D!sM8O?cu8tmC5 zS*6-PBv7&GG8l?g@?q*$RQ901e(2>|TqLG_wT`VF5 zV`pim*^PZ;q})kDnUshp$s}&!K`riTlr$KOWiqVIHOLe5dV=>}K%pT{_lGBj$C;r= zpmC|~h`a?u)Y;>V7wec)f|-DV2FHqRWuZCNx>SoX-XfL4ne&7e_c%#~B4i@sO#TE-VJS09wy88Z`_8fwjRFO(!KyRE_ z`l8wI@?+S*>|Yxao3goLO93^r7NTfuywPFZ_Rw+({#$t@ILX-gsQ+0;9$A=!E>@jG z$cdiMN$6m#V5)MkD-LZG*|N1T*Q)7CUU;SRv%J^LnuEr}AIL(A#JSCh+-~9Z7$*_< zk(66UoUfv0B=5t+vdQv(zh-P62wu~*cAWXz%+F#M&HQ~L0FrnLACc?kq4?@zlpfAO z&Iat~&%n4kYuqzyy5!1=^({twv?QiZM$;zgwv299TyN|woM_gd3~^~2;zOtw??<2z zYAknfLI(Wd#@if5v)0=9dWF-Qbwy1Z5=taSXM(-plB-!3O$~fmu+Q}07MLJ3W;{L2 zKFk$%t2j#-%oM40G4^zv$l3;~M_t{IhK|Wz(a;;aAHYI^L2b+- zlGPJni4BS1Z9-5nZ^qOdD`6w1ONWLUz@xVr9+555Evmej8!$u%Ss2_` zNANUu((rH7Y{Cy3baP{dL%%2&bxfc98UlVvSaC7+6J}r_kEF4iQB^vF>mwD!Hc%na zPIaP<4b_8dv+-L|k)QBNht0mrnqMrYOH~T)jAG4kGM1QYJh3qe@2OY`fxNv~#@JRq zzkZid|Fe~ksCcQ|gMKzir688nWaAVDH?eoAa!T zmQ|EPqiG7@#POQ2Z-T#r)we3@jASN* zo*D&3zm>VGgcXNnkLPckvFR^XMXv0*_h8N{a9f_Gu6tUXy-)kIbF^*FQ^KeE5v5H{ zslD9sa=43tPX6o>Xe|k7gwI>A5i<*~G9ecd^?aEIG#ZW?c**EezGF16R@o&Jb{Z66;BK5@IGNfBo;(alohi`(48YLYuI2;q^q@z1e%xa#BENa80Q$VR$t-M zZ^ME*7%0hihs01!=H^sJm<;o6Ns8^wTsB1f64oU%X>3(4K3n$2%w|nPCqCOYzSi_+ z2d13%U+NBKh7Ms(+0WkS_-iF#v&5?C09vicIDbEn2~G(s)He?qO#d z@APXxFfpBXn|<%k4xRXL)Zjm_3!0)ws2^XGi+`Olz=DztG-=>4By6} zn|v_#rWeln_P`XZh}f{B5@V3yD)uCVF&o}XHZ>M_1LM3vdn>!WZW$8 zVJK|J+RoxxKt9|t13RP}^Ex;6g*N^Nv7f>(9+CA$dg#5=ImE+_Bqe_onlEya>WtVp zY$C-ly+=);RRUYjKr!s1u|J>or#b`aRaPpPe9w>0W7abQRTHuTIUFiLtXpwPYxPfU z@twMN|BOgMa%_&IG`BHR6lvTt;;~7VHZ0D-kAE`l5sBT_yV(dt&v~D%?!xk>#Xogq zPojDxWX_L-tdz`%WPVSrX3X(*Gh~t-KV)}FV9%Aa?s-?Pp4=2ZohqgQ zkc9na$&BE**aRzWVQps-Kr@Rn!uw}5pWghJ;jSnqTPl#DMlsq7S?SfZiCuu+2X+{I zaOt%`ZKP;?cyQdh6(qzwvW@V5LcX3ksC{2KVTHg~sq3jr;F%j`l?RrYuVNh4KoR+g z4{S~B+e1&$FJizaKk$sx_L^cx)rD?@cf%AG`kDbs5kSG>mc*rSE=klI;+! zpFaucI`NI=Ke#z>Mu*pVQk!5xbw?#W#O|P{;Ma_u^{J6e38LkQESQu|nnZNM{mT2e z%}G(YIzV<#teXaG{Ff}+NZ1JL0jnA*9-B_yy(KtS$TsH#co9@qs*pK)b;QcU=Lc}` z)nhmtD`HaQ1=hb#Gsw6nJ$5x2Xd6cJ&Kzj*I%Cs7H`s{sCT51UM&bZ7{Q=gdjRsVGVijTUo8eNfTRKV;}t!jvYS}=de9qfRJ3)mt2Og&Y=22 zJ!=VTUmZx_BUr?%)$q9SvVr;GzhVx&{(lAiYI;>4F!7p4u?{}LdJV=`r|+36;QZn` zJrwF`u0_=U77=5J7T)_h8@p01U4|-Q1DSOU(kQ{yu?SHp^ zz@4#o&-Ho`Ris5xuW?GTG74!s)k%4E0_?xV1q@f6S5Je5)hrl_16xWN-P1N~ny-!c z(&gk6L1jNMJ?+0NBX}F5ymcevT_{1VVNlx0D~T7)mynwXFn+Knc^M)=5VEp%d*?#`E^amI#2h?UkC||FbvszCn4Nz4@*V^B4nszgbo)&Y*J0p+BooD6WL311YQbV;8CY$p#$ zc|z}Xm|CTpQRMEKEz|W4R8=g2*s_7u4_S8e=n&khF| zVEEHB_KV%1Gi0>WXcF%(jzRXqfci56W+uneWvue@WdNd|Ohh^yc0H2lF^SV*zFS;>R(%Gf7Vin@PL`-u zx@ibWfBplxnFdM(M$(<{nJhCXMfBcBwwn`b?KfrWedbBrR-Qyti~Euw z&#mcsIx8W^8~*v?J`2ZEl&)8|!uhe+uRf(>wS+zUfPl!he~Pbfk6d)rd-6#n@lGA5 z6kUlHq(}c(C?2yx4TS$~ohA_;0T#V8tYHlA%J6bdJ@0k(-PI zW)bh)k`T7k9hZ}$S51<+4Nn+Nl0(e`2C?ZfVmZPAmjLT#DR*nS)TP#~400v&uu5ma zfMybym&IExrGwe(&TokEKZINA-A7nSu6ug~^X2!O(#|k#u_e%4&fZE$p5owO_NkWnqTFNum824_i@bwMs!Nke2L@rl%d?uUhbNro6dAKTwWbjp$Lv&B* z!GQo->D7~TA;cjtjs3JIhgJ|ESn1859A~c&sI6OJrNs6vy@JF>>%Jwde{3={EVBy> zb(gLEktXN=rdQ1(lqoeQ(GTA9dhY#Jc`+Pm^oT47OoR}kf4mI}9Uwk}+>q7ld`b|J z_;pa0c1>Nj&=K+1m?4%SZwZ~bOOILT41pQ#(JZGBVdUywfod}BePrE&?l6lYd*pXg z1)fBYe3mrG2nN*0ztxbV*d?pt8UxGsNJ;6JDW?7F6eU?ux8{e$O>j;m*pE{A``<%* zMDCtY@Ki`&INqMF3FL#))F--IIo5V@Nc__}Nplj)GW~Q>vO91o*>-Mm1(MDjrMRXA z5Z7*;Hlkr#vTk>YeWWjD_Qaf?(A-&pvxKX47KKRe7yLAQc6{Ub@YxB$GBtmZScz1| z^12&5GC;}GcL(o64KYVx^qHFeaOHsG46#<_RKC(4s;~;HP7M!rj6KvCKE3Wl4wCcG z+t0JudgN@SOtygbu;{lhRS-PRkoo7hSN%o3_A$V2fHyox$faNXs>9pgypY&2;RBiB z^Kl7xF-)~(6L2j+LV`9Shm0fUn~{Pf#LV^$jT+#q+DLm`kUt_@*nm1}u?>Z7wHpDe z|H$RyfYD?Myoh5mO9ZZ1im?4-spdm1@_NX@(`6R9jF&5JM1-Jb4*;^A6|*d_zE5Aq zPf(IPIP=rh9bi^`O-_}%m)?+IR;fGX;dznVR;eoeyq#xUEV~Y*?x<2;Ucur)IP-X_ zzJ2HdJ3`EOL-Q*^+;z$QOlB?V#?>hV!l6#lGTDCR+45#+nQTT-WF>!Xm3#D1Q$zAf zb@yL6xM%PkDoUs6LsF<5X(1t4xKK$19`@x+n2;nmVqK3*7uFqY$de_>M@$+z&Bnl5~<2@WO<450DM>;`$ug>kX~yQ-dLMobYt-9&;~7h*)t@3DZ0}cTCZR2 z9(q-Hr?bZFii){qjW)#)GAMDdNM?-me25h%iU9C4y}3HdA(nU|V2j?tzE8?mxi#8YHG{AzpWM#1_F}W^Oi$$dfHy>hl{4H1KQSx0i15Ep zg!Cn_b7-!)H5VV_L_x7CKuNIa{3J_N2U{tN+$o z7Nby0>9lAC<)Pos;CNvsi=+zJ9=Xlo#6w+-Hsl$ul>2a|RZpy@40UmfZA63L+hpmD z5Ge)u=6hyCUu)5{0kd!m*o6cj#9T>d@riIqiV&h-@2M;aN+GFmPl}_TRBP-;%6Nax{jc#dgSMKop zh&htOYDUY-Bq>(nZ2xF3aoT|#M`h^%yC>)4Uzh)OK$0;muxcuH1q0Pq_- zs&KeT4R<8rT@y*qh-`5n^tdU`DoNo3$*~*cD*#Fhs|>p+^%6xtS25{A#bg{PHF(lw#Xr@v zPZa>j?EC)x?3p?MNX-6&|KH4>4Q}>;9C8X0u1t98TGI(E*<{9b_z44$M$5rpMQ~)%Sm)RUbD2wXcL<lbmCy!lCdg#=wyu( zqkrg#l_2e6eIFi7F`DE+4im63yd=|68eE;oJh0e2P~J*hxVPXYm}+m@=#t6DrUmbj z&?`%jl$>y4tfa=BG*6q{p(|DU`DrGfz^qf|;r6rBu)n5QJH-<}%~#EiQAf>z>F=EB zKJ&)({nI}l^(rxevtkpErNys1R%6G9?i*| z3usie?n2*MK@01FY*k(hzbGgS5a-vD&qB)%CY>YF%V6M%^FeVz?%ARgTTN zcr%eAsCOQOzdT#J1&mITGv4%Ou_BjqV$D7blRK2}MdN5ocfr?!mx?}bTT*cBw)6lY zk>8-S1ahbie?9wDYzq1j(FWg)oCx%Ei|-tPdyf4dl!naD*um(HeTQpezt*vNL9IVDhN$(+54Gd)0xm9%6pz&WV3&4jMapa3y>v{J|L&I>UwTLw8`@ zX#!rtsSc?Bp&&4r$z%L(Bp8?*8#}uBB|Ln@TOLFzpxI8+jqTRpNz5zu>GHdU1`s(ENLlTw*~a0)sjrISf$dhTL*{|@itYwg>IaQ90C>AH?;=R<5td`B1U>y<(hL24sxjWgAMOJfIys#Tjk z7cMr!J?o_zA4~(}!fvt<^8o|9Jlyw>aF^DXv&V)vFDsN0#EU~raqeR@l4d86fnwjo zUY?L#krg9qU>1QlSh^AOkF{6Y6h?z5_PpMaTF!f)S@|SZl(_3ZX_h^X8E3ZHJ*sP) zlhCiPNh;qDoipEzz5w8`G5RpwtReU2Bh2#j{&b`1JG?&K&cpZQdw00c)!Y@lG4z2u z=sJFNEcuw<9eUp#Oe3k|@oP{``JO!HaUXmCc;C~;!^^30^p$s_$4U9}wDE%jIwUOx zt*In6v~G1-lk#3S9=VZHo85VD8V`!KN#5)F+O^re$(8r!IuL=tg1EUjwj~)&Z!o6N z2RxjUhxd7qq=w;!$FT;~=602jxB92uSmYwIPT7<3Z)V27nH67~iJm9E+8tkvY*8ok zA%|q7=Fpze)IDb&H{Uq*t4PDoFy(7#5m_lYW_xOPJ2KSD<1A6-lRP3;_5DoUD!+Y? z;~wl{U5>DjT5gqW1qo&II3PtKzj--lQP%kLwtNlk6_u##=uv`N7Pa2+wi+B_?fXrJV$ z(qDF+_NEe}cOW26*m5POowsM7=BP`>=FzrpEPFP&Y*(w3*2d^M{dQYpB1o{h)FQhn zr*Bt&!*iQN8m=}#Z{&($(WP{VHE3nOb5OlML4;EI!M&z$djpQaZPtR{rQiG3jO2=p z2*$|QLA8K&JJ$7lDsrnyWOgBY1Q8gX35NbE;vV z+=Yd;S&<%_liaYKo6fF$-vFr*DM`4bM}!^cITe4nZSLT>*{^KN5VP}L3(iQ4EU^~Tx;=+{L1uT2A1D6Rg-DUPY^u? z4}}_Uas;OHb#pesB7N>PL@CYe9N`>gJcug%iV4^?fIbpMA29HF)BQEni^2VkxAAaNlCQ4v9ajGawI@)`97 z&2x3{Gj^=Q?4Z=xdF%K{<^(g?ZR~)HU+fewwC?Hc&euYllN^yb*9C&1%^Zc7wUUh` zfjI-im?NUsNlh9FogJh<;OF%mh2RNLLpmKyBNL0y9hfLUOt*oULbi`sijMxnxH~*p zEu(vrSfGc@!d!FFjOdRTD7VL^ck3@=ux{>Mc?TLVZS@Q8=7vAq4EnZznC8SY7SY;ax2W56Y8V2a8p7Ij3y!1 zVuyZ0qF=CzjfbVaPA}EGoNv-9+JX~m5e-XbA^yadVJ$((9-tE#9on1>HT$|04Q6(V zAl(t&&p!>M@a*%jS}}2)ClW4to8G*#p3S+)`t`~s6Q1iWM#cKcx(}^#)Jt2^YVc-3 zgFIi)Cc=o6q$HPUrw>1}P9j3>gq^DCu}bW4BP$6v@~_dFE}gVd zyYH6^L5V_%3sv}4GJifn*6EdZU@M51lR5h^ z-xFVN(O+%3_62iV5yP^1lVLR;SP;9e!!u7@S0bJT2yC!oUQ;So$G0;O5$j{wOLJ>H zdY!5}y&eXGn(#sbuBkVHD((CVH!g6j z&+POskkNGtz{v2a^W8~6t;GAGxLU#T|L+01W^9445j}Us^Liqyc>EoYv1PTanU7!9 zzXnsQs*RWT*M|3M2Lean!`k>G`q3(Wh!9#sA;ZL`JCGwWV1iS0T<|GOC^oLcKaVlX zDHIiJsM&4y1cqQ>%fU264Ir8iHVY6wq&zPHzz&|m8y7f?Z*S*G0)8PT6Ko_vWFl2S zt@Wr5nr0Crt%z7>`bTZvqKtL5q4f-h;9Z3&gu@Xxps$4VlzY@2ztdB0pwnqg+1`t> z`*ozTz%t&}pvjT$tlPrNYb`r08-nJHHNAG(&<5sP5G`a+44X%Rn&@Z3xRWLbX=RYdRdbB6QY9xNLn?21j5QFmaec_ez0h z^l$%{9W?}5v3A1H3hSA4?O;Mm9B^{jq6kalx3G}I;GdKGJ)W>WA_#mB$LHo8Y&~79 zBBmN|vHq1xGWcd>L|l_*$4wacd$t=4AZ z^&tj0{c6|mp%R_d( z!uoMmGG1kyH7xP^?TF2j2&rgM1emdFb;!;yhc?TuL{GI1d7&m0ljRl4lg$epfr}EQ zJG`0B*{6j?yI{{hWPBlU8r5GSnyQKyogMFX08AEl6ss}aDk-t?v;;6@$+JAA2H$#Bp9gl6^1ZRtP9KXKopU8j_6i>`)LCPVCH74b(S}uqUo%khRh0*j6o>6Dcq>>XGxymEqkFqh73uIvzr|ulIA$ibf z{tM-zc`~Afl1Y0-DR#q&Sk~h2L?QrxRwAf1el4=9oxX$eC;B)3v1+=t$ixok9LtRd z4`S&)6b{;14(gryiQtiTN;aDRAa#6)^8BTnj%-Gc(Un(Ky!zGIaUJZQfDiBjLjki1 zBo4_JQK&;bFk9oI#=B0!JW7=8WdDK*Rpt3rrNOK630XZuEEn+OX*YG)>o>Vzj|_Yr zat}q%p8am@($5XkyGoC9zCBKHmI=UcZ4@$fSZLe1<$?N>}2~!X2_AER)jo%buqCeCHVr80pYxeuio0 zub8#^XjGnH$kqLuS)(`+zV*CJGQ+PZjeS{1>&#`vop>zcsY<8>(w5AAMQyqVLvH^p zDkDRIij3wOqQpm0XwhD^4|P~A@ScaAM4>?iHfcV1sUh+IXo+w6E^J6YOnHbT*0`SsZUYra$RgKau;yVZsKSP zH*6z1$NuwOL3a~AVc+DHRkmHf-RgTjL`kTe|t8zPzlrb`@x@po2TyV(m8K-{rJVOSNO!(x zwIzfG4OUHOwCu+8?J}CP}g=&@Pak{+RJfxat% zWQO(_GGE-_o8_2}{*R`Bl1E8|8CJfIcy4D!!m>f7{fB*np!hmU zvZ5f?jf@%ZrwI7sUR)kulsj~hxJ?)7W2TcRLW%(T`#EB4IfRVn>-AT>rwddA&C-I# zF155)N+251xtKVh2URn#AkM5w?mh%Lwb7tSL7^`J=9-WFl)* zQ3ogmK)Il)=I>IpsV({qUWW(A z8qE#-j?Uv(sG*a1r?Qh|<4ADxb(3X?d~&GAqydoOAU}XTNzZi}qfLY=8=4ijt~Rwx z4}e>jq0{8a_6ZaNawe6S5vA&q^psA}mP4(ihCL;t`R}|qji_0YITh6I8|zTNxC^LA zo)hgIcj)*Ks9)n1W$d(7l9;NP7Y^_$k*#WovGbP8`@p3`m@@Hc+2(;U8dEkj3AAF3 z;TL}2h8-hECzcO zZ$&*|R`kQ4V_{>XS5!Wd9f9k$Q_W&9_Un6jEipljZ;jHmapm$Pm=$Qt-V0(Zqd8v+ z)a(sy9PeDqRdRcWCxg65dodk%8V^gnu~o@tcU>=1@o?M4BSvd9OX5=8%#9uEk&YIQ z)4>NLCGqA?qxnxve~S)cWqj)$p81|>eg>hL$)&z1Gp{r76|vFzA?G2ZuQiuWG`nie z^_eq|t9#+VpdIF?LY9&xa?NZa3Y#5KaUI|CneZRRw;tk|vDTXPnYCs$CMkQvZF7`6 zK-J3a;N;dKPFCJ|)F*3rSEk<;PM}?5=lqE;qIea}YhUVB4wRQVEBE&H_fx`Zl9+}> zws7f?N_>cvN3mF$SZgkt!vCj+)fZ~bLL|2XW?_1CGOXslDS9Xa>UEA<+D}B4hqg3H zY{}SsB;6%Khy&|n!28@VXc>;+9H=>-+%?;+q)`2(NmjD)X#4ELLV=AR?^l2MUV?`m z0}@pK-To1{o(9y_!a|%+;am~&odea8?N_dx`*rRITl5;;OxHr*9+AOSJ{#JAq2p9$ z6fevTZ5ZVUjPEGQby|fUvuFlFthCj zCJ>wq=HxI{D`~Nn*0$Wrt+eH*@{ke?3C*C=7KN)pKywxAo(^i%7NVl_|E_&zLQwDh z{Arz>v-dvxx%S#?ucvzZyV#h52(0*!kqzX@Id>ns?|kZ94tcQxLB8a|OcHcOETb0h z`|hBqZlUPs3?~ieDcY#j-V4@ILELRJes$GprfVr%3pR~JQLdW&QONO&fJ#|491cO) zroYTa8KAY|ee+^_*UT}<9t!Mg?_J_K!s*L|xcq;Q(6v^X@#F%b#gtEAui$b)3KyW}l057Bzs{Snjy!wPq@3$+YLg-d?(Iv%)pNXt82A z!(Ljb8P|;a2(DFMMU4sk#5NbLjzX0|r|6L&?;Uy@9yhCV16}A*s3f{23ff_wFXCBy z2)=}Bz{}5a2B6+3mN35p#sw8G0xjP|6+w8OnziU|mQ!B0!xcPJJ#}YdN(uKa+=p9# zW1$~uJWGl;VqQj3hkAgbMpvy_6!)2OD3t$sR+qT6S2EL);gk;L_h)sv1HX|m7Z<8> z3)H2qcO?mTB;_av>*|(L9gLZfV-q>H!36`VqL>2D_H0SQkZ)BL z76X9;ne1ZB2d3KycEcp&i}~cORG>WUYvJ~Vqo|Ksl0c(qI>GvirXxQsJ(BHQITR(> zvnc>7bFHFF1c#y_%-l(!HfF63coInytj|2UVB*x{;fLc(ft5Ka=w0XLs?9&rU8GuT zC>!Kmmd+YOrV3aE7(;Tm4EvM{JtljgPX+bggi%4hb8|U6x`VXygZyc8<*AP&JDa9C{9>?>~L zo-{xcTi2jAD3`46l{XRwBb{rK@u4tI#p}%FPg<+qCAjMpmSgZ!M+z@d3;`Ghy7`4_ z+b@`lW9T0F`)S~&EqV)vnJ~hYxg=Nf!RHDe{7X#m)i9i7*BtyI zezU0>#cU^w->*$|m&i)P3eaej$sqVOyGAGa?;~zF!=w?oxT@hNO;Xe4+Ov;St^Q(d zVoW54m2eI6qr-*4gZ5m7)1D;6C9Ccm#u2VK`(x3s%S7fpm}qAVxo|{VM+aVj3H-9k z{BK$KKDFfMf|i6Ia8CNH?fk_|qTXS7dQctQpycj`Iz3vj0{`OJg5mw6U6u|$u75PV z9g%U7uDJ0_U?9qVz=u*drZkD`)`0eTh6EO!8Y=BkSMvd#0SbMY8Uj;Q0H(Y4QN2Kd zopwTysp*_XqTM>k@Ip(pacYIN9pYpI(Nif#6t2K0c32kUJI;t?Q^HkL>>;p`zAoaz z5I(Ej<{t$ogIOOL=uFCDmmXL>SNwp;71q0da%l%KfkJ7+iHJ1deFe8DfyO;Bfgo$- zR_UaN2pf=j=e86foIo(u@JhN-_)1!28jYAmg{mD^v5>ak10vizE0IqXdCa-Fp`3d| zj(iD>K`gHqCC*$UVwKhShRz*l|1@+X?n91;3Wjju3>BodmJh+sQ&9Ad8&gmRN!5;t zvq}%TA54*Icf1_|Xyz$-vLcr+8mO)>DwIohD~jbTrH~Ub?chBk*zZnz6MoQwXeSB(-9? zQPF2V(2^7#6LQSNOUar$A&UB)Ed@y}HztQN+>tk_5VEcDi2V%%-M<|}+&dQ75g-}i zp|83h6m1uJmh3%1x5PD5+vhTfI2vTwz^gcO9=gwX5z{`LyhtoaXN#Svjx7@+!d26e z$dT_ENfBWjo5DrfgTI*DmIP%``$bwdi_w1rkpz@Z&QOTzGUaU;v(ZPCYPwF=lo(e7Miv4k5j9dx^XSA; zsa}NgR|^UQeS=41aad%#(@&%HxI3t!F*gUNu{Y%+VNAhy84wP&V)*-@P6G8Mc6VEs z{ci@5E@}5h79ch7)~%QsYq=u`%f1h-K>~d3tQ2^`}6?x2{) zAxbmeFc;;xoB!>WJ3QJ$Sm9UnLj2uBaZyf5%S|*J1*omYE+ETPm8+R_ zMTFLzBXPO)_FMIE)$`E82y|eQM;2kAYU*XwF$zs=Xm;kNsS*xfGbAlQl?zaqvqXRq zM1~(TLVf(Yn?GbG%}r7Uc(Ze3_k^Z9p;y-o53RNv?Y(3~$JYk*S`*he9F!C;^0vJk z-#DS|;Z>@RUY2#nKRobWlCfQqqC;*n+U4O3ADC^D7|I!Ed@{K+>ji(h)xUF6NF&%G zpHH_|&8%YLb6re$d=;T8cb1GkpRx?Oh8rRI%GBT9r0)1WSEKfca$M}uff9`ELKB9A zibB%aa4?g1d4h2C8!HW3mi17Z>sdZ)X?AuPL&O0^WF8;Jr>0FR(GyfcP>NjpWI{G*XiA$W(D|il z;$YLw%>6<$*GV&a$GdkPFwl<5x0|}|$(=9`;}fr5zzC{3qWvFil6f)PWio-6v_LpH z@Xp!g;ndJwWyXi@KeY*j*bf-(PWoq9!CrEbvaWj!W?sXZ*flCO?vnV|y*zQj^N$>q zSQTANc#dD6CCeBq1=&8ALU>RI@>k!IZm&@kRdSaNd8 zM!sDtG(pfoZ=$t<>ujXhe6t1>9bD6rL{*~6)vtb7&MC;fR6N~jp|d)CBcnSvhUl;b zv9ak?NgLeF7Fq2C+NCwTm9X!$lF|c1W&I`5Y?EmTr9Eth^!&8#p+16yiLzE`mrUu7 z{N#PTNnqbscx#={A$p1j0oHJEid3tg4#d;kJ6>yPOD5Uabcm#IFe6?h;uQLNyM|%l zxm`X5_ogkI6Py0$WL+#dC=HewK@WMFGB88(XzBzr?azUIbBq#pU{M-6dAW%bOo~7n zuxG&+^YD1=B0+iuvC;MnHAaNyGUq#@i_A^BzU@*%@C(5RLXH)mKD-nS^s^qOpVJ-{jFWsQ<9};*c}r7XP{js6sDhOZkyYu$QNzW zni-Os%}p|SX7lzt$w=NL>k*nhuhvM#!hdH6+eSW!`GQ9*K|jHti`etV})B_~_RE147)i@c+&>fwFLL2IUzhRp*W4&f0cXy13YbNg;Zg z+hx4&ooREyY)M%?tG{iwOZmx%n%V{O?8cn-W+G@C&FwN5#etZ^&;{HNehTzY>&VO2 zLvGk%w#j$a1en|9*=W|W3QXMrV@_LhzR^}9>D#CB%RUG_mLipg3R9YmO=*%7Oy@W9 zTUnGgc{JN4ITn%+%-Ls&E4JqBEIb72^>^=dEDZTl2^i*>ZHA=yng~ z<1ighg&j}n{KD-U(K!^Bg|V9I^oROHir#|eoj$H`F9WR$38k+5&jbO*fh7V-NF{60 ztq%=qYg$FLrYY7Lqp2gati;0kf;QkOsJA1cqzB2n)E&HmN{X^|oF(`Ah2)18Z$E%j zwPe_SI%L|rOaevS!Lia@!Pz2p8H9MaK$Mnk){q)r!mM>s$h#4yR?fCi#x`?7iP4@T zl|gQ_ZKGM^6T%qcFE6(wJ1Fn>I1T;Rcqw1(iZpmMyq@*JYJ6RWHkzB{W23NrgRwZY z(fB-DgH^*ObGuBdMG=_3?HiDh8{7LyLV9}7B4q2@wWo9}9NbT`JVoXTo!LH}3e7fI z3$vkpBSdHWR-V)FxxafUmR=>IaadYrBKNAl=0f+57mCSp4l3uRJ%ic zRBd6aS~G2_89FN;Pe&QOGnC^rH8p02ORg)s~R(vfvXPVE=ZR$AXw931fPq zjMvRJS%$1OnN#=r$9X=jq1@@uG&c#1n;}^gvvAWc87mCjPG=nDL3Fl|WycqlzCz%) z7h%pf%tnduP?S=eT|9DSMyTebSj-zo)vi9kK*AC_u^Wv%0-a#C3lul48O;SHAn)Fd z_)0c{TS$c`6%IbegZzU#)!bpUZRXXi^k74>6X!`G$z_eEu`H4k*0GOd>cYX}yvvgj zlo3U)7O=U;fdZy36F)f2xgL}TPz*DI|Dsf_0mjh{H+Q&q9Pq(2E=o_1nE%q4{zwx=fp+=cX6T&NL&XqrlN2&_N3$D(&Hk_D znsb61;~-?{bR#4a;j2gGV5GT8p5dTm7nJyFnRz)CY;cz>7w50aK`<)cy0Qvki!-MTqzg)AUjZ>@&+;;9=8 z)MGmJBwsbW2e%^7zMe-L3*WYp2cu11adxNqH7aL`thLSvNruHk=`O;<8|MGiWHBFV zV>eadvAlWud%&wzp|3Jt#m6;>)@MQfiYVdSl>b`jabfl%J&)-)*4mZ0b?5EQwa2+T z>fQSVjG8G_8=GAf{WXlT!Q64Jj5Gs7^a2NN$lT8rqlx-}urG>*3nH4R?!d>azi1`8 zgYWYsp*KNu3lKk;H%)@SkOfC?k^8v?Rp?Bi(7!-FG;jXdV))<0AsCHga4!9D81~4; zA3;;dQHIRNy<=)?uD!+kcetloop-!-PndmJ?uN)oX(}#*6n@3W;@eDd5KG<<1t2RD zB1&Pabgi&*%E>YMz(Rzt`8#~%cnw2gGVZyApCfkE-_%mzTds$FB&ZgcwlE}-VZz-z zASsjo!J>Kl&{c2;b$BwXhg?<}nVur9w2L2DY!?3PyQo2XIA6_sAh2&7Emzu|1#-y_ zrH$kIF_^0XN5(Z0Q$koOV`&n~RwxigH5RFh_$<3~jszO`*w5LAZ^Kf&Lsay@P7Fj? z8G71V$pM5|>xjDR9YLpJ)sYL zv+#k%vulk7RqB-{z#@^c<{iFRJ@Ca4-kx7aK3>IBb}^$UtDh5sh^AMa_N(}i>BXtl zdb8poycx)?EeY$AWE?i*NiTm+M9D!>`jEtx_PgLneQ12FMxYv0WqKbn%hHT}T-3*H zj(5`?6zPi=Tz*}`TUD%Qs1M<8XhEeKeMp~=dN^qPNVOFYi4loect23KfqGtA&iEJ2 z(MEPSU$5EdZoXYNzX3xnT-h0o$Klw-c{g!hr&0PCfQP%{z*~-{dSb{B)myvJ2z%2R zvyDw$k(OM6LDfd>$pHrcw{QA9W=C?kk)=W7k(7%_F)KEPO81C1;Re+s{KbkivvdPr z8Wqn-ELB9cq<9n6qw|WQ92&qt5w4;>5v6l3m<_|P16QqaKkx)EfyVV5wVUMLS-Rft zeFptBqjW3mwO5GAiZ}T!(n0prQ<~EcE&Diuy^bW)Q}5;oo8KmC6z@<5BQUeER|i-4 zmKDPhMjf_d1)@CrntI_j9mO$93TzHM!bo5Sf+BSJ;PH}(>-SJ;FNcJ>Tnp|Vt6n5^ z!FBU}8%Vnn;d~&5;!Q8B_1O651N$5cume>ezs`ywrH27LS=jq^tF3pjPTryx@&*ep zzMfCh+sN;9SLxVhl{rs9d5fAZrNjnC6h2B(Dcr15bQZoY9~1JXgMGoU^T&nmJe%!* z#`tJ8K8{iK*kxNiKD%a@yzN2>d~3}AxIPBt=on@;KF%Q~A>=35?DD19Yqmy_wtB=E zrF1K^Jh|qX$*u8?o2etu3#Wd_rguX%h5yXc2EuViTDQ#9kX!lVmVs6 z^DuV-ISge^^40O1IaD!9=uk6xGLg8WXu}@sQ=Po? zXAyt8i`}>#MFcw+@gA&j?KEoM~`50YibPfUBxanS7&ypNo2+q=eDR@PbQ{E)RW>`0)jQR zppKyqm+CPRfDLS^BWJU$fVxXH9%IRBPAyp~Ay7hm+SK?20)q;kL<6X_k8+&a6>H*( z5pmgqXd9oBDV0mH4>vAo3CIpT1;egSJ#jBRlTa3%t54*x@wT;iU-W++B?XXgF@4GQ zK4a;0$wcD*o}|eCqc-G;ebZts6)&jjTjkIz@)+Lz(c5@%@$vsAJH*Vd@x^5SG_eK` zl^#_0e@|xbqzLRWGei4dQ2rcHm-iVwJLwi9yhcZp{wxpl#;1@b?r-=hKmN<9EyX`M zE>a8;P@+fu#409^Vx_~s=e4!sg_d#JWrP5=W~Gr=d%s?Teb01p9px@MWc9h5uaIdRVTDP8=sjQ@7G+M(W5TeC1`$3U|9qQ_ zRgS-j>TleoAX2qeJHpbgbKY=}_0QE+v9zqr9j3M~{ zN*|>+&BU(MN@r>>NdJ%)=#w9QgQCAj%g}(F0JhBrh3lCOPcE4HYlYgxo%*|hi0>Umpg?H ze;D~b#o{5KSB=C6iuRnf$_=WRB^AJi^#3TZD&6M0-Qr+@@HJ-xl>azjX+^xr<@8n$ z;%0{V5BsmON(MR>tA=7ARfOq%1eohcSC8;+MF|$;F!`$4$1u@f=u`Ld6geVPwhmcs zuEZ~F2F@4)O?0&(Y9Wf9iyCGXg zQx_rg9Oz)WZM;UGPqFH{&+ecm=xO)WI!Tfq^xwk>n7W(jM1eIa+0_{99%vWd zH?tBGK(^u>-#5l)U13`bQgA8TEGFw>m~x!IV)qu-(Us{u*X*0+YyL&u?!6r`onhCB zR+Lgx^G;hG7Z9HP^~7=vwfV;2v)~3f&2@`LL7`Dz5+AG%(+!De&Mz_V%CVxg8g0T@ zG<9G!35vF=-eNV1A}lvj&3sf(AUTu$hJt#nP#RXeYt520^K-01flf!@CEGkJUMU~S z;ME<|A!Q`O5&LjvWrvsPwFWJ;LX*oXm zr(_!SI)w#(QLpfk^~tUBiJn~Z#*!>Nua_4#Ojwgb zKs+3=>;BOzWek*`uA2~uQjU)kl}s2&G#`4L9-70T1@llR$6Ym^EB|GFEffUEVs%Yq zCJY|s`Y_LUY`bJ2$tg#VJX|2-vl(r-k``*09MiEABBcko?wAd0+_6&%U>`pL&l@Me zQe-?qhMaJlUe&Evy{`b@oYScUQE(^rWwU1Mq8cKo09HeL8 znCZJr@3TkG+*hBQwa>i)Oxl69Uk?Y%@8`>yF+UCCciQ5H6G+H^K|l+);9B8{WSE&d zL)Bd+OKsJPRZNN?uX8qQLZ?hboQ?)m{PJwsYc7?EywjmP6_&!byIC}h%v7imNQ6}Q zi%qL#(`AxM!uv=IQ1BLQ?0Mv6^~=4Y`4h%u#pQz>Oq0lb9~=AfvaswV)Yl2gEOPxB zNps@V>&gEdmgroJ`Tso;2)++V^1Yk&X?#p8Mn&(!oSp(VsRjLP4fKQ>dx5}?tT$FT*y(Tb zdYg|YUzSi1zN_Wp!13W_C8amL`kkXWQ!S*Eyu~%CC#u=`98hPKl_(7RQ84IL8BtwJyeVYJn}{~!-6 zw#O`!U`smCusZTx+AZBG0n-DkrrW}6rI7p!uRUZv*!+{C)8za7>1J9wAL34As|vRP z%cWb*JR&t|ZU`}BaOJX<`}S3MOZ~gfn?q~E&3Pq(j!EiokMe)QIl-;VgO-5tCW z!BwE1ka;cmVYjJAq#t~~Bfl!pKLl<*Mt$jl{$ai`f&QVsk@T*AMA$0_q|IMLI|N)mGhPf?2sM_D6D%(N(3(^ zT{QQ7qnlRENJf>LGf2qPcjZ9zZq;Y5s-|-0NO~LSs8{nrlbW9vsbx+`G=D1XC9H?n z>Bgy@lbA~Z8uQ?pQi2&AG##x3fNCxC!gZq1xY&-(JUu6#x?_h>JHdKcju*^Q37pLTF$-xTPc6Jw zW1nx`xaPZDk!T6`n(>z0&0?s>{BMHZ*QmYuTas`rdg-)d*-IP^hp@=~;QViJCQv3T z8!nJTzk(*E;IT-4yzy~iZwJkSC(t9uH@)zwbY<1&unT!0y_Y3`(4DccMQ;_A~W&P0{jffb6C)7);BI1sM zV}pr^PaTMd%U-X$`S;`q@&6nCTG)7_l&x|AB2CRa!gFa7d-t_G2O9U=kP||Y-zE&p z%YmgOMieUzMMc|VwZ6b zkGr5zC$6;4Y5(u09Sd8=#?cD}xC)a6M2FFi`hg(HFqdBfCtwObf?Hm8rK90!fEO>$u|V=&Z`1T z<1%@Sxainwfm1%y&FVBe9L2Ir2~a=jd3u0i2Q;5E(_HAEe$dHVlF^) z{WmP2!PVoNWLZ?}U8F^3@}n*3BR}GaIg_c6hybo2^0L$>gVv`YyqiRS-+=+OONa&t znez_MGMHe9D=@!Gxce3l-+Ae3&Kx=fV<#2j)HgJd$uxr1GQ|4yZioiKb=w7PQVBME z1gheniNE6OwLkVEhY2-Blbw$!UL0La$k3I8s!5!i<$|p9(!+U^^ngLqp0%Bu8H1T*Uv%v_n7Je9pR zK56dYP|3zYgA6Vgk4c!f$mv7iGJ-9zhC`U6%R3eS)6!?eyC^>OYPJbu+`G;FrB#|4JsL@$O)(Zw-82!C6s243GO$wTON`~D=n z=6Z~yI&O||%D;yzP!4+mk_!L{A`cy`#FaV{%w&47Xh|GWz7H|X*f>M%-s7Y2JAk{}n(Fy)$3fPMMl+(a-B_G=X zjI6}wuEzbC-x*l#0zKb?rT}md-(YNM&Q!qlzetWe$Pc57{#-YouFMh(RTQ1WA>KWM z5RI7AsI#z6G$#G?hq|*}M7x9OavN2NrCKp{XfIB2Q%O1kS_-V5NTcHaqiJ;-f~Dd# z-%x}e1(9_m@i3DwbN;D8tjk}g!`)udv^vG%yTmM-p$<=!vor~xZ$*ncND7x$4#T0ZRzC`j|6D`ya*XX<~Y*y@sj$GTo;s;$m8j3B#iD?y%hs;0sskFtro zQ=}BMpXG88)Zu~l4V4KwDF%Viuvl##*oLu!bP;HRLGC>m=oli>$|}317FuVcDkvjM z)=C-5uW`+yQXmx5TG=R#y;=^a(e6jTN9knG3oI(3$H;^ksg6C*_1)Sj zk-w0H_4>-oHSunIaJYBN<-YMi{&SG5Hah{BoH)}X0F29C=8TSp%6yK#*b<~B+B{rE zDdm`Ll;QOl-uJIMN-lwgWs#tQmCkfayHtX`gYVnM3%aGi{|q_Yi->>UC&^C7D0<+_ zhFcCtIbV&Ww=Ch6nm{xT=w3_lH>G%g@|l-2xd2mE>$~drw~JKWOg{WlV+Dg2aSKe$a@P5f!}uI7xm) z{e&8pRz)6QGUN<#o`ZrBb*QKR_6~j`FN@YKIuaLY_F}$6;7=kM-~3xih?XWKS+tWU z<-QiuWiW-HAPUn?coqPb_~>J2%hk#FKyK;|j>4>8L0H5yxRvgAeUXieIC6*WbdzmI zip}90Yr)=9I4)7Id&j!mH)%h|=s`8IW-=QmOjJ$ zG{k>IulXP}qD(qh6X>-ktf{*Kr!rc-M0}C!O{1&Dd(1x)+11nsL^CV$gn)GcS_Zwg z7k-}2bP(gQgbmTuc+776ZT!oDH^ulg_HB7aOoB9Wb z(FZX1C-mxP!v%}DgW_Iy0m`&^r?$2xe6;+vu?-#Kri60$x3B`<m&t8{#%;zu>Ehd*U=)1ZT5)V!a!dJyru!z~ z#Oz{UJ^aCOn-3>*pLhC)=X~xTqBmnNg4)%1?^h=1LkjZ5*OGk}%Lplcz%Tge*_nwj??*t%KQEJ$~0{ zT8fU=S}D=t+Z^2m6YPZPJmI4#V-Glcr=jnU{{<-<38ea!9*N^ zPxpNt4GVVb^I$m_twIkt_3rK@HZ?w`4ffa~?KhB~iFmWrL;s`%{o@nbBs zQy5Rt|7S`0v?g+uRZ<2dLBVhx=xADXvBU4OOd=Kr`W?Q@E9>k(OtI;4EyJjy%NmWf z)hxugKRr6edKU`BDW`;ITF26Xc|AWqjgI%_4b-RE8g5vV8o-muitjYlBO`Gyi`89B zQ&v^c2~G9mZN3qN-HJ_(ClOYY|2wTWS@w9eY{L04n}iHXulx4kzRJPR%%F&6_??ym zZ|$yIJcvUTAfR{eApCbOHC{o%>P3P6(QM-L%AV)<8!|9H{YDKER6XH~YNCIlLb~w9 zTmfxzAO7lGSuB?JPCEG21!RpVaMM5mAki9-4j44Ess3wXz{AKTn79m7PvdzhYRz9h zkJV9;jkQb62DWtrQN|_e;MIDT1|0hv-Mgf3XWk2R*a@)136HLxQzZc`U=y+TN7@>_ zp*1b5FcZYHWdflx}CHqorEsh&o@7E87H`?>q7_W6ZZnT9Q*Xk~mG2@BwJcDDo zvB6?>&EG?QelA;w^wt^D`7dT9e6$YgI}#|p*06%A7a85Y3OL*Q=r^Qppwlh_lsxif zLqfNOiOEq$oSwvtxS~KpM{85l(~O}Y)|y-ZgZbU~yn!#js@Gr92P-fFJil&qt!iW| zd}w@dt^*wwcdg6E$=)YDSa7a=yh?Po>T@j6n@MD#&X)36tJqZf{}Jy7-Tms0dw7Z5C5is^OLE>A)+z9uR6UQEg%p1Si;?8yfs zKE6+-7@aREaev>7qx3z52p89t+tfEWDZ^f2-q|8rgyDUBdE+x_$@MPtJK|)in+&rU zc9x~P(3+aF(dW$hISM;u1R6JUAqhy4ip|rWcR#lz!~GmR+{!E3YWW#~&gqcyzEpU# zTN~bAz7N+Xn}f&9IUdg{RLz{buK5+J!N=-{as^-Bm2Nsbu*`;6?C~M@=bk>f41Q&u zy+MF~m%8UVp{1Ug_I#b3$Ys*`A9L_vl@^`244+;)BIGW0|4VFYtArGmVn5L5Qw&#s zOr!UiY`c5?Sk{nvop#zR-5mBl#t3ZYy*NO^QR4ncs~*tf=(^xoKdw!epw#j~ZAuqU zvm^Q~=PFt*UfbuQG-Q0J{r@1M$5>wi62AwGktn!s8D>P{f2q|^bD;OC;W zV0lO(u%mj0w4#9bv9v{1ruXsesqXctA)Gsn&v}03KvCs(26JDDzH<~C_i^%?$?8`Z z>HAVA3^n!|+8qSlbS(R5+Vk^8Ek&1Ip#BKuVpw8#l?lTFHrUJP9k7}D)HLbo$D&QL z+e2^Fp|c#q`!fbZy2N)ix`fa><{Jx=kPDAfXetfYeg78QdCR*=<=*!?IK4QEDEcF# zXYb>@s$WggcY~#nu{vMxrl$KYwpID_V^1HDR%NqU?%k$99jR}upc5~|z+M5#*5t?C z6d6>Sv(M=6F1Q%y))v)Fu*5+gtgT=l`aDO1IyIWUENuY!yTVq;`N(PN<_axADa0$$ z3x8m71-bi%Sw0tEA%E>V!aWb{-NP@iDy*44<@mdGOZEMzY(Zsg$9}S6Ka~!D3zPqI#Fj|4q{dTNC-^j-T0(aN(Xq{CBC-TXAS61>C_;XcP-R zcplS^okxhpiJ$0lb730t-(}|PNtj_1W%9=Bel9~8bDePVeXi@86O!t)!hOmvp{*r$;NTTigR&Z`IS94=Vur%!h;^F6fnZq z876vj*4Vj`43J285gFF=w5k_4L zleW2|rC{8`YCrV$xLaT$QFI-{6pn{biwD$pUEC9chtQQC=!S^u$nqX+5Zj1zozKOgDS&pAH-^A1TUr$0+w!mYSWUzt`<3RM^`1N94K&6Nv z8Glt#pliDOxglBI4KL6_A}kGrjdoveg$3ngt3m@6fm5G^k$WR>055kg4s*~Q!wjs+ zwfUEumB0XPyh0nqww=QS8C5Rz@h|j#pJQ}|WzKA&65?d$BBcuF3PQAnay@0{IBH6s z2}Bb_q@S3haQK*$aDkH^ioH=qpB!)!(??Zr;P(H;g@08f&*HV#+sl|eZXJcm%%2`b zASr>Yhh|On|2tC8@rVKjA;EjpVm2n6qkW-ualtb2)4VY7Ju zXk8~BJK=WVyN?^EIjc}M4}N3Nb=wAS-u&gi$PX9m>rl5Y%%P2_t2ew(a^#;H#YDH3 zzHjKVEkCwuR06rZT;)p&ecxo;Ogm;^r=9N!=j+>;QS31eh4bZzu&Dz-p{3$N;BR(P z)J1EOss|#P4}I#NEZCR#s$8(d1L0_4>agF?iTFvN6aCv$D*UL0EPO~qP|pn&KIF2( zoSZW7p_mWj&DEMa%NWyw@#qQ{>>hkoDwU_nH9yf%PMP^rjKV*=(1K|#a&jB1yHltL#%a)qf->~C41PAvTt_( z8_8kz%Cv@Fb7>|H8@oKw+Son)LU{D)!fGQW0{5M@RoBll3t-KAv`lQK-IreXlwRpm zs$rA>xEyr=I1b7fxJZo%-Mf1d?JW~MdT=(#^E0erK>BP{Pxi`*4Q+!Ef!x}R7l~hN z$Mso$TJ&;u`S8ecJMUD0~7u z$5|4~OL#?ZR=E@ZMWCXS|&}RVz5oTJsg@*H?M&X2O`(T z>G>FaNGGTI{~2iPu@Tsnrt_zmX~<5An6CcKzNEg9HwC&TiQIlD%OQ-lj6rZB%8`Qa z&BioC+pi-bI%{YatIs^Uo@g0{nQFEXpnZ2ep_zbO`=DRSifT;~l!$Hx7ixEB`vJ8EixDH~)Gtc7F z#da1d6)a;jUM0#C_zGUXS9N<2rdW+b@*~2R0%jfnz8{-|rd8u?{$x%r297|GnDH#Q zcAcG@??zv>jazSRrELjmP?8k$2&Pn?Wo4yA&dqY*7@mp6cRH)EV|}u+r`r$d!w| z?r3l^Pm#UkTdIJvrLj+OJ!Bak$F`S|Zv{9p+hl4jYiu=J)65dFWFIb~_#DZaXKhIL z1T9p8eO+(bGVTtdZ zj8sNuw#lf5=cNyyml4DCMJF0M(ZtII1u8aV&qHxwD$kKiX~Fs;o@o`wBuJMs2(A^9 z$ujet=Jfb@2anPCU|CK)w98^p1G`=>c;d0&nj5U?2hGT`^my5+l(jO953GXAaOv+t z2LZW_w$N51bak0}^4dB9^|lV8YB1z*5KY;bXnFaEStaWd?7be%ZGjY9EsMdkWx8V#$dUY#3 z5sR8|u%0(wKqmiUiqC!H4$AG<49U*3oJ-*SFzjuSvgRz&u^AoqJ}z%Y>3XI0+GO4} z#o80%)4$ZLXvr>fGgAf}w}dpf=My zhV~|6Xme)tn9)2lw5uT)2=3?BWMusvFKs##RlJ#_HR`$qbE_G``1txYmq^gh z)B7@wPdRejZJmeTJluQcW#a?*Px~%8Z2Zl5Bc`h~LsCmtNIq?N#^~47&d@%;D*^gV zwy9WNY_RmDO^sg6=?_nPc|OjH%5>yUXP{l9MnGohQCjWUH-8=(N1qSucS=0LU#^&b zqK6Nrz5G%{GDx0ZY5nc__-Nx(SX(~TbP&SGyY1)?w;kIgSnlW#pR!s+Tx6dgZ|A5w zn)29pQ*1}~#s40Rx{kisv+w8&JqM4zaP-9!Z_?PxcO}vu|2uk2Z@go=%dfvcciQ#V z>*?%yzUP`f)Z@GQ|8I@QrN*PrAAkP!eTn57#*H$yXT(P8iLd9t3i>KIFi+&WPUyjx zoLK0>?D6&I%}^a9vzj(aGEXc_GqpmqNX)ec`Xy}w0G4h!Q*JmdZDeGbMu{_;YK_Yb z3VIIIPqq1H#CN3jr*ZCNHRop(au|!MtA0ITZJ@oX$|L;A_->D$-8pe%<4{ zp7R_7YD}$9Q8|Q#fHK+-ZLp&u4!K|i>ND5_@cA{*WGPn-nAf?(MBxFM3*Q+SX?yr& z`Wbzi3?dzAc<@sroLXK3-CwSMP_G;JS!UK!^|JF!Ue_|D`ab3D(B5aE@FJC%WxVo=hf(KWriBEze7vbfS%$XY9nLDt^PkI(}t# zu-%7_(n)v3lOoTNUc2@_k1dISXhcaYF!ji?3LtGCC(jyAxAvLnH8!o+UpMnhbE5bY zypw0*Yc3H(V9=OL1X_~!B#^k>L8i8UlG0pqpCX9|`uUXsrMZK+c zohROs&HeU?W3mlifBv{`J>F=dm7~vFTW+$|?GsB`1?jWZs}oDp437H+nc5Sk$5`o% zCJ~dfds6mxS#J0J9)8aUtH7x_W=%Twg6s}dkq8PYR*a$*fm7l=X5$`BHFI@C+q^zS2Xu)^bd|5C}reTS$SV5cVj7~6XI?Mu>=}2mtvC%(HYRFC3HHemGXIfUN zY9Q92@(l!#sZqb@*ROrSBy>HHOXu|L~?d<0CP!Wfg-*lF$ z4saiYEp=((`1DI}9-lGvkb6V%$1zm?Qv+dFmbbUzzs<(uA(v>KpoxO1dH_vyaL@`1 z2UT$`lO+fjrAvu$QJVE9!}^nH{h6pQL`9SSnE%6@5%{CyTjZ1+CR~Cvjxq}dST~L= zkN@B3mz&ARYsy>_!o)WfEqwxyHXbpDbmv}dk7jb!hll7?F|13=qW1Z5j?57?E=e|` zL<9$ZyhjlDd_4u#8OtG2X2NCRC?meG4WkkfBleJN|aJb98iJ40kQH#=b&>=_E^ zqAFWB3^lJkL-R6G?sa8f-*E6m(ZmxeGm!ML2_>TNieV=R-n56qFX}vTl(HwP5$f(S z?m-VMlW;t1g-*xUGdg2jqB~4{eAgTZ7i&hEffBN4(P=aw#*LCemNj>Cbset;+<&!x_MQ&?c0z^AvMN?qZKtJ3zVhf&#L*AKj}<(c36*xuRNSS$1@7shOkqw5HgmR}*_%x3FCbc@Iwm7aT%KE(F)mq~| zyg}p8ITtxTj3ip74sq2l3{C$^bABPAHzv>G3}#mPRrxzi zV<~ij6E0ghT_o)Vp^im!J3#QdeZMMB;Sc zdlHw-jGD0AFJ>(*Y)m$m7Q$6484MweP<2dTrX z0P^=>+>P^qt^c6I-LMBs#6YW0{he-$oDW9rDjbg-aPOF%zWYDuE9TGYmN%ITbm8&C zv48h063x<%ykyr#kxlg$r~=6r1T{Y`>oD4)4L#yc1LGFP8fZMo(+<929&CWrZrD&Z zvCZ9Y!nDmxF6}5+NmPK5`dD&A;H5tN9|6S!aKEaNxE;z)@?S{b?EbOkntM&7A~@;L z@q?-sF1uW$d04D4_Ty>^62IM7OB;RVn2DDjSE?7r^z&NRO@FB#k?L^((T8(&b@m(5 zmheMADGOI-XE@v({P^SYm#fJxIiC##DNI_vN}} z<)cmGsECsKsJRk-Qmqw6BxYt%W*|O;ETz4tK<4;!zNpTw>1jA2GpPq%sRxa`2{vzT zG66|&o^d4yDEh9s=p(y+PQwTok{v%UKvj76jZ{lb0=)lzLx5LmJH(LVgQt;4X`~7` z+kG)*QKXY;R4Pnq8B?Fy3qh&nU%1)nQ@=v%boVqpAR(iG>0X)7+XR}mch>n?e26oe z{ps1oGggb|Wuth8u^@*LwC1OynQ%qmxh(?lgcyFVNsO<|QBf^n zUM*I!W6THS11_RSg1VckdB&FH!0sPXiF-#$x(siRdRccEAXuutj?|J);XdHDf9?JT zr8G(nFivz;G`=c>c9#%yAdfAw+e$Z!kgpp)+cWGK_>f6}EE#YnVX=znj$z6t@Z+}z zI#a+ofqkigZXMu&xxE`t9U?MwH~%MWIJqpln}5L*o*YD1$ld&7c_CB_hA*SNGP7Gu ztTksl#4O2s5QCi9bkA-%cBvmO@=T;X)hJ+Ln`G4@t6GwdI+2xMPkWFIa1q2@0&GL% z(nGmMULl$TRSO9+WLac+ccC&Zs;{E=x>fCyLj@YIw9oW!wWIpCEp+oJJJB6iCmWR| z%UJh48dl4QN*?ncjNOU;x|+h?p}U|SLI-5cPV-;5481%~T%%|A5;`nU;8dxUk|KU0 zmB*7&U5v%9mFyn%4psropBypWL!zTADFkm6*W&8J*FTRH7gc399$Fn?>N)r;4&l+% zX>>z`S|x>}PstBXNXcqSHbkUuHB}~oF6WY82129EUnyfEmcpeHVsX&hZlP$@4oUVO zfq=Lcc(vvkH%mPWiq#v(rIKE~Q7Xk9eUUmylBFKpqh3cJonA|$e?jXW1v4<$J|Iv> zn$-A1_vL2Yg0ni%?TpUQJ-D)Bn|g+?jSqAm=uMCMmXxB$ve4iNqo;@-)XDbI zN|z|E%jjwla!J{IUABX-`*c_LXo%+ZX*n~YAQE&Wk%yAlE}!_FRSW4? zJ7POhA)SQT?`XV>pu6#tmi<7)pg=|SJ_N}Z^T9?S!E65$#%m&Nq3 zXrr1o7-VcrY!7OUWHVc1b-i0<4M>c5pTpj1ZfUN78R!OTvLh3YQ(59Hu<;^eYq z^(4ju@U?bdqZ{CotlrU;Z{B@vB87r#9Epiln{$xw(TP@xjpgfVDUgl1vZ zQYx@ZxFqPl)?LO@ElVj=&}p&VDWqv1AE15nekmJ;=)Z+{R>V-`W>5j)$>pf`3|h>2 zRAU?!rza;Y9@QBg#thlKC>m5Kce6OQ(HD9GRHuUn3VDx?mS-O+g66N1 zlwtZgcsb9ZV*7PX^w|ACI&bt;J^blsvFn8U0hqZTl!*^~>hL?BPKs6pK27nL#r)~U z#}ZhcL(K!(&O|ag(Jf-D$oSmBm-+guiX|!GfDaUVl44I2>V_4C3PCzqwm>M9K6SmJ z5ssd$eCTw%NBd{GpG#s*t`6)?tn2N1T`Scj=o!7P%usZpx$aAgx(w?8Z1kZ8Xk~$t zu%i@>hZplr>dsAuU?P^x45Lh#Wkwlyo^+#(i>^y-7+#L1Xh0OIIzIc@3nXZKVsE13 zHk_+E9UtXjiwi+0a+WhpU2KJ=K%|XhBrpbrZYZGrz0ynknGKN}-}BMjx-E<*no{>l zd{E^efW*h~!FeM8DNA&|5wq6t^&iNCSMj!ZpHf4Rcg8st(Qn`;DS3(0EI|3rm#*3> znEaSMT%a#_FeeHuVD&0bvDk*bqa^{|~;f@`u=F6w$%Nwc|Vh8&_ab1hQ@P+J@ zN;LtQy}9lH^UCt_S&I5(p^&i1=+-rpYNl;0K+^G9-)FJxUpA4@@J?)pWK^m}Qg4wn zTr^|qs%y3r{k&3@kd#;f(y#tz&aV=$kd94z-{3>GRcyy8{%VHlB1^Gz+RLbm4SD#DG%_CD>;u7xLcPZ~+$g8lzmRP7D8ezpH8W z4{W|m1F;EfMro0*@$uo_;JPDJ;U5~EP|!1HNv&!Lk3{VKJE5r zEDyu(@gx&rR!vfOAdL`>achiKG9TKiN~}97Iq%t8pUxeeS`&DxdUp>ib|3JuC~)6mn{TE%jACdU)?Yx&WAU;W zNchQDV649=IR#am|FL^8m0tVdXRNg+T(Fq+v_-4QlC1%2MyoQX{WCfb85^6dsHgbLtOW$Gh#mo*jSJt+BI7FlPe50p~{(9SE zLE1vIzEDr{KxQD@R)uv?L3*sj6S!}Z_kYJYIgQdclx{Ii5+OcJJr~$Q!`cQ|p^x(C+ zt3MMU8&atPFUMJEvbAa3}) z8dsxQ%eg?T=t=xyJ;hbi1AWT;L%KZ?eG+@^MCZs!^jG%l05goO8a%d3s2krEq9yEi zuKi>ft^3DGH_O#=Wbv9Xps%6;EU;2@_L4&yWmwY?Khg2v<`J4A140LE0Yc+eJepBz zmp=~!!}KNYlzT8n`-)1$FCg4csfIfKMi+D)rT=Rk8h6Q>055NTppU6|OU6;-6JbVK z%W-;*P&ypKevTDUSI~KNH~lh6P6E5yp%(>ZC#D$Y#Cbg)G-(>!Csd)O8ty$Pgk%mL zyjo@ry+^@C6{A9?8kz=&sgFx;IKM1E8Jxixk3*(>0hOqg+NZv zD~NxDNf6<4B+3HidH1te)<<199T8}Bfgs>T#423XI(<1y7h8D_ zN(Rk2s4g9-pmmw>8rb$Q-^Et#0zR>rM1o4v!e9+%3`;?RcgR?UC6kF}Rp2@YPSc4w zSBrJT*fU+Qq-@&H4bFhBbCQJ;WlWMCI4oTIRxI{eEb0zi_l*81b?u8tp>4awNJI_4 zM`I-1GM<5O#QX+_$QNmXK|Q8ElVh`}(C@NnpQ^}V$|QDSXx(NiVERHuB}i~&+l7lT zB$PihQded7Et^u;u|36REw4oZiua=KqDx|H=ely6q~Jt~quuMY{!qKT3Bs^h1YlSb zj#lz{g|sTJm9C2m7f5Evx__kl$C6Oz)tInSz14@X*-h=sY+9C3cUhC&w)@5JgD3TN zQs4O?W(7?hNYq92KDv-RI1ZNShV_-s6lHq0*;(q=mF}*P)~L_=)Xr}2C67LDs58+9P?~X_Ms|)`Y=!gze+uyos4k-Yd@O;rZI(M!@Gfl;jli(aT;fzK zctu$hopajg&K;T@w%tNs^vigAIM;JK5+@k|i~6(QO@7=R`~fUMM$S%IPyKpYcK;wg zbo%|1LYW07=Gyb;?Y_k9Y{-un7&|cO51;$Ix*(o=M$g?OY1%)2SyJ8aC}V*kLlT)D z#OuZOz;!rS8!8fX-jn^DOuFoQEug5Erlp zV~b!XWbVPuBbpSIu~%tEw%anp(}mZd#CM3=Oj z4K_EDW&sBeLI5P;Bl20ne7haDr`YNqe-1`dzxu%|XkkcWGpVg^7l~Gx!;G2i60%_~ zxPupx9oZ`F@V~kis21=T=ROuC!!CcdF49#RFJiBAeW?hXT!x(a8I4~sC{uV6UBCwbXJuYAIMe9D>a$Xv zJjD(g;Q{#(j^&y({&FOKeuGBy5wTE-U#W#1BQv%X@S;`%Gh6RV5?Ah#>@vKqsc`O$ zheofwktZC+8%a9UM+4M!q?yVrsH%>GRdliLcw(*W=dYE9p=P`Uamm$9$N!)o@O$gX z)~QvI?+Ntz`|7r`F3aqdY7|4_kV*jN(#Q`uZFHc=2pjr5?ji>>YC`z<5wMGcM2CNw zdKblw_zA7g;$?D77rk)qm?qAK4!7yM0<_5{!!BGc6?au!cnMpL=?;pExvtZ>v+Zog z+*wH+?X@@R#;x-kvzc1R)j{;;7tAf?$Qwb86;}0evukW0rKdHK54k&W8lLx2+{W8F zF6DBQkg1>yC0tKVTs>vx1Yv{47oi&MD{op@YPFp%9+~97*y5M9vz6+0-xjyf7Vc0| zWF~3&%}v>R1(3wOvOHEkNzAU{W%%o?&qTLq_Y{7B`l8$Q`3X0z`A4MiLEZIySXL+b zR!`tzUnzxq)cjsnh#fV7?#6j?kX5DT z1Ckx=SUrYtZe_8Z=k^V4TCWS#=C|m$E-3Z?O3D~%fn10yorv06igl3otJp_ukFTb+ z7Ca}s8M$c(PC+cQ5n!ewD!2U3q2eyoBs_Q7_-46|U9}YIvfdp$T~EaFlOe~r>;lJX zt`M5Q655-C8*Kr48l5lfE$utSR}42xEwZ!u#NYGD-O! z@4;>U`=U>A^&UEC*|T5R)cC%*EW%5N-~$}7&Z0mI+&PVZ;bVRO9p*L_kFg8zAjG^O zmmbU!`oAgTu-C(}7ayL)!Lo+;MFN^)?2dS`3;(ZTGUwK0{mYsQFeI8V@U3cGt@#({ zB>5(;9QOGE%a$)XEGOAlnd9)+M>Au0J7QOHo(QN!N5t-S#qM^-Us>Ad4^HP_l`p2BKd*xY0>W>jF@1~PK*1Xpghi+koJ4U-GaVXMR2nj zvuYbuRpLU#LcJ~AsdTff%CxCZfheP(>KtRLI^n9ox@wfG$*it>M->8pr`pRHxH(&X zG4xfWTn#1PqSi$j!l{0)%Y3nxw>Wyp&&@c!-{~9Hbn;BoLD=gBV(+6w|MrWuK27<- zwThGg32EGog4H+NDX%}jnDL5|MUL^J{9yR;_j2qN!bone$ajO6GjWGQ!A z7XUaY24RDnJ#Rd?>8L z(MjUDP=JB|nP6-P!Dc5iX{d){kw3_ib;3@AC~rPMy@44?{`a!VJpM@Je)6*Q9J+%m zcwVkU__;zkNphIngqoKl>yZ1wMPvo=3hsCEw!V}%SQIL@(iNXQefJO_)BzpA4@JY) z&^FrMW`~Wh2k36TfNU#OU)T@#4%NL6v`fK@ePc}BbZ(XoC+Q9<8LECRF?3`~Q_sMa zI*GVu!EQb?^_0ca3>`~0@*Dl(0m*H|q<4b3LC146o3*W(p@XV&wY0)?o5{IZhZ-_N zg`*X!K{tx zzSSBf4pT?{1gKAxFi zeBySixdh7IYRIZD5W5YYx1l2un|d2EJ?D0AJklf{RrRjU(qa7EKc2~C=5NOp>8f=TQE2u#hH*2|ESFxIw_5thD$F{cG)~6c8)M$8V0+qI?RC%k? zmdDPrR0CQ-uoS8Xu=Dhq^IJ3gEwvyIXV_kW!J{0wD zN{Ep(>TcK|9q@&7(0+6(U=}RU;j`J-@62P!EQt#nFfj9i$JN8;sWMer%`k46o#CBW9 z_rz#a9XC0zhp)!`7ZM+8cV)L?u{)&+_g_x_%92@5#p3jm5sD#ukUdS&Lp|XDSQ_Kl zi`^v?EH4DN7kG!JH*=6+4NKQ~0*HC@KPjGfqv8s+3i67{L*$$3XUFhYn@c}Cw)e5P z_pzk+aYFB7Rqx~E-p88EBNDOnvokVpnV$489k42kAehk|%KyMq1Tu@1@ak8hLzrG- z_gGuBmz(g0CLMlkc)5ZdJ9Sn=ql&M#f&kvEuo-UsBIr=1Aw{nP76 z$JMXis_J*WxxOm&5B%xQ%(b%Qq=wPSE^ZF@3vTF6`GXtoxOC;m_c1AgkA~iheLN2@ z@Nn~3r+vIq65~(u%lLLcV~m;{bH}mk94pTW5TA`T|J6+&UTlVQo00mWyy6N8JqU7Q zb}Lb~nDCIRr$}VX3s~b({j53R0enFpKRa>%3ed$h+0t{O%l~n6BuKiInB79l;#z9v zKlGh+^OZU&|1Lqm)(LPMX1*(_7foSVa!FYEu_Q-6&-&xm25LB}{DX^}cjdUUml2)M zDL#TNT=(&USdHIzyulw`9E_%Bto%48#Tv-AXHMo+T}SX<+y^r0=I!Qg;i&lQnM6q8 z6@U4cm3i7e`Q+9@;yjRnn#pkfuf%4aXJ%MG^Da6gJcEBH8>h~fjovQz2Gi+ha znRp}ascVB9=ABz>xT6rwITR_jhjFEBWWhLLZl$GpvE>2ZvI}ulz>7^460w#qLw9?ZI~|QwRJqXt#|Edn4F8Shq9OFLdS_cPl^`X- zDKYAh2f*A*Y#Z+K!>E|cu7EpBmkPLp#H~c(8k#F=2%uey_M_@wBL@*~Zx;RysH{*b z>&D4f`?FNSiG2_5kh+bWUPVL@I#`JyW!%hzO;72~3qla9yC=Gb+%q0FaV@utGED_6 z@NyBQ8pLzQ33B$+f4X2kKUfxj4&bQU?k}oAW7w$~D`)YVVpi|I1EHsX8H<36Vl_iu zeK-{obc#eU5Nq1_5%=me>>OoSMdoLI1FQf^nu~#Aoj>ctvgvIV^b0#Z^UklO;XKp= zE0H!m-?t^JJ71^>-|yB>a4&YMQM5jQY8|@|C^xZ=Y^M@!-u-S3!E4P8=Yb-O2twUf zlUKs~NleZ`s+?(V+XGfryd2XRdBCdjk_*+TZu8Xh$N^87tL2YK_GSm0l{v))!d<9M z3p!`#x6KD`Bp(pC0dh$`VY>f-u<)~dz*s~Dn=27Toz8o|oFpp5>TDcBE*Uo&4hM_O&oW!U#X4Oao=$0KMWvY<; z%>A^hmf~M%JX({3d-7`p+prfPtcFG*hW*!ZXR#56K()OaKc?&@2o)$Oz_*oCfLwlQ zs@wXtnhkKOgMWMw9StbCF@IB~GWQ*G?-Jm0+~ z%#3l_k#Xbh@JGgoyKgV(@QrNAI(t&KzrbZ_V@Z{i31H zGQ9Lz>~_|K++IOBYPcJ0&d1{hz7v{{GU--d96dEBxZ(Zaw;kvqdTM$wb}~mELQ5w_ zPfZBM4(nS1`eX1cONT~JogHl6!C5|fDnA(i0V?Rp2tx7bsj_>qxqYI@q?1QN8i35Z2levm!20r^}S%Tz_xTj^wf8P@eaxJutM@*X#Viw z4*I?>*lb~4AB;aHIWFLbaMc$Pt9wyLK~7m-bUX)Vw;?b2$Y7ein;@^}x)c3Yv0a@L z;Ota;=*}+)zC5)szVEI)x3vngc3#PuSChPnV)!J_cI!u6##K0LgpRQFKu~MWXZjF> zuN;KgB>cskOuj-!w;qK~o0eS1yBZ@b^=C{GwC!Xkn97uE_(4|TxXqD^ocD8P1&Y>-$SrcF#;+cX?@XsOH#wWS1T$@Nd(K9n zwb_=;#HX1nQ~h)1MeoW&tN03OHq#pW+6C9ZZw;2j`31?dl1>#!mO&Ei;t`jDJ5Gn}^g3OeKXZkQ$EBB_n zK=Kmli7xTSDsxJNos}z(#Wz~_5MTp&#SDtc6Vbh<=Eb)=>OX=IJXtnaqKoG}G$D7$ zG5}YqK8|o<>n3iZ95hqIA7^j6RYZ;^I9oYXHW}1#YttIyaN&_&IKTW`;GEC(EIy1% zg3UjrS=+^zSbBZGQ3Is-F9jn46?aMm@wO8(&l|_lT#%)1@h~=#LKU`xdh@R*Dc2&a zhnKY$MI!s?wn%lhP`YG>TbAqQ=U^G(W&AVk+DGN_OdSOqinK>fEv%*EnXs{T#S=0P zb84&80zcz8&UMw0yq$}b8Gw4G6JzsG{3w^V^%i(w-&jAA_FZn?y`~C zOe>9!-d^8!CNSt>V)z$?W65hgWxbcQoyCVbo3Cg3nKUbNaD#_UolfgfjH8&v4fmmQF`|3?=xZMP)P)^u&*3Kr>} z30BAp#&zro-uy+JYNy_>e#fo~91k89_H?YH4yahsYh-h%SMj7BkPxKr_4hdam3|0_ z<`6HQ@0br8^DwoNZ9@7YUmI)8(GKcY$6o9gHr2fwHPOT7H7TjtWH~=+ejpRUdZD4F zIuY{gO0E@6F+Y=v?25FO$M%Hv9BewN`gylVzI!Dc7dGYqD!sK_9DG7K}+CqPw zXlrgsE|pL7N3`8Wg|gKn+QN%jWr1xcF*(cI_073RK;6p1*+eA|t}3F`S}ww2v{XP4 zj9(%3*db6kfgR9iDU=){pAaT27RPYbb&>sgwyd;M1HE3AWEET{L#ocz!s8o9O-sye z_M~eq@}+k_TyVDRueqI}=H|}ObCaF9FFK)hiO_S7I#jamzUY%L`CWcIite8-o8kE% z3ird2T?!vFP1NdxpQVC2;zW!%4S^SPFK-J9vv(WS*j4Nw z|C1RM`yR#o&KteG=E}oNHT8&;&GlnqF{Q>O!u$pwkl7|)JQ3~b=E7!g+e=r>;OO`a z@(-<$=c}kP<#9u({3$kdKAFWdJ_~m%)a7;Rg%o5jf-l>f*hWze^PyWl=yuWCt}zo{ z7MpAJbroHal^r?HL)Lvg2F*J?gXYzhS=@17o?&N2+lOVx?=|$(t7+3Cxjf`EQ~k<~ zDGmF~Us!cKek9f3K8V=E(&A=07IQMQZ_n{|`Y}s93w6+%6NgPnb9b&jlN{@$4IgKM zKu77rx-DP9scO;o5$^i2@UCKa-|DvdfCFImK6c3Pbyi8gjK z98(n{(8w4(V&-v&J{=Q1;}cPqgwVfaSWsRy2=ZH z9<_B5Sot_i+t9sU{#;WpHCn)MnKX@!K^8U-9pkk*N$9ijsOLPX>{xlW$1vFF%HivR zFV_z9ie7ex)GLJLt{1jp;HH7E$2!un*FcJ-I-2U}wq(QlW++_CXt?IC(f~QrPU$eG z+nF}JtJE*A3%W`nf3phMSPz=thNiqhwK!Dv1pl7m-1E(WT{!fV9ExnPjwB&Eer;qp zstlQKW7UM289uAzMT^!37`^&}E`l*(vPIj4oT| zs&lu|+s*$hla4PVAO88oAUZsRi-&FI)$3W0zQU2oof%b+>ei{2`TkVfj|%yuRD+X! zx1~fHY9AxNa|*NeX6^RcQf?mdc9wYU!vW*0+y(C9Y}b{FFIf4G zFUuT%g08ImI~KW^Dukk980Y0N`}qVc?!;VodO$wU;%+V9Da~KtmS#KnCYu|L9{hM< z_X4Lhdx2Y)?O-@QDIiHF7C2?ut8Rv5x9hIqvePt6t>bqeW4qG=oM zc_DlLhVDln!$2L*nD zCMe+Mpd6-_?})Att?#c06t)X~K%MJ3aR}0`=$I^1`Y34|X8zi)s`+T`WA`V*(ddnbhB>8#;+CE=gN-j+ zU_INs$|>7je((k1DmY5l?>5&8unH;6#8`nfw4*EZINwn`c|!hZT#9n{-a^m!B|gFj z5Gu+<2FX+kUmyfXNP{0q)wpV$`-Ch$IDRBRU>c7TVk-D#QC)r$K8~NpmC>c4$1k1v z1pY4Y_>lS*z#c0-6o`b~X$Pd1o1~Vx2alB>%0}+-rnnM)5$|1#%J+|OPPsGkw5e;! zMw3+-MI3D!T2q*NS5z* zOLEP*CorymsaxLyCcqn4hl7JJb&Tr_#*1WCoph*#DyH7`KaeIiyLaTfvkOPRHYGLs zSov8cup&9kV{D>BJIvH2p!cM!(}Za{z?6KCgf8Om)&!H;BWlRIIsRJ1tnjUF^&02yJXzofBeGy%S+-j`Os6_48atN|rwL4Cz&~ZOzbod5 zcBb0Z+42CDg;|?%8stpQ(e*gRZOab$>V4w$X6`mDUxioeGr^hO*2%JMBYL;2Vjt^T zAghlTZhoLseIQ!&J*1TKr5q)qVDlaxQRE>sil+I^tuMm6)QTZx7Ru3d_JCOl@UW)# zg7Zo8aq8we@-Zn<<6q!r<7D&5>auLyQ{$d3xZ(C3q7~waPPe#a? zm)CA*FIS^7u^-DzmU-wgJg=AZE6$1pW9^c}iXbx5)H%ffEaJsX za`RcdNTWV3?N-;5x7bk==irOcJDFApgYyzP%NcL2<>H>MT*bBFYrVbiVb0^?ze%?_-3`}> zZmf8I8ohm@c|#P$GYrJH#i;FsIlEBig)oWCSL;lg6Bp-N2^G7_+iMdjATnWf; zPhB26VE%|kwB61{^xCfc+qA;0H$7}S%2mS0>#BiGc4y_;+0NuV{~}gV{@8i1Q~nj& zVqDq|wV=&D3JE%`K0nLl{dN< z{##cr=;?}1r9$N7PD6pSxX`JAeXB2AfQ40wPh3;z&h7O}`;c=_A^L8%U(u;&1?W(g z$B1(Zm^9p}8Rk?CpWk5lX;(RYD`^;5Sun7^FjYUA)8R*8jg{a5L9U$FOegZSjGV)H zgO#+EgiDTIvRikhU#kfs&dX!VAI%CrI1=NGnJfk1*$?Hp$Sh>AS4aPcE zf_!`y74J#hxAa;@%cY~An?Nx`DG4A@hSU6B_=2TpasX3n@8agj=acKeWbyaI{^I|N zd9XTOU4N z99uf1c;%AX;(6hzga$Y_bz^Zn94cOi5_?%-H7@j56ldM}MQ#Gw^ct$lorWr|Ucfd8S#|2zNgCYuum!*?Je$JY zV{4DlBqPI}Qd+LH|F%!1nSJlitzpL~*O!Rw{0QzHcV_A`7Om#vunl5$?#$hZ{*Afi zMZqGX*_nADVWxdUGb*3AN_`6l(&Z)U0$BArF6VlfTgCYHVDnRg1@Y*lve*mILRMwg zxcIbUM?c!ay5^T>@oX>zv5YAEbg|0sHm}Q7{LH+>RPn&osW177sbVX|$|F1*u9vqa zDq+S@Tg+Cu?iF3UqfucttpPJcU*8}QzqVIUw^cM*PVw4uu51WxOKFvm(b&-kAKhdw z0#kagt!&*(pQkvM4RCnR>LYyU4)Y|BeK9ENCeG_jQLI4BktBQ0Ub-O~1^+w%WfQ3k zKQ_#Wg49`DmLE0UWZ}JwhNbg!GSfkWLH$AW^NFN0JrEtgK73-qN(@tQo5#hxStA=r zf4B>9Fdc0O(0Aw9jv$=Xfw{@sfk92YRNWv?g0Ml#*%+2O)Eh*Y$V%x6Gt1C}>KMI*qN zt5_#>(652=-E7@LKZ~$m?pGh=ZZZhJ9JF~M)>>VMJ-JV-r_wHfnoF*@p$zR#c#kQw1 z<@FI)UKbNO3Ili1Ir$|EA7g|j3?2~?h2z{T-4I*x5oZx2W3mhbkNxIhy6o0}Bv*K3 zV~OAbMNTycEdErp1LQY&gKmp=;lj5Z8CJOURwM0db_#KCbh zyKw{A->u<#f*5f<7ZcLdDyr4H38bY9?#aO4Vm@^?~Q&zgiG2BJr!x!cxx1W(PZ=muBR5MA(udwLlil)|qqMG5s2VSG! zpbD?XXA%a=>8_M`wp$9!SJF=GeeyDZmW|Rz4i>0MbwxmLrBOs0z_p5f* zLD8uK!3Suqnsrt1)@}aEC<&sw&FiqKszHR75jg+4PGt0(#0k^fgYLvY+ZeiCYkrrI zITuJw%EILy8jJFZ8jy8v$+m?9Ky&B;5<~k{*~qOz1qD=@hqa(I^^lUr0kn6E>I6$b zQa9GA;D%nW-2n|HKv=?)zkOS0KTica@$Y3AKsC8J38iIPmugtwH9q8ui5j0#R( zcZoj(@%D%|(+=^oRlUuvF2p&a8yY6wUg2{&Wmj_?+31EkoSB4;T0Ic9dR6sXAUxPy z1Ruz9c>J|Zhc0GSW0O3HUh3P?5xWJiihF?cR$M{)<&vqz0w0o#j$por^ZY+#SRo zy*%}o=<>I6!WS_VfBvhuS#drjp&!!$jWbawybZC`tl08{$n)!UY5_8UnL)U35KyV4 z51B+YMB6TqX;(RC=%oD&IDuQyg;fFa6HpsM}I0{wXOYn=Tv%SY) z5VAkuO~_=+s!wd|o&!N#r95M%F`MBaLmPw5ewktjAS-4ZE6E-f85?`a-Wq)#F0T!x z6FzP%htZo?Wp)ZEp^b{TT8p+6tsq)!kX!fX$joegCOW<<7|(-*<7szxAdGpdcwrsH z$9nS{^3R9YS;*3hysd2nsfp$LMLbe5!6_{$!M(`n4)?|a*?e_|g*KY|Da6M0;^>a2 zo?6fq`fHZ&DI#P&Ge>V~=DQQof8L?sQ1Mc(epgdl^)stNzlVsY<-y9Yzd}#`@dAJn znO<3*tCE1pkRYLVf)ADpEpoz}9uSYu=B@8ATm&*3DakluZ_ulWi+CfFm=D#&(EB&j zf>a+c{)A?x*j9!|1js~r^U-f5~25okCIIB9!>Xv1 zs3C|-gAd`5ihR=3qZoNBZ6NCsfmRmc*?LXff9j-@;m3&<| zfg1(oe11^`&Eva%uTwq(*nYxot|&T3E_LVb6hwzvf1abFiRNd2WR(DSvL619Gf1im z&w&#%=*oRVy0?*qrYzSUi}t9-Fd&?a%N%${7dfojgiZm|(n95_2@C z1RfHa9~HfRZ7?n-j7gcaKq$P{Y>vURIpFCMVBVmEI_-6u)k;y$Hsmvhn!!i)!A1^8 zJH`1nK}c7eA^g^Ujt1p_(A6#}Dy4G$02ZbNoFnGmhh)k?s#{GC3nD82i)QY|{re84 zD|`6Z34_iJKDxR1W)=XVSc#x@;H$B}WN{!-A(u)1o%V$>XOS)oj0*(gzn6rGBRzux zYjlp5I9$L$Q~afm)ANu72ID^^mk=hjvn{Lg^H?}rx{RCdChbtH(I$Q}9W!`g&{7ActW|6Y5{lyd2C zX&zb?`9ADiV2$92N~`djU4>^lw)7i^;nPal-y!H;4lm z&_G6qTg8;Bs&WRQ4i2tMAqXP;p!h_Hlf*vzfY#De5bc?)d|zFb!bHzlW)UA&sJSrIt6xL9qL5UY0rTr!w8+vFS~XA;Tt zlYh!QIlxK5S{IN8n>HqIvFwD? za3V64)(Lb>>&4RgH>lF7^ru+&y=2ik0MBdjLB@yq4PGb&7=y#+OmM|MT_Fb(A3%d@ zR=@f0{hJB~5sQbNhr@2D-m@Sl=%tj%bHbh=B!@RQ>&3^pYrAmd{I?#r8nUC!X zi!HfyF`v)XgQe>C)1|<;(C)~^kSbOQKvoWHtVCi3BoKlKylExv$MYz@g)>3tOz z%HrTHFJfg7p61yUYycQBIEZiIQ!=J+6~X2Y z^nvSt;RTcR{6tUHh09&!Q#e`riA?8Ezj~_? zE$!)^&i9=eoo@j62A(Vk5ypfDI(+g)c3TxbNWy&S`$8;RrRWO(~?;$IrH@>0VpW3k@#bo4>J$Qs53>3pz7DSdV?iW$^a!0x9mTu zM)~#*6IB=~J?Ic+Vt0)vOP?nzOK3l06{Zn5@R>zaLki;Q7k>*EbEUK=a@8-;qHf*V zpcpH|m$h(Um0fAKS=JuI)}0kSS%vCUu=xjIdg(RMlcDgGrTNj5SmFrp z9zDsdkwHk!jh|0w-YQYXylj)hU_=oCDj?vGwyVP_q+K#NQp zSsR{ju@gq_d-z}{Oqk+myhrwX^W}iK?{0Pl%qRlr@DfW!7Ux;;4ygq~E#WgItNmcc z!N{aI8y_%_$@)rWY;mQfVSKRIS+g1cxT&i$lchhcscGcDO%|r?elzJVIZWBfl7sl( zPL>Z}JDtoBn!mF0@NPl#@?2uEvQ7!XwT$3lfzy6Df6!@^)a(VZ6D9Ya-&nG+7`@DN zt7J7ltsHx>=eDC zI;XWt3NYO$pmiKUvrm#7k$)yMX>TI5t1GnYncN&E&~Ap2khuFzqwIg0*XkPWHGcpy zx`^<4l-sIkiCymt59T!ceM}z^V4jEG26eM2SoBTJZw#1mG(O91m;4;js?b>Fi2$5?~ym9n6pB!$T79czqSP4E#)9!YYCzK|R9txe(TLJ1i(%^Mb;GH2OwDSBuneFOPHN z({kN+pRPU@OP3NrSOL5=v`S(8qSvvr{v2BOXVq-jv)zWxy`XWp1*0Z0bIo)mdkEIi z$eJD&A_Y)SNvyLk0Rm1N>M_lWt8IL_@V@C6Qt$bzHFW6ktZ+~l>w)5Y z5`{Fn{JdQk+sBYC_IH2y9B!A+MC*gsm0yNjR-`*i`m<~aR^;lf=I^XrI={N&!$E~q zlDwT2(XLL>Ht}JM0@O!R`G$FB(LT^5M4w*bU-%7OZ3RM8|Ew-WC_$75Sa=F*rZ2pc zuhTK7lFtM6b3UIdI)0`jQ|MM~OOKkqa7CY7fBUsmlAo#}i!U!6n7(igUsHpRZ5^@TET49@cCH&gNqkTe75%eSJQLZ5__$M({43 zpWb#qwKdA56~jhd+RsP}OemUF7`I(IzNlkN7J5L^Etlx5wG+%G9M)`H+GFLP0aqgA zw1TG3$o$qG1LN2}aWn_n^>ADu@}4`jpsh)oJ?1s3H{jp>Ses2g$QQa8^+j$w7MDTI z6Rjv2PB92gEaoA)tbf*dZ2q71W^k>Uis}ISt8Pe9Jo!W>A=kQLMaZoj&Pls|L~20r z>77}nuO5;}zLEEBPtgQvJUY?*@HlM2`R=3w2H4dYyOvmB5B`R_F@_hF1;;BoWDK2( zo#AWTdE0CTc%;$?0c*-GPj=vSC*3MQrkCWK&HvIq^{v(HJjh3-yjW*RpD7{35qw~& zP6-(Yw0HRJijN>2l(172@Ff4Z=je(T+GpJJ<;J$KZ4{C@8Oa0tx&c~LxCu$NHMuvq z(+k~J!6>SHPP?B9oED$_YDnSWhSCvT@g01Y));eKW#JXtT~^@4Wo>fWcS+H4$Gc>3 z!d#ASGX0P5L@CqJQs^u3-FyR-xh>MH_1)#5r;pyg{a7O(6(%SCB3Yt$jqssH&St(| znmAT|P9QwoZ4uDiGNf2#RaPc1`r#l~8+Z}q&hk2Tp7ksg2ehrt=rQXM=#D^_i7crNY@g+6WO$dG# zZOL^}dRJd*izWmDBe+`eBecr3^_mI$$$P%5977dZ5H3ht zA7|>}Yn-}$Tj7TxdDESeul-E7O0!-+cYO<7DIEIE)%+zM7H%}H@;M5U|`G)_Hq#v*H)Qs?I5H10<*+j|BRF&z(<7$dVIKsAbRWwS1}T8I*xbup>ABe zefEeP^eN*qmZs^?|4LU#)Yw+-(@s0Yon=?7ut1>jNjA4t@!u|Zbr7ZE5xi_v(Y<5u z1y#~D=U%;Z*5S~@Cyu!u;?SAAITz`27y8dX0wfQuFL17RTeOGU@wC#IlWtX_ZHOYrT5N@{XOeg*D$Aj8+GD9f&BwnaSyZ@@CkH%AvS{q z(w-c?M#iR3fAp~G_2~erl1PAJS~(QS9kqUT+V$+*g|DoI?!_EEER={D&Hd1z?Ud6Q z+>ldeM?AP;O+PL+Jc{as39=eBee5@){TovVec{<|tAOgkcagie3Lq<-#Z^e|&)I|CaZd46 z^zy3lAfTPhI&WX>Z`rXeQ&Q+63raQNwQk?*wR2{vyGIPGgCu{7W$*2zQh zn($|I4a~w0SG~>Yv>I3H?^1V+vZAeEw|JV&JmRc;<=d)->(2 zCBf5)(@edS9!gzwj&rHNqG<1RZRuuR=JO5XM)W__H@q*gr_N;eTnvW`%4(_a%a74&0TTBub?J*8C`bUr4qMA5ha@r9&>6@cb0Ce(3Yhz zr}as4#@dxot^ZY_K(cBQu2%A%9Dxi-b?l$etWp5dew;sE))q+$K3~=+t93r-7Ip6v3Q;O2bd@G@Y!9-yH^D4f2anZr@-7*tF!ebYT1&r3{L#Wbh`!og zFW7XtZ3V%X&NdgZ?11N-&YYWhg)$dl5h9vbB)Hm4s>E|UYF}YE<1(z?z4pt}v#j0T z4sU+>HC7-k*3j#tw%mHN1=_x}$@k=qo${wesngAVi%=BME6U3TBo z@b#tNd;(v#v$h@EVRTK*S^wZfU=wYI^eFR_IPkQ{fO*}ps~AG$UP^FEN6l}5tOmm3 zY?GV^vNp*+=MVmBvpb{T!IdXvGYMb!DaiBiHS&lIiIhc6LCIs>dLcU6FkktV-ez04 z%$qOCq9il-IA>Y(x3`4H*4RPu{0`~F(K<}vtC_tD`!lnsg)#9-jBYQT<4& zZP8WQGH)-7#8Ib$$Ibncgjo9y>hMMIB&)msL@A{N(N;+hd-uah((otu!^her_b!3r z^Fj#^1<(YMh@QVb*0xT++!`Ccd&4RA@m-I;`BSfR%HsCMpm;1>Z zKDSHVDAP9U#471O|59JD5O_1p_QhRNRpGQgK$Z$;NmW{(oK`7f#@~uEfXzh_ws&9s z=woI$sdEtQd6hcxC{Ic0ruCZZ>L-h{oU+1kRe^Bsf|bkiMApzsuExbMkl48jE)p%$ z8DkJCi&8jt#MDK|ZL-BA05Ze&6?gp_9^CT$(fg{#VI3p52)1m2Wt}weeL31PC{kBi zfwqpaaUn+$odM9Vbgl;CZ)=o##hsm{v_&iw@FMBfW-`DRXsUXWGB?~JL@3aheEQoE z(@u@3a1#Pd(e3%c2e>hZ{AH54ErJ4fQZC!eu&1FHC3Wxm(%H@SWZt`3XiMAKZLWKY z&91w%;))!%MTXkBcck%i@qki|@`QFzS^e!A_@-4tP(pqdI>;)x;d@i~;BjW(m5P<8 z=q&$S780;gqgf7Gg(>&=oC?1gBTPX;juT|%_xR4^uU*0}E4eOtoinw3nOEr8EckrE z|7ZDGPxg;Y02IDmS__{q#V;)%reeX7c7C~MOJw12|6^s@S+cb$c_&^3T7=P0<8U`R z=`4SPwSrvnwC$GoV-GfqG{!Qx9P%xfUPc>&&Ga2M09 zSb6Gu^JZ-^s@zdx#a#WI*$350c;c>*$b)@c4c>J=zE0b|$xCp9C{yh~ZnO5w$OyPf z>AuCCBl`J-W+A-`sx*?3<*S9!p$aHWbAuNBjbGBg@G;O_J}Z_%p-IW>7`9w#OT zvYe>}tIN(^Rhi{ZC!n2q?H&lUG9L@bnfaY1S+_bh=o{v77lA&e7)a#ahvSM+u3I%6 zEoN>RYVsCsDsXf2?2RfGGqjGz=VV~P*oz9soWro9GlOQm`EfpI2yx4}6`>X;PSqVn zQ<+*N477CK4Luk9Vd&+e0gM_>!dt&lvzk64nlMv1o8d3Qk=CS09-X+?9ck^W7bl2v~ zKCS-j%^r9dw?&~H@2(ad!Ym9b70o}8Y>r;ixLTc~&Jt`u0k-gCmHqvz5;s7`iSQ^t z_dr||UC&$dc6VOJF-z-k5*%e;!og^}d4OSA1v$pWN~hZmo#n z^XxFh5G)4cL--QA2a~h7U-IZ+#8wQ)y$3l5#qQw{5f}qb{RRuk3%uAyR!{36{cDz7Zh1gH*7M1|s{kR5*TlDbi)WI;Bq_9t zH;qFd|FV{r-XAMHXBgW2ysJ>%?)wUDac@<@_~&`SQaS!vDcFmU_)y+40e`+s)jbEw z*NKH(;tY!3?Oz;>pYW4l<4pX6N2~MsH=fAicYc@Z1oDgBYf>=Q% zgDj=kN{&0ylyqAJP8;FE#VM}L6=$W;LT38t%n6}fW({yX@}5)Zd|Prg%y!lbi<9Ki zs?VGlCY9b%;LaZ5-d)&LrZc9iEFcqyCCmO9A%D!fU!-O`<8+{$StFd=CAz`1Kxe6c zaaZYZ$rjFamK8c(T_yTv^E-DHx=Nwena1nfXSvEdx+Pfo3s5oj;R0=_&sx1F@%lSG zk4WdO0;SWkm|rvFE}7(l3tau#FQ$aF^wNO$c8%niN>Gsk8!WA>5;W4CO6^sAdsihg zdmz2uEgi*QmD%C(}L z#BIRiw(Bp^+*btR`<(WLl6C`EV>)!Jr=PQ`f>gM|9*6i?VJ+=Y-X__$nk|$SRYoaf@vBPvLA5~C=Pf{T;C&Z(S+ zT#Y__j;t-OVSr;h`pA{wsNA0pMa5x_l}}bjiv~4yc{sO{1I?Vi);-q@82xeDTR&#u z(7TRBY9tNt%~tsLQDBZR8K)U7@7nRU?Txmz zm`5m$9k-OkLqdHn8H2VtTyFdtdrd~ju3KpTgcrD0fhq%pGf#XPTIe1ovuy%sY??bQ zpIUB{4|OV+QUZ8yFz>cS?%eWva+`*c(v!RtWTQQ?{mj%qT7cO@JPeWFYeheyBHnGk z8*pUQUtNDx^moff$ja?hjOZ%Ub-?TTorUg=g~SF@La%Xdillyx`C|*Y-`bkHQjg_NwUdOViC`bhMllut!<<@%fEgm)B)`FY zfLXV>b3~&IjEBEHWQF2h|=9|GoGhddk0^9 z*dDjY1F1RkJ+ux_Wc!@Z6De%zo~&^F_?+c-H;>yI%}^A1y6GJ^v4bL3n`=5duIP^k zn|BCrWf^z;5mrvXDFzPcCva$4JBLB7ejqcVcsq$aYJ)U+B=yrjv&O|gqEfe#o9_62 zd1{egUJl5MA|a9kGIa|tOo6&~MmCo$8`f;h?xa_6@>9}a8l)#e~z?1&NZIM^!EwAByKSP?t zo!;Zpt%W}oLJ*rsOU8sYd|B`2T|4_BH256n*4K>X7*vV;`U<`Cg)n8-q_TdY-*iTkq$M-v=&a^%|+Gg zP#v@dx3f|7+JM@UX;rr~xl_SD)Ko4=(kg4sbCRYdx!(DeY%=}o+tpQ)`RhXglNN+k_u#BEQ>O?rQ$ssLtFm15wfErZ&+GD_-ymLvi7FSO%^ug; z^g`oF>qxLoc>lECR+M|AB4Tf8%iKof9akf>wc)56C-`U>C#GagV^#WFHJ?}*xcQK* zvViOOUj+p? zUhUd}b57!(d@aSStl!&w@WZk5WdTA4G`5vN7MR)ubn`7~N!6M>p#T18W|(NYxlW4d zp!Vr#5oMA;fLXIUp&Z8}H@JDR@mZ0vNG;@q9QnLhL=twgArBfx>n+dCi(C*L|9zac zhMvUT0EThH!h?|ba;foOJ<zq<6Bp4EUDjh-Q0;L92EWuSZk$-=xezt7G&`dDvM zXdv}SxWv_Y9vyX#e7qfG2U}X3TpyNJ=^!#WQqfo@j%X@Dma#bdEG{51$JoB#fw1mQJT~@H`8q;Q~RO z1%i2h&6|QqnRJ$t|gb9pdNpvwcrF@)SHBt3z`!zN=4FpS(X$f zrd*skSp@_;O!?mtIVhH#%|C^TJ)YHP9rJo4`Hrko>aW#H_>)d%*>CMdoI4%8KF~*3 zWPYKcE6;el8t5*=N3%{<^(!3QuxC|bJ|E49AJOb7oL0o=@ftfd2vws;I|k|7syJM1 zI$Ywhxt8(05%yLrlszn7!Puu;zf3+SQN?ea8B?YEta?%9qc3%VZP~Q{x9H?aCP_w# zm?s;&KzA=UF`0L-XHQXy=ZRnW3HYa)-mlj|($;IR?n-rTmMtt|3mIGUOr>lAxzYCd z6dDlzI`%gD*grBvFAVJ4z&i(w-j@_zj&!R4Bb?!n-klyVN&n^uK8CQ zJw_R`rkA4aGVV~__xWVWM*T~`2H9b?CC&NLX}w9dpkT0VBMg{)1z&0Fs5$jRA!|XV zH|U2n!P2A-&B%wyp+l`3CJOJGS--UcZzjltCZr!Ea>KmT3foWX5<`1}OI|Ze$H8m( zzE3uM`zITImb(5^!^NL$_evFeqAw-Z^`+ zonFC3u(^gSx#UQGyg6Ds!Ob%DastxXn&Fkj$$$nbwKG?7cG6u^V1@z^TGGx*(UVph zqidUPl*IheuQfCzul-Q!);&eGDBI!sIx}U0%<|;z`dL;W=M6WDwN(~$&RO0n_l5KA zRfep67&r#wDe@B7uBBTA9Mkb-F5u^%?j=Ej8ro2?s5v`&D=QA%4mRdZ zt8)}6$4d27{AtaRRJ6-5N(EQz7IFtsCS-u$|p4XHD9kl7{RpapiO>nq9*U;Y0JBnOa^3#A(?#C5@0 zoVr~Nd20c1FJOEyTOotpC(I)(a@Kjis~d;8PgcF91ukJAF0!Y))%AFM+i3m7M^7$Z zHS<}bbkW5{`-n&{@@!w~4#bV4x2MiP_Je=bC&RgNrBIZ(iFTS&_HP6su(Zn^+)9d= zb3YV~9|`|yh9Gwnr;TF57kbhug%AtKY5s=$SUg0hHSP_ZQAzFsTzL<{*BIWT?cyV6 z_sAI_2}ja-!3R;%gYczU+Zakd=Ixth*SVE6nuSfV8>ls9wqOSVn-fX{S*jer+Xwb{ z7HMVuY;Cd4dFEkilRBh6g0NAe*Iq(WTt#hS!kS#Xu46*7z?s$`uveGdxC-UXP=`R! zhduf_CQcp$QIV`tZkugzmfZXBJZZ7Wv7Vmb zB4d;pMvLy;j@2^;<;FJUugWhdcjgkGS-&U_$AvnY9WtqAks1qAG64hk3Wm(|Ou@b7%QBLG<5Nu65 z_^&j8iB1NcMUN>F>g`zXogCZ;`Odb2rL$8w@>*++JI={rnEfNV5q2 z`YhF`qhZgfuf=xcY37iMy%*zH?ANgsqfq^bF8{SJGGz3=-e@JMDQ=4ZD^4nK<>pMR zax2F;>U}@nk*LawPbkqsyt_pX(OFmfqGbGL5=y`Tdd*r z+*-(6SEUNZ%{h{&0CrW5q&ikwJb=!8!mWM+S=kfL%*WlCPsBD62O!6(UPme_ZcYg9 zS`j+)0rgE0+td$tAlPO))vL&2=Kh#UtJmqb1fEx_<=sLkliOUyij)acw9%cO>&zOJ zsNR){;$mxl6bdp^4}b_QsGLnY^0*ZZ(*f6wcf=?)*_sCD@ZD@F#Ry<<9(3R^+vG411_)(k9mRZK6mKt>B$Zw}!Q;U5(w= zL9yjJ(vb(!YBXlP_lorKHZsAXdm^IPp>M@b;ugu7`Sem0f~AHG#Q}8Vd#Bg5%B!iG znz$EqLe2JGBxY`xpv4#33gqx1y|!ohP861%&W6-%`_X#Us%E$(i+Pf-ZuKfFsE9Pn z(NNRZX!>b=ohseeucNou*}5CaB^>bbXYX(#FNWuw*2LppRUxhF0d1ldM_OL;)tY?T zfc-;~ycW`t7i}B;Z5tvSk|Ut~UTfYf7Qk(B30Ppkeo8BS+;&ov>dbE?XQtNHWj%=b zh1T$#!vAZmhNF?$(h-cjUtvv)rY2{q_v)V7r*2%qdZ}Og54BH~biC`&eQu5uiZ)o< zjxB#W3(?0?JgGF>-Y`2X5*73OpQm{P&BEr_9tqVsc&fiAj;5P!y3jgi0mXDB3 z^G6~~D9LQlb{F%|whEt7w$nqYL;RiF{whOnhVPMKm$rlxtsmiOS~p#py|mSqQEj>vcrpO}>{{y9b{Oj8D|#~8L#VXLNv)YoIPjbb`P$iJ&l8sAM^ck0 z)(Yjf)C+>8N#ew|e1ff>YOa&E^n(s|9~zKxFJ4dMIvr%+-)+9O8x7{(LGRSYOK8G2 zt}s)n`4W|8$iO-IsYKvZGTWu71dg|;9!Tv>WIGY9${6GCOl1zpEVILJ2II`d4m`x) zui-xr@juZU_eS-nEP7tZ4?E1?l~vHj-0B_bdwxU#iwhZQ8wAg*;T-9b1+!bF34++R z@njR%r?%1~s>Gz|5Q^j?sm==vZNLAuBU11@1c^yUNOuAlV^h)FF`7SLRg0P3#-7PKg07N1-ym6~ioWCiYKV zYVoPu{sZH6G4Vf!|9z{0Q#R7^KZdMIB!f+VN{Ux1_onB^#`i6|*480By>|0y>83uC zln|isFZul!P(+^ayv!=Dq(07Wh-`9K6cR*pamK)F6kp6OwU|ZDPYvolv~%5Lg&x-A zLQZq2ZsLm8u1<^a@shgEgZzl-Q~!w(nqTOwA4z=~Le&kVvM~9-h&M(bONwvIUNl)H zmQQF!zas9{#&R~pl`8@d{5PF2dxnS%k8lHD_T0$*Zm?(ri((fJi^veVQdX|`zJ@SY z-Mfh{L)vfqleQ!uJMz>(z1MmHm3w5-)VPP(eU!ETiJz;$C>iiV*1GCIV(vjtiN;iX zAB0MN2rjaVUWxmtJE-P#m{%Si!70JJ-PRj7M=!i_^M!hFY@F||q1MGkZ`3$$+B-{! z0R4VfjkVoSo-^}+Q%?LDwS#c=s@&1LM{s*SV&m&Xv$ z2(FLmDt|-rk5~G9*R`|o2Op~C(cS_k*0_k*JPX1sjLNapT(iHQk6^ut30Yi3AEqWW zo;^#>*!|>Y5?oh8--6$s#00_TaulD-o%f3;318R!FUlYOC9meAP0i|)TF{f4-6u7h zRKzOleUO6nhS81uJbLfhzF_h!eUEyn-V=YRh7WC@p*HpX zW$g~ej^+evjRm61ntYM-)6YHjW%7vvl~mq#nY4bE{>P;o>xGGQ+H?6$&LhD)xwlI)`q?o5I4i9WINKzG^MpKH-aBd?mtH)9(bz14 zQfsVaEk~^NZbL4!s+3so6P*^>o)Y&A6ukk>*yx*XqXVt^O{T1b>MapCUqL_4=925( zJW8qvAEf;AYC+0yt90ponnaOA`2gG;&|~R<`6IdPqxGl#=Vh||Nj(VIipeflA)50m z|DmNU_Y-8YpbK@08@Y} zl~{Y>p_ly7(R<7vW;GgI|71Sls3AQda#`wXR9({p;gy{uB|0y~c;u&7v4|h#VGa&N zDwvwX=~U5Te-q0$qkM_9y4$QI*R14|RMr*RsT=S*o~b0izBs^n@?8hr|9qwj^k z03whquf^pyd|WWTh|eU!&WhPA93T&6Tjf&QIQ@ny@+nUr+v{ca^u33g)elDw7g z;84CM8|xu~+{UaqkH z3y&}cb>=~C6WFAZr=&YtsdEB>pUL@HB;LY_NLRYzs0{STzJ*tcOiFH(BIS9m8g9F} z+4c|<+>jmIaOUc$MEM$jpZsFlqdZk&T2_g5`7$%T_5<_dKO^|qAc@*txP{kjHDa%^^n+Nk&|HIF z$GrK;hb5DODtvLb$zvRoO_KPMk^zj>H|32u+e7Rr-2-=cQkjolc3V{l7r@fMM@NJ$!CSx zJLGtTp<{axa(?6%OBJn>(HmRB0-1+!Zj*exZ{>DVsC^>61ezErZCoI?o3%m-{hMVa zN-icpAm1Y0x|Qcno|AK=k__5bfvkx(mtS&SZ=d_g^EHxDL4d2N@uwFPLC7rnW|nVW za;SW=Lt??uX~1@bjr5WyVy2LF9H3%{ZmXfpGm8_X6}=ohh1$R9$o2s2MXLC(de$T8Al7UML1Hgg{EAIXjxA~w1Cj`OqK>Y zn9F{65cgiGydKozS>+z_mSmSbJK*Ce4%!wA60Yj08*nE*=L)_9^e(;RQ4kN-(@S>A zHvIS{_M8bmPjX?GK`<-Q&Sa8=4CVY;K4!+%trC>(8OE^LbtJS?;`W5kbY68fvk9|o zWSO6hTFT1BM64K=kaD#*v$$2Js8p#mR>y_Z{O!sYaaj!q5WGLFnwylTFG zOxF1TYtnpay+7=g^vx{ZOIC}w+7HxE+cG6IwMTh%QMJ|K1`L5;lY3 zW|a9RV$HS)Ul0pvb!Us5(~?^KE=~CdTc%zh?M%LYfndc>@h+a-{%vCgs*{~S3k=Un zTAyJtUlED$dP%h~Px?T@9_6CoNa)?QB((Gp#m~Ws{K0EdPvA1yiQuO z{qS}d8DThsWUhJbJc(9AxzV;<7Ne59ObS>cB}OYOA{+C0Ttd#1i~;$mIPJqjCUawl z3e7*cyyGHjXYwG5&mQ6TSu$eS;DP4Yp^;#HJ9)8z-$E3H?(NGQ;>^z0dSU zfmWrWy5S;`$9>!ut#TFEAZ7;Rd;*}yGYIu}j zrEOHI;bDzRb&r$VMx=;}&i}X8K9dCN_kDkCGw1BHA8W6@_u6Z(wf0)k#7N+m0qs7N zT87eLNJGGES;d%MEoHP{J!Sq`1nq!wn=MjCk+kVd_*mF8h-O8=w8!;~Fv^+5q~-eDHI>D+EJ zUDMOFhvf1-!3{-P*=+}9hMNsu&T}NE_V@mhfNYqNLs@qe5b+y&3R@K7yC4mrAWYyigrFA^vTSDj63L?o-o%pj^?n}4 z=jrj0JypOFXf~mH9QK4f5v5(X1#_DC?$NI4J00MjgT&8p%9e8n^Q+gP?|Z#{LWu4E zlHk^^WLt0>xeFydkm)Y-8t?<@vMG1OpE?Q9bgF2rwt=Xb2>B?|=F3)4`IFR@+MYZ= zU&n1x_eficBrg}Yd8<9>8kd>tzYg2gl3#75kpm%QkljsSE|7FC`)D@>S^-j_l~vlo zGB}(AygJMx0gaUeBDv*t=jxI0ITUNmQ;(n}#+J);bGp^bhj|Ba&aByN^`Uky<0z=H z@?7vxWLjlwSNwR*6=!@c|(1Ir_=y!0`Zepr>`Et9D!af`cn7hkPO zsvB5h?Wo-%ZmP?7Yu8s{VWK5Y-{*VQJF4kwnmEvh8hw>0gxr!m0oVq7E?g{)HlCbl zNUDvttBn>sJe79jGU=4Bl9N3?L7rmxb0q!dQ}-^7!xQTJQzyX;9DikV)CaeX?h zi>{}`_eeR-t>U-s0i3GcOBuVE(s%lPZfmtWDZn7EkS<@^Q;yXW+;I6JXP;0-=$cT* z5C5#E*HMy5d!xq)ZcB8qx`+>@(zSl_RjCt46;6YEWxP{gO*Yp7mi#9E zI;p8G0>0A;EkWKOY*0=Q-u^j`ZABT-^^$1Uz64_q575-dCDqa(PVOnx=b5FG1XCjg z>02dSTKFVrmqZH@I%67$#l= zYX{f$mzsJ!D#*sZ`nd8x{aX34(o%txw*x_GIX2c`X3p`-U)Q&MaKmMX;9^tF+imbc zVlqIyzu!0Grj^pr*K^)NPL9}vkIM;H_3t@d&;YO)gp+H0pah8R9Hc|Yqd2yue43~>ciongWWrmz1y4w+n?yq z!MRqNSD2%VzM=V(sKz5PeVb2_r#HCcEuwyA<{b)wIfxW_29C0&Lp|;0O1q(UnUKD0 z=0s(?SbWZJR z9TKNaC&3@^`mK8&ycF|bJc*xKb+-jX&xN@supO0r9b?!3KsM$)oi?AFC!g&dH^TRR zecII0jvY5FZgnu&Q3r`Z~FIZBepVD`pQ9aoSPIt-7^ zZ{`8eWWR9^WZH;$cbV7>DU?`0uw(BqHA4g#4rjzkl_M~j&iXqAE892yH@iHquVKo^ z>vY+tPo=#%X?i@a*5mO&0YLFd)X(_0^4|WRC*UJyf5!Mjd zEnZ1FO<#PHum^;a<5i$m2Hy-~5!J*mkfI6}MRjt>3WK*6*~hrqJ|BDE5Xocbl3giY zJ~^6!P%GC6kXPj2h@ihQugX9WmQEC0%+f>jhHuX6_v(dQe>B#tB`+}C|9{Hcx85f5 z0>doHt1!mOh?Sw#=p(D;F)(|gnL%TSeNeSXCXW$lH-2tU5f6Af!|i~6bgPG4^(td) zj+&w<0Htu6Cd7%r<|l}BqDP@6 z?%#mPA!<0Q@G0IHTa-_}_zL@s5ZV`CYM;l+bCZ-%zz7YI)<>3di+ormy`_qJvRY0w zew8guf-hbod2HW=J8h3&&{LZ&8jX*Ha}+s9`6wx0Jd(d?KOOvC3M1Jb_elv$;#Do+ zOdG|~MZSE1n!!V#@`rW574{jj1pjD$agH$l@onU(%fioEm3fd9Ms}T~T&F3ENMZaQ zmwL1#>H^h+*G|9-@1MCIb}v40$*M2tskEiYL`PxyQ*e3y{kx4+K{ z)4Mn}tt6MksUHwg=V7T~Nrl|T(KyGqKaVR}#_2+w)yxmDlxTO` zi(VH_>g~eMAXGa`{5PZkZU2phEh6>kM8|UBZtEO}1L&%CQblAihQgnld&!&Mni#m# zcZV}S6PK7b2&{#a^a$7lAfVkVw)Jc_;Q-mN@RO`%^Pc4`Dr9)bl7~n5lAvi2ueur_1vbJbTk<>S5(>&F<-> z-zVwX+f5@g`k}7eqwDRk8nlgDX^)C5)7L7^z1gzc=^6Z zK2cGTwDwL~_*PH36fyJ&;REuue{b%^KZIs{3be|bd5p1x-Wmf7V=?`(wjief z1P%uWVWxA51Z$ppMqAT@lYHT!b-&l8y64-vR6k*-_HN1Ghk>tu)vp`)%3}YkeAWAR zM~a6Ov1h9zu;^X5dOVrRht_p#?j_{rl=0u>ZdyPse2bi1cP_KL%G}B~&J`}-C~-Ls zm2_EPAS7txj{fx~PJl%L8b@lYBynfS>Hhc(X*$%+G8kHSoz`@wg;=6Pnx`LNGqwap zhe$ZpmbrqbsR1F+TDd7DdN}iWdw8zB`GLp*JH12zbLqrpbHTJB^(7nihBA=hK$Goe~%ze2Ko7Q;E$|!2#)fDNfa+NVNs(3BV&PpI74$ z$)H{yy@c~=LQM@e{*boxZVDj&h8K1|*Tx2gKM8QC`{85QKuBl4X3fJ|sScR`+`)1a z#!8pwzDX>Y`z5a~e%Jz3`hOrXG2a_QyS()4alFHtdGHyDX#lZH3~Cnp7<>8Gwm9HD zac5XlV-LtTyIxyb@heDd7j{4PJ^h>*Vo6wfbzsakQeEpIN(1WLzufmEcBsJ(OMR>P zbw>m@9GbJUd&$F}2>Dc?#(d(82tFT33%=a!^S#eZ*%f?#xv!}`!*|c;VivpT(xw+B zw+}DA;qM@~{cGYK9_s9kl3#{F2wOMo)OD=J%t1!8< zGZS2*QRCWm>VrrgqZ530edN?+CQ9qGVwDG`#cDTt8fdlpb??foP~mO0IdUehqsk75 zuRYJeS0ffU3o_YWzQk!0a_q#p_o%J!S0EI}q}p!u65srs_@@LEuy(N1JFwLJJFcdV zw>WmTtCh4_?vyK{FE5p0;d*&wVB39rA*Ja$9;j13y}Cb(YZ1wy3++D;_qrRnC!{tM95if{5%6>;siHsTD22hEd~GgOli=4 zNM7jK-{G2zr#ew_2J5t&opRagA$j532Q5by4$~1i0o;(^m&jzG;?=B6@tDv(bJpzI z?Ul~otE-66p6NEGJk=!UO}1VUp3kM!^p+!pMfbgcp2$~!QnfjJHiPfw5YDHA^vxrs z{iEg)hKjJqG7hqf1)G1x)6OR8y&uE=SXs9-!OS@(VyMWa?n8nK%t$VY-pys}f+NLe zW=FmoU6?IXtr(}FbSZny8(z829@nD7nt!de{E)f z0JdYHaR0jaOY7Rjnz9mwr-+@6a}2HvFQGe)dsueDt|XD~hnTqtXev7j%L5J1nmcc0 z)XUnV1aBP@TpFb%tms3#n;ItIg>4?K72bWt!f(}0gc{Tjoo2rKZCT&#n`Pmev-0hF zL<9ayYIiGlBVECX`->%IOTv&^f%!FSX1jF6-(-y#70}`Y}3M_C@f_6buVrU9po33?UJ9w z-6CVf#rw6{f~lLJrjp#WfS|9V*s43sul|RXe6)YK{|^Q-KOzC4z|5{I$tj~BE3-t1 zoIjre+#;FZBIMEhq>urtd7vZXlNHGK3F&<5L|jUQvz^L zARMwrM!7AtO94iSV)AwrB_A6oWD{#qq19VF4M+#?xhf9Gqvy|dF2H13l)`1~yEvJSVyMfc2~ z@aV6`td4v?F){glOXJGAFky(~u<=zB0-liI<^<@IY?i|8E|~~9<}v_D$ytd4C4z|y zxZI&BWY|{-82?_!pT5vKqDN0~wnv^%{PZ|NQdQy7U@hSdqfpT(c{*XBky#|R@*+{zJXvGlOGu+Q?5JMvWD`} z&$A=7ZfS08vMEVahcpngkw(O^NNYJ^Hh03QGWi2-_^%jVJT z&sbY0ND4)-AC?-nyAGH-8RDJ6mI-9G5yUbGD?vl~uQx5a1@|BBqq@XKfC~chAPf+* zhz@fNFn~w8oGaApf#}hG!IsA<_Y&-tRhqmYLIpum^d>{>LpNPbm!?Sy@kZ5{viJf1`dDmKZ7VMs-r?4#a0zTs= zu__{29KmixnCS ze!Tx)4N!m-E`zh03b828iWCDAM}a}bnQX^X^1w*aJ&}!IFg5Jrg_yL)jrP?oqn;bdgSjqy%!C**BT91MDmW(y5oI8}5o0vkN^(i^$&e>Ej89FhK9B4- z(W5s;zQx%0`F>}1d8&J40Ma1W0{ttOMViyQ=^A=R^v1c42cQGRhdpZ#Ru#P&){qwsl0lc0DVO-&^?bH z(BBuJdlH4bVP(x=w!n|r58hIiKI|u~1`P~0}rSt1Vvf44PuZCXICt_3$tOXs?Rzx~`$*HlT*8dQF@Cv+&y z!H0n&WU3$}cFn+~3Eu;$Dh)uV+De7w`viBTnc!>f;VF ziSK6mw{npqY66day2vtk&Kr+?`bELk#%yt|!BuE)`VzrY?nN)TkCsE-ede?`46GY^ zYzkRqi0S)V?uDIQ`dZmtB=Y2aAXo2i2V2BALZ)E1$z@i6o$bLEhcvr%Wbh{T4&FCC zvKdRMNOfpzC2vVu-b!PR1i%@))=DQF|r?ngz_9*q3f-)Y5q19p-L7VavUhd zpXbHKK#4`R;KQS`J65~2%1md<*N>~R6G3U%NGO1HE+(&gYnPZugd_>2%a8|#sN<$3 zd)398`Gn%o>FA3hvi0p%f2!fpdsVvm_Pg(NK0a^w-dE(|?Y)mj&b#~Ey`iSJKO*_g zGZJZUV*#{f@2Un$5>sq%ZIhL0Ix4PA1m5m=yCZ2u!IjMg>hLEhP7PodEFELiRpwc4 zg{BzS!xNnihbg1J9dJj=5sO8?BP(fT_b}=Ei4rj-?_BjcSD>lEr7tmQlo&3;AtDg6!)7J0UwuIkSn6w$C(^v`t(9|J=yTiaUJ@FOeU?hew>Xmny#TaEHpMN z)wFoby)4^Z zkW*y+H8|bihy?Yq@7|rmn>saitweWr4%VC8m}m`@1b^3IgKgSHr`}&Ws4v)@FD+H) zID7GKsv_fK#8maSTUYI|z`YXkVK+Isq<7?#rxR0b$op8JUo7VyjQw&RO9Y(2y+wsu zw&Ae#e`=%GdSK|htSB*$uaI?{m98-jJV2-96l`x;+sn$wt3_I)CHDTq&c?l~j?uh3 zH9Hy)IJ+MEbb&|DUwh2au%VxR=Cs9EGh40G`8| zV5A#x-Bkx@W6tErknH%++tUU|TUez%CZR_4uTSzk@`D_Dz6yw!(@2Wkd z?lpea)l#0~f0T)*OE;#`>s_}-XuX<3J zATmHc$NemB`I;EU2Q4ih9?Fax)~yz8R#p1`X7!n5D>=C*Z$I*8B~Bq@RwAdTYEmD` zN(87k%aY~C?;I#}_U(?n|45AZTO9iFw^#P6$D_UKbD;2H=~QqjCy-=EMk^86`r>Nu zsw~pYKNno;I6)G0O2L~YJi`;>SMu!Yu7;aQz!Z z?!%&@8MCe6t>6RW#vW3= zf~%wwuYEnd78Vn^ayc8j8{5UFSmj!wGeQw!6J59eH!PU`v4?fn)R;JP0!zNWqGXNC zDAeG;jf6830vD@Y>#SN!or$5AM8&KI(mH_dZ>js7z`AjzJ+TV+nq7Cv2udmOTOtE& z?uVWhD%EIs+>15=%3hkw6=HWI71lXkHuAoR1ASHJc@9N z{f_3}W;;N^XaVpVc88mfaqWV`IPrd?o%<)gAw0PDIUk$z=qvF7GGpq4)LkWz_0)f& z*-s2CVgbmRpEb`FgQsX$o}|t24RK){QjU+LsMp9_co#vQW&@WvZ^Ee%)k|^lvH2^w zaN6)rA?(Er+*3q`6y~Cd)2d}lLl)B_ds|YQ^){P->S-luPMqse_- z@nIy`Z7@Dd_B16*`K{uksqw%u=YHX@)G30kOZf@d2t5>)`-2;Vi;hjs_S=9e5CT?_IJj`P(r=1vGEk}8DR2?1v zHJx#_?9_s`$cZT?$#Mp4&_rCabK^5R<15S>=4g$p;bpu}6F0dtMsa()t>H6NBd-qP>o|PEBpAWLP9ruaEEE2D6IRGyq^)@^` z1wOA(`xab!xs0oBaY(-}&q)m3uRXw>R7Y#a#ASQ)mK7KLvEifq*E!BsTXj9$N#3K0 zV#{enU$#)O7w*jB|GF3M%-YY>-{LlZUw}Gp1dfhf9f3#p<~>@lt6_6-bmzE2#c;!u z)_j%7JD%l%VqY>43oVrqCMoHKR|kSEVOC+GKiG0Bzj8bvSd-;L^}hDB^5pN8q^$3P_V!csK#vW=YVRqOMq z6lYx#i$uXrZs>WmQk-y(yI7J`kVzF*I4Y8zo{U)Nc#@spfG7LGlk9K-N*b4Ps!+DF zn|r#N1vkaqs}ZTE#wE4pLXK|h!IrgrcV4r0JF(CfqygsHI~d*4Y~0r2Wj8Tj9c!f{ zXR%9(P&=@85AP7x?%^F+>P0`A6#YCf@6xx6GLxeoZhj`iC(P859T|!K_928NS>jtB zj}?5VHNiPu`K{oit%W-Y)DX>YjsJyNuS${lA9zYZ zy42O3QsDIqyj9sXZ8k)hQ@JGmko0O_dQ}h5X_3Lv&ad`PZduO%S0o1UvY!|JzXCft zyg0=tML!G7yX@^^IuTnzC*Iy`p**rf;m>+|UoX^HegbuCGun>mi}PthWC|J-3&E^a)1NQRsQARQ zFQfTV@wP~RoV3Kb^fx}3l7a>uJrAIG7KsSb;`S(PEz9I@Um2Vz`Lo?fW^`ee-@TZg zMNVOyw-~l=tFHD`)Nz^JNY&r)-ox`!F`m2~wU6AjvMX^qGQboT%vBvJ^egp9-fiw=B#(gX z^%<#mv>*_N$f#swWPQKh#2iL-XzDffJAGy^Y3PLx5r7BXa1XlgqrT|@Pihx+Y%i1= zJMjNrJL)0n`dGPim*$l15e#=)y;}V^?X|LH!R8Mkb;q2>PD0s>(v`rHm7Q)`hjU`` z*(TmKt6SSi`I51-g3TMr?nXK=Xi)vUyI3+gC8OkmkeTrw>p@o9qvT4dD`$u}KUX@@ zZQI4^6fUk%%v5B~nw?5z6$M+algdLhpXqWTdH!ga9J+4)bqjKtw`MWEF~+Ncmj@+9QO~z$_&voyn9l#NW}9jO7s=LrFqqM=UU+@LuV3@PXg) z*DdP=I|B5jW8I1@yoI=zXM_3eey1kO`E&G5pEDOzfeuva?WP}lmUS6-Cqw}wG8Z4u zm7N?gLLCgS8T+BN;tsY{$@f~;c&GEXtzV7sq8rP>MIbE_NdG+G&B!6RvD&U;)>Clp z-u_z?{hivb0k1k`CSuY<=x@?Ps0XpV5e<$HwSXT$3u{I#%p*GESRD;DIBtGVdO};p zW1ShJfD6ok*G_SERkoWrnZ;wlvdO(x&rX8YSYCg(vD4{DpEB0?N#+C@%1mce_N7;k z^?y>8lJi7zu!H}Ukw}ifnx?T+^1n7y@@rYUwmivTWe$f}F}jEaPIRV>MyXJiRd`k2 z!aV0y|Ne^Pypam998kjFb8r?rWu!9&KuqJ>f%7UKvlk)g(M zed$AmTbAb%+zBPBXjXFEGIa4-4y;ivBblwjLty~cLZedFVL8ke$z6F+vNHN*2l3Jx zDZ&MiaRH4vdn(2j4o%h`jE}dp z-`SNiA`lI!s-5z%H^fvl*esd~7h(3aY8xPuk$LD@tC^$7>Sgzg{3u43PgZP~izWnr&Qu^~7I$VP@61fz888c3 zIdX%iH8K%wfE6q-l97Y>-%Umi*gT1$$=gRKZyzi73{w9=Nks3_Vg4av`5hzs41TpW zB*CfjSZd91XXPd`obBne#(}PZZfRb6X>P&x+bdCQ@fn4fsx9N&f!|KonUJ;cFib1G zPuQgKZCq=7H9t_hJFPNSpPbS>ox6+(XMZeF;Iuo;=yrS!0jG1DpJ}>CgX`*ud4V)zEYWNbn&&4 zGXz&9(@9e0hZ{K9_f`^fWvM&{@Fgo1zPeMK#WyHLBo?g+rjE%Tsts zWMLK4^F}urtANun=4ean{4L4QN;kBmAhfdKSKL8&Lrd$HFY@~kKVAAmu~A$t?Y4!U zlAm~g0jgq@(2dKP&0E}IPFX9u{|k{l6@<0~mmXnjiZ*V*mxQZ(IGc)U8!3#HdZmg{JQGP zWO~V1r)0cXArwY-G`u60m2~=z(c0;2u9HshlHRt3cH5tJ`H4RUsL<#)$Gl}VhUF97 zsS|ObEwi-j0Q|1GY_=M8N|!K3=FX0pKuVG;uVp(5%Jwvla2wgj=-}q){PDgpi~T^s z)QJ%cX*&w$PYC}>dJw*mL3i1C8@tqdfswXjITu4Z&@YB?h?D5IWNT^k-KN4w=N$v? z?>As;)4N|m`N|F!vb{CW5Pr3LO#7I&a87KNKUQg&+%xI5b0{`GJ<;kwDI2>4W08Rx zi28wNXuz%Qa3crKt=)ZUq#csl;T#ICZSOy6>qq^aw+6Jaf3_-K1FV~(820v|UHS`00nUW$$8iN^eC!O$|5#ChTa({~T@JD4lEENMNa8OO(1_xQRdU-AWMGfT|+$A<+)4HQPwDO+BMu*9tgt#^I#0 zj(`KR?Z*fCNaRRuF4dOT5QeB?*Mw!`jgeq4Wa9B+V+zdaGAzNC%cY6P#^?HP{lGI; z(?c!p+w%D$v7s8bI|~?j}4gfmcDWVAMAze zb?}gD%~<%`=#H_`P`j9FgV-Mk6rpucFfBP-c%6GwZyx_9iUP6@l~o<%2DSPardvdo z+j?|Fv@op0}qGR*1fkq-A994%n~Gex>HMOxo!jmGBUV1VPtSzpR~{; zTeig=zsaqVQ@>gYepk)Ly!m1ILpc=N`6AYcsZZXo7|Tq-{^Pd7#*GcnMjO}o=KsKJ z4d)~>57uy7%C4)jZ=3_E8kuxJbOMFBc^jat=>TU^QltY2TcD)t1(n+mOL7g|S^g38 zA-q>2h{=na!$!^5zYW6!d1PY)9PAcvOe}^8pTRKeWQ+e7Tg-85(c{E5d;tbg2p`M3 zgeWAqo+QGfs;d0`-$VqmW!?_yUGX5bCPgBo-09ITf(xwy)&zP332tMqGSM=G8lQ3; zwMUw8PuB`QvdA^29;DleUCXBIg{M&S8Y$f-f3TsLjrnf$qKsgR*p#@%NZ0DfE#Kgk zf)e{1VdDmL=#uQt%t1M$@eO-U3Cb8o3;klat0qIiCt3&Waw=EArnadROe%|yrusSh znw73fL)KTUT!N*zoVun7x}R85CX6FlQe!F*SbU0<$D)W~<3_1ykM$#@-|Lzu%{OZ{hFLP?1P$E$xO z>&K}*5F7v9eE2iviCtbR53+SMl*tKUmmHSKV*YT29Gq2($7}p$fNW{?d=NykWes+i zOQlF4U5;f^OFKyyk|gKz_Vm!6!q7^JF1*;^T3+phR%&O2u^}ETDhBm1i)DEN$_4=b->sh^t-jY+{o_83=4-WZM!<~B!PoJ`yVu<7q8}a zB_`tpP<3I7{z5Qr)`R1g{nKYzB!@3@G}>q4f*2uR_LVyyqqy=02U|*X#zL%h1_xUf z%TXZGDfh$fP=?F+!j(vj3u>1{pdL%2tvJ$Z-rAW~PW(gdo*ZIvniN`^I86wFh2WDD zk3-vE7%b(qAQVfTz=MRHT#^hmMPIxTaD8IJZM!PcG7pkwj2^K>kPJ5kTSRkpELO%Q z;`{~0WwdcQ=vrnQ8~%Fqy`xU;7Podqblbqfn%t{7@YMa}dA~2XQq~y24q!`sYEb1e zqV_qJ8|BIXR5!HNLxQN+E0>!8ML%Rov*LoQ8N^Ag-Qn2yo~z~pNn$|i#DeIq%QL^7 zh4`G)NY089uk%NSLg#9iG{jRV^7=VF*dkX~JYhC>0M*7%Bpp>&kKp>zbcv)pG9>z< z(u)`57C_i?D9PUo2omu_B-PxP6gj{e5g8yP(KPew0gx6+UBckvv*b)_l}_y%DIpn1)@y(et8xFVJ^*% z7Wl(Q-I8qgjsO}0cT!HN>q}3IUEA*~H?*fHJr#QgcQ=Q0qwh${wW0%}=W7Ejsm?ru zi*J>pc*|mdU1+noU8)#x3MipddL}W6L+w=SEpR#XeZAW4|K2t-jwnEP@0F&9) z!j_ykhhkE;gJFy8LAJ=U$rQWYGbqL@w845Qa9Hjg2_)}!@TMou_(pQHj}2B105{5x zrO55GPpKh%iHM2LKsTs8kp&el0Lwc|`mth;q1Jmvk2UEfBMVA$Z|^7RiQH87SV?ZI zBHJvSDo#K8`)eqX-`dOLW{IVJB)e%re~5OsTNo}N7yhDfj-Aa$;I*0h_4x3Uq={6T za=+p05;qXC50?Z5J2{kuOnHTA&SZ#0wuM}W%R>r06(lYycr!ATaCiZk=X}x+iQHJJ zAKtAyIoEcx=L;T^xI~em#^lFw5fyUr8(-xrMhfT4ous22b*7~Z4>;z82iTYC$kM*X z>(88#;`OcEOwJ{t!%{wVb3=|v+rwukE*6Hvs!G)O{T{ldOmaW7OYh(uw#?UW3mUjqACu+9?ftdp}|dxAGv=l_mPw|rAgx=|k zOpq&rp-gjqy_yq;5VgL|SI+H25pUUj0SSY{EwJe|g|!D8;@*``8i`CqdXT@Lg^Khr zaZaE7hW-V9Hho4Urzdeb*oGm?2XK!62OC~v#iazPImyawJr8o~7l@NL2Aj`h=)jHn zDgF^Wcwi7_QPnSL}?c# zbLx}HB}c5rUtwN-pK2<_oIh>G^f27LEnC5&$xV*)=0J7=zxQ1)D;fLkp|7wr7tXF{ zqMZ1V%&4q*mEfT=b7wIw4KCxk-lr}O>ibKr|A=d*L{OkXKO4%m954mAyQK}uI_z^P zNCd9LAt-Of^I2#GED2W_mpf(4JfN~f$41|lWh@-R-y!SL7xi;P%c7lrcXA7gxNu&% z1}f7_{94AX%vL=@ovqIPWQ@Oncm>+-rMQ}U5nePuEiQbJa;y`4xTXu)sl zcA^NB&}t7QPwLo!4o)U+?}^w79^kNRW~B01#bV2Tdf|pvMqf=H!_s6ze(RxUoIe8E zr?2Dn7O^he-(A?C9D3%{*Dj5%99T>Ciqt*M9uT=e{tzFIA%Na1Ch4&U#H`S{a%9`$ z(LBfsBzApUzmZ>Z7j*IoevRmh;2V6Qgp>OxUm#U>N^@d?Kge#1@ZAk9cNU8^5<5-u zf~ze8%Q8itb{o2eQ65IQNSZsRH21sFkBYG1E@*eEvK!OoCO-H@uw1!9E;_q2GYQp2 z40*V!(8lm&&ZHIP_P@H{rx1<~Sx95B`ANXFOf1y;8&SO$5MztwS`-q4*y0KL&>CAT zcU7Fwj+kedvMaXOUbWjDTRc@iwZ|6Ay(6JZi|y6Ej@V+kufjpV6Cb!`>ynZ6$;ig! z_}Fz!J?&@eAl@7VHaD~mN*Zq2A~#k49Y6#Eh&MAA^}`IPUt%4Ldt@q?y#(!H4l*LQ z#-5h30k5}Z)osPwgnpdPiEFK_HclI(+}gFQ^W^vy)pc*AGE}F`Xx@PqB|~fFPMTY} zte|pjLwjO?ipwC2msi*A>nWj$J^N)A>YK4W&|A~P@RVe|t5Hi-p~+OD!_Bl&?o}hpr(JFTSNBc|6W%-vpOTtm^DM8B zx&_FDKAsRswO*Z5M!D70DgV{Yo!>J#;H22oxr-<|@5t)+9vaKOeYjc!AQ)tb+lST}kI4$}0> zT=(wGPhWG&wg|D|xC}XCLsykJq{k`Sgtj+G$Yt@ zkR^%kHNUmx2%+~-1iukYq$7V-Le{t|mL*r%ScqFNWSHVV8f*3oxfR8FV|%$1TBj4x z+Y%kAt8AS>a!jv`ee(3n(l=*TZrkE!sfT}}0I%KMwz!FB!`Em1I1q^~mRiwDviYUY z%5zFb#uhJ=46j}yJoyf17DBD|SGK0twmY-3Mc;6NO=B*l*KYAPaV}?|I1g+p z40VSmpqMcOC(9vBm|9s|$ij98(&egm+eA@lU?G=+a#BwguJTtFl|o zpHi%FR&K+a=y0)1letY^CU~qj_eh4eE!g}eSyPkTyP}_>L=^FA&J#KBqvWJz9kArM zx@C8#DBEn9LmYo7P{4Gs?t#=NA%~%Z$T#T9Y7eHjL~B8&hx=r*pvcIeo3Jab7l?zY z?jdnJ*$w464)2l9Ce{L) z7Owa8f_Gd2IhFjhr^LbdJRRgN+hTTka$4r`7g(*ul+});bS4Ubo~yp$s~t=4)a6kq zG_zQHRO>L(o7P^$St4~_YW%*DNCln7p1bakr+=MTiJe=XtbPn5xJ90{3|zRMy>6-= zO$M-Pt#q{I2p>c!;j1tA$cSeP;hhqoKC+zQ(S`b_G#|1OL}n1`V4DbKDze&&a#W^f zBp?5m14~C$dEJY%Acv0--o3F+Y{svVT^12xkb$r>&Ap6IkDcIv0M|%D6hTS`iWwSRmA) zfcIpkCtfFN65kSAGycapq7_qNCoP=8(s%kR{$QFoJK=ZhxHD;wza=q!86kJB@y+_$ z)^`aYo0)ZU^t#KwkTAalW^BDTT$dFCr7I2WIW2XCXxz zn!Ln7YBj$+86tWrWZ)1kd^XRZ67=3~);Q;=-nx?;{cS_FO~_Dp-6S$po0kaj#bjXq zZ4aL%41ZU7-Cf7vxUGz(q8efLN=z}44n@D}9~mINgLL5?&oN*Uw6XJ9T(3pDIJ2y| z%qe>chE82A!tAUSXNw!J`yV;hbRljOhdgWDGSLSH9+$)eV%bxl9z&{x{gk&doW?y^ z7qMCd`vwa*Byyc{5{26Sr)+VRYv}0K_X2KKHdeDDsa$LReuDNe&@}Z-zuXWiTjzgG zT;!Im2ere{^kAkhe6U-bcXM>=W&U^xFXm^5BQcjJfYsre}Ck)3csEk_*97->Kv&s_a%4{PVh^qDxIs$9d$ zX=hc7|GRKD9CiH2)tBpy1Rdf|;orD~#V!USSxNrS&fQq-LoD>MLo zz~r>7BSn|_nU+aE0e5iV@Huqhw}38FEixq|-@l|&)@z0A1mZ)|QUsX$6_Mv56lm-)rk z$D9L&6jnEMAlM?i5$2cBa>+Drhzh1)lthFTou7vg=a-U0tZ315jvt__ag;kRv*pPA zbLadmH+^-9&GZNwgY3)~9I4`T=1O9|>frJfz4uo~i_+gJPFOPFiOcF^q z=Cs%aq0a6U&$RH%h`7WLu9t~~f_XTc=!gssZm2$U>qqI)_xucla9WWu?8&mu5+g;e z)(NmI+ke}qC0RQ7n~xcI5#KOionnNN9c|3hw}ZlK@itQ5SluJ#4IjGfZKE8_RY%JQ z$X(@VCrx(a$oU+P&xP{J?tSU&jGEey*Ckj3k~IF1tQ!t4;sgzv*v+mihBL2!`g-|2 z?}=YVxKt6_n}^>LnV8n&ryen|1k{H2WWtJQ$vg8NHzh0FOa~Lcrn{IIIWewL?lKin zRKa{w3~2&0dj+d`?gV&c>j%_2KNj(W*}yaqV{DPQA)jaMh=Xx@et^vg!ft-gTIjL< z>`qKUso{LGC_VZKD+^uOFmaUJ;rU7CF!1fa>V7wZbtsoE%21Yfxs%h0EjG$Dyd&Qj z<;WN&MxbH6j@@Z`3OG}wx(Dj|HwfN3O($VjAi#K5#qu`PY5tpl6JkD<@+1;J@2W37 zBV93khhP9~Gt!x|CMUGqoL((Qk7j9XrBj?0Y#x`V;$fWZwiSyEg?lQT_?peAx2%iP zw&0S%WO2)uGddXL!l3Z=Ssc9zat=w9#!AL+x!Hq145@Z$u=xO~;^QZLa#h`_3iom| zxm)QZI%}+l5Ir3-zo39vS{}_m0+vwj)~;}Co1%Cal}WY29an{lP{V&DBg>@G69H)^ zykoFs;VCjEOE-_8a`UG*1bM-hvzbVeP1q56pRSo!B0#+!@{R=27x@t)D&}*X+Sdstn>USoPXy~Lqo6}=`^~Xu0Q57xt%|Dn_RoY;tc>BZ{WEh@>ZPCV zG^UdG`1Ii-R9mL3)^z8y$DB9v;aQu@6r4gW_!b1YHC%1sP`*FhA3}`$Kj*P&nz1}C9tTsM zax0f}^mmF!q1fnX3rK@LQ!s^?GVqGQmYLWHGhcR2LQH&>Jk#0*g5k4lYp76GejLNqhk`GeL;f>b@6l*$fVM08S(|s z;>r2FVYaCYrKydtX~+IUzIGu#k_jTDVz~#IN*G|gOSRp8A5cj|N#9ql>mjn{l?zi?h)9&keNn-dE(qgtmk$rLwbzm+we7q36rVtzI?n~Pya1l!xC?+B@+``@Aa>e0e9 z{e`jHndoAOJVY916S@X#IE(QVf>Gvcusfhn2X^solm7rn9$ixr8 zhf7@S$^GOO6kG@1yg|an=rgB8cS4|+7tRkf>|0VZQX&TuFmRtm!)auY;jfGO_5WH9;#E^{d;CA@-hLz4T@O8VzU#ja=?M*^cQvK_=n$T0v276}9g z|7?D98EmPiA^|Lt%PQ*6Dte*&Sdv8|Ma$!FvH{B+jQx^|er_vj zj!N4kMjp-ZsU*kTqhG?KCDovYWTE-BAQl>6Fp!a1IT>hlN}i+x)n)#wOHOQr zyL^iZi}?9x2TV8+uPx!!yyY34KnTj-L|1)+1x3?NN9EPPFU zax)D=`D`&wtJtg*J=?2kpJ|{U@xNo|D$wgz^!aX`YgY^8-|-;7U%Dsi7RdCBEVkj2 zD;QnLULKb#B&qS4&IEldzuhSjl0T;63b*14bNWAMVF&JgrG=*jKP$9_V9UKgr?ciH zw|05{>x36MZJOpNkN<*7LDK!%vEufLX>gb?ZHv{kC(f0*@zb6ebCp(vXoA$P|DfiJ zNf1VEfAoD$e$DO$!40LS6`;$VO#3*Gy?V4|9lpowl3Az4&-1|gy@2KSz}l7q>!Ron zcoaLj49({)-SqSNE?q5p!movFCBG-R;wVi9-vSw$O zn{Re7A7RWmwQM7g&L8&n=2Bjo7UubI^VaVk?pwYrgKb`-O0Gv`449Rb$oTY)GiGIp z`P=4sbcuuIwf{})7hp4b&ljC^DcC$!;NPB^Xpw4z&0+&7-Mbs(6j^O=3Q!nZeGHv2 z1%8DCRpv#K3>6mXA%?COo=Z1sn{oEbmh*aB$y7;4>N=_stX=fqJtM63y(3=<*b;oP#-kcUF?OmDYS-8z%sW%EokZ^|xP z!p#JXLn0X)#dJepDHkMoJ8ZgnmQ0ERIptYSFA#iqtNHMk)LDX&x>%;1`t@=d<}S*~ zi2&O(*|7%#OnruVmQvFRv3XJt@#<$*Nli2f`hE5NbVV44G^~T8+j9#SW(Aj?1|f<6 zj1d+}Q6l*G@h(eA#bniv^1pbJQC_Y-Zh|e{l07xb?McZlv+Wv5F3R34BaweZj87rp zmyH1vm3FK-aOgKIEbFe6rmp;@j+73FP)|DpCiF?wvDO)ICaIhs6F=lU<$P>ADc69M zO0R!PI|`SbreEgl&o!$ht?Vfe-|i$F3M9v;OMc;&$6H>&676)$-u##nus3ob`&oRk z#5n{f*9f39+AL1QhrY$h=N?X)FddYce?YRQaB>MkF>r$FyGUzkHsd57#!Q@FatsSL zpF^sLCNl=|2y(^HtgT4#qafDJmUhp>(+sb@2vSrG>yxSodifsm`bh;rWcSd+^j!H1 z#fz4gdFM^f@1Nf@^K!kJm(I*9HMiRQ$6=*L(q@hn`?>wW=KsvXeCOwam>UGZNjoiK zGCV?X8}4TW9e*Mlka(R$e^m@g{ib=K-7NjZH+6GdpH%IpY(nM~Qt4*=UKs#o3!@FW z93gKzuH(PJm>lj=I*tjpU7F(sH@ZB({~g*ZTi!D@xOM7I&b7RAa$S=St(_)=B`0UY z9i!^g6)Se8Os4wTxK~rwb1oj@ZG>=OTjWi_9;YKNv-nOZGOgi{gdA~&R5x8(++2v1>KRXmms{| zfssq(_wmP}9|Clf0Db!o3-psfX6L!wXqUCW;vaTk4@>scJg@#j=Xq#Nu(?{RX*N?J zFU)bd4^cBpCd|e9VWpm|q5T(q>o^REZHi)GAHHB-zlr@Kd5IGyB6n=xNn&`!!~u~(iJ`nc z&1-`FrTsa1fcOv!Y1@C{yVr60O>1`?YDA`T^reRuK8kAZgPB@E(W_m0_J40U{)cR zY+UCTfz-O;ujjuKeQ)iQ=(btZl3_j}Y#!fxYOf--pLv^9kfim9;cL6M#_IcCW;^GL>KtwMg4?(`A~&j7jsx)bBXssAsiU@8IVF(p@ls}w$~$y$ z@?Wph2Hsl*_%LnLXNECou*YxJ%WjlY(8e3-H#eC2%%|&Ci3_RFdOqNUOl;HTDK2It zqAmf5q1ieG?2ygnqxp(5uq2kBv!|osBmo&-WLiE@nT2&>3suHc1Z^ieQ?~|@<&GMs zww1e2q1M>#b^?=3LHF|9Dzj%Ll`P0{K1pCulam6n!fcWBMI%eZwbKU}?Z+ywDRD2xkAreeTWGL^dQu=%HLzD0oD{_`)B!41-tmFBN%d}%XmzEr+`SKzK( z?m67u4!jb_B8Q=wX6p89HRs95>|WuwEd}%zpqW8K(mEpvbGUh?{G^-7 zUaF9^lz^qnrh%*)0jPEdGX`5br?xX*tc17|S#*@3cU*i6HlM9Y_Taf$@xKs!d=3AP z^;DT5RiYw;a0yAT|F$`GV`>e1B;!^OCdtAoDB{P|kfw)P4|`m{6O2ugtd-pBCCW~R zR(W?${3o_*=X1N|NHjt#H$7krC+4B$aPQA7ibI6=wM> zbYtaQOI~RPk5m|A73uX~ZThaPj4wubDS`U0+@R^QuTYOz#Q-z%pb89N=TDZWMI(up zBgULJGk=LrW9MoyU=#@)X2H*-7uul@#BjE3*DNfhv^$sPa0}dqi}Mcm7RRU1@vq_d zds2(e@h7DcvR@}1W9Rdk-{F21Gb{QtSNg-PZQ>!GZnJR#{Il2{>E>*0dXE)(q}gw= z%hTw@U@zn6W{Q_w(GNUK6+C=$I`Psf`g4~EJg`s(nRiKXOJLPdAc=XF=w-OnC|yUr zGZclASP0?mzHtkOHw2yBWnUlFwT<3^_T`^Hwk3Zfn#P|Of`j^)k#wB7E7a#P@U4~mL{Hrid_7GC1pRe zv)PI%PZU9n-CZDHTEiJc@3TpM-BirWf>{I(Y0*C>Sr(r17+hri!3X5zHSM+cBGN=tous>coj)o zm$sz%(r6+06-)ZW08YgcH6g;Lx2*0qx-0^Qv(`&nS@8m`Zt3Rx1r>v}&hWPdH;+le zvCX}-|5uWb(1c)1nidm{#-Iq8OVrfp`rQ+`iVPl`?jD3Hb!&d>lFKqlPmg3S*@dT2Zi(IVff!Vy%|om*yfxaI z-gI}SZ%Oe$BGMLfv*D=u166UM3y&LS?(Y?2@^}-EaOLrLfC_Ee3rt^M^sWF4>jv-< zpTi%u{UN}g$ax)=`NsXYPRrjPU(b(>|L=ADH|pAGUIULE4|9V0Kd>s3w}u@Lpdt(NV4XIH(B((k#OF zm2e^hz_H%y7@{T#UGJlz5y64bAkh>bkPsWiLWlaB$I#Z>^YI&kyi#$=D5f9fm#RCh z{iSG@V1{hWk^iEm#B9Re9DeRta%K(wCd6b_oDLl||GC*JEkj+wB}=3#Tz7Pvi@fT? z^F={jm1%XdxE}}|#HCBOS&ej*>T{fJxW+hY{)%Rq>K~?hvFJRgehNM#PX%G5jcFuZ z6udPv@L*EbrM>%Qe{ff6L@9REtmy>6!F8<+Wwpsiy*E>$#`U#n0%3V*WW^4MD|<)H z#!X}b0eB``avSSXy+ocebzyehKeUoA^nCH}^8pP$Xq9fE)o=$o_Z{RFTsl9IbaVC1 zDGA%TWJWo6)C{I-8IEqDrj-YxcZdD3F2Uyi)%Q+~3yVz=En+gz;pSyWGB$}FQ-ubD zx7Twk_k(GM;D!PrDh}L&E|VI{I(6RsM}{!r*}ibr=DProx!7NbS@l#h)Tb3Y z?M2v!IghTO2>!{ZG5wtT^rCdPxNNJQy7?^WlzMw*^>v%O_RF@=r9qW>UG!7g5xI|y zG1Cm?lJT0+b@R7;O*bQvq8W z`FF>dfpR0cQzv$t4W=e`ba~lK`8YO$#}PC!5|V>4$6UEGFPJuyl>_P)q02fAQHjZ= zURup{t0rT_blwp*mn+ZA#vrAwbOK;-v4iBT*MpQpTR#jyW;#s4VmgdbQ_cil=G-8k zH2n-o$6aNIsp?J4lEg~lT6M9~(@~^!pPTO7tING=A_i@z6AR3}5|6wvA<6O7n7m-~ zX|!wp@q5u>^d&fQQPFwTMqZN6ynR5lkKF<#^R>+Fr`!6^(TxfT>W&nODs1EROlw5d z|H%)RPfo0;F0UI}Co_FE>IC?u1UG!@@-(GPQ?hrK4uzvVE_jXL@P^25GOb1rv6PP;{m(&2VG#-K8F9n=JO;s z&}{x275ME+AKvjMBn$X32>J_d~I}Lx%iS=cn!voTsoSJ9OOap6K|EOxmZ%1J?D*FHz$pw zx(R=xvuN9VLQY{IyerzuUGUIyZcN~>V0VQ%WwNf#68tR{PS0v+bxX@Z>;$Pi*zz$I z%25RNpy~>9167IZ$1BS*fRocmx_Nq%EQ&1bmfA|o$?S6%UgH@WBD<`|F-(74K)QLm zz;v3PX0&Btiqu2U=OKBp7HxIKU@-d;6ix452-^P52DzL=>k zQQ+~g>eiaV*@1>-NgP=*3YEKqFQ-i{;0(SLp&*thvZs|jHD_B6wy17aE^PYT@Ocv> zkxUmW(g}0JXA~D4YIr+-FZt@WdtmfWff0}CmdKQE_bm2O&f(JFilUv@VKf!jvwm&6 zJLrBa2UP+|6SMj>ajDn~GZFuOpU(Qwn(!Dxc#=5Bmy?d+>(zm%$#Kd9?$w!Xlb9}$ zta6@20E+~v-R^gBVgJO^LQLP*>J8f-i?==T+450bb?tF4&2*<_;qtC>9j3?Zf!JJN zPMccoAu@_bw=h1f5U;E?r#vImB-kRZusmlUaXATMzdR?jGBJX5)0>MJP8DUQUV0d7tT%uh!Z*QYED^#FOhk3gbJ{Pku%V8v+j~FlX&u2U*|^^ z>+F=hW$r67A#$PhM0{IgwVV+MH{M6N*a<=Z>00J+CGME;bOdRYYQ9^m)f_P2`?Z`G zvcx-I?K;jhg(axpzF_*;J2l*t3GHEOvB1*`@awwtr+mUx^c+Pb));H+ETXd4ZH!v+->C|8e#%;89lB{_sp@fB=ItXoRRyf}%!21*J+1>SRJLB1j-y zf+$!oG!jpXI0J|Y3{FP!=4BL*q+SkD&cC$fC?07`1kq@?n4r=cskH&&h%K#q9Bd=? zU_f-f-*4?bnLzvhp6C1YdB{8OyDw|6z4qGcw%0}~BOJ!tfJpL!^SrCy$5uy#yr(=@ zawUO4Jh;FW@vXQZH#idP!*&!Dl`kJ&b+>6~5gL+^{>idJ5+xEEp11{RL=lU$0laQ> z90B4GAJV9c08u@t`xaUM1$__Q47{`<$>%N83_OcQ2$Pa`Nxbu*Yz&cTG9pEVed|CSo zEe8j4!nN;X+qzy>`CeXQ?5!J!{^BF}rkDrLak|B0myTfSKpa@d1)BPtUC(-c6O`ph z+z;i2Qm?y#{18`z;6CAl?e51Ye1fS&wtvlH!5gTyR3JqeL!A)q{${m1Gdtm~F3QZd zJsF6JtH5FH4)tRQyt5gcqw@*jmU$>y#c#UNW+J{(|zB zy#mpD-sm#SHF&X_z}UTA@lzO07zy>vjF{;N4T-$95$JP-28G|M7=t;krp04D*YKx?|dB3%Hw zy>+tPFPxN=^@~e@U*@pbt8V)_gXZlyIFsv@8+3Y;KaP^b7P%`Rxg;045pp!~IOz{J zIjeyegL8jk&Gl3U-4q^p{hSKJ)5z$W*5RFJv?4OzD0{R-Z0FGO5FAjo0_#`;6_8uT z7%~$>jn)}}*v2dz#UFX=+d#RZYt_Apr|@zL5x*uiOEDEa&GUk7!f_BG z{L6zlvBLA-Z6&qN_%$q3eDJs*0@DRmuV65<;5$CFo@qEcFxep8c($}dJ%1Wvo7oPM z%{lQ>>%T^3V)l8k3FY`DIr2vk|B)RVoC&Gaq0NEt8HWA8zv6C!d=<617=H_@U_4_! zsrr~5tNG}b3gs`Qse=ppRZY4d40xeFQ-v>(rq8YFLfJ8&%u?e}8p>t-4q3}kq$oim zhiT^MAaa;yUc7C{N_YbMY`YMD5YzDq!sE-UF2Rpk>N_~x=%!Rf^C3Do3QZ3I>4J6)p8Wn8h#7~ z1w@cV=Ee9S3MIh#_se8nb_Exb!T4}m0z4b9Vukaj>&$WG10K?~QW1}0cVaL{|| z5%~gi;gEyBz6hre!NZhy4lDXBWXJ4Mk7CxX7rQZjtH_6>uQ=Txq`^n9#hGgFe{#yR zQ1t9vU9U^MNjsyo)qgmU{WhzEm_q%<*mKPYBoFIlvYB}b$6I2xN0BA<=t2wL?#ZiP ze%W?K9`ysSn-Jy;p^;Y_LtLTwhytA|7b+u&5eomicn25Z1Ly%#03xQlaXzwheL{tCPV$Ph!1OQmSLaGbd1ZYW&7W){F2>oGv*oRizL0j z)rm=o|B|x@$+yf~H<2|fP;(7Vs#)bZRtIiJ#Sw@JNa&jIU=vRkO|bpBP_rVn8yum( zA^bZDY;z&K2|;P5+m4(fa_{Q0o|cE=qk#D*QN7lX;y8}A7Jd}A5FC~IAsFOl*>zFo z$*+N0%JXnAZp3(z@T*hJo{ZBq=oR_gUhfZ-oU&%rS%3V;%NBB;6|X_|Eo}QSq;Xtk z7OpMJdlMXw+!e#iJdQ^$upccmMg>SzrL(L@%dFZh>g_Q1KjtR>QKWXYBlJV@`pr3B za(xu_ z3B}LGd=S@2q!RMttRcs`;Bs{m_X`~pRITPkCdCYzIlg@*>O&&fjlTO21coBqu>l+~nPGLdg=gcZGckO@ zy+~&=c_SnU>lkSQvIujMg?6jw;MPO=WC&hpG^#E99u5-9^o(cKod~Jo04hWIGGo_a z670~%#E|5YERn3myrT{Pbk0EuCjmXlTaM{zG$mB%i@dQ3z&MbQp;P@%46~aAg%jlS z&8g2nAVz&X7+uMRQ*dp_5L-Bd8Q^YO3{ImtuHC@$&swE0249XU?S3DzhOTMED&@5($@Wqo|5%`kb+{^idoG$#yK{9{ zpyR*e_bHqKMKWV9W$POxGcI1w^yRhnWNomAy=iUZY#{HlB?E^-WB1cIYbedEe~kJB zf`W5b>PELAV>%j5-cS_*(m^cB^Ck%Uz2pK>BetotI5V?gUPRE$TJ*`ool^iFPDP)X z4yuMH3yl6Ii0YusOYPcqJkb@(v5`Ob@94uiumG_IYpIf~S2yGStGNuik%l}Jy}cB*)47X>4@R+HHRVvu z2hUN@orhI;%fmq&@!GUKA7$0`T;eNosSUJ3&O^RNM-XS%)^bLwcCn3Z`c%Lm7M!sr zvdr%Y4Yq67Gp-Y+_fo$V@H2VrdZc(m!m96|6JdJBI?DZ_JiB%qiLBe6m$h=|226pv zoQ=W>Sn6pnCBt-B=UZ@=ph3PYlQt)i9s?e0Sr#X{c7y%cX3}A)$9`;!JYa!uQ@aNN zV5S#er|QwGeb)vttfrGgo6BV~BPX2a9mk2Lwgt2oPd=Ks1rc1C`CXy0_}f2P?164w zgvD@Fy@}lia$pXmJse75mYgp2KZsSQeB2KUZ(z+DTwRe1J--D4Nbh9WxP;<&U?HfX zvy8(*@1Z{cC&7=X&uTGsU$OJ<3U*_oNs9Knf_GrZ+pB>Ezg1dR4(mD%Wa#u`UYT}V zCRSFm(6``keD#~}IRQsOAdqtq-aZJ{G{0wuI`^9nM7TGEJ_( zdTVkWZ35o9TVc2b!#D;{2hJMCN7IfA%t36}#w7N2`h4u>hUvcZysy1iKLeJT)x3*g zi+$%~IY=l60;U?aAAfPr*o=BA_gWz`4BaTF>gVvpXbE^1%C;A;2NF}pD#J3`i`VFv zyZI;1)LpVM9BKKHoa6;tMU8{6;};Xu9_DWtH}BdFn;>rA0-Grt0iFT9O-`xm^$A*C_zPLm3dN_l7a2YB0Kx7mRgZ{Y>PXvBKH zz%difif;81-eJvEsq6?$c^QhN;KK3tgBpPQ@HW*| z?5@4ia(TKW@0DvqXE(9^-MPK$^FkC1U_`I_Qu!RdC_(=zI5Y49+(g53*&5Ad!z& zGDE|9&(-v7w z>sFZZl86;7-VI9*Hm0=&a4zlms)?m@WVs+L}ezh&aM|K_AIa$?a zOMkmU*ecfWc)%WgZ{my%v4tb7g*h?*B=}B{Z4Sr4H#1va-f(K3^F=&g$Zx~ri-C|Y*WpXFuo#B z^Hf&5z$l$>30d;H$Jogc_ z!Knx$&;&#_I?<=C@56~vq`lB3ZG9i$tt?<*bKQ0!lwRbt)vE7i3mj|n1Btx0z6*2_ z)NuamVvJK+096?YA3g~VLA=Q1dWbq1WU`s+O>E}mu;3uK;;N?A)Q-GSCg$zUZS^Hb zdGxQ~MkMSquubB|CK%P>T4qKY#J?f`FTU=jQ@TUFh%IFMbr>5C!^0#{PGe^A5mf_1 zpsvNBmBVTQ4j!U!2xEgIwH@Gw3Kg*AI`J=TV=&bvXD)D|EK`5tG&`-YxCW(*KlcAS zPz%2_&XG9!2f`Q!i5q&aAgC9GFA*!mYods zDKrI|H)F-lsz%}(!paCvRfPhagoBJ`IIKp!1^;%dtTW#01?@V8tbv3ZujW-ELC5WG z3c657kEqMPK|~0KC-uQNz64$jXu$Pee8FXXJO7Z|;YsM~G zC0SV|y{5OZ_<6DQH5UIzxb}GjA0XcoFN}d=0R;osA5oxEu@JGpw&#AL)xe>H1XPUG z0P5J_2ahh^9CrcNl;Y<^=dEDui)@XqJ)wN4yLWw z@x3e2KxJYKMcS{nPejYA5VNbBWB`TFo}P&uH$coo2dNz5-W#>+br^Yy*Of$ySHo1b z0aq+}SAPYW5w#-AM)9hjen@hg8@dz4)k4ANW@}101^%_LwwI3rAIenGE@=J`9k3;3 z-&={CvP70U1fPVsgV+DssgC>v`^G@AVRWm{l7JM_Big(ikz$-elgYS5=cRC{%?(W$ia`~PC(u`%fZCFIZ!w=CM=YUafpFc?-In>JF$FOc$_(qddiyU4RB&PWYD?IJDMw*B9Vk z_`bk&1!TU-n=71DKINK^A~g^YAut!vutq_dyJlC+eHO~f_i{p{u>Zmt1TS4O_!KTq zVdDY!_KVP)UkVJA0$W&?`B6yfyaNwEKRbr1xCZ8!4ev*Hq59QsszzIYxQ0MBf>yK9 zkiVdGocD>pW3*Q3IBUuHxWt%D&W@b87yLdnc>KMvr;<8@eR)eoafhT0$^kQXhx+3a zT#xviR@dacn6uZqIYt1M zMK`ksYI$D`5Sn&+S0g49>!ZW99O;ES+&Ec^-*I};=RC59`pa9#|PG!-sT$lLYVu*lhCeYD!`QKh3n z_K4@B&9DH^xX%pX6#tHNdwK%$i+9(&Ubek`VIK$D|0CK*gRIc0JSdJoo3G)Z;A?|m zN7?C$Q{OS4ESj@rPfS#uPMyhW@ccwY?^R*e1Xj|%f4P!=gPbzf&dS+leIUj{)<>%v zi5(%mK43@W1Y{vX)t=D`P}Y$UCT~eX1iUpD6wZsua1#+mnac39O)~tPCLdIsT6vU2 z9;;PWG!Nn@QW76flfUd3Rop_|WrfVmg*|Xa85lXeNlrC$p$T8Qc z2t-!PD3<#1BG^JD7V+0SnTiBF(y)Q!GMnx2u4Anr{;6JMaB^&iVRX#Ot6;bSluvbOt1^HtQJ2$!3M7f z?9WXWPQWJDbt+c7MGR{Hc-iDEZjY9uBuUpa+DJUu(sX;2?m2#g5qwONo-K%;jid20 zUdru2X2&k{An+`PyQ79btp~abhfbNbDly+~Bo;N~h!nJ^kAox%Ewis$w3%zTJGlx?(ozOPRuWgv}GI2AnNBy(;;e37>DF* zEtow4GTI6-;d5}0OSi9EPF#`ikf?g**c?lqC| zs~nGf%CMt2Ec96PE`-w|R_+x8^ow9V=p4tkn+K*)6J9D#ol-b;Vx%|OL{0hM8~}5Z z^>aLMvCms4&SFi+n(PB(AuHlwX)#PU&sw#0xQrGT>`jA0QO{d5k%}*6E1}Qun!xUo}Nn)6B%g{5{Ef!xZTJ{T2t#(<}Ki}2YO0=%V^78V_=BG zEh@59aotpO-_i^8)K%|;X5~RmMyl1R_iu(sb)I1X0iX13dtm9VQ#)b0Pqk_tD2cRZ zs~4qhL&6VvYF>ow9pl1=mSqSjr4U0r!A_t~poX3v2%EYh49|K{_RCjDaZpQ zn(;v|;89tmYdV1&N7i9;e^z~QKlc)ZFlC~gIziHc5Wn9bX9V(1nxdR84$w=aZ1h>hVE zw&<`LgZKl>pI$nJSh-QYK}9`t+-*j&r0&C>2H?OW?qiu5>k%Pt=}Yfrn$fShUqc^bYZgno22)FQu z11CzuDB}p_8cOZ9Czcgj6U)RGimJ$4r~ZPqR0)Zyg*99{}P@YQC0ZP)(3VWe4ngz@jz}?&tVI9t((FE%MSm_B{6Es|vQzdU8>Ot!x8!klR$^kLMS90(BOE_c zv-y-``Dime2b2r`Mvb=Zmjkv1UCysy`%E^I5#yd675S2CtPf`M5_k)KZD2>HE%-#K zz5>l*j9dHSDSp1f<$l15jz@j`?DsN`x4;jvQC!0~up}DS+jldXLl@#Vns<`Tx{8KI ztwWJ;3yGP5V^`R6DVAo-8hBOyTY^q9-hQrz1;QmD^G9lNoL{|e#KR-{(qh@jofB?t`k$F(o8Z6@aEO*=CFdB;+OYi&rGf$I0u z477oeat4KGS=}=$)bHnknxu1U|4d-yyO)H36TX>gVz0(vD~n1}@{gzH`P3FXL|?Qe z#wp+&^>1NWfR3;eLpT2fJaaSb{tJO$s)4uULaKNJP@+L8xFa)kb}s8$cO3-o)h_Y*ow3Cbyq+@_eN*%@_!ot+%v|H1WGW~ zVYGTi0-pR`-qrU5P&Nsrmq5k{xSTW?^9krtu0%FS>{d7Yl`V3zL|WH`!^y-ABN`=o z4xL7B-$_*HSrJ0RY6pdr+SK&~F0>wrHWIh!!AHhF=Xm7W)J$al^LSimjOQvd9t~az zMA4dNv+}*syRZ&571PKkF!X@Sa{#*1CB?W8wMW+|17PNQwVxd&?d7D1cqk~qU`>w@ zCo6H6DIzcQ64D*W3cCyOzp4J%ph4a)GlxzPp&h#$A21aIV-)uw5NjOKPA_fz0d3qN z#+E{av!#Iep}7w3-QJL>=RQi|7~_^i?vAv9BIIP3dod{&jx z2M1IcUIqc#ml{_;*u>}lg-E0V5`F|b)Pov75s86tgzgfFdX^bKV^8$>(W2(l-RjE2 zw4T%PVs%$JA4A|t{+*gF<)*cUc9CvT-N6lpbI4~{fOTk!GA>LVW|5j40;O7)odO9{ zMN2lzi&ya?wUx_@zjgD4a4y+t)o0)01x_OAUk8wA6ioMY!@$a;-RR$nW};ae_JM<^ ztVTDUt(b%VMziqmm{#1@__E!|GBgc%qm!{Y*fD;S5bEen{N2QQkwx)>b!YPv37)__oQO>9!G7a!au2Nszb}P;Phj@ zm&Q~8oQc5apr*HO20z5uO8Ajf)Er_;3>SiUXJk=Gq5XI27Ld?c75*0M3Q2Xn(XFt# zu>u^Kc(NO1-!Uv^_54OCGV#`CKIA0lc-c@i0B09%s)x!LV z{7?I#taKWb z#Mtn1q|L@^T#D}^;{m#PI3))*-KFM9CpZ!yK@LabzhQ>K#ksg6XOD&wz5uLU1opr=p1Z z(HtsuspAMWvWmmzD-UpLrO3Q!!3%7TmWcBjeG%MWuyldG78N=owGOoN-)M)>X(5(- z4w{EOqDytoz?T^t#c9FZBBte4kY8lJzIc(?VGX;nhW~0nA4G#-eu=S~P`E%sKHaMv zUPWh#L1#jdC!?vy1{Xw2fUZD8=QGes^sbc1((22UXLl75={5)R|yAUS}nST>FgOk%WBaDKV^1EEDYaso_D}2FOFfSVM!r(#%UyG(s!^VSnK{x%p zv;nrVUG6mol;FPuVE?68P9oUQ<#;xLc;+s(u?c;_E#4B(?k(+Dl zGCbqp9(vKET`ICM9Lv%sJ#GHR7R8N3eSp|KdrFzs%R39LDP?Lu9Fle;zv?pfB9AnI z(>;;4jM(i-^*k#{eThLKr&5pe9o)YAt#$*`-mi@=?~VQvW@61$B9Cy_eulrBWY?CX zrmOH6e^DAKjb>MYLLFn0k-ij$*V*n=f;-EwdFek8|^Gt4Dlwj9@UbD8>V7xPFV%w4XNoovwJk! z%T(SjJ{0Lyu!S2mc)aFvyAsAx7?saAq7?VOjG+uxD1_rLvNPM+mcPH|Pa=Y>jp9~s zC?5RR5u6-p;j}n{6H*(f=Zda;8C-CTme$MRwr!?pS9KO-+GMlv{d3_Eq)oABLB%J) z_ADLLoyS!$*@FXyg>KW-4duG6szADleGdvp?$v~o=4%`qcC}CFV28&V-V4SI_5MvPsvs;#knu=-2wq8Id*gp4(6l>Fc<^Ss~sFHJq(^4x?uoz zG3g9R&Ecl^AgOunSs;YR)1ydDLAIHKfT zk((+jN>0Gtmh3~teu9w2ee>AJ-E1T$Ufds3B9gH!=2x5c(84my{Y)VLK+RtwEwZeF zSJ`5Y6{*AUl}3Q8eTZf>xQIq9UGSNJx3-HzPs2anj0B0HPv=cj(S~t!NW7%fH|_r* z-M)d3jK-c?7Kq*9w5FC>ovu=k)ifP1t)@!;TUd6y6w7K5@^<*GM)S(Fc0br1Z7NoD z6pDK5;p8f}^&22c(VlaNZl1FF0hd z8p0}%skf2WE_`#HwF6vEzG$mmuWKJ7Xt1F#Zj5Z}TUTFlNhR{2C5zYhu(SN)E#B2P zqAO!R3SEW(t_@-aGk6K00sW{esgb{@4MDbh8nrml2)fbMv5|$IGNWit6|IwzW@^hm z3`I+NybGSw0{zBc5EzG0h`=~&+4vso71a^l_VGdx*?GxkQXX)scV93LhuVA_j>{SX z^42c`KTRR^iexkCQM-4V^Vp9pC^M8d5Jx#@Zv1Cxgli{wsU0h0ak%C|SFEWEy2NLp z%Fxg3#8SJ7Q<0*pm=r6*P6gwn5Lm(16oDZ?MZJV*RRs0~!s7;nZqgeLmkShCbkgSd zfiX$wW|}6U<#w?@P+mdO0;??3s`SWt;&kQEZMKvb@-<_r1#sF?r?bl#(}yg_6iL62 z2wPnoB5&8za={f$Rw6}d0N|*)mDr%8O3N`7z|lO@9SPsOJ`3GxK=ICzK#6RCE^~CL zM&0RiDi-@z@N$HyX9XlY&G^{U`ZqlB+-?%Zl?N; zx4@GSA>YcJJ-QEFjtB2_8Exoev%MPp>UWfzvg{U)KfD5_%JXb7HgAV<%1|>bvk#UE z52->SN3cM*EDXyQw^q+M{38RNh~nzVMA2!Q%P~MzefnDh2zEvWXr}L>C%Lofy}a0L zTB6E|>E9IkssxDDjtITvX0E|zqc{F5dtg-S0Ab=9p_MDO8Q4TAaQVXb_tKfoc+t#U zJ-N7V;o`_)-#{(H6dFF!tMOaVxaP?A!&!C{WuU~l8a~{`#DXe^MHVCD>~SQV6;q9* z1@lGTP8~w*R=0kDG9vSc+wvaG+r@Z1Gi5xUY|t+U5@oQt74!*;zDCZ<`7@P5E*0~_D~WeuedFXS$#aU8uYdjQXQz5d zPd-0!U;3nvVGE)q83Oz}vY2SiHC~F;_eOdX@zTC^g0)8u8h2VUZ^{LYyvNvboEoy8 z&pd#vWqX{9)3beS0)~FNeD*71LkFUWdae+aK(2)5cdwq`aMd22PEk&mnW@sId`|Lhj|@b)_Xz@@z_kOlGI z?0&Hsop5BGO73rI0QL?Qch0w?ds1BFaAB0GeTvbz`0aAMquYyg$u2zLA!|%*v)*Ej1a)^^7%+~mW=Rx zoZTYhDxFUFY>hbNce)$FFZHP4t$TyMfrXQV>LP7<*1}ORpl#iaIgm~wk5u-DsP$FvNBWE`T&UQz2XG`Vy#ldx z98MzRiVy8#&E zK*U%E3o6I$h_sa>UtUhe0PkxsmPGx3MQC+VmiomHPjPx&ZAHVJ7E*Ue=ix`4e+%7f z3);qff_y&7bw(&=@2V)#tdnRXsQ_xCf#h2m&uZpX!?* znS$hvS-!fM}<9A@>kmh)Qe*xYjF{j_%MI5EsB z$+K=BrAf(Zx(}pJg2Iti!3YP5HUb_Johe^#-9A0iw$y57VLQryAxh_RmJVanpzAGf zAtzP7H*2H;SACJKzM;e!X+3-VS>9EQwuenEIU>3Vi4fb}!$w_w_0@5PxZ6<~q~B*n z;nYkb19ji>s)JyvvliqkykO+cO?PvD@wG>H;|1!#q7q-rx{Z8c$5_#x{uDWHBfLDx z;JtQ+%0wkA3R813=5|H8&tGA+p<7)z_OKJ7q98uR;;;!&tRvX3&3(gFh#|Cfr7T!P z*_gjPIY#qr{Q;aimeV&eI9BA2bf34PKL_*U2OdNWkAP=4>R|->=F4yI>X{e>y1t@q zLV?o}2P=WtDq}A6B}Z3%&K;~w(+jRQh#0OvGx&r^Ngt%014yr+FxR^ow;?qEM`w8?7| z>o#VF`n~Onp!164B2RKrX4Q9u#4-RD`EXn}Il8=R0E)!vE~+}0h5J;EeW-Wu9$Zt9 zf*ojfTkQ!~TR%)Tsia_OR`6`NA5JcC!rY=J{@{D0Zc9korMVQ`Sf(w2H5GvOQGOI& zn-PZeJVUO&}!?Br8RavO%aQ(jlwY?~?y@;8TnBdV>UUd<`gewR6_%WxX zrqs&SFhyFi#Qix=2lneedVP3bE4{nDRQOhP>$j2CLG!KB(ec@EP^6e)J(|)S+xBPK zw@$L6U3`NmY(H=2wqghIv!1s;VC8U2P+OxIpzL~)M=Sez>$W^Vkl7A)LBNV_eH8!L zve&ggz7Fe#|8bdJwgB(nI)z_$(e$?H=cokEf0%#ppVe{-PgWH70%B*t@c^?kbo4y! zHBX7YNhxK^W~8%|UI#cL(t;y+ogHJN`3-J#9vYVXwF7^X|IUu(EJ4$k*1^cDjZj?e3Gciq4^KI*RQr53P}!_~8dRRV;}f!T5M#EGp9BZI|Fty~(!^&!vlrurhx~p!FwTx~V6!Tu0*=~ zAfrh&KunRjBR+iue(Eu{e1s-3(&wyx$gdK|VbC7L$QPW#K!#3-RpGW=aX1ix8+k9N z=T3*Hky76w$Dz5I@gMNB5I~!wznRZ~PkHaa8WUuPTe$R`X*#kBaShYdSyZi#fCZ3)qN>%NBA;(e`AuU&$mvZ2&+9rl~g!3k7)Ohq~EMHnGuz`dE_ zBj3)qigLoskuT7fT#1(ie-P+O@JOitY(TUs7 zbWL5OJ}?aC&%fe?p@E{%4bma~Vwbd{Yvcj$g|&D{{F^OQuBW$pXI{WnG+qI~->>PsV=fj~TY8@@KO(^w#h zyN90SMRWt&7jUEdSLwxu{+vCkRPp%PGU6`3yJ=LA}x&ykJW_PLa$~Yq& zr;yC?q6^_TeH1mZarJ@K4VbEX5I^Ia@8x8Z2&9$j5;Qr}ZJ6h2t^EM4#mBL8*;J51 zG3OCBWJovq@jXO5_ZzLr{|X^`>95=PRdflnWJ=3n-HYsTTBYUHfmDZ9=_rkyb{Q_I zJ8>Cs>Jq%DjW>Rmtd=jSH}k=Tl6n?2CCf8XeAc|H1%92U`8|Q{Ytp7DPkyUpy44kF zU8?S0bSn7mT+KdR@!KDQOKe3)y}ov9PNSVn+StiefrgjvYmDT3X z0QJb?$BzlPfu$ivE;xVXlpF_yV}7ZhG7K6>dl@`z(8|+lmSEXj+HY4MW2xXVo{-z8Ac1$-wZ*ncnD^B;@RH3tv_SZ`2R7 zz0p7L{UVpl#yL&G=sY9k*9G#cce`;4Ms~CGyhk%A@2mgtzWSl_<8OY>x6WfYqk;|) zJ1#H=`P|5Vtr!8*j49rNKJ8`>W?(Z1gUe+zD2DM(GIV*Qg)ft#i((NJ4ENs?g1cOr z$Io`*b9jImk4^27yTMspD z#H$9^_*uaVarNKK(B#B`@s+`x@v}okiQxyMtPuYrMtbn)@<{pTU`!r&;PH?Y*#Ecv z?;iT>)5C}MzpxDXZob8b|2ZLcw?m!A9wg=dFD9W+TZq{GuZT%VQEI(DS7A;BHh`h+NV_dfdF}7Rt zzLw0wOP$}sl;wx=PRy}Y1nKD=qR?De0Shvbre69%8bV=eI|g!p@mg z)Dn!fN8dEbHrST5MVwB zBFyx^4z3dq%m8?eTE66lX@nMR_Rd|^0WfHh&73={3sXqfSVjt8@Z?^b=vSc8_*?LL zK<#k7#{d-0IHsbJ1fseqIEl!qCsgyfhJoP|6~XNAiRr=N;S-ePB{!H!$Xx zi@DdL8C$y?{S!{IPmSp0D`)YE%WPJA&N7Ho0%)NAj!KL=ago%o`TwgcDG zSVlHdqt2Fa&Twspck9lLFkN1Y?{MfDn09o#`eR|tw<>bB{}7<5NdOBHr@t4a4Z;9# z8pEk08O>jLZ_c0Jjz0t2gINWF1WH`!hWl~H@tx@By}v_n`janond!;u)Ey)^<3&a^ z@sTIRUqsOn`f)8Dd!vpxbM6vpYLGX&7+(R*+BT?=M>7vKIzU3Sw$FbE{>phh+%d}c z2jZU|ej#+$GOoBoSP1caHVu9#Ur*+mT`)%ZbO*aW)3#B}m%=(53SE)IKjINv zuDjrM-q)HaqIuuyKz79aY6eE=eM^)5en?%#_}yCwFP>$@-F^^vM_&UPDS_k} zU3pMdwW6m7tzN>sQE{UUFE}F7vQf}nHv~-On@;_@Ju2OU(BhY27)AqYB3TqP5j)=1 zci?sWPqQgmiZQVE+!R)*<$p~KBygE-=v;%Bv`OqEyfzEqVbASWvy^?CFE!Kb(aX5H zf;c124k5zAa;=W+`YzeO10j=`W`k2fJNKLPa$_aJYAU^YS|xrk+*DfDhz;i#hX%#m ze(!5_zNZvy&jZbmdi+T3J_IB!LKxbSMwsp5JhL&RbSkVp>;`}3jfA2d!8nEck6@qb zVb@ri?fk3-7uhapS>%@4GaOi5bVtDfYR}KXKN?X38|8tWf{C@QW8P&-QLT zvPsQgbdzK)J8{cJ3PZh{46(_8ZgLfx{HEiZeehA^ycBnRmB9utVS|R#^yX@?^OtxM zqg5W|BAL7We-oC<`FVaP<|#Ev;ae^UorRrC->9K6mReBnAl2JHF{RCXsnMdh4xq)D zHXHfrq0AKFJkFoext2G$$sC{HBVVrOrzt(A*gN@C@Dgjm5=g#205o;VF2Yh2SqeTa zq3w1N>G2IxAy?a&R-|K=;cEj&^-Rb!f?2B(@)0caX=WP$_h4h~QLan2Vb21AiG@1;Pj3SdeVnegFISxJv-PxGd<3+CA5I7WtOI$#OGg4`ZAkiE4KYh-g2`Z(R za5=?-dQ>VXE%UDWj6Y?}#-coNloi_|!;ywA7hOMXI<-3h*TheZv52w)_k!> z{s0}sZ#zXF#mW}`c7>^txB-QC)yfJ4c|?hiKDHFbMXLE7THQcAYvVS2iL?l{h3-Kh z3@R0fE>b%^)<`n9V=RJLGLB6X2GpJ-_(6TYQ~pw*m^O48Y<@58)!BMeR=>lyV|Jnk zQA#68>pw0Tsx82_M;$##|5~~r;JO6dM|hJ~rr^rL@A%W0AzK~`qEaQsS$%ks9c6LL z{gmCra`2Sm-v)?3OV1G=M`EzD>NW0$#d-+KsHJJA=y}&&b@P zc2+Y^-YI{lLyQ+nMzX|!G`@GR#>37lpVm09}i03B^wvcuNK4YEL z(@d(}yc<0RuY=IE5Ho0t-f9LFfoR zm?j-ayhDG3=5#e}cM(Fdv({ADTE5Vn>a{sTE7a4F*XGVkn|t4#M1T*nOAU}rfh_Hb)2wM+7;_OC>!l^zn(d$C$*BD@=r;^lAr50^H-LM#gNTf&P%axU3nFN)Ei+D1h3U7*W03)xRgo^ z1k_IT*a#+#7Y)qngi+pzx$2%4qKFk6e16?R-M)HZs-d0nfjBv@H-@y`Om7isvqZa0 zG3PhEt)w@Hc0n<}^5RONT1ac~%%?2#%q-;2`)d;!x||p1ghKvt-sy7cdz%YEX3BT$FNTHmT=q;R1AzP&2}vBqaMBl zul3%hjWX~5h`R(SOx1t~>N$T-8#bKU$|7F}i{uG5@=WQeBvd`AZ3%@)2Lo(}Q-+-I zLc&FJynsnwq>MdA#w5$~K0X#p&=%vP)%BbzLYp`WE9*Jt?u+i%5uj0cjRYI(C=$Bl zmHvRD2!iB32ti&8#^;C$^SLW_o%gYJQ)@xmYTkfS*iN6z|JeKF)QMs#-{oCZiYHC2 z)&UwZ#=M)_5k)q-VYs%APi8Ugxzp>YC@XSug{GDz{p)?2U1ciQ1mRDX@Dy9-!+Fpb5dKXx{p?6Pl zS}?WE2a!%3wB8t7y0II>y398+?=F$fa9kK~a2;(+CjP2-?#Be|Kn{&aci$y5A}9J` zO9oXIcR&n8B6X-;eM!c}9Y}VJEo~Y{)6AOIE|}?e;6z+;M|}w*0zbMPPu@)(nLEB< zbriofasp>76BEaL5;-w&agjYYy8>@ir zz~DCGn+OOQ@&RYSS+1>cm@|IXr)*9{AI)NBj)f>`yC1VhM~_=#J@?k}qIodx@0Rd5 zg9nYV+4iW8E$jx9etZ!t42n1ADmBZ@oX?(l6M&ckAjBeq@9BJ3@nT zr$8T9kw4O!sXQRc#AV*CxEi#`@7+4*?3ia_%mZ~2g>H53_)}*8_lE!8*{P0z)IgEA zGiq_l$`cWjA;7s2^OG273!JvVsfl0nrNl*PDK@R^rX@v9-A26?{7NK6e0B+!)luME zM073zT!CQpaJ_K6(LETIj&zBpJhn!ptjN+N873n%&ikiC#BhB zcn^N+hzetxeQGx+pT=FbXFt`+pDX#&Uipy}=6l2rSW`3Otp`a>^%!h=bFd$0;Y9zW z?C1#oF}4HYaiGcz49*+T>ma$soQ0kL0X z@yOePzZFBY#EeYRq1z&FuSN;y3SYvn@t(2mL9~VIjDz@-GAq}f-uz8H&G$iNcqHQM zCg3kpUm%)RkQLrW+&O}Ck*8V`)Px{;b0w*lP!~eRE^qWz)X_Y;4eF}-T$6-+z(|lM zZ%rY)ZKbqjREIg0Rucy%j-4^bQ?Wgqn~{RW^o9%Fi3|_{(lY!Ve@3i?a73*zl;S=+ zms|Z7rh~N9^Adnc3RBPnLA)-SD5!MTY&ZA`U3T2>@db13a6NI`ug!lCZkmA6HuS%` z3iifx_8`r%;2%XCiEAvalSniUXIW?@*-XAPRm~d9ErEoQv^fkMeHVD`RV0oAJ>@OB zcW3BI)|W5ZXE#d?Mg8b;p7ict1mK@!8}aW0Kp(=nO_y%V5GTnp{uw`>x$ZJgUw3uW zicv^NDvTuU-e>^7aW#i5Av6M}@GzFI4zhMGA5-<;pb<04LW9|rDHAa>u?(Gwn>1x>|2O*oJCZc*O z=0alQzB4p5zm!FYSyja|2&oup@>hI{pNoH@`?g(#lrKmFru*J@JAQ%uAHg3({(51> z`;F|unxKVy!OTn@Esp>!%@85jcVZqZGS$R)1PY^N)w$RgA_i^+*g9#?t1M_@v+oB; zFXA^*jf1cfx$g8nv6@9>P?2rqgAPPWH*!42Oz_xV%!J>PKd#3(@zzS=ml8r{zoDPW zSFxu)>{ffHAP3f?nHiy>;pINw9n=>|1dbwRT0_YcNeZoJpeKlqndRKwr8^z=@whOx zp9-5>)yhK8&{7?L$`8zlkuD~lJW~lb8;f*^!==EI@wLyzs>^n(+h(I}J$ot38N<5% zC~O}Ba^n%co2y&!iF40on4 z84WnL%gTsM@%R$w(5#2-Z?gCBeLWI?iv2vY)C~jEYqxM{QtPpQUhhIsZH4zZ;!m)g zUQ+*>I4G|L&(`?Sq+C{seHj>M*T7=Rk0QU3n#WuB1dp=G>?arAY2v}I98J6tp6&k! z6sm4Ng5QlKd(A?a)+ul&=+D{%#Lb;2S9XGlu#;ea>pe{C;$1z{`uIN$NfW?e&g!0< z2@{(RufRzRSbG$n-Td?lKgopm0$*57diyun2tcRdu8ZJsio4tpk$2fO6^HK0S#1&t z`Cz!<@=&f;rN~`ST#H@}{<0fO?tR!>Uve*zMSTFD4YI;3T#n!+)nXD)yW#%#zd;rd zl-X^W_lZz;3fP8#bNoqgP^2@G1)`-F-UDL-Z|iaUm5?l>$^D5zdopEP;YQ=F%L1a>{8>))huf-!}8WWaFYR5evjEFhYBLCxnP1Mx2lUU^Hn_Iq@s{@At|LdO#-5q zkWe;qd#XuLPtyf{fdY|7eUP4n4j0*lxw!9H@|vj1FViJMlXMAO9f%^yF#<#KVV^3k zAkC5%Q|OTeTS3&M7H=MOlU@^vYlLMaZT=w+a91Eii6sj#Km0}~Zs1dhRGPd0vqAQgLG z>!&$yTObP)!*w7ds(T01$M~sU5m%r77g#0ksC$VVb2Ccn^4cQN<{wOrf?-rqoDXx* z!}uqzeQmvMWck=iOl}ySfarhY;ZRZL{yrOc{E3d&C4(7Wqa6m1KZ(zYj6=w|LR6qN zDXiTIi!ajK@2KUIb^kFfqdC;O)i|}9W4^Aq=8UiR;cJ@AzPu4+rkxHUZ~WVQDq`eW z=qj}i(mtw#_^cOuq*(D_rRnaG-=OaXfF)sdaf$cMOgrPmiTpv7lLb|xbq zLZ>Dcv^_f}LmRUXYlcYYN#ZT|n`{=uI@AyG7vgdn;(|29`Z$rU2)u)0q>{D_#n_yM znA)kHxXsb%J#s2Mk(=@|H< z)nMd}62N=FX0R`^6N;%vZ9<^RX+S?Nm?K1_j}*k`nx}R@L}=oB4FQvOBPT~KA06p- z)btDC{+g@dFckFk%<)@5QsV0LRuW(P0qrBWJ|%Q*}=EjW{9;4&nbrV_|95i#{?A z3r_uxc)&Un&r;g0r!M#ECn?ke-2Z@D2?}p z5v64A5Z`d-Ls+BXHYtko!(T^4%j%S;6fv3CpfTAvVMZTdFG;ZiUCAo<$6vp$XH2s) z+xe%>psV2Nc zkd-1EZdF7LsV(hVpjI~DBmYA>;eGQRo zgLYsXj4fYk0xt1sx*)5aIva^hQwF#hC@MAEPtKJF~}$<6oZ*YZlfZJHbkrp4r!!)-n4c z-zI|t5bb!(pg^K8h!`NT|E)k`8jQNHi3Y9w7LB$m#-?YuH|8QOq6vk@=+%H!2jW(- z_FRfy9r*`B+4%_j{%4FQt}UnYHnABAKzeyCm zaW1P32bE{KE!T%G?nN*%X>xi@Bp%J!6N9Z? zJH8#Je^^ZfU6bqa5|p5Xfy)E;}OtN99-spc^%}J<7 zzmd1M5h`!p2k+nqgcNVxJ9sjKngvapCLP=3L)r&4gwz*WhGl4ZZ&)ISaZDP{!)cMj z-%gFR4lUQ}NpkBJw4Qv1ogiCI`~hh@J^N{fsuxk3mU%u9{FK`fmtN!zfirlKMi(Is zp3RG_{4h!yymwaeka@uG;smaC09;lb8%E|%a1lNEQ zXK<~OJKF=9oajUutO_vxlv!Gx#~4PP2N@vW}Jdm|21-t^o@{ zCLx$wCXsE1V;pSgXXc#r!jpc4X6g|^VgR60p@B-NVtV69$%Uniy?Nl4|rEI ze!!9RH8@-Rzwm4fvf)jfFfoCqLiXGc`2GdV!D0hl5}q&9Y>K-Q7TB52PC=D|F9lBz zunC;t`sab0$&gYQWe?0w!YNydomPI1=HaDg20bU?&-vGLm$iloF$B1}{;imsjMM~p z>+*!paJu!d(r|?f0-=8D7_ za7~>9Bc*=V{k|oI6Xk;{n(7>PBoM_?KfILe@g)`%c{w(t1DB!#M@Ve-5&vL%&byi0 zD%W|ek=b)kS$~v}UPS9o?yx!$&4?5D2S94tQo(}YxP)6S-;sb!1UlfVgu{seu^ETK z3-7%cO%@-9+h_6g0=b23#Uz(pMS%2)4gMq|5p|6&*62cwF{}~lij}}5mAPbC|Z$BDEi zBm0twSzOZZCTJ!r7K4>?8i{GWClS!Z)L3&ChJ-j9LA3RapnA+c-0*F?)K8#J&6$^) z&5*gRCT8~1QK+bf0}@Rjz|jC~ta_bx(}=KV<8bvpF>OQ-a?<%YZsN-` zT}mtK3FFl!gIFjhyzD;b5_mh<+{$Is@i83f09^`wYIy+CoPLmXibUi)bs!g$h&aLK zS=6~4f&CPn+DgV{Xk_$7Tk*C_0E5viDB4QC0NI+Sir;r06Q#j_m4!Cc!fS!*7Cxr( zvkBq$r9!^MjXWEm_CX+n819xkfFw3u>iTK$z@(6g{B<~Fd?|0~MauqeRi9nlteVq4~hL@iWIvUL$1*VwE3aAcYmqjZDcO4F02BKC^ z({YMc$FkKKUF7z9?K}to-ie+{hw6~xz(!hz6hSr)2cva?g zVET)@>|&+tTOT6r9QaW#&JWg%4A+^aq{K#~J@28y0S@eavavFlyOy5Awfdf{F9a zuHif27^fOWU;H7AI+vGv=Lvb_n2+e>UhrS9yoaV zKzDo%Ye?r~-aWHpW92UqM}DbUjp3Vrh!g~|Nw;R0JO+NZn(`qgT%_yXyOGW&mSIhF z$FF2BTCCxT4!!wsU8<+9K_(kqyn?F{jrt%TQ_&fo0qNavi@ox4-rvVm|t8 z--tg(C=yx1Xnta-K;xE<&mpZ2}BfZi`vg4!G)mBpD zz`;8VT@=iI3<2sp3=8-L{A2i*_-KME+yA)wRg8z=0HaY9B6iRvTBNW8ue5De)5LSUaE!53&n$^E*QSumibP zVJ?n9J%KY5+W#CW^Z4R5?6gsfPy#vp^>_Fn>5-ImrxSZR9U+~bi%#j~#!Z_yv$j90 zpeQ?ZKENwL2uiHnpK!&>bM1`$&d@h@Q7(f71-l2-^rz6bD6^5<(6=K!V2#w7uoIA& zVp)yCOq5r`4rTN4)}0R|_ui0ct*OQ#Ty2@sQnLg9A^9r4Brbt;>XOG;P9xvDWUo{o zqX)~C?6rjzNT)R)=v~ijk=j9QES(xbLg+S3Qftt@)soA9qa*OI_qBk_pbWd0y%1EM z$B)g~_*ebcNQ`<2j>t1|_ObPZun|dDfjAgIb65^n;b5z?n%=})9G%C%gcmvXdY-sN z@*Nif5=`}&^N?pA_ZVnXH#RH~B!N(C(fyd#_)Rcv^NJ0tt=&C@ zP1#Lss4%kAoxgu^0-4NF*t>N~mfi!bZf08bJM%l2;JnAMz-+l2w1lI<|JjN=K-V@e|two8tA2UFyfTb8&kT zx7*FcqMh{u+y;IPNqEKCj^G7|bzDAVfkXDgSd<9FhWH!oqYOo0o!66S-bOA)`KVr* z@?8??962-I7`1~)3vucQHR)R}qr_2cY!kjXBI8Fpc)2(shfcA06t^?*iAKH%FFV^2 znpIJi73~AfL$_Y8GBd$Xr41MbSU)(nr~dW2{v{d};YR@e(2A-nPpiMDpC}GRi9V7= zvp{BG35>P^q&Ipem=;n#qkp(y!s`JfXe3`~BzPe%AR)16SgIyT!{sU@O+p8hx!!mM zm`^hYsqg?UCKOZ|ywJ?myg^+2Brw00fa8B+XYz)m^(=mc2AaaxqOf_q=T){#ve!XV znv1Ky4`6ewWQ)cAxhtIK!D1tePL*R78gul#O62hu&m9i))J;2|w8=G!ykAwE3aA_% zM;QCjljVzF)wL0vNBLwkT9=J5eeB*|oax+kyeKC(G#FfGMwln-b8@|P-RFTrw3#F~ zcGhTn(r6^9Q3IiF#Ght6XDI9Q35j0Y&2$0Fq4>7rB{{jlIrc?p`W58QvWuYg25-~3 z(8PpeHcEuhF-X-aLY_vHoim*4Ksc%J6Z%oK!%#CQl>nS^55NHFUsnxEI@6xe^(sMR z3+XgV;zq3^hLLK_Y|#7(%Xe<*Ts3Lta+k}g zys&gZqZefd^s%D~UMQBy5lPEjncZSf_y&fcEzl4srdHaUimyIf0m(PcvAb#2!FGzi_2QHW5X7@U_ZI>qqXdz>xX7Fm%o;ZzUMF@3$zd6kKn zs-ot4V+jjho{dVcS%amge$Ezgqy3yS&#d9@T=_81K#y7jxzf2{o*9XL=0V_YifmD* zqG$55M1z~Z@DPGVb>Dq=)WLh1oSHX%;7!S~zoOc4Z2@lz&4 z4LqTyL^o*uSZ39zoMfUdRD=zsp)vVlW7-6>h6&TXn`jIEZD10??x#}B+@e00O%=nE z>0`MF!dQB}u|>#BWJ(4`MKzZhWq?MFl@P92@%9MFIck;RfiK{ff3d$kLpNXf#UoR*2pd$u{l>q^D4MTv_fV1YOWdi&7fG0;5rxKyJsJG6{=!WhAZ&xT5B06gYg zE*g_zKYoS3u{%|Z(pKnRmxJ4CG~=&Kln380Cdyo!DtYcr$`oT)$*Ynmn)gXfgYT1? zh>t4inikH?yv|soWWB>AQDfQtG8U-nxwc?IkyRFv(n9xBK(x>ZEEPc{T*)aKNJR>* z`W6sdwKIPvDoSn9+-a4mWcWPH#@PT0rnx*ndieK5Ldq;~dO`+I+FNEBPc{|S^dG1H zP~!xb!}H*+d|H+zd%WlVI?1M~L%$(YsU+&XL&cVry(83^Nm*m8e45oa?ve7UcCh(3 z5Sp#bovI2vmg*cn%|%Cu1V)%HPx!Onk*}=JQtCr_wHuI=qcE9z2bkX%x4{-+P9D=Q zc`}rDvIL4!`||2epr8Up$*Xl8hjv?5WUmlq(o(39SVWX-li5l9gq>(@o?Isj*+_6ZlRO7?|q(xt4;x3Nmj z#XS2zAlh`V^`j>=T@{`x!2LynSc<>;4~;FLF`DUPW>o&$5MS!8*jj%PTTTJOLETsT zMAU{eTP_|1{`Kq#Rh8C7)Drt2*%I`0=p&LoUTQu@_P%0sS&^}E3O(Y=G5OomylX5L z3$Nms=VpU$?UemxOEI5>)`X|(2h*{#ZiwDPtlLJ4zn(3s2!97_SGz?mV8Gnp@|sI1 zJ4x#AHMVdjPgrlfE#r~utd3Ez1FKcdB`(iPQ?s%4K7HIaEI%R><@;%DvF1kgT_q56 z*7H&&q9vI5=DXGD#S?z^G>4<*0NxmSY&v6Dnlfw0kg=AG2+KU-5E*sP_3ac3d2j7u zl-A=p0|#=O zJy*UiJ>_dcFh`gDy?nj-l&>H3e?9F1zLuQwbw~f#74mh=DPMox|Fw7pU(-+d`au8J zKgn0?jDchSul}#s8+^U*l&{zEHUFsR#V3AFm=+|OdKx(cWnL(*u@C)%WbQ3iz)7t* zY&BI4)He*FH1~OiPG$yQ(Iq2mx;Rl7?^~~m(p1BAgL;%zvf0fVR~Jrlucy*8nyb~c zMifS*_*v}Bs*KfgpA$k&`5W%#uUcU`7TW;RcnQO&$`M^(naZjeTu*DT;J@o{|6)i< zKT^+RSB#%!cP*rHDKuEZV~pSdOrfeLZHz_>_3_u|3EJwe3Le{NtH&&HiV5+jS4~~4 z*Fzl|bHlP2xy)1kMr28f%auV~+}a}J#$t^tIJA`@3yJ+6*qlmplMYY;q~MCsNFdD~ z>$bDR%}8X?@6r-Oz4>f4;wp|doawj8`Quel6A0AE|4Z^~8P;u{@Dyp~>-$&eDe0x! z?eB3pR#prZG-`^C-bp2yo=^p_ zTTzl3^Jy5~LyOHy(3j3-;zE!0cB^)f#9dx^a=(i>|N6{ZX+4?;MZP)8@HK0r>GDjh zgoVPJTg9F~oLD+Mv=u!_QU@ezk3eq(uV(r_Z5+QxH+>CzU^5sQo6}yr_r3)z+t%(|*(}E;4hNwM$MO zm!ln*dqkvLw`2 ztm+?RR?KI#?A8<;e>KVz@LP*Ji6LLhX-JA&gBT^ij|NIYOC~x3MY36_59Qb;;W}ST zWc0+s%tU2&{~VoTUj$@ywwFzmiLk6G+9A!NN=ZmAqgx%ZKXU%nTw%X>zn_c4_8ebR zZLMOv`DIm3*O6}%({gN6xy7g2tlaz+^Q@F|BA(JFQZms%Tbr(U!gA`?=RR!Pv@jzD z1%_2?^OQ;k^Z+>xjiWXo%#Ofy?Ddny0h{L6y06v8#RwRP~}!u$_M``clQ+ zMkbH7GEXl@$~Y29=v&s80(Th(W`5rUcX2d(M9M4wt0i~oNF&YniWR_}Le5GjZHCf0PDE6@ z0%IAP{I23xt5A@Zt6Jr+1nm;x)a}CBy&_qZ1(XiGCPwy>X2WVhrj~O{Ltg{pGzFR28n3tt5k(4HvmH5KS=_;{cl7@+zVd*(DEI+i|hC;&@WA>Tk#Ga8vJ@tA= zDUnsLbs!w@`%b(vTV@t!bkh^luGciAuY0=3)~)~B4{c?y*4Mk3ufJ)iifHc@7TCs! z5{yIvHgwNKHsjlWK~tLeOE_Xd>VBO|zZtz2f5mYllI3iDF^0Wc8=q?XL{-pmuL`N} zV-xmaRDe;Say0(A?`$Wd)26l4_1P*>IZ=;FpO5-ob(ek7KS)e91>*+HN8f&i6@^+b zN{nG2No^^O+OoNS%|JS(Mv1v`Y>XUv>}e2Er#xsCjP$;MPDk7BDXOobWlcbBm_%Mr z_!G1%w)#i~wNWADbs)?$e=ZPJ>$_G3vno_#KDCxtt!H`mTZVo57+JMOaPuQV`8+KL zB}t*S@%BL7i*G}_uSc?&XC)R+<=SVNhIJspT%&$Ndw2$~vbn~F(lO)n{Dhe5bXuiT zP9&B$9S-xw2v?FPcxJ@60o#Ei*1n$!$0%tIF2g=d;nX$qma5X4#hm6$Iv#(~dD7T; zGas6-x;l7{F5z4{#OOiWUu?NxHR9)+8>M}N8|u&GW=S5+)lx!Fr}gaf?4VdCH1+6& z`R|NPtt>LO+(eehtWM<}>BOuBB9L}-$+bcnl=h9vGfn7FG`UB47R&4`9R z&J5%x7P{Gr{r`jJnL?G;XKtltQTIDNouZ=#nyUpuEL+6I+y}HG`~VYuvLkRyq~bwh z^+fzK?_1=rveMza!tKqT7gaX%x*W4A8(nk6_n>v*u7Byf9OPvcf>oO2p6Enyo&Owo z#Y$@-t;@HYtECq?@kLy9lvtP(sotP6Opo0Jx*y$H95|hUL@GA;$5L#XRirxYj+ZMR z-qy=Wq~`piR^dXBJr||=&A#1&#QzV6~Op2Ic zfv2gaDs`hwLb0LHqWLPwQA}V>PL5qnjv##{w`M&rDzn5-1ogPcQc^AVXU7?ZH#XyE zeQV9rQqGIH#^SqPgvQJ|th$C1_Hz00EDjs!pjBzP|Ezh--^mB|91}96SP4!)Q(EB3 zER~{GF_%un(IbYA-|A_3lc|n*_@mLo{}1L>_XdW%(mHKK(hiJ+xg$QozJ5uczM|#A zrAU?jkKjCORf)sd$r2fq5PtJxR)yw3v!xC@NCUi%-9sHxT<4H7aqn_P_hoRNmatmv zGJNZ|*K#|a-QYWmPw8g^t;S1}y;Cf?zF4nBU#xfge=d4yUx#6O>999;xiqORbqsBO zoHTmzTmClR-N3B=M5;AhCX}{9PqorTgY;`DEkDtZclgrqx-KR9u>j;1J#Q_Od#Gw63*z*$?oR z0viIuLdS0lxJ_{*mpY6(^e^h6^SqLr*yT{}{w+Utyp>k8?bs7;*^%~9MBfLcMQ_^w z#A(cQ#YDAbv-G0qj4gbm@BLhPf0pm|0jr-a_ZXW$LN;Gc-hSjr%IAuu#x45vU&M2i z8+6Qw5}K728B66HiUEwZ|9V)NHIm$SeJEH3%75@F4!NfOtNwsPNiropH zN2vGMeWYmiAhr+3t3JpHUQ+bOavRNZ#;iLh$fIpNHB`Ax3NyIdB@YzykEIp+a6__onJu=I%cZ*?at#pVL~SId2sYM|pgRE{>WKZ7 z*MHLoI3Jb~sEu(c0i7SABhtQYuN?dECwv}Y2^)Kh1l;ePu?`-_?KO_1u2}-YMIuG~ zr6)fP3)Pbsq%V@Bs?^q_nh7LYOOlP$w*4AIlrli0N$hrMRh=LobA}{1%dm$<^AVe& zdb5f?8t{+W9MWNWZM3Q^ihY|5nAgn0I3ac+&jX@C=kTh49S`=+7<{WEjuC@sM)d6H zNifQ15WC4iWH80vtS8Qe%Ay&UnKLd@%-f2x-1fdy~X}J>u9v@Mqt_n&7Gp+ZbHFdLMM`cy|4ofX|e!tX!_eZchS*Kaw zZKP7SH5OrkSwYA)Y_yofjzT#vh(CWcFjnqN=VCsp;|4GPmF#*|@xk&qn@6dvlD!3b zZdP}P?m zI@?P8^EgahU~qyfkgK~2Yut_Rqp~iXG zRdCbxF~PJ~!*r{-pri4hLrN(XV!m%8#upMu?)S&_$UuT`m@dzASNujAykY>JL9l1ah@Nx)>Z*ZPy4 zlU_J@O`OJu8**ChSFvTI&gAPbdA-4 zRD@XDrP7KXWtaP=YQT+M+YzI8vh_PEFmG_TD*DoEJt|+TGiT10+Yy7gwlPqHL-ia( z+Fm5Fdv6ys@Ctb5Wsto-Q{Qkk2e4rhl?diEIJHS&pJ8CA_trppZNhh0A*99|V~2IN z#o_>i1oJE9AuCgHaiJ!{E%~fvgF?rLd0H-k3<#?d{tM&GXNh!eJDg(p4oZxH>Vqa$ zJJ*{Ny`htX7nj-?`RBibSV!wNbw82jm=*9~@xJK=kR_0|X%jz{3Mu_<3ac}%pDLRk zqC;A-XJ~+7wPM!cu-fM<(UUJzD?VVMunM8YJkGQD7a65)t38e3m%5|Hl}>)F9rCI= zW!&qPepQ0#*kQ0&#MFF`G0rp)CHOeaX6GM>e+M~b_!qQAw_o7eJVG7PaScNMA-j8D zrYn%pz4*fX17Tt?QC@LOgP8017qC6EsjD`$M1q`E(93pT7j-&fPYYP}65YTRceVZ> zQ)PU(o%E#KdKb+0FVOAig}Rc)Xi28lWH5*l$Xz8pJ052ibY(wKCA%f{CLU!t?^>Nl z!J}$!EuX@?O2g1RqjLb&3w19rgPFEzxtShXTFi243Hr@yccj8=RP&m~paf zc;ty!K&OUVt0KM?TG!ZcD;CnE){Bgl5i%K;^-&jM;2!Jk*JQDF z6GfKiKSPvWYh6swSf-uU8s6oW_6-!4BI{lBq@ug^7RkWzqZ1LN(;A26y7XY@SZfcc zCmHS`LoweeEDktUI$2ol@nREi0fy3PU}yeoG8^yKB8c{Jg`LYw5*Pj?glYp}NDU*h#3>_6Hq9bcy9^`Z~D0fasRh9b#^Km&@>Vgqk`W!B5O|0Bbqbfc8bIyQdq+ z{KgLj+&vNBLF*h8s3PkQ_{=%E@gic4NopOektjT`m8Pn)CFvJ-(sxx-jwHQrCykM$ z*?E{(wVBnsHC8-Jmsyg<9SV(oot~DHq?i@^)Q)h+cLB9;Crk{Q65noXCZ|Saz8z}X z=LA8@T){MD)m;T8+%=tA<@j8^k6>eoi7Ec?F^{#@pO{oIV7K)*ctCNA**S(5-zC%u zW&BU7x!!Hy)%*G1Ka)Rg3XX_V|8Id;j_;TI2wWf#n%3`A? z&sb1QcuPX(9m9hW+99F>@Tq4jFG(8E=HTZ!&z3nlLauGVz9Qy(YSg*_O=e zN1IzSWg&XPKj0mLLpYuzD=GLmq{fR z>*e%D?6hiD)}z)PMXV<5Zh|AhgAsf+i>IKMC@jehX0-b@F}tjq9-9~;&xkzdT(ja) z(~wnxPe}z?R!f#?@EYr_y%!2zZ{pFcUTZGMY{>9me;cd!E|;QuN-Y~KFe}!YGhGdX z{9BprNNI*9j_P9|w<`aDze8ccqt>qu5yR8Bj*&QGkMYO!t(83@km2tlM|>!a94$H5 z8#vqlFI^)4fc4*$nK>s}Dn&lJ(k=m&);J!&NmLbMKuh~Q^Zpn8Lh9nh|` zf;#tgip2^;8OguSKbdmzC=k$$)a2~A3-kLD?3j8P-E?NaKT}n`-fBxICPh$y9*)=5 zE20}}+T=9PvZ-&d*gw4=3QLXoa{Jok%L-_xegZB{&OP5_dT>_w66pGIb66-2VnuzGI+yV}*HjAAAI3kEyl+9=o& znLE*#docki=VIq;%yma@N(GajHs+3Xer}BB7Wm*gy^+$IV*l5gP6NZua@R_qcSU(l zsHunWN97~IbhF}dMNT%DQ!?E~`55VcHCM(7$$J{b@yOS{e2eOxM#Zy6eVbAJitQ?C zy9LHR5j?GUMd-#_^BNak7VHUZCc~ke*6t6~abYL}&jH+pcexus#>lW@ZQ-5n#!-|= z1a}GwEU>Zb$#)eB#B$`|L9kpXYQ-zYM6XK9s9Zbmb&tf7M8o(eI2}E5g%KwQZq&0@0w8Px-2-(EWOxtPoQaRvJ2h{3`SVE zngOy(h9=k|qb^8sVU>&PX)8JkuX6=UR+i?htj(FU+tcz-8Z7#L;QZ!e-}kf#XM-Q` zDjS^B_bc|L`QDuGd%_agcV&6biqf2zoIKQ4=n2nZ2==lMOffU8rSAjRZD#qHTJwxh zTefvgt+FaY!c@Ipwvt$rl&x4V9yywhkCTMSON{btEt6zZSTMEBSTNO!wdn=43xTLA zwMh|y`~$MOyc1-{+thlq0K>Pd#(IL~7HZ0N)CDesMcFLA%%LXYH*#vhAuW)$xs_3k z+daLwa+-g;O)?_KWq{f2#T9E6k;p)+rAUTNEUIeQme*HK(^#IEnCXAphRw+TO)_We zt*HlKMcI^Q*9GPXUVKJ~+Gg%NF{>f%k6M?|v&468zHGgfL!;7jn=hmDYOh{ZE_?MZ zo1?Ryl;P||VxUQCy3`*mWkhM1gRmh?%jN)_-h5Avyt8@8_1byHJ=yUQ5So%a@IAeG z2_HXG$$7@{_&9ZzI4`j{S0Ox%^Lp!{caJAxawRj=XHfnDdmB&~y59QpY}xAAnlh~y z>xAD}Cq-scfTuSMKgi+CDR#-;$L0lZo$JEY;b%t1AG;g+db&)==EIk*6 z!|92IE`NGNB=moKTZZh89brmC9j?%uiEv^?>A5zC0Kr}8HmkfhuqvZdyd#|P8_iPh z{I_#pVU6leGdl%eSBQ|y`uQP6H8RTz7rGk{#J&794JNNy-N_xlBb*6zBN+w0o~FU` zD|)i?j~W%-@qJU5T^&BUq)_sHN7j9nSK`nD#<8ulz6T%RQT1iG&D`jK9`!bm7uKqq^IAhhvK3{eQ-xz4a#G1cO^! zDG=ziKG?)`-TyR@oe5(eOyRcVgfrSKCmiP{IeQQyT235rIqJXeZGU%F!n7CT4w&Kp z0o|^#N{_Idt8swMMc-uiq=L5Wo>Un-Lfxz;HMf>#*nUL)w0>Kl`}d=%4=Qb z^h|3F=U|aG1@pp*;BW!KLH{pltjhX)pUk&6T6&r@b`8avmyC1-MnHf5q(1LcpWU%< zNsX0b1Y}Q%A!LnLpQNh0Ii2CXO3Fu-q$nDsY^NgQIVVv^x?<{W zUcM57Vd<{ON$!{$N;lHxzGUJEwa&U1uPO$V3Tz=j;6QHTJAFB%;F%8zh+d!|AmZ%X zX?^^X3_cqfaHl0+MaEaHx6vOU`W-9geQzx*CW%hOw!`qFWMZK>2a-}c#lgm4OJ=dkRP8o%y?STnfi^yMGaZi3*t02wWm4kVa^wu;hKPF}yg*Xt zl3Ht>zeiKA$EiWS1yqUUQsP6J&u!J4**;H8k+kpQkO6mcP~1*>jq1Y+t*k4?$pw|b z6OZnFt#{KwYwu>JJwwEyN?@^tG|Ax!%QYR+kSF{*H4tkvITdwyAxGNsgwK*8i5mzAn!H*6fWUQHVYueQ|Og6b!xQN0NrUU$6C7 z&N*yPQb6Z{H*tsBQlw}eMK`+}kebq_qv0gk&+rK{xU}({+yav z1gx$10wTt!R&52Oa-a3^)oS7L?bd($wwP}$9xCd3K@rUUF|tG9C!PXpTj$1;qcl?; z_tLBftH7DF5LG}TlZ%bK^FlXY`!6-Gok`+wsPaUjf5Nd@W6EnHeN%pL!hfFfOX!W! zt0ukSq?&eX4D@GqU2G(RE3Nog-Ywe7@N38cQH~3*hh9e1~WzAGhYsD zt8XGzAD(B+dqkBjKGG_{$;cdvdV>f7Tqr(bMve(*gA z>UJE^Yig$)6zy&zQaRl$Sz@Yw8IyCgQ0PmckZQ2jg)gc_ui~qCS`3P^el7wc*7oO< zz21B&nAjc`EA9BL@T~YKNZ@*T-+5n}WAo*F7Wl}*H@65p^t!!J5M`r`)>QRJ>JKMg zdYqMOb*`swm8OZx$H$J_WkgYf@nrcFS)`V61{1hnt;fyN;Z}7K>7HuA8bu#PPA5+K zFEc2WbM_`>_r0CC5HikUcXITcT)nn~qQQ-_yW2}dz3Q;eML->El)P)yWNwj(Hy@Ux z#&k1d+-~8=uV9RcjWYMvu}{@n#cGbX*so;oFSAOm*(_m>z-eY!&2%)Uu+H815fsgu zEMKxSLdWu#p7rvz3YLu&y+%DP;OPdQ;v-*{13|lro-?iQ(~Ugo{^LxV9+{DH9?@Hu zNH^|!6H3({PSjz0wnjP@Eggl$q;yI~6&pmy{8bdMO>C3`#uoXcPm(H^71#rxtV4vT zK8p}ge_1B(8c0#mtF4w&QCA9%tTHZ0d{4WtSz0i!A=+SowD`QLi0cfr|I*C3-CFnq zC5pI4TVCA;XZT(N+O$UUo7Y*^*|gx4lkUt*&GkuHo=kWr35xJoN1Nj0JuQcGv6j!Yrr z2yGF(becbYROS!+UqcWxn6_0(y!G-)Y?QH^Yb58iN@^60C!RwM%t2yej{kcAH?dJr z#`*&{bt16VC2Ty|_ZOs&t2O$oOzqDh$kJe(b96G>$T)M0OdR(Qb5JgEhn7rn1V^x` zZ0fIghN>9HNa?f)5x9yBA;pr&EwY8gyo@>q31h8DEnmlUXD zp1(y%r+J^OozT_X%Y`{V37Vo}2qqtgjoWVh1aknJB(@DPN+%#rQT^cLyx5zch`~sH zO(H8Nj4@_TXp^X5U=a5i6}y+_`g;IJrFETBI*9W4(d$GErq1aolFSO>;(!N=EU$Gk zht{`BXTb=RRz5x>pCyNcB6tDrNa+%+_fLcB9D)7z3wZ-9aFWZ@WzoxNYZRwQNqGh4 zpI46@D&a0@S4%Xj-HJ8|Mn6D}eC6`uPAh?}kEkSri<|F7069o0i)L?NlJ2+Yk@-+J zf8n1v>aFw=$2F_@SYaT|2?uPk{c`k5YN>L@?T=&+jytajzqWKJ9)XE#k2X7AOmjGc z|BOr-EUq9v3n8A41tgU^tkW-mH zmBd!rRB8bS->e`1p4whdY=(3@8jeWH4@Ksp2$$!@y-5yY1vaCnj9wiQ@d|~9GN(_m zKJ~&)>@nJvZei9aYFIeMI2I{OK}=H0Iig1$ysRDY3?@-GKSPBI)$Fv+egnlM=bo8! zk}YNYQ6FUN1F;-rx;gsxY0k`>ylz_RvA#H)R+dhQl&5f5Dw`scCE&SPnkbuU&UOo( zjSoW&#CJIiTkE+=R2ZhZ;6FsY)_3-O1frri8FUt+Je-7@iTSh^e|eI5;zBS5zwpt( zY4J0OZUvvq_jj!tR$^)4TvuZ}79j^r6<6~(f)}eDw5w6(cnNpQkl7kf*7$t&VS)N! z>t}){v3m@3%f0iOQ(f zh+6AAL`CYRd#YbYteb$qz_}8ooTy^P2rPGlrTRGdPuPRxaS&U=)zqgnD+fI-d*l=PFj&ff2GsFb7VQ}=3QKa8e^G7Pptr4LJ07=D_(a#|;6qe|hp z6g=#|7CenB9e;_-y6g?Q-0G`WrjuB9Jyr;4QLaO)g}GCidzzm2(5t;OFaFN&`H4M$s>`BbBJ zpzlfQ10wA~MXbaw?TY{wr?BuMG9>Z5{ExuU^T!XykVWZPFdc}#;S z(*GZ7gie3Pk7aJ+@3ZtOIzu}zX2x5mFGHY~=@jq;xPJ2>Q=-as`j`Afa&I9wbV`H2 zl%7E~cLYXJpH%LDUS)ceOejXXtk?gnx@3#60u2A>H z6DXjKinjbV<4a@z=g%-PDd?!p3W)qc=+I5Sv`v|Lj$TRQ6&-Wyn(rRv2n;1PH~ZP7i(w zk*=+wHlJ!EkLBNEy}IxJXv26@?GIkFiS3@~Cbo399gQuTj}}o|E?+X~XTKS@R>%I2 zJtWX((|HXOh9k8i$rCda*KbZTCPaM}L=Z{%6p{4@t{QiQ_8$gE&5Evk$WwRxoX9ks z9i5?VDV`TkE5`ms=P}KU>4`CKRV$h*(m)Rto zB`tYPv8>xca9KsOpHPGAF((LxM2^Op*?S*@xf$B_^;%1e2{vq;IR)z@j+GkdDbaxBAc%) zhP{O=9;DwY;?AlSJS}oBf3<~Q2cbrm4rY8F)!pDwe!QIf%sqG7J(#BD{H560hV)Lb~vZq(9l0-l5Zxd`P-My0IhwsJ&WjjE()8uR>z- zRfj-d<1JV_C3D=%*zHb>=1@k2^v9t`wEI^l?Lc|q>FQ&Ty12D(Sb;I|3)!{wxP)ZN z*84duovIP3MlPkw3K!=r-Ji^b09uyGFg_@wSqkiXLprT$M)A)TmtW8UvE%EOZu`8g zBIlq(*usdMxsXmt&{1kpTt0E#S@ScNyAf-p1uiw6YKlA@5?@e{p71)#PnScK-BCFR zNpYFwWMc9cNn<%Xm{~c&oI26;WgA}HuHy(U+%xhl_h zUzU--C$@o}MkXI67;!|1Q>50F|61HRxv;|Bl;wFfCA8gJ(9=jzWBAL+j10H_)aW*Y z)~igC!}(sk*z;=1(NvYQv+)Dt&21mM%o*QxM@q8_wl~&sklP!X^4%UnJb7L%PKmgP zo7lJw3eVQEgmno^0*d!R#8t>40aEGg^=x&eS|fD&o8>oz z5`%+(G2UfIFm@*wq3mgs5OBoLOAz#`N{o}eW~yiF6mP;hpqKB*m^2Vm!Iffzq{{Sy zhI;~Il~_J-4w+LD)^j@ZaHCV5b7!|+&k?*n_V*PWypxa&b=R5o0KgkM?pk^Vgy;K0 zm)I0#In%A!(=0;>WNQqX36;!5tM$vrR481Kif^Igseyb72QCjCPYIlX81yk}K>7Qy z`g!~be&Sc2njAmJ{vLNHNh)?Wb%{l~*|~;qEh25zh1rJhaTr$i1jDz>y7`c1pHpZU zm?!Sa#_mt$gB=p1?P2Yc#YxCv_;yAJm0R6r{e2zGsBdTfo|*BqXmO9DB-G|DtZr-k z9P1i%)UQZxqD@rqR9NBM&itnnS}-%3f^PSfcsj__)_AxybbRzOL8i~lik(<^0UWkz zK{tl_to#^%MaH(fTuU5Luid_lhz9aqOc8$98jJaWg~FeC$wldJM7cifWR~ZNwyEbt3n~tB zSEp|Sb`k~AWrNM&hB#{eO^&(g7rc`m zFo<#RNX{eH7&>iMKdwe#E_Pel>V3UI=Wk5myGy;V6*ApveHkWm#nZ;IdFI@d$?>!1 znI)&sD=beB4r#u}>kMWv9Z}@V1lRPcx%Rxe!x@cZ)z=9M(d@X-sPTEJB-mLP?1W$7 zrru%@fWrYQ5p3>^>J16sK1_1Fuo1jAopalN9 zcQd78X{W;|!2v-j{_(ZI>Y)QI0L%zrY8;~jHOz&Tr-1(GzQ7q3vf{UDbwouHC z+b`R{Lb5r=j!nWD!)h#3sY!!qCKZbi=hDK+VwbthMZZqStxZRs`|_=8#1wa>%S%We z4}s)MqFfp7EO@=~AMwkzQJ1oHoEiU?YC$mwSnN23Vsqh+y1-_|lrvo=%a1kFau7=I zHFEOX26XiQo!-O4xE>9SuqW?8yuo)!5OAB*C@^FZZ~e*{ydxSs#pDA>x_EbOisL(?4ssJt23GIs|ltWtlu<7<}T$bwWCG@Gb8n1=z1HR z`nRe^wV+=(mbI7V$SRCqs!MiUX_p*rU$lfzf0E)&R+2+&NATmPWL4*fJC9*l11Of`ffMR?Y>TFwB2`5{~YFp zw=Vr7j16x+@)IxFzvV8bV}IJCT#|V|o35?%jL%^^ZGiGb}jY?{KN%4O@m1FpNBT55N z8S(Y%p_{%HQD28M>U)jgdZ zgykObt+htcuIXFLG9K^40^-D3)f(sEpqF>AWvs9!#7L9Fo1p~%C=dseEdJxSlKA;E zn3V!ATkVjtvT{`Ov6O)8El_z_TDxHF5iRu?|AV2 zg8g?q6rFsLvo2OhWxC*8ShOfNm7t*G*t(;6(j~!+NS$*YEDljVD>+k)<_6@Hh|j8Q zxTL|YpSyYXdoE<&Ih0jdH!0)C;!tmDupzV~EAA}yyqKDlUVq+PI3w_hHeudMMi!A9 zpL62#`ZA-%7goWW> zpTQOVUa7Ljny;(8qxDy?4!obSNm(Cy`D!YFT6_LT?g|uQT7FMNW|hU$GLgxQAZY8c zN;cz3n*`s%ih}~bP6a<3dh}HQI7t9le37k=69kUEBX-M5yQU{6G4VdNXgC%c+dM71 z`JBHeJ{)qmvbp(%G{=f5Bes@=j-4IISn0|l!qUf45*#aiTO$=)i*64TFFU`e!1JTW zC{{GV6FCVtT{NEHukw3|C%l~WSWI4mf$2qyJuP{3qG+L~WIk+#=mpSZh0xB(V#r9H@e|=x!IUt5u8fP}&bCDxZ zVzSF)HsEib=5(aB!MAWZ;q*#t-*r@8k%>GcI(e)kI(eKU&2etkRm=Buyvj^D34R!z zJl+v|mXnjemAWIots3pLsPlQ!rEe#HC+j2AVqT?>D%P-})Q-mLMn;mXTq+|Ufx3~# zE+z9gm1(5PL|?Vr=F-}Q2dbNycC)^@$|fsvS+ghng$qt)PoDl6BR|Q}_}`)~ zP4~r|9j>w>vwgBxEsYl;v;KGbzRUgT1S10`6?(eci`|m1y;x^|K(ep=Wq)?fG%K{s z^J01*U4-tu{ye(z9g*UHg?ckQ53D0c#5JmUNn&A;(?`N_oz(o{Z;mIx$^DES|3E`=K?m1#+wkj#IF!IizeIGzkLWhm<*pC+wx}&LOfp#4qOj6`boo$ixiH zEf#Re+$?f(caob0aZv5GLK6Ge#QRMxvL+awuf?ohp+*>Y9qK&PNj&;zC>=VU9-QX? z;A?HnhN$Q^f|;E|4oYvH@LONYG_WHxRYz8kF(%vlq0Z3pG*8$^szN-?&}yUffe08S?xm?y35#vHTit>)autd~{fivVlFa#S?r}tz+iiXC z*J^Y4Pjtc8oMbmXfG*sV?rHg782R^NokI@OZ4L9-{nW3P!a#@%4YZ*Vpt}Pg%)GPR z9MIjZZ?^s+*oDBhjvezNMOJpLJDy0=Baq{@L&?UMsK%+Tb4VBM+m-5W%rkrs>e-A< zBHN)(#gD5Y_v5TA(uCg7BEowVM1;NaJa`7mW?Y^#>{0`ma$#bG2}Fo5I`sNoh@Gmy z?z6sR52Ct!7Tzp?7+E6>jyk1wCW8C?p9*PcxK-h5L!u#J^QYKbz+u|_WxG#gT(E>P zLyr3RDmZm%PXxu%UWHfMt9DC!&tTRpoc8xB*tBGKL){mD9h^7eXCUAlO<(JOg(9ar^Zh$^bzUw+0qlX4Z&JTc|2*oQsbdytE^l*f*ijS*vNG&8|Vaeu6A z7=pM5?)@aI-ImwtO0~}~N=$UeDY0k4gn`)wPrf<3oLmz)b9YL)K$_e$98_Jgbz$}? zL!+!MSdL%BU8>VtyN^|6A~1z-Zt+ z&9{m4c9Ez7qJ6N2WlZA}^$HF|K$qIL>_G$L(&!3qs z7^EXsK;-J<%UM9RHTg$TxFE#hg1M6HLZ937&{3cey0SSPhBi1_)iDpfn4Iww3&yH< z#Z{^(L)P{e)iywIIHx(wZQhgVxqmf46ghej%`a}0qMjl`bfTD;M)f_dS%c_bWfJV2 zDGuQJu0XwutdZJ2e&Ehx(@ax5#hpvLOJX@*Aydg+o*i6bw?{t)_J;iZSSS7jyd9RGQ+p#R z@yk!?O(*@a-iD2m-UJ5IlK_s>nZ_&xN0|&jim2<~;bZP`(G|NRbIrLq?Y>>|+4h}_ z7h>_7_%=oussTX?Jt0&_&Mc-H^eCa;-A4Uxq7uY2G>PFXL|ObW-EpmPh!$ftV?n0ihB10NGYWE+sNbYd6tPxcH%N z7GXE?Lfj{dhQBJ$oSf5M>K5!Y2<$hFmpmB={kN{BW-T%Qwprqp!IpUOAiXxvEXk#g zG-GmZJng9k+}&VaD+%f1`aL;sx*GEwX7+!;W3;q)&@d?6Cle9L%*{dyaVQJAD~Vy& zkeZyFQjyw&w=iyN=6#J&&|`UhKIc^zj#==;^T=!R{00 z>PeJ|H0^rEUSEVrLyEiV8GbvTF;xpl)J^P>efvDdURt*26QG4BP}Z|zD~Trvg+|D= zcZ}6}q&)-XBJ}3(iw?&#$ic}Wzeklcbe2|suY-4CNBxM=vzdjYxOr-B z$eB(sXDT*)j{sXuX3#cN`S*^HyL>8X>Crw)hs@9 z8cW6)c6$lArddt*q|g?baQf3C{W)9kmHy1mg?5i<@DkJF@TvW&ZWyEbCwu!)^mLOr zglq*59q}?_hq7BopeqL`N;Y`yxE4=JwbIK{by%ZcrMYydF3+$VOyK3VS~_B!dCF>K zdlO@UJT^Gbi{*-tM;-y^taFeNCgEMKI#g*y6N@#h_l;P?2jbU?It(QuM%q`NpZn2_5@9<>0OHFfq(E( z1o3WXB-mL)gdUjePPL1`zbtmkzQKl(LtY$u@NROP3K&Hxg zb^K!0TVYo0eN!s( zIEOuCIJ?D)a!j?54(>B5;cvu0icSt?0H{~@A->?y@37u{j(udzH_cMN=CC^;d=`615`{43!#dfXU$zKJ zl@3s2D0VW_Y!VwEGngZhG{?1XJ2~3eky_t9JlNy(xx)#RlWp+;yMBYCrYf-@S+}>~ z2+C-zXYnuU44jRxeIm%}=}rX33WrdvID}1EKouk4>P-B2-HE%Bg_#>ilkOMa=v7Hh zeDAX50}6_793W0=u4^F)05ykEVl+lSP|XQri1el4i0Z+plAxzJs8gx1JO_I@O&3FN zB;x1Tpy?|nXZjs?XQ@h5_WZWOdT(G%_`tkPST#$tdm!B_NyhD#5#jx+knReHx49evx#O zGWIU-7SHHPmS(LOdIhPDhdmHL-RyL&Qy$|SO9atF83jH-<6mH_g z(mxSNAl18@muBONlN%VeVvdArRoz0DH#>fdzZv@EZ=;x9w={S6#VUtVyx~}Id|2R$ zc~BBS_bwuEaAbR6oB(f(0B^J|sOG3|RcZFMEQj`FIbv&}_%05>jIv)f zBefy~fP+jPvv8R2*LK!a!Kc!w6+tkoY8C|3DA6aBv84#HW#r+21~wy}{Qe;lJllN@mk z9ruRKdk`9BC#`?cZ}g&dpFy{-i;!f>2J<_SY7Vg0d0?MV0$gN+U#QW@T5`>MIV&xh zAO{u>5J5>CHjv^fh1|2?J_b%Kax{^$ekQbq@E=w;Qy41PaFFY~BR4gjH+%ygn;P; z$9%C##y$;s#NS04c%{wfEz5=P{BDC6zVlQ*FH)PsZLK&UT|tJ^8BamEi;ELrqf)Gw zrH0Y*(bn@kG`JP_ryvDjJS~3~S$R7o79wce1Lx*8w%p1HV`X%hIpquR4NDRReWb-b zX6~96IA~*ypTzj0Cj~H}D_4-@cuGDH*zuAi8qa-7(mC*Ct1{@Xza!(He#+=M6RkSm z(c^GjDR9NAI3qDpW!DpmWIJGDW|JP=jKd;reoUkUeYqjH1i?~9b7GSa+IGhBuY{U; z9uVgOoV~~$S+k74#{2$>BI5J+Fa}kx!bFIjAYjqp`~$TO9wTx)S=Co))jZFOSdMMJ zis6;c`|`8UhgYw>uQ`TRFQYtk+!H*kFTadzlUq{qo`W;2mAP^_6Pk8ffF1IFQKF{%gy;*jf1tsT=XxZ_Hcj<#ms|! zR5HrPdcsGTB=%!s?6}jSd%eP1i4qEVpe=hY34fRbu0mH@}PSVKCt9$4UIay3RLG2k~DdZjQHrSLPe<~ zaaW$oJeLS{OYT)77^m81Zo<8&g0U_RtKyd&x%tj^I!$)4~&$*BFJuY60*v8o80bm^k@^wvJ&Fs|3+n8kUa z?QqG)YSC8^KFW5`#;D_(T%%$=bvGd|QyPib=hS_|XxgR7&XMPA+ZBWx01MD|s2`

iW+!5z;?M3&G@8I#YCW9ewm)^uyw0qJJ2E4D|vuG~GxRqu3G?}~HM z6`VtgavSx7Lz|C}4Gd~NJ}%(m zez=N;9EB5NIYD6DZ?Sir5E=9{>YuqKK-1%cyHb_+E+b4gHr_;%El(okuxb!CD0YGk zEYzO4Jn`#SWxKFl@ zmX{d(wPm8{t=nKRIkF+dqZM60m~%1vG0|@2r(9YP(jbPLVjZD z%nHUW?0OYk?=bKa@c<-;fw-{CY+8lw(P92S$p4-EZ_z?`qBa|Pr>fTc!u(*1J5n~m z=8v$<_N_=Idm{Lty{f$I621pLEn?>*Tl%;84K=kmxNOSTqONT--iHr~l;#+vQ1KQX z#5l1uyWF@p$C!~0d3q4@K`S*G5EY|C7GR+d7<4vaSN>>ok@KRUCv_p${c0hBSX#{Y zwYXDDvymI9L60VhA*m5~2{7F)sTe!n<_X^j^p$#n+aa^(JKQK?BTFVQj>yCeoMGe~ zs7>Vq_lBAt#1b+QT*2@n6ASw=I6nA<@tH`f@{fN0dj>!tyVn?j?ZqBHEy6~%&5eI~ z#C28bJzmtkG=-OWp|=tBo`#g9D9`EkRKf5hE=_gKiM^y}Oz&%}DigKdnaNT%Ii5v! zmY*ZG27CiEo$ndS@`T{un21%ZKVfDs*SzgJN1ij@_;N4ouU?f)M>H3uUlH_F*7Qjg zY3G#$0U4V%nZ9R@rl$+q8#n9l5IS^#fX=9X8lzoN;b2!hKGFz~%%)wYBXx^B65aU;vdG{Lwog>BPM!8H-^n8B`4bb^Mu zni6Cedff4V5)>MrDe!9uMy{LCUaC|fX7$s|hB4KRsU;qA+}tY&r7e@Ng;m(Jw&`@@ z94b^A!c^GurUaI}iq|F*hf%Q%!*rwRl_yzfU);rZ>sHqL(tI!rvR6B!1@gE;f{?HX^ z!8786baGnY+!o}1*b;{doT~Y6_cc$$j@ZTgCCBL!I+37`O>M?puW@fClA-#Z_zh3ZgipiDnKL~6#&A)2rT;qRmMjR2nV$b z0CG?Koa<&Xy?CY(&J2H_!2mlWl;R9ccR7?Pv62kBM7BWRha-1gSu(09)uSeGaaNJj zbKe!T6VEDgX=56U+CdBnt(R#xs!WeH#X|YluBmi%ldPOCKfwtJn<)IJ5Onoeo%8Ua z-%%%Wl>@1wGql%HLgN@)eq!u?EYy}t zKb_m?<*>cR>tO!H^cC`3r4-_7*+m@}#j?nQ@ zbxSi|9z})m^zebZQ(zZ}rO0Gnqq86zI#k__@kN#YVOVy1v)As0gS1F(X8dg2U#tZW zVIQQv(;JAT{;1_BeF9kIKA=kwVXZPKb_Oz*G3;Hr z%{q8C2036M%fUVB4h~bnQzqie{lNOm14e~7nSSlt*IsoKbxE_fl>LVf)w{ozM;X$b z(#6!knTzS9^RC)>TJteiuu@ku)9|_D->D>?gfI>wU(bt|HXnO6GS#_gxUn4z0%ytj zZGbh@)*SfEc&pUtkYF6agSfw{Hbr!*u=~`vq)fF{BKnKWi^a9FcvMkJ;DW{JCp&^% z{!o?Hj z@c@pkiSO#K-%WmecP`)i<4n9np08u63-nBUN0pPX#O@TE4hf@~N%W7p;NYak6;ua3 z<9HECPPb)_iVF_p;DREUrwP>mu_R#nMBs@JmTfd7d~U}aPm4rgO4_qLo)W894D+c(~a^OE9YlQ7{bhnK)CJhfJydBw=!FhUPZ8_3n+ zXVtSJH@%o?j+v6Nn)Ba5>M`%hdCciMJPgrZ#bGWGG0Ufhwk1M)6OR?_ZS-R0yKNDX zDR!!!$IrkZP4i$%HF{R^L!A+H8#o!+5i=)+**fsKjVjBq-4U1V`vTVo!-bO)O*?Ur zn~{}3l9+&3^jQV`#UIYs4a4ktNQ?i)3z2VuI?o+75`V66JcPlcNhht7{y=z}{Wt8PI20va-$ek3v$E4Un<`V#BI( zi3_WzMKl%QV=6aGmCC&oB>gWlW2Ukwr?2pRuG*aWm=SGm`rL&X0Sz72T2NvN9c~I9m0^V_Nj(nf;naT13kKow&QXDCY8POun zL0w;`io12C;??i#Qn8BCjov{$!8dq~pWEE@w^t*T&PBuijhxc1u^Y6NA}gx@7DzYV z9rSweuj74P-2I?TDfQ}$Un?VH^%^~dKf-D8nBm)pg%CRnu{5_gp1BP3(Om`A`xc@7 zz)NQLxX(r&SGyp*By~-5_E4R!>)$rA<=t}52KQ{l1HQAh1VW;(nRjt|rejJ%kPmMz ze4fm3e5|Rwhf?Qcsw*XjnM%T8rdoexB~iu`QhB}Qg-czHd*f;HGeid_^FPWK93Oh) zvUBYBKk#ll5c!*_TwxnMjn8hDh@EHo+rK%3JAMWJxy>9>U{{t9Od{F9XVSnQtoshD zI7U6EUMglC$maII?1qHhWIt%I$n00LimD`AGkrG2G8g0|*Th1X&BcWi9A+&6)lBs3 zO;)%KeYw2y20ql>8YxLBD04Lqp6<_B4eNRWEY3fmhIP6BVp3|Xm)8=}-Zn*p*44$* zSgb~;4$cF*SxqehQ7$T=Y$;Jt&6>=DHyRH`?q5ej!S>(gK|>yw z7cR1?7$huy2G;`+UwE6>Dy&ha{VJ#_J5w1Bw za(BB!t|Y4NCZik+AS>IDG6cR&40_I+m6DUlJeBU1ldrj=5>xim`k~Z zIrB#2I03!PDLI7B2;^AT5Kx%ZcHZfpgI~A&sz_C92!=-S3}dM)Fo=so)#Z*?$hD5_ z)iu_qc-N?V7Hg~zpAaaqLHEQjXF2<86o___$^fK3`GTom4{R6vlI8!g%J2*s_#)em zdJ6A#h^!eZsadasIlqu2JFx$)ceXrH)jz-VJ0*_r+gOy)28!1Pldb-~*P z76fch06>X|$YnCWBcuXG#yEpBW+B6It-W-7+N+a(%qq^1K5YrKd|K-O-Y!HZrjs*j6g^u|HyVybqaFP;yefhBm zXOg3&w0hH zbvPhJir|RY5$#9V&co^vc?xrs+_HRKv2}Drcl*=7Fhfl}STtFluviDB1}**NfB3Sz zsYiyx$H3p^a-L3ZCFr?S)}+xMm~TyNX3PNLnAO4)xG|Z@BT{WztI!n&CDDT5gAP_s z_is{z>$Da>&eo4)C)f$MdV8Z(U=d`>sPA_6&~;>5MDiuMZWcXJx1ClAQuw;5K5dh( z_h6-ehh5!Rs{40X<>?kIHxg3o{`?b9LFre=5ny@S3F^t{QvX-?i zZWq3eO8OVM&ULNzt3Ru2VLag$`R2=1XIjLgd!+YaG0ltzi_Q-=m=URB<& z3j=2rEe@PrbcZKAf|O9y86OggrpDn>GI6enUKV=CQBp!OzjlMJVJ&T*@IAC0N;np$ zg-(8dQMsv1M$Hm9A@Os2|1R%hS3y)bV4HgwZK|GwWY69!_+*50sUV1o%_bYMpRx`k zkx8T)5&0IW?|^vz>Q2;roz`yyB9jvV5P(E-lw&`|PN$R%^%-`Xgvwwl$fj!Z%COip zu5=V};&_rA%kqmVJS}3mx@<(zRDA()(Y1uc=3DFsBo|eAS`Nr>ttb2hiSZ>sEuf%w zp+Ie=q@6D=o1&~07fz8p3iK9872hKfERVgx?;)RcD6JU9w(Z`t2nVZp%Ax({8W|n3 zfYdcI3d8~a4lur|AtNRdQdU*$L4F%97MzIGKd#S|MrYI)MMm~CpZIxJeys2U5VpPp zZB)_|v2(odapTBY)oarn-+DMj`y+lL#%ap9Q({Rd*fw8LD)fJ2sLkT@ZN)i?b zrjY_ckhn=U$-*WZw$KDb5hX@!XjBx%66I?F>?jtBid_&3SW!`fK}AKdpm{%M?!CL4 zkf7h+^ZP&V^ZcLpZcgUjJALNNnKS2{ncE)6*z;V;6UweWJ629;1#_6Jvfr_NrQu0V zPDEjB+uc85r%_v5Dgd5|p%egT+DC&lucL7~6 z&j=O!z}bk5%}4d+m~raMaQ2;QOmj>4n+?HNjdbe%fDsT1sWyf$`zSs;OMRF+XV#hZ z5A1z@7&p744ja<>&e&1J3#Yx0@c)n33{>~*XBaF)LdadFsUoP#W?9w_>XodY18F0; zU$Ym~ZcwA`eMULV_Uq72m1^0Rfz>Oy?W=F*bonzcRqDCkfqm_f?NRog!VJTp8I6&@ z@XrRLB~UpmLvB{7sM0~06`Ne8UYO%Rk%ww!RerTGW_KS$o(chszJEo>Hu2>nP=r83uWq{)-WWO1z2P9PhFLmGIV`VcY6UAy9KB;KOIdhftejaL z?ZEk!*E8Y`RyD+GQA~rB5(nGt1GZx{*3E!K6mxLCa@Zb)4!~%hFlA$h4jP?>T9~ne zJr7KT=Lr_2<1Nt^B>C5#jIf(nv32wZLoka?5BS6$l7fDo2_Z8XLpGx2tAaR)7Unh} zPW%y@m6JqOhh=Be&c34dPN5llc%!;r^7q>QFui@g9om=Zj+Xm9-~ z;-XLbVBxw1wXQ#S1Y2){L$EjsBDOv_;kQd+6L7HV@2ozM#C*~)WHlCqk%^=vUUX>D zyY(kk9aSlOT>qouEphURfmr#o8o)u|jGPwMkbKN)P#tCl`Gq0=0)j=Lr71uFyOfwx zwuI5}5TjvVB_z{=!>uEU&{u)Ue83w7;Y;WK*)TB>gRrO7SSPd9$8!_I2IkKo=B91n z04Z>`TDW(sZiQ1Z@ofQKvDD4Q#u9Uv0P>6+MCt%4UfL;PKF}^N%)!-x8H1{DKMsBs z)k!0|969;{4-AEvI5BQab%)LBK(Jwaf~{T+Nl)DazhZ@XXg*ec2XQFj{zcHRK_*mJ zt*@%Wi2<pgS(`X!pPfd#RX@*OR^$$BR0Mlls0}&7mW1t#9$S9I zNGH%OYf4!W5>U0^Lok^_RDFi7sgKDjE3tgQw7$}yDhPzaenhjyRdXlY%oU8e<`l#% zt348sxqtylvEi?;(V}J!$7e3fIIc&9mjrb$}ii;EOm5Ma`eoC z1D)8rVabJ6zhRYcwi^5vve`v)hw18L*D+W8gxVbV8vnR7zrZ|-54q0o0A-U8)*(3U z%qN!BIr$saopC7LcvZTDzdxNGJuQfnd0~fvQzCaH1Lw?7?r?!|s_9wzd>S95c{slB zT24J3C+63oMEE2`hh^K)y7OAQm#DACoLi048>=%%AWuFs zy6RBO&D-l%{)7eH$AKtpWQeLi9Xk2b;2qW;JhiKl_8>$Ma`ftq5s;!~aCF!bo-)3wpSbK& zot7k{`Z(em0u+3d5TzMZwMVU->b6w_2UB$Z%JPWnw$Q7_;2c`)KFDgw?hV2W>Gqzw z=xbmnXj9>>Vt`;bGQZ>b1uMwt>U>?96{wFW9q0xOx?1AMtTVtpEnOsZ3cyGwdVF$X zWpq_#o0yf1$@QOd%&azvS<#ETT&=gq`f0^`cyC3Cx#AT(CHx$7?OM3dOyfA(yhDkT zJ1;pGve_*ia5z|2!yJPp2EM7`QgET-#Ep}0SDudpnv`CnzUS3vUGedXJ@btNt8m^r zbYA-P7^)L6C9Kd-!;}xT0o31z5-@>`#n`V~^d^it`S4ocJx;S#=R$O-8pz+jn~Y5l z)p^~k@nH@*7Luo=w)JrwyRr@H7qjv=7Ql2EeBckbRX-mX2~1v@jJ;SG@NEu6^HZeV zx5DT7933`~iuRZ$ephq_9RhWUe=Q5X%E}8PwmkQ5d|^~^JLiyFn-J_t!5Ihu6Q`f+ zz6IxsPXSDxVlj1Bpd>~`gS;^Z;XrE8AE|YxfpVzSVY`9%2dgJ{N0&{in%uqa>km*h z$3gS>6^?d!9LkH~a^MlJ4yv_`D>EUYB&KndF=5}l2>nx!Z7fSy1~=gga*pUJI0_0y z1EtG^uoWcm=Q=+MU{Foi<3mOH6N&|&x;(d{>K9mS!Dis( z>Xn>)Li*B0cY<3|#ulBcZr~Dz2!E)+`PGXLEr&7sM8v=mrFjSOxojlsL$U{6!}x;Y zq#eI-az4!bE`JJX0{S@ujmlBd9!dh`VjmRQjc*x1JGzqWg4JRaQ; zc&x2@-h0s%dmUHo&3(Mh-f@pd7vvj<{#=#MslI|k0Pxw54w$oFS@d-MXmv&fl6uBS zs%qS3bOh{WHyKGK;2H1QK&N>f8%{0T5strO5e~0!i=!%;ZU^&F1;(mz5m+@#Har%7 zX1oeNVPAZsus}2*ZgQLItRdB72Ug`>Q{`AuKizE2^yus?B>w1FMgiqzRGbsxcj^f# z@R_|};-fcXB~J~Hg}n0Xi_nTjd=(bGiEhjQG8lt$WpD-1p%_E5Kq2H1)J9>$j->;U zK6(yEv(@cY1FX&%V2@>@yFQ+Vk7{hMx2X)d6Bk_HWR}BA?E0+E9t##SbOIkE3{FHe zs|x9LgqIoq{80F1qc$DGGKrZ^a}&@Gn|gyfE*teK`vtn+T?`lVM(c*5GjP|iGk=Fo zd8t4zsX*u5Junn#hzeA2Y==$xA=Hceu<=3du#MmH3$|KsQE^Vc`+OsgY}mQOrrsfJ z^CJ)4}ZS6Zg2S!th_KiZJV+Qk?HfebM{o7kD#Az4F?E9!rHm@A+Yz`tJ|DoW~kV2 z{%AVyuH>aUoA%?|is{&c0tNU^POS>;56?kV^~dtppf2Lum=!jlFoxm^-ed|5>?>?m z3ex!r%&9>)9S4KwB)l?jGMjHRvV;Cq{c-dsrUHlHY^^#}-(h9oT*Arda}%NP+_LhC zb2(j{mI{5mp)bVNPHe_+Wgfw_?4^NR^s1d0^+%6XZNBoruz&KzeQ6#;Em&P7|G8pfGWNAva{(D3%?MSGUzeL_bs z`UGvm*nQw@p6iVIpnksASo6kQ)d@bzk^_l##QjQM_7m&K!2EE94(vfRG!K_?_r8SR z{8y@+mmLrXzJX5&Kc-Gub}$S35B~uy4fCqvm$|m=&|R`O}|( zJ>QB9++qtZe{=g2^Z{=-dao+D4_58L-U+`|{Sk9z8-%Fh9?IKfrUq1~hPi6qbLy10 zdT6cROmMt6cUTo`E;dyyevZF?j2=%v%>49o^$zdkxd54$1l%+Zk z{e{yaxx-$Kx#Aa;6_tHebr?GPJV?fZd#V@jt8(nz{U!7a@Z72T?A6w=HG5O-joN4S z+|J$Kaa``bH+O%lLVkA?x`w=mx%(cDx%^#D{fd|HzdHTlK0CVX;?G0B&H<}_+x;cS z-Cf7YK8&iOBD?Eg&kgkD+O!2ne_#;$s0xQv>;W4%8o8r@M}LBzR8b2L8^XgF{=URj+CZO7L7C!q7jVX!`Y0D517W6xYnVEa%9bzbaq z2d+hMJi$=py!1WY_#;XCfRyzgC+vt>#v;c)hq?jn`r@t;KJ>PbVGrsH`O+us0QnU& z!?@48954iNaQE2>yJD`q65c!vVHcae2U06EHnyEXy~MqgxVSFns#OSK4X*ux`Dm~G zp@Fr(I(V4J7FeglRUg6&U3^e=)P5dZb!HbGG6okK_B}PYV5YGXoda6on}gG4(syDA zFGUhSm=R3AO!{!ppbrNMxsoW0?>wZQkau`)PmDh%6$g0sH^*0~X;IbsXRD4_BPm7*ES(%`J8r=+{p-L@7{t~l7_VA{Z>vT4RMYYH`o+*48zY7B%NQv* z-&v7I7}~;KdtX9&-Q3Pq!JSo$-@~&52#WJj741U#f&X<1{~;*c!cF{C`X?s-*PVxc z07JMK)N?=MzfpRoS)VYX0uc@~5i=;)eue*^F#hjT_>UJygNK1EihRXfeix^%h$0Zq z!2dTD{_i*O{}TiMF|07i&_@T@>J+)6I~X^?voXGd798l(OnVF?!<{t2O1ceVe;g_c8i1E_#0Iq6Z;HgE=8J*%!k!US_U#3{Q+GaoXgra~a5>Vt-z)#HyX`vI!_hTt#O`VyxaE2Zr8%eMDMw7T3W zypVitJ6-?6xTSC0mqxU3+~q%fl{)s}Qzy{cr&7>3V~FfYaF+r;2NVFt+MjzNjm|lo zirZwOR{?xE9YkA_de5%NAlf$;FJ7c)r%$4bXH6hFltfFB-j;O}`XA{qY4ZB(Ib0?g|<-a9~2e_(A;!4!6e-8#y>(Wc*-zysLP` z2vsDg9Z&AJbci=!NW!j9Ws3Q&=CX4@ACWc&rQWH7nN4H z$>Xf>x&uzrC3jJUi<}ijF1~Y;&$SRiyrtwW^?JzdDFk?&_!mGhx5pp!l8TN{J}*)! z_q*Zk_q!@wbKO)D^r(AJutd2W+#TQ$_z!=+cNdZ?;4E?zA|L_eXL#d{hhKAAgxt!} zn)uJzaRiP_?uxlikGt4j=`3~GD}v>PE}uQNmpV_RPFoN49-ZW@?7t?)0H{-hjO*=tGqPC|f8k zN>0s4%AQ6jl*?UOVV~_QJqUy)M71gsK}FKGfrl zK6-BCOoOQ^nn4CpLKs843Sbu-@r;yR-Epr#5RL2Eq z;)_lK0-Bf*YBal171aabBKcue<3(927DV8&pHd=d3^i{VX&B?iRWN^IWb9 zd%PMZ7|)>+aXeLCBN+oxfwmK}GxM@I;g(T%V$u{w@yzUTAloWDIZI1@u2Rr%yVdUD zF=$Z%9>Ku0CK)tSB9(Bs2wd0DD^=Ylh#hWV#!v&B75(wM0#tz^>Gc#7hByyZpeE=a zP^j1*E;G8sqG$%*lC!+fT^jTT{T3o~(^IUUvC+Vq@Pm1WBq9+FJ<8}CY7d3S5rsIe z!R)d9`}%wLp?N-UMX5!axwyX4U^!@*!da_zt-$_Z;hdn$=f*&<452W$Ldrx($^|Gq zhMW&`XTZ;t9CbkZ{c}*OF|6EBc9f0$?(#|x<`nO2R|SSyXb@U2e5#JtL>qc*j`zU@ zrLI7MqF%lGU<7$Q=!1D~pm<=O*A9AL&ScSDQRFSJbOzi^hs~MtsDl{-~vdzrhq81p0g62k$=pP8*F(5TqS#AL(kD@VCP zgV=~^?;Y#!!-4zRfh&~D}f^=J}-v8IVamaZhwI1Xutp*=1qQ|e$v071NVpu8RPkYWuGIg43@ShO)ZT1|^)GCaUI zOn-xyLITAuu3I6~vQ$h691&gYa|MFF3V%c>&O8$%lxd!si@nI@@ff+Jl({kYsrLry z!?X*I#LrQz(5RNrU0Q~Todct2DaOozIS8E{P)*3_Z>Abqopj7kZs0GENCy)MP&0WeL35p;&E<#$ zHa3h;B|ux1xgS`}9Tg6vkQ{SHC=v(ZJ}_q+kn^H4rtn~>xaWE7psL6Qbl>kZW;=6k zEqD4c(yf`6lPoY_1qwX{Ow1VHW6$m%KeQB!1v_xNU-_)qfg|z>1cS@P?c?zlT8P0+ zEC{^EUgGuv&n%+EsD%;16LzV~7edB}rii402+EyfP-qNpl(Cp;RKPVKgxcgOL4iF+ z^ZUUvF+Zxtt>q2wE9fy^F}tOb1eJFCih>yGVD!L>xGP-6G%htKH#GwcXNb;YD_7aVDypNyiWGOueQHHrZtMI4w(X7o2Egi0)R0(OIO zt^g}{d{DK7MbD~nsyJ};>_XM%YN*5(Glf!r7@5FY?Iw~9y2?F8M4@JEML)L6+qSb z%yg6j za+$QWkrKU=l*zkTW?AYf2+t#B$1_*nXaeEez!~pu!=V6U2bv zCA+y;W?~XXeQP~}sHqt_j_lkxdtTPKq+CawYRGXAQ{*}#sH8Q~VqRp*gJPgb6#_ZN zMf9?{%8f|fNR?;Of0t%PW^O3m@ajt~D@;KOiu~UsnqmknoW+=~BFBT-chtxqm^?Yp z(X3atW4t5Vk&)uav3gzc?G@gNek?cRDL1_OZ=5RENrf@dMMZ2BUU@f;6d9H?QA{=@ z2UbR8HbRfsc|EWi!_dsNW9G1rf|REa{7Y{<#KkK%deI_#uQ+=zJKWgG{68WDv)NN8 zqGn36gxI|ldFo|P${1%zB}O3a~@oirgmiIZVow!qI*R!X)5Xl;@_)mZpfz;jrS-uxePjwyYO#Ev+{ zt=f~*GL!oxHlKvgJI`I*qqlOJPoi=1Eu~{j+b1rJ5r)&Va_W<4j9Y%rw4>E}sixx~ zz3fwx(()WRz2oET5CnOdg~f`hPoKtZF(2zWObT&K(Xg^hq@*;K9h&ow(Gx~;b~_M1 zDIJZNiLN#qFR_{6MlpLe32s)fxd^K9dNoboXxT&>mz|kqmZxzA6Pxof(rVVrELXEt zRIGPJpiv|;h zr{>lW)iYUsCX(@B6`^S0b%#Y!%{3eIhapaemy2MQA$L%c4i?sfp|oOvN{3|qSgjh% zZ7c_@5->9mXSd3Q!eHW16j+Tj5Cm(bX$hTJ@Xj0#W}2{{!3*GZ4)p`yVa{j;MO=D= z_<~6+P^4H1SfCLqnvLQXU`gmA*Zd++(2tcL5`=ijL$k1g!urhcwH}y;7kIGx2&g4Z z!CYriFj$WH2&ytAq=0%Ud~bQH#XgG;AgSYZzq&0zuRu5gF$Ho2!)Tx9gX)N7Y+(;D zYei)cK0@kAInEMSU;(&GM)C+MEcdM#d?pn`s=1YC1Mlc@0qJb)nvFdj{rTLI)~<_m~G$XihmtVGAV z_|8~!Q??@q%Sy1}8JYH^lw4jDFn_>Ih`Jf)7@vey17Xpbk~GeNU>Oc9L;UDAUMuo? z968K}st#4w@rlwHP6TGLVGFj3GSX#a=~-zqVu~5VCk!+PMHLZgi(& zky)4vrrUh4#3d|1;iRxQh0wsz0$D!auhp6VYifm}qAs#f=ExcBm>-Gh(I5P7mD>10Ftd24}(3CkgPJ&bLFM!mp+(-aR z$MKoj4oVsi?x{(xXdNqcm9J}_B9@KQ1s|8|NE&C)93L52HI536k%ZN(lBE?>zkYTM z>vFGoH*yjT1u&%(8_B zipm)T*TtG}YTSb%G(hE@9;{OkqS30(OpHa1hI-l@b}BHcQGlidO=YSKKAGFagAv&~ zw*R1kO5?%IGsX6gA681tHx>3#%9xR{mG~nNN2kx{Tz~+B=3D)5NVvf67=o;Rc3#7W zmOu)zm0*aiDy;VQTftS6`_SQ_$7phohvkn}%0Q`5Kn%STq-$cCl>m?{Bq9G-5g~oS ztovU_Q=DJpNzoD>G?^)lg?Xra{eXmxa%0M=M8j6y%@Um;pvC`~$}WYP=5+mUSs!!F z36w}@j>?)%pk_&92?AV8L8QhI7zJ2tKnzG(EWgA9tGG8!rBA7Wmx}QXs{hKm^3aQX~$Uz~Dno zizWt4NlMAfOFx0WBq=vHDP^L)7Z&|F7`Mz|6%-dHTFdFsoBk2p(WuPv;|-}980nO> zyqwf2jzp`Cdo^Op!|{~}B0~5OKco+qLyGYyr-b_CGu)wF6-4wR;HCme&3;k7ZG!2;8OSOXv&{Cf?BPIH;dc~9ks*L`j z+=;!60*8Y&S17J$GidSuaYOyD>?mS_5m;z&@b`ioyIaQHv1r^@4f?qKSnO zLMNKvi(&^hnHd|+-)g!uNtK#6xq#}WH8UFXw`uefVR&H83n~^SMsuEL)`FLIU{eVU zIWG{EX0}oAkdYSGmU$^FGsWs4dyfZPgdtmKtTw?)*A%@%bbwrWVHMeAMn^%l9PTUi z5N<`a-o`t#TU3stdV=$aL<%EuQ<4|zr8p#uzkzWUEedgib9(hr3(triwM4k1cvVj! zZpUJ_SY{A1@UvDu-1secL~_l|MTKml$$G~`k`NbXEb-80O&Dzx?OA83f`B0_Ky#QJ zre96t=pVCxL&-sAQvyYdvh~0^CM7dtd>R(LrWOf|QfOsiH%O@2p(ub!!r7vy18%K`UiKAI~k=?wt&p}DvKT1bHY*rYV=BNem}%u5D=KAM&@*aQ4+aI zKx3L_Qg(ANf}Jk*d7%h~9f6?_QWV=jOrso%@IpP%#NX^sCC)NS44D^OTZFna0`;s+ zSiTh@*ai1vta?l=!Wa#On3C$4%IuLDfRUERaHC@Q`&-2@O(@Kgv`}Usg;6Jq!14g) zr7@3fOm7yQY@EsDP$n$83#Y(!Rg!e#qFRImc_<^YxRYRQa#A0Pvpfu;`|&+*(3My} z)Hi0aTOulqo-D>|j;u7|#?XCD+C{Mmaai$yfLMkxief-)j)@g~ECwt_wi23|*bB~> z8{OZy0tz*hnOLKqP-HUHxC#x9BNa#-@64_SY8t3(n8q>Z%hgwtLUR~ot@=znh$K#y zmr1hCs+(+PgwD(m#F#c0hQ2^)&>$a%hGep(B#ZSY9^Xqy6f6-Na4-U7D2!1&k~OvF z@>?@&%dErjv-0TUNJH!Vu{KB3HJx`j0kwW>WDq3t=(qOJPXtOCARPVv6{5!)}zhR#P3zhQ=NB8gF z|NH@kqxlw0%sdvd1L@r`)rCN3J|qw@=??~q2sY5Oi!tGou|mg+k;-9qRz?e8t3WWi z_px0^5OQQc6uj7S5<756aX;{G#=j$<`bPtbU2_KnAz~642HNBB7S4TiXlLQT*R`rgbNnUS%_^ljoQ~($%J1SQ%$(zxdqCx0|V{N>kC%> zu)trjb)kYN!4F$XfNg@&-)wv8fK0OBe3O-NSpPLq+7D>haDc*viw1%b< zkxPm4FtQbgwwM_9jb+3~csrQ)8>|h03vcwvR z(K>QaV`}n`IhbWKGgWOFilfMbHPkJN_b*Ci#xpzYgvDwp3$s|p8i@_au)ibR)aY+VQVcI6W*WeBa6&Y z85kRPiL%`=*jZNjVWX)B=Cqa;-ZDI}RwK&xzW~};B~Hf->JPx=fVGu|>J&U<0G2I= zDhj!~u$dcsr7b}zir_2`+smV%C_2X==iE{%MPVzML59gO%?e_gtpFd-^E)_eu=x<% zl&BkXqi?}+58(K*q1^K3h-9u!$e!!S&m}00(}@w7fXzv1l$Sex1pn)2{Er`oEpPl7 zKdeyQSTC$+c(6bIqd}pcQdBjnCU#Q_`%+sQoM2* zCM(>MrliY{^_F1*RA3mbk{2pZwGm~2DT4R_cO%0Ve11fOCWk5f7}%27^=w{ihe z;oYIxSTCkP!<+-tqw&^e;iTf?)besl$3CHC>}3letkaWJqV_p2pe%6MK~#ZvJg4wB zMc7zP3Ie@SOYoQB#Re4TY*#jxkiKG=P?;)lN`h<`!P$;0H>`-}q>EF$-q~)H%M~#1 zreHH?$pZ5s6Who*6!FbeX1mp$qY}Fru^-2yp0fO|V6m4{c)Jf0a?MVIsT(`S(*)Bo zUJ?p9UXA}$f1a@g1aBOM(GFTd?YE)~*F3ZihIFbL$3{Cq+K{5Gir{qtM7(guF|W-X zz-^g^floQSuE=)H1CvWxz)4Cio^K?=cjJ^L2j7{=7te<%O$B{-QreD>O15=g^-2jecAH#|^I5Zey1$U>K??R^Vq9F9o5)RFJAhm0L=sFXvm7q`&{Pqq1wh^%2Ae9lm-HoWGSD=K`Lwn;X5OudS}SA z3?xKPEl8QoErgB*N||@6D~*@A*d~PrGWN$HGwhNXKU*~~3Os&xYRQGrBT>4mJRMt2 zQcJSDkkyxDxJoIhv@|E+s$_RO@908?MZPJ9VIa1Z!^)3T@zPk@FeTYl3JazwMlET| zIOOW{E}$ulPc&sb&ZIzgQ!olZooGr1Z^N6Ct@d8glsv<*E(K+td8@F^zv^kuT3-~R`& z8*vyS<38WyIns~sTk?Muev#$iaQu$b=X=YIOoROytUNf(XXZ1zk@2j2t@qY*WcjT; zBHvkQTke-;`rn%_hqc~WVffv5(**qn=zO7|B!C~V9&qw>18U(ia5#oId~RSIAPX?U zbostHu$%8YMEFniBc5B(W}F0OLH9~QH6{#)J09@231fVM@&J7ihu?ABm#-AG3-BFa zz*PtjSOQoJ*o=2>xEi3V`7Bom+J^fN08d>f=qG$u{-EjhxZZe9FkSYuAS>eCR}uH@ zKLT(!;L{rgd2T}6nl7y}p7|ZasS(fZ&HF64FGRfOa0ECRkPOHKSn=8A=g*%IZLNp}FInh<%_I|q?BV4Mkjp9Po$u;Sg0`>g;uuX*5b zT};2}a4$3OAAoD6(bRnleqRFEJqj2&-w1ml+^Yfq0qg>N12}nsMs|Qz&S!D|3gC0V z&w!H_YSlRD=epd51t@Kmz$Ub1F&oP zbA0xD0q=GJ4glyfjXD7=zYB1GH{dP6F+k7DHJS+U0hR%-0XzWUd^!KExc?Gx4A5nn zMhSq6Ojrc>H}f68Uw4H@r!Uv&rz{HqOc!MzT^{lb0pOvL?!YK>k4oO_K%j{;V$)aW1}`C8N!V70g9a{F>S zTJ^sjVSWeLt~1_qzn_Nt8v)&~H~Mh^+zBSkf_p9CS->}db~l9a!orWHu7%5^5q1vX zH-LVlMr{Fn-yJT)P=FOS9rx1!v-ll=(|n5WZ`0@_xCa4$1FBbP^d#VOK(CuH767XO zUjw*aKf(PAaQe*}jR9EcTKSaX-8{g}fLg$Iz!!jTZVi`3N1p8f=K!pDlg#^4xEB2U zoJKDL-UfUG_y+LM^Pm?dtcJ@l+@(`xkxr>_2Ld)0>$DQ^Hh|xC0Tp_fWH9U%5<6r2mtckI{5(Ac>mlio!$cc4R~O-P6IqTEe1Rc*k7X4UY|~9EYj&v zP^Z)9>Qn*vYJpBi0Us~aX)F8~RxH+O!7_vgd~lUc!>e@KaE(r1uhgmGT9olRo#gd8 zy>G%THzMpRo%-FRQ)v^}bBj(xZZ+V6+jP=y*Xb8P-#bvYy9~JGZk=wpN2kY3IC8H} z$L`Z zopK&RKcO8qpk0@($4U7c3@Cwn-A0|(1AYONJ&JY(w0=sb$$-OvicLC+%{om4_yM~C zuIF^R8}J4|K94Xj==25Pn{7Hdx1(fBGMsPUsS$ z%X}4jKJJDC2s-X{=!HtavJ-KnTiY&=SDg2T>59@S@dh-uV^PX>>%p=gv0E=J(E`{2ffX!5l8ecSK$yNf>L*R%17 zj`;w-?tuFw;61>%0RCVR-D0CyKs;b9fG;Q9h35S&aPPUoM&EgC)OnVT*5i2#;9Ee{ ztv2cgNCaF2X!a6P(``|$qFbMIa+_05jcI#YyY?MU@7Sqxm#*EqpK<0{_OpBRJSXdtdGS53KvogAYCY$odT%AARicC!T!j=}pf(yZO22UwCoL)@|Egdij+d zufF#B8*je#_B%Uwy}SFp_dob>&)$zd{^ZloKHvAnmtXDw`kQa-4t!UC@cSQrJoMAg zza0Mc$kE?^|KrbNfBoH1e3AhA`$>-?DkXt08!sds-zA$v`bk8SNk5rr9_cYeMMSNM zywSjU89WL9314UxZACu*lU_nX61hldXOaW|Po)V+?NoBB^ec$a{INv%3P@#JI+a8& zNqmAchvX?lzLPY3+pGC2+}=saDcE8cel{AG`pq9m`2#VR_yZNi5RchUbTyO5KlDGU z)d)YVXLh*_==If!3_HQylxY^ z%$FyrOEz10AN{sDW(a zG|@@eMGw(i^b-TbFp((6it!>%Ocr?}U(6JR!YyVCp9qM#;!?3pREg`vE#eOR9u|*_ zXT@f*O}rvr7jKJq#rxtzu~&R9z7qA~M{!sj6AeO_t!0dCFFRwDMqaI2+4LygrbV^V zqM};0(xPRQP1m)P^r(}gWGkDkbyVxttxm$D)LQHCi^8AH)(Rn|t|N}#DymIXYaNkV z!3T-KyOq}J6e;znsA$`1ZCXV~BP1?~*wHpyv}UtK>8&G&1Gp3OG7ATqfD0q4(RDVR zj_32V0sQt%^a>w{FGll0#n!AhioMPn-nIu1J-$vJcL6%LcqV9D4k!{;bc=OlQqQr< zlmAV0`NmT}Lciijj`d z0ll&l&!-LvG=#Dp%52)fDsI^QV9yZFS9DA>HbACM$iOzp366XyLt#?QTN-hmOj2@^ zp)ce)eLUL~f-X9;v-uGgkLvuO?4*nwW0SJ6nHBpe`FJI3SCQJLZ`s;8)agRT4#?1f zEHM1Wc4y?8i%m(e=>-3hnT=zQ3`6JaX@(J25+B&f2Yd1{H|o5f3>>!VOu>0Th-0uPDS6pA^dYx^Q!z})Qq$8N<5Ka+$L{i3I_d;2G($#G z+O!KD#-Sw1nc2C9Uenx7z~>#YwWv~H^646C1F4}(hBDmPpxwxX97V}RQS#C=jB|=C zd-s&=%$yvnSh=a`*!!K7Zkl!*t&QRt=fJUf_4uUJG*%|_dBJSiH7#{~Y7SRi88Vm~ z$JIH)e6+B2781^?MssFnZzTN=_rbrzGeFa7UID&+Bj7Ng?QJ&d2bc&50GPT-O@p5#oo2w*1Y}~$l~fEDD`8cfYg*w0gS`Y@iBAO| zh5IAE%f?sPBZ96w2k-FyPPpAy8sU|v`7g8@w7kMEn%;4Ye_T)UdeZ{q&iF5pz7YHc zWg<7qeiPtnz{h}7*4QW+;04?Z*b9id6YD9!Jiv)A?DV2S@)6FTrv+rke=j(m0Nz%B z|FL6L;3N-zu&TwA;m2+Xp8R+_2cdCr2g13KO=JIZyu(==D&>~SuqN6@*8`>kzQEU8 zeg=T0qE-OD`i_}Su>~Z;>jGn)kanHT>^(5*W}9(?laxX|^FK`&V0P4HGj5_N%6K+X zC%RbA(&KDd`u+G_NEaf_?;H5u_;nUniCr=!^lZKVx9(pji1|*#SxEgV@rm|{_95M9 z8%|frQSuk@A5kDq7jMvI)J^;6p9^6&XuspPxxx71a}f1ukffm1)x?;Y_+g#U;1 zqV}Ne*#`cl*;46I@hEuGp`sRiad&W?JtM-NDAktzeife*|F+6Av>R>wGjgj2FZ~d; zp%HR~+(i$83-*eO!6}~$4v>E{M1o{@5?vs(s1$81Y%-|NrXj9+Km^P45`xyLrlwo-+>M?LYIRkk7O zS7FPD%88~w!StCIDOrAicPcqt{>IE*T2z6+eYBm$^03$H2!CZ`P50)QKj6d zJx5jAWtv+n(Gs+ue>2w{YgDhuhGxei}jiMVBM$t_3nDLex+Wnch%q3F3@xIB>fl|{a3XZy|ezgwoH3L zdtY0x?bP1ZUeTV{Zqu&NlC%P?NSmOI(>|BOw4U0z+BW&H+$}$nH^SW`ACvdXo8)!! z0eQ77lQU(ad`~PFQ^mRBS<c92w zf6q-d)8$<6mcPr+$K`XcR;%?wo$cCL+I5<)ouPHqVzjR4j{@ytZKhVJl_E|TZIqU& zov&qRd0M(QMw_UO)^3wy(RTk-)|=!9p}KO|WGzL@)+TFNEyjFMTL(X1i~c9daVhfp zRq}6PDA%X7-{p_;tukinAxa|<4 zowiA~!`pWFInDANLFgAieg2Yv$p^Ft;P%!&LhLW3@%sz+{N^M0-ypBmu2CUxP*413 zwzda2wnx4uy_#3!r_Jh#-<_n{Gz&QW7qm{=$=c~!dz9)0?M>k0)$&sFw^`e)J*7P_ zpO+6cs%gM1XX9F1PnXC?mH+w^hO$Dldt;-J)!NmKo+Cq^=)MDDwE+}28~a-skM{$$ zA=&`#cGPACV4hqgpT&rMPJ2e%q&=-Yrft+7(H_vD&DLVhMcm7mDH@^Mg=N97Q0qud}z zg7Wp#rh)qXBoE1B@=qD9wbIVh`f9DUKjdNgi_|ns?;2^p$sgpY+G$!_?G$a2HeLH$ z=4)%UyRm zbNf)GXjE)h$?Pq@0e%}{eBHwiF1_AWpE)Y<6i67Ly z=Hg-Hxb1dl*KT*;6D+T7lv3Nsc-|Rve4S0n^~{3GE;BrVngT=KI%R77pz}SWYiAbB zb3XXcpswBKmAU6ON~uwq3eD=&bnh$SbGYcMmq)q%F_pGknp6t}#J?k_7zAw6W ziy!2lSukOucj+8oaP5k?rTx2hYm`!9WJ+ze)pW}5)GFFNYi2>Gnl8cawcdN@_#mwR z2&IZ2v^37!e~xechSO&j)OYNZ(B)90l!B2d)pV)p^yQxRV`^$@?!KocrM9NFlefzp zUu`YdFMbgIuix-8nrr=rwQm-qxf-QZ8JSYY54Uyt#Cc}T)hRvB`K0FUcRH3m`BYa= zt$*NigBK&E^&3XkU5aGfv(~b*p;OyNDb+-#RI{zNrgO)dn%OmI+5DNcozAZvT~k|o za_vVw*KgpIP_!eQ`EZE*8X9XD?-MP8jw zoD%x1(^Xxn)^B+Go!Z)7NT;U8zkb6IP6=MMm)6#9?sP_%&8ns+NNH}!_;x;t-)~#sPx$C|gU?%J)UM#%PfsEw`d z+N}$cQ+0_QT2u2#%?Lcy41Kb!V@+~x?TFf~Hqov2##O=O+L~K?uHK4)TeEid5~#3h zYcPsyYSL;u;vsErA)<-e+V&mxcC2Z;t!uZrenW*dKeo1}!`4fUhmU|YsLY6(nk60E zu1)Gxi!6ZCM*c^+5HYnioN7%+4XJLcDZB=akJ`5Hpm)6Q2^9AC+S)x)HS0Hg8oPeO zv13N6wNKRCY(tz8N>^8N^J%ro9Ovd!YHq%zruMA6&aSDwWgC*M?c1f+Z zz;6G>O;e_Be7y9rjU8vsSo%%j;~O__`lj8+JF3^*(QnNiSFKs|!yV&(T=V?%A9vib zW=lIHw`I$g9nXKf=9k{TtXXs9+}mDy<^BT)_CNaQu1BAG^!`Whf9&TSKkwSLPxq0oHrZwP*a)o&1ePj2w}rLsbn%L17$CrH+hG#4%$V+1A80CLE2ay)*+Ah);j z*waGX5h7P&Gmzj?*;@#cD!2@@xk>nQ$8i06kDj}GDWpmrmmuK?|dhorY>lW`{`*h z)NGSntjkhpf_NCY=c4w{ii5c0G7Sg zoA37#Vzt;QYDE@S;#uH>Zlu)^y1a$|xe9C6i2KBoTCN139PQ*9kuN9F8r=6*W$G#O zWdV(&e3?(ZRE%BXOswwXX{y4~U83c7TGs;3ju0zFwWy=hWRhGaPFHj6Kl{@e~ELTUkr*F=u0n3^DxFukz9vy zvs$bX-I4D@Y9y?|8}7eU6QB4#OZD6jw2lUe`_=Pn)Q;X0H43|0Zl{zM+bIs3(y1~A z`p`VF2PK-N)k3>@RE)v>t8_gj1Gm3|jx$%bL+O4bkJvAkh%?Q0%9jp00_>V1#-N>? zw1ZxuU65owOZUKFVVFGS1nsoCMSN-{rlRJn#p(0{mB1YjcpWt_rpr+dj~pahqbw)m zEw|8Mz{LW#Zn99(f_ym(_hl&IdYUGK(l66NIeO4!w3mnCW$FK@OsmB&$nyajE^h{| z{3d=E=Zk)*Grp4|PC;I)MH}>OSM*_~C=s8d1XofbBsK;uSR*$%2Y~MP#JtY@+9QwK^Yjc9zN=Aq1&A?I!=*MG!d zNKuz!#PF{R!dysx@sen14n9$tTB$O%LYd0NPD&DQ)0t>@7cn2e?Nk`*yEA1i$~29h z!~dzOOrODjw`e67BP7p(XG$-|%*TLjDAN?$Dz=DkTWF`VS{QfdVMD@dEcRE6GlVYg z6y>s&aH`Q``K*CW#2V%E5Vb-HJScA-$}|zBxJ4|YYcLjO$lJt?@XMDIs3$BXeiUoz z5}GWBBD6=c&nFZ^?}#^Xcej`$?;`fOP8^~;X$gG{sb(MQ0Ni*7`jGk5m+la^BV;R) zE!ihdo+Y~=x06ku&aflMM*Mu4OFIzGBe|>}K|0z^-hp1?TFk+GW6YPCGDDt9x6>^M z*+p&_N9j3pCN+GfqW)gg|8)4TMlDv0KSc%XjK)52<^i7}=<-9(gIbMWx(JZ;Q7?Axb+CmM#6o;}j?UrV{xwQW+{= zG4pZBV!2tY6;D7S?~%9AUE){z1$U3p6#27ibB{a>Qw|SiW2?=%v`k^or`zZeu}jUw zy~S$ShTH&KoHgPKv_LO$HKfrVc^0ieDKpUm8AzjtxCVZaZSIk=@NZ3dG7CQ`uZrm+ zNEe!=!x8q-kG&`==_wj5I?_hbo;HZ}Vhr>k7t5{GN94%!m5ie}epqwN7ioW7qnuGt>i$7o;bU>UUPnKVT(tY2|8sS=T z9dQ48alLi}-5_qzZWODuo9Sk8v%CqI!M|0Kf47KR2(Gruwo2X_wOZUkcWAeZ+vzs_ zHhHIZr?^|Y2V7w-c!C=ByO-_-_xXVSK-4<1PW}gU>ppoOJ*+(}9+8jek3fD2SK_}- zJ?oF){bTeP@Z$-{4WEKM_i0EFpBDImmwXaD)F!zJWA!fijP{ItMm#H@ZKbq0Cq0KT zw2?My&(rhr1+>EpVwJu{ZlP7ttMpaCxV74Lu^nS=TkDrVCtspB<(u@f_Og6ge@nh4 z-U7ey3M8EG(A%x}w}#fpt#YT>DR*i+^>^jF;3jryyX0Yv7&{x@Z&`aSV6eGJ{p`(lIGpsnZsa5vc2 zqo2+Ds13FaI-Vd+kNkZmK9dZe%gg2D**RWQ5T-$8htbIe@NNyXmKcl#$-vX13--D2%9}somr&rm& zJNcl%PadT2f#u(8KhO`_kMyIg*Xrd@;wSBA`Wdp@L#+-)AF|;mkbl&Rf`3RqYL#}F zAj1{EV1pVkhaqZJ)UVyWx0)$VX3S%jZaU*70v$)EjoK*F(5=VKJXwB{B(7Rw9tjYgoKU! z+Bi-JKPh0~#>oofB{&wOVurvgrCKKX*k_|R?}AMMTn&o*_i%sS5*vL4_jAC0fOU-p zJ)DVTx?QOfnZ99 zbq`GJ07wFcZn#>(Jh1mkHv6fzf$jAXoou4JEz))mpJc=dW&E``9C?Jjwb(n&hX=ST zDqOxIpBHDb_dp^&QNFfV2ljy53V?1fo9H{#m2ZDE-CyBygZ&Mc^J%r#c#eU~&z<1% zb*Aa6hZFp3g;-}LZ1K9g*KD4MQo z+H@NrN`t;ZfSwcHA`iH80Guwr=h~v?dROHy&6>9o_b!G_3d$b`7zjAXcJ3`)X6tE{ zq7~v}PbF5M#=X&^NLtx_Na(|K7_3OWb(^;M)=Ei<69?`u;EmZq7xzdD=_eq6JNzzy zI~MLtxJ%)B;Bv<-V;3)K*u{&r%56)}vTG;W&2BXI;joK=^b@;df%SL8MS#FiolC}-{!iCUg&4S)^Ahbkw=zxwuNAnf5s_U^rzeC;z-As{mLQ<6}lfh4& zD%;3t`I~qZwz7WFv*9B#N7!Vwm_hxpj-Lxo?SJdHQ>ApO{-ySz_L|bX&4(W8cW8xO zat3DGIyqX?v>dr!?1!dk4K!wjGDU`Szg@lwy;(bLzxK8Mx&FR>K>Gput+(~(^iBHX z`bPahy;i?dU!&il-=?q7=jyX`w_c{Z^gMl%?$C$pz4Z2aJN<9%2c+&o@hwW_GAM~;PrJs*@i8hBV!8RCSI@*T9`hjeJ=)dcUwyw5r@L_9*QTV@KPr&<5 zwl=nQw$p5FZ6_lgX*;O5hE;GcTdeIp{au~YwcF0Loq?ELZO3$*O{mn~(s$@T>%Zy0 z>WB3M`XRjzv*~O4EBed&7X3y27yU>5Vf}f1v;H4_oqo4|o&JdajQ*(p80NbN^xO5m zdLP}cFVvlSB?y1x>jL0o7GNsiLcm3UivdM|5|;djNU?;sApI`%$hDaF+rW0FnV|fIPr-Kp|ijpd7FTX*>pa z2=EM`67S{$76X<6Rsu#My<6el4R{dnC}1<-WxU@8_cg#Sz=wdZ06zl$1VqEX9iTg) zH(&^0G$0j_3zz{Y1b6^Jz#_oqfC|70!1aJNfZG7~0UiQ833v|h65uVsZotQYuK))C zKLM7YZ-0lY!EFsV70?mT1JEBZ5-=W+4VVdV0X%@YfJFe{Hn0|ANQHRJ*T6gu`1enE z3-qRhu9(AnU<{oN90ELKM_=OIw`TxvI-^ZGVZPf*lns~xh`c!dg*}^(-{TzEZzA2D zfD^?(9eFgDe@EnX1|SO1QhY2!8t&h4v5|}NpCUR1Zt=xzH%pLT8GQN^oebKyzm>5cD)TgK%77oD zDSqzOKMnqlpSd02jXgNvTag~$uLU#O4(__Ei8p0H0zlLez}J}o&g<`n1}`(MD5{s6 z;SgLMTSEST>*vh=2iFsSglX@UC`%2XxoZo`|8PXuX2OhZ=3VF&x1|NB$EC%1<~?Np zf4R6Sc|!z!laKRBU^Cta_XiIV{Q~&6*YtfF#Q~oASWpUV&cDF@&+7y|xDMx8WCDL) z)aZ(Vf|iYt^b6b}x#7Nx%;RdrYwmh$v!KI61$~S1o%#WA8IbvmpiAK%0r;^~^-(}` z*MDG#yb&7NpjzU3d8zU9y9NBUdoNBD=Ltsh~P8Rt5g_2>4nu5%;&pNVK6%fH9@;rLrje=Q<@ zbN-R(Up_n>e@8R<9~u_+f1{cFoAZxM|E0ASCJ^mvCjGGy{vS5uZ`G6CPfdS=dPVve z_m)5UZ>;6pD_MXnq9{CqNnsT*7Isg;5G{rktO9BgV?afV5D+YuO*AG#V#p5~NTFyEF(`;Z zg@~<bdS*eNu>uSOh^xp>03~8$nyoH*fCl6i*RJ>A>0fxo7Uo&b;^boe7!wF3m{L z_-r^(VE-2Fnx8+~b^ioEe9UfX_`e+cm)hTMZrEQJ*gIMq_F94cQ)0hXVBgi%sDCTk z)BFEbQomYYpG^Aytiaxu)L)AB^!gpx-)MjP{XCt{@8Nw7d#P@Z>zMJ@za*`*{JF`^ zwMn-Mccd*o>}YaJ!c}2z#kpz4t-_l0$8+Ja%9w?)9vc13Jd_?=2R}FD=gm6!xhFsG z{=tvE-*bJ{3d{vi6?dp04bOj;V%QyiaU;50=)-Xr1R`o7HtO5ad0U|2Z9ytD8hRs+7V8RuvMT89=Z{r7cJP6 zaGMHD>!I_4)|1iNB?kO018o?}r4P}FRYleY?GpA1`Y-=b2fYcl^AbS98jvWa({4p6JAvu@bZy)$@@UH6A2F;4p>95 zU^OZ#pk4ZXK^$=Wim{x_Vsc2a@mBS00pS@K?dI=X!rS;o`d^rj93tagj6BA_D$QIK zum19t@MaQTO}yG~c-Ir&f_MwGtuhOizNrG{f_BmMFT`7oc}4YkyQ?(c7v8LN{p{DK zaD6Hp0{*}Q!Fa4++!l|u3k$}3q5|WwPOvQA$4$m^E{n-U#f(E3m*!?S|3lAU>%7V{ ifuLy*{z66{@WQ%IETAodwVCIfd;e3vZ Date: Mon, 21 Mar 2011 05:52:29 +0100 Subject: [PATCH 145/192] Don't send a windlight profile to clients if windlight is not set for that region. This should restore normal day and night cycles for regions without WL settings. --- OpenSim/Region/CoreModules/LightShare/LightShareModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs index 00b0aa9137..2de8d7a29b 100644 --- a/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs +++ b/OpenSim/Region/CoreModules/LightShare/LightShareModule.cs @@ -148,7 +148,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare public void SendProfileToClient(ScenePresence presence) { IClientAPI client = presence.ControllingClient; - if (m_enableWindlight) + if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) { if (presence.IsChildAgent == false) { @@ -165,7 +165,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare public void SendProfileToClient(ScenePresence presence, RegionLightShareData wl) { IClientAPI client = presence.ControllingClient; - if (m_enableWindlight) + if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) { if (presence.IsChildAgent == false) { From d3a20a1e9257ecec417e219ebaf079370015f06d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 21:37:06 +0000 Subject: [PATCH 146/192] On initial region registration, if the user chooses the option to make the region part of an existing estate, then list the existing region names. --- OpenSim/Data/MSSQL/MSSQLEstateData.cs | 17 ++++++++ OpenSim/Data/MySQL/MySQLEstateData.cs | 40 +++++++++++++++++++ OpenSim/Data/SQLite/SQLiteEstateData.cs | 32 +++++++++++++++ OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs | 33 +++++++++++++++ OpenSim/Region/Application/OpenSimBase.cs | 13 +++++- .../Interfaces/IEstateDataService.cs | 14 +++++++ .../Framework/Interfaces/IEstateDataStore.cs | 14 +++++++ .../Simulation/EstateDataService.cs | 10 +++++ 8 files changed, 172 insertions(+), 1 deletion(-) diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index e9a0935048..92a8d80b9a 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs @@ -350,26 +350,43 @@ namespace OpenSim.Data.MSSQL public EstateSettings LoadEstateSettings(int estateID) { + // TODO: Implementation! return new EstateSettings(); } + + public List LoadEstateSettingsAll() + { + // TODO: Implementation! + return new List(); + } public List GetEstates(string search) { + // TODO: Implementation! + return new List(); + } + + public List GetEstatesAll() + { + // TODO: Implementation! return new List(); } public bool LinkRegion(UUID regionID, int estateID) { + // TODO: Implementation! return false; } public List GetRegions(int estateID) { + // TODO: Implementation! return new List(); } public bool DeleteEstate(int estateID) { + // TODO: Implementation! return false; } #endregion diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index de72a6a931..6d72e82e2b 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -413,6 +413,46 @@ namespace OpenSim.Data.MySQL return DoLoad(cmd, UUID.Zero, false); } } + + public List LoadEstateSettingsAll() + { + List allEstateSettings = new List(); + + List allEstateIds = GetEstatesAll(); + + foreach (int estateId in allEstateIds) + allEstateSettings.Add(LoadEstateSettings(estateId)); + + return allEstateSettings; + } + + public List GetEstatesAll() + { + List result = new List(); + + using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + { + dbcon.Open(); + + using (MySqlCommand cmd = dbcon.CreateCommand()) + { + cmd.CommandText = "select estateID from estate_settings"; + + using (IDataReader reader = cmd.ExecuteReader()) + { + while (reader.Read()) + { + result.Add(Convert.ToInt32(reader["EstateID"])); + } + reader.Close(); + } + } + + dbcon.Close(); + } + + return result; + } public List GetEstates(string search) { diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 63252aa3d3..6afc5401d8 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -357,6 +357,17 @@ namespace OpenSim.Data.SQLite return DoLoad(cmd, UUID.Zero, false); } + + public List LoadEstateSettingsAll() + { + List estateSettings = new List(); + + List estateIds = GetEstatesAll(); + foreach (int estateId in estateIds) + estateSettings.Add(LoadEstateSettings(estateId)); + + return estateSettings; + } public List GetEstates(string search) { @@ -379,6 +390,27 @@ namespace OpenSim.Data.SQLite return result; } + + public List GetEstatesAll() + { + List result = new List(); + + string sql = "select EstateID from estate_settings"; + + SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + + cmd.CommandText = sql; + + IDataReader r = cmd.ExecuteReader(); + + while (r.Read()) + { + result.Add(Convert.ToInt32(r["EstateID"])); + } + r.Close(); + + return result; + } public bool LinkRegion(UUID regionID, int estateID) { diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs index 547ea6b07d..ad28c000c6 100644 --- a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs @@ -100,6 +100,17 @@ namespace OpenSim.Data.SQLiteLegacy return DoLoad(cmd, regionID, create); } + + public List LoadEstateSettingsAll() + { + List estateSettings = new List(); + + List estateIds = GetEstatesAll(); + foreach (int estateId in estateIds) + estateSettings.Add(LoadEstateSettings(estateId)); + + return estateSettings; + } private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create) { @@ -369,6 +380,28 @@ namespace OpenSim.Data.SQLiteLegacy return result; } + + public List GetEstatesAll() + { + List result = new List(); + + string sql = "select EstateID from estate_settings"; + + SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + + cmd.CommandText = sql; + + IDataReader r = cmd.ExecuteReader(); + + while (r.Read()) + { + result.Add(Convert.ToInt32(r["EstateID"])); + } + r.Close(); + + return result; + } + public bool LinkRegion(UUID regionID, int estateID) { SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index e950613e6b..f804cb7f95 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -828,7 +828,18 @@ namespace OpenSim } else { - response = MainConsole.Instance.CmdPrompt("Estate name to join", "None"); + List estates = estateDataService.LoadEstateSettingsAll(); + + List estateNames = new List(); + foreach (EstateSettings estate in estates) + estateNames.Add(estate.EstateName); + + response + = MainConsole.Instance.CmdPrompt( + string.Format( + "Name of estate to join. Existing estate names are ({0})", string.Join(", ", estateNames.ToArray())), + "None"); + if (response == "None") continue; diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs index 95c9659bc1..12ed9e3fa7 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs @@ -36,8 +36,22 @@ namespace OpenSim.Region.Framework.Interfaces { EstateSettings LoadEstateSettings(UUID regionID, bool create); EstateSettings LoadEstateSettings(int estateID); + + ///

+ /// Load/Get all estate settings. + /// + /// An empty list if no estates were found. + List LoadEstateSettingsAll(); + void StoreEstateSettings(EstateSettings es); List GetEstates(string search); + + /// + /// Get the IDs of all estates. + /// + /// An empty list if no estates were found. + List GetEstatesAll(); + bool LinkRegion(UUID regionID, int estateID); List GetRegions(int estateID); bool DeleteEstate(int estateID); diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index 87c7a05f6d..d78ad78774 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs @@ -37,8 +37,22 @@ namespace OpenSim.Region.Framework.Interfaces EstateSettings LoadEstateSettings(UUID regionID, bool create); EstateSettings LoadEstateSettings(int estateID); + + /// + /// Load/Get all estate settings. + /// + /// An empty list if no estates were found. + List LoadEstateSettingsAll(); + void StoreEstateSettings(EstateSettings es); List GetEstates(string search); + + /// + /// Get the IDs of all estates. + /// + /// An empty list if no estates were found. + List GetEstatesAll(); + bool LinkRegion(UUID regionID, int estateID); List GetRegions(int estateID); bool DeleteEstate(int estateID); diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs index b6df5a2595..d0588bff09 100644 --- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs +++ b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs @@ -90,6 +90,11 @@ namespace OpenSim.Services.Connectors { return m_database.LoadEstateSettings(estateID); } + + public List LoadEstateSettingsAll() + { + return m_database.LoadEstateSettingsAll(); + } public void StoreEstateSettings(EstateSettings es) { @@ -100,6 +105,11 @@ namespace OpenSim.Services.Connectors { return m_database.GetEstates(search); } + + public List GetEstatesAll() + { + return m_database.GetEstatesAll(); + } public bool LinkRegion(UUID regionID, int estateID) { From 793bfb5a663879296789efa8350df0e9cabb2148 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 22:25:20 +0000 Subject: [PATCH 147/192] add method doc to IEstateDataService and IEstateDataStore interfaces --- .../Interfaces/IEstateDataService.cs | 44 ++++++++++++++++- .../Framework/Interfaces/IEstateDataStore.cs | 48 ++++++++++++++++++- 2 files changed, 90 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs index 12ed9e3fa7..55adef17c7 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs @@ -34,7 +34,19 @@ namespace OpenSim.Region.Framework.Interfaces { public interface IEstateDataService { + /// + /// Load estate settings for a region. + /// + /// + /// If true, then an estate is created if one is not found. This is used in migration. + /// EstateSettings LoadEstateSettings(UUID regionID, bool create); + + /// + /// Load estate settings for an estate ID. + /// + /// + /// EstateSettings LoadEstateSettings(int estateID); /// @@ -43,7 +55,19 @@ namespace OpenSim.Region.Framework.Interfaces /// An empty list if no estates were found. List LoadEstateSettingsAll(); + /// + /// Store estate settings. + /// + /// + /// This is also called by EstateSettings.Save() + /// void StoreEstateSettings(EstateSettings es); + + /// + /// Get estate IDs. + /// + /// Name of estate to search for. This is the exact name, no parttern matching is done. + /// List GetEstates(string search); /// @@ -52,8 +76,26 @@ namespace OpenSim.Region.Framework.Interfaces /// An empty list if no estates were found. List GetEstatesAll(); + /// + /// Link a region to an estate. + /// + /// + /// + /// true if the link succeeded, false otherwise bool LinkRegion(UUID regionID, int estateID); + + /// + /// Get the UUIDs of all the regions in an estate. + /// + /// + /// List GetRegions(int estateID); + + /// + /// Delete an estate + /// + /// + /// true if the delete succeeded, false otherwise bool DeleteEstate(int estateID); } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index d78ad78774..4974d5d1ff 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs @@ -33,9 +33,25 @@ namespace OpenSim.Region.Framework.Interfaces { public interface IEstateDataStore { + /// + /// Initialise the data store. + /// + /// void Initialise(string connectstring); + /// + /// Load estate settings for a region. + /// + /// + /// If true, then an estate is created if one is not found. This is used in migration. + /// EstateSettings LoadEstateSettings(UUID regionID, bool create); + + /// + /// Load estate settings for an estate ID. + /// + /// + /// EstateSettings LoadEstateSettings(int estateID); /// @@ -44,7 +60,19 @@ namespace OpenSim.Region.Framework.Interfaces /// An empty list if no estates were found. List LoadEstateSettingsAll(); + /// + /// Store estate settings. + /// + /// + /// This is also called by EstateSettings.Save() + /// void StoreEstateSettings(EstateSettings es); + + /// + /// Get estate IDs. + /// + /// Name of estate to search for. This is the exact name, no parttern matching is done. + /// List GetEstates(string search); /// @@ -53,8 +81,26 @@ namespace OpenSim.Region.Framework.Interfaces /// An empty list if no estates were found. List GetEstatesAll(); + /// + /// Link a region to an estate. + /// + /// + /// + /// true if the link succeeded, false otherwise bool LinkRegion(UUID regionID, int estateID); + + /// + /// Get the UUIDs of all the regions in an estate. + /// + /// + /// List GetRegions(int estateID); + + /// + /// Delete an estate + /// + /// + /// true if the delete succeeded, false otherwise bool DeleteEstate(int estateID); } -} +} \ No newline at end of file From 2d1f0d224c355e92997643cf849b8e9774dddbad Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 22:27:16 +0000 Subject: [PATCH 148/192] minor: slightly adjust previous method doc. --- OpenSim/Region/Framework/Interfaces/IEstateDataService.cs | 2 +- OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs index 55adef17c7..38c10a6d1b 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs @@ -38,7 +38,7 @@ namespace OpenSim.Region.Framework.Interfaces /// Load estate settings for a region. /// /// - /// If true, then an estate is created if one is not found. This is used in migration. + /// If true, then an estate is created if one is not found. /// EstateSettings LoadEstateSettings(UUID regionID, bool create); diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index 4974d5d1ff..c82661db74 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs @@ -43,7 +43,7 @@ namespace OpenSim.Region.Framework.Interfaces /// Load estate settings for a region. /// /// - /// If true, then an estate is created if one is not found. This is used in migration. + /// If true, then an estate is created if one is not found. /// EstateSettings LoadEstateSettings(UUID regionID, bool create); From ee7cfc2854aba3572d5342b8c1bfd5bf4ea93841 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 22:47:02 +0000 Subject: [PATCH 149/192] refactor: use EstateDataService property directly instead of loading it into a local variable --- OpenSim/Region/Application/OpenSimBase.cs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index f804cb7f95..eae36869a2 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -798,12 +798,8 @@ namespace OpenSim /// public void PopulateRegionEstateInfo(RegionInfo regInfo) { - IEstateDataService estateDataService = EstateDataService; - - if (estateDataService != null) - { - regInfo.EstateSettings = estateDataService.LoadEstateSettings(regInfo.RegionID, false); - } + if (EstateDataService != null) + regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, false); if (regInfo.EstateSettings.EstateID == 0) // No record at all { @@ -814,7 +810,7 @@ namespace OpenSim if (response == "no") { // Create a new estate - regInfo.EstateSettings = estateDataService.LoadEstateSettings(regInfo.RegionID, true); + regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); @@ -828,7 +824,7 @@ namespace OpenSim } else { - List estates = estateDataService.LoadEstateSettingsAll(); + List estates = EstateDataService.LoadEstateSettingsAll(); List estateNames = new List(); foreach (EstateSettings estate in estates) @@ -843,7 +839,7 @@ namespace OpenSim if (response == "None") continue; - List estateIDs = estateDataService.GetEstates(response); + List estateIDs = EstateDataService.GetEstates(response); if (estateIDs.Count < 1) { MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); @@ -852,9 +848,9 @@ namespace OpenSim int estateID = estateIDs[0]; - regInfo.EstateSettings = estateDataService.LoadEstateSettings(estateID); + regInfo.EstateSettings = EstateDataService.LoadEstateSettings(estateID); - if (estateDataService.LinkRegion(regInfo.RegionID, estateID)) + if (EstateDataService.LinkRegion(regInfo.RegionID, estateID)) break; MainConsole.Instance.Output("Joining the estate failed. Please try again."); @@ -863,7 +859,6 @@ namespace OpenSim } } } - public class OpenSimConfigSource { From 060a53b896d338309458861161eb0b9e621d4171 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 22:57:20 +0000 Subject: [PATCH 150/192] On initial opensim setup, don't ask the user whether they want to join an existing opensim estate when there aren't any. Proceed directly to estate setup instead. --- OpenSim/Region/Application/OpenSimBase.cs | 102 +++++++++++++--------- 1 file changed, 63 insertions(+), 39 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index eae36869a2..81a10e3830 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -792,6 +792,25 @@ namespace OpenSim regionnum = m_sceneManager.Scenes.Count; } + /// + /// Create an estate with an initial region. + /// + /// + public void CreateEstate(RegionInfo regInfo) + { + // Create a new estate + regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); + + regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); + + // FIXME: Later on, the scene constructor will reload the estate settings no matter what. + // Therefore, we need to do an initial save here otherwise the new estate name will be reset + // back to the default. The reloading of estate settings by scene could be eliminated if it + // knows that the passed in settings in RegionInfo are already valid. Also, it might be + // possible to eliminate some additional later saves made by callers of this method. + regInfo.EstateSettings.Save(); + } + /// /// Load the estate information for the provided RegionInfo object. /// @@ -804,56 +823,61 @@ namespace OpenSim if (regInfo.EstateSettings.EstateID == 0) // No record at all { MainConsole.Instance.Output("Your region is not part of an estate."); + + List estates = EstateDataService.LoadEstateSettingsAll(); + while (true) { - string response = MainConsole.Instance.CmdPrompt("Do you wish to join an existing estate?", "no", new List() { "yes", "no" }); - if (response == "no") - { - // Create a new estate - regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); - - regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); + if (estates.Count == 0) + { + MainConsole.Instance.Output( + "There aren't any existing estates. You will need to create a new one for this region."); - // FIXME: Later on, the scene constructor will reload the estate settings no matter what. - // Therefore, we need to do an initial save here otherwise the new estate name will be reset - // back to the default. The reloading of estate settings by scene could be eliminated if it - // knows that the passed in settings in RegionInfo are already valid. Also, it might be - // possible to eliminate some additional later saves made by callers of this method. - regInfo.EstateSettings.Save(); + CreateEstate(regInfo); break; } else { - List estates = EstateDataService.LoadEstateSettingsAll(); - - List estateNames = new List(); - foreach (EstateSettings estate in estates) - estateNames.Add(estate.EstateName); - - response + string response = MainConsole.Instance.CmdPrompt( - string.Format( - "Name of estate to join. Existing estate names are ({0})", string.Join(", ", estateNames.ToArray())), - "None"); + "Do you wish to join an existing estate (yes/no)?", "no", new List() { "yes", "no" }); - if (response == "None") - continue; - - List estateIDs = EstateDataService.GetEstates(response); - if (estateIDs.Count < 1) + if (response == "no") { - MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); - continue; - } - - int estateID = estateIDs[0]; - - regInfo.EstateSettings = EstateDataService.LoadEstateSettings(estateID); - - if (EstateDataService.LinkRegion(regInfo.RegionID, estateID)) + CreateEstate(regInfo); break; - - MainConsole.Instance.Output("Joining the estate failed. Please try again."); + } + else + { + List estateNames = new List(); + foreach (EstateSettings estate in estates) + estateNames.Add(estate.EstateName); + + response + = MainConsole.Instance.CmdPrompt( + string.Format( + "Name of estate to join. Existing estate names are ({0})", string.Join(", ", estateNames.ToArray())), + "None"); + + if (response == "None") + continue; + + List estateIDs = EstateDataService.GetEstates(response); + if (estateIDs.Count < 1) + { + MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); + continue; + } + + int estateID = estateIDs[0]; + + regInfo.EstateSettings = EstateDataService.LoadEstateSettings(estateID); + + if (EstateDataService.LinkRegion(regInfo.RegionID, estateID)) + break; + + MainConsole.Instance.Output("Joining the estate failed. Please try again."); + } } } } From 3382de4d8bcfce0c3f8e2e63ee63ed2428322461 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 23:16:57 +0000 Subject: [PATCH 151/192] In initial setup, stop a user being able to create a new estate with the same name as an existing estate. --- OpenSim/Region/Application/OpenSimBase.cs | 45 ++++++++++++++++------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 81a10e3830..3f5e35e6b7 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -795,20 +795,34 @@ namespace OpenSim /// /// Create an estate with an initial region. /// + /// + /// This method doesn't allow an estate to be created with the same name as existing estates. + /// /// - public void CreateEstate(RegionInfo regInfo) + /// A list of estate names that already exist. + /// true if the estate was created, false otherwise + public bool CreateEstate(RegionInfo regInfo, List existingNames) { // Create a new estate regInfo.EstateSettings = EstateDataService.LoadEstateSettings(regInfo.RegionID, true); + string newName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); - regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); + if (existingNames.Contains(newName)) + { + MainConsole.Instance.OutputFormat("An estate named {0} already exists. Please try again.", newName); + return false; + } + + regInfo.EstateSettings.EstateName = newName; // FIXME: Later on, the scene constructor will reload the estate settings no matter what. // Therefore, we need to do an initial save here otherwise the new estate name will be reset // back to the default. The reloading of estate settings by scene could be eliminated if it // knows that the passed in settings in RegionInfo are already valid. Also, it might be // possible to eliminate some additional later saves made by callers of this method. - regInfo.EstateSettings.Save(); + regInfo.EstateSettings.Save(); + + return true; } /// @@ -825,16 +839,21 @@ namespace OpenSim MainConsole.Instance.Output("Your region is not part of an estate."); List estates = EstateDataService.LoadEstateSettingsAll(); + List estateNames = new List(); + foreach (EstateSettings estate in estates) + estateNames.Add(estate.EstateName); while (true) { if (estates.Count == 0) { MainConsole.Instance.Output( - "There aren't any existing estates. You will need to create a new one for this region."); + "No existing estates found. You must create a new one for this region."); - CreateEstate(regInfo); - break; + if (CreateEstate(regInfo, estateNames)) + break; + else + continue; } else { @@ -844,15 +863,13 @@ namespace OpenSim if (response == "no") { - CreateEstate(regInfo); - break; + if (CreateEstate(regInfo, estateNames)) + break; + else + continue; } else - { - List estateNames = new List(); - foreach (EstateSettings estate in estates) - estateNames.Add(estate.EstateName); - + { response = MainConsole.Instance.CmdPrompt( string.Format( @@ -865,7 +882,7 @@ namespace OpenSim List estateIDs = EstateDataService.GetEstates(response); if (estateIDs.Count < 1) { - MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); + MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again."); continue; } From 7acade00b9b34403e63656d5e2efc94322342653 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 21 Mar 2011 23:26:35 +0000 Subject: [PATCH 152/192] On initial setup, include estate and regions names in questions to make it clearer what they relate to. --- OpenSim/Region/Application/OpenSimBase.cs | 10 ++++++---- OpenSim/Region/Framework/Scenes/Scene.cs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 3f5e35e6b7..640581181c 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -836,7 +836,7 @@ namespace OpenSim if (regInfo.EstateSettings.EstateID == 0) // No record at all { - MainConsole.Instance.Output("Your region is not part of an estate."); + MainConsole.Instance.OutputFormat("Region {0} is not part of an estate.", regInfo.RegionName); List estates = EstateDataService.LoadEstateSettingsAll(); List estateNames = new List(); @@ -847,8 +847,7 @@ namespace OpenSim { if (estates.Count == 0) { - MainConsole.Instance.Output( - "No existing estates found. You must create a new one for this region."); + MainConsole.Instance.Output("No existing estates found. You must create a new one."); if (CreateEstate(regInfo, estateNames)) break; @@ -859,7 +858,10 @@ namespace OpenSim { string response = MainConsole.Instance.CmdPrompt( - "Do you wish to join an existing estate (yes/no)?", "no", new List() { "yes", "no" }); + string.Format( + "Do you wish to join region {0} to an existing estate (yes/no)?", regInfo.RegionName), + "no", + new List() { "yes", "no" }); if (response == "no") { diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 1a6a70bfbe..4d2519d694 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1109,7 +1109,7 @@ namespace OpenSim.Region.Framework.Scenes // while (m_regInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) { - MainConsole.Instance.Output("The current estate has no owner set."); + MainConsole.Instance.OutputFormat("Estate {0} has no owner set.", m_regInfo.EstateSettings.EstateName); List excluded = new List(new char[1]{' '}); string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test", excluded); string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User", excluded); From 97d46648cdde5d8237d1241f3dc47fc455b35d33 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 22 Mar 2011 16:42:12 -0400 Subject: [PATCH 153/192] More SQLite work. --- bin/Mono.Data.Sqlite.dll.config | 4 ++++ bin/libsqlite3_32.so | Bin 0 -> 635852 bytes bin/{libsqlite3.so.0 => libsqlite3_64.so} | Bin 871398 -> 783200 bytes prebuild.xml | 4 ++-- 4 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 bin/Mono.Data.Sqlite.dll.config create mode 100755 bin/libsqlite3_32.so rename bin/{libsqlite3.so.0 => libsqlite3_64.so} (89%) diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config new file mode 100644 index 0000000000..456461ea44 --- /dev/null +++ b/bin/Mono.Data.Sqlite.dll.config @@ -0,0 +1,4 @@ + + + + diff --git a/bin/libsqlite3_32.so b/bin/libsqlite3_32.so new file mode 100755 index 0000000000000000000000000000000000000000..171ffcd1ccc9caf6e889910de518cd22e158e49f GIT binary patch literal 635852 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
;MFk-(bLJVRokzNJIjN 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

nyOtVy_#^rv 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

HWGsOso+L?jxHH9VN*4wWdK{SIT0od%3@;!C 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 literal 0 HcmV?d00001 diff --git a/bin/libsqlite3.so.0 b/bin/libsqlite3_64.so similarity index 89% rename from bin/libsqlite3.so.0 rename to bin/libsqlite3_64.so index 0512d8a3c0d09d93c9651848dc6d1ce837bff149..2646a9c41e06b1726030664109e642acab0c8a87 100755 GIT binary patch delta 302 zcmXxgt4l;d6vy!yz56^H91ynnirds6hzREvy8~jhSWG7W02NN(y9&Q-6Tu=_tQMn_ zEC$np53tF-?)o?famt7Ja?XSqV&!SL*za{0-pKu*+^xEX%iXM-IbvZiJRv+OoC(*2 z>%tA;rf^HRea-azf{PC-F}R}K6Jkk>{IH$jw4`-Ehos@;zLsIS()$u(r2|tH>41d| zBn^HG;ZxZ`H1<#!yGX`9!bmwlR0d659O>dQlGQ%KSRdT1ck0+4)0#g+p~0Uc8J7rO n$_=7%i^8}=G7`eK@_=YOqA=c(43FSD-B$1Q?^{YN|Iqv|@t16; delta 85015 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 - - + + From be878795aa67acb486113eb4d9cdf7154f4d8408 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 22 Mar 2011 17:36:01 -0400 Subject: [PATCH 154/192] Typo fix --- bin/Mono.Data.Sqlite.dll.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config index 456461ea44..de0c17dbee 100644 --- a/bin/Mono.Data.Sqlite.dll.config +++ b/bin/Mono.Data.Sqlite.dll.config @@ -1,4 +1,4 @@ - + From b34743e5fe6b0783caa62c014ff86e2ec76c8184 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 22 Mar 2011 23:47:36 +0000 Subject: [PATCH 155/192] Add an initial confidence-building TestAddObject() for prim counts. --- .../World/Land/LandManagementModule.cs | 29 +++---- .../CoreModules/World/Land/PrimCountModule.cs | 23 ++++-- .../World/Land/Tests/PrimCountModuleTests.cs | 75 +++++++++++++++++++ OpenSim/Region/Framework/Scenes/SceneGraph.cs | 13 ++-- prebuild.xml | 1 + 5 files changed, 116 insertions(+), 25 deletions(-) create mode 100644 OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 98ba8c3c8c..514be4f498 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -306,6 +306,9 @@ namespace OpenSim.Region.CoreModules.World.Land /// The parcel created. protected ILandObject CreateDefaultParcel() { +// m_log.DebugFormat( +// "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName); + ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; @@ -579,7 +582,7 @@ namespace OpenSim.Region.CoreModules.World.Land } else { - m_log.WarnFormat("[LAND]: Invalid local land ID {0}", landLocalID); + m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Invalid local land ID {0}", landLocalID); } } @@ -630,7 +633,7 @@ namespace OpenSim.Region.CoreModules.World.Land { if (m_landIDList[x, y] == local_id) { - m_log.WarnFormat("[LAND]: Not removing land object {0}; still being used at {1}, {2}", + m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Not removing land object {0}; still being used at {1}, {2}", local_id, x, y); return; //throw new Exception("Could not remove land object. Still being used at " + x + ", " + y); @@ -1198,7 +1201,7 @@ namespace OpenSim.Region.CoreModules.World.Land } else { - m_log.WarnFormat("[PARCEL]: Invalid land object {0} passed for parcel object owner request", local_id); + m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Invalid land object {0} passed for parcel object owner request", local_id); } } @@ -1426,7 +1429,7 @@ namespace OpenSim.Region.CoreModules.World.Land { IClientAPI client; if (! m_scene.TryGetClient(agentID, out client)) { - m_log.WarnFormat("[LAND] unable to retrieve IClientAPI for {0}", agentID.ToString()); + m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to retrieve IClientAPI for {0}", agentID); return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); } @@ -1475,7 +1478,7 @@ namespace OpenSim.Region.CoreModules.World.Land } else { - m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); + m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to find parcelID {0}", parcelID); } return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); } @@ -1533,17 +1536,17 @@ namespace OpenSim.Region.CoreModules.World.Land } catch (LLSD.LLSDParseException e) { - m_log.ErrorFormat("[LAND] Fetch error: {0}", e.Message); - m_log.ErrorFormat("[LAND] ... in request {0}", request); + m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: Fetch error: {0}", e.Message); + m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: ... in request {0}", request); } - catch(InvalidCastException) + catch (InvalidCastException) { - m_log.ErrorFormat("[LAND] Wrong type in request {0}", request); + m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: Wrong type in request {0}", request); } LLSDRemoteParcelResponse response = new LLSDRemoteParcelResponse(); response.parcel_id = parcelID; - m_log.DebugFormat("[LAND] got parcelID {0}", parcelID); + m_log.DebugFormat("[LAND MANAGEMENT MODULE]: Got parcelID {0}", parcelID); return LLSDHelpers.SerialiseLLSDReply(response); } @@ -1564,7 +1567,7 @@ namespace OpenSim.Region.CoreModules.World.Land ExtendedLandData extLandData = new ExtendedLandData(); Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle, out extLandData.X, out extLandData.Y); - m_log.DebugFormat("[LAND] got parcelinfo request for regionHandle {0}, x/y {1}/{2}", + m_log.DebugFormat("[LAND MANAGEMENT MODULE]: Got parcelinfo request for regionHandle {0}, x/y {1}/{2}", extLandData.RegionHandle, extLandData.X, extLandData.Y); // for this region or for somewhere else? @@ -1605,7 +1608,7 @@ namespace OpenSim.Region.CoreModules.World.Land info = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); } // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. - m_log.DebugFormat("[LAND] got parcelinfo for parcel {0} in region {1}; sending...", + m_log.DebugFormat("[LAND MANAGEMENT MODULE]: got parcelinfo for parcel {0} in region {1}; sending...", data.LandData.Name, data.RegionHandle); // HACK for now RegionInfo r = new RegionInfo(); @@ -1616,7 +1619,7 @@ namespace OpenSim.Region.CoreModules.World.Land remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); } else - m_log.Debug("[LAND] got no parcelinfo; not sending"); + m_log.Debug("[LAND MANAGEMENT MODULE]: got no parcelinfo; not sending"); } public void setParcelOtherCleanTime(IClientAPI remoteClient, int localID, int otherCleanTime) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 34ef67f10b..c71264cf18 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -51,8 +51,8 @@ namespace OpenSim.Region.CoreModules.World.Land public class PrimCountModule : IPrimCountModule, INonSharedRegionModule { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = +// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Scene m_Scene; private Dictionary m_PrimCounts = @@ -64,10 +64,16 @@ namespace OpenSim.Region.CoreModules.World.Land private Dictionary m_ParcelCounts = new Dictionary(); - // For now, a simple simwide taint to get this up. Later parcel based - // taint to allow recounting a parcel if only ownership has changed - // without recounting the whole sim. + + /// + /// For now, a simple simwide taint to get this up. Later parcel based + /// taint to allow recounting a parcel if only ownership has changed + /// without recounting the whole sim. + /// + /// We start out tainted so that the first get call resets the various prim counts. + /// private bool m_Tainted = true; + private Object m_TaintLock = new Object(); public Type ReplaceableInterface @@ -156,6 +162,8 @@ namespace OpenSim.Region.CoreModules.World.Land // NOTE: Call under Taint Lock private void AddObject(SceneObjectGroup obj) { +// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} to prim count", obj.Name); + if (obj.IsAttachment) return; if (((obj.RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)) @@ -299,18 +307,21 @@ namespace OpenSim.Region.CoreModules.World.Land // NOTE: This method MUST be called while holding the taint lock! private void Recount() { +// m_log.DebugFormat("[PRIM COUNT MODULE]: Recounting prims on {0}", m_Scene.RegionInfo.RegionName); + m_OwnerMap.Clear(); m_SimwideCounts.Clear(); m_ParcelCounts.Clear(); List land = m_Scene.LandChannel.AllParcels(); - + foreach (ILandObject l in land) { LandData landData = l.LandData; m_OwnerMap[landData.GlobalID] = landData.OwnerID; m_SimwideCounts[landData.OwnerID] = 0; +// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding parcel count for {0}", landData.GlobalID); m_ParcelCounts[landData.GlobalID] = new ParcelCounts(); } diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs new file mode 100644 index 0000000000..402965fcf7 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -0,0 +1,75 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using log4net.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenMetaverse.Assets; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.CoreModules.World.Land.Tests +{ + [TestFixture] + public class PrimCountModuleTests + { + [Test] + public void TestAddObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + PrimCountModule pcm = new PrimCountModule(); + LandManagementModule lmm = new LandManagementModule(); + Scene scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); + + ILandObject lo = new LandObject(UUID.Zero, false, scene); + lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); + lmm.AddLandObject(lo); + //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); + + string objName = "obj1"; + UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); + + SceneObjectPart part + = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { Name = objName, UUID = objUuid }; + + scene.AddNewSceneObject(new SceneObjectGroup(part), false); + + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 734ba22e9c..eca2786c97 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -627,7 +627,7 @@ namespace OpenSim.Region.Framework.Scenes if (!Entities.Remove(agentID)) { m_log.WarnFormat( - "[SCENE]: Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", + "[SCENEGRAPH]: Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID); } @@ -650,7 +650,7 @@ namespace OpenSim.Region.Framework.Scenes } else { - m_log.WarnFormat("[SCENE]: Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); + m_log.WarnFormat("[SCENEGRAPH]: Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); } } } @@ -1079,7 +1079,8 @@ namespace OpenSim.Region.Framework.Scenes catch (Exception e) { // Catch it and move on. This includes situations where splist has inconsistent info - m_log.WarnFormat("[SCENE]: Problem processing action in ForEachSOG: ", e.ToString()); + m_log.WarnFormat( + "[SCENEGRAPH]: Problem processing action in ForEachSOG: {0} {1}", e.Message, e.StackTrace); } } } @@ -1103,8 +1104,8 @@ namespace OpenSim.Region.Framework.Scenes } catch (Exception e) { - m_log.Info("[BUG] in " + m_parentScene.RegionInfo.RegionName + ": " + e.ToString()); - m_log.Info("[BUG] Stack Trace: " + e.StackTrace); + m_log.Info("[SCENEGRAPH]: Error in " + m_parentScene.RegionInfo.RegionName + ": " + e.ToString()); + m_log.Info("[SCENEGRAPH]: Stack Trace: " + e.StackTrace); } }); Parallel.ForEach(GetScenePresences(), protectedAction); @@ -1119,7 +1120,7 @@ namespace OpenSim.Region.Framework.Scenes } catch (Exception e) { - m_log.Info("[BUG] in " + m_parentScene.RegionInfo.RegionName + ": " + e.ToString()); + m_log.Error("[SCENEGRAPH]: Error in " + m_parentScene.RegionInfo.RegionName + ": " + e.ToString()); } } } diff --git a/prebuild.xml b/prebuild.xml index 910cb31bef..d564341901 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2927,6 +2927,7 @@ + From 9c979dd0fc468ec5b15bb9b3db2eae55db53c0bc Mon Sep 17 00:00:00 2001 From: Marck Date: Wed, 23 Mar 2011 08:35:39 +0100 Subject: [PATCH 156/192] Fix a typo in the SQLite DLL config and amend the instructions for running on Linux. Under Linux (and probably also under OSX), the operating system must be able to find the new SQLite DLL in the library search path. --- README.txt | 2 +- bin/Mono.Data.Sqlite.dll.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.txt b/README.txt index 391a6599d1..8d925b5df6 100644 --- a/README.txt +++ b/README.txt @@ -44,7 +44,7 @@ for more information. To run OpenSim, from the unpacked distribution type: * cd bin - * mono OpenSim.exe + * LD_LIBRARY_PATH=. mono OpenSim.exe Now see the "Configuring OpenSim" section diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config index de0c17dbee..0c5e9412f2 100644 --- a/bin/Mono.Data.Sqlite.dll.config +++ b/bin/Mono.Data.Sqlite.dll.config @@ -1,4 +1,4 @@ - + From d011896341d09ce6c10a801264e663b6a19f0b48 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 21:50:56 +0000 Subject: [PATCH 157/192] Add generic EventManager.OnObjectAddedToScene and get PrimCountModule to listen for that rather than EventManager.OnParcelPrimCountAdd OnParcelPrimCountAdd had the wrong semantics for the PrimCountModule - it was invoked for every entity in the scene, not just new ones, which would screw up the untainted count. Extend automated test for this scenario. --- .../World/Land/LandManagementModule.cs | 4 +++ .../CoreModules/World/Land/PrimCountModule.cs | 10 +++++-- .../World/Land/Tests/PrimCountModuleTests.cs | 2 ++ .../Region/Framework/Scenes/EventManager.cs | 30 +++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 18 +++++++++-- 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 514be4f498..4d887a816e 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -854,6 +854,10 @@ namespace OpenSim.Region.CoreModules.World.Land public void EventManagerOnParcelPrimCountUpdate() { +// m_log.DebugFormat( +// "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}", +// m_scene.RegionInfo.RegionName); + ResetAllLandPrimCounts(); EntityBase[] entities = m_scene.Entities.GetEntities(); foreach (EntityBase obj in entities) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index c71264cf18..5371aaf85c 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -89,8 +89,7 @@ namespace OpenSim.Region.CoreModules.World.Land { m_Scene = scene; - m_Scene.EventManager.OnParcelPrimCountAdd += - OnParcelPrimCountAdd; + m_Scene.EventManager.OnObjectAddedToScene += OnParcelPrimCountAdd; m_Scene.EventManager.OnObjectBeingRemovedFromScene += OnObjectBeingRemovedFromScene; m_Scene.EventManager.OnParcelPrimCountTainted += @@ -116,6 +115,7 @@ namespace OpenSim.Region.CoreModules.World.Land private void OnParcelPrimCountAdd(SceneObjectGroup obj) { + Console.WriteLine("WIBBLE"); // If we're tainted already, don't bother to add. The next // access will cause a recount anyway lock (m_TaintLock) @@ -172,6 +172,10 @@ namespace OpenSim.Region.CoreModules.World.Land Vector3 pos = obj.AbsolutePosition; ILandObject landObject = m_Scene.LandChannel.GetLandObject(pos.X, pos.Y); LandData landData = landObject.LandData; + +// m_log.DebugFormat( +// "[PRIM COUNT MODULE]: Object {0} is owned by {1} over land owned by {2}", +// obj.Name, obj.OwnerID, landData.OwnerID); ParcelCounts parcelCounts; if (m_ParcelCounts.TryGetValue(landData.GlobalID, out parcelCounts)) @@ -228,6 +232,8 @@ namespace OpenSim.Region.CoreModules.World.Land public int GetOwnerCount(UUID parcelID) { +// m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); + lock (m_TaintLock) { if (m_Tainted) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 402965fcf7..fd332ed50c 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -67,6 +67,8 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) { Name = objName, UUID = objUuid }; + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); + scene.AddNewSceneObject(new SceneObjectGroup(part), false); Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index c321a15866..fd6253533a 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -242,7 +242,15 @@ namespace OpenSim.Region.Framework.Scenes public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID); public event EstateToolsSunUpdate OnEstateToolsSunUpdate; + + ///

+ /// Triggered when an object is added to the scene. + /// + public event Action OnObjectAddedToScene; + /// + /// Triggered when an object is removed from the scene. + /// public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene; @@ -345,6 +353,7 @@ namespace OpenSim.Region.Framework.Scenes public delegate void Attach(uint localID, UUID itemID, UUID avatarID); public event Attach OnAttach; + /// /// Called immediately after an object is loaded from storage. /// @@ -800,6 +809,27 @@ namespace OpenSim.Region.Framework.Scenes } } + public void TriggerObjectAddedToScene(SceneObjectGroup obj) + { + Action handler = OnObjectAddedToScene; + if (handler != null) + { + foreach (Action d in handler.GetInvocationList()) + { + try + { + d(obj); + } + catch (Exception e) + { + m_log.ErrorFormat( + "[EVENT MANAGER]: Delegate for TriggerObjectAddedToScene failed - continuing. {0} {1}", + e.Message, e.StackTrace); + } + } + } + } + public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj) { ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 4d2519d694..d407a6f033 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1956,8 +1956,14 @@ namespace OpenSim.Region.Framework.Scenes /// If false, it is left to the caller to schedule the update /// public bool AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup, bool sendClientUpdates) - { - return m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, sendClientUpdates); + { + if (m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, sendClientUpdates)) + { + EventManager.TriggerObjectAddedToScene(sceneObject); + return true; + } + + return false; } /// @@ -1974,7 +1980,13 @@ namespace OpenSim.Region.Framework.Scenes public bool AddNewSceneObject( SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel) { - return m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, pos, rot, vel); + if (m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, pos, rot, vel)) + { + EventManager.TriggerObjectAddedToScene(sceneObject); + return true; + } + + return false; } /// From 67cafbd33aeb1038f22aa775cbde96b4c89dd770 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 21:54:02 +0000 Subject: [PATCH 158/192] remove a rogue Console.WriteLine() from the last commit. --- OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 5371aaf85c..46c7eedb1f 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -115,7 +115,6 @@ namespace OpenSim.Region.CoreModules.World.Land private void OnParcelPrimCountAdd(SceneObjectGroup obj) { - Console.WriteLine("WIBBLE"); // If we're tainted already, don't bother to add. The next // access will cause a recount anyway lock (m_TaintLock) From 08c3cd6b369e2bb8dfa08709c2ffddaea4cdbaa5 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:04:14 +0000 Subject: [PATCH 159/192] Add method doc to the Get*() methods on PrimCountModule --- .../CoreModules/World/Land/PrimCountModule.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 46c7eedb1f..ae85798172 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -229,6 +229,12 @@ namespace OpenSim.Region.CoreModules.World.Land return primCounts; } + + /// + /// Get the number of prims on the parcel that are owned by the parcel owner. + /// + /// + /// public int GetOwnerCount(UUID parcelID) { // m_log.DebugFormat("[PRIM COUNT MODULE]: GetOwnerCount for {0}", parcelID); @@ -245,6 +251,11 @@ namespace OpenSim.Region.CoreModules.World.Land return 0; } + /// + /// Get the number of prims on the parcel that have been set to the group that owns the parcel. + /// + /// + /// public int GetGroupCount(UUID parcelID) { lock (m_TaintLock) @@ -259,6 +270,11 @@ namespace OpenSim.Region.CoreModules.World.Land return 0; } + /// + /// Get the number of prims on the parcel that are not owned by the parcel owner or set to the parcel group. + /// + /// + /// public int GetOthersCount(UUID parcelID) { lock (m_TaintLock) @@ -273,6 +289,11 @@ namespace OpenSim.Region.CoreModules.World.Land return 0; } + /// + /// Get the number of prims that are in the entire simulator for the owner of this parcel. + /// + /// + /// public int GetSimulatorCount(UUID parcelID) { lock (m_TaintLock) @@ -291,6 +312,12 @@ namespace OpenSim.Region.CoreModules.World.Land return 0; } + /// + /// Get the number of prims that a particular user owns on this parcel. + /// + /// + /// + /// public int GetUserCount(UUID parcelID, UUID userID) { lock (m_TaintLock) From 654aa7abeb497e024c87e2ef8d610ba3ca512c3e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:12:20 +0000 Subject: [PATCH 160/192] Extend simple PCM add object test to check all counts --- .../World/Land/Tests/PrimCountModuleTests.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index fd332ed50c..88c814edc5 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -55,6 +55,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); + UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); ILandObject lo = new LandObject(UUID.Zero, false, scene); lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); lmm.AddLandObject(lo); @@ -68,10 +69,20 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests { Name = objName, UUID = objUuid }; Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, UUID.Zero), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); + Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(0)); scene.AddNewSceneObject(new SceneObjectGroup(part), false); Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, UUID.Zero), Is.EqualTo(1)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); + Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(1)); } } } \ No newline at end of file From f1f4985ab6fc98daf2263f72397fe7db79b20ecd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:14:04 +0000 Subject: [PATCH 161/192] user a non UUID.Zero user in pcm test to avoid any special treatment of UUID.Zero --- .../CoreModules/World/Land/Tests/PrimCountModuleTests.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 88c814edc5..639d78121c 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -55,8 +55,9 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); + UUID userId = new UUID("00000000-0000-0000-0000-000000000010"); UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); - ILandObject lo = new LandObject(UUID.Zero, false, scene); + ILandObject lo = new LandObject(userId, false, scene); lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); lmm.AddLandObject(lo); //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); @@ -65,13 +66,13 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); SceneObjectPart part - = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) { Name = objName, UUID = objUuid }; Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, UUID.Zero), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(0)); Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(0)); @@ -80,7 +81,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, UUID.Zero), Is.EqualTo(1)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(1)); Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(1)); } From 88673c86a4b9cde729c62fbdc92b8c9076c54230 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:17:47 +0000 Subject: [PATCH 162/192] use a 3 part object for the pcm test rather than a 1 part, for improved test coverage --- .../World/Land/Tests/PrimCountModuleTests.cs | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 639d78121c..8c1b6a3370 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -61,13 +61,17 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); lmm.AddLandObject(lo); //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); - - string objName = "obj1"; - UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); - - SceneObjectPart part + + SceneObjectPart part1 = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = objName, UUID = objUuid }; + { Name = "obj1", UUID = new UUID("00000000-0000-0000-0000-000000000001") }; + SceneObjectGroup sog = new SceneObjectGroup(part1); + sog.AddPart( + new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { Name = "obj2", UUID = new UUID("00000000-0000-0000-0000-000000000002") }); + sog.AddPart( + new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { Name = "obj3", UUID = new UUID("00000000-0000-0000-0000-000000000003") }); Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); @@ -76,14 +80,14 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(0)); - scene.AddNewSceneObject(new SceneObjectGroup(part), false); + scene.AddNewSceneObject(sog, false); - Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(3)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(1)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(3)); Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); - Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(3)); } } } \ No newline at end of file From de88227bc486788197b3a7c842c8b60f82b0a29b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:29:27 +0000 Subject: [PATCH 163/192] refactor: simplify part of AddSceneObject() test setup by moving sog construction into SceneSetupHelpers.CreateSceneObject() --- .../World/Land/Tests/PrimCountModuleTests.cs | 11 +------ .../Tests/Common/Setup/SceneSetupHelpers.cs | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 8c1b6a3370..72f74fa5c9 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -62,16 +62,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests lmm.AddLandObject(lo); //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); - SceneObjectPart part1 - = new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = "obj1", UUID = new UUID("00000000-0000-0000-0000-000000000001") }; - SceneObjectGroup sog = new SceneObjectGroup(part1); - sog.AddPart( - new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = "obj2", UUID = new UUID("00000000-0000-0000-0000-000000000002") }); - sog.AddPart( - new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = "obj3", UUID = new UUID("00000000-0000-0000-0000-000000000003") }); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, userId); Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index aa4b285981..b7b7383bfc 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -465,5 +465,37 @@ namespace OpenSim.Tests.Common.Setup return part; } + + /// + /// Create a scene object but do not add it to the scene. + /// + /// + /// UUID always starts at 00000000-0000-0000-0000-000000000001 + /// + /// The number of parts that should be in the scene object + /// + /// + public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId) + { + SceneObjectPart rootPart + = new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { Name = "part1", UUID = new UUID("00000000-0000-0000-0000-000000000001") }; + SceneObjectGroup sog = new SceneObjectGroup(rootPart); + + if (parts > 1) + { + for (int i = 2; i <= parts; i++) + { + sog.AddPart( + new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { + Name = string.Format("obj{0}", i), + UUID = new UUID(string.Format("00000000-0000-0000-0000-{0:D12}", i)) + }); + } + } + + return sog; + } } } From d5c7ae5c6b55ae794f630ae55a100b19eef2362c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 22:40:23 +0000 Subject: [PATCH 164/192] refactor common sop setup parts into a single method --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index b7b7383bfc..87b63894f2 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -454,9 +454,7 @@ namespace OpenSim.Tests.Common.Setup /// public static SceneObjectPart AddSceneObject(Scene scene, string name) { - SceneObjectPart part - = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero); - part.Name = name; + SceneObjectPart part = CreateSceneObjectPart(name, UUID.Random(), UUID.Zero); //part.UpdatePrimFlags(false, false, true); //part.ObjectFlags |= (uint)PrimFlags.Phantom; @@ -466,6 +464,20 @@ namespace OpenSim.Tests.Common.Setup return part; } + /// + /// Create a scene object part. + /// + /// + /// + /// + /// + public static SceneObjectPart CreateSceneObjectPart(string name, UUID id, UUID ownerId) + { + return new SceneObjectPart( + ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) + { Name = name, UUID = id }; + } + /// /// Create a scene object but do not add it to the scene. /// @@ -477,25 +489,19 @@ namespace OpenSim.Tests.Common.Setup /// public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId) { - SceneObjectPart rootPart - = new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = "part1", UUID = new UUID("00000000-0000-0000-0000-000000000001") }; - SceneObjectGroup sog = new SceneObjectGroup(rootPart); + SceneObjectGroup sog + = new SceneObjectGroup( + CreateSceneObjectPart("part1", new UUID("00000000-0000-0000-0000-000000000001"), ownerId)); if (parts > 1) - { for (int i = 2; i <= parts; i++) - { sog.AddPart( - new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { - Name = string.Format("obj{0}", i), - UUID = new UUID(string.Format("00000000-0000-0000-0000-{0:D12}", i)) - }); - } - } + CreateSceneObjectPart( + string.Format("obj{0}", i), + new UUID(string.Format("00000000-0000-0000-0000-{0:D12}", i)), + ownerId)); return sog; } } -} +} \ No newline at end of file From ebbe3afaf15fa07f4a8d1c2db8795065b852ec8d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 23:14:55 +0000 Subject: [PATCH 165/192] Add PrimCountModuleTests.TestRemoveOwnerObject(). Also adds SceneSetupHelpers methods to easily create sogs with different part UUIDs --- .../World/Land/Tests/PrimCountModuleTests.cs | 39 ++++++++++++++++++- .../Tests/Common/Setup/SceneSetupHelpers.cs | 27 ++++++++++--- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 72f74fa5c9..e6b8627552 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -44,8 +44,11 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests [TestFixture] public class PrimCountModuleTests { + /// + /// Test count after a parcel owner owned object is added. + /// [Test] - public void TestAddObject() + public void TestAddOwnerObject() { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); @@ -80,5 +83,39 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(3)); } + + /// + /// Test count after a parcel owner owned object is removed. + /// + [Test] + public void TestRemoveOwnerObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + PrimCountModule pcm = new PrimCountModule(); + LandManagementModule lmm = new LandManagementModule(); + Scene scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); + + UUID userId = new UUID("00000000-0000-0000-0000-000000000010"); + UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); + ILandObject lo = new LandObject(userId, false, scene); + lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); + lmm.AddLandObject(lo); + //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); + + scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, userId, 0x1), false); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, userId, 0x10); + scene.AddNewSceneObject(sogToDelete, false); + scene.DeleteSceneObject(sogToDelete, false); + + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(1)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); + Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(1)); + } } } \ No newline at end of file diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 87b63894f2..57850c1cc7 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -488,20 +488,37 @@ namespace OpenSim.Tests.Common.Setup /// /// public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId) - { + { + return CreateSceneObject(parts, ownerId, 0x1); + } + + /// + /// Create a scene object but do not add it to the scene. + /// + /// The number of parts that should be in the scene object + /// + /// + /// The hexadecimal last part of the UUID for parts created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}" + /// will be given to the root part, and incremented for each part thereafter. + /// + /// + public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId, int uuidTail) + { + string rawSogId = string.Format("00000000-0000-0000-0000-{0:X12}", uuidTail); + SceneObjectGroup sog = new SceneObjectGroup( - CreateSceneObjectPart("part1", new UUID("00000000-0000-0000-0000-000000000001"), ownerId)); + CreateSceneObjectPart("part0", new UUID(rawSogId), ownerId)); if (parts > 1) - for (int i = 2; i <= parts; i++) + for (int i = 1; i < parts; i++) sog.AddPart( CreateSceneObjectPart( string.Format("obj{0}", i), - new UUID(string.Format("00000000-0000-0000-0000-{0:D12}", i)), + new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", uuidTail + i)), ownerId)); return sog; - } + } } } \ No newline at end of file From f001aab8aa5f3ceebe259ff89673c7757b16c637 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 23:19:15 +0000 Subject: [PATCH 166/192] extend TestAddOwnerObject() to add a second object --- .../World/Land/Tests/PrimCountModuleTests.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index e6b8627552..a0e7e4c1ae 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -58,15 +58,13 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); - UUID userId = new UUID("00000000-0000-0000-0000-000000000010"); + UUID userId = new UUID("00000000-0000-0000-0000-100000000000"); UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); ILandObject lo = new LandObject(userId, false, scene); lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); lmm.AddLandObject(lo); //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); - - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, userId); - + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); @@ -74,6 +72,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(0)); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, userId, 0x01); scene.AddNewSceneObject(sog, false); Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(3)); @@ -82,6 +81,17 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(3)); Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(3)); + + // Add a second object and retest + SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, userId, 0x10); + scene.AddNewSceneObject(sog2, false); + + Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(5)); + Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(5)); + Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); + Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(5)); } /// From eaa37d15f26adda05cbcc44404b586551d86e983 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 23 Mar 2011 23:28:10 +0000 Subject: [PATCH 167/192] factor out common test setup code in PCM tests --- .../World/Land/Tests/PrimCountModuleTests.cs | 110 +++++++++--------- 1 file changed, 53 insertions(+), 57 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index a0e7e4c1ae..45e579e1b7 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -44,6 +44,26 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests [TestFixture] public class PrimCountModuleTests { + protected UUID m_userId = new UUID("00000000-0000-0000-0000-100000000000"); + protected UUID m_dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); + protected TestScene m_scene; + protected PrimCountModule m_pcm; + protected ILandObject m_lo; + + [SetUp] + public void SetUp() + { + m_pcm = new PrimCountModule(); + LandManagementModule lmm = new LandManagementModule(); + m_scene = SceneSetupHelpers.SetupScene(); + SceneSetupHelpers.SetupSceneModules(m_scene, lmm, m_pcm); + + m_lo = new LandObject(m_userId, false, m_scene); + m_lo.SetLandBitmap(m_lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); + lmm.AddLandObject(m_lo); + //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); + } + /// /// Test count after a parcel owner owned object is added. /// @@ -51,47 +71,35 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests public void TestAddOwnerObject() { TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - PrimCountModule pcm = new PrimCountModule(); - LandManagementModule lmm = new LandManagementModule(); - Scene scene = SceneSetupHelpers.SetupScene(); - SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); - - UUID userId = new UUID("00000000-0000-0000-0000-100000000000"); - UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); - ILandObject lo = new LandObject(userId, false, scene); - lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); - lmm.AddLandObject(lo); - //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); +// log4net.Config.XmlConfigurator.Configure(); - Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); - Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(0)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); + Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, userId, 0x01); - scene.AddNewSceneObject(sog, false); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); + m_scene.AddNewSceneObject(sog, false); - Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(3)); - Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(3)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); - Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(3)); + Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(3)); + Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(3)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); + Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(3)); // Add a second object and retest - SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, userId, 0x10); - scene.AddNewSceneObject(sog2, false); + SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, 0x10); + m_scene.AddNewSceneObject(sog2, false); - Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(5)); - Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(5)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); - Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(5)); + Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(5)); + Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(5)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); + Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(5)); } /// @@ -103,29 +111,17 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - PrimCountModule pcm = new PrimCountModule(); - LandManagementModule lmm = new LandManagementModule(); - Scene scene = SceneSetupHelpers.SetupScene(); - SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); + m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_userId, 0x1), false); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x10); + m_scene.AddNewSceneObject(sogToDelete, false); + m_scene.DeleteSceneObject(sogToDelete, false); - UUID userId = new UUID("00000000-0000-0000-0000-000000000010"); - UUID dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); - ILandObject lo = new LandObject(userId, false, scene); - lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); - lmm.AddLandObject(lo); - //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); - - scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, userId, 0x1), false); - SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, userId, 0x10); - scene.AddNewSceneObject(sogToDelete, false); - scene.DeleteSceneObject(sogToDelete, false); - - Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); - Assert.That(pcm.GetGroupCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetOthersCount(lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, userId), Is.EqualTo(1)); - Assert.That(pcm.GetUserCount(lo.LandData.GlobalID, dummyUserId), Is.EqualTo(0)); - Assert.That(pcm.GetSimulatorCount(lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(1)); + Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); + Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(1)); } } } \ No newline at end of file From 7f5019b0f23959ca049f87b596bc2bd47725eb0d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Mar 2011 21:47:54 +0000 Subject: [PATCH 168/192] Add ILandObject.IPrimCounts for the new prim count module. Not functional yet, but tests now act against this object rather than interrogating the module directly --- .../World/Land/LandManagementModule.cs | 12 +++- .../CoreModules/World/Land/LandObject.cs | 4 +- .../CoreModules/World/Land/PrimCountModule.cs | 2 + .../World/Land/Tests/PrimCountModuleTests.cs | 60 ++++++++++--------- .../Framework/Interfaces/ILandObject.cs | 5 ++ 5 files changed, 52 insertions(+), 31 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 4d887a816e..d0727d958c 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -72,6 +72,7 @@ namespace OpenSim.Region.CoreModules.World.Land protected Commander m_commander = new Commander("land"); protected IUserManagement m_userManager; + protected IPrimCountModule m_primCountModule; // Minimum for parcels to work is 64m even if we don't actually use them. #pragma warning disable 0429 @@ -147,6 +148,7 @@ namespace OpenSim.Region.CoreModules.World.Land public void RegionLoaded(Scene scene) { m_userManager = m_scene.RequestModuleInterface(); + m_primCountModule = m_scene.RequestModuleInterface(); } public void RemoveRegion(Scene scene) @@ -309,10 +311,11 @@ namespace OpenSim.Region.CoreModules.World.Land // m_log.DebugFormat( // "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName); - ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); + ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; fullSimParcel.LandData.ClaimDate = Util.UnixTimeSinceEpoch(); + return AddLandObject(fullSimParcel); } @@ -593,6 +596,11 @@ namespace OpenSim.Region.CoreModules.World.Land public ILandObject AddLandObject(ILandObject land) { ILandObject new_land = land.Copy(); + + // Only now can we add the prim counts to the land object - we rely on the global ID which is generated + // as a random UUID inside LandData initialization + if (m_primCountModule != null) + new_land.PrimCounts = m_primCountModule.GetPrimCounts(new_land.LandData.GlobalID); lock (m_landList) { @@ -1368,7 +1376,7 @@ namespace OpenSim.Region.CoreModules.World.Land { ILandObject new_land = new LandObject(data.OwnerID, data.IsGroupOwned, m_scene); new_land.LandData = data.Copy(); - new_land.SetLandBitmapFromByteArray(); + new_land.SetLandBitmapFromByteArray(); AddLandObject(new_land); } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 46c15ed2c3..749bb3d8cd 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -51,7 +51,7 @@ namespace OpenSim.Region.CoreModules.World.Land private int m_lastSeqId = 0; - protected LandData m_landData = new LandData(); + protected LandData m_landData = new LandData(); protected Scene m_scene; protected List primsOverMe = new List(); protected Dictionary m_listTransactions = new Dictionary(); @@ -79,6 +79,8 @@ namespace OpenSim.Region.CoreModules.World.Land set { m_landData = value; } } + + public IPrimCounts PrimCounts { get; set; } public UUID RegionUUID { diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index ae85798172..9fd347e371 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -88,6 +88,8 @@ namespace OpenSim.Region.CoreModules.World.Land public void AddRegion(Scene scene) { m_Scene = scene; + + m_Scene.RegisterModuleInterface(this); m_Scene.EventManager.OnObjectAddedToScene += OnParcelPrimCountAdd; m_Scene.EventManager.OnObjectBeingRemovedFromScene += diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 45e579e1b7..c9d393f4d6 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -58,9 +58,9 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, lmm, m_pcm); - m_lo = new LandObject(m_userId, false, m_scene); - m_lo.SetLandBitmap(m_lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); - lmm.AddLandObject(m_lo); + ILandObject lo = new LandObject(m_userId, false, m_scene); + lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); + m_lo = lmm.AddLandObject(lo); //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); } @@ -72,34 +72,36 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - - Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(0)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); - Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); + + IPrimCounts pc = m_lo.PrimCounts; + + Assert.That(pc.Owner, Is.EqualTo(0)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(0)); + Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(0)); SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); m_scene.AddNewSceneObject(sog, false); - Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(3)); - Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(3)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); - Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(3)); + Assert.That(pc.Owner, Is.EqualTo(3)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(3)); + Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(3)); // Add a second object and retest SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, 0x10); m_scene.AddNewSceneObject(sog2, false); - Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(5)); - Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(5)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); - Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(5)); + Assert.That(pc.Owner, Is.EqualTo(5)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(5)); + Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(5)); } /// @@ -111,17 +113,19 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); + IPrimCounts pc = m_lo.PrimCounts; + m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_userId, 0x1), false); SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x10); m_scene.AddNewSceneObject(sogToDelete, false); m_scene.DeleteSceneObject(sogToDelete, false); - Assert.That(m_pcm.GetOwnerCount(m_lo.LandData.GlobalID), Is.EqualTo(1)); - Assert.That(m_pcm.GetGroupCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetOthersCount(m_lo.LandData.GlobalID), Is.EqualTo(0)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_userId), Is.EqualTo(1)); - Assert.That(m_pcm.GetUserCount(m_lo.LandData.GlobalID, m_dummyUserId), Is.EqualTo(0)); - Assert.That(m_pcm.GetSimulatorCount(m_lo.LandData.GlobalID), Is.EqualTo(1)); + Assert.That(pc.Owner, Is.EqualTo(1)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(1)); + Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(1)); } } } \ No newline at end of file diff --git a/OpenSim/Region/Framework/Interfaces/ILandObject.cs b/OpenSim/Region/Framework/Interfaces/ILandObject.cs index eeb9d3ad1d..9c0abdeedc 100644 --- a/OpenSim/Region/Framework/Interfaces/ILandObject.cs +++ b/OpenSim/Region/Framework/Interfaces/ILandObject.cs @@ -45,6 +45,11 @@ namespace OpenSim.Region.Framework.Interfaces bool[,] LandBitmap { get; set; } UUID RegionUUID { get; } + /// + /// Prim counts for this land object. + /// + IPrimCounts PrimCounts { get; set; } + /// /// The start point for the land object. This is the western-most point as one scans land working from /// north to south. From ea72745d43c2c6eced8329801ff8765746be7ddd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Mar 2011 23:18:47 +0000 Subject: [PATCH 169/192] Log the xml/ini regions config files that opensim loads from, and the regions that it loaded from them This will show up with the lines [REGION LOADER FILE SYSTEM]: Loading config files from ./Regions, etc. --- .../Filesystem/RegionLoaderFileSystem.cs | 24 +++++++++++++++---- prebuild.xml | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs index 63e09ae401..7cbd5edb62 100644 --- a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs +++ b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs @@ -25,15 +25,19 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using log4net; using System; using System.Collections.Generic; using System.IO; +using System.Reflection; using Nini.Config; namespace OpenSim.Framework.RegionLoader.Filesystem { public class RegionLoaderFileSystem : IRegionLoader { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private IConfigSource m_configSource; public void SetIniConfigSource(IConfigSource configSource) @@ -63,36 +67,48 @@ namespace OpenSim.Framework.RegionLoader.Filesystem string[] configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); string[] iniFiles = Directory.GetFiles(regionConfigPath, "*.ini"); + // Create an empty Regions.ini if there are no existing config files. if (configFiles.Length == 0 && iniFiles.Length == 0) - { + { new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "Regions.ini"), false, m_configSource); iniFiles = Directory.GetFiles(regionConfigPath, "*.ini"); } + + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config files from {0}", regionConfigPath); List regionInfos = new List(); int i = 0; foreach (string file in iniFiles) { + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config file {0}", file); + IConfigSource source = new IniConfigSource(file); foreach (IConfig config in source.Configs) - { - //m_log.Info("[REGIONLOADERFILESYSTEM]: Creating RegionInfo for " + config.Name); + { RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource, config.Name); regionInfos.Add(regionInfo); + + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded region {0}", regionInfo.RegionName); + i++; } } foreach (string file in configFiles) { + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loading config file {0}", file); + RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource); regionInfos.Add(regionInfo); + + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded region {0}", regionInfo.RegionName); + i++; } return regionInfos.ToArray(); } } -} +} \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index d564341901..fac3f208af 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -402,6 +402,7 @@ + From 3a55d59b45dc0cbff938f0101bb6338bd8949e86 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Mar 2011 23:29:06 +0000 Subject: [PATCH 170/192] in region web loader, print out url that config is being loaded from (this wasn't being done anywhere). --- OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs index 0ec4af5c17..de4898a0d7 100644 --- a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs +++ b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs @@ -66,9 +66,9 @@ namespace OpenSim.Framework.RegionLoader.Web { HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(url); webRequest.Timeout = 30000; //30 Second Timeout - m_log.Debug("[WEBLOADER]: Sending Download Request..."); + m_log.DebugFormat("[WEBLOADER]: Sending download request to {0}", url); HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse(); - m_log.Debug("[WEBLOADER]: Downloading Region Information From Remote Server..."); + m_log.Debug("[WEBLOADER]: Downloading region information..."); StreamReader reader = new StreamReader(webResponse.GetResponseStream()); string xmlSource = String.Empty; string tempStr = reader.ReadLine(); From d8e1c380e67512e0476b2a7b7441ae3acbb4606f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 25 Mar 2011 23:36:58 +0000 Subject: [PATCH 171/192] minor: make it clearer in the log where we're loading region config files and not the regions themselves --- .../LoadRegions/LoadRegionsPlugin.cs | 28 +++++++++---------- .../Filesystem/RegionLoaderFileSystem.cs | 4 +-- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index f37c399050..e26c1d23b4 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -68,7 +68,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions public void Initialise() { - m_log.Error("[LOADREGIONS]: " + Name + " cannot be default-initialized!"); + m_log.Error("[LOAD REGIONS PLUGIN]: " + Name + " cannot be default-initialized!"); throw new PluginNotInitialisedException(Name); } @@ -85,41 +85,39 @@ namespace OpenSim.ApplicationPlugins.LoadRegions IRegionLoader regionLoader; if (m_openSim.ConfigSource.Source.Configs["Startup"].GetString("region_info_source", "filesystem") == "filesystem") { - m_log.Info("[LOADREGIONS]: Loading region configurations from filesystem"); + m_log.Info("[LOAD REGIONS PLUGIN]: Loading region configurations from filesystem"); regionLoader = new RegionLoaderFileSystem(); } else { - m_log.Info("[LOADREGIONSPLUGIN]: Loading region configurations from web"); + m_log.Info("[LOAD REGIONS PLUGIN]: Loading region configurations from web"); regionLoader = new RegionLoaderWebServer(); } - m_log.Info("[LOADREGIONSPLUGIN]: Loading region configurations..."); - regionLoader.SetIniConfigSource(m_openSim.ConfigSource.Source); RegionInfo[] regionsToLoad = regionLoader.LoadRegions(); - m_log.Info("[LOADREGIONSPLUGIN]: Loading specific shared modules..."); - m_log.Info("[LOADREGIONSPLUGIN]: DynamicTextureModule..."); + m_log.Info("[LOAD REGIONS PLUGIN]: Loading specific shared modules..."); + m_log.Info("[LOAD REGIONS PLUGIN]: DynamicTextureModule..."); m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule()); - m_log.Info("[LOADREGIONSPLUGIN]: LoadImageURLModule..."); + m_log.Info("[LOAD REGIONS PLUGIN]: LoadImageURLModule..."); m_openSim.ModuleLoader.LoadDefaultSharedModule(new LoadImageURLModule()); - m_log.Info("[LOADREGIONSPLUGIN]: XMLRPCModule..."); + m_log.Info("[LOAD REGIONS PLUGIN]: XMLRPCModule..."); m_openSim.ModuleLoader.LoadDefaultSharedModule(new XMLRPCModule()); // m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule..."); // m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule()); - m_log.Info("[LOADREGIONSPLUGIN]: Done."); + m_log.Info("[LOAD REGIONS PLUGIN]: Done."); if (!CheckRegionsForSanity(regionsToLoad)) { - m_log.Error("[LOADREGIONS]: Halting startup due to conflicts in region configurations"); + m_log.Error("[LOAD REGIONS PLUGIN]: Halting startup due to conflicts in region configurations"); Environment.Exit(1); } for (int i = 0; i < regionsToLoad.Length; i++) { IScene scene; - m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + + m_log.Debug("[LOAD REGIONS PLUGIN]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId.ToString() + ")"); @@ -164,7 +162,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions if (regions[i].RegionID == regions[j].RegionID) { m_log.ErrorFormat( - "[LOADREGIONS]: Regions {0} and {1} have the same UUID {2}", + "[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same UUID {2}", regions[i].RegionName, regions[j].RegionName, regions[i].RegionID); return false; } @@ -172,14 +170,14 @@ namespace OpenSim.ApplicationPlugins.LoadRegions regions[i].RegionLocX == regions[j].RegionLocX && regions[i].RegionLocY == regions[j].RegionLocY) { m_log.ErrorFormat( - "[LOADREGIONS]: Regions {0} and {1} have the same grid location ({2}, {3})", + "[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same grid location ({2}, {3})", regions[i].RegionName, regions[j].RegionName, regions[i].RegionLocX, regions[i].RegionLocY); return false; } else if (regions[i].InternalEndPoint.Port == regions[j].InternalEndPoint.Port) { m_log.ErrorFormat( - "[LOADREGIONS]: Regions {0} and {1} have the same internal IP port {2}", + "[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same internal IP port {2}", regions[i].RegionName, regions[j].RegionName, regions[i].InternalEndPoint.Port); return false; } diff --git a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs index 7cbd5edb62..0aae4ff353 100644 --- a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs +++ b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs @@ -90,7 +90,7 @@ namespace OpenSim.Framework.RegionLoader.Filesystem RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource, config.Name); regionInfos.Add(regionInfo); - m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded region {0}", regionInfo.RegionName); + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded config for region {0}", regionInfo.RegionName); i++; } @@ -103,7 +103,7 @@ namespace OpenSim.Framework.RegionLoader.Filesystem RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), file, false, m_configSource); regionInfos.Add(regionInfo); - m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded region {0}", regionInfo.RegionName); + m_log.InfoFormat("[REGION LOADER FILE SYSTEM]: Loaded config for region {0}", regionInfo.RegionName); i++; } From f30bf429c274c9d6d0cfc99513820f759ca94d3e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 00:42:48 +0000 Subject: [PATCH 172/192] refactor: rename SOG collections in SceneGraph to make it clearer that they are indexing each part's UUID, not just the root part. --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index eca2786c97..345ed7a5ef 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -89,8 +89,8 @@ namespace OpenSim.Region.Framework.Scenes protected internal PhysicsScene _PhyScene; - protected internal Dictionary SceneObjectGroupsByLocalID = new Dictionary(); - protected internal Dictionary SceneObjectGroupsByFullID = new Dictionary(); + protected internal Dictionary SceneObjectGroupsByLocalPartID = new Dictionary(); + protected internal Dictionary SceneObjectGroupsByFullPartID = new Dictionary(); private Object m_updateLock = new Object(); @@ -131,10 +131,10 @@ namespace OpenSim.Region.Framework.Scenes m_scenePresenceArray = newlist; } - lock (SceneObjectGroupsByFullID) - SceneObjectGroupsByFullID.Clear(); - lock (SceneObjectGroupsByLocalID) - SceneObjectGroupsByLocalID.Clear(); + lock (SceneObjectGroupsByFullPartID) + SceneObjectGroupsByFullPartID.Clear(); + lock (SceneObjectGroupsByLocalPartID) + SceneObjectGroupsByLocalPartID.Clear(); Entities.Clear(); } @@ -384,18 +384,18 @@ namespace OpenSim.Region.Framework.Scenes if (OnObjectCreate != null) OnObjectCreate(sceneObject); - lock (SceneObjectGroupsByFullID) + lock (SceneObjectGroupsByFullPartID) { - SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; + SceneObjectGroupsByFullPartID[sceneObject.UUID] = sceneObject; foreach (SceneObjectPart part in children) - SceneObjectGroupsByFullID[part.UUID] = sceneObject; + SceneObjectGroupsByFullPartID[part.UUID] = sceneObject; } - lock (SceneObjectGroupsByLocalID) + lock (SceneObjectGroupsByLocalPartID) { - SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject; + SceneObjectGroupsByLocalPartID[sceneObject.LocalId] = sceneObject; foreach (SceneObjectPart part in children) - SceneObjectGroupsByLocalID[part.LocalId] = sceneObject; + SceneObjectGroupsByLocalPartID[part.LocalId] = sceneObject; } return true; @@ -427,20 +427,20 @@ namespace OpenSim.Region.Framework.Scenes if (OnObjectRemove != null) OnObjectRemove(Entities[uuid]); - lock (SceneObjectGroupsByFullID) + lock (SceneObjectGroupsByFullPartID) { SceneObjectPart[] parts = grp.Parts; for (int i = 0; i < parts.Length; i++) - SceneObjectGroupsByFullID.Remove(parts[i].UUID); - SceneObjectGroupsByFullID.Remove(grp.RootPart.UUID); + SceneObjectGroupsByFullPartID.Remove(parts[i].UUID); + SceneObjectGroupsByFullPartID.Remove(grp.RootPart.UUID); } - lock (SceneObjectGroupsByLocalID) + lock (SceneObjectGroupsByLocalPartID) { SceneObjectPart[] parts = grp.Parts; for (int i = 0; i < parts.Length; i++) - SceneObjectGroupsByLocalID.Remove(parts[i].LocalId); - SceneObjectGroupsByLocalID.Remove(grp.RootPart.LocalId); + SceneObjectGroupsByLocalPartID.Remove(parts[i].LocalId); + SceneObjectGroupsByLocalPartID.Remove(grp.RootPart.LocalId); } return Entities.Remove(uuid); @@ -854,14 +854,14 @@ namespace OpenSim.Region.Framework.Scenes //m_log.DebugFormat("Entered GetGroupByPrim with localID {0}", localID); SceneObjectGroup sog; - lock (SceneObjectGroupsByLocalID) - SceneObjectGroupsByLocalID.TryGetValue(localID, out sog); + lock (SceneObjectGroupsByLocalPartID) + SceneObjectGroupsByLocalPartID.TryGetValue(localID, out sog); if (sog != null) { if (sog.HasChildPrim(localID)) return sog; - SceneObjectGroupsByLocalID.Remove(localID); + SceneObjectGroupsByLocalPartID.Remove(localID); } EntityBase[] entityList = GetEntities(); @@ -873,8 +873,8 @@ namespace OpenSim.Region.Framework.Scenes sog = (SceneObjectGroup)ent; if (sog.HasChildPrim(localID)) { - lock (SceneObjectGroupsByLocalID) - SceneObjectGroupsByLocalID[localID] = sog; + lock (SceneObjectGroupsByLocalPartID) + SceneObjectGroupsByLocalPartID[localID] = sog; return sog; } } @@ -891,16 +891,16 @@ namespace OpenSim.Region.Framework.Scenes private SceneObjectGroup GetGroupByPrim(UUID fullID) { SceneObjectGroup sog; - lock (SceneObjectGroupsByFullID) - SceneObjectGroupsByFullID.TryGetValue(fullID, out sog); + lock (SceneObjectGroupsByFullPartID) + SceneObjectGroupsByFullPartID.TryGetValue(fullID, out sog); if (sog != null) { if (sog.ContainsPart(fullID)) return sog; - lock (SceneObjectGroupsByFullID) - SceneObjectGroupsByFullID.Remove(fullID); + lock (SceneObjectGroupsByFullPartID) + SceneObjectGroupsByFullPartID.Remove(fullID); } EntityBase[] entityList = GetEntities(); @@ -911,8 +911,8 @@ namespace OpenSim.Region.Framework.Scenes sog = (SceneObjectGroup)ent; if (sog.HasChildPrim(fullID)) { - lock (SceneObjectGroupsByFullID) - SceneObjectGroupsByFullID[fullID] = sog; + lock (SceneObjectGroupsByFullPartID) + SceneObjectGroupsByFullPartID[fullID] = sog; return sog; } } @@ -1069,7 +1069,7 @@ namespace OpenSim.Region.Framework.Scenes /// protected internal void ForEachSOG(Action action) { - List objlist = new List(SceneObjectGroupsByFullID.Values); + List objlist = new List(SceneObjectGroupsByFullPartID.Values); foreach (SceneObjectGroup obj in objlist) { try From 26d16567e1e2bf28a3eafce6d3acf8d9646aaf84 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 00:53:19 +0000 Subject: [PATCH 173/192] Make SceneGraph.ForEachSOG() execute once for each SOG, not once for each prim (e.g. a SOG with 3 prims would have the action executed three times). To do this, a new SceneObjectGroupsByFullID index in SceneGraph which just index's prims by their root part UUID, in order to avoid the inefficiency of filtering existing lists. Existing callers to SceneGraph.ForEachSOG() did not fail due to the multiple per SOG action executions - they were probably just much less efficient. Code suggests that no callers expected ForEachSOG() to execute actions on sog multiple times --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 345ed7a5ef..1621398bcb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -88,9 +88,21 @@ namespace OpenSim.Region.Framework.Scenes protected internal object m_syncRoot = new object(); protected internal PhysicsScene _PhyScene; - - protected internal Dictionary SceneObjectGroupsByLocalPartID = new Dictionary(); + + /// + /// Index the SceneObjectGroup for each part by the root part's UUID. + /// + protected internal Dictionary SceneObjectGroupsByFullID = new Dictionary(); + + /// + /// Index the SceneObjectGroup for each part by that part's UUID. + /// protected internal Dictionary SceneObjectGroupsByFullPartID = new Dictionary(); + + /// + /// Index the SceneObjectGroup for each part by that part's local ID. + /// + protected internal Dictionary SceneObjectGroupsByLocalPartID = new Dictionary(); private Object m_updateLock = new Object(); @@ -131,6 +143,8 @@ namespace OpenSim.Region.Framework.Scenes m_scenePresenceArray = newlist; } + lock (SceneObjectGroupsByFullID) + SceneObjectGroupsByFullID.Clear(); lock (SceneObjectGroupsByFullPartID) SceneObjectGroupsByFullPartID.Clear(); lock (SceneObjectGroupsByLocalPartID) @@ -384,6 +398,9 @@ namespace OpenSim.Region.Framework.Scenes if (OnObjectCreate != null) OnObjectCreate(sceneObject); + lock (SceneObjectGroupsByFullID) + SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; + lock (SceneObjectGroupsByFullPartID) { SceneObjectGroupsByFullPartID[sceneObject.UUID] = sceneObject; @@ -426,6 +443,9 @@ namespace OpenSim.Region.Framework.Scenes if (OnObjectRemove != null) OnObjectRemove(Entities[uuid]); + + lock (SceneObjectGroupsByFullID) + SceneObjectGroupsByFullID.Remove(grp.UUID); lock (SceneObjectGroupsByFullPartID) { @@ -1064,12 +1084,13 @@ namespace OpenSim.Region.Framework.Scenes } /// - /// Performs action on all scene object groups. + /// Performs action once on all scene object groups. /// /// protected internal void ForEachSOG(Action action) { - List objlist = new List(SceneObjectGroupsByFullPartID.Values); + // FIXME: Need to lock here, really. + List objlist = new List(SceneObjectGroupsByFullID.Values); foreach (SceneObjectGroup obj in objlist) { try @@ -1084,7 +1105,6 @@ namespace OpenSim.Region.Framework.Scenes } } } - /// /// Performs action on all scene presences. This can ultimately run the actions in parallel but From f2d2470c256486df585705313a7fdfdf3d344c1f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 02:24:32 +0000 Subject: [PATCH 174/192] When an object is duplicated, add it to the full/local id SOG indexes as well as Entities --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 1621398bcb..60855b2c36 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -363,6 +363,10 @@ namespace OpenSim.Region.Framework.Scenes if (Entities.ContainsKey(sceneObject.UUID)) return false; + +// m_log.DebugFormat( +// "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}", +// sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName); SceneObjectPart[] children = sceneObject.Parts; @@ -1798,7 +1802,10 @@ namespace OpenSim.Region.Framework.Scenes /// public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot) { - //m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID); +// m_log.DebugFormat( +// "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", +// originalPrimID, offset, AgentID); + SceneObjectGroup original = GetGroupByPrim(originalPrimID); if (original != null) { @@ -1829,7 +1836,28 @@ namespace OpenSim.Region.Framework.Scenes copy.RootPart.SalePrice = 10; } + // FIXME: This section needs to be refactored so that it just calls AddSceneObject() Entities.Add(copy); + + lock (SceneObjectGroupsByFullID) + SceneObjectGroupsByFullID[copy.UUID] = copy; + + SceneObjectPart[] children = copy.Parts; + + lock (SceneObjectGroupsByFullPartID) + { + SceneObjectGroupsByFullPartID[copy.UUID] = copy; + foreach (SceneObjectPart part in children) + SceneObjectGroupsByFullPartID[part.UUID] = copy; + } + + lock (SceneObjectGroupsByLocalPartID) + { + SceneObjectGroupsByLocalPartID[copy.LocalId] = copy; + foreach (SceneObjectPart part in children) + SceneObjectGroupsByLocalPartID[copy.LocalId] = copy; + } + // PROBABLE END OF FIXME // Since we copy from a source group that is in selected // state, but the copy is shown deselected in the viewer, From 482686daab055d4d2d878b238059b442e64122f4 Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Tue, 15 Mar 2011 10:29:24 +0000 Subject: [PATCH 175/192] WebkeyAuthenticationService is now no longer a stub! Signed-off-by: SignpostMarv Martin --- .../WebkeyAuthenticationService.cs | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs index d1a5b0f041..a0729580c8 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs @@ -31,6 +31,9 @@ using OpenSim.Services.Interfaces; using log4net; using Nini.Config; using System.Reflection; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Console; namespace OpenSim.Services.AuthenticationService { @@ -43,17 +46,44 @@ namespace OpenSim.Services.AuthenticationService public class WebkeyAuthenticationService : AuthenticationServiceBase, IAuthenticationService { -// private static readonly ILog m_log = -// LogManager.GetLogger( -// MethodBase.GetCurrentMethod().DeclaringType); - + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); + public WebkeyAuthenticationService(IConfigSource config) : - base(config) + base(config) { } public string Authenticate(UUID principalID, string password, int lifetime) { + m_log.InfoFormat("[Authenticate]: Trying a web key authenticate"); + if (new UUID(password) == UUID.Zero) + { + m_log.InfoFormat("[Authenticate]: NULL_KEY is not a valid web_login_key"); + } + else + { + AuthenticationData data = m_Database.Get(principalID); + if (data != null && data.Data != null) + { + if (data.Data.ContainsKey("webLoginKey")) + { + m_log.InfoFormat("[Authenticate]: Trying a web key authentication"); + string key = data.Data["webLoginKey"].ToString(); + m_log.DebugFormat("[WEB LOGIN AUTH]: got {0} for key in db vs {1}", key, password); + if (key == password) + { + data.Data["webLoginKey"] = UUID.Zero.ToString(); + m_Database.Store(data); + return GetToken(principalID, lifetime); + } + }else{ + m_log.InfoFormat("[Authenticate]: no col webLoginKey in passwd.db"); + } + } + m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); + } return String.Empty; } } From af3956348fc58613948889e5f85030a454684970 Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Tue, 15 Mar 2011 10:29:42 +0000 Subject: [PATCH 176/192] Adding a combined auth service, allowing users to login with either web login or password Signed-off-by: SignpostMarv Martin --- .../WebkeyOrPasswordAuthenticationService.cs | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs new file mode 100644 index 0000000000..0f2fd939a1 --- /dev/null +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using OpenMetaverse; +using OpenSim.Services.Interfaces; +using log4net; +using Nini.Config; +using System.Reflection; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Console; + +namespace OpenSim.Services.AuthenticationService +{ + public class WebkeyOrPasswordAuthenticationService : AuthenticationServiceBase, IAuthenticationService + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public WebkeyOrPasswordAuthenticationService(IConfigSource config) + : base(config) + { + } + + public string Authenticate(UUID principalID, string password, int lifetime) + { + AuthenticationData data = m_Database.Get(principalID); + if (data != null && data.Data != null) + { + if (data.Data.ContainsKey("webLoginKey")) + { + m_log.InfoFormat("[Authenticate]: Trying a web key authentication"); + if (new UUID(password) == UUID.Zero) + { + m_log.InfoFormat("[Authenticate]: NULL_KEY is not a valid web_login_key"); + } + else + { + string key = data.Data["webLoginKey"].ToString(); + m_log.DebugFormat("[WEB LOGIN AUTH]: got {0} for key in db vs {1}", key, password); + if (key == password) + { + data.Data["webLoginKey"] = UUID.Zero.ToString(); + m_Database.Store(data); + return GetToken(principalID, lifetime); + } + } + } + if (data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) + { + m_log.InfoFormat("[Authenticate]: Trying a password authentication"); + string hashed = Util.Md5Hash(password + ":" + data.Data["passwordSalt"].ToString()); + m_log.DebugFormat("[PASS AUTH]: got {0}; hashed = {1}; stored = {2}", password, hashed, data.Data["passwordHash"].ToString()); + if (data.Data["passwordHash"].ToString() == hashed) + { + return GetToken(principalID, lifetime); + } + } + m_log.DebugFormat("[AUTH SERVICE]: Both password and webLoginKey-based login failed for PrincipalID {0}", principalID); + } + else + { + m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); + } + return string.Empty; + } + } +} From 6153c4597322ccef6bdb7662b6461faa260b13ea Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Tue, 15 Mar 2011 10:29:51 +0000 Subject: [PATCH 177/192] LLLoginHandlers now supports both password & web login Signed-off-by: SignpostMarv Martin --- .../Server/Handlers/Login/LLLoginHandlers.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs index 48f5f99ed3..8048f861de 100644 --- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs +++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs @@ -74,12 +74,23 @@ namespace OpenSim.Server.Handlers.Login if (requestData != null) { if (requestData.ContainsKey("first") && requestData["first"] != null && - requestData.ContainsKey("last") && requestData["last"] != null && - requestData.ContainsKey("passwd") && requestData["passwd"] != null) + requestData.ContainsKey("last") && requestData["last"] != null && ( + (requestData.ContainsKey("passwd") && requestData["passwd"] != null) || + (!requestData.ContainsKey("passwd") && requestData.ContainsKey("web_login_key") && requestData["web_login_key"] != null && requestData["web_login_key"].ToString() != UUID.Zero.ToString()) + )) { string first = requestData["first"].ToString(); string last = requestData["last"].ToString(); - string passwd = requestData["passwd"].ToString(); + string passwd = null; + if (requestData.ContainsKey("passwd")) + { + passwd = requestData["passwd"].ToString(); + } + else if (requestData.ContainsKey("web_login_key")) + { + passwd = "$1$" + requestData["web_login_key"].ToString(); + m_log.InfoFormat("[LOGIN]: XMLRPC Login Req key {0}", passwd); + } string startLocation = string.Empty; UUID scopeID = UUID.Zero; if (requestData["scope_id"] != null) @@ -103,7 +114,7 @@ namespace OpenSim.Server.Handlers.Login string id0 = "Unknown"; if (requestData.Contains("id0") && requestData["id0"] != null) id0 = requestData["id0"].ToString(); - + //m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion); LoginResponse reply = null; From 0e808950fbb54271d478d29669bf035949731114 Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Mon, 21 Mar 2011 14:47:10 +0000 Subject: [PATCH 178/192] InfoFormat > DebugFormat Signed-off-by: SignpostMarv Martin --- .../AuthenticationService/WebkeyAuthenticationService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs index a0729580c8..59240264e6 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs @@ -79,7 +79,7 @@ namespace OpenSim.Services.AuthenticationService return GetToken(principalID, lifetime); } }else{ - m_log.InfoFormat("[Authenticate]: no col webLoginKey in passwd.db"); + m_log.DebugFormat("[Authenticate]: no col webLoginKey in passwd.db"); } } m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); From 3bc859a834c50634281df3d52166fc68d7c3c3ba Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Mon, 21 Mar 2011 15:42:57 +0000 Subject: [PATCH 179/192] Making combined auth service re-use the existing auth services instead of duplicating code Signed-off-by: SignpostMarv Martin --- .../WebkeyOrPasswordAuthenticationService.cs | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index 0f2fd939a1..b8bb090552 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -8,58 +8,56 @@ using System.Reflection; using OpenSim.Data; using OpenSim.Framework; using OpenSim.Framework.Console; +using OpenSim.Server.Base; namespace OpenSim.Services.AuthenticationService { public class WebkeyOrPasswordAuthenticationService : AuthenticationServiceBase, IAuthenticationService { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private IConfigSource config; public WebkeyOrPasswordAuthenticationService(IConfigSource config) : base(config) { + this.config = config; } public string Authenticate(UUID principalID, string password, int lifetime) { AuthenticationData data = m_Database.Get(principalID); + IAuthenticationService svc; + Object[] args = new Object[] { config }; + string result = String.Empty; if (data != null && data.Data != null) { if (data.Data.ContainsKey("webLoginKey")) { - m_log.InfoFormat("[Authenticate]: Trying a web key authentication"); - if (new UUID(password) == UUID.Zero) + svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "WebkeyAuthenticationService", args); + result = svc.Authenticate(principalID, password, lifetime); + if (result == String.Empty) { - m_log.InfoFormat("[Authenticate]: NULL_KEY is not a valid web_login_key"); - } - else - { - string key = data.Data["webLoginKey"].ToString(); - m_log.DebugFormat("[WEB LOGIN AUTH]: got {0} for key in db vs {1}", key, password); - if (key == password) - { - data.Data["webLoginKey"] = UUID.Zero.ToString(); - m_Database.Store(data); - return GetToken(principalID, lifetime); - } + m_log.DebugFormat("[Authenticate]: Web Login failed for PrincipalID {0}", principalID); } } if (data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) { - m_log.InfoFormat("[Authenticate]: Trying a password authentication"); - string hashed = Util.Md5Hash(password + ":" + data.Data["passwordSalt"].ToString()); - m_log.DebugFormat("[PASS AUTH]: got {0}; hashed = {1}; stored = {2}", password, hashed, data.Data["passwordHash"].ToString()); - if (data.Data["passwordHash"].ToString() == hashed) + svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "PasswordAuthenticationService", args); + result = svc.Authenticate(principalID, password, lifetime); + if (result == String.Empty) { - return GetToken(principalID, lifetime); + m_log.DebugFormat("[Authenticate]: Password login failed for PrincipalID {0}", principalID); } } - m_log.DebugFormat("[AUTH SERVICE]: Both password and webLoginKey-based login failed for PrincipalID {0}", principalID); + if (result == string.Empty) + { + m_log.DebugFormat("[AUTH SERVICE]: Both password and webLoginKey-based login failed for PrincipalID {0}", principalID); + } } else { m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); } - return string.Empty; + return result; } } } From e93531e1240348f18abb4ef88a0def227026e8f3 Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Thu, 24 Mar 2011 16:21:12 +0000 Subject: [PATCH 180/192] Fixing bug that occurs when using web login- the result was not checked --- .../WebkeyOrPasswordAuthenticationService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index b8bb090552..3a47e97de6 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -39,7 +39,7 @@ namespace OpenSim.Services.AuthenticationService m_log.DebugFormat("[Authenticate]: Web Login failed for PrincipalID {0}", principalID); } } - if (data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) + if (result == string.Empty && data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) { svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "PasswordAuthenticationService", args); result = svc.Authenticate(principalID, password, lifetime); From 3f4be42a87f77d5da7e6cafd4fb98ff6a502636d Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Thu, 24 Mar 2011 16:46:21 +0000 Subject: [PATCH 181/192] Altering log feedback --- .../WebkeyAuthenticationService.cs | 23 ++++++++++--------- .../WebkeyOrPasswordAuthenticationService.cs | 8 ++++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs index 59240264e6..2344c0ed4e 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyAuthenticationService.cs @@ -57,10 +57,9 @@ namespace OpenSim.Services.AuthenticationService public string Authenticate(UUID principalID, string password, int lifetime) { - m_log.InfoFormat("[Authenticate]: Trying a web key authenticate"); if (new UUID(password) == UUID.Zero) { - m_log.InfoFormat("[Authenticate]: NULL_KEY is not a valid web_login_key"); + m_log.DebugFormat("[AUTH SERVICE]: UUID.Zero is not a valid web_login_key on PrincipalID {0}", principalID); } else { @@ -69,17 +68,19 @@ namespace OpenSim.Services.AuthenticationService { if (data.Data.ContainsKey("webLoginKey")) { - m_log.InfoFormat("[Authenticate]: Trying a web key authentication"); string key = data.Data["webLoginKey"].ToString(); - m_log.DebugFormat("[WEB LOGIN AUTH]: got {0} for key in db vs {1}", key, password); - if (key == password) - { - data.Data["webLoginKey"] = UUID.Zero.ToString(); - m_Database.Store(data); - return GetToken(principalID, lifetime); - } + if (key == password) + { + data.Data["webLoginKey"] = UUID.Zero.ToString(); + m_Database.Store(data); + return GetToken(principalID, lifetime); + } + else + { + m_log.DebugFormat("[AUTH SERVICE]: web login auth failed, got PrincipalID {0} gave {1} instead of {2}", principalID, password, key); + } }else{ - m_log.DebugFormat("[Authenticate]: no col webLoginKey in passwd.db"); + m_log.DebugFormat("[AUTH SERVICE]: no col webLoginKey in passwd.db"); } } m_log.DebugFormat("[AUTH SERVICE]: PrincipalID {0} or its data not found", principalID); diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index 3a47e97de6..c315ef2bd8 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -32,25 +32,27 @@ namespace OpenSim.Services.AuthenticationService { if (data.Data.ContainsKey("webLoginKey")) { + m_log.DebugFormat("[AUTH SERVICE]: Attempting web key authentication for PrincipalID {0}", principalID); svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "WebkeyAuthenticationService", args); result = svc.Authenticate(principalID, password, lifetime); if (result == String.Empty) { - m_log.DebugFormat("[Authenticate]: Web Login failed for PrincipalID {0}", principalID); + m_log.DebugFormat("[AUTH SERVICE]: Web Login failed for PrincipalID {0}", principalID); } } if (result == string.Empty && data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) { + m_log.DebugFormat("[AUTH SERVICE]: Attempting password authentication for PrincipalID {0}", principalID); svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "PasswordAuthenticationService", args); result = svc.Authenticate(principalID, password, lifetime); if (result == String.Empty) { - m_log.DebugFormat("[Authenticate]: Password login failed for PrincipalID {0}", principalID); + m_log.DebugFormat("[AUTH SERVICE]: Password login failed for PrincipalID {0}", principalID); } } if (result == string.Empty) { - m_log.DebugFormat("[AUTH SERVICE]: Both password and webLoginKey-based login failed for PrincipalID {0}", principalID); + m_log.DebugFormat("[AUTH SERVICE]: Both password and webLoginKey-based authentication failed for PrincipalID {0}", principalID); } } else From 361b3e7ab8313b89475bc644fdcd348e071b951a Mon Sep 17 00:00:00 2001 From: SignpostMarv Martin Date: Thu, 24 Mar 2011 17:04:29 +0000 Subject: [PATCH 182/192] Removing hard-coded plugin loading in favour of direct class instantiation --- .../WebkeyOrPasswordAuthenticationService.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index c315ef2bd8..15dc5be554 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -16,25 +16,25 @@ namespace OpenSim.Services.AuthenticationService { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private IConfigSource config; + private Dictionary svc_checks; public WebkeyOrPasswordAuthenticationService(IConfigSource config) : base(config) { this.config = config; + svc_checks["web_login_key"] = new WebkeyAuthenticationService(config); + svc_checks["password"] = new PasswordAuthenticationService(config); } public string Authenticate(UUID principalID, string password, int lifetime) { AuthenticationData data = m_Database.Get(principalID); - IAuthenticationService svc; - Object[] args = new Object[] { config }; string result = String.Empty; if (data != null && data.Data != null) { if (data.Data.ContainsKey("webLoginKey")) { m_log.DebugFormat("[AUTH SERVICE]: Attempting web key authentication for PrincipalID {0}", principalID); - svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "WebkeyAuthenticationService", args); - result = svc.Authenticate(principalID, password, lifetime); + result = svc_checks["web_login_key"].Authenticate(principalID, password, lifetime); if (result == String.Empty) { m_log.DebugFormat("[AUTH SERVICE]: Web Login failed for PrincipalID {0}", principalID); @@ -43,8 +43,7 @@ namespace OpenSim.Services.AuthenticationService if (result == string.Empty && data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) { m_log.DebugFormat("[AUTH SERVICE]: Attempting password authentication for PrincipalID {0}", principalID); - svc = ServerUtils.LoadPlugin("OpenSim.Services.AuthenticationService.dll", "PasswordAuthenticationService", args); - result = svc.Authenticate(principalID, password, lifetime); + result = svc_checks["password"].Authenticate(principalID, password, lifetime); if (result == String.Empty) { m_log.DebugFormat("[AUTH SERVICE]: Password login failed for PrincipalID {0}", principalID); From de0730a54ca8b2ede0727212bfc2474c0eff979f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 02:42:50 +0000 Subject: [PATCH 183/192] Add OpenSim.Server.Base reference in prebuild.xml. Initialize svc_checks dictionary in WebkeyOrPasswordAuthenticationService, which was what was causing the load failure. --- .../WebkeyOrPasswordAuthenticationService.cs | 5 ++++- prebuild.xml | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index 15dc5be554..bcfd03dd49 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -15,8 +15,11 @@ namespace OpenSim.Services.AuthenticationService public class WebkeyOrPasswordAuthenticationService : AuthenticationServiceBase, IAuthenticationService { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private IConfigSource config; - private Dictionary svc_checks; + private Dictionary svc_checks + = new Dictionary(); + public WebkeyOrPasswordAuthenticationService(IConfigSource config) : base(config) { diff --git a/prebuild.xml b/prebuild.xml index fac3f208af..c818908d80 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1059,6 +1059,7 @@ + From 83f48c26d62b148c11776af6d4947fc2397a675d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 02:43:41 +0000 Subject: [PATCH 184/192] add header file --- .../WebkeyOrPasswordAuthenticationService.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index bcfd03dd49..00056a6ff1 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -1,4 +1,31 @@ -using System; +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; using System.Collections.Generic; using OpenMetaverse; using OpenSim.Services.Interfaces; From 797128a6ad89ea4944074f99db0a30ad7a5e7a3d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 02:44:46 +0000 Subject: [PATCH 185/192] Rename some member fields to standard m_ OpenSim code convention --- .../WebkeyOrPasswordAuthenticationService.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs index 00056a6ff1..3590e128b1 100644 --- a/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs +++ b/OpenSim/Services/AuthenticationService/WebkeyOrPasswordAuthenticationService.cs @@ -43,16 +43,16 @@ namespace OpenSim.Services.AuthenticationService { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private IConfigSource config; - private Dictionary svc_checks + private IConfigSource m_config; + private Dictionary m_svcChecks = new Dictionary(); public WebkeyOrPasswordAuthenticationService(IConfigSource config) : base(config) { - this.config = config; - svc_checks["web_login_key"] = new WebkeyAuthenticationService(config); - svc_checks["password"] = new PasswordAuthenticationService(config); + this.m_config = config; + m_svcChecks["web_login_key"] = new WebkeyAuthenticationService(config); + m_svcChecks["password"] = new PasswordAuthenticationService(config); } public string Authenticate(UUID principalID, string password, int lifetime) @@ -64,7 +64,7 @@ namespace OpenSim.Services.AuthenticationService if (data.Data.ContainsKey("webLoginKey")) { m_log.DebugFormat("[AUTH SERVICE]: Attempting web key authentication for PrincipalID {0}", principalID); - result = svc_checks["web_login_key"].Authenticate(principalID, password, lifetime); + result = m_svcChecks["web_login_key"].Authenticate(principalID, password, lifetime); if (result == String.Empty) { m_log.DebugFormat("[AUTH SERVICE]: Web Login failed for PrincipalID {0}", principalID); @@ -73,7 +73,7 @@ namespace OpenSim.Services.AuthenticationService if (result == string.Empty && data.Data.ContainsKey("passwordHash") && data.Data.ContainsKey("passwordSalt")) { m_log.DebugFormat("[AUTH SERVICE]: Attempting password authentication for PrincipalID {0}", principalID); - result = svc_checks["password"].Authenticate(principalID, password, lifetime); + result = m_svcChecks["password"].Authenticate(principalID, password, lifetime); if (result == String.Empty) { m_log.DebugFormat("[AUTH SERVICE]: Password login failed for PrincipalID {0}", principalID); @@ -91,4 +91,4 @@ namespace OpenSim.Services.AuthenticationService return result; } } -} +} \ No newline at end of file From 435d72f10651b8c468aa40e866053672c991b210 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 26 Mar 2011 02:46:00 +0000 Subject: [PATCH 186/192] Add SignpostMarv to contributors --- CONTRIBUTORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index a0af1ca941..ef00c19b04 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -117,6 +117,7 @@ what it is today. * SachaMagne * Salahzar Stenvaag * sempuki +* SignpostMarv * Snoopy * Strawberry Fride * tglion From fe6900b305392937bf22e54331c558cd667f9b63 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 27 Mar 2011 19:38:40 -0400 Subject: [PATCH 187/192] Touchup for SQLite --- bin/Mono.Data.Sqlite.dll.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config index 0c5e9412f2..b704035677 100644 --- a/bin/Mono.Data.Sqlite.dll.config +++ b/bin/Mono.Data.Sqlite.dll.config @@ -1,4 +1,4 @@ - + From dd72a69ea54893b9d6d16f7d388e5fe12058fd9e Mon Sep 17 00:00:00 2001 From: Marck Date: Mon, 28 Mar 2011 13:11:23 +0200 Subject: [PATCH 188/192] More touchup for SQLite. Apply the same change to both the 32-bit and 64-bit DLL target paths. This makes the previous addition to the instructions in the README for running on Linux unnecessary. --- bin/Mono.Data.Sqlite.dll.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config index b704035677..6a95476537 100644 --- a/bin/Mono.Data.Sqlite.dll.config +++ b/bin/Mono.Data.Sqlite.dll.config @@ -1,4 +1,4 @@ - + From 5a61c764551b25ae2590a0a12d9ea6c1c0d0f58d Mon Sep 17 00:00:00 2001 From: Marck Date: Mon, 28 Mar 2011 13:33:03 +0200 Subject: [PATCH 189/192] The actual change to README.txt about running on Linux. --- README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 8d925b5df6..391a6599d1 100644 --- a/README.txt +++ b/README.txt @@ -44,7 +44,7 @@ for more information. To run OpenSim, from the unpacked distribution type: * cd bin - * LD_LIBRARY_PATH=. mono OpenSim.exe + * mono OpenSim.exe Now see the "Configuring OpenSim" section From 2d209d3844a58a4d27fe15aa5ccd497bbd530707 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 28 Mar 2011 16:46:04 -0700 Subject: [PATCH 190/192] Fix mantis #5413. WARNING: new config variable in section [GridService] of the simulators called Gatekeeper -- intended to have the URL of the grid's Gatekeeper service (so that it can be checked against). See ini.examples. --- .../CoreModules/World/WorldMap/MapSearchModule.cs | 6 +++++- OpenSim/Services/GridService/HypergridLinker.cs | 10 ++++++++++ bin/config-include/GridCommon.ini.example | 6 ++++++ bin/config-include/StandaloneCommon.ini.example | 5 +++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs index 7bb7544e89..f9ef2864e6 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs @@ -100,8 +100,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap // service wasn't available; maybe still an old GridServer. Try the old API, though it will return only one region regionInfos = new List(); GridRegion info = m_scene.GridService.GetRegionByName(m_scene.RegionInfo.ScopeID, mapName); - if (info != null) regionInfos.Add(info); + if (info != null) + regionInfos.Add(info); } + else if (regionInfos.Count == 0 && mapName.StartsWith("http://")) + remoteClient.SendAlertMessage("Hyperlink could not be established."); + m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count); List blocks = new List(); diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 12ea453bbc..585d088593 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -65,6 +65,7 @@ namespace OpenSim.Services.GridService protected UUID m_ScopeID = UUID.Zero; protected bool m_Check4096 = true; protected string m_MapTileDirectory = string.Empty; + protected string m_ThisGatekeeper = string.Empty; // Hyperlink regions are hyperlinks on the map public readonly Dictionary m_HyperlinkRegions = new Dictionary(); @@ -123,6 +124,8 @@ namespace OpenSim.Services.GridService m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", "maptiles"); + m_ThisGatekeeper = gridConfig.GetString("Gatekeeper", string.Empty); + m_GatekeeperConnector = new GatekeeperServiceConnector(m_AssetService); m_log.Debug("[HYPERGRID LINKER]: Loaded all services..."); @@ -266,6 +269,13 @@ namespace OpenSim.Services.GridService regInfo.ScopeID = scopeID; regInfo.EstateOwner = ownerID; + // Make sure we're not hyperlinking to regions on this grid! + if (regInfo.ServerURI.Trim(new char[]{'/', ' '}) == m_ThisGatekeeper.Trim(new char[]{'/', ' '})) + { + reason = "Cannot hyperlink to regions on the same grid"; + return false; + } + // Check for free coordinates GridRegion region = m_GridService.GetRegionByPosition(regInfo.ScopeID, regInfo.RegionLocX, regInfo.RegionLocY); if (region != null) diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 4dc0e53342..a6fe4b1092 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -45,6 +45,12 @@ ;; Directory for map tile images of linked regions ; MapTileDirectory = "./maptiles" + ; === HG ONLY === + ;; change this to the address of your Gatekeeper service + ;; (usually bundled with the rest of the services in one + ;; Robust server in port 8002, but not always) + Gatekeeper="http://mygridserver.com:8002" + [AvatarService] ; ; change this to your grid-wide grid server diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 816e9a6f10..995a33e8e1 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -78,6 +78,11 @@ ;; For example: Region_Welcome_Area = "DefaultRegion, FallbackRegion" + ; === HG ONLY === + ;; change this to the address of your simulator + Gatekeeper="http://127.0.0.1:9000" + + [LibraryModule] ; Set this if you want to change the name of the OpenSim Library ;LibraryName = "My World's Library" From d3771e536645f50401e9737a693fcbb1fb3b6a01 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 28 Mar 2011 16:48:12 -0700 Subject: [PATCH 191/192] Added code to load a terrain tile of tiff/jpg format. Previously it only worked for one single region. --- .../Terrain/FileLoaders/GenericSystemDrawing.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs index 6676ec8100..d6fa0937e5 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs @@ -62,9 +62,20 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders return LoadBitmap(new Bitmap(filename)); } - public ITerrainChannel LoadFile(string filename, int x, int y, int fileWidth, int fileHeight, int w, int h) + public virtual ITerrainChannel LoadFile(string filename, int offsetX, int offsetY, int fileWidth, int fileHeight, int w, int h) { - throw new NotImplementedException(); + Bitmap bitmap = new Bitmap(filename); + ITerrainChannel retval = new TerrainChannel(true); + + for (int x = 0; x < retval.Width; x++) + { + for (int y = 0; y < retval.Height; y++) + { + retval[x, y] = bitmap.GetPixel(offsetX * retval.Width + x, (bitmap.Height - (retval.Height * (offsetY + 1))) + retval.Height - y - 1).GetBrightness() * 128; + } + } + + return retval; } public virtual ITerrainChannel LoadStream(Stream stream) From 309eb712a32fe14f593941b9f0a5ce41f10bcd7f Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 28 Mar 2011 19:34:55 -0700 Subject: [PATCH 192/192] Improvement over 2 commits ago: make the hyperlink check understand port 80. --- .../Services/GridService/HypergridLinker.cs | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 585d088593..c5390475f2 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -66,6 +66,7 @@ namespace OpenSim.Services.GridService protected bool m_Check4096 = true; protected string m_MapTileDirectory = string.Empty; protected string m_ThisGatekeeper = string.Empty; + protected Uri m_ThisGatekeeperURI = null; // Hyperlink regions are hyperlinks on the map public readonly Dictionary m_HyperlinkRegions = new Dictionary(); @@ -125,6 +126,14 @@ namespace OpenSim.Services.GridService m_MapTileDirectory = gridConfig.GetString("MapTileDirectory", "maptiles"); m_ThisGatekeeper = gridConfig.GetString("Gatekeeper", string.Empty); + try + { + m_ThisGatekeeperURI = new Uri(m_ThisGatekeeper); + } + catch + { + m_log.WarnFormat("[HYPERGRID LINKER]: Malformed URL in [GridService], variable Gatekeeper = {0}", m_ThisGatekeeper); + } m_GatekeeperConnector = new GatekeeperServiceConnector(m_AssetService); @@ -249,6 +258,8 @@ namespace OpenSim.Services.GridService remoteRegionName, xloc / Constants.RegionSize, yloc / Constants.RegionSize); reason = string.Empty; + Uri uri = null; + regInfo = new GridRegion(); if ( externalPort > 0) regInfo.HttpPort = externalPort; @@ -259,8 +270,17 @@ namespace OpenSim.Services.GridService else regInfo.ExternalHostName = "0.0.0.0"; if ( serverURI != null) + { regInfo.ServerURI = serverURI; - + try + { + uri = new Uri(serverURI); + regInfo.ExternalHostName = uri.Host; + regInfo.HttpPort = (uint)uri.Port; + } + catch {} + } + if ( remoteRegionName != string.Empty ) regInfo.RegionName = remoteRegionName; @@ -270,11 +290,16 @@ namespace OpenSim.Services.GridService regInfo.EstateOwner = ownerID; // Make sure we're not hyperlinking to regions on this grid! - if (regInfo.ServerURI.Trim(new char[]{'/', ' '}) == m_ThisGatekeeper.Trim(new char[]{'/', ' '})) + if (m_ThisGatekeeperURI != null) { - reason = "Cannot hyperlink to regions on the same grid"; - return false; + if (regInfo.ExternalHostName == m_ThisGatekeeperURI.Host && regInfo.HttpPort == m_ThisGatekeeperURI.Port) + { + reason = "Cannot hyperlink to regions on the same grid"; + return false; + } } + else + m_log.WarnFormat("[HYPERGRID LINKER]: Please set this grid's Gatekeeper's address in [GridService]!"); // Check for free coordinates GridRegion region = m_GridService.GetRegionByPosition(regInfo.ScopeID, regInfo.RegionLocX, regInfo.RegionLocY);

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 _|mZq=p5y!6@m5c&HKc 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 literal 505771 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%0ApIaS(- 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