diff --git a/AuctionatorPane.lua b/AuctionatorPane.lua new file mode 100644 index 0000000..70cba79 --- /dev/null +++ b/AuctionatorPane.lua @@ -0,0 +1,147 @@ +AtrPane = {}; +AtrPane.__index = AtrPane; + +ATR_SHOW_CURRENT = 1; +ATR_SHOW_HISTORY = 2; +ATR_SHOW_HINTS = 3; + +function AtrPane.create () + + local pane = {}; + setmetatable (pane,AtrPane); + + pane.fullStackSize = 0; + + pane.totalItems = 0; -- total in bags for this item + + pane.UINeedsUpdate = false; + pane.showWhich = ATR_SHOW_CURRENT; + + pane.activeSearch = nil; + pane.sortedHist = nil; + pane.hints = nil; + + pane.hlistScrollOffset = 0; + + pane:ClearSearch(); + + return pane; +end + + +----------------------------------------- + +function AtrPane:DoSearch (searchText, exact, rescanThreshold, callback) + + self.currIndex = nil; + self.pickKey = nil; + self.histIndex = nil; + self.hintsIndex = nil; + + self.sortedHist = nil; + self.hints = nil; + + self.SS_hilite_itemName = searchText; -- by name for search summary + + Atr_ClearBuyState(); + + self.activeScan = Atr_FindScan (nil); + + Atr_ClearAll(); -- it's fast, might as well just do it now for cleaner UE + + self.UINeedsUpdate = false; -- will be set when scan finishes + + self.activeSearch = Atr_NewSearch (searchText, exact, rescanThreshold, callback); + + if (exact) then + self.activeScan = self.activeSearch:GetFirstScan(); + end + + local cacheHit = false; + + if (searchText ~= "") then + if (self.activeScan.whenScanned == 0) then -- check whenScanned so we don't rescan cache hits + self.activeSearch:Start(); + else + self.UINeedsUpdate = true; + cacheHit = true; + end + end + + return cacheHit; +end + +----------------------------------------- + +function AtrPane:ClearSearch () + self:DoSearch ("", true); +end + +----------------------------------------- + +function AtrPane:GetProcessingState () + + if (self.activeSearch) then + return self.activeSearch.processing_state; + end + + return KM_NULL_STATE; +end + +----------------------------------------- + +function AtrPane:IsScanEmpty () + + return (self.activeScan == nil or self.activeScan:IsNil()); + +end + +----------------------------------------- + +function AtrPane:ShowCurrent () + + return self.showWhich == ATR_SHOW_CURRENT; + +end + +----------------------------------------- + +function AtrPane:ShowHistory () + + return self.showWhich == ATR_SHOW_HISTORY; + +end + +----------------------------------------- + +function AtrPane:ShowHints () + + return self.showWhich == ATR_SHOW_HINTS; + +end + +----------------------------------------- + +function AtrPane:SetToShowCurrent () + + self.showWhich = ATR_SHOW_CURRENT; + +end + +----------------------------------------- + +function AtrPane:SetToShowHistory () + + self.showWhich = ATR_SHOW_HISTORY; + +end + +----------------------------------------- + +function AtrPane:SetToShowHints () + + self.showWhich = ATR_SHOW_HINTS; + +end + + diff --git a/AuctionatorQuery.lua b/AuctionatorQuery.lua new file mode 100644 index 0000000..669b3c3 --- /dev/null +++ b/AuctionatorQuery.lua @@ -0,0 +1,117 @@ +----------------------------------------- + +AtrQuery = {}; +AtrQuery.__index = AtrQuery; + +----------------------------------------- + +function Atr_NewQuery () + + local query = {}; + setmetatable (query, AtrQuery); + + query.prevPage = nil; + query.numDupPages = 0; + query.pagenum = -1; + + return query; +end + +----------------------------------------- + +function AtrQuery:CheckForDuplicatePage (pagenum) + + local numBatchAuctions = GetNumAuctionItems("list"); + + local thisPage = {}; + thisPage.numOnPage = numBatchAuctions; + thisPage.items = {}; + thisPage.pagenum = pagenum; + + + if (self.prevPage) then +-- zc.msg_atr ("Comparing page ", pagenum, " to pge ", self.prevPage.pagenum); + + if (self.prevPage.pagenum == pagenum) then + return false; + end + end + + if (numBatchAuctions == 0) then + self.prevPage = thisPage; + return false; + end + + local x; + local prevPage = self.prevPage; + local dupPageFound = true; + local numDupItems = 0; + local allItemsIdentical = true; + + for x = 1, numBatchAuctions do + + local name, texture, count, quality, canUse, level, minBid, minIncrement, buyoutPrice, bidAmount, highBidder, owner = GetAuctionItemInfo("list", x); + + thisPage.items[x] = self:BuildItemIDstr (name, count, minBid, buyoutPrice, bidAmount); + + if (prevPage == nil or (thisPage.items[x] ~= prevPage.items[x])) then + + dupPageFound = false; + else + numDupItems = numDupItems + 1; + end + + if (x > 1 and allItemsIdentical and thisPage.items[x] ~= thisPage.items[x-1]) then -- handle those numnuts who post 200 identical auctions + allItemsIdentical = false; + end + + + end + + if (prevPage ~= nil and prevPage.numOnPage ~= thisPage.numOnPage) then + +-- zc.msg_pink ("page is unique - numauctions didn't match"); + dupPageFound = false; + + elseif (dupPageFound and allItemsIdentical) then + +-- zc.msg_red ("Dup page found but all items identical: thisPage.numOnPage: ", thisPage.numOnPage); + dupPageFound = false; + + elseif (not dupPageFound) then + +-- zc.msg_pink ("page is unique"); + end + + + if (dupPageFound) then + + self.numDupPages = self.numDupPages + 1; +-- zc.msg_atr ("DUPLICATE PAGE FOUND: thisPage.numOnPage: ", thisPage.numOnPage, " numDupItems: ", numDupItems); + else + self.prevPage = thisPage; + end + + return dupPageFound; +end + + +----------------------------------------- + +function AtrQuery:IsLastPage (pagenum) + + local _, totalAuctions = GetNumAuctionItems("list"); + + return (((pagenum + 1) * 50) >= totalAuctions); +end + +----------------------------------------- + +function AtrQuery:BuildItemIDstr(name, count, minBid, buyoutPrice, bidAmount) + + if (name) then + return name.."_"..count.."_"..minBid.."_"..buyoutPrice.."_"..bidAmount; + end + + return ""; +end diff --git a/AuctionatorScan.lua b/AuctionatorScan.lua new file mode 100644 index 0000000..a57c790 --- /dev/null +++ b/AuctionatorScan.lua @@ -0,0 +1,1374 @@ + +local addonName, addonTable = "Auctionator", AtrNS; +local zc = addonTable.zc; + +KM_NULL_STATE = 0; +KM_PREQUERY = 1; +KM_INQUERY = 2; +KM_POSTQUERY = 3; +KM_ANALYZING = 4; +KM_SETTINGSORT = 5; + +local AUCTION_CLASS_WEAPON = 1; +local AUCTION_CLASS_ARMOR = 2; + +local gAllScans = {}; + +local BIGNUM = 999999999999; + +local ATR_SORTBY_NAME_ASC = 0; +local ATR_SORTBY_NAME_DES = 1; +local ATR_SORTBY_PRICE_ASC = 2; +local ATR_SORTBY_PRICE_DES = 3; + +----------------------------------------- + +AtrScan = {}; +AtrScan.__index = AtrScan; + +----------------------------------------- + +AtrSearch = {}; +AtrSearch.__index = AtrSearch; + +----------------------------------------- + +function Atr_NewSearch (itemName, exact, rescanThreshold, callback) + + local srch = {}; + setmetatable (srch, AtrSearch); + srch:Init (itemName, exact, rescanThreshold, callback); + + return srch; +end + +----------------------------------------- + +function AtrSearch:Init (searchText, exact, rescanThreshold, callback) + + if (searchText == nil) then + searchText = ""; + end + + self.origSearchText = searchText; + + if (not exact) then + if (zc.StringStartsWith (searchText, "\"") and zc.StringEndsWith (searchText, "\"")) then + searchText = string.sub (searchText, 2, string.len(searchText)-1); + exact = true; + end + end + + self.searchText = searchText; + self.exact = exact; + self.processing_state = KM_NULL_STATE + self.current_page = -1 + self.items = {}; + self.query = Atr_NewQuery(); + self.sortedScans = nil; + self.sortHow = ATR_SORTBY_PRICE_ASC; + self.callback = callback; + + if (exact) then + + if (rescanThreshold and rescanThreshold > 0) then + local scan = Atr_FindScan (searchText); + if (scan and (time() - scan.whenScanned) <= rescanThreshold) then + self.items[searchText] = scan; + end + end + + if (not self.items[searchText]) then + self.items[searchText] = Atr_FindScanAndInit (searchText); + end + + end + +end + +----------------------------------------- + +function Atr_FindScanAndInit (itemName) + + return Atr_FindScan (itemName, true); +end + +----------------------------------------- + +function Atr_FindScan (itemName, init) + + if (itemName == nil or itemName == "") then + itemName = "nil"; + end + + local itemNameLC = string.lower (itemName); + + if (gAllScans[itemNameLC] == nil) then + + local scn = {}; + setmetatable (scn, AtrScan); + scn:Init (itemName); + + gAllScans[itemNameLC] = scn; + elseif (init) then + gAllScans[itemNameLC]:Init (itemName); + end + + return gAllScans[itemNameLC]; +end + +----------------------------------------- + +function Atr_ClearScanCache () + +-- zc.msg_red ("Clearing Scan Cache"); + + for a,v in pairs (gAllScans) do + if (a ~= "nil") then + gAllScans[a] = nil; + end + end + +end + +----------------------------------------- + +function AtrScan:Init (itemName) + self.itemName = itemName; + self.itemLink = nil; + self.scanData = {}; + self.sortedData = {}; + self.whenScanned = 0; + self.lowprices = {BIGNUM, BIGNUM, BIGNUM}; + self.absoluteBest = nil; + self.itemClass = 0; + self.itemSubclass = 0; + self.yourBestPrice = nil; + self.yourWorstPrice = nil; + self.numYourSingletons = 0; + self.itemTextColor = { 1.0, 1.0, 1.0 }; + self.searchWasExact = false; + + self:UpdateItemLink (Atr_GetItemLink (itemName)); +end + +----------------------------------------- + +function AtrScan:UpdateItemLink (itemLink) + + self.itemLink = itemLink; + + if (itemLink) then + + Atr_AddToItemLinkCache (self.itemName, itemLink); + + local _, _, quality, _, _, sType, sSubType = Atr_GetItemInfo (itemLink); + + self.itemQuality = quality; + self.itemClass = Atr_ItemType2AuctionClass (sType); + self.itemSubclass = Atr_SubType2AuctionSubclass (self.itemClass, sSubType); + + self.itemTextColor = { 1.0, 1.0, 1.0 }; + + if (quality == 0) then self.itemTextColor = { 0.6, 0.6, 0.6 }; end + if (quality == 2) then self.itemTextColor = { 0.2, 1.0, 0.0 }; end + if (quality == 3) then self.itemTextColor = { 0.0, 0.5, 1.0 }; end + if (quality == 4) then self.itemTextColor = { 0.7, 0.3, 1.0 }; end + end + +end + + +----------------------------------------- + +function AtrSearch:NumScans() + + if (self.sortedScans) then + return getn(self.sortedScans); + end + + local count = 0; + for name,scn in pairs (self.items) do + count = count + 1; + end + + return count; +end + +----------------------------------------- + +function AtrSearch:NumSortedScans() + + if (self.sortedScans) then + return getn(self.sortedScans); + end + + return 0; +end + +----------------------------------------- + +function AtrSearch:GetFirstScan() + + if (self.sortedScans) then + return self.sortedScans[1]; + end + + for name,scn in pairs (self.items) do + return scn; + end + + return nil; + +end + + +----------------------------------------- + +function AtrSearch:Start () + + if (self.searchText == "") then + return; + end + + if (self:IsCompoundSearch (self.searchText)) then + + local _, itemClass = self:ParseCompoundSearch (self.searchText); + + if (itemClass == 0) then + Atr_Error_Display (ZT("The first part of this compound\n\nsearch is not a valid category.")); + return; + end + end + + self.processing_state = KM_SETTINGSORT; + + Atr_SortAuctionClearSort ("list"); + + BrowseName:SetText (self.searchText); -- not necessary but nice when user switches to Browse tab + + self.current_page = 0; + self.processing_state = KM_PREQUERY; + + self:Continue(); + +end + +----------------------------------------- + +function AtrSearch:Abort () + + if (self.processing_state == KM_NULL_STATE) then + return; + end + + self.processing_state = KM_NULL_STATE; + self:Init(); +end + +----------------------------------------- + +function AtrSearch:CheckForDuplicatePage () + + local isDup = self.query:CheckForDuplicatePage(self.current_page); + + if (isDup) then +-- zc.msg_red ("DUPLICATE PAGE FOUND: ", " current_page: ", self.current_page, " numDupPages: ", self.query.numDupPages); + + self.current_page = self.current_page - 1; -- requery the page + + self.processing_state = KM_PREQUERY; + end + + return isDup; +end + + +----------------------------------------- + +function AtrSearch:AnalyzeResultsPage() + + self.processing_state = KM_ANALYZING; + + if (self.query.numDupPages > 10) then -- hopefully this will never happen but need check to avoid looping + return true; -- done + end + + + local numBatchAuctions, totalAuctions = GetNumAuctionItems("list"); + + self.totalPages = math.ceil (totalAuctions / 50); + + if (self.current_page == 1 and totalAuctions > 2000) then -- give Blizz servers a break + Atr_Error_Display (ZT("Too many results\n\nPlease narrow your search")); + return true; -- done + end + + if (totalAuctions >= 50) then + Atr_SetMessage (string.format (ZT("Scanning auctions: page %d"), self.current_page).." / "..self.totalPages); + end + + -- analyze + + local numNilOwners = 0; + + if (numBatchAuctions > 0) then + + local x; + + for x = 1, numBatchAuctions do + + local name, texture, count, quality, canUse, level, minBid, minIncrement, buyoutPrice, bidAmount, highBidder, owner = GetAuctionItemInfo("list", x); + + if (owner == nil) then + numNilOwners = numNilOwners + 1; + end + + local exactMatch = zc.StringSame (name, self.searchText); + + if (exactMatch or not self.exact) then + + if (self.items[name] == nil) then + self.items[name] = Atr_FindScanAndInit (name); + end + + local curpage = (tonumber(self.current_page)-1); + + local scn = self.items[name]; + + scn:AddScanItem (name, count, buyoutPrice, owner, 1, curpage); + + if (scn.itemLink == nil or self.itemClass == nil) then + scn:UpdateItemLink (GetAuctionItemLink("list", x)); + end + + if (self.callback) then + self.callback (x, numBatchAuctions, count, buyoutPrice, owner); + end + + end + end + end + + local done = (numBatchAuctions < 50); + + if (not done) then + self.processing_state = KM_PREQUERY; + end + + return done; +end + +----------------------------------------- + +function AtrScan:AddScanItem (name, stackSize, buyoutPrice, owner, numAuctions, curpage) + + local sd = {}; + local i; + + if (numAuctions == nil) then + numAuctions = 1; + end + + for i = 1, numAuctions do + sd["stackSize"] = stackSize; + sd["buyoutPrice"] = buyoutPrice; + sd["owner"] = owner; + sd["pagenum"] = curpage; + + tinsert (self.scanData, sd); + + local itemPrice = math.floor (buyoutPrice / stackSize); + + Atr_AddToLowPrices (self.lowprices, itemPrice); + end + +end + + +----------------------------------------- + +function AtrScan:AddSDXToScan (price, owner, volume) -- helper function for AddExternalDataToScan + + local sd = {}; + + if (price and price > 0) then + sd["stackSize"] = 1; + sd["buyoutPrice"] = price; + sd["owner"] = owner; + + if (volume) then + sd["volume"] = volume; + end + + tinsert (self.scanData, sd); + end + +end + +----------------------------------------- + +function AtrScan:AddExternalDataToScan () + + if (self.itemLink == nil) then + return; + end + + -- Wowecon + + if (Wowecon and Wowecon.API) then + + local priceG, volG = Wowecon.API.GetAuctionPrice_ByLink (self.itemLink, Wowecon.API.GLOBAL_PRICE) + local priceS, volS = Wowecon.API.GetAuctionPrice_ByLink (self.itemLink, Wowecon.API.SERVER_PRICE) + + self:AddSDXToScan (priceG, "__wowEconG", volG); + self:AddSDXToScan (priceS, "__wowEconS", volS); + + end + + -- GoingPrice Wowhead + + local id = zc.ItemIDfromLink (self.itemLink); + + id = tonumber(id); + + if (GoingPrice_Wowhead_Data and GoingPrice_Wowhead_Data[id] and GoingPrice_Wowhead_SV._index) then + local index = GoingPrice_Wowhead_SV._index["Buyout price"]; + + if (index ~= nil) then + local price = GoingPrice_Wowhead_Data[id][index]; + + self:AddSDXToScan (price, "__wowHead"); + end + end + + -- GoingPrice Allakhazam + + if (GoingPrice_Allakhazam_Data and GoingPrice_Allakhazam_Data[id] and GoingPrice_Allakhazam_SV._index) then + local index = GoingPrice_Allakhazam_SV._index["Median"]; + + if (index ~= nil) then + local price = GoingPrice_Allakhazam_Data[id][index]; + + self:AddSDXToScan (price, "__allakhazam"); + end + end + + -- most recent historical price + + local price = Atr_Process_Historydata(); + if (price ~= nil) then + self:AddSDXToScan (price, "__atrLast"); + end + +end + +----------------------------------------- + +function AtrScan:SubtractScanItem (name, stackSize, buyoutPrice) + + local sd; + local i; + + for i,sd in ipairs (self.scanData) do + + if (sd.stackSize == stackSize and sd.buyoutPrice == buyoutPrice) then + + tremove (self.scanData, i); + return; + end + end + +end + +----------------------------------------- + +function AtrSearch:IsCompoundSearch (searchString) + + return zc.StringContains (searchString, ">"); +end + +----------------------------------------- + +function AtrSearch:ParseCompoundSearch (searchString) + + local tbl = { Atr_strsplit (">", searchString) }; + + local queryString = ""; + local itemClass = 0; + local itemSubclass = 0; + local minLevel = nil; + local maxLevel = nil; + local prevWasItemClass; + local n; + + for n = 1,getn(tbl) do + local s = tbl[n]; + + local handled = false; + + if (not handled and tonumber(s)) then + if (minLevel == nil) then + minLevel = tonumber(s); + elseif (maxLevel == nil) then + maxLevel = tonumber(s); + end + + handled = true; + prevWasItemClass = false; + end + + if (not handled and prevWasItemClass and itemSubclass == 0) then + itemSubclass = Atr_SubType2AuctionSubclass (itemClass, s); + if (itemSubclass > 0) then + handled = true; + prevWasItemClass = false; + end + end + + if (not handled and itemClass == 0) then + itemClass = Atr_ItemType2AuctionClass (s); + if (itemClass > 0) then + prevWasItemClass = true; + handled = true; + end + end + + if (not handled) then + queryString = s; + handled = true; + end + end + + return queryString, itemClass, itemSubclass, minLevel, maxLevel; +end + +----------------------------------------- + +function AtrSearch:Continue() + + if (Atr_CanSendAuctionQuery ()) then + + self.processing_state = KM_IN_QUERY; + + local queryString = self.searchText; + + queryString = zc.UTF8_Truncate (queryString,63); -- attempting to reduce number of disconnects + +-- zc.md (queryString.." page:"..self.current_page); + + local itemClass = 0; + local itemSubclass = 0; + local minLevel = nil; + local maxLevel = nil; + + -- (the 3.x port narrowed exact searches by item class here; a plain name query is the safest on 1.12) + + if (self:IsCompoundSearch(queryString)) then + + queryString, itemClass, itemSubclass, minLevel, maxLevel = self:ParseCompoundSearch (queryString); + + end + + Atr_QueryAuctionItems (queryString, minLevel, maxLevel, nil, itemClass, itemSubclass, self.current_page, nil, nil); + + self.query_sent_when = gAtr_ptime; + self.namesWaitStart = nil; + self.processing_state = KM_POSTQUERY; + self.current_page = self.current_page + 1; + end + +end + +----------------------------------------- + +local gSortScansBy; + +----------------------------------------- + +local function Atr_SortScans (x, y) + + if (gSortScansBy == ATR_SORTBY_NAME_ASC) then return string.lower (x.itemName) < string.lower (y.itemName); end + if (gSortScansBy == ATR_SORTBY_NAME_DES) then return string.lower (x.itemName) > string.lower (y.itemName); end + + local xprice = 0; + local yprice = 0; + + if (x.absoluteBest) then xprice = zc.round(x.absoluteBest.buyoutPrice/x.absoluteBest.stackSize); end; + if (y.absoluteBest) then yprice = zc.round(y.absoluteBest.buyoutPrice/y.absoluteBest.stackSize); end; + + if (gSortScansBy == ATR_SORTBY_PRICE_ASC) then return xprice < yprice; end + if (gSortScansBy == ATR_SORTBY_PRICE_DES) then return xprice > yprice; end + +end + +----------------------------------------- + +function AtrSearch:Finish() + + local finishTime = time(); + + self.processing_state = KM_NULL_STATE; + self.current_page = -1; + self.query_sent_when = nil; + + self.sortedScans = nil; + + local wasExactSearch = (self:NumScans() == 1); -- search returned only 1 item + + local x = 1; + self.sortedScans = {}; + + for name,scn in pairs (self.items) do + + self.sortedScans[x] = scn; + x = x + 1; + + scn.whenScanned = finishTime; + scn.searchWasExact = wasExactSearch; + + scn:CondenseAndSort (); + + -- update the fullscan DB + + local newprice = Atr_CalcNewDBprice (scn.itemName, scn.lowprices); + + if (newprice > 0) then + if (scn.itemQuality + 1 >= AUCTIONATOR_SCAN_MINLEVEL) then + gAtr_ScanDB[scn.itemName] = newprice; + end + end + end + + Atr_ClearBrowseListings(); + + gSortScansBy = self.sortHow; + table.sort (self.sortedScans, Atr_SortScans); + +end + +----------------------------------------- + +-- 1.12 port: show what has been found so far while the remaining pages are still coming in + +function AtrSearch:UpdatePartial() + + local single = (self:NumScans() == 1); + local x = 1; + + self.sortedScans = {}; + + for name,scn in pairs (self.items) do + self.sortedScans[x] = scn; + x = x + 1; + scn.searchWasExact = single; + scn:CondenseAndSort (); + end + + gSortScansBy = self.sortHow; + table.sort (self.sortedScans, Atr_SortScans); +end + +----------------------------------------- + +function AtrSearch:IsActive() + return (self.processing_state ~= KM_NULL_STATE); +end + +----------------------------------------- +-- a purchase takes over the auction queries: ask for the page whose answer may get lost again later + +function AtrSearch:Pause() + + if (self.processing_state == KM_POSTQUERY or self.processing_state == KM_IN_QUERY) then + self.current_page = self.current_page - 1; + self.processing_state = KM_PREQUERY; + end + + self.namesWaitStart = nil; +end + +----------------------------------------- + +function AtrSearch:ClickPriceCol() + + if (self.sortHow == ATR_SORTBY_PRICE_ASC) then + self.sortHow = ATR_SORTBY_PRICE_DES; + else + self.sortHow = ATR_SORTBY_PRICE_ASC; + end + + gSortScansBy = self.sortHow; + table.sort (self.sortedScans, Atr_SortScans); + +end + +----------------------------------------- + +function AtrSearch:ClickNameCol() + + if (self.sortHow == ATR_SORTBY_NAME_ASC) then + self.sortHow = ATR_SORTBY_NAME_DES; + else + self.sortHow = ATR_SORTBY_NAME_ASC; + end + + gSortScansBy = self.sortHow; + table.sort (self.sortedScans, Atr_SortScans); +end + +----------------------------------------- + +function AtrSearch:UpdateArrows() + + Atr_Col1_Heading_ButtonArrow:Hide(); + Atr_Col3_Heading_ButtonArrow:Hide(); + + if (self.sortHow == ATR_SORTBY_PRICE_ASC) then + Atr_Col1_Heading_ButtonArrow:Show(); + Atr_Col1_Heading_ButtonArrow:SetTexCoord(0, 0.5625, 0, 1.0); + elseif (self.sortHow == ATR_SORTBY_PRICE_DES) then + Atr_Col1_Heading_ButtonArrow:Show(); + Atr_Col1_Heading_ButtonArrow:SetTexCoord(0, 0.5625, 1.0, 0); + elseif (self.sortHow == ATR_SORTBY_NAME_ASC) then + Atr_Col3_Heading_ButtonArrow:Show(); + Atr_Col3_Heading_ButtonArrow:SetTexCoord(0, 0.5625, 0, 1.0); + elseif (self.sortHow == ATR_SORTBY_NAME_DES) then + Atr_Col3_Heading_ButtonArrow:Show(); + Atr_Col3_Heading_ButtonArrow:SetTexCoord(0, 0.5625, 1.0, 0); + end +end + +----------------------------------------- + +function Atr_ClearBrowseListings() + + -- the 3.x version fired a dummy query to empty the Browse list; on 1.12 that needs a busy wait, so we skip it + +end + +----------------------------------------- + +function Atr_SortAuctionData (x, y) + + if (gAtr_PriceSortDesc) then + return x.itemPrice > y.itemPrice; + end + + return x.itemPrice < y.itemPrice; + +end + +----------------------------------------- + +function AtrScan:CondenseAndSort () + + ----- Condense the scan data into a table that has only a single entry per stacksize/price combo + + self.sortedData = {}; + + local i,sd; + local conddata = {}; + + for i,sd in ipairs (self.scanData) do + + local ownerCode = "x"; + local dataType = "n"; -- normal + + if (sd.owner == UnitName("player")) then + ownerCode = "y"; +-- elseif (Atr_IsMyToon (sd.owner)) then +-- ownerCode = sd.owner; + elseif (sd.owner == "__wowEconG") then + dataType = "eg"; + elseif (sd.owner == "__wowEconS") then + dataType = "es"; + elseif (sd.owner == "__wowHead") then + dataType = "h"; + elseif (sd.owner == "__allakhazam") then + dataType = "k"; + elseif (sd.owner == "__atrLast") then + dataType = "a"; + end + + local key = "_"..sd.stackSize.."_"..sd.buyoutPrice.."_"..ownerCode..dataType; + + if (conddata[key]) then + conddata[key].count = conddata[key].count + 1; + conddata[key].minpage = zc.Min (conddata[key].minpage, sd.pagenum); + conddata[key].maxpage = zc.Max (conddata[key].maxpage, sd.pagenum); + else + local data = {}; + + data.stackSize = sd.stackSize; + data.buyoutPrice = sd.buyoutPrice; + data.itemPrice = sd.buyoutPrice / sd.stackSize; + data.minpage = sd.pagenum; + data.maxpage = sd.pagenum; + data.count = 1; + data.type = dataType; + data.yours = (ownerCode == "y"); + + if (ownerCode ~= "x" and ownerCode ~= "y") then + data.altname = ownerCode; + end + + if (sd.volume) then + data.volume = sd.volume; + end + + conddata[key] = data; + end + + end + + ----- create a table of these entries + + local n = 1; + + local i, v; + + for i,v in pairs (conddata) do + self.sortedData[n] = v; + n = n + 1; + end + + -- sort the table by itemPrice + + table.sort (self.sortedData, Atr_SortAuctionData); + + -- analyze and store some info about the data + + self:AnalyzeSortData (); + +end + +----------------------------------------- + +function AtrScan:AnalyzeSortData () + + self.absoluteBest = nil; + self.bestPrices = {}; -- a table with one entry per stacksize that is the cheapest auction for that particular stacksize + self.numMatches = 0; + self.numMatchesWithBuyout = 0; + self.hasStack = false; + self.yourBestPrice = nil; + self.yourWorstPrice = nil; + self.numYourSingletons = 0; + + local j, sd; + + ----- find the best price per stacksize and overall ----- + + for j,sd in ipairs(self.sortedData) do + + if (sd.type == "n") then + + self.numMatches = self.numMatches + 1; + + if (sd.itemPrice > 0) then + + self.numMatchesWithBuyout = self.numMatchesWithBuyout + 1; + + if (self.bestPrices[sd.stackSize] == nil or self.bestPrices[sd.stackSize].itemPrice >= sd.itemPrice) then + self.bestPrices[sd.stackSize] = sd; + end + + if (self.absoluteBest == nil or self.absoluteBest.itemPrice > sd.itemPrice) then + self.absoluteBest = sd; + end + + if (sd.yours) then + if (self.yourBestPrice == nil or self.yourBestPrice > sd.itemPrice) then + self.yourBestPrice = sd.itemPrice; + end + + if (self.yourWorstPrice == nil or self.yourWorstPrice < sd.itemPrice) then + self.yourWorstPrice = sd.itemPrice; + end + + if (sd.stackSize == 1) then + self.numYourSingletons = self.numYourSingletons + sd.count; + end + end + end + + if (sd.stackSize > 1) then + self.hasStack = true; + end + end + end +end + +----------------------------------------- + +function AtrScan:FindInSortedData (stackSize, buyoutPrice) + local j = 1; + for j = 1,getn(self.sortedData) do + sd = self.sortedData[j]; + if (sd.stackSize == stackSize and sd.buyoutPrice == buyoutPrice and sd.yours) then + return j; + end + end + + return 0; +end + + +----------------------------------------- + +function AtrScan:FindMatchByStackSize (stackSize) + + local index = nil; + + local basedata = self.absoluteBest; + + if (self.bestPrices[stackSize]) then + basedata = self.bestPrices[stackSize]; + end + + local numrows = getn(self.sortedData); + + local n; + + for n = 1,numrows do + + local data = self.sortedData[n]; + + if (basedata and data.itemPrice == basedata.itemPrice and data.stackSize == basedata.stackSize and data.yours == basedata.yours) then + index = n; + break; + end + end + + return index; + +end + +----------------------------------------- + +function AtrScan:FindMatchByYours () + + local index = nil; + + local j; + for j = 1,getn(self.sortedData) do + local sd = self.sortedData[j]; + if (sd.yours and (index == nil or sd.itemPrice < self.sortedData[index].itemPrice)) then + index = j; + end + end + + return index; + +end + +----------------------------------------- + +function AtrScan:FindCheapest () + + local index = nil; + + local j; + for j = 1,getn(self.sortedData) do + local sd = self.sortedData[j]; + if (sd.itemPrice > 0 and (index == nil or sd.itemPrice < self.sortedData[index].itemPrice)) then + index = j; + end + end + + return index; + +end + + +----------------------------------------- + +function AtrScan:GetNumAvailable () + + local num = 0; + + local j, data; + for j = 1,getn(self.sortedData) do + + data = self.sortedData[j]; + num = num + (data.count * data.stackSize); + end + + return num; +end + +----------------------------------------- + +function AtrScan:IsNil () + + if (self.itemName == nil or self.itemName == "" or self.itemName == "nil") then + return true; + end + + return false; +end + +----------------------------------------- + +ATR_FS_NULL = 0; +ATR_FS_STARTED = 1; +ATR_FS_ANALYZING = 2; +ATR_FS_CLEANING_UP = 3; + +gAtr_FullScanState = ATR_FS_NULL; + + +----------------------------------------- + +function Atr_GetDBsize() + + local n = 0; + local a,v; + + for a,v in pairs (gAtr_ScanDB) do + n = n + 1; + end + + return n; +end + +----------------------------------------- + +local gNumAdded, gNumUpdated; + +-- The 1.12 client has no "get all" query, so a full scan walks every page of an empty query. +local gFS_page = 0; +local gFS_pages = 0; +local gFS_lowprices = {}; +local gFS_qualities = {}; +local gFS_numAuctions = 0; +local gFS_waiting = false; +local gFS_sentAt = 0; + +----------------------------------------- + +function Atr_FullScanStart() + + if (gAtr_FullScanState == ATR_FS_STARTED) then + return; + end + + Atr_FullScanStatus:SetText (ZT("Scanning").."..."); + Atr_FullScanStartButton:Disable(); + + gAtr_FullScanState = ATR_FS_STARTED; + + gNumAdded = 0; + gNumUpdated = 0; + + gFS_page = 0; + gFS_pages = 0; + gFS_lowprices = {}; + gFS_qualities = {}; + gFS_numAuctions = 0; + gFS_waiting = false; + + Atr_FullScanResults:Hide(); + Atr_FullScanHTML:Show(); + +end + +----------------------------------------- + +function Atr_FullScanAbort() + + gAtr_FullScanState = ATR_FS_NULL; + gFS_waiting = false; + gFS_lowprices = {}; + gFS_qualities = {}; + + Atr_FullScanStatus:SetText (ZT("Scan stopped")); + Atr_FullScanStartButton:Enable(); + +end + +----------------------------------------- + +function Atr_FullScanDone_OnClick() + + if (gAtr_FullScanState == ATR_FS_STARTED) then + Atr_FullScanAbort(); + end + + Atr_FullScanFrame:Hide(); + +end + +----------------------------------------- + +function Atr_CalcNewDBprice (name, prices) + + if (prices[1] ~= BIGNUM) then + return prices[1]; + end + + return 0; + +end + +----------------------------------------- + +function Atr_AddToLowPrices (lowprices, itemPrice) + + if (itemPrice > 0) then + if (itemPrice < lowprices[1]) then + if (lowprices[1] < lowprices[2]) then + lowprices[2] = lowprices[1]; + end + lowprices[1] = itemPrice; + return true; + elseif (itemPrice < lowprices[2]) then + lowprices[2] = itemPrice; + return true; + end + end + + return false; +end + + + + +----------------------------------------- + +local gScanDetails = {} + +----------------------------------------- + +function Atr_FullScanMoreDetails () + + zc.msg (" "); + zc.msg_atr (ZT("Auctions scanned")..": |cffffffff", gScanDetails.numBatchAuctions, " |r("..gScanDetails.totalItems, "items)"); + zc.msg_atr ("|cffa335ee "..ZT("Epic items")..": |r", gScanDetails.numEachQual[5]); + zc.msg_atr ("|cff0070dd "..ZT("Rare items")..": |r", gScanDetails.numEachQual[4]); + zc.msg_atr ("|cff1eff00 "..ZT("Uncommon items")..": |r", gScanDetails.numEachQual[3]); + zc.msg_atr ("|cffffffff "..ZT("Common items")..": |r", gScanDetails.numEachQual[2]); + zc.msg_atr ("|cff9d9d9d "..ZT("Poor items")..": |r", gScanDetails.numEachQual[1]); + + + if (gScanDetails.numRemoved[4] > 0) then zc.msg_atr (ZT("Rare items").." "..ZT("removed from database")..": |cffffffff", gScanDetails.numRemoved[4]); end + if (gScanDetails.numRemoved[3] > 0) then zc.msg_atr (ZT("Uncommon items").." "..ZT("removed from database")..": |cffffffff", gScanDetails.numRemoved[3]); end + if (gScanDetails.numRemoved[2] > 0) then zc.msg_atr (ZT("Common items").." "..ZT("removed from database")..": |cffffffff", gScanDetails.numRemoved[2]); end + if (gScanDetails.numRemoved[1] > 0) then zc.msg_atr (ZT("Poor items").." "..ZT("removed from database")..": |cffffffff", gScanDetails.numRemoved[1]); end + + zc.msg_atr (ZT("Items added to database")..": |cffffffff", gScanDetails.gNumAdded); + zc.msg_atr (ZT("Items updated in database")..": |cffffffff", gScanDetails.gNumUpdated); + zc.msg_atr (ZT("Items ignored")..": |cffffffff", gScanDetails.totalItems - (gScanDetails.gNumAdded + gScanDetails.gNumUpdated)); + zc.msg (" "); +end + +----------------------------------------- + +function Atr_FullScanAnalyze() + + if (not gFS_waiting) then + return; + end + + gFS_waiting = false; + + local numBatchAuctions, totalAuctions = GetNumAuctionItems("list"); + + gFS_pages = math.ceil (totalAuctions / 50); + + local x; + + for x = 1, numBatchAuctions do + + local name, texture, count, quality, canUse, level, minBid, minIncrement, buyoutPrice = GetAuctionItemInfo("list", x); + + if (name ~= nil and name ~= "") then + + gFS_qualities[name] = quality; + + if (buyoutPrice ~= nil and count ~= nil and count > 0) then + + local itemPrice = math.floor (buyoutPrice / count); + + if (itemPrice > 0) then + if (not gFS_lowprices[name]) then + gFS_lowprices[name] = {BIGNUM,BIGNUM,BIGNUM}; -- one extra for later + end + + Atr_AddToLowPrices (gFS_lowprices[name], itemPrice); + end + end + end + end + + gFS_numAuctions = gFS_numAuctions + numBatchAuctions; + gFS_page = gFS_page + 1; + + Atr_FullScanStatus:SetText (ZT("Scanning").." "..gFS_page.." / "..gFS_pages); + + if (gFS_page >= gFS_pages or numBatchAuctions == 0) then + Atr_FullScanFinish(); + end + +end + +----------------------------------------- + +function Atr_FullScanFinish() + + gAtr_FullScanState = ATR_FS_ANALYZING; + + Atr_FullScanStatus:SetText (ZT("Processing")); + + local numBatchAuctions = gFS_numAuctions; + local lowprices = gFS_lowprices; + local qualities = gFS_qualities; + + local numEachQual = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + local totalItems = 0; + local numRemoved = { 0, 0, 0, 0, 0, 0, 0, 0 }; + + local name, prices; + + for name,prices in pairs (lowprices) do + + local newprice = Atr_CalcNewDBprice (name, prices); + + if (newprice > 0) then + + local qx = qualities[name] + 1; + + numEachQual[qx] = numEachQual[qx] + 1; + totalItems = totalItems + 1; + + if (qx < AUCTIONATOR_SCAN_MINLEVEL and gAtr_ScanDB[name]) then + numRemoved[qx] = numRemoved[qx] + 1; + gAtr_ScanDB[name] = nil; + end + + if (qx >= AUCTIONATOR_SCAN_MINLEVEL) then + + if (gAtr_ScanDB[name] == nil) then + gNumAdded = gNumAdded + 1; + else + gNumUpdated = gNumUpdated + 1; + end + + gAtr_ScanDB[name] = newprice; + end + end + end + + gScanDetails.numBatchAuctions = numBatchAuctions; + gScanDetails.totalItems = totalItems; + gScanDetails.numEachQual = numEachQual; + gScanDetails.numRemoved = numRemoved; + gScanDetails.gNumAdded = gNumAdded; + gScanDetails.gNumUpdated = gNumUpdated; + + Atr_FullScanMoreDetails(); + + Atr_FullScanStartButton:Enable(); + Atr_FullScanDone:Enable(); + Atr_FullScanStatus:SetText (ZT("Scan complete")); + + Atr_FSR_scanned_count:SetText (numBatchAuctions); + Atr_FSR_added_count:SetText (gNumAdded); + Atr_FSR_updated_count:SetText (gNumUpdated); + Atr_FSR_ignored_count:SetText (totalItems - (gNumAdded + gNumUpdated)); + + Atr_FullScanHTML:Hide(); + Atr_FullScanResults:Show(); + + Atr_FullScanResults:SetBackdropColor (0.3, 0.3, 0.4); + + AUCTIONATOR_LAST_SCAN_TIME = time(); + + Atr_UpdateFullScanFrame (); + + PlaySound("AuctionWindowClose"); + + gFS_lowprices = {}; + gFS_qualities = {}; + gAtr_FullScanState = ATR_FS_NULL; +end + +----------------------------------------- + +function auctionator_AuctionFrameBrowse_Update () + + return auctionator_orig_AuctionFrameBrowse_Update (); + +end + +----------------------------------------- + +function Atr_ShowFullScanFrame() + + Atr_FullScanHTML:Show(); + Atr_FullScanResults:Hide(); + + Atr_FullScanFrame:Show(); + Atr_FullScanFrame:SetBackdropColor(0,0,0,100); + + Atr_UpdateFullScanFrame(); + Atr_FullScanStatus:SetText (""); + + local expText = "" + .."

