From 6dc232dfc526e8da01545073baff4e64d8eda734 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Mon, 15 Aug 2022 20:18:10 +0200 Subject: [PATCH 01/44] Add autoloot from freakz --- LegionWA/AutoLoot/Autoloot.lua | 635 +++++++++++++++++++++++ LegionWA/AutoLoot/TSU - Item Monitor.lua | 38 ++ 2 files changed, 673 insertions(+) create mode 100644 LegionWA/AutoLoot/Autoloot.lua create mode 100644 LegionWA/AutoLoot/TSU - Item Monitor.lua diff --git a/LegionWA/AutoLoot/Autoloot.lua b/LegionWA/AutoLoot/Autoloot.lua new file mode 100644 index 0000000..7ae7ab6 --- /dev/null +++ b/LegionWA/AutoLoot/Autoloot.lua @@ -0,0 +1,635 @@ +--LOOT_READY MERCHANT_SHOW QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW SCRAPPING_MACHINE_SHOW MERCHANT_CLOSED EQUIP_BIND_CONFIRM +function(e) + local aura_env = aura_env + if e == "LOOT_READY" then --Auto Loot + local slot = 1 + local lootinfo = GetLootInfo() + for k, v in pairs(lootinfo) do + if v.locked == false then + local link = GetLootSlotLink(slot) + local looted = false + if not link then link = GetLootSlotLink(slot) end + if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[2] == true and link:match("Azerite") then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[3] == true and v.item:match("War Resources") then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[4] == true and v.item:match("Residuum") then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[5] == true and v.item:match("Manapearl") then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + end + if link then + local icon = v.texture + local id = link:match("item:(%d+):") + if not WeakAurasSaved.CustomTrash.IconDatabase[v.item] and v.item and icon then + WeakAurasSaved.CustomTrash.IconDatabase[v.item] = icon + print("Adding ", v.item, " to the icon database") + end + if not WeakAurasSaved.CustomTrash.IDDatabase[v.item] and v.item and id then + WeakAurasSaved.CustomTrash.IDDatabase[v.item] = id + print("Adding ", v.item, " to the id database") + end + local type = select(6, GetItemInfo(link)) or "" + local subtype = select(7, GetItemInfo(link)) or "" + local ilvl = select(4, GetItemInfo(link)) or 0 + local equip = select(9, GetItemInfo(link)) + if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[14] == true and v.isQuestItem == true then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[15] == true and v.quality == 0 then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[21] == true and type == "Consumable" and subtype == "Other" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + else + if type == "Weapon" or type == "Armor" then + if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + end + elseif aura_env.filter[20] == true and type == "Miscellaneous" then + if subtype == "Mount" then + LootSlot(slot) + if link then + WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) + end + end + end + end + end + slot = slot + 1 + end + end + CloseLoot() + elseif e == "EQUIP_BIND_CONFIRM" then + StaticPopup1Button1:Click() + elseif e == "SCRAPPING_MACHINE_SHOW" then + for i = 0, 4 do + for j = 1, GetContainerNumSlots(i) do + local link = select(7, GetContainerItemInfo(i, j)) + if link then + local name = GetItemInfo(link) + local rarity = select(3, GetItemInfo(link)) + local ilvl = select(4, GetItemInfo(link)) or 0 + local type = select(6, GetItemInfo(link)) + local equip = select(9, GetItemInfo(link)) or "" + local price = select(11, GetItemInfo(link)) + if aura_env.sellWhitelist[name] ~= 1 then + if name and rarity and ilvl and type and equip and price then + if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then + UseContainerItem(i, j) + elseif rarity > 3 and aura_env.getequipID(equip) then + if equip ~= "INVTYPE_FINGER" then + local eqID = aura_env.getequipID(equip) + local elink = GetInventoryItemLink("player", eqID) + local eilvl = select(4, GetItemInfo(elink)) or 0 + if eilvl > ilvl + 5 then + print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink) + UseContainerItem(i, j) + end + elseif equip == "INVTYPE_FINGER" then + local eqID1, eqID2 = 11, 12 + local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2) + local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0 + if eilvl1 > ilvl + 5 then + print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1) + UseContainerItem(i, j) + elseif eilvl2 > ilvl + 5 then + print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2) + UseContainerItem(i, j) + end + end + end + end + end + end + end + end + elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon + if CanMerchantRepair() == true then RepairAllItems() end + local i, j = 0, 1 + for c = 0, 4 do + for s = 1, GetContainerNumSlots(c) do + local link = select(7, GetContainerItemInfo(c, s)) + if link then + local name = GetItemInfo(link) + local rarity = select(3, GetItemInfo(link)) + local ilvl = select(4, GetItemInfo(link)) or 0 + local type = select(6, GetItemInfo(link)) + local price = select(11, GetItemInfo(link)) + if price and price > 0 then + if aura_env.sellWhitelist[name] ~= 1 then + if rarity == 0 then + aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} + elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then + aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} + end + end + end + end + end + end + aura_env.ticker = C_Timer.NewTicker(0.15, function() + if aura_env.toSell[1] then + UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) + table.remove(aura_env.toSell, 1) + else + aura_env.ticker:Cancel() + end + if j >= GetContainerNumSlots(i) then i = i + 1 + j = 1 end + if i >= 4 then aura_env.ticker:Cancel() end + end) + elseif e == "MERCHANT_CLOSED" then + if aura_env.ticker then aura_env.ticker:Cancel() end + aura_env.toSell = {} + elseif e == "QUEST_POI_UPDATE" then + CloseGossip() + elseif e == "QUEST_DETAIL" then + AcceptQuest() + elseif e == "QUEST_COMPLETE" then + if GetNumQuestChoices() <= 1 then + GetQuestReward(1) + end + elseif e == "GOSSIP_SHOW" then + local quests = GetNumGossipAvailableQuests() + local complquests = GetNumGossipActiveQuests() + local opt = GetNumGossipOptions() + if complquests > 0 and opt == 0 then + for i = 1, complquests do + SelectGossipActiveQuest(i) + end + end + if quests > 0 and opt == 0 then + SelectGossipAvailableQuest(1) + end + if opt == 1 and quests + complquests == 0 then + SelectGossipOption(1) + end + elseif e == "QUEST_GREETING" then + local quests = GetNumGossipAvailableQuests() + local complquests = GetNumGossipActiveQuests() + if complquests > 0 then + for i = 1, complquests do + SelectActiveQuest(1) + end + end + if quests > 0 then + SelectAvailableQuest(1) + end + elseif e == "QUEST_PROGRESS" then + if IsQuestCompletable(i) then + CompleteQuest() + end + end +end + +--INIT +aura_env.debug = true +aura_env.filter = { + [1] = true, --Gold + [2] = true, --Azerite + [3] = true, --War resources + [4] = true, --Residuum + [5] = true, --Manapearls + [6] = true, --Mounts + [7] = true, --High ilvl + [8] = true, --Herbs + [9] = false, --Cooking + [10] = false, --Cloth + [11] = true, --Metal & Stone + [12] = true, --Gold filter greys + [13] = true, -- >1 && <4 quality items, no gear + [14] = true, --Quest items + [15] = false, --All greys + [16] = true, --Whitelist + [17] = true, --Quest items (different filter) + [18] = true, --Class aproperiate >2 items + [19] = true, --Jewelery >2 quality + [20] = true, --Additional mount filter + [21] = true, --Tradeskill // Elemental +} +aura_env.ilvlFilter = 940 +aura_env.goldFilter = 500000 + +aura_env.whitelist = { + ["Pygmy Suckerfish"] = 1, + ["Drakkari Offerings"] = 1, + ["Deepcoral Pod"] = 1, + ["Hardened Spring"] = 1, + ["Machined Gear Assembly"] = 1, + ["Tempered Plating"] = 1, + ["Hefty Glimmershell"] = 1, + ["Fresh Meat"] = 1, + ["Wood"] = 1, + + ["Blood of Sargeras"] = 1, + ["Primal Sargerite"] = 1, +} +aura_env.sellWhitelist = { + ["Blacksmith Hammer"] = 1, + ["Endless Tincture of Renewed Combat"] = 1, + ["Mr. Munchykins"] = 1, + ["Arclight Spanner"] = 1, + ["Runeblade of Baron Rivendare"] = 1, +} +aura_env.toSell = {} +aura_env.getequipID = function(equip) + if equip == "INVTYPE_HEAD" then return 1 + elseif equip == "INVTYPE_NECK" then return 2 + elseif equip == "INVTYPE_SHOULDER" then return 3 + elseif equip == "INVTYPE_BODY" then return 4 + elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then return 5 + elseif equip == "INVTYPE_WAIST" then return 6 + elseif equip == "INVTYPE_LEGS" then return 7 + elseif equip == "INVTYPE_FEET" then return 8 + elseif equip == "INVTYPE_WRIST" then return 9 + elseif equip == "INVTYPE_HAND" then return 10 + elseif equip == "INVTYPE_CLOAK" then return 15 + elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then return 16 + elseif equip == "INVTYPE_SHIELD" then return 17 + else return nil end +end +aura_env.skills = { + --Warrior + [1] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 1, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Paladin + [2] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Hunter + [3] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Rogue + [4] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Priest + [5] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Death Knight + [6] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Shaman + [7] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Mage + [8] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Warlock + [9] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Monk + [10] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Druid + [11] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Demon Hunter + [12] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 1, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, +} diff --git a/LegionWA/AutoLoot/TSU - Item Monitor.lua b/LegionWA/AutoLoot/TSU - Item Monitor.lua new file mode 100644 index 0000000..8e1d6a3 --- /dev/null +++ b/LegionWA/AutoLoot/TSU - Item Monitor.lua @@ -0,0 +1,38 @@ +--REMOVE_ITEM_SHOW ADD_ITEM_SHOW +function(allstates, e, what, howmuch) + if e == "ADD_ITEM_SHOW" then + if what then + --Get info about item + local icon = 0 + local name = GetItemInfo(what) + --Save icon to databases + if not WeakAurasSaved.CustomTrash.IconDatabase[name] then icon = select(10, GetItemInfo(name)) else icon = WeakAurasSaved.CustomTrash.IconDatabase[name] end + if name and icon and not WeakAurasSaved.CustomTrash.IconDatabase[name] then WeakAurasSaved.CustomTrash.IconDatabase[name] = icon; print("Adding|cff78cb00 ", name, " |rto the icon database") end + --Get ID for tooltip + local indexid = #allstates + 1 + local ID + if WeakAurasSaved.CustomTrash.IDDatabase[name] then ID = WeakAurasSaved.CustomTrash.IDDatabase[name] end + allstates[indexid] = + { + show = true, + changed = true, + index = GetTime(), + resort = true, + icon = icon, + name = what, + amount = howmuch, + } + if ID then + allstates[indexid].itemId = ID + end + C_Timer.After(5, function() WeakAuras.ScanEvents("REMOVE_ITEM_SHOW", indexid) end) + return true + end + elseif e == "REMOVE_ITEM_SHOW" then + if allstates[what] then + allstates[what].show = false + allstates[what].changed = true + return true + end + end +end \ No newline at end of file From eb02b0f5aeed6722642cebd7b779347589596673 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Mon, 15 Aug 2022 20:25:35 +0200 Subject: [PATCH 02/44] Split the code into files --- LegionWA/.gitignore | 1 + .../{Autoloot.lua => Autoloot/Event.lua} | 371 +---------------- LegionWA/AutoLoot/Autoloot/Init.lua | 378 ++++++++++++++++++ .../Event.lua} | 0 4 files changed, 380 insertions(+), 370 deletions(-) create mode 100644 LegionWA/.gitignore rename LegionWA/AutoLoot/{Autoloot.lua => Autoloot/Event.lua} (58%) create mode 100644 LegionWA/AutoLoot/Autoloot/Init.lua rename LegionWA/AutoLoot/{TSU - Item Monitor.lua => DisplayTSU/Event.lua} (100%) diff --git a/LegionWA/.gitignore b/LegionWA/.gitignore new file mode 100644 index 0000000..b4fa2c9 --- /dev/null +++ b/LegionWA/.gitignore @@ -0,0 +1 @@ +.vscode diff --git a/LegionWA/AutoLoot/Autoloot.lua b/LegionWA/AutoLoot/Autoloot/Event.lua similarity index 58% rename from LegionWA/AutoLoot/Autoloot.lua rename to LegionWA/AutoLoot/Autoloot/Event.lua index 7ae7ab6..f9950b4 100644 --- a/LegionWA/AutoLoot/Autoloot.lua +++ b/LegionWA/AutoLoot/Autoloot/Event.lua @@ -263,373 +263,4 @@ function(e) CompleteQuest() end end -end - ---INIT -aura_env.debug = true -aura_env.filter = { - [1] = true, --Gold - [2] = true, --Azerite - [3] = true, --War resources - [4] = true, --Residuum - [5] = true, --Manapearls - [6] = true, --Mounts - [7] = true, --High ilvl - [8] = true, --Herbs - [9] = false, --Cooking - [10] = false, --Cloth - [11] = true, --Metal & Stone - [12] = true, --Gold filter greys - [13] = true, -- >1 && <4 quality items, no gear - [14] = true, --Quest items - [15] = false, --All greys - [16] = true, --Whitelist - [17] = true, --Quest items (different filter) - [18] = true, --Class aproperiate >2 items - [19] = true, --Jewelery >2 quality - [20] = true, --Additional mount filter - [21] = true, --Tradeskill // Elemental -} -aura_env.ilvlFilter = 940 -aura_env.goldFilter = 500000 - -aura_env.whitelist = { - ["Pygmy Suckerfish"] = 1, - ["Drakkari Offerings"] = 1, - ["Deepcoral Pod"] = 1, - ["Hardened Spring"] = 1, - ["Machined Gear Assembly"] = 1, - ["Tempered Plating"] = 1, - ["Hefty Glimmershell"] = 1, - ["Fresh Meat"] = 1, - ["Wood"] = 1, - - ["Blood of Sargeras"] = 1, - ["Primal Sargerite"] = 1, -} -aura_env.sellWhitelist = { - ["Blacksmith Hammer"] = 1, - ["Endless Tincture of Renewed Combat"] = 1, - ["Mr. Munchykins"] = 1, - ["Arclight Spanner"] = 1, - ["Runeblade of Baron Rivendare"] = 1, -} -aura_env.toSell = {} -aura_env.getequipID = function(equip) - if equip == "INVTYPE_HEAD" then return 1 - elseif equip == "INVTYPE_NECK" then return 2 - elseif equip == "INVTYPE_SHOULDER" then return 3 - elseif equip == "INVTYPE_BODY" then return 4 - elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then return 5 - elseif equip == "INVTYPE_WAIST" then return 6 - elseif equip == "INVTYPE_LEGS" then return 7 - elseif equip == "INVTYPE_FEET" then return 8 - elseif equip == "INVTYPE_WRIST" then return 9 - elseif equip == "INVTYPE_HAND" then return 10 - elseif equip == "INVTYPE_CLOAK" then return 15 - elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then return 16 - elseif equip == "INVTYPE_SHIELD" then return 17 - else return nil end -end -aura_env.skills = { - --Warrior - [1] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 1, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Paladin - [2] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Hunter - [3] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Rogue - [4] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Priest - [5] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Death Knight - [6] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Shaman - [7] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Mage - [8] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Warlock - [9] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Monk - [10] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Druid - [11] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Demon Hunter - [12] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 1, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, -} +end \ No newline at end of file diff --git a/LegionWA/AutoLoot/Autoloot/Init.lua b/LegionWA/AutoLoot/Autoloot/Init.lua new file mode 100644 index 0000000..00cd040 --- /dev/null +++ b/LegionWA/AutoLoot/Autoloot/Init.lua @@ -0,0 +1,378 @@ +if not WeakAurasSaved.CustomTrash then + WeakAurasSaved.CustomTrash = {} +end + +if not WeakAurasSaved.CustomTrash.IconDatabase then + WeakAurasSaved.CustomTrash.IconDatabase = {} +end +if not WeakAurasSaved.CustomTrash.IDDatabase then + WeakAurasSaved.CustomTrash.IDDatabase = {} +end + +aura_env.debug = true +aura_env.filter = { + [1] = true, --Gold + [2] = true, --Azerite + [3] = true, --War resources + [4] = true, --Residuum + [5] = true, --Manapearls + [6] = true, --Mounts + [7] = true, --High ilvl + [8] = true, --Herbs + [9] = false, --Cooking + [10] = false, --Cloth + [11] = true, --Metal & Stone + [12] = true, --Gold filter greys + [13] = true, -- >1 && <4 quality items, no gear + [14] = true, --Quest items + [15] = false, --All greys + [16] = true, --Whitelist + [17] = true, --Quest items (different filter) + [18] = true, --Class aproperiate >2 items + [19] = true, --Jewelery >2 quality + [20] = true, --Additional mount filter + [21] = true, --Tradeskill // Elemental +} +aura_env.ilvlFilter = 940 +aura_env.goldFilter = 500000 + +aura_env.whitelist = { + ["Pygmy Suckerfish"] = 1, + ["Drakkari Offerings"] = 1, + ["Deepcoral Pod"] = 1, + ["Hardened Spring"] = 1, + ["Machined Gear Assembly"] = 1, + ["Tempered Plating"] = 1, + ["Hefty Glimmershell"] = 1, + ["Fresh Meat"] = 1, + ["Wood"] = 1, + + ["Blood of Sargeras"] = 1, + ["Primal Sargerite"] = 1, +} +aura_env.sellWhitelist = { + ["Blacksmith Hammer"] = 1, + ["Endless Tincture of Renewed Combat"] = 1, + ["Mr. Munchykins"] = 1, + ["Arclight Spanner"] = 1, + ["Runeblade of Baron Rivendare"] = 1, +} +aura_env.toSell = {} +aura_env.getequipID = function(equip) + if equip == "INVTYPE_HEAD" then return 1 + elseif equip == "INVTYPE_NECK" then return 2 + elseif equip == "INVTYPE_SHOULDER" then return 3 + elseif equip == "INVTYPE_BODY" then return 4 + elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then return 5 + elseif equip == "INVTYPE_WAIST" then return 6 + elseif equip == "INVTYPE_LEGS" then return 7 + elseif equip == "INVTYPE_FEET" then return 8 + elseif equip == "INVTYPE_WRIST" then return 9 + elseif equip == "INVTYPE_HAND" then return 10 + elseif equip == "INVTYPE_CLOAK" then return 15 + elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then return 16 + elseif equip == "INVTYPE_SHIELD" then return 17 + else return nil end +end +aura_env.skills = { + --Warrior + [1] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 1, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Paladin + [2] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Hunter + [3] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Rogue + [4] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Priest + [5] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Death Knight + [6] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Shaman + [7] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Mage + [8] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Warlock + [9] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Monk + [10] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Druid + [11] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Demon Hunter + [12] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 1, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, +} diff --git a/LegionWA/AutoLoot/TSU - Item Monitor.lua b/LegionWA/AutoLoot/DisplayTSU/Event.lua similarity index 100% rename from LegionWA/AutoLoot/TSU - Item Monitor.lua rename to LegionWA/AutoLoot/DisplayTSU/Event.lua From 65071f34fd8bdda3be5dc9f64cb118f21e4e7927 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 22:31:07 +0200 Subject: [PATCH 03/44] Add new autoloot aura, better than ever --- LegionWA/NewAutoLoot/Event.lua | 9 + LegionWA/NewAutoLoot/Init.lua | 591 +++++++++++++++++++++++++++++++++ 2 files changed, 600 insertions(+) create mode 100644 LegionWA/NewAutoLoot/Event.lua create mode 100644 LegionWA/NewAutoLoot/Init.lua diff --git a/LegionWA/NewAutoLoot/Event.lua b/LegionWA/NewAutoLoot/Event.lua new file mode 100644 index 0000000..56f8992 --- /dev/null +++ b/LegionWA/NewAutoLoot/Event.lua @@ -0,0 +1,9 @@ +-- LOOT_READY +function(allstates, e) + aura_env.allstates = allstates + + local lootInfo = GetLootInfo() + aura_env.filterService:run(lootInfo) + CloseLoot() + return true +end diff --git a/LegionWA/NewAutoLoot/Init.lua b/LegionWA/NewAutoLoot/Init.lua new file mode 100644 index 0000000..54336fd --- /dev/null +++ b/LegionWA/NewAutoLoot/Init.lua @@ -0,0 +1,591 @@ +local debug = false +local iconDisplayDuration = 3 + +-- itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType,itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID, bindType,expacID, setID, isCraftingReagent = GetItemInfo(slot) +-- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) +local function getItemLink(slot) + return GetLootSlotLink(slot) +end +local function getItemName(slot) + return select(2, GetLootSlotInfo(slot)) +end +local function getItemType(slot) + return select(6, GetItemInfo(getItemLink(slot))) +end +local function getItemSubtype(slot) + return select(7, GetItemInfo(getItemLink(slot))) +end +local function getItemLevel(slot) + return select(4, GetItemInfo(getItemLink(slot))) +end +local function getItemValue(slot) + return select(11, GetItemInfo(getItemLink(slot))) +end +local function getItemQuantity(slot) + return select(3, GetLootSlotInfo(slot)) +end +local function getItemQuality(slot) + return select(3, GetItemInfo(getItemLink(slot))) +end +local function getItemEquipLocation(slot) + return select(9, GetItemInfo(getItemLink(slot))) +end +local function getItemIcon(slot) + return select(10, GetItemInfo(getItemLink(slot))) +end + + +local doLoot = function(slot) + aura_env.debugLog("Looting slot: " .. slot) + LootSlot(slot) + + local itemIcon = getItemIcon(slot) + local itemName = getItemName(slot) + local itemQuantity = getItemQuantity(slot) + local itemQuality = getItemQuality(slot) + + aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) + local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithQuantity = nameWithColor .. " x" .. itemQuantity + + aura_env.debugLog("Assigning name" .. nameWithQuantity) + aura_env.allstates[#aura_env.allstates + 1] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = itemIcon, + name = nameWithQuantity, + amount = itemQuantity, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } +end + + +local goldFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Gold filter; slot: " .. slot) + local itemName = getItemName(slot) + if (itemName:match("%d+ (Gold|Silver|Copper)")) then + aura_env.debugLog("Gold filter pass") + return true + end + end + end +} +local orderResourcesFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Resource filter; slot: " .. slot) + local itemName = getItemName(slot) + if (itemName:match("Order Resources")) then + aura_env.debugLog("Order resource filter pass") + return true + end + end + end +} +local mountFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Mount filter; slot: " .. slot) + local itemType = getItemType(slot) + if (itemType == "Mount") then + aura_env.debugLog("Mount filter pass") + return true + end + end + end +} +local ilvlFilter = { + enabled = true, + ilvlThreshold = 880, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("ILvl filter; slot: " .. slot) + local itemLevel = getItemLevel(slot) + if (itemLevel > self.ilvlThreshold) then + aura_env.debugLog("Item level filter pass") + return true + end + end + end +} +local professionFilter = { + enabled = true, + herbs = true, + cloth = false, + ore = false, + leather = false, + cooking = false, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Profession filter; slot: " .. slot) + local itemType = getItemType(slot) + if (itemType == "Tradeskill") then + local itemSubtype = getItemSubtype(slot) + if (itemSubtype == "Herb" and self.herbs) + or (itemSubtype == "Leather" and self.leather) + or (itemSubtype == "Cloth" and self.cloth) + or (itemSubtype == "Ore" and self.ore) + or (itemSubtype == "Cooking" and self.cooking) then + aura_env.debugLog("Profession filter pass") + return true + end + end + end + end +} +local valueFilter = { + enabled = true, + valueThreshold = 35 * 100 * 100, + applyThresholdToItemStack = false, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Value filter; slot: " .. slot) + local itemValue = getItemValue(slot) + + if (self.applyThresholdToItemStack) then + local itemQuantity = getItemQuantity(slot) + aura_env.debugLog("There exist " .. itemQuantity .. " items in slot " .. slot) + itemValue = itemValue * itemQuantity + end + + if (itemValue > self.valueThreshold) then + aura_env.debugLog("Value filter pass") + return true + end + end + end +} +local greyValueFilter = { + enabled = true, + -- Set threshold to 0 to loot all greys + valueThreshold = 5 * 100 * 100, + applyThresholdToItemStack = false, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Grey value filter; slot: " .. slot) + local itemQuality = getItemQuality(slot) + if (itemQuality > 0) then + local itemValue = getItemValue(slot) + + if (self.applyThresholdToItemStack) then + local itemQuantity = getItemQuantity(slot) + aura_env.debugLog("There exist " .. itemQuantity .. " items in slot " .. slot) + itemValue = itemValue * itemQuantity + end + + if (itemValue > self.valueThreshold) then + aura_env.debugLog("Grey value filter pass") + return true + end + end + end + end +} +local questItemFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Quest item filter; slot: " .. slot) + local itemType = getItemType(slot) + local itemSubtype = getItemSubtype(slot) + if (itemType == itemSubtype == "Quest") then + aura_env.debugLog("Quest item filter pass") + return true + end + end + end +} +local classGearFilter = { + enabled = true, + ilvlThreshold = 800, + qualityThreshold = 2, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Class gear filter; slot: " .. slot) + local itemType = getItemType(slot) + local itemEquipLoc = getItemEquipLocation(slot) + if (itemType == "Armor" + or itemType == "Weapon" + or itemEquipLoc == "INVTYPE_FINGER" + or itemEquipLoc == "INVTYPE_TRINKET" + or itemEquipLoc == "INVTYPE_CLOAK" + or itemEquipLoc == "INVTYPE_NECK") then + local itemLevel = getItemLevel(slot) + local itemQuality = getItemQuality(slot) + local isEquippable = aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 + + if (isEquippable and itemLevel > self.ilvlThreshold and itemQuality > self.qualityThreshold) then + aura_env.debugLog("Class gear filter pass") + return true + end + end + end + end +} + +aura_env.filterService = { + filters = { + goldFilter, + orderResourcesFilter, + mountFilter, + ilvlFilter, + professionFilter, + valueFilter, + greyValueFilter, + questItemFilter, + classGearFilter + }, + slotsToLoot = {}, + run = function(self, lootInfo) + self.slotsToLoot = {} + for slot, item in pairs(lootInfo) do + aura_env.debugLog("Loot slot: " .. slot .. " " .. item.item) + for k, filter in pairs(self.filters) do + if (filter:filter(slot)) then + self.slotsToLoot[#self.slotsToLoot + 1] = slot + end + end + end + + aura_env.debugLog("Slots to loot: " .. #self.slotsToLoot) + aura_env.debugLog(self.slotsToLoot) + for i = #self.slotsToLoot, 1, -1 do + local slot = self.slotsToLoot[i] + aura_env.debugLog("Looting slot (iterator): " .. slot) + doLoot(slot) + end + end +} + +aura_env.debugLog = function(obj) + if (debug) then + print(GetTime()) + DevTools_Dump(obj) + print() + end +end + +aura_env.skills = { + --Warrior + [1] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 1, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Paladin + [2] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Hunter + [3] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 1, + ["Guns"] = 1, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 1, + ["Wands"] = 0, + }, + --Rogue + [4] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Priest + [5] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Death Knight + [6] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 1, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 1, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 1, + ["Warglaives"] = 0, + ["Staves"] = 0, + ["Fist Weapons"] = 0, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Shaman + [7] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 0, + ["Mail"] = 1, + ["Plate"] = 0, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Mage + [8] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Warlock + [9] = { + --Armor Skills + ["Cloth"] = 1, + ["Leather"] = 0, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 0, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 1, + }, + --Monk + [10] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 1, + ["Shields"] = 1, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Druid + [11] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 0, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 1, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 1, + ["One-Handed Swords"] = 0, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 0, + ["Staves"] = 1, + ["Fist Weapons"] = 1, + ["Daggers"] = 1, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, + --Demon Hunter + [12] = { + --Armor Skills + ["Cloth"] = 0, + ["Leather"] = 1, + ["Mail"] = 0, + ["Plate"] = 0, + ["Shields"] = 0, + --Weapon Skills + ["One-Handed Axes"] = 1, + ["Two-Handed Axes"] = 0, + ["Bows"] = 0, + ["Guns"] = 0, + ["One-Handed Maces"] = 0, + ["Two-Handed Maces"] = 0, + ["Polearms"] = 0, + ["One-Handed Swords"] = 1, + ["Two-Handed Swords"] = 0, + ["Warglaives"] = 1, + ["Staves"] = 0, + ["Fist Weapons"] = 1, + ["Daggers"] = 0, + ["Crossbows"] = 0, + ["Wands"] = 0, + }, +} +aura_env.qualityColors = { + "\124cff9d9d9d", -- Poor + "\124cffffffff", -- Common + "\124cff1eff00", -- Uncommon + "\124cff0070dd", -- Rare + "\124cffa335ee", -- Epic + "\124cffff8000", -- Legendary + "\124cffe6cc80", -- Artifact + "\124cff00ccff", -- Heirloom +} \ No newline at end of file From bb726bb860506620c3aec3be5aa5d7e2d6bf19cf Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:22:35 +0200 Subject: [PATCH 04/44] Add autoQuest --- LegionWA/AutoQuest/Event.lua | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 LegionWA/AutoQuest/Event.lua diff --git a/LegionWA/AutoQuest/Event.lua b/LegionWA/AutoQuest/Event.lua new file mode 100644 index 0000000..0ed4f37 --- /dev/null +++ b/LegionWA/AutoQuest/Event.lua @@ -0,0 +1,42 @@ +-- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW +function(e) + if e == "QUEST_POI_UPDATE" then + CloseGossip() + elseif e == "QUEST_DETAIL" then + AcceptQuest() + elseif e == "QUEST_COMPLETE" then + if GetNumQuestChoices() <= 1 then + GetQuestReward(1) + end + elseif e == "GOSSIP_SHOW" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + local options = GetNumGossipoptionsions() + if completedQuests > 0 and options == 0 then + for i = 1, completedQuests do + SelectGossipActiveQuest(i) + end + end + if quests > 0 and options == 0 then + SelectGossipAvailableQuest(1) + end + if options == 1 and quests + completedQuests == 0 then + SelectGossipoptionsion(1) + end + elseif e == "QUEST_GREETING" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + if completedQuests > 0 then + for i = 1, completedQuests do + SelectActiveQuest(1) + end + end + if quests > 0 then + SelectAvailableQuest(1) + end + elseif e == "QUEST_PROGRESS" then + if IsQuestCompletable(i) then + CompleteQuest() + end + end +end \ No newline at end of file From fdf190e2e038c108dff9c54619bec08db49dce84 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:22:53 +0200 Subject: [PATCH 05/44] Add autoVendor --- LegionWA/AutoVendor/Event.lua | 42 +++++++++++ LegionWA/AutoVendor/Export | 0 LegionWA/AutoVendor/Init.lua | 136 ++++++++++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 LegionWA/AutoVendor/Event.lua create mode 100644 LegionWA/AutoVendor/Export create mode 100644 LegionWA/AutoVendor/Init.lua diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua new file mode 100644 index 0000000..b253c33 --- /dev/null +++ b/LegionWA/AutoVendor/Event.lua @@ -0,0 +1,42 @@ +-- MERCHANT_SHOW +function(allstates, e) + aura_env.allstates = allstates + + if CanMerchantRepair() == true then RepairAllItems() end + + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + aura_env.filterService:run(container, slot) + local link = select(7, GetContainerItemInfo(container, slot)) + if link then + local name = GetItemInfo(link) + local rarity = select(3, GetItemInfo(link)) + local ilvl = select(4, GetItemInfo(link)) or 0 + local type = select(6, GetItemInfo(link)) + local price = select(11, GetItemInfo(link)) + if price and price > 0 then + if aura_env.sellWhitelist[name] ~= 1 then + if rarity == 0 then + aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} + elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then + aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} + end + end + end + end + end + end + + aura_env.ticker = C_Timer.NewTicker(0.15, function() + if aura_env.toSell[1] then + UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) + table.remove(aura_env.toSell, 1) + else + aura_env.ticker:Cancel() + end + if j >= GetContainerNumSlots(i) then i = i + 1 + j = 1 end + if i >= 4 then aura_env.ticker:Cancel() end + end) + return true +end diff --git a/LegionWA/AutoVendor/Export b/LegionWA/AutoVendor/Export new file mode 100644 index 0000000..e69de29 diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua new file mode 100644 index 0000000..42ebc7f --- /dev/null +++ b/LegionWA/AutoVendor/Init.lua @@ -0,0 +1,136 @@ +local debug = true +local iconDisplayDuration = 3 + +local function getItemLink(container, slot) + aura_env.debugLog("getItemLink", container, slot) + return select(7, GetContainerItemInfo(container, slot)) +end +local function getItemQuantity(container, slot) + +end +local function getItemName(container, slot) + return select(1, GetItemInfo(getItemLink(container, slot))) +end +local function getItemType(container, slot) + return select(6, GetItemInfo(getItemLink(container, slot))) +end +local function getItemSubtype(container, slot) + return select(7, GetItemInfo(getItemLink(container, slot))) +end +local function getItemLevel(container, slot) + return select(4, GetItemInfo(getItemLink(container, slot))) +end +local function getItemValue(container, slot) + return select(11, GetItemInfo(getItemLink(container, slot))) +end +local function getItemQuality(container, slot) + return select(3, GetItemInfo(getItemLink(container, slot))) +end +local function getItemEquipLocation(container, slot) + return select(9, GetItemInfo(getItemLink(container, slot))) +end +local function getItemIcon(container, slot) + return select(10, GetItemInfo(getItemLink(container, slot))) +end +local function getBindType(container, slot) + return select(14, GetItemInfo(getItemLink(container, slot))) +end + + + +local grayFilter = { + enabled = true, + filter = function(self, container, slot) + if (self.enabled) then + aura_env.debugLog("Gray filter; container = " .. container .. ", slot = " .. slot) + local itemQuality = getItemQuality(container, slot) + if (itemQuality and itemQuality == 0) then + aura_env.debugLog("Gray filter pass") + return true + end + end + end +} +local gearFilter = { + enabled = true, + ilvlThreshold = 850, + sellBoe = false, + filter = function(self, container, slot) + if (self.enabled) then + aura_env.debugLog("Gear filter; container = " .. container .. ", slot = " .. slot) + local itemLevel = getItemLevel(container, slot) + local itemBindType = getBindType(container, slot) + if (itemLevel and itemBindType and itemLevel < ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then + aura_env.debugLog("Gear filter pass") + return true + end + end + end +} + +local function doSell(container, slot) + local itemIcon = getItemIcon(slot) + local itemName = getItemName(slot) + local itemQuantity = getItemQuantity(slot) + local itemQuality = getItemQuality(slot) + + aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) + local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithQuantity = nameWithColor .. " x" .. itemQuantity + + aura_env.debugLog("Assigning name" .. nameWithQuantity) + aura_env.allstates[#aura_env.allstates + 1] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = itemIcon, + name = nameWithQuantity, + amount = itemQuantity, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + + UseContainerItem(container, slot) +end + + +aura_env.filterService = { + filters = { + grayFilter, + gearFilter, + }, + slotsToLoot = {}, + run = function(self, container, slot) + aura_env.debugLog("Filtering item in container = " .. container .. ", slot = " .. slot .. "...") + for k, filter in pairs(self.filters) do + if (filter:filter(container, slot)) then + doSell(container, slot) + return + end + end + end +} + +aura_env.debugLog = function(obj) + if (debug) then + print(GetTime()) + DevTools_Dump(obj) + print() + end +end + +aura_env.qualityColors = { + "\124cff9d9d9d", -- Poor + "\124cffffffff", -- Common + "\124cff1eff00", -- Uncommon + "\124cff0070dd", -- Rare + "\124cffa335ee", -- Epic + "\124cffff8000", -- Legendary + "\124cffe6cc80", -- Artifact + "\124cff00ccff", -- Heirloom +} \ No newline at end of file From 374515e222aaee55ff246c96bb8bd4d0bad5c85e Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:50:51 +0200 Subject: [PATCH 06/44] Add some error checking --- LegionWA/NewAutoLoot/Event.lua | 2 +- LegionWA/NewAutoLoot/Export | 1 + LegionWA/NewAutoLoot/Init.lua | 56 ++++++++++++++++++++++++---------- 3 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 LegionWA/NewAutoLoot/Export diff --git a/LegionWA/NewAutoLoot/Event.lua b/LegionWA/NewAutoLoot/Event.lua index 56f8992..1c4cf12 100644 --- a/LegionWA/NewAutoLoot/Event.lua +++ b/LegionWA/NewAutoLoot/Event.lua @@ -4,6 +4,6 @@ function(allstates, e) local lootInfo = GetLootInfo() aura_env.filterService:run(lootInfo) - CloseLoot() + -- CloseLoot() return true end diff --git a/LegionWA/NewAutoLoot/Export b/LegionWA/NewAutoLoot/Export new file mode 100644 index 0000000..931d202 --- /dev/null +++ b/LegionWA/NewAutoLoot/Export @@ -0,0 +1 @@ +dq11IbqiejuTiv1JqKaxcrcLrPK6uQcRcLuXRuOs1SuKBPOAxqOHPOCmiQLPkcptvuLPHsQ6AkjeBdLuIVHskvJdrICofQuwNQi6Dkju3dv2hIe1bviAHOKIhQKOjcb1fvOIncb8riqJujPtQqALQ0lrKqMjkv3uHQ2jIu9tfcdfcYrvfPLQqL8uLOPcrUkkPu2Qsc(kIIZIsQ0BHI5QkQQ7cL2lI4VOKmy5WawmkLhJQAYk4YG2mQYNvcJgQ40iSAusj9AeLMTsDBOQDdPFRIHdv64QIklhfphOPJ01vL2okX3vOmEvr58iQwVscP3JiP5JibDFePSFAsqMeKizjEswoqYYbsqIKLu4ZOiJahu6sIvuijK(tmJKLdeGSwFr5tjybsYsG9MKLa8PeSarIHyXciZ4pdqsi95ipJKLa8PehuqsqIKLGuagkjirYYHdRWdbbbwajHnsOKSKaLGscsKSC4Wk(VG0dEsynKSK)li9GNKL7dFGTnaz7DHXz8a2GqV7dFGTrW)GIWeG4UbihHFzaOehuJZEEE9oFUrqH4jDa8WjJGcXZobkzNmcke)tFb2euYNmckep7qwG7jJGcXpEcu2HSa3tgbfIhjYXfozeui(LVSHe54cNiOq8lPa8j7kpVO0jJGcXpop3lbUSF4pzeuiEKGpJ(YaNmq4EJqme8Htg)nai4Oi8Kb(Yg)nai4Oi8KXgb6asKJlCc(mCb4pkcpzGq6Oi8KraUsgaEuc0fJliWcik14meeshLcXpkkVZAW9H(W7852(COJY)Goz7ZHs6a4Ht2(COp9faLsqjFY4)YWar5t(Oi8KTph6tFb2euYNS9HpzHdtgb4tFHG0rPq8t2Z9cbPJIWtgb4i5tjybACgccPSFo0L7dDuuEN1G7d9H35Zn2jqjRbEWdPe4HG2WbcAOhQn2HHSE3h(aBJ3lkFkXb1waPJsH4zNaLSRb3h6dVMzgdK(YGAiiKY(5qxUpu2jqj7AW9H(WleDW7(WhyB8Er5tjoO2ciDukepPdGhUgCFOp8AMzmq6ldQbc3q(01pXKHGqk7NdD5(qhfL3zn4(qF8WleDW7(WhyB8Er5tjoO2ciDukepsKJlCn4(qF41mZyG0xgudeUH8PRzTmziiKokfIFuuEN1lG0rPq8StGs21G7d9XJhEHOdE3h(aBJ3lkFkXb1waPJsH4x(YgLCCHRb3h6dVMzgdK(YGAGWnKpDnR9jdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDukep7qwG71G7d9HxZmJbsFzqnq4gYNUM1pziiKokfIFuuEN1lG0rPq8StGs21G7d9XJhEHOdE3h(aBJ3lkFkXb1waPJsH4xbG9lCn4(qF41mZyG0xgudeUH8PRrg5jdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDuke)tFbqPeuYxdUp0hEnZmgi9Lb1aHBiF66N3KHGqk7NdD5(qhfL3zn4(qF8WleDW7(WhyB8Er5tjoO2ciDuke)tFb2euYxdUp0hEnZmgi9Lb1aHBiF66N3KHGq6Oui(rr5DwVashLcXZobkzxdUp0hpE4fIo4DF4dSnEVO8PehuBbKokfIFCEUxcCz)WhGsCqxdUp0hEnZmgi9Lb1aHBiF66XTjdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDuke)O8pORb3h6dVMzgdK(YGAGWnKpDnYZMmeeshLcXpkkVZ6fq6OuiE2jqj7AW9H(4XdVq0bVE9Up8b22WH9ZHACgVxu(uId6AW9H(WRzMb8YaWkiklioaz7Db7NfR)SFouc0fg4(qFs7BiIObUp0hEnZm2ph6Y9HUgCFOp861mZ2h(aBJGcXpk)dQXzlG0rPq8JY)GUgCFOp8AMz7dFGTrqH4jDa8qJZwaPJsH4jDa8W1G7d9HxZmBF4dSncke)tFbqPeuYnoBbKokfI)PVaOuck5Rb3h6dVMz2(WhyBeui(N(cSjOKBC2ciDuke)tFb2euYxdUp0hE9AMzaVmaScIYcIdq2ExW(zX6pcZamgb6cJG)b14DySVHiIgbfIN0bWdner0(2yeuCSN7fytqj3(gIiAeui(N(cSjOK)WRzMTp8b2gkaEiziO4SYZ(WyC2hZ3qerd4LbGvquwq85Eb2euYx5zFyaXqqH4F6lWMGsUnUBiJ1qerJGcXt6a4HgIiAFSpFKFcwpZ3RzMTp8b2gkaEiziO480xaukbLCJZqbWdjdbfNvE2hgdreTV9SVHiIgbfI)PVaOuck5E9AMzaVmaScIYcIdq2ExW(zX6)ibbjwGsGUWqbWd)gIiAOa4HKHGIZtFbqPeuYF41mZaEzayfeLfeb2BqkafcIHuaWldaRGOSGiWEdsbOqqBC3qgRXzKQxZmZmZaX5mMXzuMx4KxZmZmZ4Jda6c4GXzuMx4KxZmZmZiqhGpZ4meesrIapC9JjVMzMzMXabpmuJZOmVWjVEnZmZmJG)b14mcke)O8pOtEnZmZmdfap04mua8qYqqX5PVaOuck5tEnZmZmda)5fLACgbfI)PVaOuck5tE9AMzMzgUmNfmqqqKihxOXzFkbE4WFYRzMzMzWNHlbdaL4GIebEOXziiKIebE46h24UrW)GIWeG4UbihHFzaOeh0jVMzMzMn8YaqjoOgNrW)GIWeG4UbihHFzaOeh0jVMzMzMb8spRsmanoJY8cN8AMzKMxi6GxVE3h(aBBXzpGaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMz8i2uiJXz8Er5tjoORbHBEtg4(qF41mZmZmcE2Aq4MhIqua22WHhgfhiQxZmZmZmZmGxgawbrzbXbiBVly)Sy9hbp7bJhXMczwXg4(qFs7BiIObUp0hEnZmZmZmZ2h(aBJGcXt6a4HgNTashLcXt6a4HRb3h6dVMzMzMzMze8S1euiEua8qdaDWiOq8KoaE4tIhGYhN1FsXgg3T1i4zpqkKu4sInlqgsHKcx5bxCHmp(pEyuCGOEnZmZmZmZmZmGxgawbrzbXbiBVly)Sy9hbp7bJhXMczmCbab)p8AMzMzMzMzMzmq6ldQrzEHEnZmZmZmZGOdEnZmZmdIo41mZGOdEjnV7dFGTDygGmJli45LHpeebi2uiJXzKQxZmdIcW2goyCgL5fo51mZ4rSPqgJZ49IYNsCqxdc38MmW9H(WRzMzMze8S1GWnpeHOaSTHdpmkoquVMzMzMzMzaVmaScIYcIdq2ExW(zX6)4ccEEz4dnEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckepPdGhAC2ciDukepPdGhUgCFOp8AMzMzMzMrWZwtqH4jDa8qdaDWiOq8KoaE4tIhGYhN1)rWmazSXfe88YWhc(F8WO4ar9AMzMzMzMzMzaVmaScIYcIdq2ExW(zX6)iygGmgde88YWhA8i2uiJHlai4)HxZmZmZmZmZmJbsFzqnkZl0RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSn8NxukcqSPqgJZivVMzgefGTnCW4mkZlCYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1)XFErPgpInfYSInW9H(K23qerdCFOp8AMzMzMzMTp8b2gbfIhjYXfAC2ciDukepsKJlCn4(qF41mZmZmZmJGNTMGcXJe54cna0bJGcXJe54cnoo7p(Zlk9)WO4ar9AMzMzMzMzMzaVmaScIYcIdq2ExW(zX6)4pVOuJhXMczmCbab)p8AMzMzMzMzMzmq6ldQrzEHEnZmZmZmZGOdEnZmZmdIo41mZGOdEjnV7dFGTrSzzJaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMzeBw2iHddeeNZEW4msjsPztEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(pk7SSnEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckep7qwGBJZwaPJsH4zhYcCVgCFOp8AMzMzMzMrWZwtqH4zhYcCBaOdgbfINDilWTrkBGWnpej2SSrchgiioN9WdJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)JsH4TnKf424rSPqgdxaqW)dVMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmi6GxZmZmZGOdEnZmi6GxsZ7(WhyB4YC4bbbjoOiaXMczmoJu9AMzqua22WbJZOmVWjVMzgoqg2anoJY8cN8AMz83hkogNXdydcN8AMzhgOXz8a2GWjVMz2gcqXbYyCgpGniCYRzMX)Cilb6cJZ4bSbHtEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(JqmhEqqqIdQXJytHmRydCFOpP9ner0a3h6dVMzMzMzMz7dFGTrqH4rICCHgNTashLcXJe54cxdUp0hEnZmZmZmZi4zRjOq8iroUqdaDWiOq8iroUqJJZ(iXamabjlXE)FyuCGOEnZmZmZmZmZS9HpW2iOq8lFzJsoUqJZwaPJsH4x(YgLCCHRb3h6dVMzMzMzMzMzgbpBnbfIF5lBuYXfAaOd2Acke)Yx2OKJl044S)Qqg2(ga6Gbc38qehidBGp8AMzMzMzMzMzhgBnbfIF5lBuYXfACC2NDiafhiZ3aqhmq4MhIBiafhiZdVMzMzMzMzMz2HXwtqH4x(YgLCCHghN9x5(qX5BaOdgiCZdr(7dfNhEnZmZmZmZmZSdJTMGcXV8Lnk54cnoo7pcg43aqhmq4MhIhg4dVMzMzMzMzMz2HXwtqH4x(YgLCCHghN9x55qwc0fFdaDWaHBEiY)Cilb6IhpmkoquVMzMzMzMzMzMzMb8YaWkiklioaz7Db7NfR)ieZHheeK4GA8i2uiJHlai4)HxZmZmZmZmZmZmZyG0xguJY8c9AMzMzMzMzMzq0bVMzMzMzMzq0bVMzMzMbrh8AMzq0bVKM39HpW2yby)craInfYyCgP61mZGOaSTHdgNrzEHtEnZmwa2VqKWHbcIZzpyC2ZBfXyDmKNnZyDmKNnBYRzMbGlUBYrchgiioN9asNrPq8lPa8jRXz8a2GWjVMzgpInfYyCgVxu(uId6Aq4M3KbUp0hEnZmZmJGNTgeU5HiefGTnC4HrXbI61mZmZmZmd4LbGvquwqCaY27c2plw)xbG9l04rSPqMvSbUp0N0(gIiAG7d9HxZmZmZmZS9HpW2iOq8RaW(fAC2ciDuke)kaSFHRb3h6dVEnZmZmZmZi4zRbHBEicGlUBYrchgiioN9asNrPq8lPa8j7dJIde1RzMzMzMzMzMTp8b2gbfI)PVaOuck5gNTashLcX)0xaukbL81G7d9HxZmZmZmZmZmd4LbGvquwqCaY27c2plw)rchid0GpJaKAFdrencke)tFbqPeuYner0(gbfIh0iqnW9HAFdrenW9H(WRzMzMzMzMzMrqH4xbG9l04mcke)kaSFHgRJrqH4F6lakLGsUxZmZmZmZmi6GxVMzMzMzMze8S1eui(vay)cna0bJGcXVca7xOrkBGWnpezby)crchgiioN9WdJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)RaW(fA8i2uiJHlai4)HxZmZmZmZmZmJbsFzqnkZl0RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSTfmqYxbG9lebi2uiJXzKQxZmdIcW2goyCgL5fo51mZMp3wcPgfhgiioN9Grp2mJES95qnG92wWajh0RzMXcW(fIeomqqCo7bJZwrmwhd5zZmwhd5zZM8AMza4I7MCKWHbcIZzpG0zuke)skaFYACgpGniCYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1FeKbsUXcW(fA8i2uiZk2a3h6tAFdrenW9H(WRzMzMzMz2(WhyBeui(N(cSjOKBC2ciDuke)tFb2euYxdUp0hEnZmZmZmZi4zRjOq8p9fytqj3iLTzpmkoquVMzMzMzMzMz2(WhyBeui(vay)cnoBbKokfIFfa2VW1G7d9HxVMzMzMzMzMzgbpBniCZdraCXDtos4WabX5Shq6mkfIFjfGpzFyuCGOEnZmZmZmZmZmZmBF4dSncke)tFbqPeuYnoBbKokfI)PVaOuck5Rb3h6dVMzMzMzMzMzMzMb8YaWkiklioaz7Db7NfR)iHdKbAWNrasTVHiIgbfI)PVaOuck5gIiAFJGcXdAeOg4(qTVHiIg4(qF41mZmZmZmZmZmZmcke)kaSFHgNrqH4xbG9l0yDmcke)tFbqPeuY9AMzMzMzMzMzq0bVEnZmZmZmZmZmcE2Acke)kaSFHga6GrqH4xbG9l0iLnq4MhISaSFHiHddeeNZE4HrXbI61mZmZmZmZmZmZmGxgawbrzbXbiBVly)Sy9hbzGKBSaSFHgpInfYy4cac(F41mZmZmZmZmZmZmgi9Lb1OmVqVMzMzMzMzMzgeDWRzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSTN7fcshLcXJaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMz8i2uiJXz8Er5tjoORbHBEtg4(qF41mZmZmcE2Aq4MhIqua22WHhgfhiQxZmZmZmZmGxgawbrzbXbiBVly)Sy9)PVqqQrqH4nEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckepsKJl04Sfq6OuiEKihx4AW9H(WRzMzMzMz2(WhyBeui(LVSrjhxOXzlG0rPq8lFzJsoUW1G7d9HxZmZmZmZmcE2AckepsKJl0aqhmcke)Yx2OKJl0aqhmckepsKJl044mcke)Yx2OKJl044S)tFHG0)dJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)p9fcsnckeVXJytHmgUaGG)hEnZmZmZmZmZmgi9Lb1OmVqVMzMzMzMzq0bVMzMzMbrh8AMzq0bVKM39HpW24VbabrqiadcqSPqgJZivVMzgefGTnCW4mkZlCYRzMrSzzJeomqqCo7bJZiLMnBYRzM9CVaBck5iHddeeNZEW4SNyYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1)vUbabTfqagJhXMczwXg4(qFs7BiIObUp0hEnZmZmZmZ2h(aBJGcXJe54cnoBbKokfIhjYXfUgCFOp8AMzMzMzMTp8b2gbfIFCEUxcCz)W34Sfq6Oui(X55EjWL9dFakXbDn4(qF41mZmZmZmJGNTMGcXJe54cnoo7psg8hMVxZmZmZmZSdJrqH4rICCHghN9jdea3d63RzMzMzMz2HXiOq8JZZ9sGl7h(ghN9hL0xbKyDrOXHviWOKocooJRVxZmZmZmZSdJrqH4hNN7Lax2p8noo7pkPVciX6IqJdRqACnkPtkACq671mZmZmZm7Wyeui(X55EjWL9dFJJZ(Js6RasSUi04WQvY(igjPOVxZmZmZmZSdJrqH4hNN7Lax2p8noo7pkPVciX6IqJdRi9XzLKI(pmkoquVMzMzMzMzMz2(WhyBeuiE2HSa3gNTashLcXZoKf4En4(qF41mZmZmZmZmZ2h(aBJGcX)0xGnbLCJZwaPJsH4F6lWMGs(AW9H(WRzMzMzMzMzMTp8b2gb448CVe4IlaBBOXzaVmaScIYcIGKLyVbXac3q(01pVjJ1gkbDLBaqW1FC3aKdz(pEGfd4lBuYXfI144mK961mZmZmZmZmZi4zRjahNN7LaxCbyBdna0bJGcXZoKf42iLnq4MhIeBw2iHddeeNZEWaqhmcke)tFb2euYnszdeU5H4Z9cSjOKJeomqqCo7HhgfhiQxZmZmZmZmZmZmZaEzayfeLfehGS9UG9ZI1)vUbabTfqagJhXMczmCbab)p8AMzMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmZmdIo41mZmZmZmdIo41mZmZmi6GxZmdIo4L08Up8b2gWkkKHGcraInfYyCgP61mZGOaSTHdgNrzEHtEnZmInlBKWHbcIZzpyCgP0SztEnZSN7fytqjhjCyGG4C2dgN9etEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(pYvuidbfA8i2uiZk2a3h6tAFdrenW9H(WRzMzMzMz2(WhyBeuiEKihxOXzlG0rPq8iroUW1G7d9HxZmZmZmZS9HpW2iOq8lFzJsoUqJZwaPJsH4x(YgLCCHRb3h6dVMzMzMzMz7dFGTrqH4F6lWMGsUXzlG0rPq8p9fytqjFn4(qF41mZmZmZmJGNTMGcXJe54cna0bJGcXV8Lnk54cna0bJGcX)0xGnbLCdaDWiOq8iroUqJJZ(R8Gc(IhGTn8BaOdgbfIF5lBuYXfACC2FeuCGmFdaDWiOq8p9fytqj3iLnKFyuCGOEnZmZmZmZmZmGxgawbrzbXbiBVly)Sy9FKROqgck04rSPqgdxaqW)dVMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmi6GxZmZmZGOdEnZmi6GxsZRxGxgawbrzbrEeBkKzjKHfc(qJZivVMzgpInfYaACgP61mZmZSfN9acqSPqMjVMzMzMDygGmJli45LHpeebi2uiZKxZmZmZWFErPiaXMczM8AMzMzgXMLncqSPqMjVMzMzMHlZHheeK4GIaeBkKzYRzMzMzSaSFHiaXMczM8AMzMz2cgi5RaW(fIaeBkKzYRzMzMzp3leKokfIhbi2uiZKxZmZmZ4VbabrqiadcqSPqMjVMzMzMbSIcziOqeGytHmEnZmsBYRzMbUpuqKoSFouJZivsBYRzMX8IACgVxu(uId6Aq4M3KTph6OO8op8AMzMzgiCZdrW9HcI0H9ZHACgPsAEnZmZmJ3HXa3h6KrqH4ncudxacgW17ZHokkVZdB441mZmZmZmd4LbGvquwqCaY27c2plw)z)COg4(qFs7BiIObUpudreTV9ner0iOq8isqH4F41mZmZmZmd4LbGvquwqCaY27c2plwVashLcXV8Lnk54cxdUp0hp8AMzMzMzMbc38EsMxueGytHmGRb3h6dVMzMzMbrh861mZmZmGxgawbrzbXbiBVly)Sy9F5(qbn6X2Nd9jTVHiIgPaq4MhIG7dfePd7Nd9HxZmZmZaEzayfeLfehGS9UG9ZI1GWnpeb3hkish2ph6dVMzMzMX7WyegNrkaeU5Hi4(qbr6W(5qNmKNS5iBdhVMzMzMzMz7dFGTbUpuJZaHBEicUpuqKoSFoumey9AMzMzMzMb8YaWkiklioaz7Db7NfR)SFouc0fg4(qT1euida9W84jTVHiIg4(qF41mZmZmZmB4W(5qxdUp0hEnZmZmdIo41mZGOdtEnZmMxueGytHmGgNX7fLpL4GUgeU5nzG7d9HxZmZmZ4DymYoz8i2uiJrGA4cqWaUgeU5HipInfYa(WgoEnZmZmZmZi4zR5rSPqMNKhXMczwdUp0hpmkoquVMzMzMzMzMzgiCZdrW9HcI0H9ZHIHuaiCZdrW9HcI0H9ZHAJ7gYynodCFOEnZmZmZmZmZmgi9Lb1RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP51lWldaRGOSG4aKT3fSFwyCgVxu(uId66dBSwF41mZi4zRhGS9U4HrXbI61mZmZmCziqPRrqifjc8W1pE41mZmZmegYcsNZgKvi8lECxFyJ16dVMzMzMHldbkD9dVMzgeDWleDWRxGxgawbrzbrqYsS3GgNrQEnZS5ZjdaddXHXRzMHbzSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZqEYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XACgYtEnZmZmdZN1Cgd8J14mKN8AMzMzgMpc(Ic(XACgYtEnZmZmdZFeOW5RcGoahSXdWhc(XACgYtEnZmZmdZhPXoZxfaDaoyJhGpe8J14mKN8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZqEYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZqEYRzMzMzy(KbGzXgGGfi4hRXzip51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZqEYRzMzMzy(imWIfqgWpwJZqEYRzMzMzy(RK5acY2zmWpwJZqEYRzMzMzy(KbaDa8J14SztEnZmsBYRzMnFocbSbgiq9AMzyEcSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZqEYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XACgYtEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNH8KxZmZmZW8rASZ8vbqhGd24b4db)ynod5jVMzMzMH5JqNneGbp4hRXzip51mZmZmm)rGcNVka6aCWwo2Hza8J14mKN8AMzMzgMpsJDMVka6aCWwo2Hza8J14mKN8AMzMzgMpzaywSbiybc(XAC2SjVMzMzMH5VKcWce8J14SztEnZmZmdZhbiaPgzGa4Eqb)ynoB2KxZmZmZW8ryGflGmGFSgNnBYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMpF1xukKXRzMH55H14ms1RzMzMzZNpsg8hgBjzj2BqVMzMzMH5VY9HIZhRXzZM8AMzMzgMp7qakoqMpwJZMn51mZmZmm)XdqS)ynod5jVMzMzMH5JqBak8J14SztEnZmZmdZFjoeW9a4hRXzZM8AMzMz285KbcG7b1wswI9g0RzMzMzy(JafoFva0b4GnYNbb)ynod5jVMzMzMH5J0yN5RcGoahSr(mi4hRXzip51mZmZmmFwZzmWpwJZqEYRzMzMzy(i4lk4hRXzip51mZmZmm)rGcNVka6aCWgpaFi4hRXzZM8AMzMzgMpsJDMVka6aCWgpaFi4hRXzZM8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZqEYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZqEYRzMzMzy(KbGzXgGGfi4hRXzZM8AMzMzgM)skalqWpwJZqEYRzMzMzy(iabi1idea3dk4hRXzip51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzip51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMpFCDw8c9AMzyy9ynoJu9AMzMz285JKb)HXwswI9g0RzMzMzy(RCFO48XAC2SjVMzMzMH5ZoeGIdK5J14mKN8AMzMzgM)4bi2FSgNnBYRzMzMzy(i0gGc)ynoB2KxZmZmZW8xIdbCpa(XAC2SjVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XAC2SjVMzMzMH5ZAoJb(XAC2SjVMzMzMH5JGVOGFSgNnBYRzMzMzy(JafoFva0b4GnEa(qWpwJZqEYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNnBYRzMzMzy(KbGzXgGGfi4hRXzZM8AMzMzgM)skalqWpwJZMn51mZmZmmFeGaKAKbcG7bf8J14mKN8AMzMzgMpcdSybKb8J14mKN8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEnZS5Zrigcii1RzMHzfbRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZqEYRzMzMzy(SdbO4az(ynoB2KxZmZmZW8hpaX(J14SztEnZmZmdZhH2au4hRXzZM8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XAC2SjVMzMzMH5J0yN5RcGoahSr(mi4hRXzZM8AMzMzgMpR5mg4hRXzZM8AMzMzgMpc(Ic(XAC2SjVMzMzMH5pcu48vbqhGd24b4db)ynod5jVMzMzMH5J0yN5RcGoahSXdWhc(XAC2SjVMzMzMH5JqNneGbp4hRXzZM8AMzMzgM)iqHZxfaDaoylh7Wma(XAC2SjVMzMzMH5J0yN5RcGoahSLJDyga)ynoB2KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZMn51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzZM8AMzMzgMpzaqha)ynod5jVMzgPn51mZMphHHauCmsrOelWH61mZWWAbRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZMn51mZmZmmF2HauCGmFSgNnBYRzMzMzy(JhGy)XAC2SjVMzMzMH5JqBak8J14mKN8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XACgYtEnZmZmdZhPXoZxfaDaoyJ8zqWpwJZqEYRzMzMzy(SMZyGFSgNnBYRzMzMzy(i4lk4hRXzZM8AMzMzgM)iqHZxfaDaoyJhGpe8J14mKN8AMzMzgMpsJDMVka6aCWgpaFi4hRXzip51mZmZmmFe6SHam4b)ynod5jVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNH8KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNnBYRzMzMzy(iabi1idea3dk4hRXzZM8AMzMzgMpcdSybKb8J14SztEnZmZmdZFLmhqq2oJb(XAC2SjVMzMzMH5tga0bWpwJZMn51mZiTjVMz285lXbapaQxZmddRDSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzip51mZmZmmFeAdqHFSgNnBYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XAC2SjVMzMzMH5ZAoJb(XAC2SjVMzMzMH5JGVOGFSgNnBYRzMzMzy(JafoFva0b4GnEa(qWpwJZqEYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNnBYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZMn51mZmZmmFYaWSydqWce8J14SztEnZmZmdZFjfGfi4hRXzip51mZmZmmFeGaKAKbcG7bf8J14mKN8AMzMzgMpcdSybKb8J14mKN8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEnZS5ZhpWcOxZmddPewJZivVMzMzMnF(izWFySLKLyVb9AMzMzgM)k3hkoFSgNH8KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZMn51mZmZmm)L4qa3dGFSgNnBYRzMzMzZNtgiaUhuBjzj2BqVMzMzMH5pcu48vbqhGd2iFge8J14SztEnZmZmdZhPXoZxfaDaoyJ8zqWpwJZMn51mZmZmmFwZzmWpwJZMn51mZmZmmFe8ff8J14SztEnZmZmdZFeOW5RcGoahSXdWhc(XAC2SjVMzMzMH5J0yN5RcGoahSXdWhc(XAC2SjVMzMzMH5JqNneGbp4hRXzZM8AMzMzgM)iqHZxfaDaoylh7Wma(XACgYtEnZmZmdZhPXoZxfaDaoylh7Wma(XAC2SjVMzMzMH5tgaMfBacwGGFSgNnBYRzMzMzy(lPaSab)ynod5jVMzMzMH5JaeGuJmqaCpOGFSgNnBYRzMzMzy(imWIfqgWpwJZqEYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XACgYtEnZmsBYRzMnFozay2h(K1RzMHzCdRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZqEYRzMzMzy(SdbO4az(ynoB2KxZmZmZW8hpaX(J14SztEnZmZmdZhH2au4hRXzZM8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XAC2SjVMzMzMH5J0yN5RcGoahSr(mi4hRXzZM8AMzMzgMpR5mg4hRXzZM8AMzMzgMpc(Ic(XAC2SjVMzMzMH5pcu48vbqhGd24b4db)ynoB2KxZmZmZW8rASZ8vbqhGd24b4db)ynoB2KxZmZmZW8rOZgcWGh8J14SztEnZmZmdZFeOW5RcGoahSLJDyga)ynod5jVMzMzMH5J0yN5RcGoahSLJDyga)ynoB2KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZMn51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzZM8AMzMzgMpzaqha)ynod5jVMzgPn51mZMpF8huY61mZWG8mSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XACgYtEnZmZmdZF8ae7pwJZMn51mZmZmmFeAdqHFSgNH8KxZmZmZW8xIdbCpa(XACgYtEnZmZmB(CYabW9GAljlXEd61mZmZmm)rGcNVka6aCWg5ZGGFSgNH8KxZmZmZW8rASZ8vbqhGd2iFge8J14SztEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNH8KxZmZmZW8rASZ8vbqhGd24b4db)ynoB2KxZmZmZW8rOZgcWGh8J14mKN8AMzMzgM)iqHZxfaDaoylh7Wma(XACgYtEnZmZmdZhPXoZxfaDaoylh7Wma(XAC2SjVMzMzMH5tgaMfBacwGGFSgNnBYRzMzMzy(lPaSab)ynod5jVMzMzMH5JaeGuJmqaCpOGFSgNH8KxZmZmZW8ryGflGmGFSgNnBYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMphHzEjg8AMzyqgzSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XACgYtEnZmZmdZF8ae7pwJZMn51mZmZmmFeAdqHFSgNnBYRzMzMzy(lXHaUha)ynoB2KxZmZmZMpNmqaCpO2sYsS3GEnZmZmdZFeOW5RcGoahSr(mi4hRXzZM8AMzMzgMpsJDMVka6aCWg5ZGGFSgNnBYRzMzMzy(SMZyGFSgNnBYRzMzMzy(i4lk4hRXzZM8AMzMzgM)iqHZxfaDaoyJhGpe8J14mKN8AMzMzgMpsJDMVka6aCWgpaFi4hRXzZM8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZMn51mZmZmmFKg7mFva0b4GTCSdZa4hRXzZM8AMzMzgMpzaywSbiybc(XAC2SjVMzMzMH5VKcWce8J14mKN8AMzMzgMpcqasnYabW9Gc(XACgYtEnZmZmdZhHbwSaYa(XACgYtEnZmZmdZFLmhqq2oJb(XAC2SjVMzMzMH5tga0bWpwJZMn51mZiTjVMz285ime)b1w9fLcz8AMzyq(jWACgP61mZmZS5Zhjd(dJTKSe7nOxZmZmZW8x5(qX5J14SztEnZmZmdZNDiafhiZhRXzip51mZmZmm)XdqS)ynoB2KxZmZmZW8rOnaf(XAC2SjVMzMzMH5Vehc4Ea8J14SztEnZmZmB(CYabW9GAljlXEd61mZmZmm)rGcNVka6aCWg5ZGGFSgNH8KxZmZmZW8rASZ8vbqhGd2iFge8J14SztEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNnBYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNnBYRzMzMzy(KbGzXgGGfi4hRXzip51mZmZmm)LuawGGFSgNnBYRzMzMzy(iabi1idea3dk4hRXzip51mZmZmmFegyXcid4hRXzZM8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEjnVaVmaScIYcIp3lWMGs(kp7ddOXzKQxZm7)8r(jy985XBCByCByCB4pzZNBi05W41mZ(pFKFcwpFE84XJhpE8(t2852kp4XFq9AMz)NpYpbRNppEid5XB2S)KnFUXAdL)bp(dQxZm7)8r(jy985XB2mw7Zgg(t28524cGb61mZ(pFKFcwpFE8aEEpVvei8pzZNBJdUe89AMz)NpYpbRNppE84rknB2S)KnFUXoCbeDaGHCVMz2)5J8tW65ZJhK1cF(KsZ(t2852izOe8a4t9AMz)NpYpbRNppEZMXNppE)jB(CBvibZ(CW7L0iHscLKLugIflGmKGejlPKJlKKL8FbPh8KSeeNZyJaLKLG4CgBeOJKpLGfijl5)csp4zfLCCHKSeKcqHV4oaqHKSKpoq(KLKLqwGOuswY)fKEWtYY5Zn2hXiqIvJRXzKimRRxEVO8Peh01a7nifGcbNm4dVMzgWldaRGOSGiWEdsbOqqJZa2Bqkafc61RzMTp8b22(COJIY7yCgccPSFo0rr5Dw)WRzMb8YaWkikliYJytHmlHmSqWh(KmVOR3NdDuuENhEnZS5ZTvUpGq2ph66hEnZmgi9Lb1OmVqVq0bVKSeYceLcsYs2hXiqIvJRXzKimRljl5)csp4zfoedqswsjWdhiHsYsk8zuKrOdbkLKLJRrrWvrIKL7dWajirYskWgIsFcsqIKL4F3ucsqIekjuswsb2qukjirYs8VBkbjircLekjlhi4XJG)7MsojirYs8VBkbjircLekjlza4djbjswI)DtjibjsOKqjzjZzdjbjswI)DtjibjsOKqjzjpa(uIdkjirYs8VBkbjircLekjljqxWCEXLeKizj(3nLGeKiHscLKL4YcUuGneLscsKSe)7MsqcsKqjHscLKLeOuidkWEfGmGehusi9NhjlrFXJedXIfqgqsiDKjzjdCbXbfjYXfsYsc(huswsHpJImjljfdLKLu4ZOiVYdkfGafpeLsYYrWAdPLJIWJdjljgizjP4KoCSr(spSFo0r5Fqjzjf(mkYiWbLsYYX5z4YabbhdGCswY)C2dNXqrc(m64GcW2goqcBKSK)5ShoJHscBKqjzjijlFcexrqe5NGKLSqcPJmR)jqMekjKa \ No newline at end of file diff --git a/LegionWA/NewAutoLoot/Init.lua b/LegionWA/NewAutoLoot/Init.lua index 54336fd..a1f7533 100644 --- a/LegionWA/NewAutoLoot/Init.lua +++ b/LegionWA/NewAutoLoot/Init.lua @@ -3,6 +3,7 @@ local iconDisplayDuration = 3 -- itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType,itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID, bindType,expacID, setID, isCraftingReagent = GetItemInfo(slot) -- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) +-- Link sometimes does not work local function getItemLink(slot) return GetLootSlotLink(slot) end @@ -73,7 +74,7 @@ local goldFilter = { if (self.enabled) then aura_env.debugLog("Gold filter; slot: " .. slot) local itemName = getItemName(slot) - if (itemName:match("%d+ (Gold|Silver|Copper)")) then + if (itemname and itemName:match("%d+ (Gold|Silver|Copper)")) then aura_env.debugLog("Gold filter pass") return true end @@ -86,7 +87,7 @@ local orderResourcesFilter = { if (self.enabled) then aura_env.debugLog("Resource filter; slot: " .. slot) local itemName = getItemName(slot) - if (itemName:match("Order Resources")) then + if (itemName and itemName:match("Order Resources")) then aura_env.debugLog("Order resource filter pass") return true end @@ -99,7 +100,7 @@ local mountFilter = { if (self.enabled) then aura_env.debugLog("Mount filter; slot: " .. slot) local itemType = getItemType(slot) - if (itemType == "Mount") then + if (itemType and itemType == "Mount") then aura_env.debugLog("Mount filter pass") return true end @@ -113,7 +114,7 @@ local ilvlFilter = { if (self.enabled) then aura_env.debugLog("ILvl filter; slot: " .. slot) local itemLevel = getItemLevel(slot) - if (itemLevel > self.ilvlThreshold) then + if (itemLevel and itemLevel > self.ilvlThreshold) then aura_env.debugLog("Item level filter pass") return true end @@ -131,13 +132,13 @@ local professionFilter = { if (self.enabled) then aura_env.debugLog("Profession filter; slot: " .. slot) local itemType = getItemType(slot) - if (itemType == "Tradeskill") then + if (itemType and itemType == "Tradeskill") then local itemSubtype = getItemSubtype(slot) - if (itemSubtype == "Herb" and self.herbs) + if (itemSubtype and (itemSubtype == "Herb" and self.herbs) or (itemSubtype == "Leather" and self.leather) or (itemSubtype == "Cloth" and self.cloth) or (itemSubtype == "Ore" and self.ore) - or (itemSubtype == "Cooking" and self.cooking) then + or (itemSubtype == "Cooking" and self.cooking)) then aura_env.debugLog("Profession filter pass") return true end @@ -160,7 +161,7 @@ local valueFilter = { itemValue = itemValue * itemQuantity end - if (itemValue > self.valueThreshold) then + if (itemValue and itemValue > self.valueThreshold) then aura_env.debugLog("Value filter pass") return true end @@ -185,7 +186,7 @@ local greyValueFilter = { itemValue = itemValue * itemQuantity end - if (itemValue > self.valueThreshold) then + if (itemValue and itemValue > self.valueThreshold) then aura_env.debugLog("Grey value filter pass") return true end @@ -200,7 +201,7 @@ local questItemFilter = { aura_env.debugLog("Quest item filter; slot: " .. slot) local itemType = getItemType(slot) local itemSubtype = getItemSubtype(slot) - if (itemType == itemSubtype == "Quest") then + if (itemType and itemSubtype and itemType == itemSubtype == "Quest") then aura_env.debugLog("Quest item filter pass") return true end @@ -234,6 +235,23 @@ local classGearFilter = { end end } +local azeriteFilter = { + enabled = true, + ilvlThreshold = 800, + qualityThreshold = 2, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Azerite filter; slot: " .. slot) + local itemType = getItemType(slot) + local itemSubtype = getItemSubtype(slot) + local itemQuality = getItemQuality(slot) + if (itemType and itemSubtype and itemQuality and itemType == "Consumable" and itemSubtype == "Other" and itemQuality > 1) then + aura_env.debugLog("Azerite filter pass") + return true + end + end + end +} aura_env.filterService = { filters = { @@ -245,18 +263,16 @@ aura_env.filterService = { valueFilter, greyValueFilter, questItemFilter, - classGearFilter + classGearFilter, + azeriteFilter }, slotsToLoot = {}, run = function(self, lootInfo) self.slotsToLoot = {} for slot, item in pairs(lootInfo) do aura_env.debugLog("Loot slot: " .. slot .. " " .. item.item) - for k, filter in pairs(self.filters) do - if (filter:filter(slot)) then - self.slotsToLoot[#self.slotsToLoot + 1] = slot - end - end + aura_env.debugLog(getItemSubtype(slot)) + self:runFilters(slot) end aura_env.debugLog("Slots to loot: " .. #self.slotsToLoot) @@ -266,6 +282,14 @@ aura_env.filterService = { aura_env.debugLog("Looting slot (iterator): " .. slot) doLoot(slot) end + end, + runFilters = function(self, slot) + for k, filter in pairs(self.filters) do + if (filter:filter(slot)) then + self.slotsToLoot[#self.slotsToLoot + 1] = slot + return + end + end end } From d91242f99d2e8f89f9e14b6afeeb83b0e4c8b374 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:52:07 +0200 Subject: [PATCH 07/44] Fix small issues in loot and vendor --- LegionWA/AutoVendor/Event.lua | 29 ----------------------------- LegionWA/AutoVendor/Init.lua | 32 ++++++++++++++++++++++---------- LegionWA/NewAutoLoot/Init.lua | 2 +- 3 files changed, 23 insertions(+), 40 deletions(-) diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index b253c33..b2c0651 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -7,36 +7,7 @@ function(allstates, e) for container = 0, 4 do for slot = 1, GetContainerNumSlots(container) do aura_env.filterService:run(container, slot) - local link = select(7, GetContainerItemInfo(container, slot)) - if link then - local name = GetItemInfo(link) - local rarity = select(3, GetItemInfo(link)) - local ilvl = select(4, GetItemInfo(link)) or 0 - local type = select(6, GetItemInfo(link)) - local price = select(11, GetItemInfo(link)) - if price and price > 0 then - if aura_env.sellWhitelist[name] ~= 1 then - if rarity == 0 then - aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} - elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then - aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} - end - end - end - end end end - - aura_env.ticker = C_Timer.NewTicker(0.15, function() - if aura_env.toSell[1] then - UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) - table.remove(aura_env.toSell, 1) - else - aura_env.ticker:Cancel() - end - if j >= GetContainerNumSlots(i) then i = i + 1 - j = 1 end - if i >= 4 then aura_env.ticker:Cancel() end - end) return true end diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua index 42ebc7f..d39f339 100644 --- a/LegionWA/AutoVendor/Init.lua +++ b/LegionWA/AutoVendor/Init.lua @@ -1,12 +1,11 @@ -local debug = true +local debug = false local iconDisplayDuration = 3 local function getItemLink(container, slot) - aura_env.debugLog("getItemLink", container, slot) return select(7, GetContainerItemInfo(container, slot)) end local function getItemQuantity(container, slot) - + return select(2, GetContainerItemInfo(container, slot)) end local function getItemName(container, slot) return select(1, GetItemInfo(getItemLink(container, slot))) @@ -60,7 +59,16 @@ local gearFilter = { aura_env.debugLog("Gear filter; container = " .. container .. ", slot = " .. slot) local itemLevel = getItemLevel(container, slot) local itemBindType = getBindType(container, slot) - if (itemLevel and itemBindType and itemLevel < ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then + local itemType = getItemType(container, slot) + local itemEquipLoc = getItemEquipLocation(container, slot) + if (itemType and itemEquipLoc and + (itemType == "Armor" + or itemType == "Weapon" + or itemEquipLoc == "INVTYPE_FINGER" + or itemEquipLoc == "INVTYPE_TRINKET" + or itemEquipLoc == "INVTYPE_CLOAK" + or itemEquipLoc == "INVTYPE_NECK") + and itemLevel and itemBindType and itemLevel < self.ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then aura_env.debugLog("Gear filter pass") return true end @@ -69,13 +77,13 @@ local gearFilter = { } local function doSell(container, slot) - local itemIcon = getItemIcon(slot) - local itemName = getItemName(slot) - local itemQuantity = getItemQuantity(slot) - local itemQuality = getItemQuality(slot) + local itemIcon = getItemIcon(container, slot) + local itemName = getItemName(container, slot) + local itemQuantity = getItemQuantity(container, slot) + local itemQuality = getItemQuality(container, slot) aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" local nameWithQuantity = nameWithColor .. " x" .. itemQuantity aura_env.debugLog("Assigning name" .. nameWithQuantity) @@ -94,7 +102,7 @@ local function doSell(container, slot) duration = iconDisplayDuration, autoHide = true, } - + UseContainerItem(container, slot) end @@ -107,6 +115,10 @@ aura_env.filterService = { slotsToLoot = {}, run = function(self, container, slot) aura_env.debugLog("Filtering item in container = " .. container .. ", slot = " .. slot .. "...") + if (not getItemLink(container, slot)) then + aura_env.debugLog("Slot empty") + return + end for k, filter in pairs(self.filters) do if (filter:filter(container, slot)) then doSell(container, slot) diff --git a/LegionWA/NewAutoLoot/Init.lua b/LegionWA/NewAutoLoot/Init.lua index a1f7533..439d228 100644 --- a/LegionWA/NewAutoLoot/Init.lua +++ b/LegionWA/NewAutoLoot/Init.lua @@ -46,7 +46,7 @@ local doLoot = function(slot) local itemQuality = getItemQuality(slot) aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" local nameWithQuantity = nameWithColor .. " x" .. itemQuantity aura_env.debugLog("Assigning name" .. nameWithQuantity) From 1e952033180eac0ef2f2305dcbad2404dce6d437 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:54:10 +0200 Subject: [PATCH 08/44] Minor folder changes --- LegionWA/AutoLoot/Autoloot/Event.lua | 266 ------------- LegionWA/AutoLoot/Autoloot/Init.lua | 378 ------------------- LegionWA/AutoLoot/DisplayTSU/Event.lua | 38 -- LegionWA/{NewAutoLoot => AutoLoot}/Event.lua | 0 LegionWA/AutoLoot/Export | 1 + LegionWA/{NewAutoLoot => AutoLoot}/Init.lua | 0 LegionWA/AutoVendor/Export | 1 + LegionWA/NewAutoLoot/Export | 1 - 8 files changed, 2 insertions(+), 683 deletions(-) delete mode 100644 LegionWA/AutoLoot/Autoloot/Event.lua delete mode 100644 LegionWA/AutoLoot/Autoloot/Init.lua delete mode 100644 LegionWA/AutoLoot/DisplayTSU/Event.lua rename LegionWA/{NewAutoLoot => AutoLoot}/Event.lua (100%) create mode 100644 LegionWA/AutoLoot/Export rename LegionWA/{NewAutoLoot => AutoLoot}/Init.lua (100%) delete mode 100644 LegionWA/NewAutoLoot/Export diff --git a/LegionWA/AutoLoot/Autoloot/Event.lua b/LegionWA/AutoLoot/Autoloot/Event.lua deleted file mode 100644 index f9950b4..0000000 --- a/LegionWA/AutoLoot/Autoloot/Event.lua +++ /dev/null @@ -1,266 +0,0 @@ ---LOOT_READY MERCHANT_SHOW QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW SCRAPPING_MACHINE_SHOW MERCHANT_CLOSED EQUIP_BIND_CONFIRM -function(e) - local aura_env = aura_env - if e == "LOOT_READY" then --Auto Loot - local slot = 1 - local lootinfo = GetLootInfo() - for k, v in pairs(lootinfo) do - if v.locked == false then - local link = GetLootSlotLink(slot) - local looted = false - if not link then link = GetLootSlotLink(slot) end - if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[2] == true and link:match("Azerite") then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[3] == true and v.item:match("War Resources") then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[4] == true and v.item:match("Residuum") then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[5] == true and v.item:match("Manapearl") then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - end - if link then - local icon = v.texture - local id = link:match("item:(%d+):") - if not WeakAurasSaved.CustomTrash.IconDatabase[v.item] and v.item and icon then - WeakAurasSaved.CustomTrash.IconDatabase[v.item] = icon - print("Adding ", v.item, " to the icon database") - end - if not WeakAurasSaved.CustomTrash.IDDatabase[v.item] and v.item and id then - WeakAurasSaved.CustomTrash.IDDatabase[v.item] = id - print("Adding ", v.item, " to the id database") - end - local type = select(6, GetItemInfo(link)) or "" - local subtype = select(7, GetItemInfo(link)) or "" - local ilvl = select(4, GetItemInfo(link)) or 0 - local equip = select(9, GetItemInfo(link)) - if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[14] == true and v.isQuestItem == true then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[15] == true and v.quality == 0 then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[21] == true and type == "Consumable" and subtype == "Other" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - else - if type == "Weapon" or type == "Armor" then - if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - end - elseif aura_env.filter[20] == true and type == "Miscellaneous" then - if subtype == "Mount" then - LootSlot(slot) - if link then - WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity) - end - end - end - end - end - slot = slot + 1 - end - end - CloseLoot() - elseif e == "EQUIP_BIND_CONFIRM" then - StaticPopup1Button1:Click() - elseif e == "SCRAPPING_MACHINE_SHOW" then - for i = 0, 4 do - for j = 1, GetContainerNumSlots(i) do - local link = select(7, GetContainerItemInfo(i, j)) - if link then - local name = GetItemInfo(link) - local rarity = select(3, GetItemInfo(link)) - local ilvl = select(4, GetItemInfo(link)) or 0 - local type = select(6, GetItemInfo(link)) - local equip = select(9, GetItemInfo(link)) or "" - local price = select(11, GetItemInfo(link)) - if aura_env.sellWhitelist[name] ~= 1 then - if name and rarity and ilvl and type and equip and price then - if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then - UseContainerItem(i, j) - elseif rarity > 3 and aura_env.getequipID(equip) then - if equip ~= "INVTYPE_FINGER" then - local eqID = aura_env.getequipID(equip) - local elink = GetInventoryItemLink("player", eqID) - local eilvl = select(4, GetItemInfo(elink)) or 0 - if eilvl > ilvl + 5 then - print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink) - UseContainerItem(i, j) - end - elseif equip == "INVTYPE_FINGER" then - local eqID1, eqID2 = 11, 12 - local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2) - local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0 - if eilvl1 > ilvl + 5 then - print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1) - UseContainerItem(i, j) - elseif eilvl2 > ilvl + 5 then - print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2) - UseContainerItem(i, j) - end - end - end - end - end - end - end - end - elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon - if CanMerchantRepair() == true then RepairAllItems() end - local i, j = 0, 1 - for c = 0, 4 do - for s = 1, GetContainerNumSlots(c) do - local link = select(7, GetContainerItemInfo(c, s)) - if link then - local name = GetItemInfo(link) - local rarity = select(3, GetItemInfo(link)) - local ilvl = select(4, GetItemInfo(link)) or 0 - local type = select(6, GetItemInfo(link)) - local price = select(11, GetItemInfo(link)) - if price and price > 0 then - if aura_env.sellWhitelist[name] ~= 1 then - if rarity == 0 then - aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} - elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then - aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s} - end - end - end - end - end - end - aura_env.ticker = C_Timer.NewTicker(0.15, function() - if aura_env.toSell[1] then - UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) - table.remove(aura_env.toSell, 1) - else - aura_env.ticker:Cancel() - end - if j >= GetContainerNumSlots(i) then i = i + 1 - j = 1 end - if i >= 4 then aura_env.ticker:Cancel() end - end) - elseif e == "MERCHANT_CLOSED" then - if aura_env.ticker then aura_env.ticker:Cancel() end - aura_env.toSell = {} - elseif e == "QUEST_POI_UPDATE" then - CloseGossip() - elseif e == "QUEST_DETAIL" then - AcceptQuest() - elseif e == "QUEST_COMPLETE" then - if GetNumQuestChoices() <= 1 then - GetQuestReward(1) - end - elseif e == "GOSSIP_SHOW" then - local quests = GetNumGossipAvailableQuests() - local complquests = GetNumGossipActiveQuests() - local opt = GetNumGossipOptions() - if complquests > 0 and opt == 0 then - for i = 1, complquests do - SelectGossipActiveQuest(i) - end - end - if quests > 0 and opt == 0 then - SelectGossipAvailableQuest(1) - end - if opt == 1 and quests + complquests == 0 then - SelectGossipOption(1) - end - elseif e == "QUEST_GREETING" then - local quests = GetNumGossipAvailableQuests() - local complquests = GetNumGossipActiveQuests() - if complquests > 0 then - for i = 1, complquests do - SelectActiveQuest(1) - end - end - if quests > 0 then - SelectAvailableQuest(1) - end - elseif e == "QUEST_PROGRESS" then - if IsQuestCompletable(i) then - CompleteQuest() - end - end -end \ No newline at end of file diff --git a/LegionWA/AutoLoot/Autoloot/Init.lua b/LegionWA/AutoLoot/Autoloot/Init.lua deleted file mode 100644 index 00cd040..0000000 --- a/LegionWA/AutoLoot/Autoloot/Init.lua +++ /dev/null @@ -1,378 +0,0 @@ -if not WeakAurasSaved.CustomTrash then - WeakAurasSaved.CustomTrash = {} -end - -if not WeakAurasSaved.CustomTrash.IconDatabase then - WeakAurasSaved.CustomTrash.IconDatabase = {} -end -if not WeakAurasSaved.CustomTrash.IDDatabase then - WeakAurasSaved.CustomTrash.IDDatabase = {} -end - -aura_env.debug = true -aura_env.filter = { - [1] = true, --Gold - [2] = true, --Azerite - [3] = true, --War resources - [4] = true, --Residuum - [5] = true, --Manapearls - [6] = true, --Mounts - [7] = true, --High ilvl - [8] = true, --Herbs - [9] = false, --Cooking - [10] = false, --Cloth - [11] = true, --Metal & Stone - [12] = true, --Gold filter greys - [13] = true, -- >1 && <4 quality items, no gear - [14] = true, --Quest items - [15] = false, --All greys - [16] = true, --Whitelist - [17] = true, --Quest items (different filter) - [18] = true, --Class aproperiate >2 items - [19] = true, --Jewelery >2 quality - [20] = true, --Additional mount filter - [21] = true, --Tradeskill // Elemental -} -aura_env.ilvlFilter = 940 -aura_env.goldFilter = 500000 - -aura_env.whitelist = { - ["Pygmy Suckerfish"] = 1, - ["Drakkari Offerings"] = 1, - ["Deepcoral Pod"] = 1, - ["Hardened Spring"] = 1, - ["Machined Gear Assembly"] = 1, - ["Tempered Plating"] = 1, - ["Hefty Glimmershell"] = 1, - ["Fresh Meat"] = 1, - ["Wood"] = 1, - - ["Blood of Sargeras"] = 1, - ["Primal Sargerite"] = 1, -} -aura_env.sellWhitelist = { - ["Blacksmith Hammer"] = 1, - ["Endless Tincture of Renewed Combat"] = 1, - ["Mr. Munchykins"] = 1, - ["Arclight Spanner"] = 1, - ["Runeblade of Baron Rivendare"] = 1, -} -aura_env.toSell = {} -aura_env.getequipID = function(equip) - if equip == "INVTYPE_HEAD" then return 1 - elseif equip == "INVTYPE_NECK" then return 2 - elseif equip == "INVTYPE_SHOULDER" then return 3 - elseif equip == "INVTYPE_BODY" then return 4 - elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then return 5 - elseif equip == "INVTYPE_WAIST" then return 6 - elseif equip == "INVTYPE_LEGS" then return 7 - elseif equip == "INVTYPE_FEET" then return 8 - elseif equip == "INVTYPE_WRIST" then return 9 - elseif equip == "INVTYPE_HAND" then return 10 - elseif equip == "INVTYPE_CLOAK" then return 15 - elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then return 16 - elseif equip == "INVTYPE_SHIELD" then return 17 - else return nil end -end -aura_env.skills = { - --Warrior - [1] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 1, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Paladin - [2] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Hunter - [3] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Rogue - [4] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Priest - [5] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Death Knight - [6] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Shaman - [7] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Mage - [8] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Warlock - [9] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Monk - [10] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Druid - [11] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Demon Hunter - [12] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 1, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, -} diff --git a/LegionWA/AutoLoot/DisplayTSU/Event.lua b/LegionWA/AutoLoot/DisplayTSU/Event.lua deleted file mode 100644 index 8e1d6a3..0000000 --- a/LegionWA/AutoLoot/DisplayTSU/Event.lua +++ /dev/null @@ -1,38 +0,0 @@ ---REMOVE_ITEM_SHOW ADD_ITEM_SHOW -function(allstates, e, what, howmuch) - if e == "ADD_ITEM_SHOW" then - if what then - --Get info about item - local icon = 0 - local name = GetItemInfo(what) - --Save icon to databases - if not WeakAurasSaved.CustomTrash.IconDatabase[name] then icon = select(10, GetItemInfo(name)) else icon = WeakAurasSaved.CustomTrash.IconDatabase[name] end - if name and icon and not WeakAurasSaved.CustomTrash.IconDatabase[name] then WeakAurasSaved.CustomTrash.IconDatabase[name] = icon; print("Adding|cff78cb00 ", name, " |rto the icon database") end - --Get ID for tooltip - local indexid = #allstates + 1 - local ID - if WeakAurasSaved.CustomTrash.IDDatabase[name] then ID = WeakAurasSaved.CustomTrash.IDDatabase[name] end - allstates[indexid] = - { - show = true, - changed = true, - index = GetTime(), - resort = true, - icon = icon, - name = what, - amount = howmuch, - } - if ID then - allstates[indexid].itemId = ID - end - C_Timer.After(5, function() WeakAuras.ScanEvents("REMOVE_ITEM_SHOW", indexid) end) - return true - end - elseif e == "REMOVE_ITEM_SHOW" then - if allstates[what] then - allstates[what].show = false - allstates[what].changed = true - return true - end - end -end \ No newline at end of file diff --git a/LegionWA/NewAutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua similarity index 100% rename from LegionWA/NewAutoLoot/Event.lua rename to LegionWA/AutoLoot/Event.lua diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export new file mode 100644 index 0000000..2696140 --- /dev/null +++ b/LegionWA/AutoLoot/Export @@ -0,0 +1 @@ +dqfhLbqiOOGweqpckkYLGIcmkvQofawLIKWRairZsjULsYUGcdtr5yaQLPKcpdkQmnLu01aevBdkQQVbfLmoOOuNdviADaI8oas6Ek0(qfchurIfIkKEOsQmrOiDruHAJkPQpci1ibOoPIuRuvEjuuuZevQBQKs7eqYprLyOqrCuaHLQij9uu0uvPCvOOkTvfj1xrbDwfjrVfQAUaIYDHk7fr9xubdwoSQAXkcpgv1KvWLbTzuLpROA0qPoncRgkk0RrL0SvQBJi7gs)wfdhk54aKA5O0ZHy6iDDvY2rf9DfrJhG48OqRhGeEpkqZhkQI7Jcy)0KbM8nYm)KVrMsMjczMRbga5ya8AqMjjYmhiZCG8nYmhiqWmEHYNsWjKmZ)EtMjJCHhpeiLmqbKJ5MrM5NpLGt4nwI5ZHSR9majduRaEgzMiy95djduZiZebU5HjhcukzM34cMWnhV(BKz(3eZrjZKBoE93iZeBiXCSPKx)AcKpdZH5pdZXrUgRbMdZHzHzXrUgK5TAnX8jZCF(dKVrMj9VHO01G8nYmjDTPeKVrMsMsMj9VHOuY3iZK01Msq(gzkzkzMSNnK8nYmjDTPeKVrMsMsM5abpEe8V2ugjFJmtsxBkb5BKPKPKzY(5djFJmtsxBkb5BKPKPKzsGoN9CHf5BKzs6AtjiFJmLmLmtS4el6FdrPKVrMjPRnLG8nYuYuYm595tjoOKVrMjPRnLG8nYuYuYmVqGCG)(JGqEcYuYm)OeK(uizokzMSW5eh0BmIfKmZbgr)Ki4pN9CHfzMqabRp6aCG8eKzszjMphYs(gzMiyFMKlOKzIG9zsUGof(ucoHKPKzsmqMjMHafCYPCrp7ZHsMjbkfYI(3tnKfH4GsgOWCKzojXafBYRFnbYNH5W8NbmMfM1AIzdKVMaVMRjzERwtmFYmrViDJLy(CilczGcyYmbeUWJhcKsgOwHzTMZiZKaLGYbe6NLchiduatMsMjFY3iduat(gzMuiGqbE9huktcafqYa1AmJmZbcemJxO8PeCcjZ8V3Kz(5tj4eEJLy(Ci7ApdqYa1kGNrM5NpL4GIq(gzMi0plL8nYmhoCGeeb5phsEcYuYmjqjOKVrM5WHd8VqOhsK5OKzY)cHEirM5(W)VTb4exZTrJ3FJa9Tp8)BJG)bftjqWA)zetVy)uIdQnAyoF(wTYiOqsa1NeCXiOqsCtGY1fJGcjbex)nbLXfJGcjXnKt4EXiOqsRLaLBiNW9IrqHKUXiwWfJGcjX8AIBmIfCHGcjXK(5Z11DUqPlgbfsIJb0xeyX9H)IrqHKUbbe6flCXqG7nMWsWhUy83FeKPX0fd5Ac(7pcY0y6Inbb6WngXcUabeS(8NgtxmeiDAmDXiqwh7NhLaD(uf(NdrP2Ob0q60uiPPr5DUJSpua8TALTph608pOl2(COa1NeCX2NdfiU(OuckJlg)lwwikFgNgtxS95qbIR)MGY4ITp85kCyXiqaIlicDAkK0IbOVGi0PX0fJazk8PeCcTrdOHuUphkZ9HonkVZDK9HcGVvRmUjq5QHCibPeKGi2WbIyOhQn5HLR(2h()TX7cLpL4GAZH0PPqsCtGY17i7dfaFMzglKEXIAanKY95qzUpuUjq56DK9HcGpi6GV9H)FB8Uq5tjoO2CiDAkKeq9jbVJSpua8zMzSq6flQHa3q(07RXIb0qk3NdL5(qNgL35oY(qbaaFq0bF7d))24DHYNsCqT5q60uiPBmIf8oY(qbWNzMXcPxSOgcCd5tVJ5VyanKonfsAAuEN7ZH0PPqsCtGY17i7dfaaaWheDW3(W)VnExO8PehuBoKonfsI51eugXcEhzFOa4ZmZyH0lwudbUH8P3XSwmGgsNMcjnnkVZ95q60uijUjq56DK9Hcaaa4dIo4BF4)3gVlu(uIdQnhsNMcjXnKt4(oY(qbWNzMXcPxSOgcCd5tVVMlgqdPttHKMgL35(CiDAkKe3eOC9oY(qbaaa8brh8Tp8)BJ3fkFkXb1MdPttHKM6)(cEhzFOa4ZmZyH0lwudbUH8P3bg4fdOH0PPqstJY7CFoKonfsIBcuUEhzFOaaaa(GOd(2h()TX7cLpL4GAZH0PPqsaX1hLsqz8oY(qbWNzMXcPxSOgcCd5tVJ5wmGgs5(COm3h60O8o3r2hkaa4dIo4BF4)3gVlu(uIdQnhsNMcjbex)nbLX7i7dfaFMzglKEXIAiWnKp9oMBXaAiDAkK00O8o3NdPttHK4MaLR3r2hkaaaGpi6GV9H)FB8Uq5tjoO2CiDAkKehdOViWI7d)pL4GEhzFOa4ZmZyH0lwudbUH8P35ixmGgsNMcjnnkVZ95q60uijUjq56DK9Hcaaa4dIo4BF4)3gVlu(uIdQnhsNMcjnn)d6DK9HcGpZmJfsVyrne4gYNEh4zlgqdPttHKMgL35(CiDAkKe3eOC9oY(qbaaa8brh85Z3(W)VTHd3Nd1gnExO8Peh07i7dfaFMz2)I9ZbikNymaN4Ao3N53b5(COeOZnK9HcKmqddmmK9HcGpZmJ7ZHYCFO3r2hka(8zMz7d))2iOqstZ)GAJ2CiDAkK008pO3r2hka(mZS9H)FBeuijG6tcAJ2CiDAkKeq9jbVJSpua8zMz7d))2iOqsaX1hLsqz0gT5q60uijG46JsjOmEhzFOa4ZmZ2h()TrqHKaIR)MGYOnAZH0PPqsaX1Ftqz8oY(qbWNpZm7FX(5aeLtmgGtCnN7Z87Gyk7Fsc05gb)dQX7WAGggyyeuijG6tcAyGHbAtsqX2a0x)nbLrd0WadJGcjbex)nbLra8zMz7d))2q)KGmKGI96o7dRnAG4bnmWW(xSFoar5eda91FtqzCDN9HfbpbfsciU(BckJgGsdyCggyyeuijG6tcAyGHbIdid41ynzb9zMz7d))2q)KGmKGInqC9rPeugTrd9tcYqck2R7SpSggyyGgGaAyGHrqHKaIRpkLGYOpFMz2)I9ZbikNymaN4Ao3N53bNcccXCuc05g6Nee0Wadd9tcYqck2aX1hLsqzeaFMz2)I9ZbikNy83Be6NcrWJz6FX(5aeLtm(7nc9tHigGsdyC2OXG(mZmZmdb7ZK2OrzVGl(mZmZmJp2F05WbB0OSxWfFMzMzMrGoabeB0aAi9gbj4Daw8zMzMzgle5WsTrJYEbx85ZmZmZmc(huB0iOqstZ)GU4ZmZmZm0pjOnAOFsqgsqXgiU(OuckJl(mZmZm7t6CHsTrJGcjbexFukbLXfF(mZmZmdl2ZCwicYngXcAJgiLGeCaCXNzMzMzqablc2pL4GEJGe0gnGgsVrqcEhadqPrW)GIPeiyT)mIPxSFkXbDXNzMzMzdxSFkXb1gnc(humLabR9Nrm9I9tjoOl(mZmZm7FrpaMyaAJgL9cU4ZmZyaFq0bF(8Tp8)BB(zpSEInfYAJgd6ZmZGO)j2WbB0OSxWfFMzgpInfYAJgVlu(uId6De4M3IHSpua8zMzMzgbp7ocCZddi6FInCaaJIne1NzMzMzMz2)I9ZbikNymaN4Ao3N53bb6ZEW4rSPqwavdzFOajd0WaddzFOa4ZmZmZmZmBF4)3gbfscO(KG2OnhsNMcjbuFsW7i7dfaFMzMzMzMze8S7euij0pjO9rhmckKeq9jbbsK(u(yFheZGbaL2DG(ShW8G5HjXMtilMhmpR7GfwqwaabaaJIne1NzMzMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqG(ShmEeBkK1W6JGacGpZmZmZmZmZmJfsVyrnk7f0NzMzMzMzgeDWNzMzMzq0bFMzgeDWhd4BF4)32HDaYovHiNlw(qK1tSPqwB0yqFMzge9pXgoyJgL9cU4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4ufICUy5dnEeBkKfq1q2hkqYanmWWq2hka(mZmZmZmZ2h()TrqHKaQpjOnAZH0PPqsa1Ne8oY(qbWNzMzMzMzgbp7obfscO(KG2hDWiOqsa1Neeir6t5J9DqUWoazTPke5CXYhIacaagfBiQpZmZmZmZmZm7FX(5aeLtmgGtCnN7Z87GCHDaYASqKZflFOXJytHSgwFeeqa8zMzMzMzMzMzSq6flQrzVG(mZmZmZmZGOd(mZmZmdIo4ZmZGOd(yaF7d))2iDUqPRNytHS2OXG(mZmi6FInCWgnk7fCXNzMXJytHS2OX7cLpL4GEhbU5Tyi7dfaFMzMzMrWZUJa38WaI(NydhaWOydr9zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DW1EUqPgpInfYcOAi7dfizGggyyi7dfaFMzMzMzMz7d))2iOqs3yelOnAZH0PPqs3yel4DK9HcGpZmZmZmZmcE2DckK0ngXcAF0bJGcjDJrSG24ObU2ZfkfeaJIne1NzMzMzMzMzM9Vy)CaIYjgdWjUMZ9z(DW1EUqPgpInfYAy9rqabWNzMzMzMzMzMXcPxSOgL9c6ZmZmZmZmdIo4ZmZmZmi6GpZmdIo4Jb8Tp8)BJyZ5E9eBkK1gng0NzMbr)tSHd2OrzVGl(mZmInN7ByZcrW(ShSrdZgZE2IpZmJhXMczTrJ3fkFkXb9ocCZBXq2hka(mZmZmJGNDhbU5Hbe9pXgoaGrXgI6ZmZmZmZm7FX(5aeLtmgGtCnN7Z87GtZnNBJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuijUHCc32OnhsNMcjXnKt4(oY(qbWNzMzMzMzgbp7obfsIBiNWT9rhmckKe3qoHBJJWqGBEyqS5CFdBwic2N9aagfBiQpZmZmZmZmZm7FX(5aeLtmgGtCnN7Z87GttHKSnKt424rSPqwdRpccia(mZmZmZmZmZmwi9If1OSxqFMzMzMzMzq0bFMzMzMbrh8zMzq0bFmGV9H)FByXE4brqioORNytHS2OXG(mZmi6FInCWgnk7fCXNzMHnKDceB0OSxWfFMzg)9HITnA8(Be4IpZm7WcTrJ3FJax8zMzB4NInK1gnE)ncCXNzMX)C4kb6CB0493iWfFMzgpInfYAJgVlu(uId6De4M3IHSpua8zMzMzgbp7ocCZddi6FInCaaJIne1NzMzMzMz2)I9ZbikNymaN4Ao3N53bXe2dpiccXb14rSPqwavdzFOajd0WaddzFOa4ZmZmZmZmBF4)3gbfs6gJybTrBoKonfs6gJybVJSpua8zMzMzMzMrWZUtqHKUXiwq7JoyeuiPBmIf0ghnWBS)bicxj2Bqamk2quFMzMzMzMzMz2(W)VnckKeZRjOmIf0gT5q60uijMxtqzel4DK9HcGpZmZmZmZmZmJGNDNGcjX8AckJybTp6GDNGcjX8AckJybTXrdeWq2jaTp6GHa38WaBi7eia4ZmZmZmZmZmZoS2DckKeZRjOmIf0ghnqUHFk2qwq7JoyiWnpm2WpfBila(mZmZmZmZmZSdRDNGcjX8AckJybTXrdCD7dfBq7JoyiWnpm4VpuSbWNzMzMzMzMzMDyT7euijMxtqzelOnoAGCHfcAF0bdbU5HXHfcGpZmZmZmZmZm7WA3jOqsmVMGYiwqBC0ax35Wvc05G2hDWqGBEyW)C4kb6CaaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bXe2dpiccXb14rSPqwdRpccia(mZmZmZmZmZmZmJfsVyrnk7f0NzMzMzMzMzMbrh8zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(2h()TX5FFbxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJZ)(cEdBwic2N9GnAyoGCBQWaE2mBQWaE2SfFMz2hlS2mEdBwic2N9WTZ0uijM0pFUAJgV)gbU4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4u)3xqJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuiPP(VVG2OnhsNMcjn1)9f8oY(qbWNpZmZmZmZmcE2De4MhgFSWAZ4nSzHiyF2d3ottHKys)85kagfBiQpZmZmZmZmZmBF4)3gbfsciU(OuckJ2OnhsNMcjbexFukbLX7i7dfaFMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bVHnKfAqaHaHAGggyyeuijG46JsjOmAyGHbAeuijeJa1q2hQbAyGHHSpua8zMzMzMzMzMzeuiPP(VVG2OrqHKM6)(cAtfgbfsciU(OuckJ(mZmZmZmZGOd(8zMzMzMzMrWZUtqHKM6)(cAF0bJGcjn1)9f04ime4MhgC(3xWByZcrW(ShaWOydr9zMzMzMzMzMz)l2phGOCIXaCIR5CFMFhCQ)7lOXJytHSgwFeeqa8zMzMzMzMzMzSq6flQrzVG(mZmZmZmZGOd(mZmZmdIo4ZmZGOd(yaF7d))2MZczCQ)7l46j2uiRnAmOpZmdI(NydhSrJYEbx8zMzRwzmHuJInleb7ZEWOhBMrp2(CO2FVT5Sqgr8zMzC(3xWByZcrW(ShSrdi3MkmGNnZMkmGNnBXNzM9XcRnJ3WMfIG9zpC7mnfsIj9ZNR2OX7VrGl(mZmEeBkK1gnExO8Peh07iWnVfdzFOa4ZmZmZmcE2De4Mhgq0)eB4aagfBiQpZmZmZmZS)f7NdquoXyaoX1CUpZVdc0Sqgno)7lOXJytHSaQgY(qbsgOHbggY(qbWNzMzMzMz2(W)VnckKeqC93eugTrBoKonfsciU(BckJ3r2hka(mZmZmZmZi4z3jOqsaX1Ftqz04iSzayuSHO(mZmZmZmZmZS9H)FBeuiPP(VVG2OnhsNMcjn1)9f8oY(qbWNpZmZmZmZmZmJGNDhbU5HXhlS2mEdBwic2N9WTZ0uijM0pFUcGrXgI6ZmZmZmZmZmZmZS9H)FBeuijG46JsjOmAJ2CiDAkKeqC9rPeugVJSpua8zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bVHnKfAqaHaHAGggyyeuijG46JsjOmAyGHbAeuijeJa1q2hQbAyGHHSpua8zMzMzMzMzMzMzgbfsAQ)7lOnAeuiPP(VVG2uHrqHKaIRpkLGYOpZmZmZmZmZmdIo4ZNzMzMzMzMzMrWZUtqHKM6)(cAF0bJGcjn1)9f04ime4MhgC(3xWByZcrW(ShaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bbAwiJgN)9f04rSPqwdRpccia(mZmZmZmZmZmZmJfsVyrnk7f0NzMzMzMzMzMbrh8zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(2h()TbOVGi0PPqsRNytHS2OXG(mZmi6FInCWgnk7fCXNzMXJytHS2OX7cLpL4GEhbU5Tyi7dfaFMzMzMrWZUJa38WaI(NydhaWOydr9zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqG4cIqnckKKXJytHSaQgY(qbsgOHbggY(qbWNzMzMzMz2(W)VnckK0ngXcAJ2CiDAkK0ngXcEhzFOa4ZmZmZmZmBF4)3gbfsI51eugXcAJ2CiDAkKeZRjOmIf8oY(qbWNzMzMzMzgbp7obfs6gJybTp6GrqHKyEnbLrSG2hDWiOqs3yelOnoAeuijMxtqzelOnoAGaXfeHccGrXgI6ZmZmZmZmZmZ(xSFoar5eJb4exZ5(m)oiqCbrOgbfsY4rSPqwdRpccia(mZmZmZmZmZmwi9If1OSxqFMzMzMzMzq0bFMzMzMbrh8zMzq0bFmGV9H)FB83FeeGg(zxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJyZ5(g2SqeSp7bB0WSNnBXNzMbOV(BckJ3WMfIG9zpyJ2AS4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o462FeeBo8ZA8i2uilGQHSpuGKbAyGHHSpua8zMzMzMzMTp8)BJGcjDJrSG2OnhsNMcjDJrSG3r2hka(mZmZmZmZ2h()TrqHK4ya9fbwCF4BJ2CiDAkKehdOViWI7d)pL4GEhzFOa4ZmZmZmZmJGNDNGcjDJrSG24ObofwshwqFMzMzMzMzhwJGcjDJrSG24ObYq4hRdkOpZmZmZmZSdRrqHK4ya9fbwCF4BJJg40a1uFBQet4yoS(PbkGMJNQG(mZmZmZmZoSgbfsIJb0xeyX9HVnoAGtdut9TPsmHJ5WTP60afMzo(gOpZmZmZmZSdRrqHK4ya9fbwCF4BJJg40a1uFBQet4yoSoU5YuWmd6ZmZmZmZm7WAeuijogqFrGf3h(24Obonqn13MkXeoMdafhVomZGayuSHO(mZmZmZmZmZS9H)FBeuijUHCc32OnhsNMcjXnKt4(oY(qbWNzMzMzMzMzMTp8)BJGcjbex)nbLrB0MdPttHKaIR)MGY4DK9HcGpZmZmZmZmZmBF4)3gbchdOViWcR)eBOnA)l2phGOCIbcxj2Be8iWnKp9oMBXW8Isqx3(JGCheR9NriliaaGdpY1eugXcIZghnG95ZmZmZmZmZmZi4z3jq4ya9fbwy9NydTp6GrqHK4gYjCBCegcCZddInN7ByZcrW(ShSp6GrqHKaIR)MGYOXryiWnpma0x)nbLXByZcrW(ShaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bx3(JGyZHFwJhXMcznS(iiGa4ZmZmZmZmZmZmZmwi9If1OSxqFMzMzMzMzMzgeDWNzMzMzMzgeDWNzMzMzq0bFMzgeDWhd4BF4)32hqbKLGcxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJyZ5(g2SqeSp7bB0WSNnBXNzMbOV(BckJ3WMfIG9zpyJ2AS4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4uauazjOqJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuiPBmIf0gT5q60uiPBmIf8oY(qbWNzMzMzMz2(W)VnckKeZRjOmIf0gT5q60uijMxtqzel4DK9HcGpZmZmZmZS9H)FBeuijG46VjOmAJ2CiDAkKeqC93eugVJSpua8zMzMzMzMrWZUtqHKUXiwq7JoyeuijMxtqzelO9rhmckKeqC93eugTp6GrqHKUXiwqBC0ax3bf5I0FIne0(OdgbfsI51eugXcAJJgixOydzbTp6GrqHKaIR)MGYOXryadGrXgI6ZmZmZmZmZmZ(xSFoar5eJb4exZ5(m)o4uauazjOqJhXMcznS(iiGa4ZmZmZmZmZmZyH0lwuJYEb9zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(89Vy)CaIYjg8i2uiltilNe8H2OXG(mZmEeBkKfXgng0NzMzMzZp7H1tSPq2fFMzMzMDyhGStviY5ILpez9eBkKDXNzMzMzKoxO01tSPq2fFMzMzMrS5CVEInfYU4ZmZmZmSyp8Giieh01tSPq2fFMzMzMX5FFbxpXMczx8zMzMz2CwiJt9FFbxpXMczx8zMzMzgG(cIqNMcjTEInfYU4ZmZmZm(7pccqd)SRNytHSl(mZmZm7dOaYsqHRNytHS(mZmgyXNzMHSpuKBhUphQnAmidS4ZmZyVqTrJ3fkFkXb9ocCZBX2NdDAuEha8zMzMzgcCZddK9HIC7W95qTrJbzaFMzMzMX7WAi7dDXiOqsgbQH1NGf5((COtJY7aGnC8zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqUphQHSpuGKbAyGHHSpuddmmqd0WadJGcjHbbfscaFMzMzMzMz)l2phGOCIXaCIR5CFMFFoKonfsI51eugXcEhzFOaaGpZmZmZmZme4MhqI9cD9eBkKf5oY(qbWNzMzMzq0bF(mZmZm7FX(5aeLtmgGtCnN7Z87Gm3hkIrp2(COajd0WaddZecCZddK9HIC7W95qbWNzMzMz)l2phGOCIXaCIR5CFMFhbU5HbY(qrUD4(COa4ZmZmZmEhwJWgnmtiWnpmq2hkYTd3NdDXaEXwbSnC8zMzMzMzMTp8)BdzFO2OHa38WazFOi3oCFou8e48zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqUphkb6CdzFO2DckK9tpSaaKmqddmmK9HcGpZmZmZmZSHd3Nd9oY(qbWNzMzMzq0bFMzgeDyXNzMXEHUEInfYIyJgVlu(uId6De4M3IHSpua8zMzMzgVdRX1fJhXMczncudRpblYDe4Mhg8i2uilca2WXNzMzMzMzgbp7opInfYcK4rSPq27i7dfaamk2quFMzMzMzMzMzgcCZddK9HIC7W95qXJzcbU5HbY(qrUD4(COgGsdyC2OHSpuFMzMzMzMzMzglKEXI6ZmZmZmZmdIo4ZmZmZmi6GpZmdIo4Jb857FX(5aeLtmgGtCnN7ZCB04DHYNsCqVFMaZia(mZmcE29b4exZbWOydr9zMzMzgwSeO07anKEJGe8oaa4ZmZmZmmfY5TZzJWbm9Iew3ptGzeaFMzMzMHflbk9oa(mZmi6Gpi6GpF)l2phGOCIbcxj2BeB0yqFMz2Qvm8ZYsCy9zMz4bgNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4SrB2IpZmZmZWdYn8tXgYcIZgTzl(mZmZmdp4A)eBqC2OnBXNzMzMz4bXK9NcbXzJgWl(mZmZmdpitSjG7beqC2Ob8IpZmZmZwTIHWpwhuJjxj2BeFMzMzMHhKlOWva(JoahSPaiqeqC2Ob8IpZmZmZWdEBYZka)rhGd2uaeicioB0aEXNzMzMz4b5ONjraXzJgWl(mZmZmdpiqFHIaIZgnGx8zMzMzgEqUGcxb4p6aCWw7NpebeNnAaV4ZmZmZm8G3M8ScWF0b4GT2pFicioB0aEXNzMzMz4bXKZg(zjHaIZgnGx8zMzMzgEqUGcxb4p6aCWyo5HDabeNnAaV4ZmZmZm8G3M8ScWF0b4GXCYd7acioB0aEXNzMzMz4bz4ND((tWjebeNnAaV4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2Ob8IpZmZmZWdIP)5ZHSiG4Srd4fFMzMzMHhCDSheKjotIaIZgnGx8zMzMzgEqg(rhqaXzJ2SfFMzgdS4ZmZwTct(7)abQpZmd)AGZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4Srd4fFMzMzMHhKj2eW9acioB0aEXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0aEXNzMzMz4bVn5zfG)OdWbBkacebeNnAaV4ZmZmZm8GC0ZKiG4SrB2IpZmZmZWdc0xOiG4SrB2IpZmZmZWdYfu4ka)rhGd2A)8HiG4Srd4fFMzMzMHh82KNva(JoahS1(5draXzJgWl(mZmZmdpiMC2WpljeqC2Ob8IpZmZmZWdYfu4ka)rhGdgZjpSdiG4Srd4fFMzMzMHh82KNva(JoahmMtEyhqaXzJgWl(mZmZmdpid)SZ3FcoHiG4SrB2IpZmZmZWdYK(5eIaIZgTzl(mZmZmdp46jqOgdHFSoOiG4SrB2IpZmZmZWdIP)5ZHSiG4SrB2IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2OnBXNzMXal(mZSvRa8fkfY6ZmZWJ5WzJgd6ZmZmZSvRMclPdRXKRe7nIpZmZmZWdUU9HInioB0MT4ZmZmZm8GCd)uSHSG4SrB2IpZmZmZWdU2pXgeNnAaV4ZmZmZm8GyY(tHG4SrB2IpZmZmZWdYeBc4EabeNnAZw8zMzMz2Qvme(X6GAm5kXEJ4ZmZmZm8GCbfUcWF0b4GnfabIaIZgnGx8zMzMzgEWBtEwb4p6aCWMcGaraXzJgWl(mZmZmdpih9mjcioB0aEXNzMzMz4bb6lueqC2Ob8IpZmZmZWdYfu4ka)rhGd2A)8HiG4SrB2IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAaV4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0aEXNzMzMz4bVn5zfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2Ob8IpZmZmZWdIP)5ZHSiG4Srd4fFMzMzMHhCDSheKjotIaIZgnGx8zMzMzgEqg(rhqaXzJ2SfFMzgdS4ZmZwTAQEMFb9zMz4xtC2OXG(mZmZmB1QPWs6WAm5kXEJ4ZmZmZm8GRBFOydIZgTzl(mZmZmdpi3WpfBilioB0aEXNzMzMz4bx7NydIZgTzl(mZmZmdpiMS)uiioB0MT4ZmZmZm8GmXMaUhqaXzJ2SfFMzMzMTAfdHFSoOgtUsS3i(mZmZmdpixqHRa8hDaoytbqGiG4Srd4fFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJgWl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2OnBXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4SrB2IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4SrB2IpZmZmZWdUEceQXq4hRdkcioB0aEXNzMzMz4bX0)85qweqC2Ob8IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2OnBXNzMXal(mZSvRWewcic1NzMHhihNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4Srd4fFMzMzMHhKB4NInKfeNnAZw8zMzMzgEW1(j2G4SrB2IpZmZmZWdIj7pfcIZgTzl(mZmZmdpitSjG7beqC2OnBXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0MT4ZmZmZm8G3M8ScWF0b4GnfabIaIZgTzl(mZmZmdpih9mjcioB0MT4ZmZmZm8Ga9fkcioB0MT4ZmZmZm8GCbfUcWF0b4GT2pFicioB0aEXNzMzMz4bVn5zfG)OdWbBTF(qeqC2OnBXNzMzMz4bXKZg(zjHaIZgTzl(mZmZmdpixqHRa8hDaoymN8WoGaIZgTzl(mZmZmdp4TjpRa8hDaoymN8WoGaIZgTzl(mZmZmdpid)SZ3FcoHiG4SrB2IpZmZmZWdYK(5eIaIZgnGx8zMzMzgEW1tGqngc)yDqraXzJ2SfFMzMzMHhet)ZNdzraXzJgWl(mZmZmdp46ypiitCMebeNnAZw8zMzMzgEqg(rhqaXzJgWl(mZmgyXNzMTAfMc)uSnmZOeZXM6ZmZWJ5JZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4Srd4fFMzMzMHhKj2eW9acioB0MT4ZmZmZSvRyi8J1b1yYvI9gXNzMzMz4b5ckCfG)OdWbBkacebeNnAaV4ZmZmZm8G3M8ScWF0b4GnfabIaIZgnGx8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4Srd4fFMzMzMHhetoB4NLecioB0aEXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4Srd4fFMzMzMHhKHF257pbNqeqC2OnBXNzMzMz4bzs)CcraXzJ2SfFMzMzMHhC9eiuJHWpwhueqC2OnBXNzMzMz4bX0)85qweqC2OnBXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0MT4ZmZyGfFMz2QvmX(t6J6ZmZWJzHZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0aEXNzMzMz4bXK9NcbXzJ2SfFMzMzMHhKj2eW9acioB0aEXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0aEXNzMzMz4bVn5zfG)OdWbBkacebeNnAZw8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAZw8zMzMzgEqUGcxb4p6aCWyo5HDabeNnAZw8zMzMzgEWBtEwb4p6aCWyo5HDabeNnAZw8zMzMzgEqg(zNV)eCcraXzJ2SfFMzMzMHhKj9ZjebeNnAaV4ZmZmZm8GRNaHAme(X6GIaIZgnGx8zMzMzgEqm9pFoKfbeNnAaV4ZmZmZm8GRJ9GGmXzseqC2OnBXNzMzMz4bz4hDabeNnAZw8zMzmWIpZmB1Q1(Nd9zMz4XSXzJgd6ZmZmZSvRMclPdRXKRe7nIpZmZmZWdUU9HInioB0aEXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4SrB2IpZmZmZWdYeBc4EabeNnAZw8zMzMz2Qvme(X6GAm5kXEJ4ZmZmZm8GCbfUcWF0b4GnfabIaIZgTzl(mZmZmdp4TjpRa8hDaoytbqGiG4SrB2IpZmZmZWdYrptIaIZgTzl(mZmZmdpiqFHIaIZgTzl(mZmZmdpixqHRa8hDaoyR9ZhIaIZgTzl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2OnBXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4SrB2IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2OnBXNzMzMz4bX0)85qweqC2Ob8IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2Ob8IpZmJbw8zMzRwXWp7(WNR(mZm8CK4SrJb9zMzMz2QvtHL0H1yYvI9gXNzMzMz4bx3(qXgeNnAaV4ZmZmZm8GCd)uSHSG4SrB2IpZmZmZWdU2pXgeNnAZw8zMzMzgEqmz)PqqC2OnBXNzMzMz4bzInbCpGaIZgTzl(mZmZmB1kgc)yDqnMCLyVr8zMzMzgEqUGcxb4p6aCWMcGaraXzJ2SfFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJ2SfFMzMzMHh82KNva(JoahS1(5draXzJ2SfFMzMzMHhetoB4NLecioB0MT4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0aEXNzMzMz4bVn5zfG)OdWbJ5Kh2beqC2OnBXNzMzMz4bz4ND((tWjebeNnAZw8zMzMzgEqM0pNqeqC2Ob8IpZmZmZWdUEceQXq4hRdkcioB0MT4ZmZmZm8Gy6F(CilcioB0aEXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0aEXNzMXal(mZSvRw7bLR(mZm8apdNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4SrB2IpZmZmZWdYn8tXgYcIZgnGx8zMzMzgEW1(j2G4SrB2IpZmZmZWdIj7pfcIZgnGx8zMzMzgEqMyta3diG4Srd4fFMzMzMTAfdHFSoOgtUsS3i(mZmZmdpixqHRa8hDaoytbqGiG4Srd4fFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJgWl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2Ob8IpZmZmZWdYfu4ka)rhGdgZjpSdiG4Srd4fFMzMzMHh82KNva(JoahmMtEyhqaXzJ2SfFMzMzMHhKHF257pbNqeqC2OnBXNzMzMz4bzs)CcraXzJgWl(mZmZmdp46jqOgdHFSoOiG4Srd4fFMzMzMHhet)ZNdzraXzJ2SfFMzMzMHhCDSheKjotIaIZgTzl(mZmZmdpid)OdiG4SrB2IpZmJbw8zMzRwHPSxed(mZm8admoB0yqFMzMzMTA1uyjDynMCLyVr8zMzMzgEW1TpuSbXzJ2SfFMzMzMHhKB4NInKfeNnAaV4ZmZmZm8GR9tSbXzJ2SfFMzMzMHhet2FkeeNnAZw8zMzMzgEqMyta3diG4SrB2IpZmZmZwTIHWpwhuJjxj2BeFMzMzMHhKlOWva(JoahSPaiqeqC2OnBXNzMzMz4bVn5zfG)OdWbBkacebeNnAZw8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAaV4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0MT4ZmZmZm8G3M8ScWF0b4GXCYd7acioB0MT4ZmZmZm8Gm8ZoF)j4eIaIZgTzl(mZmZmdpit6NticioB0aEXNzMzMz4bxpbc1yi8J1bfbeNnAaV4ZmZmZm8Gy6F(CilcioB0aEXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0MT4ZmZyGfFMz2QvykK0b1a8fkfY6ZmZWd8AGZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJgWl(mZmZmdp4A)eBqC2OnBXNzMzMz4bXK9NcbXzJ2SfFMzMzMHhKj2eW9acioB0MT4ZmZmZSvRyi8J1b1yYvI9gXNzMzMz4b5ckCfG)OdWbBkacebeNnAaV4ZmZmZm8G3M8ScWF0b4GnfabIaIZgTzl(mZmZmdpih9mjcioB0MT4ZmZmZm8Ga9fkcioB0MT4ZmZmZm8GCbfUcWF0b4GT2pFicioB0MT4ZmZmZm8G3M8ScWF0b4GT2pFicioB0MT4ZmZmZm8GyYzd)SKqaXzJ2SfFMzMzMHhKlOWva(JoahmMtEyhqaXzJgWl(mZmZmdp4TjpRa8hDaoymN8WoGaIZgTzl(mZmZmdpid)SZ3FcoHiG4Srd4fFMzMzMHhKj9ZjebeNnAZw8zMzMzgEW1tGqngc)yDqraXzJgWl(mZmZmdpiM(NphYIaIZgTzl(mZmZmdp46ypiitCMebeNnAZw8zMzMzgEqg(rhqaXzJ2SfFMzgdS4Jb89Vy)CaIYjga6R)MGY46o7dlInAmOpZmdeid41yn5ZJhh5ah5ah5a4ITALHjNdRpZmdeid41yn5ZJhpE84XJh4ITALTUdjshuFMzgiqgWRXAYNhpGH84nBg4ITALH5fL)HePdQpZmdeid41yn5ZJ3SzywZggaxSvRSP6Nf6ZmZabYaEnwt(849XCyoGCieCXwTY4ySi47ZmZabYaEnwt(84XJhM9SzZaxSvRmUHZHOdFwg9zMzGazaVgRjFE8Gy(85JzpdCXwTYMclLG3Np1NzMbcKb8ASM85XB2m(85XdCXwTYamKGDFoK8XaKPKPKzszjMphYs(gzMugXcsMj)le6HezMiyFMKlOKzIG9zsUGof(ucoHKzY)cHEiXbkJybjZeH(PWlSg(uizM8XgYNRKzc5eIsjZK)fc9qImZvRmU5cxUXHPkhpfmDQ0hVlu(uId69)EJq)uiYIbbWNzM9Vy)CaIYjg)9gH(PqeB0(7nc9tHi(8zMz7d))22NdDAuEhB0aAiL7ZHonkVZDa8zMz)l2phGOCIbpInfYYeYYjbFiqI9c9((COtJY7aGpZmB1kBD7dcK7ZHEhaFMzglKEXIAu2lOpi6GpYmHCcrPiKzYnx4Ynomv54PGPtLKzY)cHEiXbSjgGKzsjibhitjZKcbekWyYHaLsM5uDAGgW3iZCF(dKVrMj9VHO01G8nYmjDTPeKVrMsMsMj9VHOuY3iZK01Msq(gzkzkzMde84rW)AtzK8nYmjDTPeKVrMsMsMj7NpK8nYmjDTPeKVrMsMsMj7zdjFJmtsxBkb5BKPKPKzY7ZNsCqjFJmtsxBkb5BKPKPKzsGoN9CHf5BKzs6AtjiFJmLmLmtS4el6FdrPKVrMjPRnLG8nYuYuYuYmjqPqw0)EQHSiehuYafMJmt0ls3yjMphYIqgOaMmtw4CId6ngXcsMjb)dkzMuiGqbMmtmdqjZKcbekWR7Gs)eOKGOuYm5cM3BmNgt5yYmjgiZeZqGco5uUOhUph608pOKzsHacf41FqPKzYXacwSqeKj)msMj)ZzpCMe9geqOCm6FInCG8eKzsGsq5ac9ZsHdKbkGjZK)5ShotIsEcYuYuYm5Kmqb8AUgatMsMma \ No newline at end of file diff --git a/LegionWA/NewAutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua similarity index 100% rename from LegionWA/NewAutoLoot/Init.lua rename to LegionWA/AutoLoot/Init.lua diff --git a/LegionWA/AutoVendor/Export b/LegionWA/AutoVendor/Export index e69de29..f39c7ad 100644 --- a/LegionWA/AutoVendor/Export +++ b/LegionWA/AutoVendor/Export @@ -0,0 +1 @@ +dif1EaqickXIOkEKcuvxIaLyukYPuOxjjQAwkQBPcSlQKHjvvhJGSmcKNPaAAQqDnQuPTPaLVrLIghbL6CsvPwhbL07iqPMNcuL7rQ6GQsyHQq6HuPQjQkrxubzJkaFuvsJusKojPYkvvVubQmtvPUjbk2jvj)ufIHsLkokbvlLkL8uQQPQIUQuvITsGQVsLsDwQuWBLQsAUeuCxjrL9kXFPk1GrhwOfRG6XQ0KLkxw0MLuFwvmAjHttYQPsHETuvmBb3Mk2Ts)MOHljDCvqwUuEoPmDkxNqBNa(UkOgVcKZlvz9eOKEVKOCFjrSF4IqLZIFSCwSIVwXxqUCxxcjOIVtXVR43vol(d6i11APv86a384(l(9osDTwAfVC3b2FXpEnLa5zt98KnbJSllEDGq9x81QgVzXR(l(Q1Y2gdcE20uYT41al(AzO2DKQ1k(NhXDEp0aol(XG6zl(VhAaNf)ks1tfwzah7U9pWbR)b23csqdCGUPB23cQuFWXdwXpiJDLZIVAFAsXQLZIVJyWuLZIvSIVfd5ALZIVJyWuLZIvSIFNQUwDfdwVYzX3rmyQYzXkwXVfVz5S47igmv5SyfR4xhVMsULZIVJyWuLZIvSIFvbQAXqUw5S47igmv5SyfR43KHSCw8DedMQCwSIv8f1sVVHOMwz4IVfd5AcQCw8DedMQCwSIvSIFCvorllhT43YhLCp7vnl(D92OJ6(0KIvl(5GQg3USRC0IV1uppzRCw81QqE4JSfFTkKh(i7lUMsGSyfFvxXxy5fIMuWZTt2k(Dkn3O4EnLazXpgcf)v05SPEEYMwXlHk(QvzERzXMLDfVeQ4FyvNvrzah7U9pWbRFHCt38yHT7ESqhFCP(GJhSIv8VLZIxcvol(woitObixZxjynlEjO(l(XRPeipBQNNSjyKDzXRdeQ)IF8Ak5Qvol(AwSzLZIFN0BNutl(KLHlwXxTkRCw87KEFf1mPt5Of)ROMjDk(b5nga7YHfFa1dwhdAj(b5ngavx5(sLw1qS3lfBrtjxq9GdeF8dYBmawlUxtjxWN00zPZB12NPRCTOAZ2mOwqAJ4dccc2stSTGAziV2KBod(AAUxUwuTztNLo62A50vUwuTzBguliTXr8ZTd)G8gdG1I71uYf8jnDw6iCX4AkR30vUwuTzBguliTr8bbbbBPj2wqTmKxBsqZGVMM7LRfvB20zPJUTwoDLRfvB2Mb1csBCe)C7WpiVXayT4EnLCbFstNLoEfDYPRCTOAZ2mOwqAJ4dccc2stSTGAziV2KqZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S05Sx1C6kxlQ2SndQfK2i(GGGGT0eBlOwgYRnnyZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S0XxCyRx1C6kxlQ2SndQfK2i(GGGGT0eBlOwgYRn5MZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S05DkqgMUY1IQnBZGAbPnIpiiiylnX2cQLH8Athpd(AA6S0r3wlNEstNLoVvBFMUY1IQnBZGAbPnooIFUD4hK3yaSwCVMsUGpPPZshbpgeZPRCTOAZ2mOwqAJ4dccc2stSTGAziV2Kqcnd(AA6S0r3wlNEstNLoVvBFMUY1IQnBZGAbPnooIFUD4hK3yaSwCVMsUGpPPZshHlgdkR30vUwuTzBguliTr8bbbbBPj2wqTmKxBAGZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S0zOdjQQ(wEJMsUtx5Ar1MTzqTG0gXheeeSLMyBb1YqETP(Eg8100zPJUTwo9KMolDER2(mDLRfvB2Mb1csBCCe)C7WpiVXayT4EnLCbFstNLo6UYD6kxlQ2SndQfK2i(GGGGT0eBlOwgYRnju)ZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tAhvTDN9QMtx5Ar1MTzqTG0gXheeeSLMyBb1YqETjHoEg8100zPJUTwo9KMolDER2(mDLRfvB2Mb1csBCCe)C7WhF8XpiVXa4tl2BaQGLnq9Gvg(GGGG5ghoKDG6bTMyoJpiiiyTkyzdupyT4EnLCN0Yq9m4vUwuTzBguliTr8bbbbbbbbv1GtAzO2vUXHdz3iOvrU4dcccccccccccgfBrVZvaxD5WIpVLptEETf7bwRcw2eSbVY1IQnBG6b9a6Yf4vUwuTzd0LlqpZGAbPbQh0dOlxGAbPnIpiiiiiiiiiiiyqEJbqLLocxmguwpq9GpPPZshHlgdkR30vUwuTzBguliTr8bbbbbbbbbbbbv1GtklDeUymOSEGXTduzPJWfJbL1duVEW(hbTkYfFqqqqqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYZRTypWAvWYgy1OMMNr8bbbbbbbbbbbbbbbbBPj2wqRjM4dcccccccccccMBh(GGGGGGGG52HpiiiyUD4xj4hK3ya8jJTbOcw2a1dwz4dcccMBC4q2bQh0AI5m(GGGGQGaHZkAPwfYqhOEqHT72)m(GGGGAziCuzcQhSog0Yz8bbbbRvblBG6bRf3RPK7KwgQNbVY1IQnBZGAbPnIpiiiiiiiOQgCsld1UYnoCi7gbTkYfFqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYZRzSbwRcw2eSbVY1IQnBG6b9a6Yf4vUwuTzd0LlqpZGAbPbQh0dOlxGAbPnIpiiiiiiiiiiiyqEJbqLLoVtbYaOEWN00zPZ7uGmmDLRfvB2Mb1csBeFqqqqqqqqqqqWG8gdGklDoQA7o7vnb1d(K2rvB3zVQ50vUwuTzBguliTr8bbbbbbbbbbbbdYBmaQS05Sx1eup4tA6S05Sx1C6kxlQ2SndQfK2i(GGGGGGGGGGGGb5ngavw6m0HevvFlVG6bFstNLodDirv13YB0uYD6kxlQ2SndQfK2i(GGGGGGGGGGGGQAWjLLoN9QMGXTduzPZqhsuv9T8cg3o8bbbbbbbbbbbbNuw6C2RAcQxpONx0CKnp4dccccccccccckBGklDo7vnb1Rh0JBNXQY1d(GGGGGGGGGGGGYgOYsNHoKOQ6B5fuVEqp68sWpDdUZqEpaDE96qULh8bbbbbbbbbbbbLnqLLodDirv13YlOE9GE05LGF6gCNH8(0T051GBOtp4dccccccccccckBGklDg6qIQQVLxq96b9OZlb)0n4od5T7FFKxm48GpiiiiiiiiiiiOSbQS0zOdjQQ(wEb1Rh0JoVe8t3G7mK3EnK7hCEgXheeeeeeeeeeemUDGklDENcKbW42bQS05OQT7Sx1emUDGklDENcKbWbpqTmu7sfeiCwrl1Qqg6aJBh4KYsNJQ2UZEvtq96bfcu2a1YqTlTmeoQmhhbTkYfFqqqqqqqqqqqqqqqWQn1AtpPPZshVIo50vUwuTzBguliTXr8bbbbbbbbbbbbbbbbR2uRn9KMolDENcKHPRCTOAZ2mOwqAJJ4dcccccccccccccccgfBrVZvaxD5WIpVLptEEnJnWAvWYgy1OMMNr8bbbbbbbbbbbbbbbbBPj2wqRjM4dcccccccccccMBh(GGGGGGGG52HpiiiyUD4xj4JFqEJbWAX9Ak5c2j9Zqy6kxlQ2SndQfK2i(GGGGb5ngavw6O7kxq9GpPPZshDx5oDLRfvB2Mb1csBeFqqqWG8gdGklD8k6KG6bFstNLoEfDYPRCTOAZ2mOwqAJ4dcccgK3yauzPJWfJRPSEG6bFstNLocxmUMY6nDLRfvB2Mb1csBeFqqqWG8gdGklDeUymOSEG6bFstNLocxmguwVPRCTOAZ2mOwqAJ4JpiiiyuSf9oxbC1Ldl(8w(m55LT4Hv7dO6kxWAzd0dOlxGklD8k6KGUCb6b8WkRcWdjgdkRhOhqxUavw6iCXyqz9gXheeemiVXa4gDs3wzv4Ezq2a1d6PV6b0LlWOyl6DUc46qIXGY65Ezq206RklDeUymOSEGvEqHQCGUCbQS0XROtc6YfONkNWiKGoU5bFqqqWG8gdGB0jDBLvHWfJRPSEG6b3Ot62kRc3ldYgOlxGEahKhqxUavw6iCX4AkRh(4dcccgfBrVZvaxD5WIpVLptEEHMM6zv7d4gDspGUCbUrN0TvwfcxmUMY6nIpiiiyuSf9oxbCfdbnlAPwFDWpk2IENRaUIHGMfTudSYdkuLdupyLHpiiiiiiiOwfYddQh0AI5m(GGGGGGGG3kI7t2bQh0AI5m(GGGGGGGGQTlheOEWxt7u5KtJZ4dccccccc2snzZa1dAnXCgF8bbbbbbbbvx5cQhuzPJURCNXheeeeeeeCJojOEWn6KUTYQq4IX1uwVz8bbbbbbbbJosX1a1dQS0r4IX1uwVz8XheeeeeeeSAt(0snTZEvtq9GEmLt25zgFqqqqqqqWCqvvTOPK7PYjb1d(AANkNCAeSYdQUY9LkTQHyVxk2IMsUZ4dccccccc2j2IMsUG6bvx5(sLw1qS3lfBrtj3z8bbbbbbbbJIMSsvDjOEqRjMZ4dcccwj4JpiiiyFrlDVCTOAZMolDMUY1IQnBZGAbPnIFUD4Jp(rXw07CfWvTkyzZpBcOUjOEWkdFqqqWAvWYMgOEWkdFqqqqqqqWNwS3aublBZ4dccccccc(KX2aublBZ4dcccwjZ4dcccQfKM2P8TuAG6bRSkzgFqqqWM4cQhSwCVMsUtAzOEg8kxlQ2SndQfK2i(GGGGGGGGrXw07CfWvxoS4ZB5ZKNbOcw2u7dOYshq1cELRfvB2a1d6b0LlWRCTOAZgOlxGEMb1csdupOhqxUa1csd0LlqpUC5YZi(GGGGGGGGQAWPvAGpPPZsN3QTptx5Ar1MTzqTG0ghbTkYfFqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYJFqAGPtvRNNr8bbbbbbbbbbbbBPj2w8bbbbbbbbZTdFqqqqqqqWAzdSpZG1QGLnq1cwnQAAtAzO2vTkyztBeStIpiiiiiiiiiiiOQgCQwfSSjSwRcw2MUY1IQnBZGAbPnocAvKl(GGGGGGGGGGGGGGGGDs)meMUY1IQnBZGAbPnIpiiiiiiiiiiiiiiiylnX2IpiiiiiiiiiiiyUD4dcccccccMBh(GGGG52HFLGp(rXw07CfWvxoS4ZB5dOEWAX9Ak5ojh2noIpiiiOQgCQlhw8ze0Qix8bbbbbbbbR2uRn9AANkNCACeFqqqqqqqWxMcCkLbnVFPOt1j5WUXr8bbbbbbbbR2uRnnIpiiiyUD4NBh(4hfBrVZvaxhsmguwp3ldYMgOEWkdFqqqqpcJqc64BDDF313D9DNNzWdoa0DKYg(GGGGEegHe0X36666666ApZGhCaO7LooYfFqqqqpcJqc64BDTqzDD)97zg8Gda7l7v64ix8bbbb9imcjOJV1193VB2FxNNzWdoa0TITeFqqqqpcJqc64BDDCGd0DZ0Zm4bhaouv1fFqqqqpcJqc64BDDDTWU)(73Zm4bha(oFYTl26HpiiiOhHribD8TUohS7vy3VNzWdoa8fntvhVg(GGGGEegHe0X366(7)ERR9mdEWbGvAQAbP0b)kPyfR4RwlBBmi4zttj3IxdS4Bn1Zt2kNfFRx1S4Ff1mPtX)kQzshVTEvZIVMfTuSAx0YI)vuZKoExHQll(MYj7k(3kYBFk(Pa5Af)ROMjDk(hCaOGzi3Y9v6l860B)k9iUn(1I71uYDkgcAw0sTzWCeFqqqWOyl6DUc4kgcAw0snq9GXqqZIwQHp(GGGGQAq3hxbt2UvexZTYQrvBAeuVEqRjMGwf5c6wz1OQ9IqqNLoAtJG52Hp(GGGG1Yg4vUwuTzdupy)ZGhd2jXheeeeeeeSw2a1csdupOqZGVMM7LRfvB28s0XpinTPRCTOAZ2iyNeFqqqqqqqqqqqWOyl6DUc4QwfSS5Nnbu3uyTjUtx5Ar1MTzqTG0gXheeeeeeem3o8bbbbZTdFqqqWwAITf0AIj(52HFXpfixtR4lygYTCFL(cVo92VspIBx81QqE4JSfFTkKh(i7lUMsGSyf)UulAITOLLJw8TCqMqUJuTwX3T09ALEw8dYyx5S4R2NMuSA5S47igmv5SyfR4BXqUw5S47igmv5SyfR43PQRvxXG1RCw8DedMQCwSIv8BYqwol(oIbtvolwXk(1XRPKB5S47igmv5SyfR4xvGQwmKRvol(oIbtvolwXk(T4nlNfFhXGPkNfRyfFlgY1eu5S47igmv5SyfRyfFlhKj0aKRv8hAqvBPM2HJ9k(ROZzt98KnTIxcv8B5JsUN9QMfF1vUf)oLMBuCVMsGS4hdHIVLdYeQ4lyzl(QUIVWYlenPGNBNSP7k3I)vkdDYdVN5GSH24WHSRmCXxTkZBnl2SSR4Lqf)Rug6KhEldx8TCqMqUxUwuTo5Af)J0xo919YHkwXk(cu8sOJfKqfRuaa \ No newline at end of file diff --git a/LegionWA/NewAutoLoot/Export b/LegionWA/NewAutoLoot/Export deleted file mode 100644 index 931d202..0000000 --- a/LegionWA/NewAutoLoot/Export +++ /dev/null @@ -1 +0,0 @@ -dq11IbqiejuTiv1JqKaxcrcLrPK6uQcRcLuXRuOs1SuKBPOAxqOHPOCmiQLPkcptvuLPHsQ6AkjeBdLuIVHskvJdrICofQuwNQi6Dkju3dv2hIe1bviAHOKIhQKOjcb1fvOIncb8riqJujPtQqALQ0lrKqMjkv3uHQ2jIu9tfcdfcYrvfPLQqL8uLOPcrUkkPu2Qsc(kIIZIsQ0BHI5QkQQ7cL2lI4VOKmy5WawmkLhJQAYk4YG2mQYNvcJgQ40iSAusj9AeLMTsDBOQDdPFRIHdv64QIklhfphOPJ01vL2okX3vOmEvr58iQwVscP3JiP5JibDFePSFAsqMeKizjEswoqYYbsqIKLu4ZOiJahu6sIvuijK(tmJKLdeGSwFr5tjybsYsG9MKLa8PeSarIHyXciZ4pdqsi95ipJKLa8PehuqsqIKLGuagkjirYYHdRWdbbbwajHnsOKSKaLGscsKSC4Wk(VG0dEsynKSK)li9GNKL7dFGTnaz7DHXz8a2GqV7dFGTrW)GIWeG4UbihHFzaOehuJZEEE9oFUrqH4jDa8WjJGcXZobkzNmcke)tFb2euYNmckep7qwG7jJGcXpEcu2HSa3tgbfIhjYXfozeui(LVSHe54cNiOq8lPa8j7kpVO0jJGcXpop3lbUSF4pzeuiEKGpJ(YaNmq4EJqme8Htg)nai4Oi8Kb(Yg)nai4Oi8KXgb6asKJlCc(mCb4pkcpzGq6Oi8KraUsgaEuc0fJliWcik14meeshLcXpkkVZAW9H(W7852(COJY)Goz7ZHs6a4Ht2(COp9faLsqjFY4)YWar5t(Oi8KTph6tFb2euYNS9HpzHdtgb4tFHG0rPq8t2Z9cbPJIWtgb4i5tjybACgccPSFo0L7dDuuEN1G7d9H35Zn2jqjRbEWdPe4HG2WbcAOhQn2HHSE3h(aBJ3lkFkXb1waPJsH4zNaLSRb3h6dVMzgdK(YGAiiKY(5qxUpu2jqj7AW9H(WleDW7(WhyB8Er5tjoO2ciDukepPdGhUgCFOp8AMzmq6ldQbc3q(01pXKHGqk7NdD5(qhfL3zn4(qF8WleDW7(WhyB8Er5tjoO2ciDukepsKJlCn4(qF41mZyG0xgudeUH8PRzTmziiKokfIFuuEN1lG0rPq8StGs21G7d9XJhEHOdE3h(aBJ3lkFkXb1waPJsH4x(YgLCCHRb3h6dVMzgdK(YGAGWnKpDnR9jdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDukep7qwG71G7d9HxZmJbsFzqnq4gYNUM1pziiKokfIFuuEN1lG0rPq8StGs21G7d9XJhEHOdE3h(aBJ3lkFkXb1waPJsH4xbG9lCn4(qF41mZyG0xgudeUH8PRrg5jdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDuke)tFbqPeuYxdUp0hEnZmgi9Lb1aHBiF66N3KHGqk7NdD5(qhfL3zn4(qF8WleDW7(WhyB8Er5tjoO2ciDuke)tFb2euYxdUp0hEnZmgi9Lb1aHBiF66N3KHGq6Oui(rr5DwVashLcXZobkzxdUp0hpE4fIo4DF4dSnEVO8PehuBbKokfIFCEUxcCz)WhGsCqxdUp0hEnZmgi9Lb1aHBiF66XTjdbH0rPq8JIY7SEbKokfINDcuYUgCFOpE8WleDW7(WhyB8Er5tjoO2ciDuke)O8pORb3h6dVMzgdK(YGAGWnKpDnYZMmeeshLcXpkkVZ6fq6OuiE2jqj7AW9H(4XdVq0bVE9Up8b22WH9ZHACgVxu(uId6AW9H(WRzMb8YaWkiklioaz7Db7NfR)SFouc0fg4(qFs7BiIObUp0hEnZm2ph6Y9HUgCFOp861mZ2h(aBJGcXpk)dQXzlG0rPq8JY)GUgCFOp8AMz7dFGTrqH4jDa8qJZwaPJsH4jDa8W1G7d9HxZmBF4dSncke)tFbqPeuYnoBbKokfI)PVaOuck5Rb3h6dVMz2(WhyBeui(N(cSjOKBC2ciDuke)tFb2euYxdUp0hE9AMzaVmaScIYcIdq2ExW(zX6pcZamgb6cJG)b14DySVHiIgbfIN0bWdner0(2yeuCSN7fytqj3(gIiAeui(N(cSjOK)WRzMTp8b2gkaEiziO4SYZ(WyC2hZ3qerd4LbGvquwq85Eb2euYx5zFyaXqqH4F6lWMGsUnUBiJ1qerJGcXt6a4HgIiAFSpFKFcwpZ3RzMTp8b2gkaEiziO480xaukbLCJZqbWdjdbfNvE2hgdreTV9SVHiIgbfI)PVaOuck5E9AMzaVmaScIYcIdq2ExW(zX6)ibbjwGsGUWqbWd)gIiAOa4HKHGIZtFbqPeuYF41mZaEzayfeLfeb2BqkafcIHuaWldaRGOSGiWEdsbOqqBC3qgRXzKQxZmZmZaX5mMXzuMx4KxZmZmZ4Jda6c4GXzuMx4KxZmZmZiqhGpZ4meesrIapC9JjVMzMzMXabpmuJZOmVWjVEnZmZmJG)b14mcke)O8pOtEnZmZmdfap04mua8qYqqX5PVaOuck5tEnZmZmda)5fLACgbfI)PVaOuck5tE9AMzMzgUmNfmqqqKihxOXzFkbE4WFYRzMzMzWNHlbdaL4GIebEOXziiKIebE46h24UrW)GIWeG4UbihHFzaOeh0jVMzMzMn8YaqjoOgNrW)GIWeG4UbihHFzaOeh0jVMzMzMb8spRsmanoJY8cN8AMzKMxi6GxVE3h(aBBXzpGaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMz8i2uiJXz8Er5tjoORbHBEtg4(qF41mZmZmcE2Aq4MhIqua22WHhgfhiQxZmZmZmZmGxgawbrzbXbiBVly)Sy9hbp7bJhXMczwXg4(qFs7BiIObUp0hEnZmZmZmZ2h(aBJGcXt6a4HgNTashLcXt6a4HRb3h6dVMzMzMzMze8S1euiEua8qdaDWiOq8KoaE4tIhGYhN1FsXgg3T1i4zpqkKu4sInlqgsHKcx5bxCHmp(pEyuCGOEnZmZmZmZmZmGxgawbrzbXbiBVly)Sy9hbp7bJhXMczmCbab)p8AMzMzMzMzMzmq6ldQrzEHEnZmZmZmZGOdEnZmZmdIo41mZGOdEjnV7dFGTDygGmJli45LHpeebi2uiJXzKQxZmdIcW2goyCgL5fo51mZ4rSPqgJZ49IYNsCqxdc38MmW9H(WRzMzMze8S1GWnpeHOaSTHdpmkoquVMzMzMzMzaVmaScIYcIdq2ExW(zX6)4ccEEz4dnEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckepPdGhAC2ciDukepPdGhUgCFOp8AMzMzMzMrWZwtqH4jDa8qdaDWiOq8KoaE4tIhGYhN1)rWmazSXfe88YWhc(F8WO4ar9AMzMzMzMzMzaVmaScIYcIdq2ExW(zX6)iygGmgde88YWhA8i2uiJHlai4)HxZmZmZmZmZmJbsFzqnkZl0RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSn8NxukcqSPqgJZivVMzgefGTnCW4mkZlCYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1)XFErPgpInfYSInW9H(K23qerdCFOp8AMzMzMzMTp8b2gbfIhjYXfAC2ciDukepsKJlCn4(qF41mZmZmZmJGNTMGcXJe54cna0bJGcXJe54cnoo7p(Zlk9)WO4ar9AMzMzMzMzMzaVmaScIYcIdq2ExW(zX6)4pVOuJhXMczmCbab)p8AMzMzMzMzMzmq6ldQrzEHEnZmZmZmZGOdEnZmZmdIo41mZGOdEjnV7dFGTrSzzJaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMzeBw2iHddeeNZEW4msjsPztEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(pk7SSnEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckep7qwGBJZwaPJsH4zhYcCVgCFOp8AMzMzMzMrWZwtqH4zhYcCBaOdgbfINDilWTrkBGWnpej2SSrchgiioN9WdJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)JsH4TnKf424rSPqgdxaqW)dVMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmi6GxZmZmZGOdEnZmi6GxsZ7(WhyB4YC4bbbjoOiaXMczmoJu9AMzqua22WbJZOmVWjVMzgoqg2anoJY8cN8AMz83hkogNXdydcN8AMzhgOXz8a2GWjVMz2gcqXbYyCgpGniCYRzMX)Cilb6cJZ4bSbHtEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(JqmhEqqqIdQXJytHmRydCFOpP9ner0a3h6dVMzMzMzMz7dFGTrqH4rICCHgNTashLcXJe54cxdUp0hEnZmZmZmZi4zRjOq8iroUqdaDWiOq8iroUqJJZ(iXamabjlXE)FyuCGOEnZmZmZmZmZS9HpW2iOq8lFzJsoUqJZwaPJsH4x(YgLCCHRb3h6dVMzMzMzMzMzgbpBnbfIF5lBuYXfAaOd2Acke)Yx2OKJl044S)Qqg2(ga6Gbc38qehidBGp8AMzMzMzMzMzhgBnbfIF5lBuYXfACC2NDiafhiZ3aqhmq4MhIBiafhiZdVMzMzMzMzMz2HXwtqH4x(YgLCCHghN9x5(qX5BaOdgiCZdr(7dfNhEnZmZmZmZmZSdJTMGcXV8Lnk54cnoo7pcg43aqhmq4MhIhg4dVMzMzMzMzMz2HXwtqH4x(YgLCCHghN9x55qwc0fFdaDWaHBEiY)Cilb6IhpmkoquVMzMzMzMzMzMzMb8YaWkiklioaz7Db7NfR)ieZHheeK4GA8i2uiJHlai4)HxZmZmZmZmZmZmZyG0xguJY8c9AMzMzMzMzMzq0bVMzMzMzMzq0bVMzMzMbrh8AMzq0bVKM39HpW2yby)craInfYyCgP61mZGOaSTHdgNrzEHtEnZmwa2VqKWHbcIZzpyC2ZBfXyDmKNnZyDmKNnBYRzMbGlUBYrchgiioN9asNrPq8lPa8jRXz8a2GWjVMzgpInfYyCgVxu(uId6Aq4M3KbUp0hEnZmZmJGNTgeU5HiefGTnC4HrXbI61mZmZmZmd4LbGvquwqCaY27c2plw)xbG9l04rSPqMvSbUp0N0(gIiAG7d9HxZmZmZmZS9HpW2iOq8RaW(fAC2ciDuke)kaSFHRb3h6dVEnZmZmZmZi4zRbHBEicGlUBYrchgiioN9asNrPq8lPa8j7dJIde1RzMzMzMzMzMTp8b2gbfI)PVaOuck5gNTashLcX)0xaukbL81G7d9HxZmZmZmZmZmd4LbGvquwqCaY27c2plw)rchid0GpJaKAFdrencke)tFbqPeuYner0(gbfIh0iqnW9HAFdrenW9H(WRzMzMzMzMzMrqH4xbG9l04mcke)kaSFHgRJrqH4F6lakLGsUxZmZmZmZmi6GxVMzMzMzMze8S1eui(vay)cna0bJGcXVca7xOrkBGWnpezby)crchgiioN9WdJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)RaW(fA8i2uiJHlai4)HxZmZmZmZmZmJbsFzqnkZl0RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSTfmqYxbG9lebi2uiJXzKQxZmdIcW2goyCgL5fo51mZMp3wcPgfhgiioN9Grp2mJES95qnG92wWajh0RzMXcW(fIeomqqCo7bJZwrmwhd5zZmwhd5zZM8AMza4I7MCKWHbcIZzpG0zuke)skaFYACgpGniCYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1FeKbsUXcW(fA8i2uiZk2a3h6tAFdrenW9H(WRzMzMzMz2(WhyBeui(N(cSjOKBC2ciDuke)tFb2euYxdUp0hEnZmZmZmZi4zRjOq8p9fytqj3iLTzpmkoquVMzMzMzMzMz2(WhyBeui(vay)cnoBbKokfIFfa2VW1G7d9HxVMzMzMzMzMzgbpBniCZdraCXDtos4WabX5Shq6mkfIFjfGpzFyuCGOEnZmZmZmZmZmZmBF4dSncke)tFbqPeuYnoBbKokfI)PVaOuck5Rb3h6dVMzMzMzMzMzMzMb8YaWkiklioaz7Db7NfR)iHdKbAWNrasTVHiIgbfI)PVaOuck5gIiAFJGcXdAeOg4(qTVHiIg4(qF41mZmZmZmZmZmZmcke)kaSFHgNrqH4xbG9l0yDmcke)tFbqPeuY9AMzMzMzMzMzq0bVEnZmZmZmZmZmcE2Acke)kaSFHga6GrqH4xbG9l0iLnq4MhISaSFHiHddeeNZE4HrXbI61mZmZmZmZmZmZmGxgawbrzbXbiBVly)Sy9hbzGKBSaSFHgpInfYy4cac(F41mZmZmZmZmZmZmgi9Lb1OmVqVMzMzMzMzMzgeDWRzMzMzMzgeDWRzMzMzq0bVMzgeDWlP5DF4dSTN7fcshLcXJaeBkKX4ms1RzMbrbyBdhmoJY8cN8AMz8i2uiJXz8Er5tjoORbHBEtg4(qF41mZmZmcE2Aq4MhIqua22WHhgfhiQxZmZmZmZmGxgawbrzbXbiBVly)Sy9)PVqqQrqH4nEeBkKzfBG7d9jTVHiIg4(qF41mZmZmZmBF4dSnckepsKJl04Sfq6OuiEKihx4AW9H(WRzMzMzMz2(WhyBeui(LVSrjhxOXzlG0rPq8lFzJsoUW1G7d9HxZmZmZmZmcE2AckepsKJl0aqhmcke)Yx2OKJl0aqhmckepsKJl044mcke)Yx2OKJl044S)tFHG0)dJIde1RzMzMzMzMzMb8YaWkiklioaz7Db7NfR)p9fcsnckeVXJytHmgUaGG)hEnZmZmZmZmZmgi9Lb1OmVqVMzMzMzMzq0bVMzMzMbrh8AMzq0bVKM39HpW24VbabrqiadcqSPqgJZivVMzgefGTnCW4mkZlCYRzMrSzzJeomqqCo7bJZiLMnBYRzM9CVaBck5iHddeeNZEW4SNyYRzMXJytHmgNX7fLpL4GUgeU5nzG7d9HxZmZmZi4zRbHBEicrbyBdhEyuCGOEnZmZmZmZaEzayfeLfehGS9UG9ZI1)vUbabTfqagJhXMczwXg4(qFs7BiIObUp0hEnZmZmZmZ2h(aBJGcXJe54cnoBbKokfIhjYXfUgCFOp8AMzMzMzMTp8b2gbfIFCEUxcCz)W34Sfq6Oui(X55EjWL9dFakXbDn4(qF41mZmZmZmJGNTMGcXJe54cnoo7psg8hMVxZmZmZmZSdJrqH4rICCHghN9jdea3d63RzMzMzMz2HXiOq8JZZ9sGl7h(ghN9hL0xbKyDrOXHviWOKocooJRVxZmZmZmZSdJrqH4hNN7Lax2p8noo7pkPVciX6IqJdRqACnkPtkACq671mZmZmZm7Wyeui(X55EjWL9dFJJZ(Js6RasSUi04WQvY(igjPOVxZmZmZmZSdJrqH4hNN7Lax2p8noo7pkPVciX6IqJdRi9XzLKI(pmkoquVMzMzMzMzMz2(WhyBeuiE2HSa3gNTashLcXZoKf4En4(qF41mZmZmZmZmZ2h(aBJGcX)0xGnbLCJZwaPJsH4F6lWMGs(AW9H(WRzMzMzMzMzMTp8b2gb448CVe4IlaBBOXzaVmaScIYcIGKLyVbXac3q(01pVjJ1gkbDLBaqW1FC3aKdz(pEGfd4lBuYXfI144mK961mZmZmZmZmZi4zRjahNN7LaxCbyBdna0bJGcXZoKf42iLnq4MhIeBw2iHddeeNZEWaqhmcke)tFb2euYnszdeU5H4Z9cSjOKJeomqqCo7HhgfhiQxZmZmZmZmZmZmZaEzayfeLfehGS9UG9ZI1)vUbabTfqagJhXMczmCbab)p8AMzMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmZmdIo41mZmZmZmdIo41mZmZmi6GxZmdIo4L08Up8b2gWkkKHGcraInfYyCgP61mZGOaSTHdgNrzEHtEnZmInlBKWHbcIZzpyCgP0SztEnZSN7fytqjhjCyGG4C2dgN9etEnZmEeBkKX4mEVO8Peh01GWnVjdCFOp8AMzMzgbpBniCZdrikaBB4WdJIde1RzMzMzMzgWldaRGOSG4aKT3fSFwS(pYvuidbfA8i2uiZk2a3h6tAFdrenW9H(WRzMzMzMz2(WhyBeuiEKihxOXzlG0rPq8iroUW1G7d9HxZmZmZmZS9HpW2iOq8lFzJsoUqJZwaPJsH4x(YgLCCHRb3h6dVMzMzMzMz7dFGTrqH4F6lWMGsUXzlG0rPq8p9fytqjFn4(qF41mZmZmZmJGNTMGcXJe54cna0bJGcXV8Lnk54cna0bJGcX)0xGnbLCdaDWiOq8iroUqJJZ(R8Gc(IhGTn8BaOdgbfIF5lBuYXfACC2FeuCGmFdaDWiOq8p9fytqj3iLnKFyuCGOEnZmZmZmZmZmGxgawbrzbXbiBVly)Sy9FKROqgck04rSPqgdxaqW)dVMzMzMzMzMzgdK(YGAuMxOxZmZmZmZmi6GxZmZmZGOdEnZmi6GxsZRxGxgawbrzbrEeBkKzjKHfc(qJZivVMzgpInfYaACgP61mZmZSfN9acqSPqMjVMzMzMDygGmJli45LHpeebi2uiZKxZmZmZWFErPiaXMczM8AMzMzgXMLncqSPqMjVMzMzMHlZHheeK4GIaeBkKzYRzMzMzSaSFHiaXMczM8AMzMz2cgi5RaW(fIaeBkKzYRzMzMzp3leKokfIhbi2uiZKxZmZmZ4VbabrqiadcqSPqMjVMzMzMbSIcziOqeGytHmEnZmsBYRzMbUpuqKoSFouJZivsBYRzMX8IACgVxu(uId6Aq4M3KTph6OO8op8AMzMzgiCZdrW9HcI0H9ZHACgPsAEnZmZmJ3HXa3h6KrqH4ncudxacgW17ZHokkVZdB441mZmZmZmd4LbGvquwqCaY27c2plw)z)COg4(qFs7BiIObUpudreTV9ner0iOq8isqH4F41mZmZmZmd4LbGvquwqCaY27c2plwVashLcXV8Lnk54cxdUp0hp8AMzMzMzMbc38EsMxueGytHmGRb3h6dVMzMzMbrh861mZmZmGxgawbrzbXbiBVly)Sy9F5(qbn6X2Nd9jTVHiIgPaq4MhIG7dfePd7Nd9HxZmZmZaEzayfeLfehGS9UG9ZI1GWnpeb3hkish2ph6dVMzMzMX7WyegNrkaeU5Hi4(qbr6W(5qNmKNS5iBdhVMzMzMzMz7dFGTbUpuJZaHBEicUpuqKoSFoumey9AMzMzMzMb8YaWkiklioaz7Db7NfR)SFouc0fg4(qT1euida9W84jTVHiIg4(qF41mZmZmZmB4W(5qxdUp0hEnZmZmdIo41mZGOdtEnZmMxueGytHmGgNX7fLpL4GUgeU5nzG7d9HxZmZmZ4DymYoz8i2uiJrGA4cqWaUgeU5HipInfYa(WgoEnZmZmZmZi4zR5rSPqMNKhXMczwdUp0hpmkoquVMzMzMzMzMzgiCZdrW9HcI0H9ZHIHuaiCZdrW9HcI0H9ZHAJ7gYynodCFOEnZmZmZmZmZmgi9Lb1RzMzMzMzgeDWRzMzMzq0bVMzgeDWlP51lWldaRGOSG4aKT3fSFwyCgVxu(uId66dBSwF41mZi4zRhGS9U4HrXbI61mZmZmCziqPRrqifjc8W1pE41mZmZmegYcsNZgKvi8lECxFyJ16dVMzMzMHldbkD9dVMzgeDWleDWRxGxgawbrzbrqYsS3GgNrQEnZS5ZjdaddXHXRzMHbzSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZqEYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XACgYtEnZmZmdZN1Cgd8J14mKN8AMzMzgMpc(Ic(XACgYtEnZmZmdZFeOW5RcGoahSXdWhc(XACgYtEnZmZmdZhPXoZxfaDaoyJhGpe8J14mKN8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZqEYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZqEYRzMzMzy(KbGzXgGGfi4hRXzip51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZqEYRzMzMzy(imWIfqgWpwJZqEYRzMzMzy(RK5acY2zmWpwJZqEYRzMzMzy(KbaDa8J14SztEnZmsBYRzMnFocbSbgiq9AMzyEcSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZqEYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XACgYtEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNH8KxZmZmZW8rASZ8vbqhGd24b4db)ynod5jVMzMzMH5JqNneGbp4hRXzip51mZmZmm)rGcNVka6aCWwo2Hza8J14mKN8AMzMzgMpsJDMVka6aCWwo2Hza8J14mKN8AMzMzgMpzaywSbiybc(XAC2SjVMzMzMH5VKcWce8J14SztEnZmZmdZhbiaPgzGa4Eqb)ynoB2KxZmZmZW8ryGflGmGFSgNnBYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMpF1xukKXRzMH55H14ms1RzMzMzZNpsg8hgBjzj2BqVMzMzMH5VY9HIZhRXzZM8AMzMzgMp7qakoqMpwJZMn51mZmZmm)XdqS)ynod5jVMzMzMH5JqBak8J14SztEnZmZmdZFjoeW9a4hRXzZM8AMzMz285KbcG7b1wswI9g0RzMzMzy(JafoFva0b4GnYNbb)ynod5jVMzMzMH5J0yN5RcGoahSr(mi4hRXzip51mZmZmmFwZzmWpwJZqEYRzMzMzy(i4lk4hRXzip51mZmZmm)rGcNVka6aCWgpaFi4hRXzZM8AMzMzgMpsJDMVka6aCWgpaFi4hRXzZM8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZqEYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZqEYRzMzMzy(KbGzXgGGfi4hRXzZM8AMzMzgM)skalqWpwJZqEYRzMzMzy(iabi1idea3dk4hRXzip51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzip51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMpFCDw8c9AMzyy9ynoJu9AMzMz285JKb)HXwswI9g0RzMzMzy(RCFO48XAC2SjVMzMzMH5ZoeGIdK5J14mKN8AMzMzgM)4bi2FSgNnBYRzMzMzy(i0gGc)ynoB2KxZmZmZW8xIdbCpa(XAC2SjVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XAC2SjVMzMzMH5ZAoJb(XAC2SjVMzMzMH5JGVOGFSgNnBYRzMzMzy(JafoFva0b4GnEa(qWpwJZqEYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNnBYRzMzMzy(KbGzXgGGfi4hRXzZM8AMzMzgM)skalqWpwJZMn51mZmZmmFeGaKAKbcG7bf8J14mKN8AMzMzgMpcdSybKb8J14mKN8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEnZS5Zrigcii1RzMHzfbRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZqEYRzMzMzy(SdbO4az(ynoB2KxZmZmZW8hpaX(J14SztEnZmZmdZhH2au4hRXzZM8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XAC2SjVMzMzMH5J0yN5RcGoahSr(mi4hRXzZM8AMzMzgMpR5mg4hRXzZM8AMzMzgMpc(Ic(XAC2SjVMzMzMH5pcu48vbqhGd24b4db)ynod5jVMzMzMH5J0yN5RcGoahSXdWhc(XAC2SjVMzMzMH5JqNneGbp4hRXzZM8AMzMzgM)iqHZxfaDaoylh7Wma(XAC2SjVMzMzMH5J0yN5RcGoahSLJDyga)ynoB2KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZMn51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzZM8AMzMzgMpzaqha)ynod5jVMzgPn51mZMphHHauCmsrOelWH61mZWWAbRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZMn51mZmZmmF2HauCGmFSgNnBYRzMzMzy(JhGy)XAC2SjVMzMzMH5JqBak8J14mKN8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XACgYtEnZmZmdZhPXoZxfaDaoyJ8zqWpwJZqEYRzMzMzy(SMZyGFSgNnBYRzMzMzy(i4lk4hRXzZM8AMzMzgM)iqHZxfaDaoyJhGpe8J14mKN8AMzMzgMpsJDMVka6aCWgpaFi4hRXzip51mZmZmmFe6SHam4b)ynod5jVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNH8KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNnBYRzMzMzy(iabi1idea3dk4hRXzZM8AMzMzgMpcdSybKb8J14SztEnZmZmdZFLmhqq2oJb(XAC2SjVMzMzMH5tga0bWpwJZMn51mZiTjVMz285lXbapaQxZmddRDSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzip51mZmZmmFeAdqHFSgNnBYRzMzMzy(lXHaUha)ynod5jVMzMzMnFozGa4EqTLKLyVb9AMzMzgM)iqHZxfaDaoyJ8zqWpwJZqEYRzMzMzy(in2z(QaOdWbBKpdc(XAC2SjVMzMzMH5ZAoJb(XAC2SjVMzMzMH5JGVOGFSgNnBYRzMzMzy(JafoFva0b4GnEa(qWpwJZqEYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNnBYRzMzMzy(in2z(QaOdWbB5yhMbWpwJZMn51mZmZmmFYaWSydqWce8J14SztEnZmZmdZFjfGfi4hRXzip51mZmZmmFeGaKAKbcG7bf8J14mKN8AMzMzgMpcdSybKb8J14mKN8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEnZS5ZhpWcOxZmddPewJZivVMzMzMnF(izWFySLKLyVb9AMzMzgM)k3hkoFSgNH8KxZmZmZW8zhcqXbY8XAC2SjVMzMzMH5pEaI9hRXzZM8AMzMzgMpcTbOWpwJZMn51mZmZmm)L4qa3dGFSgNnBYRzMzMzZNtgiaUhuBjzj2BqVMzMzMH5pcu48vbqhGd2iFge8J14SztEnZmZmdZhPXoZxfaDaoyJ8zqWpwJZMn51mZmZmmFwZzmWpwJZMn51mZmZmmFe8ff8J14SztEnZmZmdZFeOW5RcGoahSXdWhc(XAC2SjVMzMzMH5J0yN5RcGoahSXdWhc(XAC2SjVMzMzMH5JqNneGbp4hRXzZM8AMzMzgM)iqHZxfaDaoylh7Wma(XACgYtEnZmZmdZhPXoZxfaDaoylh7Wma(XAC2SjVMzMzMH5tgaMfBacwGGFSgNnBYRzMzMzy(lPaSab)ynod5jVMzMzMH5JaeGuJmqaCpOGFSgNnBYRzMzMzy(imWIfqgWpwJZqEYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XACgYtEnZmsBYRzMnFozay2h(K1RzMHzCdRXzKQxZmZmZMpFKm4pm2sYsS3GEnZmZmdZFL7dfNpwJZqEYRzMzMzy(SdbO4az(ynoB2KxZmZmZW8hpaX(J14SztEnZmZmdZhH2au4hRXzZM8AMzMzgM)sCiG7bWpwJZMn51mZmZS5Zjdea3dQTKSe7nOxZmZmZW8hbkC(QaOdWbBKpdc(XAC2SjVMzMzMH5J0yN5RcGoahSr(mi4hRXzZM8AMzMzgMpR5mg4hRXzZM8AMzMzgMpc(Ic(XAC2SjVMzMzMH5pcu48vbqhGd24b4db)ynoB2KxZmZmZW8rASZ8vbqhGd24b4db)ynoB2KxZmZmZW8rOZgcWGh8J14SztEnZmZmdZFeOW5RcGoahSLJDyga)ynod5jVMzMzMH5J0yN5RcGoahSLJDyga)ynoB2KxZmZmZW8jdaZInablqWpwJZMn51mZmZmm)LuawGGFSgNH8KxZmZmZW8racqQrgiaUhuWpwJZMn51mZmZmmFegyXcid4hRXzip51mZmZmm)vYCabz7mg4hRXzZM8AMzMzgMpzaqha)ynod5jVMzgPn51mZMpF8huY61mZWG8mSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XACgYtEnZmZmdZF8ae7pwJZMn51mZmZmmFeAdqHFSgNH8KxZmZmZW8xIdbCpa(XACgYtEnZmZmB(CYabW9GAljlXEd61mZmZmm)rGcNVka6aCWg5ZGGFSgNH8KxZmZmZW8rASZ8vbqhGd2iFge8J14SztEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNH8KxZmZmZW8rASZ8vbqhGd24b4db)ynoB2KxZmZmZW8rOZgcWGh8J14mKN8AMzMzgM)iqHZxfaDaoylh7Wma(XACgYtEnZmZmdZhPXoZxfaDaoylh7Wma(XAC2SjVMzMzMH5tgaMfBacwGGFSgNnBYRzMzMzy(lPaSab)ynod5jVMzMzMH5JaeGuJmqaCpOGFSgNH8KxZmZmZW8ryGflGmGFSgNnBYRzMzMzy(RK5acY2zmWpwJZMn51mZmZmmFYaGoa(XAC2SjVMzgPn51mZMphHzEjg8AMzyqgzSgNrQEnZmZmB(8rYG)WyljlXEd61mZmZmm)vUpuC(ynoB2KxZmZmZW8zhcqXbY8XACgYtEnZmZmdZF8ae7pwJZMn51mZmZmmFeAdqHFSgNnBYRzMzMzy(lXHaUha)ynoB2KxZmZmZMpNmqaCpO2sYsS3GEnZmZmdZFeOW5RcGoahSr(mi4hRXzZM8AMzMzgMpsJDMVka6aCWg5ZGGFSgNnBYRzMzMzy(SMZyGFSgNnBYRzMzMzy(i4lk4hRXzZM8AMzMzgM)iqHZxfaDaoyJhGpe8J14mKN8AMzMzgMpsJDMVka6aCWgpaFi4hRXzZM8AMzMzgMpcD2qag8GFSgNH8KxZmZmZW8hbkC(QaOdWbB5yhMbWpwJZMn51mZmZmmFKg7mFva0b4GTCSdZa4hRXzZM8AMzMzgMpzaywSbiybc(XAC2SjVMzMzMH5VKcWce8J14mKN8AMzMzgMpcqasnYabW9Gc(XACgYtEnZmZmdZhHbwSaYa(XACgYtEnZmZmdZFLmhqq2oJb(XAC2SjVMzMzMH5tga0bWpwJZMn51mZiTjVMz285ime)b1w9fLcz8AMzyq(jWACgP61mZmZS5Zhjd(dJTKSe7nOxZmZmZW8x5(qX5J14SztEnZmZmdZNDiafhiZhRXzip51mZmZmm)XdqS)ynoB2KxZmZmZW8rOnaf(XAC2SjVMzMzMH5Vehc4Ea8J14SztEnZmZmB(CYabW9GAljlXEd61mZmZmm)rGcNVka6aCWg5ZGGFSgNH8KxZmZmZW8rASZ8vbqhGd2iFge8J14SztEnZmZmdZN1Cgd8J14SztEnZmZmdZhbFrb)ynoB2KxZmZmZW8hbkC(QaOdWbB8a8HGFSgNnBYRzMzMzy(in2z(QaOdWbB8a8HGFSgNnBYRzMzMzy(i0zdbyWd(XAC2SjVMzMzMH5pcu48vbqhGd2YXomdGFSgNH8KxZmZmZW8rASZ8vbqhGd2YXomdGFSgNnBYRzMzMzy(KbGzXgGGfi4hRXzip51mZmZmm)LuawGGFSgNnBYRzMzMzy(iabi1idea3dk4hRXzip51mZmZmmFegyXcid4hRXzZM8AMzMzgM)kzoGGSDgd8J14SztEnZmZmdZNmaOdGFSgNnBYRzMrAtEjnVaVmaScIYcIp3lWMGs(kp7ddOXzKQxZm7)8r(jy985XBCByCByCB4pzZNBi05W41mZ(pFKFcwpFE84XJhpE8(t2852kp4XFq9AMz)NpYpbRNppEid5XB2S)KnFUXAdL)bp(dQxZm7)8r(jy985XB2mw7Zgg(t28524cGb61mZ(pFKFcwpFE8aEEpVvei8pzZNBJdUe89AMz)NpYpbRNppE84rknB2S)KnFUXoCbeDaGHCVMz2)5J8tW65ZJhK1cF(KsZ(t2852izOe8a4t9AMz)NpYpbRNppEZMXNppE)jB(CBvibZ(CW7L0iHscLKLugIflGmKGejlPKJlKKL8FbPh8KSeeNZyJaLKLG4CgBeOJKpLGfijl5)csp4zfLCCHKSeKcqHV4oaqHKSKpoq(KLKLqwGOuswY)fKEWtYY5Zn2hXiqIvJRXzKimRRxEVO8Peh01a7nifGcbNm4dVMzgWldaRGOSGiWEdsbOqqJZa2Bqkafc61RzMTp8b22(COJIY7yCgccPSFo0rr5Dw)WRzMb8YaWkikliYJytHmlHmSqWh(KmVOR3NdDuuENhEnZS5ZTvUpGq2ph66hEnZmgi9Lb1OmVqVq0bVKSeYceLcsYs2hXiqIvJRXzKimRljl5)csp4zfoedqswsjWdhiHsYsk8zuKrOdbkLKLJRrrWvrIKL7dWajirYskWgIsFcsqIKL4F3ucsqIekjuswsb2qukjirYs8VBkbjircLekjlhi4XJG)7MsojirYs8VBkbjircLekjlza4djbjswI)DtjibjsOKqjzjZzdjbjswI)DtjibjsOKqjzjpa(uIdkjirYs8VBkbjircLekjljqxWCEXLeKizj(3nLGeKiHscLKL4YcUuGneLscsKSe)7MsqcsKqjHscLKLeOuidkWEfGmGehusi9NhjlrFXJedXIfqgqsiDKjzjdCbXbfjYXfsYsc(huswsHpJImjljfdLKLu4ZOiVYdkfGafpeLsYYrWAdPLJIWJdjljgizjP4KoCSr(spSFo0r5Fqjzjf(mkYiWbLsYYX5z4YabbhdGCswY)C2dNXqrc(m64GcW2goqcBKSK)5ShoJHscBKqjzjijlFcexrqe5NGKLSqcPJmR)jqMekjKa \ No newline at end of file From 82a352718d346477912dda10fae2c8c2b3c5eaaa Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:55:30 +0200 Subject: [PATCH 09/44] Update quest export --- LegionWA/AutoQuest/Export | 1 + 1 file changed, 1 insertion(+) create mode 100644 LegionWA/AutoQuest/Export diff --git a/LegionWA/AutoQuest/Export b/LegionWA/AutoQuest/Export new file mode 100644 index 0000000..2e6c855 --- /dev/null +++ b/LegionWA/AutoQuest/Export @@ -0,0 +1 @@ +difRIaGisQhHuuvxIKqPrjLoLu5vuLGzHsDlss2LOyyiv5yesltuINrsitdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpscv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KKOHsGCuPklvuvEQKmvc6QeO2ksH6RKKYzPcv9wKc0CPcL7IuqTxQQ)IuzWWHLyXIs9yumzj1LPSzP4ZurJMk40KA1ifWRfvvZwKBtL2nQ(nrdNQ44uLQLJKNJW0fUoj2oH47KKQXtsW5rkTEscfVxusDFrjz)Q9f1xOFLRFvTFvTVq)QWuHquVsYJkTkgZpVSqp)QctOfXesPD60O8IYAZppvjk98RctfcrZXlzNSA)S9RckTtNgLVq)QGwpMFfJcriD9RyuicPlDbTEm)kteJh(vmkeH0Loh01MFvODTA)kghmM87xzIy8WVIrHiKU(vQsvJEcoxLq6eKkftNGfK3OVWCJEcoxLq68woH0xSaJEcoxLq6CKk9IcsGCcZn6j4CvcPRF(YLtO486p6j4CvcPtq5tL9ZxUQQrFvwvjwq0vrZuPQnzJcNj0sER1n5ymg6MHnyXAOUNGZvjKobPsX0jyb5n6lmN6r4GXNCmgJXymCussy9LeeApTDtogJHLimDZWgSynu3tW5QesN3YjK(Ifq9iCW4togJXymg0NHX8e9umIOTBYXymSeHPBg2GfRH6EcoxLq6CKk9IcsGCcZPEeoy8jhJXymgdDZOVf5P42tXich5GuZyeTDdvCwdrhHdgFYXymgJXymgJ(w0tXiI8zQEHQUv0UjhJXymgdJxp5ymgwIW0ndBWI1qDFvwvjwq0vrZuPQPEeoy8jhJXymgJKKPKgExXicIbRrFlYtXTVKGq7H(Iu0Ps2jRNIreeTDtogJXymgjjtjnyKUEswy19umIGyWA03I8uC7lji0EOptOfX6PyebrB3KJXymgJrsYusdPNql5edwJ(wKNIBFjbH2J0tOLCcTKt02n5ymgJXyOBgmsxpjlS6Ekgrqm8Yd6nk86H0tOLCIblwd6nchm(KJXymgJXymgnsQHEWAik7bJ01tYcRUNIreeJA5KJXymgJXymgJXyuzjJj6lji0EOptOfX6PyerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7kgrqm8Yd6nk86H0tOLCIblwd6nchm(KJXymgJXymgvwYyI(sccTh6lsrNkzNSEkgr0kA3KJXymgJHXRNCmgJXym0ndPNql5edwSgIok86H3vmIGy4fgmsxpjlS6EkgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xsqO9i9eAjNql5TI2n5ymgJXyy86jhJXWseMUzydwSgQ7j4CvcPRF(YLtO486REeoy8jhJXymgJKKPKgExXicIbRrFlYtXTVKGq7H(Iu0Ps2jRNIreeTDtogJXymgjjtjnyKUEswy19umIGyWA03I8uC7lji0EOptOfX6PyebrB3KJXymgJHUzWiD9KSWQ7PyebXWlpO3iCW4togJXymgJXy0iPg6bRHOShmsxpjlS6EkgrqmQLtogJXymgJXymgJrLLmMG(mHweRNIreTI2n5ymgJXymgJHXRNCmgJXymmE9KJXymgJHUz4DfJiigE5b9gHdgFYXymgJXymgJklzmb9fPOtLStwpfJiAfTBYXymgJXW41togJHLimDZWgSynu3tW5QesNGYNk7NVCvvQhHdgFYXymgJXq3met0tXichjD9KSOKDYA1DJWbJp5ymgJXymgJHJKUEswy9umIOTBYXymgJXW41togJHXRN041(vMigpi8R6j4CvcPtqQumDcwqEJ(cZn6j4CvcPZB5esFXcm6j4CvcPZrQ0lkibYjm3ONGZvjKU(5lxoHIZR)ONGZvjKobLpv2pF5QQg9vzvLybrxfntLQMFfHdsvxLC)kchKQUk50Nj0Iy(HFvyQqiQGKAE4xLpX9Pzc9RsYsTVq)kn3jLuXJVq)kxLuO9f6h(HFvusgp8f6x5QKcTVq)Wp8RQ1nnAgLuqRVq)kxLuO9f6h(HFfvHX8f6x5QKcTVq)Wp8RAkmHwY9f6x5QKcTVq)Wp8R8iINOKmE4l0VYvjfAFH(HF4xfLKXJS4l0VYvjfAFH(HF4xrjtMVq)kxLuO9f6h(HF4xfMkeI6ijpkAURXd)kvkyHvI9wo)knpmkEjrJnkcTK7NNkYVQwtqdOWzcTiMFvjL8RkmHwYj8f6xrefQWxOFvTKoxJGO408Z2p8R0CD4l0VQwshJcriD99A)kgfIq66xLKmL0O2YwX5G1OPKiSjtsMsAOzKCVPj8Kk06nfQsOL8bRHkAYjtsMsA0OWzcTKpCAH4WCfqZZFlJKhfn3OypisYOBYXymOSqHIpiSKXeT0iSh9TWrsEu0CJsCyUI5nYwgjpkAUrXEqKKrx3KgVEYKKPKgnkCMql5dNwiom3EkfEOdABzK8OO5gf7brsgDtogJbLfku8bHLmMOnlSh9TWrsEu0CJsCyUI5nYwgjpkAUrXEqKKrx3KgVEYKKPKgnkCMql5dNwiom38kUwlJKhfn3OypisYOBYXymOSqHIpiSKXeTIYE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMRqA9yTmsEu0CJI9GijJUjhJXGYcfk(GWsgt064YE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMBLs2bTESwgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAPryp6BH4WCfZBKToTqCyUcO55VLrYJIMBuShejz011nPXRNmjzkPrJcNj0s(WPfIdZvatel1Yi5rrZnk2dIKm6MCmgdkluO4dclzmrlnXE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMlnUKuSwgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAfvu2J(wiomxX8gzRtlehMRaAE(BzK8OO5gf7brsgDDDtA86jtsMsA0OWzcTKpCAH4WC7Pus6G2wgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAvrSh9TqCyUI5nYwNwiomxb0883Yi5rrZnk2dIKm666M041tMKmL0OrHZeAjF40cXH5MZ7kApcizkHwYBzK8OO5gf7brsgDtogJbLfku8bHLmMO1lXE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMRygjVLrYJIMBuShejz0n5ymguwOqXhewYyIwrPh7rFlehMRyEJS1PfIdZvanp)TmsEu0CJI9GijJUUUjnE9KjjtjnAu4mHwYhoTWR18AH06XAzK8OO5gf7brsgDtogJbLfku8bHLmMOvuAI9OVfIdZvmVr260cXH5kGMN)wgjpkAUrXEqKKrxx3KgVEYjNCYKKPKgoPk06v6uyudwJSEYXymmEj7KvpynckfJ9KJXy0OtHrnynAu4mHwYBjSud7bJKhfn3OypisYOBYXymgJXq3mAjSutgJxYoz1DJWbJp5ymgJXymgJrrHQqNXfjtTLTItbKoBv3NQq7OrNcJYXzWi5rrZnQbRH6rMmdgjpkAUrnYKzOM9GijJbRH6rMmdIKm6MCmgJXymgJXijzkPHom3EkLKoODWA40cXH52tPK0bTTmsEu0CJI9GijJUjhJXymgJXym0nJwDyU9ukjDq7OWRh6WC7Pus6G2blwd61nchm(KJXymgJXymgJXyuuOk0zCrYuBzR4uaPZw19Pk0oA0PWOgEkeeQ7MCmgJXymgJXymgdkluO4JGsXMCmgJXymgJXW41togJXymggVEYXymmE9Kz1KjjtjnCAfkVsNcJAWAK1togJHXlzNS6bRrqPySNCmgdDsKKqhOmchKP6bRbnenh9yp5ymgewk51sBWA0useg7jhJXOrNcJAWA0OWzcTK3syPg2dgjpkAUrXEqKKr3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIcvHoJlsMAlBfNciD2QUVvOgn6uyuoodgjpkAUrnynupYKzWi5rrZnQrMmd1ShejzmynupYKzqKKr3KJXymgJXymgjjtjn0H5kGjILgSgoTqCyUcyIyPwgjpkAUrXEqKKr3KJXymgJXymgjjtjn0H561AETqA9ydwdNw41AETqA9yTmsEu0CJI9GijJUjhJXymgJXymssMsAOdZviTESbRHtlehMRqA9yTmsEu0CJI9GijJUjhJXymgJXymssMsAOdZnN3v0EeqYmynCAH4WCZ5DfThbKmLql5TmsEu0CJI9GijJUjhJXymgJXym0nJwDyUcP1Jnk86Hom3CExr7rajZOWRNCmgJXymgJXOvhMRqA9ydwSgQPpLRKs9KJXymgJXymgsQHomxH06XgSynuRAwXJKREYXymgJXymgdj1qhMBoVRO9iGKzWI1qT48OXcD8ckhDEL486NlFQNCmgJXymgJXqsn0H5MZ7kApcizgSynulopASqhVGYrNW8jopA0Ccvp5ymgJXymgJHKAOdZnN3v0EeqYmyXAOwCE0yHoEbLJohjGkPpnQ6jhJXymgJXymKudDyU58UI2JasMblwd1IZJgl0XlOC0LxohrJQUBYXymgJXymgJcVEOdZvatelnk86HomxVwZRfsRhBu41dDyUcyIyPHk(GWsnz0jrscDGYiCqMQhfE9OvhMRxR51cP1JnyXAi6qsniSutgclL8AP11nchm(KJXymgJXymgJXy4HsZJwNwiom38kUwlJKhfn3OypisYORBYXymgJXymgJXym8qP5rRtlehMRaMiwQLrYJIMBuShejz01n5ymgJXymgJXymgffQcDgxKm1w2kofq6SvDFRqnA0PWOgEkeeQ7MCmgJXymgJXymgdkluO4JGsXMCmgJXymgJXW41togJXymggVEYXymmE9Kz1KtMKmL0OrHZeAjFulRSuQLrYJIMBuShejz0n5ymgjjtjn0H5kMrYhSgoTqCyUIzK8wgjpkAUrXEqKKr3KJXyKKmL0qhMBEfxBWA40cXH5MxX1AzK8OO5gf7brsgDtogJrsYusdDyU9uk8qh0oynCAH4WC7Pu4HoOTLrYJIMBuShejz0n5ymgjjtjn0H52tPK0bTdwdNwiom3EkLKoOTLrYJIMBuShejz0n5KJXyuuOk0zCrYuBzR4uaPZw1EJQO6AUZHMrYhnsQH6rMmdDyU5vCTrMmd1dvxhom8UsjPdAhQhzYm0H52tPK0bTDtogJrsYusdEX1unD4GJKjj1G1qnnO6rMmJIcvHoJlsgVRus6GwhjtskcAqDyU9ukjDq7WlmeLgEKjZqhMBEfxBKjZqnnSJjAwOjk1togJrsYusdEX1unD4qpLcp0bTdwdEX1unD4GJKjj1itMH6HkOEKjZqhMBpLcp0bTto5ymgffQcDgxKm1w2kofq6Svn9ji0o5AUZbV4AQhzYm4fxt10Hd9uk8qh02n5ymgffQcDgxKmLuIikHrqdsZVOqvOZ4IKPKserjmIHxyikn8G1iRNCmgJXymiCqQ6dwJGsXyp5ymgJXyW4qH70QhSgbLIXEYXymgJXqZRnvyWA03cHAxRTJ9KJXymgJbLriPIbRrqPySNCYXymgJXqZi5dwdDyUIzKC2togJXymg8IRnyn4fxt10Hd9uk8qh0YEYXymgJXO4kv4XG1qhMBpLcp0bTSNCYXymgJXWdL0jLrqiKwp2G1qDODTA1SNCmgJXymmvWJMQeAjxO21gSg9TqO21A7gEHHMrY9MMWtQqR3uOkHwYzp5ymgJXyuRqvcTKpyn0msU30eEsfA9Mcvj0so7jhJXymgJIsiPz6ABWAeukg7jhJXiRMCYXymemH5ijpkAUrjom3wgjpkAUrXEqKKr3KgVEYjNSOqvOZ4IKPrNcJQYOerZydwJSEYXymA0PWOigSgz9KJXymgJHtQcTELofgf7jhJXymgdNwHYR0PWOyp5ymgzf7jhJXGijdcHsbKYyWAK1zf7jhJXGsHpynAu4mHwYBjSud7bJKhfn3OypisYOBYXymgJXOOqvOZ4IKP2YwXPasNTQ9kDkmkn35qhM7qZhmsEu0CJAWAOEKjZGrYJIMBuJmzgQzpisYyWAOEKjZGijJrMmd1zYKrD3KJXymgJHUz0YLXWPfIdZvanp)TmsEu0CJI9GijJUUr4GXNCmgJXymgJXOOqvOZ4IKP2YwXPasNTQRsYyyUEcAv3n5ymgJXymgJbLfku8jhJXymgdJxp5ymgJXy0iPg5N9OrNcJAO5dpfnfrlHLAY0OtHrr0nQLtogJXymgJXyOBgTn6uyu08A0PWOAzK8OO5gf7brsgDDJWbJp5ymgJXymgJXymg1YklLAzK8OO5gf7brsgDtogJXymgJXymgJbLfku8jhJXymgJXymmE9KJXymgJHXRNCmgdJxpzwn5KffQcDgxKm1w2kofq6CWA0OWzcTK3kZMgOBYXym0nJ2AlBfNDJWbJp5ymgJXy4HsZJ2(wiu7ATDDtogJXymgEZerOuMiOZBkUEALztd0n5ymgJXy4HsZJ2UjhJXW41tA86jNSOqvOZ4IKX7kLKoO1rYKKIyWAK1togJHAht0SqtmnnEPAVuTxQwn7HQu1qqsj1KJXyO2Xenl0ettttttttJA2dvPQHJKUUs(KJXyO2Xenl0ettJOwtd9ONA2dvPQHG5msxxjFYXymu7yIMfAIPPHE0JgHE11QzpuLQg5RqztogJHAht0SqtmnnfvKkIMZm1ShQsvJCE0mtogJHAht0Sqtmnnnn0q0JE0tn7HQu1qaZPXRlu0o5ymgQDmrZcnX00yoUmm0q0tn7HQu1G(uHUPWetogJHAht0Sqtmnn0JEmmnnQzpuLQg0mttLKs3jZk)Wp8ROmNAjxiTEm)knJK7xXvCfsPD60Oi8Ztu)kgPmvlvDUqtfIC8s2jR2pB)QWuHquVsYd)QCQGhkJGq1l06xfMkeI6xPIL7xPR9ROVsi7PyeHFLMRd6iIcvy1(5jQFfJuMQLQo3pB)WVIWVklzO5YiAw8ReXpprPPSiQF47d \ No newline at end of file From 930eab2143bccccd92559b09e4e2e5c1cc81862a Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:56:57 +0200 Subject: [PATCH 10/44] Fix typo in quest --- LegionWA/AutoQuest/Event.lua | 4 ++-- LegionWA/AutoQuest/Export | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LegionWA/AutoQuest/Event.lua b/LegionWA/AutoQuest/Event.lua index 0ed4f37..54ed108 100644 --- a/LegionWA/AutoQuest/Event.lua +++ b/LegionWA/AutoQuest/Event.lua @@ -11,7 +11,7 @@ function(e) elseif e == "GOSSIP_SHOW" then local quests = GetNumGossipAvailableQuests() local completedQuests = GetNumGossipActiveQuests() - local options = GetNumGossipoptionsions() + local options = GetNumGossipOptions() if completedQuests > 0 and options == 0 then for i = 1, completedQuests do SelectGossipActiveQuest(i) @@ -21,7 +21,7 @@ function(e) SelectGossipAvailableQuest(1) end if options == 1 and quests + completedQuests == 0 then - SelectGossipoptionsion(1) + SelectGossipOption(1) end elseif e == "QUEST_GREETING" then local quests = GetNumGossipAvailableQuests() diff --git a/LegionWA/AutoQuest/Export b/LegionWA/AutoQuest/Export index 2e6c855..949722e 100644 --- a/LegionWA/AutoQuest/Export +++ b/LegionWA/AutoQuest/Export @@ -1 +1 @@ -difRIaGisQhHuuvxIKqPrjLoLu5vuLGzHsDlss2LOyyiv5yesltuINrsitdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpscv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KKOHsGCuPklvuvEQKmvc6QeO2ksH6RKKYzPcv9wKc0CPcL7IuqTxQQ)IuzWWHLyXIs9yumzj1LPSzP4ZurJMk40KA1ifWRfvvZwKBtL2nQ(nrdNQ44uLQLJKNJW0fUoj2oH47KKQXtsW5rkTEscfVxusDFrjz)Q9f1xOFLRFvTFvTVq)QWuHquVsYJkTkgZpVSqp)QctOfXesPD60O8IYAZppvjk98RctfcrZXlzNSA)S9RckTtNgLVq)QGwpMFfJcriD9RyuicPlDbTEm)kteJh(vmkeH0Loh01MFvODTA)kghmM87xzIy8WVIrHiKU(vQsvJEcoxLq6eKkftNGfK3OVWCJEcoxLq68woH0xSaJEcoxLq6CKk9IcsGCcZn6j4CvcPRF(YLtO486p6j4CvcPtq5tL9ZxUQQrFvwvjwq0vrZuPQnzJcNj0sER1n5ymg6MHnyXAOUNGZvjKobPsX0jyb5n6lmN6r4GXNCmgJXymCussy9LeeApTDtogJHLimDZWgSynu3tW5QesN3YjK(Ifq9iCW4togJXymg0NHX8e9umIOTBYXymSeHPBg2GfRH6EcoxLq6CKk9IcsGCcZPEeoy8jhJXymgdDZOVf5P42tXich5GuZyeTDdvCwdrhHdgFYXymgJXymgJ(w0tXiI8zQEHQUv0UjhJXymgdJxp5ymgwIW0ndBWI1qDFvwvjwq0vrZuPQPEeoy8jhJXymgJKKPKgExXicIbRrFlYtXTVKGq7H(Iu0Ps2jRNIreeTDtogJXymgjjtjnyKUEswy19umIGyWA03I8uC7lji0EOptOfX6PyebrB3KJXymgJrsYusdPNql5edwJ(wKNIBFjbH2J0tOLCcTKt02n5ymgJXyOBgmsxpjlS6Ekgrqm8Yd6nk86H0tOLCIblwd6nchm(KJXymgJXymgnsQHEWAik7bJ01tYcRUNIreeJA5KJXymgJXymgJXyuzjJj6lji0EOptOfX6PyerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7kgrqm8Yd6nk86H0tOLCIblwd6nchm(KJXymgJXymgvwYyI(sccTh6lsrNkzNSEkgr0kA3KJXymgJHXRNCmgJXym0ndPNql5edwSgIok86H3vmIGy4fgmsxpjlS6EkgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xsqO9i9eAjNql5TI2n5ymgJXyy86jhJXWseMUzydwSgQ7j4CvcPRF(YLtO486REeoy8jhJXymgJKKPKgExXicIbRrFlYtXTVKGq7H(Iu0Ps2jRNIreeTDtogJXymgjjtjnyKUEswy19umIGyWA03I8uC7lji0EOptOfX6PyebrB3KJXymgJHUzWiD9KSWQ7PyebXWlpO3iCW4togJXymgJXy0iPg6bRHOShmsxpjlS6EkgrqmQLtogJXymgJXymgJrLLmMG(mHweRNIreTI2n5ymgJXymgJHXRNCmgJXymmE9KJXymgJHUz4DfJiigE5b9gHdgFYXymgJXymgJklzmb9fPOtLStwpfJiAfTBYXymgJXW41togJHLimDZWgSynu3tW5QesNGYNk7NVCvvQhHdgFYXymgJXq3met0tXichjD9KSOKDYA1DJWbJp5ymgJXymgJHJKUEswy9umIOTBYXymgJXW41togJHXRN041(vMigpi8R6j4CvcPtqQumDcwqEJ(cZn6j4CvcPZB5esFXcm6j4CvcPZrQ0lkibYjm3ONGZvjKU(5lxoHIZR)ONGZvjKobLpv2pF5QQg9vzvLybrxfntLQMFfHdsvxLC)kchKQUk50Nj0Iy(HFvyQqiQGKAE4xLpX9Pzc9RsYsTVq)kn3jLuXJVq)kxLuO9f6h(HFvusgp8f6x5QKcTVq)Wp8RQ1nnAgLuqRVq)kxLuO9f6h(HFfvHX8f6x5QKcTVq)Wp8RAkmHwY9f6x5QKcTVq)Wp8R8iINOKmE4l0VYvjfAFH(HF4xfLKXJS4l0VYvjfAFH(HF4xrjtMVq)kxLuO9f6h(HF4xfMkeI6ijpkAURXd)kvkyHvI9wo)knpmkEjrJnkcTK7NNkYVQwtqdOWzcTiMFvjL8RkmHwYj8f6xrefQWxOFvTKoxJGO408Z2p8R0CD4l0VQwshJcriD99A)kgfIq66xLKmL0O2YwX5G1OPKiSjtsMsAOzKCVPj8Kk06nfQsOL8bRHkAYjtsMsA0OWzcTKpCAH4WCfqZZFlJKhfn3OypisYOBYXymOSqHIpiSKXeT0iSh9TWrsEu0CJsCyUI5nYwgjpkAUrXEqKKrx3KgVEYKKPKgnkCMql5dNwiom3EkfEOdABzK8OO5gf7brsgDtogJbLfku8bHLmMOnlSh9TWrsEu0CJsCyUI5nYwgjpkAUrXEqKKrx3KgVEYKKPKgnkCMql5dNwiom38kUwlJKhfn3OypisYOBYXymOSqHIpiSKXeTIYE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMRqA9yTmsEu0CJI9GijJUjhJXGYcfk(GWsgt064YE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMBLs2bTESwgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAPryp6BH4WCfZBKToTqCyUcO55VLrYJIMBuShejz011nPXRNmjzkPrJcNj0s(WPfIdZvatel1Yi5rrZnk2dIKm6MCmgdkluO4dclzmrlnXE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMlnUKuSwgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAfvu2J(wiomxX8gzRtlehMRaAE(BzK8OO5gf7brsgDDDtA86jtsMsA0OWzcTKpCAH4WC7Pus6G2wgjpkAUrXEqKKr3KJXyqzHcfFqyjJjAvrSh9TqCyUI5nYwNwiomxb0883Yi5rrZnk2dIKm666M041tMKmL0OrHZeAjF40cXH5MZ7kApcizkHwYBzK8OO5gf7brsgDtogJbLfku8bHLmMO1lXE03cXH5kM3iBDAH4WCfqZZFlJKhfn3OypisYORRBsJxpzsYusJgfotOL8HtlehMRygjVLrYJIMBuShejz0n5ymguwOqXhewYyIwrPh7rFlehMRyEJS1PfIdZvanp)TmsEu0CJI9GijJUUUjnE9KjjtjnAu4mHwYhoTWR18AH06XAzK8OO5gf7brsgDtogJbLfku8bHLmMOvuAI9OVfIdZvmVr260cXH5kGMN)wgjpkAUrXEqKKrxx3KgVEYjNCYKKPKgoPk06v6uyudwJSEYXymmEj7KvpynckfJ9KJXy0OtHrnynAu4mHwYBjSud7bJKhfn3OypisYOBYXymgJXq3mAjSutgJxYoz1DJWbJp5ymgJXymgJrrHQqNXfjtTLTItbKoBv3NQq7OrNcJYXzWi5rrZnQbRH6rMmdgjpkAUrnYKzOM9GijJbRH6rMmdIKm6MCmgJXymgJXijzkPHom3EkLKoODWA40cXH52tPK0bTTmsEu0CJI9GijJUjhJXymgJXym0nJwDyU9ukjDq7OWRh6WC7Pus6G2blwd61nchm(KJXymgJXymgJXyuuOk0zCrYuBzR4uaPZw19Pk0oA0PWOgEkeeQ7MCmgJXymgJXymgdkluO4JGsXMCmgJXymgJXW41togJXymggVEYXymmE9Kz1KjjtjnCAfkVsNcJAWAK1togJHXlzNS6bRrqPySNCmgdDsKKqhOmchKP6bRbnenh9yp5ymgewk51sBWA0useg7jhJXOrNcJAWA0OWzcTK3syPg2dgjpkAUrXEqKKr3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIcvHoJlsMAlBfNciD2QUVvOgn6uyuoodgjpkAUrnynupYKzWi5rrZnQrMmd1ShejzmynupYKzqKKr3KJXymgJXymgjjtjn0H5kGjILgSgoTqCyUcyIyPwgjpkAUrXEqKKr3KJXymgJXymgjjtjn0H561AETqA9ydwdNw41AETqA9yTmsEu0CJI9GijJUjhJXymgJXymssMsAOdZviTESbRHtlehMRqA9yTmsEu0CJI9GijJUjhJXymgJXymssMsAOdZnN3v0EeqYmynCAH4WCZ5DfThbKmLql5TmsEu0CJI9GijJUjhJXymgJXym0nJwDyUcP1Jnk86Hom3CExr7rajZOWRNCmgJXymgJXOvhMRqA9ydwSgQPpLRKs9KJXymgJXymgsQHomxH06XgSynuRAwXJKREYXymgJXymgdj1qhMBoVRO9iGKzWI1qT48OXcD8ckhDEL486NlFQNCmgJXymgJXqsn0H5MZ7kApcizgSynulopASqhVGYrNW8jopA0Ccvp5ymgJXymgJHKAOdZnN3v0EeqYmyXAOwCE0yHoEbLJohjGkPpnQ6jhJXymgJXymKudDyU58UI2JasMblwd1IZJgl0XlOC0LxohrJQUBYXymgJXymgJcVEOdZvatelnk86HomxVwZRfsRhBu41dDyUcyIyPHk(GWsnz0jrscDGYiCqMQhfE9OvhMRxR51cP1JnyXAi6qsniSutgclL8AP11nchm(KJXymgJXymgJXy4HsZJwNwiom38kUwlJKhfn3OypisYORBYXymgJXymgJXym8qP5rRtlehMRaMiwQLrYJIMBuShejz01n5ymgJXymgJXymgffQcDgxKm1w2kofq6SvDFRqnA0PWOgEkeeQ7MCmgJXymgJXymgdkluO4JGsXMCmgJXymgJXW41togJXymggVEYXymmE9Kz1KtMKmL0OrHZeAjFulRSuQLrYJIMBuShejz0n5ymgjjtjn0H5kMrYhSgoTqCyUIzK8wgjpkAUrXEqKKr3KJXyKKmL0qhMBEfxBWA40cXH5MxX1AzK8OO5gf7brsgDtogJrsYusdDyU9uk8qh0oynCAH4WC7Pu4HoOTLrYJIMBuShejz0n5ymgjjtjn0H52tPK0bTdwdNwiom3EkLKoOTLrYJIMBuShejz0n5KJXyuuOk0zCrYuBzR4uaPZw1EJQO6AUZHMrYhnsQH6rMmdDyU5vCTrMmd1dvxhom8UsjPdAhQhzYm0H52tPK0bTDtogJrsYusdEX1unD4GJKjj1G1qnnO6rMmJIcvHoJlsgVRus6GwhjtskcAqDyU9ukjDq7WlmeLgEKjZqhMBEfxBKjZqnnSJjAwOjk1togJrsYusdEX1unD4qpLcp0bTdwdEX1unD4GJKjj1itMH6HkOEKjZqhMBpLcp0bTto5ymgffQcDgxKm1w2kofq6Svn9ji0o5AUZbV4AQhzYm4fxt10Hd9uk8qh02n5ymgffQcDgxKmLuIikHrqdsZVOqvOZ4IKPKserjmIHxyikn8G1iRNCmgJXymiCqQ6dwJGsXyp5ymgJXyW4qH70QhSgbLIXEYXymgJXqZRnvyWA03cHAxRTJ9KJXymgJbLriPIbRrqPySNCYXymgJXqZi5dwdDyUIzKC2togJXymg8IRnyn4fxt10Hd9uk8qh0YEYXymgJXO4kv4XG1qhMBpLcp0bTSNCYXymgJXWdL0jLrqiKwp2G1qDODTA1SNCmgJXymmvWJMQeAjxO21gSg9TqO21A7gEHHMrY9MMWtQqR3uOkHwYzp5ymgJXyuRqvcTKpyn0msU30eEsfA9Mcvj0so7jhJXymgJIsiPz6ABWAeukg7jhJXiRMCYXymemH5ijpkAUrjom3wgjpkAUrXEqKKr3KgVEYjNSOqvOZ4IKPrNcJQYOerZydwJSEYXymA0PWOigSgz9KJXymgJHtQcTELofgf7jhJXymgdNwHYR0PWOyp5ymgzf7jhJXGijdcHsbKYyWAK1zf7jhJXGsHpynAu4mHwYBjSud7bJKhfn3OypisYOBYXymgJXOOqvOZ4IKP2YwXPasNTQ9kDkmkn35qhM7qZhmsEu0CJAWAOEKjZGrYJIMBuJmzgQzpisYyWAOEKjZGijJrMmd1zYKrD3KJXymgJHUz0YLXWPfIdZvanp)TmsEu0CJI9GijJUUr4GXNCmgJXymgJXOOqvOZ4IKP2YwXPasNTQRsYyyUEcAv3n5ymgJXymgJbLfku8jhJXymgdJxp5ymgJXy0iPg5N9OrNcJAO5dpfnfrlHLAY0OtHrr0nQLtogJXymgJXyOBgTn6uyu08A0PWOAzK8OO5gf7brsgDDJWbJp5ymgJXymgJXymg1YklLAzK8OO5gf7brsgDtogJXymgJXymgJbLfku8jhJXymgJXymmE9KJXymgJHXRNCmgdJxpzwn5KffQcDgxKm1w2kofq6CWA0OWzcTK3kZMgOBYXym0nJ2AlBfNDJWbJp5ymgJXy4HsZJ2(wiu7ATDDtogJXymgEZerOuMiOZBkUEALztd0n5ymgJXy4HsZJ2UjhJXW41tA86jNSOqvOZ4IKX7kLKoO1rYKKIyWAK1togJHAht0SqtmnnEPAVuTxQwn7HQu1qqsj1KJXyO2Xenl0ettttttttJA2dvPQHJKUUs(KJXyO2Xenl0ettJOwtd9ONA2dvPQHG5msxxjFYXymu7yIMfAIPPHE0JgHE11QzpuLQg5RqztogJHAht0SqtmnnfvKkIMZm1ShQsvJCE0mtogJHAht0Sqtmnnnn0q0JE0tn7HQu1qaZPXRlu0o5ymgQDmrZcnX00yoUmm0q0tn7HQu1G(uHUPWetogJHAht0Sqtmnn0JEmmnnQzpuLQg0mttLKs3jZk)Wp8ROmNAjxiTEm)knJK7xXvCfsPD60Oi8Ztu)kgPmvlvDUqtfIC8s2jR2pB)QWuHquVsYd)QCQGhkJGq1l06xfMkeI6xPIL7xPR9ROVsi7PyeHFLMRd6iIcvy1(5jQFfJuMQLQo3pB)WVIWVklzO5YiAw8ReXpprPPSiQF47d \ No newline at end of file +difPIaGiIQhHuuvxIquPrjLoLu5vuLGzHsDlIs2LOyyiv5yefltuINriktdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpcrv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KazOeOoQuLLkQkpvsMkbDvcHTIuO(krPCwQqvVfPanxQq5Uifu7LQ6VivgmCyjwSOupgftwsDzkBwk(mv0OPconPwnsb8Arv1Sf52uPDJQFtYWPkoovPA5i55imDHRtKTti9DIs14je58iLwpHOI3lkPUVOKSF1(Y4l0VY1VQ2VQ2xOFvyIuiJxP4rLwKJ5NxwONFvHj0IAcP0oDAuErvT5NNSKHE(vHjsHm54LStwTF2(vbL2PtJYxOFvqRhZVIrIiuU(vmseHYLUGwpMFLjQXd)kgjIq5sNd6AZVk0UwTFfJdgt(9RmrnE4xXirekx)kzjRrprKRsiDcwqIPtec2B0xyUrprKRsiDElNq6lwGrprKRsiDosqErblqoH5g9erUkH01pF5YjuCE9h9erUkH0j48jO(5lxv1OVGQQely6QOzcs2MSrIZeAfV16MCmgdDZWgSynK3te5QesNGfKy6eHG9g9fMt(iCW4togJXymgokPiS(kccTN2UjhJXWseMUzydwSgY7jICvcPZB5esFXciFeoy8jhJXymgd6ZWyEIEsgr02n5ymgwIW0ndBWI1qEprKRsiDosqErblqoH5Kpchm(KJXymgJHUz03I8KC7jzeHJCqPzmI2UHipRHmJWbJp5ymgJXymgJrFl6jzer(mzVqv3kt3KJXymgJHXRNCmgdlry6MHnyXAiVVGQQely6QOzcs2Kpchm(KJXymgJrsXusdVlzebXG1OVf5j52xrqO9qFrl6uj7K1tYicI2UjhJXymgJKIPKgmkxpjlS6Esgrqmyn6BrEsU9veeAp0Nj0IA9KmIGOTBYXymgJXiPykPHYtOvCIbRrFlYtYTVIGq7rqEcTIt02n5ymgJXyOBgmkxpjlS6Esgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgnkQHEWAid7bJY1tYcRUNKreeJA1KJXymgJXymgJXyuzjJj6Rii0EOptOf16jzerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgvwYyI(kccTh6lArNkzNSEsgr0kt3KJXymgJHXRNCmgJXym0ndLNqR4edwSgYmk86H3LmIGy4fgmkxpjlS6EsgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xrqO9iipHwXBLPBYXymgJXW41togJHLimDZWgSynK3te5Qesx)8LlNqX51x(iCW4togJXymgjftjn8UKreedwJ(wKNKBFfbH2d9fTOtLStwpjJiiA7MCmgJXymskMsAWOC9KSWQ7jzebXG1OVf5j52xrqO9qFMqlQ1tYicI2UjhJXymgdDZGr56jzHv3tYicIHxEqVr4GXNCmgJXymgJXOrrn0dwdzypyuUEswy19KmIGyuRMCmgJXymgJXymgJklzmb9zcTOwpjJiALPBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nchm(KJXymgJXymgvwYyc6lArNkzNSEsgr0kt3KJXymgJHXRNCmgdlry6MHnyXAiVNiYvjKobNpb1pF5QQKpchm(KJXymgJHUziMONKreos56jzrj7K1Q7gHdgFYXymgJXymgdhPC9KSW6jzerB3KJXymgJHXRNCmgdJxpPXR9RmrnEq4x1te5QesNGfKy6eHG9g9fMB0te5QesN3YjK(Ify0te5QesNJeKxuWcKtyUrprKRsiD9ZxUCcfNx)rprKRsiDcoFcQF(Yvvn6lOQkXcMUkAMGKn)kchuYUG4(veoOKDbXPptOf18d)QWePqgbR08WVkFI7tZe6xLuLAFH(vAUtkLKhFH(vUsPq7l0p8d)QOKmE4l0VYvkfAFH(HF4xvRBA0msPGwFH(vUsPq7l0p8d)kQcJ5l0VYvkfAFH(HF4x1uycTI7l0VYvkfAFH(HF4x5ruprjz8WxOFLRuk0(c9d)WVkkjJhzXxOFLRuk0(c9d)WVIsLmFH(vUsPq7l0p8d)WVkmrkKXrkEu0CxJh(vcsecRe7TC(vAEyu8sIgBueAf3pprMFvTMGgqIZeArn)Qsk5xvycTIt4l0VIikuHVq)QAfDUgbrXP5NTF4xP56WxOFvTIogjIq5671(vmseHY1VkPykPrTLTKZbRrtjrytMumL0qZO4Ett4jvO1BsuLqR4dwdr2KtMumL0OrIZeAfF40cXH5kGMN)wgfpkAUrXEqKur3KJXyqzHefFqyjJjAPryp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU9Kk8qh02YO4rrZnk2dIKk6MCmgdklKO4dclzmrBwyp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU5vCTwgfpkAUrXEqKur3KJXyqzHefFqyjJjALH9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxH06XAzu8OO5gf7brsfDtogJbLfsu8bHLmMO1XL9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiom3kPSdA9yTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0sJWE03cXH5kM3OADAH4WCfqZZFlJIhfn3OypisQORRBsJxpzsXusJgjotOv8HtlehMRaMOwQLrXJIMBuShejv0n5ymguwirXhewYyIwAI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxACjjzTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kJmSh9TqCyUI5nQwNwiomxb0883YO4rrZnk2dIKk666M041tMumL0OrIZeAfF40cXH52tQK0bTTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kYyp6BH4WCfZBuToTqCyUcO55VLrXJIMBuShejv011nPXRNmPykPrJeNj0k(WPfIdZnN3L0EeqXucTI3YO4rrZnk2dIKk6MCmgdklKO4dclzmrRxI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxXmkElJIhfn3OypisQOBYXymOSqIIpiSKXeTYqp2J(wiomxX8gvRtlehMRaAE(Bzu8OO5gf7brsfDDDtA86jtkMsA0iXzcTIpCAHxR51cP1J1YO4rrZnk2dIKk6MCmgdklKO4dclzmrRm0e7rFlehMRyEJQ1PfIdZvanp)TmkEu0CJI9GiPIUUUjnE9Kto5KjftjnCsvO1R0PWOgSgz9KJXyy8s2jREWAeusg7jhJXOrNcJAWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIevHoJlAMAlBjNcOC2kVpvH2rJofgLJZGrXJIMBudwd5JmzgmkEu0CJAKjZqo7brsfdwd5Jmzgejv0n5ymgJXymgJrsXusdDyU9KkjDq7G1WPfIdZTNujPdABzu8OO5gf7brsfDtogJXymgJXyOBgT6WC7jvs6G2rHxp0H52tQK0bTdwSg0RBeoy8jhJXymgJXymgJXOirvOZ4IMP2YwYPakNTY7tvOD0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjtkMsA40kuELofg1G1iRNCmgdJxYoz1dwJGsYyp5ymg6KOjHoqzeoOs1dwdAiAo6XEYXymiSuYRv2G1OPKim2togJrJofg1G1OrIZeAfVLWsnShmkEu0CJI9GiPIUjhJXymgdDZOLWsnzmEj7Kv3nchm(KJXymgJXymgfjQcDgx0m1w2sofq5SvEFRqnA0PWOCCgmkEu0CJAWAiFKjZGrXJIMBuJmzgYzpisQyWAiFKjZGiPIUjhJXymgJXymskMsAOdZvatulnynCAH4WCfWe1sTmkEu0CJI9GiPIUjhJXymgJXymskMsAOdZ1R18AH06XgSgoTWR18AH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMRqA9ydwdNwiomxH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMBoVlP9iGIzWA40cXH5MZ7sApcOykHwXBzu8OO5gf7brsfDtogJXymgJXyOBgT6WCfsRhBu41dDyU58UK2JakMrHxp5ymgJXymgJrRomxH06XgSynKtFkxfL8jhJXymgJXymuudDyUcP1JnyXAix2SIhfx(KJXymgJXymgkQHom3CExs7rafZGfRHCX5rJf64fCo68kX51px(Kp5ymgJXymgJHIAOdZnN3L0EeqXmyXAixCE0yHoEbNJoH5tCE0O5ekFYXymgJXymgdf1qhMBoVlP9iGIzWI1qU48OXcD8cohDosabrFAu5togJXymgJXyOOg6WCZ5DjThbumdwSgYfNhnwOJxW5OlVCoIgvE3KJXymgJXymgfE9qhMRaMOwAu41dDyUETMxlKwp2OWRh6WCfWe1sdr(bHLAYOtIMe6aLr4Gkvpk86rRomxVwZRfsRhBWI1qMHIAqyPMmewk51kRRBeoy8jhJXymgJXymgJXWdLMhToTqCyU5vCTwgfpkAUrXEqKurx3KJXymgJXymgJXy4HsZJwNwiomxbmrTulJIhfn3OypisQORBYXymgJXymgJXymksuf6mUOzQTSLCkGYzR8(wHA0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjNmPykPrJeNj0k(OwvzPulJIhfn3OypisQOBYXymskMsAOdZvmJIpynCAH4WCfZO4TmkEu0CJI9GiPIUjhJXiPykPHom38kU2G1WPfIdZnVIR1YO4rrZnk2dIKk6MCmgJKIPKg6WC7jv4HoODWA40cXH52tQWdDqBlJIhfn3OypisQOBYXymskMsAOdZTNujPdAhSgoTqCyU9KkjDqBlJIhfn3OypisQOBYjhJXOirvOZ4IMP2YwYPakNTY9gvr21CNdnJIpAuud5Jmzg6WCZR4AJmzgYhYUoCy4DPssh0oKpYKzOdZTNujPdA7MCmgJKIPKg8IRjB6WbhPskQbRHCAq5JmzgfjQcDgx0mExQK0bTosLuue0G6WC7jvs6G2Hxyidn8itMHom38kU2itMHCAyhtMSqtuYNCmgJKIPKg8IRjB6WHEsfEOdAhSg8IRjB6WbhPskQrMmd5drs(itMHom3EsfEOdANCYXymksuf6mUOzQTSLCkGYzRC6tqODY1CNdEX1KpYKzWlUMSPdh6jv4HoOTBYXymksuf6mUOzkPerucJGgKMFrIQqNXfntjLiIsyedVWqgA4bRrwp5ymgJXyq4Gs2hSgbLKXEYXymgJXGXHc3PvpynckjJ9KJXymgJHMxBI0G1OVfc1UwBh7jhJXymgdkJqrfdwJGsYyp5KJXymgJHMrXhSg6WCfZO4SNCmgJXym4fxBWAWlUMSPdh6jv4HoOL9KJXymgJrXvjXJbRHom3EsfEOdAzp5KJXymgJHhkLtkJGqiTESbRH8q7A1Yzp5ymgJXyyIKhnvj0kUqTRnyn6BHqTR12n8cdnJI7nnHNuHwVjrvcTIZEYXymgJXOwIQeAfFWAOzuCVPj8Kk06njQsOvC2togJXymgfPqrZ012G1iOKm2togJrwn5KJXyiccZrkEu0CJsCyUTmkEu0CJI9GiPIUjnE9KtozrIQqNXfntJofgvLrjQMXgSgz9KJXy0OtHrrmynY6jhJXymgdNufA9kDkmk2togJXymgoTcLxPtHrXEYXymYk2togJbrsfecvcOuXG1iRZk2togJbLeFWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJrrIQqNXfntTLTKtbuoBL7v6uyuAUZHom3HMpyu8OO5g1G1q(itMbJIhfn3OgzYmKZEqKuXG1q(itMbrsfJmzgYZKjJ8UjhJXymgdDZOLRIHtlehMRaAE(Bzu8OO5gf7brsfDDJWbJp5ymgJXymgJrrIQqNXfntTLTKtbuoBLxLuXWC9e0kVBYXymgJXymgdklKO4togJXymggVEYXymgJXOrrnYp7rJofg1qZhEkAkIwcl1KPrNcJIOBuRMCmgJXymgJXq3mAB0PWOO51OtHr1YO4rrZnk2dIKk66gHdgFYXymgJXymgJXymQvvwk1YO4rrZnk2dIKk6MCmgJXymgJXymgdklKO4togJXymgJXyy86jhJXymgdJxp5ymggVEYSAYjlsuf6mUOzQTSLCkGY5G1OrIZeAfVvLnnq3KJXyOBgT1w2so7gHdgFYXymgJXWdLMhT9TqO21A76MCmgJXym8MjQqLkrqN3KC90QYMgOBYXymgJXWdLMhTDtogJHXRN041tozrIQqNXfnJ3LkjDqRJujffXG1iRNCmgd5oMmzHMyAA8s1EPAVuTC2dzjRHGvkQjhJXqUJjtwOjMMMMMMMMg5ShYswdhPCDv8jhJXqUJjtwOjMMgzSMg6rp5ShYswdrWzuUUk(KJXyi3XKjl0ettd9Ohnc9QRLZEilznYxHYMCmgd5oMmzHMyAAkImrgnNzYzpKLSg58OzMCmgd5oMmzHMyAAAAOHOh9ONC2dzjRHaMtJxxOODYXymK7yYKfAIPPXCCzyOHONC2dzjRb9PcDtHjMCmgd5oMmzHMyAAOh9yyAAKZEilznOzMMkPuUtMv(HF4xrzo1kUqA9y(vAgf3VIl5kKs70Prr4NNm(vmkvQwj7CHMif54LStwTF2(vHjsHmELIh(v5ejpugbHSxO1VkmrkKXVsKl3Vsx7xrFPq1tYic)knxh0refQWQ9Ztg)kgLkvRKDUF2(HFfHFvwYqZLrMS4xjQFEYqtzrg)W3ha \ No newline at end of file From d5b336dd5a5dcf56b97ee48838205a636d07ade1 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 10:20:18 +0200 Subject: [PATCH 11/44] Add argunite filter to loot --- LegionWA/AutoLoot/Event.lua | 2 +- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 15 +++++++++++++++ LegionWA/AutoQuest/Export | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/LegionWA/AutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua index 1c4cf12..56f8992 100644 --- a/LegionWA/AutoLoot/Event.lua +++ b/LegionWA/AutoLoot/Event.lua @@ -4,6 +4,6 @@ function(allstates, e) local lootInfo = GetLootInfo() aura_env.filterService:run(lootInfo) - -- CloseLoot() + CloseLoot() return true end diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index 2696140..b834c64 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dqfhLbqiOOGweqpckkYLGIcmkvQofawLIKWRairZsjULsYUGcdtr5yaQLPKcpdkQmnLu01aevBdkQQVbfLmoOOuNdviADaI8oas6Ek0(qfchurIfIkKEOsQmrOiDruHAJkPQpci1ibOoPIuRuvEjuuuZevQBQKs7eqYprLyOqrCuaHLQij9uu0uvPCvOOkTvfj1xrbDwfjrVfQAUaIYDHk7fr9xubdwoSQAXkcpgv1KvWLbTzuLpROA0qPoncRgkk0RrL0SvQBJi7gs)wfdhk54aKA5O0ZHy6iDDvY2rf9DfrJhG48OqRhGeEpkqZhkQI7Jcy)0KbM8nYm)KVrMsMjczMRbga5ya8AqMjjYmhiZCG8nYmhiqWmEHYNsWjKmZ)EtMjJCHhpeiLmqbKJ5MrM5NpLGt4nwI5ZHSR9majduRaEgzMiy95djduZiZebU5HjhcukzM34cMWnhV(BKz(3eZrjZKBoE93iZeBiXCSPKx)AcKpdZH5pdZXrUgRbMdZHzHzXrUgK5TAnX8jZCF(dKVrMj9VHO01G8nYmjDTPeKVrMsMsMj9VHOuY3iZK01Msq(gzkzkzMSNnK8nYmjDTPeKVrMsMsM5abpEe8V2ugjFJmtsxBkb5BKPKPKzY(5djFJmtsxBkb5BKPKPKzsGoN9CHf5BKzs6AtjiFJmLmLmtS4el6FdrPKVrMjPRnLG8nYuYuYm595tjoOKVrMjPRnLG8nYuYuYmVqGCG)(JGqEcYuYm)OeK(uizokzMSW5eh0BmIfKmZbgr)Ki4pN9CHfzMqabRp6aCG8eKzszjMphYs(gzMiyFMKlOKzIG9zsUGof(ucoHKPKzsmqMjMHafCYPCrp7ZHsMjbkfYI(3tnKfH4GsgOWCKzojXafBYRFnbYNH5W8NbmMfM1AIzdKVMaVMRjzERwtmFYmrViDJLy(CilczGcyYmbeUWJhcKsgOwHzTMZiZKaLGYbe6NLchiduatMsMjFY3iduat(gzMuiGqbE9huktcafqYa1AmJmZbcemJxO8PeCcjZ8V3Kz(5tj4eEJLy(Ci7ApdqYa1kGNrM5NpL4GIq(gzMi0plL8nYmhoCGeeb5phsEcYuYmjqjOKVrM5WHd8VqOhsK5OKzY)cHEirM5(W)VTb4exZTrJ3FJa9Tp8)BJG)bftjqWA)zetVy)uIdQnAyoF(wTYiOqsa1NeCXiOqsCtGY1fJGcjbex)nbLXfJGcjXnKt4EXiOqsRLaLBiNW9IrqHKUXiwWfJGcjX8AIBmIfCHGcjXK(5Z11DUqPlgbfsIJb0xeyX9H)IrqHKUbbe6flCXqG7nMWsWhUy83FeKPX0fd5Ac(7pcY0y6Inbb6WngXcUabeS(8NgtxmeiDAmDXiqwh7NhLaD(uf(NdrP2Ob0q60uiPPr5DUJSpua8TALTph608pOl2(COa1NeCX2NdfiU(OuckJlg)lwwikFgNgtxS95qbIR)MGY4ITp85kCyXiqaIlicDAkK0IbOVGi0PX0fJazk8PeCcTrdOHuUphkZ9HonkVZDK9HcGVvRmUjq5QHCibPeKGi2WbIyOhQn5HLR(2h()TX7cLpL4GAZH0PPqsCtGY17i7dfaFMzglKEXIAanKY95qzUpuUjq56DK9HcGpi6GV9H)FB8Uq5tjoO2CiDAkKeq9jbVJSpua8zMzSq6flQHa3q(07RXIb0qk3NdL5(qNgL35oY(qbaaFq0bF7d))24DHYNsCqT5q60uiPBmIf8oY(qbWNzMXcPxSOgcCd5tVJ5VyanKonfsAAuEN7ZH0PPqsCtGY17i7dfaaaWheDW3(W)VnExO8PehuBoKonfsI51eugXcEhzFOa4ZmZyH0lwudbUH8P3XSwmGgsNMcjnnkVZ95q60uijUjq56DK9Hcaaa4dIo4BF4)3gVlu(uIdQnhsNMcjXnKt4(oY(qbWNzMXcPxSOgcCd5tVVMlgqdPttHKMgL35(CiDAkKe3eOC9oY(qbaaa8brh8Tp8)BJ3fkFkXb1MdPttHKM6)(cEhzFOa4ZmZyH0lwudbUH8P3bg4fdOH0PPqstJY7CFoKonfsIBcuUEhzFOaaaa(GOd(2h()TX7cLpL4GAZH0PPqsaX1hLsqz8oY(qbWNzMXcPxSOgcCd5tVJ5wmGgs5(COm3h60O8o3r2hkaa4dIo4BF4)3gVlu(uIdQnhsNMcjbex)nbLX7i7dfaFMzglKEXIAiWnKp9oMBXaAiDAkK00O8o3NdPttHK4MaLR3r2hkaaaGpi6GV9H)FB8Uq5tjoO2CiDAkKehdOViWI7d)pL4GEhzFOa4ZmZyH0lwudbUH8P35ixmGgsNMcjnnkVZ95q60uijUjq56DK9Hcaaa4dIo4BF4)3gVlu(uIdQnhsNMcjnn)d6DK9HcGpZmJfsVyrne4gYNEh4zlgqdPttHKMgL35(CiDAkKe3eOC9oY(qbaaa8brh85Z3(W)VTHd3Nd1gnExO8Peh07i7dfaFMz2)I9ZbikNymaN4Ao3N53b5(COeOZnK9HcKmqddmmK9HcGpZmJ7ZHYCFO3r2hka(8zMz7d))2iOqstZ)GAJ2CiDAkK008pO3r2hka(mZS9H)FBeuijG6tcAJ2CiDAkKeq9jbVJSpua8zMz7d))2iOqsaX1hLsqz0gT5q60uijG46JsjOmEhzFOa4ZmZ2h()TrqHKaIR)MGYOnAZH0PPqsaX1Ftqz8oY(qbWNpZm7FX(5aeLtmgGtCnN7Z87Gyk7Fsc05gb)dQX7WAGggyyeuijG6tcAyGHbAtsqX2a0x)nbLrd0WadJGcjbex)nbLra8zMz7d))2q)KGmKGI96o7dRnAG4bnmWW(xSFoar5eda91FtqzCDN9HfbpbfsciU(BckJgGsdyCggyyeuijG6tcAyGHbIdid41ynzb9zMz7d))2q)KGmKGInqC9rPeugTrd9tcYqck2R7SpSggyyGgGaAyGHrqHKaIRpkLGYOpFMz2)I9ZbikNymaN4Ao3N53bNcccXCuc05g6Nee0Wadd9tcYqck2aX1hLsqzeaFMz2)I9ZbikNy83Be6NcrWJz6FX(5aeLtm(7nc9tHigGsdyC2OXG(mZmZmdb7ZK2OrzVGl(mZmZmJp2F05WbB0OSxWfFMzMzMrGoabeB0aAi9gbj4Daw8zMzMzgle5WsTrJYEbx85ZmZmZmc(huB0iOqstZ)GU4ZmZmZm0pjOnAOFsqgsqXgiU(OuckJl(mZmZm7t6CHsTrJGcjbexFukbLXfF(mZmZmdl2ZCwicYngXcAJgiLGeCaCXNzMzMzqablc2pL4GEJGe0gnGgsVrqcEhadqPrW)GIPeiyT)mIPxSFkXbDXNzMzMzdxSFkXb1gnc(humLabR9Nrm9I9tjoOl(mZmZm7FrpaMyaAJgL9cU4ZmZyaFq0bF(8Tp8)BB(zpSEInfYAJgd6ZmZGO)j2WbB0OSxWfFMzgpInfYAJgVlu(uId6De4M3IHSpua8zMzMzgbp7ocCZddi6FInCaaJIne1NzMzMzMz2)I9ZbikNymaN4Ao3N53bb6ZEW4rSPqwavdzFOajd0WaddzFOa4ZmZmZmZmBF4)3gbfscO(KG2OnhsNMcjbuFsW7i7dfaFMzMzMzMze8S7euij0pjO9rhmckKeq9jbbsK(u(yFheZGbaL2DG(ShW8G5HjXMtilMhmpR7GfwqwaabaaJIne1NzMzMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqG(ShmEeBkK1W6JGacGpZmZmZmZmZmJfsVyrnk7f0NzMzMzMzgeDWNzMzMzq0bFMzgeDWhd4BF4)32HDaYovHiNlw(qK1tSPqwB0yqFMzge9pXgoyJgL9cU4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4ufICUy5dnEeBkKfq1q2hkqYanmWWq2hka(mZmZmZmZ2h()TrqHKaQpjOnAZH0PPqsa1Ne8oY(qbWNzMzMzMzgbp7obfscO(KG2hDWiOqsa1Neeir6t5J9DqUWoazTPke5CXYhIacaagfBiQpZmZmZmZmZm7FX(5aeLtmgGtCnN7Z87GCHDaYASqKZflFOXJytHSgwFeeqa8zMzMzMzMzMzSq6flQrzVG(mZmZmZmZGOd(mZmZmdIo4ZmZGOd(yaF7d))2iDUqPRNytHS2OXG(mZmi6FInCWgnk7fCXNzMXJytHS2OX7cLpL4GEhbU5Tyi7dfaFMzMzMrWZUJa38WaI(NydhaWOydr9zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DW1EUqPgpInfYcOAi7dfizGggyyi7dfaFMzMzMzMz7d))2iOqs3yelOnAZH0PPqs3yel4DK9HcGpZmZmZmZmcE2DckK0ngXcAF0bJGcjDJrSG24ObU2ZfkfeaJIne1NzMzMzMzMzM9Vy)CaIYjgdWjUMZ9z(DW1EUqPgpInfYAy9rqabWNzMzMzMzMzMXcPxSOgL9c6ZmZmZmZmdIo4ZmZmZmi6GpZmdIo4Jb8Tp8)BJyZ5E9eBkK1gng0NzMbr)tSHd2OrzVGl(mZmInN7ByZcrW(ShSrdZgZE2IpZmJhXMczTrJ3fkFkXb9ocCZBXq2hka(mZmZmJGNDhbU5Hbe9pXgoaGrXgI6ZmZmZmZm7FX(5aeLtmgGtCnN7Z87GtZnNBJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuijUHCc32OnhsNMcjXnKt4(oY(qbWNzMzMzMzgbp7obfsIBiNWT9rhmckKe3qoHBJJWqGBEyqS5CFdBwic2N9aagfBiQpZmZmZmZmZm7FX(5aeLtmgGtCnN7Z87GttHKSnKt424rSPqwdRpccia(mZmZmZmZmZmwi9If1OSxqFMzMzMzMzq0bFMzMzMbrh8zMzq0bFmGV9H)FByXE4brqioORNytHS2OXG(mZmi6FInCWgnk7fCXNzMHnKDceB0OSxWfFMzg)9HITnA8(Be4IpZm7WcTrJ3FJax8zMzB4NInK1gnE)ncCXNzMX)C4kb6CB0493iWfFMzgpInfYAJgVlu(uId6De4M3IHSpua8zMzMzgbp7ocCZddi6FInCaaJIne1NzMzMzMz2)I9ZbikNymaN4Ao3N53bXe2dpiccXb14rSPqwavdzFOajd0WaddzFOa4ZmZmZmZmBF4)3gbfs6gJybTrBoKonfs6gJybVJSpua8zMzMzMzMrWZUtqHKUXiwq7JoyeuiPBmIf0ghnWBS)bicxj2Bqamk2quFMzMzMzMzMz2(W)VnckKeZRjOmIf0gT5q60uijMxtqzel4DK9HcGpZmZmZmZmZmJGNDNGcjX8AckJybTp6GDNGcjX8AckJybTXrdeWq2jaTp6GHa38WaBi7eia4ZmZmZmZmZmZoS2DckKeZRjOmIf0ghnqUHFk2qwq7JoyiWnpm2WpfBila(mZmZmZmZmZSdRDNGcjX8AckJybTXrdCD7dfBq7JoyiWnpm4VpuSbWNzMzMzMzMzMDyT7euijMxtqzelOnoAGCHfcAF0bdbU5HXHfcGpZmZmZmZmZm7WA3jOqsmVMGYiwqBC0ax35Wvc05G2hDWqGBEyW)C4kb6CaaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bXe2dpiccXb14rSPqwdRpccia(mZmZmZmZmZmZmJfsVyrnk7f0NzMzMzMzMzMbrh8zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(2h()TX5FFbxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJZ)(cEdBwic2N9GnAyoGCBQWaE2mBQWaE2SfFMz2hlS2mEdBwic2N9WTZ0uijM0pFUAJgV)gbU4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4u)3xqJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuiPP(VVG2OnhsNMcjn1)9f8oY(qbWNpZmZmZmZmcE2De4MhgFSWAZ4nSzHiyF2d3ottHKys)85kagfBiQpZmZmZmZmZmBF4)3gbfsciU(OuckJ2OnhsNMcjbexFukbLX7i7dfaFMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bVHnKfAqaHaHAGggyyeuijG46JsjOmAyGHbAeuijeJa1q2hQbAyGHHSpua8zMzMzMzMzMzeuiPP(VVG2OrqHKM6)(cAtfgbfsciU(OuckJ(mZmZmZmZGOd(8zMzMzMzMrWZUtqHKM6)(cAF0bJGcjn1)9f04ime4MhgC(3xWByZcrW(ShaWOydr9zMzMzMzMzMz)l2phGOCIXaCIR5CFMFhCQ)7lOXJytHSgwFeeqa8zMzMzMzMzMzSq6flQrzVG(mZmZmZmZGOd(mZmZmdIo4ZmZGOd(yaF7d))2MZczCQ)7l46j2uiRnAmOpZmdI(NydhSrJYEbx8zMzRwzmHuJInleb7ZEWOhBMrp2(CO2FVT5Sqgr8zMzC(3xWByZcrW(ShSrdi3MkmGNnZMkmGNnBXNzM9XcRnJ3WMfIG9zpC7mnfsIj9ZNR2OX7VrGl(mZmEeBkK1gnExO8Peh07iWnVfdzFOa4ZmZmZmcE2De4Mhgq0)eB4aagfBiQpZmZmZmZS)f7NdquoXyaoX1CUpZVdc0Sqgno)7lOXJytHSaQgY(qbsgOHbggY(qbWNzMzMzMz2(W)VnckKeqC93eugTrBoKonfsciU(BckJ3r2hka(mZmZmZmZi4z3jOqsaX1Ftqz04iSzayuSHO(mZmZmZmZmZS9H)FBeuiPP(VVG2OnhsNMcjn1)9f8oY(qbWNpZmZmZmZmZmJGNDhbU5HXhlS2mEdBwic2N9WTZ0uijM0pFUcGrXgI6ZmZmZmZmZmZmZS9H)FBeuijG46JsjOmAJ2CiDAkKeqC9rPeugVJSpua8zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bVHnKfAqaHaHAGggyyeuijG46JsjOmAyGHbAeuijeJa1q2hQbAyGHHSpua8zMzMzMzMzMzMzgbfsAQ)7lOnAeuiPP(VVG2uHrqHKaIRpkLGYOpZmZmZmZmZmdIo4ZNzMzMzMzMzMrWZUtqHKM6)(cAF0bJGcjn1)9f04ime4MhgC(3xWByZcrW(ShaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bbAwiJgN)9f04rSPqwdRpccia(mZmZmZmZmZmZmJfsVyrnk7f0NzMzMzMzMzMbrh8zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(2h()TbOVGi0PPqsRNytHS2OXG(mZmi6FInCWgnk7fCXNzMXJytHS2OX7cLpL4GEhbU5Tyi7dfaFMzMzMrWZUJa38WaI(NydhaWOydr9zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqG4cIqnckKKXJytHSaQgY(qbsgOHbggY(qbWNzMzMzMz2(W)VnckK0ngXcAJ2CiDAkK0ngXcEhzFOa4ZmZmZmZmBF4)3gbfsI51eugXcAJ2CiDAkKeZRjOmIf8oY(qbWNzMzMzMzgbp7obfs6gJybTp6GrqHKyEnbLrSG2hDWiOqs3yelOnoAeuijMxtqzelOnoAGaXfeHccGrXgI6ZmZmZmZmZmZ(xSFoar5eJb4exZ5(m)oiqCbrOgbfsY4rSPqwdRpccia(mZmZmZmZmZmwi9If1OSxqFMzMzMzMzq0bFMzMzMbrh8zMzq0bFmGV9H)FB83FeeGg(zxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJyZ5(g2SqeSp7bB0WSNnBXNzMbOV(BckJ3WMfIG9zpyJ2AS4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o462FeeBo8ZA8i2uilGQHSpuGKbAyGHHSpua8zMzMzMzMTp8)BJGcjDJrSG2OnhsNMcjDJrSG3r2hka(mZmZmZmZ2h()TrqHK4ya9fbwCF4BJ2CiDAkKehdOViWI7d)pL4GEhzFOa4ZmZmZmZmJGNDNGcjDJrSG24ObofwshwqFMzMzMzMzhwJGcjDJrSG24ObYq4hRdkOpZmZmZmZSdRrqHK4ya9fbwCF4BJJg40a1uFBQet4yoS(PbkGMJNQG(mZmZmZmZoSgbfsIJb0xeyX9HVnoAGtdut9TPsmHJ5WTP60afMzo(gOpZmZmZmZSdRrqHK4ya9fbwCF4BJJg40a1uFBQet4yoSoU5YuWmd6ZmZmZmZm7WAeuijogqFrGf3h(24Obonqn13MkXeoMdafhVomZGayuSHO(mZmZmZmZmZS9H)FBeuijUHCc32OnhsNMcjXnKt4(oY(qbWNzMzMzMzMzMTp8)BJGcjbex)nbLrB0MdPttHKaIR)MGY4DK9HcGpZmZmZmZmZmBF4)3gbchdOViWcR)eBOnA)l2phGOCIbcxj2Be8iWnKp9oMBXW8Isqx3(JGCheR9NriliaaGdpY1eugXcIZghnG95ZmZmZmZmZmZi4z3jq4ya9fbwy9NydTp6GrqHK4gYjCBCegcCZddInN7ByZcrW(ShSp6GrqHKaIR)MGYOXryiWnpma0x)nbLXByZcrW(ShaWOydr9zMzMzMzMzMzMz2)I9ZbikNymaN4Ao3N53bx3(JGyZHFwJhXMcznS(iiGa4ZmZmZmZmZmZmZmwi9If1OSxqFMzMzMzMzMzgeDWNzMzMzMzgeDWNzMzMzq0bFMzgeDWhd4BF4)32hqbKLGcxpXMczTrJb9zMzq0)eB4GnAu2l4IpZmJyZ5(g2SqeSp7bB0WSNnBXNzMbOV(BckJ3WMfIG9zpyJ2AS4ZmZ4rSPqwB04DHYNsCqVJa38wmK9HcGpZmZmZi4z3rGBEyar)tSHdayuSHO(mZmZmZmZ(xSFoar5eJb4exZ5(m)o4uauazjOqJhXMczbunK9HcKmqddmmK9HcGpZmZmZmZS9H)FBeuiPBmIf0gT5q60uiPBmIf8oY(qbWNzMzMzMz2(W)VnckKeZRjOmIf0gT5q60uijMxtqzel4DK9HcGpZmZmZmZS9H)FBeuijG46VjOmAJ2CiDAkKeqC93eugVJSpua8zMzMzMzMrWZUtqHKUXiwq7JoyeuijMxtqzelO9rhmckKeqC93eugTp6GrqHKUXiwqBC0ax3bf5I0FIne0(OdgbfsI51eugXcAJJgixOydzbTp6GrqHKaIR)MGYOXryadGrXgI6ZmZmZmZmZmZ(xSFoar5eJb4exZ5(m)o4uauazjOqJhXMcznS(iiGa4ZmZmZmZmZmZyH0lwuJYEb9zMzMzMzMbrh8zMzMzgeDWNzMbrh8Xa(89Vy)CaIYjg8i2uiltilNe8H2OXG(mZmEeBkKfXgng0NzMzMzZp7H1tSPq2fFMzMzMDyhGStviY5ILpez9eBkKDXNzMzMzKoxO01tSPq2fFMzMzMrS5CVEInfYU4ZmZmZmSyp8Giieh01tSPq2fFMzMzMX5FFbxpXMczx8zMzMz2CwiJt9FFbxpXMczx8zMzMzgG(cIqNMcjTEInfYU4ZmZmZm(7pccqd)SRNytHSl(mZmZm7dOaYsqHRNytHS(mZmgyXNzMHSpuKBhUphQnAmidS4ZmZyVqTrJ3fkFkXb9ocCZBX2NdDAuEha8zMzMzgcCZddK9HIC7W95qTrJbzaFMzMzMX7WAi7dDXiOqsgbQH1NGf5((COtJY7aGnC8zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqUphQHSpuGKbAyGHHSpuddmmqd0WadJGcjHbbfscaFMzMzMzMz)l2phGOCIXaCIR5CFMFFoKonfsI51eugXcEhzFOaaGpZmZmZmZme4MhqI9cD9eBkKf5oY(qbWNzMzMzq0bF(mZmZm7FX(5aeLtmgGtCnN7Z87Gm3hkIrp2(COajd0WaddZecCZddK9HIC7W95qbWNzMzMz)l2phGOCIXaCIR5CFMFhbU5HbY(qrUD4(COa4ZmZmZmEhwJWgnmtiWnpmq2hkYTd3NdDXaEXwbSnC8zMzMzMzMTp8)BdzFO2OHa38WazFOi3oCFou8e48zMzMzMzM9Vy)CaIYjgdWjUMZ9z(DqUphkb6CdzFO2DckK9tpSaaKmqddmmK9HcGpZmZmZmZSHd3Nd9oY(qbWNzMzMzq0bFMzgeDyXNzMXEHUEInfYIyJgVlu(uId6De4M3IHSpua8zMzMzgVdRX1fJhXMczncudRpblYDe4Mhg8i2uilca2WXNzMzMzMzgbp7opInfYcK4rSPq27i7dfaamk2quFMzMzMzMzMzgcCZddK9HIC7W95qXJzcbU5HbY(qrUD4(COgGsdyC2OHSpuFMzMzMzMzMzglKEXI6ZmZmZmZmdIo4ZmZmZmi6GpZmdIo4Jb857FX(5aeLtmgGtCnN7ZCB04DHYNsCqVFMaZia(mZmcE29b4exZbWOydr9zMzMzgwSeO07anKEJGe8oaa4ZmZmZmmfY5TZzJWbm9Iew3ptGzeaFMzMzMHflbk9oa(mZmi6Gpi6GpF)l2phGOCIbcxj2BeB0yqFMz2Qvm8ZYsCy9zMz4bgNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4SrB2IpZmZmZWdYn8tXgYcIZgTzl(mZmZmdp4A)eBqC2OnBXNzMzMz4bXK9NcbXzJgWl(mZmZmdpitSjG7beqC2Ob8IpZmZmZwTIHWpwhuJjxj2BeFMzMzMHhKlOWva(JoahSPaiqeqC2Ob8IpZmZmZWdEBYZka)rhGd2uaeicioB0aEXNzMzMz4b5ONjraXzJgWl(mZmZmdpiqFHIaIZgnGx8zMzMzgEqUGcxb4p6aCWw7NpebeNnAaV4ZmZmZm8G3M8ScWF0b4GT2pFicioB0aEXNzMzMz4bXKZg(zjHaIZgnGx8zMzMzgEqUGcxb4p6aCWyo5HDabeNnAaV4ZmZmZm8G3M8ScWF0b4GXCYd7acioB0aEXNzMzMz4bz4ND((tWjebeNnAaV4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2Ob8IpZmZmZWdIP)5ZHSiG4Srd4fFMzMzMHhCDSheKjotIaIZgnGx8zMzMzgEqg(rhqaXzJ2SfFMzgdS4ZmZwTct(7)abQpZmd)AGZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4Srd4fFMzMzMHhKj2eW9acioB0aEXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0aEXNzMzMz4bVn5zfG)OdWbBkacebeNnAaV4ZmZmZm8GC0ZKiG4SrB2IpZmZmZWdc0xOiG4SrB2IpZmZmZWdYfu4ka)rhGd2A)8HiG4Srd4fFMzMzMHh82KNva(JoahS1(5draXzJgWl(mZmZmdpiMC2WpljeqC2Ob8IpZmZmZWdYfu4ka)rhGdgZjpSdiG4Srd4fFMzMzMHh82KNva(JoahmMtEyhqaXzJgWl(mZmZmdpid)SZ3FcoHiG4SrB2IpZmZmZWdYK(5eIaIZgTzl(mZmZmdp46jqOgdHFSoOiG4SrB2IpZmZmZWdIP)5ZHSiG4SrB2IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2OnBXNzMXal(mZSvRa8fkfY6ZmZWJ5WzJgd6ZmZmZSvRMclPdRXKRe7nIpZmZmZWdUU9HInioB0MT4ZmZmZm8GCd)uSHSG4SrB2IpZmZmZWdU2pXgeNnAaV4ZmZmZm8GyY(tHG4SrB2IpZmZmZWdYeBc4EabeNnAZw8zMzMz2Qvme(X6GAm5kXEJ4ZmZmZm8GCbfUcWF0b4GnfabIaIZgnGx8zMzMzgEWBtEwb4p6aCWMcGaraXzJgWl(mZmZmdpih9mjcioB0aEXNzMzMz4bb6lueqC2Ob8IpZmZmZWdYfu4ka)rhGd2A)8HiG4SrB2IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAaV4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0aEXNzMzMz4bVn5zfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2Ob8IpZmZmZWdIP)5ZHSiG4Srd4fFMzMzMHhCDSheKjotIaIZgnGx8zMzMzgEqg(rhqaXzJ2SfFMzgdS4ZmZwTAQEMFb9zMz4xtC2OXG(mZmZmB1QPWs6WAm5kXEJ4ZmZmZm8GRBFOydIZgTzl(mZmZmdpi3WpfBilioB0aEXNzMzMz4bx7NydIZgTzl(mZmZmdpiMS)uiioB0MT4ZmZmZm8GmXMaUhqaXzJ2SfFMzMzMTAfdHFSoOgtUsS3i(mZmZmdpixqHRa8hDaoytbqGiG4Srd4fFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJgWl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2OnBXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4SrB2IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4SrB2IpZmZmZWdUEceQXq4hRdkcioB0aEXNzMzMz4bX0)85qweqC2Ob8IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2OnBXNzMXal(mZSvRWewcic1NzMHhihNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4Srd4fFMzMzMHhKB4NInKfeNnAZw8zMzMzgEW1(j2G4SrB2IpZmZmZWdIj7pfcIZgTzl(mZmZmdpitSjG7beqC2OnBXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0MT4ZmZmZm8G3M8ScWF0b4GnfabIaIZgTzl(mZmZmdpih9mjcioB0MT4ZmZmZm8Ga9fkcioB0MT4ZmZmZm8GCbfUcWF0b4GT2pFicioB0aEXNzMzMz4bVn5zfG)OdWbBTF(qeqC2OnBXNzMzMz4bXKZg(zjHaIZgTzl(mZmZmdpixqHRa8hDaoymN8WoGaIZgTzl(mZmZmdp4TjpRa8hDaoymN8WoGaIZgTzl(mZmZmdpid)SZ3FcoHiG4SrB2IpZmZmZWdYK(5eIaIZgnGx8zMzMzgEW1tGqngc)yDqraXzJ2SfFMzMzMHhet)ZNdzraXzJgWl(mZmZmdp46ypiitCMebeNnAZw8zMzMzgEqg(rhqaXzJgWl(mZmgyXNzMTAfMc)uSnmZOeZXM6ZmZWJ5JZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4Srd4fFMzMzMHhKj2eW9acioB0MT4ZmZmZSvRyi8J1b1yYvI9gXNzMzMz4b5ckCfG)OdWbBkacebeNnAaV4ZmZmZm8G3M8ScWF0b4GnfabIaIZgnGx8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4Srd4fFMzMzMHhetoB4NLecioB0aEXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4Srd4fFMzMzMHhKHF257pbNqeqC2OnBXNzMzMz4bzs)CcraXzJ2SfFMzMzMHhC9eiuJHWpwhueqC2OnBXNzMzMz4bX0)85qweqC2OnBXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0MT4ZmZyGfFMz2QvmX(t6J6ZmZWJzHZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0aEXNzMzMz4bXK9NcbXzJ2SfFMzMzMHhKj2eW9acioB0aEXNzMzMzRwXq4hRdQXKRe7nIpZmZmZWdYfu4ka)rhGd2uaeicioB0aEXNzMzMz4bVn5zfG)OdWbBkacebeNnAZw8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAZw8zMzMzgEqUGcxb4p6aCWyo5HDabeNnAZw8zMzMzgEWBtEwb4p6aCWyo5HDabeNnAZw8zMzMzgEqg(zNV)eCcraXzJ2SfFMzMzMHhKj9ZjebeNnAaV4ZmZmZm8GRNaHAme(X6GIaIZgnGx8zMzMzgEqm9pFoKfbeNnAaV4ZmZmZm8GRJ9GGmXzseqC2OnBXNzMzMz4bz4hDabeNnAZw8zMzmWIpZmB1Q1(Nd9zMz4XSXzJgd6ZmZmZSvRMclPdRXKRe7nIpZmZmZWdUU9HInioB0aEXNzMzMz4b5g(PydzbXzJ2SfFMzMzMHhCTFInioB0MT4ZmZmZm8GyY(tHG4SrB2IpZmZmZWdYeBc4EabeNnAZw8zMzMz2Qvme(X6GAm5kXEJ4ZmZmZm8GCbfUcWF0b4GnfabIaIZgTzl(mZmZmdp4TjpRa8hDaoytbqGiG4SrB2IpZmZmZWdYrptIaIZgTzl(mZmZmdpiqFHIaIZgTzl(mZmZmdpixqHRa8hDaoyR9ZhIaIZgTzl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2OnBXNzMzMz4b5ckCfG)OdWbJ5Kh2beqC2Ob8IpZmZmZWdEBYZka)rhGdgZjpSdiG4SrB2IpZmZmZWdYWp789NGticioB0MT4ZmZmZm8GmPFoHiG4Srd4fFMzMzMHhC9eiuJHWpwhueqC2OnBXNzMzMz4bX0)85qweqC2Ob8IpZmZmZWdUo2dcYeNjraXzJ2SfFMzMzMHhKHF0beqC2Ob8IpZmJbw8zMzRwXWp7(WNR(mZm8CK4SrJb9zMzMz2QvtHL0H1yYvI9gXNzMzMz4bx3(qXgeNnAaV4ZmZmZm8GCd)uSHSG4SrB2IpZmZmZWdU2pXgeNnAZw8zMzMzgEqmz)PqqC2OnBXNzMzMz4bzInbCpGaIZgTzl(mZmZmB1kgc)yDqnMCLyVr8zMzMzgEqUGcxb4p6aCWMcGaraXzJ2SfFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJ2SfFMzMzMHh82KNva(JoahS1(5draXzJ2SfFMzMzMHhetoB4NLecioB0MT4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0aEXNzMzMz4bVn5zfG)OdWbJ5Kh2beqC2OnBXNzMzMz4bz4ND((tWjebeNnAZw8zMzMzgEqM0pNqeqC2Ob8IpZmZmZWdUEceQXq4hRdkcioB0MT4ZmZmZm8Gy6F(CilcioB0aEXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0aEXNzMXal(mZSvRw7bLR(mZm8apdNnAmOpZmZmZwTAkSKoSgtUsS3i(mZmZmdp462hk2G4SrB2IpZmZmZWdYn8tXgYcIZgnGx8zMzMzgEW1(j2G4SrB2IpZmZmZWdIj7pfcIZgnGx8zMzMzgEqMyta3diG4Srd4fFMzMzMTAfdHFSoOgtUsS3i(mZmZmdpixqHRa8hDaoytbqGiG4Srd4fFMzMzMHh82KNva(JoahSPaiqeqC2OnBXNzMzMz4b5ONjraXzJ2SfFMzMzMHheOVqraXzJ2SfFMzMzMHhKlOWva(JoahS1(5draXzJgWl(mZmZmdp4TjpRa8hDaoyR9ZhIaIZgTzl(mZmZmdpiMC2WpljeqC2Ob8IpZmZmZWdYfu4ka)rhGdgZjpSdiG4Srd4fFMzMzMHh82KNva(JoahmMtEyhqaXzJ2SfFMzMzMHhKHF257pbNqeqC2OnBXNzMzMz4bzs)CcraXzJgWl(mZmZmdp46jqOgdHFSoOiG4Srd4fFMzMzMHhet)ZNdzraXzJ2SfFMzMzMHhCDSheKjotIaIZgTzl(mZmZmdpid)OdiG4SrB2IpZmJbw8zMzRwHPSxed(mZm8admoB0yqFMzMzMTA1uyjDynMCLyVr8zMzMzgEW1TpuSbXzJ2SfFMzMzMHhKB4NInKfeNnAaV4ZmZmZm8GR9tSbXzJ2SfFMzMzMHhet2FkeeNnAZw8zMzMzgEqMyta3diG4SrB2IpZmZmZwTIHWpwhuJjxj2BeFMzMzMHhKlOWva(JoahSPaiqeqC2OnBXNzMzMz4bVn5zfG)OdWbBkacebeNnAZw8zMzMzgEqo6zseqC2OnBXNzMzMz4bb6lueqC2OnBXNzMzMz4b5ckCfG)OdWbBTF(qeqC2Ob8IpZmZmZWdEBYZka)rhGd2A)8HiG4SrB2IpZmZmZWdIjNn8ZscbeNnAaV4ZmZmZm8GCbfUcWF0b4GXCYd7acioB0MT4ZmZmZm8G3M8ScWF0b4GXCYd7acioB0MT4ZmZmZm8Gm8ZoF)j4eIaIZgTzl(mZmZmdpit6NticioB0aEXNzMzMz4bxpbc1yi8J1bfbeNnAaV4ZmZmZm8Gy6F(CilcioB0aEXNzMzMz4bxh7bbzIZKiG4SrB2IpZmZmZWdYWp6acioB0MT4ZmZyGfFMz2QvykK0b1a8fkfY6ZmZWd8AGZgng0NzMzMzRwnfwshwJjxj2BeFMzMzMHhCD7dfBqC2OnBXNzMzMz4b5g(PydzbXzJgWl(mZmZmdp4A)eBqC2OnBXNzMzMz4bXK9NcbXzJ2SfFMzMzMHhKj2eW9acioB0MT4ZmZmZSvRyi8J1b1yYvI9gXNzMzMz4b5ckCfG)OdWbBkacebeNnAaV4ZmZmZm8G3M8ScWF0b4GnfabIaIZgTzl(mZmZmdpih9mjcioB0MT4ZmZmZm8Ga9fkcioB0MT4ZmZmZm8GCbfUcWF0b4GT2pFicioB0MT4ZmZmZm8G3M8ScWF0b4GT2pFicioB0MT4ZmZmZm8GyYzd)SKqaXzJ2SfFMzMzMHhKlOWva(JoahmMtEyhqaXzJgWl(mZmZmdp4TjpRa8hDaoymN8WoGaIZgTzl(mZmZmdpid)SZ3FcoHiG4Srd4fFMzMzMHhKj9ZjebeNnAZw8zMzMzgEW1tGqngc)yDqraXzJgWl(mZmZmdpiM(NphYIaIZgTzl(mZmZmdp46ypiitCMebeNnAZw8zMzMzgEqg(rhqaXzJ2SfFMzgdS4Jb89Vy)CaIYjga6R)MGY46o7dlInAmOpZmdeid41yn5ZJhh5ah5ah5a4ITALHjNdRpZmdeid41yn5ZJhpE84XJh4ITALTUdjshuFMzgiqgWRXAYNhpGH84nBg4ITALH5fL)HePdQpZmdeid41yn5ZJ3SzywZggaxSvRSP6Nf6ZmZabYaEnwt(849XCyoGCieCXwTY4ySi47ZmZabYaEnwt(84XJhM9SzZaxSvRmUHZHOdFwg9zMzGazaVgRjFE8Gy(85JzpdCXwTYMclLG3Np1NzMbcKb8ASM85XB2m(85XdCXwTYamKGDFoK8XaKPKPKzszjMphYs(gzMugXcsMj)le6HezMiyFMKlOKzIG9zsUGof(ucoHKzY)cHEiXbkJybjZeH(PWlSg(uizM8XgYNRKzc5eIsjZK)fc9qImZvRmU5cxUXHPkhpfmDQ0hVlu(uId69)EJq)uiYIbbWNzM9Vy)CaIYjg)9gH(PqeB0(7nc9tHi(8zMz7d))22NdDAuEhB0aAiL7ZHonkVZDa8zMz)l2phGOCIbpInfYYeYYjbFiqI9c9((COtJY7aGpZmB1kBD7dcK7ZHEhaFMzglKEXIAu2lOpi6GpYmHCcrPiKzYnx4Ynomv54PGPtLKzY)cHEiXbSjgGKzsjibhitjZKcbekWyYHaLsM5uDAGgW3iZCF(dKVrMj9VHO01G8nYmjDTPeKVrMsMsMj9VHOuY3iZK01Msq(gzkzkzMde84rW)AtzK8nYmjDTPeKVrMsMsMj7NpK8nYmjDTPeKVrMsMsMj7zdjFJmtsxBkb5BKPKPKzY7ZNsCqjFJmtsxBkb5BKPKPKzsGoN9CHf5BKzs6AtjiFJmLmLmtS4el6FdrPKVrMjPRnLG8nYuYuYuYmjqPqw0)EQHSiehuYafMJmt0ls3yjMphYIqgOaMmtw4CId6ngXcsMjb)dkzMuiGqbMmtmdqjZKcbekWR7Gs)eOKGOuYm5cM3BmNgt5yYmjgiZeZqGco5uUOhUph608pOKzsHacf41FqPKzYXacwSqeKj)msMj)ZzpCMe9geqOCm6FInCG8eKzsGsq5ac9ZsHdKbkGjZK)5ShotIsEcYuYuYm5Kmqb8AUgatMsMma \ No newline at end of file +dmvZNbGiGEeusWLueLQrPICkvuRcvjQxPKIQzPe3sjzxaQHPO6yqHLPKcpdkPmnLuPRbqvTnuLiFdkj14GsQCoOKQwNsQ4DkPi3tH2husYbrvQfIQeEiaPjcLOlIQK2OsQ6JasnsaXjvuSsv1lHscntfHBQKs7eqYprf1qHs4Oaelvru8uuQPcGRQikLTQiQ(kIsNvruYBHQMlav5UiYErj)fvKblhwvwmQIhJQAYk4YG2mQ0NvKgnu0Pry1qjr9AfrMTsDBOYUH0VvPHdL64auz5O45qmDKUUkSDuHVRO04bOCEevRxjfL3JOW8HsICFefTFAwyWcawSFSaGfLfBewSxdGb8bgJ1GfBCSypWI9alayXgW4mxUiqklGAfw96oNfBY5mxUiqklGcWhRnNf7hFkbhqayiMofYS27aKfqTcJ5SyJG9JpKfqnNfBcukKb9TNCidcXfLfqH1yXgbU5Ifxcukl2aWzSycED9aWI9BtmfLf7j411dal2ycjMIjL16xxa)5ynEP5ynS(1ynWAynSASAS(1Gf3vRlVel277BGfaSytGoL5EGnlayXg3XMsWcawuwuwSPVneLYcawSXDSPeSaGfLfLfB6BdrPRblayXg3XMsWcawuwuwSpqGCI)(HGWIhwSzE8HSaGfBChBkblayrzrzXM5UHSaGfBChBkblayrzrzXgBoWM(2quklayXg3XMsWcawuwuwS5(4tjUOSaGfBChBkblayrzrzXEGGlxc(hBk5SaGfBChBkblayrzrzrzX(HsG7rHS4fSyZaNsCrbGCSHSypqo6dhb)Pm3dSzXgcyy)qhGdS4HfBIbwS59b9oX9szXEwIbkMSw)6c4phRXlnhdSAS61fRdWFDXyDxxwCxTU8sSypqGGv(aLpLGdil2V9MfB0dCaWqmDkKbHfqHbl2eOeuoHqFmu4alGcdwSPmetNczybal2iyENLZOSyJG5DwoJYB(ucoGSOSOSyZNfaSakmybal2uiGrXy9xukBI1milGAnMZI9JpLGdiametNczw7DaYcOwHXCwSF8PexuewaWInc9Xqzbal2dxoHdIG8MczXdlkl2eOeuwaWI9WLt8pqOxCS4fSyZ)aHEXXI9(Y)TTbiphtTrJ7BJa9VV8FBJG)ffljqWE)ihlpyEuIlQnAyn)(xTYiOqCa1dhCXiOqCtqGoPfJGcXbihVnbL8fJGcXnbKd4EXiOqCRLaDcihW9IrqH4aGCSHlgbfIJ9bpaqo2WfckehB6J)Ka07bkDXiOqC8kG7Ga7jU8xmckehaqaJEWaxme4EJfme8Hlg)9dbzgSCXqo4H)(HGmdwUy8qGoaa5ydxGag2p(ZGLlgcKodwUyeiakZJlLaD6Kb(McrP2Ob0q6muiUzq5EpHSV0Z(xTY23lDg(x0fBFVuG6HdUy77LcihpukbL8fJ)bddeLp5ZGLl2(EPaYXBtqjFX2x(tcoSyeiaYbeHodfIBXaChqe6my5IrGWB(ucoG2Ob0q6e3lL9(sNbL79eY(sp7F1kBcc0jzixCqkboiInCHig6LAZEzMK)9L)BBCpq5tjUO2uiDgke3eeOt6eY(sp73mZyG0dgudOH0jUxk79Lobb6KoHSV0Z(HOd(3x(VTX9aLpL4IAtH0zOqCa1dh8eY(sp73mZyG0dgudbUH8PNwJfdOH0jUxk79Lodk37jK9LE(SFi6G)9L)BBCpq5tjUO2uiDgkehaKJn8eY(sp73mZyG0dgudbUH8PN4LwmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muio2h8qjhB4jK9LE2VzMXaPhmOgcCd5tpHvVyanKodfIBguU3ttH0zOqCtqGoPti7l985Z(HOd(3x(VTX9aLpL4IAtH0zOqCta5aUpHSV0Z(nZmgi9Gb1qGBiF6P1DXaAiDgke3mOCVNMcPZqH4MGaDsNq2x65ZN9drh8VV8FBJ7bkFkXf1McPZqH4M83(aEczFPN9BMzmq6bdQHa3q(0tyGXIb0q6muiUzq5EpnfsNHcXnbb6KoHSV0ZNp7hIo4FF5)2g3du(uIlQnfsNHcXbihpukbL8ti7l9SFZmJbspyqne4gYNEcRTyanKoX9szVV0zq5EpHSV0ZN9drh8VV8FBJ7bkFkXf1McPZqH4aKJ3MGs(jK9LE2VzMXaPhmOgcCd5tpH1wmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muioEfWDqG9ex(pkXf9eY(sp73mZyG0dgudbUH8PNW6xmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muiUz4FrpHSV0Z(nZmgi9Gb1qGBiF6jmMVyanKodfIBguU3ttH0zOqCtqGoPti7l985Z(HOd(97FF5)22WDI7LAJg3du(uIl6jK9LE2VzM9oyECcIYbWdqEoMoXD6jWjUxkb6udzFPRJbAadSHSV0Z(nZSjUxk79LEczFPN973mZ2x(VTrqH4MH)f1gTPq6muiUz4FrpHSV0Z(nZS9L)BBeuioG6HdAJ2uiDgkehq9WbpHSV0Z(nZS9L)BBeuioa54HsjOKBJ2uiDgkehGC8qPeuYpHSV0Z(nZS9L)BBeuioa54TjOKBJ2uiDgkehGC82euYpHSV0Z(9BMzVdMhNGOCa8aKNJPtCNEcelzEZsGo1i4FrnUxgd0agyJGcXbupCqdyGnqBwckMgG74TjOKBGgWaBeuioa54TjOKF2VzMTV8FBd9HdswckMa6DFzSr7DW84eeLdGbChVnbLCa9UVmi4jOqCaYXBtqj3wZnmizadSbIh0agyJGcXbupCqdyGnqsaEySgRldOFZmBF5)2g6dhKSeumbKJhkLGsUnAOpCqYsqXeqV7lJbmWgObyGgWaBeuioa54HsjOK73VzM9oyECcIYbWdqEoMoXD6jqEJGqmfLaDQH(WbbnGb2qF4GKLGIjGC8qPeuYp73mZEhmpobr5a43EJqFuicEScVdMhNGOCa8BVrOpkeXwZnmizJgz43mZmZmemVZAJgL5aU43mZmZm(y(qNchSrJYCax8BMzMzgb6aeWSrdOHuaiWbpDEXVzMzMzmqKld1gnkZbCXVFZmZmZi4FrTrJGcXnd)l6IFZmZmZqF4G2OH(Wbjlbfta54HsjOKV43mZmZShU7bk1gnckehGC8qPeuYx873mZmZmSzUtzGiiaqo2qB0aPe4GdGl(nZmZmdcyytW8OexuaiWbTrdOHuaiWbpD2wZnc(xuSKab79JCS8G5rjUOl(nZmZmB4G5rjUO2OrW)IILeiyVFKJLhmpkXfDXVzMzMzVd6fiedqB0OmhWf)Mzgz6hIo43V)9L)BBtV7H1tSPqgB0id)Mzge9XZgoyJgL5aU43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbc039GXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aQhoOnAtH0zOqCa1dh8eY(sp73mZmZmZmJGRDIGcXH(WbTh6GrqH4aQho46G7r5J5jWj7dR52jG(UhWkHvInXMdidwjSsa6fBSHmNbpF2Oycr9BMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceOV7bJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32UmdqMjde5EWWhISEInfYyJgz43mZGOpE2WbB0OmhWf)MzgxInfYyJg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEoMoXD6jWjde5EWWhACj2uiZAYq2x66yGgWaBi7l9SFZmZmZmZS9L)BBeuioG6HdAJ2uiDgkehq9WbpHSV0Z(nZmZmZmZi4ANiOqCa1dh0EOdgbfIdOE4GRdUhLpMNa5mZaKXMmqK7bdFic45ZgftiQFZmZmZmZmZm7DW84eeLdGhG8CmDI70tGCMzaYymqK7bdFOXLytHmg2peeWZ(nZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KP)9L)BB4UhO01tSPqgB0id)Mzge9XZgoyJgL5aU43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbU27bk14sSPqM1KHSV01XanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qB0McPZqH4aGCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckehaKJn0ghnW1EpqPGNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNax79aLACj2uiJH9dbb8SFZmZmZmZmZmJbspyqnkZb0VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)2gXMJ96j2uiJnAKHFZmdI(4zdhSrJYCax8BMzeBo2aGjdebZ7EWgnSoSU5l(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGZmbhBJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXnbKd42gTPq6muiUjGCa3Nq2x6z)MzMzMzMzeCTteuiUjGCa32dDWiOqCta5aUnSkdbU5cmXMJnayYarW8UhoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX0jUtpbodfIZ2qoGBJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32WM5YfIGqCrxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmdtidpi2OrzoGl(nZm(7lftB04(2iWf)Mz2LbAJg33gbU43mZ2WhftiJnACFBe4IFZmJ)9ojc0P2OX9TrGl(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGybZLlebH4IACj2uiZAYq2x66yGgWaBi7l9SFZmZmZmZS9L)BBeuioaihBOnAtH0zOqCaqo2Wti7l9SFZmZmZmZmcU2jckehaKJn0EOdgbfIdaYXgAJJgiamVbiYKi2BWZgftiQFZmZmZmZmZmBF5)2gbfIJ9bpuYXgAJ2uiDgkeh7dEOKJn8eY(sp73mZmZmZmZmZi4ANiOqCSp4Hso2q7HoyNiOqCSp4Hso2qBC0abcKHhq7HoyiWnxGXeYWdYz)MzMzMzMzMz2LXorqH4yFWdLCSH24Obob8rXeYaAp0bdbU5c8g(Oyczo73mZmZmZmZmZUm2jckeh7dEOKJn0ghnqaDFPycAp0bdbU5cm)9LI5z)MzMzMzMzMz2LXorqH4yFWdLCSH24ObYzgiO9qhme4MlWxg4z)MzMzMzMzMz2LXorqH4yFWdLCSH24ObcO37KiqNcAp0bdbU5cm)7DseOtpF2Oycr9BMzMzMzMzMzMz27G5Xjikhapa55y6e3PNaXcMlxiccXf14sSPqgd7hcc4z)MzMzMzMzMzMzMXaPhmOgL5a63mZmZmZmZmZGOd(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)3244TpGRNytHm2Org(nZmi6JNnCWgnkZbCXVzMXXBFabatgicM39GnAynaFJx2Wy(CJx2Wy(8f)Mz2dBS3KdaMmqemV7baUZqH4ytF8NKnACFBe4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9e4K)2hqJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXn5V9b0gTPq6muiUj)TpGNq2x6z)(nZmZmZmZi4ANqGBUa)Wg7n5aGjdebZ7EaG7muio20h)jD2Oycr9BMzMzMzMzMz7l)32iOqCaYXdLsqj3gTPq6muioa54HsjOKFczFPN9BMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceamHmqdcyeiud0agyJGcXbihpukbLCdyGnqJGcXHyeOgY(snqdyGnK9LE2VzMzMzMzMzMrqH4M83(aAJgbfIBYF7dOXlBeuioa54HsjOK73mZmZmZmdIo43VzMzMzMzgbx7ebfIBYF7dO9qhmcke3K)2hqdRYqGBUaZXBFabatgicM39WzJIje1VzMzMzMzMzM9oyECcIYbWdqEoMoXD6jWj)TpGgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTnLbs(K)2hW1tSPqgB0id)Mzge9XZgoyJgL5aU43mZwTYydPgftgicM39GrV2CJET99sT3EBtzGKJ43mZ44TpGaGjdebZ7EWgnaFJx2Wy(CJx2Wy(8f)Mz2dBS3KdaMmqemV7baUZqH4ytF8NKnACFBe4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiqZaj344TpGgxInfYSMmK9LUogObmWgY(sp73mZmZmZmBF5)2gbfIdqoEBck52OnfsNHcXbihVnbL8ti7l9SFZmZmZmZmcU2jckehGC82euYnSkB(zJIje1VzMzMzMzMzMTV8FBJGcXn5V9b0gTPq6muiUj)TpGNq2x6z)(nZmZmZmZmZmcU2je4MlWpSXEtoayYarW8Uha4odfIJn9XFsNnkMqu)MzMzMzMzMzMzMTV8FBJGcXbihpukbLCB0McPZqH4aKJhkLGs(jK9LE2VzMzMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceamHmqdcyeiud0agyJGcXbihpukbLCdyGnqJGcXHyeOgY(snqdyGnK9LE2VzMzMzMzMzMzMzeuiUj)TpG2OrqH4M83(aA8YgbfIdqoEOuck5(nZmZmZmZmZmi6GF)MzMzMzMzMzgbx7ebfIBYF7dO9qhmcke3K)2hqdRYqGBUaZXBFabatgicM39WzJIje1VzMzMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceOzGKBC82hqJlXMczmSFiiGN9BMzMzMzMzMzMzgdKEWGAuMdOFZmZmZmZmZmdIo43mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBdWDarOZqH4wpXMczSrJm8BMzq0hpB4GnAuMd4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiGCarOgbfIZ4sSPqM1KHSV01XanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qB0McPZqH4aGCSHNq2x6z)MzMzMzMz7l)32iOqCSp4Hso2qB0McPZqH4yFWdLCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckeh7dEOKJn0EOdgbfIdaYXgAJJgbfIJ9bpuYXgAJJgiGCarOGNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNabKdic1iOqCgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTXF)qqaA4Jz9eBkKXgnYWVzMbrF8SHd2OrzoGl(nZmInhBaWKbIG5DpyJgw385l(nZma3XBtqjhamzGiyE3d2OTgl(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGa6(HGytHpgJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXba5ydTrBkKodfIdaYXgEczFPN9BMzMzMzMTV8FBJGcXXRaUdcSN4Y3gTPq6muioEfWDqG9ex(pkXf9eY(sp73mZmZmZmJGRDIGcXba5ydTXrdK3m4UmG(nZmZmZmZUmgbfIdaYXgAJJgizHpSVOG(nZmZmZmZUmgbfIJxbCheypXLVnoAGZautoatwybVYP1pdqb086Kb0VzMzMzMz2LXiOqC8kG7Ga7jU8TXrdCgGAYbyYcl4vobWKzgGcRiVcaOFZmZmZmZSlJrqH44va3bb2tC5BJJg4ma1KdWKfwWRCcqNGZ8gRiOFZmZmZmZSlJrqH44va3bb2tC5BJJg4ma1KdWKfwWRCcO4vafRi4zJIje1VzMzMzMzMzMTV8FBJGcXnbKd42gTPq6muiUjGCa3Nq2x6z)MzMzMzMzMz2(Y)TnckehGC82euYTrBkKodfIdqoEBck5Nq2x6z)MzMzMzMzMz2(Y)TnceEfWDqGn2pE2qB0Ehmpobr5ayKjrS3i4rGBiF6jS2InzdLGcO7hcYjqS3pYHmGNptcpYbpuYXgsYghnm873mZmZmZmZmZi4ANiq4va3bb2y)4zdTh6GrqH4MaYbCByvgcCZfyInhBaWKbIG5Dpyp0bJGcXbihVnbLCdRYqGBUad4oEBck5aGjdebZ7E4SrXeI63mZmZmZmZmZmZS3bZJtquoaEaYZX0jUtpbcO7hcInf(ymUeBkKXW(HGaE2VzMzMzMzMzMzMzmq6bdQrzoG(nZmZmZmZmZmi6GFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0)(Y)TT3AgKHGcxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmJyZXgamzGiyE3d2OH1nF(IFZmdWD82euYbatgicM39GnARXIFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiVxZGmeuOXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2OnfsNHcXba5ydpHSV0Z(nZmZmZmZ2x(VTrqH4yFWdLCSH2OnfsNHcXX(Ghk5ydpHSV0Z(nZmZmZmZ2x(VTrqH4aKJ3MGsUnAtH0zOqCaYXBtqj)eY(sp73mZmZmZmJGRDIGcXba5ydTh6GrqH4yFWdLCSH2dDWiOqCaYXBtqj3EOdgbfIdaYXgAJJgiGErroW94zdbTh6GrqH4yFWdLCSH24ObYzkMqgq7Hoyeuioa54TjOKByvggNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNa59AgKHGcnUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FB7Xm9aLGcxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmdWD82euYbatgicM39GnAyS43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbYBMPhOeuOXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aQhoOnAtH0zOqCa1dh8eY(sp73mZmZmZmBF5)2gbfIdqoEBck52OnfsNHcXbihVnbL8ti7l9SFZmZmZmZmcU2jckehq9WbTh6GrqH4aKJ3MGsU9qhmckehq9WbxhCpkFmpbYBMPhOeui4z7Hoyeuioa54TjOKByvgcCZfya3XBtqjhamzGiyE3dNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNa5nZ0duck04sSPqgd7hcc4z)MzMzMzMzMzgdKEWGAuMdOFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0V)3bZJtquoaMlXMczydz4GGp0gnYWVzMXLytHmi2Org(nZmZmB6DpSEInfYS43mZmZSlZaKzYarUhm8HiRNytHml(nZmZmd39aLUEInfYS43mZmZmInh71tSPqMf)MzMzMHnZLlebH4IUEInfYS43mZmZmoE7d46j2uiZIFZmZmZMYajFYF7d46j2uiZIFZmZmZaChqe6muiU1tSPqMf)MzMzMXF)qqaA4Jz9eBkKzXVzMzMzV1midbfUEInfY43mZiZf)MzgY(sra4oX9sTrJmiZf)MzgZbQnACpq5tjUONqGBUl2(EPZGY9E2VzMzMziWnxGr2xkca3jUxQnAKbz63mZmZmUxgdzFPlgbfIZiqnSFemiN23lDguU3Z2W1VzMzMzMz27G5Xjikhapa55y6e3PNaN4EPgY(sxhd0agydzFPgWaBGgObmWgbfIdycke3z)MzMzMzMzVdMhNGOCa8aKNJPtCNEAkKodfIJ9bpuYXgEczFPNp73mZmZmZmdbU5UomhORNytHmiNq2x6z)MzMzMbrh873mZmZS3bZJtquoaEaYZX0jUtpbYEFPig9A77LUogObmWgwbe4MlWi7lfbG7e3l9SFZmZmZEhmpobr5a4biphtN4o9ecCZfyK9LIaWDI7LE2VzMzMzCVmgHnAyfqGBUaJSVueaUtCV0fdJfBfg2W1VzMzMzMz2(Y)TnK9LAJgcCZfyK9LIaWDI7LINGKFZmZmZmZS3bZJtquoaEaYZX0jUtpboX9sjqNAi7l1orqHmp6L586yGgWaBi7l9SFZmZmZmZSH7e3l9eY(sp73mZmZmi6GFZmdIoS43mZyoqxpXMczqSrJ7bkFkXf9ecCZDXq2x6z)MzMzMX9YytAX4sSPqgJa1W(rWGCcbU5cmxInfYGC2gU(nZmZmZmZi4AN4sSPqM1HlXMczoHSV0ZNnkMqu)MzMzMzMzMzgcCZfyK9LIaWDI7LIhRacCZfyK9LIaWDI7LAR5ggKSrdzFP(nZmZmZmZmZmgi9Gb1VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz63)7G5Xjikhapa55y6e3P2OX9aLpL4IE6Ydw5Z(nZmcU2PbiphtpBumHO(nZmZmdBgcu6jGgsbGah805Z(nZmZmdlHCaW9Ur4ewEGd7txEWkF2VzMzMzyZqGspD2VzMbrh8drh87)DW84eeLdGrMeXEJyJgz43mZwTISpggIlJFZmdpgKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrB(IFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OHXIFZmZmZWdYgtc4EabKKnAyS43mZmZSvRil8H9f1ypjI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnAyS43mZmZm8Gam7DfqEOdWbJ3agebKKnAyS43mZmZm8G8I7SiGKSrdJf)MzMzMHheOpqrajzJggl(nZmZmdpiNrHRaYdDaoyR9XhIasYgnmw8BMzMzgEqaM9Ucip0b4GT2hFicijB0WyXVzMzMz4bXI7g(yWHasYgnmw8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAyS43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OHXIFZmZmZWds2hZ09JGdicijB0WyXVzMzMz4bztFCarajzJggl(nZmZmdp46jqOgzHpSVOiGKSrdJf)MzMzMHhelFtNczqajzJggl(nZmZmdpiGYCrq45olcijB0WyXVzMzMz4bj7dDabKKnAZx8BMzK5IFZmB1kS4TFdeO(nZm8RbjB0id)MzMzMTAfVzWDzm2tIyVr8BMzMzgEqaDFPycsYgT5l(nZmZmdp4eWhftidijB0MV43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAyS43mZmZm8GSXKaUhqajzJggl(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJggl(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0WyXVzMzMz4bby27kG8qhGd2AF8HiGKSrdJf)MzMzMHhelUB4JbhcijB0WyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2OHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajzJggl(nZmZmdpizFmt3pcoGiGKSrB(IFZmZmZWdYM(4aIasYgT5l(nZmZmdp46jqOgzHpSVOiGKSrB(IFZmZmZWdILVPtHmiGKSrB(IFZmZmZWdcOmxeeEUZIasYgT5l(nZmZmdpizFOdiGKSrB(IFZmJmx8BMzRwbKdukKXVzMHhRrYgnYWVzMzMzRwXBgCxgJ9Ki2Be)MzMzMHheq3xkMGKSrB(IFZmZmZWdob8rXeYasYgT5l(nZmZmdp4AFeBqs2OHXIFZmZmZWdIf7hfcsYgT5l(nZmZmdpiBmjG7beqs2OnFXVzMzMzRwrw4d7lQXEse7nIFZmZmZWdYzu4kG8qhGdgVbmicijB0WyXVzMzMz4bby27kG8qhGdgVbmicijB0WyXVzMzMz4b5f3zrajzJggl(nZmZmdpiqFGIasYgnmw8BMzMzgEqoJcxbKh6aCWw7JpebKKnAZx8BMzMzgEqaM9Ucip0b4GT2hFicijB0MV43mZmZm8GyXDdFm4qajzJggl(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0WyXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0WyXVzMzMz4bXY30Pqgeqs2OHXIFZmZmZWdcOmxeeEUZIasYgnmw8BMzMzgEqY(qhqajzJ28f)MzgzU43mZwTAYCNEa9BMz4xxs2Org(nZmZmB1kEZG7YySNeXEJ43mZmZm8Ga6(sXeKKnAZx8BMzMzgEWjGpkMqgqs2OHXIFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OnFXVzMzMz4bzJjbCpGasYgT5l(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJ28f)MzMzMHhKxCNfbKKnAZx8BMzMzgEqG(afbKKnAZx8BMzMzgEqoJcxbKh6aCWw7JpebKKnAyS43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0MV43mZmZm8GRNaHAKf(W(IIasYgnmw8BMzMzgEqS8nDkKbbKKnAyS43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0MV43mZiZf)Mz2QvybdbeH63mZWd4tYgnYWVzMzMzRwXBgCxgJ9Ki2Be)MzMzMHheq3xkMGKSrdJf)MzMzMHhCc4JIjKbKKnAZx8BMzMzgEW1(i2GKSrB(IFZmZmZWdIf7hfcsYgT5l(nZmZmdpiBmjG7beqs2OnFXVzMzMzRwrw4d7lQXEse7nIFZmZmZWdYzu4kG8qhGdgVbmicijB0MV43mZmZm8Gam7DfqEOdWbJ3agebKKnAZx8BMzMzgEqEXDweqs2OnFXVzMzMz4bb6dueqs2OnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2OHXIFZmZmZWdcWS3va5HoahS1(4drajzJ28f)MzMzMHhelUB4JbhcijB0MV43mZmZm8GCgfUcip0b4GXE2lZacijB0MV43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OnFXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0MV43mZmZm8Gy5B6uidcijB0WyXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OHXIFZmJmx8BMzRwHLWhftdRikXumP(nZm88sKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrB(IFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OHXIFZmZmZWdYgtc4EabKKnAZx8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgnmw8BMzMzgEqEXDweqs2OnFXVzMzMz4bb6dueqs2OnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2OHXIFZmZmZWdcWS3va5HoahS1(4drajzJggl(nZmZmdpiwC3Whdoeqs2OHXIFZmZmZWdYzu4kG8qhGdg7zVmdiGKSrdJf)MzMzMHheGzVRaYdDaoySN9YmGasYgnmw8BMzMzgEqY(yMUFeCarajzJ28f)MzMzMHhKn9XbebKKnAZx8BMzMzgEW1tGqnYcFyFrrajzJ28f)MzMzMHhelFtNczqajzJ28f)MzMzMHheqzUii8CNfbKKnAZx8BMzMzgEqY(qhqajzJ28f)MzgzU43mZwTInMpCpu)MzgESAs2Org(nZmZmB1kEZG7YySNeXEJ43mZmZm8Ga6(sXeKKnAZx8BMzMzgEWjGpkMqgqs2OnFXVzMzMz4bx7JydsYgnmw8BMzMzgEqSy)Oqqs2OnFXVzMzMz4bzJjbCpGasYgnmw8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0WyXVzMzMz4bby27kG8qhGd2AF8HiGKSrB(IFZmZmZWdIf3n8XGdbKKnAZx8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAZx8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0WyXVzMzMz4bxpbc1il8H9ffbKKnAyS43mZmZm8Gy5B6uidcijB0WyXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OnFXVzMrMl(nZSvRw7Bk0VzMHhRJKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJggl(nZmZmdp4eWhftidijB0MV43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAZx8BMzMzgEq2ysa3diGKSrB(IFZmZmZwTISWh2xuJ9Ki2Be)MzMzMHhKZOWva5HoahmEdyqeqs2OnFXVzMzMz4bby27kG8qhGdgVbmicijB0MV43mZmZm8G8I7SiGKSrB(IFZmZmZWdc0hOiGKSrB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSrB(IFZmZmZWdcWS3va5HoahS1(4drajzJ28f)MzMzMHhelUB4JbhcijB0MV43mZmZm8GCgfUcip0b4GXE2lZacijB0WyXVzMzMz4bby27kG8qhGdg7zVmdiGKSrB(IFZmZmZWds2hZ09JGdicijB0MV43mZmZm8GSPpoGiGKSrdJf)MzMzMHhC9eiuJSWh2xueqs2OnFXVzMzMz4bXY30Pqgeqs2OHXIFZmZmZWdcOmxeeEUZIasYgT5l(nZmZmdpizFOdiGKSrdJf)MzgzU43mZwTISpM9L)K8BMz4X6jzJgz43mZmZSvR4ndUlJXEse7nIFZmZmZWdcO7lftqs2OHXIFZmZmZWdob8rXeYasYgT5l(nZmZmdp4AFeBqs2OnFXVzMzMz4bXI9JcbjzJ28f)MzMzMHhKnMeW9acijB0MV43mZmZSvRil8H9f1ypjI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnAZx8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0MV43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0WyXVzMzMz4bxpbc1il8H9ffbKKnAZx8BMzMzgEqS8nDkKbbKKnAyS43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0WyXVzMrMl(nZSvRw7fDs(nZm8ymNKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJ28f)MzMzMHhCc4JIjKbKKnAyS43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAyS43mZmZm8GSXKaUhqajzJggl(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJ28f)MzMzMHhKxCNfbKKnAZx8BMzMzgEqG(afbKKnAZx8BMzMzgEqoJcxbKh6aCWw7JpebKKnAyS43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgnmw8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAyS43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OnFXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0WyXVzMzMz4bXY30Pqgeqs2OnFXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OnFXVzMrMl(nZSvRWsMdIb)MzgEmWGKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJ28f)MzMzMHhCc4JIjKbKKnAyS43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAZx8BMzMzgEq2ysa3diGKSrB(IFZmZmZwTISWh2xuJ9Ki2Be)MzMzMHhKZOWva5HoahmEdyqeqs2OnFXVzMzMz4bby27kG8qhGdgVbmicijB0MV43mZmZm8G8I7SiGKSrB(IFZmZmZWdc0hOiGKSrB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSrdJf)MzMzMHheGzVRaYdDaoyR9XhIasYgT5l(nZmZmdpiwC3Whdoeqs2OHXIFZmZmZWdYzu4kG8qhGdg7zVmdiGKSrB(IFZmZmZWdcWS3va5Hoahm2ZEzgqajzJ28f)MzMzMHhKSpMP7hbhqeqs2OnFXVzMzMz4bztFCarajzJggl(nZmZmdp46jqOgzHpSVOiGKSrdJf)MzMzMHhelFtNczqajzJggl(nZmZmdpiGYCrq45olcijB0MV43mZmZm8GK9HoGasYgT5l(nZmYCXVzMTAfwcXDrnGCGsHm(nZm8ySgKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrdJf)MzMzMHhCTpInijB0MV43mZmZm8GyX(rHGKSrB(IFZmZmZWdYgtc4EabKKnAZx8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0MV43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgnmw8BMzMzgEq20hhqeqs2OnFXVzMzMz4bxpbc1il8H9ffbKKnAyS43mZmZm8Gy5B6uidcijB0MV43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0MV43mZiZf)KP)3bZJtquoagWD82euYb07(YGyJgz43mZab8Wynwx(C5I1pG1pG1paUyRwzyX9Y43mZab8Wynwx(C5YLlxUC5cUyRwza6fhUlQFZmdeWdJ1yD5ZLlgqUCNphCXwTYMSHY)Id3f1VzMbc4HXASU85YD(CS65ddGl2Qv2K5Xa9BMzGaEySgRlFUCFynSgGpecUyRwz8k2e89BMzGaEySgRlFUC5YfRB(85Gl2Qv2eWPq0Hhd5(nZmqapmwJ1LpxUqEj(8X6MdUyRwz8MHsW9XN63mZab8Wynwx(C5oFoF(C5cUyRwzabsWSVxC(jtwuwuwSjqPqg03EYHmiexuwafwJfBkdX0PqgwaWInLCSHSyZ)aHEXXIn)de6fhNWKyaYInLahCGfBihqukcl2tWzodaNMm8kVXYjlwS5FGqV4yXE1kBcoZza40KHx5nwoz5N7bkFkXf90BVrOpkezXGN9BMzVdMhNGOCa8BVrOpkeXgT3EJqFuiIF)Mz2(Y)TT99sNbL71gnGgsN4EPZGY9E6SFZm7DW84eeLdG5sSPqg2qgoi4dxhMd0t77Lodk37z)MzgGUViWjUx6PZ(nZmgi9Gb1Omhq)q0b)SyZhti)jXInKdikLfB(hi0loorjhBil2i0hfEG9WJczXgbZ7SCgLfBemVZYzuEZNsWbKfLfBkeWOyGfxcukl2tMzaAGaal277BGfaSytGoL5EGnlayXg3XMsWcawuwuwSPVneLYcawSXDSPeSaGfLfLf7bcUCj4FSPKZcawSXDSPeSaGfLfLfBMhFilayXg3XMsWcawuwuwSzUBilayXg3XMsWcawuwuwS5(4tjUOSaGfBChBkblayrzrzXgBoWM(2quklayXg3XMsWcawuwuwSPVneLUgSaGfBChBkblayrzrzrzXEGabR8bkFkbhqwSF7nl2mWPexuaihBil2e8VOSytHagfdwSNSJYInfcyumw)fLYInVcyyZarqM9rol2edSyZ7d6DI7Lod)lkl2uiGrXaqVO0hbkoikLfBopzda2ZGL8kl28V39WDwuaGagLxrF8SHdS4HfB0dCaWqmDkKbHfqHbl28V39WDwuw8WIYIYInhSakmw31adwuwSa \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 439d228..8253292 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -252,6 +252,21 @@ local azeriteFilter = { end end } +local arguniteFilter = { + enabled = true, + qualityThreshold = 1, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Argunite filter; slot: " .. slot) + local itemName = getItemName(slot) + local itemQuality = getItemQuality(slot) + if (itemName and itemQuality and itemName:match("Argunite") and itemQuality > self.qualityThreshold) then + aura_env.debugLog("Argunite filter pass") + return true + end + end + end +} aura_env.filterService = { filters = { diff --git a/LegionWA/AutoQuest/Export b/LegionWA/AutoQuest/Export index 949722e..9067ce3 100644 --- a/LegionWA/AutoQuest/Export +++ b/LegionWA/AutoQuest/Export @@ -1 +1 @@ -difPIaGiIQhHuuvxIquPrjLoLu5vuLGzHsDlIs2LOyyiv5yefltuINriktdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpcrv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KazOeOoQuLLkQkpvsMkbDvcHTIuO(krPCwQqvVfPanxQq5Uifu7LQ6VivgmCyjwSOupgftwsDzkBwk(mv0OPconPwnsb8Arv1Sf52uPDJQFtYWPkoovPA5i55imDHRtKTti9DIs14je58iLwpHOI3lkPUVOKSF1(Y4l0VY1VQ2VQ2xOFvyIuiJxP4rLwKJ5NxwONFvHj0IAcP0oDAuErvT5NNSKHE(vHjsHm54LStwTF2(vbL2PtJYxOFvqRhZVIrIiuU(vmseHYLUGwpMFLjQXd)kgjIq5sNd6AZVk0UwTFfJdgt(9RmrnE4xXirekx)kzjRrprKRsiDcwqIPtec2B0xyUrprKRsiDElNq6lwGrprKRsiDosqErblqoH5g9erUkH01pF5YjuCE9h9erUkH0j48jO(5lxv1OVGQQely6QOzcs2MSrIZeAfV16MCmgdDZWgSynK3te5QesNGfKy6eHG9g9fMt(iCW4togJXymgokPiS(kccTN2UjhJXWseMUzydwSgY7jICvcPZB5esFXciFeoy8jhJXymgd6ZWyEIEsgr02n5ymgwIW0ndBWI1qEprKRsiDosqErblqoH5Kpchm(KJXymgJHUz03I8KC7jzeHJCqPzmI2UHipRHmJWbJp5ymgJXymgJrFl6jzer(mzVqv3kt3KJXymgJHXRNCmgdlry6MHnyXAiVVGQQely6QOzcs2Kpchm(KJXymgJrsXusdVlzebXG1OVf5j52xrqO9qFrl6uj7K1tYicI2UjhJXymgJKIPKgmkxpjlS6Esgrqmyn6BrEsU9veeAp0Nj0IA9KmIGOTBYXymgJXiPykPHYtOvCIbRrFlYtYTVIGq7rqEcTIt02n5ymgJXyOBgmkxpjlS6Esgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgnkQHEWAid7bJY1tYcRUNKreeJA1KJXymgJXymgJXyuzjJj6Rii0EOptOf16jzerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgvwYyI(kccTh6lArNkzNSEsgr0kt3KJXymgJHXRNCmgJXym0ndLNqR4edwSgYmk86H3LmIGy4fgmkxpjlS6EsgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xrqO9iipHwXBLPBYXymgJXW41togJHLimDZWgSynK3te5Qesx)8LlNqX51x(iCW4togJXymgjftjn8UKreedwJ(wKNKBFfbH2d9fTOtLStwpjJiiA7MCmgJXymskMsAWOC9KSWQ7jzebXG1OVf5j52xrqO9qFMqlQ1tYicI2UjhJXymgdDZGr56jzHv3tYicIHxEqVr4GXNCmgJXymgJXOrrn0dwdzypyuUEswy19KmIGyuRMCmgJXymgJXymgJklzmb9zcTOwpjJiALPBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nchm(KJXymgJXymgvwYyc6lArNkzNSEsgr0kt3KJXymgJHXRNCmgdlry6MHnyXAiVNiYvjKobNpb1pF5QQKpchm(KJXymgJHUziMONKreos56jzrj7K1Q7gHdgFYXymgJXymgdhPC9KSW6jzerB3KJXymgJHXRNCmgdJxpPXR9RmrnEq4x1te5QesNGfKy6eHG9g9fMB0te5QesN3YjK(Ify0te5QesNJeKxuWcKtyUrprKRsiD9ZxUCcfNx)rprKRsiDcoFcQF(Yvvn6lOQkXcMUkAMGKn)kchuYUG4(veoOKDbXPptOf18d)QWePqgbR08WVkFI7tZe6xLuLAFH(vAUtkLKhFH(vUsPq7l0p8d)QOKmE4l0VYvkfAFH(HF4xvRBA0msPGwFH(vUsPq7l0p8d)kQcJ5l0VYvkfAFH(HF4x1uycTI7l0VYvkfAFH(HF4x5ruprjz8WxOFLRuk0(c9d)WVkkjJhzXxOFLRuk0(c9d)WVIsLmFH(vUsPq7l0p8d)WVkmrkKXrkEu0CxJh(vcsecRe7TC(vAEyu8sIgBueAf3pprMFvTMGgqIZeArn)Qsk5xvycTIt4l0VIikuHVq)QAfDUgbrXP5NTF4xP56WxOFvTIogjIq5671(vmseHY1VkPykPrTLTKZbRrtjrytMumL0qZO4Ett4jvO1BsuLqR4dwdr2KtMumL0OrIZeAfF40cXH5kGMN)wgfpkAUrXEqKur3KJXyqzHefFqyjJjAPryp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU9Kk8qh02YO4rrZnk2dIKk6MCmgdklKO4dclzmrBwyp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU5vCTwgfpkAUrXEqKur3KJXyqzHefFqyjJjALH9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxH06XAzu8OO5gf7brsfDtogJbLfsu8bHLmMO1XL9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiom3kPSdA9yTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0sJWE03cXH5kM3OADAH4WCfqZZFlJIhfn3OypisQORRBsJxpzsXusJgjotOv8HtlehMRaMOwQLrXJIMBuShejv0n5ymguwirXhewYyIwAI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxACjjzTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kJmSh9TqCyUI5nQwNwiomxb0883YO4rrZnk2dIKk666M041tMumL0OrIZeAfF40cXH52tQK0bTTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kYyp6BH4WCfZBuToTqCyUcO55VLrXJIMBuShejv011nPXRNmPykPrJeNj0k(WPfIdZnN3L0EeqXucTI3YO4rrZnk2dIKk6MCmgdklKO4dclzmrRxI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxXmkElJIhfn3OypisQOBYXymOSqIIpiSKXeTYqp2J(wiomxX8gvRtlehMRaAE(Bzu8OO5gf7brsfDDDtA86jtkMsA0iXzcTIpCAHxR51cP1J1YO4rrZnk2dIKk6MCmgdklKO4dclzmrRm0e7rFlehMRyEJQ1PfIdZvanp)TmkEu0CJI9GiPIUUUjnE9Kto5KjftjnCsvO1R0PWOgSgz9KJXyy8s2jREWAeusg7jhJXOrNcJAWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIevHoJlAMAlBjNcOC2kVpvH2rJofgLJZGrXJIMBudwd5JmzgmkEu0CJAKjZqo7brsfdwd5Jmzgejv0n5ymgJXymgJrsXusdDyU9KkjDq7G1WPfIdZTNujPdABzu8OO5gf7brsfDtogJXymgJXyOBgT6WC7jvs6G2rHxp0H52tQK0bTdwSg0RBeoy8jhJXymgJXymgJXOirvOZ4IMP2YwYPakNTY7tvOD0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjtkMsA40kuELofg1G1iRNCmgdJxYoz1dwJGsYyp5ymg6KOjHoqzeoOs1dwdAiAo6XEYXymiSuYRv2G1OPKim2togJrJofg1G1OrIZeAfVLWsnShmkEu0CJI9GiPIUjhJXymgdDZOLWsnzmEj7Kv3nchm(KJXymgJXymgfjQcDgx0m1w2sofq5SvEFRqnA0PWOCCgmkEu0CJAWAiFKjZGrXJIMBuJmzgYzpisQyWAiFKjZGiPIUjhJXymgJXymskMsAOdZvatulnynCAH4WCfWe1sTmkEu0CJI9GiPIUjhJXymgJXymskMsAOdZ1R18AH06XgSgoTWR18AH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMRqA9ydwdNwiomxH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMBoVlP9iGIzWA40cXH5MZ7sApcOykHwXBzu8OO5gf7brsfDtogJXymgJXyOBgT6WCfsRhBu41dDyU58UK2JakMrHxp5ymgJXymgJrRomxH06XgSynKtFkxfL8jhJXymgJXymuudDyUcP1JnyXAix2SIhfx(KJXymgJXymgkQHom3CExs7rafZGfRHCX5rJf64fCo68kX51px(Kp5ymgJXymgJHIAOdZnN3L0EeqXmyXAixCE0yHoEbNJoH5tCE0O5ekFYXymgJXymgdf1qhMBoVlP9iGIzWI1qU48OXcD8cohDosabrFAu5togJXymgJXyOOg6WCZ5DjThbumdwSgYfNhnwOJxW5OlVCoIgvE3KJXymgJXymgfE9qhMRaMOwAu41dDyUETMxlKwp2OWRh6WCfWe1sdr(bHLAYOtIMe6aLr4Gkvpk86rRomxVwZRfsRhBWI1qMHIAqyPMmewk51kRRBeoy8jhJXymgJXymgJXWdLMhToTqCyU5vCTwgfpkAUrXEqKurx3KJXymgJXymgJXy4HsZJwNwiomxbmrTulJIhfn3OypisQORBYXymgJXymgJXymksuf6mUOzQTSLCkGYzR8(wHA0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjNmPykPrJeNj0k(OwvzPulJIhfn3OypisQOBYXymskMsAOdZvmJIpynCAH4WCfZO4TmkEu0CJI9GiPIUjhJXiPykPHom38kU2G1WPfIdZnVIR1YO4rrZnk2dIKk6MCmgJKIPKg6WC7jv4HoODWA40cXH52tQWdDqBlJIhfn3OypisQOBYXymskMsAOdZTNujPdAhSgoTqCyU9KkjDqBlJIhfn3OypisQOBYjhJXOirvOZ4IMP2YwYPakNTY9gvr21CNdnJIpAuud5Jmzg6WCZR4AJmzgYhYUoCy4DPssh0oKpYKzOdZTNujPdA7MCmgJKIPKg8IRjB6WbhPskQbRHCAq5JmzgfjQcDgx0mExQK0bTosLuue0G6WC7jvs6G2Hxyidn8itMHom38kU2itMHCAyhtMSqtuYNCmgJKIPKg8IRjB6WHEsfEOdAhSg8IRjB6WbhPskQrMmd5drs(itMHom3EsfEOdANCYXymksuf6mUOzQTSLCkGYzRC6tqODY1CNdEX1KpYKzWlUMSPdh6jv4HoOTBYXymksuf6mUOzkPerucJGgKMFrIQqNXfntjLiIsyedVWqgA4bRrwp5ymgJXyq4Gs2hSgbLKXEYXymgJXGXHc3PvpynckjJ9KJXymgJHMxBI0G1OVfc1UwBh7jhJXymgdkJqrfdwJGsYyp5KJXymgJHMrXhSg6WCfZO4SNCmgJXym4fxBWAWlUMSPdh6jv4HoOL9KJXymgJrXvjXJbRHom3EsfEOdAzp5KJXymgJHhkLtkJGqiTESbRH8q7A1Yzp5ymgJXyyIKhnvj0kUqTRnyn6BHqTR12n8cdnJI7nnHNuHwVjrvcTIZEYXymgJXOwIQeAfFWAOzuCVPj8Kk06njQsOvC2togJXymgfPqrZ012G1iOKm2togJrwn5KJXyiccZrkEu0CJsCyUTmkEu0CJI9GiPIUjnE9KtozrIQqNXfntJofgvLrjQMXgSgz9KJXy0OtHrrmynY6jhJXymgdNufA9kDkmk2togJXymgoTcLxPtHrXEYXymYk2togJbrsfecvcOuXG1iRZk2togJbLeFWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJrrIQqNXfntTLTKtbuoBL7v6uyuAUZHom3HMpyu8OO5g1G1q(itMbJIhfn3OgzYmKZEqKuXG1q(itMbrsfJmzgYZKjJ8UjhJXymgdDZOLRIHtlehMRaAE(Bzu8OO5gf7brsfDDJWbJp5ymgJXymgJrrIQqNXfntTLTKtbuoBLxLuXWC9e0kVBYXymgJXymgdklKO4togJXymggVEYXymgJXOrrnYp7rJofg1qZhEkAkIwcl1KPrNcJIOBuRMCmgJXymgJXq3mAB0PWOO51OtHr1YO4rrZnk2dIKk66gHdgFYXymgJXymgJXymQvvwk1YO4rrZnk2dIKk6MCmgJXymgJXymgdklKO4togJXymgJXyy86jhJXymgdJxp5ymggVEYSAYjlsuf6mUOzQTSLCkGY5G1OrIZeAfVvLnnq3KJXyOBgT1w2so7gHdgFYXymgJXWdLMhT9TqO21A76MCmgJXym8MjQqLkrqN3KC90QYMgOBYXymgJXWdLMhTDtogJHXRN041tozrIQqNXfnJ3LkjDqRJujffXG1iRNCmgd5oMmzHMyAA8s1EPAVuTC2dzjRHGvkQjhJXqUJjtwOjMMMMMMMMg5ShYswdhPCDv8jhJXqUJjtwOjMMgzSMg6rp5ShYswdrWzuUUk(KJXyi3XKjl0ettd9Ohnc9QRLZEilznYxHYMCmgd5oMmzHMyAAkImrgnNzYzpKLSg58OzMCmgd5oMmzHMyAAAAOHOh9ONC2dzjRHaMtJxxOODYXymK7yYKfAIPPXCCzyOHONC2dzjRb9PcDtHjMCmgd5oMmzHMyAAOh9yyAAKZEilznOzMMkPuUtMv(HF4xrzo1kUqA9y(vAgf3VIl5kKs70Prr4NNm(vmkvQwj7CHMif54LStwTF2(vHjsHmELIh(v5ejpugbHSxO1VkmrkKXVsKl3Vsx7xrFPq1tYic)knxh0refQWQ9Ztg)kgLkvRKDUF2(HFfHFvwYqZLrMS4xjQFEYqtzrg)W3ha \ No newline at end of file +difPIaGiIQhHuuvxIquPrjLoLu5vuLGzHsDlIs2LOyyiv5yefltuINriktdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpcrv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KazOeOoQuLLkQkpvsMkbDvcHTIuO(krPCwQqvVfPanxQq5Uifu7LQ6VivgmCyjwSOupgftwsDzkBwk(mv0OPconPwnsb8Arv1Sf52uPDJQFtYWPkoovPA5i55imDHRtKTti9DIs14je58iLwpHOI3lkPUVOKSF1(Y4l0VY1VQ2VQ2xOFvyIuiJxP4rLwKJ5NxwONFvHj0IAcP0oDAuErvT5NNSKHE(vHjsHm54LStwTF2(vbL2PtJYxOFvqRhZVIrIiuU(vmseHYLUGwpMFLjQXd)kgjIq5sNd6AZVk0UwTFfJdgt(9RmrnE4xXirekx)kzjRrprKRsiDcwqIPtec2B0xyUrprKRsiDElNq6lwGrprKRsiDosqErblqoH5g9erUkH01pF5YjuCE9h9erUkH0j48jO(5lxv1OVGQQely6QOzcs2MSrIZeAfV16MCmgdDZWgSynK3te5QesNGfKy6eHG9g9fMt(iCW4togJXymgokPiS(kccTN2UjhJXWseMUzydwSgY7jICvcPZB5esFXciFeoy8jhJXymgd6ZWyEIEsgr02n5ymgwIW0ndBWI1qEprKRsiDosqErblqoH5Kpchm(KJXymgJHUz03I8KC7jzeHJCqPzmI2UHipRHmJWbJp5ymgJXymgJrFl6jzer(mzVqv3kt3KJXymgJHXRNCmgdlry6MHnyXAiVVGQQely6QOzcs2Kpchm(KJXymgJrsXusdVlzebXG1OVf5j52xrqO9qFrl6uj7K1tYicI2UjhJXymgJKIPKgmkxpjlS6Esgrqmyn6BrEsU9veeAp0Nj0IA9KmIGOTBYXymgJXiPykPHYtOvCIbRrFlYtYTVIGq7rqEcTIt02n5ymgJXyOBgmkxpjlS6Esgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgnkQHEWAid7bJY1tYcRUNKreeJA1KJXymgJXymgJXyuzjJj6Rii0EOptOf16jzerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgvwYyI(kccTh6lArNkzNSEsgr0kt3KJXymgJHXRNCmgJXym0ndLNqR4edwSgYmk86H3LmIGy4fgmkxpjlS6EsgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xrqO9iipHwXBLPBYXymgJXW41togJHLimDZWgSynK3te5Qesx)8LlNqX51x(iCW4togJXymgjftjn8UKreedwJ(wKNKBFfbH2d9fTOtLStwpjJiiA7MCmgJXymskMsAWOC9KSWQ7jzebXG1OVf5j52xrqO9qFMqlQ1tYicI2UjhJXymgdDZGr56jzHv3tYicIHxEqVr4GXNCmgJXymgJXOrrn0dwdzypyuUEswy19KmIGyuRMCmgJXymgJXymgJklzmb9zcTOwpjJiALPBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nchm(KJXymgJXymgvwYyc6lArNkzNSEsgr0kt3KJXymgJHXRNCmgdlry6MHnyXAiVNiYvjKobNpb1pF5QQKpchm(KJXymgJHUziMONKreos56jzrj7K1Q7gHdgFYXymgJXymgdhPC9KSW6jzerB3KJXymgJHXRNCmgdJxpPXR9RmrnEq4x1te5QesNGfKy6eHG9g9fMB0te5QesN3YjK(Ify0te5QesNJeKxuWcKtyUrprKRsiD9ZxUCcfNx)rprKRsiDcoFcQF(Yvvn6lOQkXcMUkAMGKn)kchuYUG4(veoOKDbXPptOf18d)QWePqgbR08WVkFI7tZe6xLuLAFH(vAUtkLKhFH(vUsPq7l0p8d)QOKmE4l0VYvkfAFH(HF4xvRBA0msPGwFH(vUsPq7l0p8d)kQcJ5l0VYvkfAFH(HF4x1uycTI7l0VYvkfAFH(HF4x5ruprjz8WxOFLRuk0(c9d)WVkkjJhzXxOFLRuk0(c9d)WVIsLmFH(vUsPq7l0p8d)WVkmrkKXrkEu0CxJh(vcsecRe7TC(vAEyu8sIgBueAf3pprMFvTMGgqIZeArn)Qsk5xvycTIt4l0VIikuHVq)QAfDUgbrXP5NTF4xP56WxOFvTIogjIq5671(vmseHY1VkPykPrTLTKZbRrtjrytMumL0qZO4Ett4jvO1BsuLqR4dwdr2KtMumL0OrIZeAfF40cXH5kGMN)wgfpkAUrXEqKur3KJXyqzHefFqyjJjAPryp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU9Kk8qh02YO4rrZnk2dIKk6MCmgdklKO4dclzmrBwyp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU5vCTwgfpkAUrXEqKur3KJXyqzHefFqyjJjALH9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxH06XAzu8OO5gf7brsfDtogJbLfsu8bHLmMO1XL9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiom3kPSdA9yTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0sJWE03cXH5kM3OADAH4WCfqZZFlJIhfn3OypisQORRBsJxpzsXusJgjotOv8HtlehMRaMOwQLrXJIMBuShejv0n5ymguwirXhewYyIwAI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxACjjzTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kJmSh9TqCyUI5nQwNwiomxb0883YO4rrZnk2dIKk666M041tMumL0OrIZeAfF40cXH52tQK0bTTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kYyp6BH4WCfZBuToTqCyUcO55VLrXJIMBuShejv011nPXRNmPykPrJeNj0k(WPfIdZnN3L0EeqXucTI3YO4rrZnk2dIKk6MCmgdklKO4dclzmrRxI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxXmkElJIhfn3OypisQOBYXymOSqIIpiSKXeTYqp2J(wiomxX8gvRtlehMRaAE(Bzu8OO5gf7brsfDDDtA86jtkMsA0iXzcTIpCAHxR51cP1J1YO4rrZnk2dIKk6MCmgdklKO4dclzmrRm0e7rFlehMRyEJQ1PfIdZvanp)TmkEu0CJI9GiPIUUUjnE9Kto5KjftjnCsvO1R0PWOgSgz9KJXyy8s2jREWAeusg7jhJXOrNcJAWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIevHoJlAMAlBjNcOC2kVpvH2rJofgLJZGrXJIMBudwd5JmzgmkEu0CJAKjZqo7brsfdwd5Jmzgejv0n5ymgJXymgJrsXusdDyU9KkjDq7G1WPfIdZTNujPdABzu8OO5gf7brsfDtogJXymgJXyOBgT6WC7jvs6G2rHxp0H52tQK0bTdwSg0RBeoy8jhJXymgJXymgJXOirvOZ4IMP2YwYPakNTY7tvOD0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjtkMsA40kuELofg1G1iRNCmgdJxYoz1dwJGsYyp5ymg6KOjHoqzeoOs1dwdAiAo6XEYXymiSuYRv2G1OPKim2togJrJofg1G1OrIZeAfVLWsnShmkEu0CJI9GiPIUjhJXymgdDZOLWsnzmEj7Kv3nchm(KJXymgJXymgfjQcDgx0m1w2sofq5SvEFRqnA0PWOCCgmkEu0CJAWAiFKjZGrXJIMBuJmzgYzpisQyWAiFKjZGiPIUjhJXymgJXymskMsAOdZvatulnynCAH4WCfWe1sTmkEu0CJI9GiPIUjhJXymgJXymskMsAOdZ1R18AH06XgSgoTWR18AH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMRqA9ydwdNwiomxH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMBoVlP9iGIzWA40cXH5MZ7sApcOykHwXBzu8OO5gf7brsfDtogJXymgJXyOBgT6WCfsRhBu41dDyU58UK2JakMrHxp5ymgJXymgJrRomxH06XgSynKtFkxfL8jhJXymgJXymuudDyUcP1JnyXAix2SIhfx(KJXymgJXymgkQHom3CExs7rafZGfRHCX5rJf64fCo68kX51px(Kp5ymgJXymgJHIAOdZnN3L0EeqXmyXAixCE0yHoEbNJoH5tCE0O5ekFYXymgJXymgdf1qhMBoVlP9iGIzWI1qU48OXcD8cohDosabrFAu5togJXymgJXyOOg6WCZ5DjThbumdwSgYfNhnwOJxW5OlVCoIgvE3KJXymgJXymgfE9qhMRaMOwAu41dDyUETMxlKwp2OWRh6WCfWe1sdr(bHLAYOtIMe6aLr4Gkvpk86rRomxVwZRfsRhBWI1qMHIAqyPMmewk51kRRBeoy8jhJXymgJXymgJXWdLMhToTqCyU5vCTwgfpkAUrXEqKurx3KJXymgJXymgJXy4HsZJwNwiomxbmrTulJIhfn3OypisQORBYXymgJXymgJXymksuf6mUOzQTSLCkGYzR8(wHA0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjNmPykPrJeNj0k(OwvzPulJIhfn3OypisQOBYXymskMsAOdZvmJIpynCAH4WCfZO4TmkEu0CJI9GiPIUjhJXiPykPHom38kU2G1WPfIdZnVIR1YO4rrZnk2dIKk6MCmgJKIPKg6WC7jv4HoODWA40cXH52tQWdDqBlJIhfn3OypisQOBYXymskMsAOdZTNujPdAhSgoTqCyU9KkjDqBlJIhfn3OypisQOBYjhJXOirvOZ4IMP2YwYPakNTY9gvr21CNdnJIpAuud5Jmzg6WCZR4AJmzgYhYUoCy4DPssh0oKpYKzOdZTNujPdA7MCmgJKIPKg8IRjB6WbhPskQbRHCAq5JmzgfjQcDgx0mExQK0bTosLuue0G6WC7jvs6G2Hxyidn8itMHom38kU2itMHCAyhtMSqtuYNCmgJKIPKg8IRjB6WHEsfEOdAhSg8IRjB6WbhPskQrMmd5drs(itMHom3EsfEOdANCYXymksuf6mUOzQTSLCkGYzRC6tqODY1CNdEX1KpYKzWlUMSPdh6jv4HoOTBYXymksuf6mUOzkPerucJGgKMFrIQqNXfntjLiIsyedVWqgA4bRrwp5ymgJXyq4Gs2hSgbLKXEYXymgJXGXHc3PvpynckjJ9KJXymgJHMxBI0G1OVfc1UwBh7jhJXymgdkJqrfdwJGsYyp5KJXymgJHMrXhSg6WCfZO4SNCmgJXym4fxBWAWlUMSPdh6jv4HoOL9KJXymgJrXvjXJbRHom3EsfEOdAzp5KJXymgJHhkLtkJGqiTESbRH8q7A1Yzp5ymgJXyyIKhnvj0kUqTRnyn6BHqTR12n8cdnJI7nnHNuHwVjrvcTIZEYXymgJXOwIQeAfFWAOzuCVPj8Kk06njQsOvC2togJXymgfPqrZ012G1iOKm2togJrwn5KJXyiccZrkEu0CJsCyUTmkEu0CJI9GiPIUjnE9KtozrIQqNXfntJofgvLrjQMXgSgz9KJXy0OtHrrmynY6jhJXymgdNufA9kDkmk2togJXymgoTcLxPtHrXEYXymYk2togJbrsfecvcOuXG1iRZk2togJbLeFWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJrrIQqNXfntTLTKtbuoBL7v6uyuAUZHom3HMpyu8OO5g1G1q(itMbJIhfn3OgzYmKZEqKuXG1q(itMbrsfJmzgYZKjJ8UjhJXymgdDZOLRIHtlehMRaAE(Bzu8OO5gf7brsfDDJWbJp5ymgJXymgJrrIQqNXfntTLTKtbuoBLxLuXWC9e0kVBYXymgJXymgdklKO4togJXymggVEYXymgJXOrrnYp7rJofg1qZhEkAkIwcl1KPrNcJIOBuRMCmgJXymgJXq3mAB0PWOO51OtHr1YO4rrZnk2dIKk66gHdgFYXymgJXymgJXymQvvwk1YO4rrZnk2dIKk6MCmgJXymgJXymgdklKO4togJXymgJXyy86jhJXymgdJxp5ymggVEYSAYjlsuf6mUOzQTSLCkGY5G1OrIZeAfVvLnnq3KJXyOBgT1w2so7gHdgFYXymgJXWdLMhT9TqO21A76MCmgJXym8MjQqLkrqN3KC90QYMgOBYXymgJXWdLMhTDtogJHXRN041tozrIQqNXfnJ3LkjDqRJujffXG1iRNCmgd5oMmzHMyAA8s1EPAVuTC2dzjRHGvkQjhJXqUJjtwOjMMMMMMMMg5ShYswdhPCDv8jhJXqUJjtwOjMMgzSMg6rp5ShYswdrWzuUUk(KJXyi3XKjl0ettd9Ohnc9QRLZEilznYxHYMCmgd5oMmzHMyAAkImrgnNzYzpKLSg58OzMCmgd5oMmzHMyAAAAOHOh9ONC2dzjRHaMtJxxOODYXymK7yYKfAIPPXCCzyOHONC2dzjRb9PcDtHjMCmgd5oMmzHMyAAOh9yyAAKZEilznOzMMkPuUtMv(HF4xrzo1kUqA9y(vAgf3VIl5kKs70Prr4NNm(vmkvQwj7CHMif54LStwTF2(vHjsHmELIh(v5ejpugbHSxO1VkmrkKXVsKl3Vsx7xrFPq1tYic)knxh0refQWQ9Ztg)kgLkvRKDUF2(HFfHFvwYqZLrMS4xjQFEYqtzrg)W3hadddd \ No newline at end of file From 1f7f6310f92beed9069b0fdf0f970c6b60368b0d Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 10:22:43 +0200 Subject: [PATCH 12/44] Fix issue with argunite filter --- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index b834c64..bd12080 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dmvZNbGiGEeusWLueLQrPICkvuRcvjQxPKIQzPe3sjzxaQHPO6yqHLPKcpdkPmnLuPRbqvTnuLiFdkj14GsQCoOKQwNsQ4DkPi3tH2husYbrvQfIQeEiaPjcLOlIQK2OsQ6JasnsaXjvuSsv1lHscntfHBQKs7eqYprf1qHs4Oaelvru8uuQPcGRQikLTQiQ(kIsNvruYBHQMlav5UiYErj)fvKblhwvwmQIhJQAYk4YG2mQ0NvKgnu0Pry1qjr9AfrMTsDBOYUH0VvPHdL64auz5O45qmDKUUkSDuHVRO04bOCEevRxjfL3JOW8HsICFefTFAwyWcawSFSaGfLfBewSxdGb8bgJ1GfBCSypWI9alayXgW4mxUiqklGAfw96oNfBY5mxUiqklGcWhRnNf7hFkbhqayiMofYS27aKfqTcJ5SyJG9JpKfqnNfBcukKb9TNCidcXfLfqH1yXgbU5Ifxcukl2aWzSycED9aWI9BtmfLf7j411dal2ycjMIjL16xxa)5ynEP5ynS(1ynWAynSASAS(1Gf3vRlVel277BGfaSytGoL5EGnlayXg3XMsWcawuwuwSPVneLYcawSXDSPeSaGfLfLfB6BdrPRblayXg3XMsWcawuwuwSpqGCI)(HGWIhwSzE8HSaGfBChBkblayrzrzXM5UHSaGfBChBkblayrzrzXgBoWM(2quklayXg3XMsWcawuwuwS5(4tjUOSaGfBChBkblayrzrzXEGGlxc(hBk5SaGfBChBkblayrzrzrzX(HsG7rHS4fSyZaNsCrbGCSHSypqo6dhb)Pm3dSzXgcyy)qhGdS4HfBIbwS59b9oX9szXEwIbkMSw)6c4phRXlnhdSAS61fRdWFDXyDxxwCxTU8sSypqGGv(aLpLGdil2V9MfB0dCaWqmDkKbHfqHbl2eOeuoHqFmu4alGcdwSPmetNczybal2iyENLZOSyJG5DwoJYB(ucoGSOSOSyZNfaSakmybal2uiGrXy9xukBI1milGAnMZI9JpLGdiametNczw7DaYcOwHXCwSF8PexuewaWInc9Xqzbal2dxoHdIG8MczXdlkl2eOeuwaWI9WLt8pqOxCS4fSyZ)aHEXXI9(Y)TTbiphtTrJ7BJa9VV8FBJG)ffljqWE)ihlpyEuIlQnAyn)(xTYiOqCa1dhCXiOqCtqGoPfJGcXbihVnbL8fJGcXnbKd4EXiOqCRLaDcihW9IrqH4aGCSHlgbfIJ9bpaqo2WfckehB6J)Ka07bkDXiOqC8kG7Ga7jU8xmckehaqaJEWaxme4EJfme8Hlg)9dbzgSCXqo4H)(HGmdwUy8qGoaa5ydxGag2p(ZGLlgcKodwUyeiakZJlLaD6Kb(McrP2Ob0q6muiUzq5EpHSV0Z(xTY23lDg(x0fBFVuG6HdUy77LcihpukbL8fJ)bddeLp5ZGLl2(EPaYXBtqjFX2x(tcoSyeiaYbeHodfIBXaChqe6my5IrGWB(ucoG2Ob0q6e3lL9(sNbL79eY(sp7F1kBcc0jzixCqkboiInCHig6LAZEzMK)9L)BBCpq5tjUO2uiDgke3eeOt6eY(sp73mZyG0dgudOH0jUxk79Lobb6KoHSV0Z(HOd(3x(VTX9aLpL4IAtH0zOqCa1dh8eY(sp73mZyG0dgudbUH8PNwJfdOH0jUxk79Lodk37jK9LE(SFi6G)9L)BBCpq5tjUO2uiDgkehaKJn8eY(sp73mZyG0dgudbUH8PN4LwmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muio2h8qjhB4jK9LE2VzMXaPhmOgcCd5tpHvVyanKodfIBguU3ttH0zOqCtqGoPti7l985Z(HOd(3x(VTX9aLpL4IAtH0zOqCta5aUpHSV0Z(nZmgi9Gb1qGBiF6P1DXaAiDgke3mOCVNMcPZqH4MGaDsNq2x65ZN9drh8VV8FBJ7bkFkXf1McPZqH4M83(aEczFPN9BMzmq6bdQHa3q(0tyGXIb0q6muiUzq5EpnfsNHcXnbb6KoHSV0ZNp7hIo4FF5)2g3du(uIlQnfsNHcXbihpukbL8ti7l9SFZmJbspyqne4gYNEcRTyanKoX9szVV0zq5EpHSV0ZN9drh8VV8FBJ7bkFkXf1McPZqH4aKJ3MGs(jK9LE2VzMXaPhmOgcCd5tpH1wmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muioEfWDqG9ex(pkXf9eY(sp73mZyG0dgudbUH8PNW6xmGgsNHcXndk37PPq6muiUjiqN0jK9LE(8z)q0b)7l)324EGYNsCrTPq6muiUz4FrpHSV0Z(nZmgi9Gb1qGBiF6jmMVyanKodfIBguU3ttH0zOqCtqGoPti7l985Z(HOd(97FF5)22WDI7LAJg3du(uIl6jK9LE2VzM9oyECcIYbWdqEoMoXD6jWjUxkb6udzFPRJbAadSHSV0Z(nZSjUxk79LEczFPN973mZ2x(VTrqH4MH)f1gTPq6muiUz4FrpHSV0Z(nZS9L)BBeuioG6HdAJ2uiDgkehq9WbpHSV0Z(nZS9L)BBeuioa54HsjOKBJ2uiDgkehGC8qPeuYpHSV0Z(nZS9L)BBeuioa54TjOKBJ2uiDgkehGC82euYpHSV0Z(9BMzVdMhNGOCa8aKNJPtCNEcelzEZsGo1i4FrnUxgd0agyJGcXbupCqdyGnqBwckMgG74TjOKBGgWaBeuioa54TjOKF2VzMTV8FBd9HdswckMa6DFzSr7DW84eeLdGbChVnbLCa9UVmi4jOqCaYXBtqj3wZnmizadSbIh0agyJGcXbupCqdyGnqsaEySgRldOFZmBF5)2g6dhKSeumbKJhkLGsUnAOpCqYsqXeqV7lJbmWgObyGgWaBeuioa54HsjOK73VzM9oyECcIYbWdqEoMoXD6jqEJGqmfLaDQH(WbbnGb2qF4GKLGIjGC8qPeuYp73mZEhmpobr5a43EJqFuicEScVdMhNGOCa8BVrOpkeXwZnmizJgz43mZmZmemVZAJgL5aU43mZmZm(y(qNchSrJYCax8BMzMzgb6aeWSrdOHuaiWbpDEXVzMzMzmqKld1gnkZbCXVFZmZmZi4FrTrJGcXnd)l6IFZmZmZqF4G2OH(Wbjlbfta54HsjOKV43mZmZShU7bk1gnckehGC8qPeuYx873mZmZmSzUtzGiiaqo2qB0aPe4GdGl(nZmZmdcyytW8OexuaiWbTrdOHuaiWbpD2wZnc(xuSKab79JCS8G5rjUOl(nZmZmB4G5rjUO2OrW)IILeiyVFKJLhmpkXfDXVzMzMzVd6fiedqB0OmhWf)Mzgz6hIo43V)9L)BBtV7H1tSPqgB0id)Mzge9XZgoyJgL5aU43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbc039GXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aQhoOnAtH0zOqCa1dh8eY(sp73mZmZmZmJGRDIGcXH(WbTh6GrqH4aQho46G7r5J5jWj7dR52jG(UhWkHvInXMdidwjSsa6fBSHmNbpF2Oycr9BMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceOV7bJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32UmdqMjde5EWWhISEInfYyJgz43mZGOpE2WbB0OmhWf)MzgxInfYyJg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEoMoXD6jWjde5EWWhACj2uiZAYq2x66yGgWaBi7l9SFZmZmZmZS9L)BBeuioG6HdAJ2uiDgkehq9WbpHSV0Z(nZmZmZmZi4ANiOqCa1dh0EOdgbfIdOE4GRdUhLpMNa5mZaKXMmqK7bdFic45ZgftiQFZmZmZmZmZm7DW84eeLdGhG8CmDI70tGCMzaYymqK7bdFOXLytHmg2peeWZ(nZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KP)9L)BB4UhO01tSPqgB0id)Mzge9XZgoyJgL5aU43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbU27bk14sSPqM1KHSV01XanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qB0McPZqH4aGCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckehaKJn0ghnW1EpqPGNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNax79aLACj2uiJH9dbb8SFZmZmZmZmZmJbspyqnkZb0VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)2gXMJ96j2uiJnAKHFZmdI(4zdhSrJYCax8BMzeBo2aGjdebZ7EWgnSoSU5l(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGZmbhBJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXnbKd42gTPq6muiUjGCa3Nq2x6z)MzMzMzMzeCTteuiUjGCa32dDWiOqCta5aUnSkdbU5cmXMJnayYarW8UhoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX0jUtpbodfIZ2qoGBJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32WM5YfIGqCrxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmdtidpi2OrzoGl(nZm(7lftB04(2iWf)Mz2LbAJg33gbU43mZ2WhftiJnACFBe4IFZmJ)9ojc0P2OX9TrGl(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGybZLlebH4IACj2uiZAYq2x66yGgWaBi7l9SFZmZmZmZS9L)BBeuioaihBOnAtH0zOqCaqo2Wti7l9SFZmZmZmZmcU2jckehaKJn0EOdgbfIdaYXgAJJgiamVbiYKi2BWZgftiQFZmZmZmZmZmBF5)2gbfIJ9bpuYXgAJ2uiDgkeh7dEOKJn8eY(sp73mZmZmZmZmZi4ANiOqCSp4Hso2q7HoyNiOqCSp4Hso2qBC0abcKHhq7HoyiWnxGXeYWdYz)MzMzMzMzMz2LXorqH4yFWdLCSH24Obob8rXeYaAp0bdbU5c8g(Oyczo73mZmZmZmZmZUm2jckeh7dEOKJn0ghnqaDFPycAp0bdbU5cm)9LI5z)MzMzMzMzMz2LXorqH4yFWdLCSH24ObYzgiO9qhme4MlWxg4z)MzMzMzMzMz2LXorqH4yFWdLCSH24ObcO37KiqNcAp0bdbU5cm)7DseOtpF2Oycr9BMzMzMzMzMzMz27G5Xjikhapa55y6e3PNaXcMlxiccXf14sSPqgd7hcc4z)MzMzMzMzMzMzMXaPhmOgL5a63mZmZmZmZmZGOd(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)3244TpGRNytHm2Org(nZmi6JNnCWgnkZbCXVzMXXBFabatgicM39GnAynaFJx2Wy(CJx2Wy(8f)Mz2dBS3KdaMmqemV7baUZqH4ytF8NKnACFBe4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9e4K)2hqJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXn5V9b0gTPq6muiUj)TpGNq2x6z)(nZmZmZmZi4ANqGBUa)Wg7n5aGjdebZ7EaG7muio20h)jD2Oycr9BMzMzMzMzMz7l)32iOqCaYXdLsqj3gTPq6muioa54HsjOKFczFPN9BMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceamHmqdcyeiud0agyJGcXbihpukbLCdyGnqJGcXHyeOgY(snqdyGnK9LE2VzMzMzMzMzMrqH4M83(aAJgbfIBYF7dOXlBeuioa54HsjOK73mZmZmZmdIo43VzMzMzMzgbx7ebfIBYF7dO9qhmcke3K)2hqdRYqGBUaZXBFabatgicM39WzJIje1VzMzMzMzMzM9oyECcIYbWdqEoMoXD6jWj)TpGgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTnLbs(K)2hW1tSPqgB0id)Mzge9XZgoyJgL5aU43mZwTYydPgftgicM39GrV2CJET99sT3EBtzGKJ43mZ44TpGaGjdebZ7EWgnaFJx2Wy(CJx2Wy(8f)Mz2dBS3KdaMmqemV7baUZqH4ytF8NKnACFBe4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiqZaj344TpGgxInfYSMmK9LUogObmWgY(sp73mZmZmZmBF5)2gbfIdqoEBck52OnfsNHcXbihVnbL8ti7l9SFZmZmZmZmcU2jckehGC82euYnSkB(zJIje1VzMzMzMzMzMTV8FBJGcXn5V9b0gTPq6muiUj)TpGNq2x6z)(nZmZmZmZmZmcU2je4MlWpSXEtoayYarW8Uha4odfIJn9XFsNnkMqu)MzMzMzMzMzMzMTV8FBJGcXbihpukbLCB0McPZqH4aKJhkLGs(jK9LE2VzMzMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceamHmqdcyeiud0agyJGcXbihpukbLCdyGnqJGcXHyeOgY(snqdyGnK9LE2VzMzMzMzMzMzMzeuiUj)TpG2OrqH4M83(aA8YgbfIdqoEOuck5(nZmZmZmZmZmi6GF)MzMzMzMzMzgbx7ebfIBYF7dO9qhmcke3K)2hqdRYqGBUaZXBFabatgicM39WzJIje1VzMzMzMzMzMzMzVdMhNGOCa8aKNJPtCNEceOzGKBC82hqJlXMczmSFiiGN9BMzMzMzMzMzMzgdKEWGAuMdOFZmZmZmZmZmdIo43mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBdWDarOZqH4wpXMczSrJm8BMzq0hpB4GnAuMd4IFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiGCarOgbfIZ4sSPqM1KHSV01XanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qB0McPZqH4aGCSHNq2x6z)MzMzMzMz7l)32iOqCSp4Hso2qB0McPZqH4yFWdLCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckeh7dEOKJn0EOdgbfIdaYXgAJJgbfIJ9bpuYXgAJJgiGCarOGNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNabKdic1iOqCgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTXF)qqaA4Jz9eBkKXgnYWVzMbrF8SHd2OrzoGl(nZmInhBaWKbIG5DpyJgw385l(nZma3XBtqjhamzGiyE3d2OTgl(nZmUeBkKXgnUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmDI70tGa6(HGytHpgJlXMczwtgY(sxhd0agydzFPN9BMzMzMzMTV8FBJGcXba5ydTrBkKodfIdaYXgEczFPN9BMzMzMzMTV8FBJGcXXRaUdcSN4Y3gTPq6muioEfWDqG9ex(pkXf9eY(sp73mZmZmZmJGRDIGcXba5ydTXrdK3m4UmG(nZmZmZmZUmgbfIdaYXgAJJgizHpSVOG(nZmZmZmZUmgbfIJxbCheypXLVnoAGZautoatwybVYP1pdqb086Kb0VzMzMzMz2LXiOqC8kG7Ga7jU8TXrdCgGAYbyYcl4vobWKzgGcRiVcaOFZmZmZmZSlJrqH44va3bb2tC5BJJg4ma1KdWKfwWRCcqNGZ8gRiOFZmZmZmZSlJrqH44va3bb2tC5BJJg4ma1KdWKfwWRCcO4vafRi4zJIje1VzMzMzMzMzMTV8FBJGcXnbKd42gTPq6muiUjGCa3Nq2x6z)MzMzMzMzMz2(Y)TnckehGC82euYTrBkKodfIdqoEBck5Nq2x6z)MzMzMzMzMz2(Y)TnceEfWDqGn2pE2qB0Ehmpobr5ayKjrS3i4rGBiF6jS2InzdLGcO7hcYjqS3pYHmGNptcpYbpuYXgsYghnm873mZmZmZmZmZi4ANiq4va3bb2y)4zdTh6GrqH4MaYbCByvgcCZfyInhBaWKbIG5Dpyp0bJGcXbihVnbLCdRYqGBUad4oEBck5aGjdebZ7E4SrXeI63mZmZmZmZmZmZS3bZJtquoaEaYZX0jUtpbcO7hcInf(ymUeBkKXW(HGaE2VzMzMzMzMzMzMzmq6bdQrzoG(nZmZmZmZmZmi6GFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0)(Y)TT3AgKHGcxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmJyZXgamzGiyE3d2OH1nF(IFZmdWD82euYbatgicM39GnARXIFZmJlXMczSrJ7bkFkXf9ecCZDXq2x6z)MzMzMrW1oHa3CbgI(4zdhoBumHO(nZmZmZmZEhmpobr5a4biphtN4o9eiVxZGmeuOXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2OnfsNHcXba5ydpHSV0Z(nZmZmZmZ2x(VTrqH4yFWdLCSH2OnfsNHcXX(Ghk5ydpHSV0Z(nZmZmZmZ2x(VTrqH4aKJ3MGsUnAtH0zOqCaYXBtqj)eY(sp73mZmZmZmJGRDIGcXba5ydTh6GrqH4yFWdLCSH2dDWiOqCaYXBtqj3EOdgbfIdaYXgAJJgiGErroW94zdbTh6GrqH4yFWdLCSH24ObYzkMqgq7Hoyeuioa54TjOKByvggNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNa59AgKHGcnUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FB7Xm9aLGcxpXMczSrJm8BMzq0hpB4GnAuMd4IFZmdWD82euYbatgicM39GnAyS43mZ4sSPqgB04EGYNsCrpHa3CxmK9LE2VzMzMzeCTtiWnxGHOpE2WHZgftiQFZmZmZmZS3bZJtquoaEaYZX0jUtpbYBMPhOeuOXLytHmRjdzFPRJbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aQhoOnAtH0zOqCa1dh8eY(sp73mZmZmZmBF5)2gbfIdqoEBck52OnfsNHcXbihVnbL8ti7l9SFZmZmZmZmcU2jckehq9WbTh6GrqH4aKJ3MGsU9qhmckehq9WbxhCpkFmpbYBMPhOeui4z7Hoyeuioa54TjOKByvgcCZfya3XBtqjhamzGiyE3dNnkMqu)MzMzMzMzMz27G5Xjikhapa55y6e3PNa5nZ0duck04sSPqgd7hcc4z)MzMzMzMzMzgdKEWGAuMdOFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0V)3bZJtquoaMlXMczydz4GGp0gnYWVzMXLytHmi2Org(nZmZmB6DpSEInfYS43mZmZSlZaKzYarUhm8HiRNytHml(nZmZmd39aLUEInfYS43mZmZmInh71tSPqMf)MzMzMHnZLlebH4IUEInfYS43mZmZmoE7d46j2uiZIFZmZmZMYajFYF7d46j2uiZIFZmZmZaChqe6muiU1tSPqMf)MzMzMXF)qqaA4Jz9eBkKzXVzMzMzV1midbfUEInfY43mZiZf)MzgY(sra4oX9sTrJmiZf)MzgZbQnACpq5tjUONqGBUl2(EPZGY9E2VzMzMziWnxGr2xkca3jUxQnAKbz63mZmZmUxgdzFPlgbfIZiqnSFemiN23lDguU3Z2W1VzMzMzMz27G5Xjikhapa55y6e3PNaN4EPgY(sxhd0agydzFPgWaBGgObmWgbfIdycke3z)MzMzMzMzVdMhNGOCa8aKNJPtCNEAkKodfIJ9bpuYXgEczFPNp73mZmZmZmdbU5UomhORNytHmiNq2x6z)MzMzMbrh873mZmZS3bZJtquoaEaYZX0jUtpbYEFPig9A77LUogObmWgwbe4MlWi7lfbG7e3l9SFZmZmZEhmpobr5a4biphtN4o9ecCZfyK9LIaWDI7LE2VzMzMzCVmgHnAyfqGBUaJSVueaUtCV0fdJfBfg2W1VzMzMzMz2(Y)TnK9LAJgcCZfyK9LIaWDI7LINGKFZmZmZmZS3bZJtquoaEaYZX0jUtpboX9sjqNAi7l1orqHmp6L586yGgWaBi7l9SFZmZmZmZSH7e3l9eY(sp73mZmZmi6GFZmdIoS43mZyoqxpXMczqSrJ7bkFkXf9ecCZDXq2x6z)MzMzMX9YytAX4sSPqgJa1W(rWGCcbU5cmxInfYGC2gU(nZmZmZmZi4AN4sSPqM1HlXMczoHSV0ZNnkMqu)MzMzMzMzMzgcCZfyK9LIaWDI7LIhRacCZfyK9LIaWDI7LAR5ggKSrdzFP(nZmZmZmZmZmgi9Gb1VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz63)7G5Xjikhapa55y6e3P2OX9aLpL4IE6Ydw5Z(nZmcU2PbiphtpBumHO(nZmZmdBgcu6jGgsbGah805Z(nZmZmdlHCaW9Ur4ewEGd7txEWkF2VzMzMzyZqGspD2VzMbrh8drh87)DW84eeLdGrMeXEJyJgz43mZwTISpggIlJFZmdpgKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrB(IFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OHXIFZmZmZWdYgtc4EabKKnAyS43mZmZSvRil8H9f1ypjI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnAyS43mZmZm8Gam7DfqEOdWbJ3agebKKnAyS43mZmZm8G8I7SiGKSrdJf)MzMzMHheOpqrajzJggl(nZmZmdpiNrHRaYdDaoyR9XhIasYgnmw8BMzMzgEqaM9Ucip0b4GT2hFicijB0WyXVzMzMz4bXI7g(yWHasYgnmw8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAyS43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OHXIFZmZmZWds2hZ09JGdicijB0WyXVzMzMz4bztFCarajzJggl(nZmZmdp46jqOgzHpSVOiGKSrdJf)MzMzMHhelFtNczqajzJggl(nZmZmdpiGYCrq45olcijB0WyXVzMzMz4bj7dDabKKnAZx8BMzK5IFZmB1kS4TFdeO(nZm8RbjB0id)MzMzMTAfVzWDzm2tIyVr8BMzMzgEqaDFPycsYgT5l(nZmZmdp4eWhftidijB0MV43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAyS43mZmZm8GSXKaUhqajzJggl(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJggl(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0WyXVzMzMz4bby27kG8qhGd2AF8HiGKSrdJf)MzMzMHhelUB4JbhcijB0WyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2OHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajzJggl(nZmZmdpizFmt3pcoGiGKSrB(IFZmZmZWdYM(4aIasYgT5l(nZmZmdp46jqOgzHpSVOiGKSrB(IFZmZmZWdILVPtHmiGKSrB(IFZmZmZWdcOmxeeEUZIasYgT5l(nZmZmdpizFOdiGKSrB(IFZmJmx8BMzRwbKdukKXVzMHhRrYgnYWVzMzMzRwXBgCxgJ9Ki2Be)MzMzMHheq3xkMGKSrB(IFZmZmZWdob8rXeYasYgT5l(nZmZmdp4AFeBqs2OHXIFZmZmZWdIf7hfcsYgT5l(nZmZmdpiBmjG7beqs2OnFXVzMzMzRwrw4d7lQXEse7nIFZmZmZWdYzu4kG8qhGdgVbmicijB0WyXVzMzMz4bby27kG8qhGdgVbmicijB0WyXVzMzMz4b5f3zrajzJggl(nZmZmdpiqFGIasYgnmw8BMzMzgEqoJcxbKh6aCWw7JpebKKnAZx8BMzMzgEqaM9Ucip0b4GT2hFicijB0MV43mZmZm8GyXDdFm4qajzJggl(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0WyXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0WyXVzMzMz4bXY30Pqgeqs2OHXIFZmZmZWdcOmxeeEUZIasYgnmw8BMzMzgEqY(qhqajzJ28f)MzgzU43mZwTAYCNEa9BMz4xxs2Org(nZmZmB1kEZG7YySNeXEJ43mZmZm8Ga6(sXeKKnAZx8BMzMzgEWjGpkMqgqs2OHXIFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OnFXVzMzMz4bzJjbCpGasYgT5l(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJ28f)MzMzMHhKxCNfbKKnAZx8BMzMzgEqG(afbKKnAZx8BMzMzgEqoJcxbKh6aCWw7JpebKKnAyS43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0MV43mZmZm8GRNaHAKf(W(IIasYgnmw8BMzMzgEqS8nDkKbbKKnAyS43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0MV43mZiZf)Mz2QvybdbeH63mZWd4tYgnYWVzMzMzRwXBgCxgJ9Ki2Be)MzMzMHheq3xkMGKSrdJf)MzMzMHhCc4JIjKbKKnAZx8BMzMzgEW1(i2GKSrB(IFZmZmZWdIf7hfcsYgT5l(nZmZmdpiBmjG7beqs2OnFXVzMzMzRwrw4d7lQXEse7nIFZmZmZWdYzu4kG8qhGdgVbmicijB0MV43mZmZm8Gam7DfqEOdWbJ3agebKKnAZx8BMzMzgEqEXDweqs2OnFXVzMzMz4bb6dueqs2OnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2OHXIFZmZmZWdcWS3va5HoahS1(4drajzJ28f)MzMzMHhelUB4JbhcijB0MV43mZmZm8GCgfUcip0b4GXE2lZacijB0MV43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OnFXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0MV43mZmZm8Gy5B6uidcijB0WyXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OHXIFZmJmx8BMzRwHLWhftdRikXumP(nZm88sKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrB(IFZmZmZWdU2hXgKKnAZx8BMzMzgEqSy)Oqqs2OHXIFZmZmZWdYgtc4EabKKnAZx8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgnmw8BMzMzgEqEXDweqs2OnFXVzMzMz4bb6dueqs2OnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2OHXIFZmZmZWdcWS3va5HoahS1(4drajzJggl(nZmZmdpiwC3Whdoeqs2OHXIFZmZmZWdYzu4kG8qhGdg7zVmdiGKSrdJf)MzMzMHheGzVRaYdDaoySN9YmGasYgnmw8BMzMzgEqY(yMUFeCarajzJ28f)MzMzMHhKn9XbebKKnAZx8BMzMzgEW1tGqnYcFyFrrajzJ28f)MzMzMHhelFtNczqajzJ28f)MzMzMHheqzUii8CNfbKKnAZx8BMzMzgEqY(qhqajzJ28f)MzgzU43mZwTInMpCpu)MzgESAs2Org(nZmZmB1kEZG7YySNeXEJ43mZmZm8Ga6(sXeKKnAZx8BMzMzgEWjGpkMqgqs2OnFXVzMzMz4bx7JydsYgnmw8BMzMzgEqSy)Oqqs2OnFXVzMzMz4bzJjbCpGasYgnmw8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0WyXVzMzMz4bby27kG8qhGd2AF8HiGKSrB(IFZmZmZWdIf3n8XGdbKKnAZx8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAZx8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0WyXVzMzMz4bxpbc1il8H9ffbKKnAyS43mZmZm8Gy5B6uidcijB0WyXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OnFXVzMrMl(nZSvRw7Bk0VzMHhRJKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJggl(nZmZmdp4eWhftidijB0MV43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAZx8BMzMzgEq2ysa3diGKSrB(IFZmZmZwTISWh2xuJ9Ki2Be)MzMzMHhKZOWva5HoahmEdyqeqs2OnFXVzMzMz4bby27kG8qhGdgVbmicijB0MV43mZmZm8G8I7SiGKSrB(IFZmZmZWdc0hOiGKSrB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSrB(IFZmZmZWdcWS3va5HoahS1(4drajzJ28f)MzMzMHhelUB4JbhcijB0MV43mZmZm8GCgfUcip0b4GXE2lZacijB0WyXVzMzMz4bby27kG8qhGdg7zVmdiGKSrB(IFZmZmZWds2hZ09JGdicijB0MV43mZmZm8GSPpoGiGKSrdJf)MzMzMHhC9eiuJSWh2xueqs2OnFXVzMzMz4bXY30Pqgeqs2OHXIFZmZmZWdcOmxeeEUZIasYgT5l(nZmZmdpizFOdiGKSrdJf)MzgzU43mZwTISpM9L)K8BMz4X6jzJgz43mZmZSvR4ndUlJXEse7nIFZmZmZWdcO7lftqs2OHXIFZmZmZWdob8rXeYasYgT5l(nZmZmdp4AFeBqs2OnFXVzMzMz4bXI9JcbjzJ28f)MzMzMHhKnMeW9acijB0MV43mZmZSvRil8H9f1ypjI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnAZx8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0MV43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgT5l(nZmZmdpiB6JdicijB0WyXVzMzMz4bxpbc1il8H9ffbKKnAZx8BMzMzgEqS8nDkKbbKKnAyS43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0WyXVzMrMl(nZSvRw7fDs(nZm8ymNKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJ28f)MzMzMHhCc4JIjKbKKnAyS43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAyS43mZmZm8GSXKaUhqajzJggl(nZmZmB1kYcFyFrn2tIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzJggl(nZmZmdpiaZExbKh6aCW4nGbrajzJ28f)MzMzMHhKxCNfbKKnAZx8BMzMzgEqG(afbKKnAZx8BMzMzgEqoJcxbKh6aCWw7JpebKKnAyS43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgnmw8BMzMzgEqoJcxbKh6aCWyp7LzabKKnAyS43mZmZm8Gam7DfqEOdWbJ9SxMbeqs2OnFXVzMzMz4bj7Jz6(rWbebKKnAZx8BMzMzgEq20hhqeqs2OHXIFZmZmZWdUEceQrw4d7lkcijB0WyXVzMzMz4bXY30Pqgeqs2OnFXVzMzMz4bbuMlccp3zrajzJ28f)MzMzMHhKSp0beqs2OnFXVzMrMl(nZSvRWsMdIb)MzgEmWGKnAKHFZmZmZwTI3m4Umg7jrS3i(nZmZmdpiGUVumbjzJ28f)MzMzMHhCc4JIjKbKKnAyS43mZmZm8GR9rSbjzJ28f)MzMzMHhel2pkeKKnAZx8BMzMzgEq2ysa3diGKSrB(IFZmZmZwTISWh2xuJ9Ki2Be)MzMzMHhKZOWva5HoahmEdyqeqs2OnFXVzMzMz4bby27kG8qhGdgVbmicijB0MV43mZmZm8G8I7SiGKSrB(IFZmZmZWdc0hOiGKSrB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSrdJf)MzMzMHheGzVRaYdDaoyR9XhIasYgT5l(nZmZmdpiwC3Whdoeqs2OHXIFZmZmZWdYzu4kG8qhGdg7zVmdiGKSrB(IFZmZmZWdcWS3va5Hoahm2ZEzgqajzJ28f)MzMzMHhKSpMP7hbhqeqs2OnFXVzMzMz4bztFCarajzJggl(nZmZmdp46jqOgzHpSVOiGKSrdJf)MzMzMHhelFtNczqajzJggl(nZmZmdpiGYCrq45olcijB0MV43mZmZm8GK9HoGasYgT5l(nZmYCXVzMTAfwcXDrnGCGsHm(nZm8ySgKSrJm8BMzMz2Qv8Mb3LXypjI9gXVzMzMz4bb09LIjijB0MV43mZmZm8GtaFumHmGKSrdJf)MzMzMHhCTpInijB0MV43mZmZm8GyX(rHGKSrB(IFZmZmZWdYgtc4EabKKnAZx8BMzMz2QvKf(W(IASNeXEJ43mZmZm8GCgfUcip0b4GXBadIasYgnmw8BMzMzgEqaM9Ucip0b4GXBadIasYgT5l(nZmZmdpiV4olcijB0MV43mZmZm8Ga9bkcijB0MV43mZmZm8GCgfUcip0b4GT2hFicijB0MV43mZmZm8Gam7DfqEOdWbBTp(qeqs2OnFXVzMzMz4bXI7g(yWHasYgT5l(nZmZmdpiNrHRaYdDaoySN9YmGasYgnmw8BMzMzgEqaM9Ucip0b4GXE2lZacijB0MV43mZmZm8GK9XmD)i4aIasYgnmw8BMzMzgEq20hhqeqs2OnFXVzMzMz4bxpbc1il8H9ffbKKnAyS43mZmZm8Gy5B6uidcijB0MV43mZmZm8GakZfbHN7SiGKSrB(IFZmZmZWds2h6acijB0MV43mZiZf)KP)3bZJtquoagWD82euYb07(YGyJgz43mZab8Wynwx(C5I1pG1pG1paUyRwzyX9Y43mZab8Wynwx(C5YLlxUC5cUyRwza6fhUlQFZmdeWdJ1yD5ZLlgqUCNphCXwTYMSHY)Id3f1VzMbc4HXASU85YD(CS65ddGl2Qv2K5Xa9BMzGaEySgRlFUCFynSgGpecUyRwz8k2e89BMzGaEySgRlFUC5YfRB(85Gl2Qv2eWPq0Hhd5(nZmqapmwJ1LpxUqEj(8X6MdUyRwz8MHsW9XN63mZab8Wynwx(C5oFoF(C5cUyRwzabsWSVxC(jtwuwuwSjqPqg03EYHmiexuwafwJfBkdX0PqgwaWInLCSHSyZ)aHEXXIn)de6fhNWKyaYInLahCGfBihqukcl2tWzodaNMm8kVXYjlwS5FGqV4yXE1kBcoZza40KHx5nwoz5N7bkFkXf90BVrOpkezXGN9BMzVdMhNGOCa8BVrOpkeXgT3EJqFuiIF)Mz2(Y)TT99sNbL71gnGgsN4EPZGY9E6SFZm7DW84eeLdG5sSPqg2qgoi4dxhMd0t77Lodk37z)MzgGUViWjUx6PZ(nZmgi9Gb1Omhq)q0b)SyZhti)jXInKdikLfB(hi0loorjhBil2i0hfEG9WJczXgbZ7SCgLfBemVZYzuEZNsWbKfLfBkeWOyGfxcukl2tMzaAGaal277BGfaSytGoL5EGnlayXg3XMsWcawuwuwSPVneLYcawSXDSPeSaGfLfLf7bcUCj4FSPKZcawSXDSPeSaGfLfLfBMhFilayXg3XMsWcawuwuwSzUBilayXg3XMsWcawuwuwS5(4tjUOSaGfBChBkblayrzrzXgBoWM(2quklayXg3XMsWcawuwuwSPVneLUgSaGfBChBkblayrzrzrzXEGabR8bkFkbhqwSF7nl2mWPexuaihBil2e8VOSytHagfdwSNSJYInfcyumw)fLYInVcyyZarqM9rol2edSyZ7d6DI7Lod)lkl2uiGrXaqVO0hbkoikLfBopzda2ZGL8kl28V39WDwuaGagLxrF8SHdS4HfB0dCaWqmDkKbHfqHbl28V39WDwuw8WIYIYInhSakmw31adwuwSa \ No newline at end of file +dmL7NbGiGEeusWLuiLQrPICkvuRcvjQxPKIQzPe3sjzxaQHPO6yqHLPKcpdkPmnLuvxdGQABOkr(gusQXbLu5CqjvToLuL3PKICpfzFqjjhevPwiQs4HaKMiuIUiQsAJkPYhbKAKaItQOyLQQxcLeAMke3ujL2jGKFIkQHcLWrbiwQcP4POutfaxvHukBvHu9veLoRcPK3cvnxaQYDrK9Is(lQidwoSQSyufpgv1KvWLbTzuPpRqnAOOtJWQHsI61kKmBL62qLDdPFRsdhk1XbOYYrXZHy6iDDvy7OcFxrPXdq58iQwVskkVhrH5dLe5(ikA)0SWGfaSy)ybalkl2iSyVgad4dmgRbl24yXEGf7bwaWInGXzUCrGuwa1kS61Fol2KZzUCrGuwafGpwBol2p(ucoGaWqmEmKzT3bilGAfgZzXgb7hFilGAol2eOuid6Bp6qgeIlklGcRXIncCZflUeOuwSbGZyXi866aGf73Mymkl2JWRRdawSXesmgtkR1T(a(ZXA8sZXAy9RXAG1WAy1y1y9RblURwFEjwS333alayXMaDmZ9aBwaWInUJnLGfaSOSOSytFBikLfaSyJ7ytjybalklkl203gIsxdwaWInUJnLGfaSOSOSyFGa5e)9dbHfpSyZ84dzbal24o2ucwaWIYIYInZDdzbal24o2ucwaWIYIYIn2CGn9THOuwaWInUJnLGfaSOSOSyZ9XNsCrzbal24o2ucwaWIYIYI9abxUe8p2uYzbal24o2ucwaWIYIYIYI9dLa3JczXlyXMboM4Ica5ydzXEGC0hoc(JzUhyZIneWW(HoahyXdl2edSyZ7d6DK7LYI9SedumzTU1hWFowJxAogy1y1RpwhG)6JX6V(S4UA95LyXEGabR8bkFkbhqwSF7nl2Oh4aGHy8yidclGcdwSjqjOCcH(yOWbwafgSytzigpgYWcawSrW8olNrzXgbZ7SCgL38PeCazrzrzXMplaybuyWcawSPqaJIX6UOu2eRzqwa1AmNf7hFkbhqayigpgYS27aKfqTcJ5Sy)4tjUOiSaGfBe6JHYcawShUCcheb5ngYIhwuwSjqjOSaGf7HlN4FGqV4yXlyXM)bc9IJf79L)BBdqEogBtg33gb6FF5)2gb)lkwsGG9(rowEW8OexuBYWA(9VALrqH4aQho4IrqH4gHaDulgbfIdqoEBck5lgbfIBeihW9IrqH4wlb6iqoG7fJGcXba5ydxmckeh7dEaGCSHleuio20h)rbO3du6IrqH44va3bb2JC5VyeuioaGag9GbUyiW9glyi4dxm(7hcYmy5IHCWd)9dbzgSCX4HaDaaYXgUabmSF8NblxmeiDgSCXiqauMhxkb64rd8ngIsTjdOH0zOqCZGY9EczFPN9VALTVx6m8VOl2(EPa1dhCX23lfqoEOuck5lg)dggikFYNblxS99sbKJ3MGs(ITV8hfCyXiqaKdicDgke3Ib4oGi0zWYfJaH38PeCaTjdOH0rUxk79Lodk37jK9LE2)Qv2ieOJYqU4GucCqeB4crm0l1M9Ymk)7l)324EGYNsCrTXq6muiUriqh1jK9LE2VzMXaPhmOgqdPJCVu27lDec0rDczFPN9drh8VV8FBJ7bkFkXf1gdPZqH4aQho4jK9LE2VzMXaPhmOgcCd5tpTglgqdPJCVu27lDguU3ti7l98z)q0b)7l)324EGYNsCrTXq6muioaihB4jK9LE2VzMXaPhmOgcCd5tpXlTyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqCSp4Hso2Wti7l9SFZmJbspyqne4gYNEcREXaAiDgke3mOCVNgdPZqH4gHaDuNq2x65ZN9drh8VV8FBJ7bkFkXf1gdPZqH4gbYbCFczFPN9BMzmq6bdQHa3q(0tR)Ib0q6muiUzq5EpngsNHcXncb6OoHSV0ZNp7hIo4FF5)2g3du(uIlQngsNHcXn6V9b8eY(sp73mZyG0dgudbUH8PNWaJfdOH0zOqCZGY9EAmKodfIBec0rDczFPNpF2peDW)(Y)TnUhO8PexuBmKodfIdqoEOuck5Nq2x6z)MzgdKEWGAiWnKp9ewBXaAiDK7LYEFPZGY9EczFPNp7hIo4FF5)2g3du(uIlQngsNHcXbihVnbL8ti7l9SFZmJbspyqne4gYNEcRTyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqC8kG7Ga7rU8FuIl6jK9LE2VzMXaPhmOgcCd5tpH1VyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqCZW)IEczFPN9BMzmq6bdQHa3q(0tymFXaAiDgke3mOCVNgdPZqH4gHaDuNq2x65ZN9drh873)(Y)TTH7i3l1MmUhO8Pex0ti7l9SFZm7DW84eeLdGhG8CmEK74tGJCVuc0XgY(sxpd0agydzFPN9BMzJCVu27l9eY(sp73VzMTV8FBJGcXnd)lQnzJH0zOqCZW)IEczFPN9BMz7l)32iOqCa1dh0MSXq6muioG6HdEczFPN9BMz7l)32iOqCaYXdLsqj3MSXq6muioa54HsjOKFczFPN9BMz7l)32iOqCaYXBtqj3MSXq6muioa54TjOKFczFPN973mZEhmpobr5a4biphJh5o(eiwY8MLaDSrW)IACVmgObmWgbfIdOE4GgWaBG2Seumna3XBtqj3anGb2iOqCaYXBtqj)SFZmBF5)2g6dhKSeumb07(Yyt27G5Xjikhad4oEBck5a6DFzqWtqH4aKJ3MGsUTMByqYagydepObmWgbfIdOE4GgWaBGKa8WynwFgq)Mz2(Y)Tn0hoizjOycihpukbLCBYqF4GKLGIjGE3xgdyGnqdWanGb2iOqCaYXdLsqj3VFZm7DW84eeLdGhG8CmEK74tG8gbHymkb6yd9HdcAadSH(Wbjlbfta54HsjOKF2VzM9oyECcIYbWV9gH(Oqe8yfEhmpobr5a43EJqFuiITMByqYMmYWVzMzMziyEN1MmkZbCXVzMzMz8X8HogoytgL5aU43mZmZmc0biGztgqdPaqGdE68IFZmZmZyGixgQnzuMd4IF)MzMzMrW)IAtgbfIBg(x0f)MzMzMH(WbTjd9HdswckMaYXdLsqjFXVzMzMzpC3duQnzeuioa54HsjOKV43VzMzMzyZChZarqaGCSH2KbsjWbhax8BMzMzgeWWMG5rjUOaqGdAtgqdPaqGdE6STMBe8VOyjbc27h5y5bZJsCrx8BMzMz2WbZJsCrTjJG)ffljqWE)ihlpyEuIl6IFZmZmZEh0lqigG2KrzoGl(nZmY0peDWVF)7l)32gF3dRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFceOV7bJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXbupCqBYgdPZqH4aQho4jK9LE2VzMzMzMzgbx7ebfId9HdAp0bJGcXbupCW1d3JYhZtGJ2hwZTta9DpGvcReBInhqgSsyLa0l2ydzodE(SrXeI63mZmZmZmZmZEhmpobr5a4biphJh5o(eiqF3dgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTDzgGmJgiY9GHpezDeBkKXMmYWVzMbrF8SHd2KrzoGl(nZmUeBkKXMmUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmEK74tGJgiY9GHp04sSPqM1KHSV01ZanGb2q2x6z)MzMzMzMz7l)32iOqCa1dh0MSXq6muioG6HdEczFPN9BMzMzMzMrW1orqH4aQhoO9qhmckehq9WbxpCpkFmpbYzMbiJnAGi3dg(qeWZNnkMqu)MzMzMzMzMz27G5Xjikhapa55y8i3XNa5mZaKXyGi3dg(qJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32WDpqPRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFcCT3duQXLytHmRjdzFPRNbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2KngsNHcXba5ydpHSV0Z(nZmZmZmZi4ANiOqCaqo2q7HoyeuioaihBOnnzGR9EGsbpBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbU27bk14sSPqgd7hcc4z)MzMzMzMzMzgdKEWGAuMdOFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0)(Y)TnInh71rSPqgBYid)Mzge9XZgoytgL5aU43mZi2CSbatgicM39GnzyDyDZx8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNaNzeo2gxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIBeihWTnzJH0zOqCJa5aUpHSV0Z(nZmZmZmZi4ANiOqCJa5aUTh6GrqH4gbYbCByvgcCZfyInhBaWKbIG5DpC2Oycr9BMzMzMzMzMzVdMhNGOCa8aKNJXJChFcCgkeNTHCa3gxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTHnZLlebH4IUoInfYytgz43mZGOpE2WbBYOmhWf)MzgMqgEqSjJYCax8BMz83xkM2KX9TrGl(nZSld0MmUVncCXVzMTHpkMqgBY4(2iWf)Mzg)7DueOJTjJ7BJax8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNaXcMlxiccXf14sSPqM1KHSV01ZanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qBYgdPZqH4aGCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckehaKJn0MMmqayEdqKrrS3GNnkMqu)MzMzMzMzMz2(Y)Tnckeh7dEOKJn0MSXq6muio2h8qjhB4jK9LE2VzMzMzMzMzMrW1orqH4yFWdLCSH2dDWorqH4yFWdLCSH20KbceidpG2dDWqGBUaJjKHhKZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdCe4JIjKb0EOdgcCZf4n8rXeYC2VzMzMzMzMzMDzSteuio2h8qjhBOnnzGa6(sXe0EOdgcCZfy(7lfZZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdKZmqq7HoyiWnxGVmWZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdeqV3rrGog0EOdgcCZfy(37OiqhF(SrXeI63mZmZmZmZmZmZS3bZJtquoaEaYZX4rUJpbIfmxUqeeIlQXLytHmg2peeWZ(nZmZmZmZmZmZmJbspyqnkZb0VzMzMzMzMzMbrh8BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTXXBFaxhXMczSjJm8BMzq0hpB4GnzuMd4IFZmJJ3(acaMmqemV7bBYWAa(gVSHX85gVSHX85l(nZSh2yVjhamzGiyE3daCNHcXXM(4pkBY4(2iWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jWr)TpGgxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIB0F7dOnzJH0zOqCJ(BFapHSV0Z(9BMzMzMzMrW1oHa3Cb(Hn2BYbatgicM39aa3zOqCSPp(J6SrXeI63mZmZmZmZmZ2x(VTrqH4aKJhkLGsUnzJH0zOqCaYXdLsqj)eY(sp73mZmZmZmZmZEhmpobr5a4biphJh5o(eiayczGgeWiqOgObmWgbfIdqoEOuck5gWaBGgbfIdXiqnK9LAGgWaBi7l9SFZmZmZmZmZmJGcXn6V9b0Mmcke3O)2hqJx2iOqCaYXdLsqj3VzMzMzMzgeDWVFZmZmZmZmcU2jcke3O)2hq7HoyeuiUr)TpGgwLHa3CbMJ3(acaMmqemV7HZgftiQFZmZmZmZmZm7DW84eeLdGhG8CmEK74tGJ(BFanUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBBmdK8r)TpGRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMTALXgsnkMmqemV7bJET5g9A77LAV92gZajhXVzMXXBFabatgicM39Gnza(gVSHX85gVSHX85l(nZSh2yVjhamzGiyE3daCNHcXXM(4pkBY4(2iWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqGMbsUXXBFanUeBkKznzi7lD9mqdyGnK9LE2VzMzMzMz2(Y)TnckehGC82euYTjBmKodfIdqoEBck5Nq2x6z)MzMzMzMzeCTteuioa54TjOKByv28ZgftiQFZmZmZmZmZmBF5)2gbfIB0F7dOnzJH0zOqCJ(BFapHSV0Z(9BMzMzMzMzMzeCTtiWnxGFyJ9MCaWKbIG5DpaWDgkehB6J)OoBumHO(nZmZmZmZmZmZmBF5)2gbfIdqoEOuck52KngsNHcXbihpukbL8ti7l9SFZmZmZmZmZmZmZEhmpobr5a4biphJh5o(eiayczGgeWiqOgObmWgbfIdqoEOuck5gWaBGgbfIdXiqnK9LAGgWaBi7l9SFZmZmZmZmZmZmZiOqCJ(BFaTjJGcXn6V9b04LnckehGC8qPeuY9BMzMzMzMzMzq0b)(nZmZmZmZmZmcU2jcke3O)2hq7HoyeuiUr)TpGgwLHa3CbMJ3(acaMmqemV7HZgftiQFZmZmZmZmZmZmZEhmpobr5a4biphJh5o(eiqZaj344TpGgxInfYyy)qqap73mZmZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzMzgeDWVzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)2gG7aIqNHcXToInfYytgz43mZGOpE2WbBYOmhWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqa5aIqnckeNXLytHmRjdzFPRNbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2KngsNHcXba5ydpHSV0Z(nZmZmZmZ2x(VTrqH4yFWdLCSH2KngsNHcXX(Ghk5ydpHSV0Z(nZmZmZmZi4ANiOqCaqo2q7Hoyeuio2h8qjhBO9qhmckehaKJn0MMmckeh7dEOKJn0MMmqa5aIqbpBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbcihqeQrqH4mUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBJ)(HGa0WhZ6i2uiJnzKHFZmdI(4zdhSjJYCax8BMzeBo2aGjdebZ7EWMmSU5Zx8BMzaUJ3MGsoayYarW8UhSjBnw8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNab09dbXgdFmgxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIdaYXgAt2yiDgkehaKJn8eY(sp73mZmZmZmBF5)2gbfIJxbCheypYLVnzJH0zOqC8kG7Ga7rU8FuIl6jK9LE2VzMzMzMzgbx7ebfIdaYXgAttgiVzWDza9BMzMzMzMDzmckehaKJn0MMmqYcFyFrb9BMzMzMzMDzmckehVc4oiWEKlFBAYaNbOgDagTWcELtRBgGcO51rdOFZmZmZmZSlJrqH44va3bb2JC5Bttg4ma1OdWOfwWRCcGrZmafwrEfaq)MzMzMzMzxgJGcXXRaUdcSh5Y3MMmWzaQrhGrlSGx5eGocN5nwrq)MzMzMzMzxgJGcXXRaUdcSh5Y3MMmWzaQrhGrlSGx5eqXRakwrWZgftiQFZmZmZmZmZmBF5)2gbfIBeihWTnzJH0zOqCJa5aUpHSV0Z(nZmZmZmZmZS9L)BBeuioa54TjOKBt2yiDgkehGC82euYpHSV0Z(nZmZmZmZmZS9L)BBei8kG7GaBSF8SH2K9oyECcIYbWiJIyVrWJa3q(0tyTfB0gkbfq3peKtGyVFKdzapFMeEKdEOKJnKKnnzy43VzMzMzMzMzMrW1orGWRaUdcSX(XZgAp0bJGcXncKd42WQme4MlWeBo2aGjdebZ7EWEOdgbfIdqoEBck5gwLHa3CbgWD82euYbatgicM39WzJIje1VzMzMzMzMzMzMzVdMhNGOCa8aKNJXJChFceq3peeBm8XyCj2uiJH9dbb8SFZmZmZmZmZmZmZyG0dguJYCa9BMzMzMzMzMzq0b)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KP)9L)BBV1midbfUoInfYytgz43mZGOpE2WbBYOmhWf)MzgXMJnayYarW8UhSjdRB(8f)MzgG74TjOKdaMmqemV7bBYwJf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqEVMbziOqJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXba5ydTjBmKodfIdaYXgEczFPN9BMzMzMzMTV8FBJGcXX(Ghk5ydTjBmKodfIJ9bpuYXgEczFPN9BMzMzMzMTV8FBJGcXbihVnbLCBYgdPZqH4aKJ3MGs(jK9LE2VzMzMzMzgbx7ebfIdaYXgAp0bJGcXX(Ghk5ydTh6GrqH4aKJ3MGsU9qhmckehaKJn0MMmqa9IICG7XZgcAp0bJGcXX(Ghk5ydTPjdKZumHmG2dDWiOqCaYXBtqj3WQmmoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbY71midbfACj2uiJH9dbb8SFZmZmZmZmZmJbspyqnkZb0VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)22Jz8bkbfUoInfYytgz43mZGOpE2WbBYOmhWf)MzgG74TjOKdaMmqemV7bBYWyXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFcK3mJpqjOqJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXbupCqBYgdPZqH4aQho4jK9LE2VzMzMzMz2(Y)TnckehGC82euYTjBmKodfIdqoEBck5Nq2x6z)MzMzMzMzeCTteuioG6HdAp0bJGcXbihVnbLC7HoyeuioG6HdUE4Eu(yEcK3mJpqjOqWZ2dDWiOqCaYXBtqj3WQme4MlWaUJ3MGsoayYarW8UhoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbYBMXhOeuOXLytHmg2peeWZ(nZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KPF)VdMhNGOCamxInfYWgYWbbFOnzKHFZmJlXMczqSjJm8BMzMz247EyDeBkKzXVzMzMzxMbiZObICpy4drwhXMczw8BMzMzgU7bkDDeBkKzXVzMzMzeBo2RJytHml(nZmZmdBMlxiccXfDDeBkKzXVzMzMzC82hW1rSPqMf)MzMzMnMbs(O)2hW1rSPqMf)MzMzMb4oGi0zOqCRJytHml(nZmZmJ)(HGa0WhZ6i2uiZIFZmZmZERzqgckCDeBkKzXVzMzMzpMXhOeu46i2uiJFZmJmx8BMzi7lfbG7i3l1MmYGmx8BMzmhO2KX9aLpL4IEcbU5Uy77Lodk37z)MzMzMHa3CbgzFPiaCh5EP2KrgKPFZmZmZ4EzmK9LUyeuioJa1W(rWGCAFV0zq5EpBdx)MzMzMzMzVdMhNGOCa8aKNJXJChFcCK7LAi7lD9mqdyGnK9LAadSbAGgWaBeuioGjOqCN9BMzMzMzM9oyECcIYbWdqEogpYD8PXq6muio2h8qjhB4jK9LE(SFZmZmZmZme4M76XCGUoInfYGCczFPN9BMzMzgeDWVFZmZmZEhmpobr5a4biphJh5o(ei79LIy0RTVx66zGgWaByfqGBUaJSVueaUJCV0Z(nZmZm7DW84eeLdGhG8CmEK74tiWnxGr2xkca3rUx6z)MzMzMX9Yye2KHvabU5cmY(sra4oY9sxmmwSvyydx)MzMzMzMz7l)32q2xQnziWnxGr2xkca3rUxkEcs(nZmZmZmZEhmpobr5a4biphJh5o(e4i3lLaDSHSVu7ebfY8OxMZRNbAadSHSV0Z(nZmZmZmZgUJCV0ti7l9SFZmZmZGOd(nZmi6WIFZmJ5aDDeBkKbXMmUhO8Pex0tiWn3fdzFPN9BMzMzg3lJnQfJlXMczmcud7hbdYje4MlWCj2uidYzB463mZmZmZmJGRDIlXMczwpUeBkK5eY(spF2Oycr9BMzMzMzMzMziWnxGr2xkca3rUxkESciWnxGr2xkca3rUxQTMByqYMmK9L63mZmZmZmZmZyG0dgu)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KPF)VdMhNGOCa8aKNJXJChBtg3du(uIl6PlpyLp73mZi4ANgG8Cm(SrXeI63mZmZmSziqPNaAifacCWtNp73mZmZmSeYba37gHty5boSpD5bR8z)MzMzMHndbk90z)MzgeDWpeDWV)3bZJtquoagzue7nInzKHFZmB1kY(yyiUm(nZm8yqYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMS5l(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjztggl(nZmZmdpiBmjG7beqs2KHXIFZmZmZwTISWh2xuJ9Oi2Be)MzMzMHhKZOWva5HoahmEdyqeqs2KHXIFZmZmZWdcWS3va5HoahmEdyqeqs2KHXIFZmZmZWdYlUZIasYMmmw8BMzMzgEqG(afbKKnzyS43mZmZm8GCgfUcip0b4GT2hFicijBYWyXVzMzMz4bby27kG8qhGd2AF8HiGKSjdJf)MzMzMHhelUB4JbhcijBYWyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajztggl(nZmZmdpizFmJ3pcoGiGKSjdJf)MzMzMHhKn9XbebKKnzyS43mZmZm8GRJaHAKf(W(IIasYMmmw8BMzMzgEqS8nEmKbbKKnzyS43mZmZm8GakZfbHN7SiGKSjdJf)MzMzMHhKSp0beqs2KnFXVzMrMl(nZSvRWI3(nqG63mZWVgKSjJm8BMzMz2Qv8Mb3LXypkI9gXVzMzMz4bb09LIjijBYMV43mZmZm8GJaFumHmGKSjB(IFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KHXIFZmZmZWdYgtc4EabKKnzyS43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzyS43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjdJf)MzMzMHheGzVRaYdDaoyR9XhIasYMmmw8BMzMzgEqS4UHpgCiGKSjdJf)MzMzMHhKZOWva5Hoahm2ZEzgqajztggl(nZmZmdpiaZExbKh6aCWyp7LzabKKnzyS43mZmZm8GK9XmE)i4aIasYMS5l(nZmZmdpiB6JdicijBYMV43mZmZm8GRJaHAKf(W(IIasYMS5l(nZmZmdpiw(gpgYGasYMS5l(nZmZmdpiGYCrq45olcijBYMV43mZmZm8GK9HoGasYMS5l(nZmYCXVzMTAfqoqPqg)MzgESgjBYid)MzMzMTAfVzWDzm2JIyVr8BMzMzgEqaDFPycsYMS5l(nZmZmdp4iWhftidijBYMV43mZmZm8GR9rSbjztggl(nZmZmdpiwSFuiijBYMV43mZmZm8GSXKaUhqajzt28f)MzMzMTAfzHpSVOg7rrS3i(nZmZmdpiNrHRaYdDaoy8gWGiGKSjdJf)MzMzMHheGzVRaYdDaoy8gWGiGKSjdJf)MzMzMHhKxCNfbKKnzyS43mZmZm8Ga9bkcijBYWyXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KnFXVzMzMz4bby27kG8qhGd2AF8HiGKSjB(IFZmZmZWdIf3n8XGdbKKnzyS43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjdJf)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjdJf)MzMzMHhelFJhdzqajztggl(nZmZmdpiGYCrq45olcijBYWyXVzMzMz4bj7dDabKKnzZx8BMzK5IFZmB1QrZD8b0VzMHF9jztgz43mZmZSvR4ndUlJXEue7nIFZmZmZWdcO7lftqs2KnFXVzMzMz4bhb(Oyczajztggl(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjzt28f)MzMzMHhKnMeW9acijBYMV43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzZx8BMzMzgEqEXDweqs2KnFXVzMzMz4bb6dueqs2KnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KHXIFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjB(IFZmZmZWdUoceQrw4d7lkcijBYWyXVzMzMz4bXY34Xqgeqs2KHXIFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjB(IFZmJmx8BMzRwHfmeqeQFZmdpGpjBYid)MzMzMTAfVzWDzm2JIyVr8BMzMzgEqaDFPycsYMmmw8BMzMzgEWrGpkMqgqs2KnFXVzMzMz4bx7JydsYMS5l(nZmZmdpiwSFuiijBYMV43mZmZm8GSXKaUhqajzt28f)MzMzMTAfzHpSVOg7rrS3i(nZmZmdpiNrHRaYdDaoy8gWGiGKSjB(IFZmZmZWdcWS3va5HoahmEdyqeqs2KnFXVzMzMz4b5f3zrajzt28f)MzMzMHheOpqrajzt28f)MzMzMHhKZOWva5HoahS1(4drajztggl(nZmZmdpiaZExbKh6aCWw7JpebKKnzZx8BMzMzgEqS4UHpgCiGKSjB(IFZmZmZWdYzu4kG8qhGdg7zVmdiGKSjB(IFZmZmZWdcWS3va5Hoahm2ZEzgqajzt28f)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjB(IFZmZmZWdILVXJHmiGKSjdJf)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajztggl(nZmYCXVzMTAfwcFumnSIOeJXK63mZWZlrYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMS5l(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjztggl(nZmZmdpiBmjG7beqs2KnFXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYWyXVzMzMz4b5f3zrajzt28f)MzMzMHheOpqrajzt28f)MzMzMHhKZOWva5HoahS1(4drajztggl(nZmZmdpiaZExbKh6aCWw7JpebKKnzyS43mZmZm8GyXDdFm4qajztggl(nZmZmdpiNrHRaYdDaoySN9YmGasYMmmw8BMzMzgEqaM9Ucip0b4GXE2lZacijBYWyXVzMzMz4bj7Jz8(rWbebKKnzZx8BMzMzgEq20hhqeqs2KnFXVzMzMz4bxhbc1il8H9ffbKKnzZx8BMzMzgEqS8nEmKbbKKnzZx8BMzMzgEqaL5IGWZDweqs2KnFXVzMzMz4bj7dDabKKnzZx8BMzK5IFZmB1k2y(W9q9BMz4XQjztgz43mZmZSvR4ndUlJXEue7nIFZmZmZWdcO7lftqs2KnFXVzMzMz4bhb(Oyczajzt28f)MzMzMHhCTpInijBYWyXVzMzMz4bXI9Jcbjzt28f)MzMzMHhKnMeW9acijBYWyXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjdJf)MzMzMHheGzVRaYdDaoyR9XhIasYMS5l(nZmZmdpiwC3Whdoeqs2KnFXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KnFXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjdJf)MzMzMHhCDeiuJSWh2xueqs2KHXIFZmZmZWdILVXJHmiGKSjdJf)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajzt28f)MzgzU43mZwTATVXq)MzgESos2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzyS43mZmZm8GJaFumHmGKSjB(IFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KnFXVzMzMz4bzJjbCpGasYMS5l(nZmZmB1kYcFyFrn2JIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzt28f)MzMzMHheGzVRaYdDaoy8gWGiGKSjB(IFZmZmZWdYlUZIasYMS5l(nZmZmdpiqFGIasYMS5l(nZmZmdpiNrHRaYdDaoyR9XhIasYMS5l(nZmZmdpiaZExbKh6aCWw7JpebKKnzZx8BMzMzgEqS4UHpgCiGKSjB(IFZmZmZWdYzu4kG8qhGdg7zVmdiGKSjdJf)MzMzMHheGzVRaYdDaoySN9YmGasYMS5l(nZmZmdpizFmJ3pcoGiGKSjB(IFZmZmZWdYM(4aIasYMmmw8BMzMzgEW1rGqnYcFyFrrajzt28f)MzMzMHhelFJhdzqajztggl(nZmZmdpiGYCrq45olcijBYMV43mZmZm8GK9HoGasYMmmw8BMzK5IFZmB1kY(y2x(JYVzMHhRNKnzKHFZmZmZwTI3m4Umg7rrS3i(nZmZmdpiGUVumbjztggl(nZmZmdp4iWhftidijBYMV43mZmZm8GR9rSbjzt28f)MzMzMHhel2pkeKKnzZx8BMzMzgEq2ysa3diGKSjB(IFZmZmZwTISWh2xuJ9Oi2Be)MzMzMHhKZOWva5HoahmEdyqeqs2KnFXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjB(IFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjdJf)MzMzMHhCDeiuJSWh2xueqs2KnFXVzMzMz4bXY34Xqgeqs2KHXIFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjdJf)MzgzU43mZwTATx0r53mZWJXCs2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzZx8BMzMzgEWrGpkMqgqs2KHXIFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KHXIFZmZmZWdYgtc4EabKKnzyS43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzZx8BMzMzgEqEXDweqs2KnFXVzMzMz4bb6dueqs2KnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KHXIFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYWyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajzt28f)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjdJf)MzMzMHhelFJhdzqajzt28f)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajzt28f)MzgzU43mZwTclzoig8BMz4Xads2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzZx8BMzMzgEWrGpkMqgqs2KHXIFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KnFXVzMzMz4bzJjbCpGasYMS5l(nZmZmB1kYcFyFrn2JIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzt28f)MzMzMHheGzVRaYdDaoy8gWGiGKSjB(IFZmZmZWdYlUZIasYMS5l(nZmZmdpiqFGIasYMS5l(nZmZmdpiNrHRaYdDaoyR9XhIasYMmmw8BMzMzgEqaM9Ucip0b4GT2hFicijBYMV43mZmZm8GyXDdFm4qajztggl(nZmZmdpiNrHRaYdDaoySN9YmGasYMS5l(nZmZmdpiaZExbKh6aCWyp7LzabKKnzZx8BMzMzgEqY(ygVFeCarajzt28f)MzMzMHhKn9XbebKKnzyS43mZmZm8GRJaHAKf(W(IIasYMmmw8BMzMzgEqS8nEmKbbKKnzyS43mZmZm8GakZfbHN7SiGKSjB(IFZmZmZWds2h6acijBYMV43mZiZf)Mz2Qvyje3f1aYbkfY43mZWJXAqYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMmmw8BMzMzgEW1(i2GKSjB(IFZmZmZWdIf7hfcsYMS5l(nZmZmdpiBmjG7beqs2KnFXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjB(IFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYWyXVzMzMz4bztFCarajzt28f)MzMzMHhCDeiuJSWh2xueqs2KHXIFZmZmZWdILVXJHmiGKSjB(IFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjB(IFZmJmx8tM(Fhmpobr5aya3XBtqjhqV7ldInzKHFZmdeWdJ1y95ZLlw)aw)aw)a4ITALHf3lJFZmdeWdJ1y95ZLlxUC5YLl4ITALbOxC4UO(nZmqapmwJ1NpxUya5YD(CWfB1kB0gk)loCxu)MzgiGhgRX6ZNl35ZXQNpmaUyRwzJMhd0VzMbc4HXAS(85Y9H1WAa(qi4ITALXRytW3VzMbc4HXAS(85YLlxSU5ZNdUyRwzJahdrhEmK73mZab8WynwF(C5c5L4ZhRBo4ITALXBgkb3hFQFZmdeWdJ1y95ZL78585ZLl4ITALbeibZ(EX5NmzrzrzXMaLczqF7rhYGqCrzbuynwSPmeJhdzybal2uYXgYIn)de6fhl28pqOxCCctIbil2ucCWbwSHCarPiSypcN5maCA0WR8glhTyXM)bc9IJf7vRSr4mNbGtJgEL3y5OLFUhO8Pex0tV9gH(OqKfdE2VzM9oyECcIYbWV9gH(OqeBYE7nc9rHi(9BMz7l)3223lDguUxBYaAiDK7Lodk37PZ(nZS3bZJtquoaMlXMczydz4GGpC9yoqpTVx6mOCVN9BMza6(Iah5EPNo73mZyG0dguJYCa9drh8ZInFmH8hfl2qoGOuwS5FGqV44eLCSHSyJqFu4b2dpkKfBemVZYzuwSrW8olNr5nFkbhqwuwSPqaJIbwCjqPSypAMbObcaSyVVVbwaWInb6yM7b2SaGfBChBkblayrzrzXM(2quklayXg3XMsWcawuwuwShi4YLG)XMsolayXg3XMsWcawuwuwSzE8HSaGfBChBkblayrzrzXM5UHSaGfBChBkblayrzrzXM7JpL4IYcawSXDSPeSaGfLfLfBS5aB6BdrPSaGfBChBkblayrzrzXM(2qu6AWcawSXDSPeSaGfLfLfLf7bceSYhO8PeCazX(T3SyZahtCrbGCSHSytW)IYInfcyumyXE0okl2uiGrXyDxukl28kGHndebz2h5SytmWInVpO3rUx6m8VOSytHagfda9IsFeO4GOuwS58OnaypdwYRSyZ)E3d3zrbacyuEf9XZgoWIhwSrpWbadX4XqgewafgSyZ)E3d3zrzXdlklkl2CWcOWy9xdmyrzXc \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 8253292..72ca0cb 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -279,7 +279,8 @@ aura_env.filterService = { greyValueFilter, questItemFilter, classGearFilter, - azeriteFilter + azeriteFilter, + arguniteFilter }, slotsToLoot = {}, run = function(self, lootInfo) From 563243fc6e29f41f61d51f91356229f35e97cdfe Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 10:45:52 +0200 Subject: [PATCH 13/44] Add sotr texture --- LegionWA/SoTR Texture/Export | 1 + LegionWA/SoTR Texture/Init.lua | 8 ++++++++ LegionWA/SoTR Texture/Text.lua | 3 +++ 3 files changed, 12 insertions(+) create mode 100644 LegionWA/SoTR Texture/Export create mode 100644 LegionWA/SoTR Texture/Init.lua create mode 100644 LegionWA/SoTR Texture/Text.lua diff --git a/LegionWA/SoTR Texture/Export b/LegionWA/SoTR Texture/Export new file mode 100644 index 0000000..dc42912 --- /dev/null +++ b/LegionWA/SoTR Texture/Export @@ -0,0 +1 @@ +diuSiaGirLUevLyuQqoLkOzjfLBjv1UubgMk6yuQLjvEgQyAk4AsPTPs6BiyCsHZrv19qO6GiKfsvP8qvkmrujLlkQWgvjojQK0krLAMQq5MOsStf6NuvmurfTuPipvyQiDvvkARQq1xrLunxek7L8xvknyuoSIwSuu9yrzYi6YkTzk5ZuLrdWPv1QPQu9AQkPzlXTrv7MIFlYWb0YPYZbA6qxxsBxQY3fvz8IQ68QuTEujX(bTSfvbOIUdApWURVDBFp)dxVMz7xbVcsfKIQWTEFYqVdCv45svGk28bonKlPAUI3GRZmlhFDGFYOrokMz43BPU3ZBDCjrUA8ub4wSYz6nOcFZhk1hUCSCCHQ4jvea(TqczjlidbSqwtVhaCtvqfMkp19EERduJ2kU7JLf4IAKt7PIsAskQcCwwd2jQc(AbFrfkubolRbfvbFTGVOcfQWLkROk4Rf8fvOqfKVL1Nvl4DrvWxl4lQqHkCZSvuf81c(IkuOI345svGIQGVwWxuHcvaShqCwwdkQc(AbFrfkuH1md)Kruf81c(IkuOIk4EBwzccQMluOImr1OTOkiFqGL5D6MpQWxYuKvbXepDZhvyvnz4NmhDiKBidYGmiZTy1zGS(GBzZWJSj0mi7MMhjQ6MhLlWY8(6YTzq2S6M3UMEhy9gsIQU5r5ga(TqczjlidbSqwtVhaCtvWCp8WdHSdoaYY1xYfY9AivmZWV3sDVN364sIC1yF7tfzvqmXt38XBcKCIRIT3AqfZm8tgqrv8Mhfvbz62SkiM4LVPiRcIjEfZQBE7A6DG1BijQ6MqgXHmRQjd)K5OJDXm53dHCdzqgKbzwjhK9qgXHm7MbzdNqgzcYnKbzqgKbzqgKbzLu2SazMj)czehYUP5rIQU5r5cSmVVUCBgK9hc5gYGmidYGmidYGS3cYoYm5xiJ4ehYo2fZKFpeYqaRbYnKbzqgKbzqgKbzqgKbzqMBXQZazpKBidYGmidYGmidYwdjKBidYGmiBnKqUxdPqHkEdUoZSC81b(jJg5OaDVN36evbiGuE(yuaciLNpgIYWV3QWm5xqr1OTIaWVfsilzbziGfYA69aGBQckuOcGUKNBbbZPBZEWpz04PcRKbvKJ8b6wqW8M3vayFpaOU4)8KGT)UocTd2(T5Cvw9hAOOKMKIQaNL1GDIQGVwWxuHcvGZYAqrvWxl4lQqHkiFlRpRwW7IQGVwWxuHcv4MzROk4Rf8fvOqfUuzfvbFTGVOcfQaypG4SSguuf81c(IkuOI345svGIQGVwWxuHcvynZWpzevbFTGVOcfkuHvYGXZvwnYPtHB9(KHEh4Qa38rfGBXkNP3GkUrogP5OjfpPIWhAtCTMuK3tIa0Lbc2deoB0om0124COHS6pCvb5d67vtg(9wfZsrHPYtDVN36a1OTI384TG40HlPgTfQXorvyLCRNlvnK3ivsor1OTU04QDJRTCgohA5CDGqdz1VLJg5Olni063)qxJZHR2NngiiR(Tx14GgppOvOIzg(9wQ798whxsKRg7BFQ4n46mZYXxh4NmAKJc09EERtufGas55JrbiGuE(yikd)ERcZKFbfvJ2kca)wiHSKfKHawiRP3daUPkOqHk6ToWpz0yNca77ba1L2Ho7gTdNT(B9F2E2kR(ddkkPjPOkWzznyNOk4Rf8fvOqf4SSguuf81c(IkuOcY3Y6ZQf8UOk4Rf8fvOqfUz2kQc(AbFrfkuHlvwrvWxl4lQqHka2diolRbfvbFTGVOcfQ4nEUufOOk4Rf8fvOqfwZm8tgrvWxl4lQqHcvKLkjNOcvyLCRNlvnK0nFS6wfCvdUoRz2smIijtgqIX13PVsu1nbjwot5ToIQUjixwYFsmIQUjiXiQ6M2nu4wVpzO3bUka6sEUfee38XQBvyQ8u375ToqnARiVNebOXHZtfKpOVxnz43BvmlffnFM5REUu1qEJuj5evJ26YqBND31ZgNDCi4NG)oz1VLJg70LH2o7URNno74qWpb)DYQFlhnYrxgA7S7UE24SJdb)e83jR(TC04GUqO7SLWvB7oBce8tWUtw9BBfQ4jve(qBsrMlb8276cHbcT(j0YPH9aN2ZUbz1VLJqHk6Pr7HoBHsa \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Init.lua b/LegionWA/SoTR Texture/Init.lua new file mode 100644 index 0000000..3d21e5e --- /dev/null +++ b/LegionWA/SoTR Texture/Init.lua @@ -0,0 +1,8 @@ +aura_env.findAura = function(LFname) + for i = 1, 40 do + local name = UnitAura("player", i) + if (name == LFname) then + return i + end + end +end \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Text.lua b/LegionWA/SoTR Texture/Text.lua new file mode 100644 index 0000000..5567842 --- /dev/null +++ b/LegionWA/SoTR Texture/Text.lua @@ -0,0 +1,3 @@ +function() + return -select(17, UnitAura("player", aura_env.findAura("Shield of the Righteous"))) .. "%" +end \ No newline at end of file From d44084bdf96a84295394fcec5598a346dcc173c4 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 10:55:31 +0200 Subject: [PATCH 14/44] Add sotr counter --- LegionWA/SoTR Counter/Event.lua | 8 ++++++++ LegionWA/SoTR Counter/Export | 1 + LegionWA/SoTR Counter/Init.lua | 5 +++++ LegionWA/SoTR Counter/Text.lua | 3 +++ 4 files changed, 17 insertions(+) create mode 100644 LegionWA/SoTR Counter/Event.lua create mode 100644 LegionWA/SoTR Counter/Export create mode 100644 LegionWA/SoTR Counter/Init.lua create mode 100644 LegionWA/SoTR Counter/Text.lua diff --git a/LegionWA/SoTR Counter/Event.lua b/LegionWA/SoTR Counter/Event.lua new file mode 100644 index 0000000..976fe42 --- /dev/null +++ b/LegionWA/SoTR Counter/Event.lua @@ -0,0 +1,8 @@ +-- SPELL_UPDATE_CHARGES +function(e) + local charges = aura_env.getCharges() + if (charges ~= aura_env.currentCharges) then + aura_env.currentCharges = charges + return true + end +end \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Export b/LegionWA/SoTR Counter/Export new file mode 100644 index 0000000..89160e3 --- /dev/null +++ b/LegionWA/SoTR Counter/Export @@ -0,0 +1 @@ +diuwfaqjvsQrPeoLs0RuiXSak1TOGDbOgMkXXiPLrWZuPMgqUMsABa8ncvJJICoOQUhG4GuuTqvs5HqPjQsQUOc1grcFeQIrcu1jbkzLuOxQscZKIYnvjr7Kq(jqLHIeTuGINs1uv0vbK2QkjzVs)fjnyqhwPEmetMexwyZk4Zi1OPuNMOvRqQMnKUnLSBe)wKHdflNupxfth11f12HkFhQsJxH48ekRxHKMVcPSFvDv7SUvDL6kDwpLzujjQpbpyH9kahqNMbwIgxxrEg9mbHL4I6Bu06kYdg0TyZyeU(vJuhjF4K1mgHRpKjiSmrwS8n(Wh(WhQdoRjpCN1BQbbhW0bJ1ERPJZILVXGOuFJWsCXulPPd9vMuIkYG6L6i5dNSMXimqXOS5OEGliC9ncltKtN1Lej3zDLevK8Htw9A1rYhozvFN1BQbbhW0bJ1ERPJZdbYdhYeewMilw(gF4dF4d1bN1KhEc0aHxOc2pepb7ycuuS2BnDCwSEd4YLLlFJbrPC56schAYg9Qc9rMiv0D9tGoqzss46yhlAogm1zTKMo0DwNfdtuhjF4KvDLSEZYeP(fGVRJKpCYQUbdp0PCSzMrfOuEDZNJPIf8Mdg8m2FJdzccltKfXY34dF4dFiAczJ(qe7TMoopeipCN1BQbbhW0bJ1ERPJZILVXh(Wh(q5WdxGyV10X5H)ObKhUZ6n1GGdyKSwhegR9wthNLpKTdYB8Hp8Hp8Hp8HpCN1BQbbhWizToimw7TMoopeipeXERPJZB8Hp8Hp8Hp8HpuhCwtEiRZXB8Hp8HpmikVXGOuhjF4Kfvwmmr9axq46h7eEbhP(XoHxWrmhHL4I6bUGWN6oLJnZmQaLYRB(CmvSG3CWGNXEDK8HtwuTLkrDwAfkLRJrNO1X5qPoqKhzIurxQpKiCDSjIsqoHYdVwcv5Hlgb7Cuww3oK02CPWKjaaab4ca8faa62eOlDWaO16OPTsN15nAqyHoRBLrzzNLlxN3ObH7SUvgLLDwUCDf5WGejJYI1zDRmkl7SC566ns0zDRmkl7SC566eA0zDRmkl7SC56yWHH3ObH7SUvgLLDwUCDjHwNYy6SUvgLLDwUC9HncltKoRBLrzzNLlxU(qIWUCuJksW0L66GwMitXWe15yeUUuPUBlduLhMgEiBhpemsABos5ZdXMYeo01XRuHTlfIlasC8nbc0ft34VkU4a6GbqaQJKqt6oRi1sbavtQGuvfwVfwVbii0bdR3vKqPaGQjvqQQcR3cR3aee6GH17k6Uuaq1KkivvH1BH1BaccDWW6DfbQuScAvqae(IlCVcWKQGPoyy9UCDs2AQL00H(urQ13eP1MLjsN1hKe5XUZ6SyyI6y0Xj46y0Xj46dBLOC5Y1p1faEfyvbdQRgOXheaaiQ4xhxfPcsqTCl \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Init.lua b/LegionWA/SoTR Counter/Init.lua new file mode 100644 index 0000000..4e14f2c --- /dev/null +++ b/LegionWA/SoTR Counter/Init.lua @@ -0,0 +1,5 @@ +aura_env.getCharges = function() + return select(1, GetSpellCharges(53600)) +end + +aura_env.currentCharges = 0 \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Text.lua b/LegionWA/SoTR Counter/Text.lua new file mode 100644 index 0000000..8a218ed --- /dev/null +++ b/LegionWA/SoTR Counter/Text.lua @@ -0,0 +1,3 @@ +function() + return aura_env.getCharges() +end \ No newline at end of file From d50e4f6ff231dc8e7526c62fa73c07b6baee602f Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 12:15:20 +0200 Subject: [PATCH 15/44] Add cooldown alert --- LegionWA/CooldownAlert/Event.lua | 5 +++ LegionWA/CooldownAlert/Export | 1 + LegionWA/CooldownAlert/Init.lua | 68 ++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 LegionWA/CooldownAlert/Event.lua create mode 100644 LegionWA/CooldownAlert/Export create mode 100644 LegionWA/CooldownAlert/Init.lua diff --git a/LegionWA/CooldownAlert/Event.lua b/LegionWA/CooldownAlert/Event.lua new file mode 100644 index 0000000..eaeb61e --- /dev/null +++ b/LegionWA/CooldownAlert/Event.lua @@ -0,0 +1,5 @@ +-- ACTIONBAR_UPDATE_COOLDOWN +function(allstates, e) + aura_env.processEvent(allstates) + return true +end \ No newline at end of file diff --git a/LegionWA/CooldownAlert/Export b/LegionWA/CooldownAlert/Export new file mode 100644 index 0000000..3647397 --- /dev/null +++ b/LegionWA/CooldownAlert/Export @@ -0,0 +1 @@ +dWunqaGiksXNukknksWPiHEffjYSOsDlsXUKcdJq1XeOLrI8mLsMgfX1irTnLs9nbW4ukY5uvyEuKKUNu0(OijoOaAHckEOsHjQu1ffuAJQkYhjuAKcqNuvPvssVKIe1mPOKBsrsTtcPFkOAOuu0sje9uHMkvCvksvBLIu6RuKkRLIe6TekUlHWEL8xvjdgDyIwSsr1JPWKj4Yk2mvYNvfJwv1Pf1QvkkEnfvZMs3MuA3I8BLmCP0YPQNlvtxLRtQ2UG8DLkJxvrDEvPwpfj49uu4(uuQ9dxblNkklN6QyVIk1q5gbvstqL188HjBVTrWpQO2kkurHYPIp(1UkgWWf5xtXWf1jqZQIc5(MrpzC5qtfLwBfLgxo044ZppJ3uVeMsunbfVI9wPXuIkEf7J1LzUYPRIMvy)Ktf)N8Z)vF6dXfpab)WKpu(JaeGT2(JTlxAmz7kAxsHYPIN0oPtPYPIA1TxUCQRUkEs7KUYPIA1TxUCQRUk6x2PCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI50JFP3wovuRU9YLtD1vX2qTN0oPRCQOwD7LlN6QRIUKgxELkNkQv3E5YPU6QOEFEzyL9ET51vrzkRvEtfMk6NN8k58UDQOW7KuB24XV0BR485wzsyeQWuXZNFEgF5uX()Ax4Pk2)x7cpfOXLdn1vXSqf3yTScRDPaTJ)eRFP3wXC6gFsAnTJVNxPs0TQ4USW9xFYeLfFRTfpyacGjBsztcAIjLlnMOCft6AD85NNX3lrdwXCkFV6N0FJqjAW6QOr5uIgSCQ4nF(c(Pv6IztHPenakvrPXLdno(8ZZ4n1lHPevtqXRO04YRuVCQyoLVYPIcRxg69BPTctfn073sBfL6E5RjfQX5LgMpcX2XA7GnbndOccccQK4kfGGUb1Obuvx4z0oPdQGGGGkTTYbyl3GA0aUXk1hdV8YReubbbbvs8pusCLCdQrdyyFpGlxGoV9qfeeeuPGBTTYk5guJgWaktcGlxG3)aAM(1ng3YdvqqqWTc(Xwk7guJgWadnPNXVz7GX)8yfGkiiiOYBTT4I7guJgW4FEScGlxG3)akY8Z)nl9oubbbbdkUjM4guJgWaktcGlxGFYpJWslubbbbdQSYbnrz3GA0agO3qMgqNL3pPdQGGGGBs5TCdQrdyaLA1oEWLlqv9(LngOccccU9hMiUBqnAadOmjaUCbgLg(SRSXavqqqWTcUjLf3nOgnGb6fM0bUFCnjHXdvqqqWnT92k)HBqnAafRU0lKLjWLlWatg5jDGMY50thQGGGGkjUjIhCtUb1Obmm2P3ZPhWLlWy7yT7KEHC6bQMnuTldPfmBSs7Z9wR89EDV8YReytqXBycuTldPf8XqyVUxE5vcSjyWgkdvOk19YxtkuJDlV57LNeSjOzy2q11YdAUBWE7yTFfaZjWwz23vqQ7LVMuOgNxAy(ieBhRTRiOWcQGGGGsDV81Kc1y3YB(E5jftVDS2VcIaSjOzavqqqqqqqq)ifEd2e886JBOcccccccc(l7B8l9pthSjOlPTpUHkiiiOzdvqqqWSlqXoxSDS2n(L(NPRqVDS2VckcE)tcQGGGGGGGGsDV81Kc1y3YB(E5jftVDS2VcIOXVSVXV0)mDWMGNxFGkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjyFSJXPqq3GIDUy7yTB8l9ptxHE7yTFfuurOccccojbOojbOcvPUx(AsHA06xgtVh2qt6aBc6spzC5vsbP12p5nDfHkiiiORLh0C3G92XA)kaMtGTYSVRGu3lFnPqnoV0W8ri2owBxrqHfubbbbbbbb1ObmGYKGDa7TJ12b3LVFqJFP)z6qfeeeeeee0UmKwWCxKJu4nubbbbbbbbZUavqQ7LVMuOg7wEZ3lpPy6TJ1(vqen(L9n(L(NPRi49pjOccccccccccccAxgslOXV0)mDWMG9XogNcbDdk25ITJ1UXV0)mDf6TJ1(vqrfHkiiiiiiiiiiiy2fOcg)s)Z0bnvaL6E5RjfQXUL389YtkME7yTFferdJFP)z6kcE)tcQGGGGGGGGGGGGGGGG5UihPWBWMGNxFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOcccccccccccco2(avqqqqqqqqqqqqqqqWCxKJu4nytqxsBFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOccccccccccccojbOcccccccco2(avqqqqqqqqqqqWCxKJu4nytW(yhJtbLCdk25ITJ1UXAzfw7sk0BhR9RGIkcAQc(yiSx3lV8kbvqqqqqqqWjjavOcvqqqqqqqWSlqfsRduQ7LVMuOg7wEZ3lpPy6TJ1(vqen8Ju4nOmjaM7ICKcVve8(NeubbbbbbbbbbbbTldPfmBSsGnb7JDmof2YnOyNl2ow73KRLc92XA)kOOIqfeeeeeeeeeeeuAT9tEtxm92XA)kicWMGMbubbbbbbbbbbbbbbbb7)RDGnbpV(4gQGGGGGGGGGGGGGGGGg)Y0Zia2e886JBOccccccccccccccccMtcZNbBck25CYAhfu0nubbbbbbbbbbbbbbbb9tF5pWMGNxFCdvOccccccccccccccccMnwjWMGzJvYnuHkiiiiiiiiiiiiiiiyRF94NE35D7a2e00CzTJGPXnubbbbbbbbbbbbbbbbNp3M9YlVsozTdytqXoNtw7OGIGMsGzJvAFU3ALV3R7LxELCdvqqqqqqqqqqqqqqqqbDV8YReytWSXkTp3BTY3719YlVsUHkiiiiiiiiiiiiiiiOu)wbmlmGnbpV(4gQGGGGGGGGGGGGMnubbbbbbbbNKauHkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiA4hPWBWMG5UihPWBOccccojbOojH6QRI385lyytYn3oc1MxrzkRvE5vQCQORCk3)lNkEVBNk26N(CvS1p95QOlPWuxDv885NNXxov8E3ov0qVFlTvCcnPRxXa3W5B4IgMaf5ltVzUpqNW(AJWd3S2hUPt0kAO3VL2kQrdyGB48nCrdtGI8LP3m3hOtyFTr4HBw7d30jkuDPNmU8kPG0A7N8MUBWrrOcccck19YxtkuJw)Yy69WgAsNcsRTFYB6kcvqqqq)C6(e451hOojHk2)x7cpvX()Ax4PanUCOPIg)JH5vCcnPRIg69BP919UDQy)K3O3kiVPUk(p5N)RenOsBQI2LuOCQ4jTt6uQCQOwD7LlN6QRIN0oPRCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI(LDkNkQv3E5YPU6QyBO2tAN0vovuRU9YLtD1vXC6XV0BlNkQv3E5YPU6QOlPXLxPYPIA1TxUCQRU6QyoDJpjTM2X3ZRuj6wvui33m6jJlhAQO0AR4JDTRctf9ZtELCE3ovmBSsvmPR1XNFEgFVenyf3LfU)s0GkTPkMfQ4gRLvyTlfOD8xfnw2LVCkrnPev8gkxxD1vXqLObnrPG1vf \ No newline at end of file diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua new file mode 100644 index 0000000..4af7bba --- /dev/null +++ b/LegionWA/CooldownAlert/Init.lua @@ -0,0 +1,68 @@ +aura_env.trackedSpells = { + 20271, -- Judgement + 26573, -- Consecration + 209202, -- Eye of Tyr + 213652, -- Hand of the Protector + 31935, -- Avenger's Shield + 53600, -- Shield of the Righteous + 1044, -- Hand of Freedom + 155145, -- Arcane Torrent + 853, -- Hammer of Justice + 6940, -- Hand of Sacrifice + 31850, -- Ardent Defender + 86659, -- Guardian of Ancient Kings + 204018, -- Blessing of Spellwarding +} +local iconDisplayDuration = 0.4 +local gcdDuration = 1.5 + +aura_env.workData = {} +for k, spellId in pairs(aura_env.trackedSpells) do + aura_env.workData[spellId] = { + ready = true, + hasCharges = false, + } + if GetSpellCharges(spellId) then + aura_env.workData[spellId].hasCharges = true + aura_env.workData[spellId].charges = select(1, GetSpellCharges(spellId)) + end +end + +aura_env.processEvent = function(allstates) + for k, spellId in pairs(aura_env.trackedSpells) do + -- Handle spells with charges + local isReady + if (aura_env.workData[spellId].hasCharges) then + local charges = select(1, GetSpellCharges(spellId)) + if (charges > aura_env.workData[spellId].charges) then + isReady = true + aura_env.workData[spellId].charges = charges + else + isReady = false + aura_env.workData[spellId].charges = charges + end + else + isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration + end + + + if (not aura_env.workData[spellId].ready and isReady) then + local icon = select(3, GetSpellInfo(spellId)) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = icon, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + end + + aura_env.workData[spellId].ready = isReady + end +end \ No newline at end of file From 1f78ad8d5e4f0d676f030a5d07e7122b414e4361 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 12:47:16 +0200 Subject: [PATCH 16/44] Add more error handling in loot --- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index bd12080..80edcc3 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dmL7NbGiGEeusWLuiLQrPICkvuRcvjQxPKIQzPe3sjzxaQHPO6yqHLPKcpdkPmnLuvxdGQABOkr(gusQXbLu5CqjvToLuL3PKICpfzFqjjhevPwiQs4HaKMiuIUiQsAJkPYhbKAKaItQOyLQQxcLeAMke3ujL2jGKFIkQHcLWrbiwQcP4POutfaxvHukBvHu9veLoRcPK3cvnxaQYDrK9Is(lQidwoSQSyufpgv1KvWLbTzuPpRqnAOOtJWQHsI61kKmBL62qLDdPFRsdhk1XbOYYrXZHy6iDDvy7OcFxrPXdq58iQwVskkVhrH5dLe5(ikA)0SWGfaSy)ybalkl2iSyVgad4dmgRbl24yXEGf7bwaWInGXzUCrGuwa1kS61Fol2KZzUCrGuwafGpwBol2p(ucoGaWqmEmKzT3bilGAfgZzXgb7hFilGAol2eOuid6Bp6qgeIlklGcRXIncCZflUeOuwSbGZyXi866aGf73Mymkl2JWRRdawSXesmgtkR1T(a(ZXA8sZXAy9RXAG1WAy1y1y9RblURwFEjwS333alayXMaDmZ9aBwaWInUJnLGfaSOSOSytFBikLfaSyJ7ytjybalklkl203gIsxdwaWInUJnLGfaSOSOSyFGa5e)9dbHfpSyZ84dzbal24o2ucwaWIYIYInZDdzbal24o2ucwaWIYIYIn2CGn9THOuwaWInUJnLGfaSOSOSyZ9XNsCrzbal24o2ucwaWIYIYI9abxUe8p2uYzbal24o2ucwaWIYIYIYI9dLa3JczXlyXMboM4Ica5ydzXEGC0hoc(JzUhyZIneWW(HoahyXdl2edSyZ7d6DK7LYI9SedumzTU1hWFowJxAogy1y1RpwhG)6JX6V(S4UA95LyXEGabR8bkFkbhqwSF7nl2Oh4aGHy8yidclGcdwSjqjOCcH(yOWbwafgSytzigpgYWcawSrW8olNrzXgbZ7SCgL38PeCazrzrzXMplaybuyWcawSPqaJIX6UOu2eRzqwa1AmNf7hFkbhqayigpgYS27aKfqTcJ5Sy)4tjUOiSaGfBe6JHYcawShUCcheb5ngYIhwuwSjqjOSaGf7HlN4FGqV4yXlyXM)bc9IJf79L)BBdqEogBtg33gb6FF5)2gb)lkwsGG9(rowEW8OexuBYWA(9VALrqH4aQho4IrqH4gHaDulgbfIdqoEBck5lgbfIBeihW9IrqH4wlb6iqoG7fJGcXba5ydxmckeh7dEaGCSHleuio20h)rbO3du6IrqH44va3bb2JC5VyeuioaGag9GbUyiW9glyi4dxm(7hcYmy5IHCWd)9dbzgSCX4HaDaaYXgUabmSF8NblxmeiDgSCXiqauMhxkb64rd8ngIsTjdOH0zOqCZGY9EczFPN9VALTVx6m8VOl2(EPa1dhCX23lfqoEOuck5lg)dggikFYNblxS99sbKJ3MGs(ITV8hfCyXiqaKdicDgke3Ib4oGi0zWYfJaH38PeCaTjdOH0rUxk79Lodk37jK9LE2)Qv2ieOJYqU4GucCqeB4crm0l1M9Ymk)7l)324EGYNsCrTXq6muiUriqh1jK9LE2VzMXaPhmOgqdPJCVu27lDec0rDczFPN9drh8VV8FBJ7bkFkXf1gdPZqH4aQho4jK9LE2VzMXaPhmOgcCd5tpTglgqdPJCVu27lDguU3ti7l98z)q0b)7l)324EGYNsCrTXq6muioaihB4jK9LE2VzMXaPhmOgcCd5tpXlTyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqCSp4Hso2Wti7l9SFZmJbspyqne4gYNEcREXaAiDgke3mOCVNgdPZqH4gHaDuNq2x65ZN9drh8VV8FBJ7bkFkXf1gdPZqH4gbYbCFczFPN9BMzmq6bdQHa3q(0tR)Ib0q6muiUzq5EpngsNHcXncb6OoHSV0ZNp7hIo4FF5)2g3du(uIlQngsNHcXn6V9b8eY(sp73mZyG0dgudbUH8PNWaJfdOH0zOqCZGY9EAmKodfIBec0rDczFPNpF2peDW)(Y)TnUhO8PexuBmKodfIdqoEOuck5Nq2x6z)MzgdKEWGAiWnKp9ewBXaAiDK7LYEFPZGY9EczFPNp7hIo4FF5)2g3du(uIlQngsNHcXbihVnbL8ti7l9SFZmJbspyqne4gYNEcRTyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqC8kG7Ga7rU8FuIl6jK9LE2VzMXaPhmOgcCd5tpH1VyanKodfIBguU3tJH0zOqCJqGoQti7l985Z(HOd(3x(VTX9aLpL4IAJH0zOqCZW)IEczFPN9BMzmq6bdQHa3q(0tymFXaAiDgke3mOCVNgdPZqH4gHaDuNq2x65ZN9drh873)(Y)TTH7i3l1MmUhO8Pex0ti7l9SFZm7DW84eeLdGhG8CmEK74tGJCVuc0XgY(sxpd0agydzFPN9BMzJCVu27l9eY(sp73VzMTV8FBJGcXnd)lQnzJH0zOqCZW)IEczFPN9BMz7l)32iOqCa1dh0MSXq6muioG6HdEczFPN9BMz7l)32iOqCaYXdLsqj3MSXq6muioa54HsjOKFczFPN9BMz7l)32iOqCaYXBtqj3MSXq6muioa54TjOKFczFPN973mZEhmpobr5a4biphJh5o(eiwY8MLaDSrW)IACVmgObmWgbfIdOE4GgWaBG2Seumna3XBtqj3anGb2iOqCaYXBtqj)SFZmBF5)2g6dhKSeumb07(Yyt27G5Xjikhad4oEBck5a6DFzqWtqH4aKJ3MGsUTMByqYagydepObmWgbfIdOE4GgWaBGKa8WynwFgq)Mz2(Y)Tn0hoizjOycihpukbLCBYqF4GKLGIjGE3xgdyGnqdWanGb2iOqCaYXdLsqj3VFZm7DW84eeLdGhG8CmEK74tG8gbHymkb6yd9HdcAadSH(Wbjlbfta54HsjOKF2VzM9oyECcIYbWV9gH(Oqe8yfEhmpobr5a43EJqFuiITMByqYMmYWVzMzMziyEN1MmkZbCXVzMzMz8X8HogoytgL5aU43mZmZmc0biGztgqdPaqGdE68IFZmZmZyGixgQnzuMd4IF)MzMzMrW)IAtgbfIBg(x0f)MzMzMH(WbTjd9HdswckMaYXdLsqjFXVzMzMzpC3duQnzeuioa54HsjOKV43VzMzMzyZChZarqaGCSH2KbsjWbhax8BMzMzgeWWMG5rjUOaqGdAtgqdPaqGdE6STMBe8VOyjbc27h5y5bZJsCrx8BMzMz2WbZJsCrTjJG)ffljqWE)ihlpyEuIl6IFZmZmZEh0lqigG2KrzoGl(nZmY0peDWVF)7l)32gF3dRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFceOV7bJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXbupCqBYgdPZqH4aQho4jK9LE2VzMzMzMzgbx7ebfId9HdAp0bJGcXbupCW1d3JYhZtGJ2hwZTta9DpGvcReBInhqgSsyLa0l2ydzodE(SrXeI63mZmZmZmZmZEhmpobr5a4biphJh5o(eiqF3dgxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTDzgGmJgiY9GHpezDeBkKXMmYWVzMbrF8SHd2KrzoGl(nZmUeBkKXMmUhO8Pex0tiWn3fdzFPN9BMzMzgbx7ecCZfyi6JNnC4SrXeI63mZmZmZm7DW84eeLdGhG8CmEK74tGJgiY9GHp04sSPqM1KHSV01ZanGb2q2x6z)MzMzMzMz7l)32iOqCa1dh0MSXq6muioG6HdEczFPN9BMzMzMzMrW1orqH4aQhoO9qhmckehq9WbxpCpkFmpbYzMbiJnAGi3dg(qeWZNnkMqu)MzMzMzMzMz27G5Xjikhapa55y8i3XNa5mZaKXyGi3dg(qJlXMczmSFiiGN9BMzMzMzMzMzmq6bdQrzoG(nZmZmZmZGOd(nZmZmdIo43mZGOd(jt)7l)32WDpqPRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFcCT3duQXLytHmRjdzFPRNbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2KngsNHcXba5ydpHSV0Z(nZmZmZmZi4ANiOqCaqo2q7HoyeuioaihBOnnzGR9EGsbpBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbU27bk14sSPqgd7hcc4z)MzMzMzMzMzgdKEWGAuMdOFZmZmZmZmi6GFZmZmZGOd(nZmi6GFY0)(Y)TnInh71rSPqgBYid)Mzge9XZgoytgL5aU43mZi2CSbatgicM39GnzyDyDZx8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNaNzeo2gxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIBeihWTnzJH0zOqCJa5aUpHSV0Z(nZmZmZmZi4ANiOqCJa5aUTh6GrqH4gbYbCByvgcCZfyInhBaWKbIG5DpC2Oycr9BMzMzMzMzMzVdMhNGOCa8aKNJXJChFcCgkeNTHCa3gxInfYyy)qqap73mZmZmZmZmZyG0dguJYCa9BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTHnZLlebH4IUoInfYytgz43mZGOpE2WbBYOmhWf)MzgMqgEqSjJYCax8BMz83xkM2KX9TrGl(nZSld0MmUVncCXVzMTHpkMqgBY4(2iWf)Mzg)7DueOJTjJ7BJax8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNaXcMlxiccXf14sSPqM1KHSV01ZanGb2q2x6z)MzMzMzMz7l)32iOqCaqo2qBYgdPZqH4aGCSHNq2x6z)MzMzMzMzeCTteuioaihBO9qhmckehaKJn0MMmqayEdqKrrS3GNnkMqu)MzMzMzMzMz2(Y)Tnckeh7dEOKJn0MSXq6muio2h8qjhB4jK9LE2VzMzMzMzMzMrW1orqH4yFWdLCSH2dDWorqH4yFWdLCSH20KbceidpG2dDWqGBUaJjKHhKZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdCe4JIjKb0EOdgcCZf4n8rXeYC2VzMzMzMzMzMDzSteuio2h8qjhBOnnzGa6(sXe0EOdgcCZfy(7lfZZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdKZmqq7HoyiWnxGVmWZ(nZmZmZmZmZSlJDIGcXX(Ghk5ydTPjdeqV3rrGog0EOdgcCZfy(37OiqhF(SrXeI63mZmZmZmZmZmZS3bZJtquoaEaYZX4rUJpbIfmxUqeeIlQXLytHmg2peeWZ(nZmZmZmZmZmZmJbspyqnkZb0VzMzMzMzMzMbrh8BMzMzMzMbrh8BMzMzgeDWVzMbrh8tM(3x(VTXXBFaxhXMczSjJm8BMzq0hpB4GnzuMd4IFZmJJ3(acaMmqemV7bBYWAa(gVSHX85gVSHX85l(nZSh2yVjhamzGiyE3daCNHcXXM(4pkBY4(2iWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jWr)TpGgxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIB0F7dOnzJH0zOqCJ(BFapHSV0Z(9BMzMzMzMrW1oHa3Cb(Hn2BYbatgicM39aa3zOqCSPp(J6SrXeI63mZmZmZmZmZ2x(VTrqH4aKJhkLGsUnzJH0zOqCaYXdLsqj)eY(sp73mZmZmZmZmZEhmpobr5a4biphJh5o(eiayczGgeWiqOgObmWgbfIdqoEOuck5gWaBGgbfIdXiqnK9LAGgWaBi7l9SFZmZmZmZmZmJGcXn6V9b0Mmcke3O)2hqJx2iOqCaYXdLsqj3VzMzMzMzgeDWVFZmZmZmZmcU2jcke3O)2hq7HoyeuiUr)TpGgwLHa3CbMJ3(acaMmqemV7HZgftiQFZmZmZmZmZm7DW84eeLdGhG8CmEK74tGJ(BFanUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBBmdK8r)TpGRJytHm2Krg(nZmi6JNnCWMmkZbCXVzMTALXgsnkMmqemV7bJET5g9A77LAV92gZajhXVzMXXBFabatgicM39Gnza(gVSHX85gVSHX85l(nZSh2yVjhamzGiyE3daCNHcXXM(4pkBY4(2iWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqGMbsUXXBFanUeBkKznzi7lD9mqdyGnK9LE2VzMzMzMz2(Y)TnckehGC82euYTjBmKodfIdqoEBck5Nq2x6z)MzMzMzMzeCTteuioa54TjOKByv28ZgftiQFZmZmZmZmZmBF5)2gbfIB0F7dOnzJH0zOqCJ(BFapHSV0Z(9BMzMzMzMzMzeCTtiWnxGFyJ9MCaWKbIG5DpaWDgkehB6J)OoBumHO(nZmZmZmZmZmZmBF5)2gbfIdqoEOuck52KngsNHcXbihpukbL8ti7l9SFZmZmZmZmZmZmZEhmpobr5a4biphJh5o(eiayczGgeWiqOgObmWgbfIdqoEOuck5gWaBGgbfIdXiqnK9LAGgWaBi7l9SFZmZmZmZmZmZmZiOqCJ(BFaTjJGcXn6V9b04LnckehGC8qPeuY9BMzMzMzMzMzq0b)(nZmZmZmZmZmcU2jcke3O)2hq7HoyeuiUr)TpGgwLHa3CbMJ3(acaMmqemV7HZgftiQFZmZmZmZmZmZmZEhmpobr5a4biphJh5o(eiqZaj344TpGgxInfYyy)qqap73mZmZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzMzgeDWVzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)2gG7aIqNHcXToInfYytgz43mZGOpE2WbBYOmhWf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqa5aIqnckeNXLytHmRjdzFPRNbAadSHSV0Z(nZmZmZmZ2x(VTrqH4aGCSH2KngsNHcXba5ydpHSV0Z(nZmZmZmZ2x(VTrqH4yFWdLCSH2KngsNHcXX(Ghk5ydpHSV0Z(nZmZmZmZi4ANiOqCaqo2q7Hoyeuio2h8qjhBO9qhmckehaKJn0MMmckeh7dEOKJn0MMmqa5aIqbpBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbcihqeQrqH4mUeBkKXW(HGaE2VzMzMzMzMzMXaPhmOgL5a63mZmZmZmdIo43mZmZmi6GFZmdIo4Nm9VV8FBJ)(HGa0WhZ6i2uiJnzKHFZmdI(4zdhSjJYCax8BMzeBo2aGjdebZ7EWMmSU5Zx8BMzaUJ3MGsoayYarW8UhSjBnw8BMzCj2uiJnzCpq5tjUONqGBUlgY(sp73mZmZmcU2je4MlWq0hpB4WzJIje1VzMzMzMz27G5Xjikhapa55y8i3XNab09dbXgdFmgxInfYSMmK9LUEgObmWgY(sp73mZmZmZmBF5)2gbfIdaYXgAt2yiDgkehaKJn8eY(sp73mZmZmZmBF5)2gbfIJxbCheypYLVnzJH0zOqC8kG7Ga7rU8FuIl6jK9LE2VzMzMzMzgbx7ebfIdaYXgAttgiVzWDza9BMzMzMzMDzmckehaKJn0MMmqYcFyFrb9BMzMzMzMDzmckehVc4oiWEKlFBAYaNbOgDagTWcELtRBgGcO51rdOFZmZmZmZSlJrqH44va3bb2JC5Bttg4ma1OdWOfwWRCcGrZmafwrEfaq)MzMzMzMzxgJGcXXRaUdcSh5Y3MMmWzaQrhGrlSGx5eGocN5nwrq)MzMzMzMzxgJGcXXRaUdcSh5Y3MMmWzaQrhGrlSGx5eqXRakwrWZgftiQFZmZmZmZmZmBF5)2gbfIBeihWTnzJH0zOqCJa5aUpHSV0Z(nZmZmZmZmZS9L)BBeuioa54TjOKBt2yiDgkehGC82euYpHSV0Z(nZmZmZmZmZS9L)BBei8kG7GaBSF8SH2K9oyECcIYbWiJIyVrWJa3q(0tyTfB0gkbfq3peKtGyVFKdzapFMeEKdEOKJnKKnnzy43VzMzMzMzMzMrW1orGWRaUdcSX(XZgAp0bJGcXncKd42WQme4MlWeBo2aGjdebZ7EWEOdgbfIdqoEBck5gwLHa3CbgWD82euYbatgicM39WzJIje1VzMzMzMzMzMzMzVdMhNGOCa8aKNJXJChFceq3peeBm8XyCj2uiJH9dbb8SFZmZmZmZmZmZmZyG0dguJYCa9BMzMzMzMzMzq0b)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KP)9L)BBV1midbfUoInfYytgz43mZGOpE2WbBYOmhWf)MzgXMJnayYarW8UhSjdRB(8f)MzgG74TjOKdaMmqemV7bBYwJf)MzgxInfYytg3du(uIl6je4M7IHSV0Z(nZmZmJGRDcbU5cme9XZgoC2Oycr9BMzMzMzM9oyECcIYbWdqEogpYD8jqEVMbziOqJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXba5ydTjBmKodfIdaYXgEczFPN9BMzMzMzMTV8FBJGcXX(Ghk5ydTjBmKodfIJ9bpuYXgEczFPN9BMzMzMzMTV8FBJGcXbihVnbLCBYgdPZqH4aKJ3MGs(jK9LE2VzMzMzMzgbx7ebfIdaYXgAp0bJGcXX(Ghk5ydTh6GrqH4aKJ3MGsU9qhmckehaKJn0MMmqa9IICG7XZgcAp0bJGcXX(Ghk5ydTPjdKZumHmG2dDWiOqCaYXBtqj3WQmmoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbY71midbfACj2uiJH9dbb8SFZmZmZmZmZmJbspyqnkZb0VzMzMzMzgeDWVzMzMzq0b)MzgeDWpz6FF5)22Jz8bkbfUoInfYytgz43mZGOpE2WbBYOmhWf)MzgG74TjOKdaMmqemV7bBYWyXVzMXLytHm2KX9aLpL4IEcbU5Uyi7l9SFZmZmZi4ANqGBUadrF8SHdNnkMqu)MzMzMzMzVdMhNGOCa8aKNJXJChFcK3mJpqjOqJlXMczwtgY(sxpd0agydzFPN9BMzMzMzMTV8FBJGcXbupCqBYgdPZqH4aQho4jK9LE2VzMzMzMz2(Y)TnckehGC82euYTjBmKodfIdqoEBck5Nq2x6z)MzMzMzMzeCTteuioG6HdAp0bJGcXbihVnbLC7HoyeuioG6HdUE4Eu(yEcK3mJpqjOqWZ2dDWiOqCaYXBtqj3WQme4MlWaUJ3MGsoayYarW8UhoBumHO(nZmZmZmZmZS3bZJtquoaEaYZX4rUJpbYBMXhOeuOXLytHmg2peeWZ(nZmZmZmZmZmgi9Gb1Omhq)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KPF)VdMhNGOCamxInfYWgYWbbFOnzKHFZmJlXMczqSjJm8BMzMz247EyDeBkKzXVzMzMzxMbiZObICpy4drwhXMczw8BMzMzgU7bkDDeBkKzXVzMzMzeBo2RJytHml(nZmZmdBMlxiccXfDDeBkKzXVzMzMzC82hW1rSPqMf)MzMzMnMbs(O)2hW1rSPqMf)MzMzMb4oGi0zOqCRJytHml(nZmZmJ)(HGa0WhZ6i2uiZIFZmZmZERzqgckCDeBkKzXVzMzMzpMXhOeu46i2uiJFZmJmx8BMzi7lfbG7i3l1MmYGmx8BMzmhO2KX9aLpL4IEcbU5Uy77Lodk37z)MzMzMHa3CbgzFPiaCh5EP2KrgKPFZmZmZ4EzmK9LUyeuioJa1W(rWGCAFV0zq5EpBdx)MzMzMzMzVdMhNGOCa8aKNJXJChFcCK7LAi7lD9mqdyGnK9LAadSbAGgWaBeuioGjOqCN9BMzMzMzM9oyECcIYbWdqEogpYD8PXq6muio2h8qjhB4jK9LE(SFZmZmZmZme4M76XCGUoInfYGCczFPN9BMzMzgeDWVFZmZmZEhmpobr5a4biphJh5o(ei79LIy0RTVx66zGgWaByfqGBUaJSVueaUJCV0Z(nZmZm7DW84eeLdGhG8CmEK74tiWnxGr2xkca3rUx6z)MzMzMX9Yye2KHvabU5cmY(sra4oY9sxmmwSvyydx)MzMzMzMz7l)32q2xQnziWnxGr2xkca3rUxkEcs(nZmZmZmZEhmpobr5a4biphJh5o(e4i3lLaDSHSVu7ebfY8OxMZRNbAadSHSV0Z(nZmZmZmZgUJCV0ti7l9SFZmZmZGOd(nZmi6WIFZmJ5aDDeBkKbXMmUhO8Pex0tiWn3fdzFPN9BMzMzg3lJnQfJlXMczmcud7hbdYje4MlWCj2uidYzB463mZmZmZmJGRDIlXMczwpUeBkK5eY(spF2Oycr9BMzMzMzMzMziWnxGr2xkca3rUxkESciWnxGr2xkca3rUxQTMByqYMmK9L63mZmZmZmZmZyG0dgu)MzMzMzMzq0b)MzMzMbrh8BMzq0b)KPF)VdMhNGOCa8aKNJXJChBtg3du(uIl6PlpyLp73mZi4ANgG8Cm(SrXeI63mZmZmSziqPNaAifacCWtNp73mZmZmSeYba37gHty5boSpD5bR8z)MzMzMHndbk90z)MzgeDWpeDWV)3bZJtquoagzue7nInzKHFZmB1kY(yyiUm(nZm8yqYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMS5l(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjztggl(nZmZmdpiBmjG7beqs2KHXIFZmZmZwTISWh2xuJ9Oi2Be)MzMzMHhKZOWva5HoahmEdyqeqs2KHXIFZmZmZWdcWS3va5HoahmEdyqeqs2KHXIFZmZmZWdYlUZIasYMmmw8BMzMzgEqG(afbKKnzyS43mZmZm8GCgfUcip0b4GT2hFicijBYWyXVzMzMz4bby27kG8qhGd2AF8HiGKSjdJf)MzMzMHhelUB4JbhcijBYWyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajztggl(nZmZmdpizFmJ3pcoGiGKSjdJf)MzMzMHhKn9XbebKKnzyS43mZmZm8GRJaHAKf(W(IIasYMmmw8BMzMzgEqS8nEmKbbKKnzyS43mZmZm8GakZfbHN7SiGKSjdJf)MzMzMHhKSp0beqs2KnFXVzMrMl(nZSvRWI3(nqG63mZWVgKSjJm8BMzMz2Qv8Mb3LXypkI9gXVzMzMz4bb09LIjijBYMV43mZmZm8GJaFumHmGKSjB(IFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KHXIFZmZmZWdYgtc4EabKKnzyS43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzyS43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjdJf)MzMzMHheGzVRaYdDaoyR9XhIasYMmmw8BMzMzgEqS4UHpgCiGKSjdJf)MzMzMHhKZOWva5Hoahm2ZEzgqajztggl(nZmZmdpiaZExbKh6aCWyp7LzabKKnzyS43mZmZm8GK9XmE)i4aIasYMS5l(nZmZmdpiB6JdicijBYMV43mZmZm8GRJaHAKf(W(IIasYMS5l(nZmZmdpiw(gpgYGasYMS5l(nZmZmdpiGYCrq45olcijBYMV43mZmZm8GK9HoGasYMS5l(nZmYCXVzMTAfqoqPqg)MzgESgjBYid)MzMzMTAfVzWDzm2JIyVr8BMzMzgEqaDFPycsYMS5l(nZmZmdp4iWhftidijBYMV43mZmZm8GR9rSbjztggl(nZmZmdpiwSFuiijBYMV43mZmZm8GSXKaUhqajzt28f)MzMzMTAfzHpSVOg7rrS3i(nZmZmdpiNrHRaYdDaoy8gWGiGKSjdJf)MzMzMHheGzVRaYdDaoy8gWGiGKSjdJf)MzMzMHhKxCNfbKKnzyS43mZmZm8Ga9bkcijBYWyXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KnFXVzMzMz4bby27kG8qhGd2AF8HiGKSjB(IFZmZmZWdIf3n8XGdbKKnzyS43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjdJf)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjdJf)MzMzMHhelFJhdzqajztggl(nZmZmdpiGYCrq45olcijBYWyXVzMzMz4bj7dDabKKnzZx8BMzK5IFZmB1QrZD8b0VzMHF9jztgz43mZmZSvR4ndUlJXEue7nIFZmZmZWdcO7lftqs2KnFXVzMzMz4bhb(Oyczajztggl(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjzt28f)MzMzMHhKnMeW9acijBYMV43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzZx8BMzMzgEqEXDweqs2KnFXVzMzMz4bb6dueqs2KnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KHXIFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjB(IFZmZmZWdUoceQrw4d7lkcijBYWyXVzMzMz4bXY34Xqgeqs2KHXIFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjB(IFZmJmx8BMzRwHfmeqeQFZmdpGpjBYid)MzMzMTAfVzWDzm2JIyVr8BMzMzgEqaDFPycsYMmmw8BMzMzgEWrGpkMqgqs2KnFXVzMzMz4bx7JydsYMS5l(nZmZmdpiwSFuiijBYMV43mZmZm8GSXKaUhqajzt28f)MzMzMTAfzHpSVOg7rrS3i(nZmZmdpiNrHRaYdDaoy8gWGiGKSjB(IFZmZmZWdcWS3va5HoahmEdyqeqs2KnFXVzMzMz4b5f3zrajzt28f)MzMzMHheOpqrajzt28f)MzMzMHhKZOWva5HoahS1(4drajztggl(nZmZmdpiaZExbKh6aCWw7JpebKKnzZx8BMzMzgEqS4UHpgCiGKSjB(IFZmZmZWdYzu4kG8qhGdg7zVmdiGKSjB(IFZmZmZWdcWS3va5Hoahm2ZEzgqajzt28f)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjB(IFZmZmZWdILVXJHmiGKSjdJf)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajztggl(nZmYCXVzMTAfwcFumnSIOeJXK63mZWZlrYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMS5l(nZmZmdp4AFeBqs2KnFXVzMzMz4bXI9Jcbjztggl(nZmZmdpiBmjG7beqs2KnFXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYWyXVzMzMz4b5f3zrajzt28f)MzMzMHheOpqrajzt28f)MzMzMHhKZOWva5HoahS1(4drajztggl(nZmZmdpiaZExbKh6aCWw7JpebKKnzyS43mZmZm8GyXDdFm4qajztggl(nZmZmdpiNrHRaYdDaoySN9YmGasYMmmw8BMzMzgEqaM9Ucip0b4GXE2lZacijBYWyXVzMzMz4bj7Jz8(rWbebKKnzZx8BMzMzgEq20hhqeqs2KnFXVzMzMz4bxhbc1il8H9ffbKKnzZx8BMzMzgEqS8nEmKbbKKnzZx8BMzMzgEqaL5IGWZDweqs2KnFXVzMzMz4bj7dDabKKnzZx8BMzK5IFZmB1k2y(W9q9BMz4XQjztgz43mZmZSvR4ndUlJXEue7nIFZmZmZWdcO7lftqs2KnFXVzMzMz4bhb(Oyczajzt28f)MzMzMHhCTpInijBYWyXVzMzMz4bXI9Jcbjzt28f)MzMzMHhKnMeW9acijBYWyXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjdJf)MzMzMHheGzVRaYdDaoyR9XhIasYMS5l(nZmZmdpiwC3Whdoeqs2KnFXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KnFXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjdJf)MzMzMHhCDeiuJSWh2xueqs2KHXIFZmZmZWdILVXJHmiGKSjdJf)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajzt28f)MzgzU43mZwTATVXq)MzgESos2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzyS43mZmZm8GJaFumHmGKSjB(IFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KnFXVzMzMz4bzJjbCpGasYMS5l(nZmZmB1kYcFyFrn2JIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzt28f)MzMzMHheGzVRaYdDaoy8gWGiGKSjB(IFZmZmZWdYlUZIasYMS5l(nZmZmdpiqFGIasYMS5l(nZmZmdpiNrHRaYdDaoyR9XhIasYMS5l(nZmZmdpiaZExbKh6aCWw7JpebKKnzZx8BMzMzgEqS4UHpgCiGKSjB(IFZmZmZWdYzu4kG8qhGdg7zVmdiGKSjdJf)MzMzMHheGzVRaYdDaoySN9YmGasYMS5l(nZmZmdpizFmJ3pcoGiGKSjB(IFZmZmZWdYM(4aIasYMmmw8BMzMzgEW1rGqnYcFyFrrajzt28f)MzMzMHhelFJhdzqajztggl(nZmZmdpiGYCrq45olcijBYMV43mZmZm8GK9HoGasYMmmw8BMzK5IFZmB1kY(y2x(JYVzMHhRNKnzKHFZmZmZwTI3m4Umg7rrS3i(nZmZmdpiGUVumbjztggl(nZmZmdp4iWhftidijBYMV43mZmZm8GR9rSbjzt28f)MzMzMHhel2pkeKKnzZx8BMzMzgEq2ysa3diGKSjB(IFZmZmZwTISWh2xuJ9Oi2Be)MzMzMHhKZOWva5HoahmEdyqeqs2KnFXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjB(IFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYMV43mZmZm8GSPpoGiGKSjdJf)MzMzMHhCDeiuJSWh2xueqs2KnFXVzMzMz4bXY34Xqgeqs2KHXIFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjdJf)MzgzU43mZwTATx0r53mZWJXCs2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzZx8BMzMzgEWrGpkMqgqs2KHXIFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KHXIFZmZmZWdYgtc4EabKKnzyS43mZmZSvRil8H9f1ypkI9gXVzMzMz4b5mkCfqEOdWbJ3agebKKnzyS43mZmZm8Gam7DfqEOdWbJ3agebKKnzZx8BMzMzgEqEXDweqs2KnFXVzMzMz4bb6dueqs2KnFXVzMzMz4b5mkCfqEOdWbBTp(qeqs2KHXIFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYWyXVzMzMz4b5mkCfqEOdWbJ9SxMbeqs2KHXIFZmZmZWdcWS3va5Hoahm2ZEzgqajzt28f)MzMzMHhKSpMX7hbhqeqs2KnFXVzMzMz4bztFCarajztggl(nZmZmdp46iqOgzHpSVOiGKSjdJf)MzMzMHhelFJhdzqajzt28f)MzMzMHheqzUii8CNfbKKnzZx8BMzMzgEqY(qhqajzt28f)MzgzU43mZwTclzoig8BMz4Xads2Krg(nZmZmB1kEZG7YyShfXEJ43mZmZm8Ga6(sXeKKnzZx8BMzMzgEWrGpkMqgqs2KHXIFZmZmZWdU2hXgKKnzZx8BMzMzgEqSy)Oqqs2KnFXVzMzMz4bzJjbCpGasYMS5l(nZmZmB1kYcFyFrn2JIyVr8BMzMzgEqoJcxbKh6aCW4nGbrajzt28f)MzMzMHheGzVRaYdDaoy8gWGiGKSjB(IFZmZmZWdYlUZIasYMS5l(nZmZmdpiqFGIasYMS5l(nZmZmdpiNrHRaYdDaoyR9XhIasYMmmw8BMzMzgEqaM9Ucip0b4GT2hFicijBYMV43mZmZm8GyXDdFm4qajztggl(nZmZmdpiNrHRaYdDaoySN9YmGasYMS5l(nZmZmdpiaZExbKh6aCWyp7LzabKKnzZx8BMzMzgEqY(ygVFeCarajzt28f)MzMzMHhKn9XbebKKnzyS43mZmZm8GRJaHAKf(W(IIasYMmmw8BMzMzgEqS8nEmKbbKKnzyS43mZmZm8GakZfbHN7SiGKSjB(IFZmZmZWds2h6acijBYMV43mZiZf)Mz2Qvyje3f1aYbkfY43mZWJXAqYMmYWVzMzMzRwXBgCxgJ9Oi2Be)MzMzMHheq3xkMGKSjB(IFZmZmZWdoc8rXeYasYMmmw8BMzMzgEW1(i2GKSjB(IFZmZmZWdIf7hfcsYMS5l(nZmZmdpiBmjG7beqs2KnFXVzMzMzRwrw4d7lQXEue7nIFZmZmZWdYzu4kG8qhGdgVbmicijBYWyXVzMzMz4bby27kG8qhGdgVbmicijBYMV43mZmZm8G8I7SiGKSjB(IFZmZmZWdc0hOiGKSjB(IFZmZmZWdYzu4kG8qhGd2AF8HiGKSjB(IFZmZmZWdcWS3va5HoahS1(4drajzt28f)MzMzMHhelUB4JbhcijBYMV43mZmZm8GCgfUcip0b4GXE2lZacijBYWyXVzMzMz4bby27kG8qhGdg7zVmdiGKSjB(IFZmZmZWds2hZ49JGdicijBYWyXVzMzMz4bztFCarajzt28f)MzMzMHhCDeiuJSWh2xueqs2KHXIFZmZmZWdILVXJHmiGKSjB(IFZmZmZWdcOmxeeEUZIasYMS5l(nZmZmdpizFOdiGKSjB(IFZmJmx8tM(Fhmpobr5aya3XBtqjhqV7ldInzKHFZmdeWdJ1y95ZLlw)aw)aw)a4ITALHf3lJFZmdeWdJ1y95ZLlxUC5YLl4ITALbOxC4UO(nZmqapmwJ1NpxUya5YD(CWfB1kB0gk)loCxu)MzgiGhgRX6ZNl35ZXQNpmaUyRwzJMhd0VzMbc4HXAS(85Y9H1WAa(qi4ITALXRytW3VzMbc4HXAS(85YLlxSU5ZNdUyRwzJahdrhEmK73mZab8WynwF(C5c5L4ZhRBo4ITALXBgkb3hFQFZmdeWdJ1y95ZL78585ZLl4ITALbeibZ(EX5NmzrzrzXMaLczqF7rhYGqCrzbuynwSPmeJhdzybal2uYXgYIn)de6fhl28pqOxCCctIbil2ucCWbwSHCarPiSypcN5maCA0WR8glhTyXM)bc9IJf7vRSr4mNbGtJgEL3y5OLFUhO8Pex0tV9gH(OqKfdE2VzM9oyECcIYbWV9gH(OqeBYE7nc9rHi(9BMz7l)3223lDguUxBYaAiDK7Lodk37PZ(nZS3bZJtquoaMlXMczydz4GGpC9yoqpTVx6mOCVN9BMza6(Iah5EPNo73mZyG0dguJYCa9drh8ZInFmH8hfl2qoGOuwS5FGqV44eLCSHSyJqFu4b2dpkKfBemVZYzuwSrW8olNr5nFkbhqwuwSPqaJIbwCjqPSypAMbObcaSyVVVbwaWInb6yM7b2SaGfBChBkblayrzrzXM(2quklayXg3XMsWcawuwuwShi4YLG)XMsolayXg3XMsWcawuwuwSzE8HSaGfBChBkblayrzrzXM5UHSaGfBChBkblayrzrzXM7JpL4IYcawSXDSPeSaGfLfLfBS5aB6BdrPSaGfBChBkblayrzrzXM(2qu6AWcawSXDSPeSaGfLfLfLf7bceSYhO8PeCazX(T3SyZahtCrbGCSHSytW)IYInfcyumyXE0okl2uiGrXyDxukl28kGHndebz2h5SytmWInVpO3rUx6m8VOSytHagfda9IsFeO4GOuwS58OnaypdwYRSyZ)E3d3zrbacyuEf9XZgoWIhwSrpWbadX4XqgewafgSyZ)E3d3zrzXdlklkl2CWcOWy9xdmyrzXc \ No newline at end of file +dmfdQbGiiEeuIIlPikvJsPQtPuzvkIsELkQsnlLYTur2fu0WuuDmOWYurHNbLunnvu01aIKTbeP(gusX4GskDoOeX6urv9ovuf3tH2hQuHdQiYcrLk9qGGjcLKlIkvTrvu5JqjmsGItQOyLQYlHsuAMkc3ufL2jqj)evHHcuQJceAPkIINIkMkq6QkIszRkIQVIO0zrLk6TiYCHsKUlcTxuQ)IkLblhwvTyuLEmQQjRGldAZOKpRinAGQtdvRgkrvVgvrZwj3gb7gWVvPHdL64arSCu8CinDKUUkSDujFxrPXde15ruTEvuL8EefnFOevUpIc7NMngSbLnNpBqztzZbLnNZatqkmX4moHbi1PPyjNjininFmWsyZHaBodS5mWgu2CazEWIfkKYgSoH1CMZzZHCEWIfkKYgSaPW6ZzZ5ZNIZfeug8PtHmN9oazdwNWyoBoOy)5dzdwZzZbhGcza(RjhYGIFbydwyD2CqHlwG9fhGYMdO8aSNG7phOS58x4tbyZzcU)CGYMd4q8PGtzFUZeKAowhKEowhl5modSowhRbRbl5myZ60zcsZMZ6(hydkBo4atzUhyZgu2CiCSO4SbLnLnLnh6FbbOSbLnhchlkoBqztztzZH(xqa6zWgu2CiCSO4SbLnLnLnNdui34V(OOS5LnhMpFiBqzZHWXIIZgu2u2u2CyUliBqzZHWXIIZgu2u2u2CWMlSP)feGYgu2CiCSO4SbLnLnLnhwF(u8laBqzZHWXIIZgu2u2u2CgWzXcN)XIsoBqzZHWXIIZgu2u2u2u2C(a4e(uiBUlBomWP4xaqjhBiBodKd8jGZFkZ9aB2CGGm2FGb4aBEzZbFGnNjDqVtCVu2CMfFGco7ZDMGuZX6G0ZXaRbR5mXAbPotmoZZKnRtNjinBod4Oy5pa4tX5cYMZFTyZb4GaOm4tNczqzdwyWMdoaoLBO0pdfoWgSWGnhkd(0Pqg2GYMdk43z5baBoOGFNLhatIpfNliBkBkBo8zdkBWcd2GYMdfcYumo3fGYb)8cYgSoJ5S585tX5cckd(0PqMZEhGSbRtymNnNpFk(faLnOS5Gs)mu2GYMZWLBeGOO)Pq28YMYMdoaoLnOS5mC5g)du6LaBUlBo8pqPxcS5SU8)lBaY7XuB0y9xOqFRl))YW5FbWkCuSxFYXQdMpf)cyJgw3NVtNmCkKay9ja3mCkKWe4a8CZWPqcG4XFHtjFZWPqcta5cU2mCkKWzXbMaYfCTz4uibqjhB4MHtHe4CWlOKJnCdNcjWH(5Ztq4Eaq3mCkKa3dsoWXEIl)ndNcjakeKPhmWndfUwGndoF4MXF9rrNbR2m0dE5V(OOZGvBgV4adGso2WniiJ9N)my1MHcPZGvBgokiW8zrXbMozG)PqaQnAybKodfsygaw39ORlDNVtNS19sNH)fyZw3lfS(eGB26EPG4XhGItjFZ4FWWab4t(my1MTUxkiE8x4uY3S1LppHdBgokiEarPZqHe2mqYbeLodwTz4OtIpfNlOnAybKoX9s5SU0zayD3JUU0D(oDYMahGNg6LaKItaIAdxiQbCP2SxgE6BD5)xgRda(u8lGnfsNHcjmboap3JUU0D(mZmCw2E01LAJJga(ANrbhcymq6bdGbGVmiWGpZmJbspyamSasN4EPCwx6e4a8Cp66s35dcm4BD5)xgRda(u8lGnfsNHcjawFcW9ORlDNpZmdNLThDDP24ObGV2zuWHagdKEWaya4ldcm4ZmZyG0dgadfUG8P7pJndlG0jUxkN1LodaR7E01LUBNpiWGV1L)FzSoa4tXVa2uiDgkKaOKJnCp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6Eq6ndlG0zOqcZaW6UFkKodfsycCaEUhDDP72TZheyW36Y)Vmwha8P4xaBkKodfsGZbVuYXgUhDDP78zMz4SS9ORl1ghna81oJcoeWyG0dgadaFzqGbFMzgdKEWayOWfKpDpwZMHfq6muiHzayD3pfsNHcjmboap3JUU0D725dcm4BD5)xgRda(u8lGnfsNHcjmbKl4Ap66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6(ZCZWciDgkKWmaSU7NcPZqHeMahGN7rxx6UD78bbg8TU8)lJ1baFk(fWMcPZqHeM8)6aUhDDP78zMz4SS9ORl1ghna81oJcoeWyG0dgadaFzqGbFMzgdKEWayOWfKpDpgySzybKodfsygaw39tH0zOqctGdWZ9ORlD3UD(Gad(wx()LX6aGpf)cytH0zOqcG4XhGItjFp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6ES(MHfq6e3lLZ6sNbG1Dp66s3TZheyW36Y)Vmwha8P4xaBkKodfsaep(lCk57rxx6oFMzgolBp66sTXrdaFTZOGdbmgi9GbWaWxgeyWNzMXaPhmagkCb5t3J13mSasNHcjmdaR7(Pq6muiHjWb45E01LUB3oFqGbFRl))YyDaWNIFbSPq6muibUhKCGJ9ex(Fk(fyp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6ESKndlG0zOqcZaW6UFkKodfsycCaEUhDDP72TZheyW36Y)Vmwha8P4xaBkKodfsyg(xG9ORlDNpZmdNLThDDP24ObGV2zuWHagdKEWaya4ldcm4ZmZyG0dgadfUG8P7Xy(MHfq6muiHzayD3pfsNHcjmboap3JUU0D725dcm4ZNV1L)Fzd3jUxQnASoa4tXVa7rxx6oFMz2)G5Zniaxyoa59y6e3P7rM4EP4atn01LE(gIHjMg66s35ZmZM4EPCwx6E01LUZNpZmBD5)xgofsyg(xaB0McPZqHeMH)fyp66s35ZmZwx()LHtHeaRpbOnAtH0zOqcG1NaCp66s35ZmZwx()LHtHeaXJpafNsUnAtH0zOqcG4XhGItjFp66s35ZmZwx()LHtHeaXJ)cNsUnAtH0zOqcG4XFHtjFp66s35ZNzM9py(CdcWfMdqEpMoXD6EeSI5ploWudN)fWyDzmedtmnCkKay9janmX0qSzXPGBGKJ)cNsUHyyIPHtHeaXJ)cNs(oFMz26Y)VmGpbizXPGdc31LXgT)bZNBqaUWeKC8x4uYbH76YGscNcjaIh)foLC782WGOHjMgcjedtmnCkKay9janmX0qiILIXzCMmi(mZS1L)FzaFcqYItbhep(auCk52Ob8jajlofCq4UUmgMyAigiJyyIPHtHeaXJpafNsUpFMz2)G5Zniaxyoa59y6e3P7rMekk(uaCGPgWNaeXWetd4taswCk4G4XhGItjFNpZm7FW85geGlm)Rfk9tHOKWY8py(CdcWfM)1cL(Pqu782WGOnAKPpZmZmZqb)oRnAuMd4MpZmZmZ4d(hykCWgnkZbCZNzMzMz4adqq2gnSasbfNaC)UnFMzMzMXarVmuB0OmhWnF(mZmZmdN)fWgnCkKWm8VaB(mZmZmd4taAJgWNaKS4uWbXJpafNs(MpZmZmZ(eUhauB0WPqcG4XhGItjFZNpZmZmZWM5oLbIIck5ydTrdHItaoGS5ZmZmZmiiJnoZNIFbafNa0gnSasbfNaC)o782W5FbWkCuSxFYXQdMpf)cS5ZmZmZSHdMpf)cyJgo)lawHJI96towDW8P4xGnFMzMzM9pOxWGpaTrJYCa38zMzKHpiWGpF(wx()Ln9Ugoh(IczSrJm9zMzqGpVl4GnAuMd4MpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpcwCxdgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsaS(eG2OnfsNHcjawFcW9ORlDNpZmZmZmZmCw2ECkKaWNa0(adgofsaS(eGNpHpLp47rMSpCEB7XI7Aalhwoo4lUGmy5WYbcxSXgYSdz3oJcoeWNzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeS4Ugmw4lkKXW(JIISZNzMzMzMzMzMXaPhmagL5a6ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)l7YmazMmq07bdFi65WxuiJnAKPpZmdc85DbhSrJYCa38zMzSWxuiJnASoa4tXVa7rHlwBg66s35ZmZmZmCw2Eu4IfMqGpVl4WoJcoeWNzMzMzMz2)G5Zniaxyoa59y6e3P7rMmq07bdFOXcFrHmNhdDDPNVHyyIPHUU0D(mZmZmZmZwx()LHtHeaRpbOnAtH0zOqcG1NaCp66s35ZmZmZmZmdNLThNcjawFcq7dmy4uibW6taE(e(u(GVhHhmdqgBYarVhm8HOi72zuWHa(mZmZmZmZmZS)bZNBqaUWCaY7X0jUt3JWdMbiJXarVhm8Hgl8ffYyy)rrr25ZmZmZmZmZmZyG0dgaJYCa9zMzMzMzMbbg8zMzMzgeyWNzMbbg8rg(wx()Lr4Eaqph(IczSrJm9zMzqGpVl4GnAuMd4MpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYzVhauJf(Iczopg66spFdXWetdDDP78zMzMzMzMTU8)ldNcjak5ydTrBkKodfsauYXgUhDDP78zMzMzMzMHZY2JtHeaLCSH2hyWWPqcGso2qBC0qo79aGISZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUh5S3daQXcFrHmg2FuuKD(mZmZmZmZmZmgi9GbWOmhqFMzMzMzMzqGbFMzMzMbbg8zMzqGbFKHV1L)Fz4lUwNdFrHm2OrM(mZmiWN3fCWgnkZbCZNzMHV4Abk4mquWVRbB0WAXANV5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3JmZeCTmw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKWeqUGlB0McPZqHeMaYfCThDDP78zMzMzMzMHZY2JtHeMaYfCzFGbdNcjmbKl4Y4omu4IfM4lUwGcodef87AyNrbhc4ZmZmZmZmZmZ(hmFUbb4cZbiVhtN4oDpYmuibBb5cUmw4lkKXW(JIISZNzMzMzMzMzMXaPhmagL5a6ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)ldBMllikk(f4C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmWHm8IAJgL5aU5ZmZ4VUuWTrJ1FHc38zMzxgOnAS(lu4MpZmBb)uWHm2OX6VqHB(mZm(3lpXbMAJgR)cfU5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3Ja2mxwquu8lGXcFrHmNhdDDPNVHyyIPHUU0D(mZmZmZmZwx()LHtHeaLCSH2OnfsNHcjak5yd3JUU0D(mZmZmZmZWzz7XPqcGso2q7dmy4uibqjhBOnoAiGY8hGO8eFTq2zuWHa(mZmZmZmZmZS1L)Fz4uiboh8sjhBOnAtH0zOqcCo4Lso2W9ORlDNpZmZmZmZmZmdNLThNcjW5Gxk5ydTpWGThNcjW5Gxk5ydTXrdbmqgErSpWGHcxSWeCidVO78zMzMzMzMzMzxgBpofsGZbVuYXgAJJgYeWpfCidI9bgmu4IfMl4NcoKzNpZmZmZmZmZm7Yy7XPqcCo4Lso2qBC0qaH1LcoI9bgmu4IfM8xxk478zMzMzMzMzMzxgBpofsGZbVuYXgAJJgcpyGi2hyWqHlwyEzG78zMzMzMzMzMzxgBpofsGZbVuYXgAJJgciCV8ehykI9bgmu4IfM8VxEIdmD3oJcoeWNzMzMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhbSzUSGOO4xaJf(IczmS)OOi78zMzMzMzMzMzMzgdKEWayuMdOpZmZmZmZmZmdcm4ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)lJR)6aEo8ffYyJgz6ZmZGaFExWbB0OmhWnFMzgx)1beuWzGOGFxd2OH1bPSjldJ5ZTjldJ5Z38zMzFSXEroOGZarb)Uga9odfsGd9ZNN2OX6VqHB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709it(FDanw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKWK)xhqB0McPZqHeM8)6aUhDDP785ZmZmZmZmdNLThfUyH5hBSxKdk4mquWVRbqVZqHe4q)855oJcoeWNzMzMzMzMzMTU8)ldNcjaIhFakoLCB0McPZqHeaXJpafNs(E01LUZNzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeqbhYaniiJJsnedtmnCkKaiE8bO4uYnmX0qmCkKaQHdyORl1qmmX0qxx6oFMzMzMzMzMzgofsyY)RdOnA4uiHj)VoG2KLHtHeaXJpafNsUpZmZmZmZmiWGpFMzMzMzMz4SS94uiHj)VoG2hyWWPqct(FDanUddfUyHjx)1beuWzGOGFxd7mk4qaFMzMzMzMzMz2)G5Zniaxyoa59y6e3P7rM8)6aASWxuiJH9hffzNpZmZmZmZmZmJbspyamkZb0NzMzMzMzgeyWNzMzMzqGbFMzgeyWhz4BD5)x2ugi5t(FDaph(IczSrJm9zMzqGpVl4GnAuMd4MpZm70jJdKAuWzGOGFxdg9AZn61w3l1(RLnLbsoQpZmJR)6ack4mquWVRbB0aPSjldJ5ZTjldJ5Z38zMzFSXEroOGZarb)Uga9odfsGd9ZNN2OX6VqHB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709iybdKCJR)6aASWxuiZ5Xqxx65BigMyAORlDNpZmZmZmZS1L)Fz4uibq84VWPKBJ2uiDgkKaiE8x4uY3JUU0D(mZmZmZmZWzz7XPqcG4XFHtj34oS57mk4qaFMzMzMzMzMz26Y)VmCkKWK)xhqB0McPZqHeM8)6aUhDDP785ZmZmZmZmZmZWzz7rHlwy(Xg7f5Gcodef87Aa07muibo0pFEUZOGdb8zMzMzMzMzMzMz26Y)VmCkKaiE8bO4uYTrBkKodfsaep(auCk57rxx6oFMzMzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeqbhYaniiJJsnedtmnCkKaiE8bO4uYnmX0qmCkKaQHdyORl1qmmX0qxx6oFMzMzMzMzMzMzMHtHeM8)6aAJgofsyY)RdOnzz4uibq84dqXPK7ZmZmZmZmZmZGad(8zMzMzMzMzMz4SS94uiHj)VoG2hyWWPqct(FDanUddfUyHjx)1beuWzGOGFxd7mk4qaFMzMzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeSGbsUX1FDanw4lkKXW(JIISZNzMzMzMzMzMzMzmq6bdGrzoG(mZmZmZmZmZmiWGpZmZmZmZmiWGpZmZmZGad(mZmiWGpYW36Y)VmqYbeLodfs4C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709iG4beLA4uibJf(Iczopg66spFdXWetdDDP78zMzMzMzMTU8)ldNcjak5ydTrBkKodfsauYXgUhDDP78zMzMzMzMTU8)ldNcjW5Gxk5ydTrBkKodfsGZbVuYXgUhDDP78zMzMzMzMHZY2JtHeaLCSH2hyWWPqcCo4Lso2q7dmy4uibqjhBOnoA4uiboh8sjhBOnoAiG4beLISZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhbepGOudNcjySWxuiJH9hffzNpZmZmZmZmZmJbspyamkZb0NzMzMzMzgeyWNzMzMzqGbFMzgeyWhz4BD5)xg)1hfflGFMZHVOqgB0itFMzge4Z7coyJgL5aU5ZmZWxCTafCgik431GnAyTZNV5ZmZajh)foLCqbNbIc(DnyJ2zS5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3JacRpkQnf(zmw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKaOKJn0gTPq6muibqjhB4E01LUZNzMzMzMz26Y)VmCkKa3dsoWXEIlFB0McPZqHe4EqYbo2tC5)P4xG9ORlDNpZmZmZmZmCw2ECkKaOKJn0ghnKjXq4YG4ZmZmZmZm7Yy4uibqjhBOnoAiKf(X(cG4ZmZmZmZm7Yy4uibUhKCGJ9ex(24OHmdyn5GYDc2Cp3o3mGfwW9tgeFMzMzMzMzxgdNcjW9GKdCSN4Y3ghnKzaRjhuUtWM75gOtMzalSSCpOi(mZmZmZmZUmgofsG7bjh4ypXLVnoAiZawtoOCNGn3ZnqycEmjSSi(mZmZmZmZUmgofsG7bjh4ypXLVnoAiZawtoOCNGn3ZnWI7bbSSi7mk4qaFMzMzMzMzMz26Y)VmCkKWeqUGlB0McPZqHeMaYfCThDDP78zMzMzMzMzMzRl))YWPqcG4XFHtj3gTPq6muibq84VWPKVhDDP78zMzMzMzMzMzRl))YWr5EqYbo2y)5DbTr7FW85geGlmr5j(AHscfUG8P7X6B2KnaCkiS(OO7rWE9jhYGSBhrsOh8sjhBirBC0WWNpZmZmZmZmZmdNLThhL7bjh4yJ9N3f0(adgofsycixWLXDyOWflmXxCTafCgik431G9bgmCkKaiE8x4uYnUddfUyHji54VWPKdk4mquWVRHDgfCiGpZmZmZmZmZmZmZ(hmFUbb4cZbiVhtN4oDpciS(OO2u4NXyHVOqgd7pkkYoFMzMzMzMzMzMzMXaPhmagL5a6ZmZmZmZmZmZGad(mZmZmZmZGad(mZmZmdcm4ZmZGad(idFRl))Y(NxqgCk8C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZm8fxlqbNbIc(DnyJgw785B(mZmqYXFHtjhuWzGOGFxd2ODgB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709it68cYGtHgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsauYXgAJ2uiDgkKaOKJnCp66s35ZmZmZmZmBD5)xgofsGZbVuYXgAJ2uiDgkKaNdEPKJnCp66s35ZmZmZmZmBD5)xgofsaep(lCk52OnfsNHcjaIh)foL89ORlDNpZmZmZmZmCw2ECkKaOKJn0(adgofsGZbVuYXgAFGbdNcjaIh)foLC7dmy4uibqjhBOnoAiGWfa9GWN3feX(adgofsGZbVuYXgAJJgcpOGdzqSpWGHtHeaXJ)cNsUXDyySZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhzsNxqgCk0yHVOqgd7pkkYoFMzMzMzMzMzgdKEWayuMdOpZmZmZmZmiWGpZmZmZGad(mZmiWGpYW36Y)VSpZ0daCk8C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmqYXFHtjhuWzGOGFxd2OHXMpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYKyMEaGtHgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsaS(eG2OnfsNHcjawFcW9ORlDNpZmZmZmZS1L)Fz4uibq84VWPKBJ2uiDgkKaiE8x4uY3JUU0D(mZmZmZmZWzz7XPqcG1Na0(adgofsaep(lCk52hyWWPqcG1Na88j8P8bFpYKyMEaGtHi7SpWGHtHeaXJ)cNsUXDyOWflmbjh)foLCqbNbIc(DnSZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhzsmtpaWPqJf(IczmS)OOi78zMzMzMzMzMzmq6bdGrzoG(mZmZmZmZGad(mZmZmdcm4ZmZGad(idF((hmFUbb4ctw4lkKHdKHlC(qB0itFMzgl8ffYGAJgz6ZmZmZSP31W5WxuiZMpZmZmZUmdqMjde9EWWhIEo8ffYS5ZmZmZmc3da65WxuiZMpZmZmZWxCToh(Icz28zMzMzg2mxwquu8lW5WxuiZMpZmZmZ46VoGNdFrHmB(mZmZmBkdK8j)VoGNdFrHmB(mZmZmdKCarPZqHeoh(Icz28zMzMzg)1hfflGFMZHVOqMnFMzMzM9pVGm4u45WxuiZMpZmZmZ(mtpaWPWZHVOqgFMzgzS5ZmZqxxkkO3jUxQnAKjzS5ZmZyoaSrJ1baFk(fypkCXAZw3lDgaw3D(mZmZmdfUyHj66srb9oX9sTrJmjdFMzMzMX6YyORlDZWPqcgoGH9hNbD)6EPZaW6UZgU(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYe3l1qxx65BigMyAORl1WetdXqmmX0WPqcyItHe25ZmZmZmZm7FW85geGlmhG8EmDI709tH0zOqcCo4Lso2W9ORlD3oFMzMzMzMzOWfRZN5a4C4lkKbDp66s35ZmZmZmiWGpFMzMzM9py(CdcWfMdqEpMoXD6EeoRlf1OxBDV0Z3qmmX0WYGcxSWeDDPOGEN4EP78zMzMz2)G5Zniaxyoa59y6e3P7rHlwyIUUuuqVtCV0D(mZmZmJ1LXWTrdldkCXct01LIc6DI7LUzySzNWWgU(mZmZmZmZwx()LHUUuB0qHlwyIUUuuqVtCVus4e9zMzMzMzM9py(CdcWfMdqEpMoXD6EKjUxkoWudDDP2ECkK5tVm7oFdXWetdDDP78zMzMzMzMnCN4EP7rxx6oFMzMzMbbg8zMzqGHnFMzgZbW5WxuidQnASoa4tXVa7rHlwBg66s35ZmZmZmwxgJNBgl8ffYy4ag2FCg09OWflmzHVOqg0D2W1NzMzMzMzgolBpl8ffYC(SWxuiZE01LUBNrbhc4ZmZmZmZmZmZqHlwyIUUuuqVtCVusyzqHlwyIUUuuqVtCVu782WGOnAORl1NzMzMzMzMzMXaPhma(mZmZmZmZGad(mZmZmdcm4ZmZGad(idF((hmFUbb4cZbiVhtN4o1gnwha8P4xG9xEXYVZNzMHZY2pa59y6oJcoeWNzMzMzyZGdq3JfqkO4eG73TZNzMzMzyfKlqV3fk3WQdcyV)Ylw(D(mZmZmdBgCa6(D(mZmiWGpiWGpF)dMp3GaCHjkpXxluB0itFMz2PtK9ZWGFz8zMzKWGOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAZ38zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gnm28zMzMzgjeoGJdxdOieTrdJnFMzMzMD6ezHFSVaghEIVwO(mZmZmJecpaGNaZhyaoytcKHOieTrdJnFMzMzMrcb0zVNaZhyaoytcKHOieTrdJnFMzMzMrcH7ENffHOnAyS5ZmZmZmsiyXbakcrB0WyZNzMzMzKq4ba8ey(adWb7SF(queI2OHXMpZmZmZiHa6S3tG5dmahSZ(5drriAJggB(mZmZmJecyFxWpdbueI2OHXMpZmZmZiHWda4jW8bgGdgNzVmdOieTrdJnFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gnm28zMzMzgjeY(zMU(4CbrriAJggB(mZmZmJech6NlikcrB0WyZNzMzMzKqohok1il8J9fafHOnAyS5ZmZmZmsiy1F6uidkcrB0WyZNzMzMzKqabMlkkV3zrriAJggB(mZmZmJecz)adOieTrB(MpZmJm28zMzNob2)1FahWNzMr6miAJgz6ZmZmZStNMedHlJXHN4RfQpZmZmZiHacRlfCeI2OnFZNzMzMzKqMa(PGdzqiAJ28nFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrdJnFMzMzMrcHd44W1akcrB0WyZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0WyZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJggB(mZmZmJecOZEpbMpWaCWo7NpefHOnAyS5ZmZmZmsiG9Db)meqriAJggB(mZmZmJecpaGNaZhyaoyCM9YmGIq0gnm28zMzMzgjeqN9EcmFGb4GXz2lZakcrB0WyZNzMzMzKqi7Nz66JZfefHOnAZ38zMzMzgjeo0pxqueI2OnFZNzMzMzKqohok1il8J9fafHOnAZ38zMzMzgjeS6pDkKbfHOnAZ38zMzMzgjeqG5IIY7DwueI2OnFZNzMzMzKqi7hyafHOnAZ38zMzKXMpZm70jWCaqHm(mZmsyDI2OrM(mZmZm70PjXq4YyC4j(AH6ZmZmZmsiGW6sbhHOnAZ38zMzMzgjKjGFk4qgeI2OnFZNzMzMzKqo7hFHq0gnm28zMzMzgjeWE9PqeI2OnFZNzMzMzKq4aooCnGIq0gT5B(mZmZm70jYc)yFbmo8eFTq9zMzMzgjeEaapbMpWaCWMeidrriAJggB(mZmZmJecOZEpbMpWaCWMeidrriAJggB(mZmZmJec39olkcrB0WyZNzMzMzKqWIdaueI2OHXMpZmZmZiHWda4jW8bgGd2z)8HOieTrB(MpZmZmZiHa6S3tG5dmahSZ(5drriAJ28nFMzMzMrcbSVl4NHakcrB0WyZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJggB(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJggB(mZmZmJecw9NofYGIq0gnm28zMzMzgjeqG5IIY7DwueI2OHXMpZmZmZiHq2pWakcrB0MV5ZmZiJnFMz2PttM70dOpZmJ0zs0gnY0NzMzMzNonjgcxgJdpXxluFMzMzMrcbewxk4ieTrB(MpZmZmZiHmb8tbhYGq0gnm28zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gT5B(mZmZmJechWXHRbueI2OnFZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0MV5ZmZmZmsiC37SOieTrB(MpZmZmZiHGfhaOieTrB(MpZmZmZiHWda4jW8bgGd2z)8HOieTrdJnFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJ28nFMzMzMrc5C4OuJSWp2xaueI2OHXMpZmZmZiHGv)PtHmOieTrdJnFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJ28nFMzgzS5ZmZoDcSzWHOuFMzgjqkI2OrM(mZmZm70PjXq4YyC4j(AH6ZmZmZmsiGW6sbhHOnAyS5ZmZmZmsita)uWHmieTrB(MpZmZmZiHC2p(cHOnAZ38zMzMzgjeWE9PqeI2OnFZNzMzMzKq4aooCnGIq0gT5B(mZmZm70jYc)yFbmo8eFTq9zMzMzgjeEaapbMpWaCWMeidrriAJ28nFMzMzMrcb0zVNaZhyaoytcKHOieTrB(MpZmZmZiHWDVZIIq0gT5B(mZmZmJecwCaGIq0gT5B(mZmZmJecpaGNaZhyaoyN9ZhIIq0gnm28zMzMzgjeqN9EcmFGb4GD2pFikcrB0MV5ZmZmZmsiG9Db)meqriAJ28nFMzMzMrcHhaWtG5dmahmoZEzgqriAJ28nFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gT5B(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJ28nFMzMzMrcbR(tNczqriAJggB(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gnm28zMzKXMpZm70jSc(PGByzbWNco1NzMrcKMOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAZ38zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gnm28zMzMzgjeoGJdxdOieTrB(MpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OHXMpZmZmZiHWDVZIIq0gT5B(mZmZmJecwCaGIq0gT5B(mZmZmJecpaGNaZhyaoyN9ZhIIq0gnm28zMzMzgjeqN9EcmFGb4GD2pFikcrB0WyZNzMzMzKqa77c(ziGIq0gnm28zMzMzgjeEaapbMpWaCW4m7LzafHOnAyS5ZmZmZmsiGo79ey(adWbJZSxMbueI2OHXMpZmZmZiHq2pZ01hNlikcrB0MV5ZmZmZmsiCOFUGOieTrB(MpZmZmZiHCoCuQrw4h7lakcrB0MV5ZmZmZmsiy1F6uidkcrB0MV5ZmZmZmsiGaZffL37SOieTrB(MpZmZmZiHq2pWakcrB0MV5ZmZiJnFMz2PtCa)t4d4ZmZiH1q0gnY0NzMzMzNonjgcxgJdpXxluFMzMzMrcbewxk4ieTrB(MpZmZmZiHmb8tbhYGq0gT5B(mZmZmJeYz)4leI2OHXMpZmZmZiHa2RpfIq0gT5B(mZmZmJechWXHRbueI2OHXMpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJggB(mZmZmJecOZEpbMpWaCWo7NpefHOnAZ38zMzMzgjeW(UGFgcOieTrB(MpZmZmZiHWda4jW8bgGdgNzVmdOieTrB(MpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJggB(mZmZmJeY5WrPgzHFSVaOieTrdJnFMzMzMrcbR(tNczqriAJggB(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gT5B(mZmYyZNzMD60z)tH(mZmsyTeTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0WyZNzMzMzKqMa(PGdzqiAJ28nFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrB(MpZmZmZiHWbCC4AafHOnAZ38zMzMz2PtKf(X(cyC4j(AH6ZmZmZmsi8aaEcmFGb4GnjqgIIq0gT5B(mZmZmJecOZEpbMpWaCWMeidrriAJ28nFMzMzMrcH7ENffHOnAZ38zMzMzgjeS4aafHOnAZ38zMzMzgjeEaapbMpWaCWo7NpefHOnAZ38zMzMzgjeqN9EcmFGb4GD2pFikcrB0MV5ZmZmZmsiG9Db)meqriAJ28nFMzMzMrcHhaWtG5dmahmoZEzgqriAJggB(mZmZmJecOZEpbMpWaCW4m7LzafHOnAZ38zMzMzgjeY(zMU(4CbrriAJ28nFMzMzMrcHd9ZfefHOnAyS5ZmZmZmsiNdhLAKf(X(cGIq0gT5B(mZmZmJecw9NofYGIq0gnm28zMzMzgjeqG5IIY7DwueI2OnFZNzMzMzKqi7hyafHOnAyS5ZmZiJnFMz2PtK9ZSU85PpZmJewcrB0itFMzMzMD60KyiCzmo8eFTq9zMzMzgjeqyDPGJq0gnm28zMzMzgjKjGFk4qgeI2OnFZNzMzMzKqo7hFHq0gT5B(mZmZmJecyV(uicrB0MV5ZmZmZmsiCahhUgqriAJ28nFMzMzMD6ezHFSVaghEIVwO(mZmZmJecpaGNaZhyaoytcKHOieTrB(MpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJ28nFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJggB(mZmZmJeY5WrPgzHFSVaOieTrB(MpZmZmZiHGv)PtHmOieTrdJnFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJggB(mZmYyZNzMD60zVa80NzMrcJ5eTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0MV5ZmZmZmsita)uWHmieTrdJnFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrdJnFMzMzMrcHd44W1akcrB0WyZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0MV5ZmZmZmsiC37SOieTrB(MpZmZmZiHGfhaOieTrB(MpZmZmZiHWda4jW8bgGd2z)8HOieTrdJnFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OHXMpZmZmZiHWda4jW8bgGdgNzVmdOieTrdJnFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gT5B(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJggB(mZmZmJecw9NofYGIq0gT5B(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gT5B(mZmYyZNzMD6ewXCGp4ZmZiHbgeTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0MV5ZmZmZmsita)uWHmieTrdJnFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrB(MpZmZmZiHWbCC4AafHOnAZ38zMzMz2PtKf(X(cyC4j(AH6ZmZmZmsi8aaEcmFGb4GnjqgIIq0gT5B(mZmZmJecOZEpbMpWaCWMeidrriAJ28nFMzMzMrcH7ENffHOnAZ38zMzMzgjeS4aafHOnAZ38zMzMzgjeEaapbMpWaCWo7NpefHOnAyS5ZmZmZmsiGo79ey(adWb7SF(queI2OnFZNzMzMzKqa77c(ziGIq0gnm28zMzMzgjeEaapbMpWaCW4m7LzafHOnAZ38zMzMzgjeqN9EcmFGb4GXz2lZakcrB0MV5ZmZmZmsiK9ZmD9X5cIIq0gT5B(mZmZmJech6NlikcrB0WyZNzMzMzKqohok1il8J9fafHOnAyS5ZmZmZmsiy1F6uidkcrB0WyZNzMzMzKqabMlkkV3zrriAJ28nFMzMzMrcHSFGbueI2OnFZNzMrgB(mZStNWkiHlGbMdakKXNzMrcJZGOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAyS5ZmZmZmsiN9JVqiAJ28nFMzMzMrcbSxFkeHOnAZ38zMzMzgjeoGJdxdOieTrB(MpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJ28nFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OHXMpZmZmZiHWH(5cIIq0gT5B(mZmZmJeY5WrPgzHFSVaOieTrdJnFMzMzMrcbR(tNczqriAJ28nFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJ28nFMzgzS5Jm89py(CdcWfMGKJ)cNsoiCxxguB0itFMzgcwkgNXzYNflSKbSKbSKbKn70jdSVxgFMzgcwkgNXzYNflwSyXIflKn70jdeUeiCb8zMziyPyCgNjFwSWaYI185iB2Pt2Kna(xceUa(mZmeSumoJZKplwZNJ1mFyazZoDYMmFgOpZmdblfJZ4m5ZI1hRJ1bPGqKn70jJ7XgNVpZmdblfJZ4m5ZIflwyTZNphzZoDYMaofcm8zi3NzMHGLIXzCM8zXccsZNpw7CKn70jBsmuCwF(uFMzgcwkgNXzYNfR5Z5ZNflKn70jdmqCM19sWhzWMYMYMdoafYa8xtoKbf)cWgSW6S5qzWNofYWgu2COKJnKnh(hO0lb2C4FGsVe4g44dq2CO4eGdS5a5ccqrzZzcEWdq52KH7NewXDYMd)du6LaBoNoztWdEak3MmC)KWkUtFSoa4tXVa7)Rfk9tHOBgCNpZm7FW85geGlm)Rfk9tHO2O9xlu6Ncr95ZmZwx()LTUx6maSU2OHfq6e3lDgaw3978zMz)dMp3GaCHjl8ffYWbYWfoF45ZCaSFDV0zayD35ZmZaH1ffoX9s3VZNzMXaPhmagL5a6dcm4Jnh(Gd5Zt2CGCbbOS5W)aLEjWnk5ydzZbL(PWdSh(uiBoOGFNLhaS5Gc(DwEamj(uCUGSPS5qHGmfdW(IdqzZzYmdwagqzZzD)dSbLnh6FbbONbBqzZHWXIIZgu2u2u2CO)feGYgu2CiCSO4SbLnLnLnNbCwSW5FSOKZgu2CiCSO4SbLnLnLnhMpFiBqzZHWXIIZgu2u2u2Cy95tXVaSbLnhchlkoBqztztzZbBUWM(xqakBqzZHWXIIZgu2u2u2CWbMYCpWMnOS5q4yrXzdkBkBkBom3fKnOS5q4yrXzdkBkBkBkBod4Oy5pa4tX5cYMZFTyZHbof)cak5ydzZbN)fGnhkeKPyWMZKDa2COqqMIX5Uau2C4EqgBgik6SFYzZbFGnNjDqVtCV0z4FbyZHcbzkgGWfG(XbiabOS5WJjBGYzgSI7zZH)9UgUZcakeKPCpWN3fCGnVS5aCqaug8PtHmOSblmyZH)9UgUZcWMx2u2u2C4InyHXzEgyWMYMna \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 72ca0cb..1a4a555 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -5,33 +5,43 @@ local iconDisplayDuration = 3 -- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) -- Link sometimes does not work local function getItemLink(slot) + if (slot == nil) then return nil end return GetLootSlotLink(slot) end local function getItemName(slot) + if (slot == nil) then return nil end return select(2, GetLootSlotInfo(slot)) end local function getItemType(slot) + if (slot == nil) then return nil end return select(6, GetItemInfo(getItemLink(slot))) end local function getItemSubtype(slot) + if (slot == nil) then return nil end return select(7, GetItemInfo(getItemLink(slot))) end local function getItemLevel(slot) + if (slot == nil) then return nil end return select(4, GetItemInfo(getItemLink(slot))) end local function getItemValue(slot) + if (slot == nil) then return nil end return select(11, GetItemInfo(getItemLink(slot))) end local function getItemQuantity(slot) + if (slot == nil) then return nil end return select(3, GetLootSlotInfo(slot)) end local function getItemQuality(slot) + if (slot == nil) then return nil end return select(3, GetItemInfo(getItemLink(slot))) end local function getItemEquipLocation(slot) + if (slot == nil) then return nil end return select(9, GetItemInfo(getItemLink(slot))) end local function getItemIcon(slot) + if (slot == nil) then return nil end return select(10, GetItemInfo(getItemLink(slot))) end From f618d2bc342eeb3e4de34bfff980fd3707f94c15 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 13:10:04 +0200 Subject: [PATCH 17/44] Add more error handling and ancient mana filter --- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 62 +++++++++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index 80edcc3..3ec34ea 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dmfdQbGiiEeuIIlPikvJsPQtPuzvkIsELkQsnlLYTur2fu0WuuDmOWYurHNbLunnvu01aIKTbeP(gusX4GskDoOeX6urv9ovuf3tH2hQuHdQiYcrLk9qGGjcLKlIkvTrvu5JqjmsGItQOyLQYlHsuAMkc3ufL2jqj)evHHcuQJceAPkIINIkMkq6QkIszRkIQVIO0zrLk6TiYCHsKUlcTxuQ)IkLblhwvTyuLEmQQjRGldAZOKpRinAGQtdvRgkrvVgvrZwj3gb7gWVvPHdL64arSCu8CinDKUUkSDujFxrPXde15ruTEvuL8EefnFOevUpIc7NMngSbLnNpBqztzZbLnNZatqkmX4moHbi1PPyjNjininFmWsyZHaBodS5mWgu2CazEWIfkKYgSoH1CMZzZHCEWIfkKYgSaPW6ZzZ5ZNIZfeug8PtHmN9oazdwNWyoBoOy)5dzdwZzZbhGcza(RjhYGIFbydwyD2CqHlwG9fhGYMdO8aSNG7phOS58x4tbyZzcU)CGYMd4q8PGtzFUZeKAowhKEowhl5modSowhRbRbl5myZ60zcsZMZ6(hydkBo4atzUhyZgu2CiCSO4SbLnLnLnh6FbbOSbLnhchlkoBqztztzZH(xqa6zWgu2CiCSO4SbLnLnLnNdui34V(OOS5LnhMpFiBqzZHWXIIZgu2u2u2CyUliBqzZHWXIIZgu2u2u2CWMlSP)feGYgu2CiCSO4SbLnLnLnhwF(u8laBqzZHWXIIZgu2u2u2CgWzXcN)XIsoBqzZHWXIIZgu2u2u2u2C(a4e(uiBUlBomWP4xaqjhBiBodKd8jGZFkZ9aB2CGGm2FGb4aBEzZbFGnNjDqVtCVu2CMfFGco7ZDMGuZX6G0ZXaRbR5mXAbPotmoZZKnRtNjinBod4Oy5pa4tX5cYMZFTyZb4GaOm4tNczqzdwyWMdoaoLBO0pdfoWgSWGnhkd(0Pqg2GYMdk43z5baBoOGFNLhatIpfNliBkBkBo8zdkBWcd2GYMdfcYumo3fGYb)8cYgSoJ5S585tX5cckd(0PqMZEhGSbRtymNnNpFk(faLnOS5Gs)mu2GYMZWLBeGOO)Pq28YMYMdoaoLnOS5mC5g)du6LaBUlBo8pqPxcS5SU8)lBaY7XuB0y9xOqFRl))YW5FbWkCuSxFYXQdMpf)cyJgw3NVtNmCkKay9ja3mCkKWe4a8CZWPqcG4XFHtjFZWPqcta5cU2mCkKWzXbMaYfCTz4uibqjhB4MHtHe4CWlOKJnCdNcjWH(5Ztq4Eaq3mCkKa3dsoWXEIl)ndNcjakeKPhmWndfUwGndoF4MXF9rrNbR2m0dE5V(OOZGvBgV4adGso2WniiJ9N)my1MHcPZGvBgokiW8zrXbMozG)PqaQnAybKodfsygaw39ORlDNVtNS19sNH)fyZw3lfS(eGB26EPG4XhGItjFZ4FWWab4t(my1MTUxkiE8x4uY3S1LppHdBgokiEarPZqHe2mqYbeLodwTz4OtIpfNlOnAybKoX9s5SU0zayD3JUU0D(oDYMahGNg6LaKItaIAdxiQbCP2SxgE6BD5)xgRda(u8lGnfsNHcjmboap3JUU0D(mZmCw2E01LAJJga(ANrbhcymq6bdGbGVmiWGpZmJbspyamSasN4EPCwx6e4a8Cp66s35dcm4BD5)xgRda(u8lGnfsNHcjawFcW9ORlDNpZmdNLThDDP24ObGV2zuWHagdKEWaya4ldcm4ZmZyG0dgadfUG8P7pJndlG0jUxkN1LodaR7E01LUBNpiWGV1L)FzSoa4tXVa2uiDgkKaOKJnCp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6Eq6ndlG0zOqcZaW6UFkKodfsycCaEUhDDP72TZheyW36Y)Vmwha8P4xaBkKodfsGZbVuYXgUhDDP78zMz4SS9ORl1ghna81oJcoeWyG0dgadaFzqGbFMzgdKEWayOWfKpDpwZMHfq6muiHzayD3pfsNHcjmboap3JUU0D725dcm4BD5)xgRda(u8lGnfsNHcjmbKl4Ap66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6(ZCZWciDgkKWmaSU7NcPZqHeMahGN7rxx6UD78bbg8TU8)lJ1baFk(fWMcPZqHeM8)6aUhDDP78zMz4SS9ORl1ghna81oJcoeWyG0dgadaFzqGbFMzgdKEWayOWfKpDpgySzybKodfsygaw39tH0zOqctGdWZ9ORlD3UD(Gad(wx()LX6aGpf)cytH0zOqcG4XhGItjFp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6ES(MHfq6e3lLZ6sNbG1Dp66s3TZheyW36Y)Vmwha8P4xaBkKodfsaep(lCk57rxx6oFMzgolBp66sTXrdaFTZOGdbmgi9GbWaWxgeyWNzMXaPhmagkCb5t3J13mSasNHcjmdaR7(Pq6muiHjWb45E01LUB3oFqGbFRl))YyDaWNIFbSPq6muibUhKCGJ9ex(Fk(fyp66s35ZmZWzz7rxxQnoAa4RDgfCiGXaPhmaga(YGad(mZmgi9GbWqHliF6ESKndlG0zOqcZaW6UFkKodfsycCaEUhDDP72TZheyW36Y)Vmwha8P4xaBkKodfsyg(xG9ORlDNpZmdNLThDDP24ObGV2zuWHagdKEWaya4ldcm4ZmZyG0dgadfUG8P7Xy(MHfq6muiHzayD3pfsNHcjmboap3JUU0D725dcm4ZNV1L)Fzd3jUxQnASoa4tXVa7rxx6oFMz2)G5Zniaxyoa59y6e3P7rM4EP4atn01LE(gIHjMg66s35ZmZM4EPCwx6E01LUZNpZmBD5)xgofsyg(xaB0McPZqHeMH)fyp66s35ZmZwx()LHtHeaRpbOnAtH0zOqcG1NaCp66s35ZmZwx()LHtHeaXJpafNsUnAtH0zOqcG4XhGItjFp66s35ZmZwx()LHtHeaXJ)cNsUnAtH0zOqcG4XFHtjFp66s35ZNzM9py(CdcWfMdqEpMoXD6EeSI5ploWudN)fWyDzmedtmnCkKay9janmX0qSzXPGBGKJ)cNsUHyyIPHtHeaXJ)cNs(oFMz26Y)VmGpbizXPGdc31LXgT)bZNBqaUWeKC8x4uYbH76YGscNcjaIh)foLC782WGOHjMgcjedtmnCkKay9janmX0qiILIXzCMmi(mZS1L)FzaFcqYItbhep(auCk52Ob8jajlofCq4UUmgMyAigiJyyIPHtHeaXJpafNsUpFMz2)G5Zniaxyoa59y6e3P7rMekk(uaCGPgWNaeXWetd4taswCk4G4XhGItjFNpZm7FW85geGlm)Rfk9tHOKWY8py(CdcWfM)1cL(Pqu782WGOnAKPpZmZmZqb)oRnAuMd4MpZmZmZ4d(hykCWgnkZbCZNzMzMz4adqq2gnSasbfNaC)UnFMzMzMXarVmuB0OmhWnF(mZmZmdN)fWgnCkKWm8VaB(mZmZmd4taAJgWNaKS4uWbXJpafNs(MpZmZmZ(eUhauB0WPqcG4XhGItjFZNpZmZmZWM5oLbIIck5ydTrdHItaoGS5ZmZmZmiiJnoZNIFbafNa0gnSasbfNaC)o782W5FbWkCuSxFYXQdMpf)cS5ZmZmZSHdMpf)cyJgo)lawHJI96towDW8P4xGnFMzMzM9pOxWGpaTrJYCa38zMzKHpiWGpF(wx()Ln9Ugoh(IczSrJm9zMzqGpVl4GnAuMd4MpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpcwCxdgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsaS(eG2OnfsNHcjawFcW9ORlDNpZmZmZmZmCw2ECkKaWNa0(adgofsaS(eGNpHpLp47rMSpCEB7XI7Aalhwoo4lUGmy5WYbcxSXgYSdz3oJcoeWNzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeS4Ugmw4lkKXW(JIISZNzMzMzMzMzMXaPhmagL5a6ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)l7YmazMmq07bdFi65WxuiJnAKPpZmdc85DbhSrJYCa38zMzSWxuiJnASoa4tXVa7rHlwBg66s35ZmZmZmCw2Eu4IfMqGpVl4WoJcoeWNzMzMzMz2)G5Zniaxyoa59y6e3P7rMmq07bdFOXcFrHmNhdDDPNVHyyIPHUU0D(mZmZmZmZwx()LHtHeaRpbOnAtH0zOqcG1NaCp66s35ZmZmZmZmdNLThNcjawFcq7dmy4uibW6taE(e(u(GVhHhmdqgBYarVhm8HOi72zuWHa(mZmZmZmZmZS)bZNBqaUWCaY7X0jUt3JWdMbiJXarVhm8Hgl8ffYyy)rrr25ZmZmZmZmZmZyG0dgaJYCa9zMzMzMzMbbg8zMzMzgeyWNzMbbg8rg(wx()Lr4Eaqph(IczSrJm9zMzqGpVl4GnAuMd4MpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYzVhauJf(Iczopg66spFdXWetdDDP78zMzMzMzMTU8)ldNcjak5ydTrBkKodfsauYXgUhDDP78zMzMzMzMHZY2JtHeaLCSH2hyWWPqcGso2qBC0qo79aGISZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUh5S3daQXcFrHmg2FuuKD(mZmZmZmZmZmgi9GbWOmhqFMzMzMzMzqGbFMzMzMbbg8zMzqGbFKHV1L)Fz4lUwNdFrHm2OrM(mZmiWN3fCWgnkZbCZNzMHV4Abk4mquWVRbB0WAXANV5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3JmZeCTmw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKWeqUGlB0McPZqHeMaYfCThDDP78zMzMzMzMHZY2JtHeMaYfCzFGbdNcjmbKl4Y4omu4IfM4lUwGcodef87AyNrbhc4ZmZmZmZmZmZ(hmFUbb4cZbiVhtN4oDpYmuibBb5cUmw4lkKXW(JIISZNzMzMzMzMzMXaPhmagL5a6ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)ldBMllikk(f4C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmWHm8IAJgL5aU5ZmZ4VUuWTrJ1FHc38zMzxgOnAS(lu4MpZmBb)uWHm2OX6VqHB(mZm(3lpXbMAJgR)cfU5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3Ja2mxwquu8lGXcFrHmNhdDDPNVHyyIPHUU0D(mZmZmZmZwx()LHtHeaLCSH2OnfsNHcjak5yd3JUU0D(mZmZmZmZWzz7XPqcGso2q7dmy4uibqjhBOnoAiGY8hGO8eFTq2zuWHa(mZmZmZmZmZS1L)Fz4uiboh8sjhBOnAtH0zOqcCo4Lso2W9ORlDNpZmZmZmZmZmdNLThNcjW5Gxk5ydTpWGThNcjW5Gxk5ydTXrdbmqgErSpWGHcxSWeCidVO78zMzMzMzMzMzxgBpofsGZbVuYXgAJJgYeWpfCidI9bgmu4IfMl4NcoKzNpZmZmZmZmZm7Yy7XPqcCo4Lso2qBC0qaH1LcoI9bgmu4IfM8xxk478zMzMzMzMzMzxgBpofsGZbVuYXgAJJgcpyGi2hyWqHlwyEzG78zMzMzMzMzMzxgBpofsGZbVuYXgAJJgciCV8ehykI9bgmu4IfM8VxEIdmD3oJcoeWNzMzMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhbSzUSGOO4xaJf(IczmS)OOi78zMzMzMzMzMzMzgdKEWayuMdOpZmZmZmZmZmdcm4ZmZmZmZmdcm4ZmZmZmiWGpZmdcm4Jm8TU8)lJR)6aEo8ffYyJgz6ZmZGaFExWbB0OmhWnFMzgx)1beuWzGOGFxd2OH1bPSjldJ5ZTjldJ5Z38zMzFSXEroOGZarb)Uga9odfsGd9ZNN2OX6VqHB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709it(FDanw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKWK)xhqB0McPZqHeM8)6aUhDDP785ZmZmZmZmdNLThfUyH5hBSxKdk4mquWVRbqVZqHe4q)855oJcoeWNzMzMzMzMzMTU8)ldNcjaIhFakoLCB0McPZqHeaXJpafNs(E01LUZNzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeqbhYaniiJJsnedtmnCkKaiE8bO4uYnmX0qmCkKaQHdyORl1qmmX0qxx6oFMzMzMzMzMzgofsyY)RdOnA4uiHj)VoG2KLHtHeaXJpafNsUpZmZmZmZmiWGpFMzMzMzMz4SS94uiHj)VoG2hyWWPqct(FDanUddfUyHjx)1beuWzGOGFxd7mk4qaFMzMzMzMzMz2)G5Zniaxyoa59y6e3P7rM8)6aASWxuiJH9hffzNpZmZmZmZmZmJbspyamkZb0NzMzMzMzgeyWNzMzMzqGbFMzgeyWhz4BD5)x2ugi5t(FDaph(IczSrJm9zMzqGpVl4GnAuMd4MpZm70jJdKAuWzGOGFxdg9AZn61w3l1(RLnLbsoQpZmJR)6ack4mquWVRbB0aPSjldJ5ZTjldJ5Z38zMzFSXEroOGZarb)Uga9odfsGd9ZNN2OX6VqHB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709iybdKCJR)6aASWxuiZ5Xqxx65BigMyAORlDNpZmZmZmZS1L)Fz4uibq84VWPKBJ2uiDgkKaiE8x4uY3JUU0D(mZmZmZmZWzz7XPqcG4XFHtj34oS57mk4qaFMzMzMzMzMz26Y)VmCkKWK)xhqB0McPZqHeM8)6aUhDDP785ZmZmZmZmZmZWzz7rHlwy(Xg7f5Gcodef87Aa07muibo0pFEUZOGdb8zMzMzMzMzMzMz26Y)VmCkKaiE8bO4uYTrBkKodfsaep(auCk57rxx6oFMzMzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeqbhYaniiJJsnedtmnCkKaiE8bO4uYnmX0qmCkKaQHdyORl1qmmX0qxx6oFMzMzMzMzMzMzMHtHeM8)6aAJgofsyY)RdOnzz4uibq84dqXPK7ZmZmZmZmZmZGad(8zMzMzMzMzMz4SS94uiHj)VoG2hyWWPqct(FDanUddfUyHjx)1beuWzGOGFxd7mk4qaFMzMzMzMzMzMzM9py(CdcWfMdqEpMoXD6EeSGbsUX1FDanw4lkKXW(JIISZNzMzMzMzMzMzMzmq6bdGrzoG(mZmZmZmZmZmiWGpZmZmZmZmiWGpZmZmZGad(mZmiWGpYW36Y)VmqYbeLodfs4C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709iG4beLA4uibJf(Iczopg66spFdXWetdDDP78zMzMzMzMTU8)ldNcjak5ydTrBkKodfsauYXgUhDDP78zMzMzMzMTU8)ldNcjW5Gxk5ydTrBkKodfsGZbVuYXgUhDDP78zMzMzMzMHZY2JtHeaLCSH2hyWWPqcCo4Lso2q7dmy4uibqjhBOnoA4uiboh8sjhBOnoAiG4beLISZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhbepGOudNcjySWxuiJH9hffzNpZmZmZmZmZmJbspyamkZb0NzMzMzMzgeyWNzMzMzqGbFMzgeyWhz4BD5)xg)1hfflGFMZHVOqgB0itFMzge4Z7coyJgL5aU5ZmZWxCTafCgik431GnAyTZNV5ZmZajh)foLCqbNbIc(DnyJ2zS5ZmZyHVOqgB0yDaWNIFb2JcxS2m01LUZNzMzMz4SS9OWflmHaFExWHDgfCiGpZmZmZmZS)bZNBqaUWCaY7X0jUt3JacRpkQnf(zmw4lkK58yORl98nedtmn01LUZNzMzMzMz26Y)VmCkKaOKJn0gTPq6muibqjhB4E01LUZNzMzMzMz26Y)VmCkKa3dsoWXEIlFB0McPZqHe4EqYbo2tC5)P4xG9ORlDNpZmZmZmZmCw2ECkKaOKJn0ghnKjXq4YG4ZmZmZmZm7Yy4uibqjhBOnoAiKf(X(cG4ZmZmZmZm7Yy4uibUhKCGJ9ex(24OHmdyn5GYDc2Cp3o3mGfwW9tgeFMzMzMzMzxgdNcjW9GKdCSN4Y3ghnKzaRjhuUtWM75gOtMzalSSCpOi(mZmZmZmZUmgofsG7bjh4ypXLVnoAiZawtoOCNGn3ZnqycEmjSSi(mZmZmZmZUmgofsG7bjh4ypXLVnoAiZawtoOCNGn3ZnWI7bbSSi7mk4qaFMzMzMzMzMz26Y)VmCkKWeqUGlB0McPZqHeMaYfCThDDP78zMzMzMzMzMzRl))YWPqcG4XFHtj3gTPq6muibq84VWPKVhDDP78zMzMzMzMzMzRl))YWr5EqYbo2y)5DbTr7FW85geGlmr5j(AHscfUG8P7X6B2KnaCkiS(OO7rWE9jhYGSBhrsOh8sjhBirBC0WWNpZmZmZmZmZmdNLThhL7bjh4yJ9N3f0(adgofsycixWLXDyOWflmXxCTafCgik431G9bgmCkKaiE8x4uYnUddfUyHji54VWPKdk4mquWVRHDgfCiGpZmZmZmZmZmZmZ(hmFUbb4cZbiVhtN4oDpciS(OO2u4NXyHVOqgd7pkkYoFMzMzMzMzMzMzMXaPhmagL5a6ZmZmZmZmZmZGad(mZmZmZmZGad(mZmZmdcm4ZmZGad(idFRl))Y(NxqgCk8C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZm8fxlqbNbIc(DnyJgw785B(mZmqYXFHtjhuWzGOGFxd2ODgB(mZmw4lkKXgnwha8P4xG9OWfRndDDP78zMzMzgolBpkCXctiWN3fCyNrbhc4ZmZmZmZm7FW85geGlmhG8EmDI709it68cYGtHgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsauYXgAJ2uiDgkKaOKJnCp66s35ZmZmZmZmBD5)xgofsGZbVuYXgAJ2uiDgkKaNdEPKJnCp66s35ZmZmZmZmBD5)xgofsaep(lCk52OnfsNHcjaIh)foL89ORlDNpZmZmZmZmCw2ECkKaOKJn0(adgofsGZbVuYXgAFGbdNcjaIh)foLC7dmy4uibqjhBOnoAiGWfa9GWN3feX(adgofsGZbVuYXgAJJgcpOGdzqSpWGHtHeaXJ)cNsUXDyySZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhzsNxqgCk0yHVOqgd7pkkYoFMzMzMzMzMzgdKEWayuMdOpZmZmZmZmiWGpZmZmZGad(mZmiWGpYW36Y)VSpZ0daCk8C4lkKXgnY0NzMbb(8UGd2OrzoGB(mZmqYXFHtjhuWzGOGFxd2OHXMpZmJf(IczSrJ1baFk(fypkCXAZqxx6oFMzMzMHZY2JcxSWec85Dbh2zuWHa(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYKyMEaGtHgl8ffYCEm01LE(gIHjMg66s35ZmZmZmZmBD5)xgofsaS(eG2OnfsNHcjawFcW9ORlDNpZmZmZmZS1L)Fz4uibq84VWPKBJ2uiDgkKaiE8x4uY3JUU0D(mZmZmZmZWzz7XPqcG1Na0(adgofsaep(lCk52hyWWPqcG1Na88j8P8bFpYKyMEaGtHi7SpWGHtHeaXJ)cNsUXDyOWflmbjh)foLCqbNbIc(DnSZOGdb8zMzMzMzMzMz)dMp3GaCH5aK3JPtCNUhzsmtpaWPqJf(IczmS)OOi78zMzMzMzMzMzmq6bdGrzoG(mZmZmZmZGad(mZmZmdcm4ZmZGad(idF((hmFUbb4ctw4lkKHdKHlC(qB0itFMzgl8ffYGAJgz6ZmZmZSP31W5WxuiZMpZmZmZUmdqMjde9EWWhIEo8ffYS5ZmZmZmc3da65WxuiZMpZmZmZWxCToh(Icz28zMzMzg2mxwquu8lW5WxuiZMpZmZmZ46VoGNdFrHmB(mZmZmBkdK8j)VoGNdFrHmB(mZmZmdKCarPZqHeoh(Icz28zMzMzg)1hfflGFMZHVOqMnFMzMzM9pVGm4u45WxuiZMpZmZmZ(mtpaWPWZHVOqgFMzgzS5ZmZqxxkkO3jUxQnAKjzS5ZmZyoaSrJ1baFk(fypkCXAZw3lDgaw3D(mZmZmdfUyHj66srb9oX9sTrJmjdFMzMzMX6YyORlDZWPqcgoGH9hNbD)6EPZaW6UZgU(mZmZmZmZ(hmFUbb4cZbiVhtN4oDpYe3l1qxx65BigMyAORl1WetdXqmmX0WPqcyItHe25ZmZmZmZm7FW85geGlmhG8EmDI709tH0zOqcCo4Lso2W9ORlD3oFMzMzMzMzOWfRZN5a4C4lkKbDp66s35ZmZmZmiWGpFMzMzM9py(CdcWfMdqEpMoXD6EeoRlf1OxBDV0Z3qmmX0WYGcxSWeDDPOGEN4EP78zMzMz2)G5Zniaxyoa59y6e3P7rHlwyIUUuuqVtCV0D(mZmZmJ1LXWTrdldkCXct01LIc6DI7LUzySzNWWgU(mZmZmZmZwx()LHUUuB0qHlwyIUUuuqVtCVus4e9zMzMzMzM9py(CdcWfMdqEpMoXD6EKjUxkoWudDDP2ECkK5tVm7oFdXWetdDDP78zMzMzMzMnCN4EP7rxx6oFMzMzMbbg8zMzqGHnFMzgZbW5WxuidQnASoa4tXVa7rHlwBg66s35ZmZmZmwxgJNBgl8ffYy4ag2FCg09OWflmzHVOqg0D2W1NzMzMzMzgolBpl8ffYC(SWxuiZE01LUBNrbhc4ZmZmZmZmZmZqHlwyIUUuuqVtCVusyzqHlwyIUUuuqVtCVu782WGOnAORl1NzMzMzMzMzMXaPhma(mZmZmZmZGad(mZmZmdcm4ZmZGad(idF((hmFUbb4cZbiVhtN4o1gnwha8P4xG9xEXYVZNzMHZY2pa59y6oJcoeWNzMzMzyZGdq3JfqkO4eG73TZNzMzMzyfKlqV3fk3WQdcyV)Ylw(D(mZmZmdBgCa6(D(mZmiWGpiWGpF)dMp3GaCHjkpXxluB0itFMz2PtK9ZWGFz8zMzKWGOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAZ38zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gnm28zMzMzgjeoGJdxdOieTrdJnFMzMzMD6ezHFSVaghEIVwO(mZmZmJecpaGNaZhyaoytcKHOieTrdJnFMzMzMrcb0zVNaZhyaoytcKHOieTrdJnFMzMzMrcH7ENffHOnAyS5ZmZmZmsiyXbakcrB0WyZNzMzMzKq4ba8ey(adWb7SF(queI2OHXMpZmZmZiHa6S3tG5dmahSZ(5drriAJggB(mZmZmJecyFxWpdbueI2OHXMpZmZmZiHWda4jW8bgGdgNzVmdOieTrdJnFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gnm28zMzMzgjeY(zMU(4CbrriAJggB(mZmZmJech6NlikcrB0WyZNzMzMzKqohok1il8J9fafHOnAyS5ZmZmZmsiy1F6uidkcrB0WyZNzMzMzKqabMlkkV3zrriAJggB(mZmZmJecz)adOieTrB(MpZmJm28zMzNob2)1FahWNzMr6miAJgz6ZmZmZStNMedHlJXHN4RfQpZmZmZiHacRlfCeI2OnFZNzMzMzKqMa(PGdzqiAJ28nFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrdJnFMzMzMrcHd44W1akcrB0WyZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0WyZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJggB(mZmZmJecOZEpbMpWaCWo7NpefHOnAyS5ZmZmZmsiG9Db)meqriAJggB(mZmZmJecpaGNaZhyaoyCM9YmGIq0gnm28zMzMzgjeqN9EcmFGb4GXz2lZakcrB0WyZNzMzMzKqi7Nz66JZfefHOnAZ38zMzMzgjeo0pxqueI2OnFZNzMzMzKqohok1il8J9fafHOnAZ38zMzMzgjeS6pDkKbfHOnAZ38zMzMzgjeqG5IIY7DwueI2OnFZNzMzMzKqi7hyafHOnAZ38zMzKXMpZm70jWCaqHm(mZmsyDI2OrM(mZmZm70PjXq4YyC4j(AH6ZmZmZmsiGW6sbhHOnAZ38zMzMzgjKjGFk4qgeI2OnFZNzMzMzKqo7hFHq0gnm28zMzMzgjeWE9PqeI2OnFZNzMzMzKq4aooCnGIq0gT5B(mZmZm70jYc)yFbmo8eFTq9zMzMzgjeEaapbMpWaCWMeidrriAJggB(mZmZmJecOZEpbMpWaCWMeidrriAJggB(mZmZmJec39olkcrB0WyZNzMzMzKqWIdaueI2OHXMpZmZmZiHWda4jW8bgGd2z)8HOieTrB(MpZmZmZiHa6S3tG5dmahSZ(5drriAJ28nFMzMzMrcbSVl4NHakcrB0WyZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJggB(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJggB(mZmZmJecw9NofYGIq0gnm28zMzMzgjeqG5IIY7DwueI2OHXMpZmZmZiHq2pWakcrB0MV5ZmZiJnFMz2PttM70dOpZmJ0zs0gnY0NzMzMzNonjgcxgJdpXxluFMzMzMrcbewxk4ieTrB(MpZmZmZiHmb8tbhYGq0gnm28zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gT5B(mZmZmJechWXHRbueI2OnFZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0MV5ZmZmZmsiC37SOieTrB(MpZmZmZiHGfhaOieTrB(MpZmZmZiHWda4jW8bgGd2z)8HOieTrdJnFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJ28nFMzMzMrc5C4OuJSWp2xaueI2OHXMpZmZmZiHGv)PtHmOieTrdJnFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJ28nFMzgzS5ZmZoDcSzWHOuFMzgjqkI2OrM(mZmZm70PjXq4YyC4j(AH6ZmZmZmsiGW6sbhHOnAyS5ZmZmZmsita)uWHmieTrB(MpZmZmZiHC2p(cHOnAZ38zMzMzgjeWE9PqeI2OnFZNzMzMzKq4aooCnGIq0gT5B(mZmZm70jYc)yFbmo8eFTq9zMzMzgjeEaapbMpWaCWMeidrriAJ28nFMzMzMrcb0zVNaZhyaoytcKHOieTrB(MpZmZmZiHWDVZIIq0gT5B(mZmZmJecwCaGIq0gT5B(mZmZmJecpaGNaZhyaoyN9ZhIIq0gnm28zMzMzgjeqN9EcmFGb4GD2pFikcrB0MV5ZmZmZmsiG9Db)meqriAJ28nFMzMzMrcHhaWtG5dmahmoZEzgqriAJ28nFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gT5B(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJ28nFMzMzMrcbR(tNczqriAJggB(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gnm28zMzKXMpZm70jSc(PGByzbWNco1NzMrcKMOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAZ38zMzMzgjKZ(XxieTrB(MpZmZmZiHa2RpfIq0gnm28zMzMzgjeoGJdxdOieTrB(MpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OHXMpZmZmZiHWDVZIIq0gT5B(mZmZmJecwCaGIq0gT5B(mZmZmJecpaGNaZhyaoyN9ZhIIq0gnm28zMzMzgjeqN9EcmFGb4GD2pFikcrB0WyZNzMzMzKqa77c(ziGIq0gnm28zMzMzgjeEaapbMpWaCW4m7LzafHOnAyS5ZmZmZmsiGo79ey(adWbJZSxMbueI2OHXMpZmZmZiHq2pZ01hNlikcrB0MV5ZmZmZmsiCOFUGOieTrB(MpZmZmZiHCoCuQrw4h7lakcrB0MV5ZmZmZmsiy1F6uidkcrB0MV5ZmZmZmsiGaZffL37SOieTrB(MpZmZmZiHq2pWakcrB0MV5ZmZiJnFMz2PtCa)t4d4ZmZiH1q0gnY0NzMzMzNonjgcxgJdpXxluFMzMzMrcbewxk4ieTrB(MpZmZmZiHmb8tbhYGq0gT5B(mZmZmJeYz)4leI2OHXMpZmZmZiHa2RpfIq0gT5B(mZmZmJechWXHRbueI2OHXMpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJggB(mZmZmJecOZEpbMpWaCWo7NpefHOnAZ38zMzMzgjeW(UGFgcOieTrB(MpZmZmZiHWda4jW8bgGdgNzVmdOieTrB(MpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJggB(mZmZmJeY5WrPgzHFSVaOieTrdJnFMzMzMrcbR(tNczqriAJggB(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gT5B(mZmYyZNzMD60z)tH(mZmsyTeTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0WyZNzMzMzKqMa(PGdzqiAJ28nFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrB(MpZmZmZiHWbCC4AafHOnAZ38zMzMz2PtKf(X(cyC4j(AH6ZmZmZmsi8aaEcmFGb4GnjqgIIq0gT5B(mZmZmJecOZEpbMpWaCWMeidrriAJ28nFMzMzMrcH7ENffHOnAZ38zMzMzgjeS4aafHOnAZ38zMzMzgjeEaapbMpWaCWo7NpefHOnAZ38zMzMzgjeqN9EcmFGb4GD2pFikcrB0MV5ZmZmZmsiG9Db)meqriAJ28nFMzMzMrcHhaWtG5dmahmoZEzgqriAJggB(mZmZmJecOZEpbMpWaCW4m7LzafHOnAZ38zMzMzgjeY(zMU(4CbrriAJ28nFMzMzMrcHd9ZfefHOnAyS5ZmZmZmsiNdhLAKf(X(cGIq0gT5B(mZmZmJecw9NofYGIq0gnm28zMzMzgjeqG5IIY7DwueI2OnFZNzMzMzKqi7hyafHOnAyS5ZmZiJnFMz2PtK9ZSU85PpZmJewcrB0itFMzMzMD60KyiCzmo8eFTq9zMzMzgjeqyDPGJq0gnm28zMzMzgjKjGFk4qgeI2OnFZNzMzMzKqo7hFHq0gT5B(mZmZmJecyV(uicrB0MV5ZmZmZmsiCahhUgqriAJ28nFMzMzMD6ezHFSVaghEIVwO(mZmZmJecpaGNaZhyaoytcKHOieTrB(MpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJ28nFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OnFZNzMzMzKq4q)CbrriAJggB(mZmZmJeY5WrPgzHFSVaOieTrB(MpZmZmZiHGv)PtHmOieTrdJnFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJggB(mZmYyZNzMD60zVa80NzMrcJ5eTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0MV5ZmZmZmsita)uWHmieTrdJnFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrdJnFMzMzMrcHd44W1akcrB0WyZNzMzMzNorw4h7lGXHN4RfQpZmZmZiHWda4jW8bgGd2KazikcrB0WyZNzMzMzKqaD27jW8bgGd2KazikcrB0MV5ZmZmZmsiC37SOieTrB(MpZmZmZiHGfhaOieTrB(MpZmZmZiHWda4jW8bgGd2z)8HOieTrdJnFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OHXMpZmZmZiHWda4jW8bgGdgNzVmdOieTrdJnFMzMzMrcb0zVNaZhyaoyCM9YmGIq0gT5B(mZmZmJecz)mtxFCUGOieTrB(MpZmZmZiHWH(5cIIq0gnm28zMzMzgjKZHJsnYc)yFbqriAJggB(mZmZmJecw9NofYGIq0gT5B(mZmZmJeciWCrr59olkcrB0MV5ZmZmZmsiK9dmGIq0gT5B(mZmYyZNzMD6ewXCGp4ZmZiHbgeTrJm9zMzMz2PttIHWLX4Wt81c1NzMzMzKqaH1LcocrB0MV5ZmZmZmsita)uWHmieTrdJnFMzMzMrc5SF8fcrB0MV5ZmZmZmsiG96tHieTrB(MpZmZmZiHWbCC4AafHOnAZ38zMzMz2PtKf(X(cyC4j(AH6ZmZmZmsi8aaEcmFGb4GnjqgIIq0gT5B(mZmZmJecOZEpbMpWaCWMeidrriAJ28nFMzMzMrcH7ENffHOnAZ38zMzMzgjeS4aafHOnAZ38zMzMzgjeEaapbMpWaCWo7NpefHOnAyS5ZmZmZmsiGo79ey(adWb7SF(queI2OnFZNzMzMzKqa77c(ziGIq0gnm28zMzMzgjeEaapbMpWaCW4m7LzafHOnAZ38zMzMzgjeqN9EcmFGb4GXz2lZakcrB0MV5ZmZmZmsiK9ZmD9X5cIIq0gT5B(mZmZmJech6NlikcrB0WyZNzMzMzKqohok1il8J9fafHOnAyS5ZmZmZmsiy1F6uidkcrB0WyZNzMzMzKqabMlkkV3zrriAJ28nFMzMzMrcHSFGbueI2OnFZNzMrgB(mZStNWkiHlGbMdakKXNzMrcJZGOnAKPpZmZmZoDAsmeUmghEIVwO(mZmZmJeciSUuWriAJ28nFMzMzMrczc4NcoKbHOnAyS5ZmZmZmsiN9JVqiAJ28nFMzMzMrcbSxFkeHOnAZ38zMzMzgjeoGJdxdOieTrB(MpZmZmZoDISWp2xaJdpXxluFMzMzMrcHhaWtG5dmahSjbYqueI2OHXMpZmZmZiHa6S3tG5dmahSjbYqueI2OnFZNzMzMzKq4U3zrriAJ28nFMzMzMrcbloaqriAJ28nFMzMzMrcHhaWtG5dmahSZ(5drriAJ28nFMzMzMrcb0zVNaZhyaoyN9ZhIIq0gT5B(mZmZmJecyFxWpdbueI2OnFZNzMzMzKq4ba8ey(adWbJZSxMbueI2OHXMpZmZmZiHa6S3tG5dmahmoZEzgqriAJ28nFMzMzMrcHSFMPRpoxqueI2OHXMpZmZmZiHWH(5cIIq0gT5B(mZmZmJeY5WrPgzHFSVaOieTrdJnFMzMzMrcbR(tNczqriAJ28nFMzMzMrcbeyUOO8ENffHOnAZ38zMzMzgjeY(bgqriAJ28nFMzgzS5Jm89py(CdcWfMGKJ)cNsoiCxxguB0itFMzgcwkgNXzYNflSKbSKbSKbKn70jdSVxgFMzgcwkgNXzYNflwSyXIflKn70jdeUeiCb8zMziyPyCgNjFwSWaYI185iB2Pt2Kna(xceUa(mZmeSumoJZKplwZNJ1mFyazZoDYMmFgOpZmdblfJZ4m5ZI1hRJ1bPGqKn70jJ7XgNVpZmdblfJZ4m5ZIflwyTZNphzZoDYMaofcm8zi3NzMHGLIXzCM8zXccsZNpw7CKn70jBsmuCwF(uFMzgcwkgNXzYNfR5Z5ZNflKn70jdmqCM19sWhzWMYMYMdoafYa8xtoKbf)cWgSW6S5qzWNofYWgu2COKJnKnh(hO0lb2C4FGsVe4g44dq2CO4eGdS5a5ccqrzZzcEWdq52KH7NewXDYMd)du6LaBoNoztWdEak3MmC)KWkUtFSoa4tXVa7)Rfk9tHOBgCNpZm7FW85geGlm)Rfk9tHO2O9xlu6Ncr95ZmZwx()LTUx6maSU2OHfq6e3lDgaw3978zMz)dMp3GaCHjl8ffYWbYWfoF45ZCaSFDV0zayD35ZmZaH1ffoX9s3VZNzMXaPhmagL5a6dcm4Jnh(Gd5Zt2CGCbbOS5W)aLEjWnk5ydzZbL(PWdSh(uiBoOGFNLhaS5Gc(DwEamj(uCUGSPS5qHGmfdW(IdqzZzYmdwagqzZzD)dSbLnh6FbbONbBqzZHWXIIZgu2u2u2CO)feGYgu2CiCSO4SbLnLnLnNbCwSW5FSOKZgu2CiCSO4SbLnLnLnhMpFiBqzZHWXIIZgu2u2u2Cy95tXVaSbLnhchlkoBqztztzZbBUWM(xqakBqzZHWXIIZgu2u2u2CWbMYCpWMnOS5q4yrXzdkBkBkBom3fKnOS5q4yrXzdkBkBkBkBod4Oy5pa4tX5cYMZFTyZHbof)cak5ydzZbN)fGnhkeKPyWMZKDa2COqqMIX5Uau2C4EqgBgik6SFYzZbFGnNjDqVtCV0z4FbyZHcbzkgGWfG(XbiabOS5WJjBGYzgSI7zZH)9UgUZcakeKPCpWN3fCGnVS5aCqaug8PtHmOSblmyZH)9UgUZcWMx2u2u2C4InyHXzEgyWMYMna \ No newline at end of file +dqLkXbGii9iOkOUeufKrPOCkfvRcve1RqfrMLk6wQq7cbgMk4yqvTmLsvpdrbttPeDnqrvBdQc5BOIqJdrH6CqvOwNIO8oLsO7PG9Hkc(hOOIoOcrlevK8qqrMiIIUOIOAJGc(iOknsqvDsLIwjiVerHyMiQUPsjTtLs5NkImuOk6OGcTuurQNQqnvqLRIOqARkLkFvHWzvkb9weAUqvG7Ii7fv6VOIAWYHvvlwr4XOutgvDzGnJs(SI0ObLoneRwPe41qvA2k52qLDRs)wvgoc64GIYYrXZHY0r66kvBxH03vkmEqvCEuH1dkQ07ruQ5dkQW9ruY(P5Ipx44o(ZfoUuUJX4oE7jaMNa83(J4dZFCkE8wIhHhXgF8yUJXXDmp3X8CHJ7y4zsSyHbOC32roXT8a3XCmjwSWauUBdMNmCG74pBkYOa4yqMofWS1hpG72oI)bUJXi8ZgWDBh4og5sbm3)A7amyiVl3Trg4ogdSyHNpKlL7y4MeEs(KddWXD8FHm9YDm5tomah3XWcqMclLlmSLW8hid4rhid4XB)2tgidCICI4XBpxwh3s8iUJxVppx44og5oL5Ttix44og3(IIWfoUuUuUJP)f4s5ch3X42xueUWXLYLYDm9Vax62ZfoUJXTVOiCHJlLlL74DmaNzV(yyCNG7yMpBax44og3(IIWfoUuUuUJzElax44og3(IIWfoUuUuUJjCucP)f4s5ch3X42xueUWXLYLYDmRpBkY7YfoUJXTVOiCHJlLlL7yEewSqyVVOCWfoUJXTVOiCHJlLlLlL74)fb3Nc4YP4oMbmf5DHJdcbChZZX9JdH9uM3oHChdGhc)xEap3j4ogHN74rUtFK)EuUJ3aHNclxyylH5pqgWJoGpNiN4wsgdZVL4VLBjxwh3s8iUJ5rW2c2VSPiJc4o(VwChF3XbhdY0PagmUBdFUJrUiuoJr)muap3THp3XugKPtbmCHJ7ymyFBmPl3XyW(2ys3rYMImkGlLlL7y2CHJ72WNlCChtbWdfFy4DPJrG5c4UTT)a3XF2uKrbWXGmDkGzRpEa3TDe)dCh)ztrExmUWXDmg9Zq5ch3X8poJdGH9Nc4obxk3Xixekx44oM)Xz27y0hoUCkUJzVJrF44oE9y)xgpyI9P2GX6VWacTES)ldH97sMiyeU(CqM7mFkY7AdgzqiHoE0qOaCB7JdCAiuaoYrU490qOaCW4(FHq540qOaCKdgfSoneka3wrUKdgfSonekahCCqi40qOaCJ3NaooieCIqb4gt)SXlm92V0tdHcWn5WSDecj)X(0qOaCWbGh6od40WaRfEYGWgCASxFmSnjZtdBFc2Rpg2MK5PnbYLhooieCcGhc)S3KmpnmaDtY80qWGjMplkYDkNg8NcUuBWGxaDtka3MxwVzyRhDUqhpAR3JUj7390wVhDBFCGtB9EuyC)FPiuoon27mmGlBo2KmpT17rHX9)cHYXPTESXlG)0qWGXDagDtka3PbZ2by0njZtdbBKSPiJcSbdEbuYFp641JU5L1Bg26rNl0XJg5ix8AypCakcoaMX)ay29rTnEm4vO1J9FzS2VSPiVRnfq3KcWroYfVZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZmgaDN5AWlGs(7rhVEuYrU4Dg26rNle4Yl06X(Vmw7x2uK31McOBsb422hhyg26rNlKzMHWYMHTEuByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZ2(tdEbuYFp641JU5L1Bg26rNpxiWLxO1J9FzS2VSPiVRnfq3KcWbhhecMHTE05czMziSSzyRh1ggSlYAUrHfCngaDN5AxKLbU8czMzRh7)YqOaCKJCXRnytb0nPaCKJCX7mS1JoxiZmdHLndHcWroYfV2WGDrwZnkSGRXaO7mx7ISmWLxiZmJbq3zUggybytNHhDAWlGUjfGBZlR3mekah5ix8oFUqGlVqRh7)YyTFztrExBkGUjfGB8(euoiemdB9OZfYmZqyzZWwpQnmyxK1CJcl4Ama6oZ1UildC5fYmZwp2)LHqb4ih5IxBWMcOBsb4ih5I3zyRhDUqMzgclBgcfGJCKlETHb7ISMBuybxJbq3zU2fzzGlVqMzgdGUZCnmWcWMoJt80GxaDtka3MxwVziuaoYrU4D(CHaxEHwp2)LXA)YMI8U2uaDtkah5GrbRzyRhDUqMzgclBg26rTHb7ISMBuybxJbq3zU2fzzGlVqMz26X(Vmekah5ix8Ad2uaDtkah5ix8odB9OZfYmZqyzZqOaCKJCXRnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zB5PbVa6MuaUnVSEZqOaCKJCX785cbU8cTES)lJ1(Lnf5DTPa6MuaUT7V2bZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZS1J9FziuaoYrU41gSPa6MuaoYrU4Dg26rNlKzMHWYMHqb4ih5IxByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZWh)tdEb0nPaCBEz9MHqb4ih5I35ZfcC5fA9y)xgR9lBkY7Atb0nPaCW4()srOCmdB9OZfYmZqyzZWwpQnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zKHtdEbuYFp641JU5L1Bg26rNpxiWLxO1J9FzS2VSPiVRnfq3KcWbJ7)fcLJzyRhDUqMzgclBg26rTHb7ISMBuybxJbq3zU2fzzGlVqMz26X(Vmekah5ix8Ad2uaDtkah5ix8odB9OZfYmZqyzZqOaCKJCXRnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zKHtdEb0nPaCBEz9MHqb4ih5I35ZfcC5fA9y)xgR9lBkY7Atb0nPaCtomBhHqYFS)uK3Dg26rNlKzMHWYMHTEuByWUiR5gfwW1ya0DMRDrwg4YlKzMTES)ldHcWroYfV2Gnfq3KcWroYfVZWwp6CHmZmew2mekah5ix8Add2fzn3OWcUgdGUZCTlYYaxEHmZmgaDN5AyGfGnDgE8PbVa6MuaUnVSEZqOaCKJCX785cbU8cTES)lJ1(Lnf5DTPa6MuaUnz)UZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZS1J9FziuaoYrU41gSPa6MuaoYrU4Dg26rNlKzMHWYMHqb4ih5IxByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZW)WPbVa6MuaUnVSEZqOaCKJCX785cbU8cjKqRh7)Y4FK)EuBWyTFztrE3zyRhDUqMz2FN5ZzWDuc4btSpL830zOK)EuK7udB9OtMHAeqGHTE05czMzK)E0XRhDg26rNlKqMz26X(Vmeka3MSFxBWMcOBsb42K97odB9OZThJHpzyl3YdheYmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE052JXqjJEX79TXfviZmdHcWTTpoGnyiuaUT9XbMSPy7tmdfp4IEAONg6CHmZS1J9FziuaoyC)FPiuoSbBkGUjfGdg3)xkcLJzyRhDU9ym8fYmZwp2)LHqb4GX9)cHYHnytb0nPaCW4(FHq5yg26rNBpg7GqczMz)DMpNb3rjGhmX(uYFtNHsMm)nqUtne2VRX6XyOgbeyiuaUT9XbmciWqTnqOWAWS9)cHYHHAeqGHqb4GX9)cHYXCHmZS1J9Fz3poWiqOWctV1JXgS)oZNZG7OeaZ2)lekhW0B9yWiIqb4GX9)cHYHXjz4tYiGadLiQrabgcfGBBFCaJacmus4b4V9BjdQqMz26X(VS7hhyeiuyHX9)LIq5WgS7hhyeiuyHP36XyeqGHAWdQrabgcfGdg3)xkcLdHeYmZ(7mFodUJsapyI9PK)ModDKyyitVi3P29JdGAeqGD)4aJaHclmU)VuekhZfYmZ(7mFodUJsWFTWOFkaJiE4)oZNZG7Oe8xlm6NcWmojdFs2Gr2czMzMzggSVnSbJYSdofYmZmZm2W(Vtb82Grz2bNczMzMzgYLhap2GbVakCi4aZMFkKzMzMzmaShd1gmkZo4uiHmZmZmdH97AdgcfGBt2V7PqMzMzMD)4a2GD)4aJaHclmU)VuekhNczMzMz2h3B)sTbdHcWbJ7)lfHYXPqczMzMzgHmVPmamm44GqGnyOueCaE0tHmZmZmdapeIW8PiVlCi4a2GbVakCi4aZMBCsgc73LmrWiC95Gm3z(uK39uiZmZmZ43z(uK31gme2VlzIGr46ZbzUZ8PiV7PqMzMzM93Pp4JWdSbJYSdofYmZilHaxEHesO1J9FztFlEyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZqH33I3yHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE05czMzMzMzMD8OTPnDhGHziuJ)bWS7JAy7es4JHAtItBixJbmfapWCkKzMzMzMz2XJgcfGBBFCGjd3NYg2zO4H45KSzZG33IFomhWCmBmYAuaZCyoG5ygm9iKqaZ85OZfYmZmZmZmdHLndHcWD)4a2)YBiuaUT9XbMmCFkByNHIhINtYG33IhDU9ymeka32(4atgUpLnSZqXdXZjzJrwJcyqNBpgdHcWTTpoWKH7tzd7mu8q8Csgm9iKqad685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6mu49T4nwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4Ylezj06X(VShdpGHtdWE7mSbyWaYIcySbJSfYmZa3)elaVnyuMDWPqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHYPbyVDg2aJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGBBFCaBWMcOBsb422hhyg26rNlKzMzMzMzgclBgcfGBBFCa7F5neka32(4atgUpLnSZqNedpGX40aS3odBag685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0jXWdymga2BNHnWyHSOagJWpgg6CHmZmZmZmZmZmgaDN5AuMDGqMzMzMzMzGlVqMzMzMbU8czMzGlVqKLqRh7)YW92Vuyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZq36B)snwilkGzlAyRhDYmuJacmS1JoxiZmZmZmZS1J9Fziuao44GqGnytb0nPaCWXbHGzyRhDUqMzMzMzMziSSziuao44GqG9V8gcfGdooieyddg6wF7xk6CJcl4kKzMzMzMzMzM93z(CgChLaEWe7tj)nDg6wF7xQXczrbmgHFmm05czMzMzMzMzMzma6oZ1Om7aHmZmZmZmZaxEHmZmZmdC5fYmZaxEHilHwp2)LHSgDbdilkGXgmYwiZmdC)tSa82Grz2bNczMziRrxWbldad23I3gmYyY4dNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg6MKp6YyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4ihmkyzd2uaDtkah5GrbRzyRhDUqMzMzMzMziSSziuaoYbJcw2)YBiuaoYbJcwgNGHbwSiazn6coyzayW(w8ZnkSGRqMzMzMzMzMz2FN5ZzWDuc4btSpL830zOBsb4SfyuWYyHSOagJWpgg6CHmZmZmZmZmZmgaDN5AuMDGqMzMzMzMzGlVqMzMzMbU8czMzGlVqKLqRh7)YiK5XcGHH8UWaYIcySbJSfYmZa3)elaVnyuMDWPqMzgSaMjWSbJYSdofYmZyVEuyTbJ1FHbofYmZEmaBWy9xyGtHmZSf4tHfWydgR)cdCkKzMX(9WlYDQnyS(lmWPqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHINmpwammK31yHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GJdcb2Gnfq3KcWbhhecMHTE05czMzMzMzMHWYMHqb4GJdcb2)YBiuao44GqGnmyOWX85by4fzTqNBuybxHmZmZmZmZmZS1J9FziuaUX7tq5GqGnytb0nPaCJ3NGYbHGzyRhDUqMzMzMzMzMzgclBgcfGB8(euoiey)lVndHcWnEFckhecSHbdf(aMjqT)L3WalwealGzcS5czMzMzMzMzMzpgBgcfGB8(euoieyddgk5GpfwadQ9V8ggyXIGf4tHfWmxiZmZmZmZmZm7XyZqOaCJ3NGYbHaByWqHP1JclQ9V8ggyXIa2Rhf25czMzMzMzMzMzpgBgcfGB8(euoieyddg6KyaO2)YByGflcEmG5czMzMzMzMzMzpgBgcfGB8(euoieyddgkm9E4f5of1(xEddSyra73dVi3PZNBuybxHmZmZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6mu8K5XcGHH8UglKffWye(XWqNlKzMzMzMzMzMzMzma6oZ1Om7aHmZmZmZmZmZmWLxiZmZmZmZmWLxiZmZmZaxEHmZmWLxiYsO1J9FzJ(x7ayazrbm2Gr2czMzG7FIfG3gmkZo4uiZmB0)AhahSmamyFlEBWidW8gNSH)HdgNSH)HdNczMzFcjCXbCWYaWG9T4H7TjfGBm9ZgV2GX6VWaNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg629x7aJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGB7(RDGnytb0nPaCB3FTdMHTE05cjKzMzMzMzgclBggyXIGpHeU4aoyzayW(w8W92KcWnM(zJ35gfwWviZmZmZmZmZmB9y)xgcfGdg3)xkcLdBWMcOBsb4GX9)LIq5yg26rNlKzMzMzMzMzM93z(CgChLaEWe7tj)nDgkCWcyagaEqWOgQrabgcfGdg3)xkcLdJacmudHcWHzixdB9OgQrabg26rNlKzMzMzMzMzMHqb42U)AhydgcfGB7(RDGXjBiuaoyC)FPiuoeYmZmZmZmdC5fsiZmZmZmZmew2meka329x7a7F5neka329x7aJtWWalwem6FTdGdwgagSVf)CJcl4kKzMzMzMzMzM93z(CgChLaEWe7tj)nDg629x7aJfYIcymc)yyOZfYmZmZmZmZmZya0DMRrz2bczMzMzMzMbU8czMzMzg4YlKzMbU8crwcTES)lBkdGJT7V2bWaYIcySbJSfYmZa3)elaVnyuMDWPqMz2XJ2ya1OWYaWG9T4n6Zoy0NTEpQ9xlBkdGdmHmZSr)RDaCWYaWG9T4TbdM34Kn8pCW4Kn8pC4uiZm7tiHloGdwgagSVfpCVnPaCJPF241gmw)fg4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZqHxgah2O)1oWyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GX9)cHYHnytb0nPaCW4(FHq5yg26rNlKzMzMzMzgclBgcfGdg3)lekh2)YBiuaoyC)VqOCyCc2H5gfwWviZmZmZmZmZmB9y)xgcfGB7(RDGnytb0nPaCB3FTdMHTE05cjKzMzMzMzMzMHWYMHbwSi4tiHloGdwgagSVfpCVnPaCJPF24DUrHfCfYmZmZmZmZmZmZS1J9FziuaoyC)FPiuoSbBkGUjfGdg3)xkcLJzyRhDUqMzMzMzMzMzMzM93z(CgChLaEWe7tj)nDgkCWcyagaEqWOgQrabgcfGdg3)xkcLdJacmudHcWHzixdB9OgQrabg26rNlKzMzMzMzMzMzMziuaUT7V2b2GHqb42U)AhyCYgcfGdg3)xkcLdHmZmZmZmZmZmWLxiHmZmZmZmZmZmew2meka329x7a7F5neka329x7aJtWWalwem6FTdGdwgagSVf)CJcl4kKzMzMzMzMzMzMz)DMpNb3rjGhmX(uYFtNHcVmaoSr)RDGXczrbmgHFmm05czMzMzMzMzMzMzgdGUZCnkZoqiZmZmZmZmZmdC5fYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)xgmBhGr3KcWbdilkGXgmYwiZmdC)tSa82Grz2bNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDgkmUdWOgcfGZyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GJdcb2Gnfq3KcWbhhecMHTE05czMzMzMzMTES)ldHcWnEFckhecSbBkGUjfGB8(euoiemdB9OZfYmZmZmZmdHLndHcWbhhecS)L3qOaCJ3NGYbHa7F5nekahCCqiWggmeka349jOCqiWggmuyChGrrNBuybxHmZmZmZmZmZS)oZNZG7OeWdMyFk5VPZqHXDag1qOaCglKffWye(XWqNlKzMzMzMzMzMXaO7mxJYSdeYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)xg71hddEbFgyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmdzn6coyzayW(w82GrgF4WPqMzgmB)VqOCahSmamyFlEBW2(tHmZmwilkGXgmw7x2uK3DggyX60Wwp6CHmZmZmdHLnddSyra4(Nyb4NBuybxHmZmZmZmZ(7mFodUJsapyI9PK)ModfMwFmmBk4ZySqwuaZw0Wwp6KzOgbeyyRhDUqMzMzMzMzRh7)YqOaCWXbHaBWMcOBsb4GJdcbZWwp6CHmZmZmZmZwp2)LHqb4MCy2ocHK)yBd2uaDtka3KdZ2riK8h7pf5DNHTE05czMzMzMzMHWYMHqb4GJdcb2WGHosgCpguHmZmZmZmZEmgcfGdooieyddg6iaFcFxuHmZmZmZmZEmgcfGBYHz7ies(JTnmyOBUTTdUTq8CY5mmS52G3jNtJkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoNHJtV52iJm5WHkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoNHjYN0ijJGkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoN32KdtKrqNBuybxHmZmZmZmZmZS1J9FziuaoYbJcw2Gnfq3KcWroyuWAg26rNlKzMzMzMzMzMTES)ldHcWbJ7)fcLdBWMcOBsb4GX9)cHYXmS1JoxiZmZmZmZmZmB9y)xgc2KdZ2riKW)elGny)DMpNb3rjadViRfgrmWcWMoJmCAKrViuyA9XWMHs46ZbGbD(CseX2NGYbHas2WGHVqczMzMzMzMzMziSSziytomBhHqc)tSa2)YBiuaoYbJcwgNGHbwSiazn6coyzayW(w82)YBiuaoyC)VqOCyCcggyXIay2(FHq5aoyzayW(w8ZnkSGRqMzMzMzMzMzMzM93z(CgChLaEWe7tj)nDgkmT(yy2uWNXyHSOagJWpgg6CHmZmZmZmZmZmZmJbq3zUgLzhiKzMzMzMzMzMbU8czMzMzMzMbU8czMzMzg4YlKzMbU8crwcTES)l7dZfWGqbWaYIcySbJSfYmZa3)elaVnyuMDWPqMzgYA0fCWYaWG9T4TbJm(WHtHmZmy2(FHq5aoyzayW(w82GT9NczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg6iH5cyqOaJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGdooieyd2uaDtkahCCqiyg26rNlKzMzMzMz26X(Vmeka349jOCqiWgSPa6MuaUX7tq5GqWmS1JoxiZmZmZmZS1J9FziuaoyC)VqOCyd2uaDtkahmU)xiuoMHTE05czMzMzMzMHWYMHqb4GJdcb2)YBiuaUX7tq5GqG9V8gcfGdg3)lekh2)YBiuao44GqGnmyOW07ITJ7pXcGA)lVHqb4gVpbLdcb2WGHojkSagu7F5nekahmU)xiuomobd)5gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0rcZfWGqbglKffWye(XWqNlKzMzMzMzMzMXaO7mxJYSdeYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)x2Nz6(fHcGbKffWydgzlKzMbU)jwaEBWOm7GtHmZmy2(FHq5aoyzayW(w82GH)PqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHosMP7xekWyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE05czMzMzMzMTES)ldHcWbJ7)fcLdBWMcOBsb4GX9)cHYXmS1JoxiZmZmZmZmew2meka32(4a2)YBiuaoyC)VqOCy)lVHqb422hhyYW9PSHDg6izMUFrOa052)YBiuaoyC)VqOCyCcggyXIay2(FHq5aoyzayW(w8ZnkSGRqMzMzMzMzMz2FN5ZzWDuc4btSpL830zOJKz6(fHcmwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4Ylezj06X(VS)Lnc4s36)(HbKffWydgzlKzMbU)jwaEBWOm7GtHmZmy2(FHq5aoyzayW(w82GH)PqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHoYlBeWLA4(3VXczrbmBrdB9OtMHAeqGHTE05czMzMzMzMTES)ldHcWTTpoGnytb0nPaCB7JdmdB9OZfYmZmZmZmdHLndHcWTTpoG9V8gcfGBBFCGjd3NYg2zOJ8YgbCP2w)3p685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0rEzJaUud3)(nwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4YlezjKq)DMpNb3rjGfYIcygdygfHnWgmYwiZmJfYIcyWSbJSfYmZmZSPVfpmGSOaMtHmZmZm7XWdy40aS3odBagmGSOaMtHmZmZmd3B)sHbKffWCkKzMzMziRrxWaYIcyofYmZmZmczESayyiVlmGSOaMtHmZmZmB0)AhadilkG5uiZmZmZMYa4y7(RDamGSOaMtHmZmZmdMTdWOBsb4GbKffWCkKzMzMzSxFmm4f8zGbKffWCkKzMzMzFyUagekagqwuaZPqMzMzM9zMUFrOayazrbmNczMzMz2)YgbCPB9F)WaYIcyeYmZiRtHmZmS1JIb3J83JAdgztwNczMzm7xBWyTFztrE3zyGfRtB9E0nVSEZfYmZmZmmWIfbyRhfdUh5Vh1gmYMSeYmZmZmwpgdB9ONgcfGZqUgHFegSzR3JU5L1BUX)eYmZmZmZm7VZ85m4okb8Gj2Ns(B6muYFpQHTE0jZqnciWWwpQrabgQHAeqGHqb4iaHcWnxiZmZmZmZmmWI1KXSFHbKffWGndB9OZfYmZmZmWLxiHmZmZm7VZ85m4okb8Gj2Ns(B6m0XRhfZOpB9E0jZqnciWWdJbwSiaB9OyW9i)9OZfYmZmZS)oZNZG7OeWdMyFk5VPZWalweGTEum4EK)E05czMzMzgRhJHydgEymWIfbyRhfdUh5Vh90W)0oIVX)eYmZmZmZmB9y)xg26rTbddSyra26rXG7r(7rjIqsiZmZmZmZS)oZNZG7OeWdMyFk5VPZqj)9Oi3Pg26rTziuaZN(yMpzgQrabg26rNlKzMzMzMzg)J83JodB9OZfYmZmZmWLxiZmdC5pfYmZy2VWaYIcyWSbJ1(Lnf5DNHbwSonS1JoxiZmZmZy9ym8EASqwuaJHCnc)imyZWalweWczrbmyZn(NqMzMzMzMziSSzSqwuaZKXczrbmZWwp685gfwWviZmZmZmZmZm74rBRitHLAtaSPVhVrFNgYfJc(82JLTfSJrTpppYDQHTEuJ(SVTqWON2NN3(x7nXwaGn12aHcRHCz9S)eVDQrHfyiuao7F5nkSadB9Og73L(rUi3Pgc1WEg4ZgwJfYIcym2)RXJWM(PaJclWqOaC29Jdy)lVHW(DfYmZmZmZmZmZWalweGTEum4EK)EuI4HXalweGTEum4EK)EuJtYWNKnyyRhviZmZmZmZmZmJbq3zUczMzMzMzMbU8czMzMzg4YlKzMbU8crwcj0FN5ZzWDuc4btSpL83uBWyTFztrE3zVj2cMlKzMHWYMXdMyF6CJcl4kKzMzMzeYGCPZGxafoeCGzZNlKzMzMzKjyu4EVfgNjZDCeo7nXwWCHmZmZmJqgKlD2CHmZmWLxiWLxiH(7mFodUJsagErwlmBWiBHmZSJhhXNHb5XiKzMreFs2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GD4uiZmZmZiIso4tHfWGsYgSdNczMzMzgr0T(rwOKSb7WPqMzMzMrefpxFkaLKny4FkKzMzMzerhdlcyXJHsYgm8pfYmZmZSJhhb4t47AJXlYAHjKzMzMzerN0fCe()lpG3gj8aWqjzdg(NczMzMzgru424De()lpG3gj8aWqjzdg(NczMzMzgruo1Bdmus2GH)PqMzMzMrefE3VyOKSbd)tHmZmZmJi6KUGJW)F5b82w)SbyOKSbd)tHmZmZmJikCB8oc))LhWBB9ZgGHsYgm8pfYmZmZmIO45Bb(m4Wqjzdg(NczMzMzgr0jDbhH))Yd4TXB8y4Xqjzdg(NczMzMzgru424De()lpG3gVXJHhdLKny4FkKzMzMzerhXNz66JmkadLKny4FkKzMzMzerht)JcWqjzdg(NczMzMzgruyabJAJa8j8DXqjzdg(NczMzMzgruY8pDkGbdLKny4FkKzMzMzerHjMhg2eVnWqjzdg(NczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD8iE(xFEKRqMzgXTNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKnyhofYmZmZmIOKd(uybmOKSb7WPqMzMzMreDRFKfkjBWoCkKzMzMzerXZ1Ncqjzdg(NczMzMzgr0XWIaw8yOKSbd)tHmZmZm74Xra(e(U2y8ISwyczMzMzgr0jDbhH))Yd4Trcpamus2GH)PqMzMzMrefUnEhH))Yd4Trcpamus2GH)PqMzMzMreLt92adLKnyhofYmZmZmIOW7(fdLKnyhofYmZmZmIOt6coc))LhWBB9ZgGHsYgm8pfYmZmZmIOWTX7i8)xEaVT1pBagkjBWW)uiZmZmZiIINVf4ZGddLKny4FkKzMzMzerN0fCe()lpG3gVXJHhdLKny4FkKzMzMzerHBJ3r4)V8aEB8gpgEmus2GH)PqMzMzMreDeFMPRpYOamus2GD4uiZmZmZiIoM(hfGHsYgSdNczMzMzgruyabJAJa8j8DXqjzd2HtHmZmZmJikz(NofWGHsYgSdNczMzMzgruyI5HHnXBdmus2GD4uiZmZmZiIoI)LhdLKnyhofYmZiRtHmZSJhH)(LcyeYmZisgizdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWoCkKzMzMzer36hzHsYgm8pfYmZmZmIO456tbOKSb7WPqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgm8pfYmZmZmIOCQ3gyOKSbd)tHmZmZmJik8UFXqjzdg(NczMzMzgr0jDbhH))Yd4TT(zdWqjzd2HtHmZmZmJikCB8oc))LhWBB9ZgGHsYgSdNczMzMzgru88TaFgCyOKSbd)tHmZmZmJi6KUGJW)F5b824nEm8yOKSbd)tHmZmZmJikCB8oc))LhWBJ34XWJHsYgm8pfYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GH)PqMzMzMrefgqWO2iaFcFxmus2GH)PqMzMzMreLm)tNcyWqjzdg(NczMzMzgruyI5HHnXBdmus2GH)PqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpYPFt3bczMze3ss2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GD4uiZmZmZiIso4tHfWGsYgm8pfYmZmZmIOB9JSqjzd2HtHmZmZmJikEU(uakjBWoCkKzMzMzerhdlcyXJHsYgSdNczMzMz2XJJa8j8DTX4fzTWeYmZmZmIOt6coc))LhWBJeEayOKSbd)tHmZmZmJikCB8oc))LhWBJeEayOKSb7WPqMzMzMreLt92adLKnyhofYmZmZmIOW7(fdLKnyhofYmZmZmIOt6coc))LhWBB9ZgGHsYgm8pfYmZmZmIOWTX7i8)xEaVT1pBagkjBWoCkKzMzMzerXZ3c8zWHHsYgSdNczMzMzgr0jDbhH))Yd4TXB8y4Xqjzdg(NczMzMzgru424De()lpG3gVXJHhdLKnyhofYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GD4uiZmZmZiIcdiyuBeGpHVlgkjBWW)uiZmZmZiIsM)PtbmyOKSbd)tHmZmZmJikmX8WWM4TbgkjBWoCkKzMzMzerhX)YJHsYgSdNczMzK1PqMz2XJ4jdcaJkKzMreMNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKny4FkKzMzMzerjh8PWcyqjzd2HtHmZmZmJi6w)ilus2GD4uiZmZmZiIINRpfGsYgSdNczMzMzgr0XWIaw8yOKSb7WPqMzMzMD84iaFcFxBmErwlmHmZmZmJi6KUGJW)F5b82iHhagkjBWoCkKzMzMzerHBJ3r4)V8aEBKWdadLKnyhofYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWoCkKzMzMzerHBJ3r4)V8aEB8gpgEmus2GD4uiZmZmZiIoIpZ01hzuagkjBWoCkKzMzMzerht)JcWqjzdg(NczMzMzgruyabJAJa8j8DXqjzd2HtHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWW)uiZmJSofYmZoEKmbFkSgzKlYuyPczMzeXJizdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWoCkKzMzMzer36hzHsYgSdNczMzMzgru8C9Paus2GH)PqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgm8pfYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzdg(NczMzMzgru88TaFgCyOKSbd)tHmZmZmJi6KUGJW)F5b824nEm8yOKSbd)tHmZmZmJikCB8oc))LhWBJ34XWJHsYgm8pfYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GD4uiZmZmZiIcdiyuBeGpHVlgkjBWoCkKzMzMzerjZ)0Pagmus2GD4uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD84yy)4(xHmZmICIKSbJSfYmZmZSJhhjdUhJngViRfMqMzMzMrefMwpkSOKSb7WPqMzMzMreLCWNclGbLKnyhofYmZmZmIOB9JSqjzdg(NczMzMzgru8C9Paus2GD4uiZmZmZiIogweWIhdLKny4FkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgSdNczMzMzgruo1Bdmus2GD4uiZmZmZiIcV7xmus2GD4uiZmZmZiIoPl4i8)xEaVT1pBagkjBWW)uiZmZmZiIc3gVJW)F5b82w)SbyOKSb7WPqMzMzMrefpFlWNbhgkjBWoCkKzMzMzerN0fCe()lpG3gVXJHhdLKnyhofYmZmZmIOWTX7i8)xEaVnEJhdpgkjBWoCkKzMzMzerhXNz66JmkadLKnyhofYmZmZmIOJP)rbyOKSbd)tHmZmZmJikmGGrTra(e(UyOKSbd)tHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpU1)uGqMzgrYys2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GH)PqMzMzMreLCWNclGbLKnyhofYmZmZmIOB9JSqjzd2HtHmZmZmJikEU(uakjBWoCkKzMzMzerhdlcyXJHsYgSdNczMzMz2XJJa8j8DTX4fzTWeYmZmZmIOt6coc))LhWBJeEayOKSb7WPqMzMzMrefUnEhH))Yd4Trcpamus2GD4uiZmZmZiIYPEBGHsYgSdNczMzMzgru4D)IHsYgSdNczMzMzgr0jDbhH))Yd4TT(zdWqjzd2HtHmZmZmJikCB8oc))LhWBB9ZgGHsYgSdNczMzMzgru88TaFgCyOKSb7WPqMzMzMreDsxWr4)V8aEB8gpgEmus2GH)PqMzMzMrefUnEhH))Yd4TXB8y4Xqjzd2HtHmZmZmJi6i(mtxFKrbyOKSb7WPqMzMzMreDm9pkadLKny4FkKzMzMzerHbemQncWNW3fdLKnyhofYmZmZmIOK5F6uadgkjBWW)uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSbd)tHmZmY6uiZm74Xr8zwp24viZmJiEmjBWiBHmZmZm74XrYG7XyJXlYAHjKzMzMzerHP1JclkjBWW)uiZmZmZiIso4tHfWGsYgSdNczMzMzgr0T(rwOKSb7WPqMzMzMrefpxFkaLKnyhofYmZmZmIOJHfbS4Xqjzd2HtHmZmZm74Xra(e(U2y8ISwyczMzMzgr0jDbhH))Yd4Trcpamus2GD4uiZmZmZiIc3gVJW)F5b82iHhagkjBWoCkKzMzMzer5uVnWqjzd2HtHmZmZmJik8UFXqjzd2HtHmZmZmJi6KUGJW)F5b82w)SbyOKSb7WPqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWW)uiZmZmZiIc3gVJW)F5b824nEm8yOKSb7WPqMzMzMreDeFMPRpYOamus2GD4uiZmZmZiIoM(hfGHsYgm8pfYmZmZmIOWacg1gb4t47IHsYgSdNczMzMzgruY8pDkGbdLKny4FkKzMzMzerHjMhg2eVnWqjzd2HtHmZmZmJi6i(xEmus2GH)PqMzgzDkKzMD84wFx8kKzMre)dKSbJSfYmZmZSJhhjdUhJngViRfMqMzMzMrefMwpkSOKSb7WPqMzMzMreLCWNclGbLKny4FkKzMzMzer36hzHsYgSdNczMzMzgru8C9Paus2GH)PqMzMzMreDmSiGfpgkjBWW)uiZmZmZoECeGpHVRngViRfMqMzMzMreDsxWr4)V8aEBKWdadLKny4FkKzMzMzerHBJ3r4)V8aEBKWdadLKnyhofYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GH)PqMzMzMreDsxWr4)V8aEB8gpgEmus2GH)PqMzMzMrefUnEhH))Yd4TXB8y4Xqjzd2HtHmZmZmJi6i(mtxFKrbyOKSb7WPqMzMzMreDm9pkadLKny4FkKzMzMzerHbemQncWNW3fdLKny4FkKzMzMzerjZ)0Pagmus2GD4uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD8izYSJWlKzMreF8jzdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWW)uiZmZmZiIU1pYcLKnyhofYmZmZmIO456tbOKSb7WPqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgSdNczMzMzgru424De()lpG3gj8aWqjzd2HtHmZmZmJikN6TbgkjBWoCkKzMzMzerH39lgkjBWoCkKzMzMzerN0fCe()lpG326NnadLKny4FkKzMzMzerHBJ3r4)V8aEBRF2amus2GD4uiZmZmZiIINVf4ZGddLKny4FkKzMzMzerN0fCe()lpG3gVXJHhdLKnyhofYmZmZmIOWTX7i8)xEaVnEJhdpgkjBWoCkKzMzMzerhXNz66JmkadLKnyhofYmZmZmIOJP)rbyOKSbd)tHmZmZmJikmGGrTra(e(UyOKSbd)tHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpsMaCVRb)9lfWiKzMre)TNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKnyhofYmZmZmIOKd(uybmOKSbd)tHmZmZmJi6w)ilus2GD4uiZmZmZiIINRpfGsYgSdNczMzMzgr0XWIaw8yOKSb7WPqMzMzMD84iaFcFxBmErwlmHmZmZmJi6KUGJW)F5b82iHhagkjBWW)uiZmZmZiIc3gVJW)F5b82iHhagkjBWoCkKzMzMzer5uVnWqjzd2HtHmZmZmJik8UFXqjzd2HtHmZmZmJi6KUGJW)F5b82w)SbyOKSb7WPqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWW)uiZmZmZiIc3gVJW)F5b824nEm8yOKSb7WPqMzMzMreDeFMPRpYOamus2GH)PqMzMzMreDm9pkadLKnyhofYmZmZmIOWacg1gb4t47IHsYgm8pfYmZmZmIOK5F6uadgkjBWoCkKzMzMzerHjMhg2eVnWqjzd2HtHmZmZmJi6i(xEmus2GD4uiZmJSofISe6VZ85m4okbWS9)cHYbm9wpgmBWiBHmZmu8a83(TKnlw4X84X84X8ON2XJgE(EmczMzO4b4V9BjBwSyXIflwSqpTJhny6Hd37kKzMHIhG)2VLSzXcFalwhoGEAhpAKrVSF4W9UczMzO4b4V9BjBwSoCGt8app6PD8OXP)maHmZmu8a83(TKnlwFYazaMhaqpTJhTjNqe2czMzO4b4V9BjBwSyXIm(WHdON2XJg5GPGl)NHdHmZmu8a83(TKnlwa8i2SjJpGEAhpAJKHIW6ZMkKzMHIhG)2VLSzX6Wb2SzXc90oE0GpaHz9E4eIS4s5s5og5sbm3)A7amyiVl3Trg4oMYGmDkGHlCCht5Gqa3XS3XOpCChZEhJ(WXzyr4bChtrWb45ogmk4sX4oM8jnj44mNEYhjzUfYDm7Dm6dh3XhpAKpPjbhN50t(ijZTqHyTFztrE3z)1cJ(PaStdmxiZm7VZ85m4okb)1cJ(PamBW(Rfg9tbycjKzMTES)lB9E0nVSE2GbVak5VhDZlR3S5czMz)DMpNb3rjGfYIcygdygfHnyYy2VZwVhDZlR3CHmZmyA9WaK)E0zZfYmZya0DMRrz2bcbU8cXDmBybSXl3XGrbxk3XS3XOpCCMYbHaUJXOFkyNq(pfWDmgSVnM0L7ymyFBmP7iztrgfWLYDmfapu8XZhYLYDmNEt4f(WXD86955ch3X0)cCPBpx44og3(IIWfoUuUuUJP)f4s5ch3X42xueUWXLYLYDmpclwiS3xuo4ch3X42xueUWXLYLYDmZNnGlCChJBFrr4chxkxk3XS(SPiVlx44og3(IIWfoUuUuUJjCucP)f4s5ch3X42xueUWXLYLYDmYDkZBNqUWXDmU9ffHlCCPCPChZ8waUWXDmU9ffHlCCPCPCPChZJGTfSFztrgfWD8FT4oMbmf5DHJdcbChJW(D5oMcGhk(ChJh6YDmfapu8HH3LYD8KdpeYaWW24Zb3Xi8ChpYD6J83JUj73L7ykaEO4dtVl9JCXbUuUJNezu4gVjzo5ChZ(9w8VnUWbGh6KF)tSa8CNG747oo4yqMofWGXDB4ZDmYfHYzm6NHc45Un85oM97T4FBC5obxkxk3XJYDB4VLBp(CPC5c \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 1a4a555..57173f5 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -14,19 +14,27 @@ local function getItemName(slot) end local function getItemType(slot) if (slot == nil) then return nil end - return select(6, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(6, GetItemInfo(itemLink)) end local function getItemSubtype(slot) if (slot == nil) then return nil end - return select(7, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(7, GetItemInfo(itemLink)) end local function getItemLevel(slot) if (slot == nil) then return nil end - return select(4, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(4, GetItemInfo(itemLink)) end local function getItemValue(slot) if (slot == nil) then return nil end - return select(11, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(11, GetItemInfo(itemLink)) end local function getItemQuantity(slot) if (slot == nil) then return nil end @@ -34,15 +42,21 @@ local function getItemQuantity(slot) end local function getItemQuality(slot) if (slot == nil) then return nil end - return select(3, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(3, GetItemInfo(itemLink)) end local function getItemEquipLocation(slot) if (slot == nil) then return nil end - return select(9, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(9, GetItemInfo(itemLink)) end local function getItemIcon(slot) if (slot == nil) then return nil end - return select(10, GetItemInfo(getItemLink(slot))) + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(10, GetItemInfo(itemLink)) end @@ -50,10 +64,11 @@ local doLoot = function(slot) aura_env.debugLog("Looting slot: " .. slot) LootSlot(slot) - local itemIcon = getItemIcon(slot) - local itemName = getItemName(slot) - local itemQuantity = getItemQuantity(slot) - local itemQuality = getItemQuality(slot) + local itemIcon = getItemIcon(slot) or 134400 + local itemName = getItemName(slot) or "Unknown" + itemName = itemName:gsub("\n", ", ") + local itemQuantity = getItemQuantity(slot) or 1 + local itemQuality = getItemQuality(slot) or 0 aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" @@ -84,7 +99,9 @@ local goldFilter = { if (self.enabled) then aura_env.debugLog("Gold filter; slot: " .. slot) local itemName = getItemName(slot) - if (itemname and itemName:match("%d+ (Gold|Silver|Copper)")) then + -- I guess it does not support OR in regex? + -- itemName:match("%d+ ((Gold)|(Silver)|(Copper))") + if (itemname and itemName:match("%d+ Gold") or itemName:match("%d+ Silver") or itemName:match("%d+ Copper")) then aura_env.debugLog("Gold filter pass") return true end @@ -187,7 +204,7 @@ local greyValueFilter = { if (self.enabled) then aura_env.debugLog("Grey value filter; slot: " .. slot) local itemQuality = getItemQuality(slot) - if (itemQuality > 0) then + if (itemQuality and itemQuality > 0) then local itemValue = getItemValue(slot) if (self.applyThresholdToItemStack) then @@ -277,6 +294,20 @@ local arguniteFilter = { end end } +local ancientManaFilter = { + enabled = true, + qualityThreshold = 1, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Ancient mana filter; slot: " .. slot) + local itemName = getItemName(slot) + if (itemName and itemName:match("Ancient Mana")) then + aura_env.debugLog("Ancient mana filter pass") + return true + end + end + end +} aura_env.filterService = { filters = { @@ -290,14 +321,14 @@ aura_env.filterService = { questItemFilter, classGearFilter, azeriteFilter, - arguniteFilter + arguniteFilter, + ancientManaFilter }, slotsToLoot = {}, run = function(self, lootInfo) self.slotsToLoot = {} for slot, item in pairs(lootInfo) do aura_env.debugLog("Loot slot: " .. slot .. " " .. item.item) - aura_env.debugLog(getItemSubtype(slot)) self:runFilters(slot) end @@ -312,6 +343,7 @@ aura_env.filterService = { runFilters = function(self, slot) for k, filter in pairs(self.filters) do if (filter:filter(slot)) then + -- Might be good to, instead of just adding slot to a list, add an object with info about the item and the slot containing it so each filter can dictate the item name and icon self.slotsToLoot[#self.slotsToLoot + 1] = slot return end From e32f26ffadb5bd2e9b7f4b307ed6a59d808b5478 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 14:03:17 +0200 Subject: [PATCH 18/44] Add recipe filer --- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index 3ec34ea..08d652e 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dqLkXbGii9iOkOUeufKrPOCkfvRcve1RqfrMLk6wQq7cbgMk4yqvTmLsvpdrbttPeDnqrvBdQc5BOIqJdrH6CqvOwNIO8oLsO7PG9Hkc(hOOIoOcrlevK8qqrMiIIUOIOAJGc(iOknsqvDsLIwjiVerHyMiQUPsjTtLs5NkImuOk6OGcTuurQNQqnvqLRIOqARkLkFvHWzvkb9weAUqvG7Ii7fv6VOIAWYHvvlwr4XOutgvDzGnJs(SI0ObLoneRwPe41qvA2k52qLDRs)wvgoc64GIYYrXZHY0r66kvBxH03vkmEqvCEuH1dkQ07ruQ5dkQW9ruY(P5Ipx44o(ZfoUuUJX4oE7jaMNa83(J4dZFCkE8wIhHhXgF8yUJXXDmp3X8CHJ7y4zsSyHbOC32roXT8a3XCmjwSWauUBdMNmCG74pBkYOa4yqMofWS1hpG72oI)bUJXi8ZgWDBh4og5sbm3)A7amyiVl3Trg4ogdSyHNpKlL7y4MeEs(KddWXD8FHm9YDm5tomah3XWcqMclLlmSLW8hid4rhid4XB)2tgidCICI4XBpxwh3s8iUJxVppx44og5oL5Ttix44og3(IIWfoUuUuUJP)f4s5ch3X42xueUWXLYLYDm9Vax62ZfoUJXTVOiCHJlLlL74DmaNzV(yyCNG7yMpBax44og3(IIWfoUuUuUJzElax44og3(IIWfoUuUuUJjCucP)f4s5ch3X42xueUWXLYLYDmRpBkY7YfoUJXTVOiCHJlLlL7yEewSqyVVOCWfoUJXTVOiCHJlLlLlL74)fb3Nc4YP4oMbmf5DHJdcbChZZX9JdH9uM3oHChdGhc)xEap3j4ogHN74rUtFK)EuUJ3aHNclxyylH5pqgWJoGpNiN4wsgdZVL4VLBjxwh3s8iUJ5rW2c2VSPiJc4o(VwChF3XbhdY0PagmUBdFUJrUiuoJr)muap3THp3XugKPtbmCHJ7ymyFBmPl3XyW(2ys3rYMImkGlLlL7y2CHJ72WNlCChtbWdfFy4DPJrG5c4UTT)a3XF2uKrbWXGmDkGzRpEa3TDe)dCh)ztrExmUWXDmg9Zq5ch3X8poJdGH9Nc4obxk3Xixekx44oM)Xz27y0hoUCkUJzVJrF44oE9y)xgpyI9P2GX6VWacTES)ldH97sMiyeU(CqM7mFkY7AdgzqiHoE0qOaCB7JdCAiuaoYrU490qOaCW4(FHq540qOaCKdgfSoneka3wrUKdgfSonekahCCqi40qOaCJ3NaooieCIqb4gt)SXlm92V0tdHcWn5WSDecj)X(0qOaCWbGh6od40WaRfEYGWgCASxFmSnjZtdBFc2Rpg2MK5PnbYLhooieCcGhc)S3KmpnmaDtY80qWGjMplkYDkNg8NcUuBWGxaDtka3MxwVzyRhDUqhpAR3JUj7390wVhDBFCGtB9EuyC)FPiuoon27mmGlBo2KmpT17rHX9)cHYXPTESXlG)0qWGXDagDtka3PbZ2by0njZtdbBKSPiJcSbdEbuYFp641JU5L1Bg26rNl0XJg5ix8AypCakcoaMX)ay29rTnEm4vO1J9FzS2VSPiVRnfq3KcWroYfVZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZmgaDN5AWlGs(7rhVEuYrU4Dg26rNle4Yl06X(Vmw7x2uK31McOBsb422hhyg26rNlKzMHWYMHTEuByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZ2(tdEbuYFp641JU5L1Bg26rNpxiWLxO1J9FzS2VSPiVRnfq3KcWbhhecMHTE05czMziSSzyRh1ggSlYAUrHfCngaDN5AxKLbU8czMzRh7)YqOaCKJCXRnytb0nPaCKJCX7mS1JoxiZmdHLndHcWroYfV2WGDrwZnkSGRXaO7mx7ISmWLxiZmJbq3zUggybytNHhDAWlGUjfGBZlR3mekah5ix8oFUqGlVqRh7)YyTFztrExBkGUjfGB8(euoiemdB9OZfYmZqyzZWwpQnmyxK1CJcl4Ama6oZ1UildC5fYmZwp2)LHqb4ih5IxBWMcOBsb4ih5I3zyRhDUqMzgclBgcfGJCKlETHb7ISMBuybxJbq3zU2fzzGlVqMzgdGUZCnmWcWMoJt80GxaDtka3MxwVziuaoYrU4D(CHaxEHwp2)LXA)YMI8U2uaDtkah5GrbRzyRhDUqMzgclBg26rTHb7ISMBuybxJbq3zU2fzzGlVqMz26X(Vmekah5ix8Ad2uaDtkah5ix8odB9OZfYmZqyzZqOaCKJCXRnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zB5PbVa6MuaUnVSEZqOaCKJCX785cbU8cTES)lJ1(Lnf5DTPa6MuaUT7V2bZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZS1J9FziuaoYrU41gSPa6MuaoYrU4Dg26rNlKzMHWYMHqb4ih5IxByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZWh)tdEb0nPaCBEz9MHqb4ih5I35ZfcC5fA9y)xgR9lBkY7Atb0nPaCW4()srOCmdB9OZfYmZqyzZWwpQnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zKHtdEbuYFp641JU5L1Bg26rNpxiWLxO1J9FzS2VSPiVRnfq3KcWbJ7)fcLJzyRhDUqMzgclBg26rTHb7ISMBuybxJbq3zU2fzzGlVqMz26X(Vmekah5ix8Ad2uaDtkah5ix8odB9OZfYmZqyzZqOaCKJCXRnmyxK1CJcl4Ama6oZ1UildC5fYmZya0DMRHbwa20zKHtdEb0nPaCBEz9MHqb4ih5I35ZfcC5fA9y)xgR9lBkY7Atb0nPaCtomBhHqYFS)uK3Dg26rNlKzMHWYMHTEuByWUiR5gfwW1ya0DMRDrwg4YlKzMTES)ldHcWroYfV2Gnfq3KcWroYfVZWwp6CHmZmew2mekah5ix8Add2fzn3OWcUgdGUZCTlYYaxEHmZmgaDN5AyGfGnDgE8PbVa6MuaUnVSEZqOaCKJCX785cbU8cTES)lJ1(Lnf5DTPa6MuaUnz)UZWwp6CHmZmew2mS1JAdd2fzn3OWcUgdGUZCTlYYaxEHmZS1J9FziuaoYrU41gSPa6MuaoYrU4Dg26rNlKzMHWYMHqb4ih5IxByWUiR5gfwW1ya0DMRDrwg4YlKzMXaO7mxddSaSPZW)WPbVa6MuaUnVSEZqOaCKJCX785cbU8cjKqRh7)Y4FK)EuBWyTFztrE3zyRhDUqMz2FN5ZzWDuc4btSpL830zOK)EuK7udB9OtMHAeqGHTE05czMzK)E0XRhDg26rNlKqMz26X(Vmeka3MSFxBWMcOBsb42K97odB9OZThJHpzyl3YdheYmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE052JXqjJEX79TXfviZmdHcWTTpoGnyiuaUT9XbMSPy7tmdfp4IEAONg6CHmZS1J9FziuaoyC)FPiuoSbBkGUjfGdg3)xkcLJzyRhDU9ym8fYmZwp2)LHqb4GX9)cHYHnytb0nPaCW4(FHq5yg26rNBpg7GqczMz)DMpNb3rjGhmX(uYFtNHsMm)nqUtne2VRX6XyOgbeyiuaUT9XbmciWqTnqOWAWS9)cHYHHAeqGHqb4GX9)cHYXCHmZS1J9Fz3poWiqOWctV1JXgS)oZNZG7OeaZ2)lekhW0B9yWiIqb4GX9)cHYHXjz4tYiGadLiQrabgcfGBBFCaJacmus4b4V9BjdQqMz26X(VS7hhyeiuyHX9)LIq5WgS7hhyeiuyHP36XyeqGHAWdQrabgcfGdg3)xkcLdHeYmZ(7mFodUJsapyI9PK)ModDKyyitVi3P29JdGAeqGD)4aJaHclmU)VuekhZfYmZ(7mFodUJsWFTWOFkaJiE4)oZNZG7Oe8xlm6NcWmojdFs2Gr2czMzMzggSVnSbJYSdofYmZmZm2W(Vtb82Grz2bNczMzMzgYLhap2GbVakCi4aZMFkKzMzMzmaShd1gmkZo4uiHmZmZmdH97AdgcfGBt2V7PqMzMzMD)4a2GD)4aJaHclmU)VuekhNczMzMz2h3B)sTbdHcWbJ7)lfHYXPqczMzMzgHmVPmamm44GqGnyOueCaE0tHmZmZmdapeIW8PiVlCi4a2GbVakCi4aZMBCsgc73LmrWiC95Gm3z(uK39uiZmZmZ43z(uK31gme2VlzIGr46ZbzUZ8PiV7PqMzMzM93Pp4JWdSbJYSdofYmZilHaxEHesO1J9FztFlEyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZqH33I3yHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE05czMzMzMzMD8OTPnDhGHziuJ)bWS7JAy7es4JHAtItBixJbmfapWCkKzMzMzMz2XJgcfGBBFCGjd3NYg2zO4H45KSzZG33IFomhWCmBmYAuaZCyoG5ygm9iKqaZ85OZfYmZmZmZmdHLndHcWD)4a2)YBiuaUT9XbMmCFkByNHIhINtYG33IhDU9ymeka32(4atgUpLnSZqXdXZjzJrwJcyqNBpgdHcWTTpoWKH7tzd7mu8q8Csgm9iKqad685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6mu49T4nwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4Ylezj06X(VShdpGHtdWE7mSbyWaYIcySbJSfYmZa3)elaVnyuMDWPqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHYPbyVDg2aJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGBBFCaBWMcOBsb422hhyg26rNlKzMzMzMzgclBgcfGBBFCa7F5neka32(4atgUpLnSZqNedpGX40aS3odBag685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0jXWdymga2BNHnWyHSOagJWpgg6CHmZmZmZmZmZmgaDN5AuMDGqMzMzMzMzGlVqMzMzMbU8czMzGlVqKLqRh7)YW92Vuyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZq36B)snwilkGzlAyRhDYmuJacmS1JoxiZmZmZmZS1J9Fziuao44GqGnytb0nPaCWXbHGzyRhDUqMzMzMzMziSSziuao44GqG9V8gcfGdooieyddg6wF7xk6CJcl4kKzMzMzMzMzM93z(CgChLaEWe7tj)nDg6wF7xQXczrbmgHFmm05czMzMzMzMzMzma6oZ1Om7aHmZmZmZmZaxEHmZmZmdC5fYmZaxEHilHwp2)LHSgDbdilkGXgmYwiZmdC)tSa82Grz2bNczMziRrxWbldad23I3gmYyY4dNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg6MKp6YyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4ihmkyzd2uaDtkah5GrbRzyRhDUqMzMzMzMziSSziuaoYbJcw2)YBiuaoYbJcwgNGHbwSiazn6coyzayW(w8ZnkSGRqMzMzMzMzMz2FN5ZzWDuc4btSpL830zOBsb4SfyuWYyHSOagJWpgg6CHmZmZmZmZmZmgaDN5AuMDGqMzMzMzMzGlVqMzMzMbU8czMzGlVqKLqRh7)YiK5XcGHH8UWaYIcySbJSfYmZa3)elaVnyuMDWPqMzgSaMjWSbJYSdofYmZyVEuyTbJ1FHbofYmZEmaBWy9xyGtHmZSf4tHfWydgR)cdCkKzMX(9WlYDQnyS(lmWPqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHINmpwammK31yHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GJdcb2Gnfq3KcWbhhecMHTE05czMzMzMzMHWYMHqb4GJdcb2)YBiuao44GqGnmyOWX85by4fzTqNBuybxHmZmZmZmZmZS1J9FziuaUX7tq5GqGnytb0nPaCJ3NGYbHGzyRhDUqMzMzMzMzMzgclBgcfGB8(euoiey)lVndHcWnEFckhecSHbdf(aMjqT)L3WalwealGzcS5czMzMzMzMzMzpgBgcfGB8(euoieyddgk5GpfwadQ9V8ggyXIGf4tHfWmxiZmZmZmZmZm7XyZqOaCJ3NGYbHaByWqHP1JclQ9V8ggyXIa2Rhf25czMzMzMzMzMzpgBgcfGB8(euoieyddg6KyaO2)YByGflcEmG5czMzMzMzMzMzpgBgcfGB8(euoieyddgkm9E4f5of1(xEddSyra73dVi3PZNBuybxHmZmZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6mu8K5XcGHH8UglKffWye(XWqNlKzMzMzMzMzMzMzma6oZ1Om7aHmZmZmZmZmZmWLxiZmZmZmZmWLxiZmZmZaxEHmZmWLxiYsO1J9FzJ(x7ayazrbm2Gr2czMzG7FIfG3gmkZo4uiZmB0)AhahSmamyFlEBWidW8gNSH)HdgNSH)HdNczMzFcjCXbCWYaWG9T4H7TjfGBm9ZgV2GX6VWaNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg629x7aJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGB7(RDGnytb0nPaCB3FTdMHTE05cjKzMzMzMzgclBggyXIGpHeU4aoyzayW(w8W92KcWnM(zJ35gfwWviZmZmZmZmZmB9y)xgcfGdg3)xkcLdBWMcOBsb4GX9)LIq5yg26rNlKzMzMzMzMzM93z(CgChLaEWe7tj)nDgkCWcyagaEqWOgQrabgcfGdg3)xkcLdJacmudHcWHzixdB9OgQrabg26rNlKzMzMzMzMzMHqb42U)AhydgcfGB7(RDGXjBiuaoyC)FPiuoeYmZmZmZmdC5fsiZmZmZmZmew2meka329x7a7F5neka329x7aJtWWalwem6FTdGdwgagSVf)CJcl4kKzMzMzMzMzM93z(CgChLaEWe7tj)nDg629x7aJfYIcymc)yyOZfYmZmZmZmZmZya0DMRrz2bczMzMzMzMbU8czMzMzg4YlKzMbU8crwcTES)lBkdGJT7V2bWaYIcySbJSfYmZa3)elaVnyuMDWPqMz2XJ2ya1OWYaWG9T4n6Zoy0NTEpQ9xlBkdGdmHmZSr)RDaCWYaWG9T4TbdM34Kn8pCW4Kn8pC4uiZm7tiHloGdwgagSVfpCVnPaCJPF241gmw)fg4uiZmJfYIcySbJ1(Lnf5DNHbwSonS1JoxiZmZmZqyzZWalweaU)jwa(5gfwWviZmZmZmZS)oZNZG7OeWdMyFk5VPZqHxgah2O)1oWyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GX9)cHYHnytb0nPaCW4(FHq5yg26rNlKzMzMzMzgclBgcfGdg3)lekh2)YBiuaoyC)VqOCyCc2H5gfwWviZmZmZmZmZmB9y)xgcfGB7(RDGnytb0nPaCB3FTdMHTE05cjKzMzMzMzMzMHWYMHbwSi4tiHloGdwgagSVfpCVnPaCJPF24DUrHfCfYmZmZmZmZmZmZS1J9FziuaoyC)FPiuoSbBkGUjfGdg3)xkcLJzyRhDUqMzMzMzMzMzMzM93z(CgChLaEWe7tj)nDgkCWcyagaEqWOgQrabgcfGdg3)xkcLdJacmudHcWHzixdB9OgQrabg26rNlKzMzMzMzMzMzMziuaUT7V2b2GHqb42U)AhyCYgcfGdg3)xkcLdHmZmZmZmZmZmWLxiHmZmZmZmZmZmew2meka329x7a7F5neka329x7aJtWWalwem6FTdGdwgagSVf)CJcl4kKzMzMzMzMzMzMz)DMpNb3rjGhmX(uYFtNHcVmaoSr)RDGXczrbmgHFmm05czMzMzMzMzMzMzgdGUZCnkZoqiZmZmZmZmZmdC5fYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)xgmBhGr3KcWbdilkGXgmYwiZmdC)tSa82Grz2bNczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDgkmUdWOgcfGZyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb4GJdcb2Gnfq3KcWbhhecMHTE05czMzMzMzMTES)ldHcWnEFckhecSbBkGUjfGB8(euoiemdB9OZfYmZmZmZmdHLndHcWbhhecS)L3qOaCJ3NGYbHa7F5nekahCCqiWggmeka349jOCqiWggmuyChGrrNBuybxHmZmZmZmZmZS)oZNZG7OeWdMyFk5VPZqHXDag1qOaCglKffWye(XWqNlKzMzMzMzMzMXaO7mxJYSdeYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)xg71hddEbFgyazrbm2Gr2czMzG7FIfG3gmkZo4uiZmdzn6coyzayW(w82GrgF4WPqMzgmB)VqOCahSmamyFlEBW2(tHmZmwilkGXgmw7x2uK3DggyX60Wwp6CHmZmZmdHLnddSyra4(Nyb4NBuybxHmZmZmZmZ(7mFodUJsapyI9PK)ModfMwFmmBk4ZySqwuaZw0Wwp6KzOgbeyyRhDUqMzMzMzMzRh7)YqOaCWXbHaBWMcOBsb4GJdcbZWwp6CHmZmZmZmZwp2)LHqb4MCy2ocHK)yBd2uaDtka3KdZ2riK8h7pf5DNHTE05czMzMzMzMHWYMHqb4GJdcb2WGHosgCpguHmZmZmZmZEmgcfGdooieyddg6iaFcFxuHmZmZmZmZEmgcfGBYHz7ies(JTnmyOBUTTdUTq8CY5mmS52G3jNtJkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoNHJtV52iJm5WHkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoNHjYN0ijJGkKzMzMzMz2JXqOaCtomBhHqYFSTHbdDZTTDWTfINtoN32KdtKrqNBuybxHmZmZmZmZmZS1J9FziuaoYbJcw2Gnfq3KcWroyuWAg26rNlKzMzMzMzMzMTES)ldHcWbJ7)fcLdBWMcOBsb4GX9)cHYXmS1JoxiZmZmZmZmZmB9y)xgc2KdZ2riKW)elGny)DMpNb3rjadViRfgrmWcWMoJmCAKrViuyA9XWMHs46ZbGbD(CseX2NGYbHas2WGHVqczMzMzMzMzMziSSziytomBhHqc)tSa2)YBiuaoYbJcwgNGHbwSiazn6coyzayW(w82)YBiuaoyC)VqOCyCcggyXIay2(FHq5aoyzayW(w8ZnkSGRqMzMzMzMzMzMzM93z(CgChLaEWe7tj)nDgkmT(yy2uWNXyHSOagJWpgg6CHmZmZmZmZmZmZmJbq3zUgLzhiKzMzMzMzMzMbU8czMzMzMzMbU8czMzMzg4YlKzMbU8crwcTES)l7dZfWGqbWaYIcySbJSfYmZa3)elaVnyuMDWPqMzgYA0fCWYaWG9T4TbJm(WHtHmZmy2(FHq5aoyzayW(w82GT9NczMzSqwuaJnyS2VSPiV7mmWI1PHTE05czMzMzgclBggyXIaW9pXcWp3OWcUczMzMzMzM93z(CgChLaEWe7tj)nDg6iH5cyqOaJfYIcy2Ig26rNmd1iGadB9OZfYmZmZmZmB9y)xgcfGdooieyd2uaDtkahCCqiyg26rNlKzMzMzMz26X(Vmeka349jOCqiWgSPa6MuaUX7tq5GqWmS1JoxiZmZmZmZS1J9FziuaoyC)VqOCyd2uaDtkahmU)xiuoMHTE05czMzMzMzMHWYMHqb4GJdcb2)YBiuaUX7tq5GqG9V8gcfGdg3)lekh2)YBiuao44GqGnmyOW07ITJ7pXcGA)lVHqb4gVpbLdcb2WGHojkSagu7F5nekahmU)xiuomobd)5gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0rcZfWGqbglKffWye(XWqNlKzMzMzMzMzMXaO7mxJYSdeYmZmZmZmdC5fYmZmZmWLxiZmdC5fISeA9y)x2Nz6(fHcGbKffWydgzlKzMbU)jwaEBWOm7GtHmZmy2(FHq5aoyzayW(w82GH)PqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHosMP7xekWyHSOaMTOHTE0jZqnciWWwp6CHmZmZmZmZwp2)LHqb422hhWgSPa6MuaUT9XbMHTE05czMzMzMzMTES)ldHcWbJ7)fcLdBWMcOBsb4GX9)cHYXmS1JoxiZmZmZmZmew2meka32(4a2)YBiuaoyC)VqOCy)lVHqb422hhyYW9PSHDg6izMUFrOa052)YBiuaoyC)VqOCyCcggyXIay2(FHq5aoyzayW(w8ZnkSGRqMzMzMzMzMz2FN5ZzWDuc4btSpL830zOJKz6(fHcmwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4Ylezj06X(VS)Lnc4s36)(HbKffWydgzlKzMbU)jwaEBWOm7GtHmZmy2(FHq5aoyzayW(w82GH)PqMzglKffWydgR9lBkY7oddSyDAyRhDUqMzMzMHWYMHbwSiaC)tSa8ZnkSGRqMzMzMzMz)DMpNb3rjGhmX(uYFtNHoYlBeWLA4(3VXczrbmBrdB9OtMHAeqGHTE05czMzMzMzMTES)ldHcWTTpoGnytb0nPaCB7JdmdB9OZfYmZmZmZmdHLndHcWTTpoG9V8gcfGBBFCGjd3NYg2zOJ8YgbCP2w)3p685gfwWviZmZmZmZmZm7VZ85m4okb8Gj2Ns(B6m0rEzJaUud3)(nwilkGXi8JHHoxiZmZmZmZmZmJbq3zUgLzhiKzMzMzMzg4YlKzMzMzGlVqMzg4YlezjKq)DMpNb3rjGfYIcygdygfHnWgmYwiZmJfYIcyWSbJSfYmZmZSPVfpmGSOaMtHmZmZm7XWdy40aS3odBagmGSOaMtHmZmZmd3B)sHbKffWCkKzMzMziRrxWaYIcyofYmZmZmczESayyiVlmGSOaMtHmZmZmB0)AhadilkG5uiZmZmZMYa4y7(RDamGSOaMtHmZmZmdMTdWOBsb4GbKffWCkKzMzMzSxFmm4f8zGbKffWCkKzMzMzFyUagekagqwuaZPqMzMzM9zMUFrOayazrbmNczMzMz2)YgbCPB9F)WaYIcyeYmZiRtHmZmS1JIb3J83JAdgztwNczMzm7xBWyTFztrE3zyGfRtB9E0nVSEZfYmZmZmmWIfbyRhfdUh5Vh1gmYMSeYmZmZmwpgdB9ONgcfGZqUgHFegSzR3JU5L1BUX)eYmZmZmZm7VZ85m4okb8Gj2Ns(B6muYFpQHTE0jZqnciWWwpQrabgQHAeqGHqb4iaHcWnxiZmZmZmZmmWI1KXSFHbKffWGndB9OZfYmZmZmWLxiHmZmZm7VZ85m4okb8Gj2Ns(B6m0XRhfZOpB9E0jZqnciWWdJbwSiaB9OyW9i)9OZfYmZmZS)oZNZG7OeWdMyFk5VPZWalweGTEum4EK)E05czMzMzgRhJHydgEymWIfbyRhfdUh5Vh90W)0oIVX)eYmZmZmZmB9y)xg26rTbddSyra26rXG7r(7rjIqsiZmZmZmZS)oZNZG7OeWdMyFk5VPZqj)9Oi3Pg26rTziuaZN(yMpzgQrabg26rNlKzMzMzMzg)J83JodB9OZfYmZmZmWLxiZmdC5pfYmZy2VWaYIcyWSbJ1(Lnf5DNHbwSonS1JoxiZmZmZy9ym8EASqwuaJHCnc)imyZWalweWczrbmyZn(NqMzMzMzMziSSzSqwuaZKXczrbmZWwp685gfwWviZmZmZmZmZm74rBRitHLAtaSPVhVrFNgYfJc(82JLTfSJrTpppYDQHTEuJ(SVTqWON2NN3(x7nXwaGn12aHcRHCz9S)eVDQrHfyiuao7F5nkSadB9Og73L(rUi3Pgc1WEg4ZgwJfYIcym2)RXJWM(PaJclWqOaC29Jdy)lVHW(DfYmZmZmZmZmZWalweGTEum4EK)EuI4HXalweGTEum4EK)EuJtYWNKnyyRhviZmZmZmZmZmJbq3zUczMzMzMzMbU8czMzMzg4YlKzMbU8crwcj0FN5ZzWDuc4btSpL83uBWyTFztrE3zVj2cMlKzMHWYMXdMyF6CJcl4kKzMzMzeYGCPZGxafoeCGzZNlKzMzMzKjyu4EVfgNjZDCeo7nXwWCHmZmZmJqgKlD2CHmZmWLxiWLxiH(7mFodUJsagErwlmBWiBHmZSJhhXNHb5XiKzMreFs2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GD4uiZmZmZiIso4tHfWGsYgSdNczMzMzgr0T(rwOKSb7WPqMzMzMrefpxFkaLKny4FkKzMzMzerhdlcyXJHsYgm8pfYmZmZSJhhb4t47AJXlYAHjKzMzMzerN0fCe()lpG3gj8aWqjzdg(NczMzMzgru424De()lpG3gj8aWqjzdg(NczMzMzgruo1Bdmus2GH)PqMzMzMrefE3VyOKSbd)tHmZmZmJi6KUGJW)F5b82w)SbyOKSbd)tHmZmZmJikCB8oc))LhWBB9ZgGHsYgm8pfYmZmZmIO45Bb(m4Wqjzdg(NczMzMzgr0jDbhH))Yd4TXB8y4Xqjzdg(NczMzMzgru424De()lpG3gVXJHhdLKny4FkKzMzMzerhXNz66JmkadLKny4FkKzMzMzerht)JcWqjzdg(NczMzMzgruyabJAJa8j8DXqjzdg(NczMzMzgruY8pDkGbdLKny4FkKzMzMzerHjMhg2eVnWqjzdg(NczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD8iE(xFEKRqMzgXTNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKnyhofYmZmZmIOKd(uybmOKSb7WPqMzMzMreDRFKfkjBWoCkKzMzMzerXZ1Ncqjzdg(NczMzMzgr0XWIaw8yOKSbd)tHmZmZm74Xra(e(U2y8ISwyczMzMzgr0jDbhH))Yd4Trcpamus2GH)PqMzMzMrefUnEhH))Yd4Trcpamus2GH)PqMzMzMreLt92adLKnyhofYmZmZmIOW7(fdLKnyhofYmZmZmIOt6coc))LhWBB9ZgGHsYgm8pfYmZmZmIOWTX7i8)xEaVT1pBagkjBWW)uiZmZmZiIINVf4ZGddLKny4FkKzMzMzerN0fCe()lpG3gVXJHhdLKny4FkKzMzMzerHBJ3r4)V8aEB8gpgEmus2GH)PqMzMzMreDeFMPRpYOamus2GD4uiZmZmZiIoM(hfGHsYgSdNczMzMzgruyabJAJa8j8DXqjzd2HtHmZmZmJikz(NofWGHsYgSdNczMzMzgruyI5HHnXBdmus2GD4uiZmZmZiIoI)LhdLKnyhofYmZiRtHmZSJhH)(LcyeYmZisgizdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWoCkKzMzMzer36hzHsYgm8pfYmZmZmIO456tbOKSb7WPqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgm8pfYmZmZmIOCQ3gyOKSbd)tHmZmZmJik8UFXqjzdg(NczMzMzgr0jDbhH))Yd4TT(zdWqjzd2HtHmZmZmJikCB8oc))LhWBB9ZgGHsYgSdNczMzMzgru88TaFgCyOKSbd)tHmZmZmJi6KUGJW)F5b824nEm8yOKSbd)tHmZmZmJikCB8oc))LhWBJ34XWJHsYgm8pfYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GH)PqMzMzMrefgqWO2iaFcFxmus2GH)PqMzMzMreLm)tNcyWqjzdg(NczMzMzgruyI5HHnXBdmus2GH)PqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpYPFt3bczMze3ss2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GD4uiZmZmZiIso4tHfWGsYgm8pfYmZmZmIOB9JSqjzd2HtHmZmZmJikEU(uakjBWoCkKzMzMzerhdlcyXJHsYgSdNczMzMz2XJJa8j8DTX4fzTWeYmZmZmIOt6coc))LhWBJeEayOKSbd)tHmZmZmJikCB8oc))LhWBJeEayOKSb7WPqMzMzMreLt92adLKnyhofYmZmZmIOW7(fdLKnyhofYmZmZmIOt6coc))LhWBB9ZgGHsYgm8pfYmZmZmIOWTX7i8)xEaVT1pBagkjBWoCkKzMzMzerXZ3c8zWHHsYgSdNczMzMzgr0jDbhH))Yd4TXB8y4Xqjzdg(NczMzMzgru424De()lpG3gVXJHhdLKnyhofYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GD4uiZmZmZiIcdiyuBeGpHVlgkjBWW)uiZmZmZiIsM)PtbmyOKSbd)tHmZmZmJikmX8WWM4TbgkjBWoCkKzMzMzerhX)YJHsYgSdNczMzK1PqMz2XJ4jdcaJkKzMreMNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKny4FkKzMzMzerjh8PWcyqjzd2HtHmZmZmJi6w)ilus2GD4uiZmZmZiIINRpfGsYgSdNczMzMzgr0XWIaw8yOKSb7WPqMzMzMD84iaFcFxBmErwlmHmZmZmJi6KUGJW)F5b82iHhagkjBWoCkKzMzMzerHBJ3r4)V8aEBKWdadLKnyhofYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWoCkKzMzMzerHBJ3r4)V8aEB8gpgEmus2GD4uiZmZmZiIoIpZ01hzuagkjBWoCkKzMzMzerht)JcWqjzdg(NczMzMzgruyabJAJa8j8DXqjzd2HtHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWW)uiZmJSofYmZoEKmbFkSgzKlYuyPczMzeXJizdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWoCkKzMzMzer36hzHsYgSdNczMzMzgru8C9Paus2GH)PqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgm8pfYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzdg(NczMzMzgru88TaFgCyOKSbd)tHmZmZmJi6KUGJW)F5b824nEm8yOKSbd)tHmZmZmJikCB8oc))LhWBJ34XWJHsYgm8pfYmZmZmIOJ4ZmD9rgfGHsYgSdNczMzMzgr0X0)Oamus2GD4uiZmZmZiIcdiyuBeGpHVlgkjBWoCkKzMzMzerjZ)0Pagmus2GD4uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD84yy)4(xHmZmICIKSbJSfYmZmZSJhhjdUhJngViRfMqMzMzMrefMwpkSOKSb7WPqMzMzMreLCWNclGbLKnyhofYmZmZmIOB9JSqjzdg(NczMzMzgru8C9Paus2GD4uiZmZmZiIogweWIhdLKny4FkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgm8pfYmZmZmIOWTX7i8)xEaVns4bGHsYgSdNczMzMzgruo1Bdmus2GD4uiZmZmZiIcV7xmus2GD4uiZmZmZiIoPl4i8)xEaVT1pBagkjBWW)uiZmZmZiIc3gVJW)F5b82w)SbyOKSb7WPqMzMzMrefpFlWNbhgkjBWoCkKzMzMzerN0fCe()lpG3gVXJHhdLKnyhofYmZmZmIOWTX7i8)xEaVnEJhdpgkjBWoCkKzMzMzerhXNz66JmkadLKnyhofYmZmZmIOJP)rbyOKSbd)tHmZmZmJikmGGrTra(e(UyOKSbd)tHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpU1)uGqMzgrYys2Gr2czMzMz2XJJKb3JXgJxK1ctiZmZmZiIctRhfwus2GH)PqMzMzMreLCWNclGbLKnyhofYmZmZmIOB9JSqjzd2HtHmZmZmJikEU(uakjBWoCkKzMzMzerhdlcyXJHsYgSdNczMzMz2XJJa8j8DTX4fzTWeYmZmZmIOt6coc))LhWBJeEayOKSb7WPqMzMzMrefUnEhH))Yd4Trcpamus2GD4uiZmZmZiIYPEBGHsYgSdNczMzMzgru4D)IHsYgSdNczMzMzgr0jDbhH))Yd4TT(zdWqjzd2HtHmZmZmJikCB8oc))LhWBB9ZgGHsYgSdNczMzMzgru88TaFgCyOKSb7WPqMzMzMreDsxWr4)V8aEB8gpgEmus2GH)PqMzMzMrefUnEhH))Yd4TXB8y4Xqjzd2HtHmZmZmJi6i(mtxFKrbyOKSb7WPqMzMzMreDm9pkadLKny4FkKzMzMzerHbemQncWNW3fdLKnyhofYmZmZmIOK5F6uadgkjBWW)uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSbd)tHmZmY6uiZm74Xr8zwp24viZmJiEmjBWiBHmZmZm74XrYG7XyJXlYAHjKzMzMzerHP1JclkjBWW)uiZmZmZiIso4tHfWGsYgSdNczMzMzgr0T(rwOKSb7WPqMzMzMrefpxFkaLKnyhofYmZmZmIOJHfbS4Xqjzd2HtHmZmZm74Xra(e(U2y8ISwyczMzMzgr0jDbhH))Yd4Trcpamus2GD4uiZmZmZiIc3gVJW)F5b82iHhagkjBWoCkKzMzMzer5uVnWqjzd2HtHmZmZmJik8UFXqjzd2HtHmZmZmJi6KUGJW)F5b82w)SbyOKSb7WPqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWW)uiZmZmZiIc3gVJW)F5b824nEm8yOKSb7WPqMzMzMreDeFMPRpYOamus2GD4uiZmZmZiIoM(hfGHsYgm8pfYmZmZmIOWacg1gb4t47IHsYgSdNczMzMzgruY8pDkGbdLKny4FkKzMzMzerHjMhg2eVnWqjzd2HtHmZmZmJi6i(xEmus2GH)PqMzgzDkKzMD84wFx8kKzMre)dKSbJSfYmZmZSJhhjdUhJngViRfMqMzMzMrefMwpkSOKSb7WPqMzMzMreLCWNclGbLKny4FkKzMzMzer36hzHsYgSdNczMzMzgru8C9Paus2GH)PqMzMzMreDmSiGfpgkjBWW)uiZmZmZoECeGpHVRngViRfMqMzMzMreDsxWr4)V8aEBKWdadLKny4FkKzMzMzerHBJ3r4)V8aEBKWdadLKnyhofYmZmZmIOCQ3gyOKSb7WPqMzMzMrefE3VyOKSb7WPqMzMzMreDsxWr4)V8aEBRF2amus2GH)PqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GH)PqMzMzMreDsxWr4)V8aEB8gpgEmus2GH)PqMzMzMrefUnEhH))Yd4TXB8y4Xqjzd2HtHmZmZmJi6i(mtxFKrbyOKSb7WPqMzMzMreDm9pkadLKny4FkKzMzMzerHbemQncWNW3fdLKny4FkKzMzMzerjZ)0Pagmus2GD4uiZmZmZiIctmpmSjEBGHsYgSdNczMzMzgr0r8V8yOKSb7WPqMzgzDkKzMD8izYSJWlKzMreF8jzdgzlKzMzMzhposgCpgBmErwlmHmZmZmJikmTEuyrjzd2HtHmZmZmJik5GpfwadkjBWW)uiZmZmZiIU1pYcLKnyhofYmZmZmIO456tbOKSb7WPqMzMzMreDmSiGfpgkjBWoCkKzMzMzhpocWNW31gJxK1ctiZmZmZiIoPl4i8)xEaVns4bGHsYgSdNczMzMzgru424De()lpG3gj8aWqjzd2HtHmZmZmJikN6TbgkjBWoCkKzMzMzerH39lgkjBWoCkKzMzMzerN0fCe()lpG326NnadLKny4FkKzMzMzerHBJ3r4)V8aEBRF2amus2GD4uiZmZmZiIINVf4ZGddLKny4FkKzMzMzerN0fCe()lpG3gVXJHhdLKnyhofYmZmZmIOWTX7i8)xEaVnEJhdpgkjBWoCkKzMzMzerhXNz66JmkadLKnyhofYmZmZmIOJP)rbyOKSbd)tHmZmZmJikmGGrTra(e(UyOKSbd)tHmZmZmJikz(NofWGHsYgm8pfYmZmZmIOWeZddBI3gyOKSb7WPqMzMzMreDe)lpgkjBWoCkKzMrwNczMzhpsMaCVRb)9lfWiKzMre)TNKnyKTqMzMzMD84izW9ySX4fzTWeYmZmZmIOW06rHfLKnyhofYmZmZmIOKd(uybmOKSbd)tHmZmZmJi6w)ilus2GD4uiZmZmZiIINRpfGsYgSdNczMzMzgr0XWIaw8yOKSb7WPqMzMzMD84iaFcFxBmErwlmHmZmZmJi6KUGJW)F5b82iHhagkjBWW)uiZmZmZiIc3gVJW)F5b82iHhagkjBWoCkKzMzMzer5uVnWqjzd2HtHmZmZmJik8UFXqjzd2HtHmZmZmJi6KUGJW)F5b82w)SbyOKSb7WPqMzMzMrefUnEhH))Yd4TT(zdWqjzd2HtHmZmZmJikE(wGpdomus2GD4uiZmZmZiIoPl4i8)xEaVnEJhdpgkjBWW)uiZmZmZiIc3gVJW)F5b824nEm8yOKSb7WPqMzMzMreDeFMPRpYOamus2GH)PqMzMzMreDm9pkadLKnyhofYmZmZmIOWacg1gb4t47IHsYgm8pfYmZmZmIOK5F6uadgkjBWoCkKzMzMzerHjMhg2eVnWqjzd2HtHmZmZmJi6i(xEmus2GD4uiZmJSofISe6VZ85m4okbWS9)cHYbm9wpgmBWiBHmZmu8a83(TKnlw4X84X84X8ON2XJgE(EmczMzO4b4V9BjBwSyXIflwSqpTJhny6Hd37kKzMHIhG)2VLSzXcFalwhoGEAhpAKrVSF4W9UczMzO4b4V9BjBwSoCGt8app6PD8OXP)maHmZmu8a83(TKnlwFYazaMhaqpTJhTjNqe2czMzO4b4V9BjBwSyXIm(WHdON2XJg5GPGl)NHdHmZmu8a83(TKnlwa8i2SjJpGEAhpAJKHIW6ZMkKzMHIhG)2VLSzX6Wb2SzXc90oE0GpaHz9E4eIS4s5s5og5sbm3)A7amyiVl3Trg4oMYGmDkGHlCCht5Gqa3XS3XOpCChZEhJ(WXzyr4bChtrWb45ogmk4sX4oM8jnj44mNEYhjzUfYDm7Dm6dh3XhpAKpPjbhN50t(ijZTqHyTFztrE3z)1cJ(PaStdmxiZm7VZ85m4okb)1cJ(PamBW(Rfg9tbycjKzMTES)lB9E0nVSE2GbVak5VhDZlR3S5czMz)DMpNb3rjGfYIcygdygfHnyYy2VZwVhDZlR3CHmZmyA9WaK)E0zZfYmZya0DMRrz2bcbU8cXDmBybSXl3XGrbxk3XS3XOpCCMYbHaUJXOFkyNq(pfWDmgSVnM0L7ymyFBmP7iztrgfWLYDmfapu8XZhYLYDmNEt4f(WXD86955ch3X0)cCPBpx44og3(IIWfoUuUuUJP)f4s5ch3X42xueUWXLYLYDmpclwiS3xuo4ch3X42xueUWXLYLYDmZNnGlCChJBFrr4chxkxk3XS(SPiVlx44og3(IIWfoUuUuUJjCucP)f4s5ch3X42xueUWXLYLYDmYDkZBNqUWXDmU9ffHlCCPCPChZ8waUWXDmU9ffHlCCPCPCPChZJGTfSFztrgfWD8FT4oMbmf5DHJdcbChJW(D5oMcGhk(ChJh6YDmfapu8HH3LYD8KdpeYaWW24Zb3Xi8ChpYD6J83JUj73L7ykaEO4dtVl9JCXbUuUJNezu4gVjzo5ChZ(9w8VnUWbGh6KF)tSa8CNG747oo4yqMofWGXDB4ZDmYfHYzm6NHc45Un85oM97T4FBC5obxkxk3XJYDB4VLBp(CPC5c \ No newline at end of file +dqLJZbGii9iOQqDjOQqgLIYPuuTkfrrVsruywQKBPs1UGQmmvkhdbwgOqEgkcMMsH6AGcvBdQkY3qrIghkc15GQIADOc6DkIk3tb7dfj8pqHIoOIqluru6HGImrueDrLczJkLQpcvsJeQuNuPOvcYlrriMjkQBQuk7uPGFQiYqHQshfuulffj9ufQPcvCvuesBfuGVQi4SkIQ6Ti0CHQcUlkSxfYFrfAWYHvvlgvYJrPMmQ6YaBgL8zfPrdkDAiwTIOkVgQQMTsUnOA3Q43QYWrqhhuqlhrphkthPRRuTDuP(UsjJhQeNhv06bfk9EubMpOqH7JIu7NEebJWz04)iCgrhngB0yyeEW44ram6obW43NIpVX4t4tSjaFE0y4JgZpAm)iCgnMhbBYB)WMIWny04)AnAmNtIflmaD0gGXzc3gn(ZMIWnahsKPtbKB7XdgTH7eCB0ymc)SbJ2WTrJXalw47d5qhngNjHVmVrBhNrJ)lKPNrJzEJ2ooJgdlazkS0rBFJHXVXeWNUXeWNHrWiMatGPKPeFggnI19ngFA0417ZpcNrJP)f4qHrJWz0y47lkYiCgrhrhnM(xGdDeoJgdFFrrgHZi6i6OXKVfyeoJgdFFrrgHZi6i6OX8iSyHWEFr5CeoJgdFFrrgHZi6i6OXKF2Gr4mAm89ffzeoJOJOJgJCMs(2jCeoJgdFFrrgHZi6i6OXeYnH0)cCOJWz0y47lkYiCgrhrhnM1Nnf5DgHZOXW3xuKr4mIoIoA8ogGJSxFmSrCnIoA8)Ga)tbJMSJgtcMI8o4WjHGrJ5588HJWEk5BNWrJb4cH)dpGFexJgtjrMofqocNrJXG9T1KoJgJb7BRjDMiBkc3Gr0rJr4hnEI70hZVhD0yKdfqE(lyaGed5DgTbMWOXND44qImDkGeB0giy0yCzsSyHbOJ2WDMYn(2OXihekhXOFskGF0giy04Tq4PWoA7Bmm(nMa(0ncykzk3yMyy8nMGnEJhX6(gJpnIoAm7r4mAdemcNrJPaCHsW2Fh6yeySGrBagDB0yEeSjV9dBkc3GrJ)R1OXF2ueUb4qImDkGCBpEWOnCNGBJg)ztrEhSr4mAmg9tshHZOX8pochGH9NcgX1i6OXihe6iCgnM)Xr27y0h8rt2rJzVJrFWhnE9y)xgpGR9P2GX6VWacTES)ldH97WKiyeU(CYK7KFkY7ydgtqiHUF3qOa4B4dhCziuaCMro4)YqOa4W8(FHq58YqOa4md4gSUmeka(2qomd4gSUmekaooCsi4YqOa4J35chojeCHqbWht)SXpm92p0ldHcGVrWWDecz(X(YqOa44aWf6oj4YWaRf(sIWgCzSxFmSnzYldBNl2Rpg2Mm5LXfYHhhojeCbWfc)S3KjVmmaDtM8YqWGjYplkYzktf8NcouBWWvaDtka(MhwVzyRhDUq3VBR3JUj735YwVhDdF4GlB9EuyE)FOiuoVm27KKGdBo3KjVS17rH59)cHY5LTESXpG)YqWG5DagDtka(Lbd3by0nzYldbBISPiCdSbdxbuMFp641JU5H1Bg26rNl097gZih8Byp4akcCaMX)ay25rTTEK4xO1J9FzS2pSPiVJnfq3KcGZmYb)ZWwp6CHmZmew2mS1JAdd2bzn3OWcogjGUtESdYYahEHmZmsaDN8y4kGY87rhVEuMro4Fg26rNle4Wl06X(Vmw7h2uK3XMcOBsbW3Whoyg26rNlKzMHWYMHTEuByWoiR5gfwWXib0DYJDqwg4WlKzMrcO7KhddSaSPZGrxgUcOm)E0XRhDZdR3mS1JoFUqGdVqRh7)YyTFytrEhBkGUjfahhojemdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWModF6YWvaDtka(MhwVziuaCMro4F(CHahEHwp2)LXA)WMI8o2uaDtka(4DUOCsiyg26rNlKzMHWYMHTEuByWoiR5gfwWXib0DYJDqwg4WlKzMTES)ldHcGZmYb)2Gnfq3KcGZmYb)ZWwp6CHmZmew2mekaoZih8Bdd2bzn3OWcogjGUtESdYYahEHmZmsaDN8yyGfGnDgt5LHRa6Mua8npSEZqOa4mJCW)85cbo8cTES)lJ1(Hnf5DSPa6MuaCMbCdwZWwp6CHmZmew2mS1JAdd2bzn3OWcogjGUtESdYYahEHmZS1J9FziuaCMro43gSPa6MuaCMro4Fg26rNlKzMHWYMHqbWzg5GFByWoiR5gfwWXib0DYJDqwg4WlKzMrcO7KhddSaSPZ24ldxb0nPa4BEy9MHqbWzg5G)5ZfcC4fA9y)xgR9dBkY7ytb0nPa4WG)AhmdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWMoJacUmCfq3KcGV5H1BgcfaNzKd(NpxiWHxO1J9FzS2pSPiVJnfq3KcGdZ7)dfHY5mS1JoxiZmdHLndB9O2WGDqwZnkSGJrcO7Kh7GSmWHxiZmJeq3jpggybytNXeUmCfqz(9OJxp6MhwVzyRhD(CHahEHwp2)LXA)WMI8o2uaDtkaomV)xiuoNHTE05czMziSSzyRh1ggSdYAUrHfCmsaDN8yhKLbo8czMzRh7)YqOa4mJCWVnytb0nPa4mJCW)mS1JoxiZmdHLndHcGZmYb)2WGDqwZnkSGJrcO7Kh7GSmWHxiZmJeq3jpggybytNXeUmCfq3KcGV5H1BgcfaNzKd(NpxiWHxO1J9FzS2pSPiVJnfq3KcGVrWWDecz(X(trENzyRhDUqMzgclBg26rTHb7GSMBuybhJeq3jp2bzzGdVqMz26X(VmekaoZih8Bd2uaDtkaoZih8pdB9OZfYmZqyzZqOa4mJCWVnmyhK1CJcl4yKa6o5XoildC4fYmZib0DYJHbwa20z4ZxgUcOBsbW38W6ndHcGZmYb)ZNle4Wl06X(Vmw7h2uK3XMcOBsbW3K97mdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWMoJGBxgUcOBsbW38W6ndHcGZmYb)ZNle4WlKqcTES)lJ)X87rTbJ1(Hnf5DMHTE05czMz)DYphbhUXJhW1(uMFtNHY87rrotnS1JYHgQHhEg26rNlKzMX87rhVE0zyRhDUqczMzRh7)YqOa4BY(DSbBkGUjfaFt2VZmS1Jo3EKgbmHnEJVDtiZmB9y)xgcfaFdF4aBWMcOBsbW3Whoyg26rNBpsdLj6b)N3whuHmZmeka(g(Wb2GHqbW3WhoGdNITZ1mu8Hd6LHEzOZfYmZwp2)LHqbWH59)HIq50gSPa6MuaCyE)FOiuoNHTE052J0iqiZmB9y)xgcfahM3)lekN2Gnfq3KcGdZ7)fcLZzyRhDU9iTBcjKzM93j)CeC4gpEax7tz(nDgkts(3c5m1qy)ogRhPHA4HNHqbW3WhoWWdpd12cHcRbd3)lekNgQHhEgcfahM3)lekNZfYmZwp2)LD(WbtaHclm9wpsBW(7KFocoCJhmC)VqOCctV1JeJicfahM3)lekN2KHraddp8muIOgE4ziua8n8Hdm8WZqzGpqamAJjrfYmZwp2)LD(WbtaHclmV)puekN2GD(WbtaHclm9wpsdp8mudxqn8WZqOa4W8()qrOCkKqMz2FN8ZrWHB84bCTpL530zOteddz6b5m1oF4audp8SZhoyciuyH59)HIq5CUqMz2FN8ZrWHB8(Rfg9tbyeXh)3j)CeC4gV)AHr)uaMnzyeWWgmoqiZmZmZWG9TLnyuYDWLqMzMzMXg2)zkG3gmk5o4siZmZmZqo8aCXgmCfqXbboy28lHmZmZmJeG9iP2Grj3bxcjKzMzMziSFhBWqOa4BY(DUeYmZmZSZhoWgSZhoyciuyH59)HIq58siZmZmZ(WF7hQnyiuaCyE)FOiuoVesiZmZmZiK8nLeGHHdNecSbdLIahWJEjKzMzMzaCHqeYpf5DWbboWgmCfqXbboy2CBYWqy)omjcgHRpNm5o5NI8oxczMzMzg)o5NI8o2GHW(DysemcxFozYDYpf5DUeYmZmZS)o9HBeEGnyuYDWLqMzgtle4WlKqcTES)lB6BXVDKffqAdghiKzMboFUwaEBWOK7GlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModfxFlEJfYIciNCg26r5qd1WdpdB9OZfYmZmZmZmB9y)xgcfaFdF4aBWMcOBsbW3Whoyg26rNlKzMzMzMz2972M20DagMHqn(haZopQHTtiHpsQnjMQHCmsWuaUaJPqMzMzMzMz3VBiua8n8Hd4q4FkByNHIpIFYWMndxFl(5WyaJXSXilUbKZHXagJzW0JqcbKZNJoxiZmZmZmZmew2meka(5dhy)dVHqbW3WhoGdH)PSHDgk(i(jddxFlE052J0qOa4B4dhWHW)u2WodfFe)KHngzXnGeDU9ineka(g(WbCi8pLnSZqXhXpzyW0JqcbKOZNBuybhHmZmZmZmZmZS)o5NJGd34Xd4AFkZVPZqX13I3yHSOasJWpgg6CHmZmZmZmZmZmsaDN8yuYDGqMzMzMzMzGdVqMzMzMbo8czMzGdVqmTqRh7)YEK8asMka7TtYgGTDKffqAdghiKzMboFUwaEBWOK7GlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModLPcWE7KSbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(Vmeka(g(Wb2Gnfq3KcGVHpCWmS1JoxiZmZmZmZmew2meka(g(Wb2)WBiua8n8Hd4q4FkByNHojsEaPXubyVDs2am05ZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOtIKhqAKaS3ojBGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)Lb)TFOBhzrbK2GXbczMzGZNRfG3gmk5o4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZq32B)qnwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMziSSziuaCC4KqG9p8gcfahhojeyddg62E7hk6CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDg62E7hQXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LHS4ETDKffqAdghiKzMboFUwaEBWOK7GlHmZmKf3lCGLeGb7BXBdgtmt8TlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModDtM5EzSqwua5KZWwpkhAOgE4zyRhDUqMzMzMzMzRh7)YqOa4md4gSSbBkGUjfaNza3G1mS1JoxiZmZmZmZmew2mekaoZaUbl7F4nekaoZaUblJPWWalw4HS4EHdSKamyFl(5gfwWriZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6m0nPa42cWnyzSqwuaPr4hddDUqMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmWHxiZmZmZahEHmZmWHxiMwO1J9Fzes(ybWWqENTJSOasBW4aHmZmW5Z1cWBdgLChCjKzMblGKlmBWOK7GlHmZm2RhfwBWy9xyGlHmZShjWgmw)fg4siZmBb(uybK2GX6VWaxczMzSFp8JCMAdgLChCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zO4l5Jfadd5DmwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMziSSziuaCC4KqG9p8gcfahhojeyddgkoKFEag(rwl05gfwWriZmZmZmZmZmB9y)xgcfaF8oxuojeyd2uaDtka(4DUOCsiyg26rNlKzMzMzMzMzMHWYMHqbWhVZfLtcb2)WBZqOa4J35IYjHaByWqXnGKlu7F4nmWIfEWci5cBUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHYm4tHfqIA)dVHbwSWBb(uybKZfYmZmZmZmZmZEK2meka(4DUOCsiWggmuyA9OWIA)dVHbwSWJ96rHDUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHojsaQ9p8ggyXcVhjyUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHctVh(rotrT)H3Walw4X(9WpYz685gfwWriZmZmZmZmZmZmZ(7KFocoCJhpGR9Pm)ModfFjFSayyiVJXczrbKgHFmm05czMzMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmZmdC4fYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)xg3)1oy7ilkG0gmoqiZmdC(CTa82Grj3bxczMzC)x7aCGLeGb7BXBdgtag3MmncUDZMmncUD7siZm7tiHloXbwsagSVfpoVnPa4JPF243gmw)fg4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqHb)1oWyHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbWHb)1oWgSPa6MuaCyWFTdMHTE05cjKzMzMzMzgclBggyXcVpHeU4ehyjbyW(w8482KcGpM(zJ)5gfwWriZmZmZmZmZmB9y)xgcfahM3)hkcLtBWMcOBsbWH59)HIq5Cg26rNlKzMzMzMzMzM93j)CeC4gpEax7tz(nDgkoWcibgaxqWOgQHhEgcfahM3)hkcLtdp8mudHcGJzihdB9OgQHhEg26rNlKzMzMzMzMzMHqbWHb)1oWgmekaom4V2b2KPHqbWH59)HIq5uiZmZmZmZmWHxiHmZmZmZmZqyzZqOa4WG)Ahy)dVHqbWHb)1oWykmmWIfEC)x7aCGLeGb7BXp3OWcoczMzMzMzMzMz)DYphbhUXJhW1(uMFtNHcd(RDGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LnLeWjm4V2bBhzrbK2GXbczMzGZNRfG3gmk5o4siZm7(DBmGAuyjbyW(w8g9z3m6ZwVh1(RLnLeWjMqMzg3)1oahyjbyW(w82GbJBtMgb3UztMgb3UDjKzM9jKWfN4aljad23IhN3Mua8X0pB8BdgR)cdCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zO4kjGtJ7)AhySqwua5KZWwpkhAOgE4zyRhDUqMzMzMzMzRh7)YqOa4W8(FHq50gSPa6MuaCyE)VqOCodB9OZfYmZmZmZmdHLndHcGdZ7)fcLt7F4nekaomV)xiuonMc72CJcl4iKzMzMzMzMzMTES)ldHcGdd(RDGnytb0nPa4WG)AhmdB9OZfsiZmZmZmZmZmdHLnddSyH3NqcxCIdSKamyFlECEBsbWht)SX)CJcl4iKzMzMzMzMzMzMzRh7)YqOa4W8()qrOCAd2uaDtkaomV)puekNZWwp6CHmZmZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muCGfqcmaUGGrnudp8mekaomV)puekNgE4zOgcfahZqog26rnudp8mS1JoxiZmZmZmZmZmZmZqOa4WG)Ahydgcfahg8x7aBY0qOa4W8()qrOCkKzMzMzMzMzMbo8cjKzMzMzMzMzMHWYMHqbWHb)1oW(hEdHcGdd(RDGXuyyGfl84(V2b4aljad23IFUrHfCeYmZmZmZmZmZmZS)o5NJGd34Xd4AFkZVPZqXvsaNg3)1oWyHSOasJWpgg6CHmZmZmZmZmZmZmJeq3jpgLChiKzMzMzMzMzMbo8czMzMzMzMbo8czMzMzg4WlKzMbo8cX0cTES)ldgUdWOBsbW3oYIciTbJdeYmZaNpxlaVnyuYDWLqMzglKffqAdgR9dBkY7mddSyDzyRhDUqMzMzMHWYMHbwSWdC(CTa8ZnkSGJqMzMzMzMz)DYphbhUXJhW1(uMFtNHcZ7amQHqbWnwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMzRh7)YqOa4J35IYjHaBWMcOBsbWhVZfLtcbZWwp6CHmZmZmZmZqyzZqOa44WjHa7F4neka(4DUOCsiW(hEdHcGJdNecSHbdHcGpENlkNecSHbdfM3byu05gfwWriZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muyEhGrnekaUXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LXE9XWWvWNC7ilkG0gmoqiZmdC(CTa82Grj3bxczMzilUx4aljad23I3gmM4B3UeYmZGH7)fcLtCGLeGb7BXBdgm6siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqHP1hdZMc(KglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(VmekaooCsiWgSPa6MuaCC4KqWmS1JoxiZmZmZmZS1J9Fziua8ncgUJqiZp22Gnfq3KcGVrWWDecz(X(trENzyRhDUqMzMzMzMziSSziuaCC4KqGnmyOtKe(JeviZmZmZmZShPHqbWXHtcb2WGHobWNW3bviZmZmZmZShPHqbW3iy4ocHm)yBddg6MBagGZKp(UrCC7BUbCDJyQOczMzMzMzM9ineka(gbd3riK5hBByWq3CdWaCM8X3nIJ4Wu3Cdmr2iCqfYmZmZmZm7rAiua8ncgUJqiZp22WGHU5gGb4m5JVBehHjMN0ezIGkKzMzMzMz2J0qOa4BemChHqMFSTHbdDZnadWzYhF3ioUHncMyIGo3OWcoczMzMzMzMzMzRh7)YqOa4md4gSSbBkGUjfaNza3G1mS1JoxiZmZmZmZmZmB9y)xgcfahM3)lekN2Gnfq3KcGdZ7)fcLZzyRhDUqMzMzMzMzMz26X(VmeSncgUJqiHFUwaBW(7KFocoCJhg(rwlmIyGfGnDgt4YyIEqOW06JHndLW1Ntaj685miITZfLtcbmSHbJaHeYmZmZmZmZmZqyzZqW2iy4ocHe(5AbS)H3qOa4md4gSmMcddSyHhYI7foWscWG9T4T)H3qOa4W8(FHq50ykmmWIfEWW9)cHYjoWscWG9T4NBuybhHmZmZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muyA9XWSPGpPXczrbKgHFmm05czMzMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmZmdC4fYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)x2hglGeHc2oYIciTbJdeYmZaNpxlaVnyuYDWLqMzgYI7foWscWG9T4TbJj(2TlHmZmy4(FHq5ehyjbyW(w82GbJUeYmZyHSOasBWyTFytrENzyGfRldB9OZfYmZmZmew2mmWIfEGZNRfGFUrHfCeYmZmZmZm7Vt(5i4WnE8aU2NY8B6m0jcJfqIqbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(VmekaooCsiWgSPa6MuaCC4KqWmS1JoxiZmZmZmZS1J9Fziua8X7Cr5KqGnytb0nPa4J35IYjHGzyRhDUqMzMzMzMzRh7)YqOa4W8(FHq50gSPa6MuaCyE)VqOCodB9OZfYmZmZmZmdHLndHcGJdNecS)H3qOa4J35IYjHa7F4nekaomV)xiuoT)H3qOa44WjHaByWqHP3bBh(NRfa1(hEdHcGpENlkNecSHbdDsuybKO2)WBiuaCyE)VqOCAmfgbZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOteglGeHcmwilkG0i8JHHoxiZmZmZmZmZmJeq3jpgLChiKzMzMzMzg4WlKzMzMzGdVqMzg4Wletl06X(VSp509dcfSDKffqAdghiKzMboFUwaEBWOK7GlHmZmy4(FHq5ehyjbyW(w82GrWLqMzglKffqAdgR9dBkY7mddSyDzyRhDUqMzMzMHWYMHbwSWdC(CTa8ZnkSGJqMzMzMzMz)DYphbhUXJhW1(uMFtNHorYP7hekWyHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbW3WhoWgSPa6Mua8n8HdMHTE05czMzMzMzMTES)ldHcGdZ7)fcLtBWMcOBsbWH59)cHY5mS1JoxiZmZmZmZmew2meka(g(Wb2)WBiuaCyE)VqOCA)dVHqbW3WhoGdH)PSHDg6ejNUFqOa052)WBiuaCyE)VqOCAmfggyXcpy4(FHq5ehyjbyW(w8ZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOtKC6(bHcmwilkG0i8JHHoxiZmZmZmZmZmJeq3jpgLChiKzMzMzMzg4WlKzMzMzGdVqMzg4Wletl06X(VS)Hnc4q32)83oYIciTbJdeYmZaNpxlaVnyuYDWLqMzgmC)VqOCIdSKamyFlEBWi4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqN4Hnc4qn4)Z3yHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbW3WhoWgSPa6Mua8n8HdMHTE05czMzMzMzMHWYMHqbW3WhoW(hEdHcGVHpCahc)tzd7m0jEyJaouBB)ZhD(CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDg6epSrahQb)F(glKffqAe(XWqNlKzMzMzMzMzMrcO7KhJsUdeYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)xgjaHnHGTJSOasBW4aHmZmW5Z1cWBdgLChCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zOmvaBecbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(Vmeka(g(Wb2Gnfq3KcGVHpCWmS1JoxiZmZmZmZmew2meka(g(Wb2)WBZqOa4B4dhWHW)u2WodLPcyJqiaDU9ineka(g(WbCi8pLnSZqXbWg2dcmChGoF(CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDgktfWgHqGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHe6Vt(5i4WnESqwua5yaj3iSb2GXbczMzSqwuajMnyCGqMzMzMn9T43oYIciVeYmZmZShjpGKPcWE7KSbyBhzrbKxczMzMzg83(HUDKffqEjKzMzMzilUxBhzrbKxczMzMzgHKpwammK3z7ilkG8siZmZmZ4(V2bBhzrbKxczMzMz2usaNWG)AhSDKffqEjKzMzMzWWDagDtka(2rwua5LqMzMzMXE9XWWvWNC7ilkG8siZmZmZ(WybKiuW2rwua5LqMzMzM9jNUFqOGTJSOaYlHmZmZm7FyJao0T9p)TJSOaYlHmZmZmJeGWMqW2rwua5LqMzgtFjKzMHTEumCEm)EuBW4aM(siZmJC)ydgR9dBkY7mddSyDzR3JU5H1BUqMzMzMHbwSWdB9Oy48y(9O2GXbmTqMzMzMX6rAyRh9YqOa4gYXi8JqInB9E0npSEZn(NqMzMzMzMz)DYphbhUXJhW1(uMFtNHY87rnS1JYHgQHhEg26rn8WZqnudp8mekaoEiua85czMzMzMzMHbwS4qY9Z2rwuaj2mS1JoxiZmZmZahEHeYmZmZS)o5NJGd34Xd4AFkZVPZqhVEumJ(S17r5qd1WdpdFmgyXcpS1JIHZJ53JoxiZmZmZ(7KFocoCJhpGR9Pm)ModdSyHh26rXW5X87rNlKzMzMzSEKgIny4JXalw4HTEumCEm)E0lJGl7obg)tiZmZmZmZS1J9FzyRh1gmmWIfEyRhfdNhZVhLicdHmZmZmZmZ(7KFocoCJhpGR9Pm)ModL53JICMAyRh1MHqbKF6JCohAOgE4zyRhDUqMzMzMzMz8pMFp6mS1JoxiZmZmZahEHmZmWH)siZmJC)SDKffqIzdgR9dBkY7mddSyDzyRhDUqMzMzMX6rA4)YyHSOasd5ye(riXMHbwSWJfYIciXMB8pHmZmZmZmZqyzZyHSOasoKfYIciNHTE05ZnkSGJqMzMzMzMzMz29722qMcl14cytFpEJ(UmKdgf85ThlBYBhJAFEEKZudB9Og9zFBHGrVSppV9p2JRjpaBQTfcfwd5W6zFUE7uJclWqOa42)WBuybg26rn2Vd9JCqotneQH9mWNnSglKffqAS)hJhHn9tbgfwGHqbWTZhoW(hEdH97iKzMzMzMzMzMHbwSWdB9Oy48y(9OeXhJbwSWdB9Oy48y(9O2KHradBWWwpQqMzMzMzMzMzgjGUtEeYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfsO)o5NJGd34Xd4AFkZVP2GXA)WMI8oZECn5nxiZmdHLnJhW1(05gfwWriZmZmZiKe5qNHRakoiWbZMpxiZmZmZysa348ElmoYK7WjC2JRjV5czMzMzgHKih6S5czMzGdVqGdVqc93j)CeC4gpm8JSwy2GXbczMz3VpHpjjYJuiZmJibmSbJdeYmZmZS73Nij8hPng)iRfMqMzMzMrefMwpkSOmSb72LqMzMzMreLzWNclGeLHny3UeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWi4siZmZmZiIogweWIhdLHnyeCjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgmcUeYmZmZmIOt23wyOmSbJGlHmZmZmJikUUFWqzydgbxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHnyeCjKzMzMzerX33c8jHJHYWgmcUeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgmcUeYmZmZmIO4S17oU)hEaVnERhjpgkdBWi4siZmZmZiIoHp501hHBagkdBWi4siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHnyeCjKzMzMzerHjYhggxVTWqzydgbxczMzMzgr0j8p8yOmSb72LqMzgtFjKzMD)o((xFEKJqMzgryedBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzyd2TlHmZmZmJi62(ilug2GD7siZmZmZiIIVRpfGYWgmcUeYmZmZmIOJHfbS4XqzydgbxczMzMz297ta8j8DSX4hzTWeYmZmZmIOt6aUJ7)HhWBtexayOmSbJGlHmZmZmJikoB9UJ7)HhWBtexayOmSbJGlHmZmZmJi6K9TfgkdBWUDjKzMzMzerX19dgkdBWUDjKzMzMzerN0bCh3)dpG322NnadLHnyeCjKzMzMzerXzR3DC)p8aEBBF2amug2GrWLqMzMzMrefFFlWNeogkdBWi4siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSbJGlHmZmZmJi6e(KtxFeUbyOmSb72LqMzMzMreDm9ZnadLHny3UeYmZmZmIOBhbJAta8j8DWqzyd2TlHmZmZmJikt(NofqIHYWgSBxczMzMzgruyI8HHX1Blmug2GD7siZmZmZiIoH)HhdLHny3UeYmZy6lHmZS73X9(HcifYmZiYeyydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzyd2TlHmZmZmJikZGpfwajkdBWUDjKzMzMzer32hzHYWgmcUeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgmcUeYmZmZmIOt23wyOmSbJGlHmZmZmJikUUFWqzydgbxczMzMzgr0jDa3X9)Wd4TT9zdWqzyd2TlHmZmZmJikoB9UJ7)HhWBB7ZgGHYWgSBxczMzMzgru89TaFs4yOmSbJGlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgmcUeYmZmZmIOt4toD9r4gGHYWgSBxczMzMzgr0X0p3amug2GrWLqMzMzMreD7iyuBcGpHVdgkdBWi4siZmZmZiIYK)PtbKyOmSbJGlHmZmZmJikmr(WW46TfgkdBWi4siZmZmZiIoH)HhdLHny3UeYmZy6lHmZS73zQVP7aHmZmIBmdBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzydgbxczMzMzgr0T9rwOmSb72LqMzMzMrefFxFkaLHny3UeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GrWLqMzMzMrefNTE3X9)Wd4TjIlamug2GD7siZmZmZiIozFBHHYWgSBxczMzMzgruCD)GHYWgSBxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzyd2TlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWUDjKzMzMzer3ocg1Ma4t47GHYWgmcUeYmZmZmIOm5F6uajgkdBWi4siZmZmZiIctKpmmUEBHHYWgSBxczMzMzgr0j8p8yOmSb72LqMzgtFjKzMD)o(sIaWOczMzeHXzydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzydgbxczMzMzgruMbFkSasug2GD7siZmZmZiIUTpYcLHny3UeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgSBxczMzMzgruC26Dh3)dpG3MiUaWqzyd2TlHmZmZmJi6K9TfgkdBWUDjKzMzMzerX19dgkdBWUDjKzMzMzerN0bCh3)dpG322NnadLHnyeCjKzMzMzerXzR3DC)p8aEBBF2amug2GD7siZmZmZiIIVVf4tchdLHny3UeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgSBxczMzMzgruC26Dh3)dpG3gV1JKhdLHny3UeYmZmZmIOt4toD9r4gGHYWgSBxczMzMzgr0X0p3amug2GrWLqMzMzMreD7iyuBcGpHVdgkdBWUDjKzMzMzerzY)0Pasmug2GrWLqMzMzMrefMiFyyC92cdLHny3UeYmZmZmIOt4F4XqzydgbxczMzm9LqMz297mj4tH1yICqMclviZmJi(edBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzyd2TlHmZmZmJi62(ilug2GD7siZmZmZiIIVRpfGYWgmcUeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GrWLqMzMzMrefNTE3X9)Wd4TjIlamug2GrWLqMzMzMreDY(2cdLHny3UeYmZmZmIO46(bdLHny3UeYmZmZmIOt6aUJ7)HhWBB7ZgGHYWgmcUeYmZmZmIO4S17oU)hEaVTTpBagkdBWi4siZmZmZiIIVVf4tchdLHnyeCjKzMzMzerN0bCh3)dpG3gV1JKhdLHnyeCjKzMzMzerXzR3DC)p8aEB8wpsEmug2GrWLqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgSBxczMzMzgr0TJGrTja(e(oyOmSb72LqMzMzMreLj)tNciXqzyd2TlHmZmZmJikmr(WW46TfgkdBWUDjKzMzMzerNW)WJHYWgSBxczMzm9LqMz297JH9d)FeYmZiYuYWgmoqiZmZmZUFFIKWFK2y8JSwyczMzMzgruyA9OWIYWgSBxczMzMzgruMbFkSasug2GD7siZmZmZiIUTpYcLHnyeCjKzMzMzerX31Ncqzyd2TlHmZmZmJi6yyralEmug2GrWLqMzMzMD)(eaFcFhBm(rwlmHmZmZmJi6KoG74(F4b82eXfagkdBWi4siZmZmZiIIZwV74(F4b82eXfagkdBWUDjKzMzMzerNSVTWqzyd2TlHmZmZmJikUUFWqzyd2TlHmZmZmJi6KoG74(F4b822(SbyOmSbJGlHmZmZmJikoB9UJ7)HhWBB7ZgGHYWgSBxczMzMzgru89TaFs4yOmSb72LqMzMzMreDshWDC)p8aEB8wpsEmug2GD7siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHnyeCjKzMzMzerHjYhggxVTWqzyd2TlHmZmZmJi6e(hEmug2GD7siZmJPVeYmZUFFB)PaHmZmImXmSbJdeYmZmZS73Nij8hPng)iRfMqMzMzMrefMwpkSOmSbJGlHmZmZmJikZGpfwajkdBWUDjKzMzMzer32hzHYWgSBxczMzMzgru8D9Paug2GD7siZmZmZiIogweWIhdLHny3UeYmZmZS73Na4t47yJXpYAHjKzMzMzerN0bCh3)dpG3MiUaWqzyd2TlHmZmZmJikoB9UJ7)HhWBtexayOmSb72LqMzMzMreDY(2cdLHny3UeYmZmZmIO46(bdLHny3UeYmZmZmIOt6aUJ7)HhWBB7ZgGHYWgSBxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzyd2TlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWi4siZmZmZiIUDemQnbWNW3bdLHny3UeYmZmZmIOm5F6uajgkdBWi4siZmZmZiIctKpmmUEBHHYWgSBxczMzMzgr0j8p8yOmSbJGlHmZmM(siZm7(9j8jxp24xiZmJi(mdBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWi4siZmZmZiIYm4tHfqIYWgSBxczMzMzgr0T9rwOmSb72LqMzMzMrefFxFkaLHny3UeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GD7siZmZmZiIIZwV74(F4b82eXfagkdBWUDjKzMzMzerNSVTWqzyd2TlHmZmZmJikUUFWqzyd2TlHmZmZmJi6KoG74(F4b822(SbyOmSb72LqMzMzMrefNTE3X9)Wd4TT9zdWqzyd2TlHmZmZmJik((wGpjCmug2GD7siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzyd2TlHmZmZmJikt(NofqIHYWgmcUeYmZmZmIOWe5ddJR3wyOmSb72LqMzMzMreDc)dpgkdBWi4siZmJPVeYmZUFFBVd(fYmZisWng2GXbczMzMz297tKe(J0gJFK1ctiZmZmZiIctRhfwug2GD7siZmZmZiIYm4tHfqIYWgmcUeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWi4siZmZmZiIogweWIhdLHnyeCjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgSBxczMzMzgr0j7Blmug2GD7siZmZmZiIIR7hmug2GD7siZmZmZiIoPd4oU)hEaVTTpBagkdBWi4siZmZmZiIIZwV74(F4b822(SbyOmSb72LqMzMzMrefFFlWNeogkdBWi4siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHny3UeYmZmZmIOWe5ddJR3wyOmSb72LqMzMzMreDc)dpgkdBWUDjKzMX0xczMz3VZKK7i8czMzejGag2GXbczMzMz297tKe(J0gJFK1ctiZmZmZiIctRhfwug2GD7siZmZmZiIYm4tHfqIYWgmcUeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWUDjKzMzMzerhdlcyXJHYWgSBxczMzMz297ta8j8DSX4hzTWeYmZmZmIOt6aUJ7)HhWBtexayOmSb72LqMzMzMrefNTE3X9)Wd4TjIlamug2GD7siZmZmZiIozFBHHYWgSBxczMzMzgruCD)GHYWgSBxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzydgbxczMzMzgr0jDa3X9)Wd4TXB9i5Xqzyd2TlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWi4siZmZmZiIUDemQnbWNW3bdLHnyeCjKzMzMzerzY)0Pasmug2GrWLqMzMzMrefMiFyyC92cdLHny3UeYmZmZmIOt4F4Xqzyd2TlHmZmM(siZm7(DMea)DmCVFOasHmZmIeaJyydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzyd2TlHmZmZmJikZGpfwajkdBWi4siZmZmZiIUTpYcLHny3UeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgSBxczMzMzgr0j7Blmug2GD7siZmZmZiIIR7hmug2GD7siZmZmZiIoPd4oU)hEaVTTpBagkdBWUDjKzMzMzerXzR3DC)p8aEBBF2amug2GD7siZmZmZiIIVVf4tchdLHny3UeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgmcUeYmZmZmIO4S17oU)hEaVnERhjpgkdBWUDjKzMzMzerNWNC66JWnadLHnyeCjKzMzMzerht)CdWqzyd2TlHmZmZmJi62rWO2eaFcFhmug2GrWLqMzMzMreLj)tNciXqzyd2TlHmZmZmJikmr(WW46TfgkdBWUDjKzMzMzerNW)WJHYWgSBxczMzm9LqmTq)DYphbhUXdgU)xiuoHP36rIzdghiKzMHIpqamAJzZIf(mp(mp(mp6LD)UHVVhPqMzgk(abWOnMnlwSyXIflwOx297gm9Gd)DeYmZqXhiagTXSzXIaalw3UHEz3VBmrpSFWH)oczMzO4deaJ2y2SyD7gt5nEE0l7(DJP(jbczMzO4deaJ2y2Sy9zcmbyCaa9YUF32icrylKzMHIpqamAJzZIflwmX3UDd9YUF3ygmfC4)KCkKzMHIpqamAJzZIfaFInBM4BOx2972ejPiS(SPczMzO4deaJ2y2SyD7gB2SyHEz3VB4gGqUEp4cX0JOJOJgtjrMofqocNrJPCsiy0y27y0h8rJXG9T1KoJgJb7BRjDMiBkc3GrJbCdouSrJzEstchoYu3OjYKt(JgZEhJ(GZrkNecgngJ(PGDc5)uWOXSHfWg)Jgd4gCOJgZEhJ(GpA897gZtAs4WrM6gnrMCYxiw7h2uK3z2FTWOFka7YaZfYmZ(7KFocoCJ3FTWOFkaZgS)AHr)uaMqczMzRh7)YwVhDZdRNny4kGY87r38W6nBUqMz2FN8ZrWHB8yHSOaYXasUryd4qY9ZS17r38W6nxiZmdMwpmaZVhD2CHmZmsaDN8yuYDGqGdVqJgZEhJ(GZryr4bJgtrGd4hrhnMcWfkb47d5qhnMPUjUIBCgnE9(8JWz0y6Fbouy0iCgng((IImcNr0r0rJP)f4qhHZOXW3xuKr4mIoIoAmpclwiS3xuohHZOXW3xuKr4mIoIoAm5NnyeoJgdFFrrgHZi6i6OXS(SPiVZiCgng((IImcNr0r0rJjFlWiCgng((IImcNr0r0rJrotjF7eocNrJHVVOiJWzeDeD0yc5Mq6Fbo0r4mAm89ffzeoJOJOJOJgJCOaYZFbdaKyiVZOnWegn(SdhhsKPtbKyJ2abJgtcMI8o4WjHGrJry)oJgtb4cLGrJXhDgnMcWfkbW07q)ih4GdD04jXefNXBYKB0OXi8JgpXD6J53JUj73z0ykaxOeS93HoA8gHlescWW26Z5OXSFVf)BRdoaCHUrNpxla)iUgng5Gq5ig9tsb8J2abJgZ(9w8VToJ4AeDeD0yUhTbc2yyebJOJgba \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 57173f5..774c78d 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -154,7 +154,7 @@ local professionFilter = { cloth = false, ore = false, leather = false, - cooking = false, + cooking = true, filter = function(self, slot) if (self.enabled) then aura_env.debugLog("Profession filter; slot: " .. slot) @@ -308,6 +308,19 @@ local ancientManaFilter = { end end } +local reicpeFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Recipe filter; slot: " .. slot) + local itemName = getItemName(slot) + if (itemName and (itemName:match("Recipe") or itemName:match("Technique"))) then + aura_env.debugLog("Recipe filter pass") + return true + end + end + end +} aura_env.filterService = { filters = { @@ -322,7 +335,8 @@ aura_env.filterService = { classGearFilter, azeriteFilter, arguniteFilter, - ancientManaFilter + ancientManaFilter, + reicpeFilter, }, slotsToLoot = {}, run = function(self, lootInfo) From 4980c875c2a243d5ea9eae207c71b41e99d143b5 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 14:22:17 +0200 Subject: [PATCH 19/44] Separate auto loot into logic and icon --- LegionWA/AutoLoot/Event.lua | 5 +---- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 31 +++++++++---------------------- LegionWA/LootDisplay/Event.lua | 7 +++++++ LegionWA/LootDisplay/Export | 1 + LegionWA/LootDisplay/Init.lua | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 LegionWA/LootDisplay/Event.lua create mode 100644 LegionWA/LootDisplay/Export create mode 100644 LegionWA/LootDisplay/Init.lua diff --git a/LegionWA/AutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua index 56f8992..ccb687c 100644 --- a/LegionWA/AutoLoot/Event.lua +++ b/LegionWA/AutoLoot/Event.lua @@ -1,9 +1,6 @@ -- LOOT_READY -function(allstates, e) - aura_env.allstates = allstates - +function(e) local lootInfo = GetLootInfo() aura_env.filterService:run(lootInfo) CloseLoot() - return true end diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index 08d652e..9705fa6 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dqLJZbGii9iOQqDjOQqgLIYPuuTkfrrVsruywQKBPs1UGQmmvkhdbwgOqEgkcMMsH6AGcvBdQkY3qrIghkc15GQIADOc6DkIk3tb7dfj8pqHIoOIqluru6HGImrueDrLczJkLQpcvsJeQuNuPOvcYlrriMjkQBQuk7uPGFQiYqHQshfuulffj9ufQPcvCvuesBfuGVQi4SkIQ6Ti0CHQcUlkSxfYFrfAWYHvvlgvYJrPMmQ6YaBgL8zfPrdkDAiwTIOkVgQQMTsUnOA3Q43QYWrqhhuqlhrphkthPRRuTDuP(UsjJhQeNhv06bfk9EubMpOqH7JIu7NEebJWz04)iCgrhngB0yyeEW44ram6obW43NIpVX4t4tSjaFE0y4JgZpAm)iCgnMhbBYB)WMIWny04)AnAmNtIflmaD0gGXzc3gn(ZMIWnahsKPtbKB7XdgTH7eCB0ymc)SbJ2WTrJXalw47d5qhngNjHVmVrBhNrJ)lKPNrJzEJ2ooJgdlazkS0rBFJHXVXeWNUXeWNHrWiMatGPKPeFggnI19ngFA0417ZpcNrJP)f4qHrJWz0y47lkYiCgrhrhnM(xGdDeoJgdFFrrgHZi6i6OXKVfyeoJgdFFrrgHZi6i6OX8iSyHWEFr5CeoJgdFFrrgHZi6i6OXKF2Gr4mAm89ffzeoJOJOJgJCMs(2jCeoJgdFFrrgHZi6i6OXeYnH0)cCOJWz0y47lkYiCgrhrhnM1Nnf5DgHZOXW3xuKr4mIoIoA8ogGJSxFmSrCnIoA8)Ga)tbJMSJgtcMI8o4WjHGrJ5588HJWEk5BNWrJb4cH)dpGFexJgtjrMofqocNrJXG9T1KoJgJb7BRjDMiBkc3Gr0rJr4hnEI70hZVhD0yKdfqE(lyaGed5DgTbMWOXND44qImDkGeB0giy0yCzsSyHbOJ2WDMYn(2OXihekhXOFskGF0giy04Tq4PWoA7Bmm(nMa(0ncykzk3yMyy8nMGnEJhX6(gJpnIoAm7r4mAdemcNrJPaCHsW2Fh6yeySGrBagDB0yEeSjV9dBkc3GrJ)R1OXF2ueUb4qImDkGCBpEWOnCNGBJg)ztrEhSr4mAmg9tshHZOX8pochGH9NcgX1i6OXihe6iCgnM)Xr27y0h8rt2rJzVJrFWhnE9y)xgpGR9P2GX6VWacTES)ldH97WKiyeU(CYK7KFkY7ydgtqiHUF3qOa4B4dhCziuaCMro4)YqOa4W8(FHq58YqOa4md4gSUmeka(2qomd4gSUmekaooCsi4YqOa4J35chojeCHqbWht)SXpm92p0ldHcGVrWWDecz(X(YqOa44aWf6oj4YWaRf(sIWgCzSxFmSnzYldBNl2Rpg2Mm5LXfYHhhojeCbWfc)S3KjVmmaDtM8YqWGjYplkYzktf8NcouBWWvaDtka(MhwVzyRhDUq3VBR3JUj735YwVhDdF4GlB9EuyE)FOiuoVm27KKGdBo3KjVS17rH59)cHY5LTESXpG)YqWG5DagDtka(Lbd3by0nzYldbBISPiCdSbdxbuMFp641JU5H1Bg26rNl097gZih8Byp4akcCaMX)ay25rTTEK4xO1J9FzS2pSPiVJnfq3KcGZmYb)ZWwp6CHmZmew2mS1JAdd2bzn3OWcogjGUtESdYYahEHmZmsaDN8y4kGY87rhVEuMro4Fg26rNle4Wl06X(Vmw7h2uK3XMcOBsbW3Whoyg26rNlKzMHWYMHTEuByWoiR5gfwWXib0DYJDqwg4WlKzMrcO7KhddSaSPZGrxgUcOm)E0XRhDZdR3mS1JoFUqGdVqRh7)YyTFytrEhBkGUjfahhojemdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWModF6YWvaDtka(MhwVziuaCMro4F(CHahEHwp2)LXA)WMI8o2uaDtka(4DUOCsiyg26rNlKzMHWYMHTEuByWoiR5gfwWXib0DYJDqwg4WlKzMTES)ldHcGZmYb)2Gnfq3KcGZmYb)ZWwp6CHmZmew2mekaoZih8Bdd2bzn3OWcogjGUtESdYYahEHmZmsaDN8yyGfGnDgt5LHRa6Mua8npSEZqOa4mJCW)85cbo8cTES)lJ1(Hnf5DSPa6MuaCMbCdwZWwp6CHmZmew2mS1JAdd2bzn3OWcogjGUtESdYYahEHmZS1J9FziuaCMro43gSPa6MuaCMro4Fg26rNlKzMHWYMHqbWzg5GFByWoiR5gfwWXib0DYJDqwg4WlKzMrcO7KhddSaSPZ24ldxb0nPa4BEy9MHqbWzg5G)5ZfcC4fA9y)xgR9dBkY7ytb0nPa4WG)AhmdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWMoJacUmCfq3KcGV5H1BgcfaNzKd(NpxiWHxO1J9FzS2pSPiVJnfq3KcGdZ7)dfHY5mS1JoxiZmdHLndB9O2WGDqwZnkSGJrcO7Kh7GSmWHxiZmJeq3jpggybytNXeUmCfqz(9OJxp6MhwVzyRhD(CHahEHwp2)LXA)WMI8o2uaDtkaomV)xiuoNHTE05czMziSSzyRh1ggSdYAUrHfCmsaDN8yhKLbo8czMzRh7)YqOa4mJCWVnytb0nPa4mJCW)mS1JoxiZmdHLndHcGZmYb)2WGDqwZnkSGJrcO7Kh7GSmWHxiZmJeq3jpggybytNXeUmCfq3KcGV5H1BgcfaNzKd(NpxiWHxO1J9FzS2pSPiVJnfq3KcGVrWWDecz(X(trENzyRhDUqMzgclBg26rTHb7GSMBuybhJeq3jp2bzzGdVqMz26X(VmekaoZih8Bd2uaDtkaoZih8pdB9OZfYmZqyzZqOa4mJCWVnmyhK1CJcl4yKa6o5XoildC4fYmZib0DYJHbwa20z4ZxgUcOBsbW38W6ndHcGZmYb)ZNle4Wl06X(Vmw7h2uK3XMcOBsbW3K97mdB9OZfYmZqyzZWwpQnmyhK1CJcl4yKa6o5XoildC4fYmZwp2)LHqbWzg5GFBWMcOBsbWzg5G)zyRhDUqMzgclBgcfaNzKd(THb7GSMBuybhJeq3jp2bzzGdVqMzgjGUtEmmWcWMoJGBxgUcOBsbW38W6ndHcGZmYb)ZNle4WlKqcTES)lJ)X87rTbJ1(Hnf5DMHTE05czMz)DYphbhUXJhW1(uMFtNHY87rrotnS1JYHgQHhEg26rNlKzMX87rhVE0zyRhDUqczMzRh7)YqOa4BY(DSbBkGUjfaFt2VZmS1Jo3EKgbmHnEJVDtiZmB9y)xgcfaFdF4aBWMcOBsbW3Whoyg26rNBpsdLj6b)N3whuHmZmeka(g(Wb2GHqbW3WhoGdNITZ1mu8Hd6LHEzOZfYmZwp2)LHqbWH59)HIq50gSPa6MuaCyE)FOiuoNHTE052J0iqiZmB9y)xgcfahM3)lekN2Gnfq3KcGdZ7)fcLZzyRhDU9iTBcjKzM93j)CeC4gpEax7tz(nDgkts(3c5m1qy)ogRhPHA4HNHqbW3WhoWWdpd12cHcRbd3)lekNgQHhEgcfahM3)lekNZfYmZwp2)LD(WbtaHclm9wpsBW(7KFocoCJhmC)VqOCctV1JeJicfahM3)lekN2KHraddp8muIOgE4ziua8n8Hdm8WZqzGpqamAJjrfYmZwp2)LD(WbtaHclmV)puekN2GD(WbtaHclm9wpsdp8mudxqn8WZqOa4W8()qrOCkKqMz2FN8ZrWHB84bCTpL530zOteddz6b5m1oF4audp8SZhoyciuyH59)HIq5CUqMz2FN8ZrWHB8(Rfg9tbyeXh)3j)CeC4gV)AHr)uaMnzyeWWgmoqiZmZmZWG9TLnyuYDWLqMzMzMXg2)zkG3gmk5o4siZmZmZqo8aCXgmCfqXbboy28lHmZmZmJeG9iP2Grj3bxcjKzMzMziSFhBWqOa4BY(DUeYmZmZSZhoWgSZhoyciuyH59)HIq58siZmZmZ(WF7hQnyiuaCyE)FOiuoVesiZmZmZiK8nLeGHHdNecSbdLIahWJEjKzMzMzaCHqeYpf5DWbboWgmCfqXbboy2CBYWqy)omjcgHRpNm5o5NI8oxczMzMzg)o5NI8o2GHW(DysemcxFozYDYpf5DUeYmZmZS)o9HBeEGnyuYDWLqMzgtle4WlKqcTES)lB6BXVDKffqAdghiKzMboFUwaEBWOK7GlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModfxFlEJfYIciNCg26r5qd1WdpdB9OZfYmZmZmZmB9y)xgcfaFdF4aBWMcOBsbW3Whoyg26rNlKzMzMzMz2972M20DagMHqn(haZopQHTtiHpsQnjMQHCmsWuaUaJPqMzMzMzMz3VBiua8n8Hd4q4FkByNHIpIFYWMndxFl(5WyaJXSXilUbKZHXagJzW0JqcbKZNJoxiZmZmZmZmew2meka(5dhy)dVHqbW3WhoGdH)PSHDgk(i(jddxFlE052J0qOa4B4dhWHW)u2WodfFe)KHngzXnGeDU9ineka(g(WbCi8pLnSZqXhXpzyW0JqcbKOZNBuybhHmZmZmZmZmZS)o5NJGd34Xd4AFkZVPZqX13I3yHSOasJWpgg6CHmZmZmZmZmZmsaDN8yuYDGqMzMzMzMzGdVqMzMzMbo8czMzGdVqmTqRh7)YEK8asMka7TtYgGTDKffqAdghiKzMboFUwaEBWOK7GlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModLPcWE7KSbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(Vmeka(g(Wb2Gnfq3KcGVHpCWmS1JoxiZmZmZmZmew2meka(g(Wb2)WBiua8n8Hd4q4FkByNHojsEaPXubyVDs2am05ZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOtIKhqAKaS3ojBGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)Lb)TFOBhzrbK2GXbczMzGZNRfG3gmk5o4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZq32B)qnwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMziSSziuaCC4KqG9p8gcfahhojeyddg62E7hk6CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDg62E7hQXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LHS4ETDKffqAdghiKzMboFUwaEBWOK7GlHmZmKf3lCGLeGb7BXBdgtmt8TlHmZmwilkG0gmw7h2uK3zggyX6YWwp6CHmZmZmdHLnddSyHh485Ab4NBuybhHmZmZmZmZ(7KFocoCJhpGR9Pm)ModDtM5EzSqwua5KZWwpkhAOgE4zyRhDUqMzMzMzMzRh7)YqOa4md4gSSbBkGUjfaNza3G1mS1JoxiZmZmZmZmew2mekaoZaUbl7F4nekaoZaUblJPWWalw4HS4EHdSKamyFl(5gfwWriZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6m0nPa42cWnyzSqwuaPr4hddDUqMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmWHxiZmZmZahEHmZmWHxiMwO1J9Fzes(ybWWqENTJSOasBW4aHmZmW5Z1cWBdgLChCjKzMblGKlmBWOK7GlHmZm2RhfwBWy9xyGlHmZShjWgmw)fg4siZmBb(uybK2GX6VWaxczMzSFp8JCMAdgLChCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zO4l5Jfadd5DmwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMziSSziuaCC4KqG9p8gcfahhojeyddgkoKFEag(rwl05gfwWriZmZmZmZmZmB9y)xgcfaF8oxuojeyd2uaDtka(4DUOCsiyg26rNlKzMzMzMzMzMHWYMHqbWhVZfLtcb2)WBZqOa4J35IYjHaByWqXnGKlu7F4nmWIfEWci5cBUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHYm4tHfqIA)dVHbwSWBb(uybKZfYmZmZmZmZmZEK2meka(4DUOCsiWggmuyA9OWIA)dVHbwSWJ96rHDUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHojsaQ9p8ggyXcVhjyUqMzMzMzMzMz2J0MHqbWhVZfLtcb2WGHctVh(rotrT)H3Walw4X(9WpYz685gfwWriZmZmZmZmZmZmZ(7KFocoCJhpGR9Pm)ModfFjFSayyiVJXczrbKgHFmm05czMzMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmZmdC4fYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)xg3)1oy7ilkG0gmoqiZmdC(CTa82Grj3bxczMzC)x7aCGLeGb7BXBdgtag3MmncUDZMmncUD7siZm7tiHloXbwsagSVfpoVnPa4JPF243gmw)fg4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqHb)1oWyHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbWHb)1oWgSPa6MuaCyWFTdMHTE05cjKzMzMzMzgclBggyXcVpHeU4ehyjbyW(w8482KcGpM(zJ)5gfwWriZmZmZmZmZmB9y)xgcfahM3)hkcLtBWMcOBsbWH59)HIq5Cg26rNlKzMzMzMzMzM93j)CeC4gpEax7tz(nDgkoWcibgaxqWOgQHhEgcfahM3)hkcLtdp8mudHcGJzihdB9OgQHhEg26rNlKzMzMzMzMzMHqbWHb)1oWgmekaom4V2b2KPHqbWH59)HIq5uiZmZmZmZmWHxiHmZmZmZmZqyzZqOa4WG)Ahy)dVHqbWHb)1oWykmmWIfEC)x7aCGLeGb7BXp3OWcoczMzMzMzMzMz)DYphbhUXJhW1(uMFtNHcd(RDGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LnLeWjm4V2bBhzrbK2GXbczMzGZNRfG3gmk5o4siZm7(DBmGAuyjbyW(w8g9z3m6ZwVh1(RLnLeWjMqMzg3)1oahyjbyW(w82GbJBtMgb3UztMgb3UDjKzM9jKWfN4aljad23IhN3Mua8X0pB8BdgR)cdCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zO4kjGtJ7)AhySqwua5KZWwpkhAOgE4zyRhDUqMzMzMzMzRh7)YqOa4W8(FHq50gSPa6MuaCyE)VqOCodB9OZfYmZmZmZmdHLndHcGdZ7)fcLt7F4nekaomV)xiuonMc72CJcl4iKzMzMzMzMzMTES)ldHcGdd(RDGnytb0nPa4WG)AhmdB9OZfsiZmZmZmZmZmdHLnddSyH3NqcxCIdSKamyFlECEBsbWht)SX)CJcl4iKzMzMzMzMzMzMzRh7)YqOa4W8()qrOCAd2uaDtkaomV)puekNZWwp6CHmZmZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muCGfqcmaUGGrnudp8mekaomV)puekNgE4zOgcfahZqog26rnudp8mS1JoxiZmZmZmZmZmZmZqOa4WG)Ahydgcfahg8x7aBY0qOa4W8()qrOCkKzMzMzMzMzMbo8cjKzMzMzMzMzMHWYMHqbWHb)1oW(hEdHcGdd(RDGXuyyGfl84(V2b4aljad23IFUrHfCeYmZmZmZmZmZmZS)o5NJGd34Xd4AFkZVPZqXvsaNg3)1oWyHSOasJWpgg6CHmZmZmZmZmZmZmJeq3jpgLChiKzMzMzMzMzMbo8czMzMzMzMbo8czMzMzg4WlKzMbo8cX0cTES)ldgUdWOBsbW3oYIciTbJdeYmZaNpxlaVnyuYDWLqMzglKffqAdgR9dBkY7mddSyDzyRhDUqMzMzMHWYMHbwSWdC(CTa8ZnkSGJqMzMzMzMz)DYphbhUXJhW1(uMFtNHcZ7amQHqbWnwilkGCYzyRhLdnudp8mS1JoxiZmZmZmZS1J9FziuaCC4KqGnytb0nPa44WjHGzyRhDUqMzMzMzMzRh7)YqOa4J35IYjHaBWMcOBsbWhVZfLtcbZWwp6CHmZmZmZmZqyzZqOa44WjHa7F4neka(4DUOCsiW(hEdHcGJdNecSHbdHcGpENlkNecSHbdfM3byu05gfwWriZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muyEhGrnekaUXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHwp2)LXE9XWWvWNC7ilkG0gmoqiZmdC(CTa82Grj3bxczMzilUx4aljad23I3gmM4B3UeYmZGH7)fcLtCGLeGb7BXBdgm6siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqHP1hdZMc(KglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(VmekaooCsiWgSPa6MuaCC4KqWmS1JoxiZmZmZmZS1J9Fziua8ncgUJqiZp22Gnfq3KcGVrWWDecz(X(trENzyRhDUqMzMzMzMziSSziuaCC4KqGnmyOtKe(JeviZmZmZmZShPHqbWXHtcb2WGHobWNW3bviZmZmZmZShPHqbW3iy4ocHm)yBddg6MBagGZKp(UrCC7BUbCDJyQOczMzMzMzM9ineka(gbd3riK5hBByWq3CdWaCM8X3nIJ4Wu3Cdmr2iCqfYmZmZmZm7rAiua8ncgUJqiZp22WGHU5gGb4m5JVBehHjMN0ezIGkKzMzMzMz2J0qOa4BemChHqMFSTHbdDZnadWzYhF3ioUHncMyIGo3OWcoczMzMzMzMzMzRh7)YqOa4md4gSSbBkGUjfaNza3G1mS1JoxiZmZmZmZmZmB9y)xgcfahM3)lekN2Gnfq3KcGdZ7)fcLZzyRhDUqMzMzMzMzMz26X(VmeSncgUJqiHFUwaBW(7KFocoCJhg(rwlmIyGfGnDgt4YyIEqOW06JHndLW1Ntaj685miITZfLtcbmSHbJaHeYmZmZmZmZmZqyzZqW2iy4ocHe(5AbS)H3qOa4md4gSmMcddSyHhYI7foWscWG9T4T)H3qOa4W8(FHq50ykmmWIfEWW9)cHYjoWscWG9T4NBuybhHmZmZmZmZmZmZm7Vt(5i4WnE8aU2NY8B6muyA9XWSPGpPXczrbKgHFmm05czMzMzMzMzMzMzgjGUtEmk5oqiZmZmZmZmZmdC4fYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)x2hglGeHc2oYIciTbJdeYmZaNpxlaVnyuYDWLqMzgYI7foWscWG9T4TbJj(2TlHmZmy4(FHq5ehyjbyW(w82GbJUeYmZyHSOasBWyTFytrENzyGfRldB9OZfYmZmZmew2mmWIfEGZNRfGFUrHfCeYmZmZmZm7Vt(5i4WnE8aU2NY8B6m0jcJfqIqbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(VmekaooCsiWgSPa6MuaCC4KqWmS1JoxiZmZmZmZS1J9Fziua8X7Cr5KqGnytb0nPa4J35IYjHGzyRhDUqMzMzMzMzRh7)YqOa4W8(FHq50gSPa6MuaCyE)VqOCodB9OZfYmZmZmZmdHLndHcGJdNecS)H3qOa4J35IYjHa7F4nekaomV)xiuoT)H3qOa44WjHaByWqHP3bBh(NRfa1(hEdHcGpENlkNecSHbdDsuybKO2)WBiuaCyE)VqOCAmfgbZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOteglGeHcmwilkG0i8JHHoxiZmZmZmZmZmJeq3jpgLChiKzMzMzMzg4WlKzMzMzGdVqMzg4Wletl06X(VSp509dcfSDKffqAdghiKzMboFUwaEBWOK7GlHmZmy4(FHq5ehyjbyW(w82GrWLqMzglKffqAdgR9dBkY7mddSyDzyRhDUqMzMzMHWYMHbwSWdC(CTa8ZnkSGJqMzMzMzMz)DYphbhUXJhW1(uMFtNHorYP7hekWyHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbW3WhoWgSPa6Mua8n8HdMHTE05czMzMzMzMTES)ldHcGdZ7)fcLtBWMcOBsbWH59)cHY5mS1JoxiZmZmZmZmew2meka(g(Wb2)WBiuaCyE)VqOCA)dVHqbW3WhoGdH)PSHDg6ejNUFqOa052)WBiuaCyE)VqOCAmfggyXcpy4(FHq5ehyjbyW(w8ZnkSGJqMzMzMzMzMz2FN8ZrWHB84bCTpL530zOtKC6(bHcmwilkG0i8JHHoxiZmZmZmZmZmJeq3jpgLChiKzMzMzMzg4WlKzMzMzGdVqMzg4Wletl06X(VS)Hnc4q32)83oYIciTbJdeYmZaNpxlaVnyuYDWLqMzgmC)VqOCIdSKamyFlEBWi4siZmJfYIciTbJ1(Hnf5DMHbwSUmS1JoxiZmZmZqyzZWalw4boFUwa(5gfwWriZmZmZmZS)o5NJGd34Xd4AFkZVPZqN4Hnc4qn4)Z3yHSOaYjNHTEuo0qn8WZWwp6CHmZmZmZmZwp2)LHqbW3WhoWgSPa6Mua8n8HdMHTE05czMzMzMzMHWYMHqbW3WhoW(hEdHcGVHpCahc)tzd7m0jEyJaouBB)ZhD(CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDg6epSrahQb)F(glKffqAe(XWqNlKzMzMzMzMzMrcO7KhJsUdeYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfA9y)xgjaHnHGTJSOasBW4aHmZmW5Z1cWBdgLChCjKzMXczrbK2GXA)WMI8oZWalwxg26rNlKzMzMziSSzyGfl8aNpxla)CJcl4iKzMzMzMz2FN8ZrWHB84bCTpL530zOmvaBecbglKffqo5mS1JYHgQHhEg26rNlKzMzMzMz26X(Vmeka(g(Wb2Gnfq3KcGVHpCWmS1JoxiZmZmZmZmew2meka(g(Wb2)WBZqOa4B4dhWHW)u2WodLPcyJqiaDU9ineka(g(WbCi8pLnSZqXbWg2dcmChGoF(CJcl4iKzMzMzMzMzM93j)CeC4gpEax7tz(nDgktfWgHqGXczrbKgHFmm05czMzMzMzMzMzKa6o5XOK7aHmZmZmZmZahEHmZmZmdC4fYmZahEHyAHe6Vt(5i4WnESqwua5yaj3iSb2GXbczMzSqwuajMnyCGqMzMzMn9T43oYIciVeYmZmZShjpGKPcWE7KSbyBhzrbKxczMzMzg83(HUDKffqEjKzMzMzilUxBhzrbKxczMzMzgHKpwammK3z7ilkG8siZmZmZ4(V2bBhzrbKxczMzMz2usaNWG)AhSDKffqEjKzMzMzWWDagDtka(2rwua5LqMzMzMXE9XWWvWNC7ilkG8siZmZmZ(WybKiuW2rwua5LqMzMzM9jNUFqOGTJSOaYlHmZmZm7FyJao0T9p)TJSOaYlHmZmZmJeGWMqW2rwua5LqMzgtFjKzMHTEumCEm)EuBW4aM(siZmJC)ydgR9dBkY7mddSyDzR3JU5H1BUqMzMzMHbwSWdB9Oy48y(9O2GXbmTqMzMzMX6rAyRh9YqOa4gYXi8JqInB9E0npSEZn(NqMzMzMzMz)DYphbhUXJhW1(uMFtNHY87rnS1JYHgQHhEg26rn8WZqnudp8mekaoEiua85czMzMzMzMHbwS4qY9Z2rwuaj2mS1JoxiZmZmZahEHeYmZmZS)o5NJGd34Xd4AFkZVPZqhVEumJ(S17r5qd1WdpdFmgyXcpS1JIHZJ53JoxiZmZmZ(7KFocoCJhpGR9Pm)ModdSyHh26rXW5X87rNlKzMzMzSEKgIny4JXalw4HTEumCEm)E0lJGl7obg)tiZmZmZmZS1J9FzyRh1gmmWIfEyRhfdNhZVhLicdHmZmZmZmZ(7KFocoCJhpGR9Pm)ModL53JICMAyRh1MHqbKF6JCohAOgE4zyRhDUqMzMzMzMz8pMFp6mS1JoxiZmZmZahEHmZmWH)siZmJC)SDKffqIzdgR9dBkY7mddSyDzyRhDUqMzMzMX6rA4)YyHSOasd5ye(riXMHbwSWJfYIciXMB8pHmZmZmZmZqyzZyHSOasoKfYIciNHTE05ZnkSGJqMzMzMzMzMz29722qMcl14cytFpEJ(UmKdgf85ThlBYBhJAFEEKZudB9Og9zFBHGrVSppV9p2JRjpaBQTfcfwd5W6zFUE7uJclWqOa42)WBuybg26rn2Vd9JCqotneQH9mWNnSglKffqAS)hJhHn9tbgfwGHqbWTZhoW(hEdH97iKzMzMzMzMzMHbwSWdB9Oy48y(9OeXhJbwSWdB9Oy48y(9O2KHradBWWwpQqMzMzMzMzMzgjGUtEeYmZmZmZmdC4fYmZmZmWHxiZmdC4fIPfsO)o5NJGd34Xd4AFkZVP2GXA)WMI8oZECn5nxiZmdHLnJhW1(05gfwWriZmZmZiKe5qNHRakoiWbZMpxiZmZmZysa348ElmoYK7WjC2JRjV5czMzMzgHKih6S5czMzGdVqGdVqc93j)CeC4gpm8JSwy2GXbczMz3VpHpjjYJuiZmJibmSbJdeYmZmZS73Nij8hPng)iRfMqMzMzMrefMwpkSOmSb72LqMzMzMreLzWNclGeLHny3UeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWi4siZmZmZiIogweWIhdLHnyeCjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgmcUeYmZmZmIOt23wyOmSbJGlHmZmZmJikUUFWqzydgbxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHnyeCjKzMzMzerX33c8jHJHYWgmcUeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgmcUeYmZmZmIO4S17oU)hEaVnERhjpgkdBWi4siZmZmZiIoHp501hHBagkdBWi4siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHnyeCjKzMzMzerHjYhggxVTWqzydgbxczMzMzgr0j8p8yOmSb72LqMzgtFjKzMD)o((xFEKJqMzgryedBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzyd2TlHmZmZmJi62(ilug2GD7siZmZmZiIIVRpfGYWgmcUeYmZmZmIOJHfbS4XqzydgbxczMzMz297ta8j8DSX4hzTWeYmZmZmIOt6aUJ7)HhWBtexayOmSbJGlHmZmZmJikoB9UJ7)HhWBtexayOmSbJGlHmZmZmJi6K9TfgkdBWUDjKzMzMzerX19dgkdBWUDjKzMzMzerN0bCh3)dpG322NnadLHnyeCjKzMzMzerXzR3DC)p8aEBBF2amug2GrWLqMzMzMrefFFlWNeogkdBWi4siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSbJGlHmZmZmJi6e(KtxFeUbyOmSb72LqMzMzMreDm9ZnadLHny3UeYmZmZmIOBhbJAta8j8DWqzyd2TlHmZmZmJikt(NofqIHYWgSBxczMzMzgruyI8HHX1Blmug2GD7siZmZmZiIoH)HhdLHny3UeYmZy6lHmZS73X9(HcifYmZiYeyydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzyd2TlHmZmZmJikZGpfwajkdBWUDjKzMzMzer32hzHYWgmcUeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgmcUeYmZmZmIOt23wyOmSbJGlHmZmZmJikUUFWqzydgbxczMzMzgr0jDa3X9)Wd4TT9zdWqzyd2TlHmZmZmJikoB9UJ7)HhWBB7ZgGHYWgSBxczMzMzgru89TaFs4yOmSbJGlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgmcUeYmZmZmIOt4toD9r4gGHYWgSBxczMzMzgr0X0p3amug2GrWLqMzMzMreD7iyuBcGpHVdgkdBWi4siZmZmZiIYK)PtbKyOmSbJGlHmZmZmJikmr(WW46TfgkdBWi4siZmZmZiIoH)HhdLHny3UeYmZy6lHmZS73zQVP7aHmZmIBmdBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzydgbxczMzMzgr0T9rwOmSb72LqMzMzMrefFxFkaLHny3UeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GrWLqMzMzMrefNTE3X9)Wd4TjIlamug2GD7siZmZmZiIozFBHHYWgSBxczMzMzgruCD)GHYWgSBxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzyd2TlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWUDjKzMzMzer3ocg1Ma4t47GHYWgmcUeYmZmZmIOm5F6uajgkdBWi4siZmZmZiIctKpmmUEBHHYWgSBxczMzMzgr0j8p8yOmSb72LqMzgtFjKzMD)o(sIaWOczMzeHXzydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzydgbxczMzMzgruMbFkSasug2GD7siZmZmZiIUTpYcLHny3UeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgSBxczMzMzgruC26Dh3)dpG3MiUaWqzyd2TlHmZmZmJi6K9TfgkdBWUDjKzMzMzerX19dgkdBWUDjKzMzMzerN0bCh3)dpG322NnadLHnyeCjKzMzMzerXzR3DC)p8aEBBF2amug2GD7siZmZmZiIIVVf4tchdLHny3UeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgSBxczMzMzgruC26Dh3)dpG3gV1JKhdLHny3UeYmZmZmIOt4toD9r4gGHYWgSBxczMzMzgr0X0p3amug2GrWLqMzMzMreD7iyuBcGpHVdgkdBWUDjKzMzMzerzY)0Pasmug2GrWLqMzMzMrefMiFyyC92cdLHny3UeYmZmZmIOt4F4XqzydgbxczMzm9LqMz297mj4tH1yICqMclviZmJi(edBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWUDjKzMzMzerzg8PWcirzyd2TlHmZmZmJi62(ilug2GD7siZmZmZiIIVRpfGYWgmcUeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GrWLqMzMzMrefNTE3X9)Wd4TjIlamug2GrWLqMzMzMreDY(2cdLHny3UeYmZmZmIO46(bdLHny3UeYmZmZmIOt6aUJ7)HhWBB7ZgGHYWgmcUeYmZmZmIO4S17oU)hEaVTTpBagkdBWi4siZmZmZiIIVVf4tchdLHnyeCjKzMzMzerN0bCh3)dpG3gV1JKhdLHnyeCjKzMzMzerXzR3DC)p8aEB8wpsEmug2GrWLqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgSBxczMzMzgr0TJGrTja(e(oyOmSb72LqMzMzMreLj)tNciXqzyd2TlHmZmZmJikmr(WW46TfgkdBWUDjKzMzMzerNW)WJHYWgSBxczMzm9LqMz297JH9d)FeYmZiYuYWgmoqiZmZmZUFFIKWFK2y8JSwyczMzMzgruyA9OWIYWgSBxczMzMzgruMbFkSasug2GD7siZmZmZiIUTpYcLHnyeCjKzMzMzerX31Ncqzyd2TlHmZmZmJi6yyralEmug2GrWLqMzMzMD)(eaFcFhBm(rwlmHmZmZmJi6KoG74(F4b82eXfagkdBWi4siZmZmZiIIZwV74(F4b82eXfagkdBWUDjKzMzMzerNSVTWqzyd2TlHmZmZmJikUUFWqzyd2TlHmZmZmJi6KoG74(F4b822(SbyOmSbJGlHmZmZmJikoB9UJ7)HhWBB7ZgGHYWgSBxczMzMzgru89TaFs4yOmSb72LqMzMzMreDshWDC)p8aEB8wpsEmug2GD7siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHnyeCjKzMzMzerHjYhggxVTWqzyd2TlHmZmZmJi6e(hEmug2GD7siZmJPVeYmZUFFB)PaHmZmImXmSbJdeYmZmZS73Nij8hPng)iRfMqMzMzMrefMwpkSOmSbJGlHmZmZmJikZGpfwajkdBWUDjKzMzMzer32hzHYWgSBxczMzMzgru8D9Paug2GD7siZmZmZiIogweWIhdLHny3UeYmZmZS73Na4t47yJXpYAHjKzMzMzerN0bCh3)dpG3MiUaWqzyd2TlHmZmZmJikoB9UJ7)HhWBtexayOmSb72LqMzMzMreDY(2cdLHny3UeYmZmZmIO46(bdLHny3UeYmZmZmIOt6aUJ7)HhWBB7ZgGHYWgSBxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzyd2TlHmZmZmJi6KoG74(F4b824TEK8yOmSbJGlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWi4siZmZmZiIUDemQnbWNW3bdLHny3UeYmZmZmIOm5F6uajgkdBWi4siZmZmZiIctKpmmUEBHHYWgSBxczMzMzgr0j8p8yOmSbJGlHmZmM(siZm7(9j8jxp24xiZmJi(mdBW4aHmZmZm7(9jsc)rAJXpYAHjKzMzMzerHP1JclkdBWi4siZmZmZiIYm4tHfqIYWgSBxczMzMzgr0T9rwOmSb72LqMzMzMrefFxFkaLHny3UeYmZmZmIOJHfbS4Xqzyd2TlHmZmZm7(9ja(e(o2y8JSwyczMzMzgr0jDa3X9)Wd4TjIlamug2GD7siZmZmZiIIZwV74(F4b82eXfagkdBWUDjKzMzMzerNSVTWqzyd2TlHmZmZmJikUUFWqzyd2TlHmZmZmJi6KoG74(F4b822(SbyOmSb72LqMzMzMrefNTE3X9)Wd4TT9zdWqzyd2TlHmZmZmJik((wGpjCmug2GD7siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzyd2TlHmZmZmJikt(NofqIHYWgmcUeYmZmZmIOWe5ddJR3wyOmSb72LqMzMzMreDc)dpgkdBWi4siZmJPVeYmZUFFBVd(fYmZisWng2GXbczMzMz297tKe(J0gJFK1ctiZmZmZiIctRhfwug2GD7siZmZmZiIYm4tHfqIYWgmcUeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWi4siZmZmZiIogweWIhdLHnyeCjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgSBxczMzMzgr0j7Blmug2GD7siZmZmZiIIR7hmug2GD7siZmZmZiIoPd4oU)hEaVTTpBagkdBWi4siZmZmZiIIZwV74(F4b822(SbyOmSb72LqMzMzMrefFFlWNeogkdBWi4siZmZmZiIoPd4oU)hEaVnERhjpgkdBWi4siZmZmZiIIZwV74(F4b824TEK8yOmSb72LqMzMzMreDcFYPRpc3amug2GD7siZmZmZiIoM(5gGHYWgmcUeYmZmZmIOBhbJAta8j8DWqzydgbxczMzMzgruM8pDkGedLHny3UeYmZmZmIOWe5ddJR3wyOmSb72LqMzMzMreDc)dpgkdBWUDjKzMX0xczMz3VZKK7i8czMzejGag2GXbczMzMz297tKe(J0gJFK1ctiZmZmZiIctRhfwug2GD7siZmZmZiIYm4tHfqIYWgmcUeYmZmZmIOB7JSqzyd2TlHmZmZmJik(U(uakdBWUDjKzMzMzerhdlcyXJHYWgSBxczMzMz297ta8j8DSX4hzTWeYmZmZmIOt6aUJ7)HhWBtexayOmSb72LqMzMzMrefNTE3X9)Wd4TjIlamug2GD7siZmZmZiIozFBHHYWgSBxczMzMzgruCD)GHYWgSBxczMzMzgr0jDa3X9)Wd4TT9zdWqzydgbxczMzMzgruC26Dh3)dpG322NnadLHny3UeYmZmZmIO47Bb(KWXqzydgbxczMzMzgr0jDa3X9)Wd4TXB9i5Xqzyd2TlHmZmZmJikoB9UJ7)HhWBJ36rYJHYWgSBxczMzMzgr0j8jNU(iCdWqzyd2TlHmZmZmJi6y6NBagkdBWi4siZmZmZiIUDemQnbWNW3bdLHnyeCjKzMzMzerzY)0Pasmug2GrWLqMzMzMrefMiFyyC92cdLHny3UeYmZmZmIOt4F4Xqzyd2TlHmZmM(siZm7(DMea)DmCVFOasHmZmIeaJyydghiKzMzMz3Vprs4psBm(rwlmHmZmZmJikmTEuyrzyd2TlHmZmZmJikZGpfwajkdBWi4siZmZmZiIUTpYcLHny3UeYmZmZmIO476tbOmSb72LqMzMzMreDmSiGfpgkdBWUDjKzMzMz3VpbWNW3XgJFK1ctiZmZmZiIoPd4oU)hEaVnrCbGHYWgmcUeYmZmZmIO4S17oU)hEaVnrCbGHYWgSBxczMzMzgr0j7Blmug2GD7siZmZmZiIIR7hmug2GD7siZmZmZiIoPd4oU)hEaVTTpBagkdBWUDjKzMzMzerXzR3DC)p8aEBBF2amug2GD7siZmZmZiIIVVf4tchdLHny3UeYmZmZmIOt6aUJ7)HhWBJ36rYJHYWgmcUeYmZmZmIO4S17oU)hEaVnERhjpgkdBWUDjKzMzMzerNWNC66JWnadLHnyeCjKzMzMzerht)CdWqzyd2TlHmZmZmJi62rWO2eaFcFhmug2GrWLqMzMzMreLj)tNciXqzyd2TlHmZmZmJikmr(WW46TfgkdBWUDjKzMzMzerNW)WJHYWgSBxczMzm9LqmTq)DYphbhUXdgU)xiuoHP36rIzdghiKzMHIpqamAJzZIf(mp(mp(mp6LD)UHVVhPqMzgk(abWOnMnlwSyXIflwOx297gm9Gd)DeYmZqXhiagTXSzXIaalw3UHEz3VBmrpSFWH)oczMzO4deaJ2y2SyD7gt5nEE0l7(DJP(jbczMzO4deaJ2y2Sy9zcmbyCaa9YUF32icrylKzMHIpqamAJzZIflwmX3UDd9YUF3ygmfC4)KCkKzMHIpqamAJzZIfaFInBM4BOx2972ejPiS(SPczMzO4deaJ2y2SyD7gB2SyHEz3VB4gGqUEp4cX0JOJOJgtjrMofqocNrJPCsiy0y27y0h8rJXG9T1KoJgJb7BRjDMiBkc3GrJbCdouSrJzEstchoYu3OjYKt(JgZEhJ(GZrkNecgngJ(PGDc5)uWOXSHfWg)Jgd4gCOJgZEhJ(GpA897gZtAs4WrM6gnrMCYxiw7h2uK3z2FTWOFka7YaZfYmZ(7KFocoCJ3FTWOFkaZgS)AHr)uaMqczMzRh7)YwVhDZdRNny4kGY87r38W6nBUqMz2FN8ZrWHB8yHSOaYXasUryd4qY9ZS17r38W6nxiZmdMwpmaZVhD2CHmZmsaDN8yuYDGqGdVqJgZEhJ(GZryr4bJgtrGd4hrhnMcWfkb47d5qhnMPUjUIBCgnE9(8JWz0y6Fbouy0iCgng((IImcNr0r0rJP)f4qhHZOXW3xuKr4mIoIoAmpclwiS3xuohHZOXW3xuKr4mIoIoAm5NnyeoJgdFFrrgHZi6i6OXS(SPiVZiCgng((IImcNr0r0rJjFlWiCgng((IImcNr0r0rJrotjF7eocNrJHVVOiJWzeDeD0yc5Mq6Fbo0r4mAm89ffzeoJOJOJOJgJCOaYZFbdaKyiVZOnWegn(SdhhsKPtbKyJ2abJgtcMI8o4WjHGrJry)oJgtb4cLGrJXhDgnMcWfkbW07q)ih4GdD04jXefNXBYKB0OXi8JgpXD6J53JUj73z0ykaxOeS93HoA8gHlescWW26Z5OXSFVf)BRdoaCHUrNpxla)iUgng5Gq5ig9tsb8J2abJgZ(9w8VToJ4AeDeD0yUhTbc2yyebJOJgba \ No newline at end of file +dqvp5bGiO6rqOuDjiuYOucNsr1QuIi9kucXSuvDlq0UqOggiCmeyzQkv9muvOPHQsDnvLO2gkH03qjunoucLZHQsQ1HQIENse19uK9HQsY)GqH6GOKAHOQepuHsteLOUOse2OQs5JqOAKieNuHQvcQxcHczMOkUPsK2PcHFQq0qri5OOezPOQGNIitvvXvHqPSvvLkFvHIZQQeP3Iknxiu0Drf7fI(lkjdwoSQSyfspgrnzfCzGnJs9zfLrdbNgsRwjI41qiZwPUniTBv8BvA4iOJRQewokEouMosxxjTDuL(UsuJxvjDEuvTEiuW7rjy(QkrCFesTFAKeG8dsspKFqsrscdjPVN4VmXe89qsWxgYz818nlklkzc4RrsckssdijnG8dssdOyljRhYuuEbij92BKK4FKSzJbOihXxMpcbsspYuuEbFyqNndWS07aa5iGKaiqscJWhzaYrabssyGnBI6IEOij9zKefplX3(GK0BJo7GKeplX3(GKeca0ziqr(n((ldbFKffccyXzX5BwSVmFtaFZ3izdjF)LrsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIKeZDdq(bjjORBkkYpiPiPijnGYMnk51nLFKFqsc66MII8dskskssmpYaKFqsc66MII8dskskssONzm3vcr(bjjORBkkYpiPiPijriVesFBWHI8dssqx3uuKFqsrsrsI9Jmf9Eq(bjjORBkkYpiPiPijTIbyf59ddd5OiPij9oOqFuas(cssmGzO3Zh(jeGK0a)NhuuYZyUReIKe4Re(odGbK8fKKOmOZMbyq(bjjmeUlpYdssyiCxEKhwtMIYlajfjj0bKKy9k9YZ9srsc9qbmN3(7amyO3dYrWhrs6Sc9dd6SzagmKJGaKK(6izZgdqrocizX5Biqsc9Gszfg9XqbdihbbijTm6afbKFJV)YqWhzrHGawCwC(Mf7lZ3eW38ns2qY3SOiPijrg5hKJGaKFqsIc(kLGVDpusOigaihX3dbssdOyljRhYuuEbij92BKKEKPO8c(WGoBgGzP3baYrajbqGK0Jmf9EWq(bjjm6JHI8dssdxwbfGH9MbqokskssOhukYpijnCzf5vm6fks(cssKxXOxOijTVKFBBam66mBYy)2yaHrzBNl1gd4HiwVY8Wi94fmyueahBmGhIy9kZdJ0JxWGnzSarBGZGWOSTZLAJb8qeRxzEyKE8cgiES8JONrraCSXaEiI1RmpmspEbdepw(r0ZMmwGOnWzqyu225sTXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGrraCSXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGnzSarBGZGWcdjKgkfaDepOGFdLcGYd6br)gkfaLLwFBuk))gkfaLhaVG9VHsbqxk6HhaVG9VHsbq)WpHGFdLcGsAD0p8ti4hLcGsI(iJOXExp0FdLcGUeFXkkH8Cj)BOua0pGVsxza)ggyVjkguYGFJ8(HHnol)ByRJsE)WWgNL)TrrpdF4NqWp4Re(ipol)Bya64S8VHInwMhBk6zgFa8MbouBYqCaDCka64h23fy7lDUWqcPTVx64KVNFBFV0r8Gc(T99szP13HIs5)3iVYWaoK5FCw(323lLLwFBuk))2(sgrGHFdfJLwby0XPaO)2xScWOJZY)gkgRjtr5fytgIdO8CVus7lD8d77cS9LoxyiH04b9Gid7cfqrHcWSHlaZoxQT8LbrcVVKFBJ96Hmf9ESza64uauEqpiAb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMXaORmhdXbuEUxkP9LYd6brlW2x6CHbNbH3xYVTXE9qMIEp2maDCka6iEqblW2x6CHnZmu22cS9LAtt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDX3)BioGYZ9sjTV0XpSVlW2x685cdodcVVKFBJ96Hmf9ESza64ua0p8tiyb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMTVKFBdLcGYd6br2KndqhNcGYd6brlW2x6CHnZmu22cukakpOheztt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDbl6VH4a64ua0XpSVlqPaO8GEq085cdodcVVKFBJ96Hmf9ESza64uausRJs5NqWcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6cw8FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaO8a4fSxGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxW3)gIdOJtbqh)W(UaLcGYd6brZNlm4mi8(s(Tn2RhYu07XMbOJtbq)U3EfSaBFPZf2mZqzBlW2xQnnzh09CJIa4yma6kZXoOBdCge2mZ2xYVTHsbq5b9GiBYMbOJtbq5b9GOfy7lDUWMzgkBBbkfaLh0dISPj7GUNBueahJbqxzo2bDBGZGWMzgdGUYCmmWgqMUGac(nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGYsRVdfLY)cS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehq55EPK2x64h23fy7lD(CHbNbH3xYVTXE9qMIEp2maDCkaklT(2Ou(xGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGUeFXkkH8Cj)OO3ZcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6c(6FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaOJt(EwGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxqae)gIdOJtbqh)W(UaLcGYd6brZNlm4miSWcVVKFBB4YZ9sTjJ96Hmf9EwGTV05cBMzVvMhRahEjEam66mEUZwGZZ9srpZmS9LYNgUrmXg2(sNlSzMXZ9sjTV0fy7lDUWcBMz7l532qPaOJt(ESjBgGoofaDCY3ZcS9Lo3Umgb8r(MVHacHnZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUDzmCeBheDUlFWf2mZqPaOJ4bfytgkfaDepOa(Cg26OlWrmp4)g(VHpxyZmBFj)2gkfaLLwFBuk)2KndqhNcGYsRVnkL)fy7lDUDzmiewyZmdLTDUuBmGhIy9kZdJ0JxWaXJLFe9iECka6yFKraWfLcGoIhuahJIa4iSzMzMzJb8qeRxzEyKE8cgiES8JOhXJtbqh7JmcaUOua0r8Gc4ytgliSzMzMzMzgk57XMmuka64KVNFHnZmZmZmZ(I13gLYVnzOuauwA9TrP8)lSzMzMzeTWMzg4mim4miSWcVVKFBB2Dp8n0nfWytgliSzMboVr3GbBYOmRGFHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTahXV7bJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgKqAJBZwbyygk1gUam7CPg2kHeEzO2i5dg6XyaZaFfXyHnZmZmZmZGesdLcGoIhuaFc9rjJWcCeRbweBXce)UhM)L8LSGe6MxaZ8VKVKfJ9siHaM5ZXNlSzMzMzMzgkBBbkfa98GcS3zWqPaOJ4bfWNqFuYiSahXAGfXq87EaFUDzmuka6iEqb8j0hLmclWrSgyrmsOBEbm4ZTlJHsbqhXdkGpH(OKryboI1alIn2lHecyWNp3OiaocBMzMzMzMzMzVvMhRahEjEam66mEUZwGJ439GXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTDzgam8ba2DLHma7BOBkGXMmwqyZmdCEJUbd2Krzwb)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBboFaGDxzidm2OBkGzjBy7lLpnCJyInS9LoxyZmZmZmZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUWMzMzMzMzOSTfOua0r8GcS3zWqPaOJ4bfWNqFuYiSaFKmdagJpaWURmKby4ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhjZaGXyay3vgYaJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBd6D9q)g6McySjJfe2mZaN3OBWGnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGV076HASr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbq)WpHaBAYWx6D9qXNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWx6D9qn2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(Tn0nV7VHUPagBYybHnZmW5n6gmytgLzf8lSzMHU5D)bbgagc39GnzSySyq8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JZdVBJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaLhaVGTnzZa0XPaO8a4fSxGTV05cBMzMzMzMHY2wGsbq5bWlyBVZGHsbq5bWlyB8vggyZMy0nV7piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhNcGABaVGTXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTriZLnadd9E(g6McySjJfe2mZaN3OBWGnzuMvWVWMzgcaMrXSjJYSc(f2mZiVVueSjJ9BJb(f2mZUmaBYy)2yGFHnZSn4rraWytg73gd8lSzMr(Ere6zMnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGtumx2amm07XyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)WpHaBYMbOJtbq)WpHGfy7lDUWMzMzMzMzOSTfOua0p8tiWENbdLcG(HFcb20KH)H5naWqe6EJp3OiaocBMzMzMzMzMz7l532qPaOKwhLYpHaBYMbOJtbqjTokLFcblW2x6CHnZmZmZmZmZmu22cukakP1rP8tiWENbBbkfaL06Ou(jeyttgoramJIBVZGHb2SjgbaZOyZf2mZmZmZmZmZUm2cukakP1rP8tiWMMmCEapkcagC7DgmmWMnXBWJIaGzUWMzMzMzMzMz2LXwGsbqjTokLFcb20KHp29LIaU9odggyZMyY7lfH5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(iza427myyGnBIVmG5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(yVxeHEMHBVZGHb2SjM89Ii0ZS5ZnkcGJWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBborXCzdWWqVhJn6McymcFyy4Zf2mZmZmZmZmZmZmgaDL5yuMvGWMzMzMzMzMzg4miSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(TnEF7vW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZ49TxbFqGbGHWDpytgF8lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwG)DV9kWyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)U3Efyt2maDCka6392RGfy7lDUWcBMzMzMzMHY2wGb2Sj(riHB()GadadH7E4ZDCkakj6JmIMBueahHnZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4FqaWamWxrXOgUrmXgkfaLLwFhkkLFJyInCdLcGIzOhdBFPgUrmXg2(sNlSzMzMzMzMzMHsbq)U3Efytgkfa97E7vGTKAOuauwA9DOOu(f2mZmZmZmdCgewyZmZmZmZmu22cuka6392Ra7Dgmuka6392RaJVYWaB2eZ7BVc(GadadH7EyUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTa)7E7vGXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTnJbW)392RGVHUPagBYybHnZmW5n6gmytgLzf8lSzMbjKgja1OiWaWq4Uhm61GWOxBFVu7T32mga)ycBMz8(2RGpiWaWq4UhSj7lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGJ4ma(nEF7vGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cukaklT(2Ou(T3zWqPaOS06BJs534RmiMBueahHnZmZmZmZmZS9L8BBOua0V7Txb2KndqhNcG(DV9kyb2(sNlSWMzMzMzMzMzgkBBbgyZM4hHeU5)dcmameU7Hp3XPaOKOpYiAUrraCe2mZmZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBb(heamad8vumQHBetSHsbqzP13HIs53iMyd3qPaOyg6XW2xQHBetSHTV05cBMzMzMzMzMzMzgkfa97E7vGnzOua0V7Txb2sQHsbqzP13HIs5xyZmZmZmZmZmdCgewyZmZmZmZmZmdLTTaLcG(DV9kWENbdLcG(DV9kW4RmmWMnX8(2RGpiWaWq4UhMBueahHnZmZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCeNbWVX7BVcm2OBkGXi8HHHpxyZmZmZmZmZmZmZya0vMJrzwbcBMzMzMzMzMzGZGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532(IvagDCka63q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwAfGrnukaQXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMHY2wGsbq)WpHa7DgmukakP1rP8tiWENbdLcG(HFcb20KHsbqjTokLFcb20KHZsRamk(CJIa4iSzMzMzMzMzM9wzEScC4L4bWORZ45oBbolTcWOgkfa1yJUPagJWhgg(CHnZmZmZmZmZmgaDL5yuMvGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532iVFyyio4X8n0nfWytgliSzMboVr3GbBYOmRGFHnZm0nV7piWaWq4UhSjJfdci(f2mZ(I13gLY)heyayiC3d2K99)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBb(y3pmmBg4XySr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZS9L8BBOua0L4lwrjKNlzBYMbOJtbqxIVyfLqEUKFu07zb2(sNlSzMzMzMzgkBBbkfa9d)ecSPjdN1mqVm4cBMzMzMzMDzmuka6h(jeyttg(yapcVhCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9TXhbIVe8bCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9Hpm(iqmAj(GlSzMzMzMz2LXqPaOlXxSIsipxY20KHp(i(UpFPe1sWQXYZiznIr4cBMzMzMzMDzmuka6s8fROeYZLSnnz4JpIV7ZxkrTeSAelXyrmcFUrraCe2mZmZmZmZmZ2xYVTHsbq5bWlyBt2maDCkakpaEb7fy7lDUWMzMzMzMzMz2(s(TnukaklT(2Ou(TjBgGoofaLLwFBuk)lW2x6CHnZmZmZmZmZS9L8BBOylXxSIsiHVr3aBYERmpwbo8smgIq3BmUyGnGmDbF83qSDqPJD)WWwGt4(XpGbF(CoCXwhLYpHao20KrGWcBMzMzMzMzMzOSTfOylXxSIsiHVr3a7DgmukakpaEbBJVYWaB2eJU5D)bbgagc39G9odgkfaLLwFBuk)gFLHb2Sj(lwFBuk)FqGbGHWDpm3OiaocBMzMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JD)WWSzGhJXgDtbmgHpmm85cBMzMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmZmdCge2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22dXaGbLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMzg6M39heyayiC3d2KXIbbe)cBMzFX6BJs5)dcmameU7bBY((FHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTaN1igamOuGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbqjTokLFcb27myOuauwA9TrP8BVZGHsbq)WpHaBAYWh79GTc9n6gGBVZGHsbqjTokLFcb20KHpskcagC7DgmukaklT(2Ou(n(kJG5gfbWryZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCwJyaWGsbgB0nfWye(WWWNlSzMzMzMzMzMXaORmhJYSce2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22Jz26bLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMz2xS(2Ou()GadadH7EWMmc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwZmB9GsbgB0nfWSKnS9LYNgUrmXg2(sNlSzMzMzMz2(s(Tnuka6iEqb2KndqhNcGoIhuWcS9LoxyZmZmZmZS9L8BBOuauwA9TrP8Bt2maDCkaklT(2Ou(xGTV05cBMzMzMzMHY2wGsbqhXdkWENbdLcGYsRVnkLF7Dgmuka6iEqb8j0hLmclWznZS1dkfGp3ENbdLcGYsRVnkLFJVYWaB2e)fRVnkL)piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWznZS1dkfySr3uaJr4dddFUWMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmWzqyZmZmZaNbHnZmWzqyIw49L8BBVdzuWHU0359n0nfWytgliSzMboVr3GbBYOmRGFHnZSVy9TrP8)bbgagc39Gnze8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4S(qgfCOg035zSr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOJ4bfyt2maDCka6iEqblW2x6CHnZmZmZmZqzBlqPaOJ4bfyVZGHsbqhXdkGpH(OKryboRpKrbhQT035HpFUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTaN1hYOGd1G(opJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBJbGsMqW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cC(aGmkHaJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgkBBbkfaDepOa7DgSfOua0r8Gc4tOpkzewGZhaKrjeGp3UmgkfaDepOa(e6JsgHf4FaKr4G(fRa85ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlW5daYOecm2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrlSWVvMhRahEjMn6Mcyiby4fLmWMmwqyZmJn6McyWSjJfe2mZmZSz39W3q3uaZVWMzMzMDzgam8ba2DLHma7BOBkG5xyZmZmZGExp0VHUPaMFHnZmZmdDZ7(BOBkG5xyZmZmZiK5YgGHHEpFdDtbm)cBMzMzgVV9k4BOBkG5xyZmZmZMXa4)7E7vW3q3uaZVWMzMzM9fRam64ua0VHUPaMFHnZmZmJ8(HHH4GhZ3q3uaZVWMzMzM9qmayqPGVHUPaMFHnZmZm7XmB9GsbFdDtbm)cBMzMz27qgfCOl9DEFdDtbm)cBMzMzgdaLmHGVHUPaMFHnZmI(xyZmdBFPyFU8CVuBYybI(xyZmJz9ytg71dzk69SadSz)B77Lo(H9DUWMzMzMHb2SjgBFPyFU8CVuBYybIwyZmZmZyFzmS9L(BOuaud9ye(qzWwSVx64h2352WvyZmZmZmZS3kZJvGdVepagDDgp3zlW55EPg2(s5td3iMydBFPgXeB4gUrmXgkfaLyuka6CHnZmZmZmZWaB28jZ65BOBkGbBb2(sNlSzMzMzGZGWcBMzMz2BL5XkWHxIhaJUoJN7Sf4K2xkMrV2(EP8PHBetSHyhdSztm2(sX(C55EPZf2mZmZS3kZJvGdVepagDDgp3zlWaB2eJTVuSpxEUx6CHnZmZmJ9LXqTjdXogyZMyS9LI95YZ9s)nc(nijWgUcBMzMzMzMTVKFBdBFP2KHb2SjgBFPyFU8CVuUOCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCEUxk6zMHTVuBbkfW8OxM58PHBetSHTV05cBMzMzMzMnC55EPlW2x6CHnZmZmdCge2mZaNHFHnZmM1Z3q3uadMnzSxpKPO3ZcmWM9VHTV05cBMzMzg7lJHOFJn6Mcym0Jr4dLbBbgyZMy2OBkGbBUnCf2mZmZmZmdLTTGn6Mcy4t2OBkGzb2(sNp3OiaocBMzMzMzMzMzqcPTu0ziqTrb2S7DWO3Fd9GrbVb7Y2wswXO2Bya9mZW2xQrV2Z2Oy0F7nmyVJDhDjbqMAlJsrWqpSV2B07k1OiamukaQ9odgfbGHTVuJ89qFOh0ZmdLAyxd8iJGXgDtbmg53XgqjtFuGrrayOuau78GcS3zWqjFpcBMzMzMzMzMzyGnBIX2xk2Nlp3lLlIDmWMnXy7lf7ZLN7LASigbCSjdBFPcBMzMzMzMzMzma6kZryZmZmZmZmWzqyZmZmZaNbHnZmWzqyIwyHFRmpwbo8s8ay01z8CNztg71dzk69S4o6sYCHnZmu22IbWORZMBueahHnZmZmJqg0dDbIdOFqHcwmFUWMzMzMXYaE)CVBmwXYRqjCXD0LK5cBMzMzgHmOh6I5cBMzGZGWGZGWc)wzEScC4LymeHU3y2KXccBMzqc5yEmmOxgHnZmUeWXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytgb)cBMzMzgxCeF9GHZXMmc(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytgb)cBMzMzgxCs0hVamCo2KrWVWMzMzMXf)BOyuBmGhH3dgohBYi4xyZmZmZ4IZYVzZamy4CSjJGFHnZmZmJl(yzUyyJExgdNJnze8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKOE73a6ryZmJ73ZXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytge)cBMzMzgxCeF9GHZXMmi(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytge)cBMzMzgxCs0hVamCo2KbXVWMzMzMXf)BOyuBmGhH3dgohBYG4xyZmZmZ4IZYVzZamy4CSjdIFHnZmZmJl(yzUyyJExgdNJnzq8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKiRhkGryZmJlFKJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmi(f2mZmZmU4l9HUX5ytgb)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYi4xyZmZmZ4IZxUlJHZXMmc(f2mZmZmU4i(6bdNJnze8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmc(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytgb)cBMzMzgx8XYCXWg9UmgohBYi4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjF4oBfiSzMXLV5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYi4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYG4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqsumOamQWMzg3VmhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KrWVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjdIFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjdIFHnZmZmJl(NLVqsK3zamyS(RamCo2KbXVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytge)cBMzMzgxCI6UbpgOy4CSjdIFHnZmZmJl(ipaijY7magmslFzgWW5ytge)cBMzMzgx8plFHKiVZayWiT8LzadNJnzq8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytgb)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmc(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYi4xyZmJO)f2mZGeswg8OiyigDqNHavyZmJllkhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KbXVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjJGFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjJGFHnZmZmJl(NLVqsK3zamyS(RamCo2KrWVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytgb)cBMzMzgxCI6UbpgOy4CSjJGFHnZmZmJl(ipaijY7magmslFzgWW5ytgb)cBMzMzgx8plFHKiVZayWiT8LzadNJnze8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytge)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmi(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYG4xyZmJO)f2mZGessi8G(ocBMzCzX5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjdIFHnZmZmJl(sFOBCo2KrWVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmc(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqU03mGWMzgxwmo2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKJ5XSVKrKWMzgx(Ao2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKl9EqKWMzgxcGGJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KrWVWMzMzMXfNecOG9agohBYi4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYi4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjlZSIoiSzMXLac4ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnzq8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnze8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqYYaO3JrK1dfWiSzMXLGVNJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KbXVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmc(f2mZmZmU4KOpEby4CSjdIFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)ct0c)wzEScC4L4Vy9TrP8p27(YGztgliSzMHJysW3Z3KzZMVEGVEGVEa)3GesJOUxgHnZmCetc(E(MmB2SzZMnB24)gKqAJ9cf69iSzMHJysW3Z3KzZMaaB2qab(VbjKgITd5luO3JWMzgoIjbFpFtMnBiGGfhIHb8Fdsin(WJbiSzMHJysW3Z3KzZ(Xh5JFzaa)3GesBjieLSWMzgoIjbFpFtMnB2SzXGaciW)niH04bmdCgEm8lSzMHJysW3Z3KzZgWIsMmlge4)gKqASMHIY(rMkSzMHJysW3Z3KzZgciitMnB8FdsinIaqz23luHjAKuKuKKOmOZMbyq(bjjk)ecqsI8kg9cfjjmeUlpYdssyiCxEKhwtMIYlajjaVGdfdjjEg5i)Wk(WsWAw(lfjjYRy0luwr5Nqassy0hfSs4WJcqsImcaYicjjaVGdfjjYRy0luKKGesJNroYpSIpSeSML)sfM96Hmf9EwaMlSzMTVKFBBFV0XpSV2KH4akp3lD8d77I5cBMzVvMhRahEjMn6Mcyiby4fLmGpzwpl23lD8d77CHnZSXUVyaEUx6I5cdodcJKe5vm6fkRqaDaGKeffkyajfjjk4RuciQl6HIKeFyCeNiFqsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIK0akB2OKx3u(r(bjjORBkkYpiPiPijX8idq(bjjORBkkYpiPiPijX(rMIEpi)GKe01nff5hKuKuKKyUBaYpijbDDtrr(bjfjfjj0ZmM7kHi)GKe01nff5hKuKuKKiKxcPVn4qr(bjjORBkkYpiPiPiPijHEOaMZB)Dagm07b5i4JijDwH(HbD2madgYrqassmGzO3Zh(jeGKek57bjjk4RucqscX6GKef8vkbJ9EOp0duWHIK0irS9H04S8sGKe6assSELE55EP8CNHsgjjk4Ruc(29qrsAj(kHmamSLF8JKe57DpCx(8b8v6sCEJUbdihfjj0dkLvy0hdfmGCeeGKe57DpCx(GCuKuKJ47r(bjjk4Ruc(29qjHIyaGCeFpeij9itr5f8HbD2maZsVdaKJascGajj0dfWCE7VdWGHEpihbFejP3bf6JIEpi)GKeg9Xqr(bjjk)ecqsIqgagGIKeHmamafjjSn6aydytrsrsIn6bfdbKFqsIYpHaKKiKbGbOijridadqrscBJoag9sPxOiPiPijrzqNndWG8dssu(jeGKe5vm6fkssKxXOxOScb0bassuuOGbKKiVIrVqrscsiTXsew)HvlLeIZkEg5i)im71dzk69S4T3y0hfG9BGFdk2S5cBMzVvMhRahEj(T3y0hfGzt2BVXOpkatyHnZS3kZJvGdVepW8wECY3ZcOyZMlSzMXaORmhJYScegCgegjjYiaiJiKKa8couKKa8coumKKglry9hwTusioR4zKJ8dssKxXOxOSIYpHaKKWOpkyLWHhfGKegc3Lh5bjjmeUlpYdRjtr5fGKIKef8vkbe1f9qrsIpmoItKpijTVVbKFqsI(2Gd97r(bjjORBkkYpiPiPijrFBWHI8dssqx3uuKFqsrsrsAaLnBuYRBk)i)GKe01nff5hKuKuKKyEKbi)GKe01nff5hKuKuKKy)itrVhKFqsc66MII8dsksksseYlH03gCOi)GKe01nff5hKuKuKKqpZyUReI8dssqx3uuKFqsrsrsI5Ubi)GKe01nff5hKuKuKuKKEKPO3dgYpijHrFmuKFqsA4YkOamS3maYrrsrsc9Gsr(bjPHlRiVIrVqrYxqsI8kg9cfjP9L8BBOKVhwgfJW9JFwEL5rrVhBY4Jcl8BL5XkWHxINbOJtbqh)W(Atg71dzk69Sak2S5cBMzSmG3p37gJvS8kucxafB2CHnZS9L8BBNhuGnzqXMXNqFuYiSahbelUliMfzoIfh852LXWXf2mZ2xYVT9fRVdfLYVnzqXMXNqFuYiSa)RlqSgyrMJp3UmgbclSzMTVKFBdL89yt2yapeX6vMhgPhVGbIhl)i6r84ua0X(iJaG75bfWHyuY3JDzmc4J8nFdbecBMz7l532iF3xgBYGInJpH(OKryboI1xYxcz2Sxq8CwGfLOXNBxgdNnB2SzZgxyHnZmgaDL5yNhuWVHs(E(TVy9DOOu()nY39LryWzqyHFRmpwbo8s8aZB5XjFp2KXE9qMIEplGInBUWMz2(s(TTZdk43qjFp)2xS(ouuk))g57(Yyt2BL5XkWHxINbOJtbqh)W(Uak2S5clSzMTVKFBJ9Lb6JsbdJ4bfytgoIjbFpFtMnBCJyInY39LXiMy78GcmIj2Wrmj475Bg7R4gXeBFX67qrP8lSzM9wzEScC4L43EJrFuagxe7VvMhRahEj(T3y0hfGzSigbCSjJfe2mZmZmmeUlBtgLzf8lSzMzMzKr4DMbgSjJYSc(f2mZmZm0Za4R2KH4a6huOGfZ)f2mZmZmga2LHAtgLzf8lSWMzMzMHs(ESjdL898lSzMzMzNhuGnzSVmqFukyyepOGFHf2mZmZmczUZyayyF4NqGnz4uuOGb8FHnZmZmd8vcrzEu075dkuGnzioG(bfkyXCJfXqjFpSmkgH7h)S8kZJIEp)cBMzMz2WkZJIEp2KHs(Eyzumc3p(z5vMhf9E(f2mZmZS3k9se0bGnzuMvWVWMzgrlm4mGKIKIKedyg698HFcbijHs(EqsI89UhUlF(a(kDjoVr3GbKJIKef8vkbijHyDqsIc(kLGVDpuKKwIVsidadB5h)ijHoGKeRxPxEUx64KVhKKOGVsjyS3d9HEGcouKKgjITpKgNLxcKKgqXwswpKPO8cqs6T3ijDwH(HbD2madgYrqassOhukRWOpgkya5iiajjY37E4U8b5OiPiPijXlYrqaF)9eGKIeja \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 774c78d..9196619 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -1,5 +1,7 @@ local debug = false -local iconDisplayDuration = 3 +if not WeakAurasSaved then WeakAurasSaved = {} end +if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end +if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end -- itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType,itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID, bindType,expacID, setID, isCraftingReagent = GetItemInfo(slot) -- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) @@ -67,29 +69,14 @@ local doLoot = function(slot) local itemIcon = getItemIcon(slot) or 134400 local itemName = getItemName(slot) or "Unknown" itemName = itemName:gsub("\n", ", ") - local itemQuantity = getItemQuantity(slot) or 1 local itemQuality = getItemQuality(slot) or 0 - aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" - local nameWithQuantity = nameWithColor .. " x" .. itemQuantity - - aura_env.debugLog("Assigning name" .. nameWithQuantity) - aura_env.allstates[#aura_env.allstates + 1] = { - show = true, - changed = true, - index = GetTime(), - resort = true, - - icon = itemIcon, - name = nameWithQuantity, - amount = itemQuantity, - - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } + if not WeakAurasSaved.Cyka.ItemCache[itemName] then + WeakAurasSaved.Cyka.ItemCache[itemName] = { + icon = itemIcon, + quality = itemQuality, + } + end end diff --git a/LegionWA/LootDisplay/Event.lua b/LegionWA/LootDisplay/Event.lua new file mode 100644 index 0000000..59803ac --- /dev/null +++ b/LegionWA/LootDisplay/Event.lua @@ -0,0 +1,7 @@ +-- CHAT_MSG_LOOT +function(allstates, e, msg) + aura_env.allstates = allstates + + aura_env.drawIcon(msg) + return true +end diff --git a/LegionWA/LootDisplay/Export b/LegionWA/LootDisplay/Export new file mode 100644 index 0000000..9705fa6 --- /dev/null +++ b/LegionWA/LootDisplay/Export @@ -0,0 +1 @@ +dqvp5bGiO6rqOuDjiuYOucNsr1QuIi9kucXSuvDlq0UqOggiCmeyzQkv9muvOPHQsDnvLO2gkH03qjunoucLZHQsQ1HQIENse19uK9HQsY)GqH6GOKAHOQepuHsteLOUOse2OQs5JqOAKieNuHQvcQxcHczMOkUPsK2PcHFQq0qri5OOezPOQGNIitvvXvHqPSvvLkFvHIZQQeP3Iknxiu0Drf7fI(lkjdwoSQSyfspgrnzfCzGnJs9zfLrdbNgsRwjI41qiZwPUniTBv8BvA4iOJRQewokEouMosxxjTDuL(UsuJxvjDEuvTEiuW7rjy(QkrCFesTFAKeG8dsspKFqsrscdjPVN4VmXe89qsWxgYz818nlklkzc4RrsckssdijnG8dssdOyljRhYuuEbij92BKK4FKSzJbOihXxMpcbsspYuuEbFyqNndWS07aa5iGKaiqscJWhzaYrabssyGnBI6IEOij9zKefplX3(GK0BJo7GKeplX3(GKeca0ziqr(n((ldbFKffccyXzX5BwSVmFtaFZ3izdjF)LrsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIKeZDdq(bjjORBkkYpiPiPijnGYMnk51nLFKFqsc66MII8dskskssmpYaKFqsc66MII8dskskssONzm3vcr(bjjORBkkYpiPiPijriVesFBWHI8dssqx3uuKFqsrsrsI9Jmf9Eq(bjjORBkkYpiPiPijTIbyf59ddd5OiPij9oOqFuas(cssmGzO3Zh(jeGK0a)NhuuYZyUReIKe4Re(odGbK8fKKOmOZMbyq(bjjmeUlpYdssyiCxEKhwtMIYlajfjj0bKKy9k9YZ9srsc9qbmN3(7amyO3dYrWhrs6Sc9dd6SzagmKJGaKK(6izZgdqrocizX5Biqsc9Gszfg9XqbdihbbijTm6afbKFJV)YqWhzrHGawCwC(Mf7lZ3eW38ns2qY3SOiPijrg5hKJGaKFqsIc(kLGVDpusOigaihX3dbssdOyljRhYuuEbij92BKKEKPO8c(WGoBgGzP3baYrajbqGK0Jmf9EWq(bjjm6JHI8dssdxwbfGH9MbqokskssOhukYpijnCzf5vm6fks(cssKxXOxOijTVKFBBam66mBYy)2yaHrzBNl1gd4HiwVY8Wi94fmyueahBmGhIy9kZdJ0JxWGnzSarBGZGWOSTZLAJb8qeRxzEyKE8cgiES8JONrraCSXaEiI1RmpmspEbdepw(r0ZMmwGOnWzqyu225sTXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGrraCSXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGnzSarBGZGWcdjKgkfaDepOGFdLcGYd6br)gkfaLLwFBuk))gkfaLhaVG9VHsbqxk6HhaVG9VHsbq)WpHGFdLcGsAD0p8ti4hLcGsI(iJOXExp0FdLcGUeFXkkH8Cj)BOua0pGVsxza)ggyVjkguYGFJ8(HHnol)ByRJsE)WWgNL)TrrpdF4NqWp4Re(ipol)Bya64S8VHInwMhBk6zgFa8MbouBYqCaDCka64h23fy7lDUWqcPTVx64KVNFBFV0r8Gc(T99szP13HIs5)3iVYWaoK5FCw(323lLLwFBuk))2(sgrGHFdfJLwby0XPaO)2xScWOJZY)gkgRjtr5fytgIdO8CVus7lD8d77cS9LoxyiH04b9Gid7cfqrHcWSHlaZoxQT8LbrcVVKFBJ96Hmf9ESza64uauEqpiAb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMXaORmhdXbuEUxkP9LYd6brlW2x6CHbNbH3xYVTXE9qMIEp2maDCka6iEqblW2x6CHnZmu22cS9LAtt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDX3)BioGYZ9sjTV0XpSVlW2x685cdodcVVKFBJ96Hmf9ESza64ua0p8tiyb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMTVKFBdLcGYd6br2KndqhNcGYd6brlW2x6CHnZmu22cukakpOheztt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDbl6VH4a64ua0XpSVlqPaO8GEq085cdodcVVKFBJ96Hmf9ESza64uausRJs5NqWcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6cw8FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaO8a4fSxGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxW3)gIdOJtbqh)W(UaLcGYd6brZNlm4mi8(s(Tn2RhYu07XMbOJtbq)U3EfSaBFPZf2mZqzBlW2xQnnzh09CJIa4yma6kZXoOBdCge2mZ2xYVTHsbq5b9GiBYMbOJtbq5b9GOfy7lDUWMzgkBBbkfaLh0dISPj7GUNBueahJbqxzo2bDBGZGWMzgdGUYCmmWgqMUGac(nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGYsRVdfLY)cS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehq55EPK2x64h23fy7lD(CHbNbH3xYVTXE9qMIEp2maDCkaklT(2Ou(xGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGUeFXkkH8Cj)OO3ZcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6c(6FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaOJt(EwGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxqae)gIdOJtbqh)W(UaLcGYd6brZNlm4miSWcVVKFBB4YZ9sTjJ96Hmf9EwGTV05cBMzVvMhRahEjEam66mEUZwGZZ9srpZmS9LYNgUrmXg2(sNlSzMXZ9sjTV0fy7lDUWcBMz7l532qPaOJt(ESjBgGoofaDCY3ZcS9Lo3Umgb8r(MVHacHnZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUDzmCeBheDUlFWf2mZqPaOJ4bfytgkfaDepOa(Cg26OlWrmp4)g(VHpxyZmBFj)2gkfaLLwFBuk)2KndqhNcGYsRVnkL)fy7lDUDzmiewyZmdLTDUuBmGhIy9kZdJ0JxWaXJLFe9iECka6yFKraWfLcGoIhuahJIa4iSzMzMzJb8qeRxzEyKE8cgiES8JOhXJtbqh7JmcaUOua0r8Gc4ytgliSzMzMzMzgk57XMmuka64KVNFHnZmZmZmZ(I13gLYVnzOuauwA9TrP8)lSzMzMzeTWMzg4mim4miSWcVVKFBB2Dp8n0nfWytgliSzMboVr3GbBYOmRGFHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTahXV7bJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgKqAJBZwbyygk1gUam7CPg2kHeEzO2i5dg6XyaZaFfXyHnZmZmZmZGesdLcGoIhuaFc9rjJWcCeRbweBXce)UhM)L8LSGe6MxaZ8VKVKfJ9siHaM5ZXNlSzMzMzMzgkBBbkfa98GcS3zWqPaOJ4bfWNqFuYiSahXAGfXq87EaFUDzmuka6iEqb8j0hLmclWrSgyrmsOBEbm4ZTlJHsbqhXdkGpH(OKryboI1alIn2lHecyWNp3OiaocBMzMzMzMzMzVvMhRahEjEam66mEUZwGJ439GXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTDzgam8ba2DLHma7BOBkGXMmwqyZmdCEJUbd2Krzwb)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBboFaGDxzidm2OBkGzjBy7lLpnCJyInS9LoxyZmZmZmZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUWMzMzMzMzOSTfOua0r8GcS3zWqPaOJ4bfWNqFuYiSaFKmdagJpaWURmKby4ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhjZaGXyay3vgYaJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBd6D9q)g6McySjJfe2mZaN3OBWGnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGV076HASr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbq)WpHaBAYWx6D9qXNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWx6D9qn2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(Tn0nV7VHUPagBYybHnZmW5n6gmytgLzf8lSzMHU5D)bbgagc39GnzSySyq8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JZdVBJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaLhaVGTnzZa0XPaO8a4fSxGTV05cBMzMzMzMHY2wGsbq5bWlyBVZGHsbq5bWlyB8vggyZMy0nV7piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhNcGABaVGTXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTriZLnadd9E(g6McySjJfe2mZaN3OBWGnzuMvWVWMzgcaMrXSjJYSc(f2mZiVVueSjJ9BJb(f2mZUmaBYy)2yGFHnZSn4rraWytg73gd8lSzMr(Ere6zMnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGtumx2amm07XyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)WpHaBYMbOJtbq)WpHGfy7lDUWMzMzMzMzOSTfOua0p8tiWENbdLcG(HFcb20KH)H5naWqe6EJp3OiaocBMzMzMzMzMz7l532qPaOKwhLYpHaBYMbOJtbqjTokLFcblW2x6CHnZmZmZmZmZmu22cukakP1rP8tiWENbBbkfaL06Ou(jeyttgoramJIBVZGHb2SjgbaZOyZf2mZmZmZmZmZUm2cukakP1rP8tiWMMmCEapkcagC7DgmmWMnXBWJIaGzUWMzMzMzMzMz2LXwGsbqjTokLFcb20KHp29LIaU9odggyZMyY7lfH5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(iza427myyGnBIVmG5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(yVxeHEMHBVZGHb2SjM89Ii0ZS5ZnkcGJWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBborXCzdWWqVhJn6McymcFyy4Zf2mZmZmZmZmZmZmgaDL5yuMvGWMzMzMzMzMzg4miSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(TnEF7vW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZ49TxbFqGbGHWDpytgF8lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwG)DV9kWyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)U3Efyt2maDCka6392RGfy7lDUWcBMzMzMzMHY2wGb2Sj(riHB()GadadH7E4ZDCkakj6JmIMBueahHnZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4FqaWamWxrXOgUrmXgkfaLLwFhkkLFJyInCdLcGIzOhdBFPgUrmXg2(sNlSzMzMzMzMzMHsbq)U3Efytgkfa97E7vGTKAOuauwA9DOOu(f2mZmZmZmdCgewyZmZmZmZmu22cuka6392Ra7Dgmuka6392RaJVYWaB2eZ7BVc(GadadH7EyUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTa)7E7vGXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTnJbW)392RGVHUPagBYybHnZmW5n6gmytgLzf8lSzMbjKgja1OiWaWq4Uhm61GWOxBFVu7T32mga)ycBMz8(2RGpiWaWq4UhSj7lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGJ4ma(nEF7vGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cukaklT(2Ou(T3zWqPaOS06BJs534RmiMBueahHnZmZmZmZmZS9L8BBOua0V7Txb2KndqhNcG(DV9kyb2(sNlSWMzMzMzMzMzgkBBbgyZM4hHeU5)dcmameU7Hp3XPaOKOpYiAUrraCe2mZmZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBb(heamad8vumQHBetSHsbqzP13HIs53iMyd3qPaOyg6XW2xQHBetSHTV05cBMzMzMzMzMzMzgkfa97E7vGnzOua0V7Txb2sQHsbqzP13HIs5xyZmZmZmZmZmdCgewyZmZmZmZmZmdLTTaLcG(DV9kWENbdLcG(DV9kW4RmmWMnX8(2RGpiWaWq4UhMBueahHnZmZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCeNbWVX7BVcm2OBkGXi8HHHpxyZmZmZmZmZmZmZya0vMJrzwbcBMzMzMzMzMzGZGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532(IvagDCka63q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwAfGrnukaQXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMHY2wGsbq)WpHa7DgmukakP1rP8tiWENbdLcG(HFcb20KHsbqjTokLFcb20KHZsRamk(CJIa4iSzMzMzMzMzM9wzEScC4L4bWORZ45oBbolTcWOgkfa1yJUPagJWhgg(CHnZmZmZmZmZmgaDL5yuMvGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532iVFyyio4X8n0nfWytgliSzMboVr3GbBYOmRGFHnZm0nV7piWaWq4UhSjJfdci(f2mZ(I13gLY)heyayiC3d2K99)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBb(y3pmmBg4XySr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZS9L8BBOua0L4lwrjKNlzBYMbOJtbqxIVyfLqEUKFu07zb2(sNlSzMzMzMzgkBBbkfa9d)ecSPjdN1mqVm4cBMzMzMzMDzmuka6h(jeyttg(yapcVhCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9TXhbIVe8bCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9Hpm(iqmAj(GlSzMzMzMz2LXqPaOlXxSIsipxY20KHp(i(UpFPe1sWQXYZiznIr4cBMzMzMzMDzmuka6s8fROeYZLSnnz4JpIV7ZxkrTeSAelXyrmcFUrraCe2mZmZmZmZmZ2xYVTHsbq5bWlyBt2maDCkakpaEb7fy7lDUWMzMzMzMzMz2(s(TnukaklT(2Ou(TjBgGoofaLLwFBuk)lW2x6CHnZmZmZmZmZS9L8BBOylXxSIsiHVr3aBYERmpwbo8smgIq3BmUyGnGmDbF83qSDqPJD)WWwGt4(XpGbF(CoCXwhLYpHao20KrGWcBMzMzMzMzMzOSTfOylXxSIsiHVr3a7DgmukakpaEbBJVYWaB2eJU5D)bbgagc39G9odgkfaLLwFBuk)gFLHb2Sj(lwFBuk)FqGbGHWDpm3OiaocBMzMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JD)WWSzGhJXgDtbmgHpmm85cBMzMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmZmdCge2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22dXaGbLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMzg6M39heyayiC3d2KXIbbe)cBMzFX6BJs5)dcmameU7bBY((FHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTaN1igamOuGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbqjTokLFcb27myOuauwA9TrP8BVZGHsbq)WpHaBAYWh79GTc9n6gGBVZGHsbqjTokLFcb20KHpskcagC7DgmukaklT(2Ou(n(kJG5gfbWryZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCwJyaWGsbgB0nfWye(WWWNlSzMzMzMzMzMXaORmhJYSce2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22Jz26bLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMz2xS(2Ou()GadadH7EWMmc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwZmB9GsbgB0nfWSKnS9LYNgUrmXg2(sNlSzMzMzMz2(s(Tnuka6iEqb2KndqhNcGoIhuWcS9LoxyZmZmZmZS9L8BBOuauwA9TrP8Bt2maDCkaklT(2Ou(xGTV05cBMzMzMzMHY2wGsbqhXdkWENbdLcGYsRVnkLF7Dgmuka6iEqb8j0hLmclWznZS1dkfGp3ENbdLcGYsRVnkLFJVYWaB2e)fRVnkL)piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWznZS1dkfySr3uaJr4dddFUWMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmWzqyZmZmZaNbHnZmWzqyIw49L8BBVdzuWHU0359n0nfWytgliSzMboVr3GbBYOmRGFHnZSVy9TrP8)bbgagc39Gnze8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4S(qgfCOg035zSr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOJ4bfyt2maDCka6iEqblW2x6CHnZmZmZmZqzBlqPaOJ4bfyVZGHsbqhXdkGpH(OKryboRpKrbhQT035HpFUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTaN1hYOGd1G(opJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBJbGsMqW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cC(aGmkHaJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgkBBbkfaDepOa7DgSfOua0r8Gc4tOpkzewGZhaKrjeGp3UmgkfaDepOa(e6JsgHf4FaKr4G(fRa85ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlW5daYOecm2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrlSWVvMhRahEjMn6Mcyiby4fLmWMmwqyZmJn6McyWSjJfe2mZmZSz39W3q3uaZVWMzMzMDzgam8ba2DLHma7BOBkG5xyZmZmZGExp0VHUPaMFHnZmZmdDZ7(BOBkG5xyZmZmZiK5YgGHHEpFdDtbm)cBMzMzgVV9k4BOBkG5xyZmZmZMXa4)7E7vW3q3uaZVWMzMzM9fRam64ua0VHUPaMFHnZmZmJ8(HHH4GhZ3q3uaZVWMzMzM9qmayqPGVHUPaMFHnZmZm7XmB9GsbFdDtbm)cBMzMz27qgfCOl9DEFdDtbm)cBMzMzgdaLmHGVHUPaMFHnZmI(xyZmdBFPyFU8CVuBYybI(xyZmJz9ytg71dzk69SadSz)B77Lo(H9DUWMzMzMHb2SjgBFPyFU8CVuBYybIwyZmZmZyFzmS9L(BOuaud9ye(qzWwSVx64h2352WvyZmZmZmZS3kZJvGdVepagDDgp3zlW55EPg2(s5td3iMydBFPgXeB4gUrmXgkfaLyuka6CHnZmZmZmZWaB28jZ65BOBkGbBb2(sNlSzMzMzGZGWcBMzMz2BL5XkWHxIhaJUoJN7Sf4K2xkMrV2(EP8PHBetSHyhdSztm2(sX(C55EPZf2mZmZS3kZJvGdVepagDDgp3zlWaB2eJTVuSpxEUx6CHnZmZmJ9LXqTjdXogyZMyS9LI95YZ9s)nc(nijWgUcBMzMzMzMTVKFBdBFP2KHb2SjgBFPyFU8CVuUOCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCEUxk6zMHTVuBbkfW8OxM58PHBetSHTV05cBMzMzMzMnC55EPlW2x6CHnZmZmdCge2mZaNHFHnZmM1Z3q3uadMnzSxpKPO3ZcmWM9VHTV05cBMzMzg7lJHOFJn6Mcym0Jr4dLbBbgyZMy2OBkGbBUnCf2mZmZmZmdLTTGn6Mcy4t2OBkGzb2(sNp3OiaocBMzMzMzMzMzqcPTu0ziqTrb2S7DWO3Fd9GrbVb7Y2wswXO2Bya9mZW2xQrV2Z2Oy0F7nmyVJDhDjbqMAlJsrWqpSV2B07k1OiamukaQ9odgfbGHTVuJ89qFOh0ZmdLAyxd8iJGXgDtbmg53XgqjtFuGrrayOuau78GcS3zWqjFpcBMzMzMzMzMzyGnBIX2xk2Nlp3lLlIDmWMnXy7lf7ZLN7LASigbCSjdBFPcBMzMzMzMzMzma6kZryZmZmZmZmWzqyZmZmZaNbHnZmWzqyIwyHFRmpwbo8s8ay01z8CNztg71dzk69S4o6sYCHnZmu22IbWORZMBueahHnZmZmJqg0dDbIdOFqHcwmFUWMzMzMXYaE)CVBmwXYRqjCXD0LK5cBMzMzgHmOh6I5cBMzGZGWGZGWc)wzEScC4LymeHU3y2KXccBMzqc5yEmmOxgHnZmUeWXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytgb)cBMzMzgxCeF9GHZXMmc(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytgb)cBMzMzgxCs0hVamCo2KrWVWMzMzMXf)BOyuBmGhH3dgohBYi4xyZmZmZ4IZYVzZamy4CSjJGFHnZmZmJl(yzUyyJExgdNJnze8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKOE73a6ryZmJ73ZXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytge)cBMzMzgxCeF9GHZXMmi(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytge)cBMzMzgxCs0hVamCo2KbXVWMzMzMXf)BOyuBmGhH3dgohBYG4xyZmZmZ4IZYVzZamy4CSjdIFHnZmZmJl(yzUyyJExgdNJnzq8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKiRhkGryZmJlFKJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmi(f2mZmZmU4l9HUX5ytgb)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYi4xyZmZmZ4IZxUlJHZXMmc(f2mZmZmU4i(6bdNJnze8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmc(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytgb)cBMzMzgx8XYCXWg9UmgohBYi4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjF4oBfiSzMXLV5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYi4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYG4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqsumOamQWMzg3VmhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KrWVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjdIFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjdIFHnZmZmJl(NLVqsK3zamyS(RamCo2KbXVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytge)cBMzMzgxCI6UbpgOy4CSjdIFHnZmZmJl(ipaijY7magmslFzgWW5ytge)cBMzMzgx8plFHKiVZayWiT8LzadNJnzq8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytgb)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmc(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYi4xyZmJO)f2mZGeswg8OiyigDqNHavyZmJllkhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KbXVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjJGFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjJGFHnZmZmJl(NLVqsK3zamyS(RamCo2KrWVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytgb)cBMzMzgxCI6UbpgOy4CSjJGFHnZmZmJl(ipaijY7magmslFzgWW5ytgb)cBMzMzgx8plFHKiVZayWiT8LzadNJnze8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytge)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmi(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYG4xyZmJO)f2mZGessi8G(ocBMzCzX5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjdIFHnZmZmJl(sFOBCo2KrWVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmc(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqU03mGWMzgxwmo2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKJ5XSVKrKWMzgx(Ao2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKl9EqKWMzgxcGGJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KrWVWMzMzMXfNecOG9agohBYi4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYi4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjlZSIoiSzMXLac4ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnzq8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnze8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqYYaO3JrK1dfWiSzMXLGVNJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KbXVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmc(f2mZmZmU4KOpEby4CSjdIFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)ct0c)wzEScC4L4Vy9TrP8p27(YGztgliSzMHJysW3Z3KzZMVEGVEGVEa)3GesJOUxgHnZmCetc(E(MmB2SzZMnB24)gKqAJ9cf69iSzMHJysW3Z3KzZMaaB2qab(VbjKgITd5luO3JWMzgoIjbFpFtMnBiGGfhIHb8Fdsin(WJbiSzMHJysW3Z3KzZ(Xh5JFzaa)3GesBjieLSWMzgoIjbFpFtMnB2SzXGaciW)niH04bmdCgEm8lSzMHJysW3Z3KzZgWIsMmlge4)gKqASMHIY(rMkSzMHJysW3Z3KzZgciitMnB8FdsinIaqz23luHjAKuKuKKOmOZMbyq(bjjk)ecqsI8kg9cfjjmeUlpYdssyiCxEKhwtMIYlajjaVGdfdjjEg5i)Wk(WsWAw(lfjjYRy0luwr5Nqassy0hfSs4WJcqsImcaYicjjaVGdfjjYRy0luKKGesJNroYpSIpSeSML)sfM96Hmf9EwaMlSzMTVKFBBFV0XpSV2KH4akp3lD8d77I5cBMzVvMhRahEjMn6Mcyiby4fLmGpzwpl23lD8d77CHnZSXUVyaEUx6I5cdodcJKe5vm6fkRqaDaGKeffkyajfjjk4RuciQl6HIKeFyCeNiFqsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIK0akB2OKx3u(r(bjjORBkkYpiPiPijX8idq(bjjORBkkYpiPiPijX(rMIEpi)GKe01nff5hKuKuKKyUBaYpijbDDtrr(bjfjfjj0ZmM7kHi)GKe01nff5hKuKuKKiKxcPVn4qr(bjjORBkkYpiPiPiPijHEOaMZB)Dagm07b5i4JijDwH(HbD2madgYrqassmGzO3Zh(jeGKek57bjjk4RucqscX6GKef8vkbJ9EOp0duWHIK0irS9H04S8sGKe6assSELE55EP8CNHsgjjk4Ruc(29qrsAj(kHmamSLF8JKe57DpCx(8b8v6sCEJUbdihfjj0dkLvy0hdfmGCeeGKe57DpCx(GCuKuKJ47r(bjjk4Ruc(29qjHIyaGCeFpeij9itr5f8HbD2maZsVdaKJascGajj0dfWCE7VdWGHEpihbFejP3bf6JIEpi)GKeg9Xqr(bjjk)ecqsIqgagGIKeHmamafjjSn6aydytrsrsIn6bfdbKFqsIYpHaKKiKbGbOijridadqrscBJoag9sPxOiPiPijrzqNndWG8dssu(jeGKe5vm6fkssKxXOxOScb0bassuuOGbKKiVIrVqrscsiTXsew)HvlLeIZkEg5i)im71dzk69S4T3y0hfG9BGFdk2S5cBMzVvMhRahEj(T3y0hfGzt2BVXOpkatyHnZS3kZJvGdVepW8wECY3ZcOyZMlSzMXaORmhJYScegCgegjjYiaiJiKKa8couKKa8coumKKglry9hwTusioR4zKJ8dssKxXOxOSIYpHaKKWOpkyLWHhfGKegc3Lh5bjjmeUlpYdRjtr5fGKIKef8vkbe1f9qrsIpmoItKpijTVVbKFqsI(2Gd97r(bjjORBkkYpiPiPijrFBWHI8dssqx3uuKFqsrsrsAaLnBuYRBk)i)GKe01nff5hKuKuKKyEKbi)GKe01nff5hKuKuKKy)itrVhKFqsc66MII8dsksksseYlH03gCOi)GKe01nff5hKuKuKKqpZyUReI8dssqx3uuKFqsrsrsI5Ubi)GKe01nff5hKuKuKuKKEKPO3dgYpijHrFmuKFqsA4YkOamS3maYrrsrsc9Gsr(bjPHlRiVIrVqrYxqsI8kg9cfjP9L8BBOKVhwgfJW9JFwEL5rrVhBY4Jcl8BL5XkWHxINbOJtbqh)W(Atg71dzk69Sak2S5cBMzSmG3p37gJvS8kucxafB2CHnZS9L8BBNhuGnzqXMXNqFuYiSahbelUliMfzoIfh852LXWXf2mZ2xYVT9fRVdfLYVnzqXMXNqFuYiSa)RlqSgyrMJp3UmgbclSzMTVKFBdL89yt2yapeX6vMhgPhVGbIhl)i6r84ua0X(iJaG75bfWHyuY3JDzmc4J8nFdbecBMz7l532iF3xgBYGInJpH(OKryboI1xYxcz2Sxq8CwGfLOXNBxgdNnB2SzZgxyHnZmgaDL5yNhuWVHs(E(TVy9DOOu()nY39LryWzqyHFRmpwbo8s8aZB5XjFp2KXE9qMIEplGInBUWMz2(s(TTZdk43qjFp)2xS(ouuk))g57(Yyt2BL5XkWHxINbOJtbqh)W(Uak2S5clSzMTVKFBJ9Lb6JsbdJ4bfytgoIjbFpFtMnBCJyInY39LXiMy78GcmIj2Wrmj475Bg7R4gXeBFX67qrP8lSzM9wzEScC4L43EJrFuagxe7VvMhRahEj(T3y0hfGzSigbCSjJfe2mZmZmmeUlBtgLzf8lSzMzMzKr4DMbgSjJYSc(f2mZmZm0Za4R2KH4a6huOGfZ)f2mZmZmga2LHAtgLzf8lSWMzMzMHs(ESjdL898lSzMzMzNhuGnzSVmqFukyyepOGFHf2mZmZmczUZyayyF4NqGnz4uuOGb8FHnZmZmd8vcrzEu075dkuGnzioG(bfkyXCJfXqjFpSmkgH7h)S8kZJIEp)cBMzMz2WkZJIEp2KHs(Eyzumc3p(z5vMhf9E(f2mZmZS3k9se0bGnzuMvWVWMzgrlm4mGKIKIKedyg698HFcbijHs(EqsI89UhUlF(a(kDjoVr3GbKJIKef8vkbijHyDqsIc(kLGVDpuKKwIVsidadB5h)ijHoGKeRxPxEUx64KVhKKOGVsjyS3d9HEGcouKKgjITpKgNLxcKKgqXwswpKPO8cqs6T3ijDwH(HbD2madgYrqassOhukRWOpgkya5iiajjY37E4U8b5OiPiPijXlYrqaF)9eGKIeja \ No newline at end of file diff --git a/LegionWA/LootDisplay/Init.lua b/LegionWA/LootDisplay/Init.lua new file mode 100644 index 0000000..5034418 --- /dev/null +++ b/LegionWA/LootDisplay/Init.lua @@ -0,0 +1,32 @@ +local iconDisplayDuration = 3 + +aura_env.getItemInfo = function(msg) + DevTools_Dump(msg) + local name = msg:match("h%[(.+)%]") or "" + local quantity = msg:match("x(%d+)") or 1 + + local icon = WeakAurasSaved.Cyka.ItemCache[name].icon or 134400 + local color = msg:match("%|cff(.){6}") or "ffffff" + + return name, icon, quantity, color +end + +aura_env.drawIcon = function(msg) + local name, icon, quantity, color = aura_env.getItemInfo(msg) + + local formattedName = "\124cff" .. color .. name .. "\124r x" .. quantity + aura_env.allstates[#aura_env.allstates + 1] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = icon, + name = formattedName, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } +end \ No newline at end of file From 25174c050eddbaf26103848be6b2df472eca2daa Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 14:23:24 +0200 Subject: [PATCH 20/44] Remove debug print --- LegionWA/{LootDisplay => AutoLootDisplay}/Event.lua | 0 LegionWA/{LootDisplay => AutoLootDisplay}/Export | 0 LegionWA/{LootDisplay => AutoLootDisplay}/Init.lua | 1 - 3 files changed, 1 deletion(-) rename LegionWA/{LootDisplay => AutoLootDisplay}/Event.lua (100%) rename LegionWA/{LootDisplay => AutoLootDisplay}/Export (100%) rename LegionWA/{LootDisplay => AutoLootDisplay}/Init.lua (97%) diff --git a/LegionWA/LootDisplay/Event.lua b/LegionWA/AutoLootDisplay/Event.lua similarity index 100% rename from LegionWA/LootDisplay/Event.lua rename to LegionWA/AutoLootDisplay/Event.lua diff --git a/LegionWA/LootDisplay/Export b/LegionWA/AutoLootDisplay/Export similarity index 100% rename from LegionWA/LootDisplay/Export rename to LegionWA/AutoLootDisplay/Export diff --git a/LegionWA/LootDisplay/Init.lua b/LegionWA/AutoLootDisplay/Init.lua similarity index 97% rename from LegionWA/LootDisplay/Init.lua rename to LegionWA/AutoLootDisplay/Init.lua index 5034418..4b8eea8 100644 --- a/LegionWA/LootDisplay/Init.lua +++ b/LegionWA/AutoLootDisplay/Init.lua @@ -1,7 +1,6 @@ local iconDisplayDuration = 3 aura_env.getItemInfo = function(msg) - DevTools_Dump(msg) local name = msg:match("h%[(.+)%]") or "" local quantity = msg:match("x(%d+)") or 1 From 84e211bbe5852d34449ee06bd6e5810e9b6b6f25 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 14:27:12 +0200 Subject: [PATCH 21/44] Minor bugfixes --- LegionWA/AutoLoot/Init.lua | 4 ++-- LegionWA/AutoLootDisplay/Init.lua | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 9196619..9523cdc 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -185,13 +185,13 @@ local valueFilter = { local greyValueFilter = { enabled = true, -- Set threshold to 0 to loot all greys - valueThreshold = 5 * 100 * 100, + valueThreshold = 4 * 100 * 100, applyThresholdToItemStack = false, filter = function(self, slot) if (self.enabled) then aura_env.debugLog("Grey value filter; slot: " .. slot) local itemQuality = getItemQuality(slot) - if (itemQuality and itemQuality > 0) then + if (itemQuality and itemQuality == 0) then local itemValue = getItemValue(slot) if (self.applyThresholdToItemStack) then diff --git a/LegionWA/AutoLootDisplay/Init.lua b/LegionWA/AutoLootDisplay/Init.lua index 4b8eea8..50bab34 100644 --- a/LegionWA/AutoLootDisplay/Init.lua +++ b/LegionWA/AutoLootDisplay/Init.lua @@ -4,8 +4,11 @@ aura_env.getItemInfo = function(msg) local name = msg:match("h%[(.+)%]") or "" local quantity = msg:match("x(%d+)") or 1 - local icon = WeakAurasSaved.Cyka.ItemCache[name].icon or 134400 - local color = msg:match("%|cff(.){6}") or "ffffff" + local icon = 134400 + if WeakAurasSaved.Cyka.ItemCache[name] then + icon = WeakAurasSaved.Cyka.ItemCache[name].icon + end + local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff" return name, icon, quantity, color end From be601996712670e508cc7f8edc611843c58e5784 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 14:30:46 +0200 Subject: [PATCH 22/44] Add [] to icon name --- LegionWA/AutoLootDisplay/Init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LegionWA/AutoLootDisplay/Init.lua b/LegionWA/AutoLootDisplay/Init.lua index 50bab34..344f555 100644 --- a/LegionWA/AutoLootDisplay/Init.lua +++ b/LegionWA/AutoLootDisplay/Init.lua @@ -16,7 +16,7 @@ end aura_env.drawIcon = function(msg) local name, icon, quantity, color = aura_env.getItemInfo(msg) - local formattedName = "\124cff" .. color .. name .. "\124r x" .. quantity + local formattedName = "\124cff" .. color .. "[" .. name .. "]\124r x" .. quantity aura_env.allstates[#aura_env.allstates + 1] = { show = true, changed = true, From 3c09dd2f343dd25ce90aea089ed75c99ab07f280 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 15:07:56 +0200 Subject: [PATCH 23/44] Minor bugfix --- LegionWA/AutoLootDisplay/Event.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/LegionWA/AutoLootDisplay/Event.lua b/LegionWA/AutoLootDisplay/Event.lua index 59803ac..a87e0f7 100644 --- a/LegionWA/AutoLootDisplay/Event.lua +++ b/LegionWA/AutoLootDisplay/Event.lua @@ -1,7 +1,8 @@ -- CHAT_MSG_LOOT function(allstates, e, msg) - aura_env.allstates = allstates - - aura_env.drawIcon(msg) - return true + if (msg:match("You receive loot")) then + aura_env.allstates = allstates + aura_env.drawIcon(msg) + return true + end end From c02c74f2c7ce09dcc15a83b482defaa27c9090a3 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 15:38:21 +0200 Subject: [PATCH 24/44] Add logging to file and fix a bug --- LegionWA/AutoLoot/Init.lua | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 9523cdc..1c643be 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -7,54 +7,64 @@ if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end -- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) -- Link sometimes does not work local function getItemLink(slot) + aura_env.debugLog("getItemLink " .. slot) if (slot == nil) then return nil end return GetLootSlotLink(slot) end local function getItemName(slot) + aura_env.debugLog("getItemName " .. slot) if (slot == nil) then return nil end return select(2, GetLootSlotInfo(slot)) end local function getItemType(slot) + aura_env.debugLog("getItemType " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(6, GetItemInfo(itemLink)) end local function getItemSubtype(slot) + aura_env.debugLog("getItemSubtype " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(7, GetItemInfo(itemLink)) end local function getItemLevel(slot) + aura_env.debugLog("getItemLevel " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(4, GetItemInfo(itemLink)) end local function getItemValue(slot) + aura_env.debugLog("getItemValue " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(11, GetItemInfo(itemLink)) end local function getItemQuantity(slot) + aura_env.debugLog("getItemQuantity " .. slot) if (slot == nil) then return nil end return select(3, GetLootSlotInfo(slot)) end local function getItemQuality(slot) + aura_env.debugLog("getItemQuality " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(3, GetItemInfo(itemLink)) end local function getItemEquipLocation(slot) + aura_env.debugLog("getItemEquipLocation " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(9, GetItemInfo(itemLink)) end local function getItemIcon(slot) + aura_env.debugLog("getItemIcon " .. slot) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end @@ -92,6 +102,7 @@ local goldFilter = { aura_env.debugLog("Gold filter pass") return true end + aura_env.debugLog("Gold filter fail " .. itemName) end end } @@ -105,6 +116,7 @@ local orderResourcesFilter = { aura_env.debugLog("Order resource filter pass") return true end + aura_env.debugLog("Order resource filter fail " .. itemName) end end } @@ -118,6 +130,7 @@ local mountFilter = { aura_env.debugLog("Mount filter pass") return true end + aura_env.debugLog("Mount filter fail " .. itemType) end end } @@ -132,6 +145,7 @@ local ilvlFilter = { aura_env.debugLog("Item level filter pass") return true end + aura_env.debugLog("Item level filter fail " .. itemLevel) end end } @@ -157,6 +171,7 @@ local professionFilter = { return true end end + aura_env.debugLog("Profession filter fail " .. itemType) end end } @@ -179,6 +194,7 @@ local valueFilter = { aura_env.debugLog("Value filter pass") return true end + aura_env.debugLog("Value filter fail " .. itemValue) end end } @@ -204,7 +220,9 @@ local greyValueFilter = { aura_env.debugLog("Grey value filter pass") return true end + aura_env.debugLog("Grey value filter fail " .. itemValue) end + aura_env.debugLog("Grey value filter fail " .. itemQuality) end end } @@ -215,10 +233,11 @@ local questItemFilter = { aura_env.debugLog("Quest item filter; slot: " .. slot) local itemType = getItemType(slot) local itemSubtype = getItemSubtype(slot) - if (itemType and itemSubtype and itemType == itemSubtype == "Quest") then + if (itemType and itemSubtype and itemType == "Quest" and itemSubtype == "Quest") then aura_env.debugLog("Quest item filter pass") return true end + aura_env.debugLog("Quest item filter fail " .. itemType .. " " .. itemSubtype) end end } @@ -246,6 +265,7 @@ local classGearFilter = { return true end end + aura_env.debugLog("Class gear filter fail " .. itemType .. " " .. itemEquipLoc) end end } @@ -263,6 +283,7 @@ local azeriteFilter = { aura_env.debugLog("Azerite filter pass") return true end + aura_env.debugLog("Azerite filter fail " .. itemType .. " " .. itemSubtype .. " " .. itemQuality) end end } @@ -278,6 +299,7 @@ local arguniteFilter = { aura_env.debugLog("Argunite filter pass") return true end + aura_env.debugLog("Argunite filter fail " .. itemName .. " " .. itemQuality) end end } @@ -292,6 +314,7 @@ local ancientManaFilter = { aura_env.debugLog("Ancient mana filter pass") return true end + aura_env.debugLog("Ancient mana filter fail " .. itemName) end end } @@ -305,6 +328,7 @@ local reicpeFilter = { aura_env.debugLog("Recipe filter pass") return true end + aura_env.debugLog("Recipe filter fail " .. itemName) end end } @@ -358,6 +382,10 @@ aura_env.debugLog = function(obj) DevTools_Dump(obj) print() end + if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end + if not WeakAurasSaved.Cyka.Log then WeakAurasSaved.Cyka.Log = {} end + if not WeakAurasSaved.Cyka.Log.AutoLoot then WeakAurasSaved.Cyka.Log.AutoLoot = {} end + WeakAurasSaved.Cyka.Log.AutoLoot[#WeakAurasSaved.Cyka.Log.AutoLoot + 1] = obj end aura_env.skills = { From b668fd6b30265f1d7d4ac73aea5b7863b8bb1b4a Mon Sep 17 00:00:00 2001 From: "M. David" Date: Fri, 19 Aug 2022 21:42:45 +0200 Subject: [PATCH 25/44] Add tostring to debug logs --- LegionWA/AutoLoot/Init.lua | 97 ++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 41 deletions(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 1c643be..bb3ebbc 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -3,68 +3,69 @@ if not WeakAurasSaved then WeakAurasSaved = {} end if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end +-- make blood of sargeras filter -- itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType,itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID, bindType,expacID, setID, isCraftingReagent = GetItemInfo(slot) -- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) -- Link sometimes does not work local function getItemLink(slot) - aura_env.debugLog("getItemLink " .. slot) + aura_env.debugLog("getItemLink " .. tostring(slot)) if (slot == nil) then return nil end return GetLootSlotLink(slot) end local function getItemName(slot) - aura_env.debugLog("getItemName " .. slot) + aura_env.debugLog("getItemName " .. tostring(slot)) if (slot == nil) then return nil end return select(2, GetLootSlotInfo(slot)) end local function getItemType(slot) - aura_env.debugLog("getItemType " .. slot) + aura_env.debugLog("getItemType " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(6, GetItemInfo(itemLink)) end local function getItemSubtype(slot) - aura_env.debugLog("getItemSubtype " .. slot) + aura_env.debugLog("getItemSubtype " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(7, GetItemInfo(itemLink)) end local function getItemLevel(slot) - aura_env.debugLog("getItemLevel " .. slot) + aura_env.debugLog("getItemLevel " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(4, GetItemInfo(itemLink)) end local function getItemValue(slot) - aura_env.debugLog("getItemValue " .. slot) + aura_env.debugLog("getItemValue " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(11, GetItemInfo(itemLink)) end local function getItemQuantity(slot) - aura_env.debugLog("getItemQuantity " .. slot) + aura_env.debugLog("getItemQuantity " .. tostring(slot)) if (slot == nil) then return nil end return select(3, GetLootSlotInfo(slot)) end local function getItemQuality(slot) - aura_env.debugLog("getItemQuality " .. slot) + aura_env.debugLog("getItemQuality " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(3, GetItemInfo(itemLink)) end local function getItemEquipLocation(slot) - aura_env.debugLog("getItemEquipLocation " .. slot) + aura_env.debugLog("getItemEquipLocation " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end return select(9, GetItemInfo(itemLink)) end local function getItemIcon(slot) - aura_env.debugLog("getItemIcon " .. slot) + aura_env.debugLog("getItemIcon " .. tostring(slot)) if (slot == nil) then return nil end local itemLink = getItemLink(slot) if (itemLink == nil) then return nil end @@ -73,7 +74,7 @@ end local doLoot = function(slot) - aura_env.debugLog("Looting slot: " .. slot) + aura_env.debugLog("Looting slot: " .. tostring(slot)) LootSlot(slot) local itemIcon = getItemIcon(slot) or 134400 @@ -94,7 +95,7 @@ local goldFilter = { enabled = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Gold filter; slot: " .. slot) + aura_env.debugLog("Gold filter; slot: " .. tostring(slot)) local itemName = getItemName(slot) -- I guess it does not support OR in regex? -- itemName:match("%d+ ((Gold)|(Silver)|(Copper))") @@ -102,7 +103,7 @@ local goldFilter = { aura_env.debugLog("Gold filter pass") return true end - aura_env.debugLog("Gold filter fail " .. itemName) + aura_env.debugLog("Gold filter fail " .. tostring(itemName)) end end } @@ -110,13 +111,13 @@ local orderResourcesFilter = { enabled = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Resource filter; slot: " .. slot) + aura_env.debugLog("Resource filter; slot: " .. tostring(slot)) local itemName = getItemName(slot) if (itemName and itemName:match("Order Resources")) then aura_env.debugLog("Order resource filter pass") return true end - aura_env.debugLog("Order resource filter fail " .. itemName) + aura_env.debugLog("Order resource filter fail " .. tostring(itemName)) end end } @@ -124,13 +125,13 @@ local mountFilter = { enabled = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Mount filter; slot: " .. slot) + aura_env.debugLog("Mount filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) if (itemType and itemType == "Mount") then aura_env.debugLog("Mount filter pass") return true end - aura_env.debugLog("Mount filter fail " .. itemType) + aura_env.debugLog("Mount filter fail " .. tostring(itemType)) end end } @@ -139,13 +140,13 @@ local ilvlFilter = { ilvlThreshold = 880, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("ILvl filter; slot: " .. slot) + aura_env.debugLog("ILvl filter; slot: " .. tostring(slot)) local itemLevel = getItemLevel(slot) if (itemLevel and itemLevel > self.ilvlThreshold) then aura_env.debugLog("Item level filter pass") return true end - aura_env.debugLog("Item level filter fail " .. itemLevel) + aura_env.debugLog("Item level filter fail " .. tostring(itemLevel)) end end } @@ -158,7 +159,7 @@ local professionFilter = { cooking = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Profession filter; slot: " .. slot) + aura_env.debugLog("Profession filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) if (itemType and itemType == "Tradeskill") then local itemSubtype = getItemSubtype(slot) @@ -171,7 +172,7 @@ local professionFilter = { return true end end - aura_env.debugLog("Profession filter fail " .. itemType) + aura_env.debugLog("Profession filter fail " .. tostring(itemType)) end end } @@ -181,12 +182,12 @@ local valueFilter = { applyThresholdToItemStack = false, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Value filter; slot: " .. slot) + aura_env.debugLog("Value filter; slot: " .. tostring(slot)) local itemValue = getItemValue(slot) if (self.applyThresholdToItemStack) then local itemQuantity = getItemQuantity(slot) - aura_env.debugLog("There exist " .. itemQuantity .. " items in slot " .. slot) + aura_env.debugLog("There exist " .. tostring(itemQuantity) .. " items in slot " .. tostring(slot)) itemValue = itemValue * itemQuantity end @@ -194,7 +195,7 @@ local valueFilter = { aura_env.debugLog("Value filter pass") return true end - aura_env.debugLog("Value filter fail " .. itemValue) + aura_env.debugLog("Value filter fail " .. tostring(itemValue)) end end } @@ -205,14 +206,14 @@ local greyValueFilter = { applyThresholdToItemStack = false, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Grey value filter; slot: " .. slot) + aura_env.debugLog("Grey value filter; slot: " .. tostring(slot)) local itemQuality = getItemQuality(slot) if (itemQuality and itemQuality == 0) then local itemValue = getItemValue(slot) if (self.applyThresholdToItemStack) then local itemQuantity = getItemQuantity(slot) - aura_env.debugLog("There exist " .. itemQuantity .. " items in slot " .. slot) + aura_env.debugLog("There exist " .. tostring(itemQuantity) .. " items in slot " .. tostring(slot)) itemValue = itemValue * itemQuantity end @@ -220,9 +221,9 @@ local greyValueFilter = { aura_env.debugLog("Grey value filter pass") return true end - aura_env.debugLog("Grey value filter fail " .. itemValue) + aura_env.debugLog("Grey value filter fail " .. tostring(itemValue)) end - aura_env.debugLog("Grey value filter fail " .. itemQuality) + aura_env.debugLog("Grey value filter fail " .. tostring(itemQuality)) end end } @@ -230,14 +231,14 @@ local questItemFilter = { enabled = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Quest item filter; slot: " .. slot) + aura_env.debugLog("Quest item filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) local itemSubtype = getItemSubtype(slot) if (itemType and itemSubtype and itemType == "Quest" and itemSubtype == "Quest") then aura_env.debugLog("Quest item filter pass") return true end - aura_env.debugLog("Quest item filter fail " .. itemType .. " " .. itemSubtype) + aura_env.debugLog("Quest item filter fais " .. tostring(itemType) .. " " .. tostring(itemSubtype)) end end } @@ -247,7 +248,7 @@ local classGearFilter = { qualityThreshold = 2, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Class gear filter; slot: " .. slot) + aura_env.debugLog("Class gear filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) local itemEquipLoc = getItemEquipLocation(slot) if (itemType == "Armor" @@ -265,7 +266,7 @@ local classGearFilter = { return true end end - aura_env.debugLog("Class gear filter fail " .. itemType .. " " .. itemEquipLoc) + aura_env.debugLog("Class gear filter fais " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) end end } @@ -275,7 +276,7 @@ local azeriteFilter = { qualityThreshold = 2, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Azerite filter; slot: " .. slot) + aura_env.debugLog("Azerite filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) local itemSubtype = getItemSubtype(slot) local itemQuality = getItemQuality(slot) @@ -283,7 +284,7 @@ local azeriteFilter = { aura_env.debugLog("Azerite filter pass") return true end - aura_env.debugLog("Azerite filter fail " .. itemType .. " " .. itemSubtype .. " " .. itemQuality) + aura_env.debugLog("Azerite filter fais " .. tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) end end } @@ -292,14 +293,14 @@ local arguniteFilter = { qualityThreshold = 1, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Argunite filter; slot: " .. slot) + aura_env.debugLog("Argunite filter; slot: " .. tostring(slot)) local itemName = getItemName(slot) local itemQuality = getItemQuality(slot) if (itemName and itemQuality and itemName:match("Argunite") and itemQuality > self.qualityThreshold) then aura_env.debugLog("Argunite filter pass") return true end - aura_env.debugLog("Argunite filter fail " .. itemName .. " " .. itemQuality) + aura_env.debugLog("Argunite filter fais " .. tostring(itemName) .. " " .. tostring(itemQuality)) end end } @@ -308,13 +309,13 @@ local ancientManaFilter = { qualityThreshold = 1, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Ancient mana filter; slot: " .. slot) + aura_env.debugLog("Ancient mana filter; slot: " .. tostring(slot)) local itemName = getItemName(slot) if (itemName and itemName:match("Ancient Mana")) then aura_env.debugLog("Ancient mana filter pass") return true end - aura_env.debugLog("Ancient mana filter fail " .. itemName) + aura_env.debugLog("Ancient mana filter fail " .. tostring(itemName)) end end } @@ -322,13 +323,27 @@ local reicpeFilter = { enabled = true, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Recipe filter; slot: " .. slot) + aura_env.debugLog("Recipe filter; slot: " .. tostring(slot)) local itemName = getItemName(slot) if (itemName and (itemName:match("Recipe") or itemName:match("Technique"))) then aura_env.debugLog("Recipe filter pass") return true end - aura_env.debugLog("Recipe filter fail " .. itemName) + aura_env.debugLog("Recipe filter fail " .. tostring(itemName)) + end + end +} +local bloodOfSargerasFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Blood of Sargeras filter; slot: " .. tostring(slot)) + local itemName = getItemName(slot) + if (itemName and itemName:match("Sargeras")) then + aura_env.debugLog("Blood of Sargeras filter pass") + return true + end + aura_env.debugLog("Blood of Sargeras filter fail " .. tostring(itemName)) end end } @@ -353,7 +368,7 @@ aura_env.filterService = { run = function(self, lootInfo) self.slotsToLoot = {} for slot, item in pairs(lootInfo) do - aura_env.debugLog("Loot slot: " .. slot .. " " .. item.item) + aura_env.debugLog("Loot slot: " .. tostring(slot) .. " " .. item.item) self:runFilters(slot) end From 32c5a1816b6f10473a98e75c8b8339dcb85fc0eb Mon Sep 17 00:00:00 2001 From: "M. David" Date: Mon, 22 Aug 2022 20:29:15 +0200 Subject: [PATCH 26/44] Add inscription to prof filter --- LegionWA/{ => AutoLoot}/AutoLootDisplay/Event.lua | 0 LegionWA/{ => AutoLoot}/AutoLootDisplay/Export | 0 LegionWA/{ => AutoLoot}/AutoLootDisplay/Init.lua | 0 LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 9 ++++++--- 5 files changed, 7 insertions(+), 4 deletions(-) rename LegionWA/{ => AutoLoot}/AutoLootDisplay/Event.lua (100%) rename LegionWA/{ => AutoLoot}/AutoLootDisplay/Export (100%) rename LegionWA/{ => AutoLoot}/AutoLootDisplay/Init.lua (100%) diff --git a/LegionWA/AutoLootDisplay/Event.lua b/LegionWA/AutoLoot/AutoLootDisplay/Event.lua similarity index 100% rename from LegionWA/AutoLootDisplay/Event.lua rename to LegionWA/AutoLoot/AutoLootDisplay/Event.lua diff --git a/LegionWA/AutoLootDisplay/Export b/LegionWA/AutoLoot/AutoLootDisplay/Export similarity index 100% rename from LegionWA/AutoLootDisplay/Export rename to LegionWA/AutoLoot/AutoLootDisplay/Export diff --git a/LegionWA/AutoLootDisplay/Init.lua b/LegionWA/AutoLoot/AutoLootDisplay/Init.lua similarity index 100% rename from LegionWA/AutoLootDisplay/Init.lua rename to LegionWA/AutoLoot/AutoLootDisplay/Init.lua diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index 9705fa6..a3785b6 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dqvp5bGiO6rqOuDjiuYOucNsr1QuIi9kucXSuvDlq0UqOggiCmeyzQkv9muvOPHQsDnvLO2gkH03qjunoucLZHQsQ1HQIENse19uK9HQsY)GqH6GOKAHOQepuHsteLOUOse2OQs5JqOAKieNuHQvcQxcHczMOkUPsK2PcHFQq0qri5OOezPOQGNIitvvXvHqPSvvLkFvHIZQQeP3Iknxiu0Drf7fI(lkjdwoSQSyfspgrnzfCzGnJs9zfLrdbNgsRwjI41qiZwPUniTBv8BvA4iOJRQewokEouMosxxjTDuL(UsuJxvjDEuvTEiuW7rjy(QkrCFesTFAKeG8dsspKFqsrscdjPVN4VmXe89qsWxgYz818nlklkzc4RrsckssdijnG8dssdOyljRhYuuEbij92BKK4FKSzJbOihXxMpcbsspYuuEbFyqNndWS07aa5iGKaiqscJWhzaYrabssyGnBI6IEOij9zKefplX3(GK0BJo7GKeplX3(GKeca0ziqr(n((ldbFKffccyXzX5BwSVmFtaFZ3izdjF)LrsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIKeZDdq(bjjORBkkYpiPiPijnGYMnk51nLFKFqsc66MII8dskskssmpYaKFqsc66MII8dskskssONzm3vcr(bjjORBkkYpiPiPijriVesFBWHI8dssqx3uuKFqsrsrsI9Jmf9Eq(bjjORBkkYpiPiPijTIbyf59ddd5OiPij9oOqFuas(cssmGzO3Zh(jeGK0a)NhuuYZyUReIKe4Re(odGbK8fKKOmOZMbyq(bjjmeUlpYdssyiCxEKhwtMIYlajfjj0bKKy9k9YZ9srsc9qbmN3(7amyO3dYrWhrs6Sc9dd6SzagmKJGaKK(6izZgdqrocizX5Biqsc9Gszfg9XqbdihbbijTm6afbKFJV)YqWhzrHGawCwC(Mf7lZ3eW38ns2qY3SOiPijrg5hKJGaKFqsIc(kLGVDpusOigaihX3dbssdOyljRhYuuEbij92BKKEKPO8c(WGoBgGzP3baYrajbqGK0Jmf9EWq(bjjm6JHI8dssdxwbfGH9MbqokskssOhukYpijnCzf5vm6fks(cssKxXOxOijTVKFBBam66mBYy)2yaHrzBNl1gd4HiwVY8Wi94fmyueahBmGhIy9kZdJ0JxWGnzSarBGZGWOSTZLAJb8qeRxzEyKE8cgiES8JONrraCSXaEiI1RmpmspEbdepw(r0ZMmwGOnWzqyu225sTXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGrraCSXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGnzSarBGZGWcdjKgkfaDepOGFdLcGYd6br)gkfaLLwFBuk))gkfaLhaVG9VHsbqxk6HhaVG9VHsbq)WpHGFdLcGsAD0p8ti4hLcGsI(iJOXExp0FdLcGUeFXkkH8Cj)BOua0pGVsxza)ggyVjkguYGFJ8(HHnol)ByRJsE)WWgNL)TrrpdF4NqWp4Re(ipol)Bya64S8VHInwMhBk6zgFa8MbouBYqCaDCka64h23fy7lDUWqcPTVx64KVNFBFV0r8Gc(T99szP13HIs5)3iVYWaoK5FCw(323lLLwFBuk))2(sgrGHFdfJLwby0XPaO)2xScWOJZY)gkgRjtr5fytgIdO8CVus7lD8d77cS9LoxyiH04b9Gid7cfqrHcWSHlaZoxQT8LbrcVVKFBJ96Hmf9ESza64uauEqpiAb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMXaORmhdXbuEUxkP9LYd6brlW2x6CHbNbH3xYVTXE9qMIEp2maDCka6iEqblW2x6CHnZmu22cS9LAtt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDX3)BioGYZ9sjTV0XpSVlW2x685cdodcVVKFBJ96Hmf9ESza64ua0p8tiyb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMTVKFBdLcGYd6br2KndqhNcGYd6brlW2x6CHnZmu22cukakpOheztt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDbl6VH4a64ua0XpSVlqPaO8GEq085cdodcVVKFBJ96Hmf9ESza64uausRJs5NqWcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6cw8FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaO8a4fSxGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxW3)gIdOJtbqh)W(UaLcGYd6brZNlm4mi8(s(Tn2RhYu07XMbOJtbq)U3EfSaBFPZf2mZqzBlW2xQnnzh09CJIa4yma6kZXoOBdCge2mZ2xYVTHsbq5b9GiBYMbOJtbq5b9GOfy7lDUWMzgkBBbkfaLh0dISPj7GUNBueahJbqxzo2bDBGZGWMzgdGUYCmmWgqMUGac(nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGYsRVdfLY)cS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehq55EPK2x64h23fy7lD(CHbNbH3xYVTXE9qMIEp2maDCkaklT(2Ou(xGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGUeFXkkH8Cj)OO3ZcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6c(6FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaOJt(EwGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxqae)gIdOJtbqh)W(UaLcGYd6brZNlm4miSWcVVKFBB4YZ9sTjJ96Hmf9EwGTV05cBMzVvMhRahEjEam66mEUZwGZZ9srpZmS9LYNgUrmXg2(sNlSzMXZ9sjTV0fy7lDUWcBMz7l532qPaOJt(ESjBgGoofaDCY3ZcS9Lo3Umgb8r(MVHacHnZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUDzmCeBheDUlFWf2mZqPaOJ4bfytgkfaDepOa(Cg26OlWrmp4)g(VHpxyZmBFj)2gkfaLLwFBuk)2KndqhNcGYsRVnkL)fy7lDUDzmiewyZmdLTDUuBmGhIy9kZdJ0JxWaXJLFe9iECka6yFKraWfLcGoIhuahJIa4iSzMzMzJb8qeRxzEyKE8cgiES8JOhXJtbqh7JmcaUOua0r8Gc4ytgliSzMzMzMzgk57XMmuka64KVNFHnZmZmZmZ(I13gLYVnzOuauwA9TrP8)lSzMzMzeTWMzg4mim4miSWcVVKFBB2Dp8n0nfWytgliSzMboVr3GbBYOmRGFHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTahXV7bJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgKqAJBZwbyygk1gUam7CPg2kHeEzO2i5dg6XyaZaFfXyHnZmZmZmZGesdLcGoIhuaFc9rjJWcCeRbweBXce)UhM)L8LSGe6MxaZ8VKVKfJ9siHaM5ZXNlSzMzMzMzgkBBbkfa98GcS3zWqPaOJ4bfWNqFuYiSahXAGfXq87EaFUDzmuka6iEqb8j0hLmclWrSgyrmsOBEbm4ZTlJHsbqhXdkGpH(OKryboI1alIn2lHecyWNp3OiaocBMzMzMzMzMzVvMhRahEjEam66mEUZwGJ439GXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTDzgam8ba2DLHma7BOBkGXMmwqyZmdCEJUbd2Krzwb)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBboFaGDxzidm2OBkGzjBy7lLpnCJyInS9LoxyZmZmZmZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUWMzMzMzMzOSTfOua0r8GcS3zWqPaOJ4bfWNqFuYiSaFKmdagJpaWURmKby4ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhjZaGXyay3vgYaJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBd6D9q)g6McySjJfe2mZaN3OBWGnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGV076HASr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbq)WpHaBAYWx6D9qXNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWx6D9qn2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(Tn0nV7VHUPagBYybHnZmW5n6gmytgLzf8lSzMHU5D)bbgagc39GnzSySyq8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JZdVBJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaLhaVGTnzZa0XPaO8a4fSxGTV05cBMzMzMzMHY2wGsbq5bWlyBVZGHsbq5bWlyB8vggyZMy0nV7piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhNcGABaVGTXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTriZLnadd9E(g6McySjJfe2mZaN3OBWGnzuMvWVWMzgcaMrXSjJYSc(f2mZiVVueSjJ9BJb(f2mZUmaBYy)2yGFHnZSn4rraWytg73gd8lSzMr(Ere6zMnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGtumx2amm07XyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)WpHaBYMbOJtbq)WpHGfy7lDUWMzMzMzMzOSTfOua0p8tiWENbdLcG(HFcb20KH)H5naWqe6EJp3OiaocBMzMzMzMzMz7l532qPaOKwhLYpHaBYMbOJtbqjTokLFcblW2x6CHnZmZmZmZmZmu22cukakP1rP8tiWENbBbkfaL06Ou(jeyttgoramJIBVZGHb2SjgbaZOyZf2mZmZmZmZmZUm2cukakP1rP8tiWMMmCEapkcagC7DgmmWMnXBWJIaGzUWMzMzMzMzMz2LXwGsbqjTokLFcb20KHp29LIaU9odggyZMyY7lfH5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(iza427myyGnBIVmG5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(yVxeHEMHBVZGHb2SjM89Ii0ZS5ZnkcGJWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBborXCzdWWqVhJn6McymcFyy4Zf2mZmZmZmZmZmZmgaDL5yuMvGWMzMzMzMzMzg4miSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(TnEF7vW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZ49TxbFqGbGHWDpytgF8lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwG)DV9kWyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)U3Efyt2maDCka6392RGfy7lDUWcBMzMzMzMHY2wGb2Sj(riHB()GadadH7E4ZDCkakj6JmIMBueahHnZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4FqaWamWxrXOgUrmXgkfaLLwFhkkLFJyInCdLcGIzOhdBFPgUrmXg2(sNlSzMzMzMzMzMHsbq)U3Efytgkfa97E7vGTKAOuauwA9DOOu(f2mZmZmZmdCgewyZmZmZmZmu22cuka6392Ra7Dgmuka6392RaJVYWaB2eZ7BVc(GadadH7EyUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTa)7E7vGXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTnJbW)392RGVHUPagBYybHnZmW5n6gmytgLzf8lSzMbjKgja1OiWaWq4Uhm61GWOxBFVu7T32mga)ycBMz8(2RGpiWaWq4UhSj7lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGJ4ma(nEF7vGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cukaklT(2Ou(T3zWqPaOS06BJs534RmiMBueahHnZmZmZmZmZS9L8BBOua0V7Txb2KndqhNcG(DV9kyb2(sNlSWMzMzMzMzMzgkBBbgyZM4hHeU5)dcmameU7Hp3XPaOKOpYiAUrraCe2mZmZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBb(heamad8vumQHBetSHsbqzP13HIs53iMyd3qPaOyg6XW2xQHBetSHTV05cBMzMzMzMzMzMzgkfa97E7vGnzOua0V7Txb2sQHsbqzP13HIs5xyZmZmZmZmZmdCgewyZmZmZmZmZmdLTTaLcG(DV9kWENbdLcG(DV9kW4RmmWMnX8(2RGpiWaWq4UhMBueahHnZmZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCeNbWVX7BVcm2OBkGXi8HHHpxyZmZmZmZmZmZmZya0vMJrzwbcBMzMzMzMzMzGZGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532(IvagDCka63q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwAfGrnukaQXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMHY2wGsbq)WpHa7DgmukakP1rP8tiWENbdLcG(HFcb20KHsbqjTokLFcb20KHZsRamk(CJIa4iSzMzMzMzMzM9wzEScC4L4bWORZ45oBbolTcWOgkfa1yJUPagJWhgg(CHnZmZmZmZmZmgaDL5yuMvGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532iVFyyio4X8n0nfWytgliSzMboVr3GbBYOmRGFHnZm0nV7piWaWq4UhSjJfdci(f2mZ(I13gLY)heyayiC3d2K99)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBb(y3pmmBg4XySr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZS9L8BBOua0L4lwrjKNlzBYMbOJtbqxIVyfLqEUKFu07zb2(sNlSzMzMzMzgkBBbkfa9d)ecSPjdN1mqVm4cBMzMzMzMDzmuka6h(jeyttg(yapcVhCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9TXhbIVe8bCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9Hpm(iqmAj(GlSzMzMzMz2LXqPaOlXxSIsipxY20KHp(i(UpFPe1sWQXYZiznIr4cBMzMzMzMDzmuka6s8fROeYZLSnnz4JpIV7ZxkrTeSAelXyrmcFUrraCe2mZmZmZmZmZ2xYVTHsbq5bWlyBt2maDCkakpaEb7fy7lDUWMzMzMzMzMz2(s(TnukaklT(2Ou(TjBgGoofaLLwFBuk)lW2x6CHnZmZmZmZmZS9L8BBOylXxSIsiHVr3aBYERmpwbo8smgIq3BmUyGnGmDbF83qSDqPJD)WWwGt4(XpGbF(CoCXwhLYpHao20KrGWcBMzMzMzMzMzOSTfOylXxSIsiHVr3a7DgmukakpaEbBJVYWaB2eJU5D)bbgagc39G9odgkfaLLwFBuk)gFLHb2Sj(lwFBuk)FqGbGHWDpm3OiaocBMzMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JD)WWSzGhJXgDtbmgHpmm85cBMzMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmZmdCge2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22dXaGbLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMzg6M39heyayiC3d2KXIbbe)cBMzFX6BJs5)dcmameU7bBY((FHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTaN1igamOuGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbqjTokLFcb27myOuauwA9TrP8BVZGHsbq)WpHaBAYWh79GTc9n6gGBVZGHsbqjTokLFcb20KHpskcagC7DgmukaklT(2Ou(n(kJG5gfbWryZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCwJyaWGsbgB0nfWye(WWWNlSzMzMzMzMzMXaORmhJYSce2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22Jz26bLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMz2xS(2Ou()GadadH7EWMmc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwZmB9GsbgB0nfWSKnS9LYNgUrmXg2(sNlSzMzMzMz2(s(Tnuka6iEqb2KndqhNcGoIhuWcS9LoxyZmZmZmZS9L8BBOuauwA9TrP8Bt2maDCkaklT(2Ou(xGTV05cBMzMzMzMHY2wGsbqhXdkWENbdLcGYsRVnkLF7Dgmuka6iEqb8j0hLmclWznZS1dkfGp3ENbdLcGYsRVnkLFJVYWaB2e)fRVnkL)piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWznZS1dkfySr3uaJr4dddFUWMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmWzqyZmZmZaNbHnZmWzqyIw49L8BBVdzuWHU0359n0nfWytgliSzMboVr3GbBYOmRGFHnZSVy9TrP8)bbgagc39Gnze8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4S(qgfCOg035zSr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOJ4bfyt2maDCka6iEqblW2x6CHnZmZmZmZqzBlqPaOJ4bfyVZGHsbqhXdkGpH(OKryboRpKrbhQT035HpFUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTaN1hYOGd1G(opJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBJbGsMqW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cC(aGmkHaJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgkBBbkfaDepOa7DgSfOua0r8Gc4tOpkzewGZhaKrjeGp3UmgkfaDepOa(e6JsgHf4FaKr4G(fRa85ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlW5daYOecm2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrlSWVvMhRahEjMn6Mcyiby4fLmWMmwqyZmJn6McyWSjJfe2mZmZSz39W3q3uaZVWMzMzMDzgam8ba2DLHma7BOBkG5xyZmZmZGExp0VHUPaMFHnZmZmdDZ7(BOBkG5xyZmZmZiK5YgGHHEpFdDtbm)cBMzMzgVV9k4BOBkG5xyZmZmZMXa4)7E7vW3q3uaZVWMzMzM9fRam64ua0VHUPaMFHnZmZmJ8(HHH4GhZ3q3uaZVWMzMzM9qmayqPGVHUPaMFHnZmZm7XmB9GsbFdDtbm)cBMzMz27qgfCOl9DEFdDtbm)cBMzMzgdaLmHGVHUPaMFHnZmI(xyZmdBFPyFU8CVuBYybI(xyZmJz9ytg71dzk69SadSz)B77Lo(H9DUWMzMzMHb2SjgBFPyFU8CVuBYybIwyZmZmZyFzmS9L(BOuaud9ye(qzWwSVx64h2352WvyZmZmZmZS3kZJvGdVepagDDgp3zlW55EPg2(s5td3iMydBFPgXeB4gUrmXgkfaLyuka6CHnZmZmZmZWaB28jZ65BOBkGbBb2(sNlSzMzMzGZGWcBMzMz2BL5XkWHxIhaJUoJN7Sf4K2xkMrV2(EP8PHBetSHyhdSztm2(sX(C55EPZf2mZmZS3kZJvGdVepagDDgp3zlWaB2eJTVuSpxEUx6CHnZmZmJ9LXqTjdXogyZMyS9LI95YZ9s)nc(nijWgUcBMzMzMzMTVKFBdBFP2KHb2SjgBFPyFU8CVuUOCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCEUxk6zMHTVuBbkfW8OxM58PHBetSHTV05cBMzMzMzMnC55EPlW2x6CHnZmZmdCge2mZaNHFHnZmM1Z3q3uadMnzSxpKPO3ZcmWM9VHTV05cBMzMzg7lJHOFJn6Mcym0Jr4dLbBbgyZMy2OBkGbBUnCf2mZmZmZmdLTTGn6Mcy4t2OBkGzb2(sNp3OiaocBMzMzMzMzMzqcPTu0ziqTrb2S7DWO3Fd9GrbVb7Y2wswXO2Bya9mZW2xQrV2Z2Oy0F7nmyVJDhDjbqMAlJsrWqpSV2B07k1OiamukaQ9odgfbGHTVuJ89qFOh0ZmdLAyxd8iJGXgDtbmg53XgqjtFuGrrayOuau78GcS3zWqjFpcBMzMzMzMzMzyGnBIX2xk2Nlp3lLlIDmWMnXy7lf7ZLN7LASigbCSjdBFPcBMzMzMzMzMzma6kZryZmZmZmZmWzqyZmZmZaNbHnZmWzqyIwyHFRmpwbo8s8ay01z8CNztg71dzk69S4o6sYCHnZmu22IbWORZMBueahHnZmZmJqg0dDbIdOFqHcwmFUWMzMzMXYaE)CVBmwXYRqjCXD0LK5cBMzMzgHmOh6I5cBMzGZGWGZGWc)wzEScC4LymeHU3y2KXccBMzqc5yEmmOxgHnZmUeWXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytgb)cBMzMzgxCeF9GHZXMmc(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytgb)cBMzMzgxCs0hVamCo2KrWVWMzMzMXf)BOyuBmGhH3dgohBYi4xyZmZmZ4IZYVzZamy4CSjJGFHnZmZmJl(yzUyyJExgdNJnze8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKOE73a6ryZmJ73ZXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytge)cBMzMzgxCeF9GHZXMmi(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytge)cBMzMzgxCs0hVamCo2KbXVWMzMzMXf)BOyuBmGhH3dgohBYG4xyZmZmZ4IZYVzZamy4CSjdIFHnZmZmJl(yzUyyJExgdNJnzq8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKiRhkGryZmJlFKJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmi(f2mZmZmU4l9HUX5ytgb)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYi4xyZmZmZ4IZxUlJHZXMmc(f2mZmZmU4i(6bdNJnze8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmc(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytgb)cBMzMzgx8XYCXWg9UmgohBYi4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjF4oBfiSzMXLV5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYi4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYG4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqsumOamQWMzg3VmhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KrWVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjdIFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjdIFHnZmZmJl(NLVqsK3zamyS(RamCo2KbXVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytge)cBMzMzgxCI6UbpgOy4CSjdIFHnZmZmJl(ipaijY7magmslFzgWW5ytge)cBMzMzgx8plFHKiVZayWiT8LzadNJnzq8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytgb)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmc(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYi4xyZmJO)f2mZGeswg8OiyigDqNHavyZmJllkhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KbXVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjJGFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjJGFHnZmZmJl(NLVqsK3zamyS(RamCo2KrWVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytgb)cBMzMzgxCI6UbpgOy4CSjJGFHnZmZmJl(ipaijY7magmslFzgWW5ytgb)cBMzMzgx8plFHKiVZayWiT8LzadNJnze8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytge)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmi(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYG4xyZmJO)f2mZGessi8G(ocBMzCzX5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjdIFHnZmZmJl(sFOBCo2KrWVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmc(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqU03mGWMzgxwmo2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKJ5XSVKrKWMzgx(Ao2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKl9EqKWMzgxcGGJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KrWVWMzMzMXfNecOG9agohBYi4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYi4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjlZSIoiSzMXLac4ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnzq8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnze8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqYYaO3JrK1dfWiSzMXLGVNJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KbXVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmc(f2mZmZmU4KOpEby4CSjdIFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)ct0c)wzEScC4L4Vy9TrP8p27(YGztgliSzMHJysW3Z3KzZMVEGVEGVEa)3GesJOUxgHnZmCetc(E(MmB2SzZMnB24)gKqAJ9cf69iSzMHJysW3Z3KzZMaaB2qab(VbjKgITd5luO3JWMzgoIjbFpFtMnBiGGfhIHb8Fdsin(WJbiSzMHJysW3Z3KzZ(Xh5JFzaa)3GesBjieLSWMzgoIjbFpFtMnB2SzXGaciW)niH04bmdCgEm8lSzMHJysW3Z3KzZgWIsMmlge4)gKqASMHIY(rMkSzMHJysW3Z3KzZgciitMnB8FdsinIaqz23luHjAKuKuKKOmOZMbyq(bjjk)ecqsI8kg9cfjjmeUlpYdssyiCxEKhwtMIYlajjaVGdfdjjEg5i)Wk(WsWAw(lfjjYRy0luwr5Nqassy0hfSs4WJcqsImcaYicjjaVGdfjjYRy0luKKGesJNroYpSIpSeSML)sfM96Hmf9EwaMlSzMTVKFBBFV0XpSV2KH4akp3lD8d77I5cBMzVvMhRahEjMn6Mcyiby4fLmGpzwpl23lD8d77CHnZSXUVyaEUx6I5cdodcJKe5vm6fkRqaDaGKeffkyajfjjk4RuciQl6HIKeFyCeNiFqsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIK0akB2OKx3u(r(bjjORBkkYpiPiPijX8idq(bjjORBkkYpiPiPijX(rMIEpi)GKe01nff5hKuKuKKyUBaYpijbDDtrr(bjfjfjj0ZmM7kHi)GKe01nff5hKuKuKKiKxcPVn4qr(bjjORBkkYpiPiPiPijHEOaMZB)Dagm07b5i4JijDwH(HbD2madgYrqassmGzO3Zh(jeGKek57bjjk4RucqscX6GKef8vkbJ9EOp0duWHIK0irS9H04S8sGKe6assSELE55EP8CNHsgjjk4Ruc(29qrsAj(kHmamSLF8JKe57DpCx(8b8v6sCEJUbdihfjj0dkLvy0hdfmGCeeGKe57DpCx(GCuKuKJ47r(bjjk4Ruc(29qjHIyaGCeFpeij9itr5f8HbD2maZsVdaKJascGajj0dfWCE7VdWGHEpihbFejP3bf6JIEpi)GKeg9Xqr(bjjk)ecqsIqgagGIKeHmamafjjSn6aydytrsrsIn6bfdbKFqsIYpHaKKiKbGbOijridadqrscBJoag9sPxOiPiPijrzqNndWG8dssu(jeGKe5vm6fkssKxXOxOScb0bassuuOGbKKiVIrVqrscsiTXsew)HvlLeIZkEg5i)im71dzk69S4T3y0hfG9BGFdk2S5cBMzVvMhRahEj(T3y0hfGzt2BVXOpkatyHnZS3kZJvGdVepW8wECY3ZcOyZMlSzMXaORmhJYScegCgegjjYiaiJiKKa8couKKa8coumKKglry9hwTusioR4zKJ8dssKxXOxOSIYpHaKKWOpkyLWHhfGKegc3Lh5bjjmeUlpYdRjtr5fGKIKef8vkbe1f9qrsIpmoItKpijTVVbKFqsI(2Gd97r(bjjORBkkYpiPiPijrFBWHI8dssqx3uuKFqsrsrsAaLnBuYRBk)i)GKe01nff5hKuKuKKyEKbi)GKe01nff5hKuKuKKy)itrVhKFqsc66MII8dsksksseYlH03gCOi)GKe01nff5hKuKuKKqpZyUReI8dssqx3uuKFqsrsrsI5Ubi)GKe01nff5hKuKuKuKKEKPO3dgYpijHrFmuKFqsA4YkOamS3maYrrsrsc9Gsr(bjPHlRiVIrVqrYxqsI8kg9cfjP9L8BBOKVhwgfJW9JFwEL5rrVhBY4Jcl8BL5XkWHxINbOJtbqh)W(Atg71dzk69Sak2S5cBMzSmG3p37gJvS8kucxafB2CHnZS9L8BBNhuGnzqXMXNqFuYiSahbelUliMfzoIfh852LXWXf2mZ2xYVT9fRVdfLYVnzqXMXNqFuYiSa)RlqSgyrMJp3UmgbclSzMTVKFBdL89yt2yapeX6vMhgPhVGbIhl)i6r84ua0X(iJaG75bfWHyuY3JDzmc4J8nFdbecBMz7l532iF3xgBYGInJpH(OKryboI1xYxcz2Sxq8CwGfLOXNBxgdNnB2SzZgxyHnZmgaDL5yNhuWVHs(E(TVy9DOOu()nY39LryWzqyHFRmpwbo8s8aZB5XjFp2KXE9qMIEplGInBUWMz2(s(TTZdk43qjFp)2xS(ouuk))g57(Yyt2BL5XkWHxINbOJtbqh)W(Uak2S5clSzMTVKFBJ9Lb6JsbdJ4bfytgoIjbFpFtMnBCJyInY39LXiMy78GcmIj2Wrmj475Bg7R4gXeBFX67qrP8lSzM9wzEScC4L43EJrFuagxe7VvMhRahEj(T3y0hfGzSigbCSjJfe2mZmZmmeUlBtgLzf8lSzMzMzKr4DMbgSjJYSc(f2mZmZm0Za4R2KH4a6huOGfZ)f2mZmZmga2LHAtgLzf8lSWMzMzMHs(ESjdL898lSzMzMzNhuGnzSVmqFukyyepOGFHf2mZmZmczUZyayyF4NqGnz4uuOGb8FHnZmZmd8vcrzEu075dkuGnzioG(bfkyXCJfXqjFpSmkgH7h)S8kZJIEp)cBMzMz2WkZJIEp2KHs(Eyzumc3p(z5vMhf9E(f2mZmZS3k9se0bGnzuMvWVWMzgrlm4mGKIKIKedyg698HFcbijHs(EqsI89UhUlF(a(kDjoVr3GbKJIKef8vkbijHyDqsIc(kLGVDpuKKwIVsidadB5h)ijHoGKeRxPxEUx64KVhKKOGVsjyS3d9HEGcouKKgjITpKgNLxcKKgqXwswpKPO8cqs6T3ijDwH(HbD2madgYrqassOhukRWOpgkya5iiajjY37E4U8b5OiPiPijXlYrqaF)9eGKIeja \ No newline at end of file +dq1uicGiO6rOOI6ssfWOeWPqvTkPsr9kuujZckUfuYUeOHbQ6yOcltQu6zOkIPjvixtiuSnufL(MqOQXjeQCouffRtiK3jvkCprAFsfO(hkQiDquKwiQI0dfIAIcvYffQuBeuIpIIWirr5KcvTsi9suurmtuWnLkv7ui4Ncvmuuf6OOiAPOkQEkk1ubfxffvkBvQG(QqKZkvG8wHYCrrfURqAVi4VGsny1Hf1Irf9yuPjlOldSzuYNrOrdQCAqwTqO0RLkA2s52sv7ws)wIHdL64sfQLJONdX0r66Iy7OqFxQKXdkPZJQ06Lkf59Oky(OOs19rrv7NMaheGHa7mbyiqjWgHa7Unyetqo6wS4iIblI8mDeplplxo4ziWUNa7qcSdjadb2HqirSjvUuigbeyNBncS5noSyHaOeIqedpbEcSZCPqmcGHeIiraz3lHacraloGNaBeSZCbeIa8eyJaAS4XcuLsGnmXHhziUHfyiWo3GiwjWMH4gwGHaB4aqeHJsaw6Oig45j8SWZt4z62ULNWtI4J45z6wcSWQJ4zjWUvYHeGHaBAUbQ0ULamey3N0OqeGHaLaLaBAUbQucWqGDFsJcragcucucSjlnabyiWUpPrHiadbkbkb2HqSybXnPr5Lamey3N0OqeGHaLaLaBYmxabyiWUpPrHiadbkbkb2qvIKLeSjadb29jnkebyiqjqjWgBgXMMBGkLamey3N0OqeGHaLaLaBwzUuOsLamey3N0OqeGHaLaLa7eeaS52Yiie4KaLa7CfQptbe4PeytcicvQWWl2acSd5TM7H4sKSKGnb2ayf7CneesGNsGnLeIirajbyiWgbUsxXPsGncCLUItLPCPqmciqjWgkKaBMMqlmukucSHQuazn36qajcuPsic8ecS7ckKchbyPJIyGNNWZcphr8r8DuexethXrh1reyHvhXZsGDnPhgsiIebKieIaheydRXHfleaLqeWkIVJGNaBOkef2i0mjfesicCqGsGnxcWqicCqagcSPayLYbSuQu2qDtacrOBHNa7qiKi2KkxkeJacSZTgb2zUuigbWqcrKiGS7LqaHiGfhWtGDMlfQuriadb2i0mjLameyhwGDpabjteqGtcucSHQqucWqGDyb2CtqOLEc8ucS5MGql9ey3kCZnpeWzcrp1zLBiarHy51c1Jei3jttiZiSZmccDkCGQhjqUtMMqMryNzee6PopW8oOgkkelVwOEKa5ozAczgHDMrqyWiZBNzNchO6rcK7KPjKze2zgbHbJmVDM9uNhyEhudffILxlupsGCNmnHmJWoZiimyK5TZCW4PG(iN5chWPWbQEKa5ozAczgHDMrqyWiZBN5GXtb9roZfoGN68aZ7GAOOIIfwEFUtGZzRuc9clhjtseqMrCwqnkGuuSWYHOG(iK7byCikONbOANyCikONjtYnikVyCikONbaJGgghIc67ouLbaJGgghIc6HHxSbyCikONDcNWWl2amquqpBAMBNrUKuPyCikOpU74eiSzOWfJdrb9WaGvAcjaJJaAnEKeIlaJZTLrqIpUW4ijCYTLrqIpUW4CcvdHHxSbyaWk2zUXhxyCean(4cJdHezYmlkuLiphKjcQup1zcanEkOp(kRsaKwHYxuSWYBLcnEULkgVvk0iK7by8wPqzYKCLcr5fJZnHKeu5YB8XfgVvkuMmj3GO8IXBfUDccX4qimzcaHgpf0JX74eacn(4cJdHWuUuigbEQZeakdLcLDRqJVYQeaPvO8fflSCgGQD6iLEafQhG4HfaIxluVRczNI2kCZnNvsLlfQuDIaA8uqpdq1odG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9mav70X9GbDAbHscvjgaPvO85lQ7UdXYdG0kupn1Rqn(ofoq1jb0eYQxHAoOgkQ7UtcOjKvNjaugkfk7wHYauTZaiTcLVOGAOOTc3CZzLu5sHkvNiGgpf0hHCpiasRq5lQ7UNtiZWguzmyiGZeImuigaNiGgpf0hHCpWX9GbDAbHscvjgaPvO85lQ7UdXYdG0kupn1Rqn(ofoq1jb0eYQxHAoOgkQ7UtcOjKvhb0aCPb6wmotaOmuku2Tcn(kRsaKwHYNVOGAOOTc3CZzLu5sHkvNiGgpf0ddVydcG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9WWl2ah3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0a8SyCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqp7eoP8IniasRq5lQ7UNtiZWguzmyiGZeImuigaNiGgpf0ZoHtkVydCCpyqNwqOKqvIbqAfkF(I6U7qS8aiTc1tt9kuJVtHduDsanHS6vOMdQHI6U7Tc3CZHOGEgGQD6PoranEkONbOANbqAfkFrD3DiwEaikONbOANEAQxHA8DkCGQtcOjKvVc1Cqnuu3DNeqtiRocOb4sdeXJXzcanEkOp(kRsaikONbOAN85lkOgkARWn3CwjvUuOs1jcOXtb9maye0cG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9maye0CCpyqNwqOKqvIbqAfkF(I6U7qS8aiTc1tt9kuJVtHduDsanHS6vOMdQHI6U7Tc3CZHOGEgGQD6PoranEkONbOANbqAfkFrD3DiwEaikONbOANEAQxHA8DkCGQtcOjKvVc1Cqnuu3DNeqtiRocOb4sd0ryCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqFhMBjGaiTcLVOU7EoHmdBqLXGHaotiYqHyaCIaA8uqFhMBjah3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0aCWbgNja04PG(4RSkbGOGEgGQDYNVOGAOOTc3CZzLu5sHkvNiGgpf0ZKj5kfIYBaKwHYxu3DpNqMHnOYyWqaNjezOqmaoranEkONjtYvkeLxh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ojGMqwDeqdWLgGNGXzcaLHsHYUvOXxzvcG0ku(8ffudfTv4MBoRKkxkuP6eb04PGEMmj3GO8gaPvO8f1D3ZjKzydQmgmeWzcrgkedGteqJNc6zYKCdIYRJ7bd60ccLeQsmasRq5Zxu3DhILhaPvOEAQxHA8DkCGQtcOjKvVc1Cqnuu3DVv4MBoef0ZauTtp1jcOXtb9mav7masRq5lQ7UdXYdarb9mav70tt9kuJVtHduDsanHS6vOMdQHI6U7KaAcz1ranaxAaEcgNja04PG(4RSkbGOGEgGQDYNVOGAOOTc3CZzLu5sHkvNiGgpf0h3DCce2mu4MPqLAaKwHYxu3DpNqMHnOYyWqaNjezOqmaoranEkOpU74eiSzOWntHkvh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0a8myCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqF8Cl1aiTcLVOU7EoHmdBqLXGHaotiYqHyaCIaA8uqF8Clvh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0aCapgNja04PG(4RSkbGOGEgGQDYNVOGAOOIkARWn38WcdLc1tDwjvUuOsnasRq5lQ7UNtiZWguzmyiGZeImuigaNHsHcvj6iTcnICCpyqNwqOKqvIbqAfkF(I6U7muku2TcnasRq5lQOU7ERWn3CikOpEULQN6eb04PG(45wQbqAfkFVq6CWt6OocE4f1D3BfU5Mdrb9ri3d8uNiGgpf0hHCpiasRq57fshN5wTZAPRkUOU7oef0hHCpWtDikOpc5EqerejHZa4mhvCmooghNVOU7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHY3lKo8IkQ7UdXYRfQhjqUtMMqMryNzeegmY82zoy8uqFKZCHdedIc6JqUhe1PWbQI6U7U7EKa5ozAczgHDMrqyWiZBN5GXtb9roZfoqmikOpc5Equp15brD3D3D3D3H4wQEQdrb9XZTuXiQ7U7U7U7EhNKBquE9uhIc6zYKCdIYlgrD3D3DN5f1D3b1qrb1qrfv0wHBU5elTqybQrbKEQZdI6U7GAMZgi0tDkzcaJOU7olOgfq6PoRKkxkuPgab0yHXrAfkFrD3D3DhILhab0yfeuZC2aH8DkCGQOU7U7U7U75eYmSbvgdgc4mHidfIbWzIsl0zb1OaYUHJ0k0iYX9GbDAbHscvjgaPvO85lQ7U7U7U7ERWn3CikOpc5EGN6eb04PG(iK7bbqAfkFrD3D3D3D3XclpENycabXHOEybG41c1rsWg7cj1Jdp3HQojGiawzovu3D3D3D3DSWYHOG(iK7bruFMYfUa4DGqMlpqaMO0c5ZCN5Ea2qngbK8zUZCpqKlyJnGKpFC(I6U7U7U7UdXYdarb91CpWZ1qhIc6JqUher9zkx4cG3bczUCMO0cX57fshIc6JqUher9zkx4cG3bczUC2qngbK489cPdrb9ri3dIO(mLlCbW7aHmxEKlyJnGeNpFNchOkQ7U7U7U7U7UNtiZWguzmyiGZeImuigaNjkTqNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNjkTqNfuJciDwzOMJ7bd60ccLeQsmaef0hHCpGpFrD3D3Dhudf1D3b1qrzErBfU5MxidbK8CasjHKlabwGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCEoaPKqYf4SGAuaz3WrAfAe54EWGoTGqjHQedG0ku(8f1D3D3D3DVv4MBoef0hHCpWtDIaA8uqFeY9GaiTcLVOU7U7U7U7qS8aquqFeY9apxdDikOpc5Eqe1NPCHlaECidbKophGusi5cqW5Z3PWbQI6U7U7U7U7U75eYmSbvgdgc4mHidfIbWJdziG0jbiLesUaNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigapoKHasNeGusi5cCwqnkG0zLHAoUhmOtliusOkXaquqFeY9a(8f1D3D3Dqnuu3DhudfL5fTv4MBEFjPsHfOgfq6PopiQ7UdQzoBGqp1PKjamI6U7SGAuaPN6SsQCPqLAaeqJfghPvO8f1D3D3DiwEaeqJvqqnZzdeY3PWbQI6U7U7U7UNtiZWguzmyiGZeImuigaV7LKk1zb1OaYUHJ0k0iYX9GbDAbHscvjgaPvO85lQ7U7U7U7ERWn3CikOhgEXg4PoranEkOhgEXgeaPvO8f1D3D3D3DhILhaIc6HHxSbEUg6quqpm8InWttD8UxsQuC(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaE3ljvQZcQrbKo2zeeC(I6U7U7U7U7U7KaAcz1PKjarD3D3D3D3b1qrD3D3D3D3ZjKzydQmgmeWzcrgkedG39ssL6SGAuaPZkd1CCpyqNwqOKqvIbGOGEy4fBaF(I6U7U7oOgkQ7UdQHIY8I2kCZnhQXydwGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7Ud1ySbdCKae4kTqp1J4I4GhJOU7olOgfq6PoRKkxkuPgab0yHXrAfkFrD3D3DhILhab0yfeuZC2aH8DkCGQOU7U7U7U75eYmSbvgdgc4mHidfIbWJNbgBolOgfq2nCKwHgroUhmOtliusOkXaiTcLpFrD3D3D3D3BfU5Mdrb9maye08uNiGgpf0ZaGrqlasRq5lQ7U7U7U7oelpaef0ZaGrqZZ1qhIc6zaWiO5DWocOXkiuJXgmWrcqGR0c57u4avrD3D3D3D3D39Cczg2GkJbdbCMqKHcXa4Xtb9EdWiO5SGAuaPJDgbbNVOU7U7U7U7U7ojGMqwDkzcqu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa4Xtb9EdWiO5SGAuaPZkd1CCpyqNwqOKqvIbGOGEgamcA85lQ7U7U7GAOOU7oOgkkZlARWn3CSjlSaiiqLkSa1Oasp15brD3DqnZzde6PoLmbGru3DhoajNiEQtjtaye1D352ku48uNvUHaWiQ7UxibEQZk3qaye1D3BGmfoaPN6SYneagrD3DULsNqvIEQtjtaye1D3HQiCjHWMcvQEQtjtaye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaopswybqqGkvNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOGEy4fBGN6eb04PGEy4fBqaKwHYxu3D3D3D39wHBU5quqp7eoP8InWtDIaA8uqp7eoP8IniasRq5lQ7U7U7U7oelpaef0ddVyd8Cn0HOGEy4fBGNM64WqMdbiDc1A48DkCGQOU7U7U7U7U7oelpaef0ZoHtkVyd8Cn0darb9St4KYl2apn1XzgGKtCpxdDeqJvq4aKCIWxu3D3D3D3D3DVq6bGOGE2jCs5fBGNM64maYu4aK4EUg6iGgRGnqMchGKVOU7U7U7U7U7EH0darb9St4KYl2apn1XJCRqHd3Z1qhb0yfKBRqHJVOU7U7U7U7U7EH0darb9St4KYl2apn1XJdja3Z1qhb0yfSqc4lQ7U7U7U7U7Uxi9aquqp7eoP8InWttD8ixkDcvjI75AOJaAScYTu6eQsKVOU7U7U7U7U7EH0darb9St4KYl2apn1XJVIWLecBkuPI75AOJaASccvr4scHnfQu5Z3PWbQI6U7U7U7U7U7U7EoHmdBqLXGHaotiYqHyaCEKSWcGGavQolOgfq6yNrqW5lQ7U7U7U7U7U7U7KaAcz1PKjarD3D3D3D3D3Dqnuu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa48izHfabbQuDwqnkG0zLHAoUhmOtliusOkXaquqpm8InGVhmOJ74EWGoTGqjHQedarb9St4KYl2a(8f1D3D3Dqnuu3DhudfL5fTv4MBoJ5wcawGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7UZyULaGbosacCLwON68KigVB25aE49UzNd4HhJOU7EgBSB8cdCKae4kTqykXtb9SPzUD6PoRCdbGru3DNfuJci9uNvsLlfQudGaASW4iTcLVOU7U7UdXYdGaASccQzoBGq(ofoqvu3D3D3D39Cczg2GkJbdbCMqKHcXa4DyULaCwqnkGSB4iTcnICCpyqNwqOKqvIbqAfkF(I6U7U7U7U3kCZnhIc67WClb4PoranEkOVdZTeqaKwHYxurD3D3D3D3Hy5bqanwbZyJDJxyGJeGaxPfctjEkONnnZTt(ofoqvu3D3D3D3D3DVv4MBoef0ZKj5kfIYRN6eb04PGEMmjxPquEdG0ku(I6U7U7U7U7U75eYmSbvgdgc4mHidfIbWHboajWbWkec1X9GbDAbHscvjgaIc6zYKCLcr5LVhmOJ7quqpIdvDKwH64EWGoTGqjHQedG0ku(8f1D3D3D3D3D3HOG(om3saEQdrb9DyULa8UzhIc6zYKCLcr5vu3D3D3D3DqnuurD3D3D3D3Hy5bGOG(om3saEUg6quqFhMBjaVd2ranwbzm3saWahjabUslKVtHduf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedG3H5wcWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW7WClb4SGAuaPZkd1CCpyqNwqOKqvIbGOG(om3sa85lQ7U7U7GAOOU7oOgkkZlARWn3CIKaE7WClbalqnkG0tDEqu3DhuZC2aHEQtjtaye1D3XclNnG6u4ibiWvAHoT4W70I3kfQNBnNijGxerD3DgZTeamWrcqGR0c9uVJ8UzNd4H37MDoGhEmI6U7zSXUXlmWrcqGR0cHPepf0ZMM52PN6SYneagrD3DwqnkG0tDwjvUuOsnacOXcJJ0ku(I6U7U7oelpacOXkiOM5Sbc57u4avrD3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqptMKBquE9uNiGgpf0ZKj5geL3aiTcLVOU7U7U7U7qS8aquqptMKBquE9Cn0HOGEMmj3GO86PPo88DkCGQOU7U7U7U7U7ERWn3CikOVdZTeGN6eb04PG(om3sabqAfkFrf1D3D3D3D3D3Hy5bqanwbZyJDJxyGJeGaxPfctjEkONnnZTt(ofoqvu3D3D3D3D3D3D3BfU5Mdrb9mzsUsHO86PoranEkONjtYvkeL3aiTcLVOU7U7U7U7U7U7UNtiZWguzmyiGZeImuigahg4aKahaRqiuh3dg0PfekjuLyaikONjtYvkeLx(EWGoUdrb9iou1rAfQJ7bd60ccLeQsmasRq5Zxu3D3D3D3D3D3D3HOG(om3saEQdrb9DyULa8UzhIc6zYKCLcr5vu3D3D3D3D3Dhudfvu3D3D3D3D3DhILhaIc67WClb45AOdrb9DyULa8oyhb0yfKXClbadCKae4kTq(ofoqvu3D3D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKo2zeeC(I6U7U7U7U7U7U7ojGMqwDkzcqu3D3D3D3D3Dhudf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKoRmuZX9GbDAbHscvjgaIc67WClbWNVOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbWzcsaVoJ5wcWzb1OasNvgQ54EWGoTGqjHQedarb9mzsUbr5LpFrD3D3Dhudf1D3b1qrzErBfU5M3XjaeA8uqpSa1Oasp15brD3DqnZzde6PoLmbGru3DNfuJci9uNvsLlfQudGaASW4iTcLVOU7U7UdXYdGaASccQzoBGq(ofoqvu3D3D3D39Cczg2GkJbdbCMqKHcXa4mzcaH6quqVZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqpm8InWtDIaA8uqpm8IniasRq5lQ7U7U7U7ERWn3CikONDcNuEXg4PoranEkONDcNuEXgeaPvO8f1D3D3D3DhILhaIc6HHxSbEUg6quqp7eoP8InWZ1qhIc6HHxSbEAQJZKjaekUNRHoef0ZoHtkVyd80uhNjtaiuC(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaotMaqOoef07SGAuaPJDgbbNVOU7U7U7U7U7ojGMqwDkzcqu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa4mzcaH6quqVZcQrbKoRmeIJ7bd60ccLeQsmaef0ddVyd47bd64oUhmOtliusOkXaquqp7eoP8InGpFrD3D3Dhudf1D3b1qrzErBfU5MZTLrqycqMewGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7Ud1ySbdCKae4kTqp1J4GhEmI6U7DCsUbr5fg4ibiWvAHEQ3Tye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaEKBzeeNiit6SGAuaz3WrAfAe54EWGoTGqjHQedG0ku(8f1D3D3D3DVv4MBoef0ddVyd8uNiGgpf0ddVydcG0ku(I6U7U7U7U3kCZnhIc6J7oobcBgkC9uNiGgpf0h3DCce2mu4MPqLAaKwHYxu3D3D3D3DiwEaikOhgEXg4PPootj7lK4I6U7U7U7UxiDikOhgEXg4PPoEKazSlvCrD3D3D3D3lKoef0h3DCce2mu46PPoE8rOdHPdIhJBydlXhbMiU554I6U7U7U7UxiDikOpU74eiSzOW1ttD84Jqhcthepg3WggEE8rG5K4ggCrD3D3D3D3lKoef0h3DCce2mu46PPoE8rOdHPdIhJByhzgIdtzobxu3D3D3D39cPdrb9XDhNaHndfUEAQJhFe6qy6G4X4g2riUJmZj48DkCGQOU7U7U7U7U7ERWn3CikONbaJGMN6eb04PGEgamcAbqAfkFrD3D3D3D3D39wHBU5quqptMKBquE9uNiGgpf0ZKj5geL3aiTcLVOU7U7U7U7U7ERWn3CiK4UJtGWg7mNnGN65eYmSbvgdI0juRHedb0aCPb4jyCMBviAKBzeKa4y3Y8ciX5ZpAmKeoP8IniQNM6CiQOU7U7U7U7U7oelpaesC3XjqyJDMZgWZ1qhIc6zaWiO5DWocOXkiuJXgmWrcqGR0c9Cn0HOGEMmj3GO86DWocOXkyhNKBquEHbosacCLwiFNchOkQ7U7U7U7U7U7U75eYmSbvgdgc4mHidfIbWJClJG4ebzsNfuJciDSZii48f1D3D3D3D3D3D3DsanHS6uYeGOU7U7U7U7U7oOgkQ7U7U7U7oOgkQ7U7U7U7EoHmdBqLXGHaotiYqHya8i3YiiorqM0zb1OasNvgcXX9GbDAbHscvjgaIc6HHxSb89GbDCh3dg0PfekjuLyaikOpU74eiSzOWLpFrD3D3Dhudf1D3b1qrzErBfU5MN7MaKquaSa1Oasp15brD3DqnZzde6PoLmbGru3DhQXydg4ibiWvAHEQhXbp8ye1D374KCdIYlmWrcqGR0c9uVBXiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCM2nbiHOaNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOGEy4fBGN6eb04PGEy4fBqaKwHYxu3D3D3D39wHBU5quqp7eoP8InWtDIaA8uqp7eoP8IniasRq5lQ7U7U7U7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHYxu3D3D3D3DiwEaikOhgEXg45AOdrb9St4KYl2apxdDikONjtYnikVEUg6quqpm8InWttD8ixQij9zoBaCpxdDikONDcNuEXg4PPoECOWbiX9Cn0HOGEMmj3GO86DWoh8DkCGQOU7U7U7U7U7EoHmdBqLXGHaotiYqHyaCM2nbiHOaNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNPDtasikWzb1OasNvgcXX9GbDAbHscvjgaIc6HHxSb89GbDCh3dg0PfekjuLyaikONDcNuEXgW3dg0XDCpyqNwqOKqvIbGOGEMmj3GO8YNVOU7U7UdQHI6U7GAOOmVOTc3CZZKetQquaSa1Oasp15brD3DqnZzde6PoLmbGru3DVJtYnikVWahjabUsl0tDoWiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCMssmPcrbolOgfq2nCKwHgroUhmOtliusOkXaiTcLpFrD3D3D3D3BfU5Mdrb9ri3d8uNiGgpf0hHCpiasRq5lQ7U7U7U7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHYxu3D3D3D3DiwEaikOpc5EGNRHoef0ZKj5geLxpxdDikOpc5Eqe1NPCHlaotjjMuHOaC(EUg6quqptMKBquE9oyhb0yfSJtYnikVWahjabUslKVtHduf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZusIjvikWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbWzkjXKkef4SGAuaPZkdH44EWGoTGqjHQedarb9ri3d47bd64oUhmOtliusOkXaquqptMKBquE5Zxu3D3D3b1qrD3DqnuuMx0wHBU55kxiqL29CndlqnkG0tDEqu3DhuZC2aHEQtjtaye1D374KCdIYlmWrcqGR0c9uNdmI6U7SGAuaPN6SsQCPqLAaeqJfghPvO8f1D3D3DiwEaeqJvqqnZzdeY3PWbQI6U7U7U7UNtiZWguzmyiGZeImuigaNPvUqGk17Z1SZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqFeY9ap1jcOXtb9ri3dcG0ku(I6U7U7U7UdXYdarb9ri3d8Cn0HOG(iK7bruFMYfUa4mTYfcuPE3Z1moF(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaotRCHavQ3NRzNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNPvUqGk17Z1SZcQrbKoRmuZX9GbDAbHscvjgaIc6JqUhWNVOU7U7UdQHI6U7GAOOmVOTc3CZjbqCXgalqnkG0tDEqu3DhuZC2aHEQtjtaye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaophWfcBGZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqFeY9ap1jcOXtb9ri3dcG0ku(I6U7U7U7UdXYdarb9ri3d8Cn0darb9ri3dIO(mLlCbW55aUqydW57fshIc6JqUher9zkx4cGddGlCvOoobGZNpFNchOkQ7U7U7U7U7UNtiZWguzmyiGZeImuigaNNd4cHnWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW55aUqydCwqnkG0zLHAoUhmOtliusOkXaquqFeY9a(8f1D3D3Dqnuu3DhudfL5fTv4MBoNTsjmoSyNjjciZiWcuJci9uNhe1D3b1mNnqON6uYeagrD3DwqnkG0tDwjvUuOsnacOXcJJ0ku(I6U7U7oelpacOXkiOM5Sbc57u4avrD3D3D3D3ZjKzydQmgmeWzcrgkedGZtBLsOxy5SZKebKzeNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOG(iK7bEQteqJNc6JqUheaPvO8f1D3D3D3DhILhaIc6JqUh45AOdrb9ri3dIO(mLlCbWzNjjciZi4857u4avrD3D3D3D3D39Cczg2GkJbdbCMqKHcXa480wPe6fwo7mjrazgXzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW5PTsj0lSC2zsIaYmIZcQrbKoRmuZX9GbDAbHscvjgaIc6JqUhWNVOU7U7UdQHI6U7GAOOmVOIMtiZWguzmilOgfqYgqYiexGN68GOU7olOgfqI4PopiQ7U7U7elTqybQrbKye1D3D39cziGKNdqkjKCbiWcuJciXiQ7U7U79LKkfwGAuajgrD3D3DhQXydwGAuajgrD3D3DhBYclaccuPclqnkGeJOU7U7UZyULaGfOgfqIru3D3D3jsc4TdZTeaSa1OasmI6U7U7EhNaqOXtb9WcuJciXiQ7U7U7CBzeeMaKjHfOgfqIru3D3D3ZDtasikawGAuajgrD3D3DptsmPcrbWcuJciXiQ7U7U75kxiqL29CndlqnkGeJOU7U7UtcG4InawGAuajgrD3D3DNZwPeghwSZKebKzeybQrbKI6U7mpgrD3DKwHIatHHsH6PopW8ye1D3jtQEQZkPYLcvQbqanwy8wPqJVYQWxu3D3D3ranwbrAfkcmfgkfQN68aZlQ7U7U7SkKosRqX4quqVdvDSZqKibALcn(kRcFpSiQ7U7U7U7EoHmdBqLXGHaotiYqHyaCgkfQJ0k0iYX9GbDAbHscvjgaPvO89GbDCh3dg0HOG(GquqpFrD3D3D3D3ranwrezsfwGAuajsaKwHYxu3D3D3b1qrf1D3D39Cczg2GkJbdbCMqKHcXa4SBfkItlERuOrKJ7bd6mNranwbrAfkcmfgkfkFrD3D3DpNqMHnOYyWqaNjezOqmacOXkisRqrGPWqPq5lQ7U7U7SkKoKN6mNranwbrAfkcmfgkfkgNdmowC4HfrD3D3D3D3BfU5MJ0kup1ranwbrAfkcmfgkfAmOOI6U7U7U7UNtiZWguzmyiGZeImuigaNHsHcvj6iTc1darbKzAHKFe54EWGosRq5lQ7U7U7U7EyHHsHgaPvO8f1D3D3Dqnuu3DhudXiQ7UtMuHfOgfqI4PoRKkxkuPgab0yHXrAfkFrD3D3DNvH07eJZcQrbKou1XodrIeab0yfKfuJcir47HfrD3D3D3D3Hy5byb1OaYiIfuJcidG0ku(8DkCGQOU7U7U7U7U7owy5DhIiCuNtGtSucDAbJdvrOGCOxy5rSjiuphgcvj6iTc1Pfp7niekgphg65Qx4mIfWL6DbrHZHQSkEMZsc1PWbCikO3Z1qNchWrAfQZTuPzOkuLOdrDKIdYCHZzb1OasNBU6HqCPzkWPWbCikO3R5EGNRHoe3svu3D3D3D3D3Dhb0yfePvOiWuyOuOXyoJaAScI0kueykmukuN5Y5iQN6iTcvu3D3D3D3D3DNeqtiRI6U7U7U7UdQHI6U7U7oOgkQ7UdQHIY8IkAoHmdBqLXGHaotiYqHON6SsQCPqLAGcNrS8f1D3Hy5bcbCMqKVtHduf1D3D3DSjHQ0ambGcdupiaF(I6U7U7ECbyeMsPHa74kPh7afoJy5lQ7U7U7ytcvPb4lQ7UdQHI6U7qS8AH6rcK7KPjKze2zgbHbJmVDMDkCGQhjqUtMMqMryNzeegmY82z2tDEG5Dqnuu3DhILxlupsGCNmnHmJWoZiimyK5TZCqgkeDkCGQhjqUtMMqMryNzeegmY82zoidfIEQZdmVdQHI6U7qS8AH6rcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukuNchO6rcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukup15bM3b1qrD39ibYDY0eYmc7mJGWGrM3oZbzOqmittOfgkfAmMZrcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukuN5Y5iQN6foJyffudfv0Cczg2GkJbr6eQ1q8uNhe1D3XcRiLjjHkKI6U7X4iQN68GOU7U7UJfwmLSVq6S7eQ1qe1D3D39y4rUvOWHh1tD4XiQ7U7U7XWzaKPWbiXJ6Po8ye1D3D39y4Dpd1WJ6Po8ye1D3D39y48yltb4r9uNdmI6U7U7EmC2WbbAHi4r9uNdmI6U7U7owyfjqg7s1z3juRHiQ7U7U7XWJtfGfZY1qqOZuyfGGh1tDoWiQ7U7U7XWHPRcwmlxdbHotHvacEup15aJOU7U7UhdNNw6cbpQN6CGru3D3D3JHZejve8OEQZbgrD3D3DpgECQaSywUgcc9UN5cqWJ6Pohye1D3D39y4W0vblMLRHGqV7zUae8OEQZbgrD3D3DpgopwAGmzpcEup15aJOU7U7UhdpovawmlxdbHo7UkKHi4r9uNdmI6U7U7EmCy6QGfZY1qqOZURczicEup15aJOU7U7UhdpszsITmeJae8OEQZbgrD3D3DpgoBAMracEup15aJOU7U7UhdhwGqOEKazSlve8OEQZbgrD3D3DpgECLjseqIGh1tDoWiQ7U7U7XWJmzbbHZsxi4r9uNdmI6U7U7Em8iLRHi4r9uhEmI6U7mpgrD3DSWIhZTCiuvu3Dpw3g1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQZbgrD3D3DpgoB4GaTqe8OEQZbgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6CGru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup15aJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6CGru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6WJru3D3D3JHdlqiupsGm2LkcEup1HhJOU7U7UhdpUYejcirWJ6Po8ye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyXSKkfqkQ7UhJNe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uNdmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6CGru3D3D3JHZtlDHGh1tDoWiQ7U7U7XWzIKkcEup15aJOU7U7UhdpovawmlxdbHE3ZCbi4r9uhEmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6CGru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQZbgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyXZletaI6U7X6OOEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup1HhJOU7U7UhdNbqMchGepQN6CGru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tD4XiQ7U7U7XWzdheOfIGh1tD4XiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup15aJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6CGru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uhEmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uhEmI6U7U7EmCybcH6rcKXUurWJ6Pohye1D3D39y4XvMirajcEup15aJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tD4XiQ7UZ8ye1D3XclEKecGqf1D3JfXe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Pohye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Po8ye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup1HhJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQZbgrD3DMhJOU7owyfxGmfoN5Kker4OI6U7X4zJ6PopiQ7U7U7yHftj7lKo7oHAnerD3D3DpgEKBfkC4r9uhEmI6U7U7EmCgazkCas8OEQdpgrD3D3DpgE3Zqn8OEQdpgrD3D3Dpgop2YuaEup15aJOU7U7UhdNnCqGwicEup1HhJOU7U7UJfwrcKXUuD2Dc1AiI6U7U7Em84ubyXSCnee6mfwbi4r9uNdmI6U7U7EmCy6QGfZY1qqOZuyfGGh1tDoWiQ7U7U7XW5PLUqWJ6Po8ye1D3D39y4mrsfbpQN6WJru3D3D3JHhNkalMLRHGqV7zUae8OEQZbgrD3D3DpgomDvWIz5Aii07EMlabpQN6CGru3D3D3JHZJLgit2JGh1tDoWiQ7U7U7XWJtfGfZY1qqOZURczicEup15aJOU7U7UhdhMUkyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWJuMKyldXiabpQN6WJru3D3D3JHZMMzeGGh1tD4XiQ7U7U7XWHfieQhjqg7sfbpQN6WJru3D3D3JHhxzIebKi4r9uhEmI6U7U7Em8itwqq4S0fcEup1HhJOU7U7Uhdps5AicEup1HhJOU7oZJru3DhlSydxUpxf1D3JfXh1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uNdmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQZbgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owy19mrGOU7ESiUOEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup15aJOU7U7UhdNbqMchGepQN6WJru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tD4XiQ7U7U7XWzdheOfIGh1tD4XiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup1HhJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6WJru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uhEmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uNdmI6U7U7EmCybcH6rcKXUurWJ6Po8ye1D3D39y4XvMirajcEup15aJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tDoWiQ7UZ8ye1D3XcRiLjBfUDkQ7UhJNjQN68GOU7U7UJfwmLSVq6S7eQ1qe1D3D39y4rUvOWHh1tDoWiQ7U7U7XWzaKPWbiXJ6Po8ye1D3D39y4Dpd1WJ6Po8ye1D3D39y48yltb4r9uhEmI6U7U7EmC2WbbAHi4r9uhEmI6U7U7owyfjqg7s1z3juRHiQ7U7U7XWJtfGfZY1qqOZuyfGGh1tD4XiQ7U7U7XWHPRcwmlxdbHotHvacEup1HhJOU7U7UhdNNw6cbpQN6WJru3D3D3JHZejve8OEQdpgrD3D3DpgECQaSywUgcc9UN5cqWJ6Po8ye1D3D39y4W0vblMLRHGqV7zUae8OEQdpgrD3D3DpgopwAGmzpcEup1HhJOU7U7UhdpovawmlxdbHo7UkKHi4r9uNdmI6U7U7EmCy6QGfZY1qqOZURczicEup1HhJOU7U7UhdpszsITmeJae8OEQdpgrD3D3DpgoBAMracEup15aJOU7U7UhdhwGqOEKazSlve8OEQdpgrD3D3DpgECLjseqIGh1tDoWiQ7U7U7XWJmzbbHZsxi4r9uhEmI6U7U7Em8iLRHi4r9uNdmI6U7mpgrD3DSWQ7LANI6U7X4a(OEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup1HhJOU7U7UhdNbqMchGepQN6CGru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tDoWiQ7U7U7XWzdheOfIGh1tDoWiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup15aJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6CGru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uNdmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uNdmI6U7U7EmCybcH6rcKXUurWJ6Pohye1D3D39y4XvMirajcEup1HhJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tD4XiQ7UZ8ye1D3XcR4Imbkuu3DpghCe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uNdmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Po8ye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyfxG(s1zwsLcif1D3JXr3g1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uNdmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uhEmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup15aJOU7U7UhdNnnZiabpQN6WJru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Po8ye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOmVO5eYmSbvgd2Xj5geL3ixAfsep15brD3DCMdo62oIllw8mH8mH8mH4yCSWY5XsHuu3DhN5GJUTJ4YIflwSyXIfoghlS8ix67lvrD3DCMdo62oIllwCayXcE4XX4yHLZCRYT03xQI6U74mhC0TDexwSGh(iE4ddXX4yHLZZZKarD3DCMdo62oIllwzEcpjIbaWX4yHLh3ydXvu3DhN5GJUTJ4YIflwrCWdp84yCSWYzaqeudZK8kQ7UJZCWr32rCzXcWZYLBeh84yCSWYzkjfIvMlvu3DhN5GJUTJ4YIf8WZLllw4yCSWYzgaISvk9IY8eOeOeytjHiseqsagcSP8InGaBUji0spb2iWv6kovcSrGR0vCQmLlfIrab2agbvkcb2meN4adS55XntJRoicS5MGql9WMYl2acSrOzkib7WmfqGnx4aC7KaBaJGkLaBUji0spb2yHLZqCIdmWMNh3mnU6GeLvsLlfQuda4lQ7U3kCZnVvk04RSkEQZeakdLcn(kRsa(I6U75eYmSbvgdYcQrbKSbKmcXferKj1aTsHgFLvHVOU7EKBfeadLcnaFrb1qrjWMBccT0dB4GcbeytH6bHeOeytbWkLdESavPeyZZJNjygmey3k5qcWqGnn3avA3sagcS7tAuicWqGsGsGnn3avkbyiWUpPrHiadbkbkb2HqSybXnPr5Lamey3N0OqeGHaLaLaBYmxabyiWUpPrHiadbkbkb2SYCPqLkbyiWUpPrHiadbkbkb2KLgGamey3N0OqeGHaLaLaBOkrYsc2eGHa7(KgfIameOeOeyJnJytZnqLsagcS7tAuicWqGsGsGsGnuLciR5whcirGkvcrGNqGDnPhgsiIebKieIaheytcicvQWWl2acSH4wQeytbWkLdcS7avcSPayLYrKlvAgQ2dQucSJdZnyyhFCf3eydfsGnttOfgkfkdfIqCjWMcGvkhWsPsjWoUHvSjbiiDL5LaBULslS0vfgaSsJ7AMZgiKaNeydvHOWgHMjPGqcrGdcS5wkTWsxvcCsGsicDlbyiWMcGvkhWsPszd1nbieHUfEcSZCPqmcGHeIiraz3lHacraloGNaBOkfqwZToeqIavQeIapHa7CfQptHkvcWqGncntsjadb2uEXgqGn2KaeaLaBSjbiakb2inOqqdWIsGsGnlOkecCeGHaBkVydiWgBsacGsGn2KaeaLaBKguiGZcLw6jqjqjWMscrKiGKameyt5fBab2CtqOLEcS5MGql9WgoOqab2uOEqib2CtqOLEcSXclpYmJPWa7UZMjGndXjoWikRKkxkuPgi3Ai0mfGGXby8EeI8f1D3Hy5b6rigr9zkx4cG3bvsCsaxaeJaVvkuC(8DkCGQOU7U7UNtiZWguzmyU1qOzkaXt9CRHqZuaIOU7U7UNtiZWguzmyizUR45wQb6riYxu3D3D3jb0eYQtjtaI6U7GAOOGAOOeyZfoa3ojWgWiOsjWgWiOsriWoYmJPWa7UZMjGndXjoWqGn3eeAPh2uEXgqGncntbjyhMPacSrGR0vCQeyJaxPR4uzkxkeJacucSPayLYbpwGQucS55XZemdgcSBLCibyiWMMBGkTBjadb29jnkebyiqjqjWMMBGkLamey3N0OqeGHaLaLa7qiwSG4M0O8sagcS7tAuicWqGsGsGnzMlGamey3N0OqeGHaLaLaBwzUuOsLamey3N0OqeGHaLaLaBSzeBAUbQucWqGDFsJcragcucucSHQejljytagcS7tAuicWqGsGsGnzPbiadb29jnkebyiqjqjqjWoZLcvQieGHaBeAMKsagcSdlWUhGGKjciWjbkb2qvikbyiWoSaBUji0spbEkb2CtqOLEcSBfU5MdXTuJlieSBzEJReYmfQu9uNNiQO5eYmSbvgdseqJNc6JVYQ4PoRKkxkuPgOhHiFrD39wHBU51CpWt9EeIruFMYfUa4W1bIfiiZf)oquC(EH0XXf1D3BfU5M3Xj5kfIYRN69ieJO(mLlCbWH1aDGqMl(489cPZHOI6U7Tc3CZH4wQEQZbpPJ6i4Hxu3DhILhjqUtMMqMryNzeegmY82zoy8uqFKZCHdeRM7brDkCGQOU7U7UdXTu9upsGCNmnHmJWoZiimyK5TZCW4PG(iN5chiwn3dIgeIBPkQ7UdQHI6U7Tc3CZ5wAfsp17rigr9zkx4cGZLfRaDGU6aD1b6Qd0vhORoqx8X57fshNflwSyXcxurD3DsanHS61CpaJdXTuX4DCsUsHO8IX5wAfsrb1qrfnNqMHnOYyWqYCxXZTu9uNvsLlfQud0JqKVOU7ERWn38AUhGXH4wQy8oojxPquEX4ClTcPN65eYmSbvgdseqJNc6JVYQeOhHiFrf1D3BfU5MZQq2NPuqyeY9ap1Xzo4OB7iUSyH7bd6ClTcPhmOJhd3dg0R5EGhmOJhL5GJUTJiDyf3dg074KCLcr5vu3DpNqMHnOYyWCRHqZuasmMZ5eYmSbvgdMBneAMcqCMlNJOEQZdI6U7U7ocCLU8uNsMaWiQ7U7U7CHlxjcc9uNsMaWiQ7U7U7q1qaS6PotaOWa1dcWhJOU7U7UtcqkKup1PKjamIkQ7U7U7qClvp1H4wQye1D3D39AUh4PoRczFMsbHri3dWiQOU7U7UJnzHijabbgEXg4PoofQheIJru3D3D3bWk2qKzkuPcdupWtDMaqHbQheGVZC5qCl14ccb7wM34kHmtHkvmI6U7U7EyczMcvQEQdXTuJlieSBzEJReYmfQuXiQ7U7U75eAHzqHap1PKjamI6U7mVOGAibkbkb2KaIqLkm8InGaBiULkb2ClLwyPRkmayLg31mNnqibojWMcGvkhey3bQeytbWkLdyPuPeyh3Wk2KaeKUY8sGnuib2mnHwyOuOXZTujWMcGvkhrUuPzOApOsjWoom3GHD8XvCtGDieseBsLlfIrab25wJa7AspmKqejcirieboiWgQcrHncntsbHeIaheyZTuAHLUQe4KaLaLaBgjebo6OULdcucea \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index bb3ebbc..282bc44 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -157,22 +157,24 @@ local professionFilter = { ore = false, leather = false, cooking = true, + inscription = true, filter = function(self, slot) if (self.enabled) then aura_env.debugLog("Profession filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) + local itemSubtype = getItemSubtype(slot) if (itemType and itemType == "Tradeskill") then - local itemSubtype = getItemSubtype(slot) if (itemSubtype and (itemSubtype == "Herb" and self.herbs) or (itemSubtype == "Leather" and self.leather) or (itemSubtype == "Cloth" and self.cloth) or (itemSubtype == "Ore" and self.ore) - or (itemSubtype == "Cooking" and self.cooking)) then + or (itemSubtype == "Cooking" and self.cooking) + or (itemSubtype == "Inscription" and self.inscription)) then aura_env.debugLog("Profession filter pass") return true end end - aura_env.debugLog("Profession filter fail " .. tostring(itemType)) + aura_env.debugLog("Profession filter fail " .. tostring(itemType) .. " " .. tostring(itemSubtype)) end end } @@ -363,6 +365,7 @@ aura_env.filterService = { arguniteFilter, ancientManaFilter, reicpeFilter, + bloodOfSargerasFilter }, slotsToLoot = {}, run = function(self, lootInfo) From 9398a5edba843490f88d123c3d96be164a351d12 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Tue, 23 Aug 2022 14:17:00 +0200 Subject: [PATCH 27/44] Remove duplicate export --- LegionWA/AutoLoot/AutoLootDisplay/Export | 1 - 1 file changed, 1 deletion(-) delete mode 100644 LegionWA/AutoLoot/AutoLootDisplay/Export diff --git a/LegionWA/AutoLoot/AutoLootDisplay/Export b/LegionWA/AutoLoot/AutoLootDisplay/Export deleted file mode 100644 index 9705fa6..0000000 --- a/LegionWA/AutoLoot/AutoLootDisplay/Export +++ /dev/null @@ -1 +0,0 @@ -dqvp5bGiO6rqOuDjiuYOucNsr1QuIi9kucXSuvDlq0UqOggiCmeyzQkv9muvOPHQsDnvLO2gkH03qjunoucLZHQsQ1HQIENse19uK9HQsY)GqH6GOKAHOQepuHsteLOUOse2OQs5JqOAKieNuHQvcQxcHczMOkUPsK2PcHFQq0qri5OOezPOQGNIitvvXvHqPSvvLkFvHIZQQeP3Iknxiu0Drf7fI(lkjdwoSQSyfspgrnzfCzGnJs9zfLrdbNgsRwjI41qiZwPUniTBv8BvA4iOJRQewokEouMosxxjTDuL(UsuJxvjDEuvTEiuW7rjy(QkrCFesTFAKeG8dsspKFqsrscdjPVN4VmXe89qsWxgYz818nlklkzc4RrsckssdijnG8dssdOyljRhYuuEbij92BKK4FKSzJbOihXxMpcbsspYuuEbFyqNndWS07aa5iGKaiqscJWhzaYrabssyGnBI6IEOij9zKefplX3(GK0BJo7GKeplX3(GKeca0ziqr(n((ldbFKffccyXzX5BwSVmFtaFZ3izdjF)LrsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIKeZDdq(bjjORBkkYpiPiPijnGYMnk51nLFKFqsc66MII8dskskssmpYaKFqsc66MII8dskskssONzm3vcr(bjjORBkkYpiPiPijriVesFBWHI8dssqx3uuKFqsrsrsI9Jmf9Eq(bjjORBkkYpiPiPijTIbyf59ddd5OiPij9oOqFuas(cssmGzO3Zh(jeGK0a)NhuuYZyUReIKe4Re(odGbK8fKKOmOZMbyq(bjjmeUlpYdssyiCxEKhwtMIYlajfjj0bKKy9k9YZ9srsc9qbmN3(7amyO3dYrWhrs6Sc9dd6SzagmKJGaKK(6izZgdqrocizX5Biqsc9Gszfg9XqbdihbbijTm6afbKFJV)YqWhzrHGawCwC(Mf7lZ3eW38ns2qY3SOiPijrg5hKJGaKFqsIc(kLGVDpusOigaihX3dbssdOyljRhYuuEbij92BKKEKPO8c(WGoBgGzP3baYrajbqGK0Jmf9EWq(bjjm6JHI8dssdxwbfGH9MbqokskssOhukYpijnCzf5vm6fks(cssKxXOxOijTVKFBBam66mBYy)2yaHrzBNl1gd4HiwVY8Wi94fmyueahBmGhIy9kZdJ0JxWGnzSarBGZGWOSTZLAJb8qeRxzEyKE8cgiES8JONrraCSXaEiI1RmpmspEbdepw(r0ZMmwGOnWzqyu225sTXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGrraCSXaEiI1RmpmspEbdepw(r0J4XPaOJ9rgbGnzSarBGZGWcdjKgkfaDepOGFdLcGYd6br)gkfaLLwFBuk))gkfaLhaVG9VHsbqxk6HhaVG9VHsbq)WpHGFdLcGsAD0p8ti4hLcGsI(iJOXExp0FdLcGUeFXkkH8Cj)BOua0pGVsxza)ggyVjkguYGFJ8(HHnol)ByRJsE)WWgNL)TrrpdF4NqWp4Re(ipol)Bya64S8VHInwMhBk6zgFa8MbouBYqCaDCka64h23fy7lDUWqcPTVx64KVNFBFV0r8Gc(T99szP13HIs5)3iVYWaoK5FCw(323lLLwFBuk))2(sgrGHFdfJLwby0XPaO)2xScWOJZY)gkgRjtr5fytgIdO8CVus7lD8d77cS9LoxyiH04b9Gid7cfqrHcWSHlaZoxQT8LbrcVVKFBJ96Hmf9ESza64uauEqpiAb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMXaORmhdXbuEUxkP9LYd6brlW2x6CHbNbH3xYVTXE9qMIEp2maDCka6iEqblW2x6CHnZmu22cS9LAtt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDX3)BioGYZ9sjTV0XpSVlW2x685cdodcVVKFBJ96Hmf9ESza64ua0p8tiyb2(sNlSzMHY2wGTVuBAYoO75gfbWXya0vMJDq3g4miSzMTVKFBdLcGYd6br2KndqhNcGYd6brlW2x6CHnZmu22cukakpOheztt2bDp3OiaogdGUYCSd62aNbHnZmgaDL5yyGnGmDbl6VH4a64ua0XpSVlqPaO8GEq085cdodcVVKFBJ96Hmf9ESza64uausRJs5NqWcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6cw8FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaO8a4fSxGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxW3)gIdOJtbqh)W(UaLcGYd6brZNlm4mi8(s(Tn2RhYu07XMbOJtbq)U3EfSaBFPZf2mZqzBlW2xQnnzh09CJIa4yma6kZXoOBdCge2mZ2xYVTHsbq5b9GiBYMbOJtbq5b9GOfy7lDUWMzgkBBbkfaLh0dISPj7GUNBueahJbqxzo2bDBGZGWMzgdGUYCmmWgqMUGac(nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGYsRVdfLY)cS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehq55EPK2x64h23fy7lD(CHbNbH3xYVTXE9qMIEp2maDCkaklT(2Ou(xGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxWh)nehqhNcGo(H9DbkfaLh0dIMpxyWzq49L8BBSxpKPO3JndqhNcGUeFXkkH8Cj)OO3ZcS9LoxyZmdLTTaBFP20KDq3ZnkcGJXaORmh7GUnWzqyZmBFj)2gkfaLh0dISjBgGoofaLh0dIwGTV05cBMzOSTfOuauEqpiYMMSd6EUrraCmgaDL5yh0TbodcBMzma6kZXWaBaz6c(6FdXb0XPaOJFyFxGsbq5b9GO5ZfgCgeEFj)2g71dzk69yZa0XPaOJt(EwGTV05cBMzOSTfy7l1MMSd6EUrraCmgaDL5yh0TbodcBMz7l532qPaO8GEqKnzZa0XPaO8GEq0cS9LoxyZmdLTTaLcGYd6br20KDq3ZnkcGJXaORmh7GUnWzqyZmJbqxzoggyditxqae)gIdOJtbqh)W(UaLcGYd6brZNlm4miSWcVVKFBB4YZ9sTjJ96Hmf9EwGTV05cBMzVvMhRahEjEam66mEUZwGZZ9srpZmS9LYNgUrmXg2(sNlSzMXZ9sjTV0fy7lDUWcBMz7l532qPaOJt(ESjBgGoofaDCY3ZcS9Lo3Umgb8r(MVHacHnZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUDzmCeBheDUlFWf2mZqPaOJ4bfytgkfaDepOa(Cg26OlWrmp4)g(VHpxyZmBFj)2gkfaLLwFBuk)2KndqhNcGYsRVnkL)fy7lDUDzmiewyZmdLTDUuBmGhIy9kZdJ0JxWaXJLFe9iECka6yFKraWfLcGoIhuahJIa4iSzMzMzJb8qeRxzEyKE8cgiES8JOhXJtbqh7JmcaUOua0r8Gc4ytgliSzMzMzMzgk57XMmuka64KVNFHnZmZmZmZ(I13gLYVnzOuauwA9TrP8)lSzMzMzeTWMzg4mim4miSWcVVKFBB2Dp8n0nfWytgliSzMboVr3GbBYOmRGFHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTahXV7bJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgKqAJBZwbyygk1gUam7CPg2kHeEzO2i5dg6XyaZaFfXyHnZmZmZmZGesdLcGoIhuaFc9rjJWcCeRbweBXce)UhM)L8LSGe6MxaZ8VKVKfJ9siHaM5ZXNlSzMzMzMzgkBBbkfa98GcS3zWqPaOJ4bfWNqFuYiSahXAGfXq87EaFUDzmuka6iEqb8j0hLmclWrSgyrmsOBEbm4ZTlJHsbqhXdkGpH(OKryboI1alIn2lHecyWNp3OiaocBMzMzMzMzMzVvMhRahEjEam66mEUZwGJ439GXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTDzgam8ba2DLHma7BOBkGXMmwqyZmdCEJUbd2Krzwb)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBboFaGDxzidm2OBkGzjBy7lLpnCJyInS9LoxyZmZmZmZS9L8BBOua0r8GcSjBgGoofaDepOGfy7lDUWMzMzMzMzOSTfOua0r8GcS3zWqPaOJ4bfWNqFuYiSaFKmdagJpaWURmKby4ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhjZaGXyay3vgYaJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBd6D9q)g6McySjJfe2mZaN3OBWGnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGV076HASr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbq)WpHaBAYWx6D9qXNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWx6D9qn2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(Tn0nV7VHUPagBYybHnZmW5n6gmytgLzf8lSzMHU5D)bbgagc39GnzSySyq8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JZdVBJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaLhaVGTnzZa0XPaO8a4fSxGTV05cBMzMzMzMHY2wGsbq5bWlyBVZGHsbq5bWlyB8vggyZMy0nV7piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWhNcGABaVGTXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTriZLnadd9E(g6McySjJfe2mZaN3OBWGnzuMvWVWMzgcaMrXSjJYSc(f2mZiVVueSjJ9BJb(f2mZUmaBYy)2yGFHnZSn4rraWytg73gd8lSzMr(Ere6zMnzuMvWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGtumx2amm07XyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)WpHaBYMbOJtbq)WpHGfy7lDUWMzMzMzMzOSTfOua0p8tiWENbdLcG(HFcb20KH)H5naWqe6EJp3OiaocBMzMzMzMzMz7l532qPaOKwhLYpHaBYMbOJtbqjTokLFcblW2x6CHnZmZmZmZmZmu22cukakP1rP8tiWENbBbkfaL06Ou(jeyttgoramJIBVZGHb2SjgbaZOyZf2mZmZmZmZmZUm2cukakP1rP8tiWMMmCEapkcagC7DgmmWMnXBWJIaGzUWMzMzMzMzMz2LXwGsbqjTokLFcb20KHp29LIaU9odggyZMyY7lfH5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(iza427myyGnBIVmG5cBMzMzMzMzMzxgBbkfaL06Ou(jeyttg(yVxeHEMHBVZGHb2SjM89Ii0ZS5ZnkcGJWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBborXCzdWWqVhJn6McymcFyy4Zf2mZmZmZmZmZmZmgaDL5yuMvGWMzMzMzMzMzg4miSzMzMzMzg4miSzMzMzGZGWMzg4mimrl8(s(TnEF7vW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZ49TxbFqGbGHWDpytgF8lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwG)DV9kWyJUPaMLSHTVu(0WnIj2W2x6CHnZmZmZmZ2xYVTHsbq)U3Efyt2maDCka6392RGfy7lDUWcBMzMzMzMHY2wGb2Sj(riHB()GadadH7E4ZDCkakj6JmIMBueahHnZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4FqaWamWxrXOgUrmXgkfaLLwFhkkLFJyInCdLcGIzOhdBFPgUrmXg2(sNlSzMzMzMzMzMHsbq)U3Efytgkfa97E7vGTKAOuauwA9DOOu(f2mZmZmZmdCgewyZmZmZmZmu22cuka6392Ra7Dgmuka6392RaJVYWaB2eZ7BVc(GadadH7EyUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTa)7E7vGXgDtbmgHpmm85cBMzMzMzMzMzma6kZXOmRaHnZmZmZmZaNbHnZmZmdCge2mZaNbHjAH3xYVTnJbW)392RGVHUPagBYybHnZmW5n6gmytgLzf8lSzMbjKgja1OiWaWq4Uhm61GWOxBFVu7T32mga)ycBMz8(2RGpiWaWq4UhSj7lBlPgbqaHTKAeabe)cBMzpcjCZ)heyayiC3dFUJtbqjrFKrKnzSFBmWVWMzgB0nfWytg71dzk69SadSz)By7lDUWMzMzMHY2wGb2SjgCEJUbdZnkcGJWMzMzMzMzVvMhRahEjEam66mEUZwGJ4ma(nEF7vGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cukaklT(2Ou(T3zWqPaOS06BJs534RmiMBueahHnZmZmZmZmZS9L8BBOua0V7Txb2KndqhNcG(DV9kyb2(sNlSWMzMzMzMzMzgkBBbgyZM4hHeU5)dcmameU7Hp3XPaOKOpYiAUrraCe2mZmZmZmZmZmZS9L8BBOuauwA9DOOu(TjBgGoofaLLwFhkkL)fy7lDUWMzMzMzMzMzMzM9wzEScC4L4bWORZ45oBb(heamad8vumQHBetSHsbqzP13HIs53iMyd3qPaOyg6XW2xQHBetSHTV05cBMzMzMzMzMzMzgkfa97E7vGnzOua0V7Txb2sQHsbqzP13HIs5xyZmZmZmZmZmdCgewyZmZmZmZmZmdLTTaLcG(DV9kWENbdLcG(DV9kW4RmmWMnX8(2RGpiWaWq4UhMBueahHnZmZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCeNbWVX7BVcm2OBkGXi8HHHpxyZmZmZmZmZmZmZya0vMJrzwbcBMzMzMzMzMzGZGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532(IvagDCka63q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwAfGrnukaQXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMHY2wGsbq)WpHa7DgmukakP1rP8tiWENbdLcG(HFcb20KHsbqjTokLFcb20KHZsRamk(CJIa4iSzMzMzMzMzM9wzEScC4L4bWORZ45oBbolTcWOgkfa1yJUPagJWhgg(CHnZmZmZmZmZmgaDL5yuMvGWMzMzMzMzGZGWMzMzMbodcBMzGZGWeTW7l532iVFyyio4X8n0nfWytgliSzMboVr3GbBYOmRGFHnZm0nV7piWaWq4UhSjJfdci(f2mZ(I13gLY)heyayiC3d2K99)cBMzSr3uaJnzSxpKPO3ZcmWM9VHTV05cBMzMzgkBBbgyZMyW5n6gmm3OiaocBMzMzMzM9wzEScC4L4bWORZ45oBb(y3pmmBg4XySr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOF4NqGnzZa0XPaOF4NqWcS9LoxyZmZmZmZS9L8BBOua0L4lwrjKNlzBYMbOJtbqxIVyfLqEUKFu07zb2(sNlSzMzMzMzgkBBbkfa9d)ecSPjdN1mqVm4cBMzMzMzMDzmuka6h(jeyttg(yapcVhCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9TXhbIVe8bCHnZmZmZmZUmgkfaDj(Ivuc55s2MMm8XhX395lLOwcw9Hpm(iqmAj(GlSzMzMzMz2LXqPaOlXxSIsipxY20KHp(i(UpFPe1sWQXYZiznIr4cBMzMzMzMDzmuka6s8fROeYZLSnnz4JpIV7ZxkrTeSAelXyrmcFUrraCe2mZmZmZmZmZ2xYVTHsbq5bWlyBt2maDCkakpaEb7fy7lDUWMzMzMzMzMz2(s(TnukaklT(2Ou(TjBgGoofaLLwFBuk)lW2x6CHnZmZmZmZmZS9L8BBOylXxSIsiHVr3aBYERmpwbo8smgIq3BmUyGnGmDbF83qSDqPJD)WWwGt4(XpGbF(CoCXwhLYpHao20KrGWcBMzMzMzMzMzOSTfOylXxSIsiHVr3a7DgmukakpaEbBJVYWaB2eJU5D)bbgagc39G9odgkfaLLwFBuk)gFLHb2Sj(lwFBuk)FqGbGHWDpm3OiaocBMzMzMzMzMzMz2BL5XkWHxIhaJUoJN7Sf4JD)WWSzGhJXgDtbmgHpmm85cBMzMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmZmdCge2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22dXaGbLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMzg6M39heyayiC3d2KXIbbe)cBMzFX6BJs5)dcmameU7bBY((FHnZm2OBkGXMm2RhYu07zbgyZ(3W2x6CHnZmZmdLTTadSztm48gDdgMBueahHnZmZmZmZERmpwbo8s8ay01z8CNTaN1igamOuGXgDtbmlzdBFP8PHBetSHTV05cBMzMzMzMTVKFBdLcG(HFcb2KndqhNcG(HFcblW2x6CHnZmZmZmZ2xYVTHsbqjTokLFcb2KndqhNcGsADuk)ecwGTV05cBMzMzMzMTVKFBdLcGYsRVnkLFBYMbOJtbqzP13gLY)cS9LoxyZmZmZmZmu22cuka6h(jeyVZGHsbqjTokLFcb27myOuauwA9TrP8BVZGHsbq)WpHaBAYWh79GTc9n6gGBVZGHsbqjTokLFcb20KHpskcagC7DgmukaklT(2Ou(n(kJG5gfbWryZmZmZmZmZm7TY8yf4WlXdGrxNXZD2cCwJyaWGsbgB0nfWye(WWWNlSzMzMzMzMzMXaORmhJYSce2mZmZmZmdCge2mZmZmWzqyZmdCgeMOfEFj)22Jz26bLc(g6McySjJfe2mZaN3OBWGnzuMvWVWMz2xS(2Ou()GadadH7EWMmc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCwZmB9GsbgB0nfWSKnS9LYNgUrmXg2(sNlSzMzMzMz2(s(Tnuka6iEqb2KndqhNcGoIhuWcS9LoxyZmZmZmZS9L8BBOuauwA9TrP8Bt2maDCkaklT(2Ou(xGTV05cBMzMzMzMHY2wGsbqhXdkWENbdLcGYsRVnkLF7Dgmuka6iEqb8j0hLmclWznZS1dkfGp3ENbdLcGYsRVnkLFJVYWaB2e)fRVnkL)piWaWq4UhMBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlWznZS1dkfySr3uaJr4dddFUWMzMzMzMzMzgdGUYCmkZkqyZmZmZmZmWzqyZmZmZaNbHnZmWzqyIw49L8BBVdzuWHU0359n0nfWytgliSzMboVr3GbBYOmRGFHnZSVy9TrP8)bbgagc39Gnze8lSzMXgDtbm2KXE9qMIEplWaB2)g2(sNlSzMzMzOSTfyGnBIbN3OBWWCJIa4iSzMzMzMz2BL5XkWHxIhaJUoJN7Sf4S(qgfCOg035zSr3uaZs2W2xkFA4gXeBy7lDUWMzMzMzMz7l532qPaOJ4bfyt2maDCka6iEqblW2x6CHnZmZmZmZqzBlqPaOJ4bfyVZGHsbqhXdkGpH(OKryboRpKrbhQT035HpFUrraCe2mZmZmZmZmZERmpwbo8s8ay01z8CNTaN1hYOGd1G(opJn6McymcFyy4Zf2mZmZmZmZmZya0vMJrzwbcBMzMzMzMbodcBMzMzg4miSzMbodct0cVVKFBJbGsMqW3q3uaJnzSGWMzg48gDdgSjJYSc(f2mZyJUPagBYyVEitrVNfyGn7FdBFPZf2mZmZmu22cmWMnXGZB0nyyUrraCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cC(aGmkHaJn6McywYg2(s5td3iMydBFPZf2mZmZmZmBFj)2gkfaDepOaBYMbOJtbqhXdkyb2(sNlSzMzMzMzgkBBbkfaDepOa7DgSfOua0r8Gc4tOpkzewGZhaKrjeGp3UmgkfaDepOa(e6JsgHf4FaKr4G(fRa85ZNBueahHnZmZmZmZmZS3kZJvGdVepagDDgp3zlW5daYOecm2OBkGXi8HHHpxyZmZmZmZmZmJbqxzogLzfiSzMzMzMzg4miSzMzMzGZGWMzg4mimrlSWVvMhRahEjMn6Mcyiby4fLmWMmwqyZmJn6McyWSjJfe2mZmZSz39W3q3uaZVWMzMzMDzgam8ba2DLHma7BOBkG5xyZmZmZGExp0VHUPaMFHnZmZmdDZ7(BOBkG5xyZmZmZiK5YgGHHEpFdDtbm)cBMzMzgVV9k4BOBkG5xyZmZmZMXa4)7E7vW3q3uaZVWMzMzM9fRam64ua0VHUPaMFHnZmZmJ8(HHH4GhZ3q3uaZVWMzMzM9qmayqPGVHUPaMFHnZmZm7XmB9GsbFdDtbm)cBMzMz27qgfCOl9DEFdDtbm)cBMzMzgdaLmHGVHUPaMFHnZmI(xyZmdBFPyFU8CVuBYybI(xyZmJz9ytg71dzk69SadSz)B77Lo(H9DUWMzMzMHb2SjgBFPyFU8CVuBYybIwyZmZmZyFzmS9L(BOuaud9ye(qzWwSVx64h2352WvyZmZmZmZS3kZJvGdVepagDDgp3zlW55EPg2(s5td3iMydBFPgXeB4gUrmXgkfaLyuka6CHnZmZmZmZWaB28jZ65BOBkGbBb2(sNlSzMzMzGZGWcBMzMz2BL5XkWHxIhaJUoJN7Sf4K2xkMrV2(EP8PHBetSHyhdSztm2(sX(C55EPZf2mZmZS3kZJvGdVepagDDgp3zlWaB2eJTVuSpxEUx6CHnZmZmJ9LXqTjdXogyZMyS9LI95YZ9s)nc(nijWgUcBMzMzMzMTVKFBdBFP2KHb2SjgBFPyFU8CVuUOCe2mZmZmZm7TY8yf4WlXdGrxNXZD2cCEUxk6zMHTVuBbkfW8OxM58PHBetSHTV05cBMzMzMzMnC55EPlW2x6CHnZmZmdCge2mZaNHFHnZmM1Z3q3uadMnzSxpKPO3ZcmWM9VHTV05cBMzMzg7lJHOFJn6Mcym0Jr4dLbBbgyZMy2OBkGbBUnCf2mZmZmZmdLTTGn6Mcy4t2OBkGzb2(sNp3OiaocBMzMzMzMzMzqcPTu0ziqTrb2S7DWO3Fd9GrbVb7Y2wswXO2Bya9mZW2xQrV2Z2Oy0F7nmyVJDhDjbqMAlJsrWqpSV2B07k1OiamukaQ9odgfbGHTVuJ89qFOh0ZmdLAyxd8iJGXgDtbmg53XgqjtFuGrrayOuau78GcS3zWqjFpcBMzMzMzMzMzyGnBIX2xk2Nlp3lLlIDmWMnXy7lf7ZLN7LASigbCSjdBFPcBMzMzMzMzMzma6kZryZmZmZmZmWzqyZmZmZaNbHnZmWzqyIwyHFRmpwbo8s8ay01z8CNztg71dzk69S4o6sYCHnZmu22IbWORZMBueahHnZmZmJqg0dDbIdOFqHcwmFUWMzMzMXYaE)CVBmwXYRqjCXD0LK5cBMzMzgHmOh6I5cBMzGZGWGZGWc)wzEScC4LymeHU3y2KXccBMzqc5yEmmOxgHnZmUeWXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytgb)cBMzMzgxCeF9GHZXMmc(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytgb)cBMzMzgxCs0hVamCo2KrWVWMzMzMXf)BOyuBmGhH3dgohBYi4xyZmZmZ4IZYVzZamy4CSjJGFHnZmZmJl(yzUyyJExgdNJnze8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKOE73a6ryZmJ73ZXMmwqyZmZmZGeswZa9YyKqe6EJjSzMzMzCXh7(sraNJnzq8lSzMzMzCX5b8OiayW5ytge)cBMzMzgx8L(q34CSjdIFHnZmZmJlorTFuaohBYi4xyZmZmZ4ItcbuWEadNJnze8lSzMzMzqc5yapcVhJeIq3BmHnZmZmJl(ipaijY7magmw)vagohBYi4xyZmZmZ4I)z5lKe5DgadgR)kadNJnze8lSzMzMzCX5l3LXW5ytge)cBMzMzgxCeF9GHZXMmi(f2mZmZmU4J8aGKiVZayWw6JmadNJnze8lSzMzMzCX)S8fsI8odGbBPpYamCo2KrWVWMzMzMXfNOUBWJbkgohBYi4xyZmZmZ4IpYdasI8odGbJ0YxMbmCo2KrWVWMzMzMXf)ZYxijY7magmslFzgWW5ytgb)cBMzMzgx8X8yMTFO8cWW5ytge)cBMzMzgxCs0hVamCo2KbXVWMzMzMXf)BOyuBmGhH3dgohBYG4xyZmZmZ4IZYVzZamy4CSjdIFHnZmZmJl(yzUyyJExgdNJnzq8lSzMzMzCXhZ7mGHZXMmi(f2mZi6FHnZmiHKiRhkGryZmJlFKJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmi(f2mZmZmU4l9HUX5ytgb)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYi4xyZmZmZ4IZxUlJHZXMmc(f2mZmZmU4i(6bdNJnze8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmc(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytgb)cBMzMzgx8XYCXWg9UmgohBYi4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjF4oBfiSzMXLV5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYi4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYG4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqsumOamQWMzg3VmhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KrWVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjdIFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjdIFHnZmZmJl(NLVqsK3zamyS(RamCo2KbXVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytge)cBMzMzgxCI6UbpgOy4CSjdIFHnZmZmJl(ipaijY7magmslFzgWW5ytge)cBMzMzgx8plFHKiVZayWiT8LzadNJnzq8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytgb)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmc(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYi4xyZmJO)f2mZGeswg8OiyigDqNHavyZmJllkhBYybHnZmZmdsiznd0lJrcrO7nMWMzMzMXfFS7lfbCo2KbXVWMzMzMXfNhWJIaGbNJnzq8lSzMzMzCXx6dDJZXMmi(f2mZmZmU4e1(rb4CSjJGFHnZmZmJlojeqb7bmCo2KbXVWMzMzMbjKJb8i8EmsicDVXe2mZmZmU4J8aGKiVZayWy9xby4CSjJGFHnZmZmJl(NLVqsK3zamyS(RamCo2KrWVWMzMzMXfNVCxgdNJnzq8lSzMzMzCXr81dgohBYG4xyZmZmZ4IpYdasI8odGbBPpYamCo2KrWVWMzMzMXf)ZYxijY7magSL(idWW5ytgb)cBMzMzgxCI6UbpgOy4CSjJGFHnZmZmJl(ipaijY7magmslFzgWW5ytgb)cBMzMzgx8plFHKiVZayWiT8LzadNJnze8lSzMzMzCXhZJz2(HYladNJnzq8lSzMzMzCXjrF8cWW5ytge)cBMzMzgx8VHIrTXaEeEpy4CSjdIFHnZmZmJlol)MndWGHZXMmi(f2mZmZmU4JL5IHn6DzmCo2KbXVWMzMzMXfFmVZagohBYG4xyZmJO)f2mZGessi8G(ocBMzCzX5ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjdIFHnZmZmJl(sFOBCo2KrWVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmc(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnze8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnzq8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqU03mGWMzgxwmo2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKJ5XSVKrKWMzgx(Ao2KXccBMzMzgKqYAgOxgJeIq3BmHnZmZmJl(y3xkc4CSjJGFHnZmZmJlopGhfbadohBYG4xyZmZmZ4IV0h6gNJnzq8lSzMzMzCXjQ9JcW5ytge)cBMzMzgxCsiGc2dy4CSjdIFHnZmZmdsihd4r49yKqe6EJjSzMzMzCXh5bajrENbWGX6VcWW5ytge)cBMzMzgx8plFHKiVZayWy9xby4CSjdIFHnZmZmJloF5UmgohBYG4xyZmZmZ4IJ4RhmCo2KbXVWMzMzMXfFKhaKe5Dgad2sFKby4CSjdIFHnZmZmJl(NLVqsK3zamyl9rgGHZXMmi(f2mZmZmU4e1DdEmqXW5ytge)cBMzMzgx8rEaqsK3zamyKw(YmGHZXMmc(f2mZmZmU4Fw(cjrENbWGrA5lZagohBYG4xyZmZmZ4IpMhZS9dLxagohBYG4xyZmZmZ4ItI(4fGHZXMmc(f2mZmZmU4FdfJAJb8i8EWW5ytge)cBMzMzgxCw(nBgGbdNJnze8lSzMzMzCXhlZfdB07Yy4CSjdIFHnZmZmJl(yENbmCo2KrWVWMzgr)lSzMbjKl9EqKWMzgxcGGJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KrWVWMzMzMXfNecOG9agohBYi4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYi4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KrWVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmi(f2mZmZmU4KOpEby4CSjJGFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)cBMzqcjlZSIoiSzMXLac4ytgliSzMzMzqcjRzGEzmsicDVXe2mZmZmU4JDFPiGZXMmi(f2mZmZmU48aEueam4CSjJGFHnZmZmJl(sFOBCo2KbXVWMzMzMXfNO2pkaNJnzq8lSzMzMzCXjHakypGHZXMmi(f2mZmZmiHCmGhH3JrcrO7nMWMzMzMXfFKhaKe5DgadgR)kadNJnzq8lSzMzMzCX)S8fsI8odGbJ1FfGHZXMmi(f2mZmZmU48L7Yy4CSjdIFHnZmZmJloIVEWW5ytge)cBMzMzgx8rEaqsK3zamyl9rgGHZXMmc(f2mZmZmU4Fw(cjrENbWGT0hzagohBYG4xyZmZmZ4Itu3n4XafdNJnze8lSzMzMzCXh5bajrENbWGrA5lZagohBYG4xyZmZmZ4I)z5lKe5DgadgPLVmdy4CSjdIFHnZmZmJl(yEmZ2puEby4CSjdIFHnZmZmJloj6JxagohBYi4xyZmZmZ4I)numQngWJW7bdNJnze8lSzMzMzCXz53SzagmCo2KrWVWMzMzMXfFSmxmSrVlJHZXMmi(f2mZmZmU4J5DgWW5ytge)cBMze9VWMzgKqYYaO3JrK1dfWiSzMXLGVNJnzSGWMzMzMbjKSMb6LXiHi09gtyZmZmZ4Ip29LIaohBYG4xyZmZmZ4IZd4rraWGZXMmc(f2mZmZmU4l9HUX5ytge)cBMzMzgxCIA)OaCo2KbXVWMzMzMXfNecOG9agohBYG4xyZmZmZGeYXaEeEpgjeHU3ycBMzMzgx8rEaqsK3zamyS(RamCo2KrWVWMzMzMXf)ZYxijY7magmw)vagohBYG4xyZmZmZ4IZxUlJHZXMmi(f2mZmZmU4i(6bdNJnzq8lSzMzMzCXh5bajrENbWGT0hzagohBYG4xyZmZmZ4I)z5lKe5Dgad2sFKby4CSjdIFHnZmZmJlorD3GhdumCo2KbXVWMzMzMXfFKhaKe5DgadgPLVmdy4CSjJGFHnZmZmJl(NLVqsK3zamyKw(YmGHZXMmi(f2mZmZmU4J5XmB)q5fGHZXMmc(f2mZmZmU4KOpEby4CSjdIFHnZmZmJl(3qXO2yapcVhmCo2KrWVWMzMzMXfNLFZMbyWW5ytge)cBMzMzgx8XYCXWg9UmgohBYG4xyZmZmZ4IpM3zadNJnzq8lSzMr0)ct0c)wzEScC4L4Vy9TrP8p27(YGztgliSzMHJysW3Z3KzZMVEGVEGVEa)3GesJOUxgHnZmCetc(E(MmB2SzZMnB24)gKqAJ9cf69iSzMHJysW3Z3KzZMaaB2qab(VbjKgITd5luO3JWMzgoIjbFpFtMnBiGGfhIHb8Fdsin(WJbiSzMHJysW3Z3KzZ(Xh5JFzaa)3GesBjieLSWMzgoIjbFpFtMnB2SzXGaciW)niH04bmdCgEm8lSzMHJysW3Z3KzZgWIsMmlge4)gKqASMHIY(rMkSzMHJysW3Z3KzZgciitMnB8FdsinIaqz23luHjAKuKuKKOmOZMbyq(bjjk)ecqsI8kg9cfjjmeUlpYdssyiCxEKhwtMIYlajjaVGdfdjjEg5i)Wk(WsWAw(lfjjYRy0luwr5Nqassy0hfSs4WJcqsImcaYicjjaVGdfjjYRy0luKKGesJNroYpSIpSeSML)sfM96Hmf9EwaMlSzMTVKFBBFV0XpSV2KH4akp3lD8d77I5cBMzVvMhRahEjMn6Mcyiby4fLmGpzwpl23lD8d77CHnZSXUVyaEUx6I5cdodcJKe5vm6fkRqaDaGKeffkyajfjjk4RuciQl6HIKeFyCeNiFqsAFFdi)GKe9Tbh63J8dssqx3uuKFqsrsrsI(2Gdf5hKKGUUPOi)GKIKIK0akB2OKx3u(r(bjjORBkkYpiPiPijX8idq(bjjORBkkYpiPiPijX(rMIEpi)GKe01nff5hKuKuKKyUBaYpijbDDtrr(bjfjfjj0ZmM7kHi)GKe01nff5hKuKuKKiKxcPVn4qr(bjjORBkkYpiPiPiPijHEOaMZB)Dagm07b5i4JijDwH(HbD2madgYrqassmGzO3Zh(jeGKek57bjjk4RucqscX6GKef8vkbJ9EOp0duWHIK0irS9H04S8sGKe6assSELE55EP8CNHsgjjk4Ruc(29qrsAj(kHmamSLF8JKe57DpCx(8b8v6sCEJUbdihfjj0dkLvy0hdfmGCeeGKe57DpCx(GCuKuKJ47r(bjjk4Ruc(29qjHIyaGCeFpeij9itr5f8HbD2maZsVdaKJascGajj0dfWCE7VdWGHEpihbFejP3bf6JIEpi)GKeg9Xqr(bjjk)ecqsIqgagGIKeHmamafjjSn6aydytrsrsIn6bfdbKFqsIYpHaKKiKbGbOijridadqrscBJoag9sPxOiPiPijrzqNndWG8dssu(jeGKe5vm6fkssKxXOxOScb0bassuuOGbKKiVIrVqrscsiTXsew)HvlLeIZkEg5i)im71dzk69S4T3y0hfG9BGFdk2S5cBMzVvMhRahEj(T3y0hfGzt2BVXOpkatyHnZS3kZJvGdVepW8wECY3ZcOyZMlSzMXaORmhJYScegCgegjjYiaiJiKKa8couKKa8coumKKglry9hwTusioR4zKJ8dssKxXOxOSIYpHaKKWOpkyLWHhfGKegc3Lh5bjjmeUlpYdRjtr5fGKIKef8vkbe1f9qrsIpmoItKpijTVVbKFqsI(2Gd97r(bjjORBkkYpiPiPijrFBWHI8dssqx3uuKFqsrsrsAaLnBuYRBk)i)GKe01nff5hKuKuKKyEKbi)GKe01nff5hKuKuKKy)itrVhKFqsc66MII8dsksksseYlH03gCOi)GKe01nff5hKuKuKKqpZyUReI8dssqx3uuKFqsrsrsI5Ubi)GKe01nff5hKuKuKuKKEKPO3dgYpijHrFmuKFqsA4YkOamS3maYrrsrsc9Gsr(bjPHlRiVIrVqrYxqsI8kg9cfjP9L8BBOKVhwgfJW9JFwEL5rrVhBY4Jcl8BL5XkWHxINbOJtbqh)W(Atg71dzk69Sak2S5cBMzSmG3p37gJvS8kucxafB2CHnZS9L8BBNhuGnzqXMXNqFuYiSahbelUliMfzoIfh852LXWXf2mZ2xYVT9fRVdfLYVnzqXMXNqFuYiSa)RlqSgyrMJp3UmgbclSzMTVKFBdL89yt2yapeX6vMhgPhVGbIhl)i6r84ua0X(iJaG75bfWHyuY3JDzmc4J8nFdbecBMz7l532iF3xgBYGInJpH(OKryboI1xYxcz2Sxq8CwGfLOXNBxgdNnB2SzZgxyHnZmgaDL5yNhuWVHs(E(TVy9DOOu()nY39LryWzqyHFRmpwbo8s8aZB5XjFp2KXE9qMIEplGInBUWMz2(s(TTZdk43qjFp)2xS(ouuk))g57(Yyt2BL5XkWHxINbOJtbqh)W(Uak2S5clSzMTVKFBJ9Lb6JsbdJ4bfytgoIjbFpFtMnBCJyInY39LXiMy78GcmIj2Wrmj475Bg7R4gXeBFX67qrP8lSzM9wzEScC4L43EJrFuagxe7VvMhRahEj(T3y0hfGzSigbCSjJfe2mZmZmmeUlBtgLzf8lSzMzMzKr4DMbgSjJYSc(f2mZmZm0Za4R2KH4a6huOGfZ)f2mZmZmga2LHAtgLzf8lSWMzMzMHs(ESjdL898lSzMzMzNhuGnzSVmqFukyyepOGFHf2mZmZmczUZyayyF4NqGnz4uuOGb8FHnZmZmd8vcrzEu075dkuGnzioG(bfkyXCJfXqjFpSmkgH7h)S8kZJIEp)cBMzMz2WkZJIEp2KHs(Eyzumc3p(z5vMhf9E(f2mZmZS3k9se0bGnzuMvWVWMzgrlm4mGKIKIKedyg698HFcbijHs(EqsI89UhUlF(a(kDjoVr3GbKJIKef8vkbijHyDqsIc(kLGVDpuKKwIVsidadB5h)ijHoGKeRxPxEUx64KVhKKOGVsjyS3d9HEGcouKKgjITpKgNLxcKKgqXwswpKPO8cqs6T3ijDwH(HbD2madgYrqassOhukRWOpgkya5iiajjY37E4U8b5OiPiPijXlYrqaF)9eGKIeja \ No newline at end of file From b0efa872216affa6f557032e9e42127099c87c17 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Tue, 23 Aug 2022 14:17:07 +0200 Subject: [PATCH 28/44] Add nearbyPlayers wa --- LegionWA/NearbyPlayers/Event.lua | 7 +++ LegionWA/NearbyPlayers/Init.lua | 81 ++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 LegionWA/NearbyPlayers/Event.lua create mode 100644 LegionWA/NearbyPlayers/Init.lua diff --git a/LegionWA/NearbyPlayers/Event.lua b/LegionWA/NearbyPlayers/Event.lua new file mode 100644 index 0000000..113d2f1 --- /dev/null +++ b/LegionWA/NearbyPlayers/Event.lua @@ -0,0 +1,7 @@ +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local caster = select(6, ...) + local target = select(10, ...) + + aura_env.processEvent(allstates, caster, target) +end \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Init.lua b/LegionWA/NearbyPlayers/Init.lua new file mode 100644 index 0000000..8b280a4 --- /dev/null +++ b/LegionWA/NearbyPlayers/Init.lua @@ -0,0 +1,81 @@ +if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end +if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end +if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end + +local allianceRaces = { + "Draenai", + "Dwarf", + "Gnome", + "Human", + "Night Elf", + "Worgen" +} + +PlayerController = { + nearbyPlayers = {}, + addPlayer = function(self, name) + self.nearbyPlayers[name] = Player:New(name) + end, + getPlayers = function(self) + + end +} + +Player = { + guid = nil, + lastSighted = nil, + info = nil, + update = function(self) + self.lastSighted = GetTime() + end, + getFormatted = function(self) + -- Color by class + -- Format time + return info.name .. " " .. self.lastSighted + end +} +PlayerInfo = { + class = nil, + race = nil, + name = nil, + isHostile = nil, +} + +function Player:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + o.guid = guid or "" + o.lastSighted = GetTime() + o.info = PlayerInfo:New(guid) + + return o +end +function PlayerInfo:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + local info + if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then + info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] + else + info = GetPlayerInfoByGUID(guid) + WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { + class = info.class, + race = info.race, + name = info.name, + isHostile = allianceRaces[race] ~= nil + } + end + o.class = info.class or "" + o.race = info.race or "" + o.name = info.name or "" + o.isHostile = info.isHostile or true + + return o +end + +aura_env.processEvent = function(allstates, caster, target) +end From b23ed6cd31d7821cc031f5ab234c907237c97434 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Tue, 23 Aug 2022 18:30:07 +0200 Subject: [PATCH 29/44] Add bag glow (that doesn't work) --- LegionWA/BagBoEGlow/Event.lua | 4 ++++ LegionWA/BagBoEGlow/Init.lua | 30 ++++++++++++++++++++++++++++++ LegionWA/BagBoEGlow/README | 18 ++++++++++++++++++ LegionWA/DruidEnergyBar/Export | 1 + LegionWA/NearbyPlayers/Init.lua | 11 ++++++++++- 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 LegionWA/BagBoEGlow/Event.lua create mode 100644 LegionWA/BagBoEGlow/Init.lua create mode 100644 LegionWA/BagBoEGlow/README create mode 100644 LegionWA/DruidEnergyBar/Export diff --git a/LegionWA/BagBoEGlow/Event.lua b/LegionWA/BagBoEGlow/Event.lua new file mode 100644 index 0000000..2cbf14c --- /dev/null +++ b/LegionWA/BagBoEGlow/Event.lua @@ -0,0 +1,4 @@ +-- BAG_UPDATE +function(e) + aura_env.update() +end \ No newline at end of file diff --git a/LegionWA/BagBoEGlow/Init.lua b/LegionWA/BagBoEGlow/Init.lua new file mode 100644 index 0000000..af49af3 --- /dev/null +++ b/LegionWA/BagBoEGlow/Init.lua @@ -0,0 +1,30 @@ +local function getItemLink(container, slot) + return select(7, GetContainerItemInfo(container, slot)) or "" +end +local function getBindType(container, slot) + return select(14, GetItemInfo(getItemLink(container, slot))) or 0 +end +local function isBoe(container, slot) + return getBindType(container, slot) == 1 +end + + +local showGlow = function(container, slot) + ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end +local hideGlow = function(container, slot) + ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end + +aura_env.update = function() + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) + if isBoe(container, slot) then + showGlow(container, slot) + else + hideGlow(container, slot) + end + end + end +end diff --git a/LegionWA/BagBoEGlow/README b/LegionWA/BagBoEGlow/README new file mode 100644 index 0000000..434ab32 --- /dev/null +++ b/LegionWA/BagBoEGlow/README @@ -0,0 +1,18 @@ +Haven't found a way of determining whether an item is soulbound or not without tooltip scanning which I don't want to do + +local cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate") +local function IsSoulbound(bag, slot) + cTip:SetOwner(UIParent, "ANCHOR_NONE") + cTip:SetBagItem(bag, slot) + cTip:Show() + for i = 1,cTip:NumLines() do + if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then + cTip:Hide() + return true + end + end + cTip:Hide() + return false +end + +Some guy says this is good \ No newline at end of file diff --git a/LegionWA/DruidEnergyBar/Export b/LegionWA/DruidEnergyBar/Export new file mode 100644 index 0000000..4f596a5 --- /dev/null +++ b/LegionWA/DruidEnergyBar/Export @@ -0,0 +1 @@ +dSeIxaGivq1LuevnkkLYPOuIvPiQmlKQu3sfyxivXVubfdtv6yc1YKcptkzAuLUgLITrvfFtvOghsvDofHwNIaUNIGoOQilKs1dvvAIQI6IsrBuf5JivjgPQq6KQQALQGmtfrUPkQ2jf)ePYqvfCuvHyPQO8uutvsxLQQ2kLs6RkIYyveiNfPkP1QiqnxvqP9c)vfAWk0HjzXkQhtjtgjxw0MrkFwiJMQ40KA1ukvVwk1SLQBRGDl43igUeTCLEovMoX1vPTRi9DvvgVQIZtvz9uvP9lHrmQGvOcbSdCd6Xg6jUXbX2Cq0e96h)yfprWdGPatHkyF0rJMlfyoiM(VGvwIEAwxDuuUNtOsyEbNFkvbQKc2bVzKMeQ(ktWrl5wcwhKCdQUTMRttcW0cSl70EGOdcy70vR0D(KAEQcwtbUzi3iF2vBn)ifJ0ll5wcwwDuuUOc25H8JUayNhYp6cpzj6PjeWH7qD1rr56GjgCNOOqfSoeTKBjQGhUDrJkeiGfvpdcQGhUDrJkeiGT6kNdvWoDiQNGF(m)))meWLtlfvpdcQGhUDrJkeiGVU8Ovx5CGL9MGxLvIk4HBx0OcbcyknnAARBx8Hk4HBx0OcbcyAklrtcOcE42fnQqGaEj9evWd3UOrfceWIQNbPbQGhUDrJkeiqGa2cvyIrfSRuTTNmnL4bM4xWorz12XA)MWe3aStuwTDN6QihydjKGNjlvUFjDYIkmXW8ctdyEHPfmVW4fMyiGxIOKSMFeWg6mnbpRSAhTKBG6lPtwuHjgMxyAaZlmTG5fgVW8sp2abmnsqo1vroW05FDs)nnbRTiHJwKozrfMyyIHPbmXW0cMyy8ctmeWZQ9lPtwuHjgMyyAatmmTG5fgVWedbmv6uYDvsIzWLljAtN7HnT0onjaZlyAKGaU5NYnDUFkFGDLQTnD0O5sHEfMxWDIIcvW6q0sULOcE42fnQqGawu9miOcE42fnQqGa2QRCoub70HOEc(5Z8))ZqaxoTuu9miOcE42fnQqGa2vMwOc2Pdr9eMgqatPPrtBD7IpubpC7IgviqaVKEIk4HBx0Ocbc4vzLOcE42fnQqGa(6YJUY0c2blQEgKgOcE42fnQqGaMMYs0KaQGhUDrJkeiGVU8Ovx5CWoeWIEi3VKozrfMyyIHPbmXW0cMyy8ctmeWxx(eLTFDssLuNRdyg8MrAsO6Rmbl5hbStuwTDygSKFK7MGB2N6))Irdzhal5h5ejiGpTA)wm(ixf1QevXyTc2vQ2218JC3e8)GKlnLvEy)QCIoezxThw))FWxLt0Hi7Q9aUuTTb7kvBBmdw0d5EIeeWNwTFlgFKRIAvIQySwbR6LEuWedEMSu5(p4sbMyWs(r(s6KfvyIHjgMgWedtlyIHXlmXqaptwQCTRSAtTKsWn7t9)FXO9Uk0gmL2z73GLONMGv9oyLLONM1vhfL75eQeMdIFbtPDLDLVA(rMustap5dGNjlvU0rJMlfyEbRdA5OtuRKuWedwhKCdQUTMRttcW0c8SYQn1sk)hoTKGGzWYQJIYfvWIVYeStuY1b(gYPzqaRUcb81LhvZoYoFoHkHDW50miGFG8lxWxxE8g0cSdUK8lxXxzctlWxxESK8lxXxzc7qal5hbZGd3H6QJIY1btmyNOTA7757QenjGzWQGLhYEAvdz1xzcMBoPMFRNo7PZBcw0d5YA)MWe3aSOhYfZGf9qUN6QihydjKG9K6ipco51M3w(51gBA1yI28Atd6dAh49XGDLQTT9EgOoNqLGF65NbFD5tu2(1jjvsDU6dMbtJeew73eMwnaRPa3mKBKp7QTMFeWQRqGDWUs12(mIOenjaZl4zYsLlSdwfS8q2tRAipTQHe8KLQ2pDxLBc0mKBKp7QfSRuTT)s6KfvyIHjgMgWedtlyIHXlmXqaptwQC)hoTKGa7GL8JCQRICGnKqcwBrchDAQe8z)PxE0kyxPABthnAUuMGG5fS2IeWmyxPAB)OPoYJatRxWs(ryTFtyIBaEMSu5YA)MW4fStuwTDFjDYIkmXWedtdyIHPfmXW4fMyiGP0UYUYxn)iNPJ8iGN8LGNjlvUnPIsWXfJpO)KDWUs12(r1uuzaSPPT28mWZkR2ulP8lPtwuHjgMyyAatmmTGjggVW8cbmTvnKSSkrbJnG)PPep40JTzItK(nSXRxVtSXeTPLFaTd8sFWUs12(mIOenjCoHkb)K)v6a7YoThi6Ga(BttT5zG1HP56smd2vQ22pNoLC3eZGjRodIs0Ka4hLUZ(pbtNP(0Ka7xczaMxWorz12DIeeWNwTFlgFKRIAvIQySwHatdubptwQC)s6KfvyIH5fMgW8ctlyEHXlmXqaRTibmdMgjiN6Qihy68VoP)MMGNv7xsNSOctdyIHaUCjrB6CpSPL2PjbyEb3jkkubRdrl5wIk4HBx0Ocbcyr1ZGGk4HBx0OcbcyRUY5qfSthI6j4NpZ))pdbSO6zqAGk4HBx0OcbcyxzAHkyNoe1tyAabmLMgnT1Tl(qf8WTlAuHab8s6jQGhUDrJkeiGxLvIk4HBx0Ocbc4Rlp6ktlyhmnLLOjbubpC7IgviqaxoTuu9miOcE42fnQqGa(6YJwDLZb7qaVzKMeQ(ktWQ7QMvlyNOSA7Wmyj)i3nb3Sp1))fJgYoaEMSu5(p4sbMyWuANTFdwIEAcwf8bwzj6PzD1rr5EoHkH5G4xW6GKBq1T1CDAsaMwGL8JGzWEsDKhbg)8cw0d5IzWZkR2ulP8lPtwuHXlmVqaptwQCHDWZKLk3Murj44IXh0FYo4zYsLRDLvBQLucUzFQ))lgT3vH2GLvhfLlQGfFLjyNOKRd8nKtZGawDfc4RlpQMDKD(Ccvc7GVU8OZd53xItGDWxxE8g0cSdUK8lxXxzctlWopKF0fa78q(rx4jlrpnbFD5XsYVCfFLjSdoNMbb8dKF5cbSIIslAsq1pkRokkxhQqatBvdjlRsuW4f8pnL4bMw28cEMSu5YA)MW4fSMcCZqUr(SRwWH7qD1rr56GjgSoOLJorTssbtm4zYsLlD0O5sbMxiW0cvWZKLk3VKozrfMyyEHPbmVW0cMxy8ctmeWAlsaZGPrcYPUkYbMo)Rt6VPj4z1(L0jlQWeJtETPrCd)8s)3gTE8eF8eBbAhyJFGPbo94gEJFPF8JTPf9JJBrF)aAhytlyAbtmeWLljAtN7HnT0onjaZl4orrHkyDiAj3subpC7IgviqalQEgeubpC7IgviqaB1vohQGD6qupb)8z())ziGlNwkQEgeubpC7Igviqa7ktlub70HOEctdiGP00OPTUDXhQGhUDrJkeiGxsprf8WTlAuHab8QSsubpC7IgviqaFD5rxzAb7GfvpdsdubpC7IgviqattzjAsavWd3UOrfceWxxE0QRCoyhc4nJ0Kq1xzcwDx1SAb7eLvBhMbl5h5Uj4M9P()Vy0q2bWQEPhfmV0JFaptwQC)hCPatmykTZ2VblrpnbR6DWklrpnRRokk3Zjujmhe)cwhKCdQUTMRttcW0cSS6OOCrfS4Rmb7eLCDGVHCAgeWQRqaFD5r1SJSZNtOsyh81LhDEi)(sCcSd(6YJ3GwGDWLKF5k(kty8c25H8JUayNhYp6cpzj6Pj4Rlpws(LR4RmHDW50miGFG8lxiGL8JGzWQGLhYEAvd5PvnKGNSu1(P7QCtGMHCJ8zxTGNvwTPws5xsNSOcJxyEHaw0d5IzW)0uIhyA5Tb4zYsLBtQOeCCX4d6pzh8mzPY1UYQn1skb3Sp1))fJ27QqBWAkWFjdZe7Qf8SYQD0sUbQVKozrfgVW8cbmTvnKSSkrbJxWQGLhYEAvdz1xzcMBoPMFRNo7PZBcEMSu5YA)MW4fSNuh5rGXMgGd3H6QJIY1btmyDqlhDIALKcMyWZKLkx6OrZLcmVqGXlQG9rhnAUuG5G4wGNjlvUFjDYIkmXW8ctdyEHPfmVW4fMyiGNvwTJwYnq9L0jlQW4fMxiGPrcYPUkYbMo)Rt6VPj4z1(L0jlQWeJt0N(TETH(p2MxV(Xl9FB9cAhytlyAGt2mXwEJTXl9FBf3OL3hhdAhyJnW0cMyiGlxs0Mo3dBAPDAsaMxWDIIcvW6q0sULOcE42fnQqGa(6YJHCAUWoyr1ZGGk4HBx0OcbcyRUY5qfSthI6j4NpZ))pdb81LhT6kNd2b7ktlub70HOEctdiGP00OPTUDXhQGhUDrJkeiGxsprf8WTlAuHab8QSsubpC7IgviqaFD5rxzAb7GPPSenjGk4HBx0Ocbc4YPLIQNbbvWd3UOrfceWIQNbPbQGhUDrJkeiqaVzKMeQ(ktWQ7QMvlyNOSA7Wmyj)i3nb3Sp1))fJgYoaw1l9OG5LE8d4zYsL7)GlfyIbptwQCTRSAtTKsWn7t9)FXO9Uk0gmL2z73GLONMGv9oyLLONM1vhfL75eQeMdIFbRdsUbv3wZ1PjbyAbwYpcMbptwQCBsfLGJlgFq)j7G9K6ipcmn8d4zLvBQLu(L0jlQW4fMxiGvblpK90QgYQVYem3Csn)wpD2tN3eS2IeWmyvWYdzpTQH80QgsWtwQA)0DvUjqZqUr(SRwWIEixmdwtbUzi3iFpK7tZ6Uw8zxTGPTQHKLvjky8c(NMs8atlVnalRokkxubFD5r1SJSZNtOsyh81LhDEi)(sCcSdUK8lxXxzcJxWxxESK8lxXxzc7GTUoHmC0JMkbBDDczaS4RmbBDDczaS11jKHJIVYeCondc4CAgeWpq(LlyRRtidpFxLOjbW0Ublrtc2MTuCOIXIXIXIXoXs1lgZqUr(kgNWIr)dA5bYVCTTdVSR8L7HBlfhQySySySyStSu9IXq(rQE205H0PyrTsX4ewmoOep0dToHS2wgYnYxX4HPy07RTumo5kg9(wCOIXIXIXIXoXs1lgd5hP6ztNhsNQzGQyCclghuIh6Xk1DBld5g5Ry8Wum691wkgNCfJEFlouXyXyXyX4MYDdfJzi3iFfJhumgYps1ZMopKoflQvO3fJH8Ju9SPZdPt1mqvmEqXyi)ivpB68q6uSOwHExmgxCOmqb266eYayA3GLOjbBlP3fJIAJsXwkouXyXyXyXOMwXOTjQnkLIXjCclgp8YUYxUhUTumkEYqXHkglglglglglglglg3uUBOyu2BwCOIXIXIXIXmqvCOmqboNMbXb2FZ)6XhOBYAE2XtN18r8VPPc25H8JUayNhYp6cpzj6Pj4BiNMbbS6keWxxE8g0cSdb8mzPYL1(nHXl4WDOU6OOCDWedEMSu5shnAUuG5fceWtHj2BJyiaa \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Init.lua b/LegionWA/NearbyPlayers/Init.lua index 8b280a4..0157b3f 100644 --- a/LegionWA/NearbyPlayers/Init.lua +++ b/LegionWA/NearbyPlayers/Init.lua @@ -18,6 +18,13 @@ PlayerController = { end, getPlayers = function(self) + end, + process = function(guid) + if (self.nearbyPlayers[guid] == nil) then + self.addPlayer(guid) + else + + end end } @@ -77,5 +84,7 @@ function PlayerInfo:New(guid) return o end -aura_env.processEvent = function(allstates, caster, target) +aura_env.processEvent = function(caster, target) + PlayerController:process(caster) + PlayerController:process(target) end From b48cb28cb5817c9f4696579e3fdd0d28585e7dd4 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Tue, 23 Aug 2022 18:32:11 +0200 Subject: [PATCH 30/44] Add boe filter --- LegionWA/AutoLoot/Export | 2 +- LegionWA/AutoLoot/Init.lua | 40 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export index a3785b6..2960a41 100644 --- a/LegionWA/AutoLoot/Export +++ b/LegionWA/AutoLoot/Export @@ -1 +1 @@ -dq1uicGiO6rOOI6ssfWOeWPqvTkPsr9kuujZckUfuYUeOHbQ6yOcltQu6zOkIPjvixtiuSnufL(MqOQXjeQCouffRtiK3jvkCprAFsfO(hkQiDquKwiQI0dfIAIcvYffQuBeuIpIIWirr5KcvTsi9suurmtuWnLkv7ui4Ncvmuuf6OOiAPOkQEkk1ubfxffvkBvQG(QqKZkvG8wHYCrrfURqAVi4VGsny1Hf1Irf9yuPjlOldSzuYNrOrdQCAqwTqO0RLkA2s52sv7ws)wIHdL64sfQLJONdX0r66Iy7OqFxQKXdkPZJQ06Lkf59Oky(OOs19rrv7NMaheGHa7mbyiqjWgHa7Unyetqo6wS4iIblI8mDeplplxo4ziWUNa7qcSdjadb2HqirSjvUuigbeyNBncS5noSyHaOeIqedpbEcSZCPqmcGHeIiraz3lHacraloGNaBeSZCbeIa8eyJaAS4XcuLsGnmXHhziUHfyiWo3GiwjWMH4gwGHaB4aqeHJsaw6Oig45j8SWZt4z62ULNWtI4J45z6wcSWQJ4zjWUvYHeGHaBAUbQ0ULamey3N0OqeGHaLaLaBAUbQucWqGDFsJcragcucucSjlnabyiWUpPrHiadbkbkb2HqSybXnPr5Lamey3N0OqeGHaLaLaBYmxabyiWUpPrHiadbkbkb2qvIKLeSjadb29jnkebyiqjqjWgBgXMMBGkLamey3N0OqeGHaLaLaBwzUuOsLamey3N0OqeGHaLaLa7eeaS52Yiie4KaLa7CfQptbe4PeytcicvQWWl2acSd5TM7H4sKSKGnb2ayf7CneesGNsGnLeIirajbyiWgbUsxXPsGncCLUItLPCPqmciqjWgkKaBMMqlmukucSHQuazn36qajcuPsic8ecS7ckKchbyPJIyGNNWZcphr8r8DuexethXrh1reyHvhXZsGDnPhgsiIebKieIaheydRXHfleaLqeWkIVJGNaBOkef2i0mjfesicCqGsGnxcWqicCqagcSPayLYbSuQu2qDtacrOBHNa7qiKi2KkxkeJacSZTgb2zUuigbWqcrKiGS7LqaHiGfhWtGDMlfQuriadb2i0mjLameyhwGDpabjteqGtcucSHQqucWqGDyb2CtqOLEc8ucS5MGql9ey3kCZnpeWzcrp1zLBiarHy51c1Jei3jttiZiSZmccDkCGQhjqUtMMqMryNzee6PopW8oOgkkelVwOEKa5ozAczgHDMrqyWiZBNzNchO6rcK7KPjKze2zgbHbJmVDM9uNhyEhudffILxlupsGCNmnHmJWoZiimyK5TZCW4PG(iN5chWPWbQEKa5ozAczgHDMrqyWiZBN5GXtb9roZfoGN68aZ7GAOOIIfwEFUtGZzRuc9clhjtseqMrCwqnkGuuSWYHOG(iK7byCikONbOANyCikONjtYnikVyCikONbaJGgghIc67ouLbaJGgghIc6HHxSbyCikONDcNWWl2amquqpBAMBNrUKuPyCikOpU74eiSzOWfJdrb9WaGvAcjaJJaAnEKeIlaJZTLrqIpUW4ijCYTLrqIpUW4CcvdHHxSbyaWk2zUXhxyCean(4cJdHezYmlkuLiphKjcQup1zcanEkOp(kRsaKwHYxuSWYBLcnEULkgVvk0iK7by8wPqzYKCLcr5fJZnHKeu5YB8XfgVvkuMmj3GO8IXBfUDccX4qimzcaHgpf0JX74eacn(4cJdHWuUuigbEQZeakdLcLDRqJVYQeaPvO8fflSCgGQD6iLEafQhG4HfaIxluVRczNI2kCZnNvsLlfQuDIaA8uqpdq1odG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9mav70X9GbDAbHscvjgaPvO85lQ7UdXYdG0kupn1Rqn(ofoq1jb0eYQxHAoOgkQ7UtcOjKvNjaugkfk7wHYauTZaiTcLVOGAOOTc3CZzLu5sHkvNiGgpf0hHCpiasRq5lQ7UNtiZWguzmyiGZeImuigaNiGgpf0hHCpWX9GbDAbHscvjgaPvO85lQ7UdXYdG0kupn1Rqn(ofoq1jb0eYQxHAoOgkQ7UtcOjKvhb0aCPb6wmotaOmuku2Tcn(kRsaKwHYNVOGAOOTc3CZzLu5sHkvNiGgpf0ddVydcG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9WWl2ah3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0a8SyCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqp7eoP8IniasRq5lQ7UNtiZWguzmyiGZeImuigaNiGgpf0ZoHtkVydCCpyqNwqOKqvIbqAfkF(I6U7qS8aiTc1tt9kuJVtHduDsanHS6vOMdQHI6U7Tc3CZHOGEgGQD6PoranEkONbOANbqAfkFrD3DiwEaikONbOANEAQxHA8DkCGQtcOjKvVc1Cqnuu3DNeqtiRocOb4sdeXJXzcanEkOp(kRsaikONbOAN85lkOgkARWn3CwjvUuOs1jcOXtb9maye0cG0ku(I6U75eYmSbvgdgc4mHidfIbWjcOXtb9maye0CCpyqNwqOKqvIbqAfkF(I6U7qS8aiTc1tt9kuJVtHduDsanHS6vOMdQHI6U7Tc3CZHOGEgGQD6PoranEkONbOANbqAfkFrD3DiwEaikONbOANEAQxHA8DkCGQtcOjKvVc1Cqnuu3DNeqtiRocOb4sd0ryCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqFhMBjGaiTcLVOU7EoHmdBqLXGHaotiYqHyaCIaA8uqFhMBjah3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0aCWbgNja04PG(4RSkbGOGEgGQDYNVOGAOOTc3CZzLu5sHkvNiGgpf0ZKj5kfIYBaKwHYxu3DpNqMHnOYyWqaNjezOqmaoranEkONjtYvkeLxh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ojGMqwDeqdWLgGNGXzcaLHsHYUvOXxzvcG0ku(8ffudfTv4MBoRKkxkuP6eb04PGEMmj3GO8gaPvO8f1D3ZjKzydQmgmeWzcrgkedGteqJNc6zYKCdIYRJ7bd60ccLeQsmasRq5Zxu3DhILhaPvOEAQxHA8DkCGQtcOjKvVc1Cqnuu3DVv4MBoef0ZauTtp1jcOXtb9mav7masRq5lQ7UdXYdarb9mav70tt9kuJVtHduDsanHS6vOMdQHI6U7KaAcz1ranaxAaEcgNja04PG(4RSkbGOGEgGQDYNVOGAOOTc3CZzLu5sHkvNiGgpf0h3DCce2mu4MPqLAaKwHYxu3DpNqMHnOYyWqaNjezOqmaoranEkOpU74eiSzOWntHkvh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0a8myCMaqJNc6JVYQeaIc6zaQ2jF(IcQHI2kCZnNvsLlfQuDIaA8uqF8Cl1aiTcLVOU7EoHmdBqLXGHaotiYqHyaCIaA8uqF8Clvh3dg0PfekjuLyaKwHYNVOU7oelpasRq90uVc147u4avNeqtiREfQ5GAOOU7ERWn3CikONbOANEQteqJNc6zaQ2zaKwHYxu3DhILhaIc6zaQ2PNM6vOgFNchO6KaAcz1Rqnhudf1D3jb0eYQJaAaU0aCapgNja04PG(4RSkbGOGEgGQDYNVOGAOOIkARWn38WcdLc1tDwjvUuOsnasRq5lQ7UNtiZWguzmyiGZeImuigaNHsHcvj6iTcnICCpyqNwqOKqvIbqAfkF(I6U7muku2TcnasRq5lQOU7ERWn3CikOpEULQN6eb04PG(45wQbqAfkFVq6CWt6OocE4f1D3BfU5Mdrb9ri3d8uNiGgpf0hHCpiasRq57fshN5wTZAPRkUOU7oef0hHCpWtDikOpc5EqerejHZa4mhvCmooghNVOU7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHY3lKo8IkQ7UdXYRfQhjqUtMMqMryNzeegmY82zoy8uqFKZCHdedIc6JqUhe1PWbQI6U7U7EKa5ozAczgHDMrqyWiZBN5GXtb9roZfoqmikOpc5Equp15brD3D3D3D3H4wQEQdrb9XZTuXiQ7U7U7U7EhNKBquE9uhIc6zYKCdIYlgrD3D3DN5f1D3b1qrb1qrfv0wHBU5elTqybQrbKEQZdI6U7GAMZgi0tDkzcaJOU7olOgfq6PoRKkxkuPgab0yHXrAfkFrD3D3DhILhab0yfeuZC2aH8DkCGQOU7U7U7U75eYmSbvgdgc4mHidfIbWzIsl0zb1OaYUHJ0k0iYX9GbDAbHscvjgaPvO85lQ7U7U7U7ERWn3CikOpc5EGN6eb04PG(iK7bbqAfkFrD3D3D3D3XclpENycabXHOEybG41c1rsWg7cj1Jdp3HQojGiawzovu3D3D3D3DSWYHOG(iK7bruFMYfUa4DGqMlpqaMO0c5ZCN5Ea2qngbK8zUZCpqKlyJnGKpFC(I6U7U7U7UdXYdarb91CpWZ1qhIc6JqUher9zkx4cG3bczUCMO0cX57fshIc6JqUher9zkx4cG3bczUC2qngbK489cPdrb9ri3dIO(mLlCbW7aHmxEKlyJnGeNpFNchOkQ7U7U7U7U7UNtiZWguzmyiGZeImuigaNjkTqNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNjkTqNfuJciDwzOMJ7bd60ccLeQsmaef0hHCpGpFrD3D3Dhudf1D3b1qrzErBfU5MxidbK8CasjHKlabwGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCEoaPKqYf4SGAuaz3WrAfAe54EWGoTGqjHQedG0ku(8f1D3D3D3DVv4MBoef0hHCpWtDIaA8uqFeY9GaiTcLVOU7U7U7U7qS8aquqFeY9apxdDikOpc5Eqe1NPCHlaECidbKophGusi5cqW5Z3PWbQI6U7U7U7U7U75eYmSbvgdgc4mHidfIbWJdziG0jbiLesUaNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigapoKHasNeGusi5cCwqnkG0zLHAoUhmOtliusOkXaquqFeY9a(8f1D3D3Dqnuu3DhudfL5fTv4MBEFjPsHfOgfq6PopiQ7UdQzoBGqp1PKjamI6U7SGAuaPN6SsQCPqLAaeqJfghPvO8f1D3D3DiwEaeqJvqqnZzdeY3PWbQI6U7U7U7UNtiZWguzmyiGZeImuigaV7LKk1zb1OaYUHJ0k0iYX9GbDAbHscvjgaPvO85lQ7U7U7U7ERWn3CikOhgEXg4PoranEkOhgEXgeaPvO8f1D3D3D3DhILhaIc6HHxSbEUg6quqpm8InWttD8UxsQuC(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaE3ljvQZcQrbKo2zeeC(I6U7U7U7U7U7KaAcz1PKjarD3D3D3D3b1qrD3D3D3D3ZjKzydQmgmeWzcrgkedG39ssL6SGAuaPZkd1CCpyqNwqOKqvIbGOGEy4fBaF(I6U7U7oOgkQ7UdQHIY8I2kCZnhQXydwGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7Ud1ySbdCKae4kTqp1J4I4GhJOU7olOgfq6PoRKkxkuPgab0yHXrAfkFrD3D3DhILhab0yfeuZC2aH8DkCGQOU7U7U7U75eYmSbvgdgc4mHidfIbWJNbgBolOgfq2nCKwHgroUhmOtliusOkXaiTcLpFrD3D3D3D3BfU5Mdrb9maye08uNiGgpf0ZaGrqlasRq5lQ7U7U7U7oelpaef0ZaGrqZZ1qhIc6zaWiO5DWocOXkiuJXgmWrcqGR0c57u4avrD3D3D3D3D39Cczg2GkJbdbCMqKHcXa4Xtb9EdWiO5SGAuaPJDgbbNVOU7U7U7U7U7ojGMqwDkzcqu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa4Xtb9EdWiO5SGAuaPZkd1CCpyqNwqOKqvIbGOGEgamcA85lQ7U7U7GAOOU7oOgkkZlARWn3CSjlSaiiqLkSa1Oasp15brD3DqnZzde6PoLmbGru3DhoajNiEQtjtaye1D352ku48uNvUHaWiQ7UxibEQZk3qaye1D3BGmfoaPN6SYneagrD3DULsNqvIEQtjtaye1D3HQiCjHWMcvQEQtjtaye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaopswybqqGkvNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOGEy4fBGN6eb04PGEy4fBqaKwHYxu3D3D3D39wHBU5quqp7eoP8InWtDIaA8uqp7eoP8IniasRq5lQ7U7U7U7oelpaef0ddVyd8Cn0HOGEy4fBGNM64WqMdbiDc1A48DkCGQOU7U7U7U7U7oelpaef0ZoHtkVyd8Cn0darb9St4KYl2apn1XzgGKtCpxdDeqJvq4aKCIWxu3D3D3D3D3DVq6bGOGE2jCs5fBGNM64maYu4aK4EUg6iGgRGnqMchGKVOU7U7U7U7U7EH0darb9St4KYl2apn1XJCRqHd3Z1qhb0yfKBRqHJVOU7U7U7U7U7EH0darb9St4KYl2apn1XJdja3Z1qhb0yfSqc4lQ7U7U7U7U7Uxi9aquqp7eoP8InWttD8ixkDcvjI75AOJaAScYTu6eQsKVOU7U7U7U7U7EH0darb9St4KYl2apn1XJVIWLecBkuPI75AOJaASccvr4scHnfQu5Z3PWbQI6U7U7U7U7U7U7EoHmdBqLXGHaotiYqHyaCEKSWcGGavQolOgfq6yNrqW5lQ7U7U7U7U7U7U7KaAcz1PKjarD3D3D3D3D3Dqnuu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa48izHfabbQuDwqnkG0zLHAoUhmOtliusOkXaquqpm8InGVhmOJ74EWGoTGqjHQedarb9St4KYl2a(8f1D3D3Dqnuu3DhudfL5fTv4MBoJ5wcawGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7UZyULaGbosacCLwON68KigVB25aE49UzNd4HhJOU7EgBSB8cdCKae4kTqykXtb9SPzUD6PoRCdbGru3DNfuJci9uNvsLlfQudGaASW4iTcLVOU7U7UdXYdGaASccQzoBGq(ofoqvu3D3D3D39Cczg2GkJbdbCMqKHcXa4DyULaCwqnkGSB4iTcnICCpyqNwqOKqvIbqAfkF(I6U7U7U7U3kCZnhIc67WClb4PoranEkOVdZTeqaKwHYxurD3D3D3D3Hy5bqanwbZyJDJxyGJeGaxPfctjEkONnnZTt(ofoqvu3D3D3D3D3DVv4MBoef0ZKj5kfIYRN6eb04PGEMmjxPquEdG0ku(I6U7U7U7U7U75eYmSbvgdgc4mHidfIbWHboajWbWkec1X9GbDAbHscvjgaIc6zYKCLcr5LVhmOJ7quqpIdvDKwH64EWGoTGqjHQedG0ku(8f1D3D3D3D3D3HOG(om3saEQdrb9DyULa8UzhIc6zYKCLcr5vu3D3D3D3DqnuurD3D3D3D3Hy5bGOG(om3saEUg6quqFhMBjaVd2ranwbzm3saWahjabUslKVtHduf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedG3H5wcWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW7WClb4SGAuaPZkd1CCpyqNwqOKqvIbGOG(om3sa85lQ7U7U7GAOOU7oOgkkZlARWn3CIKaE7WClbalqnkG0tDEqu3DhuZC2aHEQtjtaye1D3XclNnG6u4ibiWvAHoT4W70I3kfQNBnNijGxerD3DgZTeamWrcqGR0c9uVJ8UzNd4H37MDoGhEmI6U7zSXUXlmWrcqGR0cHPepf0ZMM52PN6SYneagrD3DwqnkG0tDwjvUuOsnacOXcJJ0ku(I6U7U7oelpacOXkiOM5Sbc57u4avrD3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqptMKBquE9uNiGgpf0ZKj5geL3aiTcLVOU7U7U7U7qS8aquqptMKBquE9Cn0HOGEMmj3GO86PPo88DkCGQOU7U7U7U7U7ERWn3CikOVdZTeGN6eb04PG(om3sabqAfkFrf1D3D3D3D3D3Hy5bqanwbZyJDJxyGJeGaxPfctjEkONnnZTt(ofoqvu3D3D3D3D3D3D3BfU5Mdrb9mzsUsHO86PoranEkONjtYvkeL3aiTcLVOU7U7U7U7U7U7UNtiZWguzmyiGZeImuigahg4aKahaRqiuh3dg0PfekjuLyaikONjtYvkeLx(EWGoUdrb9iou1rAfQJ7bd60ccLeQsmasRq5Zxu3D3D3D3D3D3D3HOG(om3saEQdrb9DyULa8UzhIc6zYKCLcr5vu3D3D3D3D3Dhudfvu3D3D3D3D3DhILhaIc67WClb45AOdrb9DyULa8oyhb0yfKXClbadCKae4kTq(ofoqvu3D3D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKo2zeeC(I6U7U7U7U7U7U7ojGMqwDkzcqu3D3D3D3D3Dhudf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZeKaEDgZTeGZcQrbKoRmuZX9GbDAbHscvjgaIc67WClbWNVOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbWzcsaVoJ5wcWzb1OasNvgQ54EWGoTGqjHQedarb9mzsUbr5LpFrD3D3Dhudf1D3b1qrzErBfU5M3XjaeA8uqpSa1Oasp15brD3DqnZzde6PoLmbGru3DNfuJci9uNvsLlfQudGaASW4iTcLVOU7U7UdXYdGaASccQzoBGq(ofoqvu3D3D3D39Cczg2GkJbdbCMqKHcXa4mzcaH6quqVZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqpm8InWtDIaA8uqpm8IniasRq5lQ7U7U7U7ERWn3CikONDcNuEXg4PoranEkONDcNuEXgeaPvO8f1D3D3D3DhILhaIc6HHxSbEUg6quqp7eoP8InWZ1qhIc6HHxSbEAQJZKjaekUNRHoef0ZoHtkVyd80uhNjtaiuC(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaotMaqOoef07SGAuaPJDgbbNVOU7U7U7U7U7ojGMqwDkzcqu3D3D3D3Dqnuu3D3D3D39Cczg2GkJbdbCMqKHcXa4mzcaH6quqVZcQrbKoRmeIJ7bd60ccLeQsmaef0ddVyd47bd64oUhmOtliusOkXaquqp7eoP8InGpFrD3D3Dhudf1D3b1qrzErBfU5MZTLrqycqMewGAuaPN68GOU7oOM5Sbc9uNsMaWiQ7Ud1ySbdCKae4kTqp1J4GhEmI6U7DCsUbr5fg4ibiWvAHEQ3Tye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaEKBzeeNiit6SGAuaz3WrAfAe54EWGoTGqjHQedG0ku(8f1D3D3D3DVv4MBoef0ddVyd8uNiGgpf0ddVydcG0ku(I6U7U7U7U3kCZnhIc6J7oobcBgkC9uNiGgpf0h3DCce2mu4MPqLAaKwHYxu3D3D3D3DiwEaikOhgEXg4PPootj7lK4I6U7U7U7UxiDikOhgEXg4PPoEKazSlvCrD3D3D3D3lKoef0h3DCce2mu46PPoE8rOdHPdIhJBydlXhbMiU554I6U7U7U7UxiDikOpU74eiSzOW1ttD84Jqhcthepg3WggEE8rG5K4ggCrD3D3D3D3lKoef0h3DCce2mu46PPoE8rOdHPdIhJByhzgIdtzobxu3D3D3D39cPdrb9XDhNaHndfUEAQJhFe6qy6G4X4g2riUJmZj48DkCGQOU7U7U7U7U7ERWn3CikONbaJGMN6eb04PGEgamcAbqAfkFrD3D3D3D3D39wHBU5quqptMKBquE9uNiGgpf0ZKj5geL3aiTcLVOU7U7U7U7U7ERWn3CiK4UJtGWg7mNnGN65eYmSbvgdI0juRHedb0aCPb4jyCMBviAKBzeKa4y3Y8ciX5ZpAmKeoP8IniQNM6CiQOU7U7U7U7U7oelpaesC3XjqyJDMZgWZ1qhIc6zaWiO5DWocOXkiuJXgmWrcqGR0c9Cn0HOGEMmj3GO86DWocOXkyhNKBquEHbosacCLwiFNchOkQ7U7U7U7U7U7U75eYmSbvgdgc4mHidfIbWJClJG4ebzsNfuJciDSZii48f1D3D3D3D3D3D3DsanHS6uYeGOU7U7U7U7U7oOgkQ7U7U7U7oOgkQ7U7U7U7EoHmdBqLXGHaotiYqHya8i3YiiorqM0zb1OasNvgcXX9GbDAbHscvjgaIc6HHxSb89GbDCh3dg0PfekjuLyaikOpU74eiSzOWLpFrD3D3Dhudf1D3b1qrzErBfU5MN7MaKquaSa1Oasp15brD3DqnZzde6PoLmbGru3DhQXydg4ibiWvAHEQhXbp8ye1D374KCdIYlmWrcqGR0c9uVBXiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCM2nbiHOaNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOGEy4fBGN6eb04PGEy4fBqaKwHYxu3D3D3D39wHBU5quqp7eoP8InWtDIaA8uqp7eoP8IniasRq5lQ7U7U7U7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHYxu3D3D3D3DiwEaikOhgEXg45AOdrb9St4KYl2apxdDikONjtYnikVEUg6quqpm8InWttD8ixQij9zoBaCpxdDikONDcNuEXg4PPoECOWbiX9Cn0HOGEMmj3GO86DWoh8DkCGQOU7U7U7U7U7EoHmdBqLXGHaotiYqHyaCM2nbiHOaNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNPDtasikWzb1OasNvgcXX9GbDAbHscvjgaIc6HHxSb89GbDCh3dg0PfekjuLyaikONDcNuEXgW3dg0XDCpyqNwqOKqvIbGOGEMmj3GO8YNVOU7U7UdQHI6U7GAOOmVOTc3CZZKetQquaSa1Oasp15brD3DqnZzde6PoLmbGru3DVJtYnikVWahjabUsl0tDoWiQ7UZcQrbKEQZkPYLcvQbqanwyCKwHYxu3D3D3Hy5bqanwbb1mNnqiFNchOkQ7U7U7U7EoHmdBqLXGHaotiYqHyaCMssmPcrbolOgfq2nCKwHgroUhmOtliusOkXaiTcLpFrD3D3D3D3BfU5Mdrb9ri3d8uNiGgpf0hHCpiasRq5lQ7U7U7U7ERWn3CikONjtYnikVEQteqJNc6zYKCdIYBaKwHYxu3D3D3D3DiwEaikOpc5EGNRHoef0ZKj5geLxpxdDikOpc5Eqe1NPCHlaotjjMuHOaC(EUg6quqptMKBquE9oyhb0yfSJtYnikVWahjabUslKVtHduf1D3D3D3D3D3ZjKzydQmgmeWzcrgkedGZusIjvikWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbWzkjXKkef4SGAuaPZkdH44EWGoTGqjHQedarb9ri3d47bd64oUhmOtliusOkXaquqptMKBquE5Zxu3D3D3b1qrD3DqnuuMx0wHBU55kxiqL29CndlqnkG0tDEqu3DhuZC2aHEQtjtaye1D374KCdIYlmWrcqGR0c9uNdmI6U7SGAuaPN6SsQCPqLAaeqJfghPvO8f1D3D3DiwEaeqJvqqnZzdeY3PWbQI6U7U7U7UNtiZWguzmyiGZeImuigaNPvUqGk17Z1SZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqFeY9ap1jcOXtb9ri3dcG0ku(I6U7U7U7UdXYdarb9ri3d8Cn0HOG(iK7bruFMYfUa4mTYfcuPE3Z1moF(ofoqvu3D3D3D3D3DpNqMHnOYyWqaNjezOqmaotRCHavQ3NRzNfuJciDSZii48f1D3D3D3D3D3jb0eYQtjtaI6U7U7U7UdQHI6U7U7U7UNtiZWguzmyiGZeImuigaNPvUqGk17Z1SZcQrbKoRmuZX9GbDAbHscvjgaIc6JqUhWNVOU7U7UdQHI6U7GAOOmVOTc3CZjbqCXgalqnkG0tDEqu3DhuZC2aHEQtjtaye1D3zb1Oasp1zLu5sHk1aiGglmosRq5lQ7U7U7qS8aiGgRGGAMZgiKVtHduf1D3D3D3DpNqMHnOYyWqaNjezOqmaophWfcBGZcQrbKDdhPvOrKJ7bd60ccLeQsmasRq5Zxu3D3D3D39wHBU5quqFeY9ap1jcOXtb9ri3dcG0ku(I6U7U7U7UdXYdarb9ri3d8Cn0darb9ri3dIO(mLlCbW55aUqydW57fshIc6JqUher9zkx4cGddGlCvOoobGZNpFNchOkQ7U7U7U7U7UNtiZWguzmyiGZeImuigaNNd4cHnWzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW55aUqydCwqnkG0zLHAoUhmOtliusOkXaquqFeY9a(8f1D3D3Dqnuu3DhudfL5fTv4MBoNTsjmoSyNjjciZiWcuJci9uNhe1D3b1mNnqON6uYeagrD3DwqnkG0tDwjvUuOsnacOXcJJ0ku(I6U7U7oelpacOXkiOM5Sbc57u4avrD3D3D3D3ZjKzydQmgmeWzcrgkedGZtBLsOxy5SZKebKzeNfuJci7gosRqJih3dg0PfekjuLyaKwHYNVOU7U7U7U7Tc3CZHOG(iK7bEQteqJNc6JqUheaPvO8f1D3D3D3DhILhaIc6JqUh45AOdrb9ri3dIO(mLlCbWzNjjciZi4857u4avrD3D3D3D3D39Cczg2GkJbdbCMqKHcXa480wPe6fwo7mjrazgXzb1Oash7mccoFrD3D3D3D3D3DsanHS6uYeGOU7U7U7U7GAOOU7U7U7U75eYmSbvgdgc4mHidfIbW5PTsj0lSC2zsIaYmIZcQrbKoRmuZX9GbDAbHscvjgaIc6JqUhWNVOU7U7UdQHI6U7GAOOmVOIMtiZWguzmilOgfqYgqYiexGN68GOU7olOgfqI4PopiQ7U7U7elTqybQrbKye1D3D39cziGKNdqkjKCbiWcuJciXiQ7U7U79LKkfwGAuajgrD3D3DhQXydwGAuajgrD3D3DhBYclaccuPclqnkGeJOU7U7UZyULaGfOgfqIru3D3D3jsc4TdZTeaSa1OasmI6U7U7EhNaqOXtb9WcuJciXiQ7U7U7CBzeeMaKjHfOgfqIru3D3D3ZDtasikawGAuajgrD3D3DptsmPcrbWcuJciXiQ7U7U75kxiqL29CndlqnkGeJOU7U7UtcG4InawGAuajgrD3D3DNZwPeghwSZKebKzeybQrbKI6U7mpgrD3DKwHIatHHsH6PopW8ye1D3jtQEQZkPYLcvQbqanwy8wPqJVYQWxu3D3D3ranwbrAfkcmfgkfQN68aZlQ7U7U7SkKosRqX4quqVdvDSZqKibALcn(kRcFpSiQ7U7U7U7EoHmdBqLXGHaotiYqHyaCgkfQJ0k0iYX9GbDAbHscvjgaPvO89GbDCh3dg0HOG(GquqpFrD3D3D3D3ranwrezsfwGAuajsaKwHYxu3D3D3b1qrf1D3D39Cczg2GkJbdbCMqKHcXa4SBfkItlERuOrKJ7bd6mNranwbrAfkcmfgkfkFrD3D3DpNqMHnOYyWqaNjezOqmacOXkisRqrGPWqPq5lQ7U7U7SkKoKN6mNranwbrAfkcmfgkfkgNdmowC4HfrD3D3D3D3BfU5MJ0kup1ranwbrAfkcmfgkfAmOOI6U7U7U7UNtiZWguzmyiGZeImuigaNHsHcvj6iTc1darbKzAHKFe54EWGosRq5lQ7U7U7U7EyHHsHgaPvO8f1D3D3Dqnuu3DhudXiQ7UtMuHfOgfqI4PoRKkxkuPgab0yHXrAfkFrD3D3DNvH07eJZcQrbKou1XodrIeab0yfKfuJcir47HfrD3D3D3D3Hy5byb1OaYiIfuJcidG0ku(8DkCGQOU7U7U7U7U7owy5DhIiCuNtGtSucDAbJdvrOGCOxy5rSjiuphgcvj6iTc1Pfp7niekgphg65Qx4mIfWL6DbrHZHQSkEMZsc1PWbCikO3Z1qNchWrAfQZTuPzOkuLOdrDKIdYCHZzb1OasNBU6HqCPzkWPWbCikO3R5EGNRHoe3svu3D3D3D3D3Dhb0yfePvOiWuyOuOXyoJaAScI0kueykmukuN5Y5iQN6iTcvu3D3D3D3D3DNeqtiRI6U7U7U7UdQHI6U7U7oOgkQ7UdQHIY8IkAoHmdBqLXGHaotiYqHON6SsQCPqLAGcNrS8f1D3Hy5bcbCMqKVtHduf1D3D3DSjHQ0ambGcdupiaF(I6U7U7ECbyeMsPHa74kPh7afoJy5lQ7U7U7ytcvPb4lQ7UdQHI6U7qS8AH6rcK7KPjKze2zgbHbJmVDMDkCGQhjqUtMMqMryNzeegmY82z2tDEG5Dqnuu3DhILxlupsGCNmnHmJWoZiimyK5TZCqgkeDkCGQhjqUtMMqMryNzeegmY82zoidfIEQZdmVdQHI6U7qS8AH6rcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukuNchO6rcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukup15bM3b1qrD39ibYDY0eYmc7mJGWGrM3oZbzOqmittOfgkfAmMZrcK7KPjKze2zgbHbJmVDMdYqHyqMMqlmukuN5Y5iQN6foJyffudfv0Cczg2GkJbr6eQ1q8uNhe1D3XcRiLjjHkKI6U7X4iQN68GOU7U7UJfwmLSVq6S7eQ1qe1D3D39y4rUvOWHh1tD4XiQ7U7U7XWzaKPWbiXJ6Po8ye1D3D39y4Dpd1WJ6Po8ye1D3D39y48yltb4r9uNdmI6U7U7EmC2WbbAHi4r9uNdmI6U7U7owyfjqg7s1z3juRHiQ7U7U7XWJtfGfZY1qqOZuyfGGh1tDoWiQ7U7U7XWHPRcwmlxdbHotHvacEup15aJOU7U7UhdNNw6cbpQN6CGru3D3D3JHZejve8OEQZbgrD3D3DpgECQaSywUgcc9UN5cqWJ6Pohye1D3D39y4W0vblMLRHGqV7zUae8OEQZbgrD3D3DpgopwAGmzpcEup15aJOU7U7UhdpovawmlxdbHo7UkKHi4r9uNdmI6U7U7EmCy6QGfZY1qqOZURczicEup15aJOU7U7UhdpszsITmeJae8OEQZbgrD3D3DpgoBAMracEup15aJOU7U7UhdhwGqOEKazSlve8OEQZbgrD3D3DpgECLjseqIGh1tDoWiQ7U7U7XWJmzbbHZsxi4r9uNdmI6U7U7Em8iLRHi4r9uhEmI6U7mpgrD3DSWIhZTCiuvu3Dpw3g1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQZbgrD3D3DpgoB4GaTqe8OEQZbgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6CGru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup15aJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6CGru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6WJru3D3D3JHdlqiupsGm2LkcEup1HhJOU7U7UhdpUYejcirWJ6Po8ye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyXSKkfqkQ7UhJNe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uNdmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6CGru3D3D3JHZtlDHGh1tDoWiQ7U7U7XWzIKkcEup15aJOU7U7UhdpovawmlxdbHE3ZCbi4r9uhEmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6CGru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQZbgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyXZletaI6U7X6OOEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup1HhJOU7U7UhdNbqMchGepQN6CGru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tD4XiQ7U7U7XWzdheOfIGh1tD4XiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup15aJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6CGru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uhEmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uhEmI6U7U7EmCybcH6rcKXUurWJ6Pohye1D3D39y4XvMirajcEup15aJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tD4XiQ7UZ8ye1D3XclEKecGqf1D3JfXe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Pohye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Po8ye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup1HhJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQZbgrD3DMhJOU7owyfxGmfoN5Kker4OI6U7X4zJ6PopiQ7U7U7yHftj7lKo7oHAnerD3D3DpgEKBfkC4r9uhEmI6U7U7EmCgazkCas8OEQdpgrD3D3DpgE3Zqn8OEQdpgrD3D3Dpgop2YuaEup15aJOU7U7UhdNnCqGwicEup1HhJOU7U7UJfwrcKXUuD2Dc1AiI6U7U7Em84ubyXSCnee6mfwbi4r9uNdmI6U7U7EmCy6QGfZY1qqOZuyfGGh1tDoWiQ7U7U7XW5PLUqWJ6Po8ye1D3D39y4mrsfbpQN6WJru3D3D3JHhNkalMLRHGqV7zUae8OEQZbgrD3D3DpgomDvWIz5Aii07EMlabpQN6CGru3D3D3JHZJLgit2JGh1tDoWiQ7U7U7XWJtfGfZY1qqOZURczicEup15aJOU7U7UhdhMUkyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWJuMKyldXiabpQN6WJru3D3D3JHZMMzeGGh1tD4XiQ7U7U7XWHfieQhjqg7sfbpQN6WJru3D3D3JHhxzIebKi4r9uhEmI6U7U7Em8itwqq4S0fcEup1HhJOU7U7Uhdps5AicEup1HhJOU7oZJru3DhlSydxUpxf1D3JfXh1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uhEmI6U7U7Em8UNHA4r9uNdmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQZbgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owy19mrGOU7ESiUOEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup15aJOU7U7UhdNbqMchGepQN6WJru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tD4XiQ7U7U7XWzdheOfIGh1tD4XiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup1HhJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6WJru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uhEmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uNdmI6U7U7EmCybcH6rcKXUurWJ6Po8ye1D3D39y4XvMirajcEup15aJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tDoWiQ7UZ8ye1D3XcRiLjBfUDkQ7UhJNjQN68GOU7U7UJfwmLSVq6S7eQ1qe1D3D39y4rUvOWHh1tDoWiQ7U7U7XWzaKPWbiXJ6Po8ye1D3D39y4Dpd1WJ6Po8ye1D3D39y48yltb4r9uhEmI6U7U7EmC2WbbAHi4r9uhEmI6U7U7owyfjqg7s1z3juRHiQ7U7U7XWJtfGfZY1qqOZuyfGGh1tD4XiQ7U7U7XWHPRcwmlxdbHotHvacEup1HhJOU7U7UhdNNw6cbpQN6WJru3D3D3JHZejve8OEQdpgrD3D3DpgECQaSywUgcc9UN5cqWJ6Po8ye1D3D39y4W0vblMLRHGqV7zUae8OEQdpgrD3D3DpgopwAGmzpcEup1HhJOU7U7UhdpovawmlxdbHo7UkKHi4r9uNdmI6U7U7EmCy6QGfZY1qqOZURczicEup1HhJOU7U7UhdpszsITmeJae8OEQdpgrD3D3DpgoBAMracEup15aJOU7U7UhdhwGqOEKazSlve8OEQdpgrD3D3DpgECLjseqIGh1tDoWiQ7U7U7XWJmzbbHZsxi4r9uhEmI6U7U7Em8iLRHi4r9uNdmI6U7mpgrD3DSWQ7LANI6U7X4a(OEQZdI6U7U7owyXuY(cPZUtOwdru3D3D3JHh5wHchEup1HhJOU7U7UhdNbqMchGepQN6CGru3D3D3JH39mudpQN6WJru3D3D3JHZJTmfGh1tDoWiQ7U7U7XWzdheOfIGh1tDoWiQ7U7U7yHvKazSlvNDNqTgIOU7U7UhdpovawmlxdbHotHvacEup15aJOU7U7UhdhMUkyXSCnee6mfwbi4r9uhEmI6U7U7EmCEAPle8OEQdpgrD3D3DpgotKurWJ6Po8ye1D3D39y4XPcWIz5Aii07EMlabpQN6CGru3D3D3JHdtxfSywUgcc9UN5cqWJ6Po8ye1D3D39y48yPbYK9i4r9uNdmI6U7U7Em84ubyXSCnee6S7QqgIGh1tDoWiQ7U7U7XWHPRcwmlxdbHo7UkKHi4r9uhEmI6U7U7Em8iLjj2YqmcqWJ6Po8ye1D3D39y4SPzgbi4r9uNdmI6U7U7EmCybcH6rcKXUurWJ6Pohye1D3D39y4XvMirajcEup1HhJOU7U7UhdpYKfeeolDHGh1tD4XiQ7U7U7XWJuUgIGh1tD4XiQ7UZ8ye1D3XcR4Imbkuu3DpghCe1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uNdmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Po8ye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uNdmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6CGru3D3D3JHhNkalMLRHGqNDxfYqe8OEQdpgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup1HhJOU7U7UhdNnnZiabpQN6CGru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Pohye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOU7owyfxG(s1zwsLcif1D3JXr3g1tDEqu3D3D3XclMs2xiD2Dc1AiI6U7U7Em8i3ku4WJ6Po8ye1D3D39y4maYu4aK4r9uNdmI6U7U7Em8UNHA4r9uhEmI6U7U7EmCESLPa8OEQdpgrD3D3DpgoB4GaTqe8OEQdpgrD3D3DhlSIeiJDP6S7eQ1qe1D3D39y4XPcWIz5Aii0zkScqWJ6Pohye1D3D39y4W0vblMLRHGqNPWkabpQN6WJru3D3D3JHZtlDHGh1tD4XiQ7U7U7XWzIKkcEup1HhJOU7U7UhdpovawmlxdbHE3ZCbi4r9uhEmI6U7U7EmCy6QGfZY1qqO39mxacEup1HhJOU7U7UhdNhlnqMShbpQN6WJru3D3D3JHhNkalMLRHGqNDxfYqe8OEQZbgrD3D3DpgomDvWIz5Aii0z3vHmebpQN6WJru3D3D3JHhPmjXwgIracEup15aJOU7U7UhdNnnZiabpQN6WJru3D3D3JHdlqiupsGm2LkcEup15aJOU7U7UhdpUYejcirWJ6Po8ye1D3D39y4rMSGGWzPle8OEQdpgrD3D3DpgEKY1qe8OEQdpgrD3DMhJOmVO5eYmSbvgd2Xj5geL3ixAfsep15brD3DCMdo62oIllw8mH8mH8mH4yCSWY5XsHuu3DhN5GJUTJ4YIflwSyXIfoghlS8ix67lvrD3DCMdo62oIllwCayXcE4XX4yHLZCRYT03xQI6U74mhC0TDexwSGh(iE4ddXX4yHLZZZKarD3DCMdo62oIllwzEcpjIbaWX4yHLh3ydXvu3DhN5GJUTJ4YIflwrCWdp84yCSWYzaqeudZK8kQ7UJZCWr32rCzXcWZYLBeh84yCSWYzkjfIvMlvu3DhN5GJUTJ4YIf8WZLllw4yCSWYzgaISvk9IY8eOeOeytjHiseqsagcSP8InGaBUji0spb2iWv6kovcSrGR0vCQmLlfIrab2agbvkcb2meN4adS55XntJRoicS5MGql9WMYl2acSrOzkib7WmfqGnx4aC7KaBaJGkLaBUji0spb2yHLZqCIdmWMNh3mnU6GeLvsLlfQuda4lQ7U3kCZnVvk04RSkEQZeakdLcn(kRsa(I6U75eYmSbvgdYcQrbKSbKmcXferKj1aTsHgFLvHVOU7EKBfeadLcnaFrb1qrjWMBccT0dB4GcbeytH6bHeOeytbWkLdESavPeyZZJNjygmey3k5qcWqGnn3avA3sagcS7tAuicWqGsGsGnn3avkbyiWUpPrHiadbkbkb2HqSybXnPr5Lamey3N0OqeGHaLaLaBYmxabyiWUpPrHiadbkbkb2SYCPqLkbyiWUpPrHiadbkbkb2KLgGamey3N0OqeGHaLaLaBOkrYsc2eGHa7(KgfIameOeOeyJnJytZnqLsagcS7tAuicWqGsGsGsGnuLciR5whcirGkvcrGNqGDnPhgsiIebKieIaheytcicvQWWl2acSH4wQeytbWkLdcS7avcSPayLYrKlvAgQ2dQucSJdZnyyhFCf3eydfsGnttOfgkfkdfIqCjWMcGvkhWsPsjWoUHvSjbiiDL5LaBULslS0vfgaSsJ7AMZgiKaNeydvHOWgHMjPGqcrGdcS5wkTWsxvcCsGsicDlbyiWMcGvkhWsPszd1nbieHUfEcSZCPqmcGHeIiraz3lHacraloGNaBOkfqwZToeqIavQeIapHa7CfQptHkvcWqGncntsjadb2uEXgqGn2KaeaLaBSjbiakb2inOqqdWIsGsGnlOkecCeGHaBkVydiWgBsacGsGn2KaeaLaBKguiGZcLw6jqjqjWMscrKiGKameyt5fBab2CtqOLEcS5MGql9WgoOqab2uOEqib2CtqOLEcSXclpYmJPWa7UZMjGndXjoWikRKkxkuPgi3Ai0mfGGXby8EeI8f1D3Hy5b6rigr9zkx4cG3bvsCsaxaeJaVvkuC(8DkCGQOU7U7UNtiZWguzmyU1qOzkaXt9CRHqZuaIOU7U7UNtiZWguzmyizUR45wQb6riYxu3D3D3jb0eYQtjtaI6U7GAOOGAOOeyZfoa3ojWgWiOsjWgWiOsriWoYmJPWa7UZMjGndXjoWqGn3eeAPh2uEXgqGncntbjyhMPacSrGR0vCQeyJaxPR4uzkxkeJacucSPayLYbpwGQucS55XZemdgcSBLCibyiWMMBGkTBjadb29jnkebyiqjqjWMMBGkLamey3N0OqeGHaLaLa7qiwSG4M0O8sagcS7tAuicWqGsGsGnzMlGamey3N0OqeGHaLaLaBwzUuOsLamey3N0OqeGHaLaLaBSzeBAUbQucWqGDFsJcragcucucSHQejljytagcS7tAuicWqGsGsGnzPbiadb29jnkebyiqjqjqjWoZLcvQieGHaBeAMKsagcSdlWUhGGKjciWjbkb2qvikbyiWoSaBUji0spbEkb2CtqOLEcSBfU5MdXTuJlieSBzEJReYmfQu9uNNiQO5eYmSbvgdseqJNc6JVYQ4PoRKkxkuPgOhHiFrD39wHBU51CpWt9EeIruFMYfUa4W1bIfiiZf)oquC(EH0XXf1D3BfU5M3Xj5kfIYRN69ieJO(mLlCbWH1aDGqMl(489cPZHOI6U7Tc3CZH4wQEQZbpPJ6i4Hxu3DhILhjqUtMMqMryNzeegmY82zoy8uqFKZCHdeRM7brDkCGQOU7U7UdXTu9upsGCNmnHmJWoZiimyK5TZCW4PG(iN5chiwn3dIgeIBPkQ7UdQHI6U7Tc3CZ5wAfsp17rigr9zkx4cGZLfRaDGU6aD1b6Qd0vhORoqx8X57fshNflwSyXcxurD3DsanHS61CpaJdXTuX4DCsUsHO8IX5wAfsrb1qrfnNqMHnOYyWqYCxXZTu9uNvsLlfQud0JqKVOU7ERWn38AUhGXH4wQy8oojxPquEX4ClTcPN65eYmSbvgdseqJNc6JVYQeOhHiFrf1D3BfU5MZQq2NPuqyeY9ap1Xzo4OB7iUSyH7bd6ClTcPhmOJhd3dg0R5EGhmOJhL5GJUTJiDyf3dg074KCLcr5vu3DpNqMHnOYyWCRHqZuasmMZ5eYmSbvgdMBneAMcqCMlNJOEQZdI6U7U7ocCLU8uNsMaWiQ7U7U7CHlxjcc9uNsMaWiQ7U7U7q1qaS6PotaOWa1dcWhJOU7U7UtcqkKup1PKjamIkQ7U7U7qClvp1H4wQye1D3D39AUh4PoRczFMsbHri3dWiQOU7U7UJnzHijabbgEXg4PoofQheIJru3D3D3bWk2qKzkuPcdupWtDMaqHbQheGVZC5qCl14ccb7wM34kHmtHkvmI6U7U7EyczMcvQEQdXTuJlieSBzEJReYmfQuXiQ7U7U75eAHzqHap1PKjamI6U7mVOGAibkbkb2KaIqLkm8InGaBiULkb2ClLwyPRkmayLg31mNnqibojWMcGvkhey3bQeytbWkLdyPuPeyh3Wk2KaeKUY8sGnuib2mnHwyOuOXZTujWMcGvkhrUuPzOApOsjWoom3GHD8XvCtGDieseBsLlfIrab25wJa7AspmKqejcirieboiWgQcrHncntsbHeIaheyZTuAHLUQe4KaLaLaBgjebo6OULdcucea \ No newline at end of file +dqvKpcGiK8iuukUeiOAuOsNcvzvqLu8kuuQMfuClOIDjqddu1Xqv1YGkjptiv10esLRHIsSnHufFdeumoHqY5abLwNqeVdueUNiTpHqQ)bvsPoikQwiOi9qHuMOqKUiuj2iOO(iuPAKOQ0jfswjKEjOiYmHsUjOs2PqWpbbgkkkokuPSuHq8ubmvq0vrrP0wbb5RcrDwuusVveMlujv3veTxu4VGkgS6WsAXOu9yuXKf0Lb2mk5ZqvJgu60s1Qfsv61GqZwk3gK2Te)wudhk1Xfc1YrQNdX0rCDHA7OiFhuy8Gk15rPSEqruVhvfnFOsk5(OQW(PzWpdizeOYasgegbqyeaxfKzji)4kC4Nzbh8qyJUONOho8dHLraOmceYiqidizeiSJe9gx4q6mbyeO2AmcWgeWIfcGWicmlrF4zeOYH0zcajDhpEanCLdbmIao8dpJaiyx5ayeb4zeab0yXm5EHWiaKqaZGfUaZqYiqT1XxyealCbMHKraybD8WsyaZrhZc8r)Oh45hcdeMOlIIzj64p6IogSWj6ywyeOLRHmGKrasTbkeCfdizeaACJ0zajdcdcJaKAduimGKraOXnsNbKmimimcqNBagqYia04gPZasgegegbc7Sy15e3iSXasgbGg3iDgqYGWGWiaDLdGbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbWMjSj1gOqyajJaqJBKodizqyqyeGvLdPNlmGKraOXnsNbKmimimceJaGdNwfbHb7mimculDOvcGbmLraAa(EUajBydyeiKTsfANdE6Cm2mcaGBSRLqqidykJae6oE8aAgqYiacSzyabfgbqGnddiOWCoKotagegb6HmcW8ysgRCMWiqVqa0LAdcbOr65cJie9zeOedfs6oE8aAegrGFgbGBiGfleaHreWbct0bpJa9sNahesLMaczeb(zeag9qcSmG5OJzb(OF0d88dHbct0frXSeD8hDrhdw4eDrpmimcWHbKmIa)mGKracaUj8dZ5cjqhMmGreWvWZiqyhj6nUWH0zcWiqT1yeOYH0zcajDhpEanCLdbmIao8dpJavoKEUGWasgbqivAcdizeimdhOaeKkEad2zqyeOx6egqYiqygoCIrizOmGPmcWjgHKHYiqlZP28qa7X49uNvTHaeTZYlzIhzqfImpMUIeOYei0jWckEKbviY8y6ksGktGqp15t(WbLqr7S8sM4rguHiZJPRibQmbcdgn2Gy1jWckEKbviY8y6ksGktGWGrJniw9uNp5dhucfTZYlzIhzqfImpMUIeOYeimy0ydI1GrraqJwLdSaNalO4rguHiZJPRibQmbcdgn2Gynyuea0Ov5alWtD(KpCqjuurXbhhAfIaN9woh6zwosLgpGUI4S6ncGwuCWX7ea0iuHcW4Dcakw9ceX4DcakUfxBDcBy8obaflatGggVtaqHREblatGggVtaqHKnSby8obanqm7qYg2amDcaAasLdeJwoUqW4DcakUeXXDSXkZbJ3jaOqcGBsmnaJJaAnMHUZbGX50QiirfPyCKy250QiirfPyC27LqizdBagaCJDLturkghbqIksX4DKOrxzr6f8reqfpOq8uh3bKOiaOrvyL5I0YeEIIdoElNjrXjxW4TCMeHkuagVLZeClUwiDcByCoX00Gch2IksX4TCMGBX1wNWggVL5arqigVJGBXaesueaumEehdqirfPy8ocZ5q6mb8uh3beSYzsGwMevHvMlslt4jko44y1lq0rYqbKouaIhMbiEjtCyKPHOOTmNAZzfx4q65IJhqIIaGIvVarUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asueauS6fi6uEWGojJqO7f8CrAzcpEI6U7DwoxKwM4PPEP345eybfNgqIPlEP3Cqjuu3DNgqIPloUdiyLZKaTmbREbICrAzcprbLqrBzo1MZkUWH0ZfhpGefbancvOaUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asuea0iuHcCkpyqNKri09cEUiTmHhprD39olNlslt80uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiCXvyCChqWkNjbAzsufwzUiTmHhprbLqrBzo1MZkUWH0ZfhpGefbafs2WgWfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGcjBydCkpyqNKri09cEUiTmHhprD39olNlslt80uV0B8CcSGItdiX0fV0BoOekQ7U3YCQnVtaqXQxGON64bKOiaOy1lqKlslt4jQ7U3z5C7eauS6fi6PPEP345eybfNgqIPlEP3Cqjuu3DNgqIPlocOb4q4g9GXXDajkcaAufwzUDcakw9ce5Xtuqju0wMtT5SIlCi9CXXdirraqdeZoHnSbCrAzcprD39AmDfoGctbdbShJhRmEUu4bKOiaObIzNWg2aNYdg0jzecDVGNlslt4Xtu3DVZY5I0Yepn1l9gpNalO40asmDXl9MdkHI6U7TmNAZ7eauS6fi6PoEajkcakw9ce5I0YeEI6U7Dwo3obafREbIEAQx6nEobwqXPbKy6Ix6nhucf1D3PbKy6IJaAaoeUqyW44oGefbanQcRm3obafREbI84jkOekAlZP2CwXfoKEU44bKOiaOybyc04I0YeEI6U71y6kCafMcgcypgpwz8CPWdirraqXcWeO5uEWGojJqO7f8CrAzcpEI6U7DwoxKwM4PPEP345eybfNgqIPlEP3Cqjuu3DVL5uBENaGIvVarp1XdirraqXQxGixKwMWtu3DVZY52jaOy1lq0tt9sVXZjWckonGetx8sV5GsOOU7onGetxCeqdWHWn6W44oGefbanQcRm3obafREbI84jkOekAlZP2CwXfoKEU44bKOiaOqOAlgWfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGcHQTyGt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD39wMtT5Dcakw9ce9uhpGefbafREbICrAzcprD39olNBNaGIvVarpn1l9gpNalO40asmDXl9MdkHI6U70asmDXranahcx(5hJJ7asuea0OkSYC7eauS6fiYJNOGsOOTmNAZzfx4q65IJhqIIaGIBX1cPtyJlslt4jQ7UxJPRWbuykyiG9y8yLXZLcpGefbaf3IRfsNWMt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD3DAajMU4iGgGdHB0hJJ7acw5mjqltIQWkZfPLj84jkOekAlZP2CwXfoKEU44bKOiaO4wCT1jSXfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGIBX1wNWMt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD39wMtT5Dcakw9ce9uhpGefbafREbICrAzcprD39olNBNaGIvVarpn1l9gpNalO40asmDXl9MdkHI6U70asmDXranahc3Opgh3bKOiaOrvyL52jaOy1lqKhprbLqrBzo1MZkUWH0ZfhpGefbafxI44o2yL5uj9CHlslt4jQ7UxJPRWbuykyiG9y8yLXZLcpGefbafxI44o2yL5uj9CXP8GbDsgHq3l45I0YeE8e1D37SCUiTmXtt9sVXZjWckonGetx8sV5GsOOU7ElZP28obafREbIEQJhqIIaGIvVarUiTmHNOU7ENLZTtaqXQxGONM6LEJNtGfuCAajMU4LEZbLqrD3DAajMU4iGgGdHlewmoUdirraqJQWkZTtaqXQxGipEIckHI2YCQnNvCHdPNloEajkcaAuCYfUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asuea0O4KloLhmOtYie6EbpxKwMWJNOU7ENLZfPLjEAQx6nEobwqXPbKy6Ix6nhucf1D3Bzo1M3jaOy1lq0tD8asueauS6fiYfPLj8e1D37SCUDcakw9ce90uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiC5hEmoUdirraqJQWkZTtaqXQxGipEIckHI2YCQnNvCHdPNloEabM2lHqYg2aUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8acmTxcHKnSboLhmOtYie6EbpxKwMWJNOU7ENLZfPLjEAQx6nEobwqXPbKy6Ix6nhucf1D3Bzo1M3jaOy1lq0tD8asueauS6fiYfPLj8e1D37SCUDcakw9ce90uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiC5p6W44oGefbanQcRm3obafREbI845zAhErbLqrfv0wMtT5HzSYzIN6SIlCi9CHlslt4jQ7UxJPRWbuykyiG9y8yLXZLcRCM0l4DKwMejoLhmOtYie6EbpxKwMWJNOU7ow5mjqlt4I0YeEIkQ7U3YCQnVtaqJItU4PoEajkcaAuCYfUiTmHNNPD(J(rx0bp8I6U7TmNAZ7ea0iuHc8uhpGefbancvOaUiTmHNNPDkMTfiwYWOqjQ7U3jaOrOcf4PENaGgHkuqKGhjMDUu46fkmofgNINOU7ElZP28obaf3IRToHnp1XdirraqXT4ARtyJlslt45zAhErf1D37S8sM4rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirNaGgHkuqsNalOiQ7U7U7rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirNaGgHkuqsp15trD3D3D3D37CYfp17ea0O4Klye1D3D3D3DpIJRToHnp17eauClU26e2WiQ7U7U78HOU7oOekkOekQOI2YCQnhFUfcZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUu4EUf6S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqJqfkWtD8asuea0iuHc4I0YeEI6U7U7U7UJdoEuo(yacI3jEygG4LmXrIXg7mnXHGiI3lonapaUX1wu3D3D3D3DCWX7ea0iuHcIeOvchy5sbHhYS7C5I75wipCTW1IBGEJjanpCTW1IB0YyJnGMhpkEI6U7U7U7U3z5C7ea0sfkWRLqVtaqJqfkisGwjCGLlfeEiZUJ75wifppt7DcaAeQqbrc0kHdSCPGWdz29a9gtaAkEEM27ea0iuHcIeOvchy5sbHhYS7rlJn2aAkE8CcSGIOU7U7U7U7U7EnMUchqHPGHa2JXJvgpxkCp3cDw9gbq7yxrqO4jQ7U7U7U7U7UtdiX0fNqhde1D3D3D3Dhucf1D3D3D3DVgtxHdOWuWqa7X4XkJNlfUNBHoREJaODw1EZP8GbDsgHq3l452jaOrOcfWJNOU7U7UdkHI6U7GsOO8HOTmNAZZ0Ha6icajhtZbGaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUureasoMMdWz1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGgHkuGN64bKOiaOrOcfWfPLj8e1D3D3D3DVZY52jaOrOcf41sO3jaOrOcfejqReoWYLccOdb0EebGKJP5aqO4XZjWckI6U7U7U7U7U71y6kCafMcgcypgpwz8CPGa6qaTtdqYX0CaoREJaODSRiiu8e1D3D3D3D3D3PbKy6ItOJbI6U7U7U7UdkHI6U7U7U7UxJPRWbuykyiG9y8yLXZLccOdb0onajhtZb4S6ncG2zv7nNYdg0jzecDVGNBNaGgHkuapEI6U7U7oOekQ7UdkHIYhI2YCQnhAoUqG5EJaO9uNpf1D3bLk7nqON6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxk4khxioREJaOHjCKwMejoLhmOtYie6EbpxKwMWJNOU7U7U7U7TmNAZ7eauizdBGN64bKOiaOqYg2aUiTmHNOU7U7U7U7Dwo3obafs2Wg41sO3jaOqYg2apn1PGRCCHqXZjWckI6U7U7U7U7U71y6kCafMcgcypgpwz8CPGRCCH4S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxk4khxioREJaODw1EZP8GbDsgHq3l452jaOqYg2aE8e1D3D3Dqjuu3DhucfLpeTL5uBEVXudM7ncG2tD(uu3DhuQS3aHEQtOJbye1D37nMAqclnab2Cl0t9iQik4XiQ7UZQ3iaAp1zfx4q65cxeqJfghPLj8e1D3D39olNlcOXkiOuzVbc55eybfrD3D3D3D3RX0v4akmfmeWEmESY45sffwm1Cw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOybyc08uhpGefbaflatGgxKwMWtu3D3D3D39olNBNaGIfGjqZRLqVtaqXcWeO5r0ocOXkyVXudsyPbiWMBH8CcSGIOU7U7U7U7U7EnMUchqHPGHa2JXJvgpxQOiaOEdWeO5S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxQOiaOEdWeO5S6ncG2zv7nNYdg0jzecDVGNBNaGIfGjqJhprD3D3Dhucf1D3bLqr5drBzo1MJnDMfabPNlWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7oSaA2r8uNqhdWiQ7UZPLjW6PoRAdbGru3Dptd8uNvTHaWiQ7U3avcSaAp1zvBiamI6U7CYzi2l49uNqhdWiQ7U3liCO7yt65IN6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkMHoZcGG0ZfNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcakKSHnWtD8asueauizdBaxKwMWtu3D3D3D39wMtT5DcaAGy2jSHnWtD8asuea0aXStydBaxKwMWtu3D3D3D39olNBNaGcjByd8Aj07eauizdBGNM6uqsxdbiqS3Au8CcSGIOU7U7U7U7U7ENLZTtaqdeZoHnSbETe6C7ea0aXStydBGNM6u8fqZoLxlHocOXkiSaA2r4jQ7U7U7U7U7UNPDUDcaAGy2jSHnWttDkSavcSaAkVwcDeqJvWgOsGfqZtu3D3D3D3D3Dpt7C7ea0aXStydBGNM6urRLjWs51sOJaAScYPLjWYtu3D3D3D3D3Dpt7C7ea0aXStydBGNM6uqanGYRLqhb0yfmtd4jQ7U7U7U7U7UNPDUDcaAGy2jSHnWttDQOLZqSxWt51sOJaAScYjNHyVGNNOU7U7U7U7U7EM252jaObIzNWg2apn1PIQGWHUJnPNluETe6iGgRG9cch6o2KEUWJNtGfue1D3D3D3D3D3D39AmDfoGctbdbShJhRmEUumdDMfabPNloREJaODSRiiu8e1D3D3D3D3D3D3DAajMU4e6yGOU7U7U7U7U7oOekQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxkMHoZcGG0ZfNvVra0oRAV5uEWGojJqO7f8C7eauizdBappyqNYP8GbDsgHq3l452jaObIzNWg2aE8e1D3D3Dqjuu3DhucfLpeTL5uBot1wmaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3zQ2Ibqclnab2Cl0t9OpZIJRX5hE4DCno)WdpgrD39k2y3ydsyPbiWMBHqMJIaGgGu5arp1zvBiamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUuqOAlg4S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqHq1wmWtD8asueauiuTfd4I0YeEIkQ7U7U7U7ENLZfb0yfSIn2n2GewAacS5wiK5OiaObivoqKNtGfue1D3D3D3D3D3Bzo1M3jaO4wCTq6e28uhpGefbaf3IRfsNWgxKwMWtu3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfKWcOboaU7ieNYdg0jzecDVGNBNaGIBX1cPtyJNhmOt5DcakI3losltCkpyqNKri09cEUiTmHhprD3D3D3D3D39obafcvBXap17eauiuTfdCCnENaGIBX1cPtytu3D3D3D3DqjuurD3D3D3D37SCUDcakeQ2IbETe6DcakeQ2IbEeTJaAScYuTfdGewAacS5wipNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLccvBXaNvVra0o2veekEI6U7U7U7U7U70asmDXj0XarD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sbHQTyGZQ3iaANvT3CkpyqNKri09cEUDcakeQ2Ib84jQ7U7U7GsOOU7oOekkFiAlZP2C80a2Gq1wmaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3XbhpaG4eyPbiWMBHoj7W7KS3YzIxBnhpnGnerD3DMQTyaKWsdqGn3c9up6CCno)WdVJRX5hE4XiQ7UxXg7gBqclnab2CleYCuea0aKkhi6PoRAdbGru3DNvVra0EQZkUWH0ZfUiGglmoslt4jQ7U7U7DwoxeqJvqqPYEdeYZjWckI6U7U7U7UxJPRWbuykyiG9y8yLXZLc3PbS5mvBXaNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcakUfxBDcBEQJhqIIaGIBX1wNWgxKwMWtu3D3D3D39olNBNaGIBX1wNWMxlHENaGIBX1wNWMNM6WZZjWckI6U7U7U7U7U7TmNAZ7eauiuTfd8uhpGefbafcvBXaUiTmHNOI6U7U7U7U7U7DwoxeqJvWk2y3ydsyPbiWMBHqMJIaGgGu5arEobwqru3D3D3D3D3D3D3Bzo1M3jaO4wCTq6e28uhpGefbaf3IRfsNWgxKwMWtu3D3D3D3D3D3D3RX0v4akmfmeWEmESY45sbjSaAGdG7ocXP8GbDsgHq3l452jaO4wCTq6e245bd6uENaGI49IJ0YeNYdg0jzecDVGNlslt4Xtu3D3D3D3D3D3D37eauiuTfd8uVtaqHq1wmWX14DcakUfxlKoHnrD3D3D3D3D3DqjuurD3D3D3D3D39olNBNaGcHQTyGxlHENaGcHQTyGhr7iGgRGmvBXaiHLgGaBUfYZjWckI6U7U7U7U7U7U7EnMUchqHPGHa2JXJvgpxkCNgWMZuTfdCw9gbq7yxrqO4jQ7U7U7U7U7U7U70asmDXj0XarD3D3D3D3D3Dqjuu3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfUtdyZzQ2IboREJaODw1EZP8GbDsgHq3l452jaOqOAlgWJNOU7U7U7U7GsOOU7U7U7U71y6kCafMcgcypgpwz8CPWDAaBot1wmWz1BeaTZQ2BoLhmOtYie6Ebp3obaf3IRToHnE8e1D3D3Dqjuu3DhucfLpeTL5uBEehdqirraqH5EJaO9uNpf1D3bLk7nqON6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkClgGq8oba1z1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGcjByd8uhpGefbafs2WgWfPLj8e1D3D3D3DVL5uBENaGgiMDcByd8uhpGefbanqm7e2WgWfPLj8e1D3D3D3DVZY52jaOqYg2aVwc9obanqm7e2Wg41sO3jaOqYg2apn1PWTyacHYRLqVtaqdeZoHnSbEAQtHBXaecfpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLc3IbieVtaqDw9gbq7yxrqO4jQ7U7U7U7U7UtdiX0fNqhde1D3D3D3Dhucf1D3D3D3DVgtxHdOWuWqa7X4XkJNlfUfdqiENaG6S6ncG2zv7ioLhmOtYie6Ebp3obafs2WgWZdg0PCkpyqNKri09cEUDcaAGy2jSHnGhprD3D3Dhucf1D3bLqr5drBzo1MZPvrqWDqLgM7ncG2tD(uu3DhuQS3aHEQtOJbye1D37nMAqclnab2Cl0t9ik4HhJOU7EehxBDcBqclnab2Cl0tDCfgrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOqYg2ap1XdirraqHKnSbCrAzcprD3D3D3D3Bzo1M3jaO4seh3XgRmhp1XdirraqXLioUJnwzovspx4I0YeEI6U7U7U7U3z5C7eauizdBGNM6umNgAMMsu3D3D3D39mT3jaOqYg2apn1PImOIDUqjQ7U7U7U7EM27eauCjIJ7yJvMJNM6urfbieKmRmdUahyoQiG74seHsu3D3D3D39mT3jaO4seh3XgRmhpn1PIkcqiizwzgCboqgrIkcWKWfiPe1D3D3D3Dpt7DcakUeXXDSXkZXttDQOIaecsMvMbxGt0WccyomjkrD3D3D3D3Z0ENaGIlrCChBSYC80uNkQiaHGKzLzWf4ebCjAWKO45eybfrD3D3D3D3D39wMtT5DcakwaManp1XdirraqXcWeOXfPLj8e1D3D3D3D3D3Bzo1M3jaO4wCT1jS5PoEajkcakUfxBDcBCrAzcprD3D3D3D3D39wMtT5DeCjIJ7yJDL9gWt9AmDfoGctbrGyV1qsGaAaoeUrFmoZ2sNeTwfbHlf2TkBaAkE8sMajMDcByds6PPo)IkQ7U7U7U7U7U3z5C7i4seh3Xg7k7nGxlHENaGIfGjqZJODeqJvWEJPgKWsdqGn3c9Aj07eauClU26e28iAhb0yfmIJRToHniHLgGaBUfYZjWckI6U7U7U7U7U7U7EnMUchqHPGHa2JXJvgpxQO1QiioEqL2z1BeaTJDfbHINOU7U7U7U7U7U7UtdiX0fNqhde1D3D3D3D3D3bLqrD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sfTwfbXXdQ0oREJaODw1oIt5bd6KmcHUxWZTtaqHKnSb88GbDkNYdg0jzecDVGNBNaGIlrCChBSYC4Xtu3D3D3bLqrD3Dqjuu(q0wMtT5vyYa6obaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U79gtniHLgGaBUf6PEef8WJru3DpIJRToHniHLgGaBUf6PoUcJOU7oREJaO9uNvCHdPNlCranwyCKwMWtu3D3D37SCUiGgRGGsL9giKNtGfue1D3D3D3DVgtxHdOWuWqa7X4XkJNlfZHjdO7eGZQ3iaAychPLjrIt5bd6KmcHUxWZfPLj84jQ7U7U7U7ElZP28obafs2Wg4PoEajkcakKSHnGlslt4jQ7U7U7U7ElZP28obanqm7e2Wg4PoEajkcaAGy2jSHnGlslt4jQ7U7U7U7ElZP28obaf3IRToHnp1XdirraqXT4ARtyJlslt4jQ7U7U7U7ENLZTtaqHKnSbETe6DcaAGy2jSHnWRLqVtaqXT4ARtyZRLqVtaqHKnSbEAQtfTCbjgAL9gGYRLqVtaqdeZoHnSbEAQtbbeyb0uETe6DcakUfxBDcBEeTZppNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI5WKb0DcWz1BeaTJDfbHINOU7U7U7U7U7onGetxCcDmqu3D3D3D3Dqjuu3D3D3D39AmDfoGctbdbShJhRmEUumhMmGUtaoREJaODw1oIt5bd6KmcHUxWZTtaqHKnSb88GbDkNYdg0jzecDVGNBNaGgiMDcByd45bd6uoLhmOtYie6Ebp3obaf3IRToHnE8e1D3D3Dqjuu3DhucfLpeTL5uBELgFCPtaWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7EehxBDcBqclnab2Cl0tD(XiQ7UZQ3iaAp1zfx4q65cxeqJfghPLj8e1D3D39olNlcOXkiOuzVbc55eybfrD3D3D3D3RX0v4akmfmeWEmESY45sXCA8XLob4S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqJqfkWtD8asuea0iuHc4I0YeEI6U7U7U7U3YCQnVtaqXT4ARtyZtD8asueauClU26e24I0YeEI6U7U7U7U3z5C7ea0iuHc8Aj07eauClU26e28Aj07ea0iuHcIeOvchy5sXCA8XLobqXZRLqVtaqXT4ARtyZJODeqJvWioU26e2GewAacS5wipNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI504JlDcWz1BeaTJDfbHINOU7U7U7U7U7onGetxCcDmqu3D3D3D3Dqjuu3D3D3D39AmDfoGctbdbShJhRmEUumNgFCPtaoREJaODw1oIt5bd6KmcHUxWZTtaqJqfkGNhmOt5uEWGojJqO7f8C7eauClU26e24Xtu3D3D3bLqrD3Dqjuu(q0wMtT51cNoOqGRAPcZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7rCCT1jSbjS0aeyZTqp15hJOU7oREJaO9uNvCHdPNlCranwyCKwMWtu3D3D37SCUiGgRGGsL9giKNtGfue1D3D3D3DVgtxHdOWuWqa7X4XkJNlfZlC6GcXHwlvNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcaAeQqbEQJhqIIaGgHkuaxKwMWtu3D3D3D39olNBNaGgHkuGxlHENaGgHkuqKaTs4alxkMx40bfIdx1sLIhpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI5foDqH4qRLQZQ3iaAh7kccfprD3D3D3D3D3DAajMU4e6yGOU7U7U7U7GsOOU7U7U7U71y6kCafMcgcypgpwz8CPyEHthuio0AP6S6ncG2zv7nNYdg0jzecDVGNBNaGgHkuapEI6U7U7oOekQ7UdkHIYhI2YCQnNg05GnaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3z1BeaTN6SIlCi9CHlcOXcJJ0YeEI6U7U7ENLZfb0yfeuQS3aH8CcSGIOU7U7U7U71y6kCafMcgcypgpwz8CPIiaoDSboREJaOHjCKwMejoLhmOtYie6EbpxKwMWJNOU7U7U7U7TmNAZ7ea0iuHc8uhpGefbancvOaUiTmHNOU7U7U7U7Dwo3obancvOaVwcDUDcaAeQqbrc0kHdSCPIiaoDSbu88mT3jaOrOcfejqReoWYLcsahyl9iogqXJhpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLkIa40Xg4S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxQicGthBGZQ3iaANvT3CkpyqNKri09cEUDcaAeQqb84jQ7U7U7GsOOU7oOekkFiAlZP2C2B5CieWkqLgpGUIaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUuW0woh6zwEGknEaDfXz1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGgHkuGN64bKOiaOrOcfWfPLj8e1D3D3D3DVZY52jaOrOcf41sO3jaOrOcfejqReoWYLkqLgpGUIqXJNtGfue1D3D3D3D3D3RX0v4akmfmeWEmESY45sbtB5CONz5bQ04b0veNvVra0o2veekEI6U7U7U7U7U70asmDXj0XarD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sbtB5CONz5bQ04b0veNvVra0oRAV5uEWGojJqO7f8C7ea0iuHc4Xtu3D3D3bLqrD3Dqjuu(q0wMtT5SNbWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7EVXudsyPbiWMBHEQhrbp8ye1D3J44ARtydsyPbiWMBHEQZpgrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOqYg2ap1XdirraqHKnSbCrAzcprD3D3D3D3Bzo1M3jaO4seh3XgRmhp1XdirraqXLioUJnwzovspx4I0YeEI6U7U7U7U3z5C7eauizdBGNM6umNgAMMsu3D3D3D39mT3jaOqYg2apn1PImOIDUqjQ7U7U7U7EM27eauCjIJ7yJvMJNM6urfbieKmRmdUahyoQiG74seHsu3D3D3D39mT3jaO4seh3XgRmhpn1PIkcqiizwzgCboqgrIkcWKWfiPe1D3D3D3Dpt7DcakUeXXDSXkZXttDQOIaecsMvMbxGt0WccyomjkrD3D3D3D3Z0ENaGIlrCChBSYC80uNkQiaHGKzLzWf4ebCjAWKO45eybfrD3D3D3D3D39wMtT5DcakwaManp1XdirraqXcWeOXfPLj8e1D3D3D3D3D3Bzo1M3jaO4wCT1jS5PoEajkcakUfxBDcBCrAzcprD3D3D3D3D39wMtT5S3lHqYg2ap1XdiW0Ejes2WgWfPLj8evu3D3D3D3D3DVZY52jaOybyc08Aj07eauClU26e28Aj0zVxcHKnSbETe6DcakwaManpI2ranwb7nMAqclnab2Cl0RLqVtaqXT4ARtyZJODeqJvWioU26e2GewAacS5wOxlHo79siKSHnWttD(55eybfrD3D3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfmnJloREJaODSRiiu8e1D3D3D3D3D3D3DAajMU4e6yGOU7U7U7U7U7oOekQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbq7SQDeNYdg0jzecDVGNBNaGcjByd45bd6uoLhmOtYie6Ebp3obafxI44o2yL5WJNOU7U7UdkHI6U7GsOO8HOIwJPRWbuykiREJaOdaOzQZb4PoFkQ7UZQ3iaAep15trD3D3DhFUfcZ9gbqJru3D3D3Z0Ha6icajhtZbGaZ9gbqJru3D3D3HMJleyU3iaAmI6U7U7EVXudM7ncGgJOU7U7UJnDMfabPNlWCVra0ye1D3D3DMQTyam3BeangrD3D3DhpnGniuTfdG5EJaOXiQ7U7U7rCmaHefbafM7ncGgJOU7U7UZPvrqWDqLgM7ncGgJOU7U7UxHjdO7eam3BeangrD3D3DVsJpU0jayU3iaAmI6U7U7ETWPdke4QwQWCVra0ye1D3D3DAqNd2ayU3iaAmI6U7U7o7TCoecyfOsJhqxrG5EJaOf1D35dmI6U7iTmbbYmw5mXtD(KpWiQ7Uthx8uNvCHdPNlCranwy8wotIQWkZtu3D3D3ranwbrAzccKzSYzIN68jFiQ7U7U7SY0osltW4DcaQ3lo21onc3wotIQWkZZdZI6U7U7U7UxJPRWbuykyiG9y8yLXZLcRCM4iTmjsCkpyqNKri09cEUiTmHNhmOt5uEWGENaGgStaq5jQ7U7U7U7ocOXksOJlWCVra0iCrAzcprD3D3Dhucfvu3D3D3RX0v4akmfmeWEmESY45sfOLjioj7TCMejoLhmOZSbb0yfePLjiqMXkNj8e1D3D39AmDfoGctbdbShJhRmEUiGgRGiTmbbYmw5mHNOU7U7UZkt7Dp1z2GaAScI0YeeiZyLZemo)yCC43dZI6U7U7U7U3YCQnhPLjEQJaAScI0YeeiZyLZKe9KI6U7U7U7UxJPRWbuykyiG9y8yLXZLcRCM0l4DKwM4C7eaDLKP5fjoLhmOJ0YeEI6U7U7U7UhMXkNjCrAzcprD3D3Dhucf1D3bLqmI6U70XfyU3iaAep1zfx4q65cxeqJfghPLj8e1D3D3DwzAhIyCw9gbq79IJDTtJWfb0yfKvVra0i88WSOU7U7U7U7Dwoxw9gbqhjS6ncGMlslt4XZjWckI6U7U7U7U7U74GJdxD8WsC2bo(Co0jzmEVGqa1qpZYJEJriEnmSxW7iTmXjzV6TocbJxdd9AXZSh9c4qCy0jW69cRSxzphtCcSaVtaq9Aj0jWcCKwM4CYfsTx6f8EN4izhu5aRZQ3iaANtT4HDoKkb4eybENaG6LkuGxlHENtUiQ7U7U7U7U7UJaAScI0YeeiZyLZKemBqanwbrAzccKzSYzIZS78N0tDKwMiQ7U7U7U7U7UtdiX0frD3D3D3D3bLqrD3D3Dhucf1D3bLqr5drfTgtxHdOWuWqa7X4XkJ3tDwXfoKEUWnZE0lprD39olNBiG9y88CcSGIOU7U7UJnDVq4I7acKDOaU84jQ7U7U7rkGjiZ5gcCI0yOyZnZE0lprD3D3DhB6EHWLNOU7oOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXQtGfu8idQqK5X0vKavMaHbJgBqS6PoFYhoOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXAqSY4DcSGIhzqfImpMUIeOYeimy0ydI1GyLX7PoFYhoOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXAqSY4dY8ysgRCM4eybfpYGkezEmDfjqLjqyWOXgeRbXkJpiZJjzSYzIN68jF4GsOOU7EKbviY8y6ksGktGWGrJniwdIvgFqMhtYyLZKemBImOcrMhtxrcuzcegmASbXAqSY4dY8ysgRCM4m7o)j9upZE0ROGsOOIwJPRWbuykice7TgIN68POU7oo4e5knDptlQ7UNG)KEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQdpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN68Jru3D3D3tqfa2oOfIqL0tD(XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQZpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGPzyGqL0tD(XiQ7U7U7jOW94ccvsp15hJOU7U7UNGcckaC4BTeccD4QYbGqL0tD(XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD(XiQ7U7U7jOyMCduPHIqL0tD(XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uNFmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uNFmI6U7U7EcQixPX3QDMaiuj9uNFmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQZpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po)ye1D3D39eurUwcrOs6Po8ye1D35dmI6U74GdZuB1WEru3DpbUkPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD4XiQ7U7U7jOGRAVrL0tD4XiQ7U7U7jOyMwLaOs6Po)ye1D3D39eubGTdAHiuj9uNFmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN68Jru3D3D3tqbjmY4W3Ajee6mhUbiuj9uNFmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uNFmI6U7U7EckMj3avAOiuj9uNFmI6U7U7EckiOaWHV1sii0daJmDicvsp15hJOU7U7UNGcsyKXHV1sii0daJmDicvsp15hJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN6WJru3D3D3tqbZDeIhzqf7CbHkPN6WJru3D3D3tqfPv84b0iuj9uhEmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4W34cbqlQ7UNi6N0tD(uu3D3D3XbhMtdnt7bGyV1qe1D3D39eurRLjWsL0tD4XiQ7U7U7jOWcujWcOPs6Po8ye1D3D39euWvT3Os6Po)ye1D3D39eumtRsauj9uhEmI6U7U7EcQaW2bTqeQKEQdpgrD3D3DhhCImOIDU4bGyV1qe1D3D39euqqbGdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGegzC4BTeccDMd3aeQKEQZpgrD3D3DpbfmnddeQKEQZpgrD3D3DpbfUhxqOs6Po)ye1D3D39euqqbGdFRLqqOdxvoaeQKEQdpgrD3D3DpbfKWiJdFRLqqOdxvoaeQKEQdpgrD3D3DpbfZKBGknueQKEQZpgrD3D3Dpbfeua4W3Ajee6bGrMoeHkPN68Jru3D3D3tqbjmY4W3Ajee6bGrMoeHkPN68Jru3D3D3tqf5kn(wTZeaHkPN6WJru3D3D3tqfGuzcGqL0tD(XiQ7U7U7jOG5ocXJmOIDUGqL0tD(XiQ7U7U7jOI0kE8aAeQKEQZpgrD3D3Dpbv0OZiiSNHbcvsp15hJOU7U7UNGkY1sicvsp1HhJOU7oFGru3DhhCIiz8XarD39erxsp15trD3D3DhhCyon0mThaI9wdru3D3D3tqfTwMalvsp1HhJOU7U7UNGclqLalGMkPN68Jru3D3D3tqbx1EJkPN6WJru3D3D3tqXmTkbqL0tD4XiQ7U7U7jOcaBh0crOs6Po8ye1D3D3DCWjYGk25IhaI9wdru3D3D3tqbbfao8TwcbHoZHBacvsp15hJOU7U7UNGcsyKXHV1sii0zoCdqOs6Po8ye1D3D39euW0mmqOs6Po8ye1D3D39eu4ECbHkPN6WJru3D3D3tqbbfao8TwcbHoCv5aqOs6Po)ye1D3D39euqcJmo8TwcbHoCv5aqOs6Po8ye1D3D39eumtUbQ0qrOs6Po8ye1D3D39euqqbGdFRLqqOhagz6qeQKEQZpgrD3D3DpbfKWiJdFRLqqOhagz6qeQKEQdpgrD3D3DpbvKR04B1otaeQKEQdpgrD3D3DpbvasLjacvsp1HhJOU7U7UNGcM7iepYGk25ccvsp15hJOU7U7UNGksR4XdOrOs6Po)ye1D3D39eurJoJGWEggiuj9uhEmI6U7U7EcQixlHiuj9uhEmI6U78bgrD3DCWHzO7aeIOU7EcMLKEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQZpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN6WJru3D3D3tqfa2oOfIqL0tD4XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQdpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD4XiQ7U7U7jOGPzyGqL0tD4XiQ7U7U7jOW94ccvsp1HhJOU7U7UNGcckaC4BTeccD4QYbGqL0tD(XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD4XiQ7U7U7jOyMCduPHIqL0tD4XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uhEmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uhEmI6U7U7EcQixPX3QDMaiuj9uhEmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQdpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po8ye1D3D39eurUwcrOs6Po)ye1D35dmI6U74GtKcQeyDysLoEyjI6U7jIEs6PoFkQ7U7U74GdZPHMP9aqS3AiI6U7U7EcQO1YeyPs6Po8ye1D3D39euybQeyb0uj9uhEmI6U7U7Eck4Q2Buj9uhEmI6U7U7EckMPvjaQKEQZpgrD3D3Dpbvay7Gwicvsp1HhJOU7U7UJdorguXox8aqS3AiI6U7U7EckiOaWHV1sii0zoCdqOs6Po)ye1D3D39euqcJmo8TwcbHoZHBacvsp15hJOU7U7UNGcMMHbcvsp1HhJOU7U7UNGc3Jliuj9uhEmI6U7U7EckiOaWHV1sii0HRkhacvsp15hJOU7U7UNGcsyKXHV1sii0HRkhacvsp15hJOU7U7UNGIzYnqLgkcvsp15hJOU7U7UNGcckaC4BTecc9aWithIqL0tD(XiQ7U7U7jOGegzC4BTecc9aWithIqL0tD(XiQ7U7U7jOICLgFR2zcGqL0tD4XiQ7U7U7jOcqQmbqOs6Po8ye1D3D39euWChH4rguXoxqOs6Po8ye1D3D39eurAfpEancvsp1HhJOU7U7UNGkA0zee2ZWaHkPN6WJru3D3D3tqf5AjeHkPN6WJru3DNpWiQ7UJdobGTcTwe1D3taHjPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD4XiQ7U7U7jOGRAVrL0tD(XiQ7U7U7jOyMwLaOs6Po8ye1D3D39eubGTdAHiuj9uNFmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN68Jru3D3D3tqbjmY4W3Ajee6mhUbiuj9uhEmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uhEmI6U7U7EckMj3avAOiuj9uhEmI6U7U7EckiOaWHV1sii0daJmDicvsp1HhJOU7U7UNGcsyKXHV1sii0daJmDicvsp1HhJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN68Jru3D3D3tqbZDeIhzqf7CbHkPN68Jru3D3D3tqfPv84b0iuj9uNFmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4axv8arD39eruj9uNpf1D3D3DCWH50qZ0Eai2BnerD3D3Dpbv0AzcSuj9uNFmI6U7U7EckSavcSaAQKEQdpgrD3D3DpbfCv7nQKEQdpgrD3D3DpbfZ0Qeavsp1HhJOU7U7UNGkaSDqleHkPN6WJru3D3D3XbNidQyNlEai2BnerD3D3Dpbfeua4W3Ajee6mhUbiuj9uhEmI6U7U7EckiHrgh(wlHGqN5WnaHkPN6WJru3D3D3tqbtZWaHkPN6WJru3D3D3tqH7XfeQKEQdpgrD3D3Dpbfeua4W3Ajee6WvLdaHkPN6WJru3D3D3tqbjmY4W3Ajee6WvLdaHkPN6WJru3D3D3tqXm5gOsdfHkPN6WJru3D3D3tqbbfao8TwcbHEayKPdrOs6Po)ye1D3D39euqcJmo8TwcbHEayKPdrOs6Po8ye1D3D39eurUsJVv7mbqOs6Po8ye1D3D39eubivMaiuj9uNFmI6U7U7EckyUJq8idQyNliuj9uhEmI6U7U7EcQiTIhpGgHkPN68Jru3D3D3tqfn6mcc7zyGqL0tD4XiQ7U7U7jOICTeIqL0tD(XiQ7UZhye1D3XbNixPBzoquu3Dpbe2KEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQZpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN6WJru3D3D3tqfa2oOfIqL0tD4XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQdpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD4XiQ7U7U7jOGPzyGqL0tD4XiQ7U7U7jOW94ccvsp1HhJOU7U7UNGcckaC4BTeccD4QYbGqL0tD4XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD4XiQ7U7U7jOyMCduPHIqL0tD4XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uNFmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uhEmI6U7U7EcQixPX3QDMaiuj9uhEmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQdpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po8ye1D3D39eurUwcrOs6Po)ye1D35dmI6U74GdCLlquu3Dpb)WN0tD(uu3D3D3XbhMtdnt7bGyV1qe1D3D39eurRLjWsL0tD4XiQ7U7U7jOWcujWcOPs6Po)ye1D3D39euWvT3Os6Po8ye1D3D39eumtRsauj9uNFmI6U7U7EcQaW2bTqeQKEQZpgrD3D3DhhCImOIDU4bGyV1qe1D3D39euqqbGdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGegzC4BTeccDMd3aeQKEQdpgrD3D3DpbfmnddeQKEQdpgrD3D3DpbfUhxqOs6Po8ye1D3D39euqqbGdFRLqqOdxvoaeQKEQZpgrD3D3DpbfKWiJdFRLqqOdxvoaeQKEQdpgrD3D3DpbfZKBGknueQKEQZpgrD3D3Dpbfeua4W3Ajee6bGrMoeHkPN68Jru3D3D3tqbjmY4W3Ajee6bGrMoeHkPN6WJru3D3D3tqf5kn(wTZeaHkPN6WJru3D3D3tqfGuzcGqL0tD(XiQ7U7U7jOG5ocXJmOIDUGqL0tD(XiQ7U7U7jOI0kE8aAeQKEQdpgrD3D3Dpbv0OZiiSNHbcvsp1HhJOU7U7UNGkY1sicvsp1HhJOU7oFGru3DhhCIu64EOOU7Ec(5pPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD(XiQ7U7U7jOGRAVrL0tD4XiQ7U7U7jOyMwLaOs6Po8ye1D3D39eubGTdAHiuj9uhEmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN6WJru3D3D3tqbjmY4W3Ajee6mhUbiuj9uhEmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uhEmI6U7U7EckMj3avAOiuj9uNFmI6U7U7EckiOaWHV1sii0daJmDicvsp1HhJOU7U7UNGcsyKXHV1sii0daJmDicvsp1HhJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN68Jru3D3D3tqbZDeIhzqf7CbHkPN68Jru3D3D3tqfPv84b0iuj9uNFmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4ePaO5IZ34cbqlQ7UNGFCvsp15trD3D3DhhCyon0mThaI9wdru3D3D3tqfTwMalvsp1HhJOU7U7UNGclqLalGMkPN68Jru3D3D3tqbx1EJkPN6WJru3D3D3tqXmTkbqL0tD4XiQ7U7U7jOcaBh0crOs6Po8ye1D3D3DCWjYGk25IhaI9wdru3D3D3tqbbfao8TwcbHoZHBacvsp15hJOU7U7UNGcsyKXHV1sii0zoCdqOs6Po8ye1D3D39euW0mmqOs6Po8ye1D3D39eu4ECbHkPN6WJru3D3D3tqbbfao8TwcbHoCv5aqOs6Po8ye1D3D39euqcJmo8TwcbHoCv5aqOs6Po8ye1D3D39eumtUbQ0qrOs6Po8ye1D3D39euqqbGdFRLqqOhagz6qeQKEQZpgrD3D3DpbfKWiJdFRLqqOhagz6qeQKEQdpgrD3D3DpbvKR04B1otaeQKEQZpgrD3D3DpbvasLjacvsp1HhJOU7U7UNGcM7iepYGk25ccvsp15hJOU7U7UNGksR4XdOrOs6Po8ye1D3D39eurJoJGWEggiuj9uhEmI6U7U7EcQixlHiuj9uhEmI6U78bgr5drRX0v4akmfmIJRToHTOLBzAep15trD3DkCD(XvrhhwSGWgcHnecBifghhCCMjNPf1D3PW15hxfDCyXIflwSyXIcJJdoE0YqHMlI6U7u468JRIooSyXpGfl4HNcJJdooZ2cNmuO5IOU7ofUo)4QOJdlwWdpeg4ddPW44GJhrQ0arD3DkCD(XvrhhwSQr)OpZcaqHXXbhhxWUZru3DNcxNFCv0XHflwSIOGhE4PW44GJJfapOewPztu3DNcxNFCv0XHflq0dhoruWtHXXbhN50KoRkhIOU7ofUo)4QOJdlwWdphoSyrHXXbhNVGoDlNHkkFWGWGWiaHUJhpGMbKmcqydBaJaCIrizOmcGaBggqqHraeyZWackmNdPZeGraoXiKmu4qydBaJaiKkbeJDyLayeGdSaoqKraatGcHraoXiKmugbWbhhliacGeoreCH5rkZQOSIlCi9CHlGNOU7ElZP28wotIQWk7PoUdiyLZKOkSYC5jQ7UxJPRWbuykiREJaOdaOzQZbej0XfUTCMevHvMNOU7E0Azeaw5mHlprbLqrzeaWeOqqyealiacGeoreCH5rkZkJaCIrizOWb2EiGrashkiKbHracaUj8Zm5EHWiqejkCNVqYiqlxdzajJaKAdui4kgqYia04gPZasgegegbi1gOqyajJaqJBKodizqyqyeiSZIvNtCJWgdizeaACJ0zajdcdcJa0voagqYia04gPZasgegegbyv5q65cdizeaACJ0zajdcdcJa05gGbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbWMjSj1gOqyajJaqJBKodizqyqyqyeOxia6sTbHa0i9CHreI(mcuIHcjDhpEancJiWpJa0a89Cbs2WgWiqNtUWiaba3e(zeacVWiaba3e(JwUqQ9cuqHWiaeWSfYarfP4cJa9qgbyEmjJvotWkJVZHracaUj8dZ5cHraCbUXMgGGaJkBmcWjNBHzyuGea3eCPuzVbczWoJaCY5wyggfgSZGWic4kgqYiaba3e(H5CHeOdtgWic4k4zeOYH0zcajDhpEanCLdbmIao8dpJa9cbqxQnieGgPNlmIq0NrGAPdTs65cdizeaHuPjmGKraSPbiacJaiTEiObyryqyeGvV0rGLbKmcqydBaJaytdqaegbWMgGaimcG06Ha6oEyjmimimcqO74XdOzajJae2WgWiaNyesgkJaCIrizOWb2EiGrashkiKraatGcbHrGOXxMdjCGRa4oCWccGaizeGtmcjdLraCWXJgFzoKWbUcG7WbliacGuuwXfoKEUWT2AiKkbGGXbyCOi45jQ7U3z5CHIGpsGwjCGLlfZAo2PbCaDMaElNju845eybfrD3D3DVgtxHdOWuWARHqQeaIN61wdHujaerD3D3DVgtxHdOWuWq6kmIItUWfkcEEI6U7U7onGetxCcDmqu3DhucffucfLraoWc4argbambkegb4eJqYqHdHnSbmcGqQeqm2HvcGraeyZWackmcGaBggqqH5CiDMamimcqaWnHFMj3legbIirH78fsgbA5AidizeGuBGcbxXasgbGg3iDgqYGWGWiaP2afcdizeaACJ0zajdcdcJaHDwS6CIBe2yajJaqJBKodizqyqyeGUYbWasgbGg3iDgqYGWGWiaRkhspxyajJaqJBKodizqyqyeaBMWMuBGcHbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbOZnadizeaACJ0zajdcdcdcJavoKEUGWasgbqivAcdizeimdhOaeKkEad2zqyeOx6egqYiqygoCIrizOmGPmcWjgHKHYiqlZP28oNCjs7iy3QSfPX0vspx8up6lQO1y6kCafMcIhqIIaGgvHv2tDwXfoKEUWfkcEEI6U7TmNAZlvOap1HIGpsGwjCGLlfSq4j4gKzNheEskEEM2POe1D3Bzo1MhXX1cPtyZtDOi4JeOvchy5sb3CHWdz25rXZZ0o)IkQ7U3YCQnVZjx8uN)OF0fDWdVOU7ENLhzqfImpMUIeOYeimy0ydI1GrraqJwLdSGeLkuqsNalOiQ7U7U7Do5IN6rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirPcfKmyNtUiQ7UdkHI6U7TmNAZ5KBzAp1HIGpsGwjCGLlfhwS4cHddiCyaHddiCyaHddiCyWJINNPDkwSyXIflkrf1D3PbKy6IxQqby8oNCbJhXX1cPtydJZj3Y0IckHIkAnMUchqHPGH0vyefNCXtDwXfoKEUWfkcEEI6U7TmNAZlvOamENtUGXJ44AH0jSHX5KBzAp1RX0v4akmfepGefbanQcRmxOi45jQOU7ElZP2CwzAOvcbegHkuGN6u468JRIooSyr5bd6CYTmThmOtLGYdg0lvOapyqNkjUo)4QOJ2HBkpyqpIJRfsNWMOU7EnMUchqHPG1wdHujaKemBQX0v4akmfS2AiKkbG4m7o)j9uNpf1D3D3DeyZWWtDcDmaJOU7U7UZb2Abpi0tDcDmaJOU7U7U3lHa42tDChqGSdfWLhgrD3D3DNgGKPjEQtOJbyevu3D3D37CYfp17CYfmI6U7U7EPcf4PoRmn0kHacJqfkaJOI6U7U7o20z80aeeizdBGN6uKouqifgrD3D3Dha3y3PRKEUazhkWtDChqGSdfWLNZS7Do5sK2rWUvzlsJPRKEUGru3D3D3dJPRKEU4PENtUePDeSBv2I0y6kPNlye1D3D39AmjZ3EiWtDcDmaJOU7oFikOeYGWGWianaFpxGKnSbmc05KlmcWjNBHzyuGea3eCPuzVbczWoJaeaCt4Nrai8cJaeaCt4hMZfcJa4cCJnnabbgv2yeOhYiaZJjzSYzsuCYfgbia4MWF0YfsTxGckegbGaMTqgiQifxyeiSJe9gx4q6mbyeO2AmcuIHcjDhpEancJiWpJa9sNahesLMaczeb(zeGto3cZWOWGDgegegbyIre4p6Wv8ZGWGba \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 282bc44..09584c5 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -71,6 +71,13 @@ local function getItemIcon(slot) if (itemLink == nil) then return nil end return select(10, GetItemInfo(itemLink)) end +local function getBindType(slot) + aura_env.debugLog("getBindType " .. tostring(slot)) + if (slot == nil) then return nil end + local itemLink = getItemLink(slot) + if (itemLink == nil) then return nil end + return select(14, GetItemInfo(itemLink)) or 0 +end local doLoot = function(slot) @@ -250,7 +257,7 @@ local classGearFilter = { qualityThreshold = 2, filter = function(self, slot) if (self.enabled) then - aura_env.debugLog("Class gear filter; slot: " .. tostring(slot)) + aura_env.debugLog("BoE filter; slot: " .. tostring(slot)) local itemType = getItemType(slot) local itemEquipLoc = getItemEquipLocation(slot) if (itemType == "Armor" @@ -349,6 +356,34 @@ local bloodOfSargerasFilter = { end end } +local boeFilter = { + enabled = true, + ilvlThreshold = 800, + qualityThreshold = 1, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("BoE filter; slot: " .. tostring(slot)) + local itemType = getItemType(slot) + local itemEquipLoc = getItemEquipLocation(slot) + if (itemType == "Armor" + or itemType == "Weapon" + or itemEquipLoc == "INVTYPE_FINGER" + or itemEquipLoc == "INVTYPE_TRINKET" + or itemEquipLoc == "INVTYPE_CLOAK" + or itemEquipLoc == "INVTYPE_NECK") then + local itemLevel = getItemLevel(slot) + local itemQuality = getItemQuality(slot) + local bindType = getBindType(slot) + + if (itemLevel and itemQuality and bindType and itemLevel > self.ilvlThreshold and itemQuality > self.qualityThreshold and bindType == 1) then + aura_env.debugLog("BoE filter pass") + return true + end + end + aura_env.debugLog("BoE filter fais " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) + end + end +} aura_env.filterService = { filters = { @@ -365,7 +400,8 @@ aura_env.filterService = { arguniteFilter, ancientManaFilter, reicpeFilter, - bloodOfSargerasFilter + bloodOfSargerasFilter, + boeFilter }, slotsToLoot = {}, run = function(self, lootInfo) From ea5269617bd6711611e69fa94222b9ced3007c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Sun, 3 Mar 2024 13:48:29 +0100 Subject: [PATCH 31/44] Add new Lua files and implement functions for various features --- LegionWA/AutoLoot/Init.lua | 35 +++++++--- LegionWA/AutoVendor/Event.lua | 18 ++--- LegionWA/CDs/Color.lua | 20 ++++++ LegionWA/CDs/Event.lua | 4 ++ LegionWA/CDs/Init.lua | 100 ++++++++++++++++++++++++++++ LegionWA/CooldownAlert/Init.lua | 20 +++--- LegionWA/DebuffAlert/Event.lua | 28 ++++++++ LegionWA/HealerRaidDanger/color.lua | 5 ++ LegionWA/HealerRaidDanger/init.lua | 29 ++++++++ LegionWA/HealerRaidDanger/tsu.lua | 22 ++++++ 10 files changed, 254 insertions(+), 27 deletions(-) create mode 100644 LegionWA/CDs/Color.lua create mode 100644 LegionWA/CDs/Event.lua create mode 100644 LegionWA/CDs/Init.lua create mode 100644 LegionWA/DebuffAlert/Event.lua create mode 100644 LegionWA/HealerRaidDanger/color.lua create mode 100644 LegionWA/HealerRaidDanger/init.lua create mode 100644 LegionWA/HealerRaidDanger/tsu.lua diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 09584c5..a2b74a1 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -144,7 +144,7 @@ local mountFilter = { } local ilvlFilter = { enabled = true, - ilvlThreshold = 880, + ilvlThreshold = 700, filter = function(self, slot) if (self.enabled) then aura_env.debugLog("ILvl filter; slot: " .. tostring(slot)) @@ -160,11 +160,12 @@ local ilvlFilter = { local professionFilter = { enabled = true, herbs = true, - cloth = false, + cloth = true, ore = false, leather = false, cooking = true, inscription = true, + enchanting = true, filter = function(self, slot) if (self.enabled) then aura_env.debugLog("Profession filter; slot: " .. tostring(slot)) @@ -176,7 +177,8 @@ local professionFilter = { or (itemSubtype == "Cloth" and self.cloth) or (itemSubtype == "Ore" and self.ore) or (itemSubtype == "Cooking" and self.cooking) - or (itemSubtype == "Inscription" and self.inscription)) then + or (itemSubtype == "Inscription" and self.inscription) + or (itemSubtype == "Enchanting" and self.enchanting)) then aura_env.debugLog("Profession filter pass") return true end @@ -247,7 +249,7 @@ local questItemFilter = { aura_env.debugLog("Quest item filter pass") return true end - aura_env.debugLog("Quest item filter fais " .. tostring(itemType) .. " " .. tostring(itemSubtype)) + aura_env.debugLog("Quest item filter fails " .. tostring(itemType) .. " " .. tostring(itemSubtype)) end end } @@ -275,7 +277,7 @@ local classGearFilter = { return true end end - aura_env.debugLog("Class gear filter fais " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) + aura_env.debugLog("Class gear filter fails " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) end end } @@ -293,7 +295,7 @@ local azeriteFilter = { aura_env.debugLog("Azerite filter pass") return true end - aura_env.debugLog("Azerite filter fais " .. tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) + aura_env.debugLog("Azerite filter fails " .. tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) end end } @@ -309,7 +311,7 @@ local arguniteFilter = { aura_env.debugLog("Argunite filter pass") return true end - aura_env.debugLog("Argunite filter fais " .. tostring(itemName) .. " " .. tostring(itemQuality)) + aura_env.debugLog("Argunite filter failed " .. tostring(itemName) .. " " .. tostring(itemQuality)) end end } @@ -356,6 +358,20 @@ local bloodOfSargerasFilter = { end end } +local bloodhunerQuarryFilter = { + enabled = true, + filter = function(self, slot) + if (self.enabled) then + aura_env.debugLog("Bloodhunter's Quarry filter; slot: " .. tostring(slot)) + local itemName = getItemName(slot) + if (itemName and itemName:match("Bloodhunter")) then + aura_env.debugLog("Bloodhunter's Quarry filter pass") + return true + end + aura_env.debugLog("Bloodhunter's Quarry filter fail " .. tostring(itemName)) + end + end +} local boeFilter = { enabled = true, ilvlThreshold = 800, @@ -380,7 +396,7 @@ local boeFilter = { return true end end - aura_env.debugLog("BoE filter fais " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) + aura_env.debugLog("BoE filter fails " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) end end } @@ -401,7 +417,8 @@ aura_env.filterService = { ancientManaFilter, reicpeFilter, bloodOfSargerasFilter, - boeFilter + boeFilter, + bloodhunerQuarryFilter, }, slotsToLoot = {}, run = function(self, lootInfo) diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index b2c0651..4b3c44c 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -1,13 +1,15 @@ -- MERCHANT_SHOW function(allstates, e) - aura_env.allstates = allstates - - if CanMerchantRepair() == true then RepairAllItems() end - - for container = 0, 4 do - for slot = 1, GetContainerNumSlots(container) do - aura_env.filterService:run(container, slot) + if (GetMerchantNumItems() > 0) then + aura_env.allstates = allstates + + if CanMerchantRepair() == true then RepairAllItems() end + + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + aura_env.filterService:run(container, slot) + end end + return true end - return true end diff --git a/LegionWA/CDs/Color.lua b/LegionWA/CDs/Color.lua new file mode 100644 index 0000000..071212a --- /dev/null +++ b/LegionWA/CDs/Color.lua @@ -0,0 +1,20 @@ +function(progress, r1, g1, b1, a1, r2, g2, b2, a2) + -- if aura_env.state.IsActive then + -- ActionButton_ShowOverlayGlow(aura_env.region.icon) + -- else + -- ActionButton_HideOverlayGlow(aura_env.region.icon) + -- end + + if aura_env.state.IsActive then + aura_env.region.icon:SetDesaturated(false) + return r1, g1, b1, a1 + end + + if aura_env.IsOnCooldown then + aura_env.region.icon:SetDesaturated(true) + return r1, g1, b1, a1 + end + + aura_env.region.icon:SetDesaturated(false) + return r2, g2, b2, 0.6 +end \ No newline at end of file diff --git a/LegionWA/CDs/Event.lua b/LegionWA/CDs/Event.lua new file mode 100644 index 0000000..cf458e9 --- /dev/null +++ b/LegionWA/CDs/Event.lua @@ -0,0 +1,4 @@ +function(allstates) + aura_env.HandleEvent(allstates) + return true +end \ No newline at end of file diff --git a/LegionWA/CDs/Init.lua b/LegionWA/CDs/Init.lua new file mode 100644 index 0000000..d910c5c --- /dev/null +++ b/LegionWA/CDs/Init.lua @@ -0,0 +1,100 @@ +local CooldownType = { + New = function(self) + local o = {} + setmetatable(o, self) + self.__index = self + return o + end, +} + +local NullType = CooldownType:New() +NullType.GetActiveInfo = function(self) + return false, 0, 0 +end +local TotemType = CooldownType:New() +TotemType.GetActiveInfo = function(self) + for i = 1, 4 do + local present, name, start, duration = GetTotemInfo(i) + if present and name == self.name then + return true, start, duration + end + end + return false, 0, 0 +end + +local Cooldown = { + New = function(self, type, spellid, keybind) + local o = { + ["type"] = type, + ["spellid"] = spellid, + ["name"] = GetSpellInfo(spellid), + ["icon"] = GetSpellTexture(spellid), + ["keybind"] = keybind, + } + setmetatable(o, self) + self.__index = self + return o + end, + + GetCooldownInfo = function(self) + local start, duration = GetSpellCooldown(self.spellid) + return start > 0 and duration > aura_env.gcdThreshold, start, duration + end, + + GetActiveInfo = function(self) + return self.type:GetActiveInfo() + end +} + +aura_env.cooldowns = { + [5394] = Cooldown:New(TotemType, 5394, "C"), -- Healing Stream Totem + [2484] = Cooldown:New(TotemType, 2484, "SY"), -- Earthbind Totem + [8143] = Cooldown:New(TotemType, 8143, "S5"), -- Tremor Totem + [8177] = Cooldown:New(TotemType, 8177, "5"), -- Grounding Totem + [108273] = Cooldown:New(TotemType, 108273, "S4"), -- Windwalk Totem + [108270] = Cooldown:New(TotemType, 108270, "SF"), -- Stone Bulwark Totem +} +aura_env.gcdThreshold = 1.5 + +aura_env.Update = function(allstates, cd) + local state = allstates[cd.spellid] or {} + + state.IsOnCooldown = cd:GetCooldownInfo() + state.IsActive = cd:GetActiveInfo() + state.Keybind = cd.keybind + + if state.IsOnCooldown and not state.IsActive then + local _, start, duration = cd:GetCooldownInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + elseif state.IsOnCooldown and state.IsActive then + local _, start, duration = cd:GetActiveInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + end + + state.changed = true + state.show = true + state.name = cd.name + state.icon = cd.icon + state.spellid = cd.spellid + allstates[cd.spellid] = state +end + +aura_env.UpdateAll = function(allstates) + for _, v in pairs(aura_env.cooldowns) do + aura_env.Update(allstates, v) + end +end + +aura_env.HandleEvent = function(allstates) + -- TODO: Handle events better + -- On cooldown begin -> trigger update on relevant spell + -- On totem die -> same + -- On buff remove + -- On debuff remove + -- On... Whatever else might happen + aura_env.UpdateAll(allstates) +end diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua index 4af7bba..343c0e8 100644 --- a/LegionWA/CooldownAlert/Init.lua +++ b/LegionWA/CooldownAlert/Init.lua @@ -16,15 +16,15 @@ aura_env.trackedSpells = { local iconDisplayDuration = 0.4 local gcdDuration = 1.5 -aura_env.workData = {} +aura_env.cache = {} for k, spellId in pairs(aura_env.trackedSpells) do - aura_env.workData[spellId] = { + aura_env.cache[spellId] = { ready = true, hasCharges = false, } if GetSpellCharges(spellId) then - aura_env.workData[spellId].hasCharges = true - aura_env.workData[spellId].charges = select(1, GetSpellCharges(spellId)) + aura_env.cache[spellId].hasCharges = true + aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) end end @@ -32,21 +32,21 @@ aura_env.processEvent = function(allstates) for k, spellId in pairs(aura_env.trackedSpells) do -- Handle spells with charges local isReady - if (aura_env.workData[spellId].hasCharges) then + if (aura_env.cache[spellId].hasCharges) then local charges = select(1, GetSpellCharges(spellId)) - if (charges > aura_env.workData[spellId].charges) then + if (charges > aura_env.cache[spellId].charges) then isReady = true - aura_env.workData[spellId].charges = charges + aura_env.cache[spellId].charges = charges else isReady = false - aura_env.workData[spellId].charges = charges + aura_env.cache[spellId].charges = charges end else isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration end - if (not aura_env.workData[spellId].ready and isReady) then + if (not aura_env.cache[spellId].ready and isReady) then local icon = select(3, GetSpellInfo(spellId)) allstates[spellId] = { show = true, @@ -63,6 +63,6 @@ aura_env.processEvent = function(allstates) } end - aura_env.workData[spellId].ready = isReady + aura_env.cache[spellId].ready = isReady end end \ No newline at end of file diff --git a/LegionWA/DebuffAlert/Event.lua b/LegionWA/DebuffAlert/Event.lua new file mode 100644 index 0000000..eae0cde --- /dev/null +++ b/LegionWA/DebuffAlert/Event.lua @@ -0,0 +1,28 @@ +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local iconDisplayDuration = 0.5 + + local se = select(2, ...) + if (se ~= "SPELL_AURA_APPLIED") then return end + local target = select(9, ...) + if (target ~= UnitName("player")) then return end + local auraType = select(15, ...) + if (auraType ~= "DEBUFF") then return end + local spellId = select(12, ...) + print(select(3, GetSpellInfo(spellId))) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = select(3, GetSpellInfo(spellId)), + name = select(13, ...), + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + return true +end \ No newline at end of file diff --git a/LegionWA/HealerRaidDanger/color.lua b/LegionWA/HealerRaidDanger/color.lua new file mode 100644 index 0000000..0270cc4 --- /dev/null +++ b/LegionWA/HealerRaidDanger/color.lua @@ -0,0 +1,5 @@ +-- DevTools_Dump(aura_env.region) +-- aura_env.region:SetParent(aura_env.state.frame) +aura_env.region:ClearAllPoints() +aura_env.region:SetPoint("TOPLEFT", aura_env.state.frame.AuraWatch, "TOPLEFT", 0, 0) +aura_env.region:Show() diff --git a/LegionWA/HealerRaidDanger/init.lua b/LegionWA/HealerRaidDanger/init.lua new file mode 100644 index 0000000..21ccc19 --- /dev/null +++ b/LegionWA/HealerRaidDanger/init.lua @@ -0,0 +1,29 @@ +local raidFrames = ElvUF_Raid +local group1, group2, group3, group4, group5, group6 = raidFrames:GetChildren() +local groups = { group1, group2, group3, group4, group5, group6 } +aura_env.players = {} +for _, group in ipairs(groups) do + local playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 = group:GetChildren() + local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 } + + for _, player in ipairs(playerFrames) do + if player.Name:IsVisible() then + aura_env.players[#aura_env.players + 1] = player + end + end +end + +local specs = { + -- We can't get unit spec.......... + -- Best we can do is class + -- That fucking sucks +} + +aura_env.Player = { + new = function(self, player) + setmetatable({}, self) + self.frame = nil + self.danger = 0 + return self + end, +} diff --git a/LegionWA/HealerRaidDanger/tsu.lua b/LegionWA/HealerRaidDanger/tsu.lua new file mode 100644 index 0000000..e41db79 --- /dev/null +++ b/LegionWA/HealerRaidDanger/tsu.lua @@ -0,0 +1,22 @@ +-- TSU +function(allstates, e) + if aura_env.players == nil then + aura_env.players = {} + end + + for _,player in ipairs(aura_env.players) do + allstates[player.Name:GetText()] = { + show = true, + changed = true, + name = 0.13, + frame = player, + icon = player.RaidIcon, + progressType = "static", + value = 1, + total = 1, + autoHide = true, + resort = true, + } + end + return true +end \ No newline at end of file From 47c0a5bf54fa9db9c497553025541b832864b64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Sun, 3 Mar 2024 16:19:26 +0100 Subject: [PATCH 32/44] Rework auto loot --- LegionWA/AutoLoot/Event.lua | 3 +- LegionWA/AutoLoot/Init.lua | 735 ++++++++++++++++------------------ LegionWA/AutoVendor/Event.lua | 2 +- 3 files changed, 347 insertions(+), 393 deletions(-) diff --git a/LegionWA/AutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua index ccb687c..f0c1216 100644 --- a/LegionWA/AutoLoot/Event.lua +++ b/LegionWA/AutoLoot/Event.lua @@ -1,6 +1,7 @@ -- LOOT_READY function(e) local lootInfo = GetLootInfo() - aura_env.filterService:run(lootInfo) + print(aura_env.filterService) + aura_env.FilterService.Run(lootInfo) CloseLoot() end diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index a2b74a1..fa84c91 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -3,85 +3,86 @@ if not WeakAurasSaved then WeakAurasSaved = {} end if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end --- make blood of sargeras filter --- itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType,itemStackCount, itemEquipLoc, itemTexture, sellPrice, classID, subclassID, bindType,expacID, setID, isCraftingReagent = GetItemInfo(slot) --- lootIcon, lootName, lootQuantity, currencyID, lootQuality, locked, isQuestItem, questID, isActive = GetLootSlotInfo(slot) --- Link sometimes does not work +---@param slot number +---@return string local function getItemLink(slot) - aura_env.debugLog("getItemLink " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return "" end return GetLootSlotLink(slot) end +---@param slot number +---@return string local function getItemName(slot) - aura_env.debugLog("getItemName " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return "" end return select(2, GetLootSlotInfo(slot)) end +---@param slot number +---@return string local function getItemType(slot) - aura_env.debugLog("getItemType " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return "" end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(6, GetItemInfo(itemLink)) end +---@param slot number +---@return string local function getItemSubtype(slot) - aura_env.debugLog("getItemSubtype " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return "" end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(7, GetItemInfo(itemLink)) end +---@param slot number +---@return number local function getItemLevel(slot) - aura_env.debugLog("getItemLevel " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return 0 end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(4, GetItemInfo(itemLink)) end +---The vendor price in copper, or 0 for items that cannot be sold +---@param slot number +---@return number local function getItemValue(slot) - aura_env.debugLog("getItemValue " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return 0 end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(11, GetItemInfo(itemLink)) end +---@param slot number +---@return number local function getItemQuantity(slot) - aura_env.debugLog("getItemQuantity " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return 0 end return select(3, GetLootSlotInfo(slot)) end +---@param slot number +---@return Enum.ItemQuality local function getItemQuality(slot) - aura_env.debugLog("getItemQuality " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return Enum.ItemQuality.Poor end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(3, GetItemInfo(itemLink)) end +---@param slot number +---@return string local function getItemEquipLocation(slot) - aura_env.debugLog("getItemEquipLocation " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return "" end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(9, GetItemInfo(itemLink)) end +---@param slot number +---@return number local function getItemIcon(slot) - aura_env.debugLog("getItemIcon " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return 0 end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end return select(10, GetItemInfo(itemLink)) end +---@param slot number +---@return number local function getBindType(slot) - aura_env.debugLog("getBindType " .. tostring(slot)) - if (slot == nil) then return nil end + if slot == nil then return 0 end local itemLink = getItemLink(slot) - if (itemLink == nil) then return nil end - return select(14, GetItemInfo(itemLink)) or 0 + return select(14, GetItemInfo(itemLink)) end +---@param slot number +---@return nil local doLoot = function(slot) - aura_env.debugLog("Looting slot: " .. tostring(slot)) LootSlot(slot) local itemIcon = getItemIcon(slot) or 134400 @@ -97,367 +98,319 @@ local doLoot = function(slot) end end - -local goldFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Gold filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - -- I guess it does not support OR in regex? - -- itemName:match("%d+ ((Gold)|(Silver)|(Copper))") - if (itemname and itemName:match("%d+ Gold") or itemName:match("%d+ Silver") or itemName:match("%d+ Copper")) then - aura_env.debugLog("Gold filter pass") - return true - end - aura_env.debugLog("Gold filter fail " .. tostring(itemName)) - end - end -} -local orderResourcesFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Resource filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - if (itemName and itemName:match("Order Resources")) then - aura_env.debugLog("Order resource filter pass") - return true - end - aura_env.debugLog("Order resource filter fail " .. tostring(itemName)) - end - end -} -local mountFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Mount filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - if (itemType and itemType == "Mount") then - aura_env.debugLog("Mount filter pass") - return true - end - aura_env.debugLog("Mount filter fail " .. tostring(itemType)) - end - end -} -local ilvlFilter = { - enabled = true, - ilvlThreshold = 700, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("ILvl filter; slot: " .. tostring(slot)) - local itemLevel = getItemLevel(slot) - if (itemLevel and itemLevel > self.ilvlThreshold) then - aura_env.debugLog("Item level filter pass") - return true - end - aura_env.debugLog("Item level filter fail " .. tostring(itemLevel)) - end - end -} -local professionFilter = { - enabled = true, - herbs = true, - cloth = true, - ore = false, - leather = false, - cooking = true, - inscription = true, - enchanting = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Profession filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - local itemSubtype = getItemSubtype(slot) - if (itemType and itemType == "Tradeskill") then - if (itemSubtype and (itemSubtype == "Herb" and self.herbs) - or (itemSubtype == "Leather" and self.leather) - or (itemSubtype == "Cloth" and self.cloth) - or (itemSubtype == "Ore" and self.ore) - or (itemSubtype == "Cooking" and self.cooking) - or (itemSubtype == "Inscription" and self.inscription) - or (itemSubtype == "Enchanting" and self.enchanting)) then - aura_env.debugLog("Profession filter pass") - return true - end - end - aura_env.debugLog("Profession filter fail " .. tostring(itemType) .. " " .. tostring(itemSubtype)) - end - end -} -local valueFilter = { - enabled = true, - valueThreshold = 35 * 100 * 100, - applyThresholdToItemStack = false, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Value filter; slot: " .. tostring(slot)) - local itemValue = getItemValue(slot) - - if (self.applyThresholdToItemStack) then - local itemQuantity = getItemQuantity(slot) - aura_env.debugLog("There exist " .. tostring(itemQuantity) .. " items in slot " .. tostring(slot)) - itemValue = itemValue * itemQuantity - end - - if (itemValue and itemValue > self.valueThreshold) then - aura_env.debugLog("Value filter pass") - return true - end - aura_env.debugLog("Value filter fail " .. tostring(itemValue)) - end - end -} -local greyValueFilter = { - enabled = true, - -- Set threshold to 0 to loot all greys - valueThreshold = 4 * 100 * 100, - applyThresholdToItemStack = false, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Grey value filter; slot: " .. tostring(slot)) - local itemQuality = getItemQuality(slot) - if (itemQuality and itemQuality == 0) then - local itemValue = getItemValue(slot) - - if (self.applyThresholdToItemStack) then - local itemQuantity = getItemQuantity(slot) - aura_env.debugLog("There exist " .. tostring(itemQuantity) .. " items in slot " .. tostring(slot)) - itemValue = itemValue * itemQuantity - end - - if (itemValue and itemValue > self.valueThreshold) then - aura_env.debugLog("Grey value filter pass") - return true - end - aura_env.debugLog("Grey value filter fail " .. tostring(itemValue)) - end - aura_env.debugLog("Grey value filter fail " .. tostring(itemQuality)) - end - end -} -local questItemFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Quest item filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - local itemSubtype = getItemSubtype(slot) - if (itemType and itemSubtype and itemType == "Quest" and itemSubtype == "Quest") then - aura_env.debugLog("Quest item filter pass") - return true - end - aura_env.debugLog("Quest item filter fails " .. tostring(itemType) .. " " .. tostring(itemSubtype)) - end - end -} -local classGearFilter = { - enabled = true, - ilvlThreshold = 800, - qualityThreshold = 2, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("BoE filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - local itemEquipLoc = getItemEquipLocation(slot) - if (itemType == "Armor" - or itemType == "Weapon" - or itemEquipLoc == "INVTYPE_FINGER" - or itemEquipLoc == "INVTYPE_TRINKET" - or itemEquipLoc == "INVTYPE_CLOAK" - or itemEquipLoc == "INVTYPE_NECK") then - local itemLevel = getItemLevel(slot) - local itemQuality = getItemQuality(slot) - local isEquippable = aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 - - if (isEquippable and itemLevel > self.ilvlThreshold and itemQuality > self.qualityThreshold) then - aura_env.debugLog("Class gear filter pass") - return true - end - end - aura_env.debugLog("Class gear filter fails " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) - end - end -} -local azeriteFilter = { - enabled = true, - ilvlThreshold = 800, - qualityThreshold = 2, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Azerite filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - local itemSubtype = getItemSubtype(slot) - local itemQuality = getItemQuality(slot) - if (itemType and itemSubtype and itemQuality and itemType == "Consumable" and itemSubtype == "Other" and itemQuality > 1) then - aura_env.debugLog("Azerite filter pass") - return true - end - aura_env.debugLog("Azerite filter fails " .. tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) - end - end -} -local arguniteFilter = { - enabled = true, - qualityThreshold = 1, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Argunite filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - local itemQuality = getItemQuality(slot) - if (itemName and itemQuality and itemName:match("Argunite") and itemQuality > self.qualityThreshold) then - aura_env.debugLog("Argunite filter pass") - return true - end - aura_env.debugLog("Argunite filter failed " .. tostring(itemName) .. " " .. tostring(itemQuality)) - end - end -} -local ancientManaFilter = { - enabled = true, - qualityThreshold = 1, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Ancient mana filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - if (itemName and itemName:match("Ancient Mana")) then - aura_env.debugLog("Ancient mana filter pass") - return true - end - aura_env.debugLog("Ancient mana filter fail " .. tostring(itemName)) - end - end -} -local reicpeFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Recipe filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - if (itemName and (itemName:match("Recipe") or itemName:match("Technique"))) then - aura_env.debugLog("Recipe filter pass") - return true - end - aura_env.debugLog("Recipe filter fail " .. tostring(itemName)) - end - end -} -local bloodOfSargerasFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Blood of Sargeras filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - if (itemName and itemName:match("Sargeras")) then - aura_env.debugLog("Blood of Sargeras filter pass") - return true - end - aura_env.debugLog("Blood of Sargeras filter fail " .. tostring(itemName)) - end - end -} -local bloodhunerQuarryFilter = { - enabled = true, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("Bloodhunter's Quarry filter; slot: " .. tostring(slot)) - local itemName = getItemName(slot) - if (itemName and itemName:match("Bloodhunter")) then - aura_env.debugLog("Bloodhunter's Quarry filter pass") - return true - end - aura_env.debugLog("Bloodhunter's Quarry filter fail " .. tostring(itemName)) - end - end -} -local boeFilter = { - enabled = true, - ilvlThreshold = 800, - qualityThreshold = 1, - filter = function(self, slot) - if (self.enabled) then - aura_env.debugLog("BoE filter; slot: " .. tostring(slot)) - local itemType = getItemType(slot) - local itemEquipLoc = getItemEquipLocation(slot) - if (itemType == "Armor" - or itemType == "Weapon" - or itemEquipLoc == "INVTYPE_FINGER" - or itemEquipLoc == "INVTYPE_TRINKET" - or itemEquipLoc == "INVTYPE_CLOAK" - or itemEquipLoc == "INVTYPE_NECK") then - local itemLevel = getItemLevel(slot) - local itemQuality = getItemQuality(slot) - local bindType = getBindType(slot) - - if (itemLevel and itemQuality and bindType and itemLevel > self.ilvlThreshold and itemQuality > self.qualityThreshold and bindType == 1) then - aura_env.debugLog("BoE filter pass") - return true - end - end - aura_env.debugLog("BoE filter fails " .. tostring(itemType) .. " " .. tostring(itemEquipLoc)) - end - end -} - -aura_env.filterService = { - filters = { - goldFilter, - orderResourcesFilter, - mountFilter, - ilvlFilter, - professionFilter, - valueFilter, - greyValueFilter, - questItemFilter, - classGearFilter, - azeriteFilter, - arguniteFilter, - ancientManaFilter, - reicpeFilter, - bloodOfSargerasFilter, - boeFilter, - bloodhunerQuarryFilter, - }, - slotsToLoot = {}, - run = function(self, lootInfo) - self.slotsToLoot = {} - for slot, item in pairs(lootInfo) do - aura_env.debugLog("Loot slot: " .. tostring(slot) .. " " .. item.item) - self:runFilters(slot) - end - - aura_env.debugLog("Slots to loot: " .. #self.slotsToLoot) - aura_env.debugLog(self.slotsToLoot) - for i = #self.slotsToLoot, 1, -1 do - local slot = self.slotsToLoot[i] - aura_env.debugLog("Looting slot (iterator): " .. slot) - doLoot(slot) - end +---@class Filter +---@field enabled boolean +---@field requires table | nil +---@field filter fun(slot: number, provided: table): boolean +Filter = { + ---@param enabled boolean + ---@param requires table | nil + ---@param filter fun(slot: number, provided: table): boolean + ---@return Filter + new = function(enabled, requires, filter) + local self = setmetatable({}, { + __index = Filter + }) + self.enabled = enabled + self.requires = requires + self.filter = filter + return self end, - runFilters = function(self, slot) - for k, filter in pairs(self.filters) do - if (filter:filter(slot)) then - -- Might be good to, instead of just adding slot to a list, add an object with info about the item and the slot containing it so each filter can dictate the item name and icon - self.slotsToLoot[#self.slotsToLoot + 1] = slot - return + + ---@param self Filter + ---@param slot number + ---@return boolean + Run = function(self, slot) + ---@type table + local provided = {} + if self.requires then + for k, v in pairs(self.requires) do + provided[k] = v(slot) end end + return self.filter(slot, provided) end } -aura_env.debugLog = function(obj) - if (debug) then - print(GetTime()) - DevTools_Dump(obj) - print() +local goldFilter = Filter.new(true, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if string.find(provided.name, "Gold") or + string.find(provided.name, "Silver") or + string.find(provided.name, "Copper") then + return true + end + return false + end) +local orderResourcesFilter = Filter.new(true, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if string.find(provided.name, "Order Resources") then + return true + end + return false + end) +local mountFilter = Filter.new(true, + { ["type"] = getItemType }, + function(slot, provided) + ---@cast provided { type: string } + if provided.type == "Mount" then + return true + end + return false + end) +local ilvlFilter = Filter.new(true, + { ["ilvl"] = getItemLevel }, + function(slot, provided) + ---@cast provided { ilvl: number } + if provided.ilvl and provided.ilvl > 800 then + return true + end + return false + end) +local professionFilter = Filter.new(true, + { + ["type"] = getItemType, + ["subtype"] = getItemSubtype + }, + function(slot, provided) + ---@cast provided { type: string, subtype: string } + + local enabled = { + ["Herb"] = true, + ["Leather"] = true, + ["Cloth"] = true, + ["Ore"] = false, + ["Cooking"] = true, + ["Inscription"] = true, + ["Enchanting"] = true, + } + + if provided.type == "Tradeskill" then + if enabled[provided.subtype] then + return true + end + end + return false + end) +local valueFilter = Filter.new(true, + { + ["value"] = getItemValue, + ["quantity"] = getItemQuality + }, + function(slot, provided) + ---@cast provided { value: number, quantity: number } + + local valueThreshold = 35 * 100 * 100 + local applyValueTostack = false + + local value = provided.value + if applyValueTostack then value = value * provided.quantity end + + if value > valueThreshold then + return true + end + return false + end) +local greyValueFilter = Filter.new(true, + { + ["quality"] = getItemQuality, + ["value"] = getItemValue, + ["quantity"] = getItemQuantity + }, + function(slot, provided) + ---@cast provided { quality: number, value: number, quantity: number } + + local valueThreshold = 4 * 100 * 100 + local applyValueTostack = false + + if provided.quality == 0 then + local value = provided.value + if applyValueTostack then value = value * provided.quantity end + + if value > valueThreshold then + return true + end + end + return false + end) +local questItemFilter = Filter.new(true, + { + ["type"] = getItemType, + ["subtype"] = getItemSubtype + }, + function(slot, provided) + ---@cast provided { type: string, subtype: string } + if provided.type == "Quest" and provided.subtype == "Quest" then + return true + end + return false + end) +local classGearFilter = Filter.new(true, + { + ["ilvl"] = getItemLevel, + ["quality"] = getItemQuality, + ["type"] = getItemType, + ["subtype"] = getItemSubtype, + ["equiploc"] = getItemEquipLocation + }, + function(slot, provided) + ---@cast provided { ilvl: number, quality: number, type: string, subtype: string, equiploc: string } + + local ilvlThreshold = 800 + local qualityThreshold = 2 + + local isEquippable = aura_env.skills[select(3, UnitClass("player"))][provided.subtype] == 1 + + if isEquippable and provided.ilvl > ilvlThreshold and provided.quality > qualityThreshold then + return true + end + return false + end) +local arguniteFilter = Filter.new(true, + { + ["name"] = getItemName, + ["quality"] = getItemQuality + }, + function(slot, provided) + ---@cast provided { name: string, quality: number } + if string.find(provided.name, "Argunite") and provided.quality > 1 then + return true + end + return false + end) +local ancientManaFilter = Filter.new(true, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if string.find(provided.name, "Ancient Mana") then + return true + end + return false + end) +local reicpeFilter = Filter.new(false, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if string.find(provided.name, "Recipe") or string.find(provided.name, "Technique") then + return true + end + return false + end) +local bloodOfSargerasFilter = Filter.new(true, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if provided.name == "Blood of Sargeras" then + return true + end + return false + end) +local bloodhunerQuarryFilter = Filter.new(true, + { ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if provided.name == "Bloodhunter's Quarry" then + return true + end + return false + end) +local boeFilter = Filter.new(true, + { + ["ilvl"] = getItemLevel, + ["type"] = getItemType, + ["quality"] = getItemQuality, + ["equiploc"] = getItemEquipLocation, + ["bindtype"] = getBindType + }, + function(slot, provided) + ---@cast provided { ilvl: number, type: string, quality: number, equiploc: string, bindtype: number } + + local ilvlThreshold = 800 + local qualityThreshold = 1 + + local itemType = provided.type + local itemEquipLoc = provided.equiploc + if (itemType == "Armor" + or itemType == "Weapon" + or itemEquipLoc == "INVTYPE_FINGER" + or itemEquipLoc == "INVTYPE_TRINKET" + or itemEquipLoc == "INVTYPE_CLOAK" + or itemEquipLoc == "INVTYPE_NECK") then + local itemLevel = provided.ilvl + local itemQuality = provided.quality + local bindType = provided.bindtype + + if itemLevel > ilvlThreshold and itemQuality > qualityThreshold and bindType == 1 then + return true + end + end + return false + end) + +-- local azeriteFilter = { +-- enabled = true, +-- ilvlThreshold = 800, +-- qualityThreshold = 2, +-- filter = function(self, slot) +-- if self.enabled the +-- local itemType = getItemType(slot) +-- local itemSubtype = getItemSubtype(slot) +-- local itemQuality = getItemQuality(slot) +-- if itemType and itemSubtype and itemQuality and itemType == "Consumable" and itemSubtype == "Other" and itemQuality > 1 the +-- return true +-- en +-- tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) +-- end +-- end +-- } + + +---@type table +local filters = { + goldFilter, + orderResourcesFilter, + mountFilter, + ilvlFilter, + professionFilter, + valueFilter, + greyValueFilter, + questItemFilter, + classGearFilter, + arguniteFilter, + ancientManaFilter, + reicpeFilter, + bloodOfSargerasFilter, + boeFilter, + bloodhunerQuarryFilter, +} + +---@class FilterService +aura_env.FilterService = { + ---@param lootInfo table + Run = function(lootInfo) + ---@type table + local slotsToLoot = {} + for slot, item in pairs(lootInfo) do + for _, filter in pairs(filters) do + if filter:Run(slot) then + slotsToLoot[#slotsToLoot + 1] = slot + break + end + end + end + + aura_env.FilterService.doLoot(slotsToLoot) + end, + + doLoot = function(slots) + for i = #slots, 1, -1 do + doLoot(slots[i]) + end end - if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end - if not WeakAurasSaved.Cyka.Log then WeakAurasSaved.Cyka.Log = {} end - if not WeakAurasSaved.Cyka.Log.AutoLoot then WeakAurasSaved.Cyka.Log.AutoLoot = {} end - WeakAurasSaved.Cyka.Log.AutoLoot[#WeakAurasSaved.Cyka.Log.AutoLoot + 1] = obj -end +} aura_env.skills = { --Warrior @@ -770,4 +723,4 @@ aura_env.qualityColors = { "\124cffff8000", -- Legendary "\124cffe6cc80", -- Artifact "\124cff00ccff", -- Heirloom -} \ No newline at end of file +} diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index 4b3c44c..9e1a87b 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -6,7 +6,7 @@ function(allstates, e) if CanMerchantRepair() == true then RepairAllItems() end for container = 0, 4 do - for slot = 1, GetContainerNumSlots(container) do + for slot = 1, C_Container.GetContainerNumSlots(container) do aura_env.filterService:run(container, slot) end end From e4b02d4d68eea3ab05f849c03f83f18d5de41068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Sun, 3 Mar 2024 20:14:08 +0100 Subject: [PATCH 33/44] Add getItemSubclassId function and artifactPowerFilter --- LegionWA/AutoLoot/Init.lua | 85 ++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index fa84c91..b9b6b68 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -36,6 +36,7 @@ local function getItemLevel(slot) local itemLink = getItemLink(slot) return select(4, GetItemInfo(itemLink)) end + ---The vendor price in copper, or 0 for items that cannot be sold ---@param slot number ---@return number @@ -46,6 +47,13 @@ local function getItemValue(slot) end ---@param slot number ---@return number +local function getItemSubclassId(slot) + if slot == nil then return 0 end + local itemLink = getItemLink(slot) + return select(13, GetItemInfo(itemLink)) +end +---@param slot number +---@return number local function getItemQuantity(slot) if slot == nil then return 0 end return select(3, GetLootSlotInfo(slot)) @@ -79,25 +87,6 @@ local function getBindType(slot) return select(14, GetItemInfo(itemLink)) end - ----@param slot number ----@return nil -local doLoot = function(slot) - LootSlot(slot) - - local itemIcon = getItemIcon(slot) or 134400 - local itemName = getItemName(slot) or "Unknown" - itemName = itemName:gsub("\n", ", ") - local itemQuality = getItemQuality(slot) or 0 - - if not WeakAurasSaved.Cyka.ItemCache[itemName] then - WeakAurasSaved.Cyka.ItemCache[itemName] = { - icon = itemIcon, - quality = itemQuality, - } - end -end - ---@class Filter ---@field enabled boolean ---@field requires table | nil @@ -349,6 +338,17 @@ local boeFilter = Filter.new(true, end return false end) +local artifactPowerFilter = Filter.new(true, { + ["type"] = getItemType, + ["subtype"] = getItemSubtype, + ["subclassid"] = getItemSubclassId +}, function(slot, provided) + ---@cast provided { type: string, subtype: string, subclassid: number } + if provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then + return true + end + return false +end) -- local azeriteFilter = { -- enabled = true, @@ -370,21 +370,22 @@ local boeFilter = Filter.new(true, ---@type table local filters = { - goldFilter, - orderResourcesFilter, - mountFilter, - ilvlFilter, - professionFilter, - valueFilter, - greyValueFilter, - questItemFilter, - classGearFilter, - arguniteFilter, ancientManaFilter, - reicpeFilter, + arguniteFilter, + artifactPowerFilter, + bloodhunerQuarryFilter, bloodOfSargerasFilter, boeFilter, - bloodhunerQuarryFilter, + classGearFilter, + goldFilter, + greyValueFilter, + ilvlFilter, + mountFilter, + orderResourcesFilter, + professionFilter, + questItemFilter, + reicpeFilter, + valueFilter, } ---@class FilterService @@ -405,9 +406,29 @@ aura_env.FilterService = { aura_env.FilterService.doLoot(slotsToLoot) end, + ---@param slots table + ---@return nil doLoot = function(slots) for i = #slots, 1, -1 do - doLoot(slots[i]) + aura_env.FilterService.lootslot(slots[i]) + end + end, + + ---@param slot number + ---@return nil + lootslot = function(slot) + LootSlot(slot) + + local itemIcon = getItemIcon(slot) or 134400 + local itemName = getItemName(slot) or "Unknown" + itemName = itemName:gsub("\n", ", ") + local itemQuality = getItemQuality(slot) or 0 + + if not WeakAurasSaved.Cyka.ItemCache[itemName] then + WeakAurasSaved.Cyka.ItemCache[itemName] = { + icon = itemIcon, + quality = itemQuality, + } end end } From 029c12eaf6d1b47fd26b1db3377d198bfa1772f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 4 Mar 2024 09:23:47 +0100 Subject: [PATCH 34/44] Fix issues with autoloot --- LegionWA/AutoLoot/Event.lua | 7 +- LegionWA/AutoLoot/Event2.lua | 6 + LegionWA/AutoLoot/Init.lua | 220 +++++++++++++++++++++++++++-------- 3 files changed, 178 insertions(+), 55 deletions(-) create mode 100644 LegionWA/AutoLoot/Event2.lua diff --git a/LegionWA/AutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua index f0c1216..5cb25a8 100644 --- a/LegionWA/AutoLoot/Event.lua +++ b/LegionWA/AutoLoot/Event.lua @@ -1,7 +1,6 @@ -- LOOT_READY function(e) - local lootInfo = GetLootInfo() - print(aura_env.filterService) - aura_env.FilterService.Run(lootInfo) - CloseLoot() + C_Timer.After(0.1, function() + WeakAuras.ScanEvents("DO_AUTOLOOT") + end) end diff --git a/LegionWA/AutoLoot/Event2.lua b/LegionWA/AutoLoot/Event2.lua new file mode 100644 index 0000000..e4ffcb4 --- /dev/null +++ b/LegionWA/AutoLoot/Event2.lua @@ -0,0 +1,6 @@ +-- DO_AUTOLOOT +function(e) + local lootInfo = GetLootInfo() + aura_env.FilterService.Run(lootInfo) + CloseLoot() +end diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index b9b6b68..7f193be 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -4,87 +4,98 @@ if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end ---@param slot number ----@return string +---@return string, string|nil local function getItemLink(slot) - if slot == nil then return "" end - return GetLootSlotLink(slot) + if slot == nil then return "", string.format("Slot can not be nil") end + local link = GetLootSlotLink(slot) + if link == nil then return "", string.format("GetLootSlotLink returned nil for slot %d", slot) end + return link, nil end ---@param slot number ----@return string +---@return string, string|nil local function getItemName(slot) - if slot == nil then return "" end - return select(2, GetLootSlotInfo(slot)) + if slot == nil then return "", string.format("Slot can not be null") end + return select(2, GetLootSlotInfo(slot)), nil end ---@param slot number ----@return string +---@return string, string|nil local function getItemType(slot) - if slot == nil then return "" end - local itemLink = getItemLink(slot) - return select(6, GetItemInfo(itemLink)) + if slot == nil then return "", string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return "", err end + return select(6, GetItemInfo(itemLink)), nil end ---@param slot number ----@return string +---@return string, string|nil local function getItemSubtype(slot) - if slot == nil then return "" end - local itemLink = getItemLink(slot) - return select(7, GetItemInfo(itemLink)) + if slot == nil then return "", string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return "", err end + return select(7, GetItemInfo(itemLink)), nil end ---@param slot number ----@return number +---@return number, string|nil local function getItemLevel(slot) - if slot == nil then return 0 end - local itemLink = getItemLink(slot) - return select(4, GetItemInfo(itemLink)) + if slot == nil then return 0, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 0, err end + return select(4, GetItemInfo(itemLink)), nil end ---The vendor price in copper, or 0 for items that cannot be sold ---@param slot number ----@return number +---@return number, string|nil local function getItemValue(slot) - if slot == nil then return 0 end - local itemLink = getItemLink(slot) - return select(11, GetItemInfo(itemLink)) + if slot == nil then return 0, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 0, err end + return select(11, GetItemInfo(itemLink)), nil end ---@param slot number ----@return number +---@return number, string|nil local function getItemSubclassId(slot) - if slot == nil then return 0 end - local itemLink = getItemLink(slot) - return select(13, GetItemInfo(itemLink)) + if slot == nil then return 0, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 0, err end + return select(13, GetItemInfo(itemLink)), nil end ---@param slot number ----@return number +---@return number, string|nil local function getItemQuantity(slot) - if slot == nil then return 0 end - return select(3, GetLootSlotInfo(slot)) + if slot == nil then return 0, string.format("Slot can not be nil") end + return select(3, GetLootSlotInfo(slot)), nil end ---@param slot number ----@return Enum.ItemQuality +---@return Enum.ItemQuality, string|nil local function getItemQuality(slot) - if slot == nil then return Enum.ItemQuality.Poor end - local itemLink = getItemLink(slot) - return select(3, GetItemInfo(itemLink)) + if slot == nil then return 0, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 0, err end + return select(3, GetItemInfo(itemLink)), nil end ---@param slot number ----@return string +---@return string, string|nil local function getItemEquipLocation(slot) - if slot == nil then return "" end - local itemLink = getItemLink(slot) - return select(9, GetItemInfo(itemLink)) + if slot == nil then return "", string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return "", err end + return select(9, GetItemInfo(itemLink)), nil end ---@param slot number ----@return number +---@return number, string|nil local function getItemIcon(slot) - if slot == nil then return 0 end - local itemLink = getItemLink(slot) - return select(10, GetItemInfo(itemLink)) + if slot == nil then return 134400, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 134400, err end + return select(10, GetItemInfo(itemLink)), nil end ---@param slot number ----@return number +---@return number, string|nil local function getBindType(slot) - if slot == nil then return 0 end - local itemLink = getItemLink(slot) - return select(14, GetItemInfo(itemLink)) + if slot == nil then return 0, string.format("Slot can not be nil") end + local itemLink, err = getItemLink(slot) + if err then return 0, err end + return select(14, GetItemInfo(itemLink)), nil end ---@class Filter @@ -108,16 +119,25 @@ Filter = { ---@param self Filter ---@param slot number - ---@return boolean + ---@return boolean, string|nil Run = function(self, slot) ---@type table local provided = {} if self.requires then for k, v in pairs(self.requires) do - provided[k] = v(slot) + local res, err = v(slot) + if err ~= nil then + if debug then print(err) end + else + provided[k] = res + end end end - return self.filter(slot, provided) + local res, err = self.filter(slot, provided) + if err ~= nil then + if debug then print(err) end + end + return res, nil end } @@ -128,8 +148,10 @@ local goldFilter = Filter.new(true, if string.find(provided.name, "Gold") or string.find(provided.name, "Silver") or string.find(provided.name, "Copper") then + if debug then print(string.format("Gold filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Gold filter fail for %s", provided.name)) end return false end) local orderResourcesFilter = Filter.new(true, @@ -137,8 +159,10 @@ local orderResourcesFilter = Filter.new(true, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Order Resources") then + if debug then print(string.format("Order resource filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Order resource filter fail for %s", provided.name)) end return false end) local mountFilter = Filter.new(true, @@ -146,8 +170,10 @@ local mountFilter = Filter.new(true, function(slot, provided) ---@cast provided { type: string } if provided.type == "Mount" then + if debug then print(string.format("Mount filter pass for type %s", provided.type)) end return true end + if debug then print(string.format("Mount filter fail for type %s", provided.type)) end return false end) local ilvlFilter = Filter.new(true, @@ -155,8 +181,10 @@ local ilvlFilter = Filter.new(true, function(slot, provided) ---@cast provided { ilvl: number } if provided.ilvl and provided.ilvl > 800 then + if debug then print(string.format("ilvl filter pass for ilvl %d", provided.ilvl)) end return true end + if debug then print(string.format("ilvl filter fail for ilvl %d", provided.ilvl)) end return false end) local professionFilter = Filter.new(true, @@ -179,9 +207,11 @@ local professionFilter = Filter.new(true, if provided.type == "Tradeskill" then if enabled[provided.subtype] then + if debug then print(string.format("Profession filter pass for type %s", provided.type)) end return true end end + if debug then print(string.format("Profession filter fail for type %s", provided.type)) end return false end) local valueFilter = Filter.new(true, @@ -199,8 +229,10 @@ local valueFilter = Filter.new(true, if applyValueTostack then value = value * provided.quantity end if value > valueThreshold then + if debug then print(string.format("Value filter pass for value %d", value)) end return true end + if debug then print(string.format("Value filter fail for value %d", value)) end return false end) local greyValueFilter = Filter.new(true, @@ -220,9 +252,17 @@ local greyValueFilter = Filter.new(true, if applyValueTostack then value = value * provided.quantity end if value > valueThreshold then + if debug then + print(string.format("Grey value filter pass for value %d of %s quality items", value, + provided.quality)) + end return true end end + if debug then + print(string.format("Grey value filter fail for value %d of %s quality items", provided.value, + provided.quality)) + end return false end) local questItemFilter = Filter.new(true, @@ -233,8 +273,16 @@ local questItemFilter = Filter.new(true, function(slot, provided) ---@cast provided { type: string, subtype: string } if provided.type == "Quest" and provided.subtype == "Quest" then + if debug then + print(string.format("Quest item filter pass for type %s and subtype", provided.type, + provided.subtype)) + end return true end + if debug then + print(string.format("Quest item filter fail for type %s and subtype", provided.type, + provided.subtype)) + end return false end) local classGearFilter = Filter.new(true, @@ -254,8 +302,16 @@ local classGearFilter = Filter.new(true, local isEquippable = aura_env.skills[select(3, UnitClass("player"))][provided.subtype] == 1 if isEquippable and provided.ilvl > ilvlThreshold and provided.quality > qualityThreshold then + if debug then + print(string.format("Class gear filter pass for ilvl %d and quality %d", provided.ilvl, + provided.quality)) + end return true end + if debug then + print(string.format("Class gear filter fail for ilvl %d and quality %d", provided.ilvl, + provided.quality)) + end return false end) local arguniteFilter = Filter.new(true, @@ -266,8 +322,13 @@ local arguniteFilter = Filter.new(true, function(slot, provided) ---@cast provided { name: string, quality: number } if string.find(provided.name, "Argunite") and provided.quality > 1 then + if debug then + print(string.format("Argunite filter pass for %s and quality %d", provided.name, + provided.quality)) + end return true end + if debug then print(string.format("Argunite filter fail for %s and quality %d", provided.name, provided.quality)) end return false end) local ancientManaFilter = Filter.new(true, @@ -275,8 +336,10 @@ local ancientManaFilter = Filter.new(true, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Ancient Mana") then + if debug then print(string.format("Ancient Mana filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Ancient Mana filter fail for %s", provided.name)) end return false end) local reicpeFilter = Filter.new(false, @@ -284,8 +347,10 @@ local reicpeFilter = Filter.new(false, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Recipe") or string.find(provided.name, "Technique") then + if debug then print(string.format("Recipe filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Recipe filter fail for %s", provided.name)) end return false end) local bloodOfSargerasFilter = Filter.new(true, @@ -293,8 +358,10 @@ local bloodOfSargerasFilter = Filter.new(true, function(slot, provided) ---@cast provided { name: string } if provided.name == "Blood of Sargeras" then + if debug then print(string.format("Blood of Sargeras filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Blood of Sargeras filter fail for %s", provided.name)) end return false end) local bloodhunerQuarryFilter = Filter.new(true, @@ -302,8 +369,10 @@ local bloodhunerQuarryFilter = Filter.new(true, function(slot, provided) ---@cast provided { name: string } if provided.name == "Bloodhunter's Quarry" then + if debug then print(string.format("Bloodhunter's Quarry filter pass for %s", provided.name)) end return true end + if debug then print(string.format("Bloodhunter's Quarry filter fail for %s", provided.name)) end return false end) local boeFilter = Filter.new(true, @@ -333,23 +402,72 @@ local boeFilter = Filter.new(true, local bindType = provided.bindtype if itemLevel > ilvlThreshold and itemQuality > qualityThreshold and bindType == 1 then + if debug then print(string.format("BoE filter pass for ilvl %d and quality %d", itemLevel, itemQuality)) end return true end end + if debug then print(string.format("BoE filter fail for ilvl %d and quality %d", provided.ilvl, provided.quality)) end return false end) local artifactPowerFilter = Filter.new(true, { ["type"] = getItemType, ["subtype"] = getItemSubtype, - ["subclassid"] = getItemSubclassId + ["subclassid"] = getItemSubclassId, + ["value"] = getItemValue }, function(slot, provided) - ---@cast provided { type: string, subtype: string, subclassid: number } - if provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then + ---@cast provided { type: string, subtype: string, subclassid: number, value: number } + if provided.value == 0 and provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then + if debug then + print(string.format("Artifact power filter pass for type %s and subtype %s and subclassid %d with value %d", + provided.type, provided.subtype, provided.subclassid, provided.value)) + end return true end + if debug then + print(string.format("Artifact power filter fail for type %s and subtype %s and subclassid %d with value %d", + provided.type, provided.subtype, provided.subclassid, provided.value)) + end return false end) +-- [09:19 AM] Dump: value=GetItemInfo("Elemental Pebbles") +-- [09:19 AM] [1]="Elemental Pebbles", +-- [09:19 AM] [2]="|cff9d9d9d|Hitem:132217::::::::110:72::::::|h[Elemental Pebbles]|h|r", +-- [09:19 AM] [3]=0, +-- [09:19 AM] [4]=100, +-- [09:19 AM] [5]=1, +-- [09:19 AM] [6]="Consumable", +-- [09:19 AM] [7]="Other", +-- [09:19 AM] [8]=20, +-- [09:19 AM] [9]="", +-- [09:19 AM] [10]=135234, +-- [09:19 AM] [11]=27075, +-- [09:19 AM] [12]=0, +-- [09:19 AM] [13]=8, +-- [09:19 AM] [14]=0, +-- [09:19 AM] [15]=0, +-- [09:19 AM] [17]=false + +GetItemInfo("Brief History of the Ages") + +-- [09:19 AM] Dump: value=GetItemInfo("Brief History of the Ages") +-- [09:19 AM] [1]="Brief History of the Ages", +-- [09:19 AM] [2]="|cffa335ee|Hitem:138782::::::::110:72::::::|h[Brief History of the Ages]|h|r", +-- [09:19 AM] [3]=4, +-- [09:19 AM] [4]=110, +-- [09:19 AM] [5]=0, +-- [09:19 AM] [6]="Consumable", +-- [09:19 AM] [7]="Other", +-- [09:19 AM] [8]=200, +-- [09:19 AM] [9]="", +-- [09:19 AM] [10]=134946, +-- [09:19 AM] [11]=0, +-- [09:19 AM] [12]=0, +-- [09:19 AM] [13]=8, +-- [09:19 AM] [14]=1, +-- [09:19 AM] [15]=6, +-- [09:19 AM] [17]=false + -- local azeriteFilter = { -- enabled = true, -- ilvlThreshold = 800, From 28a3b9b0b0fd4fa51054fc9db00891ad18ef7ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 4 Mar 2024 09:39:57 +0100 Subject: [PATCH 35/44] More fixes and small reworks --- LegionWA/AutoLoot/Init.lua | 151 ++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 88 deletions(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 7f193be..4d95c51 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -15,7 +15,9 @@ end ---@return string, string|nil local function getItemName(slot) if slot == nil then return "", string.format("Slot can not be null") end - return select(2, GetLootSlotInfo(slot)), nil + local name = select(2, GetLootSlotInfo(slot)) + if name == nil then return "", string.format("GetLootSlotInfo returned nil for slot %d", slot) end + return name, nil end ---@param slot number ---@return string, string|nil @@ -23,7 +25,9 @@ local function getItemType(slot) if slot == nil then return "", string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return "", err end - return select(6, GetItemInfo(itemLink)), nil + local itemType = select(6, GetItemInfo(itemLink)) + if itemType == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end + return itemType, nil end ---@param slot number ---@return string, string|nil @@ -31,7 +35,9 @@ local function getItemSubtype(slot) if slot == nil then return "", string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return "", err end - return select(7, GetItemInfo(itemLink)), nil + local itemSubtype = select(7, GetItemInfo(itemLink)) + if itemSubtype == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end + return itemSubtype, nil end ---@param slot number ---@return number, string|nil @@ -39,7 +45,9 @@ local function getItemLevel(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - return select(4, GetItemInfo(itemLink)), nil + local itemLevel = select(4, GetItemInfo(itemLink)) + if itemLevel == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end + return itemLevel, nil end ---The vendor price in copper, or 0 for items that cannot be sold @@ -49,7 +57,9 @@ local function getItemValue(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - return select(11, GetItemInfo(itemLink)), nil + local value = select(11, GetItemInfo(itemLink)) + if value == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end + return value, nil end ---@param slot number ---@return number, string|nil @@ -57,13 +67,17 @@ local function getItemSubclassId(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - return select(13, GetItemInfo(itemLink)), nil + local subclassId = select(12, GetItemInfo(itemLink)) + if subclassId == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end + return subclassId, nil end ---@param slot number ---@return number, string|nil local function getItemQuantity(slot) if slot == nil then return 0, string.format("Slot can not be nil") end - return select(3, GetLootSlotInfo(slot)), nil + local quantity = select(3, GetLootSlotInfo(slot)) + if quantity == nil then return 0, string.format("GetLootSlotInfo returned nil for slot %d", slot) end + return quantity, nil end ---@param slot number ---@return Enum.ItemQuality, string|nil @@ -71,7 +85,9 @@ local function getItemQuality(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - return select(3, GetItemInfo(itemLink)), nil + local quality = select(3, GetItemInfo(itemLink)) + if quality == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end + return quality, nil end ---@param slot number ---@return string, string|nil @@ -79,7 +95,9 @@ local function getItemEquipLocation(slot) if slot == nil then return "", string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return "", err end - return select(9, GetItemInfo(itemLink)), nil + local equipLoc = select(9, GetItemInfo(itemLink)) + if equipLoc == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end + return equipLoc, nil end ---@param slot number ---@return number, string|nil @@ -87,7 +105,9 @@ local function getItemIcon(slot) if slot == nil then return 134400, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 134400, err end - return select(10, GetItemInfo(itemLink)), nil + local icon = select(10, GetItemInfo(itemLink)) + if icon == nil then return 134400, string.format("GetItemInfo returned nil for slot %d", slot) end + return icon, nil end ---@param slot number ---@return number, string|nil @@ -95,23 +115,22 @@ local function getBindType(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - return select(14, GetItemInfo(itemLink)), nil + local bindType = select(14, GetItemInfo(itemLink)) + if bindType == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end + return bindType, nil end ---@class Filter ----@field enabled boolean ---@field requires table | nil ---@field filter fun(slot: number, provided: table): boolean Filter = { - ---@param enabled boolean ---@param requires table | nil ---@param filter fun(slot: number, provided: table): boolean ---@return Filter - new = function(enabled, requires, filter) + new = function(requires, filter) local self = setmetatable({}, { __index = Filter }) - self.enabled = enabled self.requires = requires self.filter = filter return self @@ -128,9 +147,9 @@ Filter = { local res, err = v(slot) if err ~= nil then if debug then print(err) end - else - provided[k] = res + return false, err end + provided[k] = res end end local res, err = self.filter(slot, provided) @@ -141,8 +160,7 @@ Filter = { end } -local goldFilter = Filter.new(true, - { ["name"] = getItemName }, +local goldFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Gold") or @@ -154,8 +172,7 @@ local goldFilter = Filter.new(true, if debug then print(string.format("Gold filter fail for %s", provided.name)) end return false end) -local orderResourcesFilter = Filter.new(true, - { ["name"] = getItemName }, +local orderResourcesFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Order Resources") then @@ -165,8 +182,7 @@ local orderResourcesFilter = Filter.new(true, if debug then print(string.format("Order resource filter fail for %s", provided.name)) end return false end) -local mountFilter = Filter.new(true, - { ["type"] = getItemType }, +local mountFilter = Filter.new({ ["type"] = getItemType }, function(slot, provided) ---@cast provided { type: string } if provided.type == "Mount" then @@ -176,8 +192,7 @@ local mountFilter = Filter.new(true, if debug then print(string.format("Mount filter fail for type %s", provided.type)) end return false end) -local ilvlFilter = Filter.new(true, - { ["ilvl"] = getItemLevel }, +local ilvlFilter = Filter.new({ ["ilvl"] = getItemLevel }, function(slot, provided) ---@cast provided { ilvl: number } if provided.ilvl and provided.ilvl > 800 then @@ -187,8 +202,7 @@ local ilvlFilter = Filter.new(true, if debug then print(string.format("ilvl filter fail for ilvl %d", provided.ilvl)) end return false end) -local professionFilter = Filter.new(true, - { +local professionFilter = Filter.new({ ["type"] = getItemType, ["subtype"] = getItemSubtype }, @@ -214,8 +228,7 @@ local professionFilter = Filter.new(true, if debug then print(string.format("Profession filter fail for type %s", provided.type)) end return false end) -local valueFilter = Filter.new(true, - { +local valueFilter = Filter.new({ ["value"] = getItemValue, ["quantity"] = getItemQuality }, @@ -235,8 +248,7 @@ local valueFilter = Filter.new(true, if debug then print(string.format("Value filter fail for value %d", value)) end return false end) -local greyValueFilter = Filter.new(true, - { +local greyValueFilter = Filter.new({ ["quality"] = getItemQuality, ["value"] = getItemValue, ["quantity"] = getItemQuantity @@ -265,8 +277,7 @@ local greyValueFilter = Filter.new(true, end return false end) -local questItemFilter = Filter.new(true, - { +local questItemFilter = Filter.new({ ["type"] = getItemType, ["subtype"] = getItemSubtype }, @@ -285,8 +296,7 @@ local questItemFilter = Filter.new(true, end return false end) -local classGearFilter = Filter.new(true, - { +local classGearFilter = Filter.new({ ["ilvl"] = getItemLevel, ["quality"] = getItemQuality, ["type"] = getItemType, @@ -314,8 +324,7 @@ local classGearFilter = Filter.new(true, end return false end) -local arguniteFilter = Filter.new(true, - { +local arguniteFilter = Filter.new({ ["name"] = getItemName, ["quality"] = getItemQuality }, @@ -331,8 +340,7 @@ local arguniteFilter = Filter.new(true, if debug then print(string.format("Argunite filter fail for %s and quality %d", provided.name, provided.quality)) end return false end) -local ancientManaFilter = Filter.new(true, - { ["name"] = getItemName }, +local ancientManaFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Ancient Mana") then @@ -342,8 +350,7 @@ local ancientManaFilter = Filter.new(true, if debug then print(string.format("Ancient Mana filter fail for %s", provided.name)) end return false end) -local reicpeFilter = Filter.new(false, - { ["name"] = getItemName }, +local reicpeFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if string.find(provided.name, "Recipe") or string.find(provided.name, "Technique") then @@ -353,8 +360,7 @@ local reicpeFilter = Filter.new(false, if debug then print(string.format("Recipe filter fail for %s", provided.name)) end return false end) -local bloodOfSargerasFilter = Filter.new(true, - { ["name"] = getItemName }, +local bloodOfSargerasFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if provided.name == "Blood of Sargeras" then @@ -364,8 +370,7 @@ local bloodOfSargerasFilter = Filter.new(true, if debug then print(string.format("Blood of Sargeras filter fail for %s", provided.name)) end return false end) -local bloodhunerQuarryFilter = Filter.new(true, - { ["name"] = getItemName }, +local bloodhunerQuarryFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) ---@cast provided { name: string } if provided.name == "Bloodhunter's Quarry" then @@ -375,8 +380,7 @@ local bloodhunerQuarryFilter = Filter.new(true, if debug then print(string.format("Bloodhunter's Quarry filter fail for %s", provided.name)) end return false end) -local boeFilter = Filter.new(true, - { +local boeFilter = Filter.new({ ["ilvl"] = getItemLevel, ["type"] = getItemType, ["quality"] = getItemQuality, @@ -409,7 +413,7 @@ local boeFilter = Filter.new(true, if debug then print(string.format("BoE filter fail for ilvl %d and quality %d", provided.ilvl, provided.quality)) end return false end) -local artifactPowerFilter = Filter.new(true, { +local artifactPowerFilter = Filter.new({ ["type"] = getItemType, ["subtype"] = getItemSubtype, ["subclassid"] = getItemSubclassId, @@ -424,50 +428,13 @@ local artifactPowerFilter = Filter.new(true, { return true end if debug then + DevTools_Dump(provided) print(string.format("Artifact power filter fail for type %s and subtype %s and subclassid %d with value %d", provided.type, provided.subtype, provided.subclassid, provided.value)) end return false end) --- [09:19 AM] Dump: value=GetItemInfo("Elemental Pebbles") --- [09:19 AM] [1]="Elemental Pebbles", --- [09:19 AM] [2]="|cff9d9d9d|Hitem:132217::::::::110:72::::::|h[Elemental Pebbles]|h|r", --- [09:19 AM] [3]=0, --- [09:19 AM] [4]=100, --- [09:19 AM] [5]=1, --- [09:19 AM] [6]="Consumable", --- [09:19 AM] [7]="Other", --- [09:19 AM] [8]=20, --- [09:19 AM] [9]="", --- [09:19 AM] [10]=135234, --- [09:19 AM] [11]=27075, --- [09:19 AM] [12]=0, --- [09:19 AM] [13]=8, --- [09:19 AM] [14]=0, --- [09:19 AM] [15]=0, --- [09:19 AM] [17]=false - -GetItemInfo("Brief History of the Ages") - --- [09:19 AM] Dump: value=GetItemInfo("Brief History of the Ages") --- [09:19 AM] [1]="Brief History of the Ages", --- [09:19 AM] [2]="|cffa335ee|Hitem:138782::::::::110:72::::::|h[Brief History of the Ages]|h|r", --- [09:19 AM] [3]=4, --- [09:19 AM] [4]=110, --- [09:19 AM] [5]=0, --- [09:19 AM] [6]="Consumable", --- [09:19 AM] [7]="Other", --- [09:19 AM] [8]=200, --- [09:19 AM] [9]="", --- [09:19 AM] [10]=134946, --- [09:19 AM] [11]=0, --- [09:19 AM] [12]=0, --- [09:19 AM] [13]=8, --- [09:19 AM] [14]=1, --- [09:19 AM] [15]=6, --- [09:19 AM] [17]=false - -- local azeriteFilter = { -- enabled = true, -- ilvlThreshold = 800, @@ -502,7 +469,7 @@ local filters = { orderResourcesFilter, professionFilter, questItemFilter, - reicpeFilter, + -- reicpeFilter, valueFilter, } @@ -513,8 +480,16 @@ aura_env.FilterService = { ---@type table local slotsToLoot = {} for slot, item in pairs(lootInfo) do + if debug then + local itemname = getItemName(slot) + print(string.format("Checking slot %d for %s", slot, itemname)) + end for _, filter in pairs(filters) do - if filter:Run(slot) then + local res, err = filter:Run(slot) + if err then + if debug then print(err) end + end + if res then slotsToLoot[#slotsToLoot + 1] = slot break end From fb4c84acaa920c80078dc127e2e510a1b236f17d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 4 Mar 2024 09:52:08 +0100 Subject: [PATCH 36/44] Fix issue with looting AP --- LegionWA/AutoLoot/Init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 4d95c51..56f62c3 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -67,7 +67,7 @@ local function getItemSubclassId(slot) if slot == nil then return 0, string.format("Slot can not be nil") end local itemLink, err = getItemLink(slot) if err then return 0, err end - local subclassId = select(12, GetItemInfo(itemLink)) + local subclassId = select(13, GetItemInfo(itemLink)) if subclassId == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end return subclassId, nil end From dc5e2127dc47ec265b482ca3d42ce7e68e79db34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 4 Mar 2024 20:51:33 +0100 Subject: [PATCH 37/44] Implement expansion based filter for professionFilter --- LegionWA/AutoLoot/Init.lua | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 56f62c3..212afb1 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -219,6 +219,7 @@ local professionFilter = Filter.new({ ["Enchanting"] = true, } + -- Maybe implement an expansion based filter if provided.type == "Tradeskill" then if enabled[provided.subtype] then if debug then print(string.format("Profession filter pass for type %s", provided.type)) end @@ -324,20 +325,16 @@ local classGearFilter = Filter.new({ end return false end) -local arguniteFilter = Filter.new({ - ["name"] = getItemName, - ["quality"] = getItemQuality - }, +local arguniteFilter = Filter.new({ ["name"] = getItemName }, function(slot, provided) - ---@cast provided { name: string, quality: number } - if string.find(provided.name, "Argunite") and provided.quality > 1 then + ---@cast provided { name: string } + if provided.name == "Veiled Argunite" then if debug then - print(string.format("Argunite filter pass for %s and quality %d", provided.name, - provided.quality)) + print(string.format("Argunite filter pass for %s", provided.name)) end return true end - if debug then print(string.format("Argunite filter fail for %s and quality %d", provided.name, provided.quality)) end + if debug then print(string.format("Argunite filter fail for %s", provided.name)) end return false end) local ancientManaFilter = Filter.new({ ["name"] = getItemName }, From 74a1e936fb7b2abcb50708b5bd285c0becca4ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Tue, 5 Mar 2024 10:24:10 +0100 Subject: [PATCH 38/44] Rework autovendor --- LegionWA/AutoVendor/Event.lua | 6 +- LegionWA/AutoVendor/Init.lua | 280 ++++++++++++++++++++++++---------- 2 files changed, 201 insertions(+), 85 deletions(-) diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index 9e1a87b..9641a43 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -2,12 +2,12 @@ function(allstates, e) if (GetMerchantNumItems() > 0) then aura_env.allstates = allstates - + if CanMerchantRepair() == true then RepairAllItems() end - + for container = 0, 4 do for slot = 1, C_Container.GetContainerNumSlots(container) do - aura_env.filterService:run(container, slot) + aura_env.FilterService.Run(container, slot) end end return true diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua index d39f339..eacb450 100644 --- a/LegionWA/AutoVendor/Init.lua +++ b/LegionWA/AutoVendor/Init.lua @@ -1,92 +1,209 @@ local debug = false local iconDisplayDuration = 3 +---@param container number +---@param slot number +---@return string, string|nil local function getItemLink(container, slot) - return select(7, GetContainerItemInfo(container, slot)) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local link = select(7, C_Container.GetContainerItemInfo(container, slot)) + if link == nil then return "", string.format("C_Container.GetContainerItemInfo returned nil for link (arg 7)") end + return link end +---@param container number +---@param slot number +---@return string, string|nil local function getItemQuantity(container, slot) - return select(2, GetContainerItemInfo(container, slot)) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local quantity = select(2, C_Container.GetContainerItemInfo(container, slot)) + if quantity == nil then + return "", + string.format("C_Container.GetContainerItemInfo returned nil for quantity (arg 2)") + end + return quantity end +---@param container number +---@param slot number +---@return string, string|nil local function getItemName(container, slot) - return select(1, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local name = select(1, GetItemInfo(getItemLink(container, slot))) + if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end + return name end +---@param container number +---@param slot number +---@return string, string|nil local function getItemType(container, slot) - return select(6, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local type = select(6, GetItemInfo(getItemLink(container, slot))) + if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end + return type end +---@param container number +---@param slot number +---@return string, string|nil local function getItemSubtype(container, slot) - return select(7, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local subtype = select(7, GetItemInfo(getItemLink(container, slot))) + if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end + return subtype end +---@param container number +---@param slot number +---@return string, string|nil local function getItemLevel(container, slot) - return select(4, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local level = select(4, GetItemInfo(getItemLink(container, slot))) + if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end + return level end +---@param container number +---@param slot number +---@return string, string|nil local function getItemValue(container, slot) - return select(11, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local value = select(11, GetItemInfo(getItemLink(container, slot))) + if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end + return value end +---@param container number +---@param slot number +---@return string, string|nil local function getItemQuality(container, slot) - return select(3, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local quality = select(3, GetItemInfo(getItemLink(container, slot))) + if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end + return quality end +---@param container number +---@param slot number +---@return string, string|nil local function getItemEquipLocation(container, slot) - return select(9, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local equipLoc = select(9, GetItemInfo(getItemLink(container, slot))) + if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end + return equipLoc end +---@param container number +---@param slot number +---@return string, string|nil local function getItemIcon(container, slot) - return select(10, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local icon = select(10, GetItemInfo(getItemLink(container, slot))) + if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end + return icon end +---@param container number +---@param slot number +---@return string, string|nil local function getBindType(container, slot) - return select(14, GetItemInfo(getItemLink(container, slot))) + if container == nil then return "", string.format("Container is nil") end + if slot == nil then return "", string.format("Slot is nil") end + local bindType = select(14, GetItemInfo(getItemLink(container, slot))) + if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end + return bindType end +---@class Filter +---@field requires table | nil +---@field filter fun(container: number, slot: number, provided: table): boolean +Filter = { + ---@param requires table | nil + ---@param filter fun(container: number, slot: number, provided: table): boolean + ---@return Filter + new = function(requires, filter) + local self = setmetatable({}, { + __index = Filter + }) + self.requires = requires + self.filter = filter + return self + end, - -local grayFilter = { - enabled = true, - filter = function(self, container, slot) - if (self.enabled) then - aura_env.debugLog("Gray filter; container = " .. container .. ", slot = " .. slot) - local itemQuality = getItemQuality(container, slot) - if (itemQuality and itemQuality == 0) then - aura_env.debugLog("Gray filter pass") - return true + ---@param self Filter + ---@param container number + ---@param slot number + ---@return boolean, string|nil + Run = function(self, container, slot) + ---@type table + local provided = {} + if self.requires then + for k, v in pairs(self.requires) do + local res, err = v(container, slot) + if err then + if debug then print(err) end + return false, err + end + provided[k] = res end end - end -} -local gearFilter = { - enabled = true, - ilvlThreshold = 850, - sellBoe = false, - filter = function(self, container, slot) - if (self.enabled) then - aura_env.debugLog("Gear filter; container = " .. container .. ", slot = " .. slot) - local itemLevel = getItemLevel(container, slot) - local itemBindType = getBindType(container, slot) - local itemType = getItemType(container, slot) - local itemEquipLoc = getItemEquipLocation(container, slot) - if (itemType and itemEquipLoc and - (itemType == "Armor" - or itemType == "Weapon" - or itemEquipLoc == "INVTYPE_FINGER" - or itemEquipLoc == "INVTYPE_TRINKET" - or itemEquipLoc == "INVTYPE_CLOAK" - or itemEquipLoc == "INVTYPE_NECK") - and itemLevel and itemBindType and itemLevel < self.ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then - aura_env.debugLog("Gear filter pass") - return true - end + local res, err = self.filter(container, slot, provided) + if err then + if debug then print(err) end end + return res, nil end } +local grayFilter = Filter.new({ + ["quality"] = getItemQuality + }, + function(container, slot, provided) + if provided.quality == 0 then + return true + end + return false + end) +local gearFilter = Filter.new({ + ["ilvl"] = getItemLevel, + ["bindType"] = getBindType, + ["type"] = getItemType, + ["equipLoc"] = getItemEquipLocation + }, + function(container, slot, provided) + local ilvlThreshold = 850 + local sellBoe = false + + if provided.type == "Armor" + or provided.type == "Weapon" + or provided.equipLoc == "INVTYPE_FINGER" + or provided.equipLoc == "INVTYPE_TRINKET" + or provided.equipLoc == "INVTYPE_CLOAK" + or provided.equipLoc == "INVTYPE_NECK" then + if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then + return true + end + end + return false + end) + +---@param container number +---@param slot number +---@return nil, string|nil local function doSell(container, slot) - local itemIcon = getItemIcon(container, slot) - local itemName = getItemName(container, slot) - local itemQuantity = getItemQuantity(container, slot) - local itemQuality = getItemQuality(container, slot) + local itemIcon, err = getItemIcon(container, slot) + if err then return nil, string.format("Error getting item icon: %s", err) end + local itemName, err = getItemName(container, slot) + if err then return nil, string.format("Error getting item name: %s", err) end + local itemQuantity, err = getItemQuantity(container, slot) + if err then return nil, string.format("Error getting item quantity: %s", err) end + local itemQuality, err = getItemQuality(container, slot) + if err then return nil, string.format("Error getting item quality: %s", err) end - aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" - local nameWithQuantity = nameWithColor .. " x" .. itemQuantity + local nameWithColor = string.format("%s[%s]\124r", aura_env.qualityColors[itemQuality + 1], itemName) + local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity) - aura_env.debugLog("Assigning name" .. nameWithQuantity) aura_env.allstates[#aura_env.allstates + 1] = { show = true, changed = true, @@ -103,38 +220,37 @@ local function doSell(container, slot) autoHide = true, } - UseContainerItem(container, slot) + C_Container.UseContainerItem(container, slot) + return nil, nil end - -aura_env.filterService = { - filters = { - grayFilter, - gearFilter, - }, - slotsToLoot = {}, - run = function(self, container, slot) - aura_env.debugLog("Filtering item in container = " .. container .. ", slot = " .. slot .. "...") - if (not getItemLink(container, slot)) then - aura_env.debugLog("Slot empty") - return - end - for k, filter in pairs(self.filters) do - if (filter:filter(container, slot)) then - doSell(container, slot) - return - end - end - end +---@type table +local filters = { + grayFilter, + gearFilter } -aura_env.debugLog = function(obj) - if (debug) then - print(GetTime()) - DevTools_Dump(obj) - print() - end -end +---@class FilterService +aura_env.FilterService = { + ---@param container number + ---@param slot number + ---@return nil, nil + Run = function(container, slot) + local itemLink, err = getItemLink(container, slot) + if err then return nil, string.format("Err: slot empty (%d-%d) - %s", container, slot, err) end + for k, filter in pairs(filters) do + local res, err = filter:Run(container, slot) + if err then + if debug then print(err) end + else + if res then + doSell(container, slot) + return + end + end + end + end, +} aura_env.qualityColors = { "\124cff9d9d9d", -- Poor @@ -145,4 +261,4 @@ aura_env.qualityColors = { "\124cffff8000", -- Legendary "\124cffe6cc80", -- Artifact "\124cff00ccff", -- Heirloom -} \ No newline at end of file +} From 3a41afa676215bd1e28c338c30cb802c575a8831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Tue, 5 Mar 2024 10:34:02 +0100 Subject: [PATCH 39/44] Fix issues with autovendor --- LegionWA/AutoVendor/Event.lua | 2 +- LegionWA/AutoVendor/Init.lua | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index 9641a43..35fc738 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -6,7 +6,7 @@ function(allstates, e) if CanMerchantRepair() == true then RepairAllItems() end for container = 0, 4 do - for slot = 1, C_Container.GetContainerNumSlots(container) do + for slot = 1, GetContainerNumSlots(container) do aura_env.FilterService.Run(container, slot) end end diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua index eacb450..13ad485 100644 --- a/LegionWA/AutoVendor/Init.lua +++ b/LegionWA/AutoVendor/Init.lua @@ -7,8 +7,8 @@ local iconDisplayDuration = 3 local function getItemLink(container, slot) if container == nil then return "", string.format("Container is nil") end if slot == nil then return "", string.format("Slot is nil") end - local link = select(7, C_Container.GetContainerItemInfo(container, slot)) - if link == nil then return "", string.format("C_Container.GetContainerItemInfo returned nil for link (arg 7)") end + local link = select(7, GetContainerItemInfo(container, slot)) + if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end return link end ---@param container number @@ -17,10 +17,10 @@ end local function getItemQuantity(container, slot) if container == nil then return "", string.format("Container is nil") end if slot == nil then return "", string.format("Slot is nil") end - local quantity = select(2, C_Container.GetContainerItemInfo(container, slot)) + local quantity = select(2, GetContainerItemInfo(container, slot)) if quantity == nil then return "", - string.format("C_Container.GetContainerItemInfo returned nil for quantity (arg 2)") + string.format("GetContainerItemInfo returned nil for quantity (arg 2)") end return quantity end @@ -220,7 +220,7 @@ local function doSell(container, slot) autoHide = true, } - C_Container.UseContainerItem(container, slot) + UseContainerItem(container, slot) return nil, nil end From adc02181693cc1d9446ac9531598d176e61ed943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Tue, 5 Mar 2024 21:27:32 +0100 Subject: [PATCH 40/44] Add argunite cluster filter --- LegionWA/AutoLoot/Init.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index 212afb1..b0a26c0 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -377,6 +377,16 @@ local bloodhunerQuarryFilter = Filter.new({ ["name"] = getItemName }, if debug then print(string.format("Bloodhunter's Quarry filter fail for %s", provided.name)) end return false end) +local arguniteClusterFilter = Filter.new({ ["name"] = getItemName }, + function(slot, provided) + ---@cast provided { name: string } + if provided.name == "Argunite Cluster" then + if debug then print(string.format("Argunite Cluster filter pass for %s", provided.name)) end + return true + end + if debug then print(string.format("Argunite Cluster filter fail for %s", provided.name)) end + return false + end) local boeFilter = Filter.new({ ["ilvl"] = getItemLevel, ["type"] = getItemType, @@ -468,6 +478,7 @@ local filters = { questItemFilter, -- reicpeFilter, valueFilter, + arguniteClusterFilter, } ---@class FilterService From d163cf93ebf9b8c66407daf83998d103981f60d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Thu, 7 Mar 2024 12:24:39 +0100 Subject: [PATCH 41/44] Move some new weakauras to special foldr --- LegionWA/AutoLoot/AutoLootDisplay/Event.lua | 8 - LegionWA/AutoLoot/AutoLootDisplay/Init.lua | 34 - LegionWA/AutoLoot/Event.lua | 6 - LegionWA/AutoLoot/Event2.lua | 6 - LegionWA/AutoLoot/Export | 1 - LegionWA/AutoLoot/Init.lua | 848 -------------------- LegionWA/AutoVendor/Event.lua | 15 - LegionWA/AutoVendor/Export | 1 - LegionWA/AutoVendor/Init.lua | 264 ------ 9 files changed, 1183 deletions(-) delete mode 100644 LegionWA/AutoLoot/AutoLootDisplay/Event.lua delete mode 100644 LegionWA/AutoLoot/AutoLootDisplay/Init.lua delete mode 100644 LegionWA/AutoLoot/Event.lua delete mode 100644 LegionWA/AutoLoot/Event2.lua delete mode 100644 LegionWA/AutoLoot/Export delete mode 100644 LegionWA/AutoLoot/Init.lua delete mode 100644 LegionWA/AutoVendor/Event.lua delete mode 100644 LegionWA/AutoVendor/Export delete mode 100644 LegionWA/AutoVendor/Init.lua diff --git a/LegionWA/AutoLoot/AutoLootDisplay/Event.lua b/LegionWA/AutoLoot/AutoLootDisplay/Event.lua deleted file mode 100644 index a87e0f7..0000000 --- a/LegionWA/AutoLoot/AutoLootDisplay/Event.lua +++ /dev/null @@ -1,8 +0,0 @@ --- CHAT_MSG_LOOT -function(allstates, e, msg) - if (msg:match("You receive loot")) then - aura_env.allstates = allstates - aura_env.drawIcon(msg) - return true - end -end diff --git a/LegionWA/AutoLoot/AutoLootDisplay/Init.lua b/LegionWA/AutoLoot/AutoLootDisplay/Init.lua deleted file mode 100644 index 344f555..0000000 --- a/LegionWA/AutoLoot/AutoLootDisplay/Init.lua +++ /dev/null @@ -1,34 +0,0 @@ -local iconDisplayDuration = 3 - -aura_env.getItemInfo = function(msg) - local name = msg:match("h%[(.+)%]") or "" - local quantity = msg:match("x(%d+)") or 1 - - local icon = 134400 - if WeakAurasSaved.Cyka.ItemCache[name] then - icon = WeakAurasSaved.Cyka.ItemCache[name].icon - end - local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff" - - return name, icon, quantity, color -end - -aura_env.drawIcon = function(msg) - local name, icon, quantity, color = aura_env.getItemInfo(msg) - - local formattedName = "\124cff" .. color .. "[" .. name .. "]\124r x" .. quantity - aura_env.allstates[#aura_env.allstates + 1] = { - show = true, - changed = true, - index = GetTime(), - resort = true, - - icon = icon, - name = formattedName, - - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } -end \ No newline at end of file diff --git a/LegionWA/AutoLoot/Event.lua b/LegionWA/AutoLoot/Event.lua deleted file mode 100644 index 5cb25a8..0000000 --- a/LegionWA/AutoLoot/Event.lua +++ /dev/null @@ -1,6 +0,0 @@ --- LOOT_READY -function(e) - C_Timer.After(0.1, function() - WeakAuras.ScanEvents("DO_AUTOLOOT") - end) -end diff --git a/LegionWA/AutoLoot/Event2.lua b/LegionWA/AutoLoot/Event2.lua deleted file mode 100644 index e4ffcb4..0000000 --- a/LegionWA/AutoLoot/Event2.lua +++ /dev/null @@ -1,6 +0,0 @@ --- DO_AUTOLOOT -function(e) - local lootInfo = GetLootInfo() - aura_env.FilterService.Run(lootInfo) - CloseLoot() -end diff --git a/LegionWA/AutoLoot/Export b/LegionWA/AutoLoot/Export deleted file mode 100644 index 2960a41..0000000 --- a/LegionWA/AutoLoot/Export +++ /dev/null @@ -1 +0,0 @@ -dqvKpcGiK8iuukUeiOAuOsNcvzvqLu8kuuQMfuClOIDjqddu1Xqv1YGkjptiv10esLRHIsSnHufFdeumoHqY5abLwNqeVdueUNiTpHqQ)bvsPoikQwiOi9qHuMOqKUiuj2iOO(iuPAKOQ0jfswjKEjOiYmHsUjOs2PqWpbbgkkkokuPSuHq8ubmvq0vrrP0wbb5RcrDwuusVveMlujv3veTxu4VGkgS6WsAXOu9yuXKf0Lb2mk5ZqvJgu60s1Qfsv61GqZwk3gK2Te)wudhk1Xfc1YrQNdX0rCDHA7OiFhuy8Gk15rPSEqruVhvfnFOsk5(OQW(PzWpdizeOYasgegbqyeaxfKzji)4kC4Nzbh8qyJUONOho8dHLraOmceYiqidizeiSJe9gx4q6mbyeO2AmcWgeWIfcGWicmlrF4zeOYH0zcajDhpEanCLdbmIao8dpJaiyx5ayeb4zeab0yXm5EHWiaKqaZGfUaZqYiqT1XxyealCbMHKraybD8WsyaZrhZc8r)Oh45hcdeMOlIIzj64p6IogSWj6ywyeOLRHmGKrasTbkeCfdizeaACJ0zajdcdcJaKAduimGKraOXnsNbKmimimcqNBagqYia04gPZasgegegbc7Sy15e3iSXasgbGg3iDgqYGWGWiaDLdGbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbWMjSj1gOqyajJaqJBKodizqyqyeGvLdPNlmGKraOXnsNbKmimimceJaGdNwfbHb7mimculDOvcGbmLraAa(EUajBydyeiKTsfANdE6Cm2mcaGBSRLqqidykJae6oE8aAgqYiacSzyabfgbqGnddiOWCoKotagegb6HmcW8ysgRCMWiqVqa0LAdcbOr65cJie9zeOedfs6oE8aAegrGFgbGBiGfleaHreWbct0bpJa9sNahesLMaczeb(zeag9qcSmG5OJzb(OF0d88dHbct0frXSeD8hDrhdw4eDrpmimcWHbKmIa)mGKracaUj8dZ5cjqhMmGreWvWZiqyhj6nUWH0zcWiqT1yeOYH0zcajDhpEanCLdbmIao8dpJavoKEUGWasgbqivAcdizeimdhOaeKkEad2zqyeOx6egqYiqygoCIrizOmGPmcWjgHKHYiqlZP28qa7X49uNvTHaeTZYlzIhzqfImpMUIeOYei0jWckEKbviY8y6ksGktGqp15t(WbLqr7S8sM4rguHiZJPRibQmbcdgn2Gy1jWckEKbviY8y6ksGktGWGrJniw9uNp5dhucfTZYlzIhzqfImpMUIeOYeimy0ydI1GrraqJwLdSaNalO4rguHiZJPRibQmbcdgn2Gynyuea0Ov5alWtD(KpCqjuurXbhhAfIaN9woh6zwosLgpGUI4S6ncGwuCWX7ea0iuHcW4Dcakw9ceX4DcakUfxBDcBy8obaflatGggVtaqHREblatGggVtaqHKnSby8obanqm7qYg2amDcaAasLdeJwoUqW4DcakUeXXDSXkZbJ3jaOqcGBsmnaJJaAnMHUZbGX50QiirfPyCKy250QiirfPyC27LqizdBagaCJDLturkghbqIksX4DKOrxzr6f8reqfpOq8uh3bKOiaOrvyL5I0YeEIIdoElNjrXjxW4TCMeHkuagVLZeClUwiDcByCoX00Gch2IksX4TCMGBX1wNWggVL5arqigVJGBXaesueaumEehdqirfPy8ocZ5q6mb8uh3beSYzsGwMevHvMlslt4jko44y1lq0rYqbKouaIhMbiEjtCyKPHOOTmNAZzfx4q65IJhqIIaGIvVarUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asueauS6fi6uEWGojJqO7f8CrAzcpEI6U7DwoxKwM4PPEP345eybfNgqIPlEP3Cqjuu3DNgqIPloUdiyLZKaTmbREbICrAzcprbLqrBzo1MZkUWH0ZfhpGefbancvOaUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asuea0iuHcCkpyqNKri09cEUiTmHhprD39olNlslt80uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiCXvyCChqWkNjbAzsufwzUiTmHhprbLqrBzo1MZkUWH0ZfhpGefbafs2WgWfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGcjBydCkpyqNKri09cEUiTmHhprD39olNlslt80uV0B8CcSGItdiX0fV0BoOekQ7U3YCQnVtaqXQxGON64bKOiaOy1lqKlslt4jQ7U3z5C7eauS6fi6PPEP345eybfNgqIPlEP3Cqjuu3DNgqIPlocOb4q4g9GXXDajkcaAufwzUDcakw9ce5Xtuqju0wMtT5SIlCi9CXXdirraqdeZoHnSbCrAzcprD39AmDfoGctbdbShJhRmEUu4bKOiaObIzNWg2aNYdg0jzecDVGNlslt4Xtu3DVZY5I0Yepn1l9gpNalO40asmDXl9MdkHI6U7TmNAZ7eauS6fi6PoEajkcakw9ce5I0YeEI6U7Dwo3obafREbIEAQx6nEobwqXPbKy6Ix6nhucf1D3PbKy6IJaAaoeUqyW44oGefbanQcRm3obafREbI84jkOekAlZP2CwXfoKEU44bKOiaOybyc04I0YeEI6U71y6kCafMcgcypgpwz8CPWdirraqXcWeO5uEWGojJqO7f8CrAzcpEI6U7DwoxKwM4PPEP345eybfNgqIPlEP3Cqjuu3DVL5uBENaGIvVarp1XdirraqXQxGixKwMWtu3DVZY52jaOy1lq0tt9sVXZjWckonGetx8sV5GsOOU7onGetxCeqdWHWn6W44oGefbanQcRm3obafREbI84jkOekAlZP2CwXfoKEU44bKOiaOqOAlgWfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGcHQTyGt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD39wMtT5Dcakw9ce9uhpGefbafREbICrAzcprD39olNBNaGIvVarpn1l9gpNalO40asmDXl9MdkHI6U70asmDXranahcx(5hJJ7asuea0OkSYC7eauS6fiYJNOGsOOTmNAZzfx4q65IJhqIIaGIBX1cPtyJlslt4jQ7UxJPRWbuykyiG9y8yLXZLcpGefbaf3IRfsNWMt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD3DAajMU4iGgGdHB0hJJ7acw5mjqltIQWkZfPLj84jkOekAlZP2CwXfoKEU44bKOiaO4wCT1jSXfPLj8e1D3RX0v4akmfmeWEmESY45sHhqIIaGIBX1wNWMt5bd6KmcHUxWZfPLj84jQ7U3z5CrAzINM6LEJNtGfuCAajMU4LEZbLqrD39wMtT5Dcakw9ce9uhpGefbafREbICrAzcprD39olNBNaGIvVarpn1l9gpNalO40asmDXl9MdkHI6U70asmDXranahc3Opgh3bKOiaOrvyL52jaOy1lqKhprbLqrBzo1MZkUWH0ZfhpGefbafxI44o2yL5uj9CHlslt4jQ7UxJPRWbuykyiG9y8yLXZLcpGefbafxI44o2yL5uj9CXP8GbDsgHq3l45I0YeE8e1D37SCUiTmXtt9sVXZjWckonGetx8sV5GsOOU7ElZP28obafREbIEQJhqIIaGIvVarUiTmHNOU7ENLZTtaqXQxGONM6LEJNtGfuCAajMU4LEZbLqrD3DAajMU4iGgGdHlewmoUdirraqJQWkZTtaqXQxGipEIckHI2YCQnNvCHdPNloEajkcaAuCYfUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8asuea0O4KloLhmOtYie6EbpxKwMWJNOU7ENLZfPLjEAQx6nEobwqXPbKy6Ix6nhucf1D3Bzo1M3jaOy1lq0tD8asueauS6fiYfPLj8e1D37SCUDcakw9ce90uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiC5hEmoUdirraqJQWkZTtaqXQxGipEIckHI2YCQnNvCHdPNloEabM2lHqYg2aUiTmHNOU7EnMUchqHPGHa2JXJvgpxk8acmTxcHKnSboLhmOtYie6EbpxKwMWJNOU7ENLZfPLjEAQx6nEobwqXPbKy6Ix6nhucf1D3Bzo1M3jaOy1lq0tD8asueauS6fiYfPLj8e1D37SCUDcakw9ce90uV0B8CcSGItdiX0fV0BoOekQ7UtdiX0fhb0aCiC5p6W44oGefbanQcRm3obafREbI845zAhErbLqrfv0wMtT5HzSYzIN6SIlCi9CHlslt4jQ7UxJPRWbuykyiG9y8yLXZLcRCM0l4DKwMejoLhmOtYie6EbpxKwMWJNOU7ow5mjqlt4I0YeEIkQ7U3YCQnVtaqJItU4PoEajkcaAuCYfUiTmHNNPD(J(rx0bp8I6U7TmNAZ7ea0iuHc8uhpGefbancvOaUiTmHNNPDkMTfiwYWOqjQ7U3jaOrOcf4PENaGgHkuqKGhjMDUu46fkmofgNINOU7ElZP28obaf3IRToHnp1XdirraqXT4ARtyJlslt45zAhErf1D37S8sM4rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirNaGgHkuqsNalOiQ7U7U7rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirNaGgHkuqsp15trD3D3D3D37CYfp17ea0O4Klye1D3D3D3DpIJRToHnp17eauClU26e2WiQ7U7U78HOU7oOekkOekQOI2YCQnhFUfcZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUu4EUf6S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqJqfkWtD8asuea0iuHc4I0YeEI6U7U7U7UJdoEuo(yacI3jEygG4LmXrIXg7mnXHGiI3lonapaUX1wu3D3D3D3DCWX7ea0iuHcIeOvchy5sbHhYS7C5I75wipCTW1IBGEJjanpCTW1IB0YyJnGMhpkEI6U7U7U7U3z5C7ea0sfkWRLqVtaqJqfkisGwjCGLlfeEiZUJ75wifppt7DcaAeQqbrc0kHdSCPGWdz29a9gtaAkEEM27ea0iuHcIeOvchy5sbHhYS7rlJn2aAkE8CcSGIOU7U7U7U7U7EnMUchqHPGHa2JXJvgpxkCp3cDw9gbq7yxrqO4jQ7U7U7U7U7UtdiX0fNqhde1D3D3D3Dhucf1D3D3D3DVgtxHdOWuWqa7X4XkJNlfUNBHoREJaODw1EZP8GbDsgHq3l452jaOrOcfWJNOU7U7UdkHI6U7GsOO8HOTmNAZZ0Ha6icajhtZbGaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUureasoMMdWz1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGgHkuGN64bKOiaOrOcfWfPLj8e1D3D3D3DVZY52jaOrOcf41sO3jaOrOcfejqReoWYLccOdb0EebGKJP5aqO4XZjWckI6U7U7U7U7U71y6kCafMcgcypgpwz8CPGa6qaTtdqYX0CaoREJaODSRiiu8e1D3D3D3D3D3PbKy6ItOJbI6U7U7U7UdkHI6U7U7U7UxJPRWbuykyiG9y8yLXZLccOdb0onajhtZb4S6ncG2zv7nNYdg0jzecDVGNBNaGgHkuapEI6U7U7oOekQ7UdkHIYhI2YCQnhAoUqG5EJaO9uNpf1D3bLk7nqON6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxk4khxioREJaOHjCKwMejoLhmOtYie6EbpxKwMWJNOU7U7U7U7TmNAZ7eauizdBGN64bKOiaOqYg2aUiTmHNOU7U7U7U7Dwo3obafs2Wg41sO3jaOqYg2apn1PGRCCHqXZjWckI6U7U7U7U7U71y6kCafMcgcypgpwz8CPGRCCH4S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxk4khxioREJaODw1EZP8GbDsgHq3l452jaOqYg2aE8e1D3D3Dqjuu3DhucfLpeTL5uBEVXudM7ncG2tD(uu3DhuQS3aHEQtOJbye1D37nMAqclnab2Cl0t9iQik4XiQ7UZQ3iaAp1zfx4q65cxeqJfghPLj8e1D3D39olNlcOXkiOuzVbc55eybfrD3D3D3D3RX0v4akmfmeWEmESY45sffwm1Cw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOybyc08uhpGefbaflatGgxKwMWtu3D3D3D39olNBNaGIfGjqZRLqVtaqXcWeO5r0ocOXkyVXudsyPbiWMBH8CcSGIOU7U7U7U7U7EnMUchqHPGHa2JXJvgpxQOiaOEdWeO5S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxQOiaOEdWeO5S6ncG2zv7nNYdg0jzecDVGNBNaGIfGjqJhprD3D3Dhucf1D3bLqr5drBzo1MJnDMfabPNlWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7oSaA2r8uNqhdWiQ7UZPLjW6PoRAdbGru3Dptd8uNvTHaWiQ7U3avcSaAp1zvBiamI6U7CYzi2l49uNqhdWiQ7U3liCO7yt65IN6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkMHoZcGG0ZfNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcakKSHnWtD8asueauizdBaxKwMWtu3D3D3D39wMtT5DcaAGy2jSHnWtD8asuea0aXStydBaxKwMWtu3D3D3D39olNBNaGcjByd8Aj07eauizdBGNM6uqsxdbiqS3Au8CcSGIOU7U7U7U7U7ENLZTtaqdeZoHnSbETe6C7ea0aXStydBGNM6u8fqZoLxlHocOXkiSaA2r4jQ7U7U7U7U7UNPDUDcaAGy2jSHnWttDkSavcSaAkVwcDeqJvWgOsGfqZtu3D3D3D3D3Dpt7C7ea0aXStydBGNM6urRLjWs51sOJaAScYPLjWYtu3D3D3D3D3Dpt7C7ea0aXStydBGNM6uqanGYRLqhb0yfmtd4jQ7U7U7U7U7UNPDUDcaAGy2jSHnWttDQOLZqSxWt51sOJaAScYjNHyVGNNOU7U7U7U7U7EM252jaObIzNWg2apn1PIQGWHUJnPNluETe6iGgRG9cch6o2KEUWJNtGfue1D3D3D3D3D3D39AmDfoGctbdbShJhRmEUumdDMfabPNloREJaODSRiiu8e1D3D3D3D3D3D3DAajMU4e6yGOU7U7U7U7U7oOekQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxkMHoZcGG0ZfNvVra0oRAV5uEWGojJqO7f8C7eauizdBappyqNYP8GbDsgHq3l452jaObIzNWg2aE8e1D3D3Dqjuu3DhucfLpeTL5uBot1wmaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3zQ2Ibqclnab2Cl0t9OpZIJRX5hE4DCno)WdpgrD39k2y3ydsyPbiWMBHqMJIaGgGu5arp1zvBiamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUuqOAlg4S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqHq1wmWtD8asueauiuTfd4I0YeEIkQ7U7U7U7ENLZfb0yfSIn2n2GewAacS5wiK5OiaObivoqKNtGfue1D3D3D3D3D3Bzo1M3jaO4wCTq6e28uhpGefbaf3IRfsNWgxKwMWtu3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfKWcOboaU7ieNYdg0jzecDVGNBNaGIBX1cPtyJNhmOt5DcakI3losltCkpyqNKri09cEUiTmHhprD3D3D3D3D39obafcvBXap17eauiuTfdCCnENaGIBX1cPtytu3D3D3D3DqjuurD3D3D3D37SCUDcakeQ2IbETe6DcakeQ2IbEeTJaAScYuTfdGewAacS5wipNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLccvBXaNvVra0o2veekEI6U7U7U7U7U70asmDXj0XarD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sbHQTyGZQ3iaANvT3CkpyqNKri09cEUDcakeQ2Ib84jQ7U7U7GsOOU7oOekkFiAlZP2C80a2Gq1wmaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3XbhpaG4eyPbiWMBHoj7W7KS3YzIxBnhpnGnerD3DMQTyaKWsdqGn3c9up6CCno)WdVJRX5hE4XiQ7UxXg7gBqclnab2CleYCuea0aKkhi6PoRAdbGru3DNvVra0EQZkUWH0ZfUiGglmoslt4jQ7U7U7DwoxeqJvqqPYEdeYZjWckI6U7U7U7UxJPRWbuykyiG9y8yLXZLc3PbS5mvBXaNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcakUfxBDcBEQJhqIIaGIBX1wNWgxKwMWtu3D3D3D39olNBNaGIBX1wNWMxlHENaGIBX1wNWMNM6WZZjWckI6U7U7U7U7U7TmNAZ7eauiuTfd8uhpGefbafcvBXaUiTmHNOI6U7U7U7U7U7DwoxeqJvWk2y3ydsyPbiWMBHqMJIaGgGu5arEobwqru3D3D3D3D3D3D3Bzo1M3jaO4wCTq6e28uhpGefbaf3IRfsNWgxKwMWtu3D3D3D3D3D3D3RX0v4akmfmeWEmESY45sbjSaAGdG7ocXP8GbDsgHq3l452jaO4wCTq6e245bd6uENaGI49IJ0YeNYdg0jzecDVGNlslt4Xtu3D3D3D3D3D3D37eauiuTfd8uVtaqHq1wmWX14DcakUfxlKoHnrD3D3D3D3D3DqjuurD3D3D3D3D39olNBNaGcHQTyGxlHENaGcHQTyGhr7iGgRGmvBXaiHLgGaBUfYZjWckI6U7U7U7U7U7U7EnMUchqHPGHa2JXJvgpxkCNgWMZuTfdCw9gbq7yxrqO4jQ7U7U7U7U7U7U70asmDXj0XarD3D3D3D3D3Dqjuu3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfUtdyZzQ2IboREJaODw1EZP8GbDsgHq3l452jaOqOAlgWJNOU7U7U7U7GsOOU7U7U7U71y6kCafMcgcypgpwz8CPWDAaBot1wmWz1BeaTZQ2BoLhmOtYie6Ebp3obaf3IRToHnE8e1D3D3Dqjuu3DhucfLpeTL5uBEehdqirraqH5EJaO9uNpf1D3bLk7nqON6e6yagrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkClgGq8oba1z1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGcjByd8uhpGefbafs2WgWfPLj8e1D3D3D3DVL5uBENaGgiMDcByd8uhpGefbanqm7e2WgWfPLj8e1D3D3D3DVZY52jaOqYg2aVwc9obanqm7e2Wg41sO3jaOqYg2apn1PWTyacHYRLqVtaqdeZoHnSbEAQtHBXaecfpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLc3IbieVtaqDw9gbq7yxrqO4jQ7U7U7U7U7UtdiX0fNqhde1D3D3D3Dhucf1D3D3D3DVgtxHdOWuWqa7X4XkJNlfUfdqiENaG6S6ncG2zv7ioLhmOtYie6Ebp3obafs2WgWZdg0PCkpyqNKri09cEUDcaAGy2jSHnGhprD3D3Dhucf1D3bLqr5drBzo1MZPvrqWDqLgM7ncG2tD(uu3DhuQS3aHEQtOJbye1D37nMAqclnab2Cl0t9ik4HhJOU7EehxBDcBqclnab2Cl0tDCfgrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOqYg2ap1XdirraqHKnSbCrAzcprD3D3D3D3Bzo1M3jaO4seh3XgRmhp1XdirraqXLioUJnwzovspx4I0YeEI6U7U7U7U3z5C7eauizdBGNM6umNgAMMsu3D3D3D39mT3jaOqYg2apn1PImOIDUqjQ7U7U7U7EM27eauCjIJ7yJvMJNM6urfbieKmRmdUahyoQiG74seHsu3D3D3D39mT3jaO4seh3XgRmhpn1PIkcqiizwzgCboqgrIkcWKWfiPe1D3D3D3Dpt7DcakUeXXDSXkZXttDQOIaecsMvMbxGt0WccyomjkrD3D3D3D3Z0ENaGIlrCChBSYC80uNkQiaHGKzLzWf4ebCjAWKO45eybfrD3D3D3D3D39wMtT5DcakwaManp1XdirraqXcWeOXfPLj8e1D3D3D3D3D3Bzo1M3jaO4wCT1jS5PoEajkcakUfxBDcBCrAzcprD3D3D3D3D39wMtT5DeCjIJ7yJDL9gWt9AmDfoGctbrGyV1qsGaAaoeUrFmoZ2sNeTwfbHlf2TkBaAkE8sMajMDcByds6PPo)IkQ7U7U7U7U7U3z5C7i4seh3Xg7k7nGxlHENaGIfGjqZJODeqJvWEJPgKWsdqGn3c9Aj07eauClU26e28iAhb0yfmIJRToHniHLgGaBUfYZjWckI6U7U7U7U7U7U7EnMUchqHPGHa2JXJvgpxQO1QiioEqL2z1BeaTJDfbHINOU7U7U7U7U7U7UtdiX0fNqhde1D3D3D3D3D3bLqrD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sfTwfbXXdQ0oREJaODw1oIt5bd6KmcHUxWZTtaqHKnSb88GbDkNYdg0jzecDVGNBNaGIlrCChBSYC4Xtu3D3D3bLqrD3Dqjuu(q0wMtT5vyYa6obaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U79gtniHLgGaBUf6PEef8WJru3DpIJRToHniHLgGaBUf6PoUcJOU7oREJaO9uNvCHdPNlCranwyCKwMWtu3D3D37SCUiGgRGGsL9giKNtGfue1D3D3D3DVgtxHdOWuWqa7X4XkJNlfZHjdO7eGZQ3iaAychPLjrIt5bd6KmcHUxWZfPLj84jQ7U7U7U7ElZP28obafs2Wg4PoEajkcakKSHnGlslt4jQ7U7U7U7ElZP28obanqm7e2Wg4PoEajkcaAGy2jSHnGlslt4jQ7U7U7U7ElZP28obaf3IRToHnp1XdirraqXT4ARtyJlslt4jQ7U7U7U7ENLZTtaqHKnSbETe6DcaAGy2jSHnWRLqVtaqXT4ARtyZRLqVtaqHKnSbEAQtfTCbjgAL9gGYRLqVtaqdeZoHnSbEAQtbbeyb0uETe6DcakUfxBDcBEeTZppNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI5WKb0DcWz1BeaTJDfbHINOU7U7U7U7U7onGetxCcDmqu3D3D3D3Dqjuu3D3D3D39AmDfoGctbdbShJhRmEUumhMmGUtaoREJaODw1oIt5bd6KmcHUxWZTtaqHKnSb88GbDkNYdg0jzecDVGNBNaGgiMDcByd45bd6uoLhmOtYie6Ebp3obaf3IRToHnE8e1D3D3Dqjuu3DhucfLpeTL5uBELgFCPtaWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7EehxBDcBqclnab2Cl0tD(XiQ7UZQ3iaAp1zfx4q65cxeqJfghPLj8e1D3D39olNlcOXkiOuzVbc55eybfrD3D3D3D3RX0v4akmfmeWEmESY45sXCA8XLob4S6ncGgMWrAzsK4uEWGojJqO7f8CrAzcpEI6U7U7U7U3YCQnVtaqJqfkWtD8asuea0iuHc4I0YeEI6U7U7U7U3YCQnVtaqXT4ARtyZtD8asueauClU26e24I0YeEI6U7U7U7U3z5C7ea0iuHc8Aj07eauClU26e28Aj07ea0iuHcIeOvchy5sXCA8XLobqXZRLqVtaqXT4ARtyZJODeqJvWioU26e2GewAacS5wipNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI504JlDcWz1BeaTJDfbHINOU7U7U7U7U7onGetxCcDmqu3D3D3D3Dqjuu3D3D3D39AmDfoGctbdbShJhRmEUumNgFCPtaoREJaODw1oIt5bd6KmcHUxWZTtaqJqfkGNhmOt5uEWGojJqO7f8C7eauClU26e24Xtu3D3D3bLqrD3Dqjuu(q0wMtT51cNoOqGRAPcZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7rCCT1jSbjS0aeyZTqp15hJOU7oREJaO9uNvCHdPNlCranwyCKwMWtu3D3D37SCUiGgRGGsL9giKNtGfue1D3D3D3DVgtxHdOWuWqa7X4XkJNlfZlC6GcXHwlvNvVra0WeosltIeNYdg0jzecDVGNlslt4Xtu3D3D3D39wMtT5DcaAeQqbEQJhqIIaGgHkuaxKwMWtu3D3D3D39olNBNaGgHkuGxlHENaGgHkuqKaTs4alxkMx40bfIdx1sLIhpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLI5foDqH4qRLQZQ3iaAh7kccfprD3D3D3D3D3DAajMU4e6yGOU7U7U7U7GsOOU7U7U7U71y6kCafMcgcypgpwz8CPyEHthuio0AP6S6ncG2zv7nNYdg0jzecDVGNBNaGgHkuapEI6U7U7oOekQ7UdkHIYhI2YCQnNg05GnaM7ncG2tD(uu3DhuQS3aHEQtOJbye1D3z1BeaTN6SIlCi9CHlcOXcJJ0YeEI6U7U7ENLZfb0yfeuQS3aH8CcSGIOU7U7U7U71y6kCafMcgcypgpwz8CPIiaoDSboREJaOHjCKwMejoLhmOtYie6EbpxKwMWJNOU7U7U7U7TmNAZ7ea0iuHc8uhpGefbancvOaUiTmHNOU7U7U7U7Dwo3obancvOaVwcDUDcaAeQqbrc0kHdSCPIiaoDSbu88mT3jaOrOcfejqReoWYLcsahyl9iogqXJhpNalOiQ7U7U7U7U7UxJPRWbuykyiG9y8yLXZLkIa40Xg4S6ncG2XUIGqXtu3D3D3D3D3DNgqIPloHogiQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxQicGthBGZQ3iaANvT3CkpyqNKri09cEUDcaAeQqb84jQ7U7U7GsOOU7oOekkFiAlZP2C2B5CieWkqLgpGUIaZ9gbq7PoFkQ7Udkv2BGqp1j0XamI6U7S6ncG2tDwXfoKEUWfb0yHXrAzcprD3D3DVZY5IaAScckv2BGqEobwqru3D3D3D39AmDfoGctbdbShJhRmEUuW0woh6zwEGknEaDfXz1BeanmHJ0YKiXP8GbDsgHq3l45I0YeE8e1D3D3D3DVL5uBENaGgHkuGN64bKOiaOrOcfWfPLj8e1D3D3D3DVZY52jaOrOcf41sO3jaOrOcfejqReoWYLkqLgpGUIqXJNtGfue1D3D3D3D3D3RX0v4akmfmeWEmESY45sbtB5CONz5bQ04b0veNvVra0o2veekEI6U7U7U7U7U70asmDXj0XarD3D3D3D3bLqrD3D3D3D3RX0v4akmfmeWEmESY45sbtB5CONz5bQ04b0veNvVra0oRAV5uEWGojJqO7f8C7ea0iuHc4Xtu3D3D3bLqrD3Dqjuu(q0wMtT5SNbWCVra0EQZNI6U7GsL9gi0tDcDmaJOU7EVXudsyPbiWMBHEQhrbp8ye1D3J44ARtydsyPbiWMBHEQZpgrD3Dw9gbq7PoR4chspx4IaASW4iTmHNOU7U7U3z5CranwbbLk7nqipNalOiQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbqdt4iTmjsCkpyqNKri09cEUiTmHhprD3D3D3D3Bzo1M3jaOqYg2ap1XdirraqHKnSbCrAzcprD3D3D3D3Bzo1M3jaO4seh3XgRmhp1XdirraqXLioUJnwzovspx4I0YeEI6U7U7U7U3z5C7eauizdBGNM6umNgAMMsu3D3D3D39mT3jaOqYg2apn1PImOIDUqjQ7U7U7U7EM27eauCjIJ7yJvMJNM6urfbieKmRmdUahyoQiG74seHsu3D3D3D39mT3jaO4seh3XgRmhpn1PIkcqiizwzgCboqgrIkcWKWfiPe1D3D3D3Dpt7DcakUeXXDSXkZXttDQOIaecsMvMbxGt0WccyomjkrD3D3D3D3Z0ENaGIlrCChBSYC80uNkQiaHGKzLzWf4ebCjAWKO45eybfrD3D3D3D3D39wMtT5DcakwaManp1XdirraqXcWeOXfPLj8e1D3D3D3D3D3Bzo1M3jaO4wCT1jS5PoEajkcakUfxBDcBCrAzcprD3D3D3D3D39wMtT5S3lHqYg2ap1XdiW0Ejes2WgWfPLj8evu3D3D3D3D3DVZY52jaOybyc08Aj07eauClU26e28Aj0zVxcHKnSbETe6DcakwaManpI2ranwb7nMAqclnab2Cl0RLqVtaqXT4ARtyZJODeqJvWioU26e2GewAacS5wOxlHo79siKSHnWttD(55eybfrD3D3D3D3D3D3DVgtxHdOWuWqa7X4XkJNlfmnJloREJaODSRiiu8e1D3D3D3D3D3D3DAajMU4e6yGOU7U7U7U7U7oOekQ7U7U7U7oOekQ7U7U7U7EnMUchqHPGHa2JXJvgpxkyAgxCw9gbq7SQDeNYdg0jzecDVGNBNaGcjByd45bd6uoLhmOtYie6Ebp3obafxI44o2yL5WJNOU7U7UdkHI6U7GsOO8HOIwJPRWbuykiREJaOdaOzQZb4PoFkQ7UZQ3iaAep15trD3D3DhFUfcZ9gbqJru3D3D3Z0Ha6icajhtZbGaZ9gbqJru3D3D3HMJleyU3iaAmI6U7U7EVXudM7ncGgJOU7U7UJnDMfabPNlWCVra0ye1D3D3DMQTyam3BeangrD3D3DhpnGniuTfdG5EJaOXiQ7U7U7rCmaHefbafM7ncGgJOU7U7UZPvrqWDqLgM7ncGgJOU7U7UxHjdO7eam3BeangrD3D3DVsJpU0jayU3iaAmI6U7U7ETWPdke4QwQWCVra0ye1D3D3DAqNd2ayU3iaAmI6U7U7o7TCoecyfOsJhqxrG5EJaOf1D35dmI6U7iTmbbYmw5mXtD(KpWiQ7Uthx8uNvCHdPNlCranwy8wotIQWkZtu3D3D3ranwbrAzccKzSYzIN68jFiQ7U7U7SY0osltW4DcaQ3lo21onc3wotIQWkZZdZI6U7U7U7UxJPRWbuykyiG9y8yLXZLcRCM4iTmjsCkpyqNKri09cEUiTmHNhmOt5uEWGENaGgStaq5jQ7U7U7U7ocOXksOJlWCVra0iCrAzcprD3D3Dhucfvu3D3D3RX0v4akmfmeWEmESY45sfOLjioj7TCMejoLhmOZSbb0yfePLjiqMXkNj8e1D3D39AmDfoGctbdbShJhRmEUiGgRGiTmbbYmw5mHNOU7U7UZkt7Dp1z2GaAScI0YeeiZyLZemo)yCC43dZI6U7U7U7U3YCQnhPLjEQJaAScI0YeeiZyLZKe9KI6U7U7U7UxJPRWbuykyiG9y8yLXZLcRCM0l4DKwM4C7eaDLKP5fjoLhmOJ0YeEI6U7U7U7UhMXkNjCrAzcprD3D3Dhucf1D3bLqmI6U70XfyU3iaAep1zfx4q65cxeqJfghPLj8e1D3D3DwzAhIyCw9gbq79IJDTtJWfb0yfKvVra0i88WSOU7U7U7U7Dwoxw9gbqhjS6ncGMlslt4XZjWckI6U7U7U7U7U74GJdxD8WsC2bo(Co0jzmEVGqa1qpZYJEJriEnmSxW7iTmXjzV6TocbJxdd9AXZSh9c4qCy0jW69cRSxzphtCcSaVtaq9Aj0jWcCKwM4CYfsTx6f8EN4izhu5aRZQ3iaANtT4HDoKkb4eybENaG6LkuGxlHENtUiQ7U7U7U7U7UJaAScI0YeeiZyLZKemBqanwbrAzccKzSYzIZS78N0tDKwMiQ7U7U7U7U7UtdiX0frD3D3D3D3bLqrD3D3Dhucf1D3bLqr5drfTgtxHdOWuWqa7X4XkJ3tDwXfoKEUWnZE0lprD39olNBiG9y88CcSGIOU7U7UJnDVq4I7acKDOaU84jQ7U7U7rkGjiZ5gcCI0yOyZnZE0lprD3D3DhB6EHWLNOU7oOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXQtGfu8idQqK5X0vKavMaHbJgBqS6PoFYhoOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXAqSY4DcSGIhzqfImpMUIeOYeimy0ydI1GyLX7PoFYhoOekQ7U3z5LmXJmOcrMhtxrcuzcegmASbXAqSY4dY8ysgRCM4eybfpYGkezEmDfjqLjqyWOXgeRbXkJpiZJjzSYzIN68jF4GsOOU7EKbviY8y6ksGktGWGrJniwdIvgFqMhtYyLZKemBImOcrMhtxrcuzcegmASbXAqSY4dY8ysgRCM4m7o)j9upZE0ROGsOOIwJPRWbuykice7TgIN68POU7oo4e5knDptlQ7UNG)KEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQdpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN68Jru3D3D3tqfa2oOfIqL0tD(XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQZpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGPzyGqL0tD(XiQ7U7U7jOW94ccvsp15hJOU7U7UNGcckaC4BTeccD4QYbGqL0tD(XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD(XiQ7U7U7jOyMCduPHIqL0tD(XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uNFmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uNFmI6U7U7EcQixPX3QDMaiuj9uNFmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQZpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po)ye1D3D39eurUwcrOs6Po8ye1D35dmI6U74GdZuB1WEru3DpbUkPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD4XiQ7U7U7jOGRAVrL0tD4XiQ7U7U7jOyMwLaOs6Po)ye1D3D39eubGTdAHiuj9uNFmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN68Jru3D3D3tqbjmY4W3Ajee6mhUbiuj9uNFmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uNFmI6U7U7EckMj3avAOiuj9uNFmI6U7U7EckiOaWHV1sii0daJmDicvsp15hJOU7U7UNGcsyKXHV1sii0daJmDicvsp15hJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN6WJru3D3D3tqbZDeIhzqf7CbHkPN6WJru3D3D3tqfPv84b0iuj9uhEmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4W34cbqlQ7UNi6N0tD(uu3D3D3XbhMtdnt7bGyV1qe1D3D39eurRLjWsL0tD4XiQ7U7U7jOWcujWcOPs6Po8ye1D3D39euWvT3Os6Po)ye1D3D39eumtRsauj9uhEmI6U7U7EcQaW2bTqeQKEQdpgrD3D3DhhCImOIDU4bGyV1qe1D3D39euqqbGdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGegzC4BTeccDMd3aeQKEQZpgrD3D3DpbfmnddeQKEQZpgrD3D3DpbfUhxqOs6Po)ye1D3D39euqqbGdFRLqqOdxvoaeQKEQdpgrD3D3DpbfKWiJdFRLqqOdxvoaeQKEQdpgrD3D3DpbfZKBGknueQKEQZpgrD3D3Dpbfeua4W3Ajee6bGrMoeHkPN68Jru3D3D3tqbjmY4W3Ajee6bGrMoeHkPN68Jru3D3D3tqf5kn(wTZeaHkPN6WJru3D3D3tqfGuzcGqL0tD(XiQ7U7U7jOG5ocXJmOIDUGqL0tD(XiQ7U7U7jOI0kE8aAeQKEQZpgrD3D3Dpbv0OZiiSNHbcvsp15hJOU7U7UNGkY1sicvsp1HhJOU7oFGru3DhhCIiz8XarD39erxsp15trD3D3DhhCyon0mThaI9wdru3D3D3tqfTwMalvsp1HhJOU7U7UNGclqLalGMkPN68Jru3D3D3tqbx1EJkPN6WJru3D3D3tqXmTkbqL0tD4XiQ7U7U7jOcaBh0crOs6Po8ye1D3D3DCWjYGk25IhaI9wdru3D3D3tqbbfao8TwcbHoZHBacvsp15hJOU7U7UNGcsyKXHV1sii0zoCdqOs6Po8ye1D3D39euW0mmqOs6Po8ye1D3D39eu4ECbHkPN6WJru3D3D3tqbbfao8TwcbHoCv5aqOs6Po)ye1D3D39euqcJmo8TwcbHoCv5aqOs6Po8ye1D3D39eumtUbQ0qrOs6Po8ye1D3D39euqqbGdFRLqqOhagz6qeQKEQZpgrD3D3DpbfKWiJdFRLqqOhagz6qeQKEQdpgrD3D3DpbvKR04B1otaeQKEQdpgrD3D3DpbvasLjacvsp1HhJOU7U7UNGcM7iepYGk25ccvsp15hJOU7U7UNGksR4XdOrOs6Po)ye1D3D39eurJoJGWEggiuj9uhEmI6U7U7EcQixlHiuj9uhEmI6U78bgrD3DCWHzO7aeIOU7EcMLKEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQZpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN6WJru3D3D3tqfa2oOfIqL0tD4XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQdpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD4XiQ7U7U7jOGPzyGqL0tD4XiQ7U7U7jOW94ccvsp1HhJOU7U7UNGcckaC4BTeccD4QYbGqL0tD(XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD4XiQ7U7U7jOyMCduPHIqL0tD4XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uhEmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uhEmI6U7U7EcQixPX3QDMaiuj9uhEmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQdpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po8ye1D3D39eurUwcrOs6Po)ye1D35dmI6U74GtKcQeyDysLoEyjI6U7jIEs6PoFkQ7U7U74GdZPHMP9aqS3AiI6U7U7EcQO1YeyPs6Po8ye1D3D39euybQeyb0uj9uhEmI6U7U7Eck4Q2Buj9uhEmI6U7U7EckMPvjaQKEQZpgrD3D3Dpbvay7Gwicvsp1HhJOU7U7UJdorguXox8aqS3AiI6U7U7EckiOaWHV1sii0zoCdqOs6Po)ye1D3D39euqcJmo8TwcbHoZHBacvsp15hJOU7U7UNGcMMHbcvsp1HhJOU7U7UNGc3Jliuj9uhEmI6U7U7EckiOaWHV1sii0HRkhacvsp15hJOU7U7UNGcsyKXHV1sii0HRkhacvsp15hJOU7U7UNGIzYnqLgkcvsp15hJOU7U7UNGcckaC4BTecc9aWithIqL0tD(XiQ7U7U7jOGegzC4BTecc9aWithIqL0tD(XiQ7U7U7jOICLgFR2zcGqL0tD4XiQ7U7U7jOcqQmbqOs6Po8ye1D3D39euWChH4rguXoxqOs6Po8ye1D3D39eurAfpEancvsp1HhJOU7U7UNGkA0zee2ZWaHkPN6WJru3D3D3tqf5AjeHkPN6WJru3DNpWiQ7UJdobGTcTwe1D3taHjPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD4XiQ7U7U7jOGRAVrL0tD(XiQ7U7U7jOyMwLaOs6Po8ye1D3D39eubGTdAHiuj9uNFmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN68Jru3D3D3tqbjmY4W3Ajee6mhUbiuj9uhEmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uhEmI6U7U7EckMj3avAOiuj9uhEmI6U7U7EckiOaWHV1sii0daJmDicvsp1HhJOU7U7UNGcsyKXHV1sii0daJmDicvsp1HhJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN68Jru3D3D3tqbZDeIhzqf7CbHkPN68Jru3D3D3tqfPv84b0iuj9uNFmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4axv8arD39eruj9uNpf1D3D3DCWH50qZ0Eai2BnerD3D3Dpbv0AzcSuj9uNFmI6U7U7EckSavcSaAQKEQdpgrD3D3DpbfCv7nQKEQdpgrD3D3DpbfZ0Qeavsp1HhJOU7U7UNGkaSDqleHkPN6WJru3D3D3XbNidQyNlEai2BnerD3D3Dpbfeua4W3Ajee6mhUbiuj9uhEmI6U7U7EckiHrgh(wlHGqN5WnaHkPN6WJru3D3D3tqbtZWaHkPN6WJru3D3D3tqH7XfeQKEQdpgrD3D3Dpbfeua4W3Ajee6WvLdaHkPN6WJru3D3D3tqbjmY4W3Ajee6WvLdaHkPN6WJru3D3D3tqXm5gOsdfHkPN6WJru3D3D3tqbbfao8TwcbHEayKPdrOs6Po)ye1D3D39euqcJmo8TwcbHEayKPdrOs6Po8ye1D3D39eurUsJVv7mbqOs6Po8ye1D3D39eubivMaiuj9uNFmI6U7U7EckyUJq8idQyNliuj9uhEmI6U7U7EcQiTIhpGgHkPN68Jru3D3D3tqfn6mcc7zyGqL0tD4XiQ7U7U7jOICTeIqL0tD(XiQ7UZhye1D3XbNixPBzoquu3Dpbe2KEQZNI6U7U7oo4WCAOzApae7TgIOU7U7UNGkATmbwQKEQZpgrD3D3DpbfwGkbwanvsp1HhJOU7U7UNGcUQ9gvsp1HhJOU7U7UNGIzAvcGkPN6WJru3D3D3tqfa2oOfIqL0tD4XiQ7U7U74GtKbvSZfpae7TgIOU7U7UNGcckaC4BTeccDMd3aeQKEQdpgrD3D3DpbfKWiJdFRLqqOZC4gGqL0tD4XiQ7U7U7jOGPzyGqL0tD4XiQ7U7U7jOW94ccvsp1HhJOU7U7UNGcckaC4BTeccD4QYbGqL0tD4XiQ7U7U7jOGegzC4BTeccD4QYbGqL0tD4XiQ7U7U7jOyMCduPHIqL0tD4XiQ7U7U7jOGGcah(wlHGqpamY0Hiuj9uNFmI6U7U7EckiHrgh(wlHGqpamY0Hiuj9uhEmI6U7U7EcQixPX3QDMaiuj9uhEmI6U7U7EcQaKktaeQKEQZpgrD3D3Dpbfm3riEKbvSZfeQKEQdpgrD3D3DpbvKwXJhqJqL0tD(XiQ7U7U7jOIgDgbH9mmqOs6Po8ye1D3D39eurUwcrOs6Po)ye1D35dmI6U74GdCLlquu3Dpb)WN0tD(uu3D3D3XbhMtdnt7bGyV1qe1D3D39eurRLjWsL0tD4XiQ7U7U7jOWcujWcOPs6Po)ye1D3D39euWvT3Os6Po8ye1D3D39eumtRsauj9uNFmI6U7U7EcQaW2bTqeQKEQZpgrD3D3DhhCImOIDU4bGyV1qe1D3D39euqqbGdFRLqqOZC4gGqL0tD(XiQ7U7U7jOGegzC4BTeccDMd3aeQKEQdpgrD3D3DpbfmnddeQKEQdpgrD3D3DpbfUhxqOs6Po8ye1D3D39euqqbGdFRLqqOdxvoaeQKEQZpgrD3D3DpbfKWiJdFRLqqOdxvoaeQKEQdpgrD3D3DpbfZKBGknueQKEQZpgrD3D3Dpbfeua4W3Ajee6bGrMoeHkPN68Jru3D3D3tqbjmY4W3Ajee6bGrMoeHkPN6WJru3D3D3tqf5kn(wTZeaHkPN6WJru3D3D3tqfGuzcGqL0tD(XiQ7U7U7jOG5ocXJmOIDUGqL0tD(XiQ7U7U7jOI0kE8aAeQKEQdpgrD3D3Dpbv0OZiiSNHbcvsp1HhJOU7U7UNGkY1sicvsp1HhJOU7oFGru3DhhCIu64EOOU7Ec(5pPN68POU7U7UJdomNgAM2daXERHiQ7U7U7jOIwltGLkPN6WJru3D3D3tqHfOsGfqtL0tD(XiQ7U7U7jOGRAVrL0tD4XiQ7U7U7jOyMwLaOs6Po8ye1D3D39eubGTdAHiuj9uhEmI6U7U7oo4ezqf7CXdaXERHiQ7U7U7jOGGcah(wlHGqN5WnaHkPN6WJru3D3D3tqbjmY4W3Ajee6mhUbiuj9uhEmI6U7U7EckyAggiuj9uhEmI6U7U7EckCpUGqL0tD4XiQ7U7U7jOGGcah(wlHGqhUQCaiuj9uNFmI6U7U7EckiHrgh(wlHGqhUQCaiuj9uhEmI6U7U7EckMj3avAOiuj9uNFmI6U7U7EckiOaWHV1sii0daJmDicvsp1HhJOU7U7UNGcsyKXHV1sii0daJmDicvsp1HhJOU7U7UNGkYvA8TANjacvsp1HhJOU7U7UNGkaPYeaHkPN68Jru3D3D3tqbZDeIhzqf7CbHkPN68Jru3D3D3tqfPv84b0iuj9uNFmI6U7U7EcQOrNrqypddeQKEQdpgrD3D3DpbvKRLqeQKEQdpgrD3D(aJOU7oo4ePaO5IZ34cbqlQ7UNGFCvsp15trD3D3DhhCyon0mThaI9wdru3D3D3tqfTwMalvsp1HhJOU7U7UNGclqLalGMkPN68Jru3D3D3tqbx1EJkPN6WJru3D3D3tqXmTkbqL0tD4XiQ7U7U7jOcaBh0crOs6Po8ye1D3D3DCWjYGk25IhaI9wdru3D3D3tqbbfao8TwcbHoZHBacvsp15hJOU7U7UNGcsyKXHV1sii0zoCdqOs6Po8ye1D3D39euW0mmqOs6Po8ye1D3D39eu4ECbHkPN6WJru3D3D3tqbbfao8TwcbHoCv5aqOs6Po8ye1D3D39euqcJmo8TwcbHoCv5aqOs6Po8ye1D3D39eumtUbQ0qrOs6Po8ye1D3D39euqqbGdFRLqqOhagz6qeQKEQZpgrD3D3DpbfKWiJdFRLqqOhagz6qeQKEQdpgrD3D3DpbvKR04B1otaeQKEQZpgrD3D3DpbvasLjacvsp1HhJOU7U7UNGcM7iepYGk25ccvsp15hJOU7U7UNGksR4XdOrOs6Po8ye1D3D39eurJoJGWEggiuj9uhEmI6U7U7EcQixlHiuj9uhEmI6U78bgr5drRX0v4akmfmIJRToHTOLBzAep15trD3DkCD(XvrhhwSGWgcHnecBifghhCCMjNPf1D3PW15hxfDCyXIflwSyXIcJJdoE0YqHMlI6U7u468JRIooSyXpGfl4HNcJJdooZ2cNmuO5IOU7ofUo)4QOJdlwWdpeg4ddPW44GJhrQ0arD3DkCD(XvrhhwSQr)OpZcaqHXXbhhxWUZru3DNcxNFCv0XHflwSIOGhE4PW44GJJfapOewPztu3DNcxNFCv0XHflq0dhoruWtHXXbhN50KoRkhIOU7ofUo)4QOJdlwWdphoSyrHXXbhNVGoDlNHkkFWGWGWiaHUJhpGMbKmcqydBaJaCIrizOmcGaBggqqHraeyZWackmNdPZeGraoXiKmu4qydBaJaiKkbeJDyLayeGdSaoqKraatGcHraoXiKmugbWbhhliacGeoreCH5rkZQOSIlCi9CHlGNOU7ElZP28wotIQWk7PoUdiyLZKOkSYC5jQ7UxJPRWbuykiREJaOdaOzQZbej0XfUTCMevHvMNOU7E0Azeaw5mHlprbLqrzeaWeOqqyealiacGeoreCH5rkZkJaCIrizOWb2EiGrashkiKbHracaUj8Zm5EHWiqejkCNVqYiqlxdzajJaKAdui4kgqYia04gPZasgegegbi1gOqyajJaqJBKodizqyqyeiSZIvNtCJWgdizeaACJ0zajdcdcJa0voagqYia04gPZasgegegbyv5q65cdizeaACJ0zajdcdcJa05gGbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbWMjSj1gOqyajJaqJBKodizqyqyqyeOxia6sTbHa0i9CHreI(mcuIHcjDhpEancJiWpJa0a89Cbs2WgWiqNtUWiaba3e(zeacVWiaba3e(JwUqQ9cuqHWiaeWSfYarfP4cJa9qgbyEmjJvotWkJVZHracaUj8dZ5cHraCbUXMgGGaJkBmcWjNBHzyuGea3eCPuzVbczWoJaCY5wyggfgSZGWic4kgqYiaba3e(H5CHeOdtgWic4k4zeOYH0zcajDhpEanCLdbmIao8dpJa9cbqxQnieGgPNlmIq0NrGAPdTs65cdizeaHuPjmGKraSPbiacJaiTEiObyryqyeGvV0rGLbKmcqydBaJaytdqaegbWMgGaimcG06Ha6oEyjmimimcqO74XdOzajJae2WgWiaNyesgkJaCIrizOWb2EiGrashkiKraatGcbHrGOXxMdjCGRa4oCWccGaizeGtmcjdLraCWXJgFzoKWbUcG7WbliacGuuwXfoKEUWT2AiKkbGGXbyCOi45jQ7U3z5CHIGpsGwjCGLlfZAo2PbCaDMaElNju845eybfrD3D3DVgtxHdOWuWARHqQeaIN61wdHujaerD3D3DVgtxHdOWuWq6kmIItUWfkcEEI6U7U7onGetxCcDmqu3DhucffucfLraoWc4argbambkegb4eJqYqHdHnSbmcGqQeqm2HvcGraeyZWackmcGaBggqqH5CiDMamimcqaWnHFMj3legbIirH78fsgbA5AidizeGuBGcbxXasgbGg3iDgqYGWGWiaP2afcdizeaACJ0zajdcdcJaHDwS6CIBe2yajJaqJBKodizqyqyeGUYbWasgbGg3iDgqYGWGWiaRkhspxyajJaqJBKodizqyqyeaBMWMuBGcHbKmcanUr6mGKbHbHrGEbpDogBgqYia04gPZasgegegbOZnadizeaACJ0zajdcdcdcJavoKEUGWasgbqivAcdizeimdhOaeKkEad2zqyeOx6egqYiqygoCIrizOmGPmcWjgHKHYiqlZP28oNCjs7iy3QSfPX0vspx8up6lQO1y6kCafMcIhqIIaGgvHv2tDwXfoKEUWfkcEEI6U7TmNAZlvOap1HIGpsGwjCGLlfSq4j4gKzNheEskEEM2POe1D3Bzo1MhXX1cPtyZtDOi4JeOvchy5sb3CHWdz25rXZZ0o)IkQ7U3YCQnVZjx8uN)OF0fDWdVOU7ENLhzqfImpMUIeOYeimy0ydI1GrraqJwLdSGeLkuqsNalOiQ7U7U7Do5IN6rguHiZJPRibQmbcdgn2Gynyuea0Ov5alirPcfKmyNtUiQ7UdkHI6U7TmNAZ5KBzAp1HIGpsGwjCGLlfhwS4cHddiCyaHddiCyaHddiCyWJINNPDkwSyXIflkrf1D3PbKy6IxQqby8oNCbJhXX1cPtydJZj3Y0IckHIkAnMUchqHPGH0vyefNCXtDwXfoKEUWfkcEEI6U7TmNAZlvOamENtUGXJ44AH0jSHX5KBzAp1RX0v4akmfepGefbanQcRmxOi45jQOU7ElZP2CwzAOvcbegHkuGN6u468JRIooSyr5bd6CYTmThmOtLGYdg0lvOapyqNkjUo)4QOJ2HBkpyqpIJRfsNWMOU7EnMUchqHPG1wdHujaKemBQX0v4akmfS2AiKkbG4m7o)j9uNpf1D3D3DeyZWWtDcDmaJOU7U7UZb2Abpi0tDcDmaJOU7U7U3lHa42tDChqGSdfWLhgrD3D3DNgGKPjEQtOJbyevu3D3D37CYfp17CYfmI6U7U7EPcf4PoRmn0kHacJqfkaJOI6U7U7o20z80aeeizdBGN6uKouqifgrD3D3Dha3y3PRKEUazhkWtDChqGSdfWLNZS7Do5sK2rWUvzlsJPRKEUGru3D3D3dJPRKEU4PENtUePDeSBv2I0y6kPNlye1D3D39AmjZ3EiWtDcDmaJOU7oFikOeYGWGWianaFpxGKnSbmc05KlmcWjNBHzyuGea3eCPuzVbczWoJaeaCt4Nrai8cJaeaCt4hMZfcJa4cCJnnabbgv2yeOhYiaZJjzSYzsuCYfgbia4MWF0YfsTxGckegbGaMTqgiQifxyeiSJe9gx4q6mbyeO2AmcuIHcjDhpEancJiWpJa9sNahesLMaczeb(zeGto3cZWOWGDgegegbyIre4p6Wv8ZGWGba \ No newline at end of file diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua deleted file mode 100644 index b0a26c0..0000000 --- a/LegionWA/AutoLoot/Init.lua +++ /dev/null @@ -1,848 +0,0 @@ -local debug = false -if not WeakAurasSaved then WeakAurasSaved = {} end -if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end -if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end - ----@param slot number ----@return string, string|nil -local function getItemLink(slot) - if slot == nil then return "", string.format("Slot can not be nil") end - local link = GetLootSlotLink(slot) - if link == nil then return "", string.format("GetLootSlotLink returned nil for slot %d", slot) end - return link, nil -end ----@param slot number ----@return string, string|nil -local function getItemName(slot) - if slot == nil then return "", string.format("Slot can not be null") end - local name = select(2, GetLootSlotInfo(slot)) - if name == nil then return "", string.format("GetLootSlotInfo returned nil for slot %d", slot) end - return name, nil -end ----@param slot number ----@return string, string|nil -local function getItemType(slot) - if slot == nil then return "", string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return "", err end - local itemType = select(6, GetItemInfo(itemLink)) - if itemType == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end - return itemType, nil -end ----@param slot number ----@return string, string|nil -local function getItemSubtype(slot) - if slot == nil then return "", string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return "", err end - local itemSubtype = select(7, GetItemInfo(itemLink)) - if itemSubtype == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end - return itemSubtype, nil -end ----@param slot number ----@return number, string|nil -local function getItemLevel(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 0, err end - local itemLevel = select(4, GetItemInfo(itemLink)) - if itemLevel == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end - return itemLevel, nil -end - ----The vendor price in copper, or 0 for items that cannot be sold ----@param slot number ----@return number, string|nil -local function getItemValue(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 0, err end - local value = select(11, GetItemInfo(itemLink)) - if value == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end - return value, nil -end ----@param slot number ----@return number, string|nil -local function getItemSubclassId(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 0, err end - local subclassId = select(13, GetItemInfo(itemLink)) - if subclassId == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end - return subclassId, nil -end ----@param slot number ----@return number, string|nil -local function getItemQuantity(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local quantity = select(3, GetLootSlotInfo(slot)) - if quantity == nil then return 0, string.format("GetLootSlotInfo returned nil for slot %d", slot) end - return quantity, nil -end ----@param slot number ----@return Enum.ItemQuality, string|nil -local function getItemQuality(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 0, err end - local quality = select(3, GetItemInfo(itemLink)) - if quality == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end - return quality, nil -end ----@param slot number ----@return string, string|nil -local function getItemEquipLocation(slot) - if slot == nil then return "", string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return "", err end - local equipLoc = select(9, GetItemInfo(itemLink)) - if equipLoc == nil then return "", string.format("GetItemInfo returned nil for slot %d", slot) end - return equipLoc, nil -end ----@param slot number ----@return number, string|nil -local function getItemIcon(slot) - if slot == nil then return 134400, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 134400, err end - local icon = select(10, GetItemInfo(itemLink)) - if icon == nil then return 134400, string.format("GetItemInfo returned nil for slot %d", slot) end - return icon, nil -end ----@param slot number ----@return number, string|nil -local function getBindType(slot) - if slot == nil then return 0, string.format("Slot can not be nil") end - local itemLink, err = getItemLink(slot) - if err then return 0, err end - local bindType = select(14, GetItemInfo(itemLink)) - if bindType == nil then return 0, string.format("GetItemInfo returned nil for slot %d", slot) end - return bindType, nil -end - ----@class Filter ----@field requires table | nil ----@field filter fun(slot: number, provided: table): boolean -Filter = { - ---@param requires table | nil - ---@param filter fun(slot: number, provided: table): boolean - ---@return Filter - new = function(requires, filter) - local self = setmetatable({}, { - __index = Filter - }) - self.requires = requires - self.filter = filter - return self - end, - - ---@param self Filter - ---@param slot number - ---@return boolean, string|nil - Run = function(self, slot) - ---@type table - local provided = {} - if self.requires then - for k, v in pairs(self.requires) do - local res, err = v(slot) - if err ~= nil then - if debug then print(err) end - return false, err - end - provided[k] = res - end - end - local res, err = self.filter(slot, provided) - if err ~= nil then - if debug then print(err) end - end - return res, nil - end -} - -local goldFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if string.find(provided.name, "Gold") or - string.find(provided.name, "Silver") or - string.find(provided.name, "Copper") then - if debug then print(string.format("Gold filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Gold filter fail for %s", provided.name)) end - return false - end) -local orderResourcesFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if string.find(provided.name, "Order Resources") then - if debug then print(string.format("Order resource filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Order resource filter fail for %s", provided.name)) end - return false - end) -local mountFilter = Filter.new({ ["type"] = getItemType }, - function(slot, provided) - ---@cast provided { type: string } - if provided.type == "Mount" then - if debug then print(string.format("Mount filter pass for type %s", provided.type)) end - return true - end - if debug then print(string.format("Mount filter fail for type %s", provided.type)) end - return false - end) -local ilvlFilter = Filter.new({ ["ilvl"] = getItemLevel }, - function(slot, provided) - ---@cast provided { ilvl: number } - if provided.ilvl and provided.ilvl > 800 then - if debug then print(string.format("ilvl filter pass for ilvl %d", provided.ilvl)) end - return true - end - if debug then print(string.format("ilvl filter fail for ilvl %d", provided.ilvl)) end - return false - end) -local professionFilter = Filter.new({ - ["type"] = getItemType, - ["subtype"] = getItemSubtype - }, - function(slot, provided) - ---@cast provided { type: string, subtype: string } - - local enabled = { - ["Herb"] = true, - ["Leather"] = true, - ["Cloth"] = true, - ["Ore"] = false, - ["Cooking"] = true, - ["Inscription"] = true, - ["Enchanting"] = true, - } - - -- Maybe implement an expansion based filter - if provided.type == "Tradeskill" then - if enabled[provided.subtype] then - if debug then print(string.format("Profession filter pass for type %s", provided.type)) end - return true - end - end - if debug then print(string.format("Profession filter fail for type %s", provided.type)) end - return false - end) -local valueFilter = Filter.new({ - ["value"] = getItemValue, - ["quantity"] = getItemQuality - }, - function(slot, provided) - ---@cast provided { value: number, quantity: number } - - local valueThreshold = 35 * 100 * 100 - local applyValueTostack = false - - local value = provided.value - if applyValueTostack then value = value * provided.quantity end - - if value > valueThreshold then - if debug then print(string.format("Value filter pass for value %d", value)) end - return true - end - if debug then print(string.format("Value filter fail for value %d", value)) end - return false - end) -local greyValueFilter = Filter.new({ - ["quality"] = getItemQuality, - ["value"] = getItemValue, - ["quantity"] = getItemQuantity - }, - function(slot, provided) - ---@cast provided { quality: number, value: number, quantity: number } - - local valueThreshold = 4 * 100 * 100 - local applyValueTostack = false - - if provided.quality == 0 then - local value = provided.value - if applyValueTostack then value = value * provided.quantity end - - if value > valueThreshold then - if debug then - print(string.format("Grey value filter pass for value %d of %s quality items", value, - provided.quality)) - end - return true - end - end - if debug then - print(string.format("Grey value filter fail for value %d of %s quality items", provided.value, - provided.quality)) - end - return false - end) -local questItemFilter = Filter.new({ - ["type"] = getItemType, - ["subtype"] = getItemSubtype - }, - function(slot, provided) - ---@cast provided { type: string, subtype: string } - if provided.type == "Quest" and provided.subtype == "Quest" then - if debug then - print(string.format("Quest item filter pass for type %s and subtype", provided.type, - provided.subtype)) - end - return true - end - if debug then - print(string.format("Quest item filter fail for type %s and subtype", provided.type, - provided.subtype)) - end - return false - end) -local classGearFilter = Filter.new({ - ["ilvl"] = getItemLevel, - ["quality"] = getItemQuality, - ["type"] = getItemType, - ["subtype"] = getItemSubtype, - ["equiploc"] = getItemEquipLocation - }, - function(slot, provided) - ---@cast provided { ilvl: number, quality: number, type: string, subtype: string, equiploc: string } - - local ilvlThreshold = 800 - local qualityThreshold = 2 - - local isEquippable = aura_env.skills[select(3, UnitClass("player"))][provided.subtype] == 1 - - if isEquippable and provided.ilvl > ilvlThreshold and provided.quality > qualityThreshold then - if debug then - print(string.format("Class gear filter pass for ilvl %d and quality %d", provided.ilvl, - provided.quality)) - end - return true - end - if debug then - print(string.format("Class gear filter fail for ilvl %d and quality %d", provided.ilvl, - provided.quality)) - end - return false - end) -local arguniteFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if provided.name == "Veiled Argunite" then - if debug then - print(string.format("Argunite filter pass for %s", provided.name)) - end - return true - end - if debug then print(string.format("Argunite filter fail for %s", provided.name)) end - return false - end) -local ancientManaFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if string.find(provided.name, "Ancient Mana") then - if debug then print(string.format("Ancient Mana filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Ancient Mana filter fail for %s", provided.name)) end - return false - end) -local reicpeFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if string.find(provided.name, "Recipe") or string.find(provided.name, "Technique") then - if debug then print(string.format("Recipe filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Recipe filter fail for %s", provided.name)) end - return false - end) -local bloodOfSargerasFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if provided.name == "Blood of Sargeras" then - if debug then print(string.format("Blood of Sargeras filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Blood of Sargeras filter fail for %s", provided.name)) end - return false - end) -local bloodhunerQuarryFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if provided.name == "Bloodhunter's Quarry" then - if debug then print(string.format("Bloodhunter's Quarry filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Bloodhunter's Quarry filter fail for %s", provided.name)) end - return false - end) -local arguniteClusterFilter = Filter.new({ ["name"] = getItemName }, - function(slot, provided) - ---@cast provided { name: string } - if provided.name == "Argunite Cluster" then - if debug then print(string.format("Argunite Cluster filter pass for %s", provided.name)) end - return true - end - if debug then print(string.format("Argunite Cluster filter fail for %s", provided.name)) end - return false - end) -local boeFilter = Filter.new({ - ["ilvl"] = getItemLevel, - ["type"] = getItemType, - ["quality"] = getItemQuality, - ["equiploc"] = getItemEquipLocation, - ["bindtype"] = getBindType - }, - function(slot, provided) - ---@cast provided { ilvl: number, type: string, quality: number, equiploc: string, bindtype: number } - - local ilvlThreshold = 800 - local qualityThreshold = 1 - - local itemType = provided.type - local itemEquipLoc = provided.equiploc - if (itemType == "Armor" - or itemType == "Weapon" - or itemEquipLoc == "INVTYPE_FINGER" - or itemEquipLoc == "INVTYPE_TRINKET" - or itemEquipLoc == "INVTYPE_CLOAK" - or itemEquipLoc == "INVTYPE_NECK") then - local itemLevel = provided.ilvl - local itemQuality = provided.quality - local bindType = provided.bindtype - - if itemLevel > ilvlThreshold and itemQuality > qualityThreshold and bindType == 1 then - if debug then print(string.format("BoE filter pass for ilvl %d and quality %d", itemLevel, itemQuality)) end - return true - end - end - if debug then print(string.format("BoE filter fail for ilvl %d and quality %d", provided.ilvl, provided.quality)) end - return false - end) -local artifactPowerFilter = Filter.new({ - ["type"] = getItemType, - ["subtype"] = getItemSubtype, - ["subclassid"] = getItemSubclassId, - ["value"] = getItemValue -}, function(slot, provided) - ---@cast provided { type: string, subtype: string, subclassid: number, value: number } - if provided.value == 0 and provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then - if debug then - print(string.format("Artifact power filter pass for type %s and subtype %s and subclassid %d with value %d", - provided.type, provided.subtype, provided.subclassid, provided.value)) - end - return true - end - if debug then - DevTools_Dump(provided) - print(string.format("Artifact power filter fail for type %s and subtype %s and subclassid %d with value %d", - provided.type, provided.subtype, provided.subclassid, provided.value)) - end - return false -end) - --- local azeriteFilter = { --- enabled = true, --- ilvlThreshold = 800, --- qualityThreshold = 2, --- filter = function(self, slot) --- if self.enabled the --- local itemType = getItemType(slot) --- local itemSubtype = getItemSubtype(slot) --- local itemQuality = getItemQuality(slot) --- if itemType and itemSubtype and itemQuality and itemType == "Consumable" and itemSubtype == "Other" and itemQuality > 1 the --- return true --- en --- tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality)) --- end --- end --- } - - ----@type table -local filters = { - ancientManaFilter, - arguniteFilter, - artifactPowerFilter, - bloodhunerQuarryFilter, - bloodOfSargerasFilter, - boeFilter, - classGearFilter, - goldFilter, - greyValueFilter, - ilvlFilter, - mountFilter, - orderResourcesFilter, - professionFilter, - questItemFilter, - -- reicpeFilter, - valueFilter, - arguniteClusterFilter, -} - ----@class FilterService -aura_env.FilterService = { - ---@param lootInfo table - Run = function(lootInfo) - ---@type table - local slotsToLoot = {} - for slot, item in pairs(lootInfo) do - if debug then - local itemname = getItemName(slot) - print(string.format("Checking slot %d for %s", slot, itemname)) - end - for _, filter in pairs(filters) do - local res, err = filter:Run(slot) - if err then - if debug then print(err) end - end - if res then - slotsToLoot[#slotsToLoot + 1] = slot - break - end - end - end - - aura_env.FilterService.doLoot(slotsToLoot) - end, - - ---@param slots table - ---@return nil - doLoot = function(slots) - for i = #slots, 1, -1 do - aura_env.FilterService.lootslot(slots[i]) - end - end, - - ---@param slot number - ---@return nil - lootslot = function(slot) - LootSlot(slot) - - local itemIcon = getItemIcon(slot) or 134400 - local itemName = getItemName(slot) or "Unknown" - itemName = itemName:gsub("\n", ", ") - local itemQuality = getItemQuality(slot) or 0 - - if not WeakAurasSaved.Cyka.ItemCache[itemName] then - WeakAurasSaved.Cyka.ItemCache[itemName] = { - icon = itemIcon, - quality = itemQuality, - } - end - end -} - -aura_env.skills = { - --Warrior - [1] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 1, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Paladin - [2] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Hunter - [3] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 1, - ["Guns"] = 1, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 1, - ["Wands"] = 0, - }, - --Rogue - [4] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Priest - [5] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Death Knight - [6] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 1, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 1, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 1, - ["Warglaives"] = 0, - ["Staves"] = 0, - ["Fist Weapons"] = 0, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Shaman - [7] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 0, - ["Mail"] = 1, - ["Plate"] = 0, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Mage - [8] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Warlock - [9] = { - --Armor Skills - ["Cloth"] = 1, - ["Leather"] = 0, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 0, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 1, - }, - --Monk - [10] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 1, - ["Shields"] = 1, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Druid - [11] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 0, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 1, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 1, - ["One-Handed Swords"] = 0, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 0, - ["Staves"] = 1, - ["Fist Weapons"] = 1, - ["Daggers"] = 1, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, - --Demon Hunter - [12] = { - --Armor Skills - ["Cloth"] = 0, - ["Leather"] = 1, - ["Mail"] = 0, - ["Plate"] = 0, - ["Shields"] = 0, - --Weapon Skills - ["One-Handed Axes"] = 1, - ["Two-Handed Axes"] = 0, - ["Bows"] = 0, - ["Guns"] = 0, - ["One-Handed Maces"] = 0, - ["Two-Handed Maces"] = 0, - ["Polearms"] = 0, - ["One-Handed Swords"] = 1, - ["Two-Handed Swords"] = 0, - ["Warglaives"] = 1, - ["Staves"] = 0, - ["Fist Weapons"] = 1, - ["Daggers"] = 0, - ["Crossbows"] = 0, - ["Wands"] = 0, - }, -} -aura_env.qualityColors = { - "\124cff9d9d9d", -- Poor - "\124cffffffff", -- Common - "\124cff1eff00", -- Uncommon - "\124cff0070dd", -- Rare - "\124cffa335ee", -- Epic - "\124cffff8000", -- Legendary - "\124cffe6cc80", -- Artifact - "\124cff00ccff", -- Heirloom -} diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua deleted file mode 100644 index 35fc738..0000000 --- a/LegionWA/AutoVendor/Event.lua +++ /dev/null @@ -1,15 +0,0 @@ --- MERCHANT_SHOW -function(allstates, e) - if (GetMerchantNumItems() > 0) then - aura_env.allstates = allstates - - if CanMerchantRepair() == true then RepairAllItems() end - - for container = 0, 4 do - for slot = 1, GetContainerNumSlots(container) do - aura_env.FilterService.Run(container, slot) - end - end - return true - end -end diff --git a/LegionWA/AutoVendor/Export b/LegionWA/AutoVendor/Export deleted file mode 100644 index f39c7ad..0000000 --- a/LegionWA/AutoVendor/Export +++ /dev/null @@ -1 +0,0 @@ -dif1EaqickXIOkEKcuvxIaLyukYPuOxjjQAwkQBPcSlQKHjvvhJGSmcKNPaAAQqDnQuPTPaLVrLIghbL6CsvPwhbL07iqPMNcuL7rQ6GQsyHQq6HuPQjQkrxubzJkaFuvsJusKojPYkvvVubQmtvPUjbk2jvj)ufIHsLkokbvlLkL8uQQPQIUQuvITsGQVsLsDwQuWBLQsAUeuCxjrL9kXFPk1GrhwOfRG6XQ0KLkxw0MLuFwvmAjHttYQPsHETuvmBb3Mk2Ts)MOHljDCvqwUuEoPmDkxNqBNa(UkOgVcKZlvz9eOKEVKOCFjrSF4IqLZIFSCwSIVwXxqUCxxcjOIVtXVR43vol(d6i11APv86a384(l(9osDTwAfVC3b2FXpEnLa5zt98KnbJSllEDGq9x81QgVzXR(l(Q1Y2gdcE20uYT41al(AzO2DKQ1k(NhXDEp0aol(XG6zl(VhAaNf)ks1tfwzah7U9pWbR)b23csqdCGUPB23cQuFWXdwXpiJDLZIVAFAsXQLZIVJyWuLZIvSIVfd5ALZIVJyWuLZIvSIFNQUwDfdwVYzX3rmyQYzXkwXVfVz5S47igmv5SyfR4xhVMsULZIVJyWuLZIvSIFvbQAXqUw5S47igmv5SyfR43KHSCw8DedMQCwSIv8f1sVVHOMwz4IVfd5AcQCw8DedMQCwSIvSIFCvorllhT43YhLCp7vnl(D92OJ6(0KIvl(5GQg3USRC0IV1uppzRCw81QqE4JSfFTkKh(i7lUMsGSyfFvxXxy5fIMuWZTt2k(Dkn3O4EnLazXpgcf)v05SPEEYMwXlHk(QvzERzXMLDfVeQ4FyvNvrzah7U9pWbRFHCt38yHT7ESqhFCP(GJhSIv8VLZIxcvol(woitObixZxjynlEjO(l(XRPeipBQNNSjyKDzXRdeQ)IF8Ak5Qvol(AwSzLZIFN0BNutl(KLHlwXxTkRCw87KEFf1mPt5Of)ROMjDk(b5nga7YHfFa1dwhdAj(b5ngavx5(sLw1qS3lfBrtjxq9GdeF8dYBmawlUxtjxWN00zPZB12NPRCTOAZ2mOwqAJ4dccc2stSTGAziV2KBod(AAUxUwuTztNLo62A50vUwuTzBguliTXr8ZTd)G8gdG1I71uYf8jnDw6iCX4AkR30vUwuTzBguliTr8bbbbBPj2wqTmKxBsqZGVMM7LRfvB20zPJUTwoDLRfvB2Mb1csBCe)C7WpiVXayT4EnLCbFstNLoEfDYPRCTOAZ2mOwqAJ4dccc2stSTGAziV2KqZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S05Sx1C6kxlQ2SndQfK2i(GGGGT0eBlOwgYRnnyZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S0XxCyRx1C6kxlQ2SndQfK2i(GGGGT0eBlOwgYRn5MZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S05DkqgMUY1IQnBZGAbPnIpiiiylnX2cQLH8Athpd(AA6S0r3wlNEstNLoVvBFMUY1IQnBZGAbPnooIFUD4hK3yaSwCVMsUGpPPZshbpgeZPRCTOAZ2mOwqAJ4dccc2stSTGAziV2Kqcnd(AA6S0r3wlNEstNLoVvBFMUY1IQnBZGAbPnooIFUD4hK3yaSwCVMsUGpPPZshHlgdkR30vUwuTzBguliTr8bbbbBPj2wqTmKxBAGZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tA6S0zOdjQQ(wEJMsUtx5Ar1MTzqTG0gXheeeSLMyBb1YqETP(Eg8100zPJUTwo9KMolDER2(mDLRfvB2Mb1csBCCe)C7WpiVXayT4EnLCbFstNLo6UYD6kxlQ2SndQfK2i(GGGGT0eBlOwgYRnju)ZGVMMolD0T1YPN00zPZB12NPRCTOAZ2mOwqAJJJ4NBh(b5ngaRf3RPKl4tAhvTDN9QMtx5Ar1MTzqTG0gXheeeSLMyBb1YqETjHoEg8100zPJUTwo9KMolDER2(mDLRfvB2Mb1csBCCe)C7WhF8XpiVXa4tl2BaQGLnq9Gvg(GGGG5ghoKDG6bTMyoJpiiiyTkyzdupyT4EnLCN0Yq9m4vUwuTzBguliTr8bbbbbbbbv1GtAzO2vUXHdz3iOvrU4dcccccccccccgfBrVZvaxD5WIpVLptEETf7bwRcw2eSbVY1IQnBG6b9a6Yf4vUwuTzd0LlqpZGAbPbQh0dOlxGAbPnIpiiiiiiiiiiiyqEJbqLLocxmguwpq9GpPPZshHlgdkR30vUwuTzBguliTr8bbbbbbbbbbbbv1GtklDeUymOSEGXTduzPJWfJbL1duVEW(hbTkYfFqqqqqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYZRTypWAvWYgy1OMMNr8bbbbbbbbbbbbbbbbBPj2wqRjM4dcccccccccccMBh(GGGGGGGG52HpiiiyUD4xj4hK3ya8jJTbOcw2a1dwz4dcccMBC4q2bQh0AI5m(GGGGQGaHZkAPwfYqhOEqHT72)m(GGGGAziCuzcQhSog0Yz8bbbbRvblBG6bRf3RPK7KwgQNbVY1IQnBZGAbPnIpiiiiiiiOQgCsld1UYnoCi7gbTkYfFqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYZRzSbwRcw2eSbVY1IQnBG6b9a6Yf4vUwuTzd0LlqpZGAbPbQh0dOlxGAbPnIpiiiiiiiiiiiyqEJbqLLoVtbYaOEWN00zPZ7uGmmDLRfvB2Mb1csBeFqqqqqqqqqqqWG8gdGklDoQA7o7vnb1d(K2rvB3zVQ50vUwuTzBguliTr8bbbbbbbbbbbbdYBmaQS05Sx1eup4tA6S05Sx1C6kxlQ2SndQfK2i(GGGGGGGGGGGGb5ngavw6m0HevvFlVG6bFstNLodDirv13YB0uYD6kxlQ2SndQfK2i(GGGGGGGGGGGGQAWjLLoN9QMGXTduzPZqhsuv9T8cg3o8bbbbbbbbbbbbNuw6C2RAcQxpONx0CKnp4dccccccccccckBGklDo7vnb1Rh0JBNXQY1d(GGGGGGGGGGGGYgOYsNHoKOQ6B5fuVEqp68sWpDdUZqEpaDE96qULh8bbbbbbbbbbbbLnqLLodDirv13YlOE9GE05LGF6gCNH8(0T051GBOtp4dccccccccccckBGklDg6qIQQVLxq96b9OZlb)0n4od5T7FFKxm48GpiiiiiiiiiiiOSbQS0zOdjQQ(wEb1Rh0JoVe8t3G7mK3EnK7hCEgXheeeeeeeeeeemUDGklDENcKbW42bQS05OQT7Sx1emUDGklDENcKbWbpqTmu7sfeiCwrl1Qqg6aJBh4KYsNJQ2UZEvtq96bfcu2a1YqTlTmeoQmhhbTkYfFqqqqqqqqqqqqqqqWQn1AtpPPZshVIo50vUwuTzBguliTXr8bbbbbbbbbbbbbbbbR2uRn9KMolDENcKHPRCTOAZ2mOwqAJJ4dcccccccccccccccgfBrVZvaxD5WIpVLptEEnJnWAvWYgy1OMMNr8bbbbbbbbbbbbbbbbBPj2wqRjM4dcccccccccccMBh(GGGGGGGG52HpiiiyUD4xj4JFqEJbWAX9Ak5c2j9Zqy6kxlQ2SndQfK2i(GGGGb5ngavw6O7kxq9GpPPZshDx5oDLRfvB2Mb1csBeFqqqWG8gdGklD8k6KG6bFstNLoEfDYPRCTOAZ2mOwqAJ4dcccgK3yauzPJWfJRPSEG6bFstNLocxmUMY6nDLRfvB2Mb1csBeFqqqWG8gdGklDeUymOSEG6bFstNLocxmguwVPRCTOAZ2mOwqAJ4JpiiiyuSf9oxbC1Ldl(8w(m55LT4Hv7dO6kxWAzd0dOlxGklD8k6KGUCb6b8WkRcWdjgdkRhOhqxUavw6iCXyqz9gXheeemiVXa4gDs3wzv4Ezq2a1d6PV6b0LlWOyl6DUc46qIXGY65Ezq206RklDeUymOSEGvEqHQCGUCbQS0XROtc6YfONkNWiKGoU5bFqqqWG8gdGB0jDBLvHWfJRPSEG6b3Ot62kRc3ldYgOlxGEahKhqxUavw6iCX4AkRh(4dcccgfBrVZvaxD5WIpVLptEEHMM6zv7d4gDspGUCbUrN0TvwfcxmUMY6nIpiiiyuSf9oxbCfdbnlAPwFDWpk2IENRaUIHGMfTudSYdkuLdupyLHpiiiiiiiOwfYddQh0AI5m(GGGGGGGG3kI7t2bQh0AI5m(GGGGGGGGQTlheOEWxt7u5KtJZ4dccccccc2snzZa1dAnXCgF8bbbbbbbbvx5cQhuzPJURCNXheeeeeeeCJojOEWn6KUTYQq4IX1uwVz8bbbbbbbbJosX1a1dQS0r4IX1uwVz8XheeeeeeeSAt(0snTZEvtq9GEmLt25zgFqqqqqqqWCqvvTOPK7PYjb1d(AANkNCAeSYdQUY9LkTQHyVxk2IMsUZ4dccccccc2j2IMsUG6bvx5(sLw1qS3lfBrtj3z8bbbbbbbbJIMSsvDjOEqRjMZ4dcccwj4JpiiiyFrlDVCTOAZMolDMUY1IQnBZGAbPnIFUD4Jp(rXw07CfWvTkyzZpBcOUjOEWkdFqqqWAvWYMgOEWkdFqqqqqqqWNwS3aublBZ4dccccccc(KX2aublBZ4dcccwjZ4dcccQfKM2P8TuAG6bRSkzgFqqqWM4cQhSwCVMsUtAzOEg8kxlQ2SndQfK2i(GGGGGGGGrXw07CfWvxoS4ZB5ZKNbOcw2u7dOYshq1cELRfvB2a1d6b0LlWRCTOAZgOlxGEMb1csdupOhqxUa1csd0LlqpUC5YZi(GGGGGGGGQAWPvAGpPPZsN3QTptx5Ar1MTzqTG0ghbTkYfFqqqqqqqqqqqWOyl6DUc4Qlhw85T8zYJFqAGPtvRNNr8bbbbbbbbbbbbBPj2w8bbbbbbbbZTdFqqqqqqqWAzdSpZG1QGLnq1cwnQAAtAzO2vTkyztBeStIpiiiiiiiiiiiOQgCQwfSSjSwRcw2MUY1IQnBZGAbPnocAvKl(GGGGGGGGGGGGGGGGDs)meMUY1IQnBZGAbPnIpiiiiiiiiiiiiiiiylnX2IpiiiiiiiiiiiyUD4dcccccccMBh(GGGG52HFLGp(rXw07CfWvxoS4ZB5dOEWAX9Ak5ojh2noIpiiiOQgCQlhw8ze0Qix8bbbbbbbbR2uRn9AANkNCACeFqqqqqqqWxMcCkLbnVFPOt1j5WUXr8bbbbbbbbR2uRnnIpiiiyUD4NBh(4hfBrVZvaxhsmguwp3ldYMgOEWkdFqqqqpcJqc64BDDF313D9DNNzWdoa0DKYg(GGGGEegHe0X36666666ApZGhCaO7LooYfFqqqqpcJqc64BDTqzDD)97zg8Gda7l7v64ix8bbbb9imcjOJV1193VB2FxNNzWdoa0TITeFqqqqpcJqc64BDDCGd0DZ0Zm4bhaouv1fFqqqqpcJqc64BDDDTWU)(73Zm4bha(oFYTl26HpiiiOhHribD8TUohS7vy3VNzWdoa8fntvhVg(GGGGEegHe0X366(7)ERR9mdEWbGvAQAbP0b)kPyfR4RwlBBmi4zttj3IxdS4Bn1Zt2kNfFRx1S4Ff1mPtX)kQzshVTEvZIVMfTuSAx0YI)vuZKoExHQll(MYj7k(3kYBFk(Pa5Af)ROMjDk(hCaOGzi3Y9v6l860B)k9iUn(1I71uYDkgcAw0sTzWCeFqqqWOyl6DUc4kgcAw0snq9GXqqZIwQHp(GGGGQAq3hxbt2UvexZTYQrvBAeuVEqRjMGwf5c6wz1OQ9IqqNLoAtJG52Hp(GGGG1Yg4vUwuTzdupy)ZGhd2jXheeeeeeeSw2a1csdupOqZGVMM7LRfvB28s0XpinTPRCTOAZ2iyNeFqqqqqqqqqqqWOyl6DUc4QwfSS5Nnbu3uyTjUtx5Ar1MTzqTG0gXheeeeeeem3o8bbbbZTdFqqqWwAITf0AIj(52HFXpfixtR4lygYTCFL(cVo92VspIBx81QqE4JSfFTkKh(i7lUMsGSyf)UulAITOLLJw8TCqMqUJuTwX3T09ALEw8dYyx5S4R2NMuSA5S47igmv5SyfR4BXqUw5S47igmv5SyfR43PQRvxXG1RCw8DedMQCwSIv8BYqwol(oIbtvolwXk(1XRPKB5S47igmv5SyfR4xvGQwmKRvol(oIbtvolwXk(T4nlNfFhXGPkNfRyfFlgY1eu5S47igmv5SyfRyfFlhKj0aKRv8hAqvBPM2HJ9k(ROZzt98KnTIxcv8B5JsUN9QMfF1vUf)oLMBuCVMsGS4hdHIVLdYeQ4lyzl(QUIVWYlenPGNBNSP7k3I)vkdDYdVN5GSH24WHSRmCXxTkZBnl2SSR4Lqf)Rug6KhEldx8TCqMqUxUwuTo5Af)J0xo919YHkwXk(cu8sOJfKqfRuaa \ No newline at end of file diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua deleted file mode 100644 index 13ad485..0000000 --- a/LegionWA/AutoVendor/Init.lua +++ /dev/null @@ -1,264 +0,0 @@ -local debug = false -local iconDisplayDuration = 3 - ----@param container number ----@param slot number ----@return string, string|nil -local function getItemLink(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local link = select(7, GetContainerItemInfo(container, slot)) - if link == nil then return "", string.format("GetContainerItemInfo returned nil for link (arg 7)") end - return link -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemQuantity(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local quantity = select(2, GetContainerItemInfo(container, slot)) - if quantity == nil then - return "", - string.format("GetContainerItemInfo returned nil for quantity (arg 2)") - end - return quantity -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemName(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local name = select(1, GetItemInfo(getItemLink(container, slot))) - if name == nil then return "", string.format("GetItemInfo returned nil for name (arg 1)") end - return name -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemType(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local type = select(6, GetItemInfo(getItemLink(container, slot))) - if type == nil then return "", string.format("GetItemInfo returned nil for type (arg 6)") end - return type -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemSubtype(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local subtype = select(7, GetItemInfo(getItemLink(container, slot))) - if subtype == nil then return "", string.format("GetItemInfo returned nil for subtype (arg 7)") end - return subtype -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemLevel(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local level = select(4, GetItemInfo(getItemLink(container, slot))) - if level == nil then return "", string.format("GetItemInfo returned nil for level (arg 4)") end - return level -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemValue(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local value = select(11, GetItemInfo(getItemLink(container, slot))) - if value == nil then return "", string.format("GetItemInfo returned nil for value (arg 11)") end - return value -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemQuality(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local quality = select(3, GetItemInfo(getItemLink(container, slot))) - if quality == nil then return "", string.format("GetItemInfo returned nil for quality (arg 3)") end - return quality -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemEquipLocation(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local equipLoc = select(9, GetItemInfo(getItemLink(container, slot))) - if equipLoc == nil then return "", string.format("GetItemInfo returned nil for equipLoc (arg 9)") end - return equipLoc -end ----@param container number ----@param slot number ----@return string, string|nil -local function getItemIcon(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local icon = select(10, GetItemInfo(getItemLink(container, slot))) - if icon == nil then return "", string.format("GetItemInfo returned nil for icon (arg 10)") end - return icon -end ----@param container number ----@param slot number ----@return string, string|nil -local function getBindType(container, slot) - if container == nil then return "", string.format("Container is nil") end - if slot == nil then return "", string.format("Slot is nil") end - local bindType = select(14, GetItemInfo(getItemLink(container, slot))) - if bindType == nil then return "", string.format("GetItemInfo returned nil for bindType (arg 14)") end - return bindType -end - ----@class Filter ----@field requires table | nil ----@field filter fun(container: number, slot: number, provided: table): boolean -Filter = { - ---@param requires table | nil - ---@param filter fun(container: number, slot: number, provided: table): boolean - ---@return Filter - new = function(requires, filter) - local self = setmetatable({}, { - __index = Filter - }) - self.requires = requires - self.filter = filter - return self - end, - - ---@param self Filter - ---@param container number - ---@param slot number - ---@return boolean, string|nil - Run = function(self, container, slot) - ---@type table - local provided = {} - if self.requires then - for k, v in pairs(self.requires) do - local res, err = v(container, slot) - if err then - if debug then print(err) end - return false, err - end - provided[k] = res - end - end - local res, err = self.filter(container, slot, provided) - if err then - if debug then print(err) end - end - return res, nil - end -} - -local grayFilter = Filter.new({ - ["quality"] = getItemQuality - }, - function(container, slot, provided) - if provided.quality == 0 then - return true - end - return false - end) -local gearFilter = Filter.new({ - ["ilvl"] = getItemLevel, - ["bindType"] = getBindType, - ["type"] = getItemType, - ["equipLoc"] = getItemEquipLocation - }, - function(container, slot, provided) - local ilvlThreshold = 850 - local sellBoe = false - - if provided.type == "Armor" - or provided.type == "Weapon" - or provided.equipLoc == "INVTYPE_FINGER" - or provided.equipLoc == "INVTYPE_TRINKET" - or provided.equipLoc == "INVTYPE_CLOAK" - or provided.equipLoc == "INVTYPE_NECK" then - if provided.ilvl < ilvlThreshold and (provided.bindType == 1 or sellBoe) then - return true - end - end - return false - end) - ----@param container number ----@param slot number ----@return nil, string|nil -local function doSell(container, slot) - local itemIcon, err = getItemIcon(container, slot) - if err then return nil, string.format("Error getting item icon: %s", err) end - local itemName, err = getItemName(container, slot) - if err then return nil, string.format("Error getting item name: %s", err) end - local itemQuantity, err = getItemQuantity(container, slot) - if err then return nil, string.format("Error getting item quantity: %s", err) end - local itemQuality, err = getItemQuality(container, slot) - if err then return nil, string.format("Error getting item quality: %s", err) end - - local nameWithColor = string.format("%s[%s]\124r", aura_env.qualityColors[itemQuality + 1], itemName) - local nameWithQuantity = string.format("%s x%s", nameWithColor, itemQuantity) - - aura_env.allstates[#aura_env.allstates + 1] = { - show = true, - changed = true, - index = GetTime(), - resort = true, - - icon = itemIcon, - name = nameWithQuantity, - amount = itemQuantity, - - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } - - UseContainerItem(container, slot) - return nil, nil -end - ----@type table -local filters = { - grayFilter, - gearFilter -} - ----@class FilterService -aura_env.FilterService = { - ---@param container number - ---@param slot number - ---@return nil, nil - Run = function(container, slot) - local itemLink, err = getItemLink(container, slot) - if err then return nil, string.format("Err: slot empty (%d-%d) - %s", container, slot, err) end - for k, filter in pairs(filters) do - local res, err = filter:Run(container, slot) - if err then - if debug then print(err) end - else - if res then - doSell(container, slot) - return - end - end - end - end, -} - -aura_env.qualityColors = { - "\124cff9d9d9d", -- Poor - "\124cffffffff", -- Common - "\124cff1eff00", -- Uncommon - "\124cff0070dd", -- Rare - "\124cffa335ee", -- Epic - "\124cffff8000", -- Legendary - "\124cffe6cc80", -- Artifact - "\124cff00ccff", -- Heirloom -} From 9749f5a6eb6e7da2aaaceacd5f12264e2a8ef8fc Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 24 Aug 2024 22:45:34 +0200 Subject: [PATCH 42/44] Update --- LegionWA/AutoQuest/Event.lua | 82 ++++++------ LegionWA/BagBoEGlow/Event.lua | 6 +- LegionWA/BagBoEGlow/Init.lua | 60 ++++----- LegionWA/BagBoEGlow/README | 34 ++--- LegionWA/CDs/Color.lua | 38 +++--- LegionWA/CDs/Event.lua | 6 +- LegionWA/CDs/Init.lua | 200 ++++++++++++++-------------- LegionWA/CooldownAlert/Event.lua | 8 +- LegionWA/CooldownAlert/Init.lua | 134 +++++++++---------- LegionWA/DebuffAlert/Event.lua | 54 ++++---- LegionWA/HealerRaidDanger/color.lua | 10 +- LegionWA/HealerRaidDanger/init.lua | 58 ++++---- LegionWA/HealerRaidDanger/tsu.lua | 42 +++--- LegionWA/NearbyPlayers/Event.lua | 12 +- LegionWA/NearbyPlayers/Init.lua | 180 ++++++++++++------------- LegionWA/SoTR Counter/Event.lua | 14 +- LegionWA/SoTR Counter/Init.lua | 8 +- LegionWA/SoTR Counter/Text.lua | 4 +- LegionWA/SoTR Texture/Init.lua | 14 +- LegionWA/SoTR Texture/Text.lua | 4 +- 20 files changed, 484 insertions(+), 484 deletions(-) diff --git a/LegionWA/AutoQuest/Event.lua b/LegionWA/AutoQuest/Event.lua index 54ed108..b599f2c 100644 --- a/LegionWA/AutoQuest/Event.lua +++ b/LegionWA/AutoQuest/Event.lua @@ -1,42 +1,42 @@ --- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW -function(e) - if e == "QUEST_POI_UPDATE" then - CloseGossip() - elseif e == "QUEST_DETAIL" then - AcceptQuest() - elseif e == "QUEST_COMPLETE" then - if GetNumQuestChoices() <= 1 then - GetQuestReward(1) - end - elseif e == "GOSSIP_SHOW" then - local quests = GetNumGossipAvailableQuests() - local completedQuests = GetNumGossipActiveQuests() - local options = GetNumGossipOptions() - if completedQuests > 0 and options == 0 then - for i = 1, completedQuests do - SelectGossipActiveQuest(i) - end - end - if quests > 0 and options == 0 then - SelectGossipAvailableQuest(1) - end - if options == 1 and quests + completedQuests == 0 then - SelectGossipOption(1) - end - elseif e == "QUEST_GREETING" then - local quests = GetNumGossipAvailableQuests() - local completedQuests = GetNumGossipActiveQuests() - if completedQuests > 0 then - for i = 1, completedQuests do - SelectActiveQuest(1) - end - end - if quests > 0 then - SelectAvailableQuest(1) - end - elseif e == "QUEST_PROGRESS" then - if IsQuestCompletable(i) then - CompleteQuest() - end - end +-- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW +function(e) + if e == "QUEST_POI_UPDATE" then + CloseGossip() + elseif e == "QUEST_DETAIL" then + AcceptQuest() + elseif e == "QUEST_COMPLETE" then + if GetNumQuestChoices() <= 1 then + GetQuestReward(1) + end + elseif e == "GOSSIP_SHOW" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + local options = GetNumGossipOptions() + if completedQuests > 0 and options == 0 then + for i = 1, completedQuests do + SelectGossipActiveQuest(i) + end + end + if quests > 0 and options == 0 then + SelectGossipAvailableQuest(1) + end + if options == 1 and quests + completedQuests == 0 then + SelectGossipOption(1) + end + elseif e == "QUEST_GREETING" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + if completedQuests > 0 then + for i = 1, completedQuests do + SelectActiveQuest(1) + end + end + if quests > 0 then + SelectAvailableQuest(1) + end + elseif e == "QUEST_PROGRESS" then + if IsQuestCompletable(i) then + CompleteQuest() + end + end end \ No newline at end of file diff --git a/LegionWA/BagBoEGlow/Event.lua b/LegionWA/BagBoEGlow/Event.lua index 2cbf14c..365f687 100644 --- a/LegionWA/BagBoEGlow/Event.lua +++ b/LegionWA/BagBoEGlow/Event.lua @@ -1,4 +1,4 @@ --- BAG_UPDATE -function(e) - aura_env.update() +-- BAG_UPDATE +function(e) + aura_env.update() end \ No newline at end of file diff --git a/LegionWA/BagBoEGlow/Init.lua b/LegionWA/BagBoEGlow/Init.lua index af49af3..53ca6be 100644 --- a/LegionWA/BagBoEGlow/Init.lua +++ b/LegionWA/BagBoEGlow/Init.lua @@ -1,30 +1,30 @@ -local function getItemLink(container, slot) - return select(7, GetContainerItemInfo(container, slot)) or "" -end -local function getBindType(container, slot) - return select(14, GetItemInfo(getItemLink(container, slot))) or 0 -end -local function isBoe(container, slot) - return getBindType(container, slot) == 1 -end - - -local showGlow = function(container, slot) - ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) -end -local hideGlow = function(container, slot) - ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) -end - -aura_env.update = function() - for container = 0, 4 do - for slot = 1, GetContainerNumSlots(container) do - print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) - if isBoe(container, slot) then - showGlow(container, slot) - else - hideGlow(container, slot) - end - end - end -end +local function getItemLink(container, slot) + return select(7, GetContainerItemInfo(container, slot)) or "" +end +local function getBindType(container, slot) + return select(14, GetItemInfo(getItemLink(container, slot))) or 0 +end +local function isBoe(container, slot) + return getBindType(container, slot) == 1 +end + + +local showGlow = function(container, slot) + ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end +local hideGlow = function(container, slot) + ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end + +aura_env.update = function() + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) + if isBoe(container, slot) then + showGlow(container, slot) + else + hideGlow(container, slot) + end + end + end +end diff --git a/LegionWA/BagBoEGlow/README b/LegionWA/BagBoEGlow/README index 434ab32..2bf5842 100644 --- a/LegionWA/BagBoEGlow/README +++ b/LegionWA/BagBoEGlow/README @@ -1,18 +1,18 @@ -Haven't found a way of determining whether an item is soulbound or not without tooltip scanning which I don't want to do - -local cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate") -local function IsSoulbound(bag, slot) - cTip:SetOwner(UIParent, "ANCHOR_NONE") - cTip:SetBagItem(bag, slot) - cTip:Show() - for i = 1,cTip:NumLines() do - if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then - cTip:Hide() - return true - end - end - cTip:Hide() - return false -end - +Haven't found a way of determining whether an item is soulbound or not without tooltip scanning which I don't want to do + +local cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate") +local function IsSoulbound(bag, slot) + cTip:SetOwner(UIParent, "ANCHOR_NONE") + cTip:SetBagItem(bag, slot) + cTip:Show() + for i = 1,cTip:NumLines() do + if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then + cTip:Hide() + return true + end + end + cTip:Hide() + return false +end + Some guy says this is good \ No newline at end of file diff --git a/LegionWA/CDs/Color.lua b/LegionWA/CDs/Color.lua index 071212a..e9f9a16 100644 --- a/LegionWA/CDs/Color.lua +++ b/LegionWA/CDs/Color.lua @@ -1,20 +1,20 @@ -function(progress, r1, g1, b1, a1, r2, g2, b2, a2) - -- if aura_env.state.IsActive then - -- ActionButton_ShowOverlayGlow(aura_env.region.icon) - -- else - -- ActionButton_HideOverlayGlow(aura_env.region.icon) - -- end - - if aura_env.state.IsActive then - aura_env.region.icon:SetDesaturated(false) - return r1, g1, b1, a1 - end - - if aura_env.IsOnCooldown then - aura_env.region.icon:SetDesaturated(true) - return r1, g1, b1, a1 - end - - aura_env.region.icon:SetDesaturated(false) - return r2, g2, b2, 0.6 +function(progress, r1, g1, b1, a1, r2, g2, b2, a2) + -- if aura_env.state.IsActive then + -- ActionButton_ShowOverlayGlow(aura_env.region.icon) + -- else + -- ActionButton_HideOverlayGlow(aura_env.region.icon) + -- end + + if aura_env.statee.IsActive then + aura_env.region.icon:SetDesaturated(false) + return r1, g1, b1, a1 + end + + if aura_env.IsOnCooldown then + aura_env.region.icon:SetDesaturated(true) + return r1, g1, b1, a1 + end + + aura_env.region.icon:SetDesaturated(false) + return r2, g2, b2, 0.6 end \ No newline at end of file diff --git a/LegionWA/CDs/Event.lua b/LegionWA/CDs/Event.lua index cf458e9..5fc898d 100644 --- a/LegionWA/CDs/Event.lua +++ b/LegionWA/CDs/Event.lua @@ -1,4 +1,4 @@ -function(allstates) - aura_env.HandleEvent(allstates) - return true +function(allstates) + aura_env.HandleEvent(allstates) + return true end \ No newline at end of file diff --git a/LegionWA/CDs/Init.lua b/LegionWA/CDs/Init.lua index d910c5c..aee49b6 100644 --- a/LegionWA/CDs/Init.lua +++ b/LegionWA/CDs/Init.lua @@ -1,100 +1,100 @@ -local CooldownType = { - New = function(self) - local o = {} - setmetatable(o, self) - self.__index = self - return o - end, -} - -local NullType = CooldownType:New() -NullType.GetActiveInfo = function(self) - return false, 0, 0 -end -local TotemType = CooldownType:New() -TotemType.GetActiveInfo = function(self) - for i = 1, 4 do - local present, name, start, duration = GetTotemInfo(i) - if present and name == self.name then - return true, start, duration - end - end - return false, 0, 0 -end - -local Cooldown = { - New = function(self, type, spellid, keybind) - local o = { - ["type"] = type, - ["spellid"] = spellid, - ["name"] = GetSpellInfo(spellid), - ["icon"] = GetSpellTexture(spellid), - ["keybind"] = keybind, - } - setmetatable(o, self) - self.__index = self - return o - end, - - GetCooldownInfo = function(self) - local start, duration = GetSpellCooldown(self.spellid) - return start > 0 and duration > aura_env.gcdThreshold, start, duration - end, - - GetActiveInfo = function(self) - return self.type:GetActiveInfo() - end -} - -aura_env.cooldowns = { - [5394] = Cooldown:New(TotemType, 5394, "C"), -- Healing Stream Totem - [2484] = Cooldown:New(TotemType, 2484, "SY"), -- Earthbind Totem - [8143] = Cooldown:New(TotemType, 8143, "S5"), -- Tremor Totem - [8177] = Cooldown:New(TotemType, 8177, "5"), -- Grounding Totem - [108273] = Cooldown:New(TotemType, 108273, "S4"), -- Windwalk Totem - [108270] = Cooldown:New(TotemType, 108270, "SF"), -- Stone Bulwark Totem -} -aura_env.gcdThreshold = 1.5 - -aura_env.Update = function(allstates, cd) - local state = allstates[cd.spellid] or {} - - state.IsOnCooldown = cd:GetCooldownInfo() - state.IsActive = cd:GetActiveInfo() - state.Keybind = cd.keybind - - if state.IsOnCooldown and not state.IsActive then - local _, start, duration = cd:GetCooldownInfo() - state.progressType = "timed" - state.duration = duration - state.expirationTime = start + duration - elseif state.IsOnCooldown and state.IsActive then - local _, start, duration = cd:GetActiveInfo() - state.progressType = "timed" - state.duration = duration - state.expirationTime = start + duration - end - - state.changed = true - state.show = true - state.name = cd.name - state.icon = cd.icon - state.spellid = cd.spellid - allstates[cd.spellid] = state -end - -aura_env.UpdateAll = function(allstates) - for _, v in pairs(aura_env.cooldowns) do - aura_env.Update(allstates, v) - end -end - -aura_env.HandleEvent = function(allstates) - -- TODO: Handle events better - -- On cooldown begin -> trigger update on relevant spell - -- On totem die -> same - -- On buff remove - -- On debuff remove - -- On... Whatever else might happen - aura_env.UpdateAll(allstates) -end +local CooldownType = { + New = function(self) + local o = {} + setmetatable(o, self) + self.__index = self + return o + end, +} + +local NullType = CooldownType:New() +NullType.GetActiveInfo = function(self) + return false, 0, 0 +end +local TotemType = CooldownType:New() +TotemType.GetActiveInfo = function(self) + for i = 1, 4 do + local present, name, start, duration = GetTotemInfo(i) + if present and name == self.name then + return true, start, duration + end + end + return false, 0, 0 +end + +local Cooldown = { + New = function(self, type, spellid, keybind) + local o = { + ["type"] = type, + ["spellid"] = spellid, + ["name"] = GetSpellInfo(spellid), + ["icon"] = GetSpellTexture(spellid), + ["keybind"] = keybind, + } + setmetatable(o, self) + self.__index = self + return o + end, + + GetCooldownInfo = function(self) + local start, duration = GetSpellCooldown(self.spellid) + return start > 0 and duration > aura_env.gcdThreshold, start, duration + end, + + GetActiveInfo = function(self) + return self.type:GetActiveInfo() + end +} + +aura_env.cooldowns = { + [5394] = Cooldown:New(TotemType, 5394, "C"), -- Healing Stream Totem + [2484] = Cooldown:New(TotemType, 2484, "SY"), -- Earthbind Totem + [8143] = Cooldown:New(TotemType, 8143, "S5"), -- Tremor Totem + [8177] = Cooldown:New(TotemType, 8177, "5"), -- Grounding Totem + [108273] = Cooldown:New(TotemType, 108273, "S4"), -- Windwalk Totem + [108270] = Cooldown:New(TotemType, 108270, "SF"), -- Stone Bulwark Totem +} +aura_env.gcdThreshold = 1.5 + +aura_env.Update = function(allstates, cd) + local state = allstates[cd.spellid] or {} + + state.IsOnCooldown = cd:GetCooldownInfo() + state.IsActive = cd:GetActiveInfo() + state.Keybind = cd.keybind + + if state.IsOnCooldown and not state.IsActive then + local _, start, duration = cd:GetCooldownInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + elseif state.IsOnCooldown and state.IsActive then + local _, start, duration = cd:GetActiveInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + end + + state.changed = true + state.show = true + state.name = cd.name + state.icon = cd.icon + state.spellid = cd.spellid + allstates[cd.spellid] = state +end + +aura_env.UpdateAll = function(allstates) + for _, v in pairs(aura_env.cooldowns) do + aura_env.Update(allstates, v) + end +end + +aura_env.HandleEvent = function(allstates) + -- TODO: Handle events better + -- On cooldown begin -> trigger update on relevant spell + -- On totem die -> same + -- On buff remove + -- On debuff remove + -- On... Whatever else might happen + aura_env.UpdateAll(allstates) +end diff --git a/LegionWA/CooldownAlert/Event.lua b/LegionWA/CooldownAlert/Event.lua index eaeb61e..2ff9c4d 100644 --- a/LegionWA/CooldownAlert/Event.lua +++ b/LegionWA/CooldownAlert/Event.lua @@ -1,5 +1,5 @@ --- ACTIONBAR_UPDATE_COOLDOWN -function(allstates, e) - aura_env.processEvent(allstates) - return true +-- ACTIONBAR_UPDATE_COOLDOWN +function(allstates, e) + aura_env.processEvent(allstates) + return true end \ No newline at end of file diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua index 343c0e8..83f079a 100644 --- a/LegionWA/CooldownAlert/Init.lua +++ b/LegionWA/CooldownAlert/Init.lua @@ -1,68 +1,68 @@ -aura_env.trackedSpells = { - 20271, -- Judgement - 26573, -- Consecration - 209202, -- Eye of Tyr - 213652, -- Hand of the Protector - 31935, -- Avenger's Shield - 53600, -- Shield of the Righteous - 1044, -- Hand of Freedom - 155145, -- Arcane Torrent - 853, -- Hammer of Justice - 6940, -- Hand of Sacrifice - 31850, -- Ardent Defender - 86659, -- Guardian of Ancient Kings - 204018, -- Blessing of Spellwarding -} -local iconDisplayDuration = 0.4 -local gcdDuration = 1.5 - -aura_env.cache = {} -for k, spellId in pairs(aura_env.trackedSpells) do - aura_env.cache[spellId] = { - ready = true, - hasCharges = false, - } - if GetSpellCharges(spellId) then - aura_env.cache[spellId].hasCharges = true - aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) - end -end - -aura_env.processEvent = function(allstates) - for k, spellId in pairs(aura_env.trackedSpells) do - -- Handle spells with charges - local isReady - if (aura_env.cache[spellId].hasCharges) then - local charges = select(1, GetSpellCharges(spellId)) - if (charges > aura_env.cache[spellId].charges) then - isReady = true - aura_env.cache[spellId].charges = charges - else - isReady = false - aura_env.cache[spellId].charges = charges - end - else - isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration - end - - - if (not aura_env.cache[spellId].ready and isReady) then - local icon = select(3, GetSpellInfo(spellId)) - allstates[spellId] = { - show = true, - changed = true, - index = GetTime(), - resort = true, - - icon = icon, - - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } - end - - aura_env.cache[spellId].ready = isReady - end +aura_env.trackedSpells = { + 20271, -- Judgement + 26573, -- Consecration + 209202, -- Eye of Tyr + 213652, -- Hand of the Protector + 31935, -- Avenger's Shield + 53600, -- Shield of the Righteous + 1044, -- Hand of Freedom + 155145, -- Arcane Torrent + 853, -- Hammer of Justice + 6940, -- Hand of Sacrifice + 31850, -- Ardent Defender + 86659, -- Guardian of Ancient Kings + 204018, -- Blessing of Spellwarding +} +local iconDisplayDuration = 0.4 +local gcdDuration = 1.5 + +aura_env.cache = {} +for k, spellId in pairs(aura_env.trackedSpells) do + aura_env.cache[spellId] = { + ready = true, + hasCharges = false, + } + if GetSpellCharges(spellId) then + aura_env.cache[spellId].hasCharges = true + aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) + end +end + +aura_env.processEvent = function(allstates) + for k, spellId in pairs(aura_env.trackedSpells) do + -- Handle spells with charges + local isReady + if (aura_env.cache[spellId].hasCharges) then + local charges = select(1, GetSpellCharges(spellId)) + if (charges > aura_env.cache[spellId].charges) then + isReady = true + aura_env.cache[spellId].charges = charges + else + isReady = false + aura_env.cache[spellId].charges = charges + end + else + isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration + end + + + if (not aura_env.cache[spellId].ready and isReady) then + local icon = select(3, GetSpellInfo(spellId)) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = icon, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + end + + aura_env.cache[spellId].ready = isReady + end end \ No newline at end of file diff --git a/LegionWA/DebuffAlert/Event.lua b/LegionWA/DebuffAlert/Event.lua index eae0cde..73b21fb 100644 --- a/LegionWA/DebuffAlert/Event.lua +++ b/LegionWA/DebuffAlert/Event.lua @@ -1,28 +1,28 @@ --- COMBAT_LOG_EVENT_UNFILTERED -function(allstates, e, ...) - local iconDisplayDuration = 0.5 - - local se = select(2, ...) - if (se ~= "SPELL_AURA_APPLIED") then return end - local target = select(9, ...) - if (target ~= UnitName("player")) then return end - local auraType = select(15, ...) - if (auraType ~= "DEBUFF") then return end - local spellId = select(12, ...) - print(select(3, GetSpellInfo(spellId))) - allstates[spellId] = { - show = true, - changed = true, - index = GetTime(), - resort = true, - - icon = select(3, GetSpellInfo(spellId)), - name = select(13, ...), - - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } - return true +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local iconDisplayDuration = 0.5 + + local se = select(2, ...) + if (se ~= "SPELL_AURA_APPLIED") then return end + local target = select(9, ...) + if (target ~= UnitName("player")) then return end + local auraType = select(15, ...) + if (auraType ~= "DEBUFF") then return end + local spellId = select(12, ...) + print(select(3, GetSpellInfo(spellId))) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = select(3, GetSpellInfo(spellId)), + name = select(13, ...), + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + return true end \ No newline at end of file diff --git a/LegionWA/HealerRaidDanger/color.lua b/LegionWA/HealerRaidDanger/color.lua index 0270cc4..c39c6bf 100644 --- a/LegionWA/HealerRaidDanger/color.lua +++ b/LegionWA/HealerRaidDanger/color.lua @@ -1,5 +1,5 @@ --- DevTools_Dump(aura_env.region) --- aura_env.region:SetParent(aura_env.state.frame) -aura_env.region:ClearAllPoints() -aura_env.region:SetPoint("TOPLEFT", aura_env.state.frame.AuraWatch, "TOPLEFT", 0, 0) -aura_env.region:Show() +-- DevTools_Dump(aura_env.region) +-- aura_env.region:SetParent(aura_env.state.frame) +aura_env.region:ClearAllPoints() +aura_env.region:SetPoint("TOPLEFT", aura_env.statee.frame.AuraWatch, "TOPLEFT", 0, 0) +aura_env.region:Show() diff --git a/LegionWA/HealerRaidDanger/init.lua b/LegionWA/HealerRaidDanger/init.lua index 21ccc19..2593b88 100644 --- a/LegionWA/HealerRaidDanger/init.lua +++ b/LegionWA/HealerRaidDanger/init.lua @@ -1,29 +1,29 @@ -local raidFrames = ElvUF_Raid -local group1, group2, group3, group4, group5, group6 = raidFrames:GetChildren() -local groups = { group1, group2, group3, group4, group5, group6 } -aura_env.players = {} -for _, group in ipairs(groups) do - local playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 = group:GetChildren() - local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 } - - for _, player in ipairs(playerFrames) do - if player.Name:IsVisible() then - aura_env.players[#aura_env.players + 1] = player - end - end -end - -local specs = { - -- We can't get unit spec.......... - -- Best we can do is class - -- That fucking sucks -} - -aura_env.Player = { - new = function(self, player) - setmetatable({}, self) - self.frame = nil - self.danger = 0 - return self - end, -} +local raidFrames = ElvUF_Raid +local group1, group2, group3, group4, group5, group6 = raidFrames:GetChildren() +local groups = { group1, group2, group3, group4, group5, group6 } +aura_env.players = {} +for _, group in ipairs(groups) do + local playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 = group:GetChildren() + local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 } + + for _, player in ipairs(playerFrames) do + if player.Name:IsVisible() then + aura_env.players[#aura_env.players + 1] = player + end + end +end + +local specs = { + -- We can't get unit spec.......... + -- Best we can do is class + -- That fucking sucks +} + +aura_env.Player = { + new = function(self, player) + setmetatable({}, self) + self.frame = nil + self.danger = 0 + return self + end, +} diff --git a/LegionWA/HealerRaidDanger/tsu.lua b/LegionWA/HealerRaidDanger/tsu.lua index e41db79..0bf8dda 100644 --- a/LegionWA/HealerRaidDanger/tsu.lua +++ b/LegionWA/HealerRaidDanger/tsu.lua @@ -1,22 +1,22 @@ --- TSU -function(allstates, e) - if aura_env.players == nil then - aura_env.players = {} - end - - for _,player in ipairs(aura_env.players) do - allstates[player.Name:GetText()] = { - show = true, - changed = true, - name = 0.13, - frame = player, - icon = player.RaidIcon, - progressType = "static", - value = 1, - total = 1, - autoHide = true, - resort = true, - } - end - return true +-- TSU +function(allstates, e) + if aura_env.players == nil then + aura_env.players = {} + end + + for _,player in ipairs(aura_env.players) do + allstates[player.Name:GetText()] = { + show = true, + changed = true, + name = 0.13, + frame = player, + icon = player.RaidIcon, + progressType = "static", + value = 1, + total = 1, + autoHide = true, + resort = true, + } + end + return true end \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Event.lua b/LegionWA/NearbyPlayers/Event.lua index 113d2f1..36dcc6d 100644 --- a/LegionWA/NearbyPlayers/Event.lua +++ b/LegionWA/NearbyPlayers/Event.lua @@ -1,7 +1,7 @@ --- COMBAT_LOG_EVENT_UNFILTERED -function(allstates, e, ...) - local caster = select(6, ...) - local target = select(10, ...) - - aura_env.processEvent(allstates, caster, target) +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local caster = select(6, ...) + local target = select(10, ...) + + aura_env.processEvent(allstates, caster, target) end \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Init.lua b/LegionWA/NearbyPlayers/Init.lua index 0157b3f..a9cc206 100644 --- a/LegionWA/NearbyPlayers/Init.lua +++ b/LegionWA/NearbyPlayers/Init.lua @@ -1,90 +1,90 @@ -if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end -if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end -if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end - -local allianceRaces = { - "Draenai", - "Dwarf", - "Gnome", - "Human", - "Night Elf", - "Worgen" -} - -PlayerController = { - nearbyPlayers = {}, - addPlayer = function(self, name) - self.nearbyPlayers[name] = Player:New(name) - end, - getPlayers = function(self) - - end, - process = function(guid) - if (self.nearbyPlayers[guid] == nil) then - self.addPlayer(guid) - else - - end - end -} - -Player = { - guid = nil, - lastSighted = nil, - info = nil, - update = function(self) - self.lastSighted = GetTime() - end, - getFormatted = function(self) - -- Color by class - -- Format time - return info.name .. " " .. self.lastSighted - end -} -PlayerInfo = { - class = nil, - race = nil, - name = nil, - isHostile = nil, -} - -function Player:New(guid) - o = {} - setmetatable(o, self) - self.__index = self - - o.guid = guid or "" - o.lastSighted = GetTime() - o.info = PlayerInfo:New(guid) - - return o -end -function PlayerInfo:New(guid) - o = {} - setmetatable(o, self) - self.__index = self - - local info - if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then - info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] - else - info = GetPlayerInfoByGUID(guid) - WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { - class = info.class, - race = info.race, - name = info.name, - isHostile = allianceRaces[race] ~= nil - } - end - o.class = info.class or "" - o.race = info.race or "" - o.name = info.name or "" - o.isHostile = info.isHostile or true - - return o -end - -aura_env.processEvent = function(caster, target) - PlayerController:process(caster) - PlayerController:process(target) -end +if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end +if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end +if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end + +local allianceRaces = { + "Draenai", + "Dwarf", + "Gnome", + "Human", + "Night Elf", + "Worgen" +} + +PlayerController = { + nearbyPlayers = {}, + addPlayer = function(self, name) + self.nearbyPlayers[name] = Player:New(name) + end, + getPlayers = function(self) + + end, + process = function(guid) + if (self.nearbyPlayers[guid] == nil) then + self.addPlayer(guid) + else + + end + end +} + +Player = { + guid = nil, + lastSighted = nil, + info = nil, + update = function(self) + self.lastSighted = GetTime() + end, + getFormatted = function(self) + -- Color by class + -- Format time + return info.name .. " " .. self.lastSighted + end +} +PlayerInfo = { + class = nil, + race = nil, + name = nil, + isHostile = nil, +} + +function Player:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + o.guid = guid or "" + o.lastSighted = GetTime() + o.info = PlayerInfo:New(guid) + + return o +end +function PlayerInfo:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + local info + if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then + info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] + else + info = GetPlayerInfoByGUID(guid) + WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { + class = info.class, + race = info.race, + name = info.name, + isHostile = allianceRaces[race] ~= nil + } + end + o.class = info.class or "" + o.race = info.race or "" + o.name = info.name or "" + o.isHostile = info.isHostile or true + + return o +end + +aura_env.processEvent = function(caster, target) + PlayerController:process(caster) + PlayerController:process(target) +end diff --git a/LegionWA/SoTR Counter/Event.lua b/LegionWA/SoTR Counter/Event.lua index 976fe42..82928e4 100644 --- a/LegionWA/SoTR Counter/Event.lua +++ b/LegionWA/SoTR Counter/Event.lua @@ -1,8 +1,8 @@ --- SPELL_UPDATE_CHARGES -function(e) - local charges = aura_env.getCharges() - if (charges ~= aura_env.currentCharges) then - aura_env.currentCharges = charges - return true - end +-- SPELL_UPDATE_CHARGES +function(e) + local charges = aura_env.getCharges() + if (charges ~= aura_env.currentCharges) then + aura_env.currentCharges = charges + return true + end end \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Init.lua b/LegionWA/SoTR Counter/Init.lua index 4e14f2c..322da7d 100644 --- a/LegionWA/SoTR Counter/Init.lua +++ b/LegionWA/SoTR Counter/Init.lua @@ -1,5 +1,5 @@ -aura_env.getCharges = function() - return select(1, GetSpellCharges(53600)) -end - +aura_env.getCharges = function() + return select(1, GetSpellCharges(53600)) +end + aura_env.currentCharges = 0 \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Text.lua b/LegionWA/SoTR Counter/Text.lua index 8a218ed..ef31c66 100644 --- a/LegionWA/SoTR Counter/Text.lua +++ b/LegionWA/SoTR Counter/Text.lua @@ -1,3 +1,3 @@ -function() - return aura_env.getCharges() +function() + return aura_env.getCharges() end \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Init.lua b/LegionWA/SoTR Texture/Init.lua index 3d21e5e..54e8353 100644 --- a/LegionWA/SoTR Texture/Init.lua +++ b/LegionWA/SoTR Texture/Init.lua @@ -1,8 +1,8 @@ -aura_env.findAura = function(LFname) - for i = 1, 40 do - local name = UnitAura("player", i) - if (name == LFname) then - return i - end - end +aura_env.findAura = function(LFname) + for i = 1, 40 do + local name = UnitAura("player", i) + if (name == LFname) then + return i + end + end end \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Text.lua b/LegionWA/SoTR Texture/Text.lua index 5567842..256a89f 100644 --- a/LegionWA/SoTR Texture/Text.lua +++ b/LegionWA/SoTR Texture/Text.lua @@ -1,3 +1,3 @@ -function() - return -select(17, UnitAura("player", aura_env.findAura("Shield of the Righteous"))) .. "%" +function() + return -select(17, UnitAura("player", aura_env.findAura("Shield of the Righteous"))) .. "%" end \ No newline at end of file From 4220b4d0bd7952d219df1d64cac4186ec3849fa0 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sun, 13 Oct 2024 23:57:21 +0200 Subject: [PATCH 43/44] Update cooldown alert with warlock shit --- LegionWA/CooldownAlert/Init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua index 83f079a..3b37642 100644 --- a/LegionWA/CooldownAlert/Init.lua +++ b/LegionWA/CooldownAlert/Init.lua @@ -12,6 +12,11 @@ aura_env.trackedSpells = { 31850, -- Ardent Defender 86659, -- Guardian of Ancient Kings 204018, -- Blessing of Spellwarding + -- + 108416, -- Dark Pact + 196447, -- Channel Demonfire + 104773, -- Unending Resolve + 196586, -- Dimensional Rift } local iconDisplayDuration = 0.4 local gcdDuration = 1.5 From 635147c29b87b8a41ee96e8e9b0d33570e95a0d8 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Thu, 15 May 2025 21:19:10 +0200 Subject: [PATCH 44/44] Code format --- LegionWA/BagBoEGlow/Init.lua | 37 ++++----- LegionWA/CDs/Init.lua | 12 +-- LegionWA/CooldownAlert/Init.lua | 117 ++++++++++++++-------------- LegionWA/HealerRaidDanger/init.lua | 4 +- LegionWA/NearbyPlayers/Init.lua | 121 ++++++++++++++--------------- LegionWA/SoTR Counter/Init.lua | 6 +- LegionWA/SoTR Texture/Init.lua | 12 ++- 7 files changed, 141 insertions(+), 168 deletions(-) diff --git a/LegionWA/BagBoEGlow/Init.lua b/LegionWA/BagBoEGlow/Init.lua index 53ca6be..15fa855 100644 --- a/LegionWA/BagBoEGlow/Init.lua +++ b/LegionWA/BagBoEGlow/Init.lua @@ -1,30 +1,23 @@ -local function getItemLink(container, slot) - return select(7, GetContainerItemInfo(container, slot)) or "" -end -local function getBindType(container, slot) - return select(14, GetItemInfo(getItemLink(container, slot))) or 0 -end -local function isBoe(container, slot) - return getBindType(container, slot) == 1 -end - +local function getItemLink(container, slot) return select(7, GetContainerItemInfo(container, slot)) or "" end +local function getBindType(container, slot) return select(14, GetItemInfo(getItemLink(container, slot))) or 0 end +local function isBoe(container, slot) return getBindType(container, slot) == 1 end local showGlow = function(container, slot) - ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) + ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) end local hideGlow = function(container, slot) - ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) + ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) end aura_env.update = function() - for container = 0, 4 do - for slot = 1, GetContainerNumSlots(container) do - print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) - if isBoe(container, slot) then - showGlow(container, slot) - else - hideGlow(container, slot) - end - end - end + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) + if isBoe(container, slot) then + showGlow(container, slot) + else + hideGlow(container, slot) + end + end + end end diff --git a/LegionWA/CDs/Init.lua b/LegionWA/CDs/Init.lua index aee49b6..a2e2f37 100644 --- a/LegionWA/CDs/Init.lua +++ b/LegionWA/CDs/Init.lua @@ -8,16 +8,12 @@ local CooldownType = { } local NullType = CooldownType:New() -NullType.GetActiveInfo = function(self) - return false, 0, 0 -end +NullType.GetActiveInfo = function(self) return false, 0, 0 end local TotemType = CooldownType:New() TotemType.GetActiveInfo = function(self) for i = 1, 4 do local present, name, start, duration = GetTotemInfo(i) - if present and name == self.name then - return true, start, duration - end + if present and name == self.name then return true, start, duration end end return false, 0, 0 end @@ -41,9 +37,7 @@ local Cooldown = { return start > 0 and duration > aura_env.gcdThreshold, start, duration end, - GetActiveInfo = function(self) - return self.type:GetActiveInfo() - end + GetActiveInfo = function(self) return self.type:GetActiveInfo() end, } aura_env.cooldowns = { diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua index 3b37642..23948ae 100644 --- a/LegionWA/CooldownAlert/Init.lua +++ b/LegionWA/CooldownAlert/Init.lua @@ -1,73 +1,72 @@ aura_env.trackedSpells = { - 20271, -- Judgement - 26573, -- Consecration - 209202, -- Eye of Tyr - 213652, -- Hand of the Protector - 31935, -- Avenger's Shield - 53600, -- Shield of the Righteous - 1044, -- Hand of Freedom - 155145, -- Arcane Torrent - 853, -- Hammer of Justice - 6940, -- Hand of Sacrifice - 31850, -- Ardent Defender - 86659, -- Guardian of Ancient Kings - 204018, -- Blessing of Spellwarding - -- - 108416, -- Dark Pact - 196447, -- Channel Demonfire - 104773, -- Unending Resolve - 196586, -- Dimensional Rift + 20271, -- Judgement + 26573, -- Consecration + 209202, -- Eye of Tyr + 213652, -- Hand of the Protector + 31935, -- Avenger's Shield + 53600, -- Shield of the Righteous + 1044, -- Hand of Freedom + 155145, -- Arcane Torrent + 853, -- Hammer of Justice + 6940, -- Hand of Sacrifice + 31850, -- Ardent Defender + 86659, -- Guardian of Ancient Kings + 204018, -- Blessing of Spellwarding + -- + 108416, -- Dark Pact + 196447, -- Channel Demonfire + 104773, -- Unending Resolve + 196586, -- Dimensional Rift } local iconDisplayDuration = 0.4 local gcdDuration = 1.5 aura_env.cache = {} for k, spellId in pairs(aura_env.trackedSpells) do - aura_env.cache[spellId] = { - ready = true, - hasCharges = false, - } - if GetSpellCharges(spellId) then - aura_env.cache[spellId].hasCharges = true - aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) - end + aura_env.cache[spellId] = { + ready = true, + hasCharges = false, + } + if GetSpellCharges(spellId) then + aura_env.cache[spellId].hasCharges = true + aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) + end end aura_env.processEvent = function(allstates) - for k, spellId in pairs(aura_env.trackedSpells) do - -- Handle spells with charges - local isReady - if (aura_env.cache[spellId].hasCharges) then - local charges = select(1, GetSpellCharges(spellId)) - if (charges > aura_env.cache[spellId].charges) then - isReady = true - aura_env.cache[spellId].charges = charges - else - isReady = false - aura_env.cache[spellId].charges = charges - end - else - isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration - end + for k, spellId in pairs(aura_env.trackedSpells) do + -- Handle spells with charges + local isReady + if aura_env.cache[spellId].hasCharges then + local charges = select(1, GetSpellCharges(spellId)) + if charges > aura_env.cache[spellId].charges then + isReady = true + aura_env.cache[spellId].charges = charges + else + isReady = false + aura_env.cache[spellId].charges = charges + end + else + isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration + end + if not aura_env.cache[spellId].ready and isReady then + local icon = select(3, GetSpellInfo(spellId)) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, - if (not aura_env.cache[spellId].ready and isReady) then - local icon = select(3, GetSpellInfo(spellId)) - allstates[spellId] = { - show = true, - changed = true, - index = GetTime(), - resort = true, + icon = icon, - icon = icon, + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + end - progressType = "timed", - expirationTime = GetTime() + iconDisplayDuration, - duration = iconDisplayDuration, - autoHide = true, - } - end - - aura_env.cache[spellId].ready = isReady - end -end \ No newline at end of file + aura_env.cache[spellId].ready = isReady + end +end diff --git a/LegionWA/HealerRaidDanger/init.lua b/LegionWA/HealerRaidDanger/init.lua index 2593b88..e7ae308 100644 --- a/LegionWA/HealerRaidDanger/init.lua +++ b/LegionWA/HealerRaidDanger/init.lua @@ -7,9 +7,7 @@ for _, group in ipairs(groups) do local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 } for _, player in ipairs(playerFrames) do - if player.Name:IsVisible() then - aura_env.players[#aura_env.players + 1] = player - end + if player.Name:IsVisible() then aura_env.players[#aura_env.players + 1] = player end end end diff --git a/LegionWA/NearbyPlayers/Init.lua b/LegionWA/NearbyPlayers/Init.lua index a9cc206..0c65dd5 100644 --- a/LegionWA/NearbyPlayers/Init.lua +++ b/LegionWA/NearbyPlayers/Init.lua @@ -3,88 +3,81 @@ if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end local allianceRaces = { - "Draenai", - "Dwarf", - "Gnome", - "Human", - "Night Elf", - "Worgen" + "Draenai", + "Dwarf", + "Gnome", + "Human", + "Night Elf", + "Worgen", } PlayerController = { - nearbyPlayers = {}, - addPlayer = function(self, name) - self.nearbyPlayers[name] = Player:New(name) - end, - getPlayers = function(self) - - end, - process = function(guid) - if (self.nearbyPlayers[guid] == nil) then - self.addPlayer(guid) - else - - end - end + nearbyPlayers = {}, + addPlayer = function(self, name) self.nearbyPlayers[name] = Player:New(name) end, + getPlayers = function(self) end, + process = function(guid) + if self.nearbyPlayers[guid] == nil then + self.addPlayer(guid) + else + end + end, } Player = { - guid = nil, - lastSighted = nil, - info = nil, - update = function(self) - self.lastSighted = GetTime() - end, - getFormatted = function(self) - -- Color by class - -- Format time - return info.name .. " " .. self.lastSighted - end + guid = nil, + lastSighted = nil, + info = nil, + update = function(self) self.lastSighted = GetTime() end, + getFormatted = function(self) + -- Color by class + -- Format time + return info.name .. " " .. self.lastSighted + end, } PlayerInfo = { - class = nil, - race = nil, - name = nil, - isHostile = nil, + class = nil, + race = nil, + name = nil, + isHostile = nil, } function Player:New(guid) - o = {} - setmetatable(o, self) - self.__index = self + o = {} + setmetatable(o, self) + self.__index = self - o.guid = guid or "" - o.lastSighted = GetTime() - o.info = PlayerInfo:New(guid) + o.guid = guid or "" + o.lastSighted = GetTime() + o.info = PlayerInfo:New(guid) - return o + return o end function PlayerInfo:New(guid) - o = {} - setmetatable(o, self) - self.__index = self + o = {} + setmetatable(o, self) + self.__index = self - local info - if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then - info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] - else - info = GetPlayerInfoByGUID(guid) - WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { - class = info.class, - race = info.race, - name = info.name, - isHostile = allianceRaces[race] ~= nil - } - end - o.class = info.class or "" - o.race = info.race or "" - o.name = info.name or "" - o.isHostile = info.isHostile or true + local info + if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then + info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] + else + info = GetPlayerInfoByGUID(guid) + WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { + class = info.class, + race = info.race, + name = info.name, + isHostile = allianceRaces[race] ~= nil, + } + end + o.class = info.class or "" + o.race = info.race or "" + o.name = info.name or "" + o.isHostile = info.isHostile or true - return o + return o end aura_env.processEvent = function(caster, target) - PlayerController:process(caster) - PlayerController:process(target) + PlayerController:process(caster) + PlayerController:process(target) end diff --git a/LegionWA/SoTR Counter/Init.lua b/LegionWA/SoTR Counter/Init.lua index 322da7d..a2501a6 100644 --- a/LegionWA/SoTR Counter/Init.lua +++ b/LegionWA/SoTR Counter/Init.lua @@ -1,5 +1,3 @@ -aura_env.getCharges = function() - return select(1, GetSpellCharges(53600)) -end +aura_env.getCharges = function() return select(1, GetSpellCharges(53600)) end -aura_env.currentCharges = 0 \ No newline at end of file +aura_env.currentCharges = 0 diff --git a/LegionWA/SoTR Texture/Init.lua b/LegionWA/SoTR Texture/Init.lua index 54e8353..85f0704 100644 --- a/LegionWA/SoTR Texture/Init.lua +++ b/LegionWA/SoTR Texture/Init.lua @@ -1,8 +1,6 @@ aura_env.findAura = function(LFname) - for i = 1, 40 do - local name = UnitAura("player", i) - if (name == LFname) then - return i - end - end -end \ No newline at end of file + for i = 1, 40 do + local name = UnitAura("player", i) + if name == LFname then return i end + end +end