From ca12809861bebaf0a7f655744f2c4295198dde90 Mon Sep 17 00:00:00 2001 From: RedSparr0w Date: Sat, 23 Nov 2019 01:44:57 +1300 Subject: [PATCH] Semi functional player shops --- .../src/redone/game/bots/Bot.java | 14 +- .../src/redone/game/bots/BotHandler.java | 12 + .../src/redone/game/items/ItemAssistant.java | 22 +- .../redone/game/players/PlayerAssistant.java | 7 +- .../src/redone/game/shops/ShopAssistant.java | 435 +++++------------- .../src/redone/game/shops/ShopHandler.java | 47 +- .../src/redone/util/GameLogger.java | 1 - 2006Redone Server/src/redone/util/Misc.java | 6 + .../redone/game/bots/Bot$TradeChat.class | Bin 795 -> 795 bytes .../2006rebotted/redone/game/bots/Bot.class | Bin 2304 -> 3187 bytes .../redone/game/bots/BotHandler.class | Bin 3330 -> 3597 bytes .../redone/game/items/ItemAssistant.class | Bin 48364 -> 48402 bytes .../redone/game/players/PlayerAssistant.class | Bin 73312 -> 73331 bytes .../redone/game/shops/ShopAssistant.class | Bin 15558 -> 12414 bytes .../redone/game/shops/ShopHandler.class | Bin 5174 -> 6169 bytes .../2006rebotted/redone/util/GameLogger.class | Bin 4589 -> 4589 bytes .../2006rebotted/redone/util/Misc.class | Bin 8408 -> 8837 bytes 17 files changed, 213 insertions(+), 331 deletions(-) diff --git a/2006Redone Server/src/redone/game/bots/Bot.java b/2006Redone Server/src/redone/game/bots/Bot.java index 1816e0e4..068fad70 100644 --- a/2006Redone Server/src/redone/game/bots/Bot.java +++ b/2006Redone Server/src/redone/game/bots/Bot.java @@ -1,11 +1,15 @@ package redone.game.bots; import redone.Server; +import redone.game.items.ItemAssistant; import redone.game.players.Client; import redone.game.players.Player; import redone.game.players.PlayerHandler; +import redone.util.GameLogger; +import redone.util.Misc; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Random; import java.util.Timer; import java.util.TimerTask; @@ -55,7 +59,15 @@ public class Bot { } public void sendTradeChat() { - botClient.forcedChat("Selling Rune Platebody 210k ea"); + ArrayList items = new ArrayList(); + for (int slot = 0; slot < 40; slot++){ + if(botClient.bankItems[slot] > 0) + items.add(botClient.bankItems[slot] - 1); + } + int item_id = Misc.randomArrayListItem(items); + String item_name = ItemAssistant.getItemName(item_id); + int value = botClient.getShopAssistant().getItemShopValue(item_id); + botClient.forcedChat("Selling " + item_name + " " + GameLogger.formatCurrency(value) + "ea"); /* Real chat - Disabled for now, can't get it to function correctly diff --git a/2006Redone Server/src/redone/game/bots/BotHandler.java b/2006Redone Server/src/redone/game/bots/BotHandler.java index 311f11e0..b8f0c0c8 100644 --- a/2006Redone Server/src/redone/game/bots/BotHandler.java +++ b/2006Redone Server/src/redone/game/bots/BotHandler.java @@ -66,4 +66,16 @@ public class BotHandler return null; } + public static void addTobank(int shop, int item, int itemN){ + for(Bot bot : botList) { + if(bot != null && bot.getBotClient() != null) { + Client botClient = bot.getBotClient(); + if(botClient.myShopId == shop) { + botClient.getItemAssistant().addItemToBank(item, itemN); + return; + } + } + } + } + } diff --git a/2006Redone Server/src/redone/game/items/ItemAssistant.java b/2006Redone Server/src/redone/game/items/ItemAssistant.java index 77f44c9f..9eae7446 100644 --- a/2006Redone Server/src/redone/game/items/ItemAssistant.java +++ b/2006Redone Server/src/redone/game/items/ItemAssistant.java @@ -2426,17 +2426,23 @@ public class ItemAssistant { } public void deleteItem(int id, int amount) { - if (id <= 0) { + if (id <= 0 || amount <= 0) { return; } - for (int j = 0; j < c.playerItems.length; j++) { + id++; + for (int slot = 0; slot < c.playerItems.length; slot++) { if (amount <= 0) { break; } - if (c.playerItems[j] == id + 1) { - c.playerItems[j] = 0; - c.playerItemsN[j] = 0; - amount--; + if (c.playerItems[slot] == id) { + if (c.playerItemsN[slot] > amount) { + c.playerItemsN[slot] -= amount; + break; + } else { + amount -= c.playerItemsN[slot]; + c.playerItems[slot] = 0; + c.playerItemsN[slot] = 0; + } } } resetItems(3214); @@ -2462,9 +2468,6 @@ public class ItemAssistant { public void deleteItem2(int id, int amount) { int am = amount; for (int i = 0; i < c.playerItems.length; i++) { - if (am == 0) { - break; - } if (c.playerItems[i] == id + 1) { if (c.playerItemsN[i] > amount) { c.playerItemsN[i] -= amount; @@ -2472,7 +2475,6 @@ public class ItemAssistant { } else { c.playerItems[i] = 0; c.playerItemsN[i] = 0; - am--; } } } diff --git a/2006Redone Server/src/redone/game/players/PlayerAssistant.java b/2006Redone Server/src/redone/game/players/PlayerAssistant.java index be9d6bb3..24e1d69c 100644 --- a/2006Redone Server/src/redone/game/players/PlayerAssistant.java +++ b/2006Redone Server/src/redone/game/players/PlayerAssistant.java @@ -1642,8 +1642,7 @@ public class PlayerAssistant { switch (spellId) { case 1162: // low alch if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't alch while in trade!"); + player.getActionSender().sendMessage("You can't alch while in trade!"); return; } if (player.isBotting == true) { @@ -1667,7 +1666,7 @@ public class PlayerAssistant { } } if (canAlch) { - int value = player.getShopAssistant().getItemShopValue( itemId) / 3; + int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.4); String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); if (player.getPlayerAssistant().isPlayer()) { GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast Low Alchemy on " + itemName + " for " + GameLogger.formatCurrency(value) + " coins"); @@ -1740,7 +1739,7 @@ public class PlayerAssistant { } } if (canAlch) { - int value = (int) (player.getShopAssistant().getItemShopValue(itemId) * .75); + int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.75); String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); if (player.getPlayerAssistant().isPlayer()) { GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast High Alchemy on " + itemName + " for" + GameLogger.formatCurrency(value) + " coins"); diff --git a/2006Redone Server/src/redone/game/shops/ShopAssistant.java b/2006Redone Server/src/redone/game/shops/ShopAssistant.java index 54c658d6..2905faed 100644 --- a/2006Redone Server/src/redone/game/shops/ShopAssistant.java +++ b/2006Redone Server/src/redone/game/shops/ShopAssistant.java @@ -1,6 +1,8 @@ package redone.game.shops; import redone.Constants; +import redone.game.bots.Bot; +import redone.game.bots.BotHandler; import redone.game.items.Item; import redone.game.items.ItemAssistant; import redone.game.items.ItemDefinitions; @@ -25,15 +27,6 @@ public class ShopAssistant { public static final int RANGE_SHOP = 111, PEST_SHOP = 175, CASTLE_SHOP = 112; - public boolean shopSellsItem(int itemID) { - for (int i = 0; i < ShopHandler.ShopItems[player.myShopId].length; i++) { - if (itemID == ShopHandler.ShopItems[player.myShopId][i] - 1) { - return true; - } - } - return false; - } - /** * Shops **/ @@ -67,17 +60,11 @@ public class ShopAssistant { public void resetShop(int ShopID) { synchronized (player) { player.TotalShopItems = 0; - for (int i = 0; i < ShopHandler.MaxShopItems; i++) - { //adds items in store when items are sold until max value. - if (ShopHandler.ShopItems[ShopID][i] > 0) - { + for (int i = 0; i < ShopHandler.MaxShopItems; i++) { //adds items in store when items are sold until max value. + if (ShopHandler.ShopItems[ShopID][i] > 0) { player.TotalShopItems++; } } - if (player.TotalShopItems > 40){ - player.TotalShopItems = 40; //sets the number of stack of item sold to max possible value if the resulting amount is higher than max value. - //Items sold when shops are full will dissapears. Much more code would be needed if we want to restrict selling while still permitting selling items already in shops and such. - } player.getOutStream().createFrameVarSizeWord(53); player.getOutStream().writeWord(3900); player.getOutStream().writeWord(player.TotalShopItems); @@ -89,13 +76,11 @@ public class ShopAssistant { { if (ShopHandler.ShopItemsN[ShopID][i] > 254) { player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2( - ShopHandler.ShopItemsN[ShopID][i]); + player.getOutStream().writeDWord_v2(ShopHandler.ShopItemsN[ShopID][i]); } else { - player.getOutStream().writeByte( - ShopHandler.ShopItemsN[ShopID][i]); + player.getOutStream().writeByte(ShopHandler.ShopItemsN[ShopID][i]); } if (ShopHandler.ShopItems[ShopID][i] > Constants.ITEM_LIMIT || ShopHandler.ShopItems[ShopID][i] < 0) { @@ -114,29 +99,26 @@ public class ShopAssistant { } } - public double getItemShopValue(int ItemID, int Type, boolean isSelling) { + public int getItemShopValue(int ItemID, int Type, boolean isSelling) { double ShopValue = 1; double TotPrice = 0; double sellingRatio = isSelling ? 0.85 : 1; for (int i = 0; i < Constants.ITEM_LIMIT; i++) { if (ItemDefinitions.getDef()[i] != null) { ShopValue = ItemDefinitions.getDef()[ItemID].highAlch/3.0 *5.0 * sellingRatio; - ShopValue = ShopValue <= 0 ? 1 : ShopValue; //Don't let the value be 0 } } TotPrice = ShopValue; - if (ShopHandler.ShopBModifier[player.myShopId] == 1) { - TotPrice *= 1; - TotPrice *= 1; - if (Type == 1) { - TotPrice *= 1; - } + // General store + if (isSelling && ShopHandler.ShopBModifier[player.myShopId] == 1) { + TotPrice *= 0.90; } else if (Type == 1) { TotPrice *= 1; } - return (int) Math.round(TotPrice); + // Minimum value of 1 + return (int) Math.max(1, Math.floor(TotPrice)); } public int getItemShopValue(int itemId) { @@ -334,7 +316,9 @@ public class ShopAssistant { } else if (ShopValue >= 1000000) { ShopAdd = " (" + (ShopValue / 1000000) + " million)"; } - if (player.myShopId != RANGE_SHOP && player.myShopId != PEST_SHOP && player.myShopId != CASTLE_SHOP && player.myShopId != 138 && player.myShopId != 58 && player.myShopId != 139) { + if (ShopHandler.ShopName[player.myShopId].equalsIgnoreCase(player.properName + "'s Store")) { + player.getActionSender().sendMessage(ItemAssistant.getItemName(removeId) + ": set your sell price."); + } else if (player.myShopId != RANGE_SHOP && player.myShopId != PEST_SHOP && player.myShopId != CASTLE_SHOP && player.myShopId != 138 && player.myShopId != 58 && player.myShopId != 139) { player.getActionSender().sendMessage(ItemAssistant.getItemName(removeId) + ": shop will buy for " + ShopValue + " coins." + ShopAdd); } else if (player.myShopId == 138 || player.myShopId == 139 || player.myShopId == 58) { player.getActionSender().sendMessage(ItemAssistant.getItemName(removeId) + ": shop will buy for " + tokkulValue + " tokkul."); @@ -349,11 +333,8 @@ public class ShopAssistant { } public boolean sellItem(int itemID, int fromSlot, int amount) { - - player.getItemAssistant(); for (int i : Constants.ITEM_SELLABLE) { if (i == itemID) { - player.getItemAssistant(); player.getActionSender().sendMessage("You can't sell " + ItemAssistant.getItemName(itemID).toLowerCase() + "."); return false; } @@ -365,76 +346,82 @@ public class ShopAssistant { if(!player.isShopping) { return false; } - if (player.TotalShopItems >= 39) { - player.getActionSender().sendMessage("If you sell more individuals items in this shop, they won't be displayed."); + // We can only store 40 items per shop + if (player.TotalShopItems >= 40) { + player.getActionSender().sendMessage("This shop is out of space!"); return false; } - - if (amount > 0 && itemID == (player.playerItems[fromSlot] - 1)) { - boolean IsIn = false; + // Check we have the item in our inventory + int inventoryAmount = player.getItemAssistant().getItemAmount(itemID); + if (amount > 0 && inventoryAmount > 0) { + boolean canSellToStore = false; + // Type of store switch (ShopHandler.ShopSModifier[player.myShopId]) { - // Only buys what is in stock + // Only buys what they sell case 2: for (int j = 0; j <= ShopHandler.ShopItemsStandard[player.myShopId]; j++) { if (itemID == (ShopHandler.ShopItems[player.myShopId][j] - 1)) { - IsIn = true; + canSellToStore = true; break; } } break; - // General store + // General store - buys anything case 1: - IsIn = true; + canSellToStore = true; break; - // Player owned store + // Player owned store - only "buys" from the player whos store it is case 0: - System.out.println("Is players shop: " + (ShopHandler.ShopName[player.myShopId].equalsIgnoreCase(player.properName + "'s Store") ? "true" : "false")); - IsIn = ShopHandler.ShopName[player.myShopId].equalsIgnoreCase(player.properName + "'s Store"); + canSellToStore = ShopHandler.ShopName[player.myShopId].equalsIgnoreCase(player.properName + "'s Store"); break; } - if (IsIn == false) { + if (canSellToStore == false) { player.getItemAssistant(); player.getActionSender().sendMessage("You can't sell " + ItemAssistant.getItemName(itemID).toLowerCase() + " to this store."); return false; } - if (amount > player.playerItemsN[fromSlot] && (ItemDefinitions.getDef()[player.playerItems[fromSlot] - 1].isNoteable == true || ItemDefinitions.getDef()[player.playerItems[fromSlot] - 1].isStackable == true)) { - amount = player.playerItemsN[fromSlot]; - } else if (amount > player.getItemAssistant().getItemAmount(itemID) && ItemDefinitions.getDef()[player.playerItems[fromSlot] - 1].isNoteable == false && ItemDefinitions.getDef()[player.playerItems[fromSlot] - 1].isStackable == false) { - amount = player.getItemAssistant().getItemAmount(itemID); + if (amount > inventoryAmount) { + amount = inventoryAmount; } String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - int TotPrice2 = 0; + int value = 1; + int currency = 995; if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { - TotPrice2 = (int) Math.floor(getTokkulValue(itemID) * .85) * amount; + value = (int) Math.floor(getTokkulValue(itemID) * .85); + currency = 6529; } else { - TotPrice2 = (int) Math.floor(getItemShopValue(itemID, amount, true) * amount); //Something about total price of item? + value = (int) Math.floor(getItemShopValue(itemID, amount, true)); + currency = 995; } - if (player.getItemAssistant().freeSlots() > 0 || player.getItemAssistant().playerHasItem(995) || player.getItemAssistant().playerHasItem(6529)) { //Checks to see if player has room for coins. - if (!ItemDefinitions.getDef()[itemID].isNoteable) { //Check to see if its notable. - player.getItemAssistant().deleteItem2(itemID, amount); - } else { - player.getItemAssistant().deleteItem2(itemID, amount); - String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase(); - if (itemName.contains(ItemNameUnNotedItem)) { - itemID = itemID - 1; //Replace the noted item by it's un-noted version. - } - } - if (player.myShopId == 138 || player.myShopId == 139 || player.myShopId == 58) { - player.getItemAssistant().addItem(6529, TotPrice2); //Add the tokkul to your inventory. - } else { - player.getItemAssistant().addItem(995, TotPrice2); //Add the coins to your inventory. - } - addShopItem(itemID, amount); //Add item to the shop. - if (player.getPlayerAssistant().isPlayer()) { //Logger - GameLogger.writeLog(player.playerName, "shopselling", player.playerName + " sold " + itemName + " to store id: " + player.myShopId + " for" + GameLogger.formatCurrency(TotPrice2) + " coins"); - } - } else { + + boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable; + + if (!player.getItemAssistant().playerHasItem(currency) && isStackable && amount < inventoryAmount && player.getItemAssistant().freeSlots() <= 0) { player.getActionSender().sendMessage("You don't have enough space in your inventory."); } + + player.getItemAssistant().deleteItem(itemID, amount); + String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase(); + if (itemName.contains(ItemNameUnNotedItem)) { + itemID = itemID - 1; //Replace the noted item by it's un-noted version. + } + + if (ShopHandler.ShopName[player.myShopId].equalsIgnoreCase(player.properName + "'s Store")) { + // Add items to players store + player.getActionSender().sendMessage("You sent " + amount + " " + itemName + " to your store."); + BotHandler.addTobank(player.myShopId, itemID, amount); + } else { + // Add currency to players inventory + int totalValue = value * amount; + player.getItemAssistant().addItem(currency, totalValue); + player.getActionSender().sendMessage("You sold " + amount + " " + itemName + " for " + totalValue + " " + ItemAssistant.getItemName(itemID).toLowerCase() + "."); + } + + // Add item to the shop + addShopItem(itemID, amount); player.getItemAssistant().resetItems(3823); resetShop(player.myShopId); updatePlayerShop(); - player.getActionSender().sendMessage("You sold " + amount + " " +itemName + " for " + TotPrice2 + " coins." ); return true; } return true; @@ -470,266 +457,88 @@ public class ShopAssistant { private static final int FISHING_ITEMS[] = {383, 371, 377, 359, 321, 341, 353, 345, 327, 317}; public boolean buyItem(int itemID, int fromSlot, int amount) { - int iValue = 0; - int boughtQty = 0; - boolean boughtItem = false; + int shopID = player.myShopId; + boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable; + int freeSlots = player.getItemAssistant().freeSlots(); + int storeQty = ShopHandler.getStock(shopID, itemID); + System.out.println("Item " + itemID + " stock = " + storeQty); if (amount > 0) { - //S4 - if (ShopHandler.ShopItemsN[player.myShopId][fromSlot] == 0) { + if (storeQty <= 0) { + // none in stock, or not sold here player.getActionSender().sendMessage("You can't buy that right now!"); return false; } - if (amount > ShopHandler.ShopItemsN[player.myShopId][fromSlot] && ShopHandler.ShopItemsN[player.myShopId][fromSlot] > 0) { - amount = ShopHandler.ShopItemsN[player.myShopId][fromSlot]; + if (amount > storeQty) { + // buy all that the store has + amount = storeQty; } - - if (amount % 23 == 0) { - amount = amount / 23; - iValue = 23; } - else if (amount % 19 == 0) { - amount = amount / 19; - iValue = 19; - } else if (amount % 17 == 0) { - amount = amount / 17; - iValue = 17; - } else if (amount % 13 == 0) { - amount = amount / 13; - iValue = 13; - } else if (amount % 11 == 0) { - amount = amount / 11; - iValue = 11; - } else if (amount % 7 == 0) { - amount = amount / 7; - iValue = 7; - } else if (amount % 5 == 0) { - amount = amount / 5; - iValue = 5; + if (freeSlots <= 0){ + if (!isStackable || isStackable && !player.getItemAssistant().playerHasItem(itemID)) { + player.getActionSender().sendMessage("You don't have enough space in your inventory."); + return false; + } } - else if (amount % 3 == 0) { - amount = amount / 3; - iValue = 3; - } else if (amount % 2 == 0) { - amount = amount / 2; - iValue = 2; - } else{ - iValue = 1; + if (!isStackable && amount > freeSlots) { + // player will fill their inventory + amount = freeSlots; } if(!player.isShopping) { return false; } - if (ShopHandler.ShopItems[player.myShopId][fromSlot] - 1 != itemID || ShopHandler.ShopItems[player.myShopId][fromSlot] < 0) { - return false; - } for (int i = 0; i < FISHING_ITEMS.length; i++) { if (player.myShopId == 32 && itemID == FISHING_ITEMS[i]) { player.getActionSender().sendMessage("You can't buy that item from this store!"); return false; } } - if (!shopSellsItem(itemID)) { + int value = 0; // Item Value + int currency = 995; // currency this shop uses + if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { + value = getTokkulValue(itemID); + currency = 6529; // Tokkul + } else if (player.myShopId == RANGE_SHOP) { + value = getRGItemValue(itemID); + currency = 1464; // Archery tickets + } else if (player.myShopId == PEST_SHOP) { + value = getPestItemValue(itemID); + currency = 995; // gp + } else if (player.myShopId == CASTLE_SHOP) { + value = getCastleItemValue(itemID); + currency = 4067; // castle wars tickets + } else { + value = getItemShopValue(itemID, 0, false); + currency = 995; //gp + } + int currencySlot = player.getItemAssistant().getItemSlot(currency); + + // player has none of the required currency + if (currencySlot == -1) { + player.getActionSender().sendMessage("You don't have enough " + ItemAssistant.getItemName(currency).toLowerCase() + " to buy that."); return false; } - int TotPrice2 = 0; //ShopPrice - int RemainingToBuy; //Remaining of item to buy to fill the order. It's the remaining that can't fit in the loop. It has to be processed by itself after the loop. - int Slot = 0; //gp (995) - int tokkulSlot = 0; - int rangeSlot = 0; - int castleSlot = 0; - for (int i = amount; iValue > 0; iValue--) { - if (player.myShopId != 138 && player.myShopId != 58 && player.myShopId != 139 && player.myShopId != RANGE_SHOP && player.myShopId != PEST_SHOP && player.myShopId != CASTLE_SHOP) { - TotPrice2 = (int) Math.floor(getItemShopValue(itemID, 0, false)); - } else if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { - TotPrice2 = getTokkulValue(itemID); - } else if (player.myShopId == RANGE_SHOP) { - TotPrice2 = getRGItemValue(itemID); - } else if (player.myShopId == PEST_SHOP) { - TotPrice2 = getPestItemValue(itemID); - } else if (player.myShopId == CASTLE_SHOP) { - TotPrice2 = getCastleItemValue(itemID); - } - Slot = player.getItemAssistant().getItemSlot(995); - tokkulSlot = player.getItemAssistant().getItemSlot(6529); - rangeSlot = player.getItemAssistant().getItemSlot(1464); - castleSlot = player.getItemAssistant().getItemSlot(4067); - if (Slot == -1) { - if (player.myShopId != 138 && player.myShopId != 139 && player.myShopId != 58 && player.myShopId != RANGE_SHOP && player.myShopId != CASTLE_SHOP && player.myShopId != PEST_SHOP) { - player.getActionSender().sendMessage("You don't have enough coins."); - break; - } - } - if (rangeSlot == -1) { - if (player.myShopId == RANGE_SHOP) { - player.getActionSender().sendMessage("You don't have enough archery tickets to buy that."); - break; - } - } - if (castleSlot == -1) { - if (player.myShopId == CASTLE_SHOP) { - player.getActionSender().sendMessage("You don't have enough castle wars tickets to buy that."); - break; - } - } - if (tokkulSlot == -1) { - if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { - player.getActionSender().sendMessage("You don't have enough tokkul to buy that."); - break; - } - } - if (TotPrice2 <= 1) { - TotPrice2 = (int) Math.floor(getItemShopValue(itemID, 0, false)); - TotPrice2 *= 1.66; - } - - String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "shopbuying", player.playerName + " bought " + itemName + " from store id: " + player.myShopId + " for" + GameLogger.formatCurrency(TotPrice2) + " coins"); - } + // amount of currency the player has + int currencyAmount = player.playerItemsN[currencySlot]; - // TzHaar Shops - if (player.myShopId == 138 || player.myShopId == 139 || player.myShopId == 58) { - if (player.playerItemsN[tokkulSlot] >= TotPrice2) { - if (player.getItemAssistant().freeSlots() > 0 || (player.getItemAssistant().playerHasItem(itemID) && ItemDefinitions.getDef()[itemID].isStackable)) { - player.getItemAssistant().deleteItem(6529, tokkulSlot, TotPrice2); - player.getItemAssistant().addItem(itemID, 1); - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= 1; - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; - ShopHandler.ShopItemsRestock[player.myShopId][fromSlot] = System.currentTimeMillis(); - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = 0; - } - } else { - player.getActionSender() - .sendMessage( - "You don't have enough space in your inventory."); - break; - } - } else { - player.getActionSender().sendMessage( - "You don't have enough tokkul."); - break; - } - } else if (player.myShopId == RANGE_SHOP) { - if (player.playerItemsN[rangeSlot] >= TotPrice2) { - if (player.getItemAssistant().freeSlots() > 0 || (player.getItemAssistant().playerHasItem(itemID) && ItemDefinitions.getDef()[itemID].isStackable)) { - player.getItemAssistant().deleteItem(1464, rangeSlot, TotPrice2); - player.getItemAssistant().addItem(itemID, 1); - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= 1; - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = 0; - } - } else { - player.getActionSender() - .sendMessage( - "You don't have enough space in your inventory."); - break; - } - } else { - player.getActionSender().sendMessage( - "You don't have enough archery tickets."); - break; - } - } else if (player.myShopId == CASTLE_SHOP) { - if (player.playerItemsN[castleSlot] >= TotPrice2) { - if (player.getItemAssistant().freeSlots() > 0 || (player.getItemAssistant().playerHasItem(itemID) && ItemDefinitions.getDef()[itemID].isStackable)) { - player.getItemAssistant().deleteItem(4067, castleSlot, TotPrice2); - player.getItemAssistant().addItem(itemID, 1); - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= 1; - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = 0; - } - } else { - player.getActionSender() - .sendMessage( - "You don't have enough space in your inventory."); - break; - } - } - } else { - if (player.playerItemsN[Slot] >= TotPrice2 * amount) { - if (player.getItemAssistant().freeSlots() >= amount || (player.getItemAssistant().playerHasItem(itemID) && ItemDefinitions.getDef()[itemID].isStackable) || player.getItemAssistant().freeSlots() >= 1 && ItemDefinitions.getDef()[itemID].isStackable) { - player.getItemAssistant().deleteItem(995, - player.getItemAssistant().getItemSlot(995), - TotPrice2 * amount); - player.getItemAssistant().addItem(itemID, amount); //All of these actions are performed in a loop. We are in the loop right now. - boughtQty+=amount; - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= amount; //Delete X item from shop at the slot the item is. - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; //Shit ass delay - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = itemID + 1; - } - } else { - if (player.getItemAssistant().freeSlots() == 0) { - player.getActionSender().sendMessage( - "You don't have enough space in your inventory."); - } else { - //Buys the remaining item to fill the inventory slots. - RemainingToBuy = player.getItemAssistant().freeSlots(); - amount = RemainingToBuy; - player.getItemAssistant().deleteItem(995, - player.getItemAssistant().getItemSlot(995), - TotPrice2 * amount); - player.getItemAssistant().addItem(itemID, amount); - boughtQty+=amount; - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= amount; - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = itemID + 1; - } - } - break; - } - boughtItem = true; - } else { - if (player.playerItemsN[Slot] / TotPrice2 > 0) { - amount = (int)Math.floor(player.playerItemsN[Slot] / TotPrice2); - } else { - player.getActionSender().sendMessage("You don't have enough coins."); - player.getItemAssistant().resetItems(3823); - resetShop(player.myShopId); - updatePlayerShop(); - return false; - } - if (player.getItemAssistant().freeSlots() >= amount || (player.getItemAssistant().playerHasItem(itemID) && ItemDefinitions.getDef()[itemID].isStackable) || player.getItemAssistant().freeSlots() >= 1 && ItemDefinitions.getDef()[itemID].isStackable) { - player.getItemAssistant().deleteItem(995, - player.getItemAssistant().getItemSlot(995), - TotPrice2 * amount); - player.getItemAssistant().addItem(itemID, amount); //All of these actions are performed in a loop. We are in the loop right now. - boughtQty+=amount; - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= amount; //Delete X item from shop at the slot the item is. - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; //Shit ass delay - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = itemID + 1; - } - } else { - if (player.getItemAssistant().freeSlots() == 0) { - player.getActionSender().sendMessage( - "You don't have enough space in your inventory."); - } else { - //Buys the remaining item to fill the inventory slots. - RemainingToBuy = player.getItemAssistant().freeSlots(); - amount = RemainingToBuy; - player.getItemAssistant().deleteItem(995, - player.getItemAssistant().getItemSlot(995), - TotPrice2 * amount); - player.getItemAssistant().addItem(itemID, amount); - boughtQty+=amount; - ShopHandler.ShopItemsN[player.myShopId][fromSlot] -= amount; - ShopHandler.ShopItemsDelay[player.myShopId][fromSlot] = 0; - if (fromSlot + 1 > ShopHandler.ShopItemsStandard[player.myShopId]) { - ShopHandler.ShopItems[player.myShopId][fromSlot] = itemID + 1; - } - } - break; - } - boughtItem = true; - } + int totalValue = value * amount; + if (currencyAmount < totalValue) { + amount = (int) Math.floor(player.playerItemsN[currencySlot] / amount); + // buy as many as we can afford + totalValue = value * amount; + if (currencyAmount < totalValue) { + player.getActionSender().sendMessage("You don't have enough " + ItemAssistant.getItemName(currency).toLowerCase() + " to buy that."); + return false; } } - if (boughtItem) { - player.getActionSender().sendMessage("You bought " + boughtQty + " " + ItemAssistant.getItemName(itemID).toLowerCase() + " for " + TotPrice2 * boughtQty + " coins." ); + player.getItemAssistant().deleteItem2(currency, totalValue); + player.getItemAssistant().addItem(itemID, amount); + ShopHandler.buyItem(shopID, itemID, amount); + ShopHandler.refreshShop(shopID); + player.getActionSender().sendMessage("You bought " + amount + " " + ItemAssistant.getItemName(itemID).toLowerCase() + " for " + totalValue + " " + ItemAssistant.getItemName(currency).toLowerCase() + "." ); + + String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "shopbuying", player.playerName + " bought " + amount + " " + ItemAssistant.getItemName(itemID).toLowerCase() + " for " + totalValue + " " + ItemAssistant.getItemName(currency).toLowerCase() + " from store " + shopID + "."); } player.getItemAssistant().resetItems(3823); resetShop(player.myShopId); diff --git a/2006Redone Server/src/redone/game/shops/ShopHandler.java b/2006Redone Server/src/redone/game/shops/ShopHandler.java index efe76307..7f17881c 100644 --- a/2006Redone Server/src/redone/game/shops/ShopHandler.java +++ b/2006Redone Server/src/redone/game/shops/ShopHandler.java @@ -48,7 +48,6 @@ public class ShopHandler { public static int restockTimeItem(int itemId) { switch(itemId) { - default: return 1000; } @@ -100,7 +99,7 @@ public class ShopHandler { } } - private void ResetItem(int ShopID, int ArrayID) { + private static void ResetItem(int ShopID, int ArrayID) { ShopItems[ShopID][ArrayID] = 0; ShopItemsN[ShopID][ArrayID] = 0; ShopItemsDelay[ShopID][ArrayID] = 0; @@ -179,6 +178,12 @@ public class ShopHandler { player.myShopId = id; ShopSModifier[id] = 0; ShopName[id] = player.properName + "'s Store"; + for (int i = 0; i < MaxShopItems; i++){ + ShopItems[id][i] = player.bankItems[i]; + ShopItemsN[id][i] = player.bankItemsN[i]; + ShopItemsSN[id][i] = 0; + ShopItemsDelay[id][i] = 0; + } TotalShops++; } @@ -188,4 +193,42 @@ public class ShopHandler { } return -1; } + + public static void refreshShop(int shop_id){ + // We don't want to remove items that should be kept in stock + for (int j = ShopItemsStandard[shop_id]; j < MaxShopItems; j++) { + if (ShopItems[shop_id][j] > 0 && ShopItemsN[shop_id][j] <= 0) { + ResetItem(shop_id, j); + if (ShopItems[shop_id][j + 1] > 0) { + ShopItems[shop_id][j] = ShopItems[shop_id][j + 1]; + ShopItemsN[shop_id][j] = ShopItemsN[shop_id][j + 1]; + ShopItemsSN[shop_id][j] = ShopItemsSN[shop_id][j + 1]; + ShopItemsDelay[shop_id][j] = ShopItemsDelay[shop_id][j + 1]; + ResetItem(shop_id, j + 1); + } + } + } + } + + public static int getStock(int shop_id, int item_id){ + item_id++; + for (int j = 0; j < MaxShopItems; j++) { + if (ShopItems[shop_id][j] > 0) + System.out.println("item " + item_id + " = " + ShopItemsN[shop_id][j]); + if (ShopItems[shop_id][j] == item_id) { + return ShopItemsN[shop_id][j]; + } + } + return -1; + } + + public static void buyItem(int shop_id, int item_id, int amount){ + item_id++; + for (int j = 0; j < MaxShopItems; j++) { + if (ShopItems[shop_id][j] == item_id) { + ShopItemsN[shop_id][j] -= amount; + } + } + refreshShop(shop_id); + } } diff --git a/2006Redone Server/src/redone/util/GameLogger.java b/2006Redone Server/src/redone/util/GameLogger.java index 0eb3542f..6c220269 100644 --- a/2006Redone Server/src/redone/util/GameLogger.java +++ b/2006Redone Server/src/redone/util/GameLogger.java @@ -40,7 +40,6 @@ public class GameLogger { s = s.substring(0, k).replace(",", ".") + "," + s.substring(k); } if (s.length() > 8) { - s = s.substring(0, s.length() - 8).replace(",", ".") + " million (" + s + ")"; } else if (s.length() > 4) { s = s.substring(0, s.length() - 4) + "K (" + s + ")"; diff --git a/2006Redone Server/src/redone/util/Misc.java b/2006Redone Server/src/redone/util/Misc.java index 4d76c102..311fa4b5 100644 --- a/2006Redone Server/src/redone/util/Misc.java +++ b/2006Redone Server/src/redone/util/Misc.java @@ -1,6 +1,7 @@ package redone.util; import java.text.NumberFormat; +import java.util.ArrayList; public class Misc { @@ -156,6 +157,11 @@ public class Misc { return arr[(int) Math.floor(Math.random() * arr.length)]; } + public static int randomArrayListItem(ArrayList arr) { + int index = (int) Math.floor(Math.random() * arr.size()); + return arr.get(index); + } + public static long playerNameToInt64(String s) { long l = 0L; for (int i = 0; i < s.length(); i++) { diff --git a/CompiledServer/production/2006rebotted/redone/game/bots/Bot$TradeChat.class b/CompiledServer/production/2006rebotted/redone/game/bots/Bot$TradeChat.class index 9284b8ea39a0e8d70bd49e66498792a2dea13d91..77bb9577c1cd1b2216917fd6855216629766436c 100644 GIT binary patch delta 31 mcmbQuHk)lj1{0(4b~UNZ)E26F}}1`7sV2FuA$nalup$p+^D delta 31 mcmbQuHk)lj1{0(Hb~ULyu}24e;(1``Hd2Ghw;naluoy#~_& diff --git a/CompiledServer/production/2006rebotted/redone/game/bots/Bot.class b/CompiledServer/production/2006rebotted/redone/game/bots/Bot.class index 7d9461b047c793b0c0a9393ce1bec821de75a7e6..c1c1b555f1d45b0f5156315ac073e6dd0feeaea5 100644 GIT binary patch delta 1695 zcmZvcX?GK46vuy)gibO%NX0`zDYQ_QrlkZGsZwYuTdf9ATR=d?Niu{$nv_fmRMdbX z?rU&EMZ^UaWDyLN3hwJC@U5RgUwAynZZT7PM|i^INt35e9*Y`FPI>#GSj^R(i6<|v+_ zP4O&k1}c`#Z|JpMcY8LMP&}t)zvQP0MFDYK;6~(LU*XT9H>%5^j zpd-D>LB(5|9Ma@%4w}59c$fD~4lCa01I33NF*&OEh+`(l6(=}Z{KZ#SXy#+ZDLM?U zy3F7dr}@OBq&UNX;#1C=3@Se3oXL5`=en3L_|oJn#n*ge5bSc&=~O0JYhcuxe5?45 z{RTeAR(#J72BZJY(w*vYDsqY&n0uP+ddA+I%VU;BdMjJG zQI=NU86LKY3yU!D+X>n8*!p40m9foEJl_&tXHc1Q64{J1bRx@BZd_W=*_lMP&~x!% zbP)#Q%Mt!_Okt_4rW_*=kx3`7MJv2Rs}!zlQ?_@QL0x?~ zIy{P75WO3@#7b`Jl1%RZO{Af6ChfU;=$->I8mY2sc&i;!NHm+2TQ#_1V>Z`g=NI?o za!w}RZ(xa_c)VgtT}1vaknhc>FI7-buSebh2F=_k^rqr(73T``M7D@Zq2on&wV-PR zRa47EW>F)ylUYw4ai+?@!!%r`vy&O@CCok=IVj)q5t?X`2y+-A^eFRLAg@NPv`Hq7 z7Sb-YXtYR>-$RROFL(tlVW}=igb{hQ!-$5{1WpL>p)0KLgtNUYYRI6R#b6m7A`xd} zlEl>&^bay=?HOvK{sq;Q^@pg}!A?_KJ?j8fjTf0fVt~Tr5>wXf@fnBz{<(30x&_q( zOkJT(N=&ORF@0`8GlPUApfzSjiP25+8&fZ2Y+!(}W*UT)s4UTVQnClUiW{&5x60hx zWTp#cqV3XLn`~jR=$8muN|a>S`v~7Z; z!uf?Zv0P*UR!BNMnj!m@f^HMZDExn7ncQwn{X=FGlw{>;$xdY-dgdbsnJL{honn@* aUnjaS@hY+D63$0A*U4*%c7pVAE&KzTCUepN delta 809 zcmYk4*-leo6otRj7EXKo6AVFvpirow0#cwLAS#N26DpGfB0>ul3uTZ|a40z7JS6o2 zyw?i}MiY%bfH6LWZ{WRg?@92|mrq{rb3y*5`Ja_Lj(_Y&56#Ad+3PotU{w29hWTlw8;C4adB>7_JSQl1-L zsL{O6XgnSp8}fI|j79xz@$hssGCnx(ud1vV@khgkm%Osb7!J>dgEP~yc(5xr8Wm%E zC|T|GMBK?bUvVHH9|*Y@mmXD^SIZJTSaJhpf_sxozHfvm;mo{G zswS+6vlshF6^1(7RZMlLQ&L|Z~#XXFJPIBLX0Vvnt`P?G~_K9lj&l&DJ#2L z)+r0EpsU>lvB67_rBPbp_dfPl^!QY?_5rQ=u-1FlUVH7e-gnL3$@_~l7ydal1XOd; zAxa`lEB9!UVcNJi#8!uGY}f2?(CiE|m-{BrPKP5XWz8;!``K+xr!{FCd%z|?=yI=nE5gk(aD_ z*6q<9Xk~{W$}1?&PGL`b6aYcxb5k-c16&-CU>*HqI409HSZYSC8o&V-Ih#sv_)5> zIy%#dj&!HyJwrD=?ot1|%=?B9_)t+Wp0zd6-WF|5r8}dsRNAnJj|}su(tK?Agd>Ix z+-6wEdTG({DW4fWx8@6LZeW?=OTN;4Z8%EY&`Y1@n4zCdhU0vr$r=V&Y&b!e;beie zr#Nl+mO;Z1gNi~o5h`@M1EH$#IAi#p<%S17(MiFY?vt9^`ClwQg&bZLEArN!3AuN(oafkEtY(e)Acv)9 zgVb!KnI^9V``k4Ae^IJgJ1RZqXl@axG`A|@;ZLdO*xeZGL`Lv=BNU#dxMhH;lcr@U z*%CRj|4pvuc1?5DB{Dt{q=il6ZJ(FdEw%B>9XC~ucU&W2 zmf{S$Hc%88rnD%K<*H$(dA>GS6g*DpEQ2k* zB=m>aa%KA$$Xxa(@|LyaCkKf16FyCO%j^Lv`l+;SDosORj6vlt=+z#_{0-{>BN*$nr92rLujMNmw8-=A-CQ;_#Oj;^K%yh9EWo22J zwBaSg5$|;1Xvj0X>>Um^*0-?4 z@QURq?G9A~nRK=WO@|9-vUaBSW|Fs1QSU%-5 z%jbMy7`2SC#4^qiOQAvS3BI%xDOpZZa=2i}Kqi&Xq-*;3r1oV7YI3`>{oZh>u3>^x zmPuAxzT#`k6yL~&E#LB;<$HcGc$Ode$@@Lj8f>BDCBw1cVwww^!kYsoa%E>{=e#Y2 zVKeOPrdDKJAnzi;#deyP{5CM2nrITg4L`c#9E04 zajK>4I@W7haJI>Yk&WZt0r%KN8|`U zs?@AW=5&{sTiqKgQWHNxt+*m}qp}z9`%{Gxh5r|C)=VF+zOtEmQ0s^rBK1Rr6Qd(%e{qy%T828x1TU2$%Vg}!X_UD%iT*l) zHqpF8er+KxayE(LH;WV@$&C5h2bKDqJZ-*sjz5n|f`3zC*kZV4(Vuh$glFry2eVk% p^%EHyx~tM9<`sxe5*JD47iiQeIlc<6Kk`a>K2;LwmUw_${{=Mk&A$Ku diff --git a/CompiledServer/production/2006rebotted/redone/game/items/ItemAssistant.class b/CompiledServer/production/2006rebotted/redone/game/items/ItemAssistant.class index 4fee9904485c4d091d24c8468f12b65642c6b310..11343921b7c3e5c66f6c795e0ba05f46309964c2 100644 GIT binary patch delta 1224 zcmX|1L(3`humGj5Szu^2B~bMCUe5YY^Iuo zWY;ngQf?OF2OA*^3pK1uNaWb`WjWJmU;a@|ncCD$I+guXes>^X?#w;sea?NK^Pb;( zFJCpaUo#Dz>u*x2(BuIEj>E7z4?&9rlrk5%GKOIr#@Z9zs1Y?Lgte23%i{>5=>J8b z%j4{UeQHtban@CY;C4<4o;vT;E_20{Xs!sDRp@pw!xr0SWQUWQN?`+N8)i@=h+af2 zZO0sHMl$&^mv+EIFCm{^#tPbr`)C&)q!v6%yRk{WYoI-NmiEF=?P|Y_ks-sxV}m-a zUV(XhEY+zFNR-T!CYqYif|8k3ujKKt(hS^yrV`vK#)siR`aU_w>vE0`B+-7PQzsVF zK@`#+r!fNe_$Lm#@{OWBBGzWrA@3~23ZNq}Q7;lGggdDZi>Mz36h<)(VimnD zPZrP0)Y|^`??>Y7<;yq1}Wd^6DSd$T^bxku$7rNa&_bW$Af3c9`V6P(bNoQ3aFxDLiF8IK)0Zlp zzEXMgjVhvV)e1Tr^}kcAiob)MzQ;oPQNaErmwFD>^fNZnc?9SJ4$wvP(Jwejzu`Rn zj!Se2f74}Up+8g{{i$^NE1EjwP~Lx_)4!Na*W{kABZqFlOE*zPx8&crje3b&8E9n_ zdRW6K$KVWG@wLRW%*K_YuIRo?y~M3NTWpfV zW{%i6#l|HzPO(W9o3JYl@jMSnoF*>waW~(ET#3urjS^mHj7D4aMKEzDoScQZoQ-*s zXK=1jGi=zFVixC%x=hriq81vrhC_M@h?gUg??oDy;vO!+VlFer-fg*~Tq+e(sYEKT z#(Z9bEG|bLR~ZkFG}~(ABRosVa?#B}x#x@?nE*_L?2*Kb;^#1p|)PK0HAAkS= delta 1174 zcmYL{eN0t#7{|ZAbI%c;Cs27gas@7ha%*5gz?Cq)zzt()7?jRkdmCEI8b+FK*)0|5 zW|KFIQ>MtP1FnEe?k)GAp5atfB^ZsZkw} z+zd&NK%qLV_Q*-(9I90vlq#LJP&75IbxEhGKIx-i7?V&c);R$~>J`myMGU^|+>1zh z14J#blLaTeg~hZFh4c*z$B!|Np{XM{D@P58YHu z{l<-#TFFOJb}g7uZRI!GLQ}Vu`)yNxT}X6i#6&e8M|yaa6sI>)1;tbyH*?~I?XH^#&sA<#bw$qJh8BgMWR?FiAADVq*xt6hvf=2IZ`p3 z7r@S`;*^Fv*@--<%lHly^CIg)sL9NP##u<_yOGM-NRvK;T~^Jo6_by-yhPM{Ma>u0 zZKWLxm>v+{hj=c=LSBw6_FyrWT9=MB%rBG4Dw#Zp+qfLJa|Lp^4Eemq@*l5@@ybco z!NHHGd*cfWeJ0xk;wY z;59N+Us3mRCxg8PQfmrSocwNZkZY-5&5BH*s`{3mOp5epT U!TqS`0a-;aEIu0A`hKVS4*`)9NdN!< diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class index c4d2411310ab722cbb57d53ba110146b4c9d5ab3..73fc25974167654dbd55259f1c07eff6b0223b71 100644 GIT binary patch delta 29631 zcmch=2Y6LQ(>OkR_MEe)rCgFgLJA2<2#^p$@4YL6N)rU6g(6Kuw{THF6r_29NI;rY z!2$^Z1!)S{Kq(fiV0*D5h)PrbGkeaxxzYE1zvuTo-}8@;yR&KkeULv2V|ji`;r1T~?cDSd8csLiQ%3(9FpK`RPc)3-K;+SX9p3AMci zbyc6CcA&VU<;Sp-p?0QJ7el?pP;WKVu7-LW)$C@d-3|42L%oAicN%IBL+xp(y$rRt zrS?(pqQ?4C&`+p$ThK-I3AMikx2ir$3^3J!>OGb^NF6NHAr{=O4yA9y2v@#PhZ9*N zT2u9rmO4tkm-0tbi7_UY9ZSJD`Y@jI?jt<+Q&3>26NveVLY;(h;3(_tr>e6lc#JB{ zA?R@mo}f175;TvXCoOfpxtqo9z8d)iQ!TWXQI zf^t?G>NAGAirQaI7}rp+Hrr6w5%4S(Sx;TNfuN0g>%OR3_-Ck_NMM@{bxYtyrK0~i zN^R9!FKjJ8Q{iod^Lc_^ppP#S^pd4+S9b`dh!Vx5Y$X)zwA4~{m#OYnU!XvidYOv6 z!U1Lg5xs}V*-Ox?6znt9{f2tLP!AgFAxrfasjpG_*A4Zsp&l{RqlWqh@%Se3|CXV? zZK&^1`k0{}H`I3x^*zFO!ctGFrwsKp)qUSkKcM(SL;Z-FIAf?EQ~DD_{nUh>>Su=f zIpu#rnP(04oTYxLenp9|O+SX;80xncmiw2Xo~PXJDEOX&A1L^df}dy@{7ldVLiGy~ zagmajDEO6v%M|=Z!S6!-gJgKcQm?AlsQh)xzCppC2G6FPzbJ9j@M~ab%+M4}YMcTU zziOJL>6)OxFf`N9EEIue(-()zL{Jc^yIlsLw>m3352#cWeT$~RM?nRoREr@fR%me+ zvox|BS|!32kMhsb5>QLD$`mA0kVHW;RY)NSEl8G@NyJ924WJJL zDY(bb22ng%b2~%4M`(u_+E9vzQH^{<8%~K4hBngBMj>{;cCV$4*3iyGYGb{M{5&BZ zhxR}lZ)o=s+4oyofi^*Jb!IvJ6%h#&4Q-O4O*XVCmNr$JW@ryk{Gh2lq&-Ykrc)um zrOnVDv9w3EnUpun(q?Oq>8;MY6dKwbzo9*DXipg0Ttk~@Xipm2d_!AcXbTN(k)bUn z*2yMm0gtvxc|`vb%34a$GD9mgw5O>*U!lUW)ar5*gWimb%x6wWxY&TU!nXxl-x_ftJKIoOWUsftfuZ;SIghAiQmT6?mw4X?;eTnHPe;SYbQPP_HA?CP2}?J0lOT%%8wH~~D1JSHl97fUW$4j{ z?lbfXh8|<+v1r2eI76>UpDP)9yrCx;dSy%no;El64ZVk<)9}`N8G3KMb-@9tC3@>5 z8Kdd!qxa!(>K8$MQQ!t#$`A1MVl54-60}kx5H5}BySz>1t4tD)s3Pw}uG1M6^Q1BAfz_mxD zj;0_|A5X!3hJL@H7Z~~kN=-EMNfb{eJX0u`YGN=A8)!Vk&>x_04^s9+D9nc~eY)-! z`i$Z>b_az$5||V5gLoKMVM2ejcv@sHrrwQ9rohRlS!_~qpXh}OOAfT`+9;3`lf-5g zH;d`6sk4MWyLdr-qTY6~@|2@&RQ5PZKw0AGk14AhWhp|+G71VQc$$J|lvNDWag)Z3 zag^1{8llf|l$Z2J7*q~iY!e&EtDyTG{c(Q4(Vx)g3VoiVKdH}m^aY4dU#M(w^hNq& zhj&(9b@Zq7fY7n6rQCM(WfT-r@H7&kFUO+FUMf|juMql5M}G#h`Fr$j6_Mcd96V<9 zsBt4wM~!Qm>hSiw0|U{0%DDW39!*mjfTORbCf88oYYAG10l$^o3=;a}j~P0CY<}v* z@u_w5@){Q84;epkV*arH;~f22<+P)(r}7(+TYV!2{6lUBKCCi5Ws|tTbZO-LO)V!We2$2SBfq&~~HDjNa`Y2*1ejOV3&6#cxToY7x!^cM;3OUmiM zgsRyw+xZ!x?{M^Dy+r6c9lccF71&<2O7uozcennsqrXBNW(Drgiw#_^8rS$NKj-Ls z^u0pI0{aNne&usVKcF9UcpIcu*+&E)qEfG6p8mSB$v&IY3;hd6KdYZ(kXevFEKo5cBYUI%rK5kPf9>esP@QiH*}wGjj{Y67{ypXW zKzTpvKLzqL>exR!`US2#`Y+0=z}k#z{)_r0hquGB{7&Un1}xLz50J|Is$X{W-w67h z`%pdWevPuYW1QUuQIA$x$l_E!3 zp%e+BIzkh=&}Y);%EA!_eitS-#SbAJ!a_*c%Bz7vnfZnzA{-Hkv>wZR+K3X-j_~m_ zfw9%<@(NrJtgF^2vM#SDM2sV1MI3{gftFeEft%H0c|}y0idj{8C9K;ls}_$}UJs1U zs=*U5e`NKf$Wh}`Cl(AImY?Q`%9wR9E6Ye!UUx(imj5NINp!L!QbZL;r1GJTNW;t~ z)pK}Nk&czK+Gk*Yh)g288U=t>Lc?cfd*8hAq9;{7LBp>%o?-Onov$t3YsZ4)hQCr0A1l>X0+(}RmLWBC~h+Y)*rl1c6cZt4^=tubPreuFH zz!3w9*n1o?NDOww5HS?(qa%h9hI}eBT#RtUNM%DUM~tHMz4T?Y7~_bsVw@w!ilWG+~N1}`yKHl+8HsQ=ta}4Ibxw$6gZNTld~9ANdK333XNRf@sm=A6^t4; zI(6d6{8UE-#1cm=nb+NwFvq zVy7cYDY1)0aFux8P0)HY+G%;SGhQZXy`mp+#2&F%2u$oFZQM^)4v^3fVlTaw*Ux{5 z60cDkuTyYXEOIzanc@idIpQdhy@ir*(APJq@LS?-A>MJsF_G?w;}pD01>U0qCzOkh zI4MpEfdsvexWoq}y$`9tM--r$72;z@e1ekYpYt;*L=y`6Q=;xO@wp?uAm}Uw=g2J7 z>E-{D2Gdu>;@4y=TM(Xas5P>+;$Jvzi1TRu#CP~XS+8JU#@{=5^5EKI29Fz2yUm0N z`2`b4jUU&cpkRD~5Z^oE2c(%3&HOWFJp|2oyWK@eGE@t3&i7(fBTq@hs2Q6`2;kVb({ zfxuB{7)Xj?QqrOZBPeNCC-4N0VZ(8Z2$CBovIRm$q!Hy9(UfeZ>?v+uZ#t{!Q#LWM zdybztcuZ>7$zy0CaT+J-#f`H9T^d9NvBDfwH9A?m5d3a)s)o{9$b25@!*Y$QAFn(V80lw(9WmRy85w7|{b z&HI&cFj#U>UkcJ=9!u7fEs~bhlkHI3^^{=S^<;~x6p{u?9m(i%SH8tdM>J;0>G6>x z1_T8REX(6671y7*7DswWuj+zz1MXyT6>p;2DnfY=m$DcN<-|>tuA6~&jWUFCGP=5v zVqncv%4y;!@YJZPS!I084eJS?*BVpa_d5NPQLS1~*$Pr(3!n-t#BsI=YQbVz&mC#G zUcD+1rQmh|X<*8S%15Y!n~VG0dw|%AAM>v4z;&o^tzfuv28%_a*?2M7Z3ulVs~T*R z@`>^(iaeUFRz6cc$8L*ZE0r&B{HsurEmzJWq(K5(rr^wmou9-4%9jWUsKOR0Um+F) zsu8GAY|PE)!7^c=Q^+=ETWLJ_c)smgZ!=Y9l4z==du$92p2?@A{_)F6L z_JmG|F=k?V*C0lKhN0RG72NMhF*W3X5Dnjk92Xptmxdfy9pDaMG^{o-T0uy(k4_wf zXuq16-mpyOT|+YO?lvH`$RSYlE*9JctR!s*rwMvaR zY*OQBLa_&GPHx_WIvyt()Q8!q@sB}GRPZ1H0NEkFvblz{D+7~OJF@ob$tl@X+aey> zTyWUDFhdX_rHCK6;Y~p2CliBRrexJ7{O;uAv4!dGIAOYS>&|i6g*X|<-LKoylsZ`R z#FR>zWt63cC`;vztjTDRCd)@mZGq))othY$XTsGtCrl>c>dPa&>P1r@#p=n^(yNyV z^8T<&IBQhC4y|L6!YI!mj-1xCL76OGLo4!nm=tSxv{nI&M{^%ak?{&%V;@f2g^ewI zpwU2Tj0XC2NaHcc5r;=0g~uYK!YF7iRe`i=qlc|4^y6{3vT+T19B6;SD8asBe?le3 zBCkRusfUS^VI>kuamItW3bxea;hRA#%5H%!6046b3qfB(6E_b{QZjl9XoW^lf*g5~ zN))e*94L^i08d0ng$#C;wFy>D z7{y9B`Vr8Ij$zw*RfHTE&tBl^h%f>Q*jAo_P?WMeaD94$nkjf@;Fm|M2U`1WQIXT= z-dudA{}Nfq4v$=r>^u!o|BfBhzjHw*5K7=#DEvrvD#!$TJ;cPTAtvUAn3xq}VtR;) z2VEwRhp8?P)sTrvAtnk!OpFgQfdXs;z5w&b5G&P@m27g3NL8&m^8j-3)y&#qgVvkS z)RU90qe6cQb$ETmZUUge^{C)#kP3vz#3L05Nh&1N0Q*OULrPoT5C^KeqHhE- z@$m^a;ZZO{6yUI>k&EoyfIOVQB5XB-)lZ z;ud>k88}8`f@CQ%L9!6?$U?{^YYJN_iE-zkY+8`a1jD05k`cJDAW<}S1ybx=*qPew zxA?VD)Fz1{*d~fXX%uR+QK-#Ep*9-@MWHm}t|+FUT__VpZHS=O|1Jk4ATF~0b^OA3 z6HgPjJk=A)`0J@E)yj0Qo!ht^C%7}Z4sEdly78nUwF~sd3PpkJwp77YpAJE4p+k^b zgggl$M02yNJ~%hmMP$vqsY@(LYZcN;ehi}cajBK=Bo-Y)8y!N68YK0B@#Y=}BbL-G z8%z8IMDkM*kN$u%eiA%9jQlE+i33a4BNO>cn}u12Kp59LDE4*eft0rNY8+iU0&CP> zmL9hB>K($1o(YL}?6Qtyh@Z-|?@={~QFTaAaq+7fkc;X1sudb_2@uCyBQF}R+@t6` z0PDm+B5#WtO=Ge_7(EeyYa~;^2F9+S%o#b;WrG*j1~;E$3jg0XpLF~p(Y#hT6uHZK zI$JL0T$GNBZ%i+pucVig2=kqvYv%ZkaXZpDhDR#geB*fdnJDeoQX7wpg`Sh0^M($ZCZuwvxuaB+4FRqQAi zWYjAiaYN#6DLP6G4-+R25Pnyfeip6Hx~pu62T;kEppq|z>gqD6rxrp}b$OTx3v&X6 z`mR}d6+kBtc`GHO32WLSz5UlDhA~BT}{r zQq;{*L)`*->Q+gWI~c-Hx*`Y;210pvNFDD&TIQ||mtD9j_9vlB1;ir?nxRn@2O<b7ZZ1b`2tKx4w~Fmh{KP$RMcBM_~mUYC~Us zFRsza`8XCmtFH5LVW`=Kd^DCLK`i8B5F$Y=9FA~#hLv~Z*(zV5%L(O&O1s<23`2=djo27Z8QXM(M!$2vjS{oaM znc~Z+3%{W*{0^Dwl`vCW%|#pR{Y*rF$6o&i!F5D{ena(7L~!%JBbe;%=GSbTfNaEW z$`0$SAt5$~g!+4kbgz)qhVUt#)P~6EFzAfK1qk*(pX%x5{7nxdVtaGF4rL~CObGFq z5aKZs2_YWCr-dYiv(|OM`>u>mpe3gXYpMmdYz`YbS_=5IDv+Y3LJchq^0f5-Fm$9> zHz+(BI(XJ1QATZgNLVD`Y`?i7y(p@^xa2?1pOEB_ z+)Cp3VyjC&?kJJ`Mv{CVlHX2}AC34taS#+DKR-l%eu(`15c&Bb^7BLF=ZDD8=RxxG zUGiH>)Isv|xg=la%|%9>e=>5r%LtwdOGe(_wgMR$@qE3zNcCu+05CTs^SL3_n=8pD z)tf8HCrdC_uGvZEb7i|>rU<3PpY)oz^gOLI`@N7YyV^bds4iti2B?1M^dq?T1n3=V zws)x6-l1lDhnnpj)@-@nYU47Amq3U~Tog4yg;k2x7xQR`(qQ}1PM#rRv#_(tKZp*3 zAcT7r&k-)AR{@+#NmZ}I$jUj5Q(_Y`t^-;%zQ9FY+-^r3@-56Ro+G)t56x>1?w1Lr zhK|k*$(;%-poPpcVH(^c^9&dXllemIB*9|58YbNIY8db{G~Z@R>kj?G$)24N?nF%=I8^JBmowzg8D9mZr`e29>nnQUog0for^w7?Ses0FgH!8A(ItYkC_zNob=?)uTTHNkkhQFOxT* ziFyr0cvfwf1-w!qb^4ZF9gu@XyQ;MFdKr=+T2f2eT|cDV^(7Uq2<72flx!f$#a855 z{Y$$(Kx}XB?ja9K+$s8S2*+W*!sQqa^OcfgK!{EmX@nf+s}ORnz5!~^br_|gTZylB z4L^XWh9l0zjn$#Rw3n;ghN>!4Gf@X8WA0o`_rQ3*mtKnTy_kO5OXHcPG8@w?z4Wtg zTxkNuf#|(GVpU$V1e8)pj;>S6h82OniC+wKeWmr-@iL!{NGfF`=ftv6qj$r~1r4>N z-K=jZ>(^9wtHqYG(aWJ7B}!P=7&c}P)a|UkNZ&>)75#V|pa;5ZE9wB2mHOx=fJ zDKy^A?hmBBS}hR2XLfEube+0dZYgXh1Uncd_1sc6fs(u7{he$uL8TBIt(UTifw%Xh zW=^V!Fx1|pw4qN(-{c~tp{!rZrX(eovZ~PMy5)JU``>t`I=k7VK=i(9sCJF^CHu$0Z2dl1 zq~8y#^a5C|PlV0-BzRGu0tfY}@SZ*mPU#QA2l_*BQGXcz(5Ev^pTP{g32EvNu_%2O zi`8edn)+j`o<4`Q)*ojx^to)l{v=zW&u1^{3)rjrLUux5#JMN8X`buR2-h6yOU#-m0*D5pde&PbWp12Ti6|T^?E35Pp zWwX9h!MlXYF8yWY5Z)ntPv4`Q&|g(P#yf-O^aIMT`a!PXH9<{(og4aLo~|F^HT0vr zk^Uxcs=vjXVO|^k81JYb=l=fsyF6cij~D1C_zwLP->;wM$MpC4IsF5ELH|(Y`bVly zKci;qAFK8BPt;EOXXRSD4^*Q|;b&vip^`QQvTme0R z-sFoAFSiT^tI2xvH8@~3R*&7r*P@3&hY$ShIlc}}t;*Ab1$lp#?-u0wtiM~38|-Db z9FE6BLHmG^chsgHl9mEzP=uZ(`yj2~K&V;?&@U685S315+jFlm&&QW}1v;U#{ywyw zCv(%%(xR?FKgEvx&!xi)r(j_;Hh8&6n#IBcx3Px<-yduoID1e8HXif^CLg??;tDg} zf%=j+xMSEXESAbNB;{x z5e#k!&XR=2S_p#;6n5E4lleWd=xiEak0NkQZxo#`H)g4+RpfuENHSh!B9gJe=`?W% z)*eb`j|KK0ijxjsxf>K%O+-Tl;e&L9YlzrTLyC7+hw~6#u8%I*W&$8V#ED6 zK~?u#bPStc3WNJ>0$(TttE71p|hk)Yis zQNcF`K02E1FPF86gy?a<92!wkxkB0eKM7$=h*!7HbNU)caKWwW8i*v2?_^syK}R=t z+j2KE5p%a~f;w*Q^U+ql!RltANAQl{JALsQi4Hh8tGEmRckAVqY5T+tErx)XE| zouQ}bf}{8r@Q)R@!gSFU=8EpHP27%#_)eB6da#kA7n>}4vqwcAwm{s)mWh6BmAIR2 z76aH0F_671hOmQTD0@>3V<$vD`$!CDUy2dzf*8sE5~CDD+^bX+qm^_qMyW5xDy_vh zr90j*?vEFY@5QUd6GeftSxoXP`^04BO)*6|C8jE$;|<~;@B;Bw@gP^lL);P5d9?8J z%3=oIJb#2Y6OZzCVkYk-X7Stc{%}w681FCK3k9^u?uk?ER@_A?>@PgGbgyu9N5|DR z%0t68z?(~Q@jUQ(IhWKX_jf8p{t0s#ZgX&-b{$4XRPkMd=<9Gt_3JPpHMVjE9M3O! z<9Ya7>GgJo%iQfQ)I-*Uz}>90h}CwXT}3R@g?0z_zLn#D*)5x?uZB-0$X+ReEP~Lc zbG4N1@nAI!)*5S<) z^>t8_zLl`o5_4BUyjL!ih2yn^jH@eEW7RI~=(Fc9MN$lTyh=d^Aw?ohY;<7D0ARpR>&8JQc)-L+TYOh4CqhOW5gB_WmZ2(j#NFI%u3vE{AO)o79SIQrGMw zP$L^nH2yTclzq@A8_P$dagYR1T|7X~E@iDtnJdV^>&H@}J}QE!?4w}sVQ2d8Vjl-C z9&1tKB(=PoebUFJH@Otf;xLzL62m^DML;S09RL3!(C2tFzogftlgcYQ*;y}^93YMR z_M&k(hl*MyWE5Bd^hcvG7bntrIFUYyliqwt5(^+hEQH!(5p)uZVSot02(bjlils0` zEQ3cyAv`IbhNs1HSTBm;C9x6?_{B3gov(t=#Tqy-*1{#R9u3DP#>Hk9CAP2(glmcy zSX1#5>nOIfyK(W6FJ5M2#4Bu~*u&&_BeR=3k1>l<&po$|byOep8&~vEmz^F23bi;$OV3IL|wZ@Az%vM?OIO#K(zW z_zZE8&k~pTV(}|qE&kwJ#Z|sjT<5QfKlx$t7k^jWy#Z70Y*_eQfV-BZ1LD6RM|x)%8y8$`;`X3O+9_O0s<#D~LxHjH z)yl}Mn-YgE3p711x~2ymB)55s&NryDOW2ozeedn}e;Mjvyd@lqKd7$&IYulrGUA}E zQ4u;A@o>A50CyXeVW5!&ql{#jXr#atBNZMs(qO((6&4v8u)@fMjYc)tVpN9`qXz6Z za^R>@D{Qs(Mvy)0SYA2MEzm#Z)RWQPB%zFgaD_2r2>*w?jqZoNU>`>IJh z*f%cRqpw=_RSo+p;U0apvaed$R|)s%tCxM%!@f$mM^lwI)Ogi~dMx|4iEt%!z6hk9 zDPiAvwxxu9A9(v@J@!N3=E=J0KQ4!6aprPJO;F>kx;$4#YObsd8xzrS@Kd1YskU+l z(G8b>VB|rZQ3nD>V_0T1f#pV1SY&W$Lev6YgS~t=Zb(hJUabkn zP1x)08*$etPt-Y1kgd_80zE9pt%R&KwWV;~>fNqa)7y%hl0IstUcQH30wh~?; z3yEMqKOhHojSp*-?V?Q%!c@UDHSn1_#F~a|n6^rQ-j3iED%U|md*pa|vDiKAS8*vz zCd0e4k6*iEPf#hjo|cM%62ZCnGD!vFD`ejkMYb=mRG1N9n2``|MnSyk?%>`1WZ4B5 z{Ba}EjpL{Z4g>PwuJEv3r5N`SSJgrNcCxF{b=QL({t5LpaZt--$|_;kqK%QmS`u8! z{MWe)+~EA~?%gE}os$MNRO4hHmaspmbVIU2ahhBI>N=?AR=OUi_0LTn5s; z>OM=uCD!RO11>w>tc3i1HC-GLxXGnLGr#nJLiMtO6s=G?-#mh1q60EJ3)) z%#akD$*HZi+h3Nl3kYY>piGf)iEVBmKW;Vo_IZ(~41-WKzXl&*|2eS?e zvMvlW>%j!G0X%9pghgf}SdFlMgV`h`&BKi?2HV#R1SeZ0Y+7Y1I zRsVucct!A1Dfbdq+{pk!H+C2z)QXT0Obz4Xs zw|SNr^E^wOjQ0YLN_9-dE1dL`7}bwE*aE4e8eUIsCv{Ypvlm_pw*Q25#{Pm^rDSWP zJ$W-E+5aQ8^_Ls{|5pD0$AjNh+de4$yHIWY{ZRUMqu%yMy&Z^pdk^aEAkc07dO~#~$($xhb|;#Ct}07y6m*l~uGY92nIQMz1 zp9q@z?+AL}-w`zVKM^$Je66$^^TSXk zd&8B{s}&xWZXOotFF-?8mBg=>Dz1@Iba$pEpT9d%FT#mzF;3J^K_xQ~hC4pEx@Gih zR}cAE)GO-y8nRCnp^{(ChbE#F;x>63Y6W+oHf5rxA+F4BN$0+~3`b2NR5YJPbG00* zn=8Uv^nM~CdkmK#%`4)sB>2f-+lu3EtXR(-im@C9xmxvBk?V{@=Zxz>k-k^O3>-gO z-ET?OcPgT0sUjB;yA@{>xT{0Jn%^O&BG)rV-d07rcXun&Q-~ReY5`$D&jJ1}Gs@fb zm$lQoR0(-56rWoXogiy{&NI?&5mFL)~A6eYhHj@){h%YjF}-2QAEJ!Qa7L54V{cpqIG`?b2o# zYHmTh^c*~FZiQLqHdtsr4=c3#0E>mqT;65??cTV5uaaQy)ifia*R=f`@X8Pj0l&e_n9~BpTn^--|tJoPUx_s2q zrDp@pkH?o(y}*fY6RTGD#obm8XN`a0jQm$(ee@?1`@Xx07GG6|rJd zU;Kn}6`TFNqCA$n8*}j_%@;qB3cIsHjMCggS3u~Lqlm7BFM3ZobS=Zt$uUHchRp%d{Yr$YhV1-a`@VW<0G9fhc13vIJ&kTc~d018Z~45N;_YCw{rNfgUbuJ zJihMX_&Rv_ZXn! z{e8R^w_-)oPV~|2_To9Am4eb6@S>UdHM)krK@uBw z45!Tt@S%AL&Y73ts`(qU&C4v({GBD4S6I4vl~pruplSb$bvAFZei#q%qq_)SqGJUX zXOk?Q`7MJLS|;0q@ixn1uUHN{XhpD(tw?s(ief)mK6c5fz<#sh*iEaFQpt)}YG9mW zB`8g;M5T?Dq_nrHDBY|yWw=#UnTqj)R=VY_&$62ET&pRsW3}MTtk%4T)rRL|Jkn~*CtL0L z!&V1A!|KfETDS0Z)~&n*<6Tx)e%R{9-?6&$cda}58LKD1X!TOL)l=22-fFCMmzrqx z#YdC-`|(BOd(_s}AoWg+ds&0=t>B^Rz1A>wtTjTNVvWK#d+$}(V!YlOt?sbKsxMpP z@PXU=)g#sfd}wweJ`OuU{neVJF>8uuSX1%c)(7$B)ravp)ahC)jN9U?i?>^k;B%sn z;%lO_@oCUG+C$dk+5(IhTmC2Tnap|GM(as@33H)VY%RvOCZEFBAs1_BtpL8;xK#Vi zT83{fF4q-n1wL@NQqRG-w)KqO!dk7jx7O&LtY`H*tPS|I;6{A^Z-YMF+N3{eZP5eP zbNVvtd3}xblD^y8uD^xxF>8nZiB+P1Y3wI8#Y+vDlO3e*WOsH_}8Anwj(Z6#<0twjD0dA?zd3J_}{3+ zk+O``-zj6t@1YVWWJdKrLK%<#K_$+VWz@Su8FR0MN_;Idnq3WLEWJu4ek{xAc#Sfi zxfUw%hs@}9J(RKeI+eItmeKbHWxRAFRKog`G6w(I)9*?eZF}%eh%XvvrmAJOVIUL& zSbJfZwGZZ5`=Qi20H0Y0;Wz6Lv#o4^#&Viy~*ZUZ?SdO+iW++d#qz@ zpY$H-O@kr|fWwhl#qdaAOth{P{qI_+As@$+X;}xt=d7SkH zkGH<$t*o#3z1G)!vGon#Vtvc^V|>UukHhZ={-gDyTFLrJZE5|C?{;5M$6!3(x~M*F zT~fDTyv@3-zG(fSerR3MxOG*_wyxo$zSnV-T+;?ve`r{OOe?V!?Nb|H)3jCH zwz(c@>$=Z2^(MBZ=i9bEA0PMIXh-OKG2U-S>4)qJ`uBE>sA$KEmUf)zV^y@yNZ#5ahjcGWY`%-S3A>~YF9JX*jdKQc6G!5E&?a*n#TKf zE#pr+*Q{aJHt(?W%zN!R<_wHy+V#xG?1ttGb|dp+yRoI%O{_$_sZ|H#`gU`xk=@F= z$8K%Sv)fq3c3bNmyPfqV#^2Z-tn+qfJKFAIH@9!GhuOE<58GYs0LIJgZuWBf4*Q^e zr{Dg`?%~AQJ)K;;m(w2OPIe#X7Q3HQVBhVmvimzn>;cXf_CV)1jIY>(oa^?`h;(~c zM0YzsVv0RHVv#)}Vk5>|>`@Wh>@g9i?Xi(ykBh8skB@9)-xt{j<9>EQX}Vy7uGH4D;I9?u#__ac3c* zDW^wa=m!nn?}Z8CpGZfR0&V!G0OBQE&|(L43TyK;_W5Sz+MV1 z?Pbu;E`*Ml*VQhPLL$0-_)CEx-Q9xX!bZRF=x(2b+7Ji+!=S!Uh;QLu^X z$p1qjwZ%7(zMkPVT=79ykMVz-S$b? zYoCUX?GI2uAC?ILynCLg)#rjTK!|2<1-io0)G#4fprH_Mz&I&_v;1qRTc2vIdbn;S zm)EW2|0mr_7?_-kH*_3y(78I6MJm=gsA0*ZVGZ3QJ;+V&pF1aO=z{Ke#^>p^{Jsu) zxyf3|a!XzIO&M0WUw8E}xx7AJ)?Ix>7s5aF@l!~(KZn}(7ieM5K@0mU=xl!tz3p#c znEfpbx6i|4_V@6({Ua=}e}ZT1pJAJQ0ruIyz-jv;d~M@e+Wrl7@eiihSD0g8WzqI^ z)WttpJ^Qb+uIR{uJ`!LJcpJPLK>FA~_63J$;Az*OuyR0c_KD5}_v7o8rKuaeAx;l~2*NK9AooJZh_+XI}3mcp`*y2=z z7o2$5?IgfnClNk&lHm&{rA#3INjK@ng;dV}sGHvgoyV}*b6gLUTA+;JbyY48dP|fM zY8b4A!Fm`h!eGOL@4;P`GLjJLyV*T>=T#X+%PH5JCeK)$s^B>I>jEbOGMr4vbE-je zCkr||)!}xh1`Kd&N-o_4i-DerXZ&BTceAjL%~BhZr(T|JI1R%JM}-QX5Ak>ed8FgY z_B)i(g<~w%QO=fCDbHyNF-|i`aGFCErv+p>Eg{!w1uZbYozqt0r5Psy?-~T(c}S6F zK!;3xp@QBs6L__zX6VI-_HO&qSMS}drWYUTxj(V`-erJ(UeE;5qW(hE4rR=4=!oII zIinZkmbo2W-a7nS-hOZw16chD>}fjE%Hl1Ob|_=lK^45ekyQ5x_+(t7j7!A1C~4a) z1y4)Q$_E>{au3N)zHi}l0n@n!e9o%NGkNir^NKW!>YZ{OemvSFMx42N5uFHcYXAoGUtM;5|Ga z{|ay5#V8XBe~)BCvnF=$(KlMidvrb}PkxbEhL@EsvnCbJh+@_Klh=W!Zkwf|-hUi+ zAS!=2;Y@{f&Vx|uJOqcGhv98!Ivm6FDd&-pT9o2%K`_-_vr%M^L6S2E(wxW9_Tigyj{7nk zjf^BPuub;@jQ0{7c4kffTS#~nsm*Bbx32E1NHK1UzXuNuaAk&%R3g=#6SrcB4`URb zk7ikHN@28*RqQi0w6parz(OSFDX8WIpq{e?E#Fe;*qxCN;I+Zz zx+Thk(be&8U}60jmg*~?hu75$BVt&BKa}mu*gZ%VU+$gWvvbM0Nx_W;>(OU09_1O)zoL9i_yb8}d2cXz_4GuW3!&}Z_cn8a# zblz0z(A7Fx(mQZOIV5ETaN6V4fOq&c(l4~tZ}IC0;mw7@+*lSbZn!E{cv~zEr-!x& zFHI;9%biMzG9B;kXS)`~Ulg_{ni1R+CGJ!nqVMWX#kDHRLq+ayY)ashBKOi99wNsm zj|6Mr!ogprIdX&O97C-+-WxmWT~wPBs2(SA$#e>OI;Ww(^8wuFdkKi%q<1nqA z6Y9u0k|}q{;)`){Mhki_=udBha!VYmWnI8IG7^90%6=()B#y<5Et?)c!!^q1*z^~u zp=Y6v^BHRB*RmOsXFNW^Mo$@&;c60Uu!+=1(wrvloL06Nu;nk-@i&h2E33ae@v@36 z&HpGl0oner7T)#O-ac(*sq)zR;2FD@c0ZStue08} ztz160Mbavej(7UypSBXWxpRVS_Rmck)ZJr^Rzz-Z|AM?-MBaWyJ8>D+`!`%G{{h{d zD=^f#1|yv7Fv+zgz+F$w4DmhFyWW-n_u@?nsmqAj#CN=IKwVZd1^-nz7LvnG zPYzuYR~D|W#7s7`a7!iDz&|q)NgEa<4eQG_YXm-z7l98IN2m}Lfh+k49jZqdkP~4- zvj_`1M>t`2B+O!Y6h+~yLS+=;B#0DMWmS+MCAh#~E07?Qb_#pk*_&j>zrqeE93PL~ zg2xNz#j{!|PYgnfQAu^Td2;y7B_+X!g3#siMBxYVtd;-CMEu2MncB$TLq_1U;t|mh z9pQtNhzgJv5d-ZaVxd<=91M)82!kUk!T5*-D2PaesS(NeFm4RYk4S~5BGO#pe z0jnc2;rWPaunXf?BC1P<>E>oTXs>ddEDgMIF;P{OTJ)B11$ZK4ZT5IQq`=E6J|>UW zCK|S?x@T<;Ca{?P^cErWX3-na9B+1CgIF9X_&WkzTvE@8prGI|DK&P?cvqL^g=|S| zv}cg!$%{94c;5^2DznOLUg516jh=@a=-~a7=xnXrWgNGsv%!kUfz*gvkR6eWy;~bP zM&v>7h&m{wx-c%HzGU3pos4%mlVcpsOKRoH_@t<6cr(R&l^Ongm8b~y<)FVU@go|A zVe>9`L>sD!|8$+a1&ps3;Svv-l^2y>LcrZf$^8NTrjv}jONyr2a)EECPEbU#Gc#juG!7OqZYRoGX%_9wDW zn0Bv_S;_3q)X_Rs^1%kI=7RuM^ug-x#mX4cIHa!7m%LI_oQuc8#C3IbB4NE48za1kjA3djXQQF;{w zArL?iDT0ax1r)nr?+A+0c{6*?y}9|?d;jnE-ix|B+h%8GXJ^~o;~xjqa|hJGiCZrp z1b~`Gu27>)WsVwcDbJ`e1o=#0s-K`z6vR>xM?pLV35Hsl;zUzTQp*T6*@9>_g@RN| zO;giNgfb{7OL^riteQzsmZfH^rw0al+%EMh7>fSvc`tm#88_GwV4Ig)fhu zfMH8RZAGcphI*%=wlUPZ4E1hm+160o8ESh&?Let}4E0_^?P#c-47IbRc2T=hXWb~c zPpI83XrsmmwTA_Ft1*KKa0QoBbm2)@GZ3{Zm^lrxipS=7gq z1U*I2Y)hS^J}uN|EO=C%ONn_j#Pg}bv($0{1wl$Kq+k&dx7bh%EOm*xlya6C>T*MU zj{1F`Fs`6rrJ=5(c(n;-qt!Juv}>vII=xAER4x27)b%8=4TicgxLrvIY@*a=y~(^L zvY0BrKsdJ$w3P~9BxswZZdYFt$`VTKAZ6Q0L7}DYQg@qbk-C)vS!)kf*~&hvapLiH;{OdpebZ1+Q2H%H zecMpqG1PYn-$_e-PkrA|Pf^>`hI)qL4-EA~>f)@Senjby4fPWfI;)==>SvVyIc0uf zs9##@IrTgxzA^(Cer>4VSXl2{L;a3&zo*~_3Vx*ECklS1Y48g{zY?n7h=>c6{GEb} z6kMX<4+{Pi>SdDQUzYl}dWGs=rR-}ITsL?{%DF*_n?^vrWvI6e4KS%O3KT5WxTUF@ zMuBc<+U6NDwtYD zEtl|<0nzfPa%HNLPf!(0tEi@66?F%SNDEY@uo_jYPC*SKm&}TG2SK$Atu|%XF|@jd zR?pDt8ycAtjm(MG$j};7+{DnDQmtl|)?8~rIV~wbOA@WMwzNC7Hk73Kt=(;DZMAl& zTUvVxI?ycD?xEmb>aQaOov3za;-U-j)0LoZl-Gqy@1vkQj;z)LbwazJ3VKq|%g}mL z{D9^ThIo(A_A#`+6!)VR{S9pZB?cPWgN8N;u?MulmNrB~I}@!v5v`4AtV^nFfrA^TSmNr#;obskw z+7sGzz3~q&VTLxt&}JIiEJJ%Tcu0>A5QAiSv}ZjE9>Gx=q%EMVAVCWaZIPiZrcv8V zl}k}41tyAeiKQ*omQls!l=mD#WRA2IhPKksRvFrALtA5LYYlCk(9rY@(l%J^Ic+1+ zwaL;pYcE&<49VPRTPb+a(6$-cc0+r~&~{M9P6`Ss*hRr^!d|2|$#R*YtUZKwFXiu} zY3SOluhp6B%K}V?jqo($ncFcr8w07KMTsc6cWP7wXsPdbZc0zlL zFu#o!M|+2wy-S!+67(Jg?^C@~hIZP}&d~h(fHFTMtv*Zb$P#HEQ-HQ8TKg1N5N#Qi zeny)3InBku7ef2eVrOx!(#~n;snu6#K5yS9=xYkTp{CzbAcyHYp)4>_Gry{6$Uvrr-)C$)ssy(zNTI@M2a`iVT}}lY(1R_cjJPk*1?{W4eM}>YS1) zL7JuO`rU#+g8~yJqgyC`-KL~t=uw6qZRjzE?lW}1p_f8Kt;ZUA92LhKdV-;sHuOYF zB^i1dBe>k$C^2<1^v=P1thhiIy$grqUmxW5&qu(}yBa#qWu{93yiM(JE~n`|h$NcJ zI?ZLh7mkbGn}P=@=woUZ^}Z+_y&tvcPr(4HH;{q{xpw(Ha9}f6aZrQji2Ok~h4sN0 z4AO^C?V%+8trTpdCb*@D)^UbM>%%D+Vdx_beUza;OsUa^K8E74gy<0p#+ew5#~$iT zHS`HoHj%O?3H?z^e@ve&^eKgR*)0_o2+oiCSv-n+E1^#hQpij<_tuK@goL~u9uO*037{!>T(5jzLKC-81OdS3~otJE4^Ad z<>+fDdoA*!ufu?UfMw^>r=+ddH#quweItYDj3)ht^=&es@5C_~eFu$n^i6zi@Ue`w ze6zAPSg!0y{sP7e%YNkB;wWeJt&aX8q1~pO3O-h@QtWnqR_HG|`VM`k&1JUbSynUcwSLHbM%Ays}66BgenJ! z+Cx<9Fy`q;l=Y5&RDUgaS7!adG5t7$*r9#L^{q0j?}$NFT2AOcaMai#BS$#;>-rmx z{wB3OLBU%TyiLJ76ue8pNebSh;C%{CQE-}qGZcJ4!G{!_B~g7u!N)WVpAhsZNiKd4 zr9ZB}SBpc0>$68yr`@ zI`?rkxTSpU=&HP$5PnCL60r<&gVid=26;{rk3;22&nc(JlR8(B**$Vf>j}yc23ayW zJ13Tx###?oNC_Uuv3VlGCvtM^B;|-B%22bKvR+JuOkc7iQbejF(s*A-q$4@aD&+AD zQ5GBLv@VB3BQlAJEDEwIC{IBS4xFe!r4jOd zuGpe#W6{JBO^KUk)Kzn;*n-ftq+}~fw#IzGP#+!9iGt1)bfKWD=;ny~2zhr(_7L|wq9>8p%MrcB1CHn; z`l2~>L_fmNpXv+{10C@oB?skFdN6@Q#85{(B!)R+IL=ow0t5b(@}eU~VksY^>(+xM}n;?O)ws&CZll#k5{UXh0g`myw-uS;t?UnIbu9fJ%LD?NWmnu+~P4uOs4E9 zloJqBg?QW%($ z*=Tsg9HJLZGOG47Vs7wcUS8fj)EoUZCR#6uZl2M^3}#Is_7BZ3?? zfZ;GKJgXY?OAWW*RptP-{ms~xe1hI1{kfMX@ZI!CNm)(f%05gWxOM{E`^2(iTx zTb2EVsrl_$=@-#zh;5Q&w1{Fm$@V3jcGId%&w7<)vP0|?qRXM9>f(6-ViG)gFOElsHU%9HHQ-nCoy_A;oJv z#u3Me?2VK>PNlC?A&{Wch)bLy>3u*I zKBNHctPmeL;$xI7|BRnaBbrdipAdDQiq9PJIYD1g@FkgqYF(L-o|a503Z|Y2!p2pGd(5YWEX0`I&-W_y9-zO2Kc0 z>jDM8W5COZi;lP?R7duh zpa+Evc{db-I0Y&N8qPLDM^X$yNrQT{DQOaP5~r$RIfhN*VMMitkl`3njuB1ChRVLe zmNllZq!?vA1H1Fcv3-YSv>i8$_6etyQw(YZAFrFW;Ew)!H*UJA?83Qs)Uuop`B_x* zDvseZ{K5Ac_Yai90p_Q1fQ?vD)iL5wO%1fyj*)uG%h1BM|lR%0x_T{ zxTQnLM;khf8Exlej5|6RhSW8CgxY!d$%Cy@wb zj8edE5=p;s0|w7xSL>AZ7;XsK{ra+v!QuU~t6YG)pgeSd9Ay(WN&p4Jdz8(}3m6l$ z1&PH$P_`;B%9e-w^}?3v{WAkpzatos18K@OtYtwm%rXsZ+=goi1Fb|Iun2n_>hN)f`*z;8j6Q1&oZ`wD2-^Il~i^^awpX-f|fJlsFK z#zst+lCAGRN@{@*YC|g2k-Rvv&oqw?M%!1(!IYKR!A1jekc$Tgq}L%XG9)GS!xY!2 z-JNV*UwH)~Mbd=5)Ea|eTm)#YK(L&4ShXz)bJnFJ~=Lo)1BAV*J6L=FErK8>`Wjxph zyB+#qdU%v#pq%VhAg?u**N^}m$*vRTxsGzoBdU&aoOqU{Xg#HD>L_m@M59zk!QHDj zNJ<_&upE!83?>xZS0g>7Q`Nz`0UcR< z!fjMpMJVs$#uP)LoV<;FyBXZg5XyVL3PzfNE#Fs85kJA@L(1h8^D#SOB>Y})OgZfh z`Zq%wH!Rl7xsVR?aE{G~%J8gg=gzWxuU$ICD7dvp8kq8d@*!&5hQdBW4-s2shnmPC)T@GX8}cEV0As{ZK>M(a_P+lB{&F))|{@far~;USe#&}!0@AQg<9SaMD(sN9K&@Un;S z(5MMWXWfS@MNIrbVIBBO`J31Y1|EJEYxzev4s(M;C_CYBA6i@Lj_lvm&`=_DMcP`* zyNVETGiP)XuGlWdEu-fm#(HBK-yf1sF~%+t7$=7@P7Y(79Kwh_mI6HrZU95J8r=X5 zqw+}cb+kT2_n9%Rv6qywnQcS80MrU&tfk;VO^T_Oatk4vskIc`KS*9`aX`qOsc0>2 zV6-8SXy=UWgJ^#ln^~(^=550=@8EVI6~-o`qOdz+q&?w^X9-(A5<~qR0{J|iE~^;8JM(rk*zn4 zORGe!E#i^Q28YdwnDbFmvRJ@%Z&kTCju`AXKBo%dcUKgTElhX7bh?6gTCufY>miD5fJC+tr{$&yS~J45W^ha5Vzdd97!oElyoYE_AiK)8ql&+TD!v_6 zd?(J?!Z4OdHP4HXU8I_G$3wby!Zc*4{KU)(#R7jgq7g16Wv)Y$IOHVCvyl%^tanGT z%#I=luZ8;tsOWK!4i=B*F(_@ueO_nhChoz`mQ1SMn>wSpKLyHiKk~`paY*B(5K>_X zG>|GoTDQT&))sp3SlsBiHa;G-n=nMM^Xw*+W-R(DM3WksJdUGkpp~ioXug6y^_+Y= zWLVi<&_-hQv&CWPE2!({p_NMI2{;?^524a>hDIwfJP|oiAXNdLgpdkZ>?+5NB^uUl z>^M)xEtr5_><~}EJOlc(mw75eCOpXYaNK8t)f$GdT^z3l(6A0;J9q{{4vb{mcv(ak z1*6#(UJjucIV;*g+$}&YWl>GIuL-{m*|c9^N@VWy^pnR?V^3VE8~@|1y0JrZVW zbeO4;A*O<#O-oXdf%3=zK5#RRmmgA_D?M=tS@`9NDiJf?TkxbPaHiMI$w7X31+PW3 z>5Z_(O|I7_YDVRVHd~;S zvK5k*7b7fzw_G4Kl{`x|WX3k6CUItZjbcmlyocEjPxCw+XjfYe;5VQ%%PNblEAxCw z<4lkHiLECZ)!Y=|s`JhBk-$WmfGvc|LL zBr)zXRf)DIPXL~5NlY#o!Fdbfqprh36iY2vEQMv}-AO(7fA;7Q>X`%*>KO&1)DHJt zJKS^aaL=_v0#RynS0LljFcb@<3PceN|0oS4BSqBq6mjQ*&e*>QrkAJwU3G2l_9`a@ z9+9p?Go%>r=A<6A4R*x_YlD@VQ3F?dT87AkmLW0`@&p7eP0{2hqFn}0%^A(wq$7_Bdi*5{#Ryq?FwsD-)3Q;EM1(fl+d@-q=rDapgb=)OcU z@#eyH$i#?6^&?C{FoJ6x6#F`KLP{HWE#6x+2wT)yoEc#Xx`y%MRfNPlZgDHD^~&OO zxyd2nBtblHgbJ+TW<7>(_))iFA(=NpwWW!7M?|ktpxnaIg7u7DLCG?@4VP$(PnM4q z{LfF8^k^c{yj{>AsjIrAlH5AFGVbW{fJbiLLT*(MlE+l{aEg*ZmBseFrN`sqCAARC zJ4;Gu6>Cg(1Q$5OWJB@k=O1YAvh=^8y|uTQ*}AlTE7BBsC|7HNU#$&kY8|Mk){`Uc z9({7d+~jh+M@9nZfQA%RM2hfHNK#aJ8ENqJWtmlp0k>g<2J^eZ4K?6#c*bD-ZjYJs z&y^3}Tt-Ly?B$WnGzjD-;5D#pSboLb?P+++;Pe1>3Jz}oQq`$YL46#msMDaX zIz3{T>xEI)Zg#?BR=?!1qp7twpHbWcdkmgix`z#YV~b<_Juc7^jB3~up$G|)8ukiHC_9+GhSae2ntvmu|8W1sd-De*ODopQK@_=b zYqTdFa<6nIg=H~`_u+jdRg-u>q6O2y9yDv zT~}M~J$mAfqYqTzgRp@ORiHZ`jC*jpYaEUjsqS6lyl}Vk_z;rpEwRjm!R8x$MGKT(-3qcZ&k+3J;u<*&SpHlzjFhyWk0LI{wG z5gQ_H`M;<>);q&*-Y^EMr*5niF*NU=95r6G+esxmfAsMJupJ9a;$Nqh4;$W zp|d;IkMhSPKKq3y2;U1;q~6WNdxIQkA@TW8+wPG!+cAi5beQ4M;qA`o@GfdJpX^C; zG@pVHQ81bZ5TZNJ(R?aGbn`lzKaP-)&@_Y$2|a<3SyO`35ws*U10h>VpoFUSa><{` zXG!uO-a_K|VT(&Xp8Syf+LC-flHXjC??Zf^I3(olk})r|2^<(Ee_)vWfno9ohRGio zCVwCgkw1`2@*5Fq9wL7rm*mU5Cy^27pBcHwWdz@9B_n6HE=NX2y;$QuQZm})1I!M~ ze0EsLW=rXllFgRn(+r<2x7sB0*|OgV6Y~_R&TOxX>o3wSvH!M8a;V)$j0#d#WLRp3 zA2C8ZM}V&3Zo7uN?Hca3Yq;C45#5#;t)?!M=$b)H;%28VDy&i%wY@4GEE?^2U2btv zi`jG>Y`XtrY;y?0BZhaUjdy~1JCpFSSfVLxyR#{s_vaSQlAMe}6PbqxTWYT1rDc}n zM1|$hQ0AF15gw3v1`LLA{23e&!D77@CfxQ~81Ng^=X0qPdc#{BU!zHVSygWsTEH)S zK3=%GdxXXieG6LR4KL2B%E;zz)IE8)6#Q8_(%po374KvE3%&sFE3Sf#S27m6ftP$W zuY%^v1)s`EE`=ZOYCsGn6uAtM_3s9yB>@(!fSN9ZSGeW8JYeBlJXVP>M3S*bgvcB# zptEerF30;BAw{4?Oa1M%rzLW*bWeKo(2|h?K1nTUa?P+N*OXMaB9!l4F|vac7uyogmS5lV zA!0kVx04)TcbPpF#&L`|$+W+0gw^z55=h;bj!T9kJ{o43l&T z4#O~B+slT_)CdfVpw3=4(nZ!aC0Q+EJ(1h4>mUuI?rVbWUWp1;*gqqGl&@NKEx!nM zP}QA`l6rm-dzg}Y;e*|*uZttjrx&r&!B6*RWRJ;37^-Yk8c`7vK6aT>L$)tskEEm) zv2h!fOys_E?7ME;R9|(Ed3HcD|ESD&nV%KM#y>RozY@SiqErs(OO*!tGNlzdEOta! z#rx3@ahSeR8KbXKCZfyXWBLYVmcCJWQs1F0)ORWc`fg>lUZiYCZ@`yyd@|PeD{rC$ z;0gVpa$0{?`9wdg{GuOGuIopYTlz81^y555f1Q`p-{4jC6TF807O#nU_4IdnWBnu# zbkyJD_v`QT!TKq_Nk7AP>mTr=I(jzfXZg4KNBpY(F}k*Wq9*H~sulIm)Q0*OYES)~ z`jCEJouq%IPS?Ly=j-371^Tz@D*ZckhyH`QNB>ps8z~pD!+r2tAKD?X!MJ&(y64f_xSh@z7}tl*T(|;`QX1{G zU#aY~irAA&VO1z6bBvG~^FkR)RZV70p$v65dx~Odz-AES_t*1moL~76&0FxLqX~i8 zgtccehGM9Q%|>+LqRcU&qRcT^gkAUC2<6;7Uo4wb1bw@01b;Z=Y04-TSyzb1RVWd~ zl>`+;8K^6gp_ND(0_{aA+$YkYpGb#cA_FFgvM>YVCq+3}EHYsg#%o0u>=42M;T_;H?+-uhG z`#yP<$u_rNs}Oi5N!`Wfu7XlY>LG}(rzL4cfJ@W7>3DN~`&2Q9X|%@|c;_wZ;0~fL zWQ%%`C+b5@%&R9F%YJazhubzozA4h#rEK`@;@wOgvTULfI)iuy5PcFoZy@i-ka-6&>SS^Cb2~OV2R$%Lk#wv))>yCihXE$8TD`G2)*ecuzxzOt1 z_}8npSc7G3O|jIfZ6^o~jjRe%d3Lb{xD9%Va?IUK+7QI|6sn8d>G-VO z?B3iW_?jx9x!GAf7k+|zI2W4X%Vl#&5G^20w1Rxm8t1{C&{DL4&f+ed^mjvGxM&Mg zL_3%*?t!i1UbNVqShDEM28*t2oan};iTl`G(VZ<8_p=qEC)*@?vz_7rwomkDhs6N) zrWnZH7Z0+J#31&S7|bq+A?%hIsuw0jxLcA=u+$rE{jJ#O7>eIXtE|u+Khm-SHK%!SK zoP|@iXE(X%o|Q$#U1xc9^nY%q=gVdut|BJc-OG+(f4;ai=-GeutvGfx82xsN{n|#Q zw2Syy@Q$~0*zsVmw_Dk}m$_E5h`k=%_IBOC8%yC%7h9a)N$@+Fyoec;fx7;tTQEJA zorq;`6|uM7w9oI9!HP1$-ofSb-EJFMyjym2DOy@7Y_xbMH^MDSkUd%%GM?`(gG#x6 zXR+T|fL$fazHq|HBOAu=%LeRJ5j!1x{GB-VUU2a{>8WSBRYD{_vYdD(50^nqrPsmU&(3z=!#)bC?>4OX9^u-{KJMmHlv)Jma9V#tsaW?a;5gm-vm35EuDWafweCfAD9;pM0gb!ncTPe7Cs4UlF(X zF>#xpM8AR42J6i~Hxz!};2eJ-%`X_5iodi|%NjzhWYAXtOtn7#Jo!$;#vkdsn_PP6 zyajpkVu!I2q3tNogk{n$;bv297uqfbr@mJ?E3||fNaHsBSaj6Izpv-z@`aS9Y=QJzKJi{Sf@(R1NlHu+-`5?5AMM(`DJu z!9k~+N!O3|xCI2G8pIpbA!yWv#YR0?YSf1nMngDiG=_JLCUC)M3V$2TSfu#=nFfMK&CVPv9Jac;&Yfy_!^53_o)6-qv6#e88UOCQa<|R;{gPa(urm1p^JrJh^q)#R`L8pQ+&cwLxf)1ux?L z$Zx^q50Xk>Smqi^z8hY2TO{KR(eJ^#KX4spT7e&>)&6< zzuwTw=nGwpelWn808@=g@TBo5JZ(INsuzHT##C5uJPvz}6H;2PyTm?kVeSG0_+BZP z0nml-Lr6jAkZk@k35MA0jwb~@UA5xzs7w~Z7Ur| zTfB??u@rCEBJzvapAAbSF9+Lyn3Pq_IlJU?PFG34*Ha0fhch_m!!)Tpwa|48jCa5> z-i6Y}Nk}wKL5^`6Y8hvsqwxXsFh0Z?corToK7m2Tr|^jJ8O%0Wc(;O-dTcuo;0L5@ zSPl&EF1>3(7w^)05M)UKxVMXVHn{PL-4 zJF=(+M5I0mlFc%ZX{JDBGZpHYY0%zGhwf$u3^vQbcrz1bm|3t8;bmrd zDMorLc?hcT!zeP+x#eMjy3?Hmy4)2g`l65EN3b48?QO;vA*2T6ly!h--h$S6t#eKK zR2&V9shuaL4K6P?(6viWTNMBQxy1gRz&O7@c=+S^|4L?!@OlZ%ieQApzvo_2(>%dBc*PE_m3dwF}tH|nIEr(6-g%bJ{_hDyoWelyedocXf{L{H9{FRK^ZlL zRI?dmn9U)}YynlwyHLmOhBjtf=w-HpA!d7+VBQ0>%zFc{*zAacx(BwHU8JJXi`k=4 zRVo@iVQvj8+E&j}VxDIyQ}MC=m{hb3bbh2CdZ>5|94(bkgCWpdDxWUp=STV7giMAf zrMsm9R>A51`h#I1{y){g|9Z;0>USTCwmXXUeiUs_RKH%Reh;Af^+EOPi|U6fkJ%s9 zZy>7QgQ$LkQ2hp?RELD8?th_vjsLUyz2Vwm93fh`$;Re~4{0~?kajD${qyWWWSz^? z>y9}LN}0paDvyLR<|s%pABJ+~XjG3ekZX>GJab%xwGRD!1#xovNe~&Ae0~Cwl3HfP8 z%j5qCwBYYNlu{)+z2eG-W+4})dkt^lP{A4?s}uB|G4}; ziwnpCT>gSk+FTfcCA7ve`rW3x{K0V43>v+PQq+p3(%q3CCvXwOZ}iTOina{bK+MF` zbbPT@Y3r`)1*rE+Ai-RU=42UEFrSO)(R2HkBY`V;f**(By-?qZ;~pkh=befkJajI> zraJ+w8&{-=;Q4bE>Uc+MMawNxOe))}SR3IFS1V2|gCDWsGWW7cwvr3=Ud0JEJs;mL z$~(y7t%HZRYmp-F#bjOYege<&tNqUNp>sT5ea0%j;+s!Q`6(5gb-rrw^m%{aUy*)oG=UFBXbvgXYPhS%_63ldzjDM%QDP; ztb+M6t7`6NHO&L8zWEAkX&z)9%vV__^JwwVu+9;a#Gpyi|2iHL7=Pb$&w1;s%5qO4 ze?em&hiLP4+>^X1F}VJiA@6tk*;ENfon%CVKkoH5ScTpw-{Icxpq;=Q#G|2vN{K$9 z6h65|qyqHhT3jefq>K_NU&*Szl68ImP}wZm)+(8_L&*SL#^n2)P})sKl}tvLOvaQ< z`bsAKC6lE}CSyw`;{q~Gmd@SW_P~8KnD5}MeiyRMlTgEa51N|qLkIH|^fph!aPtg2 zW_|#3%nxx}cosIBAHiPpV|d;C1U@uBg>TKzP+2}_-28%-GQVVH&2y+I=TTAIpBYH& z$vkgo9K$^PwY58l=Bv1;#QREJ&b_@#Laui|9jlbai)fsliNTC-M+cJpiGz#q2`F4z zhDzP}k)KTL$jkrx-OFo#;t;AV=R8idWI65piGzxil#P0HZmg2(PsB(22y|)x8C_sx zB))VH-*CdGy^8oU{E3ZA;4Ax|@imD=SI$G%NTM5s=ra9@ZAze%uNWoR4X*w!d0@8J z@=k2&%A&HK@3I}|$wsO#{?ap4+%sRrU7hqNP=Cj+%KPKnmFOzxA1M!({XV&71-B>v z{Y0a>8XH#hC-yJV5HI9Pj!1A6Hmu~4*iSa>hz;}ni7iSrto%<6U&V&#BZ03({>0|8 zA;*SQ{E3}PG_3kh4WoZZu361%*pV9YUD&X?-?yVg!y5n8uopJ0={EGeBpVLIhIjZA z?<>););~4eiVbUfJ$91~6R=?&f8v-D4eS0>!|T`(-$*5oqp6|tIyS8D_w6syu)#ky zyz9s0nhiZtUzQCgV8cfK#0e!DqCWn^a4h{XIe>~MdmJwtR>X!){fX^MG;H>d4NK0f z4pccbvzmM8+7UXu(v4MG`29^wplcb4P8yyP`21ZX@wIaC`I|_5a}Zx^e`4Xi6pnZB)SHs{SzptnSzPtY;KHr{5eE8x>_C`*ZNy~MWy@!jLEf;KDy-@X44UzMJb=sLRSs`QZPIv~1Ee&5ze zbOELFf5hi|F%n-FkGw62kA@sC$-MUgm=)fFC|v>Fw9Ieu3g$apJidn~%^zWb`7^v= z{sIRue%1UH-Z3x08S{4toHhS|^X6r^YW~G+^D>Jz|7I!XRhDU9W97}8xN6*Hcj9$S z4~%kRunsIMYB(=7J80T4KlzLW*($q=~C@riErM*>7dCM~SHc!Af$*RM1ta?1(s?V!gjd*>lDeq)8 z;{!1sY&GZOtd@MT)rwEG+VI)d-F%JJmhZ9xck?|~JATaSz~8p+;U}$5{9~&Nzi4$; zxz$D0t!`?Z)g3?S+e1yWdZ`txK57%Iui6pgE>=IazcoM|Y7N9M(+*b0TSL`())-wFi-*b8y>v=s7<0{q)y`i;AZ(*(0TU+b&d#w%lRlJS(@wyFq zyD8Qt{b}n3J!oyw7hBu(Rn`uDueDP@f$=+5q5i40TmQ=1tN&!}(=S;s7jFvnKSH+w z_&KmMbTULQnhC$P5%@(n+DZi9`0XWpahrIdqkdHFQ>1hazJH-JW|aRuoH6Bh$~aw| zQRyOOOuZPc@sZ4^d?}nU;}X^QI%3=_=K@U7XSV8fCn6EnLI8P8of#hcotH?;1l} ztT6XgW(D8Bkr=FVBR|C5up89o=#6lj)SHws_GUQa-J7Lp=dbjJ0{jX5D=@%%73Nrn zpvXE5pIb-ZvUQZ%))5wM9bo9c+l%pj>s@xxdY^r3ol<<( zX{EMxM(JREpbW%#uys~>$ih$7S)VGeSf451Sf495tS@*e>vJA&o#Tnt*8$$x`i2j+ zzU9wa-|@}X_xx3ik61tAocx9VV*RR?wtmAeS6{%7O#hCbfxdv>e!iqGvHnmuW4zV6 ztZuiisAsLK_|e{L_{rPrS_|t2PMzyoFYA`p$7b4-wxaE_x%Qc@YL{(Iw{2CAwuSDu zExoQCu=Rm9ek9S3(l^-A`T>kzwSD>#J68Y6juQ!Xyl7-6h;DXiF&yJjc9Ixlr-}`qG>psI<%}#l+h}W-HzwFQ#wxplvCpn(oW%H)UCH>s&Npt_Rm_TZ zRr6lEnmN?2ZcYs#@Pu8{oN3oKx7l^fPwcvuV%M{h?fOjAr|HOFpd z723_Mx9t|zR~Ub5x3Ye)+t@z)F1vw!w>`jaYfrY@*+GmK+a2tsc1QcL-O2vd?(D?d zU7UQotJ4DG*7kkQUH1LXXuGEqSYh{aj@!MRFYO1M%NSp=`#RU{0a2Ouz^D%PgHhw{ zK~eMV!BHD9-fRzz+G-DvI%AKB276?51$$IB4g5%7iHy@wjz@CTn&PRHm1>0T#(e^?}v=_l0_F`yc7eI4+ z3ADnzw)S!{2qiJqfxFk%@CM!uxt>jQNrF2#+!Td&n0*S)E39ma zj#V_iHF?%frSC&?8-$KRDYOABXl$@#jJ{Mc>Q``GWm*1y9dc8Ol>UUq53i#GVnJ1n zWdsIv!)*LbVeutjKm0)h*efB`UJZHn8mMEhgL?J`XlZYRPWC3~YvaX0{vOzo z@NXUPR}Z|g6fQxuo+yCNZm>;savW4 zBi%|Wmzs|bEe_uJxjL3ZDt2c`!&0S&E!J6j>d`gO#ntA@sq&QVsWw(o`W2kgUA0Rs zsdhrRYKLAg|EzYOLx%k&RI$&YA^8d#+TXyP_P5a0{tgD%-@}9Uk1*5z8J@I%g}L@` z@VtEiw%WhLLHi<{u`j_lHtwVCzfk3_FvY&g9Qzvc**8$-Zm}Bn?P7_y3SYedyMs5z z7j=g3lXpmwb9f$>NQt{|t`3L{SMA11nSbr79oC;*FiK@*|9`9AUHGGK{LU|=;*Xppg>|ZJikC?)YG+3Z_II>SK zk1cj8Lka>GYbDpqa+K%PhghcpBsmQs-Dw2bPGiV-nm|L$Z|*dgcxlZ^!ngiLC~*2X zLYg!LI(~m9k<)j-1UjqahCh?g!tGyP_Iv)y^qGVj?r)lYaCs}JXyHsNW}wx-WZ*}4 z%}2tYLW@gpS2?_4%1-5>HIR-@5-HV>gI~tGlwrxZQq?Gn?MoA>y5lN4KgJcH^o75rJ z`-q}KU$m4+esEYhDNdJ?Uf^?jM<5CLuLJnQUt;uoNErV$tS4Q(X_B7nx7zzl-BY9t zN9b;UsV;kz5eVJoLd9w>9W9)`U^)FDGtTJ`Y0iL%p$vZvk^kmCx)p4VVt3agk;w-I zXAm|R40WAB5skc021o_M>*hL5=+*9mr#IE2SzKV`Qqa)})V1iYL$Wd|->>73^DF;j zW?tM%*Nt>n=v5JG=Ebg(7?S@{QHFuy497`30%Dv|(B2sX_d1VA+T6#EPNW?zk$eU2 zRcKG>{&r7(#V3X}QjpT$T~5&kx51e~J|!Rc@cAX=j)p&~Lr1h&<>3M|hV{=G-Jw%= zpOEfkex<4`ky(b9RY_)zDG0`}3W2d}KvTC)S5e15iFo>yzb|km!W!o>C~_vlF=q_jGodZ&2cDX*fg1cG`gFN`Bm#a`>IM1BP5icr{JaT3Id|q> zQZ)INQ_$GQ8cJPr=hjRV*(^wLo`kZ_Q)uUAL9X+3xX%+jpsgL;a3CcXWATpDO0wlG$8KsZ_$=MjWNxlH+KAft+WLbOR*{u zR%sjByzSxf0Q^#GsHZgPltBh1O*&iH4~SATbap;~p3Yeq<$MHFoR49q^J#>V&I*s)EXjjAWARI9@kYanIC9rRdq3EW zbERNFJf1Rt#Z@sHe+0^YOTpz4O^1f2<7|ZKaHsGWxJCIA$vKBgdLF7dU!anHE4wC< zCgKOk=##!=%Ib!Rs4G>Hl&7w{q!lmtw)`15{uI!rA1K}ML>!mE$_|-I_iiYzUCQJ5 z4oEj~)7%R>l2);l+-2oQP@SJZbAEy9&TkQts1YWjhU=FlyG92F>h7l3-HHTOI`BlY z-1^Jj1~in{;`EC-?YSal`nu3Ny_a^2cPS;>tn&;^$=rr1_$3%(!$pQ?*BK$EdgiC} z=@4QhfbKAK#&<3vCzp_uKhZK=Muq+hcg9zsgL4)7JJ(^5a|0f6Zo)LjJqEbDhbO{Z zKH+(vCBaZmcEEM6F+tUCKy{XzhFsqco66ldVx;_SlJPSVu5%u;UvQu_yCd*;GLknS zOrGcR6NNV%Q5>`=4Pv5j?;a(f0{)+>@}exLA7#UxQBe`rBf?I3RK?&eN-R% zRv$DTrPWXYUO7BTy0Q_{@PcJl!HkfK0S(Ye`WnRH8i;Q9xZ%X{Rke^P;h48Y8|iA?Q_CQ!jw{kQ zpJ%C_l1@AKdKJ`F5F4(5Ps!-dQ_CwV=v{`D2|R@d>d@~`e3i5k&OP!N6O{*6RAtDB z%7;o(RZuCaLaV51&^4+$im?Wah`K|H#y!T2ba|Ikl0L{4sxDeQ{7Bh-pM?g1x!Jcx??nz!d~;xkmC($|^k;thQS@gD%`I{6X;uBU`N9N|wX zX>o9=(^OM_*4$97kVJbbALBla+N_9G<`gMUFY|oM3fYIM+_wq(83D(QnA!n<7to=* zu6O8E2pb~`1r{1u=+m*(C#ZOnuM{@kb1IpA%Cy1wJCpMTJ5yQ5kwbLC=7;sz#1BDi z8-umKicY2$4ZR5`;to1_=-ddk~UH5DZvhNQPt}%%n3D5OHfo zQEA=KR*)s27?-IO#1S{#s;yS*)@oZ@i?v#p)>3O*D~tbk-g`5d1giZ9a?f4Pz4vVQ zoOAEYizgmEL_}lxB{yxP!!D|%cir?yde2RNqW7itft&tJAG$H{kqga_rT9b!{^F*; z(x)!^8y%6_-(B<>{li6{3(Dv8iQxTHYX6ejzXk6LDgGmKzjV`4Iwr+&={q6CS7qe%nEaQQU(R3JWu?IEwYTQR)zQ#U*eZe~Sb8>%~QK0bvfrT0m6j-G3X)5JToucs| zjr|%A*7$UlY?}|OL?16xiJb}5Zn+f2%lRnw{tSIXzd*6{CKna)5RHerc^IFe@o=HH z7}DVqjYml5nHrDOc$CJa8kcE&mW++oxLo5gLhe}M`)sLINHI?1a|Di;sg)W}(0HQ8 zliXazlcgUtR%<*}$et#}bQjOynKCj^@%ci?LTN9ONf$`bsPSUxotMbig&KcLgHt}aPo2{M|)dfT`=@S^}$sWoB=zY+73=7>-YX#^+bp&YH2bVRl_T6W1_hPm6?O@jy7fFwoW!gbXRd z+7vFq}Vbu*(8V^?d29lHuoS~R#ivL+~4ZnN6Z7KvlUhW21nNJI_IGdX4N>Skbh z=dKK_36!-3!YySD@hGU9;AH6sXVU_)cw11|u%;;?*&QSG!I;6f)t`f|`Li+*rDH*4 z)vAuvhPlGgf{1KuQOql0YVk}QTTQGc?4-@$La=2yQ=By=5SKeH3P^3(6bOqjv0^+D z1w)$1rWVJ5$-c(qQETdmMuXv|b=U`@7d@Ls*GEP>^8yT1>b)FAmbRi7;{VoVgn!9nq%X%#d+%3=O7^La8WGr(3C0r)%jtCkJ(2 z!7Wa1)nVl;bza47PF}5Zn6~S57YdHh13I_UCY`^{Q76ZAj#JXf9XhY!wK`wS>zsUv z&g=P7Cts%X<$`&I%(+r(-;v_Ge3i}{_-ZF#qw_{t^jaydqs=;BFJqge`90bWqp>_y z$^&7$@5|r~pqOu@PAA`_^UZvV&YNZBTWPbCZ`1h){6n2@=Pf$jOZVyYG(E^fO#OP> z?9`4>TXQg~^H#n?=WUD~y_J4b*73G={-#JQ9`nn{4v5rmnq8^RI~m*W;@xm!nXXiH z(#zTC^rUR=^S8tFv0gYHjkNjOBcX6SR;tqz=3tX?V*G0Z(U?CTYFZUE2A`5ak3SG? zY7Iu$r3c_g{lzHGErIs^t3&V&kud5GEFTI(LU+np$Zd>t_+jqD<9<06ewxr^_?JaFk3PwF>}sg$X2C02<0*TIU+rP{^YU?3j@;Ml(w zB=}*u{uPm^A4Y7_AqXHqT!Ao_CST`!X%o{(Ifrl?emOree*pi({y_8UP}tv!#`0h= z>~9Xm0+==3)Kh^bWgN0bBq zt${T`e=r>BXlXU4__2w>PWpI4Bo9zh=e_)62vw%WaBjg2 z^8xx*3O&-+3{<-z1D$?JztU-^*ylq!C;4HW4}wO1M6CN!e$2^_>-+>C!UQ?)nCKF5 zH?8tdf})<(`6+&ysYvKBRVdPpw+7<=XsD$%?hi-S4%X=w(R1-BkVK?@aYq@7gqWTY zd+ICrC(8vPO%$Kn2l9AUOynmJ3cV$)J}1X9OC~QDLB??^p68$H{4+5kx7Y#Z8bL}+ zVIX{%R2Y^7#$M3*MgBQXb@w@}TfQ>b1W(zgyK6yfG_uxoxfzINkbxm&9=M*l3p9oJ zQQd^#2QMGS!DcEfE=lDB;b6Qha}aqzKWnkxL(m8G-wekYhF3lfL9*uSmPv*4bc(?= zqd8cUGpE%LvX-RO-6Od*xdE@IG#_&mG@Hv9S&*5~2@^~?MiOU8 z+f;-;FK}^2(@4oI9jQws$IbMsoj9y?jVKg2z zWQ`oRA#_P_Q6vgIyVgcwBxc={-XAGSxH%x>?sQ*m3VG_fIC7h8W8!p~xpYlAPFs4R zsiBq`;pR{vT#a6s{K=ckIpqXM zLTiO*t8Qy*mE;;ypE@tn99j_)Q_AV~4f6tVAlO&5MIsom6;Cgj&ZMpmT#U}*=|(FH zTZ=AC+w&m@KH0E9V4xkDKV&xQ6n1y=3@cFpodZv`VE3>VM`|hQFrpun-c7mLiv_a8 zv&;*|Vu2QD=G5C;R?*unVRp7$rIt3#m^-(6>f9MdDm*u`HW)?DEqWHoHFQhP-5$jS zCu)i!FZk__KwGS)C5#|u;`>g;Jn~W9JP7k8*g%`vmPk{{XSO*!I}j5=n->kt!u1HI z?`{sZ1>;8g53NeZ6F^oXo;X7q(^_HIpa*$&aDt@ig_);(IkMTZsgZd4e7le}FNiD; zgjc09d)!%^=rs55n>o4Lz{FvKzM7b%>vH?VK61l2KOFAP-*eJuW_l1;J&+6xBt%Wv z%1F<_Qf3%h7c*E^k%AztGg%5n%5XagTgM$*GNW0~ZV-&bDI9MLV_v2#EX$BuWhbVJM-Wd9m4QshD|8}(cn%K03 zwxWf3bO)$G4oBN)yS3)sm?3K}9C3h@B&ii}8iv{#bS4d_F;q;` zsD#d^5g9ZuOw+uOb{LXj$sR45_gHc`SDje6pK=cErfC3$<Ul!e z0djRxze2O>*-5%F2xhz+n7h7uObAs;1UY~lC`Un9rBGiPO`vj`j`kd?NE4{gY}#dz zMRcx3>Tb-^Nj*jiAEoLqp?s!0(_*f&NHzu8Ef%*S{PDo9Os|dy!!-L2Yaf=&rpdlC z4wQmM9w*#1&U;3H`VjR|tBUqh{%-Q`CtqQCQRxmcSZ_Q)eQe7xzCi`2e-P{>_02mw zN&T$4CwF3!`dbYFn1K$pO0BT@Y*@|gbCpBVUB==*Tj_Snma&4u(mUz${WPGk9GxCI zaTg6sElXb|$q+gAOJO8wV3)aIk51?jG|LK=x8F%Qsn)i175#PAx~ah=od%YQEQ0SM zM;Ey^*uZ10g_xv4X3anH*)DQd+DATHV1IHSMDFB~Tm})A@fd-Y>cdos`Xq8v73I=o zoTe#sI#t66Cezt4f@+#UwK#=KX%+=w0v#}l>uDYoS4(@Sjvl23dI^^NJ}sgn)W`}g zVLN?`^XMY(L$kSn0z8D4^9X9<3TieKJ{GE%Ga=@rqVFN2X2bd~U`^?RqEqI8nt2+; z*v_JyRfuO=$b&9Ex zZ=5<=rcTM2TI5kb+(jdbyw$sDsKujqDiCC#O|Yk#*p>D!Is<6C$ln9aTWw%XPhtIc zu8U-~8Ne&Bo5+U9pi(nVtU#b8x(1fJ5w>zIoW*r;8{!T&!A7r#6@L$QdIPPc8*z|t z!ZExB*0q@qBcQ*FaQ;{NAs5o^Jdn0>3EjbSXdBn#O<^_dcF-VGl?%|`wCYPh7w;9$g_^T>IEs_@knJ$~kd%F0ov z!|d?dW*Q$i0LuAzrSN`~1UE)F50v{SK=kCk54Z>L1HgL#{|tC1;D=`0Bat(Sd_}1J zG2j-!2LUDV_z~b8R(l)Zb7*e|d;)L>;M0IR0UrVEwA#A>UqD+Z7l^$Kc$YwDB2P=? zIT9#}6M6NCyorgt@`Q(PN_bR%!lPV(`sax}cS7xUG2+pMg}Xrh-SC3%`@D>GMn6Ey!CruSPo zy5Ax4y@QB%80pR*5$*nzL2Z4S+WHK6xX3w?6&11oxp;3jiRbGr;y<&9{~L(u3)?;b z_!uB;$bhgBu@7YgAoQ=CX~B^e9A&{$K-j7x%nLjV@O8j)z+XTv=L0?qxCrnmq~8Nx26!0oa=`ZhuKtrg&@RWMS3EvEm{66w*0DKf!m?KgD;^ zFVcTtZpUC+C+H2tkGGISyv;UxhaL1TYxv?n|XAEy&0QHLsQYK7fr_t|#SHs!(|jw+l->ufMegzuU(}$z$oad^Ub}F^=>393IN! zxtJ@_n!t@b5kGdA#Fz7Ae3LbWU*c+|A5T^0@HC~Jrz<;nhH@XzR1Whj<*z(j9l|wg z8P8Fdv)pNjF2qYhf7~-9wRRwpDT6CTV!`=Jt&wclc&JhZ*R_f4T&z?Y$p#{k+LUrb zs9A{$YG$HRul7L#ASt*+&2uRK1Z6qtdFF{2tz= zmG-om-aa71f2oNL4mhwwrmmORJIQO!^pqem8w5?=M)%)ZX@9IYTRySIb>@bFl zDr`kNlq-F<9m;xm*ItfM0*`#eF-p*?!ygxTnj`;5S0ZkHYs!x8)}v4A_Rw2E8BS776!~npbNg&nRs^VY*eaYJ^}Pz?eF$Ep z$H^C$l6r~p(56m23_vDj-Cot{Dfmu>)ltWt>g=+jTh4zUP2f1MYMsJ(#^aKU$Hj95jDdJ1u4NT^eV5U_jncko7?D1++L33 z2PrDI!y(1k#c|eoE!@*3a7pWVDqo6UP+Z2V`3j6)iC;*37qzQUZs3i4HNK|42Hyg2 zV?A1D)eixT8Jlv{Y4vWs^rUEHZ8 zd6#mG_oyo0t>$r;TFCdPgZN%`FyC)Dv>WhDT8Q7)i9>VJ8*pvn&>Tt^j@%2VWl=)u zKo0f*9NHDU8)^SzvbI-%=N1Q)c6>wVRp23k zL*Hwt;aH>gI%+C)Dpz4|xuJ;*JeT^NplrhhR>1`pWDPh@6WMTsCE^C{#pARSRDo+7 zb3gAfnuMXDXdR{CQCj>Jo{sGD&VvsYWBH=p^oqOz8`#nJv|2TAyLhSn6fPXI#e6L= zT~cJ?DPH(S_fEawIQ!xG&ax$>V;7bVTvlhRGTz#Lg4Al+DOQ==bCs>~G@Fsp721~7 z^;mNtn(f_NsCB7a@7@fXH8N-3iwJ@D8r}yzJV<%CI}F6V;Vgcbrt?8s$dAwkXkWyS z*$myeTiUT1k2|LO zg3q_%h=04nxu2pbFB6kj^dg@_W;&`&BFzA&R%kwLKdr?Bun|KgNA!2nKt!Xp zKCLt(I$mtls6nF=Rg|L$j?RBZ)J{ zCRiJF(a6*^WM{_EBn;((hA#404{H{#AVL&ASCZDrgQs%R%J_XzMG8K=K~}IMQ!FIUgmJG2fAMzk=(2o^HKNG4+$nNKR3XPb*6M1E%rHA~|Feb;-HWsp`| zgtFoPz1!88VO|@oeGk$#=5DEPo6O~*87ppeKThBtTn#_>61n(g>chXFLHr60=T{NG zUPI#iIyLYwX&L_tXa6l~<=@aMej7i%{T*G)zo*;y9lW}|OS}0!+QaYTSGph2KK_uN z;E!IKP}#2(seP0|s$cP|XDWl$GUar2v@+E2 zUAN;=>i~^4JeEeEC^L;XrO^?k+K5vw-po7jh=Z4LehsnvH>iOMM0JUFy0QmvloI2z z#VMt{9croAH6|Uq##ph-rH;V6iFnFBs^5r!b{eGS)7$8C&~R19Q<210iEMMI&sVgZ zG%GwA5lS1Flbt1Qaul57aT>*(GoWxl_A#2w$MLNQV%tZEZC_DQ&uMs*|2=h@fsK}7 zclpfDb3g8GR6Tq}U8BvzvARaPhu76LIy~G`*XZ=ftW-Z0S#Ls5rYJX>=0#>u*jm)Bn@c^-7(z(QCtVb zecwQ2*SJI-5hCb_;yUg#qvOoDjO#od$88*E^oh#*o~r6jCq(D{KEL;Qf4ped-Oj!D zZ1*g;isyfPcpniB<9EGuHGSftK>j78 z-$>uLUiwe^PG%gC+V>v%fqwMRLHb4>UjU8?HD;+Pz_EsDtb5tTZh08eXUfAPO|Lw1 z4E9NxD~~*Z&vzgHw_~h7FZ(&*!6WD%V*+#hxyN+3E3!&AFL&nnXKfCKnid zn3u}v6VSkgsBw|W#Zn$_a&IZapp*L;e1y#CYjQs+`(=1$Qg=M=|26vheT&Cw*LbLyhnQUIj}v9NsZyIJ=ud}ic!o@yY4S-X&oa5jqMYPQBO_q&sh(+V6kxbrMW2aA^ zcv{Vr88ex?RnDGh>4S` zYo=6BpL|;N?1|HAnAAe7<{lM`$5K^Hy-R)$j{$R;^zn(hC{zB_SUfttdBu`w)9lES z2J{4{CTb%Mb0bYLX*->Isy+rX`*c_}S)XW3met@nHkpiBRDeWxtwk&_l<}HqLqoDU z6f{)b&*tbrp0I* zL@NTeAtc;X3 zMB>ZJYEn(WZluA@=m%xvBgs@lRLF3qshI4Jk(tq?MYq$Rhpt(ZvjC-Ic4GPR=Jba7 zLecDmZ0lgmr$ZG}*)V!_vN~?itp=}zK>{r@M;5i2Y6-lXw5Q`Z%!yA=q@s29uo-iD z!PPVu%dx;xVUk6^JF-GVhb<#@b%KRG(PA59;Q}wBpv?eh?UB4$(G?LKfcUc6iE+)V zAq0CNuZ^mm;+C^r%;Ah@NuqgKed?qXR`A+&2jx*vZTozAYZA>(wb4m2 z>%>@+Ngshy5sr^G(!D;qhORYum5P!7ad;x6-`^Z}ahX-r?ih zWzjoCx-CAwlkf7;F52zmyZIg;y-53*h^c31T^!dOYp9Dh`M8y_-hB-76|4-`Ha9iF z1U9S=*CvvwWLQRi32}#Q*_8VD0p9832YDBaSGEaFLhzl8jE|m|%|qcvs5I7#r(kc{FO`FI~chONMuuo&HNQh-aD zx>s5Yg;xQ&Fmyh=G|?1>`r8-^08o>|FC=FO^YPQ=*HV3?LK}^wETH~!N)JsTRwUd4}OVX z_VFviu^dYUZ2Uzc$wWgP2+tD^SMGHp3r7t8jgNmTn)f??m8n!D27e5+>LV+o z;b>gWb~xD>sTG=p$R?C4p_+-N)li;Rx)&NCvz%=hE4wUS8~mD&f6uS`_z!~q9~t(c zSRieU5Rs(nBdKsx4AvtYPpsc)DaRY z?|QhCUJHxTcwtgS*OS`SCUa6cO&rkmMEmS^g7u2Hu&L!V&9H4i!9>4JZo9;M{06`2 zh(2$Qg4bq#nX z0YE;S@Yq^J5b>I599ER6uw+0w=!!>EW!ZxWwt712b{+x_Nh|;_700TFBhsk;xnf64r70OzMqfCg(0Ac?Qrn(CdE2Kd{<}kyHcnXv@TDl?OiXF{mR%AM=)3#|| zbppiJeY;|5Con54i`PwRLiABS>^QJmwwG80qFs1s7?lk_w7i0;N6Dc;R?ybxr+3e& zf#Dzzg;|)EVTZK9#ul`6sUG$yaJHAR;zK*s6(V2&t?<^;99z|V(;{bPH^JW-%^9Wb z(azcCRIEWFM<_Ek4?3h|^@8wPjHaR%=a383#LkM&OEf{3Jgb@@XS*KA?1nHtUKf#Z zZ>Dd08hG656!@KMO`ISzPg{vduUlrJaj|6+;a(!~vFL@?9=d7X(uU?_eHJkt*x#;q z6QWBcK*RCD$#a8#bii(u4Cu)JE+>E!W<5;z*oNAANld`wanllYv86FNhI#F_VOk^w z09TWJw)Bz-15ObC-H=ECPMQ;7fv~seysc^>Bm;-)5ipE2BHaPghIFB3ht6;!DSb|+ zA@&BLuDFGaz-SaB-4MshT|pq#^4UjemUw7rNRD%|oa2+#g6_grNxEXYh8!3!$yDuD zt|Q&CPJ-fD+7z`?3bFSklK17>YfXtbxo=Kgv>}?Z@-nEtDKRTD6@V9JV>-SbCk^yQ z-lis&Ewj`XA<>FRYP=PF*CJps zty70#rV-g&JDPE*t{mDUIcs{uPOd??26U?}&dHqw5S6@gPCVY8`Q>FS#DpkFYCkMa zQr6BYoDj=%VMBjr(kul1iQ46sXT`w_IGM%l*ox>hiQ8=%oIrhWuXi=>N?a6_JPfr0 zLefM`H=wTQMzn9rYTu0ZEm`gLbeM#1fDK~KM!F5pO=wNRT!qp*@FC)XgLad8z*=uJ zo_Qp$Z?fZ(Xan<=`K+R!q@IHtqp3iHd>h;nbgc(^04op(88=!hlgUi0%M! zf=XEil`?9v2)+}&UedlN#r?j+N=$dr-41GZfEbxISCDEWSHQK`U#GQ^d!F541oFOU zBXeM38+oKh-wn>7EZj}H4UrSb`!bOCc^mnh_D;$zEDz+5Zlk<*)*V4|`#F#T!1Qn$ zOnrg>AS$I}fbV!Zn&!~ZEOyS#&@h+ov1nik-5s272gZW)iP|WzFCT0ikD{>r89LS~ zcadM;LIa$7K+poaw@}YQyBgd~K5G!fbX&{d^&^6)&FaI*jruS!>{zh7f=1E^nt=8R zG&+NzqA3=;ks;HG4ywXrpUvb0G}dPGeHk`aIVig=Mz*uXYY{RALK&M`9XG@o^4-op zESCp1`DzX@1&%ybsF^?Q2`RMQ)LpA8-btZt6oyI_mKT?9BEJQ(i@NKJF}_v6lN~_RAdY0CL{VmpxA-(iA%9XK# z!qV+@?oK+aupFHM`f&&KPcKUc+sKjw_De&wQBezp9EkQ#IUDv0mA7oCymV`0rW&Zc zWkzO}4cbPBgU(_H;T_~|A+o-o)3lDy>g}jxn!A};r9(w?CFnBCa0ADBY z6e%5jSc#)X&;WxbQa-FhFUbA~XhRw5$I>*&Z8};f(OjBEwNyhXnoTRA&X>_V9Nh&_ z+J*EmEuvQ_Lhn%>eMd{#MfKd1PUpj@f&0@6E}=PGid)~~=nOudn)pOYTG}uSdJ&+0 zmJVpNns!??9qT_wzr?YCP2s6&T|v!0Dx!%)DgOrw81w)aLlwLKK&8z6%L2W;-E+}C zNFmY;+Q|UGs{nfNJ17*(?T@Wud>X7m4wktte}tYl!d<+cJl&~J3+eeIOs&Ej@`Cf* zX!suL8}j1Vm7r2szKi;;>rVX>-RY?1z0Bn!^j>=2Ew_=8-$Jfl`Urik7h-r8HTO;$ zU<*hu#jz~z<<4I|!fii`vPI+;j!~3N<&dIFBAh%_I>6+{6#$*R(O(52R~6 zbgaf;|6s4h?0q(~p+UAe%T069-C)*>?N^rV7s(KI+Ja{fYyaE~cDeMJV;vu-{q}My zZs9|`abTeaLq2E^4Zf;M%+8PsJy=@layTEL%QjO{rg8aZ%6A(6$}LnTb-05^sBHd2 zbade!8rnwX!DH|U>1{MD2uo4kMip%|eBJ|@Meg51kD`>oZ9hthmG+|C;L1nWFK-R-HLU?H+!|0PqyBZP-`koMh*iM{5DdW%u;~sQ z`MYocTe0 zX{IBpY1myNpECSLLOVyJgcsD-pge&{Ux5;RdIIGbl-Hu13>F^K8t^P`_2;+x>x7S4 zys|^SkAd?iP`yuK=RSuI{SyB3D@09S!*Bj83)`6)Y-eWi!$Za>RvLH#bn#BYW&>a5 zApezv{1-r`2XuQE%12N_hpZAhBKn~QqJ$o(K~6c?DTg>^DN5+765^#i8s+a$mZN+b ze3^stNtE+YK8{S|ER?UKJR9X3D1}LHqdW)YyC}~^`2ouFP(s%W&PVxIlp^9!QOfCf z2FxpH_4jY}pV%6lAc|Q(8G@U<3NEv?i}Iw@`4XJKboQ{FnJ_=S=J0tf%0IABhu5`Sd4+EIazt8v zmWykzaKWj&L%QYB28VQUY5mjGh)c7EI`}li#3cf_mHKo9?Bvzl4j251&D8AF19bmp zs!tCzZl*<<0mKtlG>%-$U%8paX9f^kR7m5{cw&KtpLocHs1>-gh-N2Q(|zk`pTLXwL~h`z+{n}L3VS+lMem(F6R-1TsQ}lg2|Qb!&U4f) zJXh`DdFl;5S$)LwwPIeN4d8{^B0kkJC5x;ZlB2DV+Kmvs42Bfp1TVswl@LS6E?>g; zT~99T^{EwN!2f8cq>T@1PI!Wv9iGh8a^X`Y^cF*UDusTe9D{z#JnCC=eNX*at~g2% zVJrP0oRuyq4#Qy@^gDxIJqS~k?n3q>U5H|iF8h&Avf`P32k4ysLy){5pmE>AV==u3 z&u!fbx!o{qCcIu>TWO4WFmRQ6fxfT8rHNGwxwcVtfgW;~Ru~}zHqH^O;asDn1L@Ak zJj>Q;t!v#dc5SwHoZ{L-L3=Y-@KlKzwN`t?yMbKkdUyX(Tid}-v%!itY3DeHXR&pq zq{U$xJ6TZh?|J;>PmJiv_|3wv$THZ-;O)J1={m^Q$d%w$*I@ z-!`Li5wYRF%jqnGs7D_jiR^NV7GaxDHJMeW> z&L~9MvJ7s*fwY>1dYzR9POmfyTm@LVem!W{>qd2jHc;)DQTAxxGz2>zn3PIrz>P8%&>Pp8_8Hw0I7aK-Rv<-xcZM#-vz2|OGu#O61m8FKHTGh|G1FJ!8F zsHw$fB-~IiDMux}y?w)(neQ3cMk#wNb8MTjh?U8$M8)276>5UE?Yo>@SZ~!^ag6NT z?q9G$#7hWYAyQwiqX8VHp}dq9@G@G2z9oD*E`OHOS;*GbaGWmY1YN>s&<)%~TRBPF zc_p>+D%#6u(!0p!{(*0c3_gdwd@kqm+1w4E7xmz^T)-D`5nsYlzLc-xEBJc8l5a)r zDSS=z3}4F!`8tJ9A(%iU2e;p~2L3_1&%b4rH=UMs#`dq;3Df%O3z!B(u z(~bZ&`yN~R{)AB&EY#jW&2|Ja>ir{yEJtvFCczaHfQ=2`7qXfx7L@LgFNYvmODD7@%Ca`R)*-2LRo*F8m$%hC9( zX97P%b0Mvh(LR-*hX%huEAds&I(~_6;g_iepY*gbTr~P0FwDJ3uw4K^A{bd+EF~wDXBP z&w^iYWU#2kn>>$Xv7x9mW8z%FvmJNYVSESm>CoOpfe!7eVt>y@m~a#gRsNph25&6( zceA^?p{tv8U0Cc7*j)j11*9uc?9a8ka?zD5U5kqSId)eLx^kqey4Y{nT?V=g>8dC; z(UV(jHdL9?KC;+twcQO>ZfW-@c3Ev#LzPR~Za8CG&UU1br4|wmK-s!==-Mc%t4Y|h zlh)ueztm9@e|QTO!S}BT8KqgV$T>FG*5aeVgRh7yI@gLvuz*(K!QHS{k)u`kiYxFU zV3YBdvzF!2PD(Efk2Wzg05@@5dH{LG;LHH>4C|&|(h1}l@Nk*y%nGB0k{Q6Pd(1q$xi1 zyb9}`m^58`q?wZj&WFc6ufiAds4Zz%W+yahW>|i5f;j1y2%skrvqHXX2&5hvhzo6qqeEUmSXq(9ke_2~X6`SnxvsB6hQ1vZ zEL%h&12M|lIN3Zrf|uao5T0@D#vzV9!%*aukOSrE&9fE`wENC`W4P{ zqQno`^++hkqURPHv@3d6w9~W1fr6ffa{iy`>4d-bO(*=d|FD-&yfgkscEaDn1Mz;y100L%xAH0N zSQc-iW1W_*HhF0_Z?NC1K%YR2zLhRa53HwE&J2X&?KPMPSv^a+5NgKeg zY)WUKHtQSKS#PmgZ095jWf{ISid_Zpc8YAv;QxfE=<5GnQBm(hL`6P`YOQ{-<=g%t z_j=o|Pq1wANkl&-h`~gkl4{0HPgqZYWTE>5+IDbOT{5ND*pV9^V88WNS=}P_r+0~c0 z5c@kW!@fei`VU-!eN7MYKj~rq7w*u%!6)h8;_m!Eac}+|?#&O-+x!E4z(3-?{2+aX z)Z-tD=^MO{_(AE&CEV;)_~(Dh!)40LLy>2VR=Kz)%j3l=pO>IruY%mDx^a^VakJ{l zXR2O&wkqIr)nR;rD&$L55x=I2`9pQM@~Ymdy9(pKK5C#kLJe1a)mYU}O;i2VY;}~X zRVAuP4Nw^OpHPeRXVj_sb1I_0u4?r^si^)JwN(FFEpr{F z>Rp3W%ypbP-BqoYyXL6|SG`){TCEyg7pgN{7ptV}Qnk``lRDG2UY+H-U7hXPrPjFK zQ0KV*rp|SJtIl(K)cNk7>H>F(y3jpBUF068E_P2+m$<9d748MkLw;OBJ9mZv<#Xvr6+^6m}cB%V~r_?WvH`Gq!BlV#1wc2GIRJ%=0wV5up$DFA4 znlatA6L1q+a#RSAX;@QiYx+>MhSQ^|q%)z2n)X-t|1D z-t#=E-uFDM?3aA46yRa_Fv-fWjp4XreFvG7X}+JXX*au`w({ycUTgf>g3IM*bEcJH z8+@iYjo!r!51(zGfKOAdC)_KTlj(iba`*ys0`Ywq zJcZYf^2XTh*-w8#%|#y1KD__hiwsaMY_FlJA8}NfOM}*5ety2nIl@ZQhai>n9K;tL zc}|ut_qO=qiC0{w_4kB&;O*1KK79t|7ky8Qk(&1(c7WpfNX*9^pi?vD@LmTfS#*Fd zboC#2WV-$xDJ+kq{vf{PF)|wfBa=SLd{wp>n9JW3zxP+(`C5R_n=xMxaB{|cSAbW~ znC}kovKjM@0FRw9-wg1a8T0+d=%)MjKUM((K8;THF8bQ?O$-OqR%=VKt*wS%_qlJ9v}?Ht=lWhSAH#iqW|aWsTu4x%_7!kgOuM$K>4{4RvILioLQ z|DfhX2q(3D+rc{+`ECgBh46j|f7F9cseh-#IHOLT!Jk4ntL-^8AB2hL!w^1FU;Z4z z#|}Qx>xbYkHb&XF*T$zd{@T!8=81gTu*LVVq!Z0J1LzPvO!V{58Ix91F{P%WwsKTu z^-O`ku(aD4fnCedgsRDc(A0{$QFYamrU?RtrKR0UxmZnV3Bw7K9GIT92GabT9l#1R}kn*6@0tY`XeMVx`k5{;Ji0 zw4yAx5$SjD?v+u@6ChQ^6jCgrPVEQ`uJXe+T$GU*)RLMitjCAtX)6ZDN54Yk(@S z#OSnZdaFkc&jET7bZ>Kmf(P2*e#5DrW*CC)wOF9Z7JUPn1AwcuNzy9HeSyfZscv%F9!i`nLxZ{XwPHvscIKG zqJF71JT7&y_G;;jve^}N#;r=k4V_)cItx(Bk+IyT8ssLCk=H9?sTZj>)3kcM&xB7F zeFkL?QRX(NLPyG}SLb*Kmn1UW2N z8T6?m4~cMlCvGhvNdtJmKs-S1=P)^bNUU)>@E|Xr$KHG_!~!b&5LQs=avh$OzE~zBk&r1^E;Bhl8!KfV zR>=Z9Ba5&`mSUYO!&+I6XJr*O$!ctrwRld}W3z0;7TJPrvK?FHc?Op9@e?M=Ktg$d zPKW7g4uQ-?n4wg~2#F7+ey6e4(B<$Ti@4^JfffAVK`Iqy0PSqnkv&DqVkSF?H%_X9 zvX!Xg+~>$9Vvkdn4B0>i;*5`uvXVTEBdZa4ifqh;jZTsvCyyB67&fKIxJqWj%ugE& z|Nrk%2K^$?EY2Nl1Sdpio8b2i(gA&4g2z*l^ie9L?@!cb6~&uN z)QyZQ26)jf+!BqYLY#vVGw|wG5}B>_>u3^b{xVjt*09&|06y@3${I!k+1h<#?pu8m>6aNMG3xp61VO{=dpWG zkab%lxBKp@`2ioy4_U^~ z@d5rAJ@~^_L$`<*lmuA2)ko#8xW&ifl#e?13|D>T)iu!!fKcw5Q*~a9)*K_ p4eFAQZoUQ`wEf>fX3HS4JG zd7v!ApfDH(LFtA>!F|_J9CZeFQE^{p7-!sa6#VKX!0~iaRrlU^>sEdBRn0%7rDyJ? zt?M2G`qCCMkeLC;Fw4a4p~P&nViR*r%r$X`i93DfnV#>nz&>1Pi@%syWa6(T7Khx$ z-DWMZPnMeXH?x)n+(UD~z1$b%B$u1HB9yq_W2MI`j|V&+4B4BRKC4aVO%y`*Vok`N zto3N|X$^UZhi$#iW4+HKAyqu;^O)(!O*~=ZNuQ^Do;LFt6VLiQXZrb&7wG+>&r3dk z_j%bIy<+ig2zb?kdX<0pyykI&$8e9=J>DqPxyjDGUf7Vj!F5)orzXL+==FG1W@6l@ zs8?QT*8GBf8d0OI!=xlX5x<~PT^Ds5knd52pSv4jc=?OJ@)*FOBok& zyxlm-#1QjxqQ&sfh<~v$;xvXwoXhBlT44zK{5Uuj8zjt>Q<+;1+K6_$lINnjHQCjopS_K5oK! z@zvh8qD;@B2M#Yx^wX&v`v~xXB47!D!6qv(TFdjnLI_= zK2_qhVFOhyCgKSwiY?{;Y6X^n-s>`AlI*(W_$7x1N9-&NOUov#3 zGr1m=v!BSgKRxuTrYDDRAcxDUrI&!|E`szH6KceogE>Q2yU9^0S z5#wymk*?Q&1(|I+OnHpb(J%O}jXm1bKY>xFBjq8)W1_0Q7FH-<&_{$kEO{kLJnq7n z1akA3#@Xh1?SK{5L-JGE4;Yi)Dr4#+=N`F0bl%hXccLy+D1)iiRr>eZSYG=C2 zyFk=!R%R+Q?GB=2XSMGSa zvg2uI^M$l1UszuHReJ?Ds^-|PYE{f-;=%-xv{7C!7tgLxHJen&NvhwURlA7-{3^Y0 zjks~GK%J}@a{5i-CazO;r!tpmEaZBYa)W02jpTLmFgNpzX2L7tz(#IklfK--j2yo* z(}m1(mE7+3W45a$cBe4Mjb*MIul*}o;3l)sO<|F{g~e_rce~l#<>s)=E#O|ah|v;VsU~~C`W1K z+$aR*>Vqp(tUx4My&X?kR|*R!{8kBzCRL-@tq>wjx)-`;;nJkal(?lrt4S2u-OcA} z@wu3+yF-XI;IWsBg;`Fut4C@mCEJ8-phoq$_V<5NMEvWJm|A(9$Fz#AOm|L=+|WjN zvNoLUwvkBNTr&@@o%8jOv!5Ag^l#;aW|k7R`s&1l00&->U6R`Yxl%baO)S(5Ajc5RdFyGtj0( zJ5$%m%X&4+I`Qez#Dk5J6qQM%Vn_({^e?1bS(|Y4#gJq!$Ac;k>UngkK#9h&2Jy4l iLT$NoQMzLh&#UMi4bb_nmWg9z{945TZ@TOhGkyc5xuh}x diff --git a/CompiledServer/production/2006rebotted/redone/util/GameLogger.class b/CompiledServer/production/2006rebotted/redone/util/GameLogger.class index 700cd34527c1b85201d78a40a339488a0f37a59e..e067041c18fe5e5f4df4c22690b9374a8d3fd421 100644 GIT binary patch delta 217 zcmV~$J4-@w7{KA*`~GP$j!_8_g3B4ZZ3R}IE~ee{QdS0`N6^wPLsOHuv;@Z?(67)K z1`UZz5iRa*4h=O)U!mve+kN}VZ&?%EGD(do9+`O#TAr!SqbxAUBGW{e!y(HO1(vyE zg*vOWh|*?_9x;B2i;r~~WkY7!6o)Nw*_H}B;;}1D_T-g>ypxn4Qu0SyN7&aO2O1%x zaSpZ2k=}5u4NmkW%&B(B=^F+8Ag`ae+NG#pl=Pc3Gr+m=Q8q(VOn@sh#)TQ@(uBBv IaEI^z0pXo2*Z=?k delta 217 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 Y;&!Z;F^;Qctm6@>B*(-2=D;KW2YSTO=>Px# delta 4045 zcmb_fX?T>?6@Jg`Gx;)^?32tuNMaU-C6KTM8cd22FiI+Wupkja3P!96Ahps&1govs z>a-OV1hJIXVyj6BDIm~FU2rM3wuM>{QCqEAt5$1Seb1dC8T;_lJkQ+keD^!&-1n^a zWNq!?n)ZWdckKl*LI(LT1bcj#fG0fI>%l%B{MhfqZ}3}JH97Q8-=5UvfHSs%A} zVa0L8gTH$4iVuIoQI$ESC%>xHaXsiYrA{dIx-M_%@}?Vq_uwCHyroiaE5|>57=(9J z^j%%v^Wk53U#Wk)suy)c1Ck%c2R?j=k97HuE+2dFiHiQ$jZeF-kV2c(cHLml7kMfg zbUP1*>m8YgIBw<36eniYeq`&IQ6S!%zl&X_BkdEIgMbS;>Nb;b zM9imGJ!PK6ZJvZ~oMT_zGz&PG5C-Q}8 zGMX;-SI+6v6f&Ad&^DkHi{hF}(Hz%Qim$~rm142cqPS}d8h3c~?dg54JPRIyYKNcye3Jo#Zd4w3_efL3C3}Qi5|M3C{KOI(OOmK&0d(@D9Bo z@A6*zrX<)_PK*__Z6s|QMcc;Ewo2MImbQ)i0&H6mJC!y)PD@>UR@tkf#{$&}7%m}( zT4K1A7$y?KBx0CM43`l@-4}r2My%Ax^6U!wU;XQ)e>bLD2|lY&@R=9iV9d0V*b_}o z97>&7qxq0!(rg;n>BKsN_-0`QqtRDTqv8dnspWvJ%t0;R#LY&_@wA*ls)f<#I+qsD zOOW*Rmg1^7|Ax=;H7FUUrF5R>8Y&BLUOKQ>vEB^!oo#dy4;Kg_FUE{Ld8FdM8JE-Co8nl{8 zdn@6tVOv;B7`M?;t655S7`T(jk%x2x(#7BpHPEzQjqQatwinviI5ZpOZzo7~ScPdK zv3_Mm*Jh@;?~E7z1DT24dR>D1wOhxMcvhVEXl6Je;qOV{O-kThXY3r1RXDOQRqrK= z^@cyoq;4ASGP;2@e2JhIdSMSc;-EvOA1V z$MS9hHuHpsm;zhqv4?pN{1_$J%J%dVPDI<70zc(_@-sH;hnOte>HS9;n_rq!^fpQ7 zE%qbaOUl7!tgTmXzB`FtZ#f%zwK0on!s&3Gfy2Q#4@;NON#vY_Ge~sz;eLazIan1e z4zICECjyzy5i_Ek7ouKveQ05s7{7@Zamal3mZ)RD7Dcz*+%dWlCl}& zHjO43%iDA~&+h6a0d@eua~a(J4I1IXB*2rqaNCW0;%AbQoiuJZu#+a4rMZj~S+c(COtsZ;JEzazao@ zu{kNwJ0}Ht=cGXIoD{(MIcYmg4O4C_L!kLT(OwnqL}~lpEy(9HT#>sOX`L7tt_W?0 zw-b?Y#dhZTwsS{!V^BldVCNGU(qPZ+!O&?9j*vcjP_`4p_EA?X)y+jHN$_#*4-3a4 z(xsAW&<-GvjUjr}_<*O=&Dx1LJ56M%YP-Xn7Uw-@WN>7jz zPyOBRBX z&2An{H>kA{Phz%cefv?v8s1@U zpV6%J9lVj$CNFGfG0<+er;_Z64-XCfL+w>DmqzT}DC)uZ9$ZY%MjYM9RoB)Ie69aIn*7SaD(gnk4|LTAA7thG)~1LthZ UrP%hMl-Qn@QgZC#Hyd_;1`%p&7ytkO