" + ..ZT("Scanning is entirely optional.") + .."

" + ..ZT("SCAN_EXPLANATION") + .."

" + .."" + ; + + + + Atr_FullScanHTML:SetText (expText); + Atr_FullScanHTML:SetSpacing (3); +end + +----------------------------------------- + +function Atr_UpdateFullScanFrame() + + Atr_FullScanDBsize:SetText (Atr_GetDBsize()); + + if (AUCTIONATOR_LAST_SCAN_TIME) then + Atr_FullScanDBwhen:SetText (date ("%A, %B %d at %I:%M %p", AUCTIONATOR_LAST_SCAN_TIME)); + else + Atr_FullScanDBwhen:SetText (ZT("Never")); + end + + Atr_FullScanNext:SetText(ZT("Now")); + + if (gAtr_FullScanState ~= ATR_FS_STARTED) then + Atr_FullScanStartButton:Enable(); + end +end + +----------------------------------------- + +function Atr_FullScanFrameIdle() + + if (gAtr_FullScanState == ATR_FS_STARTED) then + + if (not AuctionFrame or not AuctionFrame:IsShown()) then + Atr_FullScanAbort(); + return; + end + + if (gFS_waiting and GetTime() - gFS_sentAt > 20) then -- no answer: ask again + gFS_waiting = false; + end + + if (not gFS_waiting and Atr_CanSendAuctionQuery()) then + gFS_waiting = true; + gFS_sentAt = GetTime(); + Atr_QueryAuctionItems ("", nil, nil, 0, 0, 0, gFS_page, 0, 0); + end + end + +end diff --git a/AuctionatorShop.lua b/AuctionatorShop.lua new file mode 100644 index 0000000..530f3fc --- /dev/null +++ b/AuctionatorShop.lua @@ -0,0 +1,510 @@ + +local addonName, addonTable = "Auctionator", AtrNS; +local zc = addonTable.zc; + +----------------------------------------- + +Atr_SList = {}; +Atr_SList.__index = Atr_SList; + +local SLITEMS_NUM_LINES = 15; + +local gCurrentSList; + +----------------------------------------- + +function Atr_ShoppingListsInit () + + local num = getn(AUCTIONATOR_SHOPPING_LISTS); + local x; + + for x = 1,num do + setmetatable (AUCTIONATOR_SHOPPING_LISTS[x], Atr_SList); + end + +end + +----------------------------------------- + +function Atr_SList.create (name, isRecents) + + local slist = {}; + setmetatable (slist,Atr_SList); + + slist.name = name; + slist.items = {}; + + if (isRecents) then + slist.isRecents = 1; + end + + table.insert (AUCTIONATOR_SHOPPING_LISTS, slist); + + table.sort (AUCTIONATOR_SHOPPING_LISTS, Atr_SortSlists); + + return slist; +end + + +----------------------------------------- + +function Atr_SortSlists (x, y) + + if (x.isRecents) then return true; end; + if (y.isRecents) then return false; end; + + return (string.lower(x.name) < string.lower(y.name)); + +end + +----------------------------------------- + +function Atr_SList:AddItem (itemName) + + if (itemName == "" or itemName == nil) then + return; + end + + if (self.isRecents) then + table.insert (self.items, 1, itemName); + + while (getn(self.items) > 50) do -- max 50 items on recents list + table.remove (self.items); + end + else + table.insert (self.items, itemName); + self.isSorted = false; + end + + +end + +----------------------------------------- + +function Atr_SList:RemoveItem (itemName) + + local num = getn(self.items); + local n; + + for n = 1,num do + if (zc.StringSame (self.items[n], itemName)) then + table.remove (self.items, n); + return; + end + end + +end + +----------------------------------------- + +function Atr_DisplaySlist () + if (gCurrentSList) then + gCurrentSList:DisplayX (); + end +end + + + +----------------------------------------- + +function sortSlist (x, y) + + return (string.lower(x) < string.lower(y)); + +end + +----------------------------------------- + +function Atr_SList:DisplayX () + + gCurrentSList = self; + + local currentPane = Atr_GetCurrentPane(); + + if (not (self.isRecents or self.isSorted)) then + self.isSorted = true; + table.sort (self.items, sortSlist); + end + + + local numrows = getn(self.items); + + local line; -- 1 through NN of our window to scroll + local dataOffset; -- an index into our data calculated from the scroll offset + + FauxScrollFrame_Update (Atr_Hlist_ScrollFrame, numrows, SLITEMS_NUM_LINES, 16); + + for line = 1,SLITEMS_NUM_LINES do + + currentPane.hlistScrollOffset = FauxScrollFrame_GetOffset (Atr_Hlist_ScrollFrame); + + dataOffset = line + currentPane.hlistScrollOffset; + + local lineEntry = getglobal ("AuctionatorHEntry"..line); + + lineEntry:SetID(dataOffset); + + local slItem = self.items[dataOffset]; + + if (dataOffset <= numrows and slItem) then + + local lineEntry_text = getglobal("AuctionatorHEntry"..line.."_EntryText"); + + lineEntry_text:SetText (Atr_AbbrevItemName (slItem)); + lineEntry_text:SetTextColor (.6,.6,.6); + + if (currentPane.activeSearch.origSearchText ~= "" and zc.StringSame (slItem , currentPane.activeSearch.origSearchText)) then + Atr_SetRowSelected (lineEntry, true); + elseif (currentPane.activeSearch.searchText == "" and zc.StringSame (slItem , Atr_Search_Box:GetText())) then + Atr_SetRowSelected (lineEntry, true); + else + Atr_SetRowSelected (lineEntry, false); + end + + lineEntry:Show(); + else + lineEntry:Hide(); + end + end + + +end + +----------------------------------------- + +function Atr_SList:FindItemIndex (itemName) + + local num = getn(self.items); + local n; + + for n = 1,num do + if (zc.StringSame (itemName, self.items[n])) then + return n; + end + end + + return 0; + +end + +----------------------------------------- + +function Atr_SList:IsItemOnList (itemName) + + return (self:FindItemIndex(itemName) > 0); + +end + +----------------------------------------- + +function Atr_Search_Onclick () + + local currentPane = Atr_GetCurrentPane(); + + local searchText = Atr_Search_Box:GetText(); + + Atr_Search_Button:Disable(); + Atr_Buy1_Button:Disable(); + Atr_AddToSListButton:Disable(); + Atr_RemFromSListButton:Disable(); + + Atr_ClearAll(); + + currentPane:DoSearch (searchText); + + Atr_Process_Historydata (); +end + +----------------------------------------- + +function Atr_Shop_OnFinishScan () + + local currentPane = Atr_GetCurrentPane(); + + local searchText = currentPane.activeSearch.origSearchText; + + Atr_Search_Box:SetText (searchText); + + local recentsList = AUCTIONATOR_SHOPPING_LISTS[1]; + if (recentsList) then + + local isRecentsShown = (gCurrentSList == recentsList); + + local n = recentsList:FindItemIndex(searchText); + + if (n > 14 or (not isRecentsShown and n > 0)) then + table.remove (recentsList.items, n); + end + + n = recentsList:FindItemIndex(searchText); + + if (n == 0) then + recentsList:AddItem (searchText); + end + + if (isRecentsShown) then + FauxScrollFrame_SetOffset (Atr_Hlist_ScrollFrame, 0); + end + + end + + if (getn(currentPane.activeScan.sortedData) > 0 and not currentPane.pickKey) then + currentPane.currIndex = 1; + end + + currentPane.UINeedsUpdate = true; + + Atr_Search_Button:Enable(); +end + + +----------------------------------------- + +function Atr_DropDownSL_OnLoad (self) + UIDropDownMenu_Initialize(self, Atr_DropDownSL_Initialize); + UIDropDownMenu_SetSelectedValue(Atr_DropDownSL, 1); + Atr_DropDownSL:Show(); +end + +----------------------------------------- + +function Atr_DropDownSL_Initialize() + + local info = UIDropDownMenu_CreateInfo(); + + local num = getn(AUCTIONATOR_SHOPPING_LISTS); + local x; + + for x = 1,num do + + local slist = AUCTIONATOR_SHOPPING_LISTS[x]; + + info.text = slist.name; + info.value = x; + info.func = Atr_DropDownSL_OnClick; + info.checked = nil; + info.owner = Atr_DropDownSL; + +-- info.colorCode = nil; + +-- if (slist.isRecents) then +-- info.colorCode = "|c00ffddaa"; +-- end + + + UIDropDownMenu_AddButton(info); + + end + +end + +----------------------------------------- + +function Atr_DropDownSL_OnClick() + + UIDropDownMenu_SetSelectedValue(this.owner, this.value); + + gCurrentSList = AUCTIONATOR_SHOPPING_LISTS[this.value]; + + Atr_SetUINeedsUpdate(); + +end + +----------------------------------------- + +function Atr_SEntryOnClick () + + local line = this; + local entryIndex = line:GetID(); + + local itemName = gCurrentSList.items[entryIndex]; + + Atr_Search_Box:SetText (itemName); + + if (IsAltKeyDown()) then + Atr_GetCurrentPane():ClearSearch(); + Atr_RemFromSListOnClick(); + else + Atr_Search_Onclick (); + end + + Atr_Shop_UpdateUI(); + +-- gCurrentSList:DisplayX(); -- for the highlight +end + + + +----------------------------------------- + +local function FinishCreateNewSList(text) + + local slist = Atr_SList.create(text); + + local num = getn(AUCTIONATOR_SHOPPING_LISTS); + local n; + + for n = 1,num do + if (AUCTIONATOR_SHOPPING_LISTS[n] == slist) then + UIDropDownMenu_SetSelectedValue(Atr_DropDownSL, n); + UIDropDownMenu_SetText (text, Atr_DropDownSL); -- needed to fix bug in UIDropDownMenu + slist:DisplayX(); + Atr_SetUINeedsUpdate(); + break; + end + end + + +end + +----------------------------------------- + +StaticPopupDialogs["ATR_NEW_SHOPPING_LIST"] = { + text = "", + button1 = ACCEPT, + button2 = CANCEL, + hasEditBox = 1, + maxLetters = 32, + OnAccept = function() + local text = getglobal(this:GetParent():GetName().."EditBox"):GetText(); + FinishCreateNewSList (text); + end, + EditBoxOnEnterPressed = function() + local text = this:GetText(); + FinishCreateNewSList (text); + this:GetParent():Hide(); + end, + OnShow = function() + getglobal(this:GetName().."EditBox"):SetText(""); + getglobal(this:GetName().."EditBox"):SetFocus(); + end, + timeout = 0, + exclusive = 1, + whileDead = 1, + hideOnEscape = 1 +}; + +----------------------------------------- + +StaticPopupDialogs["ATR_DEL_SHOPPING_LIST"] = { + text = "", + button1 = YES, + button2 = NO, + OnAccept = function() + local x; + for x = 1,getn(AUCTIONATOR_SHOPPING_LISTS) do + if (AUCTIONATOR_SHOPPING_LISTS[x] == gCurrentSList) then + table.remove (AUCTIONATOR_SHOPPING_LISTS, x); + gCurrentSList = AUCTIONATOR_SHOPPING_LISTS[1]; + UIDropDownMenu_SetSelectedValue(Atr_DropDownSL, 1); + UIDropDownMenu_SetText (gCurrentSList.name, Atr_DropDownSL); + Atr_SetUINeedsUpdate(); + return; + end + end + end, + OnShow = function() + local s = string.format (ZT("Really delete the shopping list %s ?"), ": \n\n"..gCurrentSList.name); + + getglobal(this:GetName().."Text"):SetText("\n"..s.."\n\n"); + end, + timeout = 0, + exclusive = 1, + whileDead = 1, + hideOnEscape = 1 +}; + +----------------------------------------- + +function Atr_NewSlist_OnClick () + + StaticPopupDialogs["ATR_NEW_SHOPPING_LIST"].text = ZT("Name for your new shopping list"); + + StaticPopup_Show("ATR_NEW_SHOPPING_LIST"); + +end + +----------------------------------------- + +function Atr_DelSList_OnClick () + + StaticPopup_Show("ATR_DEL_SHOPPING_LIST"); + +end + + + +----------------------------------------- + +function Atr_AddToSListOnClick () + + local currentPane = Atr_GetCurrentPane(); + + if (gCurrentSList) then + if (getn(gCurrentSList.items) >= 50) then + Atr_Error_Text:SetText (string.format (ZT("You may have no more than\n\n%d items on a shopping list."), 50)); + Atr_Error_Frame.withMask = 1; + Atr_Error_Frame:Show (); + else + gCurrentSList:AddItem (Atr_Search_Box:GetText()); + Atr_SetUINeedsUpdate(); + end + end + +end + +----------------------------------------- + +function Atr_RemFromSListOnClick () + + local currentPane = Atr_GetCurrentPane(); + + if (gCurrentSList) then + gCurrentSList:RemoveItem (Atr_Search_Box:GetText()); + Atr_SetUINeedsUpdate(); + + end + +end + + +----------------------------------------- + +function Atr_Shop_UpdateUI () + + local currentPane = Atr_GetCurrentPane(); + + Atr_AddToSListButton:Disable(); + Atr_RemFromSListButton:Disable(); + Atr_DelSListButton:Disable(); + + if (gCurrentSList == nil) then + gCurrentSList = AUCTIONATOR_SHOPPING_LISTS[1]; + end + + if (gCurrentSList) then + gCurrentSList:DisplayX (); + + local iName = Atr_Search_Box:GetText(); + + if (gCurrentSList:IsItemOnList (iName)) then + Atr_RemFromSListButton:Enable(); + elseif (iName ~= "" and iName ~= nil and gCurrentSList ~= AUCTIONATOR_SHOPPING_LISTS[1]) then -- hack + Atr_AddToSListButton:Enable(); + end + + if (gCurrentSList ~= AUCTIONATOR_SHOPPING_LISTS[1]) then + Atr_DelSListButton:Enable(); + end + + end + + if (currentPane.activeSearch:NumScans() > 1 and not currentPane:IsScanEmpty()) then + Atr_Back_Button:Show(); + else + Atr_Back_Button:Hide(); + end + +end + + diff --git a/AuctionatorVendor.lua b/AuctionatorVendor.lua new file mode 100644 index 0000000..e6e0a13 --- /dev/null +++ b/AuctionatorVendor.lua @@ -0,0 +1,73 @@ +local addonName, addonTable = "Auctionator", AtrNS; +local zc = addonTable.zc; + +----------------------------------------- + +-- item data from the armory + +local gAtr_MI = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAABCCAAAAAAAAAEAABCAAAAAAAAAAAAAAAEAAABAEAEAEAAAEAEFBAEAAAAAEAAAEAAAECCGCAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAADCAAAAAAAEAAAEAAAAAAAAAAAABCBCDCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCHCICHCAAAAAABCAAAAAABCBCAAAAAAAABCBCAAAEAAAABCICAAABAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAGCECECDCFCFCFCFCECGCBBECAAAAAAAAAAAABCAAAAAAAEBCCCAACBAEBCAABCAAAAAEAECCAABCAAAAAAAAAAAAAAAAAAAAAEBCAACCCCAEAEAAABAABCAEAAAAAAAAAAAAAAAAAAAAAAAAECBCECECAEAEGCAAHCGCJCAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABBBABABAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBCCCAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAAAAAAAABCAAAAAAAAAAABAAAEAEBBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBBBAAABABAAABAAAAAAAAAAAAICGCAAABBBABAAAAAAAAAAAAAAAAABABAAAAAAABAABCBCABAAAAAAAAAAAAAAAAAAAAAAHCFCAAAAECAEAAAABCAAAABCBCDCAABCBCBCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAEAAAAAEAEABICCBECAAAAAAAABBAAAABBAABBCBAAAAAAECAADBAEAEAAAABCAAAAAAAABBAEAEAABCDCAABCBCAABBBBBBAABBABAAAEBBAAAAAABCHCAABBBCBBAAAAABAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAACCAAAEAABCAAAAAEABABAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABABAAAAABBCAAAAAABCAAAABCAAAAAAAAAAAAAAAAAAFBBCBCAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAABBAAAAAABCAAAAICAAAABCGCBCBBAAAEAAAECCBCAABCBCBCBCBCBCAAAAECAAAEAABCAAAAAABCAAAAAAAAAAABBBBCBCBCBCAABCAADCBCGBBCAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAFCECECAEAAAAAAAEAAAAAAAEAAAAAAAAABAABCAAAAAAAAAAAAAACBAAAAAAAAAAAAAAAAAABBAAAABCBBAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAECAAFCAAAAHCGCAAAAAAAAFCAAAAAAAAAAAAAAAAAAAAFCFCAAAAAAAAAAAAAAAAAAAAAAAEAAGCFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAECAAAAAAAAFCAAAAAAAAAAAAAAAAAAAAAAAAGCECECFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCFCFCECCCFCAAGCHCFCAAAAAAECCCJCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAEAAAABCBCBCBCBCBCAEAABCBCBCBCBBBCAEAAAEAEBCBCBCAEAAAAAAAABCAAAAAACCAEAABCBCAAAAABAAAAAAAAAAAEAAABAEABICBCCCCCAACCGCFCFCFCAAAAAAFCAEECAAECDCECECGCAAECDCDCAADBAAAAAAAEAEAEAEAEAAAACCAACCCCCCCCCCCCAABCBCAAAAAAAAAAAAAAAAAAAAEBBBBCBCBBBBAACCGCBBBBDBDBAABCABABAAAAAAAAAAAAAAAAAACCBCAAAAAAAAAAAAAAAAAAAAAAAACCBCBBBCAACCBCBCDCAAABAACCAAAABCBCBBAAAAAAAAAAAAAAAACCICGCAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAEAEHCFCABBCBCBCBBAAAAABABAABCAAAAAAAAAAAAAAAAAAAAABAEAEAAAAAAAAAABCABAAAAAAAAAAAAAABCBCBCAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAEABABCCCCAAAABBEBBCCCCCBCBCABABAEABBCAAJCICICICAAAAABAEAAAEAABCAABCAAAAAAAAAAECBBCCBCBCBCAAAAAABCAABCBCAAECDCDCAACBBCAABCBCAAAAAAAAAAAAGCBCAAAAAAAAAAAADCBCAAAAAAAAAAAABCBCBCBCBCBCAABCBCBCBCAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAACBAAABAECCAAAAAAAAAAAAAAAAAAAAAEAEABAEGCDCCCBCAABCAAABBCAAAAAAAAAABCAABCAABCBCAABCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAEAEAEAAAAAAAAAAAAAAAEECECECFCFCAEAAAAAEAEAAAABCAAAEAAAEAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEABABBCAAAEAEAAAAAAAEAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAABBAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAEAEDCAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAEAAAAAAAAAAABAEAAAEAAAACCJCFCAAAADBAEBCABAAAAAAAAAAAAFCDBBBBBCCGBBCBCBCHCFCAAAAAEAEAEAEAEAEAEAAAAAEAAABAAAAAAAEAAAAAEAABCBCBCAAAAAABCAEAEBCAEAEAAAAAAAABCBCBCBCBCCCCCAAAEAAABAEAEDCCCBCAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAABCABAACBBBBBABCBBBBBAEBBBCDCCBAAHCDBDBAAAAAAAAAAAAAAAEAEAAAAAAAAAAAADBAAAAAAAAAAAEAACBCBDBDBAAAAAAAABBBBECAADBDBECAEBCBCAAAABCBCAAAABCBCAAAABCBCAAAABCBCAABCBCBCAABCBCBCBCBCBCBCBCBCBCBCBCBCAAAAAAAAAAAEAEBCAAAAAAAAAAAAAAAAAAAAECAAAAAEAAAEAEBCBCDCBCBCAAAAAAAAAAAAAAAAAAAAAAAAAEBCDCAABCBCDCDCAAAACCAACCCCCCAAAAAACCAACCCCBCBCAAAAAAAAAAAABCBCCCAACCABABCCCCBCHCBCAACBBBAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAEAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABBBAEAEAEABAABBBBAEAEAAAEBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBCDCCCFCBCAAAACBBCBCBCBCBCDCBCBCAACCBCCCCCBCCCAAGCDBCCBCCCAAAAAAABBBAEAAAAAABCBCAAAAAABCCBBCCBBCAAAAAEBBAEAEAEAAAAAAAAAAAAAAAAAAAEAAAEABAEAEAEAEAEAEAEAAAAAAAAAAAEAEAEABABABABAAABABABABABABAAAAAAAABCBCAAAAAABCBCAAAABCBCAAAAAAAAAEAAAAAAAABCAAAABCBCBCBCBCBCAAAABCBCBCAAABAEAAAAAAAAAACBAAAAAAAAAABCAAAAAAAAAACCAEAAAEAADCABABBBECAAAEAEAEAAAAABAEAEAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAAAAAAAAAEAAAABBAAAAAAAAAEAEAEAEAEAAAEAEBCCCBCCCCCAEAAAAAAAAAAAAAEAAAAAABCFCBBAAAAABABAAABAAABBBAAABABABABBBABAABBBBBBBBABABABABBBBBAAAEBBBBABAAAAAAAEAEAAAABCBCBCBCJCAEAEAAAABCBCCCCCCCCCAABCBCBCBCBCCCCBAAAEAEAEAEAEAAAAAEAAAAAEAEAAAEAEAEBBAAAAAEAEAEAEAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEBBCBAABBBBDBCBCBBCAEBBCBBBAACCBBBCBBABABAAAAAABBAAAABBBBABAABBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABABAAAAAAAAAAAAAAAEAEAEAEAEAEAEAAAEAEAEAAAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAAAAAAAABCAABCAAAAAABCBCBCBCBCCCAEAEAEAEAAAAAAAAAAAAAAABAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAEAEAEAEAEAAAAAAAAAAAAAAAEAAAAAEAAABAAAEAAAEAAAAAAAEAEAEAEAECCAEAEAAAAAAAAAAAAAAAAAAAAABBBAAAAAAAABBBBBCBBCBCBAEAAAACBCBCBCBCBBBDBDBDBAAAADBDBDBDBAAEBEBEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAAAAAAAAAAAAAAAAAAAAABABDCDCECAEAEDCDCDCDCECECECECBCDCDCDCDCECECECECAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAAAEAEBCAAAEAEAEAEAEAEAEAEAEAEAAAEAEAEAEAEAEAEAEAEAEAEAEAAAAAAAEAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAAAAAEDCCCCCECDCDCECECECECFCFCFCDCCCDCCCDCAEDCDCAAECFCECECFCFCFCCCECDCECECGCFCDCCCDCECDCDCDCECECFCAAGCFCGCAEEBFCGCGCGCGCAAAAAEAAAAAAAAAAAAAAAAAEAEAEAEEBEBFBFBFBFBFBFBEBFBFBGBFBEBDBEBEBEBFBDBEBFBFBGBFBEBEBGBDBFBFBFBEBDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAABCBCBCAABCCCCCBCBCCCCCCCCCDCDCDCDCECECAAECAAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAABCBCBCBCBCBCBCBCBCBCBCCCCCBCCCDCDCCCDCECECECECAABCAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAABCBCAAAABCBCAAAAAAAAAACCAACAAACCAACCAAAAAAAAAAAAAAECAAAAECACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBAAAEABBCAEBCBCCCBCAEAEAAEBBCBCCCCCCCCCAEAAAAAECCDCDCAAAEAAAAAADCDCDCDCAEAEAEAEAAAAAEAEDCAADCDCFCAAAAAAAEAEAEAEAAAEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAEAEDBDBAEFBFBEBAEEBAEAEAEAEAEAEAEAEAEAEAEAAAAAEAEAEAEAEAEAEAEAECBDBAAAAAAAAAAAAAAEBAAEBABEBFBGBGBAEAAAAAAAAAAAAAAAAAABCBCAABCAABCBCBCBCBCBCAAAAAABCBCBCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAEAAAEABABAEAEAAAAAAAAAEAEAAAAAAAEAEAEAEAEAEAAAAAAAEAAAAAAAAAEAEAADBAEAEAEAEAEAEAEAAFBFBAEAAAAAAAAAABCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCICBCAABCAABCAEAEABCCBCCCBCBCBCCCCCCCCCCCDCDCDCDCDCDCDCCCCCECECECAAECAAECECGCFCFCFCFCFCAEAEEBAEGBEBEBEBAAAAAAAAAEAEAEAAAEAAAAAEAEAAAAAABCAABCBCBCBCAEAEBCAAAAAAAAAABCBCAAAABCBCAEAABCBCAABCBCBCAABCBCBCBCBCBCBCBCBCAEAEAEAEAEAEAEAEAEECAAAAAAAAAABCBCBCAEBCBCBCAECCCCCCCCCCCCCCCCCCCCAECCCCCCCCAAABAEAAABABABAEAEAEAEAEABAAAAABAAAAAAAAAEAABCAEAEAEAAAEAAAAAEAEAEAAAAAAAAAAAAAAAAAAABAAAEAAAAAEAEAEAAAEAEAEAEAEAEAEAEAEAAAAAAAAABAEAEABABABBBABABAAABABABABABAEABABABABABABABABAAABABAAABABABAAABABABABBBABABABABABABABBBBBBCAAAAABABABAAAAABABAAAAABABABBBABAAABABABABBBABABBBEBEBFBEBFBEBAAABFBFBAAAEFBAAGBGBAAAEAAAAAEAAAABCCCCCCCCCDCAADCAEDCAAECAAECAEAAAAAADBAEAEAEAAAEAEAEAAAEAEAEGCGCAEAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAEAAAAAAAEAEAEAAAEABABAEAEAEAEAEAAAEAEBCAABCAEAEAEAAAEAEAEECAEAAAAAAAEAEAEAEABAEAAAAABABABAAAEAEAEABAEAEABABAEAAAAAAAAAAAABCBCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAAAAAAAAABABABABABDCDCBCBCAEAEAEBBAEAEAEBBBBBBBBBBBBBBBBBBBBBBBBAEAEAAAABCAAAAAAAABCDCDCFCFCAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAABAEAEABAAAAAAAABBBBBBBBCBDCCBEBEBEBCBAEBBEBBBBCDCECAAAAAAAAAAAAAAAAHCJCAAAAAEAEAEAECBBBAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAABBAAAAAABBAAAABBBBBBBBBBBBBBBBBBBBAABBBBCBBBBBBBBBBBBBAAAAAAABAAAEABAEBBAEAEBBBBAABBBBBBBBAAAEAAAABBABAAAECBCBCBAAAEAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAEAEABAEAEAEAEABABABABABABABABAAAAAAAABBABAAAAAAAAABAEAEAEAEAEAEAAAAABBBABBCBCAEBCBCAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAEBBBBAEAAAAAAAAAAAAAAAAAAAEAEABABBBAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAEAAAAAEAEAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAABABAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEBCCCBCAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABABABAEAEAEAEABBBAEABABABABABAEABABAAAAAAAAAAAAAABBABABAAECBBBBBBABBBDBBBGCBBABAEAEAEBBAEECAABBBBAEBBBBAAAAAAAAAAAAAAAEAEAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAABABAAAAAEAAAAAAAAAEABAAAAABAEAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAEAEAAAEAEAEABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEABAEECAAAAECECACAAAAAABCBCBCBCCCDCDCDCECBBAAAAAAABAAAAAAAACCAAABABCCAAAAAAAAAAABABABABBCBCDCECAAAAAAAAAAAAAEAAAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBBDBCBDBABCBCBDCDBBBBBAAAEAEAEAEAAAAAEAEAEAAAEAEAEAEAEAAAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAAAAAAAAAEAEAEABABAEAEAEAEAEAAAAABABAAAAAEABAAAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEABABABAEBBBBAEAEAEAEAAAEABAEAAAAAAAAAABCAEAEBCDCDCDCECECBCBCBCBBCCAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAEAEAEAEAAAEABAEAEAEAEAAABAEABAEAEAEAEAEBBBBAEBBAAAEAAAEBBCBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEABABABACAEABABAEBCBCAEAAAAAEABBBBBBBABAEBBAAAEDBBCABBCCCBCCCAAAAAADCBCAAAAAAAAAAAAAEAABCBBAAAAABAACBAAAADBAAAABBAAAAAAAAAAAAAAAAAAAAAABCBCBCBCBCBCAAAEAEAEAEAEAEAEAEAEAAAAAAAEAEAEAAAAAABCBCABBCBCBCBCAAAAAAAAAAAAAAAAAAAAAAAEDBAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAECBCCAAAACBCBCBCBAABBCBAAAAECAAAAAAECBCBCAACBBCBCAAABCBBBAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCBCBCBCBCAAAACCCCCCDCAAAACBCCCCCCDCCCCCCCDCAAECDCDCECDCDCDCDCDCFCECECCBFCECECECECECECECFCFCFCFCGCFCFCGCFCFCFCAAAEABAAAAAAGCAEAEAEAAAAABBBBBBBAAAAAAAAAAAAAAAAAABBBBCBAECBAEBBBCBCBCBBAAAABBBBAAAAAABBBBAEBBBBBBAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBAAAAAAAAAABCBCAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCAAAABCAAAAAEAEBCBCBCBCBCBCBCBCAABCBCBCBCAABCBCBCBCBCAABCBCBCBCBCBCBCBCBCBCAABCBCBCBCBCBCBCBCBCBCBCBCAABCBCBCBCBCBCBCBCAAAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCCCDCDCCCCCCCCCCCDCCCAAAAAAAAJCAAAEAEAECBBCBBBBBBBBBBAEABABABAAAAAECBBBAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAAEBBHCAAAAAACBCBBBCBCBBBCBCBAAAAAACBCBCBCBCBAADBDBAAAECBDBDBDBDBDBDBEBEBEBDBDBDBAAAAAAAAAAAAAAAAAAAAAABCAAAAAAABAAAAAAAEAECBEBBBCBFBAAEBFBFBAAEBBCBCEBCCAAAAAADBDBCBCBABEBBBDBDBEBEBDBDBDBCBCBAEAAABABEBAAAAAAAAAAAAAAAAABAEAAAAAAAAAAFBFBABABAAAAAAEBAEAEAEEBAEAAAAFBFBDBEBEBEBEBAAAAEBEBAEAEEBFBFBDBAEEBAAAEAEAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBFBFBFBFBAAAAAAAAAAAEAEAEAEAEAEAEAEAEAEAEAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAEAAAABBAAEBCBCBCBCBCBCBBBBBDBDBDBAEAEAEAEABAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAEDBAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBDBCBCBDBEBEBEBBBBBBBBBBBBBBBBBAAAAAAAEAEAEAEAEAEAEABAEBBAEBBCBCBCBCBAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCCCCCCDCDCDCDCEBDCECECDCECECECECFCFCDCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBDBBCAADCECFCGCAABBBBBBBBAEBBAAAAAAAAAAAEAEAEDBDBAECBCBAEAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAABBBBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAEAAAAAAAAAABCBCBCBCBCBCAAAAAAAAAAAEAEAEAEABAAABBBAAAAAAAAAAAAAAAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBDCDCFCAECBCBBBAAAAAAAAAAAAAEDBAEAEAABCCCAAAACCDCDCDCCCDCCCCCAAAAAAAAAAAEDCDCDCDCDCAAAADCDCDCAEECECAAAAAAAAAAAAAAECECAAAEECECAAAAAAAAAAAAAAAAAAAAAAAAAAAADCDCDCDCDCDCDCDCDCCCDCDCDCCCDCDCDCDCDCAAAAAAAAECECECECECECECDCECECECECECABECECECECECECAAAAAAAAAAECECECECECECDCECECECAEECAAAAFCFCFCFCFCFCECFCECFCFCFCFCFCFCECFCFCFCFCFCFCFCFCECECFCFCFCAAAEAEAEAAAAAAAAAABCBBBBBBBBDBDBEBEBEBABGCGCGCGCGCFCGCFCFCGCGCGCGCGCGCGCFCFCGCGCGCGCGCGCGCGCGCFCFCGCAAAAGCAAGCFCGCBCFCECGCBCBCAAAAAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBCDCFCGCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEABAEAEAEAEGBAEAEAAAAAAAEAEAADBDBDBEBDBDBDBDBDBDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBDBEBEBEBEBEBAEAAFBFBFBFBFBFBFBFBAAFBDCDCDCDCDBAAAEHCAEECAEBBBBAAAAAAAAAAAAFBFBFBFBDBCBDCDCCCECDBECECECECECAAAAAAAAAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAACCDCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAEAAAAAAAADCDADCECECFCFCFCFCFCAEFCFCFCFCFCFCGCGCGCGCGCGCGCGCFCGCAAFCFCFCGCGCGCHCDBEBFBDBEBFBGCAABCCCCCGCHCGCAAECAAAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAECABABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAEAEABABAEAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAEBBAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAHCGCGCGCGCGCGCHCGCGCGCGCGCHCFCGCGCGCGCGCHCGCGCGCGCGCHCGCHCGCAEFCGCFCFCFCFCGCFCAAAAAAAAAEAAAAAAAAAAAEECFCECECECECFCFCAAAAAAAAAAAAAAAAAAAAECFCFCAABCAABCAAAACCCCGCCCFCECFCHCGCFCGCFCGCFCGCFCGCFCFCGCFCFCFCGCGCGCGCFCFCGCGCFCGCGCAAAAAAAAAAAAECECECDCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICHCHCGCHCHCHCICHCHCGCHCGCICGCHCHCHCHCHCICHCHCHCHCHCICHCGCHCICGCGCGCGCGCGCHCJCICICHCICICICJCICICICICICJCHCICICICICICJCICICICICICJCICHCICJCHCHCHCHCICHCICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFCGCFCGCGCBCAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAHCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAAABABABAAAAAAAAAAAAAAAAAAAAABABAAAAAAAEAAAAAEABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAEAEAEAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEABAEABAAAAABABAEAEABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAAABABAAAAAAAAAAAAAAAAAAAAABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAAAEGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAABABAAFBAEAEAEAEAEAAABAAAAAAAAABABABABAEAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAEAAAEAEABAEAEAEAEAEFCFCFCFCFCFCFCFCAAAAAAAAAAAAAEAAAAAAAAAAAAAEAEAAAEAAAAAAAAAAAAAEAAAAAEAEAEAEAEAEAAABAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCAAAADBABAEAEFCAAAEAEABAEHBAAAAECAAAAECGBGBECECECECECECFBEBFBEBECECECFBDCECECEBAAFBFBICEBFBDCDCEBFBFBFBFBGBGBGBGBGBAAGBGBECAAFCFCFCFCFCFCDCFCFCFCFCGCFCECAEAEAEAEAEAEAEAAAADBDBDBDBDBDBAADBDBDBDBDBDBEBEBAEEBAEAEAAFCAEGBAEGBGBAEAEGBGBGBGBGBGBGBGCGCGCGCGCCCCCCCCCDBCCDCEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDCCCDCGCGCBBBBDBDBEBEBEBFBFBEBAEAAAAAAGBAEAAAEGBAAGBGBCBCBAADBAAAAAAAEAEAEAEAEAEAEAAAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAAAEAEAEAEAEAEAEAEAEAAAAAAAAAAABDBAEAEAEAEAEAEAEAEAEBBBBABABBBBBCBCBAEBBDBDBAAAAAAAAAAAAAAAAAEAEAEAEDBEBEBEBFBFBAEAEFBFBFBFBGBFBFBFBGBGBGBGBGBHBHBGBGBGBGBHBHBHBHBGBGBGBGBGBFBAAFBFBFBFBFBGBGBAAAAAAAAAAAAAAAAAAAAAAFBFBFBAAFBHBHBHBHBDBAAAAAAAAAAAAAAAAAAAADBDBAAAAAAFBFBFBFBAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAAAAAAAABCBCBCAAAAAABCAAAABCBCAAAAAAAAAABCBCBCBCBCBCCCBCBCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCBCBCBCCCCCCCCCCCCCBCCCCCCCBCCCCCCCCCBCBCBCBCBCBCBCCCBCDCDCCCCCDCDCDCDCCCDCCCDCCCDCDCDCDCDCCCCCDCDCDCDCDCECDCDCDCECECECECECDCECDCECDCECECDCDCECECECDCECDCDCDCECECECECFCECECECFCECECFCFCFCFCECECFCAAECECECECFCFCECECFCECFCECECFCFCFCGCFCFCFCFCFCGCFCGCGCFCFCFCFCFCFCFCGCFCGCFCFCFCFCFCFCFCFCFCFCFCGCGCGCGCGCGCGCHCHCGCHCGCGCGCHCGCGCGCHCGCGCGCGCFCGCGCGCGCGCGCFCFCFCFCFCFCFCFCHCAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCFCABFCFCFCFCAEAAFCFCFCFCFCAAAAAAAAAAAAFCFCFCFCAEFCGCGCGCGCGCGCGCGCGCGCAAAAAAAAGCGCAAGCFCDBGCAAAABCBCBBAAAAAAAAAAAAAAHCGCGCGCHCHCHCHCHCGCGCHCGCHCGCHCHCHCHCGCHCHCGCGCGCHCHCHCHCGCGCFCFCGCGCGCHCFCICHCICHCHCICICICHCICICICHCHCHCHCICICICAAAAAAAAICICHCICHCICICICHCGCHCGCGCGCHCHCHCJCICJCICJCJCJCJCJCICICJCICICJCJCJCJCJCJCJCICJCJCICJCJCJCJCICHCHCHCICICICHCHCHCHCHCHCICICHCHCICICHCHCHCHCHCICHCHCHCHCHCGCHCHCHCHCHCHCGCGCHCHCGCGCGCGCGCICICICICICJCICJCJCICJCICICICICICJCJCICICICHCICICICICICICHCHCHCHCHCHCHCHCJCJCJCJCJCJCJCJCJCJCJCJCICJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCICICICHCICICICICAEAAAAAACCDCDCAAAAAAAAAAAAAAAACBDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEECECFBECDCECAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBEBAAAAICICICICJCJCJCICICICICJCICICICICJCJCICICJCJCJCJCJCJCJCJCJCICAAAAAAAAAAAAAABBBCBCBCBCCCAADCAADCDCBBBBBBBCAEAAAAAAABAAAEAAAADCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEABAEABAEAEAEAEAAAAAAAAAAAAABIBABAAAEAEAAFBGBAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCFCFCFCGCGCAAGCAAFCAEFCAEAAAAAAAEAAAAFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEFBFBABFBAAABAABBABAEAEBCBCAAAEAAAAAAAAAAAAAEAEAEAEECAAABECECECECECABGCACECAAAAECECECECAAAAABGCAEABAAAAAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAABAEGCGCGCGCGCGCGCHCGCGCHCGCABABBBBBAEAEAEAEAEAAABAAAAAAAEAAAAHBCBDBABABCBBBIBAEAEAEAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAABAAHBABABABABAEAEAEAEABIBIBIBAEFBFBFBFBGBGBGBHBHBHBEBFBAEAAAEAEACAEAEAAACFCAEAAFCABGCABAAAAAAAAAAAAAAAAAAAAAEHBHBHBHBHBHBGBGBFBFBHBHBHBABAEAEAEAAAEFBAEEBFBFBFBFBFBEBFBFBFBFBFBFBABFBFBFBFBIBIBHBHBHBHBHBHBHBHBHBAEABABAEAEAEHBHBHBHBHBHBHBHBHBHBHBHBHBHBAAAAAAAAAAAAAAAAAAABAEBBBBAAFBFBAAGBGBIBIBABABABIBABIBIBIBHBAAAAAAHBHBHBHBHBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAEAEAEAEAAAAABAAAEAEAEAAABAAGBAEHBCBGBHBHBAEAEAEAAAEABAEAEAEAAAAAEAAAAAAABAEAEAEAAABAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAEAAAAAEAEAAAAAAAAAAAEAAAAAAAAAAAAAAABAAABABABABIBIBIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAEAADBAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEBAAFBAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAEACACACACAAAAAAAAAAAAAAAAAAAAAAHCBCBCDCDCGCGCAEGBGBAEAEAAABAEAAAEAEAEAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAEAEAEAEAEGBAEABAEAAABABAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBAEAEAAAAAEABAEAEAEABABABABABAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAEABABAAAAAAAAAAAAAAAAAAAAAAABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCIBICICICHCAEAAAAAAAEABABAEAEAAAAAAAAABHBHBHBHBHBHBHBAAHBHBHBHBHBAAAAAAAAAAAAABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAHBAAAAHBAAAAABIBAAAAAAAAAEHBAAHBHBHBAAAAAEAAIBHBHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBAEAEAEIBAEIBIBIBIBAAAAAAIBAAAAAAAAAAAAABHBIBIBIBHBHBHBHBABABABAAIBAAAAAAAAAAAAAAAAIBIBIBIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBHBIBIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBAEIBAAIBIBIBIBHBIBAAIBIBIBIBAAIBIBIBIBIBHBABABABABAEAEAEIBAEAEAEAAAEAAHBABHBHBAEAEABAAABABABABABABBBBBBBFBGBFBFBGBGBHBHBHBHBHBHBHBHBHBHBHBIBIBHBIBAAAAAAAAAAIBABDBAAAEABGBGBAAAAAAAAAAAAAAAAAAAAAAAAIBAAIBIBHBHBHBHBHBHBAEHBABHBHBHBHBHBIBIBIBIBIBIBIBIBIBIBIBIBIBIBJBIBBBAAAAAAAAAAAAAAAAHBHBAEABAEABABABABAEAEAAAAAAAAAAAAHBHBHBBCAABCCCCCDCECECFCGCGCHCHCICJCJCBCBCCCCCDCECFCGCHCHCICJCBCBCCCDCECFCGCHBGCHCAAICJCBCBCCCDCECFCFCGCHCICJCJCHBDCECHBFCFCGCHCICJCDCDCECFCGCAAHCICJCAAHBDCECHBFCGCHCICICCCJCHBHBHBBCBCBCHCICICJCIBAEIBIBAAABIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBJBIBIBIBIBIBIBIBIBIBIBIBIBAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAAAAAEAAAAAAAEAEAEAEAAAAAAAEAEHBAAAAAADCDCDCDCECECFCFCGCGCFCFCECECAAAEAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEABAEAAAEAEAEAABBBBAAAAABABAEABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEABABABAAAAABAAAAAAAEABABABAAABAAAEAEAEJBAEAEAEAAAEAEABAEABABAEAEAAAEAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGCGCAAHCICICAEAEAAICHCHCICICICJCAAICAAHCHCICICHCJCAAAAAAAAAAAAAAAEAEAAAAAAAAAAAEAAABABABABABABAAAAAAABAAABABABABAAHBHBHBHBHBAEAAGBGBGBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAEAEAAHCHCABAEHCICABABHCAAAAAAAAAAAAHCIBIBIBHCICIBHCHCICHCIBIBHCIBIBABAAAAAAAEABABAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBJBABAAAAJBJBJBJBAAJBAAAAAAAAAAAAAAAAAAJBJBIBIBJBAAIBJBICICJCJCJCJCJCJCJCJCJCIBAEAEHCICIBAEICAAAEICICICIBAEJCIBAEJCJCJCAEAAAAAAABABAEAEABIBAEIBABAAAAAAAAAAAAAAABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAABAAAAAAAAAAABAAAAABABABAAAAAAABABABAEJBAEAAAEAAABABAAAAABABAAAEAEAEAEABABABAAAAABAAAEAEABABABAEABABAEAEAAAAAAAAAAAAAAAAAAAAJBABAAAAJBJBAAAAAAAAAAAAHCAEAEAAAEHCAEABHCHBHCICICICAAIBABICIBJCJCAEAAAAAAAAJCHBICHBJCIBJCJCJCAAAAAAICAAAAAAABAEAAAAAAAAABAEAEAEAAAAAAABAAAAAEABAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAABABABABABAAABAEABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAAAAEAAAAAEJBAEAEAEAEAEAAAAJBJCJBAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEABAEJBJBAEJBIBAAAAAAAAJBJBAAABJBJBAAAEAAAAJBAEAAAAAAAAAAIBIBAEAEAEAEAAAAIBAAAAJBJBJBJBJBJBJBJBAAAAAADCBCBCBCBCBCAAAABCBCBCBCAABCBCBCBCAABCAABCAABCBCBCBCJCJCICICICCCJCICHCHCCCCCCCICHCJCCCECGCDCECGCHCJCCCECFCHCJCFCHCCCCCDCFCGCICDCECGCICCCFCGCICDCGCICDCCCAAFCHCICECGCICCCFCHCICAACCDCFCGCHCHCFCAAICFCICHCGCJCGCICAACCJBECGCJCDCHCABDCFCGCJBICAAECCCFCICCCJBCCFCICGCECAAECDCJCDCGCECHCGCJCCCFCJCFCICECHCECHCJCDCGCHCDCGCECICCCFCJCGCICBCDCFCGCABJBJBJBHCECICAAJBAAAAAAAAAAAAAEAEAEABAAAAJBJBJBJBAAIBIBIBIBIBJBAEABAEIBAEIBIBIBABIBIBIBJBJBAEAEAEAEAEAEAEAEAEAEAEAEIBFCAAAAAEIBIBJBJBAEJBABIBIBIBIBAAAAJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBIBBBJBABIBJBABAEIBIBIBIBAAIBJBJBJCIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBIBIBIBAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJBJBAAABAAAAAEABABABAAAAABABABABAAABABABABABAAAAAAAAJBAAAAAAJBJBJBAEJBJBAEAEAEJBABAAABABJBJBJBJBAAAAAAAAAAAAJBJBAEIBIBIBIBIBIBABIBIBJBJBJBIBIBJBJBJBJBJBJBJBJBJBIBIBIBJBJBIBIBJBIBIBIBIBAAAAIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAHBIBHBAAAAAAAAAAAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAIBAAAAABJBABAAJBAAAEABABAAAAAAAAABIBAAABAAAAAAAAAAABJBJBJBJBJBJBJBJBJBJBIBIBAEIBIBIBAAAAAEAAIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABABABAAABABABABABAAABABABABABABABABABABABABABABAAAAAEAAAAAAAAAAAAAAAAAEABABABABABABABABABABABABAAABABABABABABABABABABABAAABABAAABABAAABABAAABABABAAAAABABABABABABABABABABAAAAABAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAEAAAAHCHCHCAAHCAAAAHCICICICJCHCHCHCICAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBAAAAAAAAAAJBAAAAAAAAAAJBJBJBJBJBJBJBJBIBIBJBIBIBIBJBJBJBJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBBCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCHCHCICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCAAAABCAABCBCAAAAHCHCAAHCICAAJCHCICBCAAICJCBCBCAAAABCAABCBCBCBCBCBCBCAABCICBCJCBCHCBCHCAAICICICJCJCHCHCHCICBBJCBBBBBBBBBBJBJBJBAAACAACCBCBCBCBCCCBCBCBCBCBCAAAABCBCBCBCBCCCCCDCBCCCCCCCCCCCCCCCCCCCDCDCCCDCDCCCCCDCCCDCDCDCDCECDCECDCDCECECDCDCDCDCECDCECFCECECDCECDCECECECFCECAAFCECFCECECECFCECECGCFCECECFCFCFCGCFCFCFCFCGCFCECFCFCGCFCAAFCFCGCFCFCFCGCGCHCGCHCGCGCFCGCGCGCHCHCGCHCGCGCGCHCGCHCICGCGCICICHCHCGCGCHCHCHCHCICICHCHCHCICICHCICICICJCICICHCJCHCICICICJCJCICICHCJCICICJCJCICJCJCJCICJCJCJCJCJCJCAEAEJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCBCBCAABCBCBCCCBCBCBCBCCCCCCCCCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEDCDCDCCCDCCCDCDCDCCCECDCDCECDCECECDCECDCFCECECECFCECECFCFCECGCFCFCFCFCFCGCGCFCGCHCGCGCGCGCGCGCHCHCGCHCHCICHCHCHCICHCICJCICICICJCJCJCJCJCICAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABJBAAAAAAAAAAABAAAAAAAAAAAAAAAAJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAEAAJBAAAAJBAAAAIBAAAAAAAAJCJBJBJBAEJBAEJBAEJBAEAEJBFCGCGCHCJCJCJCAAJCJCBCBCBCBCBCBCBCBCBCBCBCCCBCBCCCCCAAIBJBCCDCCCDCCCDCDCDCAADCECECDCECECDCECECECAAECFCECFCECFCFCFCFCECDCAAAEJBJBAEJBJBJBABAAAEJBJBJBJBJBAEJBAAAEJBAAJBJBJBAAAAJBJBJBAAJBJBAAAAAEAEABABABABABABFCGCFCGCFCGCGCGCGCGCHCGCHCGCHCHCHCHCICICHCHCHCICICICICAEJCJCICICICJCJCJCJCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCBCBCBCBCAABCBCAAAAAAAAAAAAAAAAAAAAAABCBCCCBCBCBCBCCCCCDCCCDCCCCCCCDCDCDCECDCECDCDCECECECFCFCECECECECFCFCFCFCFCGCGCFCFCGCGCGCGCGCGCHCHCGCGCGCGCHCHCHCICICICHCHCHCICICICHCICJCICJCJCICJCJCJCJCAAAAAAFCAAAAAAFCFCFCFCFCFCFCFCFCFCGCAAAAFCFCGCFCGCGCHCAAGCGCGCHCHCHCHCGCICHCHCHCICICICHCJCICICICJCJCJCICAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFCECECECFCECFCFCECGCFCFCGCGCFCFCGCGCGCGCHCHCGCGCHCHCGCHCGCICICHCHCHCHCICJCICICICICJCICICGCFCFCFCFCFCFCFCGCHCGCGCGCGCGCHCGCFCHCICHCHCHCHCHCICGCJCICHCICICICICICHCJCJCICJCJCJCJCJCICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABCBCBCBCAABCAABCBCBCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEHCHCJCICICICICICICHCJCICHCICICICHCICICHCICICHCJCICICHCICHCHCICHCHCHCICICJCICHCHCJCICICICAAJCHCHCICICICJCAAAAAAAAAAAEAEEBEBEBEBEBBBBCBCBCBCBCBCCCBCCCICCCCCBCCCBCCCCCCCDCDCDCDCCCDCECCCDCDCICDCDCJCDCDCECECECDCDCECECECFCECECECFCFCECFCECFCFCFCGCFCFCGCFCFCHCGCGCGCGCHCGCGCGCICHCHCHCGCHCICHCHCICICHCICICJCJCJCABABABABABAABBBBBBBBBBBBAEAEBCBCCCECECFCHCHCICICJCJCBCBCBCDCECGCHCHCBCDCDCECECGCHCHCICJCJCCCCCECFCGCJCJCBCCCDCFCGCHCHCICICJCJCBCECECGCGCICICJCJCBCBCGCICICJCHCHCICABICHCHCICICJCCCDCDCFCJCJCABHCABABHCHCJCAABCAAAAAAAABCBCBCBCBCBCBCBCBCBCAAAEAAAAAAAAAAAAAAECGCICICAAAAAEBCBCBCCCBCCCBBCCCCCCDCCCCCCCCCDCDCDCCCCCDCDCCCDCECDCDCECDCDCFCECECECFCECECECECECFCFCFCFCGCFCFCGCFCGCGCGCHCFCGCGCGCGCGCHCHCICICGCHCHCHCBBBBABBBABABABBBBBBBBBAAAAAAAAJBAAJBAAAAAAAAJBAAAAJBAAAABBHCICHCICICICICICJCJCJCICJCJCJCJCJCJCBBBBBBAAAEAEBBBBBBBBBBAEEBEBCBCBCBAABBBBBBCBCBCBDBCBCBCBCBAAAAAAAAAABCAABCAAAAAAAAAABCBCBCBCBCAABCBCBCBCBCAABCBCBCBCBCBCBCBCAABCBCBCBCBCBCBCBCCCBCCCBCCCBCCCCCCCCCDCCCBCCCCCCCDCCCCCDCDCCCDCCCCCCCDCDCDCDCDCCCECCCDCDCDCDCECDCDCDCDCECECDCDCECECECAAECDCECDCECECDCECECECECECECFCDCECECECFCFCDBAADBDBFCECFCFCFCECECFCFCECFCFCGCFCFCGCFCFCFCFCGCFCFCFCFCFCGCGCFCGCGCGCHCHCGCFCGCGCGCGCGCGCHCGCHCHCGCGCHCGCGCICHCHCGCHCHCHCHCICHCICICHCHCHCICHCICICHCJCHCICICICICICJCICJCJCICICICICJCJCJCJCJCJCICJCICJCJCJCJCAADBFBEBEBICHCEBAAEBEBABAAAAHBHBIBIBIBIBIBIBAEAAAAAAAAAAAAAAAAAAAAAAAEABAAAAAAAAAAAAABAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAABAAAAAAIBIBIBAEIBIBAEIBAEIBIBAAAAIBIBIBAAIBIBIBICAEIBJBJBAAAAAAAAAAIBIBIBIBAAAAAAAAAAAAHBHBIBIBAEIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAEAEAEAEAEAEIBIBIBIBIBIBIBIBIBHBHBEBEBBBIBAEAAAAAAAAIBAEABAEAEAEAEAEAEAEAEAEAEABJCAAAAICCCDCBCBCAAAAAAAAAAAAAAABAAAAAAAAAAAEAAAAAEBCAEAEAEAEAEECAEAEAEAEAEAEBCBCCCDCECICJCBCBCDCDCHCHCICICJCJCJCJCBCBCBCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAADCECFCGCHCICJCBCBCBCBCCCCCDCECECFCFCGCGCHCHCICICICJCJCJCECJCAAAAAAHCAAAAAEHCAAAEAEAEHCAAAAJCICICAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAEAEAEAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABAEAEAAJBAEAEAEAEAEAAABABABABABABABABABABABABABABABABAEAEAAABAAAAAAAAAAABABAAAAABABABABABABABABABABABABABABABABABABABABABABAAABABAAABABABABABABABABABABABABABABABABABABABABABABABAAAAABABAAAAAAABAAABAAABABAAABABABAAAAABABABABABABABABABABABABABABABABABABABABABABABABABAAAAABABABABABAAABAAABABABABABABABABABABAAABAAAAABABAAABABABABAAAAABABABABABABABABABABAAAAABABABABABAAABABABABAAABAAABABABABAAABABABABABABABABABABAAAAABABABABAAABABAAABABABABABABABABAAABABABABABABABAAAAABABABABABABABAAAAABABABABABAAABABAAAAABAAABABABABABABABABABABAAABAAABABAAAAABABABABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAADBCBCBCBAEAEHCABJBJBJBIBIBICICICJBIBICJBJBIBICICIBICICICJBJBJBIBJBIBICJBJBIBICICJBJBJBIBICICIBICJBJBIBJBICIBICICICIBICICIBJBJBJBICICICIBJBJBJBIBJBJBJBIBIBICICICGBGBDBDBAEAEAEAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAAHBHBAAAAAAAAAAAAAAAAAAAAAAAAABAEAEAEAEAEEBEBABEBECEBEBJBJBJBJBJCJBJBJCJBJCJBJCJBJBJBJBJBJBJBJBJBJBJCJBJCJBJBJBJBJBJCJBJCJCJBJCJBJBJBJBJBJBJBJCJBJCJBJBJBJBJBJBJBJBJBJCJCJBJBJBJBJBJCJCJBJBJCJBJBJCJBJBJBJBAEAEAEAEEBAAAAAAAAAAAAAAAAAAAAAAAACBCBAEBBBBBBABABBBABABJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAEAEAEAEAAAEAEAECBAECBCBJCJCBBICICJCBBBBCBJCICCBAEIBIBIBIBJBJBJBICAAJBJBJBJBCBCBHCABAEAAAAAAICICJCJCABABAAAAAAABABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAEBEBJBJBDBCBABABHCABABABGCGCAAAAAAABABICAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBJBJBAAJBJBJBJBJBAEAAAAAEAEAAAAAAAAAAABAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAABAAJCAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABABABAEAEAEAEABAAAAAAAAAAAAAAAAAAAAAAAEAEAAABABAAABABABAAAEAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAAAAAAFBAAAAAAAAAAAAAAAAAAAAAAAAAAAEIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAABABABABABABABABAAAAABABABABABABAAABABAAABAAABAAABABABABABAAABAAABABABABABABABABAAABABAAABABABABAAAAABABABAAABAAABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABFBFBEBABABABBBAEBBCBAEAAAAAAAAAAAEAEECHBAAHBAAAAHBHBABHBHBHBAAHBHBHBAAECAAAAAAAAABABHBAAHBAAHBHBHBAEHBHBHBHBHBHBHBHBHBHBHBAAHBHBHBHBGBHBGBGBAEAEAEIBAEABABABABABHBHBGBGBGBAAFBFBGBGBGBGBGBGBHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBIBAAAAJBIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAEABABAEAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAJCABABABABABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBABABJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAABABABABABABABABABABABAAABAAAAAAAAAAAAAAAAAEAAJCABAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAJCAAABAAAAAAAAICABABABAAAAHCICABICAEAAIBIBIBIBIBIBIBIBIBIBIBIBIBIBIBAAIBIBIBIBIBIBIBIBIBIBIBIBABABABAAAAAAAAAEICICICICICICICICIBIBJBABJBJBJBJBJBIBAAAAAAAAAAAAAAAAAAAAAAIBIBIBIBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBIBJBJBJBJBJBJBJBJBJBJBJBJBIBAAIBJBJBJCJBJCJCJCIBIBAEJCAAABABABABAAJBJBABABJBIBAEABABABABAAABAAABABABABAAAAABABABABABABAAABABABIBIBABABABABABABIBIBIBABIBIBIBJBJBJBJBJBJBJBJBJBAAIBIBIBIBIBIBIBIBJBJBJBJCAAAEABJBIBAEIBIBJBIBIBIBJBJBABJBJBJCJBJCJBJCJCJCJCAAABABABABAAAAAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBIBIBJBJBAEAEJBJBJBJBJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBDBAAAAAAAEAEAAAAAAAAAAABABAAAAAEIBAEAEAEABABJBJBACACACAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAABABAAAAAAAAHCAAAAHAICICAAAAAEAEAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAJCAAAAAAAAABICICICICAAJCJCJCJCJBJBJBJBJBAAJBAEAAJBJBJBIBJBJBJBJBHCICICICICICABAAABABABABGCGCGCGCABABABJBJBJBAEJBJBJBJBABIBIBIBIBIBIBAAAAAAJBJBJCJBJBJBJBJCICICICICAEAAAAAEAAAAAEAEJBJBJBJBJBJBJBJBHBAAAAAAABABABAAAAAAABABABAEABABABAAAAAAAAAAAAABABABABABABABAEABABABABABABABAAAAABJBAEJBJBJBJBJBJBJBJBJBJBJBJBJBABAEJBJBJBJBJBABABABABJBABABJBABABABABABABABABABJBABABABABABABABABABABABABABABABABABABJBABABABABABABABABJBABJBABABJBABABJBJBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAEDCAAAAAAAEAEAEAEAEBBAEAEAEAEAEAAAAAAAAAAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAHDAAHDABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAABAEABABAEAAGBAEHBAEAAABAAABABABABAEAEABAEGBGBGBGBGBGBICICABABICJCJCJCICICAAABABICJCJCJCABABABAAAEIBABABABAEAEAEAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABJBJBJBJBJBJBJBJBJBHBHBGBGBGBGBHBHBAAGBGBGBGBGBGBGBJBJBJBJBJBJBJBJBJBJBJBGBJBJBJBJBJBJBJCJCABABABABABABJCJCAAHBABAAJCJCJCJCJCJCJCJCJCAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABAAABABABABABABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCJCJCJCAAAAAAAAAAAAAAAAAAAAABHBHBAAAAAAABABABABABABAAAAABABABABABABABAAABABABABABABABABABABABJBJBJBJBAEJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABJBAAAAAAJBJBJBJBJBJBJBJBJBJBAAAAABABABABABABABABABABABABABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAABABFBFBFBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCJCJCJCJCJCJCJCJCJCJCJCJCJCABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAAAAABABABABABAAAEABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAABABAAABABABFCAAAAAAABAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABAAABABABABABABAAABABAAABABAEAEJBJBJBJBJBJBABJBAAJBJBJBJBJBJBJBAAJBJBJBABJBJBJBJBJBJBAAAEAEAEAEJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBABJBJBJBJBJBJBJBJBAEJBJBABJBAAAAJBJBJBJCJBJBAAJBAAJBJBJBJBAAAAAAAAAAAAAAAAABABABABAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBJBJBAAJBJBEBBBABEBAEAAAAAAAAAAJBAAAAHBAAHBAAHBAAAAAAHBHBHBJBABABABABJCJCABABAAHBAAHBHBAAAAAAAAABABABABAAAAAEAEAEAAAEAEAEAAAEAAAEAEAEAAABJBABABHBHBHBJBJCABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAABABABABABABHBHBAAAEABAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABHBABABAAJBMBMBMBMBMBMBMBMBAAAAABMCAAAAMAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABJBABJBJBJBIBIBABAAABABABABABABABABABABABABABABABABAAJBJBABJBABABJCJBJBAAJBAAJBJBABABHBABJBJCJCJBJCJBJCJBJBJBMCMBMCMBMBMBMBMBAAMBAAMBMBAAJBJBABJBJCJBJBAAJBAAJBJBAAAAICHCJCJBJBJCJBJBJBJBAAJBAAJBJBABJCJBJBJCJBJBJBJBAAJBAAJBJBMCMCMBMBMCMBMBMBAAAAMBMBMBAAJCJCJBJBJCJBJBAAAAJBJBJBJBJCJCJBJBJCJBJBAAAAJBJBJBJBAAAAAAAAAAHBAAABAAAEAEAEAEAEAEAEJCAAABAEAAAEAAAEABABABABABABAEAEAEABABABABAEABABAAAAAAAAAAABABABAAABABABAAAAAAAAAAAAAAAAAAABABABABABABABAAAAABAAAAABABABABABABABABAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAAABAAABABAEAEAEAAABAEAEAEAAABAAJCJCJCJCJCJCAEABAAAAAAAAAAAAAEAEAEAEAEAEAEAEAAAAAAAAHBHBHBHBABABABABABABHBAAAAAAABHBAAAEAAHBHBAAHBAAAAAAAAAAHBAAAAAAHBAAHBJCJCJCAAAAAAAAAAAAAAAAAAJCJCJCAAAAAAAAHBABABABABABABABABABABABABABABABABABABBCAAJBJBJBJBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBABABABAEAEAEAEAEAAAEAEAEAEAEJBJBJBJBJBABJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBFBFBGBGBABIBIBIBJBIBIBABICICIBICICIBICICIBICICIBJCJCJBJCJCJBJCJCJBJCJCJBAAAAAAAAJBJBJBJBJBJBJBJBJBJBJBJBICICICJCJCJCJCJBJBJBJBJBJBJBJBJBAAAAJBJBJBJBJBJBJBJBAAAAJCJCJCJBJBAAABABABABABABABABABABABAAAAAAAAABABAEAAAAAAAAAAAAAAAAAAAAAAAAABABAAAEAEABAAAAAEABAAAAAAAAAAAEAEJBJBJBJCJBJCJBJBAAJBAAJCJBJCJBJBJCJBJBAAJBAAJBJCAEAAAEABABABAEAEABABABABABABAAAAAAAAAAAAAABCAABCBCAABCAAAACCCCCCAACCDCDCDCAAABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCBCAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABAEAEAAAAABABABABABABABABAAABABABDCAEAAAADCDCAAAADCECECECAAAAFCAAECECAAFCAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAAAAAEAAAAAAAAABAAABABABABAAAAJCJCJBJBJCJBJBAAAAJBJBJBJBJCJCJBJBJCJBJBAAAAJBJBJBJBAAAAJCJCJBJBJCJBJBAAAAJBJBJBJBJCJCJBJBJCJBJBAAAAJBJBJBJBAAABAAAAABABABABABABABABABABAAAAABABABABABABAAAAAAJBJBJBJBJBAAABABABABJBAAAEAEAEAEAAAAAAABAEAEAEAEAEAEAAAAAAAAAAAEABABABAAABABAAAAAAABABABAAAAAAAAAAAAAAABABAAJBJBJBJBJBJBJBJBJBJBJBABABABAAAAAAAAABABABABABABABABABABABABABABABAEABAAAAABABAAABAAABABAAAAAAAAAAAAAAABABAAABAAAAABAAABAAAAAAABJBAAJBABAAAAABABABABABABABABABABABABABABABABABABABAAJBJBABABJBJBAAJBAAAAHCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADAAAAADADABGBGBAAABABHBHBIBIBIBABIBABABABJBABABJBJBJBJBJBJBJBJBJBJBJBACACACJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBJBABJBJBJBJBJBAAJBAAJBJBJBJBJBABABABABABABABABABABJBJBJBJBJBABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBABABABABABABABABAAJBAAABJBJBJBJBABABJBJBABJBJBJBJBAEAEAEAAABABABABABAAABABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABABABABAAAAAAAAAAAAAAAAAAAAJBAAJBJBJBJBJBJBJBJBAAAAAAAAAAJBAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAAAAAAAAAAAAAJBAAAAAAJBABAAAAAAAAJBAAJBJBAAJBJBJBAAAAAAAAAAAAAAAAAAAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBABJBAAAAJBAAAAAAAAAAAAAAAAABABABABABABABABABABABABABAAAAAAABABABABABABABAAEBABABABAAGCGCFCEBAEFBAAFBAAAAGBGCGCACHCHCHBAEAEAAAAHCICABHBICJCJCAEAAAEIBAAAAAAAAIBICIBJCAAAAAAAAAAAAAAJCJCJCJCJCJCJBAEAEJBJBAAABABJBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBAAACAAACAAAAMCMCMCJCJCJCLCLCLCLCJBAAACLCLCLCLCMCMCMCLCLCLCMCMCMCACMCMCMCACAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABAEAEAAAAAAAEAEAAAEAAAABCBCBCBCAEAEAEAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABABABAEABAEAEABAEAEAEAAAAAAAAJBIBJBIBIBIBJBJBJBIBJBIBIBJBJBIBJBJBAAIBABIBJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEAEAEABABABABAAAAAAABABAAABIBIBJBJBIBIBIBJBJBIBJBJBJBJBIBIBIBIBJBJBIBIBJBIBIBJBJBIBJBIBIBIBJBJBAEJBIBIBJBIBJBJBIBAAAAAAJBIBJBIBIBJBJBIBABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEABAAAAAAAAAAAAAAAAAAJBJBAAAAAAABABABABABAAAAAAAAAAABABABAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABJCABABJCJCJCJCJCAAABAEAAAAIBIBABIBIBABAAAAIBAAABAAAEAEAAABAAABAAHBAEIBAEAEAEAEHBJBJBAAHBABABABABABHBIBIBABABIBACJBACACACACACJBIBIBIBIBAAABABAAAAAAAEAEIBJBJBJBHBIBHBHBHBIBABABABAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBJBJBJBJBAAAAAAABJBABJBJBJBAAJBJBJBABJBJBAAAAJBJBJBJBJBJBJBJBJBJBJBJBJBAEJBJBAAJBJBABJBAAJBJBABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAJBJBJBJBAEAEJCJCICAEAEAAAAAAAAABAAJBIBJBIBJBJBIBJBJBJBJBJBJBJBJBJBJBJBJBAEAEAAMBJBJBJBJBJBJBJBJBMBJBJBJBJBJBJBAEJBAEAEMBJBJBJBJBJBJBJBAEAAAAAAAAAAAAAAAAAAAAAAAAAAHBAAAAABABABMBJBJBJBJBJBJBJBJBAEAAAAMBJBJBJBJBJBJBJBABAAAAAEMBJBJBJBJBJBJBJBMBJBJBJBJBJBJBJBMBJBJBJBJBJBJBJBMBJBJBJBJBJBJBJBABAAAAABABAAAAAAAAAAABABAAABABABABABABAAAAAAAAABABABAAABAAAEAEABABAAABABABAAAAABABABAAAAAAAAAEAEABAAAEABAAAAAAAAAAAAAAAEAEAAAAAEAAAAAAAAAAABAEAEAEAEAEAEAAABAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEABABABAEAEABABABABAEAEAAAAAAAAAAAAAAABABABABJCAEJCJCIBIBJCIBJCJCJCJCJCJCJCIBIBJCJCJCABABAEAEABAEIBABJBJBAAABAAAAAAAAJBJBJBJBAAAEAAAAAAAAAAJBJBJBJBAAAAAAAEJBAEAAAAJBJBJBJBJBJBAEJBABJBJBJBABAAJBABABADABJBJBJBAEAEAEAAABAAAAABABABABABABABABABABABAAABABABAEJCJCJCJCJCJCJCJCJCAAABABABABABABABABABAEAEAEABABABABBCBBBBAAAAAAAAAAAAAAAAAAAAAAAEAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBMBJBMBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAABAAAAABABABABABABAAABABABABAAABABABABAAABABABABABABABABABABABABABABABABABAEAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAABABAAABAAABAAAAAAAAABABABABAAABABABABABABAAABAAAAAEAAAEAAAEJBJBJBJBJBJBJBJBJBAEAEAEJBAEAEAEABABABJBAEABABABABJBJBAEABABABABJBJBBBABBBABABABABABABAEBBBBJBBBJBBBABABABJBAAABABABABJBBBBBBBBBABJBJBABAEJBJBJBABABJBABABABABJBABABJBJBJBJBJBAAJBABJBAAJBJBJBJBJBJBJBJBJBJBJBJBJBMBMBJBMBJBMBMBMBMBMBMBAAAAMBJBAAJBMBMBMBMBMBMBMBMBMBMBMBJBJBJBJBMBJBAAJBAAAAJBAAAAJBJBABJBJBAAJBJBJBJCJCJCJCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABIBIBIBJBJBJBABAAJBABABAAABAAABJBAAAAABABAAABABAAAAABABAAAAAAAAABJBAAAAAAABABAAAAAAAEAEAEDBDBDBBBAABBAAAAAAFBFBABABABABABABAAAAAAAAAAAAAEABABABABABJCJBJCJBJBAAJCAAAEABABAAAAAAABAAAAAEABAAAEAEJBJBJBAAAAAAAAJBAEABAAAAAAAAAAAAAAAAJBJBAEAAAAJBABABAAABABAEABAEABABABABABABABABABABABABABABABABABAEAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAABABAAABABAAAAAAAAAAAAAAAAAEAEABAEAEAEAEAEAAAAAAAAAAAAAAAAAEAAAAAAAAAAABAAAEABMAMAAAABAAABABAAABABABABAAABABABAAABAAAAAAAAAAAAAAAEAAABABABABABAEABABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAEAAAABBBBBBBBAAAAAAAAAABBBBBBBBBBBBABAAAAAAAAAAAAAEAAABAAAAAAAAAAAAABABABABABABABABABAEABAAAAABABABABABABAAAAAAAAAAAAAAAAAAAAAEAAJCAEJCAEAEJCJCLCJCJCABJCJCABAAJCJCJCABABLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCAAAAAAMCMCMCMCMCMCMCMCMCMCMCMCMCMCABMCABABABAEAEAEAEMCMCMCJBJBAAABABABMBMBMBAEAAAEAEJBAAAAAAAAAAAAJBAAAAABAAAAAAABABABJBAEAEAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABAEABAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAEABAEAEAAAAAAAAAAAAAAABAAAAAEAEAEAEAEAEJBJBJBJBJBJBAEAEAEAEAAAAAEAAAEABAEAEAEAEAAAAAEAEAEAEAAAAAEAEAEAEAAAAAEAAAAAAAAAEAEAAABAEAEAAABAAABABABBBAABBAEAAAAABAAAAAEAAAAAEAAAAAEABABAEAEABAEAAAAAEAEAAAAJCAAAEABLCLCLCAEAEAEAEAEAAABAAAELCABAEJCLCLCAAAAAAADAAAAAAAAAAAAACACAEABAEAEAEAAAAAAAAAAAAAAAEAEAEAEABAAAAAAAAABAEAAABAEAAAAAAAAABAAABABAAAAAAAAABAAAAAAABAAAAAAAAAALCLCAAAAMBMBAEAAAAAEAEJCJCABMBMBAAAAAAAEBBAEABAAAAAEABAEABAAAAAAAAAAAAAEAEAAAAAEAAAAAAAAAAAEABABAAAEABAEAEAEAAAEAEAEABAAAAAAAEABABAAABAEABAEAEAAAEAEAEAEABAEAEAEAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAEAAAAAAAABBAEAEAEAEAEAEBBAEAEAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABABAAAAABAAAAAAAAAEAEAAAEAAABABABABABABAAABABABABAAAAAAAAAAAAAAAAAAAAJBJBJBJBJBAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEJBJBJBAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAJBJBAAAAAAAAJBAAAAAAJBJCJCJCJCJCLCLCAELCJBABLCLCLCLCLCJBJBLCLCJBLCJBLCLCAEAAAAAAABABAALCBBBBBBLCBBBBBBLCAALCLCDBDBDBLCMCMCLBLBLBLBLBABABABABABABABBBJBBBAEABABABAAAAAAAAAAAAAAJBJBAEAEJBJBAEAEABABABABABAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAEICABAEAEAEABAAAAAEAAAAAEAAAAAEAEAEAEAEABAAAAAAAAAAAEAELCLCLCLCLCLCMCMCMCMCMCMCMCMCMCMCMBMCMCAAAAACAAAAAAAAAAAAABABAEAEAAAAAAAEAEAEABAAABAAAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABAAAEAEAAAAAAAAAEAAAAAAAAAAAAABAAAAAABBABABAEAABBBBBBBBBBABAABBBBBBBBBBBBBBBBBBABJBJBAAJBJBJBJBJBJBJBJBABAAAAAAAAAEAEAEAEJBAAJBJBJBJBAEAEJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAEAEAAABAAAAAAAAABABAAAAAEAAJBABAEAEABAAAEAAABAEABABABAEAEAEABABABABABABABABABBBBBBBABABABABABABABABAAJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAEAEAEAEAEAEAEAEABAAAAAAAAAEJBAEABABAEAEAEAEAEABAAAEAEABAAAEAEAEAEAEABAEAEABAEAAAAAAAAAAAAAAAEAEAAAAAAAAAAABAAABAEMAMAMBMBABMBMCMBMBAAMBAAMBMBABAAABAAAEAEABABABABABABABABABABABABABABABABAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAJCAAAAAAABAAABJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCAALCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCJCJCJCJCJCJCJCLCLCLCLCLCLCLCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABABABAAAAAAAAAAAAAAAAABAAAAAAAABCBCAAAAAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAEABAEAEAEAACBABAAAAAEABABABABABABABABABJBJBJBJBJBJBJBJBJBJBJBJBAEAEJBJBJBJBJBAAABJBJBJBJBJBJBJBJBJBJBAEJBJBJBJBJBJBJBJBJBJBAAAAJBJBJBJBABABABABJBABABABJBABJBJBJBABJBJBJBLBLBLBLCLBAAABAALBABABAEABLBLBLBJBJBJBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBAEAAAALBAELBLBLBLBLBAAJBJBJBJBJBJBJBAEJBJBJBJBJBJBJBJBJBLBJBJBJBJBJBJBJBLBLBLBLBLBLCLBLBLBLBLBLBLBAELBLBAELBLBABAELBLBLBAAAEAEAAAAAAAAJCJCJCJCLCABLCLCJCJCAAAAAAAEAAJCJCJCLCAEJCJCJCLCAEAEAALCLCLCLCAALCLCLCAALCLCLCLCLCLCLCLCLCAAAAAAJBJBAAAAAAAAAAAAAAJBJBJBJBJBJBJBJBJBAAAAABABAAAAAAAAAEABABABABABABABABABABABABABABABABAAAEAEAAAAAAAAAEAAAAAEAEAEAEAALBLBLBLBLBLBAEABAEAEAEAEAELBLBLBLBLBLBLBLBLBJBJBJBJBJBJBJBLBLBLBLBLBLBLBLBLBLBAAMCAAAAAALBLBLBLBAELBLBLBLBAEAAAEAEAAAEAALBLBLBLBABABABABABABABABABABABABABABAEABAAAAAEAEAAAAAAAAAAAAAAAEAAAEABABABABABABAAAAAAAEAEAEAEABAAAAABABAAAAAAAAAAAAAAHBAAABABABABAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAABAAABABABAAAAAAABAAABAEAEJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAEJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBLBJBJBJBJBJBJBJBJBJBJBJBJBJBIBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBABABABABABABAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABABABABAAAAAEBBBBBBBBBBBBLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBAAAAAAAAAAAAAABBBBBBBBBBBBBBAAAAAALBLBLBLBLBLBLBLBLBLBLBAELBAAAALBLBAALBLBLBAALBLBLBLBLBAALBAAAAAALBAAAAAAAAABAALBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABABABABLBLBLBLBLBABAEAAAALBLBLBAALBLBLBLBLBLBLBLBLBAALBAAAAAAAAAAAAAALBLBLBLBLBLBAALBAALBAAAALBLBLBLBLBLBLBLBLBLBLBLBLBAALBAALBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAEAEAEAAAAABABABBBBBAAABABABABABABABABAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALBLBAAAAAAAAAAABABAAAALBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABLBLBLBJBJBJBJBJBJBJBJBJBJBJBJBJBJBAAJBJBJBJBJBJBAALBLBLBLBLBLBLBLBLBLBLBLBJBJBJBJBJBJBLBJBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBAALBLBABLBLBLBLBAALBLBABABLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBAEABABAAAAABLBLBLBLBLBLBAAABLBLBLBLBLBLBLBLBLBABLBABABABLBAALBLBLBLBAELBLBLBLBLBLBLBAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAALBLBLBLBLBLBLBLBLBLBLBLBLBLBABABABABABLBLBLBLBLBLBLBLBLBLBAALBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABABAAABLBABABABABABABAAAAAAAALBLBLBABAAAAABAEAAAALBABLBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALBAAAALBLBAAABABLBLBLBLBABABABAALBLBLBLBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAJBJBJBJBJBJBJBLBLBAAAAAAABAEJBJBJBAAAAJBAAAEAEAAJBJBJBAAJBJBAAJBAAAAAAAAJBJBJBJBJBAAABJBJBABABABJBJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAEAAJBJBAALBABAAAAAAAEAAAAAAAALBAAAALBAAABABABABABAAABAALBAAABABABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBABBBBBABBBBBBBABBBABAAJBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBAAAAAAAAAAAAAALBLBLBLBLBLBAAAELBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABABABABABABABABABABABABABLBLBLBLBLBLBLBLBLBLBLBLBLBAALBLBLBLBLBLBLBLBAAABABABABLBABABLBAAAAABAAAEAALBLBAELBAAAAAAAEABABABLBABABABABLBABBBLBABLBABABABABLBABABABLBLBLBLBABABLBLBLBLBLBAALBLBAAAAABABABABABAELBLBLBLBLBLBLBLBLBABLBLBLBLBAEAEAEAAABABABABAEABABAAAAAEAAAALBAEAELBLBLBLBLBLBAEABABABABABAAABLBABLBLBAAAALBLBLBLBLBABLBLBLBAALBLBABLBABABLBLBEBABABABLBLBLBLBLBAELBLBAAAAABABABMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBABABABABABABABABABAAMBMBAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEABMBAEAEAAABABMBMBMBAAAAAAAAAEJCJCJCJCJCJCJCJCAAAEAAMBMBMBMBMBMBMBMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBAEAEMBMBMBJCJCJCJCJCJCJCLCLCLCLCLCLCLCMBAAAEAEAAAEAEABABAEABABABABABABABAEAEAEMBMBMBMBMBMBAEMBMBABABABABMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAAAMBAAMBMBMBMBMBMBABMBAEMBMBMBMBMBABABABABABABABABMBABABABABABABABABABMBABMBAEAEAEAEABABABABABABABABABMBAAMBAAAEMBMBMBMBMBMBMBMBMBMBMBMBAEAEMBAEAEMBMBMBMBMBMBMBAAAEAAABABABAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEMBMBMBMBMBMBMBMBMBMBAAAAAAAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBABABABABMBMBMBMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEMBAEAEABMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBABABABABABMBABABABABABAAABABABABABMBMBMBMBMBMBMBAEMBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAABAAAAABABAAAAABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAABABABABABABAEAAABAAABABABABABABABABABABABABABABABAAABAEABABABABABABABABABABABABABABABABABABABABABABABAAABABAAAEMBMBAAMBMBMBAEAEAEIBABABABABABABAAABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAMBMBAAAAMBMBMBAEMBMBMBMBMBABAAAEAEMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBMBMBMBAEAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEABABABABAEAAJBJBAAAAAAAEAAABABABABABAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEABABECECICICAEAEAEAEABABABABABABABABABABABABABAAABABABABABABABABABAAABABABABABABABABABABABDBBCECICLCAEAEAEAAABJBLBJBABABABAEABABABABABABABABAAAEABABABABABABABABABABMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBABABABABABABABABABABABABABABABABAAAAABABABABABABABABABABABABABABABABAAAAJBJBJBJBLBLBLBLBLBLBLBLBAEJBJBJBJBLBLBAELBLBLBLBLBLBAELBLBLBJBJBJBJBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBAEMBAAAAAEAEMBMBMBMBLCLCMBMBMBMBLCLCMBLCMBMBMBMBMBMBMBMBMBMBLCAAAAAAAAAEAEJBJBJBAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAAAAABAAAAAAAAAAAAAAAAABAAAEAAAEAAAAAAAAAAAAAAAAABABMBAEAAAEAAMBAEABABABABABABABABAEAEAEABAEAEAAAEAEAEAAAAAAAAAAAALCLCLCLCLCLCLCLCLCLCLCLCAEMCMCMCMCMCMCMCMCMCMCMCAEMCMBMBMBAAMBMBMBMBMBMBMBMBMBAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBCBCAAAEAAABAEABAEABABABABABABABABABABABABABABABABABABABABABABABABABABAEAAAAAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABAAAAABABABABAAABAAAAAAAAABAAABAAAAAAAAABAAABAAABAAAAAAAAABAEABABABABABAAAAAAAAAAAAAAAAABAAAAAAABAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAABABAEABAAAAAEAEABABABABABAAAEAAAEAAABABABABABABABABABABABABABABABAEAEAELBLBLBLBLBLBLBAELBLBLBLBLBLBLBLBLBLBLBAALBLBLBLBAEABAEAEAAAAAEAAAELBAELBLBLBAALBLBLBLBLBLBAAAEAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAJBJBJBJBAEJBJBJBJBJBMBJBMBMBMBMBMBMBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJBMBMBMBMBMBAEAALBLBAAAAAALBAAAEMBAEHBMBMBLBLBLBHBHBMBLBLBLBMBMBLBLBLBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBLBLBLBLBLBLBLBLBMBMBLBLBLBLBLBLBMBLBMBMBLBMBMBMBMBMBMBMBMBMBMBMBMBMCMBMCMBMCMBMCMBMCMBMCMBMCMBMCMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBHBHBHBHBHBLBMBLBLBAAMBMBMBMBMBMBMBLBLBLBLBMBMBMBLBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBMBAAAAAEAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEAEAAAEAAAAAAAAAAAAAEMBABABABMBMBAAMBAAMBAAMBAAAAAAABABAAABAAMBMBMBAAAAMBMBMBMBMBMBMBMBLBMBMBMBMBMBLBLBLBLBMBMBMBMBMBMBMBMBABABABABABABABABABABABABABABABAELBLBLBLBLBLBLBABABAALBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABAAAALBLBLBLBLBLBLBLBAALBLBLBLBLBLBLBLBABABABABAAAAAAAAABAAAAAAAAAAAEAAAAAAAAABABABAAAAAAAEAELBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABABABABAAABABABABLBAEAEAAAEABABABABABLBLBLBLBLBAALBLBLBLBLBLBLBLBAALBLBLBLBLBLBLBLBLBLBAAAAAAAAAAAAAALBLBLBLBLBLBLBLBLBAAAEAAAAAAAAAAAAAAAAAEAAAEAEAEICBCCCGCHCAAAAAEABAAAEAEAEABAEAEAEAEAAAAAAAAAAAAAEABABAAMBMBMBMBMBAEAAAEAEAAAAAAAALCLCLCAELCLCLCAAAAAEAAAAAAAAAAAAAAAAAAAAAEABAEAAAAAAAAABABABABABABAAAAAAAAAAABABABAEAEAAAEBBBBAAAAAAAAAAAAAAAALBLBLBLBLBLBLBLBLBLBAEAEAEAEAAAEAEMBMBMBMBMBMBAAMBAAAEMBJDMBJDAAABABABABABABABABABABABAAABABABAEAAABABABABAELBABLBABABABABABAAAAAAABAAABABABABABABABABABABABABABABAAAELBABLBABABABABABABABABABABAAABABAEAEABAEAEAEMBMBMBABABAAAAMBMBAEMBAAAEABABABABAAABAEAEAEMBMBMBMBAEAEAAAAAEAEAAAAAAAAAEAEAEAEAEAAAAAAMBMBMBMBMBMBAAAAAAAEMBMBMBMBMBMBAEMBMBMBMBMBMBMBMBAEAEABAEAEAEAEAEHBAAAAAAAEAEAAAAAELBAELBLBLBLBAAABAEAAAAAEAAAAABMBABMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCAEAEACACACACACAAAAAAAAJCAAJCABAAAAAAAAMBMBMBMBAAMBMBMBMBMBAAMBMBMBAAMBAAMBMBMBAAAEAEAAAEAELBLBLBAAAEAEAAAEAAAAAEAEAEAEAAAAAEBCAAAAAEAEAAAAAEAAAAAAAAAAAAAEAEAAAAAEABAELCABAEAEAEABLCABABABABABLCLCLCAEABABABABAAABABAAAEAEAEAEAEAEJBJBJBABLBLBMBMBMBMBMBMBAEMBMBMBMBMBMBMBAEAEAAMBMBMBMBMBMBMBMBMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBMBMBLBMBLBMBMBMBMBMBMBMBLBMBMBLBMBLBMBMBMBMBMBMBMBMBMBMBMBMBLBLBMBLBMBMBMBMBMBMBLBLBMBMBLBMBMBMBMBMBMBMBMBMBMBMBLBMBMBMBMBMBLBMBLBMBMBLBMBLBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBLBMBMBMBMBMBMBMBMBLBLBLBLBLBLBLBLBAAACAAAAAAABAEAEAAAAABABABABABABABABABABABABABABABLBLBLBLBABLBLBLBLBABLBLBABABABAEABABABAEAEJCJCJCAEAEAEJCAEJCJCAEJCJCJCJCJCAEJCJCAEJCAEJCJCJCJCJCJCJCCCLCLCLCLCLCLCLCLCLCLCLCLCAAJCAEJCAAJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCJCLCJCLCLCLCLCLCLCLCLCAAAAAAAALCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCJCJCJCLCJCJCJCLCJCJCLCJCABLCABJCJCJCABJCJCJCJCJCABAEAAJCLCBCAALCAAAEAEAEBCBCAAAAAABCBCBCAELCAAAALCLCLCAEAELCLCLCLCLCLCLCLCLCLCLCLCLCLCLCLCAALCLCLCAEAAAALCLCLCLCAELCAAABAALBLBLBLBAEAEMCMCMCMCMCMCAEAAMCAAMCMCMCMCMCMCMCMCMCABMCMCMCABMCMCAEABAEAEAAAEAEAEAAAAABABABABABABAEABABABMCAEAEMCMCMCMCMCAEAEAEABABABABABLBLBLBLBABAAAEABAAAAABABABABABABABABMCMCABABABAEABABABABABABABABABABLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABLBLBLBLBLBLBLBLBLBLBLBABABABLBLBLBLBLBLBLBLBLBLBLBAELBLBAAAAAAAALBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBABLBLBLBLBLBABAAAAAAAAAAAAAAAAAEAAAAAALBLBLBLBLBLBLBLBLBABABLBLBLBAELBAEAELBLBLBAEAELBLBLBLBABAELBLBLBLBLBLBLBLBLBLBLBLBLBAAAALBLBLCLBLCLBLBLBLBLBLCLBLCLBLBLBLBLBLCLBLCLBLBLBLBLBLCLBLCLBLBLBABABABABABABABABABABABABABABABABAAAAAAAAAAAAAEAEAAAAAEAAAAABABLBABLBABABABABABABABABABABABABABABABABABABABABABABABABABABABAAABABABABABAEAEAEAAAEAEJBJBJBLBJBAEAEAEAAABAAAEAAAAAAAAAAABABAAAAAEAAABABABLBLBLBLBLBLBLBLBLBLBLBLBLBLBAEABLBLBLBAELBABAEAEABAEAEAELBLBLBLBJBAEJBJBJBJBAEAEJBJBJBJBJBJBJBJBJBJBJBJBABAEABAAAAAEAEAEAAAELBMBLBLBLBAEAEAEAEAEAEJBAEJBJBABJBJBAEJBJBJBAAJBAEJBAAAEABABABABABABABABABJBJBJBJBJBJBJBJBLBLBLBLBJBAEJBJBJBAAABAAAAAAABAAAAAEAEAEAEAEAEAEAEAELBLBLBLBLBLBAALBAAAEAEAEAAABABABABABABABABAAABABABABAAAAAAAAAAAAAAAAAAAAABABABABMCMCMCMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBMBMBMBMBMBLBLBLBLBLBAAAAAAAAAALBLBLBLBLBLCAALCLBAAAAAEAAAAABAEABAAAEAAAEAEABABABABABABABABABABABABABAAABABABABABABABABABABABABABABABABABABABABABABABAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEAAAAABAAAAAAAAAEABABMBMBAEAAMBMBMBAAMBMBMBMBMBMBMBMBMBMBMBAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBABMBMBMBMBMBMBMBMBMBMBAEMBAAMBMBAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBABMBMBABMBMBMBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEABAEABABABABAEAEAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEAEAEAEAEAAMBMBMBAEMBMBMBMBMBMBAAAAMBMBMBMBMBEBAEAEAAAEAEAAABABLBAAMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCABAELBABAAAAAAABAAMBMBMBMBMBMBMCMBMBAAAAAAAAABAAABABABABABABABABABABABABABABABABABABABAAABABABABAAABAAAEAAABAEAAMBAEAAAAABAAAEAAAEAAMBMBMBMBMBMBAAMBMBMBJBABMBAAABABABABABABABABABMBMBMBMBABAAMBMBAEAEAAMBABAALCAEMBAAMBMBLBMBMBMBMBMBLBMBLBABMBMBMBMBMBLBAALBLBLBLBLCLBLBABABMCMCABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAEAAABAEMCABMBMCABMBMCMBAAMCABMBMCMBMCMBMCMBMCMBABMBMBMBMBMBAAAAAAAAAAAAAAAAABAAAAAAMBAAMBMBAAAAAAAAAAAAABABAAAEAAABABAEABABABABABABABABAAAAABABABABABABABABAAABAAMBAEMBMBABLBMBLBLBLBMCMCABLCLCLCLCLCLCLCLCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEABABABABAAAAAEABABABABABABABABAEAEAEAAABABABABABABABABABABABABABABAAAAAAAAAAMBAAABAAAEABAAABAAAAAAAAAAAEAEAEAAABAAABAAAAAEAEAAABAAABAAABAAABAAABAAABAAMCABAAABAAAAAAAAAAAAAAAAABLBABABJCAALCAALCABLBLBLBLBJBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAABABABABABABAEABAAAEAAAAABLBLBLBLBAAAEABAAABABAAABAAAEAEABABABABAEAAAAAAAAAEMCAAAAABABABABABABJBABLBLBLBLBLBLBLBLBAAAAAAAAAAAAAAAAAAABABAAAAAAAAABAAAAAAAAAAAAABABAAABABABABAAABABAAAEAEAAABABAABBAAAABBAABBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBMBMBMBMBMBAAAAAAAAAAAAAAMBMBMBMBMBMBAEABABABABAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAABAAABAEAEAEAEAAAAAEAAAEBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAAAAEABAAABAAAAABAEAAAAMBMBABABMBAAAAAEAAAAABABABABABAEAEAEAEAAAAAAABABABABAAAAAEABAEAEAEAEAEAAAAAEAAAAAAAEAAAAAEAEAAAEABAEAAABAEAEAEAEAEAEAEAEABABAAABAAAEAEAAMCAEABAAAEAEAAAEAAABABABABABAAAAABAAABAAAAABABAAAAAAABABABABABABABABABABABABABAAAAAEAEABAEAAAAAAAAAAAALCABAEABAAAAAAAAAAABADABAAAAAEAEABAEMBMBAAAAAAAAAAAAAAAAAAAEMBMCABMBMBAAAAAAMBAAAAMBMBMBAAAAABAAAEMBABABABAAAAEBEBEBEBEBEBAAEBAAEBAEEBEBEBEBEBEBEBAAEBEBEBEBEBEBEBAAEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBAAAAAEAEMBMBMBAEMBAEMBMBMBAAABAEMBABMBAAAAMBMBMBMBMBAAAAMBMBABAEABAEABAEAEABABABAAAAMBAAAAAAAEMBAEMBMBMBMBMBMBAEMBMBMBMBAEAEAEAAAEAEAEAEAEAEABAEABAEAEAAAEAEAAMBAEMBMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAEMBMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAEAAAEMBAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAAEAAAAAAAAMBAAAAAAAEAAAAMBAAABAAAAAAAAAAAAAAMBMBMBMBMBMBMBAAMBAEMBMBAAMBABMBMBMBMBMBMBMBAEAEAEAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBMBMBMBAAMBMBMBAAAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEAAAAAAAEAAAAAAAAAAAAMBAAAEAAAAMBAEMBAAAAAAAEAAAAMBAAAAAAAAAAAAAAAAAAAAMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBAAAAAAAAAAAEAAAAAAAAAEAEAEAEAAAAAAAEAEAEAEAEAEAEAEAEAEAEABAAAAAAAAAEAEAAAAAAAAAAABAEAAAEAAAAMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAEAAAAAAAEAEAEAEAAABABAAAAAAAAAAAABCAAAAAEAAAEABAAAAAAABAAAAABMBAEAAABABMBABABABAEAEABAAABAELBAEAAAAAAAAAEAEMBMBMBMBMBAEAEAEAEAEAEAEAEABABABABAAAAAEAEAEAEAEAEABAAAAAAABAEAEAEAEABABABAAAAAAABABABABAAABAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAABABABABAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABAAAEABABAAABAEABABAAMBMBABABABABMBMBMBMBMBAAABABABAAAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAABABABABABAAAAAAAAABMBMBMBMBAEABABABAAAAAAAAAAAAAEAEAAAEAEABMBAAAEAEABAAAEAAAAAAAAAEAEAEAEAAAAAAAAAAMBMBAEAAAAAAAAAAAAAAABAAAAAAAAAAAAABABAAAEAEAAAAABABABABABABAAAAAEAEAEAEAAAAAAAEAEABABABAAAAAAAAAAAAACACAEAEAAAAACACBBAAABAAAEAEAAABAEAEAEAEABAEAEAEAEAEAAABAEAEABABAEAEAEAEAEAEAENBNBIBAEAAAAMBMBPBMBMBPBAAAAAAAAAAAAAAAEAAAAAEAAMBMBMBMBMBMBMBMBMBAAABABABABMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBAAMBMBMBMBMBMBMBMBABABMBMBMBMBMBAAMBMBMBMBMBMBMBMBMBAAABAAAAAAAEAEAEAEAEEBMBMBMBMBMBMBMBAEAEAEAEAEMBMBMBMBMBMBAEMBAEAAAAAAAAAEAEAEABAEAAAEAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAMBAAMBMBMBABMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMCMCMCMBMBMCMCAEMBMCMBMCMBMCMBMCMBMCMBMCMBMBMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAAAAAAABAEGBGBGBGBGBAEGBGBIBIBABABMBMBMBMBMBMBMBMBMBMBMBMBMBAAMBMBMBMBMBMBMBMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABMBMBMBMBABAEAAAEABAEABAAACAEABMBABMBMBAEACABABABAAAAAAAAAAABAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAMBMBABABAAAAAEAAAAAAAAAAAAABMBMBMBAAMBMBMBAAMBAAAAAAAAMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBABABABABABAAABAAAAAAAAABABABABAAABAEAAAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEAEAEAEAEMCAEAEMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABAAABABABABABAAABIBAAAAABABABAAAEABABABABABABABABABABABAAAAABABABABAAAEABAEAEAEAAAAAEAALBLBLBLBLBLBLBLBLBLBLBLBAEAEAEAAAEAEAEAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAABAEAEABAEAELBAAAEAEAELBLBLBLBLBLBLBLBLBLBLBMBAEAEAEAAAEAAAEMBMBMBMBAEAEAEAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEABAAABMCAAAAAAAAAEAAAEABAAMBABAAAAABABABABABABABABAAAAAAAEABAEAEAEAEAEABAEABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBMBMBMBMBMBMBMBMBMBAEMBAAMBMBMBMBMBMBMBAAAEAEMBMBMBAEMBAEMBMBMBMBAEMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBMBAEMBMBMBMBAEAEABAEAEAEAEABAEAEAEAEAAAAAAAEAAAAAEAEAEAEAEAEAEABAEAEAEAEAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEAAAAAEAAAEAEAEAAAEAEAEAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABMBMBMBMBMBAAAAABAAAAAAAAAAAAAAAAAAABABABAAAAAAABABAAAAABABAAAAABABABABAAAAAAAAAAABAEABAEABABABAEAEABAEABAEAEAAAAAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEABAAJBAEAEAEABABAEMBMBMBAAAAAAAEAEMBMBMBAEABABABABABABABABABABABABABABABABABABAAABAAAAAAABAAABABMBABABMBABMBMBABABABABABABABABABABABABABABABABABABABABABABABAAAEAEAEAEABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAEABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABAEAAAEAAAEAEAAAEABABABAEAEAEAEABABABABABAAABAAABAAABABAEABABABAAABAAABMBAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABNBNBNBNBNBNBNBNBNBNCNCLCABNBNBNBAENBNBNBNBNBNBNCNCNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNCNCNBNBNBNBAAAAAAAAAAAAAAAEAENBNBNBNBNBNBNBNBNBNCNCNCNBNBNBNBNBNBABNBNBNBNCNCNCNBNBNBNBNBNBNBNBNBNCNCNCAAAEAENBABNBNBAANBNBNBNBNBNBNCNCNCAAAEAEAEAEAAAEAAAEMBMBABABABABABMBAEMBMBAEAEAEAAABAEAAAEAAAAAAAAABABAEAAAAAAAAABAAAEAEAAABABABABAAMBAEAAAEAEAEAEAAAAAAAAAAAAAEAEABABABABABABABABABAAAAAAAAAAABABABABABABABABAAAAAAAAAEAAAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAABAAAAAEAEABAEAAAEAEAEAEAAAAAENBNBNBNBNBNBAENBNBNBNBNBAENBNBNBNBNBAANBNBAENBNBAENBNBNBNBAAAEAENBAANBNBNBNBNBNBAANBNBAENBNBAAAAAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBABAEAENBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAAEAAAEAEAAABAAAAAAAAAAAAAAAANCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCNCNCNCNCNCNCOCOCOCOCOCOCOCOCAEAEAEAEAEAEAEAEAEAEAEAEABAEAEAEAEABAAABAAABAEABAAAAAEAEAEAEAAABAEAAAEAEAAAAAAAEAEABABAEAEABAEAEAAAEAEAEAEAAAEABAAAAAAAAAAAEAEAAAAAAAAAAAEAAAAAEAAAAABAEAAAAAEAAAAAAAEAAAAAAAAAAAAAAAEAAAAAEAEAEAAAAAAAAAEAEAEAEAAAAAAAEAEAEAEAEAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAEABABAEAEAEAAAEADADAEAENBNBAEAAAENBNBAENBAEAEAANBNBNBNBNBNBNBNBNBNBNBAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAENBNBNBABABAANBNBNBNBNBNBNBNBNBNBNBNBAAAEAEABAAAANBNBAAAAAAAAAAAANBAANBNBNBNBNBNCNCNCNBNBNBNBNBNBNBNBAANBNBAANBNBNBNBNBNBNCNBNCNCAANBAENBNBAENBNBNBAEABABAENBNBNBNBNBNBAENBNBNBNBNBNBAENBNBNBNBNBNBNBAENBNBNBNBNBNBNBNBNBAENBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBAENBNBNBNBNCNCNCAENBNBNBNBNBNBNBNBNBNBNBNBNBAENBAENBAAAAAAAAAAAANBNBAAAANBAAAAAAAAAENBNBNBNBNBNBNBNBNBNBNCNCNCAAAAAAAENBAAAEAEAAMBMBAEAAAAAAAANBNBAEAENBNBAANBAAAANBAAAAAAAANBNBNBNBNBBCNBAAAAAAAAAAAANBAAAANBNBNBAAPBPBPBPBAENCNCNCNBNBNBNBNBNBNBNBAENBAENBNBNBPBPBPBPBNBNCNCABAEAEAAAENBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAENBNBNBAENBNBNBNBPBNBPBPBPBNCNCNCAEAEAEAAAEAEAAAAPBNBNBNBNBAENBNBNBNBNBABAAAEAEAENBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAENBNBNCNBNBNBNBNBNBABABAEAEAAAEAEAEAEAEAEAAAAAAJBABAAAENBNBNBNBNBNBNBNBNBNBNBAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAABAAAAABAAABAENBNBNBNBNBNBNBAEAEPBPBPBPBNCNCNCNBNBNBNBNBAANBNBNBNBNBNBNBNBAENBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBPBNBNBNBNBNBPBPBPBNCAEAEAENBNBAENBNBNBNBNBNBNBNBNBNBNBNBNBAAABABNBNBNBNBNBAENBNBNBNBNBNBAENBNBNBABNBNBAANBNBNBNBNBNBAEABNBNBNBABAENBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBABABABABABABABABABABABABAEAEAEAAABNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAAANBNBNBNBAEAEAENBAENBAANBNBNBNBAAAAAAAAAAAANBNBNBNBNBNBAANBAANBAENBAAAEAEAEABAENBNBNBAEAEAAAAAEAEAAAAAAAAABNCAAAANCNBNBNBNBNBAAMBABABAAAEAAAAABAAABAEAAAAAAAANBNBNBNBNBNBNBPBPBAEPBPBNCNCNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBPBPBPBPBNCNCNCNBNBNBNBNBNBNBNBNBNBAANBAEAEAAABAENBPBPBPBPBNCNCNCAANBABAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBPBPBPBPBNCNCNCAAAAAAAAAAAAAAAEAEAAABABNBAANBNBAENBNBABAANBNBNBNBNBNBAENBNBNBNBNBNBNBNBABABAAABABAEABNCNCNCNCNCNCNCABNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCPBNCNCNCPBNCNCPBNCNCNCNCNCNCPBNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNBABABNCNBNCNCNCNCNCNCNBNBABABABABAEAAABAAPCABAAAAAANBNBNBNBNBNBNBNBNBNBNBNBPBPBPBPBNCNCNCABABNBNBABABABAANBNBNBNBNBNBNBNBNBNBAEAAAEAEAEAEPBPBAAPBAEABNCNCNCBBBBBBBBBBBBABABABABABABABABABABABABAEAEAEAEAAAAAAAAAAAAAEAAAEAEAAABAAABABABAEAEAEAEAAAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBABNBNBNBNBNBNBNBNBAANBNBNBNBNBNBNBAANBAANBNBNBNBAAAAAAAAAAAANBNBACAENBNBNBNBNBAAAAACNBNBNBNBNBNBAEAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAEABNBABNBAENBNBNBNBNBNBNBNBNBNBABABABABAAAANBNBNBNBNBNBNBNBNBMBNBNBNBNBNBNBNBNBNBNBABNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAAANBNBNBAAAANBNBNBNBNBNBNBNBACNBNBNBABNBNBNBABAAAAAANBNBNBNBNBNBNBNBNBNBNBNBAANBNBNBAANBNBNBNBNBNBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABABAAAANBABABABABABABABAANBAANBAAAAAAAAABABAEAAAAAEAAAAAAABABABABABABAAAAAABCAEABABPCAEAEAEAEAAAAAEAEAAAEAEAEABABABABABABABABABABABABACAAAEAAABAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBABABAAAAAAAAAAAAABABABAEABAEAAABAAABNCNCNCNCAAAAABAAAAABABABACNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCAANCAAAAAAAAAAAAAAAANCNCNCNCNCNCNCNCNCNCNCNCNCAAAAACAAAAAAABABABABABABABABABABABABABABAAAENBAAAAAAAAAEAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAELBAAAAAAAEAAAEBCAEAEAAAAAAAEAAAEAEAENBNBAANBNBNBNBNBNBNBNBNBNBNBAAABNBNBNBNBAEABABABABABABABAEAEAAAAABAAAAAEAEAAAEAEAEAAABAAAAAAAAAAAAAEAEAEABABABBBAAAAAAAAAAAAAAAAABABNCNCNCAAAAAAAAAAAAAAAEAEAAAAAAAAAEAEAAAAAENBAANBNBNBNBNBNBAEAEAEAEAEAEAAABAEABAEAEAEABABAAAAAAAEAEAEAAAAAEAAAAAAAAAAAAAAAAAAAAAEAAAEAEAEABAEABABABABABABABABABABABABABABABABAEAEAEAAAEAEAAAAAEAAAEAEAEAEABAAAAAAAAAEAEAEAAAEAEABAAAEAAAEAAABAEAEOBOBOBOBOBOBOBOBOBOBAAAAAAAAAAAAOBOBOBOBOBAEOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBAEOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAOBAEOBOBOBOBOBOBOBOBNBNBNBOBOBOBOBOBOBOBOBNCNCNCNCNCNCOBOBOBOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBPBPBPBOBOBOBOBPBAAAAAAAEAAABAAAEAAAEAEAEAEAEAEAEAAAEABAEAENBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAAAAEPBPBPBPBPBPBPCPBPBPBPBPBPBAAAAAAAAAAAEAAABAAAAAAAAAAAAPBPBPBAAAAAAPBAAAAPBPBPBAEPBPBPBPBPBPBPBPCPBPBAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBABPBPBPBPBPBPBPBPBPBPBAEAEAEPBAEAEPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBABAAAAAAAAPBPBPBPBPBPBPBPBPBAAAEAAAAAAAEPBPBPBPBPCPBAAAEAEAEAEAAAEAEABAAABOBAEAAAEABABAEOBOBOBOBAAOBOBOBAAAAAAAAAAAAPBPBOBOBOBAAAAAAAAAAAAAAAAAAAAAAAAAAAEOBOBOBOBOBOBPBABAEOBOBOBOBOBOBOBPBOBAAAAOBAAOBPBOBPBPBPBPBPBPBPBPBPBPBPBPBOBPBOBPBPBPBOBPBPBPBOBOBOBOBOBPBPBPBAEPBPBPBPBPBPBPBPBPBOBOBOBOBOBOBAEOBOBOBOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBPBPBAAPBOBPCPBOBNBABABNBOBOBOBOBNBNBNBNBNBNBACNBPBPBPBPBPBPBPBPBPBPBAAAAOBAEAAABBCOBBCAEAAAAAAPBPBAAPBPBPBAAPBAAPBAAAAAAAAPBPBPBPBAAAANBNBNBAAPBPBAEAEPBPBPBPBPBPBPBAAAAAAAAPBPBPBPBPBPBAAPBPBAAAAPBPBAEAAAAAAAAAEAEAEAEAEAEAEPBPBPBPBPBPBAAAAAAAAPBPBPBPBPBPBPBPBPBPBAEAEAAPBPBPBPBPBPBPBPBPBPBPBPBPBAEAEAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAEABAEAEAENBNBNBAENBNBAENBABNBAAAAAAAAAAAAAEAEAAAEABABABAAOBOBOBOBNBAANBNBNBAAAAAAAAAAAAAANBAEAAAAABAEAEAEAEAEAEAAAEPBPBPBPBAAPBOCOCNCNCNCPBABPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBAAAEAEAEAEAAAAAAAAAAAAAEAEAAAAAAAAAAAAAAPBPBPBPBPBPBPCPBPBPBPBPBPBMBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBABOBOBOBOBABOBOBOBOBOBOBOBOBAAOBBCBCAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBAEAAAAPBAAPBAAAAPBPBAAAAAAAAPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPCPBPBPBPBPBPBPBAAPBPBPBAAPBPBAAPBPBPBPCPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBAAPBPBPBPBPBPCPBPBPBPBPBPBPBNBNBNBNBPBNBPBPBPBPBPBPBPCPBPBPCPBAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPCPBPBPBPBPBNBLBAAAAAAAAAAAAAAPCPBAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAABAAAAAAAEPBPBAEPBPBPBPBPBPBAAPBPBPBPBPBPBAAPBAAPBPBPBPBPBPBPBPBPBPBPBAEPCPBPBPBPBPBPBPBAAAAAAPBPBPCABABABABABPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPCPBABABAAAAAAAAAEABAAAAPBAAPBPBNBPBABPBPBPBPBPBAAPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAPBAAPBAAPBPBPBPBPBPBPBPBAEPBPCPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBAEPBPBPBPBPBABPBAAAAAAAAAAAEABPBAEAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEAEAEABAAAEAAAAAAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAABAANCNCNCNCNCNCNCNCAEAAPBPBPBPBPBPBPBPBAEAAPBPBAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAENCAEAAAEAEAEPCPCPCPCPCPCPCPCPCPBPBAEPBPBPBPBPBPBPBABABAANBNBNBNBAAAAAAAAAAAAAAAANCAAAAAAAAAAABAAABAAABABABABABABABABABABABABABAAAAAAAAAAAAAAABABABAAABABABABABABABABABAAAAAAAAAAAAABABABABABABNBABABABABABABAAAAAAAAAAAAAAABABABAAABABABAAABABABABABABAAAAAAAAAAAAABABABABABABABABABNCABNBABABAAAAAAAAAANBAAABABABABABABAAAAAAAAABABABAAAAAAAAAAJCAAAAABAAAAAAAAAAABABAAABAAAAAAAAAAAAAAAAAAAEABAAAAAAAAAAAAABABABAAAAABABABABAAAAABABABABAAAANCOCAEAAAEAEAANCNCNCOCOCOCOCOCOCOCOCABABABABAAAAABAAAAAEAEABABABABABABABAAAAAAAAABABAAAAABABABABABABABABAAAAAAAAABABABABAAAAABABABABAAAAABABABABABAAABABABABAAAAAAABABABABABAAAAABABABABAAAAABABABAAAAABABABABAAAAABABABABABAAAAABABAAAAAEABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABABAAAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCNCNCAENCNCAAAAABNBABABABAANCNCNCNCAEAEAEABABABABABAAAAABABABABAAAAAAAAABABABABAAAAABABABABAAAAABAEABAAAAAAAAAAPCABABABABABABAAAAAAAAAEAANCNCNCNCNCNBNBNBNBNBABABABABABABAEABABAAAAABABABABAAAAABABABABAAAAABABABABAAAAAAAAAAABABABAAAAABABABAAAAABABABAAAANCNCNCNCNCOCAANCAAAAAAAAAAAAAAAAAAAAAAPCAEAAAEAAAEAANCAEAAABABABABABABABABABAAAAABABABABAAAAABAAABABAAAAABABABABAAAAABABABAAAAABABABABAAAAAAABABABAAAAABABABABAAAAABABABAAAAABABABABAAAAABABABAAAAAAAEAAAAAAAEAEJBAANCNCNCNCNCNCNCNCNCNCNCNCNCNCAAAEAAAEAEAEAAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPCPCAAPCPCPCAAAEPCPCAEPCAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAAAEAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAAAAAAAANCNCAENCNCAAAANCNCNCNCNCAANCAAAANCAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCOCOCOCAAOCOCOCOCAANCNCNCABAEAEABABABABABABABABABABABABABABABABABABABABABABABABAAAAABAAMBMBMBMBABABAAAAAAABACACACACAAAAAAAAAAAANCNCPCPCAAAEAAAEAEABABAAAAABABAAAAABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABABABABABABAAAAABABABAAAAABABABABAAAAABABABABAAAAABABABAAAAABABABABAAAAABABABAAAAABABABABABAAABABABAAABABABABAAABABABABABABABABABABABABABABABAAAAABABABABABABABABABABABAAABAAABABABABABABABABABAAABABABAAAAABAAAAAAAAAAAAAANBAAOBOBOBOBOBOBOBAAABABABAAAAABABABABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANBNBABABABABNBNBAANBNBNBABABNBABABABAAAAABABAAAAABABAAAAAENBNBNBABABABABABABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABABABAAAAABABAAAAABAANBNBABABAAAAABABABAAAAABABABAANBAAABABABAAAAABABABABAAAAABABABABAAAAABABABABAAAAABABNBABABAAAAABABABABAAAAABABABABAAAAABABABAAABAAAAABABABABAAAAABABABABAAAAABABABABAAAANCNCAAAAAAAAAAAAAAAANCNCNCNBAEAEABABABABAAAAABABABAAAAABABABABABAAAAABABABABAAAAABABABABAAAAABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAANCNCAAAAAAPCPCPCPCAEAEAEAEAEAEABPCABPCABABABABAAAAAAAAABABABAAABAAABABABABABAAAAAAAAAAABAAAAAAABABABABABAAABABABABABABABABABABABAEAEAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABAEAAABABABABAAAAABABABABABABABABABABABABABAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAAEABABABAAAAAEAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABAAAAABABABABABABABABABABABABABABABABABABABABABABABABABAAAAABABABAAAAABABABAAAAABABABAAAANCNCNCNCNCNBABABABABABABAAAAABABABABAAAAABAAAAABAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABAAAAABABABABAAAAAENBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANBAAAAAAAANBAEAAAAAEAEABABAAAAAAAAAAAAAAAAAAPCAAAAAAAAAAAEAENCABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAAAEAEAEABAAABABABAAAAABABABAAAAABABABAAAAAEAAABABABAAAAAAAAPCAAAEABABABABAAAAABABABABAAAAAAABABABAAAAAAABABABAAAAAAABABABAAAAAEAEAAAAAAAAAAAAPBPBPBPBPBPBPBABABABABABAAAAABABABAAAAABABABABAAAAAAAAAAABABABAAAAABABABAAAAABABABAAAAAAAAAAAAABABABAAAAABABABAAAAABABABAAAAAAAAABABABAAAAAAABABABAAAAAEABABABABABABABABABABABABABABABAEAAPCPCPCPCPCPCABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEABABABABABABABABABABABABABABABABABABABABAEAAAAABABABABABABABABABABABABABABABABABABABABNCNCNCNCNCNCNCNCNCAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANBAANBNBNBNBAANBNBNBNBAEAEAAABAAAEAAAAAAAAAAAAAEAEAEAEOBOBOBOBOBOBOBOBOBOBOBOBAEOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAEAEAEAEOBOBOBNBOBOBOBOBOBOBABABABAAAAAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAEOBOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAPCPCPCPCABABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAABMBABMBMBABABMBMBABABMBMBABABMBAEPBAAAAAAABABAAAAAAABAEAEAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENCNCNCNCNCABABAEAEAEAEAEABAEAEAEAAAAAEAEAEABAEAAAEABABABABAEAENBNBNBNBNBNBAENBNBAEAANBNBNBNBAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAANBNBAANBNBNBNBOBAAAENBNBNBNBNBNBNBAEAEAAAEAEAAAAAAAAAAAAAEAAAAABAEAAAAAAAAAAAAAAAAAEAEAEAEABAENCNCNBNBOCOCNCNCNCNCAANCNCNCNCAENCNCNCNCNCNCNCAAAAAEAENCAENCAEAEAENBNBNBNBNBNBNBNBNBNBNBAEAEAEAEAAAAAAAAAAAAAEAEABAAABABABNBNBAAABNBNBNBNBNBAEAEAAABABABABAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABAAAAABNBAAAAAAAANBAAAAAAAANBAAAAAAAAAAAAAAAAAAAAAANBAAAAAAAAAAAANBAAAAAAAANBAAAAAAAAAAAAAAAAAAAAAAAAAANBNBNBNBNBNBNBNBNBNBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCNCNCNCNCNCNCAEAENCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCPCPCPBPCABAAAAAAAAAAAAPCABABABABAANBNBAAAAAAAAPCNCAAPCABAAAAAAAAAAAAAAABABPCAAABNCABPBAAPCAAABABABABABABABAEABAEAABCABABAAAAAAAAAAAAAEAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBABAAAAAAAAAAAAAAAEPCPCAEAEABABAAAAPCAAAAAAAAAAAAAAAAPCPCPCPCPCPCPCABPCPCPCPCPCPCAAABAAABAAAAAAAAAAAAAAAAAEAEAEPCPCPCAAAEAEAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAABAAAAAABCBCDCDCAAAAFCFCAEHCHCAEJCJCAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAAAEAAAAAAAEABAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAEPBAEABAAAAAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAAAAAAAAAOBOBOBOBOBNCOBOBOBNCNCOBAAAAAANCNCOBOBOBOBABOBOBOBOBOBOBOBOBOBAAOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBOBAAABABABABABABABAAABABAAABABABABAAAEAAAENCNCNCNCNCNCNCOBOBOBOBOBOBOBAEAEAAABAAPBPBPBPBPBPBPBPBPBAEPBAAPBAEPBPBPBPBPBPBPBAEAEPBABNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAEAEABABABABABABABAAABABABABABABNBABABAAABABABAAABABABABABAAABAAAAABAAAAABAAAAABAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAABABABABABABABAEAAABABABABABABABABABABABABABAAAAAAAAAAAAAAABABABABAEAAAAAAAAAAABABAAAAAAABAAABABABAAABABAAABABABABABABABABABABABAEAEAEABABABABABABABABABABABABABABABABABABABAAAAAAAAPCNCAEDCABDCABFCFCFCAEABAEABABABABAAABABABABAAAAABABAAAAAAABABABABABABABAEABABABABAEAAPCPCPCABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAABABABABAAAAAEABABAEABABAEPCPCPCPCPCPCAAAAAAAAAAAEAEAEABABABAAAAAAAAAAAAAAAAPBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAAAAANBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBNBAAAAABABABABABABABABAAAAAAAAAAJBABABABAAAEAEABNCNCNCAANCNCNCNCNCNCACACACAAAEAAABAAAAAAAAAAAAABABABAEAAAAAAAAAAAAAAAAABABABAEAAAEAEAEAEAEAAAAABABABABABABABABABABAAABABABAAABAAAAAAABABPCNCAAAAAAABABABABABABABABABABABABABABABABABABABABAEABABABABABABABABABABABABABABABABABABABABABABABABAAABABABABABABABABABABABABABABABAAAAAAAAAAAAAEABAAABAAABABNBABABABABABABNBNBNBNBNBNBNBABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAEAEAAAEAAAAAEPBPBPBPBPBPBAAPBPBNCNCNCNCNCNCNCNCNCNCNCNCAAAAAANCNCNCAANCNCNCNCABABNCAAAAAANCNCNCAAAAAAABABOCAEAAAAABNCAAABABAAABAAAAAAABABABAAAAAAABABABAAAAAAAAAAIBNCAANBNBNBAAABAANCNCNCAAAANBNBNBNBAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABAAAAABAEAEABABABABAAAAAAAAAAABABAEABAAAAAEAAAEAEABABABAAAAAAAAABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABAAAAAAAAABAAAAAAAAAAAAAAAAABABABABABAAAAAAAAAAAAABABABABABABABABABABABABABABABABAAAAAAAAAAAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBAAPBAAABABABABAAAEAAAAMBAAPCAAAAAAPCPCABABPBPBAAABABAAAAAAAAAAABAAAAAAPCPBAEAAAAAAABAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABAEAAAAAEAAABAAAAAEABABABABABABABAEAAABABABAAAEAAAAAEAAAEAAAAAAAAAAABAAABABABABABABABABABABAAAAAAAEAAAEAEAEAEAEAEAEAEAEBBABABAAAAAAAAAAAEAEABAAAAABAAHCAAAAAAAAABAEABAAABAEABAEAAAAABAAAAAEAAABABPBPBPBPBPBAAAEAAAEAEAAPCPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPCPBPBPBPBPBPBPBPBPBPBPBPBAAAEAEAAAAABABABPBPBPBNBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBNBNBNBNBNBPBPBNBNBPBPBNBPBPBPBPCPBPBPBPBAAAAAAAAABABABABABNBNBNBNBPBPBPBAAAAAAAAABPBAAAAAAAAAAAAAAAAAAPBPBPBNBNBPBNBPBNBPBNBPBNBNBNBNBNBNBNBPBNBPBPBPBPBPBABABABPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBAAAAAEABAAAEPBPBPBPBPBPBPBPBAAPCPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPCAEPBPBPBPBAEPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPCPBPBPBPBPBPBAAAAAAAAPBPCPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBAAABPBPBPBPCPBABPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAPBPBPBPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCAEAEPBAAAAAAABAAAAABABABABABABABABABABPBPBABABABABABPBABABABAAPBAAAAAAAAAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAABAABCDCAAFCACHCABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAPBAAPBAAAAAAAAAAAAAAAAAAPBPBPBAAPBPCAAPBAAAAPBPBPBPBPBPBPBAAABPBPBPBPBPBPBPBPBPBPBPCABABPBPBPCAAPBPBPBABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACABAAAAAAAAAAAAAAAAAAAEAAAEAEAEAAAAAEAAAAAAAAABAAABAAAAABABAAAAAAAAAANCNCNCNCNCNCAEAEAEAEAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBNCNCNCNCNCNCAEAAABABPCABAAAAABPBPBPBPBPBPBPBPBPBPBPCABPBPBABAAAAAAAAAAAAAAPBPBPBAAAAAAPBPBPBPBABAEAAAAAAAAAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPCPBPBPBPBAAPBPBPBPBABABABPBPBAAPBAAPBPBPBABABABABABABABABABABABABABABABABABABABABABABABABPBPBPBPCPBAAAAAAAAAAPBABAAAAAAAAPBPBPBNBNBPBNCNCPBPBAAAAAAAAAAAAAAAEABABPBPCPBPBPBPBPBPBPBABPBPBAAPBPBAAPBPBAAABPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBABABAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBABABPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAPBPBPBAAABABABABAAAAAAABAAABABABPBAAPBABPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBABPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBABPBAAAAPBPBAAAAAAAAAAAAPBPBPBPBNCAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBABBBPBPBAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAEAAAAAAAAAAABAAAAAAAAAAAAAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABAAAAABABABABABABABABABABABABABAAAAAAAAAAAAAAAEAAAAABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAEAAAAAAABABABABABABABABABABABAEAAAAAAAEAAAAAAAEAAAEAAABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAEABABAAPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBABPBPBAAAAAAAAPBPBAAPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBAAAEABABAEABABABAAAAABABABABABABABABABAAAAAAAAAAAEAAAAAAAEAAAEAEAEAAAAAAPBPBPBAAAAAAAAAEAAAAPBPBPBPBPBPBPBAAPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBAAPBPBPBPBPBPBPBPBABABAAAAPBPCPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAPBAAAAAAAAPBAAAAPBPBPBPBPBAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBABABPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBABPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBABABPBPBPBABABPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBPBPBPBPBPBPBABPBPBPBPBPBAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAABAAAAAAPBPBPBPBPBPBPBPBPBPBAAAAABABABPBPBPBPBPBPBPBPBPBPBPCPCPCPCPCPCPCPCPBPCPCPCPCPCAAPCPCPCPCPCAAPCPCAAAAAAPCAAAAAAAAAAAAPCPCAAPCPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAPBAAPBPBPBAAAAPBAAAAPBAAAAAAAAAAAAAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBPBPBPBAAAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAAAPBPBPBAAPBPBAAAAAAPBPBPBPBPBAAPBAAAAAAAAAAAAAAAAAAAAPBAAPBPBPBPBAAAAAAPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAPBPBAAPBAAPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAPBAAPBAAPBAAPBAAPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBPBAAAAAAAAAAPBAAAAAAPBPBAAPBAAPBPBAAPBAAPBPBAAAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAPBAAPBPBAAPBAAPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBAAAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAAAPBPBAAPBPBPBPBPBAAPBPBPBAAAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAAAPBPBPBPBPBPBPBAAPBPBPBPBAAAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAAAPBPBPBAAPBPBPBPBPBPBPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAPBPBAAPBPBAAAAPBPBPBPBPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAAAPBAAPBPBAAPBPBPBPBPBPBAAAAPBAAAAAAAAAAPBPBPBAAPBAAPBAAAAPBAAAAAAAAAAAAAAPBPBPBPBAAPBAAPBPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAPBPBPBPBPBAAPBPBPBPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAAAPBPBAAPBAAAAPBPBPBAAPBAAAAPBAAAAAAAAAAAAPBPBPBPBAAPBAAPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBAAAAAAAAAAAAAAAAPBAAAAPBPBAAAAPBAAPBAAAAPBAAPBPBPBPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAPBAAPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAAAPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBAAPBAAPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAAAPBAAAAPBAAAAAAPBAAPBAAAAAAPBAAPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAPBPBAAPBAAAAAAAAPBPBPBPBAAPBAAAAPBAAAAAAAAAAAAAAAAAAAAPBAAAAPBAAPBPBAAPBAAAAPBPBPBPBPBAAAAPBAAAAAAAAAAAAAAAAAAAAAAAAPBAAPBPBAAPBAAAAPBAAAAAAAAPBPBPBPBPBPBPBPBPBPBAAABAAAAAAABAAABAAABAAABAAABAAABAAPBAAPBAAPBAAPBAAPBAAPBAAPBAAAAPBPBPBPBPBPBPBAAABAAABAAAAAAPBAAPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBPBPBPBPBPBPBPBPBPBAAAAAAPBPBAAPBPBPBPBPBAAAAPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAABAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCAAAAAAPBPBPBPBPBPBPBPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + +----------------------------------------- + +function Atr_GetBonding (itemID, vpstr) + + if (itemID == nil) then + return 0; + end + + -- temp patch for feasts + if (itemID == 43015 or itemID == 34753 or itemID == 43480 or itemID == 43478) then + return 0; + end + + + if (vpstr == nil) then + vpstr = gAtr_MI; + end + + local bonding = 0; -- doesn't bind + + local x = ((itemID-1) * 2) + 2; + + if (x <= string.len (vpstr)) then + + local s = string.sub (vpstr, x, x); + + bonding = zc.dec64 (s); + end + + return bonding; +end + +----------------------------------------- + +function Atr_DEReqLevel (itemID, vpstr) + + if (itemID == nil) then + return 0; + end + + if (vpstr == nil) then + vpstr = gAtr_MI; + end + + local reqlevel = 0; + + local x = ((itemID-1) * 2) + 1; + + if (x <= string.len (vpstr)) then + + local s = string.sub (vpstr, x, x); + + local val = zc.dec64 (s); + if (val == 1) then + reqlevel = 1; + else + reqlevel = val * 25; + end + end + + return reqlevel; +end + +