diff --git a/_locales/bg/controls.json b/_locales/bg/controls.json new file mode 100644 index 0000000..e86515a --- /dev/null +++ b/_locales/bg/controls.json @@ -0,0 +1,54 @@ +{ + "noreload": "No inventory reloading when sell item", + "quickbuy": "Бързо Купуване", + "reloadinvent": "Презареждане на инвинтара (alt + R)", + "selectitem": "Пордаване на мулти артикули", + "selectall": "Select all", + "cancel": "Отмени", + "sell1item": "Продаване на 1 артикул", + "sellnitem": "Продай всички $1 артикули", + "quicksell": "Продай бързо за $1", + "buymissing": "Купи липсващи части", + "autoaccept": "Автоматично приемане", + "autoadjust": "Автоматично нагласяване на цена", + "historynoselect": "Select item", + "queue": { + "removeitem": "Премахни от опашка", + "removelower": "Премахни по-ниски", + "removehigher": "Премахни по-високи", + "removeintrade": "Remove in-trade", + "removeequipped": "Remove equipped", + "takelower": "Take lower", + "takehigher": "Take higher", + "emptyprice": "Remove no price" + }, + "sort": { + "sortitem": "Сортирай артикули", + "price": "Цена" + }, + "tradingcards": { + "buyall": "Купи висчки", + "reload": "Презареди списък", + "dialogtitle": "Купи липсващи карти", + "showpopup": "Покажи диалог за купуване на карти" + }, + "tradeoffers": { + "removeall": "Премахни всички", + "takeall": "Вземи всички", + "totalprice": "Обща сума", + "notrash": "Без боклук", + "skipintrade": "Skip in-trade items", + "noduplicate": "Без дубликати", + "noofitems": "Количество артикули", + "recount": "Преброй", + "youritems": "Вашите артикули", + "theiritem": "Техните артикули" + }, + "nontradable": { + "counter": "items not tradable yet", + "startdate": "First ones at", + "lastdate": "Last ones at", + "totalprice": "Total price" + }, + "contributedby": "" +} diff --git a/_locales/bg/messages.json b/_locales/bg/messages.json new file mode 100644 index 0000000..6eacdaf --- /dev/null +++ b/_locales/bg/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "Предлага много функции за общността и маркета (известия при оферти,бързо продаване, купуване, предлагане на размяна, проверяване на цените...)" + }, + "langcode": { + "description": "", + "message": "bg" + } +} diff --git a/_locales/bg/translation.json b/_locales/bg/translation.json new file mode 100644 index 0000000..699ca3c --- /dev/null +++ b/_locales/bg/translation.json @@ -0,0 +1,46 @@ +{ + "about": { + "title": "Информация" + }, + "bookmarks": { + "title": "Bookmarks" + }, + "faq": { + "title": "ЧЗВ" + }, + "langcode": "bg", + "settings": { + "title": "Настройки", + "inventory": { + "buyset": "\"Купи комплект\" бутони", + "quicksell": "\"Бързо продаване\" бутони", + "quickselldif": "Разлика при бързо продаване", + "listdelay": "Изчакване между обяви", + "simpify": "Опростяване на UI-то" + }, + "listingmarket": { + "quickbuy": "\"Бързо Купуване\" бутони", + "no_listings": "Брой на обявите", + "totalrow": "Общ ред", + "highlight": "Highlight overpriced" + }, + "tradeoffer": { + "autocheckofferprice": "Автоматично взимане на цените при оферта", + "offerdelay": "Проверка на цената на оферта през", + "custombuttons": "Персонализирани бутони" + }, + "friends": { + "ignoreinvites": "Игнорирай покани под", + "blockinvites": "Блокирай покани под" + }, + "general": { + "displaynof": "Показване на известия", + "nofsound": "Звук при известие", + "displayvector": "Покажи цена на вектора", + "showsteamrep": "Показване на Steamrep", + "currency": "Валута", + "language": "Език" + }, + "note": "Трябва да презаредите страницата за да влязат новите настроики в ефект." + } +} diff --git a/_locales/cs/controls.json b/_locales/cs/controls.json new file mode 100644 index 0000000..f5c3616 --- /dev/null +++ b/_locales/cs/controls.json @@ -0,0 +1,57 @@ +{ + "noreload": "No inventory reloading when sell item", + "quickbuy": "Quick buy", + "reloadinvent": "Obnovit inventář (alt + R)", + "selectitem": "Vybrat položky", + "selectall": "Vybrat vše", + "turngems": "Proměnit v drahokamy", + "sendgifts": "Odeslat dárky", + "cancel": "Zrušit", + "sell1item": "Prodat 1 položku", + "sellnitem": "Prodat {{NUMBERS}} položek", + "quicksell": "Rychle prodat za {{PRICE}}", + "instantsell": "Ihned prodat za {{PRICE}}", + "buymissing": "Koupit chybějící části", + "autoaccept": "Automaticky přijmout všechny položky", + "autoadjust": "Automaticky nastavit ceny podle trhu", + "historynoselect": "Vybrat položku", + "queue": { + "removeitem": "Odebrat z řady", + "removelower": "Odebrat menši", + "removehigher": "Odebrat větši", + "removeintrade": "Odebrat v obchodu", + "removeequipped": "Odebrat vybavené", + "takelower": "Vzít menší", + "takehigher": "Vzít větší", + "emptyprice": "Odebrat bez ceny" + }, + "sort": { + "sortitem": "Řadit položky", + "price": "Cena" + }, + "tradingcards": { + "buyall": "Koupit všechny", + "reload": "Obnovit list", + "dialogtitle": "Koupit chybějící karty", + "showpopup": "Zobrazit dialog při kupování karet" + }, + "tradeoffers": { + "removeall": "Odebrat vše", + "takeall": "Vzít vše", + "totalprice": "Celkem", + "notrash": "Bez odpadu", + "skipintrade": "Přeskočit položky v obchodě", + "noduplicate": "Bez duplikací", + "noofitems": "Počet položek", + "recount": "Přepočítat", + "youritems": "Vaše položky", + "theiritem": "Jejich položky" + }, + "nontradable": { + "counter": "položky nejsou obchodovatelné", + "startdate": "První na", + "lastdate": "Poslední na", + "totalprice": "Celková cena" + }, + "contributedby": "PapuleX" +} diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json new file mode 100644 index 0000000..25a4e92 --- /dev/null +++ b/_locales/cs/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Popis rozšíøení", + "message": "Poskytuje mnoho pomocných programú pro steam inventory a obchod (Trade notifikace, rychlé prodávání, buying, ponouknutí tradu, price check...)" + }, + "langcode": { + "description": "", + "message": "cs" + } +} diff --git a/_locales/cs/translation.json b/_locales/cs/translation.json new file mode 100644 index 0000000..d6e9904 --- /dev/null +++ b/_locales/cs/translation.json @@ -0,0 +1,144 @@ +{ + "langcode": "cs", + "about": { + "title": "Další" + }, + "tradeoffers": { + "title": "Obchodní nabídky", + "signedout": "Steam: Byli jste odhlášeni ze svého účtu. Prosím přihlaste se nebo nastavte SteamAPI klíč v nastavení", + "nooffers": "Nemáte žádné příchozí obchodní nabídky", + "countoffers": "Máte {{NUMBERS}} obchodních nabídek", + "offerfrom": "Máte nabídku od {{USERNAME}}", + "offernoname": "Máte nabídku", + "confirmation": "Jste si jistí?", + "yourprice": "Vaše cena", + "theirprice": "Jejich cena", + "cancel": "Zrušit", + "openall": "Otevřít vše", + "open": "Otevřít", + "declineall": "Odmítnout vše", + "decline": "Odmítnout", + "quickaccept": "Rychle přijmout", + "quickrefuse": "Rychle odmítnout" + }, + "marketgraph": { + "title": "Graf marketu" + }, + "bookmarks": { + "title": "Záložky" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Nastavení", + "inventory": { + "title": "Inventář", + "buyset": "\"Koupit set\" tlačítko", + "quicksell": "\"Rychle prodat\" tlačítko", + "instantsell": "\"Ihned prodat\" tlačítko", + "selectall": "\"Prodat vše\" tlačítko", + "getprice": "\"Cena inventáře\" tlačítko", + "quickselldif": "Rozdíl při rychlém prodání", + "listdelay": "Zpoždění během výpisu", + "hidedefaultprice": "Schovat výchozí info ceny", + "simpify": "Zjednodušit UI", + "show_float_value": "Zobrazit hodnotu float", + "tradableinfo": "Zobrazit souhrn neobchodovatelných předmětů" + }, + "storeprices": { + "title": "Ceny prodejny", + "show_historical_price": "Zobrazit nejmenší cenu celé doby", + "show_current_price": "Zobrazit aktuální nejmenší cenu", + "show_regional_price": "Zobrazit regionální cenu", + "show_all_stores": "Získat ceny od všech prodejen", + "add_another_region": "Přidat" + }, + "highlight": { + "title": "Vyznačit položky prodejny", + "wishlist_items": "Vyznačit položky v seznamu přání", + "owned_items": "Vyznačit vlastněné položky" + }, + "listingmarket": { + "title": "Výpis a trh", + "quickbuy": "\"Rychle koupit\" tlačítko", + "no_mylistings": "Počet mých prodejních výpisů", + "no_listings": "Počet výpisů", + "no_history": "Velikost stránky historie", + "totalrow": "Celkový řádek", + "overallsum": "Celkový řádek (všechny stránky)", + "highlight": "Vyznačit předražené" + }, + "tradeoffer": { + "title": "Obchodní nabídka", + "autocheckofferprice": "Automaticky získat cenu", + "autodecline": "Odmítnout nedostupné nabídky", + "offerdelay": "Zpoždění během získávání ceny nabídky", + "quickaccept": "Rychle příjmout", + "delay": "Zpoždění", + "confirm": "zobrazit potvrzovací dialog", + "quickrefuse": "Rychle odmítnout", + "totalprice": "Zobrazit celkovou cenu nabídky", + "custombuttons": "Vlastní tlačítka", + "manage": "Spravovat" + }, + "friends": { + "title": "Žádosti o přátelství (0 = vypnuto)", + "ignoreinvites": "Ignorovat žádosti pod", + "blockinvites": "Blokovat žádosti pod", + "steamlevel": "Steam úrovně nebo", + "private": "soukromé profily", + "total": "Celkem", + "reset": "Resetovat" + }, + "extprice": { + "title": "Externí ceny", + "showprice": "Zobrazit externí ceny", + "masslisting": "Zobrazit pro celkový výpis", + "bgcolor": "Barva pozadí", + "textcolor": "Barva textu", + "customprovider": "Poskytovatel vlastních cen" + }, + "general": { + "title": "Obecně", + "txt_apikey": "Vložte svůj API klíč", + "txt_custom": "Url k vlastnímu zvuku", + "auto_currency": "Automaticky (použít měnu peněženky)", + "auto_language": "Automaticky (použít jazyk prohlížeče)", + "autogetprice": "Automaticky získat ceny", + "on_hover": "On hover", + "pricedelay": "Get price delay (ms)", + "success": "Úspěch", + "error": "Chyba", + "displaynof": "Zobrazovat oznámení", + "offers": "Obchodních nabídek", + "friends": "Žádostí o přátelství", + "comments": "Komentářů", + "nofsound": "Zvuk oznámení", + "nofsound_vol": "Hlasitost zvuku", + "displayvector": "Zobrazit cenu vektoru", + "showsteamrep": "Zobrazit Steamrep", + "show_permalink": "Zobrazit permalink profilu", + "show_streamlink": "Zobrazit Youtube a Twitch odkazy", + "hidebanner": "Schovat bannery sponzora", + "bookmarks": "Záložky", + "ck_show": "zobrait", + "manage": "Spravovat kategorie", + "clear": "Vyčistit záložky", + "apikey": "Steam API klíč", + "get_apikey": "Získejte svůj klíč", + "currency": "Měna", + "language": "Jazyk" + }, + "default": "Výchozí", + "defaultreset": "Resetovat na výchozí", + "note": "Musíte obnovit aktuální stránky pro uložení" + }, + "newupdate": { + "updated_to": "byl aktualizován na verzi", + "last_changes": "Poslední změny", + "view_changes": "Klikněte zde pro changelog", + "skip": "přeskočte", + "or": "nebo" + } +} diff --git a/_locales/de/messages.json b/_locales/de/messages.json new file mode 100644 index 0000000..365f17f --- /dev/null +++ b/_locales/de/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Beschreibung der Erweiterung", + "message": "Tools für das Steam Inventar und den Steam Community Mark (Benachrichtigungen für Handelsangebote, Schnellverkauf, Kaufen, Handelsangebote machen, Preise anzeigen...)" + }, + "langcode": { + "description": "", + "message": "de" + } +} diff --git a/_locales/de/translation.json b/_locales/de/translation.json new file mode 100644 index 0000000..4a1c528 --- /dev/null +++ b/_locales/de/translation.json @@ -0,0 +1,50 @@ +{ + "langcode": "de", + "about": { + "title": "Über uns" + }, + "bookmarks": { + "title": "Lesezeichen" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Einstellungen", + "inventory": { + "buyset": "\"Set kaufen\" Knöpfe", + "quicksell": "\"Schnellverkauf\" Knöpfe", + "quickselldif": "Unterschied der Schnellverkaufspreise", + "listdelay": "Verzögerung zwischen Auflistungen", + "simpify": "UI vereinfachen" + }, + "listingmarket": { + "quickbuy": "\"Schnellkauf\" Knöpfe", + "no_listings": "Anzahl d. Auflistungen", + "no_history": "Größe des Verlaufs", + "totalrow": "Gesamte Reihe", + "highlight": "Überteuerte Gegenstände markieren" + }, + "tradeoffer": { + "autocheckofferprice": "Preise bei Handelsangeboten automatisch anzeigen", + "autodecline": "Nicht verfügbare Angebote ablehnen", + "custombuttons": "Eigene Knöpfe", + "offerdelay": "Verzögerung des Preises bei Handelsangeboten" + }, + "friends": { + "ignoreinvites": "Einladungen ignorieren", + "blockinvites": "Einladungen blockieren" + }, + "general": { + "displaynof": "Benachrichtigungen anzeigen", + "nofsound": "Benachrichtigungston", + "nofsound_vol": "Lautstärke", + "displayvector": "Vektorpreis anzeigen", + "showsteamrep": "Steamrep anzeigen", + "currency": "Währung", + "language": "Sprache" + }, + "note": "Aktualisiern um Änderungen anzuzeigen", + "autoreply": "Automatisch antworten" + } +} diff --git a/_locales/en/controls.json b/_locales/en/controls.json new file mode 100644 index 0000000..8d47b39 --- /dev/null +++ b/_locales/en/controls.json @@ -0,0 +1,100 @@ +{ + "noreload": "No inventory reloading when sell item", + "quickbuy": "Quick buy", + "reloadinvent": "Reload inventory (alt + R)", + "selectitem": "Select items", + "selectall": "Select all", + "turngems": "Turn into gems", + "sendgifts": "Send gifts", + "cancel": "Cancel", + "total": "Total price", + "loading": "Loading...", + "inventvalue": "Inventory value", + "steamprice": "Steam Price", + "sold24h": "sold in the last 24 hours", + "numowned": "Number owned", + "sell1item": "Sell 1 item", + "sellnitem": "Sell {{NUMBERS}} items", + "quicksell": "Quick sell this at {{PRICE}}", + "instantsell": "Instant sell this at {{PRICE}}", + "buymissing": "Buy missing items", + "autoaccept": "Accept all items automatically", + "autoadjust": "Autoadjust prices by market", + "historynoselect": "Select item", + "sponsors": "SIH's Sponsors", + "functions": "Functions", + "externalprices": "External prices", + "info": { + "viewcm": "View in Community Market", + "startingAt": "Starting at", + "nosales": "There are no listings currently available for this item.", + "last24": "%1$s sold in the last 24 hours", + "volume": "Volume", + "sell": "Sell" + }, + "market": { + "selectoverpriced": "Select all overpriced", + "removeselected": "Remove selected", + "remove": "Remove", + "reloadlistings": "Reload listings (alt + R)", + "hidelistings": "Hide listings", + "showlistings": "Show listings", + "total": "Total", + "addbookmarks": "Add to bookmarks", + "mybookmarks": "My bookmarks", + "added": "Added to", + "general": "General", + "all": "All", + "addcategory": "Add category", + "getallfloat": "Get All Float", + "sortfloat": "Sort By Float", + "viewglws": "View on glws", + "getfloat": "Get Float" + }, + "queue": { + "removeitem": "Remove from queue", + "removelower": "Remove lower", + "removehigher": "Remove higher", + "removeintrade": "Remove in-trade", + "removeequipped": "Remove equipped", + "takelower": "Take lower", + "takehigher": "Take higher", + "emptyprice": "Remove no price" + }, + "sort": { + "sortitem": "Sort items", + "price": "Price" + }, + "tradingcards": { + "buyall": "Buy all", + "reload": "Reload list", + "dialogtitle": "Buy missing cards", + "showpopup": "Show buy cards dialog" + }, + "profile": { + "communityban": "Community banned", + "tradeban": "Trade banned", + "vacban": "VAC banned", + "none": "None", + "banned": "Banned" + }, + "tradeoffers": { + "removeall": "Remove all", + "takeall": "Take all", + "totalprice": "Get total", + "notrash": "No trash", + "skipintrade": "Skip in-trade items", + "noduplicate": "No duplicate", + "noofitems": "Number of items", + "recount": "Recount", + "youritems": "Your items", + "theiritem": "Their items" + }, + "nontradable": { + "counter": "items not tradable yet", + "startdate": "First ones at", + "lastdate": "Last ones at", + "totalprice": "Total price" + }, + "contributedby": "" +} diff --git a/_locales/en/messages.json b/_locales/en/messages.json new file mode 100644 index 0000000..9efc6ef --- /dev/null +++ b/_locales/en/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "Provides many utilities for steam inventory and market (offers notification, quick selling, buying, offering trades, price check...)" + }, + "langcode": { + "description": "", + "message": "en" + } +} diff --git a/_locales/en/translation.json b/_locales/en/translation.json new file mode 100644 index 0000000..762f9c7 --- /dev/null +++ b/_locales/en/translation.json @@ -0,0 +1,159 @@ +{ + "langcode": "en", + "about": { + "title": "About" + }, + "tradeoffers": { + "title": "Trade offers", + "signedout": "Steam: You have been signed out of your account. Please sign in or set SteamAPI key in Settings", + "nooffers": "You have no incoming trade offers at this time", + "countoffers": "You have {{NUMBERS}} trade offer(s)", + "offerfrom": "You have offer from {{USERNAME}}", + "offernoname": "You have offer", + "confirmation": "Are you sure?", + "yourprice": "Your price", + "theirprice": "Their price", + "cancel": "Cancel", + "openall": "Open all", + "open": "Open", + "declineall": "Decline all", + "decline": "Decline", + "quickaccept": "Quick accept", + "quickrefuse": "Quick refuse", + "csmoney": "CS.MONEY | CS:GO Trading Bot", + "payskins": "Pay by skins", + "buyskins": "Buy skins", + "sellskins": "Sell skins", + "giveaway": "Giveaway" + }, + "marketgraph": { + "title": "Market graph" + }, + "bookmarks": { + "title": "Bookmarks", + "name": "Name", + "volume": "Volume", + "price": "Price", + "manage": "Manage categories", + "selectcat": "Select category", + "categorieslist": "List of categories", + "addcategory": "Add categories", + "categoryname": "Category's name", + "add": "Add" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Settings", + "inventory": { + "title": "Inventory", + "buyset": "\"Buy missing items\" button", + "quicksell": "\"Quick sell\" button", + "instantsell": "\"Instant sell\" button", + "selectall": "\"Select all\" button", + "getprice": "\"Inventory value\" button", + "quickselldif": "Quick sell difference", + "listdelay": "Delay between listings placing", + "hidedefaultprice": "Hide default price info", + "simpify": "Simple Interface", + "show_float_value": "Display Float value", + "tradableinfo": "Show summary of non tradable items" + }, + "storeprices": { + "title": "Store items prices", + "show_historical_price": "Lowest price of all time", + "show_current_price": "Actual lowest price", + "show_regional_price": "Regional prices", + "show_all_stores": "Prices from all stores (uncheck to select stores)", + "add_another_region": "Add" + }, + "highlight": { + "title": "Highlight Store items", + "wishlist_items": "Highlight items from wishlist", + "owned_items": "Highlight items from your library" + }, + "listingmarket": { + "title": "Listings and marketplace", + "quickbuy": "\"Quick buy\" button", + "no_mylistings": "Number of my sell listings", + "no_listings": "Number of listings", + "no_history": "History page size", + "totalrow": "Display items summary price", + "overallsum": "Display items summary price (all pages)", + "highlight": "Highlight overpriced items", + "show_get_float": "Show \"Get Float\" function" + }, + "tradeoffer": { + "title": "Trade offers", + "autocheckofferprice": "Auto get prices when offer", + "autodecline": "Decline unavailable trade offers", + "offerdelay": "Trade offer price check delay", + "quickaccept": "Quick accept", + "delay": "Delay", + "confirm": "Show confirmation", + "quickrefuse": "Quick reject", + "totalprice": "Show trade offer total price", + "custombuttons": "Custom buttons", + "manage": "Manage" + }, + "friends": { + "title": "Friend requests", + "ignoreinvites": "Ignore invites below", + "blockinvites": "Block invites below", + "steamlevel": "Steam level or if", + "private": "profile is private", + "total": "Total", + "reset": "Clear" + }, + "extprice": { + "title": "External prices", + "showprice": "Display external prices", + "masslisting": "Display for mass listing", + "bgcolor": "Background color", + "textcolor": "Text color", + "customprovider": "Custom price provider" + }, + "general": { + "title": "General", + "txt_apikey": "Enter your API key", + "txt_custom": "Url to custom sound", + "auto_currency": "Auto (use wallet currency)", + "auto_language": "Auto (use browser locale)", + "autogetprice": "Auto get prices", + "on_hover": "On hover", + "pricedelay": "Get price delay (ms)", + "success": "Success", + "error": "Error", + "displaynof": "Display notifications", + "offers": "Trade offers", + "friends": "Friend requests", + "comments": "Comments", + "nofsound": "Notification sound", + "nofsound_vol": "Sound volume", + "displayvector": "Show vector price", + "showsteamrep": "Show Steamrep", + "show_permalink": "Show profile permalink", + "show_streamlink": "Show links on Youtube и Twitch", + "hidebanner": "Hide sponsor's banners", + "bookmarks": "Bookmarks", + "ck_show": "Show", + "manage": "Manage categories", + "clear": "Clear bookmarks", + "apikey": "Steam API key", + "get_apikey": "Get your key", + "currency": "Currency", + "language": "Language" + }, + "default": "Default", + "defaultreset": "Reset to defaults", + "note": "You need to refresh current pages for changes to take effect" + }, + "newupdate": { + "updated_to": "has been updated to version", + "last_changes": "Last changes", + "view_changes": "Click here to view changelogs", + "skip": "skip this", + "or": "or" + } +} diff --git a/_locales/es/messages.json b/_locales/es/messages.json new file mode 100644 index 0000000..2cfbd6e --- /dev/null +++ b/_locales/es/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Descripción de la extensión", + "message": "Da acceso a muchas utilidades para el inventario de steam y el mercado(Ofrece notificaciones, ventas rápida, compras, ofrecer intercambios, revisar precios...)" + }, + "langcode": { + "description": "", + "message": "es" + } +} diff --git a/_locales/es/translation.json b/_locales/es/translation.json new file mode 100644 index 0000000..8ce6596 --- /dev/null +++ b/_locales/es/translation.json @@ -0,0 +1,51 @@ +{ + "langcode": "es", + "about": { + "title": "Sobre" + }, + "bookmarks": { + "title": "Bookmarks" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Parámetros", + "inventory": { + "buyset": "\"Comprar set\" Botones", + "quicksell": "\"Venta rápida\" botón", + "quickselldif": "Diferencia venta rápida", + "listdelay": "Retraso entre listados", + "simpify": "Simplify UI", + "tradableinfo": "Show summary of non tradable items" + }, + "listingmarket": { + "quickbuy": "\"Compra rápida\" boton", + "no_history": "Tamaño de historial de ventas", + "no_listings": "Number of listings", + "totalrow": "Fila total", + "highlight": "Destacar sobrevaluados" + }, + "tradeoffer": { + "autocheckofferprice": "Obtener precios automaticamente al ofertar", + "autodecline": "Declinar ofertas no disponibles", + "offerdelay": "Retraso entre control de ofertas", + "custombuttons": "Personalizar botones" + }, + "friends": { + "ignoreinvites": "Ignorar invitaciones bajo", + "blockinvites": "Bloquear invitaciones bajo" + }, + "general": { + "displaynof": "Visualizar notificaciones", + "displayvector": "Mostrar precio del vector", + "nofsound": "Sonido de notificaciones", + "nofsound_vol": "Sound volumn", + "showsteamrep": "Mostrar Steamrep", + "language": "Lenguaje", + "currency": "Divisa" + }, + "autoreply": "Respuesta automatica", + "note": "Necesitas refrescar las paginas para que tome efecto" + } +} diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json new file mode 100644 index 0000000..b736162 --- /dev/null +++ b/_locales/fr/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Description de l'extension", + "message": "Vous offre beaucoup de possibilitées pour votre inventaire steam et le marché (notification d'échange, vente rapide, acheter, proposer des échanges, vérifier les prix)" + }, + "langcode": { + "description": "", + "message": "fr" + } +} diff --git a/_locales/fr/translation.json b/_locales/fr/translation.json new file mode 100644 index 0000000..a4ae609 --- /dev/null +++ b/_locales/fr/translation.json @@ -0,0 +1,50 @@ +{ + "about": { + "title": "A propos" + }, + "bookmarks": { + "title": "Marque page" + }, + "faq": { + "title": "FAQ" + }, + "langcode": "fr", + "settings": { + "title": "Paramètres", + "inventory": { + "buyset": "Acheter l'ensemble\" buttons", + "quicksell": "Vente rapide\" button", + "quickselldif": "Quick sell dif", + "listdelay": "Délai entre chaque objet lister sur le marché", + "simpify": "Simplifier l'interface utilisateur" + }, + "listingmarket": { + "highlight": "Plus haut prix sur le marché", + "quickbuy": "Achat rapide\" buttons", + "totalrow": "Toute la rangée", + "no_history": "Taille de la page de l'historique", + "no_listings": "Nombre d'objet à vendre" + }, + "tradeoffer": { + "autodecline": "Refuser les offres invalides", + "offerdelay": "Temps de vérification du prix des objets dans un échange", + "autocheckofferprice": "Avoir les prix automatiquement lors d'une offre", + "custombuttons": "Button personnalisé" + }, + "friends": { + "ignoreinvites": "Ignorer les invitations ci-dessous", + "blockinvites": "Bloquer les invitations ci-dessous" + }, + "general": { + "currency": "Monnaie", + "displaynof": "Afficher les notifications", + "displayvector": "Afficher le vecteur du prix", + "language": "Langue", + "nofsound": "Son de notification", + "nofsound_vol": "Volume du son", + "showsteamrep": "Montrez son Steamrep" + }, + "autoreply": "Réponse automatique", + "note": "Vous devez recharger la page pour que les changements s'appliquent" + } +} diff --git a/_locales/it/messages.json b/_locales/it/messages.json new file mode 100644 index 0000000..86bf558 --- /dev/null +++ b/_locales/it/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Descrizione estensione", + "message": "Fornisce strumenti utili per l'inventario ed il mercato su Steam (notifica offerte, controllo prezzo, ecc.)" + }, + "langcode": { + "description": "", + "message": "it" + } +} diff --git a/_locales/it/translation.json b/_locales/it/translation.json new file mode 100644 index 0000000..4b1699e --- /dev/null +++ b/_locales/it/translation.json @@ -0,0 +1,47 @@ +{ + "langcode": "it", + "about": { + "title": "Info" + }, + "bookmarks": { + "title": "Bookmarks" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Impostazioni", + "inventory": { + "buyset": "Bottoni \"Compra set\"", + "quicksell": "Bottoni \"Vendi subito\"", + "quickselldif": "Differenza \"Vendi subito\"", + "listdelay": "Delay between listings", + "simpify": "Semplifica interfaccia", + "tradableinfo": "Show summary of non tradable items" + }, + "listingmarket": { + "quickbuy": "Bottoni \"Compra subito\"", + "no_listings": "Numero di oggetti", + "no_history": "History page size", + "totalrow": "Righe totali", + "highlight": "Highlight overpriced" + }, + "tradeoffer": { + "autodecline": "Decline unavailable offers", + "offerdelay": "Ritardo controllo prezzo", + "autocheckofferprice": "Ottiene i prezzi automaticamente durante le offerte", + "custombuttons": "Bottoni personalizzati" + }, + "general": { + "currency": "Valuta", + "displaynof": "Mostra notifiche", + "displayvector": "Mostra grafico prezzi", + "language": "Lingua", + "nofsound": "Suono di notifica", + "nofsound_vol": "Sound volume", + "showsteamrep": "Mostra Steamrep" + }, + "autoreply": "Auto risposta", + "note": "Ricarica le pagine correnti per applicare i cambiamenti." + } +} diff --git a/_locales/ka/messages.json b/_locales/ka/messages.json new file mode 100644 index 0000000..4bfbdd2 --- /dev/null +++ b/_locales/ka/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "აღწერა", + "message": "გვაწვდის მრავალ მოსახერხებელ დამატებებს steam-ის ინვენტარისა და მარკეტისათვის (შემოთავაზების შეტყობინება, სწრაფი გაყიდვა, ყიდვა, მიმოცვლის შეთავაზება, ფასის შემოწმება...)" + }, + "langcode": { + "description": "", + "message": "ka" + } +} diff --git a/_locales/ka/translation.json b/_locales/ka/translation.json new file mode 100644 index 0000000..3ae4268 --- /dev/null +++ b/_locales/ka/translation.json @@ -0,0 +1,33 @@ +{ + "langcode": "ka", + "about": { + "title": "შესახებ" + }, + "settings": { + "title": "პარამეტრები", + "inventory": { + "buyset": "\"სეტის ყიდვა\" ღილაკი", + "quicksell": "\"სწრაფი გაყიდვა\" ღილაკი", + "quickselldif": "სწრაფი გაყიდვის განსხვავება", + "simpify": "გაამარტივებს UI" + }, + "listingmarket": { + "quickbuy": "\"სწრაფი ყიდვა\" ღილაკი", + "totalrow": "ჯამური მწკრივი" + }, + "tradeoffer": { + "autocheckofferprice": "ფასების ავტომატური მიღება", + "offerdelay": "ფასის შემოწმების შეფერხება", + "custombuttons": "კერძო ღილაკი" + }, + "general": { + "currency": "ვალუტა", + "displaynof": "შეტყობინებების ჩვენება", + "displayvector": "ვექტორული ფასის ჩვენება", + "language": "ენა", + "nofsound": "შეტყობინებების ხმა", + "showsteamrep": "Steamrep-ის ჩვენება" + }, + "note": "ცვლილებების დასანახად გვერდის განახლებაა საჭირო" + } +} diff --git a/_locales/lv/messages.json b/_locales/lv/messages.json new file mode 100644 index 0000000..c0a4557 --- /dev/null +++ b/_locales/lv/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Paplašinājuma apraksts", + "message": "Piedāvā vairākus rīkus priekš steam inventāra un tirgus (piedāvājumu paziņojumi, Ātrā pirkšāna un pārdošana, maiņas piedāvājumi, cenu pārbaudes...)" + }, + "langcode": { + "description": "", + "message": "lv" + } +} diff --git a/_locales/lv/translation.json b/_locales/lv/translation.json new file mode 100644 index 0000000..220e754 --- /dev/null +++ b/_locales/lv/translation.json @@ -0,0 +1,50 @@ +{ + "langcode": "lv", + "about": { + "title": "Informācija" + }, + "bookmarks": { + "title": "Grāmatzīmes" + }, + "faq": { + "title": "BUJ" + }, + "settings": { + "title": "Uzstādijumi", + "inventory": { + "buyset": "\"Nopirkt kopu\" Pogas", + "listdelay": "Laika starpība starp sarakstiem", + "quicksell": "\"Ātrā pārdošana\" poga", + "quickselldif": "Ātrās pārdošanas dif", + "simpify": "Vienkāršot izklājumu" + }, + "listingmarket": { + "quickbuy": "\"Ātrā pirkšana\" poga", + "no_history": "Vēstures lapas izmērs", + "no_listings": "Sarakstu skaits", + "totalrow": "Kopējā rinda", + "highlight": "Izcelt dārgākos" + }, + "tradeoffer": { + "autocheckofferprice": "Automātiski saņemt cenas par piedāvājumu", + "autodecline": "Noraidīt nepieejamos piedāvājumus", + "custombuttons": "Modificēt pogas", + "offerdelay": "Piedāvājuma cenas taimeris" + }, + "friends": { + "ignoreinvites": "Ignorēt zemākesošos uzaicinājumus", + "blockinvites": "Bloķēt zemākesošos uzaicinājumus" + }, + "general": { + "currency": "Valūta", + "displaynof": "Rādīt paziņojumus", + "displayvector": "Rādīt vektora cenas", + "language": "Valodad", + "nofsound": "Paziņojuma skaņā", + "nofsound_vol": "Skaņas skaļums", + "showsteamrep": "Parādīt steam reputāciju" + }, + "autoreply": "Automātiskā atbilde", + "note": "Tev jāpārlādē lapa lai veiktu izmaiņas" + } +} diff --git a/_locales/no/controls.json b/_locales/no/controls.json new file mode 100644 index 0000000..076281d --- /dev/null +++ b/_locales/no/controls.json @@ -0,0 +1,57 @@ +{ + "noreload": "Ingen lager laster", + "quickbuy": "Hurtig kjøp", + "reloadinvent": "Last inn lager (alt + R)", + "selectitem": "Velg artikler", + "selectall": "Velg alt", + "turngems": "Bytt til gems", + "sendgifts": "Send gaver", + "cancel": "kanseller", + "sell1item": "Selg 1 artikel", + "sellnitem": "Selg {{NUMBERS}} artikler", + "quicksell": "Hurtig selg til {{PRICE}}", + "instantsell": "Instant sell this at {{PRICE}}", + "buymissing": "Kjøp manglende deler", + "autoaccept": "auto godta", + "autoadjust": "auto juster prisen", + "historynoselect": "Velg artikkel ", + "queue": { + "removeitem": "Fjern fra køen", + "removelower": "Fjern nedre", + "removehigher": "Fjern øverste", + "removeintrade": "Fjern in-trade artikler", + "removeequipped": "Remove equipped", + "takelower": "Ta nedre", + "takehigher": "Ta øverste", + "emptyprice": "Fjern ingen pris" + }, + "sort": { + "sortitem": "Sorter artiklene", + "price": "Pris" + }, + "tradingcards": { + "buyall": "Kjøp alt", + "reload": "Last inn", + "dialogtitle": "Kjøp manglende kort", + "showpopup": "Show buy cards dialog" + }, + "tradeoffers": { + "removeall": "Fjern alt", + "takeall": "Ta alt", + "totalprice": "Få totalt pris", + "notrash": "Ingen søppel", + "skipintrade": "Skip in-trade artikler", + "noduplicate": "ikke dupliser", + "noofitems": "Antall artikler", + "recount": "Tell på nytt", + "youritems": "Dine artikler", + "theiritem": "Deres artikler" + }, + "nontradable": { + "counter": "Artikelen kan ikke byttes", + "startdate": "Første er", + "lastdate": "Siste er", + "totalprice": "Total pris" + }, + "contributedby": "" +} diff --git a/_locales/no/translation.json b/_locales/no/translation.json new file mode 100644 index 0000000..248cbd3 --- /dev/null +++ b/_locales/no/translation.json @@ -0,0 +1,142 @@ +{ + "langcode": "no", + "about": { + "title": "Om oss" + }, + "tradeoffers": { + "title": "Byttehandel", + "signedout": "Steam: Du har blitt logget ut av brukeren din. Vennligst logg inn eller sett SteamAPI key i instillinger", + "nooffers": "Du har ingen byttetilbud", + "countoffers": "du har {{NUMBERS}} byttetilbud(er)", + "offerfrom": "Du har et tilbud fra {{USERNAME}}", + "offernoname": "Du har et tilbud", + "confirmation": "Er du sikker?", + "yourprice": "Din pris", + "theirprice": "Deres pris", + "cancel": "Kanseller", + "openall": "Åpne alle", + "open": "Åpen", + "declineall": "Avslå alle", + "decline": "Avslå", + "quickaccept": "Hurtig godta", + "quickrefuse": "Hurtig avslå", + "payskins": "Betal med skins", + "buyskins": "Kjøp skins", + "sellskins": "Selg skins", + "giveaway": "Giveaway" + }, + "marketgraph": { + "title": "Marked graf" + }, + "bookmarks": { + "title": "Bokmerker" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Instillinger", + "inventory": { + "title": "Lager", + "buyset": "\"Kjøp sett\" button", + "quicksell": "\"Hurtig selg\" button", + "instantsell": "\"Instant selg\" button", + "selectall": "\"Velg alt\" button", + "getprice": "\"Få pris\" inventory button", + "quickselldif": "Hurtig selg dif", + "listdelay": "Forsinkelse mellom oppføringer", + "hidedefaultprice": "Skjul vanlig pris", + "simpify": "Forenkle UI", + "tradableinfo": "Vis oppsummering av ikke tradeable artikler" + }, + "storeprices": { + "title": "Marked priser", + "show_historical_price": "Vis laveste pris", + "show_current_price": "Vis laveste pris nåværende", + "show_regional_price": "Vis regional pris", + "add_another_region": "Legg til" + }, + "highlight": { + "title": "Marker marked artikler", + "wishlist_items": "marker artikkelen i ønskelisten", + "owned_items": "Marker dine artikler" + }, + "listingmarket": { + "title": "Oversikt & marked", + "quickbuy": "\"Hurtig kjøp\" button", + "no_listings": "Antall oppføringer", + "no_history": "Historie side", + "totalrow": "Total row", + "highlight": "Marker overpriset" + }, + "tradeoffer": { + "title": "Byttehandel", + "autocheckofferprice": "Få prisen automatisk når du får en byttehandel", + "autodecline": "Avslå utilgjengelige byttehandler", + "offerdelay": "Handel pris sjekk er forsinket", + "quickaccept": "Hurtig godta", + "delay": "Forsink", + "confirm": "Vis godta dialog", + "quickrefuse": "Hurtig avslå", + "totalprice": "Få total pris", + "custombuttons": "definerte knapper", + "manage": "Velg" + }, + "friends": { + "title": "Venneforespørsel (0 = off)", + "ignoreinvites": "Ignorer invitasjoner under", + "blockinvites": "Blokker invitasjoner under", + "steamlevel": "Steam level or", + "private": "privat", + "total": "Total", + "reset": "Tilbakestill" + }, + "extprice": { + "title": "Eksterne priser", + "showprice": "Vis eksterne priser", + "masslisting": "Bruk for masse oppføringer", + "bgcolor": "Bakgrunnsfarge", + "textcolor": "Tekstfarge", + "customprovider": "Tilpasset pris leverandør" + }, + "general": { + "title": "Generell", + "txt_apikey": "Skriv inn din API-key", + "txt_custom": "Lenke til egendefinert lyd ", + "auto_currency": "Auto (bruk lommebok valuta)", + "auto_language": "Auto (Bruk nettleserens lokale)", + "autogetprice": "Få pris automatisk", + "on_hover": "On hover", + "pricedelay": "Få pris forsinkelse (ms)", + "success": "Suksess", + "error": "Feil", + "displaynof": "Vis varsler", + "offers": "Byttehandler", + "friends": "Venneforespørsler", + "comments": "Kommentarer", + "nofsound": "Varsel lyd", + "nofsound_vol": "Lyd volum", + "displayvector": "Vis vector pris", + "showsteamrep": "Vis Steamrep", + "hidebanner": "Skjul reklame bannere", + "bookmarks": "Bokmerker", + "ck_show": "Vis", + "manage": "Bestem kategorier", + "clear": "Slett bokmerker", + "apikey": "Steam API key", + "get_apikey": "Skaff din API key", + "currency": "Valuta", + "language": "Språk" + }, + "default": "Standard", + "defaultreset": "Tilbakestill til standard", + "note": "Du må oppdatere nåværende side for at endringene skal tre i kraft" + }, + "newupdate": { + "updated_to": "Har blitt oppdatert til versjon", + "last_changes": "Siste endringer", + "view_changes": "Klikk her for å se endringene", + "skip": "Hopp over dette", + "or": "eller" + } +} diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json new file mode 100644 index 0000000..054b4ea --- /dev/null +++ b/_locales/pl/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Opis rozszerzenia", + "message": "Udostępnia wiele narzędzi dla ekwipunku oraz rynku steam (powiadomienia o ofertach, kupowanie, oferowanie wymian, sprawdzanie cen itp." + }, + "langcode": { + "description": "", + "message": "pl" + } +} diff --git a/_locales/pl/translation.json b/_locales/pl/translation.json new file mode 100644 index 0000000..46c277c --- /dev/null +++ b/_locales/pl/translation.json @@ -0,0 +1,56 @@ +{ + "langcode": "pl", + "about": { + "title": "O nas" + }, + "bookmarks": { + "title": "Zakładki" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Ustawienia", + "inventory": { + "buyset": "Przycisk \"Kupno zestawu\"", + "quicksell": "Przycisk \"Szybka sprzedaż\"", + "quickselldif": "Różnica \"Szybka sprzedaż\"", + "listdelay": "Opóźnienia pomiędzy ofertami", + "simpify": "Łatwiejszy interfejs graficzny", + "tradableinfo": "Pokaż podsumowanie niewymienialnych przedmiotów" + }, + "listingmarket": { + "quickbuy": "Przycisk \"Szybki zakup\"", + "no_listings": "Liczba ofert", + "no_history": "Wielkość strony historii", + "totalrow": "Wszystkich wierszy", + "highlight": "Podświetl zbyt drogie" + }, + "tradeoffer": { + "autodecline": "Odrzucaj niedostępne oferty", + "offerdelay": "Opóźnienie kontroli cen", + "autocheckofferprice": "Automatycznie ładuj ceny podczas wymiany", + "custombuttons": "Własne przyciski" + }, + "friends": { + "ignoreinvites": "Ignoruj zaproszenia poniżej", + "blockinvites": "Blokuj zaproszenia poniżej" + }, + "general": { + "currency": "Waluta", + "displaynof": "Pokaż powiadomienia", + "displayvector": "Pokaż wykres cen", + "language": "Język", + "nofsound": "Powiadomienia dzwiękowe", + "nofsound_vol": "Głośność powiadomienia", + "showsteamrep": "Pokaż panel SteamRep" + }, + "autoreply": "Automatyczna odpowiedź", + "note": "Musisz otworzyć na nowo tę podstronę aby zastosować zmiany" + }, + "tradeoffers": { + "signedout": "Steam: Zostałeś wylogowany z konta. Proszę zaloguj sie lub ustaw klucz SteamAPI w ustawieniach", + "nooffers": "Póki co nie masz żadnych ofert wymiany", + "countoffers": "Masz {{NUMBERS}} ofert(ę)" + } +} diff --git a/_locales/pt/messages.json b/_locales/pt/messages.json new file mode 100644 index 0000000..f1c5ec7 --- /dev/null +++ b/_locales/pt/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Descrição da Extensão", + "message": "Ofecere muitas utilidades para o inventário e mercado da Steam (notificações de ofertas, venda rápida, compra, ofertas de trocas, checagem de preços)" + }, + "langcode": { + "description": "", + "message": "pt" + } +} diff --git a/_locales/pt/translation.json b/_locales/pt/translation.json new file mode 100644 index 0000000..92d9d89 --- /dev/null +++ b/_locales/pt/translation.json @@ -0,0 +1,28 @@ +{ + "langcode": "pt", + "settings": { + "title": "Configurações", + "inventory": { + "buyset": "Botões de \"Buy set\"", + "quicksell": "Botões de \"Quick sell\"", + "quickselldif": "Diferencial na venda rápida", + "simpify": "Simplifique UI" + }, + "listingmarket": { + "quickbuy": "Botões de \"Quick buy\"", + "no_listings": "Número na listagem", + "totalrow": "Total row" + }, + "tradeoffer": { + "autocheckofferprice": "Obter automaticamente os preços quando oferecer", + "offerdelay": "Atraso ao checar o preço da oferta" + }, + "general": { + "currency": "Moeda", + "displaynof": "Exibir notificações", + "language": "Linguagem", + "nofsound": "Som de notificação" + }, + "note": "Você precisa atualizar a página atual para que as mudanças tenham efeito" + } +} diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json new file mode 100644 index 0000000..f1bf437 --- /dev/null +++ b/_locales/ro/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "Provides many utilities for steam inventory and market (offers notification, quick selling, buying, offering trades, price check...)" + }, + "langcode": { + "description": "", + "message": "ro" + } +} diff --git a/_locales/ro/translation.json b/_locales/ro/translation.json new file mode 100644 index 0000000..5aa57f6 --- /dev/null +++ b/_locales/ro/translation.json @@ -0,0 +1,43 @@ +{ + "langcode": "ro", + "about": { + "title": "Despre" + }, + "settings": { + "title": "Setări", + "inventory": { + "buyset": "Butoanele pentru cumpărare în set", + "quicksell": "Butonul vânzare rapidă (Quicksell)", + "quickselldif": "Diferență vânzare rapidă", + "listdelay": "Delay-ul dintre listări", + "simpify": "Simplifică interfața" + }, + "listingmarket": { + "quickbuy": "Buton cumpărare rapidă", + "no_listings": "Numărul listărilor", + "no_history": "Mărimea paginii istoricului", + "totalrow": "Toate rândurile", + "highlight": "Evidențiază prețurile ridicate" + }, + "tradeoffer": { + "autodecline": "Declină ofertele expirate", + "offerdelay": "Delay la verificare preț", + "autocheckofferprice": "Calculează auto prețurile când primesc ofertă", + "custombuttons": "Butoane personalizate" + }, + "friends": { + "ignoreinvites": "Ignoră invitațiile de mai jos", + "blockinvites": "Blochează invitațiile de mai jos" + }, + "general": { + "currency": "Monedă", + "displaynof": "Arată notificările", + "displayvector": "Arată prețul vector", + "language": "Limbă", + "nofsound": "Sunet notificare", + "nofsound_vol": "Volum sunet", + "showsteamrep": "Arată SteamRep" + }, + "note": "Trebuie să da-ți refresh la pagină ca setările să aibă efect" + } +} diff --git a/_locales/ru/controls.json b/_locales/ru/controls.json new file mode 100644 index 0000000..acf0e79 --- /dev/null +++ b/_locales/ru/controls.json @@ -0,0 +1,100 @@ +{ + "noreload": "Не обновлять инвентарь во время продажи", + "quickbuy": "Быстрая покупка", + "reloadinvent": "Обновить инвентарь (alt + R)", + "selectitem": "Выбрать предметы", + "selectall": "Выбрать все", + "turngems": "Превратить в самоцветы", + "sendgifts": "Отправить подарком", + "cancel": "Отмена", + "total": "Общая сумма", + "loading": "Загрузка...", + "inventvalue": "Стоимость инвентаря", + "steamprice": "Цена в Steam", + "sold24h": "продано за последние 24 часа", + "numowned": "В наличии", + "sell1item": "Продать 1 предмет", + "sellnitem": "Продать {{NUMBERS}} предметов", + "quicksell": "Быстрая продажа за {{PRICE}}", + "instantsell": "Мгновенная продажа за {{PRICE}}", + "buymissing": "Купить недостающие предметы", + "autoaccept": "Подтверждать все предметы автоматически", + "autoadjust": "Автоматическая регулировка цены по маркету", + "historynoselect": "Выберите предмет", + "sponsors": "Спонсоры SIH", + "functions": "Функции", + "externalprices": "Внешние цены", + "info": { + "viewcm": "Найти на Торговой площадке", + "startingAt": "От", + "nosales": "Сейчас этот предмет никто не продает.", + "last24": "%1$s за последние 24 часа", + "volume": "Продано", + "sell": "Продать" + }, + "market": { + "selectoverpriced": "Выбрать все с завышенной ценой", + "removeselected": "Удалить выбранные", + "remove": "Удалить", + "reloadlistings": "Перезагрузить лоты (alt + R)", + "hidelistings": "Скрыть лоты", + "showlistings": "Показать лоты", + "total": "Сумма", + "addbookmarks": "Добавить в закладки", + "mybookmarks": "Мои закладки", + "added": "Добавлено в", + "general": "Основные", + "all": "Все", + "addcategory": "Добавить категорию", + "getallfloat": "Получить все Float", + "sortfloat": "Сортировать по Float", + "viewglws": "Посмотреть на glws", + "getfloat": "Получить Float" + }, + "queue": { + "removeitem": "Убрать из очереди", + "removelower": "Убрать ниже", + "removehigher": "Убрать выше", + "removeintrade": "Убрать \"в обмене\"", + "removeequipped": "Убрать надетые", + "takelower": "Взять ниже", + "takehigher": "Взять выше", + "emptyprice": "Убрать без цен" + }, + "sort": { + "sortitem": "Сортировать", + "price": "Цена" + }, + "tradingcards": { + "buyall": "Купить все", + "reload": "Обновить список", + "dialogtitle": "Купить недостающие карты", + "showpopup": "Показать окно покупки карт" + }, + "profile": { + "communityban": "Бан сообщества", + "tradeban": "Трейд бан", + "vacban": "VAC бан", + "none": "Нет", + "banned": "Бан" + }, + "tradeoffers": { + "removeall": "Убрать все", + "takeall": "Взять все", + "totalprice": "Общая стоимость", + "notrash": "Без мусора", + "skipintrade": "Убрать предметы \"в обмене\"", + "noduplicate": "Без дубликатов", + "noofitems": "Количество предметов", + "recount": "Пересчитать", + "youritems": "Ваши предметы", + "theiritem": "Предметы друга" + }, + "nontradable": { + "counter": "предметов не доступных для обмена", + "startdate": "Первые доступны с", + "lastdate": "Последние доступны с", + "totalprice": "Всего" + }, + "contributedby": "" +} diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json new file mode 100644 index 0000000..22dda46 --- /dev/null +++ b/_locales/ru/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Описание расширения", + "message": "Добавляет функциональные возможности инвентаря Steam и торговой площадки (уведомления о предложениях, быстрая продажа, покупка, предложения обмена, проверка цены...)" + }, + "langcode": { + "description": "", + "message": "ru" + } +} diff --git a/_locales/ru/translation.json b/_locales/ru/translation.json new file mode 100644 index 0000000..ada6e4a --- /dev/null +++ b/_locales/ru/translation.json @@ -0,0 +1,158 @@ +{ + "langcode": "ru", + "about": { + "title": "О нас" + }, + "tradeoffers": { + "title": "Трейд офферы", + "signedout": "Steam: Вы вышли из аккаунта. Пожалуйста авторизуйтесь или установите SteamAPI key в Настройках", + "nooffers": "У вас нет входящих трейд офферов на данный момент", + "countoffers": "Входящих трейд офферов: {{NUMBERS}}", + "offerfrom": "Предложение обмена от {{USERNAME}}", + "offernoname": "У вас предложение обмена", + "confirmation": "Вы уверены?", + "yourprice": "Ваша цена", + "theirprice": "Их цена", + "cancel": "Отмена", + "openall": "Открыть все", + "open": "Открыть", + "declineall": "Отклонить все", + "decline": "Отклонить", + "quickaccept": "Быстро принять", + "quickrefuse": "Быстро отменить", + "payskins": "Оплатить скинами", + "buyskins": "Купить скины", + "sellskins": "Продать скины", + "giveaway": "Халява" + }, + "marketgraph": { + "title": "Графики" + }, + "bookmarks": { + "title": "Закладки", + "name": "Название", + "volume": "Продажи", + "price": "Цена", + "manage": "Управление категориями", + "selectcat": "Выбор категории", + "categorieslist": "Список категорий", + "addcategory": "Добавить категорию", + "categoryname": "Имя категории", + "add": "Добавить" + }, + "faq": { + "title": "FAQ" + }, + "settings": { + "title": "Настройки", + "inventory": { + "title": "Инвентарь", + "buyset": "Кнопка \"Купить недостающие предметы\"", + "quicksell": "Кнопка \"Быстрая продажа\"", + "instantsell": "Кнопка \"Мгновенная продажа\"", + "selectall": "Кнопка \"Выбрать все\"", + "getprice": "Кнопка \"Cтоимость инвентаря\"", + "quickselldif": "Разница при быстрой продаже", + "listdelay": "Задержка между выставлением лотов", + "hidedefaultprice": "Скрыть информацию о цене по умолчанию", + "simpify": "Упрощенный интерфейс", + "show_float_value": "Отображать значение Float", + "tradableinfo": "Показать количество предметов, недоступных для трейда" + }, + "storeprices": { + "title": "Цены на товары магазина", + "show_historical_price": "Наименьшая цена за все время", + "show_current_price": "Текущая наименьшая цена", + "show_regional_price": "Цена по регионам", + "show_all_stores": "Цены со всех магазинов (снимите чекбокс для выбора магазинов)", + "add_another_region": "Добавить" + }, + "highlight": { + "title": "Подсветка предметов в магазине Steam", + "wishlist_items": "Подсветка предметов из списка желаемого", + "owned_items": "Подсветка предметов из вашей библиотеки" + }, + "listingmarket": { + "title": "Лоты и торговая площадка", + "quickbuy": "Кнопка \"Быстрая покупка\"", + "no_mylistings": "Количество моих лотов", + "no_listings": "Количество лотов", + "no_history": "Размер страницы истории", + "totalrow": "Отображать сумму всех предметов", + "overallsum": "Отображать сумму всех предметов (все страницы)", + "highlight": "Подсвечивать переоцененные предметы", + "show_get_float": "Показывать функцию для получения \"Float\"" + }, + "tradeoffer": { + "title": "Трейд офферы", + "autocheckofferprice": "Автоматически загружать цену при обмене", + "autodecline": "Отменять недоступные трейд офферы", + "offerdelay": "Задержка проверки цены трейд оффера", + "quickaccept": "Быстро принять", + "delay": "Задержка", + "confirm": "Запросить подтверждение", + "quickrefuse": "Быстро отклонить", + "totalprice": "Показать общую стоимость трейд оффера", + "custombuttons": "Пользовательские кнопки", + "manage": "Настроить" + }, + "friends": { + "title": "Запросы в друзья", + "ignoreinvites": "Игнорировать запросы ниже", + "blockinvites": "Заблокировать запросы ниже", + "steamlevel": "Уровня Steam или если", + "private": "профиль приватный", + "total": "Всего", + "reset": "Очистить" + }, + "extprice": { + "title": "Внешние цены", + "showprice": "Показывать внешние цены", + "masslisting": "Показывать в массовых продажах", + "bgcolor": "Цвет фона", + "textcolor": "Цвет текста", + "customprovider": "Пользовательский провайдер цен" + }, + "general": { + "title": "Основные", + "txt_apikey": "Введите API ключ", + "txt_custom": "Cсылка на звук", + "auto_currency": "Авто (валюта кошелька)", + "auto_language": "Авто (язык браузера)", + "autogetprice": "Автозапрос цен", + "on_hover": "По наведению", + "pricedelay": "Задержка при запросе цены (мс)", + "success": "Успех", + "error": "Ошибка", + "displaynof": "Показывать уведомления", + "offers": "Трейд офферы", + "friends": "Запросы в друзья", + "comments": "Комментарии", + "nofsound": "Звук уведомления", + "nofsound_vol": "Громкость звука", + "displayvector": "Показывать вектор цены", + "showsteamrep": "Показывать SteamRep репутацию", + "show_permalink": "Показывать постоянную ссылку на профиль", + "show_streamlink": "Показывать ссылки на Youtube и Twitch", + "hidebanner": "Скрыть баннер спонсора", + "bookmarks": "Закладки", + "ck_show": "Отображать", + "manage": "Настроить категории", + "clear": "Очистить закладки", + "apikey": "Ключ Steam API", + "get_apikey": "Получить ваш ключ", + "currency": "Валюта", + "language": "Язык" + }, + "default": "По умолчанию", + "defaultreset": "Сбросить настройки по умолчанию", + "note": "Обновите текущие страницы, чтобы изменения вступили в силу" + }, + "newupdate": { + "updated_to": "был обновлен до версии", + "last_changes": "Последние изменения", + "view_changes": "Кликните здесь чтобы просмотреть список изменений", + "skip": "пропустите это", + "or": "или" + } +} diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json new file mode 100644 index 0000000..1ee180c --- /dev/null +++ b/_locales/sv/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Tillägets beskrivning", + "message": "Erbjuder många verktyg för steam förrådet och marknaden (Erbjuder notiser, snabb säljning/köpning och byten med priskontroller...)" + }, + "langcode": { + "description": "", + "message": "sv" + } +} diff --git a/_locales/sv/translation.json b/_locales/sv/translation.json new file mode 100644 index 0000000..71255d5 --- /dev/null +++ b/_locales/sv/translation.json @@ -0,0 +1,44 @@ +{ + "langcode": "sv", + "about": { + "title": "Om" + }, + "settings": { + "title": "Alternativ", + "inventory": { + "buyset": "\"Köp uppsättning\" knappa", + "listdelay": "Fördröjning mellan varje försäljning", + "quicksell": "\"Snabb sälj\" knapp", + "quickselldif": "Snabb sälj skillnad", + "simpify": "Förenkla UI" + }, + "listingmarket": { + "highlight": "Markera för dyra", + "no_history": "Historikens sid storlek", + "no_listings": "Antalet försäljningar", + "quickbuy": "\"Snabb köp\" knappa", + "totalrow": "Total rad" + }, + "tradeoffer": { + "autodecline": "neka otillgängliga erbjudanden", + "offerdelay": "Erbjudandes priskontroll fördröjning", + "autocheckofferprice": "Hitta priser automatiskt under erbjudanden", + "custombuttons": "Anpassade knappar" + }, + "friends": { + "ignoreinvites": "Ignorera inbjudningar under", + "blockinvites": "Blockera inbjudningar under" + }, + "general": { + "currency": "Valuta", + "displaynof": "Visa notis", + "displayvector": "Visa vektor pris", + "language": "Språk", + "nofsound": "Notis ljud", + "nofsound_vol": "ljud volym", + "showsteamrep": "Visa Steamrep" + }, + "autoreply": "Auto svara", + "note": "Du måste hämta alla aktiva sidor igen for att förändringarna ska gälla" + } +} diff --git a/_locales/tr/controls.json b/_locales/tr/controls.json new file mode 100644 index 0000000..4f18651 --- /dev/null +++ b/_locales/tr/controls.json @@ -0,0 +1,94 @@ +{ + "noreload": "Eşya satıldığında envanter yenilenmez", + "quickbuy": "Hızlı satın al", + "reloadinvent": "Envanteri yenile (alt + R)", + "selectitem": "Öğe seç", + "selectall": "Hepsini seç", + "turngems": "Cevhere çevir", + "sendgifts": "Hediye gönder", + "cancel": "İptal", + "total": "Toplam fiyat", + "loading": "Yükleniyor...", + "inventvalue": "Envanter değeri", + "steamprice": "Steam Fiyatı", + "sold24h": "Son 24 saat içinde satıldı", + "numowned": "Sahip olunan numara", + "sell1item": "1 öğe sat", + "sellnitem": "{{NUMBERS}} adet öğe sat", + "quicksell": "Bu fiyata {{PRICE}} hızlı sat", + "instantsell": "Bu fiyata {{PRICE}} anında sat", + "buymissing": "Eksik parçaları satın al", + "autoaccept": "Otomatik kabul et", + "autoadjust": "Fiyatı otomatik olarak ayarla", + "historynoselect": "Eşya seç", + "sponsors": "SIH's Sponsorları", + "functions": "Fonksiyonlar", + "externalprices": "Dış fiyatlar", + "info": { + "viewcm": "Topluluk Pazarında Görüntüle", + "startingAt": "Buradan başla", + "nosales": "Bu öğe için şuan mevcut bir listeleme yok.", + "last24": "Son 24 saatte %1$s adet satıldı", + "volume": "Birim", + "sell": "Sat" + }, + "market": { + "selectoverpriced": "Hepsini pahalı olarak seç", + "removeselected": "Seçileni kaldır", + "reloadlistings": "Listelemeleri yeniden yükle (alt + R)", + "hidelistings": "Listelemeleri gizle", + "showlistings": "Listelemeleri göster", + "total": "Toplam", + "addbookmarks": "Yer imlerine ekle", + "getallfloat": "Float değerlerini hesapla", + "sortfloat": "Float değerine göre sırala", + "viewglws": "Glws üzerinde görünümü", + "getfloat": "Float Değeri" + }, + "queue": { + "removeitem": "Kuyruktan kaldır", + "removelower": "Ucuz olanı kaldır", + "removehigher": "Pahalı olanı kaldır", + "removeintrade": "Ticaret içindekileri kaldır", + "removeequipped": "Kuşanılamış olanları kaldır", + "takelower": "Ucuz olanı al", + "takehigher": "Pahalı olanı al", + "emptyprice": "Fiyatı olmayanları kaldır" + }, + "sort": { + "sortitem": "Eşyaları sırala", + "price": "Fiyat" + }, + "tradingcards": { + "buyall": "Hepsini satın al", + "reload": "Listeyi yenile", + "dialogtitle": "Eksik kartları satın al", + "showpopup": "Kartları satın al butonunu göster" + }, + "profile": { + "communityban": "Topluluk yasaklısı", + "tradeban": "Takas yasaklısı", + "vacban": "VAC yasaklı", + "none": "Hiçbiri", + "banned": "Yasaklı" + }, + "tradeoffers": { + "removeall": "Hepsini kaldır", + "takeall": "Hepsini al", + "totalprice": "Toplam fiyatı hesapla", + "notrash": "Değersiz eşyaları kaldır", + "skipintrade": "Ticaret içindeki öğeleri atla", + "noduplicate": "Yinelenen eşyalardaki fazlalıkları kaldır", + "noofitems": "Öğe sayısı", + "recount": "Yeniden hesapla", + "youritems": "Sizin eşyalarınız", + "theiritem": "Karşı tarafın eşyaları" + }, + "nontradable": { + "counter": "Takas edilemeyen eşyalar", + "startdate": "İlk alınanları", + "lastdate": "Son alınanları", + "totalprice": "Toplam fiyat" + }, + "contributedby": "Serhat Öktem" +} diff --git a/_locales/tr/messages.json b/_locales/tr/messages.json new file mode 100644 index 0000000..9da6f9f --- /dev/null +++ b/_locales/tr/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Eklenti Açıklaması", + "message": "Steam envanteri ve market için bir çok geliştirme sağlar.(Örneğin: Teklif bildirimleri, hızlı sat/satın al butonu, takas teklifi geliştirmeleri, fiyat kontrolü gibi..)" + }, + "langcode": { + "description": "", + "message": "tr" + } +} diff --git a/_locales/tr/translation.json b/_locales/tr/translation.json new file mode 100644 index 0000000..da84c67 --- /dev/null +++ b/_locales/tr/translation.json @@ -0,0 +1,147 @@ +{ + "langcode": "tr", + "about": { + "title": "Hakkında" + }, + "tradeoffers": { + "title": "Takas Teklifleri", + "signedout": "Steam: Hesabınızdan çıkış yaptınız. Lütfen şu bağlantı adresinden giriş yapın veya Ayarlar'dan Steam API anahtarı ekleyin", + "nooffers": "Bekleyen takas teklifi yok", + "countoffers": "{{NUMBERS}} adet takas teklifiniz var", + "offerfrom": "{{USERNAME}} size bir teklifte bulundu", + "offernoname": "Takas teklifiniz var", + "confirmation": "Emin misiniz?", + "yourprice": "Sizin eşyalarınızın fiyatı", + "theirprice": "Karşı tarafın eşyalarının fiyatı", + "cancel": "İptal", + "openall": "Hepsini göster", + "open": "Açık", + "declineall": "Hepsini reddet", + "decline": "Reddet", + "quickaccept": "Hızlı kabul et", + "quickrefuse": "Hızlı reddet", + "payskins": "Silah kaplamaları(Skin) ile öde", + "buyskins": "Silah kaplamaları(Skin) satın al", + "sellskins": "Silah kaplamaları(Skin) sat", + "giveaway": "Çekiliş" + }, + "marketgraph": { + "title": "Market Grafiği" + }, + "bookmarks": { + "title": "Yer İşaretleri" + }, + "faq": { + "title": "S.S.S" + }, + "settings": { + "title": "Ayarlar", + "inventory": { + "title": "Envanter", + "buyset": "\"Satın al\" düğmesi", + "quicksell": "\"Hızlı sat\" düğmesi", + "instantsell": "\"Anında sat\" düğmesi", + "selectall": "\"Tümünü seç\" düğmesi", + "getprice": "\"Fiyatı hesapla\" envanter düğmesi", + "quickselldif": "Hızlı sat dif", + "listdelay": "Listelemeler arasındaki gecikme", + "hidedefaultprice": "Varsayılan fiyat bilgisini gizle", + "simpify": "Basitleştirilmiş Arayüz", + "show_float_value": "Float değerini göster", + "tradableinfo": "Takas edilemez öğelerin özetini göster" + }, + "storeprices": { + "title": "Eşyaların Pazar fiyatları", + "show_historical_price": "Tüm zamanların en düşük fiyatı", + "show_current_price": "En düşük gerçek fiyatı", + "show_regional_price": "Bölgesel fiyatlar", + "show_all_stores": "Tüm mağazaların fiyatları (mağazaları seçmek için işareti kaldır)", + "add_another_region": "Ekle" + }, + "highlight": { + "title": "Mağaza öğelerini vurgula", + "wishlist_items": "İstek listesindeki öğeleri vurgula", + "owned_items": "Kütüphanedeki öğeleri vurgula" + }, + "listingmarket": { + "title": "Listeleme & Pazar", + "quickbuy": "\"Hızlı satın al\" düğmesi", + "no_mylistings": "Satılan listelerin sayısı", + "no_listings": "Liste sayısı", + "no_history": "Geçmiş sayfası boyutu", + "totalrow": "Toplam sıra", + "overallsum": "Öğelerin özet fiyatını (tüm sayfalarda) göster", + "highlight": "Aşırı fiyatlı öğeleri vurgula", + "show_get_float": "\"Float\" fonksiyonunu göster" + }, + "tradeoffer": { + "title": "Takas Teklifi", + "autocheckofferprice": "Teklif penceresi açıldığında fiyatları hesapla", + "autodecline": "Geçersiz teklifleri otomatik reddet", + "offerdelay": "Teklif fiyatını kontrol etme gecikmesi", + "quickaccept": "Hızlı kabul et", + "delay": "Gecikme", + "confirm": "Onay diyaloğunu göster", + "quickrefuse": "Hızlı reddet", + "totalprice": "Toplam teklif fiyatını göster", + "custombuttons": "Özel butonlar", + "manage": "Yönet" + }, + "friends": { + "title": "Arkadaşlık İstekleri (0 = Kapalı)", + "ignoreinvites": "Şundan aşağı olan davetleri reddet", + "blockinvites": "Şundan aşağı olan davetleri engelle", + "steamlevel": "Steam seviyesi veya", + "private": "Gizli", + "total": "Toplam", + "reset": "Sıfırla" + }, + "extprice": { + "title": "Dışarıdan gelen fiyatlar", + "showprice": "Dışarıdan gelen fiyatları göster", + "masslisting": "Toplu listeleme için kullan", + "bgcolor": "Arkaplan rengi", + "textcolor": "Yazı rengi", + "customprovider": "Özel fiyat sağlayıcı" + }, + "general": { + "title": "Genel", + "txt_apikey": "API anahtarınızı girin", + "txt_custom": "Özel ses için bağlantı adresi", + "auto_currency": "Otomatik (Steam cüzdanı birimini kullan)", + "auto_language": "Otomatik (Tarayıcı konumunu kullan)", + "autogetprice": "Fiyatları otomatik al", + "on_hover": "İmleç üzerine getirildğinde", + "pricedelay": "Fiyat hesaplama geciklemesi (ms)", + "success": "Başarılı", + "error": "Hata", + "displaynof": "Ekran bildirimleri", + "offers": "Takas teklifleri", + "friends": "Arkadaşlık istekleri", + "comments": "Yorumlar", + "nofsound": "Bildirim sesi", + "nofsound_vol": "Bildirim sesi seviyesi", + "displayvector": "Vektörel fiyatı göster", + "showsteamrep": "Steamrep'i göster", + "hidebanner": "Sponsor afişlerini gizle", + "bookmarks": "Yer İşaretleri", + "ck_show": "göster", + "manage": "Kategorileri yönet", + "clear": "Yer işaretlerini temizle", + "apikey": "Steam API anahtarı", + "get_apikey": "API anahtarınızı alın", + "currency": "Para Birimi", + "language": "Dil" + }, + "default": "Varsayılan", + "defaultreset": "Varsayılanlara sıfırla", + "note": "Değişikliklerin etkinleşmesi için geçerli sayfaları yenilemeniz gerekiyor" + }, + "newupdate": { + "updated_to": "Bu sürüme güncellendi", + "last_changes": "Son değişiklikler", + "view_changes": "Güncelleme geçmişini görmek için buraya tıkla", + "skip": "Bunu geç", + "or": "veya" + } +} diff --git a/_locales/uk/messages.json b/_locales/uk/messages.json new file mode 100644 index 0000000..58abf4f --- /dev/null +++ b/_locales/uk/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Опис розширення", + "message": "Забезпечує багато нових можливостей для інвентаря і ринку Steam (сповіщення про обміни, швидка продажа, купівля, надсилання обмінів, перевірка ціни і тд.)" + }, + "langcode": { + "description": "", + "message": "uk" + } +} diff --git a/_locales/uk/translation.json b/_locales/uk/translation.json new file mode 100644 index 0000000..4d16979 --- /dev/null +++ b/_locales/uk/translation.json @@ -0,0 +1,49 @@ +{ + "langcode": "uk", + "about": { + "title": "Про" + }, + "bookmarks": { + "title": "Закладки" + }, + "faq": { + "title": "ЧаПи" + }, + "settings": { + "title": "Налаштування", + "inventory": { + "buyset": "\"Встановити купівлю\" кнопки", + "quicksell": "\"Швидка продажа\" кнопка", + "quickselldif": "Різниця швидкої продажі", + "listdelay": "Затримка між оновленнями" + }, + "listingmarket": { + "quickbuy": "\"Швидка купівля\" кнопки", + "no_listings": "Кількість лотів", + "no_history": "Розмір сторінки історії", + "totalrow": "Всього рядків", + "highlight": "Виділити зависоку ціну" + }, + "tradeoffer": { + "autocheckofferprice": "Автоматично отривувати ціну коли є обмін", + "autodecline": "Відхиляти неактивні обміни", + "offerdelay": "Затримка між перевіркою ціни в обміні", + "custombuttons": "Користувацькі кнопки" + }, + "friends": { + "ignoreinvites": "Ігнорувати запрошення нижче", + "blockinvites": "Заблокувати запрошення нижче" + }, + "general": { + "currency": "Валюта", + "displaynof": "Показувати сповіщення", + "displayvector": "Показати вектор ціни", + "language": "Мова", + "nofsound": "Звук сповіщення", + "nofsound_vol": "Гучність звуку", + "showsteamrep": "Показувати Steamrep" + }, + "autoreply": "Автоматична відповідь", + "note": "Оновіть поточну сторінку, щоб зміни набули чинності" + } +} diff --git a/_locales/vi/messages.json b/_locales/vi/messages.json new file mode 100644 index 0000000..00b8b50 --- /dev/null +++ b/_locales/vi/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "Chương trình mở rộng bao gồm nhiều tiện ích hỗ trợ traders đánh giá và mua bán dễ dàng hơn." + }, + "langcode": { + "description": "", + "message": "vi" + } +} diff --git a/_locales/vi/translation.json b/_locales/vi/translation.json new file mode 100644 index 0000000..034596f --- /dev/null +++ b/_locales/vi/translation.json @@ -0,0 +1,38 @@ +{ + "langcode": "vi", + "settings": { + "title": "Cài đặt", + "inventory": { + "buyset": "Nút \"Buy set\"", + "quicksell": "Nút \"Quick sell\"", + "quickselldif": "Chênh lệch khi bán nhanh", + "listdelay": "Delay khi bán", + "simpify": "Đơn giản hóa UI" + }, + "listingmarket": { + "quickbuy": "Nút \"Quick buy\"", + "no_history": "Số dòng/trang (lịch sử market)", + "no_listings": "Số dòng trên trang listings", + "totalrow": "Dòng giá tổng" + }, + "tradeoffer": { + "autocheckofferprice": "Tự lấy giá khi offer trade", + "custombuttons": "Nút lấy nhanh", + "offerdelay": "Thời gian delay lấy giá" + }, + "friends": { + "ignoreinvites": "Bỏ qua lời mời", + "blockinvites": "Block lời mời" + }, + "general": { + "displaynof": "Hiện cảnh báo trade offer", + "nofsound": "Âm thanh cảnh báo", + "nofsound_vol": "Âm lượng", + "currency": "Đơn vị tiền", + "showsteamrep": "Hiện Steamrep", + "language": "Ngôn ngữ", + "displayvector": "Hiển thị giá trung gian" + }, + "note": "Bạn phải refresh các trang đang chạy để có hiệu lực" + } +} diff --git a/_locales/zh-CN/messages.json b/_locales/zh-CN/messages.json new file mode 100644 index 0000000..a9e9130 --- /dev/null +++ b/_locales/zh-CN/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "集合多种 Steam 库存以及市场的实用工具 (报价通知、快速出售、快速购买、交易报价、检查价格……)" + }, + "langcode": { + "description": "", + "message": "zh" + } +} diff --git a/_locales/zh-CN/translation.json b/_locales/zh-CN/translation.json new file mode 100644 index 0000000..fd9b67e --- /dev/null +++ b/_locales/zh-CN/translation.json @@ -0,0 +1,49 @@ +{ + "langcode": "zh", + "about": { + "title": "关于" + }, + "bookmarks": { + "title": "Bookmarks" + }, + "faq": { + "title": "帮助" + }, + "settings": { + "title": "设置", + "inventory": { + "buyset": "购买套装按钮", + "listdelay": "列表延迟", + "quicksell": "快速出售按钮", + "quickselldif": "快速出售差值", + "simpify": "简化 UI" + }, + "listingmarket": { + "highlight": "价格过高时高亮显示", + "totalrow": "总行数", + "no_history": "历史页面大小", + "no_listings": "列表显示数量", + "quickbuy": "快速购买按钮" + }, + "tradeoffer": { + "autodecline": "拒绝无效报价", + "offerdelay": "检查报价价格延迟", + "autocheckofferprice": "报价时自动获取价格", + "custombuttons": "自定义按钮" + }, + "friends": { + "blockinvites": "屏蔽以下邀请", + "ignoreinvites": "忽略以下邀请" + }, + "general": { + "currency": "货币", + "displaynof": "显示通知", + "language": "语言", + "nofsound": "通知声音", + "nofsound_vol": "音量", + "showsteamrep": "邀请页显示Steam信用评论" + }, + "autoreply": "自动回复", + "note": "你需要刷新当前页面使更改生效" + } +} diff --git a/_locales/zh-TW/controls.json b/_locales/zh-TW/controls.json new file mode 100644 index 0000000..c947df6 --- /dev/null +++ b/_locales/zh-TW/controls.json @@ -0,0 +1,57 @@ +{ + "noreload": "\u6b63\u5728\u51fa\u552e\u7269\u54c1\u6642\u4e0d\u5141\u8a31\u91cd\u6574\u7269\u54c1\u5eab", + "quickbuy": "\u5feb\u901f\u8cfc\u8cb7", + "reloadinvent": "\u91cd\u65b0\u8f09\u5165\u7269\u54c1\u5eab (alt + R)", + "selectitem": "\u9078\u64c7\u591a\u9805\u7269\u54c1", + "selectall": "\u9078\u64c7\u672c\u9801\u5168\u90e8", + "turngems": "\u8f49\u63db\u6210\u5bf6\u73e0", + "sendgifts": "\u4ee5\u79ae\u7269\u50b3\u9001", + "cancel": "\u53d6\u6d88", + "sell1item": "\u8ce3\u51fa 1 \u9805\u7269\u54c1", + "sellnitem": "\u8ce3\u51fa {{NUMBERS}} \u9805\u7269\u54c1", + "quicksell": "\u4ee5 {{PRICE}} \u5143\u5feb\u901f\u4e0a\u67b6", + "instantsell": "\u4ee5 {{PRICE}} \u4f4e\u50f9\u7acb\u5373\u51fa\u552e", + "buymissing": "\u8cfc\u8cb7\u7f3a\u5c11\u7684\u90e8\u5206", + "autoaccept": "\u81ea\u52d5\u63a5\u53d7", + "autoadjust": "\u81ea\u52d5\u8abf\u6574\u50f9\u683c", + "historynoselect": "\u9078\u64c7\u7269\u54c1", + "queue": { + "removeitem": "\u5f9e\u4f47\u5217\u79fb\u9664", + "removelower": "\u79fb\u9664\u8f03\u4f4e\u7684", + "removehigher": "\u79fb\u9664\u8f03\u9ad8\u7684", + "removeintrade": "\u79fb\u9664\u6b63\u7528\u65bc\u4ea4\u6613\u7684", + "removeequipped": "\u79fb\u9664\u88dd\u5099\u4e2d\u7684", + "takelower": "\u9078\u64c7\u8f03\u4f4e\u7684", + "takehigher": "\u9078\u64c7\u8f03\u9ad8\u7684", + "emptyprice": "\u79fb\u9664\u67e5\u7121\u552e\u50f9\u7684" + }, + "sort": { + "sortitem": "\u6392\u5e8f\u7269\u54c1", + "price": "\u50f9\u683c" + }, + "tradingcards": { + "buyall": "\u8cfc\u8cb7\u6574\u5957", + "reload": "\u91cd\u6574\u6e05\u55ae", + "dialogtitle": "\u8cfc\u8cb7\u7f3a\u5c11\u7684\u90e8\u5206", + "showpopup": "\u986f\u793a\u5361\u7247\u8cfc\u8cb7\u8996\u7a97" + }, + "tradeoffers": { + "removeall": "\u79fb\u9664\u5168\u90e8", + "takeall": "\u9078\u64c7\u672c\u9801\u5168\u90e8", + "totalprice": "\u53d6\u5f97\u7e3d\u50f9\u683c", + "notrash": "\u7565\u904e\u5783\u573e", + "skipintrade": "\u7565\u904e\u4ea4\u6613\u4e2d\u7684\u7269\u54c1", + "noduplicate": "\u7565\u904e\u91cd\u8907", + "noofitems": "\u7269\u54c1\u6578\u91cf", + "recount": "\u91cd\u65b0\u8a08\u6578", + "youritems": "\u4f60\u7684\u7269\u54c1", + "theiritem": "\u5c0d\u65b9\u7684\u7269\u54c1" + }, + "nontradable": { + "counter": "\u7269\u54c1\u76ee\u524d\u4e0d\u80fd\u4ea4\u6613", + "startdate": "\u958b\u59cb\u65e5\u671f", + "lastdate": "\u6700\u5f8c\u65e5\u671f", + "totalprice": "\u7e3d\u91d1\u984d" + }, + "contributedby": "LaZycAtx" +} \ No newline at end of file diff --git a/_locales/zh-TW/messages.json b/_locales/zh-TW/messages.json new file mode 100644 index 0000000..a9e9130 --- /dev/null +++ b/_locales/zh-TW/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "集合多种 Steam 库存以及市场的实用工具 (报价通知、快速出售、快速购买、交易报价、检查价格……)" + }, + "langcode": { + "description": "", + "message": "zh" + } +} diff --git a/_locales/zh-TW/translation.json b/_locales/zh-TW/translation.json new file mode 100644 index 0000000..9bb31a7 --- /dev/null +++ b/_locales/zh-TW/translation.json @@ -0,0 +1,135 @@ +{ + "langcode": "zhtw", + "about": { + "title": "\u95dc\u65bc" + }, + "tradeoffers": { + "title": "\u4ea4\u6613\u8acb\u6c42", + "signedout": "Steam: \u4f60\u5df2\u767b\u51fa\u5e33\u865f. \u8acb\u767b\u5165\u6216\u8005\u5728\u8a2d\u5b9a\u4e2d\u586b\u5165\u4f60\u7684 SteamAPI key", + "nooffers": "\u76ee\u524d\u6c92\u6709\u4ea4\u6613\u8acb\u6c42", + "countoffers": "\u4f60\u6709 {{NUMBERS}} \u500b\u4ea4\u6613\u8acb\u6c42", + "offerfrom": "\u4f60\u6709\u4f86\u81ea {{USERNAME}} \u7684\u4ea4\u6613\u8acb\u6c42", + "offernoname": "\u4f60\u6709\u4ea4\u6613\u8acb\u6c42", + "confirmation": "\u78ba\u5b9a?", + "yourprice": "\u4f60\u7684\u7269\u54c1\u50f9\u503c", + "theirprice": "\u5c0d\u65b9\u7684\u7269\u54c1\u50f9\u503c", + "cancel": "\u53d6\u6d88", + "openall": "\u958b\u555f\u5168\u90e8", + "open": "\u958b\u555f", + "declineall": "\u62d2\u7d55\u5168\u90e8", + "decline": "\u62d2\u7d55", + "quickaccept": "\u5feb\u901f\u63a5\u53d7", + "quickrefuse": "\u5feb\u901f\u62d2\u7d55", + "payskins": "\u4ee5Skin\u4ea4\u6613", + "buyskins": "\u8cfc\u8cb7Skin", + "sellskins": "\u51fa\u552eSkin", + "giveaway": "\u653e\u9001" + }, + "marketgraph": { + "title": "\u5e02\u96c6\u5716\u8868" + }, + "bookmarks": { + "title": "\u66f8\u7c64" + }, + "faq": { + "title": "\u5e38\u898b\u554f\u984c" + }, + "settings": { + "title": "\u8a2d\u5b9a", + "inventory": { + "title": "\u7269\u54c1\u5eab", + "buyset": "\"\u8cfc\u8cb7\u6574\u5957\" \u6309\u9215", + "quicksell": "\"\u5feb\u901f\u4e0a\u67b6\" \u6309\u9215", + "instantsell": "\"\u7acb\u5373\u4f4e\u50f9\u51fa\u552e\" \u6309\u9215", + "selectall": "\"\u9078\u53d6\u6574\u9801\" \u6309\u9215", + "getprice": "\"\u8a08\u7b97\u7e3d\u50f9\u503c\" \u7269\u54c1\u5eab\u6309\u9215", + "quickselldif": "\u5feb\u901f\u5dee\u984d\u51fa\u552e", + "listdelay": "\u5217\u8868\u5ef6\u9072", + "hidedefaultprice": "\u96b1\u85cf\u9810\u8a2d\u50f9\u683c\u8cc7\u8a0a", + "simpify": "\u7c21\u5316\u4ecb\u9762", + "tradableinfo": "\u986f\u793a\u4e0d\u53ef\u4ea4\u6613\u7269\u54c1\u7684\u8cc7\u8a0a" + }, + "storeprices": { + "title": "Steam\u5546\u5e97\u50f9\u683c", + "show_historical_price": "\u986f\u793a\u6b77\u53f2\u6700\u4f4e\u50f9\u683c", + "show_current_price": "\u986f\u793a\u76ee\u524d\u6700\u4f4e\u50f9\u683c", + "show_regional_price": "\u986f\u793a\u5176\u4ed6\u5730\u5340\u50f9\u683c", + "add_another_region": "\u65b0\u589e" + }, + "highlight": { + "title": "\u6a19\u8a18Steam\u5546\u5e97\u7269\u54c1", + "wishlist_items": "\u6a19\u8a18\u6709\u5728\u9858\u671b\u6e05\u55ae\u4e2d\u7684\u7269\u54c1", + "owned_items": "\u6a19\u8a18\u5df2\u7d93\u64c1\u6709\u7684\u7269\u54c1" + }, + "listingmarket": { + "title": "\u6e05\u55ae\u8207\u5e02\u96c6", + "quickbuy": "\"\u5feb\u901f\u8cfc\u8cb7\" \u6309\u9215", + "no_listings": "\u5217\u8868\u6578\u91cf", + "no_history": "\u5e02\u96c6\u6b77\u53f2\u7d00\u9304\u6578\u91cf", + "totalrow": "\u7e3d\u9801\u6578", + "highlight": "\u6a19\u8a18\u552e\u50f9\u53ef\u80fd\u904e\u9ad8\u7684\u9805\u76ee" + }, + "tradeoffer": { + "title": "\u4ea4\u6613\u8acb\u6c42", + "autocheckofferprice": "\u653e\u4e0a\u7269\u54c1\u6642\u81ea\u52d5\u7372\u53d6\u50f9\u503c", + "autodecline": "\u62d2\u7d55\u7121\u6548\u7684\u4ea4\u6613\u8acb\u6c42", + "offerdelay": "\u6aa2\u67e5\u50f9\u503c\u7684\u5ef6\u9072\u6642\u9593", + "quickaccept": "\u5feb\u901f\u63a5\u53d7", + "delay": "\u5ef6\u9072", + "confirm": "\u986f\u793a\u78ba\u8a8d\u8996\u7a97", + "quickrefuse": "\u5feb\u901f\u62d2\u7d55", + "totalprice": "\u986f\u793a\u4ea4\u6613\u7e3d\u50f9\u503c", + "custombuttons": "\u81ea\u5b9a\u7fa9\u6309\u9215", + "manage": "\u7ba1\u7406" + }, + "friends": { + "title": "\u597d\u53cb\u8acb\u6c42\u81ea\u52d5\u7ba1\u7406 (0 = \u95dc\u9589)", + "ignoreinvites": "\u5ffd\u7565\u4f4e\u65bc", + "blockinvites": "\u9ed1\u55ae\u4f4e\u65bc", + "steamlevel": "Steam \u7b49\u7d1a\u6216", + "private": "\u79c1\u5bc6\u500b\u4eba\u9801\u9762", + "total": "\u7e3d\u5171", + "reset": "\u91cd\u8a2d" + }, + "extprice": { + "title": "\u5916\u90e8\u7269\u54c1\u50f9\u503c(CSGO,TF2...)", + "showprice": "\u986f\u793a\u5916\u90e8\u50f9\u503c", + "masslisting": "\u5927\u91cf\u5217\u51fa\u7269\u54c1\u6642\u986f\u793a", + "bgcolor": "\u80cc\u666f\u984f\u8272", + "textcolor": "\u6587\u5b57\u984f\u8272", + "customprovider": "\u81ea\u8a02\u5916\u90e8\u50f9\u503c\u63d0\u4f9b\u8005" + }, + "general": { + "title": "\u4e00\u822c", + "txt_apikey": "\u8f38\u5165\u4f60\u7684 API key", + "txt_custom": "\u81ea\u8a02\u97f3\u6548\u7684\u7db2\u5740", + "auto_currency": "\u81ea\u52d5 (Steam\u9322\u5305\u8ca8\u5e63)", + "auto_language": "\u81ea\u52d5 (\u700f\u89bd\u5668\u8a9e\u8a00)", + "autogetprice": "\u81ea\u52d5\u53d6\u5f97\u50f9\u683c", + "on_hover": "\u6ed1\u9f20\u6307\u8457", + "pricedelay": "\u53d6\u5f97\u50f9\u683c\u7684\u5ef6\u9072\u6642\u9593 (ms)", + "success": "\u6210\u529f", + "error": "\u932f\u8aa4", + "displaynof": "\u986f\u793a\u901a\u77e5", + "offers": "\u4ea4\u6613\u8acb\u6c42", + "friends": "\u597d\u53cb\u8acb\u6c42", + "comments": "\u8a55\u8ad6", + "nofsound": "\u901a\u77e5\u97f3\u6548", + "nofsound_vol": "\u901a\u77e5\u97f3\u91cf", + "displayvector": "\u986f\u793a vector \u50f9\u503c", + "showsteamrep": "\u986f\u793a\u5c0d\u65b9\u7684\u4fe1\u7528\u8a55\u50f9", + "hidebanner": "\u96b1\u85cf\u8d0a\u52a9\u8005\u7684\u5167\u5bb9", + "bookmarks": "\u66f8\u7c64", + "ck_show": "\u986f\u793a", + "manage": "\u7ba1\u7406\u985e\u5225", + "clear": "\u6e05\u9664\u66f8\u7c64", + "apikey": "Steam API key", + "get_apikey": "\u53d6\u5f97\u4f60\u7684 API Key", + "currency": "\u8ca8\u5e63", + "language": "\u8a9e\u8a00" + }, + "default": "\u9810\u8a2d", + "defaultreset": "\u91cd\u8a2d\u70ba\u9810\u8a2d", + "note": "\u4f60\u9700\u8981\u91cd\u6574\u7576\u524d\u9801\u9762\u4f86\u5957\u7528\u65b0\u8a2d\u5b9a" + } +} diff --git a/_locales/zh/messages.json b/_locales/zh/messages.json new file mode 100644 index 0000000..39b001e --- /dev/null +++ b/_locales/zh/messages.json @@ -0,0 +1,10 @@ +{ + "extension_description": { + "description": "Extension's description", + "message": "集合多种 Steam 库存以及市场的实用工具 (报价通知、快速出售、快速购买、交易报价、检查价格……)" + }, + "langcode": { + "description": "", + "message": "zh" + } +} diff --git a/_locales/zh/translation.json b/_locales/zh/translation.json new file mode 100644 index 0000000..fd9b67e --- /dev/null +++ b/_locales/zh/translation.json @@ -0,0 +1,49 @@ +{ + "langcode": "zh", + "about": { + "title": "关于" + }, + "bookmarks": { + "title": "Bookmarks" + }, + "faq": { + "title": "帮助" + }, + "settings": { + "title": "设置", + "inventory": { + "buyset": "购买套装按钮", + "listdelay": "列表延迟", + "quicksell": "快速出售按钮", + "quickselldif": "快速出售差值", + "simpify": "简化 UI" + }, + "listingmarket": { + "highlight": "价格过高时高亮显示", + "totalrow": "总行数", + "no_history": "历史页面大小", + "no_listings": "列表显示数量", + "quickbuy": "快速购买按钮" + }, + "tradeoffer": { + "autodecline": "拒绝无效报价", + "offerdelay": "检查报价价格延迟", + "autocheckofferprice": "报价时自动获取价格", + "custombuttons": "自定义按钮" + }, + "friends": { + "blockinvites": "屏蔽以下邀请", + "ignoreinvites": "忽略以下邀请" + }, + "general": { + "currency": "货币", + "displaynof": "显示通知", + "language": "语言", + "nofsound": "通知声音", + "nofsound_vol": "音量", + "showsteamrep": "邀请页显示Steam信用评论" + }, + "autoreply": "自动回复", + "note": "你需要刷新当前页面使更改生效" + } +} diff --git a/_metadata/computed_hashes.json b/_metadata/computed_hashes.json new file mode 100644 index 0000000..a90856e --- /dev/null +++ b/_metadata/computed_hashes.json @@ -0,0 +1 @@ +{"file_hashes":[{"block_hashes":["rWK1nJnbItRZuDw36DVeg9Q5yFokSY8jGI8BNwljA90="],"block_size":4096,"path":"_locales/bg/controls.json"},{"block_hashes":["hUKLxK3QCB7uHi1IBNwzCmvyyoKYnXM4u2TV4z3Fw/M="],"block_size":4096,"path":"_locales/bg/translation.json"},{"block_hashes":["IWPdr/M4/fylNR3+4S6TzcbFrPILtP9K5wowQjHt5ys="],"block_size":4096,"path":"_locales/cs/controls.json"},{"block_hashes":["tCk9jAQaLaAgyguT4qEP5Cc9jEzjpdIGMEc6fz2EhVU=","xUiaCEcT6Fqom6EJ1dHNWAVFjjFd+v//Fl6hhn8V1gc="],"block_size":4096,"path":"_locales/cs/translation.json"},{"block_hashes":["OSg/puqZlRjrcYAQLQouJzu9bsh1bxthu1vCnT8Li5c="],"block_size":4096,"path":"_locales/de/translation.json"},{"block_hashes":["wwUayvOS8Gq0Gbt83RIdfNtE7IX/arCQEhe6AgKyzLA="],"block_size":4096,"path":"_locales/en/controls.json"},{"block_hashes":["WERZUm9zEbnBRyT3s6QOk8HyARNlGbiM279upJfieEo=","hqd/l/EtYY5mt1Dmo3EQ/HfnU7gr33lWGvWY0fbzlK4="],"block_size":4096,"path":"_locales/en/translation.json"},{"block_hashes":["YBOixxpElvwi7y6ZkgtXk1GdAyXZSarIKTStaqYrp68="],"block_size":4096,"path":"_locales/es/translation.json"},{"block_hashes":["kb2EtJQeImTliPg5X8HZcLwIsa59n7rLeKknZT3xMy0="],"block_size":4096,"path":"_locales/fr/translation.json"},{"block_hashes":["iZ6DUSUwoxJff2hF6bno9kRy5mDRfV14HTaeCWfp2qU="],"block_size":4096,"path":"_locales/it/translation.json"},{"block_hashes":["1eLsynUkqVjgn5cmUJ6UAgKQAiaeLRIOt4LNrHt2Vxs="],"block_size":4096,"path":"_locales/ka/messages.json"},{"block_hashes":["kwvtQ1XAvAmrdzd+D6FAIKz91ibE3WUvxR8jfs2cKpc="],"block_size":4096,"path":"_locales/ka/translation.json"},{"block_hashes":["NU2jE6ZtTd0lT/b+h2rTASfzf/zXgjksvZVplCfS3s8="],"block_size":4096,"path":"_locales/lv/translation.json"},{"block_hashes":["ls1ZdZL85IY4QiUmEiiODB0qEBjALEfOTISsjqD6aLE="],"block_size":4096,"path":"_locales/no/controls.json"},{"block_hashes":["Krw3Mou4vTHv/urGx4P3sxZrY0lChx7NZrK7Qd3y6VA=","DGIS6lav0s6CKcS/HbjH6SGK/kh4N2DxV9SgP8cgl24="],"block_size":4096,"path":"_locales/no/translation.json"},{"block_hashes":["2UK2Euq0tM/d0aXTy9ug3WQkvb75QDrncEmlQs3WQG0="],"block_size":4096,"path":"_locales/pl/translation.json"},{"block_hashes":["DLVJY31dw7PZ9BshNircj1p9cZ7DBf+/yuhoNo4ISq8="],"block_size":4096,"path":"_locales/pt/translation.json"},{"block_hashes":["/YydtLTOZRWuscruzbUzudGf5neCTGRAY26S47jUzIM="],"block_size":4096,"path":"_locales/ro/translation.json"},{"block_hashes":["KDf1dGRXVRRio1H6zYHwM6mR5xH4ffkDGXJlgDlgRac=","IACPtjadvbHnlnoJ5FwFHEEVbsB4pzIPkNNpbWY6Byg="],"block_size":4096,"path":"_locales/ru/controls.json"},{"block_hashes":["74h2J7KlyMuQzHdBEU69MM+l5tAAEv5SQMDHHPzAjpg=","CcH5EODspHBGoYKhmKc1vUS78akghr+VzPYQp1NWNTc="],"block_size":4096,"path":"_locales/ru/translation.json"},{"block_hashes":["iCB7n+FY+I3eFe7zHOcHvD8rl+ECaYx9yIyqD+6Z8QI="],"block_size":4096,"path":"_locales/sv/translation.json"},{"block_hashes":["w7uEEqEA2Z12gAtA47LY68YXu+3M5hFwejw11X8K4/8="],"block_size":4096,"path":"_locales/tr/controls.json"},{"block_hashes":["xL4aFPzTD/rRkxtrXh5x/fzecOsPvK0EVxkhdFDtmj4=","uWxLwWXZJCPleEG13nVINN9Rezwq72zZ6RrdGCx2BAE="],"block_size":4096,"path":"_locales/tr/translation.json"},{"block_hashes":["v1jsQvEYXnDn2WX5IRU/JCYBC8ztO/vWSP4yfRlqnWM="],"block_size":4096,"path":"_locales/uk/translation.json"},{"block_hashes":["xiGgnfA7ZiZ3T1ZfKgF8eLZnbHR3p+bWznat2+UG6b0="],"block_size":4096,"path":"_locales/vi/translation.json"},{"block_hashes":["+Wo5qz4u5csTaaFcSEOltRtax9v2igqRaRAvU3LW2PE="],"block_size":4096,"path":"_locales/zh-CN/messages.json"},{"block_hashes":["Z1mw/6FrkO7a/KI/GP5F1FhJuCn9NSpl8IGHhc6Cqt8="],"block_size":4096,"path":"_locales/zh-CN/translation.json"},{"block_hashes":["mV4O0O1HxWRjPwnojyLaswcP3lWL/eCwQtnFaRo3Ws8="],"block_size":4096,"path":"_locales/zh-TW/controls.json"},{"block_hashes":["+Wo5qz4u5csTaaFcSEOltRtax9v2igqRaRAvU3LW2PE="],"block_size":4096,"path":"_locales/zh-TW/messages.json"},{"block_hashes":["vQFRjjjU1INAxrzHLTdOBSQvImJt+llwPF9ta7N3/2Y=","zmvdNA6W1cdM0dnXwn2SbQKshE4KJeXUl5yuvjzgMeU="],"block_size":4096,"path":"_locales/zh-TW/translation.json"},{"block_hashes":["Z1mw/6FrkO7a/KI/GP5F1FhJuCn9NSpl8IGHhc6Cqt8="],"block_size":4096,"path":"_locales/zh/translation.json"},{"block_hashes":["H/Y5ogFRPaunmeD43p+ssZ55BrHbqut2D5Y2axhZYQk=","t4fMjgLmA3eaEbxiMiBxzOFwLtIlQ+4WHOd+auYf0Yw=","1ZcV6HWP46pbZYQWq3VFXXA1wLCOvI0Bhc/VoI2S2NI=","VYovP3BExkQthH8S+3tNZD52djNmRxgOf6SXPgHV4DI="],"block_size":4096,"path":"assets/Communication-channel.ogg"},{"block_hashes":["uar1puv+EW/Ie79O0NWhTiENOo++nLOG9X4pIphSQBI=","X6UcA1MEg9x/4NyBzyfYBB9e42XDONH70mXziioq/q0=","pzSAKlhItoV9K63DXogIEBSdr0Ctz7K6s+uS1zn7JKQ="],"block_size":4096,"path":"assets/Gets-in-the-way.ogg"},{"block_hashes":["+8focXaYz5Qny5XTOs/GN10DJ04d6g/ddJz8l/Hm1pE=","ruUhAnzFiF9W7CFuucbXc5hNKmfvnWsOtFEVI/vhyWY=","LzIj5gK8f/pwnDfnLgfHpTJTeMd8I0adKNCBZHYVfbg="],"block_size":4096,"path":"assets/Isnt-it.ogg"},{"block_hashes":["q5oNjUbOVUlzHM7pImm8Z9AksH2XJtwTs57Iiwa7TyI=","oAH9cLwMHmCRq6mwZpmuolUT2CUPchIKqzEkd7dvcK0=","MQN30VE2iwxLYY2L8PmOWzewco2OzOT+nMxkUhtQx6c=","X7NgL2GI5f+1IC59ZWLKlHCsCO0G7IenxgJugxQ7ziI=","4G/kjvyTQZV6jXKIJ6z0R1Wqm24WQvrOnslrurIdAMs="],"block_size":4096,"path":"assets/Just-like-magic.ogg"},{"block_hashes":["X3AqwQrRFCKW2YFjRfwldKxeH9uKrKSk5FZerrDvYZ8=","BtAObtUC3xUSgoNXXCQvGgQfFVndjHyPZphn1//tAP4="],"block_size":4096,"path":"assets/System-fault.ogg"},{"block_hashes":["BHFX0MYomLU7lWxPp0mLWVtv+KbNvPVWaJAx0OxG5sI=","MI2vV/P4uOLwygNc+05WMmOoug1xwswRnShIiZfSfd0="],"block_size":4096,"path":"assets/badge_dev.png"},{"block_hashes":["dRW0mTfplX5M6VbbrmTmjoUUd9U2aqH0fTl3KRuMLa8=","hs4ylgSHdIjw7YNvEdaQLbILWkgMq8KfFTDrTk/2eeQ="],"block_size":4096,"path":"assets/badge_don1.png"},{"block_hashes":["7xlVrnV8i5ZsgySDUDMb06MPZYztEfOH+OvwWrM2hik="],"block_size":4096,"path":"assets/blank.gif"},{"block_hashes":["bjdn1IA4mzEAzzlnr9Nn0cUh+5FBgAjuaQVZoq4ohro="],"block_size":4096,"path":"assets/bookmarked.png"},{"block_hashes":["6OGCEx1xAgKOsgHZaIL+1azgPKFsd5eKSMR0osA+uzc="],"block_size":4096,"path":"assets/btbg.jpg"},{"block_hashes":["zVdshKzZwqqf9dq3zUA/kGJYODl+pUum6qfd9lmXcys=","ocpVByiYYCsvN7lAVVsDzOzNIYJkRQifgiabRmGuBHM=","sNX09rj4Uhjz0PtX0k+heQQkYE2irdA3pCc47zc/Ezw=","iXjBBN/9gaAowwl9Uo7LIV7qSaBHD2LfDvRFikUUR6Y=","xG7QucgjY05nCaTVG/7Ovtzm1xOWCXkhYo9KY4seJ6A="],"block_size":4096,"path":"assets/coins.ogg"},{"block_hashes":["3piteCXNo6Mzq5IZuPVDZtoemTcWPKUd5CHXEdeDx5A=","gKU7cOY4H5zi506j2WLnfrtxTmsg3iWYmvSkQPRspGw=","M/oz4ka1lrbOgjL678uC06LJrYsUYmo4mvKyFsm6lPI=","01GqZhGrHFIEqkHFG5furaxEqci6fq/WKGjPEzL53FM=","Ntv5SETL2dtEzDYuXBLC7t7s7LbSZv/KhZ9GQos2Jug=","Pg+TseDYl9l7FSodU9bk4WBb1IbG0qdr/w6C4E0pX5g=","mDrm0WKleplT6TE+++2KaeE8KCfpmjt+Hm+8PcDXYjw=","EiDINncXptDmyIXTS09CUsdKhFYCeKyXDhBaW3Yqu2o=","GnJSXncBf3V6+rgzVcteOrncboozQR3ECe7R2sHsZ9g=","Q/6CrOzEN9c/rcNcMWJFtKhuZIPz9osdcOl0B1xcwG0=","inHM0n7qkzmoN9LxHEBv8HqnRe669XHgOkhpiqSvrZA=","Ga14h5dHFRYt7iZ8KTVyx3ZyyT4N1VuKarv5HY3yIwE=","t7zYQWhu2fjLb/GfVs0wvBjYS7mIKxnO8x8mSFm5J9Y=","VkErlKBLL0e0vPQqnjldNlJ6pkYvwwS+nO3hwUiW9Ng=","zIhBy3V6Eyp2PyG6cOB/FA8PkMAl1/gvy6HwbxvaxZU=","DSNmrQoNZKNkHMnl8NZUEwz5ac0iy0TnKs/ktvi99a0=","0WBNMYaCivM/2Fdpsv3wfxlRCtM0gSfdE9TcXSaVzhI=","Usu6cF18rT6jCfSZrdoFUSPp6iGxmSi8DgGCr99/QYE=","4AMaHFYIe8lXGZ5PmqsdeaGw0BbHngZV6ZNI8CaIuzc=","gFiRnNigc58aFcrOhSZnD5XMIV+HbEIlz0ksnJGEr4k=","yWOtsIK4PXPGxdNEs/sx+BNigFuORGEK8tPE2gL5Rv4=","YQm4z7vubVp3bCtPVTwGVar2gfrKpb7nCCUiY51UFQM=","jGuqYx70TY2p++dQDkHuoM6vfNlUKVAzRaWkwf9qIAg=","g5E/mpiHcOBPPCCNXhBhMtODpkXJc51tLtVbiIr+1K0=","yeHfc9ZC5BWM8B0sM1NAYTOs+gTGEwV2blXID8yQVeY=","/D2SBpjflfCrFVwc5Nix1w97bQ9xnA0Rp+B2LMfKX5g=","i5in0zTaKzOoO80r52FOpqNSvw2qf9t30rLtoWcX9Vg=","fQWc7TxOzYb6V85LMuF6d1AHkwuq0C526RmPbKd1cvY=","x/u3cZ0m2UkqBfYbbVBg986Mrvr6CprWnaQU2QO6EVA=","/fVlzlhKkg5gsgKG9sIQq0u1wLewQlG1gnveFJpo+xE=","FXozjLJNTcqAv/6ljWHYGwMYwKqnigPdZdmmCuo+MXY=","p34/1jxyZTCE5o6KHzpY2ey93m7zZXhOuPgY84nm8Ic=","TWqn+2n3XXynf45YYeYr3vYiLzDuYhzCf49oazY/MZs=","a6Zef2sFcmeLbwL+v67IepgSnbRh0vucM/ZslgWFpF0=","U61ykOsxRmbVSMbNGYq/ERefBSPbjbG/MWYz8PgF+bs=","PH1i1EJxdKGSZOt0FMUrCPs6fCbl5MBFAJli3Aee+5E=","uw4Chjj9QKJWl/mSQKiuNqxhl8b7iGKjl68OQpgCG1k=","jbG/pYws1odAyvxwxQ3GyCD7qvDcJSrxRBlx4PEww4I=","RirryesDumCMVBLdKEpeET6cPpARdzd9WBt1109QVT4=","7jSeUnODy1j/srmQ/KbYmx/ureAxgOByl/GFqjULRtk=","y3Pf7JSuWnA/OQE+cdOjmCTD4tvldVU0XXgQLUxa+Zk=","NcVPIgOXOi/mMcf4//k+6UGT3zru3v4yq4z2aNDbkac=","84+FX7TcvsD5FCSxMPgz4zDl0JzxG8VK3MRsioPb/2o=","+IdO0MXe8krpYlqPVekrGQ1SbzJbPjWVum4vp5HFC14=","L/klO9erwRa99D/HBjb4+V2dGSXLusI5Esm+9kRNTjo=","zegqAp64QZLTBdfQyn7Y1MzqlGaG0E5gjgnsP9Gtnis=","qoFMRKlKVpO3TLbj9iGoZXk4Z1IWiMqXpC1+c+GkKww=","mQ7BwaTqSGv9NwAgjO+0pZAGSuVw6Gv012rc+7rxSMU=","QYdqL7t/2X0TEbQxV7CRtQZC0Jeu9ePqvuDQysBARzg=","Cg+/QPxKGFewsWZBEqXD6117bdu4NBQs7YQhuEBOf50=","FfbLMlgJtEE7Bx4KoJMZC9J8EStRVA8KPBGH2qoLceI=","/iyl8QueHHKSbjZqa1DJKbR0R8uBWRfPErPfKw2gkH4=","AXFIcMXP0k01GAT0I2RDFfei+abOxwLFSNxZJNfh+CA=","+Tw0bUZyIYrDcjkRr7vlE5/MXzAC3s4g6txRGf7rM+I=","tdhJBaJCHV4vXi8CuJUnqtqsL/aUJcxA0mh2t85rnhc=","motfkIC3uZ+WMPeB2i3o5Za8axANnxQpxNaRryfVuNQ=","yaT//R1xuZkVsUPpQAR8jYeE+DE1OFggae50UqYic1M=","2qFp2LxEY6N3GJWvYwhlxYAsyqDSAYmCXCYIMMvvx2Q=","gw1PAF4RC+rd8P3PTOJ2UpgAZIkgoShIcwOuF7b0xS0=","4V8Vh1z85wSU/gYdRciIOgEx8XsAD7A/2kGuQeWZVQg=","EyHl/lc45EmhvLtC0RSk/okIhAAiS0HRvOj4St93tug=","ZObFX+s752U5pcTiJxBMqUjqGu+fZC2F9cVAJsPtnPg=","Nr7NlHDvy4nwR4C/5f5BmioMZYNS8eK9dW3ZLChXtZk=","K2XhLu2L0RRt7ZQUXfz+c7o8RwI5koiGcsOkKuHO73E=","BfcL4nQsiXvb4QXi/B/cq2W1rf2t0JzbEAarrZwxGSM=","MduTJbGUXQcI+midEvFGq76gRiPIZHl5tk7J8m57iDI=","vUEGpaiBW7CD1DOLgcJhFB6BXHEMNwhimen/lo7zHiQ=","bFHVX/XjE8unhDdWJaTJGGReYgv/JQesuaZw9ZDrSpU=","ee5MbFiN4KCUPbkHIS5xFNHMIYBWzsOd0NOrzKq40XY=","bQQOL9ozFAGyZ8HmRyBdR5CgjXws1LhAyj6pv/MS1LQ=","7WQ1lrfhFx2X6uwVJTkgCoLgEthFJx6rNJjTuhTfG+k=","9mosrZtBlPHQCDdWCxZGVLnC2R7TSShMgSGdIV/Gz2U=","TzdOg7GcNjtJBqCyz2yj1PojoPSfGo7q3w0oWUlO7tQ=","5U81z8QOcWSEM3l5ZySjmZCgjG4oN4/7EvWlbc+Af2E=","nM9vtkZCzOxkfnB+I8U54+OtmbN9E/T3UAH2Kuv6Q0c=","9cc00te1tvWgbGye0OBLY19u31GPTSr6HrSVA3SeCjw=","imEak1RpoAAiJB8sj0cm2ndd2o30hJK+HkcDr94Alj8=","aKpOD2dKgbyS1nuH3JpP4wWIwajKSSOtSFbm9EukHow=","Y8kBU+Uie82hkQk7wfaelzuTyfKKBfQrDh/7f/Ogeco=","9vSGHuD2xFIrisGPA4p35DFM1OSybeTCqN+7Ndv7lWU=","7ES7ah4Ll0Yttpu3XsjUnGhhCDpQPJ+eJ16Gv0n3ORg=","6f9Rlcv1cnNsGvW0ow1CGm7jKGcGwMnMVFdCOPUPBRk=","Yc1XRAHnT+HtnDw6i8wQ/Oy3MYZgcPg1fz+kR34Blgw=","AbFnzTh8fNoF959Dv5be3Y/R+1D9TtNO9RIkVTtF2g8=","3vcHGcggHw1LkeqIFpJU/txneLV6sW6zHFPEnA6iXEQ=","m1tmlIO/VQBtuq/E8QrS9/XF0ETjOAAWCrMmhyylRKA=","I6RYqY6V07+fRJ1DctevN2eh0CM/LUyl97iOfxaw6Co=","//fMYOyaBVLI+SHGibZCovktb4RqWMciuLbspMBuf3w=","AWX/wooydX6czGWnRN1ZRFkSzvGv/qxMvLBH0qaD3FA=","i5ZqsQORXPvoECX+MkwYxoV0JSOcMbqF+pp/zZ63d7g=","aXnoltPwRf4qWtyBXjJH16IoNQb1K/93vqJV9AlKLrk=","cjKRp1M0HnxJEPgq91TMLYYwiKH891WbM95oRQtJZhk=","bzWFz5jAFhTKDQ5+Lf7yM1EQH6BoGoq0Ck8j4SH7/aE=","bXd5f9oDkLFhoqUbDY3wR/zDw5upozdFmsOn1H9WH4g=","5bd4w65APCL3VNotoEJWEqDAbBs3RwbUcRsuzcvtQNo=","GaIbkHE0hAH1ZDztIJwxGB3yYTE6mPrrRYWTZXiX02Y=","MchxSEKTdOxbJbt/mnnd0NFtExM4Ndq4gYk7Ty5/JTc=","EFkPOYmBkIogx+exsIcJZDqFz2mZZ4NOPnQMvtT/TR4=","x0Ir+y0xKOapq03l8SBoMXMannEBDM9S+CYh8Pnmt24=","jMT7+/UffzoS26o7hL+IaMALFY/KdY4pg5d26ZklHBg=","LDDeQldPrIfXGOnMkpnyYj7+6E9YAlkXX/hTu78wFbY=","2lUhYsA1F9ydZBOsscAcqW52eKeVQZ0BnuFvVMb6hbA=","GzO46KcUqu8vCFUejegnZBLGXRI2CfApPHsyID/iaNU=","+WVcGPxTecB5ndwhVyqjwEwTHZcttkkolvScDvllT2A=","y4fOLTcmJbN/FSR4AY9jbBhnCDBZul06HrzBGtfGtfE=","eJMzp4okl6wH7LphM/SBM6swy2pPqEnhUnChSKh5468=","szJN/zFZrReKRW1AZ10a9ON61u81VRIOIdgZbvp4f7g=","uIRqAAtG2lLZ+ItCq0sMhb6RnBcODdKC8IPo42N5RI0=","Vw/bYmhdeeI2pJ5CoPrOSg4/05apoP7Gq9WKNeMO1wY=","Bf55SC9W90CZKcWby0yWzvRXauC/44qfstMw5ZfMk7Y=","HqAEi1fU5XmO3GCGdPFObIsT9a7ox5Z7B97IziqHekc=","oLNRJQZfWN/vKCr10SmZpDjwNFwW6DEWd4yxVkV3lD8=","sqDUd9jhKzShh/J+XiZDQVevw9K3sUzbxADcZSbZngU=","Lv2tBKhp6hauD7OILixEGUlVelppJ4jXGGd0CL0OHy4=","mZzjrfRUh0hwcVSYgtT6T+zh9Tbs5pTpQ33SIEW5Tz4=","gj52ohkfHuq0vO4oBJXwfGyFkYCIQwzEPa8m96e0DTU=","v5/H7Cu+sy/L8PcMaIOzUnPDWX6lPHET7x5/hbEwPIg=","YrCoYiA7qK3R8sBqWEwenxt+i3U4OPS6jAbu1GjbfNM=","Y9+h0khB9JCDk4659dajXrU8VKQu6ccA2podhpKdd+k=","8bOem5v8aDycSWo69amM/IihUr6K1ev7XT7LQR53pAI=","5tJ5dcqPS7wGTFdUoWJYxK6+w+qprT9MKU80VPzI2IA=","EWBeIdTbeBvwu2bggzui2ALtYEgztn7Qh9wcxJQBmqk=","3MpjPV/ZWBpXiY+2P9qMxyslQOPmoLXjciGZ/3uGvJA=","95Yb40GDwxN3gr21o5xOK+nFZOTtJY58NFpig2lxYAA=","qc/yeH3OGU0rvuuSNh1QNvKrvks5GGWIWmQkvVXmHI8=","wErgLNFaBYcmZ9IG33ynEfFQx4Ns0IFvyUkqoI+HNuw=","kyeZJkfI86wjwtaXXthUz6aWcASmAfipE0bGoI1W2jk=","xkGh1k+WmmZAYP3fDBIZ7/siOjVi0SLKCQeL2/oznT0=","C45wwBoEleh5DBZa+ZyMsXicVmcTd6DGbzKo+xthU4c=","eUoAXbxShPOYZiTY8DfE43+4GqdOdVF6y8Env2+YaZg=","Q0W0WgQmF3v4JRvlRI2MeeJjn7SRiI5YmoZHLVejA/E=","gNwoILvR8imtU6JTbKowXxxod5N5T4iwDCZr+9SMwR0=","fHVgom2TJPJTvi1kom+JL4L7gLRJc6RCxHBSkfpc2HE=","5EiPqgpRRZbO2gbip6PSVdoFBnMHSWEGnq0A50ojytc=","26x5akIcEJhLtAeBSUsnmishObQglVQnrqq5GrxvQYg=","aH8n6gugBDUrJvOdHRSv5ou+aDgZ8JIWZIJl4PeNqBg=","uNrIzn2eS2l6BrraoxNd+6qJ67hhuJZhaprukbgYY70=","HmPRIYFzJbLz83IY3z/BaBECh7NuCu2s24tQAtY23W4=","4bqBFL160/lX+/x7royej7251i7QQIPH8ej2DxTIgso=","D9A3EAKG29GPZA//vUEJxMywjtyDoi/qM84hqO0jjWk=","6kFr9v0MxUGuh/Z+OqOUlFKNWtBQryIeBrIoA5SIfyI=","lvCqySCNRwSf7sdEQWuMms0mCHMyQOVIfxFp5BLSU3E=","z0uDG3ZISlrSe2aRbk9tShLKgWoYAXOp7KoKYRfsYeA=","lgCiy4+At5TM4xlqdt8ymEgC3cAphhpCc0amyw0KGJc=","iBthyjdYVXfhZw2TAZkONTn5hC76MD5oIGh8YUuG7Vo=","+xsQ9MJFfHoU9r6WFQfFAbNj/xdl60+BkYGFInagIlQ=","kL6/0ifK/V9MRxyNQFjVf+s/4+2SFbIJCHNafG/+BHo=","wTxrF9dsZqSBN/YFesNbYl7d0FkzXz7KsiVA8LWX1fg=","hu3R91Q0E1xD6XMN9+E3ufhCUkd0L+VNgBEbLvTIfqs=","dQYdT9dSgpYqUAXW5LIQnKW6iKXj67RbtAgibySvGKg=","cmkXz1fi825S2ohFVkul2HuXX5N7e3PUlgzFafbB2Eo=","LBwgdq6asN3D5o5o9O++9uLfDK4RIM9l2SVh/s0Vt1w=","3BCreRivZcFJnBL4XXk6mna7Otoo3z1nmSmM19Hh16I=","ABnNCqnhycOegk0g+fhUrll8vXgYg0fYIfl5ycx71zs=","bmvqHRNK+jlBzss6/2wdSIxkFTGmfchjuF8kiKRGtqI=","S/HAE3RbzOJ5LstRstxdEdekAsl4VWdMMcDdMyAEoqQ=","x3plh38bfzhgq6teRZNI8iYXMiqqcz4AseFeMaztYSw=","FbxG8g/hRxoW97z3RTQxqqQwHB9fKYpTu3sAiRihfHA=","K/l0U91VQpVbid1dkFTBZV2B41UolL3//PMW+G8H8OM=","Er46NxBupS6L5RAEN3dv9FAXjAdyPXWgfJ6tiqfUCxc=","wsvLkyMZA09R0ZOYVUlSLhdUkY0tRkgY0GvK7rDpXOU=","7iEBSPPZIMYP0xx/x5Bnu199H3hwUrHkiu+zbQR88D0=","SxUxKCOMCk4K3KX8yFxjDnJjpmvbToUPM8v6TUdvYOA=","IhVPUum4/klPinjt60ILL4ICsxXEB95qzsNxUhtNRxI=","XmUG/prmvQ1+GWPbx7dvE/zYayRK4DlYi6QtaaQaCLk=","UEQB+EcMPiEWpBASAyBhiZ1KEeBUcMi4OVkQT+TUYLc=","MERjt4mG1ggIVWwC9DiFTARLR6ol+22+Z1maPU3K0Ik=","6G/r2IZozHPJAEB1uL0ezBpFXBQt07BMo9wu7lJq/T0=","8nCHNeMaDZtkUCRtKHtDmRLBnQkGwn45ZZt3I4xpLgY=","u4CNOcAomc5NLqejS4rm7eCCWi26JguXJBZ3DQSCxC8=","9ONgCZ34QJ9Zv5fzZxhyr+ZR8nbb9wyxWPbREDqF5S0="],"block_size":4096,"path":"assets/csgofast.png"},{"block_hashes":["Rcg5sJr4z2bgx34wGVg8BLLYhifcZQiiIYkHMVw16no=","XjA0NcdJ0WKK+ZgaMpubrrc8JHWWg5mrawrQ0eWbNUY=","NlDxf1/S5J3PY7YW0M/VIRgH4NgDjNz5vKwxWX2FIo0="],"block_size":4096,"path":"assets/csgofast_small.png"},{"block_hashes":["RYCuQloQ7zgkjFCe/6Iw23qS/O/T0WdI7ftiqdXQfm0=","NBs01uQ/Ij83NqvFsDgTHx0NOhhalHyGognsJu3Ii20=","a7mz3Xu9NCpHGuxtZbK7kdp4/oo400I0wk/ROOOcnsM=","E+tCpC3IlH26lwMyjhG9sdRerQKBdQ0AU8xd4Qkg/C0=","RLJ7xWDCJzgysJypfFERmb8TEYB/MBoFI2fl9ZPgqNU=","SPz7b1ZpmIucvl7ZUrqdoatu8hbU9S2AfTCBXuqKItU=","ATYx+96yZftgONLVz4Rkyt5as9cXDjgq8uF6Hb9mFrA=","rCbE36RnOPs21/Ay6eiOJnopNauHBX4mV7lErV13A7U=","uw3iztt3XrJ2ek9GuhblslZh9o4e295osq9p4/am094=","XFKntGsVZDAUh71L56A/P9RL+tKo0ESmp635ED8jrbU=","aBS+rNbR2MI+YI1Nzk59i54WAcWRYONFUU3HmaThpSM=","bN6l/wEJR1o2ffReK6JCMLfqKF/v6446vpFqe+QfYDE=","Zc2fEWHInJ3HTKit+CFWYQwb1dkof2ERtUopebZn88w=","NsajcDj5b4RlHi0fOaBoN0ShCyV4KpOkO2ww+jj8sj0=","C666g7mWdi9yo94KmT5H9LNBLPhwqgpkBATGSCYfsZ4=","dS+xAUX1iEjSoCTVuy6WC7CrChCU6DS5e3xfKTfMBQo=","WJe1keVN1iG4NU08/ZToFzf8jEpxnEqIIJZTJ6kutGs=","Pb554Lm/2FKZik4Du9oVw8S2+TBQZAu+26fHps+QnII=","UdgRy+ypTDEL7ITX1hqgmlKqJxB1MeJqmJEBNVb+Jz4=","/qk4CMLQuUsAAcZhLyB35Bx82fF8PDPRDNhV5vN2dh8=","+bMKNCKz2awQxv/KV69yiDa8E2F0UlJI0IUJFEWz+Ww=","luosnz27kT+ctNv7ydE4J7j/gUlYTdW0BF1r0px9Ywc=","mrlbS4QsUgTrQPXV2CqFrqVdIiWlb5IDOA01kXbKpOo=","zQZgtyd03NEZzZ8haf70Nf2YNqQ3At+o1tbxTmVWrfc=","QKPJNFvgn+V+2QQpo0ScvTWxdLaAFBY0vk6ia8rIEls=","Z7mC57RLOY+8VwuPwFeDFPn4ztszoK1ft8Y9QfTpk74=","3j6kROFT3et14XdouFVjstsoJiq12owAkuNiD2hJ7K8=","PE4+TJpjNOgTTMxj9xvy9e0OlVnjHJrp1cIB9120KtE=","wLOYAJkk7FMdHc5YcK7xpjOFQuHTCbQ6LOwZpd1JjDI=","KZccbfRtRAbsY5qewjeOxjU/BP5Qm73VlSRoqtk/ZCM=","RUJTgmuIZMlOE6jiH5mZX0gsaxKqFI1ULPfuajQ2m0w=","ik6uaseAPHU4fJr4xMVjlXdvZy7kHDnS+7f13u3FgKM=","m/i+MMqwNC6KaLIrHScgpXNbf5ZpfLVsVShyaVxjHLw=","mj45qlb7udvnpilmn99IMu2r9HRfceiyDPEeVW6b/WI=","N7cjBX+5mNLtq6ea2XSbI1PAVWQdL0gzR7vBpdfH1jo=","MbntYDqBqlxuxTTSGRr3ktN19ZQ1FdEugKhNo4UV2HM=","Ye06Y/CO/J5Tg0M94fuveLL38uP/PPY3byj+EEl9gUI=","m+hosMKzHtmrsHDAAfdcY+rbaXx31E/ifX1ifguJhDs=","eTmTD7VJsbdDL4bthf0gAG9aeTNMEVOBnXahc+BOASo=","Gl40INhkYf+CXF+890TlBf5j7bhBbag27YIiVNSi+7I=","3OH6FXxP/w8XezSe7wsKRmiZMnqTVlNONKV8wpontuU=","3H1VJz0GEIxfnHFKP8HxLJeYx7O3H+RJGaJlxzBbVbo=","rqREDRplehOXZad0X+U8WTuMM+UGJwhdtKizX+tiZ3A=","VHKvXgvqbh6ZKzzeh+ptApHeJue4+TmVZSyJENHOvyI=","39yj+nKHtFKJ1AYsUREey4j5O5y0tt/HPn/n9aXknBA=","d2aDucZ8bXTvzIivJiVLkP/ThuJ5uIZ0C9HAElCt7vw=","9CC8UPGE1YaGVM343Zq5+eJGi/697LZxaYiTajiCupc=","V5jyZzo6fRM5lWba1XsuGii/bxyAxWftksA27B7BsR8=","bDMpZD0wKux3+nf7/PsCFL4Ex1g8IndCkeMQybC586g=","8KcsJZD+NAfEL3y/pn6VsXehwdlX0/ARodIjc1zKQJg=","95fIuNiZj8ZIWR4GqTyfzpC5450SKC548hpfCdqACIA=","rFsZJv44ympCnZJ/GbPW9ExFhP87zbijpJQ5YNqchNU=","qDjG2rAul6M1QFyVnPUs4eUe34ZgfOCrNueWs+m8fm8=","45u46uRY0QO6+bZhjuPOktZdLdOchkxT8WhLy/3Kpio=","JBYrST+dTfXcBUlh8kNFB1N9Y3AIhD88toqnJ4UyhwQ=","yE50tWc7DLHjfxXb66aXBiby+BC8kvqRdrasISvOP8c=","sLFpw6xkEPPPZOtncnUTSadNBqumeIaCfDimvY5dMro=","G3vI7aEMvYxhIv9dO7VC72uNwlwsywWFjfp31HSY+/4=","233nScSbCKk1svlgALIOGh2EmeUyw9ZB/5UPQ+d568Q=","EUGqyspTfnGvThoPzL7oVZJdRhcDQ81oHhfee93d+Vw=","N47wlCL4DCgvc3r1XIwoBQYMEImG5UCgsAQRyEFFyHo=","P6CYeUDqUzFuYo4VCewqdzYA4KaXPyt1uGr/59ClF5w=","yu8IFxZoZZlSaeE/i74vQKPqYfMf4auGr16U32moK+k=","g5wMHPKIaBDf2JJ2gkryQrJuhBuX6yMy/Bk/sjiQUFI=","gE5DkT8QU4YqSZRaXAo8+cEd1VsKUhRxsWVLYP9MYl0=","jQO9X1IWoU++QyLikKIrvQn4aUuhJHAbW7TmquVIfPc=","GSPaTsFjRM8VLjnnEloVagu3R3VAikz0uCN8RASsTa4=","MwrT69b4hsMKXme0OveI7fLExmwE7vsBoAxbEGyundk=","LeulnemJHQ71PchXbreO5VxwQjCGh50q5eMyR36FeJY=","jqzyYXg7C6tWD2YUOIt4T4+wfzJFTcMBJD5ulhppoCY=","1vBQxruLxq7yRuIgouTDukbRWYWojoxb6BIEVfq3ZsI=","vpJqu0YmyEQ+SQ2cS8jR6U0xXN01l1TCfigdP8Vp2ok=","S2d2oiE07s1WEdVYciVUF3eV8AbB+dqKAUYQdhaQQno=","YD9zqTfxn0nF3B89daVjRkixW2EVJwqkB5A4fyfpeY0=","VKwHrAx1Ez4/kmhfw0YB4VH/bZrdVhnZQsGq0cP6ZrY=","L4OHktrIwwF4ojMVR9psJMpsrV1Tsgq9Q1TtDmg3UGs=","PVZQd4QqP0ixSxz3TGmnZfgSofBBrnQgayff40tleLk=","/Y4ZE+ojOtNIxWRGz/rtCuSBgYX5GL7GDfMBREDMJd0=","XFIk6gUpz2osLjU77qQXO3CW4vgSgJyMeXmuoTbY5qA=","ax/zwxvma46yYr3mYWNYHNxYbHFqkbgQmYwuEMUmIP8=","/Hrh5MjZk7TjA26BOJX9R8GMcvJV2TpFExF64fqFpZA=","HAZlsnMhml5qXawxdIqhKc4fvEqkLfHrhU0RD7fQbEU=","qBsdfk7Q9R1Rr77Nv9JpzhSzo2dT2WoRSRc16eTSDS4=","6ptzcpmYVrV+kzwiFfGtM1u6q/nGhdcG7BVF19CIavU=","DqMMDb0hB/lFvWa+hbHfBWeHjDCpsn2pc+tr3FtSI0g=","pQpLPQEfqU/3XzycbB5H1k4cf1CK0s901NtwotSh1B0=","M44hCHzDMGwhPXakQByKToDoILBmQC/1Y1J2RUQr14g=","d/VanD5HgSSpfTdyJCQs1FBWGsf3Xy0XynIzleHShx8=","xReKxnoyLOSf+uZALPC8j+6s5BL7Mwkn4drjm0iQ8eg=","Vz3F5Yo5znQRwfep+4YlsnLsUZqP/osGt1CrmYRmlnQ=","1vKdAynNQrcE7lj/3vWrIz78kC1EIO7cOo4mKP8eLtA=","HktP6LBjgTw9cyRg/WDZ0HlzXH4TnJ0u1FOcNDK+HIk=","XStdxJPKd8nZVJqF7yZ8T4Py6/fho6iYM1k1SHxsBRQ=","3OBRwV8ajRW9b5wuUIKpYPW6x19QOrnbAI+YvabcrBs=","ilYiuu4CTsgh+bvHreayy5unxIZxxCqBcZpy0Zqr6s4=","gXAXrUDk4gkOvtlDCk0oIy5c1U3UphpSYoKbr86CFMg=","r0pfCXqlNk/TSWNZO4CFtWA5/MUv4Amdjf5ZZ+KuZAc=","DD0Rnli5nSjPiyjJHiaNo5Cpgrlto64B20j2hqEqi58=","E0cjQtLhaninmFYxW/YSyCZAcO88+9uNfU/HA6V0boQ=","wNUHGkZYt9v+m1A8CzTRgYoyC/2dSDTLM5kP2+KkPAg=","SX017FffiNUjd0NlsJLdEzkshXAILwfQD/ZFWKka8qc=","QGTpB7OX7CQk/MF8JoLkQaTFHXFNDVTUPJbiRLl/7NI=","Vld6JL5qMfUps4G00wO4S0a6Tt5VpYkOLwYUHZaaUvM=","hpLIeBfakG+nKOlII8BkAavpvRUL11o5kmJws7KPF+g=","uwauung5TyVXrDdYdV+2hDjNsSUv03Ag3erwgOWPhJo=","eiVM9P2oCGQqmh02MWJeoUts68buhGFtQ/i2HgIvSeQ=","Seo0TvHV/zT3Mhsyd5NkoEcnCZV8LppAs3DWTH1wHAs=","C9tJdMn9bbSspSkqzh0uioFx72ab5y8s8DzP7SQuEH0=","dFkMdvJ74+9uYPVlOpLXiPj0FIsL5+P4CICfzhg4Rvw=","Ga27ye2hg6MlfnNYYlDv9qNf6KXNXlOOUsvBe7e4T3Q=","/7uZ4q+9137rPqjz4lUIfTsidGWs9g6MtvMPUYgFJwM=","8mh28qu7Zji7oEme0oxzVackKzZIAE9YFc/HFChljw4=","0NTna3G7KBwAKw40Eh7291ECgvAIo1dwCsap9pNERas=","iCPKFjr5mqU2Zrsy4J3FLYIjS5P3UjUBc+3uOMpeW2E=","APh3Da/LV+UdJEzRbQK9YqFmt8Cr3UYpBJ1hJd4qimk=","6oh3GR8+4sHpieAVUxwssrNIen0obyvuYT6mpzmgXQ8=","j4Ii7n65M01YwNyzbvoT1GvIvZRuV99/x/+13UXODcs=","i6zQ0H8Y5v/5YHFJ9XfLbNC8Y/SaCq5yOYt3N387ypM=","/A6OZFH1yr9dI867kV6tWnDfcDxJM0HCW46w2hdPgCc=","kaPcNyhVL4Ld8ifVu+3YPQD5WSfy0E1AaVfFGsBSyVs=","n5jQLVBFAc9+ZsjzuD70GyhZY4c7QZ2sIFWxWat8acU=","7jrLJZc4IHhyY1O4l+vFVLakJlHDX4ISUASGxa5r6wo=","YJJ500OusOFCbpaatOxIXys/ZtW+GiOKjE66tXShYqQ=","qOjHAxoW01KnJzyCCaXlFssB0opTdQxRZ+ths28NXA4=","1eXpsLLIXaOLKVsiQCoUwltlbt5OjinnX2EvKyNce1I=","GCoHXWv7VdZFNzgaMX2nz+hG1nmMFcp/hO/429ZfU1Y=","+xbgqTzexFFTFMnK8VBhJA5ftQ1MnAAEVIF8AsbElos=","9axg84RVjMPkirzLf4p8E9QubeLr9QOBclNiMlfFCgs=","9Jv7Gz5ogG4WsKFCS+XmIPu5fZ/HP3Jvg8fInzMnswQ=","A0dgPQJwlq8tmZ9Hby0qUuaxsIYrjcmV3C2RKTgIWhY=","rywlC+FkP0m2OsQjnon928+SBy+fAwLeoGeyW4mpQqo=","mCsmJlWzOEOrxS5XzDIHD5wC+aQ2KeSSIGdOp6R1tgE=","A0VWskRs4M7cW55xiOjtWUQH7t8SvBYczD7M7f1pXrI=","q+mc7a6s+2ok0LjHwOxnwHTpWqLzuqcvVeHpWE3WU8w=","/0qQX/c/SwTlSPFn0nkUsNvybEwQt5Lz2uYyfgjeiTA=","9Eo+EGzdbjAHDD4iv2JBc88X8365or9JFLk47ZcCEtI=","vi1fTp/1rtQvbudMVbVA6guk2CpDUwXoXtF1OayyPr4=","KrA/LKw+yvmt+dE+TYylsmeiQT6+7t2kSaPBxaTW81U=","qdcwTtwHvMMEMniK4GA4+EoPkMEHwr6KbxU7v7mE59E=","t5GGyQGCDb8mUmK/uccYdAtZLyj7ASzhOsZ8w1duIeI=","7QQs52Q1m0Y/wXMIWVI7edxovDtwXSSnHAizT/Qkz/g=","4RmLBhWJEmMRUvjCRP2u2qM7eqfV1WG/ItT/leOSZSA=","IwRtUiZYlR34wz9l8MwYBMg9IeMJr3FWI3AQbUKNB4k=","THjYk8cVviHRtJIwCDFHJyQfBOPR0IRV+tzFDHrViEo=","+1j8BV/oCpb6bEm2l2/LN07UPlEHu0VxD1jeksPDE4w=","SZeCUur+1Jc5l3WTFbzeJQ76K8VQrfhJDHg4fS3ZB0c=","kSf2b83YxhXD+Fs+S0nVfzZyhmIGii368pSb4JH8uiw=","a0fmhZuVYApekwvG79/FE1NBr1aA3NKD0maYdZO2ofI=","d9KQrGLAC2mpv9VrAuAAeCfgRH7/mgCIM5cnbbgyxx4=","ELP/U+JQEH777AoW98N/1V6Q7UCipl/kax9ajK6hTaw=","k0tGqrsmHLXaUnzFNghKGBkdGloE1YB+M9uJiLR+lFI=","wmfjlFjBtvOKPACNaLbnmXS8v0fE3SCzetlzNy2p3Wk=","JQwqH7RpWtUEpA9yi0tjxsZmM5VkgqrI3cDJq0e6v0E=","oxHzBrnJ46ZUhtek/CRHdCOyUVvYA4FIlMgcjGqT/+s=","KFr2LbCzMW9eWTEQ2IR1oZKYcQBEIPFmgX6SlGtfDgY=","wyDAuQLdx+EUglIfmF4v8BjUOMVZ2QSLiyKQBQb2I/Q=","80ZyPUhULG3Lhxsys9mPKzxT7ISNzLwYdyV8nhc0xDI=","JdyjX72fuesaVKU+BRZHYiSUeIrmMJcNLfQVwI6AiX8=","ADkqA9X5c0p7rUF6QxnAdPMv7S9mLFaSzIO4q+H3AVc=","DX6gO8ODIlpbENZy4eN2aKAT09czmz+Lqds0vUTvzw0=","1slmyCvBBpaLS/m8bdC7RJ8/Oxe5JeJWLFXH8aHzGuI=","27lRU2GgzGQrgnWdwV08nQM0WtWk/kLDK0+u5K4de40=","4eys4P5ptHzF6sfw/FCfP/0yMPtYuiJYMtDga2cql+o=","f1y9+4JEuByB1vQPZ6nwlC2zUxG+Mix4olp0qD7S7pM=","j/PmULUNJ19xzmHS/GyningJ1+FwK5TBUCGQIxtQ63I=","Apu9Wl8LgO7z7uHjKPLUHUjl4yc8NkPb6RY64BafVrI=","lYWc+1ImPOnZiuw4KM05P8yBfLAZtjxb40BCYzsUvz8=","slVF2vwbJTMc++mrXIgQm5Zgwpg52b0lUhrbjGz3Zxg=","I5OfzFs7fw4LRb2GWbuw6Rt4B+KI91+F7xhe5YwIKlE=","SsEfDjREgXMSHzgkEijTJSXyiJOPlr22uV2mM7KntX8=","+SS9Jy8YyEDg1IdHHPr8dY/wDB1TKVC0n9cuAakRaFc=","gUSaCyakD2uvFseobkt9TzSG+DqVEj2ZUSoxtVNxyTM=","X5na0/dyLa4+FoYrkj+yasd1IwTqOEWmsAieGVu3UXo=","Wn6RiNYZxnUFZ+SkXIfzCKqH7egN1bRO3vonHd/njGY=","fCGh/OnjcGmtzocAeLG2L/yw84TnskbISUHfi3OgrBQ="],"block_size":4096,"path":"assets/csmoney/big.png"},{"block_hashes":["nFHiJ77SpQY307obpddU9GufJB/knbl1EHkk7GmkcrM=","gEZmoC3WLOkC5AbO/GLq/zymzPtkm4yI+49KwH21TvA=","+wOGsIOcryIOHPdrcM0w1RrxpGeLZ281/V6EShwrCls=","FOSwPMxRfFPUwNt1XtuLBMc0p/kb8rLQ2V8z0/7V1g4=","7VRZM4hCSAG/AJZpUs5Ag9AFkHmG4GOEx0wzoFSQ9Hw=","RenxThJL2gC6QbQwjEVThKJTT3C8GxPECS13cvLjEDc=","EOlS/mMy+T8c4kTOGp9gVmHDu/MhGvY26LUdxHSIzOI=","lZwuW0MMrrLdSLxDMpWp3+GsAWt6hhWmlqSAcORgI3w=","EMeZrk98eiF6wWYq6QAXNO3wMoqBkLg2fbtA1sP7sg8=","S7tDoD3htDtXIOHIh8QiViatN95caE2v4W0Vud/iXVo=","nOrAX3spRFwB0B6RkZvNADdhLmbVr7+IOusE4zflJYo=","lbpopz1KM+kKQDQbKN8dKrZ3h9bEk5RtRce8u3GalGo=","9a1IIgWDIkPRcUyWeAO3YUAxycEluMJRLzQayH2YwhI=","EGe8q1xGTF6udc1cjHMzcLfGkoyOXAi3vHUgJaUU3cY=","4NeCbwtbda+B8IkMfIyVcPEQfZkdzR4L+PFVMu3r6LE=","JHeJqKUabi9XfmUWopACCRkkBwrtzD50ldBAcZ/Wiag=","CQUfug8ZOVll3QZW7bo8DHXSuCvflU8YMdZ7WHQTnNc=","4ga4uZUYQToX0moYWyI6VGRzwrDHV+yXuoW8VCj5ozw=","7BmEAa8xRmXPo2CRrFt0gDR6atbxnGGlEovST1GMaog=","uBlVa3oXL/49z89DL3lvpFsvHSEYP2rB3ZhBll1qSmc=","ozDNNWHm6kF4IZ3dlImonBLFuJL/X5EYOdfhscKYDRM=","6jNR6BZw3HIAqZgoFi22hyB+SnZTRNCvTknj35TS6R8=","V+BoQg98FjyKQhlmcW3fl6FwZ0xQr6uUcMmIzYlNyT4=","9M/7CtH/vtoSaKMc6LUx5A1he3mtKNTdE2FslQuLDpA=","BkOB+M2p3YOlsEXdVV8/4E4ER4B9mjO4U4pCmi6yPHc=","rr91kVDrdpHwj3BDdIPiMUQAbSpuo/6rDb8U0he8sUc=","KYC3Ptuf7i7nEXkFO41VgJWjQqGIAtYhu0YFd55+uU8=","Osmb8htUcr2bwf7A9RfSbEnqDBJsP+dRWkRhfipWtQA=","2M1TrQgzx1XkZAoMyPagvBmAhl/UpYyEpQ61BFAUL0E=","mrQ2uLBFZ3426WRfHSniK89Fm+YuUKk6UbCbjlESqyU=","gldeUPcu39fa7xjzmUzCEGc5tauA3ak+pgZTSI5xvSU=","fs42aUgHIuZTaDxt9nIhoTJfrpkuDm1wPsOfBVw2p/Y=","RnJ4bTTQ9aOEfOSs+PyN0KGigYkNBllUbTCb4Cmjh3E=","GJJoRkl2Vs9yTNlRLEE2VE8JgRdHXmupoZhUOXJZkiI=","d/jv+qiB41xeN0Oh0tinUv566p+EwUTbTVpXyoimwRk=","pbKkZfWjDG2xA6wrxYciIIm+RO9HBhUeaQosKRj6Ty4=","G58iMMLHnrbF5z75bp5t1DszHNybVQNlG055tWUZfO0=","wAdjQr74ULrS/9y+0fUYXNR3ks9LYTK3FNFTZo5/lQw=","oC+0YLCCrm1Xvg5PwTctly/eXHuVp5dDGsGSe3nvxuE=","iDvVKZDrzI30Zum5sXy4eA/758UEKmYfmYwKhG00OI8=","S1/DmHlMmefTdPc945V6GIaaATZZ0dE8wIcmbYWZRL4=","dm8a7a+s+tZpR/QBhDiHLBWa53fyT1P6ClDiO33Y0KE=","Ylpz24V++6Sup1xH+CAQAqGBWD+SGW++1KE/TWirhJQ=","sMv2FJo7y52J//l2npeUEbdd4rELivgZtrAFJSj7nCs=","pdf1wkwNgKhnH2zEa9Em+NV2ntiITlViH4O8skf/ySY=","AxnAYhJanhkbkc447waOacO45XLd3N2yPLwjM0Ag5VQ=","8BJ1MsmLHzTmlSH/uUazESOvhPWmFXV+ukUJajbe/Qs=","Fk3v+Sc+0nrB6GfaNAp3n9XDEQRzikrX1O9gt53GbhI=","anTcqmxU9OLT4pJ1L/lMY9IlYmd9B0H2pQzdTXt7sLs=","oV5oSalKRCIw0DfMvsP9wveKKablxx+HYmAsXWLHKgc=","jtvxJwJq6/OqRp/sER8sp2x9ToiA+34cunNbYyLus9c=","w57C28mlVRmXo7Opee6OHprnE6ZcQa1iUyAU8VlCLlY=","piMtSny0vPeG2LQhr0cbyTA1jUKnb6Y8si46Kvq+/+k=","H0ZCoO3ZmCNQpxKW2F9R55xca9dZN+C0fLmSElw2pHo=","9fhDitZqJ85YLPSEMvih/d8GsdjcOYWx799E0B7xb2M=","E7e9kBNsuUYVFk/5239Gd7vV7Ae7rwmKpqwW/s9mZ7Y=","LORPdzVg1hJodEOK3bwZ/j3nw/LVKXILeEdxpsgpWhQ=","duQhZOHzkGOik0DLdmUADkvWY7HnbLf/+LJ43kShU3Q=","c2Nwv/TO3vu9AwC3zy3v7FroSeb0Ec3eYpgm6mnGDig=","IqFGQ03eSVzp3nPLg7rzSb1DKIocdUXc2IgHwvFuN5M=","6QdosTGmhaHsitdsmnJ+xaiDYkszzhUrK5XCqkzXNDc=","uPKIbuPMg0vNXwo+F4KNMxkSzvhRZZO9qa2TRmrQcpE=","exD4X7HxNEiGEPgOBtDvzTrWVCfZDYXzEJUu5dCzgkY=","X2Al8simPlp2C+jE/dB7hkH6s57viGcty88cBSmc348=","V765gSx73yrfLXJ9QIEscMUyCBllS9Y6OLh5r35slhk=","9BxTuzRi+h/BSAC8hbnRsjn2UNDwhScnwEFRv3BYQRE=","tz0YWLj2AQBZIjpqwewsVEUJvzIRW21qFrRJpR0QSUA=","OMKe2JhjBc3A//0aI9AyLOxlAJL8igjshU6zf/k2QFc=","UJSCpYrbbvS1j21uMR7RZB/ZCrONfsokz4fmv0R7c/Y=","6G/dRw9mQQOxIo3dmAsPZ6na6PPOgzQRk5ByUgFEKKU=","lFrakAVl2GqTSVZ0hi7u7e8ZNQsVfL1lv8BLA6HGsC8=","XN8PXlU4NsJHN9O6hyDkOhozX7uIohv9ymaNVQ7KD3c=","oHfil8iEThTmwjCFhgVsmjP0e7UqRR6X9+9AMhRP008=","X3pe19yuK9xAVOXpvD5jjlWhUGZ4UPYovsXE6NnudjM=","z+PvjfVSvtF2CIJ0/AJUOc3bc4/ByyvXmcALtqlFmYc=","T5/UmoXh1vN2RpMuiLTmreB9sPEaSr1tcy0FiWs75mk=","V25w2k6xcsh5jPtAlKvzDgwgokLOg0ff8A8PH7pwz44=","14i24FDu3Zax9W0PDv5bJbHTBBHvOSRTP9/2EpAOq/E=","kGu093I6bKKwIP0uMuh7BxwHpqYVrfr+yMA+vOg6QTw=","FdNzqmP8bxFBvKua7CDkMK9uI6cAK+L2sS+3rnO5Urs=","oinbpVJpO0SR3PD75deaiMC30q2MbFMiYqECFkgwqPs=","kI/6PsPKMc9yjqWAN7KVcRKLvrU1919vXjLSQF4Weac=","rPP+18+6l2IxQZkMVnoJXk7nhWpvglyMbFOcqC9QYlk=","wRhq/ENhYfoUSklzDj6IV6ihRwtpB5+ffy8rVcPlz+s=","K4lsq+PFSj+J7t3jnfcEPwjpGdSNOy4TNXEAfUnoIwo=","yKmwySM88lbWgOcJAXrCYoFhUm16GIzMFCy3c5V54zI=","xepTxwEb/WgID99CI+InFQVH+w9yN0K2FYCyNXezuoo=","yw0NhZvyzvJGPeEPs4jVqhPGEUF+19h7wUMjmWBC5rM=","pawh8z8Kqtl0pChHJy3ZvRzQbcNe5nRCb4BOkA5U+fE=","/DADp3jL0WjxsPzQr/UNe951DorFQMbubjl56SyZGH4=","+G7BuH6JC8Q8twq/2+AmRnQOhD//uSdyIejPbiU4llc=","czEya8rmKBV/wYmxRKZrJ+hBPwqoOy7dz3VnwxEtGBY=","NDvT2yDS2xM1SMFooMv3KBjh1Iz38VQ8XOAG/Jk8yNw=","M8fXFmDwRja2EjxnMkEUHBj5Gli4Gc3HUxeoVGYacOk=","sahjhPSAB8UAnL9TuKCGJa8nChWWPTSgUQy/crF4cnI=","xO4k3wEeFKf9avNyoEDqLCjdbllGgAk8tuwW/xYG9y4=","A84/4RtOQWcGSPmSZBP8uNWdOtYmZjzYDhzHotIigMY=","q68NSV527+SF5no+q3vxWc99eEbYCkfNkNP0vg+c3Hg=","42XOlqOlHNjnLYwPStxjRazcV2lgMFVs+mM9f6Um8gQ=","WbHMvl0tvFfnjplII3DssEr5ZYoINdBRyij7NWZEQ+A=","1iTCep1GqmTaWJFUiOx0RZAluxnXXhvWJGCFo+bjweE=","1JvTak+AUla/U2UMXrPUILTM8AgAcSHwYMQRd1q17RU=","GbgyhTTFtRpc52KnBOpLrlhL5Dg28wemefePuZ/zt+I=","tFIxt44qoPLVIHKaObChr+5Fq1ZQ0t2U3amnvcVSKrg=","fxijcqfjZO4OQ1TkWsvxa7VtiTteWbjvtU549Rlojnw=","hq0ZOcPNsh1Bb8DHaqsWmlQa/fWv78sx0CQgXOlMh98=","HxXN0R9wEiB5aIs0CBdcXntn0O2l9UKvQG0kaFifwx0=","gtc4mrdlB5BdbU7Z7VFeV52IuzwhQNw0WWPzShHT4jM=","we+OGfUuDe39vkzYdmsN4S2HIDGiozpa12Z/qI3MK4Y=","9MNqVGvwMTuY+ZgL0MH+LOK2LFMi6yLqwzkFuEsHeWo=","M6EuaVa+wG/SbP7pbn+2UyGe1jYOm7MH+Kyt3P75/04=","kaf/qM8O6l3WHuTFvlgj7tDl3C+zc+2I5ZXQzgi+ZQk=","r+8Qb8J5T8kw2dVYVTY84NQjmhucnhXqCaGyow72qj8=","y8DAbPDDDjMumDgPAlsm9x5Qb49syOgGL1oCGEU97Sk=","p/XewaZ5oOLR7I+sRc5SOiQh/S51hpIA5+sLKr3+5C4=","431YMNcFQNz1hOtOddVeRYT9tw4XWlJaD2Hv+WcI628=","/f2i8dOFSd5fJZt/Kc734g8HoIUGKZMFNxtSxqg9f50=","Er+GYEth1KjBJx5aW04onvETD/SVuqPI/bWeO10owAo=","AV414SnuozMhHOkYFKxrp1e6D3KNNKLQFR0fIuNtsIA=","E/ZqK+XejqoTvcroDvT+WArWt3aK5k5J8Kz/Y8lQr8M=","shtQ1C560xYWOh98/0qQWw2B7Jq4EyK6CN/7jMCrnLU=","sAtlhWYjhal/90yJ3bcviIRL2Kqg2PirNaiviG4H1bU=","YtbiD3ojoxtJ8GBb3uTjcOYeyGui26SEC7EgoTiZRiA=","iav10IaDjAGR6hPG6bzodnC8mkHmYlwV+6Xuza4HX4o=","S6Q4pv7XG61VAPrFTlT9UU5EsQuXLCqOb8YiHnQrU1Q=","tdMbbVcXtcv07n2qAjimXyrIR0Wp/EV15vPeauOaa7w=","mGRlVHnms4tvH5Aq0XVzGghYGqdPWSyjm2MXCMzDLvA=","7oL9pkH3uUS89xVNBhkLTYNkwOfvOoaABI88Xa9MCH4=","zLLddlucB5ojtDJOzUO9V/3ah8ngs7fTbDNlveFUvpk=","nvrztBQQBQIKPAkSJ2OCUC2uvmQZn1nGFHQjf3YoRNs=","U+Nx9JwGsotWL/V4hp1F1QMprlIzZOuoURNVhpOpFys=","n2BvTZj7alPz/8kaeYKzBGXyTyHV7wTOCt5N5qo3oqk=","Y5aPB56m05oMQ8tZoT2bIogiqZs5W2k7BbiUo40QfZg=","qY8Sfy9Zk751ygEQdUIlDQ4O3pRwT5TUV1CQVQRAnfU=","MggTaalibp0FF3oYuYaaCKo1k68UvXao0W37V9yieKA=","kf3JCON0/ANAOR0wpu/7ekqEXHNPlvB9VjT+fX5LvEs=","PoGLIeEyaaMznnCyKa5TN4+R24QzZFgX921Mt9+TspY=","YO5wY1+xuscA5pxm0PjSZIooHH4PDVxeZXEh08q32hs=","abSm0OJ7W12YOFOqH2AkIPyxBGXu/vvXe3DaqcJRnuI=","or3Uu4hO97Gt7ZDP14SjDwAO+JAWi3P0rsS2xBB2PS4=","UyAUBo0tuhVZrpIg9vZufeUVIpP45EevaE+1HHSyJag=","5SE/kr89H9ikwLcGs0iEM0hbfHMU2V46Rs2oMKB4g4c=","/XnVTps1+8awHXsY87cEs0tTFiymYkEz25pf4L2BeJ0=","gmcO0PBG+WZgj1Jf+NraS0eFUi+Dwx8DDyHlRFcPH6U=","JorgBph8RpoC7DpwlU0fMvS78vPXz8jDLhNOa3qLQD0=","8kHtkMXhNmYM/sCPUK4o3jMyMsv0nFsgbekADNls48M=","c14WOMQygQb3K2OPWgzg5jO6TOEOy/ASQrHjS5dWwXM=","pmKFA7yfl0oTH9HbxGVibv8xcIVTU8HqJyFt4+xP+Ro=","6UixZKc2PT9PcO5J4+FzpQDUv5tJzOvUrB7iTs0jE3I=","zsDpD3ktY9K76oA5zp3S4aVdpFgiq5HIxTXlsym4Veo=","6o1NlAB2Im4YtCkAU/FkPiC6yJX8VgAa7vgMslwxUFc=","li/ooNhjfo43m5j2QhkmwGcMHjEOE8QUqudI7KCCOjg=","JPuZHKA+0hKJmdrF+wAD8ifOa69Ni76NkJhXXHq2U64=","rGjoADtrCjxRDSNpFkreWfcs7/G83vj8yVnnWjASRC8=","8wwiiU52ikev1CFadvnR5BXp+hFQHHD/clQmgzECfPk=","gGvTPhCk6VynJtVQAIJdEecm7n2IctIoNT8CWloWv4M=","J4hf83NXZODGm7Gv8LZ3I7yMocH98sT6/PwhfT671hI=","0u7z5928FisnJQEsIQTdQmeJyEfjbrF4VDyL7Lg/NHU=","l7RL65LThwk+dyZ4yZj2mlOWjT7aOeaZUzQi3RVTX44=","GhNiSX4qqq7OEEFy/ET0i5ElfsyV01zacbq/T+rKMyY=","/wS2W4T+f/pQ1Eo40cxgofu0HnDFHiV8slOAziicXfQ=","63GAvAagGQh126/jCcONNGNc4xeaH93ukMGyif9uqC4=","bWMm/6i9sPPhA5JbAKqYcOecawi9POLsfNLw8iva23o=","5OR/hwjmFNyFZ4SercmiXfogh7XIsQrVGRiz00KQp6s=","WsKTEt+61m9BFSL4WxJDCVSGKotR6CAM8AM0PoB4PA0=","v+AsIGrRrvfOCfP2U8BATSv2jSGi4I9qTlls2QYpao8=","F0QTbpowyVEi9D5iTmKdLG3RuhkOMtiiggdPU0uFqWY=","XVU6QeqQec5hLOO8oTPDHLWKxI+s5j3rS4bWIS120/U=","rEVBdU1Mgikw1NGz6u7kHarnbJk48Ve0DFYTho5eVJs=","A5b+Hs2jeh4PlRfYX4yV+onyKD0TOxxzFyXuhltjW74=","eSBGlLaTEMq1bS/oRVG8XGBvv3YbFygyJJS3wq32JxM=","JQ5muJvGv4Tb3gnERoCNeyjTth+FOIf+v3WsVLjAP3E=","op3VgsGIEku1rwrOF/YJsjaYBApyj85Vss477LpSHXw=","+GijmCsgzKiNnJrnQUvKaM1ZVAUuwFFTks+Ul1bL7mI=","FDceyOWRB2dvsejqH1FW8W9GuW1DVzssCEexdQbePDc=","A0uJ05sJx0qTs8Feh//y2XVLoXv5ImHipIIiduWOcNA=","41Y6WnFEMyU3CJQgYbyExLBb4i4gVdwoaz05dMJu1mg=","XNAyqPUUR8m+CZhfAN/8q0KPHnXjU5j0HD6RYbpQlrU=","JSl7EzqROdJ3cMGWBgbqXCmNSyBE4pCSuyPo3wFVY7s=","l3cAIMi/x7Pbt/uvLRKdxsKFclVperhH50wGF534kA8=","Go6jMH16j3rypEr2s7euFJ7bJvhxxM/9Q5qz9+L0c4I=","uTpMzi/tqa2pDwZTRR/mb38SdH9eJ7Xjeve72s+/Ieo=","LQtfXgT+G/ibZqHYvpZU9lAXfM3pbfAvhHQOzNz1PLQ=","Nb4nbH8+o1AaQ8/VcBOBHgHAUrujz5GSAAGNby4M7mk=","WzQhEviv0I20CaBKOUMARM3ZRsKyVTfLOOgrnyt5R3w=","6GHCRcXGn04rLP2mvImhVxNtGznyZqGf67gdybUE5ps=","VJVd1f3pvychlmmhtxfB77HWAIBH/jZXZXRdRcNuJ48=","ILhMEHhdNsfXgEGMBo4Y2pqXn6XlOuwsvXziBHAvA9c=","x88BkANiB/GqcMrmnMbty5vjI/Q94jZflmarXV2flds=","XJXR3lXKnHWpBRWTZbsEpln5j00QRQMN4CZK3W99rzU=","PhnIH/tv+577XHa3PNbG3deWIQT7c+0vMC+qMpHNomE=","iBsALFMr+nY79kp+lvtSCgjLLT5O4vzZCH9tjODVjEQ=","k79qW2yKrCpjm2yjytTSqx/qybIV5wLe8xY55lvU3+0=","6QUBlZdE36E34VJWgu9FzONCo6wAGnAh7JRWL24rXy8=","xxv9bE+Byo7OL2MvhUVa2TkSj9AkzOD36dtfnWFxXHo="],"block_size":4096,"path":"assets/csmoney/mini.png"},{"block_hashes":["3/OHn8eSsh26CSmisD782a/DRq3pLOXehzMvPf+dVCs="],"block_size":4096,"path":"assets/equipped.png"},{"block_hashes":["NbCRGDJ33TEB26dOyyO2j8JaGSwdNSzOqVFaiKMua/g=","QTT9NjlVs27kbAoTTfq/aQKn1t84bQYEwDCVLU9OUQQ=","FK6sBIxGHYaWWBiS1M9XJwxaZtduaFoD6V3Cv5ekDCE=","ptwg24H3LFwYAlLKr7Cc77U5dCpNdU/NBM/c1+UVf48=","MPT5r767/0OUfNrpwKlyY0hqDiyB3L+tLeNZqbl7zgk=","1xJ7FXtRecIpPy7Jlkw0w/1QZcIBigs/dA2oVuBvEuo=","dZsUc1EzHztlhYW0QBc3HFF3mTOIMRfWGjMTgh2KFWg=","NZpTP7j57GBOWqC3i6p0ZEdIzBLFZwoDuo6I+xa8xHQ=","Ju6RZ1Adxin207yB212rLD94VOycuDIlM/QddnQ7640=","yZs5dtd1CVmKUif1UgC+7mZ0eLi7sh55KsqqdjZK/mI=","2A0l5p5ZWWj3YFcuS5jdAWSZEiY+YqQhf8Gj+9nWHz8=","HYYaY9zGZj+luDeiqa3Zebqo/Bgl00QmMEETlS9QoUk=","kzZHqZlaZ6JjB3mcY4dNFNadSaYYtUArjMm5trQQF7s=","qgsHhQ/0eqlAkLOQyNyXjBJAqTfLa0fqznQ4Yxqdx/M=","/B478A4/ZKiAOIOE0gjMNREBSrjijINjDqadl948Slg=","gu3wZAcavp8rxYwWGrj0f3J8lsPkRqWuCFkTN3Dxn5M=","00B/l4zYpYaYszeZhVj8T0nst2++9JbzEf19eGKMETk=","LLNZIfMOxad3QgySJT9DJS4yT+6iMDtD4nIoU8qb82o=","PphUqPFMWCzUxtgQzyOQIeK439gp65BTrMXP+lOyrhA=","/RsnXdhrdJTlPT9gg4PIZZyS6xDtFfp+1YApb1oMyYU="],"block_size":4096,"path":"assets/flags/fam-flags.png"},{"block_hashes":["eYwE87KHBllC1GSRdkJYrxBfzjgPvoHtQca+yxb52ek="],"block_size":4096,"path":"assets/intrade.png"},{"block_hashes":["/ptN9rMtVtAp+vmP3B5qPT3flbwhMX+QHgf4NOgNbOA=","b0bYfHIykD/zTUs9XR7piJX0LFc75/WEQ9sGj3o23ak="],"block_size":4096,"path":"assets/json/cc.json"},{"block_hashes":["pjgdwqom+adzRZFrwEEfLtJ5m7llYWknm/hPM7C31c4="],"block_size":4096,"path":"assets/json/stores.json"},{"block_hashes":["+onBGa8C2Cd56bYYAUEgoAxEMcTAkLIV37ZWG/9AOgE="],"block_size":4096,"path":"assets/json/tf2_quality.json"},{"block_hashes":["4fytV3KDaCFylrMFCt8YJG2UK3J3RjjrGpA9uiwfB0k=","CPaqRhjCdHB2SDu/wPSlkGiWRzMdl7jA0MO8YZYDqMw=","Suzyg2refoV7vTxXS+h+QcFoF0TFlSvikPUa3CKpw/Q=","HyXmRfPnv2FmbEQjqRuHp4RdZ1084XhB7FzHa15cdvw=","M1VFv+68Jdau7wCtv/RkeSgm1IgCRcwWbGTuYrWBH34=","5rbO67sjH4dBmGGcUzchgAxeK2hj0VijfGwA1OWoowU=","NbXlEyRA0688prXuplYM4Pbx2Jdzf81IiV3rCFcHNxs=","44xBrocHYsl3iFkZxizNSm6LfgjuSK41a4nbeuPoYig=","YTiRv7E7r2Ngteb4v+ZWw82wFiYt7OXTU6QDEJ6hkLA=","3acqQxyDQw4jputVaFyVx5KR5Bvfden2yO6RjfpkSUg=","tJPf6wzpW9QzSVFqm++++rp3HGi/Sj8fc9GXhM0g/gE=","/FMPFz2oFveox1Ii9MZ035IZut7M+yrmX+fwyxmrVXY=","E+kH5Ix2q2fmoqRXeiloqQhesvg2+BYL66mejnC924E=","B82ZQPn9aEEByAmmwk5M8AnrXU/Z+/xxzEYBeCRQAJ0="],"block_size":4096,"path":"assets/knife.png"},{"block_hashes":["eT37Y0FZAZsDrdPA8AJvg0D2TKOB3U10kjihvtfGxd4="],"block_size":4096,"path":"assets/magnifier.png"},{"block_hashes":["dZAyFwYlJ8WkSmiGVacRxjZGd5y6IeTHyMRTG/Iw1is=","9U67YDifImfMcfecwX7CLWHUZzhoVEp9X9zut4V1Iwc=","QHAqGN7j9sv1TmENmzuxDvGeI2Fe4pBH0S/fxjVhZ68=","X+GWC57B4FUqdcFGQes/roTh38ehX4Kf3feBJPKgYNQ=","nbkcugljOpASrV5x86WBONSLTeHUflmHH8u1NmdE8ec="],"block_size":4096,"path":"assets/nof.ogg"},{"block_hashes":["U2KJ+NANi4nq+8uItdrsGSQECxRHryENRvE+sLAVCwE=","BAtOMuzb34UH63CYBjwQORrMFESSTkGWJiHSQINbQhE=","Wp2ZKmfNXJO9SyCqypqeTuQC5gnR/Y7bEdX8BbzSFo4=","yT2ovHSwvhr4FiYu7SqpfFZzik2BiUXOGtx/evEEmXQ=","NDKM61ZtWNeg1Ys2jN7yl5rpp0pMe3YJOlLttOT1HBY=","2snkt6+AbmSPWjDfH5saaqKR3FlC0PrUFavv5D4llYw="],"block_size":4096,"path":"assets/offersound.ogg"},{"block_hashes":["OLZUDFncuJv6rjdzjPuhR5F6lEb7YzqlV+eSoMNr3o0="],"block_size":4096,"path":"assets/providers/csgobp.png"},{"block_hashes":["dRDzNDFJkoRv5iKn3cPRxBtl2KR8/HvJldHOBF/1r5g="],"block_size":4096,"path":"assets/providers/csgofast.png"},{"block_hashes":["ozbeiUeBrZZlpCxUACgV05bqWQ3aHbagdZBmaPLgU4Y=","iJl7tkQo3NWf0fja0DSzK/F91XAcM3ovxNC4Cr9rWqE="],"block_size":4096,"path":"assets/providers/opskins.png"},{"block_hashes":["xIXt+AhFvrGLzvZLar11th/ZD0SWF6jqAvEkt0XTHgk="],"block_size":4096,"path":"assets/providers/skinsjar.png"},{"block_hashes":["l0+3AeliUCShmCW2oX+3U0qpSHDCPur8p6k1rMwsC4A="],"block_size":4096,"path":"assets/providers/tf2.png"},{"block_hashes":["/xyf6HUy9xRo++xkDOunRMjZ8IvwA0z+/fAib+qTsJ4="],"block_size":4096,"path":"assets/verified.png"},{"block_hashes":["Vy7yoTCuZtBnwDgv7A8SayaINILojLTzwoV3VKZp1XI="],"block_size":4096,"path":"bundle/css/gameprice.css"},{"block_hashes":["lpWTz/c4HjFoZzXUvfduuDqj7ASzW5we6LnUcUayhIY=","Qy1tUgzOtgw810dGmE47VLHibyZxQjxua21Bx4UMNFo=","vmPwhk+Hk4cfsWPwWA9sb93/ej3jd5LLi4suWJuOVKw=","GaL8SkuJiIW2OqZs5s8jW7PuLDUPZs0v5oGPMX7uVFA=","rJ/3QAYqtWJRtEzJqjCL+WdqBQT/GzmEOKa9CfT6Mz8=","ixHtAJBppwODw+LxEqq589zTu1JfOJv14y5eB4bPVqY=","D+Cf9TVdQa+klYQsJRPXzGSzWs2kZUw4quc4X0mGls0=","2C7Tia50fMtS4PT5Xejez0fhjNGmtTEYsy8m2UzRx5Y=","6kvr25so1KuWJxta0CPlEj0LA/F39XboxJ9PcYBoGp8=","iUB8Fd4e1fgoYL4puilQBa1j+j22XBQgH0V+PDGMjzA=","aId6fFY6O0KINBnz941mlQ3tlrS4oJ78hvbdoT2lEe4=","iQYCwbkNFLNVW2RxR6evsQC1zwAjCl11Ytk0aEJ34oM=","C7nGGblQsJ/f5Sw1nbaqM6Y5Kl17L3I8LSPmG7NlVwc=","EIu7WGXhTtPqi3Nx38H23knx+JEOIidwCAKsjbs9bzM=","/+vlx8NA7k7/eiL81j26czVdHTZqDNLxZxLB8td9Nn4=","STfiAVfhDHvA4S1uwSXTFq9ZwjHwEl2EjHLtkMvGhhE=","hteNMHTYDIp2m0EfiXPX8QwuiC4fq/d3CVpFEW+jUbg=","XwndIpcqoGNf8Au1IpfS+OidDNyyHc6xouXAHDc7tz0=","J4+yeP6i9eDi9JLRzrLeKDPnji/DwpGxtTwgVlL2Lyo=","oHwf0flY3a4pGPb1qBSgArgubNhLPHZrbFrS5nQ/rOk=","iyPivsnvAuOAy9vXfndcv4yHJ9vnEW4RZHPLEMiSvYc=","/tKqjgv91eF2zTqVQdPSlgnuJb0vFO9FdY2GXGDYMgs=","IqLqvD1I8zHgslsqByqNrtBWadg0qp04KG4aiX9QEkk=","uu3Fr3iyI1Au+5QnNHH7lGcZF7Vz9MM/0a/NAE2EEWM=","qbB5cG7UEqAPMsXERuPh2t+UyysFVrY4pGwg4DOfkfM=","uKAFRiQstaxTezaRA9qkyryz5rDTsLnj3VKSHp+barM=","+8JvtCy2dWLxFftplRdfyN0voWEkyeB3cmB/7Lw6K38=","N/7diDyfNDWRvJikV4gOwmW2favQYhfRM2t/ZL9Hv+Y="],"block_size":4096,"path":"bundle/js/RequestCacher.js"},{"block_hashes":["czZveTk7FbSEPnvDMV39CXsRyVLKaoUuiCPr0xv7qH8=","Lbcq/l71xehauYU2/Ij7IcpValYNwb3+PVD0o0n8bts=","rmhze/MXUdCRFXspE2YRp6m5rqXIu9cUHj6nbA03/KM=","YUFaugAXx3HRaNk4tT1h2YsQG8eTpsRm5GduACdkmWs=","j/Nm2yhEhnxGkPx8Uljr488UasshJq/EbtP/TzXouAw=","ryczo33r0zRi9mFdZAeO726GpUsuFPvRgdXuZzeTsvk=","orxoIyJCVK0B8AVuPSZP6TYSN6g2Nvt5KYq1ZhbMty4=","ucZRqZTsaB65CQMI9TGrnzP0LJ+44kzXqef0TPUq9XI=","Ql/LbNgCb4r0WQF2Og6Eud5pdU+2wPFUa2JQvfz04Bc=","eHd8p+EdQEYITYwsonSCDl22D+zwanS+wsRMwX3K2Qs=","/f/drLn4yjDF2K2DrDXFe2U01p3K2r0oqPlZjaOOQKA=","cm+CL7XnHqscCdA7cxNZZwH5F1ioActZcnMxhAR38Ok=","VfNvDYqRXreL6Voi1gB1kxZETqTj1bRzDcgXruqAzyU=","2/BTJpMqMjRjrRC0EmM6q+UrXOqf/go3+upiTNpkU6E="],"block_size":4096,"path":"bundle/js/background.js"},{"block_hashes":["mX4d6KKKXlEiUhU3Yn3LVJZrw8du/uQiLlmFLPurLjE=","qMOz6luXikb0jVoVZPgm0RDBpxfACenLQZXiuJnNZ40=","2ca8LWTh3xWk8dAciWkccu6mM3tSqcc+vArVl6ZYcUs=","mHScKf5PCNFS0pqFPLMT/6NqNc9taXRCkBymSkX0rAI=","vmKM4lVzTFD6Twp4PZlqPV1cJQSICy9g+SPA6QVKkJA=","EozHNAmqB2fKjIdPu6jo5jzT5Ue0aVA3kRv+1IntGZg=","/N99e7OWAqCIkl3oKLnXCjKA/mlJ0nbKe0sfFA7077k=","WPvTC0dgQVO6IxRYZlumYYjZIbHcOHmBCsCy17jenxE=","hF8ebhtMER959D7VxoPMiVLC9Gbcb4CV43BgJNZJIRo=","R2oAWia2lJp3eqse3QSsYZEOzXZ8z+UkbmNSi16HqUk=","XpvSsdaH8KvRb75zgmXo29Zr/3n+TiXJf6dhreQGpmc=","1yNdWW9yfuVGz2wPo5PKFAReU/dKp2SqyuAkNYeyP/4=","UZ/pHXXFtAODqqHlM1ilq3K897yjXtd2fk91ZpDbWSs=","GacAN5qVxn/uC7KCzGLZqZR3731TvfUi7SW63hSm1TI=","47ODn8JU3bP8xBtCGD3RWb+h5rskkhb91oxZO5ohieI=","MXeOy5lnSfadMPzd5RVjlVVgfy7VWqe33mySKB1Ujho=","RhGiMuAasYQje1xOumL1q9eRPsxMW8YO8Oq0VmM//Cc=","/0pVM+opJLfp+oifzWVQWAQ9P1KnZ4KN6q7yu95u5Ak=","vcFnwxx6xQsH6M7rpgAXWBcc5B+6BleIyuzjEgl1P9Y=","wZPWXBTgQ+9EnSpT4orn8daVjGwNWMHm40yuz4ODx6I=","K9uMme7L54t82wEVNvSuaXCGgHmYD8vnByl/I9v1I70=","BiIta5nkdgIBdeptPG4rFdi7Z/mgsBFTintPumDhaVU=","djflMuCBEFgr/FEgyuiH3iIR4ei7uIwp8ToYGaK5XlY=","bh6HPpvN82taUJETbS4+RvkLDuMAIfoHhGhxHr+ixFQ=","KI6/TpmjKJnXaDEZ4Z+35Spat9Z86B7TwmVbl5RgLhM=","QnTk9JI6dVUzKhxzrZJN9/FVjSwBbSsH+Cr8eljxS98=","ovQ+FJ6MqGfkPwezMgqjcCqL/LDndnwR1ByBEt+OOYw=","1NQ6iHECMrEDDPPYgSPDaApmxculvSFkm9h470Bs9kw=","+43GgzZspvT7nmYSm449KEI0MuraD6F/v5JTLsF+9gI=","VgSg0rnVLcsPM52bRvPl0Ig+KW1yDfP03VF6Sp1meEI=","K6fGfuPHj90u2KNRiT8vxJAZUGr7bfoCieG0ODy2+GE=","M3uju6wrHNM/vuQMHnrxZdWbIilLvyktgr854OhCOIs=","h3lYUhiYQTZ0AGr16uZpPCkHWliNVkjiMyEAR2141fI=","wrn6rlIZSzRwlPVS0lSRdhuKI2cNCZuWwvf6EZSJ4tw=","41Zal58HhrmSu6A5Hhl0lan4LPLOYKljeUpPwjGEyGc=","XLj2pdA/9je3BVdkiD3SuiNkwvPPei6wUlBgwR9EJYQ=","ubHFwDrQjTPaPziOdenogu4SqBcfvNm0ji227HucxKY=","yAksKRY94j1EkLjpI69tCFNjUAX/w72YPhEPdAzHt+8=","XWZFBeATUqKreRFjIPiCklEdmDVawbkkI69cjoaTwCM=","598PDkgrt6n/mlGOrdjh3z2Kn0mFrrFaM4Jl76EFkO8=","sQne+htPQD78bg8qREvEE/LsFWS2PT+IBjbWPIH/8Vo=","Wzw4dm0psjrB7bU/ydjB4aiwtT2UfwdczCQMpjRMqwk=","Mej2Bo68ny1ynhx6Gy7lKtfTIs75n3QynXgzeU4N8JA=","dbwpPGGusM2Oax8gmQ36gKuOTRKauVlxqr26x0DWt8k=","68vfuJRSDqoH4HcIL4EYhUXH3SLqhFg6YJukRwlFs4Q=","IZeNlBvkpAUd/uYdXaqKO0oaEKnj4R+n+s1GswrJmmQ=","o8PybYBRSqUUX5UIfp/JWQ4HIw99haKJl+xiKhONd48=","2Us88usrz7dlk0jSpzOlUl+f8L9MQMjB4pupF8BJfmo=","b0JfTtLouiMBi8H8iWQHsZ1gehIrMbkdmZ4vvCYyGKs=","RyGMH8YFjeb3QhYzaN6nx1QOsSB/TEeP0Na+qiKnSh8=","2b1bFDGqmp0r0bMY77+Hxixrp2zLllaNyk2/we77Lo0=","IzQO8F5Ls3+T+XVdYUqZ7IJJQz6y9jZccxTQNTIPQfI=","y7vmNYbwtSwoBp3A9hG3Ig/u0azjVDb7kzNBzCwX5b8=","vjF9uWx5nB9Btf0L04lwbBq7zVs3QRtHtrRrazeb6v4=","u3p7fm8E8Xw0rApTx5GgKMjdhJR1yk/kSD3ZNCpc0ec=","RAiMGd2eYE6X7HdQq+2wMNbx+ohlTKykXN8EKzTlpZE=","Wtm4mlGsYW+FiBgAGTwDHH4e63xLbRiZUu3b4QcwTGs=","HsWOClb7Zdbas27uD7/ODv2bNsQBUEq1sFqepz/nLlU=","R34WIZ4MsJjZzDXkfJJigIBkEZ6cXN6/tvq6W00oScA=","wk3WUQlDl2yEYiKopzKPDnb07dhfR/gdyWj6ziOzqKI=","YZ4jS7HZ5yZV3x59l2HjdZQQXjP/m6OjDRvUo44vHAQ=","KoKYhzJK48RUlHc0/8QmDyzH5403cdkr38rcWKyWDZM="],"block_size":4096,"path":"bundle/js/common.js"},{"block_hashes":["6PFZAVF2TS3QVm5RQEcDrN2maLRnvB9K5/6t6FF3y7w=","51RDmWJTw2ouS0A5cK1/Ay1r1serIOh7kF5vX/j8nTI=","kNa8/kN6T6ACpS+gC0k0K9YJjAlwGJqOYndUCT0kcOw=","jLZ+Kq/Ek6XZmxX3dJN0B6cBgWKm0zamM6zeKpGWErk=","7aKREB+WdDyQ7bKUSQ2DeHEb789thSyOCz+2hEzVlZ8="],"block_size":4096,"path":"bundle/js/gameprice.js"},{"block_hashes":["rF8rI4OHFBEG7Af20Y3jJxM0UQcx2M3BM3+Q9acacdA="],"block_size":4096,"path":"bundle/js/highlight.js"},{"block_hashes":["RJuQEZ9uGRSUFUw7xg8LHyzk+xy+Pam0xT5lrqqBvyI="],"block_size":4096,"path":"bundle/js/history.js"},{"block_hashes":["CzY9sdm+/ymJsuf/xeGZNR2BS3oXiTrIQnOtKxK7MaI=","Vk7vVNW3OzpuQvM4o1ueA2vw5cvOP63Ok7O9QnDjjCk=","83xGjUgfVl403peNNIkCA9nLe2IisRYxuVhwjuIiVZ0=","vsqYGOqj3xkEWajMj9jhmH542GcB9VOxYTWkuMuVTGc=","CyIGLvpunop4Wv545W/DJNqflyM2eLwp0AF98hm3gkE=","b0Qd8DTzIGq9EAn5IrUm+yHRBG7JXiJqJwZL2Y6haRU="],"block_size":4096,"path":"bundle/js/invites.js"},{"block_hashes":["BDhO+ehiAPw1vAicoPMT8RfMU09X+lqEJXylQiTH5rw="],"block_size":4096,"path":"bundle/js/localization.js"},{"block_hashes":["5IwxNR2o1U/2jGNLJkPhWZueR5PwKluIYZMIO95a+Kw="],"block_size":4096,"path":"bundle/js/newupdate.js"},{"block_hashes":["Qabn3PlzhUvbbXPHbscuXPgephK6qz3hV88BbTAkIYg=","3Ic1k0/SYGLPmaxfc4hLoxWcCsLvrbJKU5+N0QfOvbE="],"block_size":4096,"path":"bundle/js/profile.js"},{"block_hashes":["TvONBLK7P/gWct/c/TZLWjPihe8jUm0cEDg8SJG2kU8=","cafxUn2+q8c9HYSVWvoRc5Z1MqqbSbUd8HCegfVPZ+I=","T2J3Zd8Lt0ltHfjvUb7CfqGQQd9L0PqQBL2ppQiWwbU=","VsGHWvbqz1WISCk7L54qmAoxaqzyaAIU162fvq5jkVQ=","CmfhUoY8CO2OmyxOOL4E8XxNyGNWXv0QBIUyvMFm2b8=","uypCo4oKzhX2FR1axQI1DARPddGcivSKbflrCdPusmQ=","f4Jt5rXXdIzpDkKDiqh9Ft8rC25Y2LFyAq6HN/iCp7M=","DPjtKKAwLavzrPiKZod32U4QtuLtlUNKwA/YNFnb91c=","a5Jw5dXTtvUJCabA9BpDD/SXoUVFxJzib2H5DXi7g4o=","SOwh6aGUgavy6q5BUb5wYosxfAJ3ESq6egXewcjviAI=","HznnXFANKFJYMEOicThRdzc+0v8r4KD6CvpLJNG4lyI=","JnAPJiu0xhHTIcLVox4RL3NVFBsj7gwT4IP2+S9M3EE=","1I4gujtvwbt6Fco3Q0NZDNXYuP/fRcHG79hxW3i6r8Q=","Zm5QBSjvwN3+n9euGKumn8lKsXofYWtDN9oJW1YtH9I=","NmbNHSqMHo9euI5ySbP+zt5uUHNc6oRaoOYRHgsLxGw=","REV4oU0Q3C6to90qV2LlVcQWVY9D4vMTezzqG0Mu2Fg=","cYyc3LARP+T94GvrA1rucR+Eajrjbyk2nmQHkOz+AuU=","hEBYfGn/V/riAgA6XZk4fJ3+DEPZtr7jllu4PrPMfbI=","Q6oXHPTnxgXSdmHYy/xq1uZ5dqpWbRl+RsIsSJq70Ns=","YKPYoqEm56Q7j6prhH5Gx+z+npBxC1/qKhkB5bx6rIk=","dSsBZkoxbu3x9y5XN2ZcCzpJJP2zN2hD+as8nDCcxus=","DkwgTszdVxMN0xX/5QPPg28rU4OJ5CWhp5TRjERWUNk=","n01hPbsaW825rve3RCQo/e6ua+/XJR6CB10qbS++ROg=","k42RH7/DGOIeMyJ5kqdPggI4kodsr0kqx4tCUeQr7gQ=","1LzlTzQx4S4AumHZWQnn5f3sGeyBWGhNSAEu5clOl5A=","ZkOLqdGNvjx7e9O85lqCr6BUf2g970pQKQxX3Ibk6x0="],"block_size":4096,"path":"bundle/js/regions.js"},{"block_hashes":["9ie8QHxt0aHz46Pu+OwM0+Jo5NOlUmw4cmUGwijT5PM=","Y6lhN591hJtdo4HbFc7LVkWap0JFMJ33AkfKgJT0Y2g=","gt8rS7CSm5PhAeP9PfCcs+3TaiCinecadLo1iGZzA9c=","eZenhA++wVSLlGx1flXpbOj23aJYL3Cli75SWq9D/mQ="],"block_size":4096,"path":"bundle/js/spentmoney.js"},{"block_hashes":["w33EEGd8O8RH2XX9krbMCz9kw0pYuzwI3JBdn0fVxFc=","N+B6nyAoAZnr/qBY5auKA0KVrMrXb39GwO/CpWtP+l8=","1A4spWkIoGlScS4Sp/fWTYs2BZwadi7U8W+ZHr7598E=","tFEX+u6gN31wzGDHiZU5JUPwqQCXlkcNCBTs4TtW0ig=","IpIepE/UjdUVun/iVzwnWYniAoBZOBG5A/+Y3WF4LGw=","aUhNMhteGVCm8lXfq94hK6C+LyAmdlx40b5ZQz/uq3U=","Zor1WqZ6DiomiyhnBlgqDL+dA9CMv5NQbf5CiMBv8KY=","Ixk8Mt3gBbjTu8vSvIzQF9fVZWK7wPz+7RNVSrzu51s=","ZD9xhkLLOz8IVYnAhnXHRUFtOEbryuWDNx7A9kIOFmk=","yx+Txwe8t3+q5WEeyUzBAe1ciXrW+LqG3Y1gWvhyQWI=","naAsr/lRouAxkeX6sbFKWOfXa7bblICO+wcPwHQ2REY=","Do7F9UohNboLLpi2XUIPfOC2/VTr6JLvkcOck5E19cE=","BAJA1ayZ+mYD/0IWody37drncvYiW8ZkU/FxuLtjIb0=","DsYnab7zDlgPzPHB73QJUhhgQ+GyL6ZnBawaI/SPhyk=","QLnHvwHhVOpfD2n+HpgZT/ODv1MR6MrPykY2nKqNXMk=","stVwB003lFog/wemMPn/TsQ1fqg77yrMomEV919GSE8=","LB2j+nWaeetbzpZZTTIIZqPnaA3hdLiaJzDeni+4RvA=","W544X3YPjDroPDuGYtuuUfk7M1RQyNsSm7jxKHSs9A8=","Gvh6POhsNnE0pmO3VixlhvQHi8LQc/tQUTtk6Z2lAiI=","zS4qPx6VxFRXCIudqElPoKbqDkyecX/M2cuzyQfap5E=","MTEsYmjthpEt1BixmczxrS6wize+qzrUnIzXmyGS3Mo=","+qpb7fpu0+6eJyuQXKi9fLygynKwesTo0hGOGf1WCeI=","t8J77IfFvEeIgdVWRo10VGs7ISEL65x2bYTJa9V7dX0=","HLd7Ba23cUN3sCAmy4hQ6eUHiwQsHJQBSDcOc/fWoBw=","m3mY/jj91X9N9yE+/IA2mmt30J7gUEwbGsTwTLD2AXI=","urajAcRHeTTujmmtYIEa6GjQKnYE8tn7aG31U6CNhcU="],"block_size":4096,"path":"bundle/js/stores.js"},{"block_hashes":["27yl178yEI6x48Bb2KuFcVyLzBdwAaqCNTNkFVXsUJg="],"block_size":4096,"path":"css/bookmarkeditems.css"},{"block_hashes":["jqRv5GQDw98cIdh4aHiYqiuq6yMMdaQvxl5aRs2QpGs="],"block_size":4096,"path":"css/changelogs.css"},{"block_hashes":["iAnGfE58cqlCizI1o9kzds2dR3r/L8vfA+FtU0STjNs="],"block_size":4096,"path":"css/custombuttons.css"},{"block_hashes":["aC57qvQLF5M/1OcWRA2fGZ3nDk1tbVQYQ2sEwfwnRH0=","WCjC3uGyfwiB0P1c20R4xMkDSUcSL0ZdqSg2gJQcJKk=","XO9BlA7+70j1BX5vcbrZu0R0r3zkuQ8uy3thOnWTej8=","mLZqqeFq//8EmcguW9eoqtro6Thl4mn/+M/oCmU5ZKA="],"block_size":4096,"path":"css/fam-flags.css"},{"block_hashes":["MlVcG62AU+a9ASRCrKkUff50lc5S0HzSzp899mm23UM="],"block_size":4096,"path":"css/faq.css"},{"block_hashes":["16SObswoT6fy2/4Ik3Vr7r7ofTSm5aV2kx3ZeB3R7eE="],"block_size":4096,"path":"css/fontello.css"},{"block_hashes":["LzEfBUinoOJeODS8qe2i2Ixke8Zvy8t/D3yLGBt6UPk=","6W3sf26ofNDlWTFTz1YZ9MiTqSyMVnToouLj25q2L1Q="],"block_size":4096,"path":"css/games.css"},{"block_hashes":["6u//gIvCt7X1tDiOWmHwZ6b5IG829LuSF+QvkKduZgQ=","DoEiQ412R1sBy5C5CLcsnbM2xiBkei5KoS/WOg0xAso="],"block_size":4096,"path":"css/general.css"},{"block_hashes":["BIWQMKfyvMejuQCaBRb9hGKoav+3LpnQ11YHlCuoJd4="],"block_size":4096,"path":"css/history.css"},{"block_hashes":["9ZX5AqjCbmzgwPYbgN5z2kNinjCs1VC+uXEVHZcZrqU=","3d4yPnWvzpurDVMt9g07n0mb+2yEIf2Gj7QSl2RiHH8=","tDF6JK3sWffpf/g/zk+2zl5dCjQyr64PeKcSguiaO8g=","qDQOZXgD1zjKIQxdOMnetHu9NiNQ/DvkODqdmqenjCc="],"block_size":4096,"path":"css/inventscript.css"},{"block_hashes":["WASkeM4qarqbJdr/yTQOhb5SUsVIKMbdx91EOg1MYp0="],"block_size":4096,"path":"css/invites.css"},{"block_hashes":["dovRPInhnfNKvbRQth1OxUXYsSVUDnVOhODinaZhFlo=","ySN51v3kn1A86kRexdtlHqLRiGNxS0KIg+xOOMQ3y9s=","t0i2rUbRnL52xisAtcA9a6U66VopWXGEdm9iaSlwEvQ=","tm3UdZvy0MrN1SthXlqu5IhGk7LZbU89r9ofpaEbLZY=","AABWgUzN5YEc2r1foZVbSNcTekOX6ZDKNo0O0zFbjtE=","7VZhx2jinGuyO47LZV7S1Iz46gd6shuWcMw/8yF0WeQ="],"block_size":4096,"path":"css/jquery.scrollbar.css"},{"block_hashes":["/dG6wSjaou5GICuZbCRDQyoXPLKwCEpNc26FQ1IDSEM="],"block_size":4096,"path":"css/listings.css"},{"block_hashes":["OA3wkOJSKtQQgH3mLw7mTSEwBc8LLCE3HmlHgYYhWak="],"block_size":4096,"path":"css/market.css"},{"block_hashes":["xDbeDBFInp7b0r94ELDLAjbG5iZ2UedC3SR9YscHCwU="],"block_size":4096,"path":"css/popup.css"},{"block_hashes":["huLtHArO4yCmvd4G9nPEB5EPrdbD98e4R12dbXs9PoU="],"block_size":4096,"path":"css/priceQueue.css"},{"block_hashes":["bGxD+s6ISmuKzcITHhRP3dK7iFjFtakuNV1x9H6kj58="],"block_size":4096,"path":"css/profiles.css"},{"block_hashes":["3lIKWiKlRTB+Bl0AjOFeHYGKxIR+UsLZ5uhzOGooX3s="],"block_size":4096,"path":"css/tradeoffer.css"},{"block_hashes":["jQOy+7LRhI+HOQL+GpxC5wzDxoUb66+BYmmh+K+k3gg="],"block_size":4096,"path":"css/tradeoffers.css"},{"block_hashes":["DDxWXB+HIOW0l0nRTwf7ebQ0Lqiq1EowP9fezNJCktY=","0/iKa1A772c2+x39K71U2jTOwslGpzAtDxQWr9xMKcc="],"block_size":4096,"path":"font/fontello.eot"},{"block_hashes":["8OxqL7EvwvaDBs8TP2fmWvJUU988nhw0fmRTG/smUCU="],"block_size":4096,"path":"font/fontello.svg"},{"block_hashes":["V/lyzpOWy9Pb7dFr7fM7e4BsZ7zH3dgTcMdDWT4ZSMY=","KOHgAzYpojXuFV+joW2U//q7bcSWCk8pyEZbkiUffWk="],"block_size":4096,"path":"font/fontello.ttf"},{"block_hashes":["vdP2ueA6tQmEPRPqYirrHLZ//KsRWGEs6DQ9SxQermk=","nyC+pRpyU9tuQnOC5+DT1U3M0hzKp/Lzgbm2q1LzFRg="],"block_size":4096,"path":"font/fontello.woff"},{"block_hashes":["duYErzA4wy3BXVFIvesPS1koMEkxeBwuTrcUtzH7yHg="],"block_size":4096,"path":"font/fontello.woff2"},{"block_hashes":["D9rMqVbzULl9pXb/R5vDtnnQJuYxvJztW3bOFrSeWa0="],"block_size":4096,"path":"html/about.html"},{"block_hashes":["GmnhPQ0K/IZaiKEUmHbJRVKNy83/udkgWHVIxW6rU3E="],"block_size":4096,"path":"html/autoreply.html"},{"block_hashes":["ylG7YGY2czbkLrkd3PQ25B2MIskGQkP1eq08hFVuSiU="],"block_size":4096,"path":"html/bookmarkeditems.html"},{"block_hashes":["mmG7+PTKrrHH7QzATvW9FHeV2tGhSKbnVLSPsmfIWMQ="],"block_size":4096,"path":"html/bookmarks.html"},{"block_hashes":["HG2m9JYvmcq6PLIbNXb8tAGTO9sMUOjJdWrvokMpJ1c=","jw2McZu925Bw3iosdbWhW8m2zrgv/gnuTn2NPod8pd4=","oVOTTWh4Kv/Cdcvn+i8lXB4uyHNwYmypu08eyOBVt8c=","x6vyih7OsC0+2WrQJJUkQ2pdr8BW4WbMByyZSDXoLYU=","oeTA/qwHPQqkdr/IePFr/evsTCWfcVtoI6X++Rpygew=","9FWVlJ15HfUUQ6zjK0FABNF9qqM2kdSS9yUVvNwyr3w=","B+SWwmfJ03+OQkyJAitU8PTfJvvA/yE4+Qz38igtN9M=","3z05vp2tbtwpZA5zC0kvrR2skfonN98rjJngT6BpXC4=","cWjlLN0n+dR14joDDDQh4NbXIu6dGnsex02khKt6gDA=","QD4VeWMJj+Cm7q7djzD8KDSHuOKBiAPhleFf+oBWKCc=","xSv/LaEHZlXEGVRppeEC+/yCAHhoYYDG5aamEEQGYYg=","T52nDEd46iVsGcYyDSXuD6Vn+w+Dlbi7aYXpvAn+QO0=","yRRSoTpyArrv68olD8UlmpDwXKvPeSEZjg9hXZBp+lk=","2GyRfxbEXYGLmdVFrC2kq7fmj+0m/TW3DVnvYiWGHig=","oPtBGlzxFBXtzK9AYYeFfCMvam7YWFOPqg31UCTUuW4="],"block_size":4096,"path":"html/changelogs.html"},{"block_hashes":["qQaUsx5ycwKYkGcjSBuZ1r+EqMSWE2JhTMSIOgiZJ9c="],"block_size":4096,"path":"html/custombuttons.html"},{"block_hashes":["R4YhejtrLGVlYQVQ3mFH1qUzIFObmVYpB4g4Ty4QS9I=","ayBnpdUTmijttx/2nncSm9kJTorposj4JR40fyyYFrY="],"block_size":4096,"path":"html/faq.html"},{"block_hashes":["/P2s5jkrwW6u17j5Qsvm+rRH0dkdlFgp4gNZqObirmo="],"block_size":4096,"path":"html/graph.html"},{"block_hashes":["pgSH0lh78UcC8NMwKyPJgev+sAOckKevvhQWDV6WyW0="],"block_size":4096,"path":"html/newupdate.html"},{"block_hashes":["aIilIcOQd/NV9slZslt9t0WNUA/t0/tLKwyzAa1RnQ4="],"block_size":4096,"path":"html/options.html.exclude"},{"block_hashes":["WqtnHEu6IZGnNXepgg+C8CpWflbM4kXzbHGJt+7p87w=","9Dh0fnr7adbRXf+GAWBnVC9IJ/znvG4g/otmLH8ac8M=","0hF+Y++uByY5LdDAX1yfcaLO7QeSETrLy+bgIM9XcpY=","XF3tPca+nSfvzoPP5uYBfjn4+NCdAFA6dq12Suo4X7Q=","ocxR3ihIfDsdhTnDqTGgJoEAjfJd6mQc2oJruSKUubQ=","ye3HefgssX7r5+/PhYE1u89YZar7b0kJWOPVNHr/Bk0=","LKQtiIQ1yTYuwJa4pex7X9ltP6okqNXhGhnRVxdi8cM=","pwNu8RqVxjH1oZoK3q19S+gquXjWAikgCznXw4CQQWw=","VulqGkB4JCDenWYCf67shjIWYluXfLCmAdx56SZupDA="],"block_size":4096,"path":"html/popup.html"},{"block_hashes":["reH8D8Ybi4z7HRDogwfWNX6aYIsLry0ICDyRBBi0Osw="],"block_size":4096,"path":"html/tradeoffers.html"},{"block_hashes":["T34YSKZ2OGcOsY4B12x7ZpfFB1dZQm3RtJOlDE7DBa0=","OxbYMNB4G9TPk2rK761seziDrbUQuN0yBwL1NdP7SjM=","Q9+hBDjOAmZ+OzVUmODZGkKale8XworH+JXl3LHisxs=","ppO5QpRQYtmvNkq/vXS9uNGE2IP/NxfFGmXsuPuDt34=","0S5k2bdXrF4oDx8ADlUv6b9wQt6Y2zP6b1OX0Elch5k="],"block_size":4096,"path":"js/HtmlPage.html"},{"block_hashes":["jzIPSXxAhL2eiR9dsBaJAvr/nss2s+meDTDPvdviDx8="],"block_size":4096,"path":"js/JavaScript.js"},{"block_hashes":["7P9ZbJhhpA4ILFB+kB4rWz/qFbiQ6krUJPzVIFJ1F7Y=","AYUOzy8aM9v4BqQCgVM5N5TBE29kAvbRe5KatsYkG1w=","ccnUsbllUMLEZ3qmmymu7jiMsM7uWTdXzC8S8cK0IEg=","7cM6qGlxN2dLr9BEqSe3SY6aWvLTL71zIseB3AKwoXI=","uX9su6oIRd7EnIxPTq5A8nPu4vAJD/g8CDRpjQSbO+A=","OoSer9qRYmB9zYZQxj0GAt8L3PobIGxJT0jWTb23vLU=","ZxI+Wr3+Hy21dCdudzpYGGRL0gAr6ER45QPCf1WIX1w=","ajSKND053PxmLvnlQtAOgtG902yeYSqTn64MktspyDQ="],"block_size":4096,"path":"js/PriceQueue.js"},{"block_hashes":["yqsIULKkUgZVtHog7bxkZxLAlX8plfabLL0qKEQxWaw="],"block_size":4096,"path":"js/autoreply.js"},{"block_hashes":["Z5+f/jTl7ne5O0fk80BjhNG39SBPlOUHf81t2yCUMCA="],"block_size":4096,"path":"js/badge.js"},{"block_hashes":["LJ3IOQI74gV3zf7uLDWHPYNT9nUaZJB8WR+DLH0y318=","D4lDoZBUCCrJRY0BC+o80WSGbdyeZAi8Pa0PC4a39fk=","tWByC7fWrRPJOIZ5P8LOZvQ7m9WzB+UPnnBofcqJvbk=","kdjvQwN/grMWvAwBYpd2mK9OhjTtje88771vAzO7InE=","pO/cYMOd8devHNkfnsEqkBjnph+L17Dumu5DtfOcTYY="],"block_size":4096,"path":"js/badge.script.js"},{"block_hashes":["+OP4n0WflDP/Llkvd41r20ltGXvjcEwrSB4dAHLRlY0="],"block_size":4096,"path":"js/common/settings.js"},{"block_hashes":["8JsQ0t8AHwDJaworqS0SqevHgExEqAemBsI41IbQXMc="],"block_size":4096,"path":"js/faq.js"},{"block_hashes":["GCqus3W4c0PrXvXmBedwgj9GZSs8ahFzJ/jdBhVQ/s0="],"block_size":4096,"path":"js/gifts.js"},{"block_hashes":["H2idcfvDYvfEieScmB1654428IYXbG/U44n/EUENBPM=","bezm3efAdhcu0KSm40Qf8+0ST1ndsVC9L+RkEEtpLRY="],"block_size":4096,"path":"js/gifts.script.js"},{"block_hashes":["n/bY8WG7FnlHKCZWyFizsS21g0K55AEfPFaJljEi+0w="],"block_size":4096,"path":"js/helper.js"},{"block_hashes":["OR3KWSlHbqY+Qgi/k1l3v16l1Gn+jPU8WmSGC75JbJs=","AERq7BJdxMqPhg+/lYMa0iWU3lMlQ2rXnfIDY4j2gew=","AkJ+wqzVKEZxhJZr7S+OMGXuRGLRf8zJCZ0d330Cg0s=","rB2zCI0roHrDtUdppNODRy8Y/cSlFtWgGA790xE9w1c=","82qObhIzFWOW9GQPA1pjU5TKonR8EVybicVPpUPTQVg=","cnnS+xrCw14PrkR2+CPQdp3eqU/yKhoO9LQI1xuSFTs="],"block_size":4096,"path":"js/highchart/highcharts-more.js"},{"block_hashes":["l2d+V+eEiVYfcsu05duPAczSV+VOUSRFhy0+mjwSF30=","HSqxNZLu+MINCFx2AmuutUWM9EKvtPmar+6I+TSGZQk=","mI7qtV0dkN6Uecfx8f6fFlcbIa7aKyz+qW4ZOVy2tZw=","tfH6jVb+KeK8XRjFYyE0OG6nR5LrCU2ai9+LIGolJWs=","tn8GbD/ql5HaSPsW757iyi9vb50uAElFG0Ggnh8QbYw=","0odv9jFE0r7CuGpENM81ph3JqN841eGNrHh/2HZQAIA=","8GtQxFwSQ80uSsTkzeuob3IxjcxP76VZQg9Idcwt5uE=","OP3LZN2RZItvenkNyfzTtyHuJLtT3J6HwxB04j9msTo=","XNEqaDudLIL5bK2T1/RlRTuFxCyighGEuxcmgusqdLw=","Wozj691no3BSIW6DA+ERbNhjYNB/M/Dc+xwOQa5jCPA=","JnFYN5SxgzPtwTsgPDWym4APgWcvI2rU8x5SjLwZUxo=","w4Ynl+NytSAb6tOFiYmQ+xVwlZhqUAgfI4EC/uQlsFY=","FSgvlwzDBYYbq59W8QzhVGP8t07qdsqvLON7/EtXHYw=","RBQLpV229s09CNtIhVDte+z9t6FeZ8qko/eKhtu5Bi0=","HD2eqLzs6mdNFvCOyWJf2Qef1dHzRL1g3qrY0SYWiVo=","2ajJnaognHXQvFh9zYPXXHpsKDUwELA46DremsB0LHU=","LD2jifXcaklUWCFg5PQ/Ybxk9wxC+52Fs32D/VJncBs=","N510p6FuBiLAXJAtmqV4UgQzbvJg762NgP+nZVByLz0=","abKC44LCijF+gOx79b5NRtdlNSJPLGVEcbRRwP0YRXg=","RrdzEACpIQdz3YMmMfohh6K5q97Qk748RXOwt88Udyk=","aTZc7wh6aV7dc6N8NFndLsemi1z53JZX1v3ijq0A7OQ=","+1mUHatJGaB9JtlsAOyD8OYvjuhcN2bx0f3mmhP0Yqg=","wdm0+/cBY9KBdoGtj7HlShHrXQmfyyuPiAvI1Ngv1q8=","0ZWtMpF+2GtfyV63eS4j+WDheSqStAo9vZbsFrMhNKY=","92TywK7mgOSRBApfBqcc68i19xa8I/LtPjCIbEfb0+0=","hZ7eE2Tk84j0ldUz6HKkSjaf7UQTHvxoHd18gtKFT74=","Y/qyJ+Bnz3zbClVIl1E0uuh3RwEr1YCNod7RHZK7jVI=","avkRUeOB5sFUEbr//Prvvjfmpr7lIJRCh3cW5UjXdtU=","EUydTf3coJrmnp/Z81ZDNaHCXP07K6VaUBQ02v/A/5o=","dMMR7o8GraiARnVVw/LzebNhcskTFw7R40npOZgVE/I=","76HDMqjWoHebAU7PFSfw4sA7b03DjYFZUuOKBKSIuuk=","7WNT036nlcMaCpFoDet9M5bVR+zImiwZko70DIVF0f0=","B5ohyIRGSgSaQCsabbkTubXMQW7Xr1Lapydtl5kuaMc="],"block_size":4096,"path":"js/highchart/highcharts.js"},{"block_hashes":["T7zmR1p6QWrEGJmro1pkPp32dUe4ulPNi7rwaKKT8R0="],"block_size":4096,"path":"js/highchart/modules/annotations.js"},{"block_hashes":["YA75OCcz+uqQrhYwXhofJWX2YY8F2FVVyclMTnhvRDg=","MF7FCkW6rKJo0f4ZF+ImSXZokPO9Wq49LlSowWRejqA="],"block_size":4096,"path":"js/highchart/modules/annotations.src.js"},{"block_hashes":["7CZp6btCA3H7Nw7xvXl3pYZwq4Vm3VRdwTOHBxMziTA=","VPdHT8OsQPhx9j6wN3syaPnGBNWrzxFGSpPVDpXlkVk=","Ufha97tTxiJvMr7QHH72n0tKBnn08R8wNJxdFjIkHcA=","dGHLAtcMUb4k7zdLqrdYGOzHbOsKBQ2U3sJVvhScvgM=","6Phj8c1BKNSM5rQT3dW4QW71P3jNRb+md29XsfjxpO4=","Pjp7VZ7Vu4qHfHK5nRk5tlcXKOkryGuw8fAaShYQ4Zw=","/+HYzREF7o44kqypLFloswP2ergNrcHtg5KHOB2Q14c=","uipxIAy3WuwMtV/74RF4rq6CZtrWTiA8F7rhFyaGIZo=","2wtbjXK8lJ7yNPUTk8Ta58trx0JJAKO1fwhDpJHKYa4=","J9LgkzlsSgoOOPobjc7fv+mohh+qWmG+a8ZSExd17h4=","BANvW5kCAU8yPFOt2HmBabnJHVByji1oOcL1YyOxghU=","a//7yFUkZn20DisfDIn1pAklcy4DXPc9CajDPYB9Bl4=","OVGiQA+6Y19ArAbDS5sa7D7C5wOYnuQez8nyucvagdo=","ME7tawDFlrLBLeVMBUuJILBgju7c+ZSzQm0uWf1tzGw=","YOlsRbEIy+WdZN1DyiF499coVjyd9cK0miAbSB9sn+M="],"block_size":4096,"path":"js/highchart/modules/canvas-tools.js"},{"block_hashes":["dfsW/5NPAsamb5+bk5XLNf2mD8LoB8X7OjvZpWr3z1c=","VpX4lvI9EsjNNneaMTztw8OWjYtzHCLWAiqjlMv7ON4=","vuoeSeLjS3V7wjy0kc+8YjzHKMxtuTK5eBJImMWzGFo=","JW33UroQoF12NvZYvpBPO3PBGlwMvIHhIRHdw87gGwo=","aDT8LbDibkbn1PY6PlwYO7RvLR+ILlwbeLRh7Kq/1UM=","w2O3iIRbzSjQwnLLkz18Ped3Eu/576fi7fqwPYMqB4c=","8D0PK4zG05MfqAXQGmJbpey8oJGvEnlB7+sX6Q7SQhQ=","OP6GN1dGG1DgpkAxSLOatOOdSXrfCzt6M9ZRfYr2rGo=","cyfa8CqWQU8rjtPuHS2wtnsNWnU+YPkpeInQpiQwv2w=","tP5dVmNPSCPfU4KD6TMIgDexsRyQdHid0iYvMKoKv8Y=","zaCY7cIvJTdk6FSiLHBZm9zB7LaMchQ5rAsnMjCBJHk=","yhLDH1hVNoT2GcMKHHUm8zmWVpCAk/IpGGViANpKp0Q=","KWkULVAW1hA/sm1s+1Z8akCePxp5jXUpE/XJvJE0LqA=","l0UPTLf7w2DY4PIM7obzylzjvrUubbSnMiJHEelVLsA=","mR+vA9EoAMpDkyg2OQaYCrEO42v9FXcca6Ezc3K8OGY=","OjHj4yoFmX2E6UOMyGockjmA9qUdSjhAHZSSkqgK9fE=","j+4pTdr5tjBllJ8E/5/MsB5QrJ6EIKs38o6Onf5S9Ks=","r6lRMIIL/tSh+GV3GoRkLoa/Ur/i0t8uedkC6Q9hfu8=","Lt0kj0E8IHUkWbBFQqAamg4ZS49qMc7NB/60agKTJ8o=","v1G+90r/mAIeDgkPA+o3htmBFj0NTvPFCxXuLIdBSC8=","1Eph1DsDV2bX29dIuV7/iU7qh9spEAGHh5ma5jrnPko=","95iBPHvUvJhzcww0LZ3X4mm++FucKJe+x0s9yDYbios=","J8bDENLKk3vNZghnNm4tIezuhtSijMMQ7eflDTeAHpw=","TiUzfz7isyDR4xQxSuJcIyq/tpzpDnm9W2hFmpNxu/Y=","xq4u+Ark8k3cyedrmvTpfWJTrFi2WQTTGw2VTjmh5rU="],"block_size":4096,"path":"js/highchart/modules/canvas-tools.src.js"},{"block_hashes":["aeBf56WFSibel8hY1S3ioQb1L5z104EUJ/gDVB2Onjo="],"block_size":4096,"path":"js/highchart/modules/data.js"},{"block_hashes":["JRfQIArgQ+dEDoYwah3GH5jFx8miQeFhk5+l5GHLQ+A=","CwVxwSnhaF5/KoEcSBm8A9FEkbCOtjSclZOc5I3EfJY=","eGqfjRWuY59kkOpwFrrZJgY01qrl4v6qTxyNVX/xbb8=","WzPQJT/ikAGNgTkn1JF0QvOidKVpIlqE8kR+nZ7gqyE="],"block_size":4096,"path":"js/highchart/modules/data.src.js"},{"block_hashes":["U01BLVPAGU2xVOEOYynFo28Kg2A4EUGRw+S9a26Ea/c=","iuPfVAYGiCjHcKb5gzk39hDKbl3pKmzWCeyWDjtrY3Q="],"block_size":4096,"path":"js/highchart/modules/exporting.js"},{"block_hashes":["LIpBMEtlO8Rfeo+fejqZHJwn3UZzx1XXf3zbqHLpOX8=","Y+/Ut7zKsTYnN5vluBsxjxcT/WT+VGedoU1D2pwRknE=","arCEs+1Mav1rSdtfRbCPxxnWV9VwKeaYxXMO1l4gD/I=","bymaeV6fSMqrMqc2EaeAs8WwciiM6x7i8Y0yvasx1bo=","6crQrtr/Y6+0u4+0+r9Ve1f/hmREJQ+VpQPGXb9XWM0="],"block_size":4096,"path":"js/highchart/modules/exporting.src.js"},{"block_hashes":["BE9Drcy3UQKDjidrZXxItYUVw90+edc6OzVJ+daP0Po="],"block_size":4096,"path":"js/highchart/modules/funnel.js"},{"block_hashes":["tIB78iHuDyaPv1f2b5vkUhv5O+FwKZBKtGEXWgguYtU=","3Dn0LNtwe5B0suHsxms0ruUR7MXyFQq9Xjwlx1hdmCw="],"block_size":4096,"path":"js/highchart/modules/funnel.src.js"},{"block_hashes":["cGcyuvxlmAaKFB42+FE3kmwW6FdpIHbJ8oWm+MdRGx8=","wB7uHRLWqDP2NmCWG024p8zcsRStVPLuosl85vRbxBo="],"block_size":4096,"path":"js/highchart/themes/dark-blue.js"},{"block_hashes":["/RMy5VhcysgKYcTf90VkUq9sriWu7dYPiaNukljgyMM=","sqK+UAl82Fd2xZEcTsmJFiQjI4BvKsU3794vLq6oOKo="],"block_size":4096,"path":"js/highchart/themes/dark-green.js"},{"block_hashes":["ZLj99sI/cN5vbbTDDwod/A290ArzPbPJBiX9nEh3/HI=","aVQGgpm+Wnk1RKl/nwp80nwnX88/w8SRMxA681H15FA="],"block_size":4096,"path":"js/highchart/themes/gray.js"},{"block_hashes":["/H/zNT0cpxdfR5YOPXSY33MXcgRzM9HPH+//sA+20i4="],"block_size":4096,"path":"js/highchart/themes/grid.js"},{"block_hashes":["5XUQOYFNSVuFOKG/xEUnoQ7kPk8+FYGtDjGx+/SJBRY="],"block_size":4096,"path":"js/highchart/themes/skies.js"},{"block_hashes":["X4oMutAiwxINJCja6K+zo1ARh/UmP/WCngORKwDZNdo="],"block_size":4096,"path":"js/history.js"},{"block_hashes":["pAXYqCjT7a8T8i2/9WamKQwTcns6mEJQWm4nXSvRn6w="],"block_size":4096,"path":"js/history.script.js"},{"block_hashes":["dMr2xrRufTEDa7h5Aoq4eVWzGYSncFV37XSIbP5utnM=","jBU+C6hXtinVgHDJbcsBUP41bdOLdqLM0O2vaWKG1Ew=","IcYquXeTPQIdxEmGrpGAHbG8EWLuGvsqM12HiQXSWXc=","k9RpTUR6/4eiCyB5M5qoAh6LrAgGqQMAaYAnjMUj6Xg=","pqZyMGt2VrAzTv/20+giSM5uMcZpp8emfxyy4s9mcy0=","RT+UrCvOXU706rs9tSBZNnQg3JqcMIwZY52fH9WMkB8=","djAZEu3BQtPpIpGJXYgPTpAQW4PCkb+TLqpVJsV0cFQ=","gP7nFISdP/ImBhuOYweQOcGg8CmLzRtVBpn2tpvxsn4=","wiafhGn8kG7f6F4iCiDO2xAaV9RFLxFkfykUnZiBFeg="],"block_size":4096,"path":"js/hovermod.script.js"},{"block_hashes":["lA8jC2POGIqo9tHVO/XKo2GWHnXaSFtVf8iHLh+nWoM=","0YlOUaoHbWWQGBiVFdku66ZbjrIeoFk1ced2eSM1tiQ="],"block_size":4096,"path":"js/inventprice.js"},{"block_hashes":["6n+RT92DxdFFUZ9c8vcJhDRHJEwk0GM3JQP5qFl4ajc=","MkzynRHyegS/Y6plD4moiPgW9BVxVdqgq+TSByz7gJs=","iQYxzN/r0NtPg/5G+iiyF8gAdexAApHZNHTjZUMLx0o=","uMdHPl44gQvwfHzZW2vRAp1b/1f2ZX8XDjMLpXnZWkk=","gnmBuIVzU8Zy/hDYeWGgRhxMgoUT4Whz7LH0mutOBgE=","2jQiYglZ6YN2e6jX+W+KcYfjfolZ/OJhK8Mu3BFr57Y=","vVzN6UYl8qf1BRE3FcHqA+lrN7bv3jl3StxLaJpeB0k=","5LJmWEvcqbBcucOEUrXvv1I/qDvN+7e9KN6s+17TGE8=","BWFbIbl2gQVBiIeUbj5BQ/DZJ3ioxvPqowZEh+jMweM=","0yKOeYg6aNDGB8IpyT1t367LHb1+7FDPDcAa5YfxNk4=","80rB/LOTv/hmG4rzcY6fOwvsDcBUVdKjjXEguaqoT1w=","fJT5KtIy/5nApdvBoXhdHGm3XLb3ErcHbut/EXDkqqM=","Iw/7kYcqAX3816WaSOXoaSfk+KBhaU8thfVFLTTJlMU=","3DT3KcFSI1cxHtX95ttVS5JATvDzq0M/eA+vE8vKmQY=","N9wJ8NRrQOS4aQRFGfhDuV6ZL6l/oflKY8EAX2a4HsU=","u1GMzS+dvNx4LKRR9SUNLbcu4iiDiBi5JzXrR5YU0Ys=","L6/ePXSc54LhhiFPhEuVr/v0L5d58i7vXRwicUCSuE4=","pvjHSfQERlq55ybtMZb0PPBeMbOlo2CQ238gyGiMOV0=","yO71ToVC7FFCgmwAqZfK+WODFXE5JbLQX3Z8ssfq1vo=","zXux90EbzGJlJm5LmcSOyMkFRlLDHa8wq8mynYOTW6A=","pSJZi1tByf+xZvwYcUFqhb3GXs0kG/9a3meWjl/TH3w=","IG+ulqT1mnyp4ZQhl6OX0x0C0z62wYozAfJOx/F2yf4=","r8DbPiJXBQ9bokfUxmKBGOzpvC/A1XRd0/SYyXbjsK4=","bH826PYg/JsABKd58WGOhta714q3LXL6aYY09arU87w=","cvRjg1j4yrDfKBQiCdSlV7pOpqhGJSqDrOv9cTL/4Ew=","Kxlo3Iq/gxoQHioxvoolntEcGw+o/shvMvUJlG/w2l4=","CQ4KbvmuhtGm8ERdHD2gJBU2W6q7xp7c2E428/gOW+0=","tUNW544RrC0CpE4J23Zt1e6Zmqga0qIePf4zjBteVi8=","0k7fkp+yi49ADoF7eWCvfW3y3Uvu20/WEWrC6IsTw8M=","/RFYuqRtsIqma5Y6GtCMY7TD3pWl6AR/4+DJzXGUQLY=","PdnmwEYSRtGDFHRP2t2VwwzxKxNBypKAKBg3L9wSOmM=","zerUlBg1+1sShiselyGH0M78b8dgqZ9F81F5OR7aOL8=","Oiy/Zjd7DcArsZgVuRt94zBa99pgfL9rFKrtRn2rlig=","oauK4YjhnEFYf4smoPQNJjVjzz19hEVqKnnWd+0RP6U=","46InN6LY8hVRNByu3we5Oa1XV7fhMx/eF8dFQHLunjY=","cZ0SHGoLMwNJJoLvuYqG/oxUaajwbknnb+0Cn4Qs3q8=","evydXmAli7IfZ1VQPiCOW5BSfxMmOKl2XOGxxay9nFs=","nTInT4uTmz7QyDGdrZm0iykk6WE8YaAiuLjXWTNsauE=","8VfOxz74lUKdd11hhSZ9aab5hBhY+ivMKa2m/cpGvcM=","bqN65tVyfbDrHKLVUa7HllI11Z28+DIcSYk9KDQ9JAI="],"block_size":4096,"path":"js/inventprice.script.js"},{"block_hashes":["otc4uTzQVzSRHy5BHwqY/h06bJqIx9Kc3ssfgkZG27o=","4M9/h14+qE2nl2kbgOY5A0Q/Cr8rsWcvztM3Pa0lmGY=","siUHAGjeOWcIIacfUhmQVrhSGlv4ymJ9JWmfKDuk+MA=","DxAsCbC8iviraB6qvL+maQE451KAmQzZ+4IOjH+pfOI=","r+sM7y9Dd5+3vNrgLFQMHirjXJktZBpxvo4g/OUJg7k=","JkMUTw/MWytz/Zn/omqRAT0f35GP4FjyzmfHmHPvMw4=","X5VKRXf26zCzyszyLeCbYSwf1ibsJQ/OZwpdjmCjXU4=","idvJdtalEpt3X3/dt8FUCpzX1KZGuXraVmegC0WVkPs=","FrGez8HHWl4UklwaPcXI5sZiA14MBfODXIRdOG3ewE0=","7btvrcKFx0m49rdTuqS3keUnt/4IKK3mpxn3v5v1gKI=","+B7kfoR+LZS6yia0kKwIE3nieQltQ0xeqK2hy8I3bLs=","x48U1YKoQ20G5LCT2eBS6rFDfqr7grcvAgX1AlHW0W4=","XXJy76KX7TMsT/5s/Km1yAVlNOXxSbw0TbGlANh1buw=","iA3nM/UsUfm13Z3O+9rSsTCKus9uB2fPYaa5bR85GJc=","PZKF6aCG8rCgHECqq0oSLpXoUDM362o+GA6a1Xv2Sf0=","dmUwn3XYw3CODJdKqBwDsPRVUUlF4sLIf0zPs066eZY=","S1Qm0Gx2j7nm5sVGIL5WxogiiwJRUVQn7G3rUAAEAbk="],"block_size":4096,"path":"js/inventprice_140906.script.js.exclude"},{"block_hashes":["4Sm44B2mtjd/u1t1siQuwRqG8UpFGncHGk2N1X4h17s="],"block_size":4096,"path":"js/inventscript.user.js"},{"block_hashes":["mtNeF/CwpDsS8PGbi7N09x2wvPVjSpjM8JARmn1y9G4=","2GHFyHHtEDyMCaXy5cGx2FM/ZNJqy4FqVrQ5quUIYUo="],"block_size":4096,"path":"js/invites.js"},{"block_hashes":["jOglm0YapdApdNT6FrjsaFSJgRgmyECi4pV9//Wzb7U="],"block_size":4096,"path":"js/invites.script.js"},{"block_hashes":["06x4zV5t9oOpN4ii0wjrO29gRcx+AunrrWlvQD7/xbk=","KL39C+wydbaaKzhnfkH+w0Zo86bs0FKi7Yb0z6CHLJU=","l2TUpVkwbHEqdeAijkm2jR1X3rU5RzPQKSw3y0K67Xw=","8akfISYRFod3qgQG1o6dFyG6fh8RIRQHdUAZ42FJ2TY=","2N9kB/lYzuGNfOp+mQ8ORmpwXQ96qUflF0JxDaWtSX8=","mdgyweG2r6Jtxg6vi0+bKbAkVYfay6tPXChB1xp0LEg=","TZg3AK7f2D2EoLXBbD/5ec+0H+MPn96lm3c6SEbpox4=","fSwE7b/RDxXpbUt9FUACwKbBnibblPkQD1zdAx4NEo8=","CvYLcchRkIVhzVklWygcC+MNLCl4pN6pXVWrSC3znoU=","4+IEv6ik83hKj51Xl+rp6GUZFFvdzZc109QX1cQrwO4=","IS97KRgZnFKacSwHL7fXMMHruoJinmzzItQ3I3MQqew=","B4Y9+gZov2Y7LEhKE/Rv3d/yNRDnSehQaCNCAuxhtqs=","iZ4fF3w4exkg7ExjqyIPscrBLvpB+5RyS16vo4w8gkw=","ffUd8iIHJhmoIp8/qPXWMliCEVEoHsDF80NeTBXd9fs=","tB0LaaB/aPixLX6s26M0L9npWSZQrS272XBPRBirYn4=","QgS0mevErfPpSYfigjn4nzQrHMrQgB8n7BTBrEUHhrc=","FJ2V8SiTLPs0SK35jS7pbtRcV9VzzppcfaNQIspnhVc=","aSoeMZykweZqdVgLJoE6tKYke2YRu5poNcFsda4UfLw=","ADiyKxOXpTRD+GVgBGQEqDA5BR7MwyckB5GrQ+WKIN0=","Ad0H1+YWxI6c4yk54PqhYKAXGAlDvIrKeLlFZtm/TRc=","Ad6KDlEDEVLG6yehe6rjEUWZpkcnygJEtxxJ25MvGqM=","rXQ/FREW8M27s3w1hPNB4X1hDHXgPCwyoX4p2Q4pujY=","vqOW1dHwGpIXsEuvlJiNBuZM3Jtg9BEejg5OXo9H45A="],"block_size":4096,"path":"js/jquery/jquery-1.10.2.min.js"},{"block_hashes":["n8Hr3R1JdBpPCusl+vpG1zKQyxOBrtRV/40jtEVwrME="],"block_size":4096,"path":"js/jquery/jquery.cookie.js"},{"block_hashes":["F7JOfVC91t3mlv+iSPxPaeStNzU5g95sN1yXSh3q98s=","LWVcpKyaSyn80QHjAbm/8mJLFrlmRiYJb4CaucPkW7M=","reRyqr6khBu23VYMvq6reha7TQK70sbrepmP/4Oo5PY="],"block_size":4096,"path":"js/jquery/jquery.scrollbar.min.js"},{"block_hashes":["sMlx2QSQpDeCpDC7i7yAaNHviuoQwW5qBnRAK/z2+Ic=","0aDQZMnm+zDu5nrnvE1wsgBNhcSMwu8tJ3hMtxVR7iY=","+ZPtxW/+KPbrKp8JoE6NTO9xyCKCBbsr0gOQlafGisQ=","Ub0jo0KIhyoJ0r4kEWsjcQ7pr62QsQEmqo3hzzlHs4I=","IaBpdvfBfi2JPYc+63eIiF3/RKoiVnLp4B2PY5uVCKk="],"block_size":4096,"path":"js/json2.js"},{"block_hashes":["boI9miLZoA4bARDskl32FZhAev7mPTxcMZMH6bgXrtY="],"block_size":4096,"path":"js/json/440.js.exclude"},{"block_hashes":["YXhoLpKicX005AbDF6MMgGaDhb0UtaNImiN8yL43MdE=","FYh9FZ3F0sSaUSz8jics10CUfCN4ilyco3MzY4rZZ5I=","vRJgz5tgkeiNPRF8N2+VkkuGsK55oKnZSvce20WtMoA=","YSot8MqsodPseETf1i4DT7OXFHB+cxZQ3HUxgZLRzCc=","spYKcyFu/6t5r+g3bHXVgB76I2ZvPCMBo20qfsN9auM=","gMEJiLl5wqdCQquaA3bEGq/JkCzpSUyAfdNCd1QU8RE="],"block_size":4096,"path":"js/json/570.js.exclude"},{"block_hashes":["9s4daXY2MrdINE6l8s2QZkQ+rOdHDws1O8m+Q8AJHXM=","OY/JxD+4OIp4rt2/dmYUK/2w+H6tMDNVeotXFxPU1GQ=","M/2INzIXNp1EI1053X67tLh+7tORtTL48awrnudKyCo=","XXnfjrPfpdnDpBZ/+t6p/jOfPEHD+pLh7oa/5yreliw=","eSW0KZFIx21ciEMPyiTEAkmaBeseO6RIsipsWZeTYj4=","qoGbeCA6IBEPKu+D7HQn7sqh/iJ58lUbtGEkKocGIAU=","PDA/TdQTVwbACOKjZAAP+6Trod5d60llO0J0xyu48gw=","cRLiFSJVucbUKF9WPRrWG19SbFjkjsIz7M5nEaQxd1k=","h/9xrU23kzcwNg8srPi9agjUIBEmYeVqwrNBa9AV6F8=","ynj8AN8pbCFvFJuSGqWkLMfc9+fpu1DTH1TrcXLxe7Y=","Qj5eWjvoV4YNUhEigcnOzpgnhRA+9FdL6APnBJOQIqA=","6ThHXAgz2lFDtFTbX+I2OFMuYoI6KBVVzSg+qSppbyc=","135ShzawMJXMvH4hLB4pjGuhSznqVLLbz+cslW2tpCY=","8mq9yx0zUPPIG5WJhoUxCH26GjUbymeeSJa1OHfZJ1A=","wmEhzFM3yVvn+pENAC/8bFxzCKJLazGbMjcUiV53aiU=","q108Zqub9j4zGtfYA556B+O3TRDUOPZZyHA5UYzTa2A=","hIOPVRsw0oPTWjsSPjJxpR8SEL7I8dgcCco1jhfoIJA=","bqAm8HUQ6XehdPCMxaR22VmAt1p1i8FWyIDbwfCXB7U=","/SfTjn0+DoO83fQ2Sr+7oeg+gd02z3yg2BayywAyUuk=","HWHkliFg4e57jztnS07SJEG/DNtPdeN/LN65uhsCGZI=","0Jmfrq/dVLyp0WTA2LZuPJv7SJ6ebZP0AcWfqs5A4rI=","gGNm067PDyYFJTioalaVHnpxHTypfm1QLzqid1gKGvM=","RRBTrvxcHdFEAW7nubtd5WZewQymcv6XjdeBMU+9GiU=","ZgV5c+DEkKqWp45i98/obeyepDMERDUsKCYLY3Ok6kA=","3BI816bIT79p3invawU7Uxqhy8mozt2VuQGSgY5uWsg=","uVGTzuiysV6k1AeiA9nXzUxvqy3NLL7EdNS3cWYU5CI=","A7CV4f92zH5IDVyq7OB73bUYe3vV4Ch+dD+WgBPmbmY=","ol4UCKGy/kQIIRIsJbITEVGJ9I0XdWOXMXCnh7CGs3Q=","XemFbb0KlFFRAbYdbwBtmD0f3W8wkdR5hER+kIhNeV8=","J8ruRkbosg2ljg8W3y/BxQmN7WghZbxeZxsxKAZInAw=","BK1x3IXEQ9N8C7JPUr8b1O9byOnLRCmxpPfMUjFt668=","Dc7OAZmxb0Bhpz0a5w7mSsjlyzGlGdJm0+qJUvUFvOA=","sWmmUdnc+4PG8hsqJcPBPAScpwfQgdxqgc76qC5gshI=","Hqy5LmOfkZR3SZDtVy+G0cpDtezejyERz756xUqfBBw=","UPJfs2MJtPV1+4vUG1NvnlY9n0MaHHUmUNpP5c/ZYfg=","36ceK2uLTKAHepl8ficBUznpaWnYhzczMNjqBmiiOMM=","adJoC+YvDthTefby7j+T75L3EAQu4SW0bfKIqoIcfCY=","RcME+TdYexGSgpU/XFBREaCPpx5ykZd0guGGZmktoKs=","seTxSLO/gDRtMRFJX+in63w3LQmTVeMd5U3yVkMYNMc=","kBijsBosjrStHTZ6g5jaZh2kyQPYi5emUlw2iXa/CSc=","5XD3D9Lkc31Pj7vb/BESjm+7DmVbsrjv59qTY9nSPIo=","XbB2DI/9q3kkhwFD9cxn29im2Qt6zTE4wWNDqfawbRY=","YOKpr5hXuq2x+SjjasUxyLjhcMCdudio/vtWSjj6MoE=","eiBBwz1V0b+51T///Sj1wa2oW+w8evgRtqaFbAIwMJQ=","mpy/2XG7aobREcwwFEPJ7zjVFx7O2VCKCOneeO1Ye1Y=","xX7SdD59TTf+pimWAyH9XK5gw26oiZ3ikBe+5nV3ilE=","NtV1EVMIh/50EhYj9TF1asAosdSYTI5C24v9Ob/nKoM=","TmPeVIvCWsd862nisnxmUAN9IwssrWRGuBl3KInlu+8=","OqoOf0xbnqDIxa71zeZdwsHDfIT1GjmLY+WkbhhgtMk=","3bwe0Lfndc2Z+KQNLkVuPdzk3GW9iVW8sob7SvPdAmY=","28jaM6NdG06gZv3ncKSrJAS7cjbcONUbvxvSqbilY2w=","MGMPy1Imloh0F3QLY/yMqEAllw6M0YGweaWCWzde14U=","qCQFL27yLvM678vFGmJ5y8CzPUDwGtmw7R/y7XpuTe0=","LAlBedk3WNTk6KhJbdn1WwhvssNcP1prQnGSOnvXrRc=","v5/p3GvbqEIuXiOVARI1weui7z0rb9LkieHp/jZI6f0=","6lRqEuIwNDDTWx5iFGro3d7vxd9us9heAB0i41WBTAw=","RCCzOz+yHIPbK2OcsRzy1UO29LlxFXHaq3+/Tu+Itbs=","/dRmZDkJKdgUYj1k6vEHvOwxd7qOloLjtUqj1JXc4Jg=","rms96ZIekvpVCX9ylaLoFRZysJ0h00gcz2/m1bsCpLY=","tGARSFMpJs+bmnixKAaPJnmq4av11rcBJdB5cREXwN0=","yP7LCw6FDfr8kBJU4/TBmBsojSmFayxlo95i4GNUnYU=","DTC6zpA2o1mrB12Z07QTUpBX02uPkV3pOf/00T0oKds=","BwMZHgVx8fWKcsXCQLb/h5wJc1O3Ae8YeuJEZyrBDoc=","mjM636B6kzjbnPdfUiLyNJWFKQFbIayL4zdIXhbDbuI=","izQmtPLhLnfu4+BAYTVubyMwj9lmO11Oxh0o9OuYas8=","hgoxn5ggv/x1lzfYOWuP6euRzoerIRyDz1reFg2gT90=","mRoFlS2JSbf109ZSQiiTd63noszfHRZGDsDCcOREyL0=","drxHTp9cs5DpGJaLkuUk3gjbAm+pChO/lW+e0SzDOOQ=","xL7sMqBG1Z3Bh8uXTU0NK1jcPE7+sOcbJ4SoKHIV9Ig=","W/D/0JLnUen7ibOU9fYhxSv0GtQNx07tLiktQLII8F0=","xgazRfTyBfWMu81kC/nD0Y0kSwV1G0Co+OjbzDayRKM=","ufpjx6TARQFcK1c4RtSLOp0FOm5xS6hJnyO4kcieY4k=","MjCLQP0lqKPy/04Im2lA83wTpSYIJ/kM29z4LWuTZUI=","u+oGsugzXdAZ9R++k76QmRER17b+thYBl4U44VQi+8I=","rJ9DPGh1ObKQoMM6lfrTcFHVA6HeBU2Dic22hmV/Tpk=","TG89GG4gltUUTwBsI2VMRx5wCDyzdDHzXVJItOZ60/U=","N0PCeRGPjIJIwXg5AsAy5G40QlNKYQTXXcwJYZ4K2pM=","m6h2mrSLjglM9oaxbWapI2jWnxa879SoDaZSrSWq21g=","kyFtffX6zLslQsfkw/IvyaXjEWscqEQFOMpRYlWpAUM=","yZ4OF8JEgXG9XTzGBuqVWCD3oUk36OhgBi1yj2bH+R0=","7Xq+D3JkHVdKvrxcfLDXQd4KyTRJT6AWobBB5WINkp4=","qsG0xJmZ1lh92hprV+z+wDv0KQbQhWfUwy2jlYn2KxY=","cqZLF0jUWWBKwN8gRzSPwAx9on4CVOF4JygsHATbavI=","+0mhOTV9ebQKC5EQ9MdTWau9nu9eCXUi/ZA6lolvVHY=","2mmgVbmqrYY+v/UUm3dxoOdtE4VpUxa9wYyjYTJpBvk=","PslFfdIS3tENr5lDVPUpZrlHJLMqv4Vm/KBzNtlrRCc=","nHrTYXv/5ljIvaQ6KIWrg5+g9wt5M3Pp30epg/XLLig=","UkRCmPT2+PzvTYB1qBXlL9LHLxUqss3vFo0wX4FW61E=","n1L22R3+izXaP/ek2qmRSzesr3FpSlxTRa6z/OFbV6c=","6cXp7YWgQCUQLHMR9jZEi1SidoggCFApCofx1HrpSTM=","cD5wvhY6RBYtQkooV6r8V+aG/MI6We27u/ClnV574ts=","blK7dV77DEDvK/m7GEhPu/I64eR4v0OPjVxm5ZKWhDM=","5PWhAKLDJu9RDoOlqsENiXylrG36surjXFc/IboKU5w=","GXWQTsHMv6Gsy6Sv9LWzqVEZ6tReXqM2Fs17RaRCoYg=","Bn/yHNU1PNzMbUiOoLgHYXYNspR9fuGDtq4mVFhUCB4=","P67gmiMk9bZDjUvvwAeGYSs2sFQNvYaxWnuSbKAczlI=","f9H9CkZjzxMZaAEhBsvqHWFe3lbAZJOLEP7GAk2oUwQ=","dDc5YkNIZAcu/292ezodM1zqU7z5y9zFGzl1uKR43cA=","/wsxzlPCmmSkz/+jMZ6lBxKAx815oAEMTEKA2A4YSao=","VHff+mUE74+R5bXbU7r6sTyUuWeGuZo133IcbR1LTK4=","ZdUb/NDp2/JaGbL8UMJfQ267kBUen9gEepeYpK8vmoU=","D1H0NRP3sVBLF1jUmDQc/ytTu8/IRaqnmVyPk8+RG8E=","eSXXjA8+eSDe3ArsPZCJbCUxIJ/grHIdGjfPzgDJ0h0=","f/L2azyS4XhFbL8U+ygK4pRbcnHSMvsUSlmLmsfYRIk=","9Hgku30YCqjf7z8DeDEx7cv0HDFMIVavljwxt/Peygw=","GaT+rxzqgo1LUTSP0LECIxPgSnbrQCwVpzJrha6tC9A=","RtJhuLxBcMUuB3yMVW50k9fy6CKDSn7SHSXOVraDfrk=","5KS9A0p2fslalCaPwyWJgvzpdYPftFrP0UXG5c1mCqk=","nB8aQojrPdoPrgaecy+WrzM8RFfz75nrpYduj4hecO4=","X2V1pFTFogdYhXMMnat4jb1OM2H3tcZ8/+QNtPNkvTU=","lCrw1gmlgub+44bucX1hgUoMDmyhiljH5JvE1cwOrYE=","UxgFp5yNpTHEPt5wcZYgDvaLp5fTqK1ERki5DC302J8=","9LsOvBDQN3IUABUOX9aHkHeyxIBYIYDaBrGbktmqiOM=","sVokeBOiZ1KNrSZZJ+E6aNHEg6HMQH7FtU9dDuPS2Wo=","OfrUiRnPG0+wAuVOMI11NTczaTtldocSQ+/UHXqeiqU=","y775u/0N2hivs8Mp7OSbgbqnMSR+GPjkpVf4p2rz+TU=","GCaNqfzXtIKd9UHohgUe56ArZSSrZaKenilIDj+99yY=","FtmiDRfqoZgn2XPjh54PiRf9kvYjp3opmCKtBvmI5Ew=","jJDXNlKfWLU4QnHwCqWz6hqOWsnNuk6IGENlBwjyn4Q=","Vehm6MzZj02QEjoGiocWwy7wXdjDUBKesnArO37/4mo=","92j/ZprmmuoJhmCVl9pCosVX4QWbAytAQgIunUqdH6E=","J6lBIjLAkqoQ13Uf7xkzv3KDbU2m42hh50eZRsUfD7s=","40g6MPjWhHPynpQU37X7dhrAZfk78CeVHY0INMKr9AU=","u7NADMJ7N51q+/Q4iGEq1P+FFOpgn6kiw6zcjZLQwXg=","CWB9T9hKzGJhq12vXhkcWiLBP69dEDq0zUwnaZlc+8g=","a6uijcW8doEsmco7oeJ0sFcNs2aH0sd3Xg/MGpwPYJk=","kWQEhFaSY73/9fmNv0VGkxXJrXBC7hjCgXdTTdmu6vM=","JeCSA7AyXmxQYgWGMLssJbsyOgiQ6du2OubGxH3V3T0=","lvHQXtRJ9XBIagfH9gEZ0PeY7LnHTYynlm2ZgWw29ik=","tc5Tw8l+oLAoNOdocK0W1quIcnZ5u9lwLDReMcb9UsA=","XTWxiwDzqLH0NykvfFQmcRh79mUedb1M4K9SdZYDNzU=","TYX1W7CxH1hiM8Z2vuDvM4BNtkeG8gSr6UlE8SCJMrM=","vsUYEOcrl+9/L0BY2CT2twHRKnE5HxmKfh/5Bx44gYc=","cSHzAdmvdweCvAQGqIMSOIU0x9KOGLTDz+wHMRC8seE=","5OXZcKtfQ4806phdImVh5DG7sIsgtnfF3y42owjK3Ts=","g4fSJG+vX5QfduPKWkW13IT+KufyZwCY9FSErcnK9mA=","XHabxr9HIv2M2bbJr+dbMQ4/ZoCPvK3c1Xr5Wc+3K+k=","/nsAxboqriYxi798o4phaaV2iw2crcl5Rf+4wfomLI8=","4PGPV0NQfgzg6+Ofw417kpsUrXF9EKQEEU61Eo+RSaw=","p35Pza92nbFGL5FTfs8Bu23e4WR6hRQFKrPlw1yFnt4=","LhY+WbEAjoS7FONH9Pw8/gD6DWNe+/sq5DmEIW2aQFU=","Htcn4niXQSj3vPp3XxsOBlMBXsn+2neSncH7LQLD8SI=","UDcXDKD26sJ/Fi4fphfubj+aYAP5ri73TCYc5OiF+Gg=","3OcpaU+9VGl+tGJhsvjCGvONSHYcRfTX/tvKkGdcokI=","hC/I2d1fP6W2BZHz8X0PWqSlTueFYxD4183bICwSUUc=","vq07Y+2+yj4LP4t65a7E5O8i/Z5RVQdgjmJyozFYgmE=","YjDIUOsSVDqxmGlpkswqtfEcXf24p4IJLyIlWkIzq6c=","FXXW7btGaYbwd8uKs2IugHXi4BTMy/DV/hr8n3+pHqw=","wEAJQqRvDAOi/OVwD99iPsyuPWUZSsBep5dRPAWWz2Y=","67p4vIdnP8d7tp7p1XYTXP4fynATodHFt1k80Eqjl9A=","R3dOw1WOegcpi6ND4Qvnflbw+CRZFHPztis7Pcqkgh0=","983K9Z5DPMXt0WB+QmccbJ3lSEsYsBYLsrgyGXtvv7Q=","MF/XFRTX7YkhGfPVUdicCjVTLadQ35EuF4goktmuaMM=","zESP53e7L7w/plAQcBJUFNqT/WeCfuQA5fBstIfmwyc=","g8IKaKN5Lj1V1gVcLX6CimRCIdqhRONjIFdHjFCHNuY=","LvSgyztwu6w8gRMnCA48TJ7tJByQOxwzukvQl461u/E=","EEP5vYLSeZzJr0EWn9LC4Tsm5BmAPCggXXbG807oRI4=","Bn+2KPnfHoy8PUvAmaHSuHqUxRbsd4j5s4bjBZMmqLM=","/SKiGQNayH4ASUEAUdS9f2elUpvRcLHvv8P34OvXnio=","sX5QTm0BzxGdalqyc8L6o23NRcZi7/9SaIeG96lWsPk=","ePU9IuTSGDR+htM5aG7rPZNIUaUKmWXTeBnFr1xSaI4=","JsZzNH7I6qYDvaxkeO4ycVBlMQhss3xaWO4/8PZuQEI=","q45bacqR1dSqMZSE3eAYx7kAtkxy2YNv460unn0i9BY=","j75AQJ8JgkHdeUBe4WcRytbLFKKaNxxDeHF0hONtoRA=","zosx5eXwYyolLfbdm2RqZko4rN6aVnC/R39c1qJbWmI=","O6CTfXueVcD9i6Wjpe2QXaHfvT/iIm+ZZOTCEq1ewyU=","h6F5tHCAJ+zmpKH+5QUWHu8umpKQSrUYEssalYZkyn4=","YqOv0ufCSwlSziY/09qdl/1EUOJuFakfVJfr7v561pE=","2nzN9/L16Vx85oMWU851uuxasuqVFltb5kBTBrbZ0vM=","6wDrQJ+Ci6xXxbRUCT2et6BS+PAQCCJbTZFcyoa/El0=","+hO7C/dAmoqYKO0uHjGF+638CbH9XMDw6w3IDcNKj1k=","Wlbdk/ca7RqiZfMpmNOKbeJ2Lae+6M+Exxv+cl2quEg=","90AAExHVlfzA6meknENqhr2Q+PbS4L+NjBt2lO+bypY=","rJ5UJrbu9lRQF7Xe+tgN0If2wwBsmjCFXzr6FLYVixg=","CkKfWO7b9W0ExCM80aTScLepkH44ymTKsAsyIP2na/k=","h7DqiaInTDpDCdwBdwpnfPo6V4OdcizgTCb7T5tnM5U=","dDuKuQlw9lzg7IK8X/GSmTOA9zQFcXoVLTc8CqmF01M=","bikQovsGG4+CbLDpWpiGyTdbqB4EbLWDgSBwKin78YY=","cp866ULYOQprqZK8QsRoUrRxxcLxp7/nUjpQeI4RLnk=","Cm/h+kAHBR/7YJBH4Bg5qOElTRTYjIEXBrEW3nEJGfE=","FS0lf4EA+XIebJlOf+sXT8uECx1AzFxfhTduYM2TiVY=","1QniRnc/zQ7seOBilk7CQcBVVICta82KqVdfi524QkU=","ugTp5N8UreSIhb37XOLleXCyfu+WJjpE4Oxgg5aIVYg=","ej1eR6XOjgXRsQjGabQ+Jt9997jrtUyUMzvxRCCRRw0=","WvmrDic2VOqhdjPGmodAhJYTA+TIl23MdtySnq4+RrA=","f1pIMqlAiKq6uMfqlzcPYrjgngDTHJS6VzBOf1ou9Pw=","5ZC8XDb8SOvwxIh1GLABnuN8rgaeJMrr6nAPkkot0PE=","pwo+8DptOJz3KKz0RWJm40ueS4lNLt+aEdyk5dxsA4E=","2Ay/KW37X0md4MQXYV/B9MakM9g8sWtdQsdQlXL3C/c=","e0oa16k4Ajy0UcM+s0BuCpvxxU2T1hsm7QUhWEVz+eQ=","TVFo4MSiJ3bEYBM11erQ1GmiMk2SqeWcBXX8y8bxKeQ=","5TtTfEXQViP246zA6LKJDHC/jeBrE8QEuyon+i9i7vI=","OMYFo1hIh6Q1lZmRiAXrdPsjM+HrW5EpOxE1t64GLGM=","2YU2k8OB8bELM4SRzeO8qCvAqTQLq3HTG42r7EQ+hxY=","ff0r/Ka5x/7i2NCelne8Ogani9WZZV6a7CZABoTGsUQ=","y+VbAuiIUfKX+VVbjMDStCBrmkIvJHyNb2iQdinuV/A=","2VVHN14pAQHSZkLXrb9vMJau+mbQWWG41Ui76v6HLnw=","8Yj8lBIsSTyDrZGHAPb1iwg630TzjfLFX0URQYvLnVE=","UcFWwwex3J7zEwrD865cTDa7++DKE9uguj4hcfczCP8=","btg0KtfjAst7TaCJWvuA3nKrJ8VcLQ2H9GQNvL9kaDE=","uNRPva7D9c9ryy3aSSxYXRNTBZ0QwRLAvRsiYwi4g2Q=","KOQfRInc6qKvzY94PwavonQh8QgItEsbbZ0Q8sbxmw4=","dNnaglLb8jOvM41Xpgo2VLB/7zUDkaC385ot3Ha2K6g=","1e1qyI+LykMpAOMu3b3eymO2R7Ue6P4bG9fReILCHt8=","ZRACybO4M7QCshoRYA+9jHYnOgab+VQHVuh7GruE+VA=","9Np/PWEgCkep/X3pLpNV3SRzX6/WQKN1oDnSm+dY8/k=","tNio16TsC8DH06Q4Aajdx5XoNmh4hJmL4ptCaUKF0DM=","9MZWMJT+lyFHmw8kpwN1NeuLpc6vPQ8pGXiX+9DX4bg=","BYEyx/32dyJGa9VCyE27R83ciyqnGqQKEpYEq2xZJIs=","EMSrxlvxCAVMANDdKGIlAoeGl1uCRHfro75dAdA8X/8=","eTEGWnXLG2e2k26jyg1rWaxyeC7enxjwz5fnrfYJnPk=","NOr/XvKNSah+uhI9BBRsyFLqlyRbHLl8PsStT7ODMj8=","owebRH276Q6dTEmtBO8IjpkQqROfyX3dybOnGuaWm2g=","+CZIEF0+P+GZV+qRHI9fSf3R5udGHqe8DTuppWvdDMA=","37v5joY/vmSXNScjH78bmG8ZwcktatbxF1FLbwMMdSo=","WZ7Vqz4rLOzUTf1Rgx7F1MoJ+3pY6lQUd1Hhan1c1Wc=","CnEPzt7piZp7CNJXfqO/xMpXFbpzD4dqp8M9psVwf3E=","BoAgjM8f0LRTzZ1ten7TzuWri9+/GMBi4E8b6KG8pQw=","b5IZV3glASR4cMEWdSwpqm2raGdwLOTHdO/WPhMr05o=","yfLHpVPzLT4TB63E/4i+9jBQiX4gZi0sKt52zZqKRD8=","bYKbe+snO9krOhKkSBJ69FHuQFnXJ4LlbHBaL96YbL8=","8UGYSPVe4erOjjKkjSSFXt4Ug5lr4UGb3OY6C2Kas3Y=","f2GuroC55JNGMuBuliC7UgChQXTib1rr7xRtHl8Gou4=","AWpWZsEUtGWu8cPqv05E1iazpv434XKRP+sZ3RTHou0=","Ln6n7DyoNfk42E89tqbqXAkPht+sxo13dj86L+efsLc=","FaVWja07F7tPkygJZM+l7+ZWXFoYhH5pgRPOTxrsaAA=","jEnZmBP2szDfcBvBEkyXbQ03so7h3k5jELxmuMKaRBc=","gvAlRaF1P6adUY4lpEPey4XzSyOCjKMc9orcDTm/t+M=","oFgpjAzUdSt//umBxKrVPAcsFncf1amZrgOUP/9NWSw=","qFUXDdc6CGnOPKYekGYspk6o9eIiTnsdpRjQCogWV+c=","I5CXrUUiFrqQ+pypIthiz/6pR84+jS+XzSpEJnsfa+Q=","88ho4lrx+MLms36HYQJxnms2MW0msC8ZDENfQ8F88Sc=","AX1TvpZFAZ0VDME5Rm0H3HFLZ5JQ1o69Mie08uetqxg=","xUtdjCGqJDFXxuLSwpWNuopHfBVWQJtSmh5u585I+hQ=","GEpV+dGpI1bmcoC0zTiHcEJLsncFluvf59RTZzG9Mds=","WuHnruDWci7D3Wg6TeqkQKQFqvQPULnOFpiBRs+Nu14=","4eqYQo70gv3pPM4w7gThZm4Y4mVFOsmOdvSzWxkKiFM=","+NUCTlCqy0fOr1AeM3UVl9WQl8jPd0pNmsZsk1uMRfs=","Mss7IElBiiVRzD5aTDR6FxioPti6/hQoCU3vw1gW80o=","fhyuUNFxQfWhGNRl5X/6kBJxTCHJkU4PW/y/dbrn9Kg=","vtX3wD+jK5LK7WmYFGU/Pz7nvogEIvC9UbVbH8g3iLo=","NKiMYuXuj/EwxHLBIxahEHPNaAgzw5OCJw5tjRfHYV8=","92GKYtqqKLJL00BvPB1NLLnV5Pgq8/l5J+hkv0fU4Go=","GKW6IVR1DGImwq1BZb0tMFvVmKe0CdIOQK/wgXKufR0=","ZMkkR7yhm9hDetyDIRYTdTZi0DsFmR7hjotayCirygs=","FrFd40ePjHy/XxWZrERZ7cyT4i+BljhCfrKDXwldCeI=","Rpo2SAZ3Dor1PLG4nJepNYUPCKfVaEgxwpytj/BWYp4=","2i1aHcByJFaT1OoMetES/ZVLiL+Er8ScwXzRetbJS+s=","BAERGgnynRTCVRihI2jHcixBXFN37/TOIOKxbftZZ98=","yMWrqxcD20ML4/a6sgMDDockxHaA8WvxogtrERg3Gvo=","iVJqf9QXgRTe1Sd+oFFr8LdZ+Q3Anz1+yCexLKQgFW8=","9yIQuarO+i8VVPoFj3h3SzMJ4sZkVqbfivnQaqya4uo=","4x54Ui1YrfvGDujB4JqGpBxV2XjWU11+BoVdSGucBpc=","adZJKkgBlDfxnG1zgxqoceRZbKjxzlHpWnX7RTjKziE=","dmK7HT5yBlzuWJhnuvQnxazibB3NPbqnveH/4sKYWRA=","zDO/xkxSf18mPlLHSTDJWrTbsmNlQtXZYfG1BL66KM4=","WWw3Wdm9NBti2HFX7HRZQbcOal6qIHonrIVGQUo7/ss=","T85EkLkuBj+SrAtUIOmNEvcsFViVojeRg3dxc1kFA3E=","AuuKF2neep+LOBDEN6jn5BgOHYdhKhKZvWbV7sY+ya8=","47nqJBwZiG9QunE8bYAt1Qi/syCJB+925Wj/tbacgmA=","X8blDj5+D99reXZFr+gOyK4zCdxaOBcq6KkYAJO779k=","o505iBRnNpbcvH8V0SL3Ocx0mlPWmtKgeHH4NrjSz0Q=","MzD9UVVvpBuzPr5CuuEVoRdvMdl7QR98zTPcZw0BNDo=","Xsq4wP5pvZxlGTF73P+47sej7669Ub58Rrqej99EnBI=","dRM0y1eO5Wtfs1071iKsGN9Yywr7dBqq8xjCS6BuJXM=","W2Y8eyyvo90cOM3fA309XL/kh0euQ2EvH5AzU4h4H8c=","/ti6+CgujGC3ZQj/g6tNqVsceZA/qn679pnfQF5T230=","9ih8y2rsPGVKKvJIoGIaSrZFpg8XOzOFYEp/wgGwb54=","1NnD59eQbjwOxx7D435m0ZQppae84CpcYhqbkQFSqIU=","bfVCgE2cTAWhbTK0SbcgGv+wMx2/p8wxEab7Shrs0lI=","+lrSDaUfIDJOuxWjrHerNexxZdcbyMV5rqNnEfBpXsg=","ECmKA2i/yew9hybwr5wInBrBLHsRVHR2KhEp7lHV47o=","Of3DDO0HMDIeeB9ZTySmwQND0hR0Q2zhuzxtsGyulKI=","P9fPlwENH7L4sWgrq2I13YAifiJS9ydGokX5VRQX3Zc=","z1mmk6mm9twNnpBc2+fId+JD2N5DhxSdMQfx1vWhcPE=","hk8/k+x2lnSQ3d7w7BYsytwmTjGepbsKg+WYB+rQ9tE=","PvpTCnDJNgldeni1To2vQwZ+SjDPEq+t4oRbbxsAR7A=","q+ZMj4A9DUrF8PmOeGfEBF5a6VbK/F8J9DMtN7pJyno=","r3OaUaAkBw18tT6cjnxlruXjwE7LG64wI9agYjHS+bI=","2ew2f8kbUsNPNJvQtJKh0nw86iEYWJy/lyQBpoXJtuo=","CquleRIduQqfN8pJ5grO0bfs8hbwM2hhJ5dndb9wYcY=","QMSBLM1a8PfOmk1/f1L0ddmQh7MSXFAthDUJsH40UxA=","h3duBXfoZ6igEZ7EH/9ShYCuwBu6cWAAVdOlSqyYwaw=","4Q3GEtmX9WLpUizUI3vcoF/tjP0OJavyNSENL92AA5o=","vlAAzIIthJRoXYjvcoPqw++o10Y0nAEJ3N7OQynhKqM=","YvpMMFk4eerrRNJVBj0G+zrOnpUh3uQ1eOZUt/7vpws=","uGwwyYpGExtCuM21ePWqwY3JTuXG9FncsqhB7d+KZ4U=","5//SfVkO2GDfQjXJPHCWKtYu1D0rKNHq2W4LF9ze7nw=","1oznsonw837Nwl7ZI7JcpFnoT+CYXrRzA2XYYEp4rH0=","DqtV29jHTwWfCw/OkGP2VgJUeqryDvWbzpqFxH0l6ws=","rOTaVtUpq5g+m24+Jt9Ccj1+USb/NpFpRHTRPupXpB0=","5hNScL4ITpxH5mHzaVMXDc5sqJjTKqN4p07qhuBeE3o=","TP0Ydh98jZ9DFVraNmTQ9/AeRhlcqSUHGNMX3Nh7SUI=","FY+h8eSuC8wPdoex3e+FTGMt5SfseckR2jSaAEA0u/E=","ndzH7cWpRd43G5cyb2EoKFUPHBPC6/8juP86wXuMyAQ=","8xYBfZaRHjB9e3nk0Kc8fzGzqbspptSgfffUteJSQZQ=","8vUOUSsuyuQSH3Oy4ZSXzaptUl99S/Wqobzy1cnYQVQ=","OtekrmmIUaNssjN5/s8c6JbWGJqjAlLSfam0O+JoE3Q=","Vb5CHzRpKSCR6FSaa/+6y0WMMOZlAaV4KfP9s2Xa94A=","TFHMu339Qgw6OfDpupINFhhD33gtJpIvHloi81m4sO0=","/eZ/cd36oEoevHeBQfVP0fk/P8nnM7s88Ii3Mnlu2/U=","vgjC8HPOm59KbEJOTa7yAw/vlBrtWqTE8NCTVYTX9gY=","lnU9Tf7A1YkOi5jAYHrTPZu+m1WaAwXOe3OIo4gcpb8=","KKLb3/56pKnf4wlAvDDqAL/tsvKD2P3fdxMf92ziFZ0=","n2TI2nX/G8I6HsK4u9TZ2q3Of1Xr1FmBXQcmnl9/72c=","i9tAgu7QGxF9Zq7qrhrNv1wecZhyWxdadjTc60xdnc0=","n27bydegctfJD0i8aMxsV2DVJeCYJAaxXtYK1m+dL5c=","szFNtLySFqeiJSgLNO1E53U4WvRTLj75PSffo16Tnxg=","9NlcuZI0qO2xwyLYxEQ6DGEJssR+gXQGgcf5esfWIS8=","oQu3TRwjt6WK7fjUE4jFCrRUQehzjlUhgr0Q9FoC8js=","EBbQiRk9HFbnNimIx62RcPtk4sW2qNVXCwx3bQynpAQ=","6rnttemtE5y3D8+aVPo2d7Afaz1MSEPGHwwvg1D/yn8=","+fZIZwgPXiZS6MRUTCQ1Z+B4wnUMEG0oCCoCeiNKyuY=","OPmsVMZpiqmsDi5u/camzWWWDEFaGtnjlXdzhUnvpGI=","SgBG4RE5cup4mm2cvQ8G+XeJjt9EGPdsUXdhPMbgaDw=","9V45Xgw8FTPoVN3HSe2HWE2KjH7BRvOXkvrlqyxhzJA=","3JjCe1EogCS4s74jrhrCtmhr+drHEEGNp3x6QCn2FDE=","zw/7cuQImHH+AlhbScY0Z0iB2lDldfNaX1FeCRs7k0k=","6IZEyc9DM2jJPxP8EDZWzBHZ9hPrVjkNrQcKn7lZ/KA=","zgL7vigzfV5wabSUHLYkQoDsqY8xkpSbD1jX2gWRn/M=","iozRj6IbUXlgzFRC9xoI/0SNtXKXRbDqB6k7r4hvy/I=","h2FTE29MQ/vC1MviZ/gkhoBiwU6VGTuR98O8BFhN/48=","jtucA234/3S3dkW14kzvasHRevxDl/16ElNradrkvDU=","9S+Pdispu17E8fjRHvO3pq584otAX3wTdfb+pEIemMs=","IdcnSchRnr7YIEVPznAbw4N3UO+wxjF588hKsDBfUZU=","ck5Zr1chsDMAZSrFMok4Cl68zUftY+tYKDDNxlG0eKE=","AA8cKOYMfsvLD6CS713oKqvRwEpDCSlIW5EPoqV8cbk=","2XudKJq5+d+XDpovqdNdLtKINLq/13cIFPJoKYESD30=","Cl8JWB7Z87fsBhnHGCsUhoLC7JPIgBwggjcH8Exut0s=","WMvhuSVf34c1aqDPjw7TP6JI5aS1cDoMgONaxr5P5QA=","qPNp1DHOUBhlmS6XAn5DC1xdx6WbueEGNrwJ/5N2fAA=","sVJi6NrygNYY5ylrI+SXNrmll+Uc05Ut6pYqSTf8GLI=","oyW9oCtxyivGjAJzvZwkNlmBws0H4liqMTkMgKbYh9Q=","YoSgquv5rF8AcBwGmsBJtMHCgyNGZQgWdkIB1Of5LzQ=","5XltJ67YHXDg1LnDzeHSKb9FjewXHc+yOkxfOK/H+FU=","QkPPqeXsHX+hFMI/cD4XkpycWM8zsjUy95sPEJW5/kA=","q/ZPvFvKxd0p4fWa6apW99m9kTKzLr+jsSwSNrDFNDQ=","dI0/VO2uym3PbJnLtIfl6Xo1BuAvS4u94x0bV51ZF50=","FR3S5iwOaxo/M2g/tvn9kBeVWIvUemnyHp5TRHhI+/0=","L605yBbglPRyNAVVkCjm386Siw1YvV7+fAul6eo2zcU=","4l4WoIZ+T/jEW4bwkXJsikq92zbE3RElHZun6sb1CHA=","+dEKghXRza1YvbRySDnzOXSBJSGZmoK+dm93Zr9gJnU=","qsu/cf9/qQxjfd3rETED+um41hZ+Qvo2BuoURIRZJ3Q=","7DS1qQZiEH0dbbaz8PxFf3IUbTiUCq22qNE6GSl+rCA=","KaBAqE8kGef8kY77y1xtJdkuI/EMnP2cTs5iRicaeBk=","xu1yQA7OwuM63snsffSMwRZfH32rrzccKuyet9dPFaE=","c8TtMyIXiBg/1K/sffsN4WBf7dCoNTExD7FoXV4HcJU=","YbvRmEg1x69y77mNGnkynwJs7BBnzoSMX9oPCzfIpM0=","m9Anq1JrBfZBk0Y7VWRXgXqRcAwiGcig+BC93UO6K0U=","Ju3lIf9dr0XkjfAt4JDSGc5hmXXwoT9cXxE5c9Cc6rU=","dK/RtiGA2PqxxZJWaOo//h+JCexbAtQVtJfoPGChBXg=","WX8dmSlOB4e142wqCkGyo3GpJBaSZtvVG9H6qu8NlVA=","rc7HPNrisE3xXUwC6Zq6fAN14DxNKgGVJdr2I9Dz5tM=","HxqwiAY1+kwIn97uYR/Qcnvk/SpaJa9sduh53jR35Yc=","bbVlKlO9lqhvYTMOu2sEOYIxOMQ0v34qGw9wupQlhC0=","d4i68KWK6/Vg20fTkvXrhS1BjE93NGY/Tlu4lRNzub8=","J258OeUYFeap5ZFFw1DUgllbODcrN7R08wBXOwmCr10=","VN7m30Fc3b2bg+pnevKH3Asxp87+TFgtIkhkYiDzqaI=","0a0SMnPjAfKmtPz1XTD6OF+zVTZrIDlEdkBpxwGkFEQ=","uZCi3HrCA+tKjSTCmj5mSW4byZiEUs16GpTi2/+C3nc=","nJv4mkg9qVMT6MbopjwkAFuBkI6gLzPq3PuLuFVPpTY=","4Phb0RLTZewVxCpJ2WgPWtI4IlnoYQpUKVMBjFR0R24=","KiE9KFEOT8cFtsSiENR72xtxYYPbUS9V8vQksKQoGuA=","/tG7phqo81VO/8d4nI3xXgEo3mJdoDjgymywYq+T7oY=","UGe8IXFpo6OOXbChmdUCQ7Sz8KilMzK2weDFylLMTt8=","ZXHW05Kf7SKo/JxaI8jPZcoWjzcXwN60OfP4E9fuebI=","qWXIqez15E+0uv2OQ1aai1OwvSvK1PJBlBHexbUpIlQ=","unKYv3PiFFPpzBatiFADfY2lWfqnidlx2rAIS7ZBNR8=","E/UvsEx/3BlC/DjguOoED1K1Y3oef8HWyBOLFa2HyLA=","D87Nsbr7a8I81AfNUj3ApocmqSv7N3IkJATvqLyXoZE=","BuNpZes9sHfOqC1xwXA4ZiRLR/xzjPaq98GAlOdOxOI=","WXzvdwLuGm4+b1JjznJLWD3JU5DGZUp5HvAj7+c/+Qo=","7s65Ve34g6eRItoGJnIeamXCEGbIVIcuus5RCZQobO0=","2craSM1M3oR/7m5ki6iJrUf3zyE9ggEUDKdgZSoIybs=","iIUyzDF5gVd4BqFWG2OfPLtWYau1jHJVWS/ygDPyH/0=","ClLPM18/K6OdApZxISpz/CAajlFJBOW4RYqm0m+gvR4=","CLyr1/FkORqq1+UeMpvMiB4xO94gdB7t7KCx8yPL59c=","H9XzaAoevGW2MVhGSY78grRa9e2ykfWmfmL2wHkrPkg=","fXKgDiGCnxYF7cQ75Y6YlFx4d5oiduVQKcYgXfNZAyg=","N9qfJYSRHZ0CgejkK/378zjgjKCYmLgFlVgLx1JoTYg=","7+NhLwmsH9VhIAMJQknTrZyfgzyBGiM88JkBNgUT9QY=","lsQTF36Syo3pXqDZLw7Q8gVQ9NXg/TTcw7Q7/sN1yf8=","/1R8vrTGqmxzAaAm1XmeTXBnI/gceMCs+swQHlsxMvU=","rgyJohMPf3aVKkesI7OuQOC/VV4hwbPFgypK4IJ6ddA=","fPHrN7smXRCc3SwVkJHJnIJhTq7zrEcQi20cYSvDRL0=","3MT0NlqbnPBTAGVtD9QGjQobUFPSJq+RWaYB5C0BLsk=","jRQup5dkvGHbVaeuEuieiZQCBlZJ+NtTMb87/op1oOI=","7pZPmnwVd/6nSNFSNzVp3kKd3+QF8yl0zZVzGo/yZNU=","eildo4ZCp7wJt8rfiPSt+614W8yRnkDUAzU95iMLgIc=","JEDkAFlklHL4oIUIR5R7FJXc4QG/m5OkOmtoM4inyoo=","DZoVVLbUYq2BzPqTpfnJEsgm+yfeo8NRNsl/KBvXgno=","qE3zQ/hqu76wV3at1umopje/TFu/BOW4k+l2lTevDkA=","qNrAeNiKbssIBB9fm8Sy7AAOofCdU6ZIw1+U0YH2pfg=","1PpPJrqFupqKIv6OPg9rpdCydIK1lZzfQ/11/GF38zM=","gzyADY8nWSEE1rHL/mQH61Ynu5LniWPjfoXzdt1P80Y=","yYqAND5/glvurPsPw/gDV/O6Dn4w+7IqAFZLFLMe7y8=","OA0rlUvvupOsc3cuzDGUNSCcgPf5Zgy0y6GpipiffG4=","RvJuUSgrk88lorPSSJjsWgzBWHkXknM/wJRv5tG6L2c=","1qwV2wQXgCnHg9xF/YkhwXUWqCFTS06Yn3VcY8jot5k=","rrsVTQN4Io7SSZbPS5PPWoWj4mouazNW7Vu229yPwV0=","akn+JYQohpM9qmRNwdkq2MkTvWhnqNIbFMPtyZC64KI=","2Tm/CChvtgTDftI77whwAxhgsKpP8jwTA9Okm6xKsJ0=","hb4VXwj5f+bs49hOMaYb6A4P8YUX4fjVjvW/sEEg1fA=","uj0yv6fGD3RM7usiu3/GHuO17AchKdxMuz6+0CJ3HZw=","Ib7aTMb8om7ze5tlpjRHOKkIG7KSQf6Wp3FHGLC3UP0=","1CnoqSf3sM1+zND9DaenGuPJR1o/sJPSBKkaDdwKqgI=","jcoTqz4QtM+DPB1K7TOjPA2Kp2iyax6V3dEMfT9/Wrw=","f7omBRCQ5o+l2aTDkIyrl1J2SOjQNGP7cYcEgl1PUls=","JCgsAk4LISNOz8TNzHwwESYD+aDHHPROER1qYL7NGQ4=","hsncw6hM4IvEZz6rj3m+D5zGKE7bOW067W/Vmv+Gja8=","QnteV1TrLtWeFTphBVJInFtLAoQb59zYqGgXXFd2AYY=","yu/oj4ftX8lE98fuyYCIKIoLfmmFb4kzgt97SkkCfvw=","I6+Z+Z8UU+Hiy/bTXtIq1tjai98i/htbaNg9tFx160c=","dPI8+3fYvUg2TlEUC4a3o2VoGXoXe5fWS+RKNhOndxI=","AxCl0QJlP6sIzTKRWGcbvH3X1ZYjkSCh0gUhaQI3MyI=","M//6G8+HmciSkL8vTIL2dX76Zb8Pqx8AARhzPVLRH1c=","9yiBTIjtRsG8Mk5rwIbXhYwSvc8y5uuHmBCt+0+UOMQ=","NIEdhuxpRpRKRjcbYfvcMuQjMia6jsCODeWbNNfbbLQ=","OqnyJ/hpF8RaQQbyRlS8qtRNKEFFTk+retvKX8rRqIU=","gVNsquNIC8f/D0erJVWd9SOqYDGNkOmRdypIP5x3Shc=","eB2tXzC1Vgym0aWy3s4iR1Tk9L7t1T8LJPwCzL7zk8Q=","BBaxUQLCiLSAsyykp7GOW9Fg784KmaV3//evk3PTO0I=","S2/unRruDyObu0o2W+zlQFzCeBa1qSCE8itUV6YgeAo=","ENsurfUl5TauhocxG+8X+s5c8w9bZaqhxK83l5QQ/+0=","MO76t1zKS5RPozevHJT6nxPjXsmEoF2sLCatuoJoTrc=","k1rpY1nLSh23YDvKE+D0NU7JoocKsEkCl2IS8I2Gfj8=","+nnXry6BUttx/uHGGt1iMk9HGjaqpC4ndzzElyZdmJs=","0dcCmHfuyn5UfIka1zJTbym7IOs5sv4GqzC1Mb07bEo=","TOxY253Yuj6pRPXD+BUFlrtUAlzuIxB3tlAykpucdas=","cHS0or8y4hHBDLxo/A+shQT1BJXVf6dyDSEt0OD85pE=","bFoLxS9qtazGubln7ruq9w4A0XaAWxxkV8CODNVKfQ0=","91lCIRZjLvY3XYqDtO3XPDe05o0k2YvFn4yYxOdWPdg=","uqmm9+r0MYQ1G83v2uku5IDZZfoXXjHWcqqjMW31pzg=","LAoQm1AYPF39LaHdvCXZz3IY5/K/jSxhtp9+f3Rt7Dg=","dte/m4ypBq2L8uFRQDcph26JbpzF36nxOBBV4PniLqA=","a7YsaBbELx/leDQReRE7TX1zBD/flis5qB4Kim5lL04=","r9EbLzDqb2ehOU8uXuSEoo0HCDkV5eRMvQafYylG050=","HvY2H+gX1H21E8lVbShkV0JeHn/CbqaqvUdaOxrEKkw=","4G1GsPdrkisqApa9ysBuIphIKHrv7co4cEA7fiSniFQ=","gdv7yrggMIONmivTma1aLcAV/YVpmyasC5r8Go1+aM8=","m1QB9RD9+ZqsOhAOviIl54auDk0E2u8wleGSKIx5+7w=","k5zBlfmUuwjxR4rBkA7CkjMsd9D1hAdtOW0fp79AvJY=","3ft+P12K/yEJGMSiYa0oOgUtU1aCCIwQAqpFJZANFDQ=","xPkKd2ZqJ9oaxGR5ByDK9/SnylNB1DLXklo+PycfBe8=","/sVrDrHph/jjPscZefCUCNYeSwVSgRs6CZ+hPOqgpvk=","fowRFAHr1l+DWpfDTj2NSjzTx5pbSkupXcjDHTz5rMU=","nTgg+PLbiHVW8DPvv6wGnZSA46LhFwFs+RmObLtHNb4=","Y/X7r/61+ACv4bxc97v+OlODgsI5ICx1gtkX1t9wx2Y=","pitiP5U9Dum15HzseIALAaBMdb+y8YDN4nQNvVaruN8=","aDkSltVuM9our/R0BF8zSVzL+2tfO+s3XCJlTtIkgAQ=","zGFwyZhlocnJJBZDJ7tbCekhhhfycyCBdCNaFqc/PtY=","IC5x/70zS13aLzSP/SRHdHKlSB9/8ea38sqC1JR3T9k=","WOcC3ZrZfI6vKDcDPwJtps2/KQuWmZAeGNrzftGGCVY=","NN3OFQexxRaMb6R42bN8zXPuNgy3pzhLsB5BkLJ+iPA=","Bg3BgcbKhDNzXBkdF8cWFx241nsAoHpUdt3JwP7G5y4=","53A0gOo8V1MRo6cIxnuQWMWoeJSrh19UmJaohtbwD00=","J7gaiwBaqe6sxzILuENZn4wrhi7H00lst1sZKfPkiDI=","8yWHRInxdh+YSsU+7R9lV/yN5YfevZeYIWdekG6j6zM=","YmMy0IMSxnfqiMZIkWRngJfYJsaJfS+VMPJp+4WgWFo=","nHx+pqoQtJ0l2MlKjU5jYjVtUeIVgbrzuWfDHTttQY0=","XxbI7nczUdwEcKfVPruJkeCAfvsZb83J/bL2Gu0cULg=","YkUzKlPYhSXKNEH3+dPXHoegf6BefLnltwjPRUe86aA=","I3NSfF+YotrZlaPi353WjnSbS80pJ571FPAe18W35cM=","MCl06aX9aese6V4EEc4PgOqUmiGtVPN2diYeJyhRW+g=","x+fA6YPBDNLusbingn7UYWr1D0cmEp826Xz81wEkS5I=","iitQYKz/fL8rmQ39v42TYae1vWfCTT2AJwcQaRf0GPE=","UXkyork9W8oCvoWhYGlM4vU7sVRoclNvEu2Kfxer8ls=","HgddZ4TOGKnGME3PqH20x31xKXdQZUpelPJhOjUgchA=","35jCUvbnwp8702DKQ3NtIKiUFbAFkC1WoSPocZ62CpQ=","C+FD6pywXgiLlau7AI4c/lTe+f8teAqo7jcGwb1pvkQ=","M4cWR1eZvqhecrtZsXXIs0hq2TKkxO0YcD8mqalChOU=","hhspboporPHdEjbvOZHq3aAC6m2o+Z8JfmF0VrWFlXA=","s236qMPaMpgxL2YAJ3LIdE9LlQTUr4v2M0bfa+nUd/Q=","M+qKRvNcg/pfCP2XAmnUzLStSgAq+fkBPzftQ74yr5k=","t7q8covXQKRr10WOxAaNy2UC5GjdckGtWA4BnuZnGns=","mVCS5W6FqPrQrcUj0Fi02Vw3aCv4IKGLpuVcH6TE8t0=","8Y+PjWAgPD6WoOHr0HZvdKl6+lM81Gm0vcSp2rJ4xXQ=","FSTqX+/qibVA0j0c6DQCVBWWpObAhERsXvwbZWHU2u8=","zm1BKSLBD2gMX6YTdpfmf2bQGgJ0kqg5dVg3b8bYq8Q=","SNiQ6tJrZLwpjRU+eo4nFKdhMLL88L4xXTasNNprr3E=","ag0WUI1zSdc3YXfAq91idxGcwroc892e5ybOpSrEDc8=","Nwqf3uNjkznahnKwlRmIEMXYXRVHq08w28hPqSGiF4c=","Baj5G6rsLOkTwVNAHHKEHsWI6kG1fNFKwfWQi1vyp20=","V2NzUK1+L8/2yv3/9sk2HhT1PIitzbXCpsNsv6NuqZI=","XkCHMkxWfV3jnrRQTvqUuPdZIaZPawB450sdffTiCnE=","FgMkp0wOlX+6JcL6oxINZbhPOTtC6AdVvmYGohlIsqE=","NtHsAJ3y9BY4JnHYnL3rySF/oUqsIUsnoFK+fikafVU=","8kiTKR3Z1D8k+edQHSBaHk3x3f4sVPLX2UJadsXmIWU=","+Z4kWdDGdNhdfHUpqr2phsCFTr/2sujV3TGeV8qvt8w=","S4L+WNqz9F7LYzcOG9jLIBDDR5EOoFNOWlqgUT5+UgI=","k/6wrucans9vphUFTFR/bVfixZJqA4jCUROcxEZmM+I=","GmtRdBRuZ+AxYPET82wZ9G5P1+RlWWA5ZrWEsVT9B0I=","DjRj0KrBoWdNClA4n8DBMIVIpcQctCwl+divPC3efYw=","8ch23HZJHVU4kNszD4XODPQ2PpM9oT2QCNZEKzm7DyU=","ho16pz4d6qRhD5yV8twy++Wyl4NpBph4FhTQHWNG0vg=","fxIbM5YY0jpsbM59tWySrMTbQs356e2mWwhJ1lh7ewg=","9aXdbMt4F+0zwRS7B7utD5yq5Z+zXpQpTZsCY//Nv2o=","OwjqYvDTHdDGmL5D01gtw86izilt4ER2vIz+MBl9E1E=","TEPpGd/R8B3D3OQ0pj9GsXpNoSzZiKViF8CyPTkKsw0=","x4bqENf6P4+Sgd6AgZztQRyJLrtPuh8DrEqPb6Goxho=","BoAZnQtyMV7gpZpXBGh7TDqXdxynjq9tNieLMPlWZHw=","yYQko+NtRXOVHc5VQb/qVpLZZQe85SgGEATrMVeSvtQ=","Y3p8tNreLubqi3Do7+nH3RMhb1xoAVmWaaBhMA8dpPA=","JUJqfIl7kuou7BhX1twdPIZ9//TvT3DgX8sVa7IGA2A=","OiHepdy7mxs+4bRN5ZJw2EWtiocvrVplRMkqEsPuf2c=","OjD0aDeP91Mb3Mkr9tw2OaE6co/LPe6eHrAbyJloVQw=","ZQLIouy3UAoUxDs2/tnSQrgqooUwyvXlmrpeTIPcL3U=","hK5ReLMTXwrnuQ0etPnJJgkmJ0yIpgymI80/+WcJlUs=","N7QKBuSHOJn9lzzLaTWfB6h7mKdCrHXK+mtIzbhcafI=","6sWwFseTzumsauw5n4f6gTnQ7w4KifTEHGhCdvySWGw=","2ZrdGGqKfV8FHY6Hu8CFf60GI9fThu8Wh5IMp9uUCLk=","XzJbonf/LGy0gW+qc+BrOIRJ2FWyxJ98igM6oxk2zBo=","xapG8dXUFyI16c/hNH0KMX/D7dX8ryoH0R4WPtMAmBU=","2mX37MfXFNY28ytfdUHSpY0RfoB1YDAKU3Dt1yXuOCw=","T1r3qZcJGBmpM3XgKTrCnziS6hXkV+s7Prm9T+Yc7c0=","/lFZdJkEmJj0GJZo7HBzoprS1FYcH6uALPOGF4p/luc=","FqIKCXK8o5CMC5dIzOtrvb628cnalW6AAHilfaZ/adY=","6b3gEggBp1wnUe8f4UdBx+pX8rJqnT4Q1sHedwc7fvI=","Rql+bAwzl501XSGCfQDKMZjqMTbmjZ3e0bYdbdbUGJA=","U0izEj2Cx36WWsVoXDQ/bTLBjAw29WMa26IC5GVZb38=","6ssYEvcfuHP4SxeQho6Ce/f9ncb75bzDFuJJnJ8Z9Og=","1Y4z+2z/UfRDn0ATUCa624E9QwYhYrssD2Ox81gX4vI=","TBXLtxMdcV+dUCawpau4uY0+UMUu3zaxNeWNKuveZ4s=","Shoh2u+MGsix8a3pB7R0vuewuBg+P+w+qIska9HnRJk=","daddqsJhA0rYNbRTJSZkbl2CoH3bdgLsEstDLgGKcY8=","r0aOtF1yKC6K11uXnmlI/ZI9quILx94VjhhzR6Q1elY=","C/cglRyfQKPE6aBY6h+ChZSXTzOk1rpKq3B20HXftEI=","LilabqUmoMxOPoP7HEBcXl7cf0R97b3jw9nnPimrkwM=","pDCNfsde5kOycTVgMHQgR97X1mWE56cqY6bEeN5SVM4=","nEUgddHbTtRvQbA9qb8jEa+0zwFYD5BnfkgWnY+h0t8=","nh3g++UY/lJJGv1CSwvdefaUlL2Ai6JWV+L3qJ0NtSc=","UvOOf75nPP2o4/mwKhZtR1wMI9lGGPmTYy6yFM7mOiM=","/MOIB1hnV6ibscp079qXq+Dac78BIrFk7qB4Z6/XsoU=","4W5rK0JN5iRHQmq7AILctGu7ZlFrvL7+uGBNcYYFjNM=","JS70HODvdDQQPGdFQaVxFH+lpkUZdNs08t+1IXnAf54=","QkLBEOZrOHnQ3GG5ZM0PwTzt3Cjig843QOz6UNY+Hz4=","9nXboNYihsbX9B+ToEkPfhF1SQNnHeaQIdsurSKdZlo=","cqj9SPAwoeuVaNoNEsKySdH07EZIWK5YVjC5fKtf5Jc=","9jz1pcOGJoBBc2UAa9Y+Awf2/OeHOOlLgLY77tYrVlA=","MWDmfJHPclFGeus8RjkiQqIzWm2Znbkrdd+YqjTjs7w=","d5o7pIAedZH1v6Jks40NCO6QVv32Hmqd5xihtGF7/Os=","NQTB0UDFjoB/hMXLsIehOHP8eKS4AhuagWg0H8y+IPc=","N+yAN1/QUQTY9bPQ5/4xKueeiL0/g8JXTmTKTkgwoyo=","+utKGnP0JnIeEHJKVzsFdMloftgHUZIwWV5LEBKEWcw=","q3IFMWJG3kBosyHw6hXP070j9cdfKJFtC2swBAfPwT4=","Vzj03r988LwvEPo9HvdNbBPMzpxK/bL/RjhfWkw8PEc=","gZmDK3h1ZBw+ndhPDs84p1H+CxKghcS7bjH3gkKfC+0=","a+AEav7d2aZycuSWyfHJoi+MNCuFcLqeonw/7rQSS6M=","NWUbDbdtE7EQIUHEb+1KDeUNd+KfuJ11FwzuaXU0q5M=","zIROE3MvVF7R7u9i2db2f5B2lovhJshXAhLcgBobR7I=","T5Bf4NMzOjDSVoSbK2HIkRBZAcfgT+KwFpmguNkREek=","N5L2pojMs4uutjim0GHvQmqnR9SV5t8OtUuiW25aaXE=","/HLhhcYf5rfqSOGayxzGddZYAwSZm81OV8oDpkxFACQ=","clxaELTlkuot+3NZ2Z/GI2VaN0IvUG46lVBJ5y/kFd0=","fqPQMmK1IqURJgh1MkdhZSUZ9eyOJqfwrSYZ9UZbrpM=","vWoPrD3WLxTMrxeDOpTE7+KO0fbmLck/Ml6rIkc8H4c=","cFSTkDv4Kp29r9iLS6D8MABv0C6ZPowbAnNaLiFLKCg=","A10AsA4dZvhh+rd0rpWJaoZSKDF8/KFxNdpRa5WtZ8w=","CC6JTyiojd+0utecWNn9jS1Sq+rSi1UdUObYsyz/3ks=","OTxTsOsfp5YVA9oaMU7nlfGfmd/SzSLs2YGapJQtUZ8=","BqgCIL5erNzFwoX2j2TqerROK6hCwExbtUR2OU8EdLQ=","XdP/bm1DvIWWPjDnLmQNEeT6YLGyizF/LyugqjFA13E=","J73Y5hVz2pFk5JdlrsC2dZwhfY5EX5AdtnlYJyam8CA=","guMcD5sN6tUPbxqrk0jZU05Rmtt+SyCsEinTqi7e5a0=","zMNNaXmL8m5GQaQEkIYy4ecrEmT6AF5e1TphZnZa6HU=","yj0ITMGhpTb7qW1gMbS3m2I7bINjczk6a+vDUXvoD6M=","9gej3X768ZKEQDdHLm/AqL+vokacTVkHZ+IMf3OPX9U=","dQX62bGdd5xlzy5U+NtYrAkZP3MIVYcjtqx/o16AIAo=","tLat9oEJirhlCI8IeaXvZHaAM3Qi3PbRUsst9wq6Tco=","nTW06tFqn40xhHb1JCqejDBV8bxfrFz7wzCzJqcqC+U=","DPLiSMJ4tVJWZ8/peQMeY0lDXmTf+gAXE1G6+adReHY=","vbRqBMF2SJ8bxXa+o5G6R/a7HpIANsEXYuzDkor4Tgg=","2HyWiXQ0n21Y/vHaEDNMzN0V5vU2g0N/+rtw3ynNWMo=","05WPqS++GU08LyJxmKneY0wqFVkMRPnYKks3Ilo8z/w=","mixJ9WZiHiARvnohjvLyZdGAINBpVxguvnXvNuNHdrk=","TJq4eRxOnBpcB0khtekmqgFy9jLLVtc397ODM0nCmqA=","KFWm1N9kTo3HnNFkGYfowAal6cG5B1LWOH4y4TEVE0k=","qk+LavEIWJrvp3milCgZO7d8Sy0sB8nAYw5vTQttZHo=","gn7cZatzNFSAo74yJTDlZm5thUfDnNDP8jqzpT28I/I=","Vq5sxKtQegJ9BI65p0PRkCPLtqeYRL4dp/uDy85oVxM=","DLi/mAz9gVXfhXeuKVFYk66tYUW52tKc13jMxg282wE=","TsQdurxS+1k6UOU5LOyMiXqoX9/rl45CZ7wYg5LFQC0=","cSX7hAgp0UmNi+DPrL7ninAv0iA7/G5mvLpkBdLyU68=","GSsdFj7fg4j2pe64AWgHTmUz0uXsdiWQlZD+mcEa/sU=","acxmKUPniPB8QrQmNtEZxHo9iID5+DR21VeXNMEv474=","qt8xl89q8i7tRIgNsvvJWJLKu/QyCq/3LkaQiCzyT5Q=","Q/cBou7+p2E8+iX1BAyjQzD+HzCmkz+jSW9tf9Lz/9g=","al04jj8eQqkw/iHvgRWJQame0FRGYYoEfjIzsMQC4EQ=","kRJ9WYQ1avnlK/t8zLi/ss9ZRz2q52/uc+PzdYJxDhg=","jo2Rnv/t4cBrF9qTsJoUpYk6RUMoEs8ssZuyA8wYC0A=","fmbXuCADcGdDUymtGiT0VyAe8MHaFhHcZ0pCkHtfhYI=","mFGDtyH+23fcuCBXLVZhVFfjWW3Tr3zrl6WRh/k5vrw=","8CzifTX04r9tlbUoJE2myElVFVziuD7OJyArPEMjbNY=","EJJ8xo0XsdNx0pSnb2Y4qlTh9gAmzq0ycUbuSlRzpnI=","0JcQ5zIlUC8ZP8ZEkzjVQ7nco3jW8eFQCi+dHXCasAs=","fiQAW+9Pj84enqe9ZGU5Ru+ss+GjBsU21QoKchrkbWk=","RV4dnHL+AsaJHcE606aFnK+3oAyBo+EghCkMN3H7Tt4=","8Es4AeNr/FGrVgQF5UXqa5FgqqfEJZ7uNDxxZVxP/XM=","PtSNCLsWQRWx63+oMOcgwlWMM/oMBAljsd5zHteznQo=","Z3VQwoXG1RRRsTv0hPhL8PVYKhCXSXZh0crpbbqCaCI=","iHbRGgGEVmxYYgK6fnyto7mb/Omd4/8wjp52GZxgejA=","it9h6pnf+Qb+9ZtC4ZLDz+QOwvyTIEhBmEdydHnpYU8=","Vu5ULUzR2WtN6H31SkKm/i5Vz1+qjJsIok59oKnvslI=","wDZ7jFnwfJvNpwMK3thy4wCm1xshXSodHA3FcPqVQ3Y=","5ZqPohmnkr6kZlqCF9daqCZRPMdbQVql9cba6KcGpvI=","SSbIA7w/lwHzOwkaDBin5TOTtX9eSx5yEQADDcwjQ+s=","ss3WPH1uBkVol8B+BzqVCvJB8aNOiQrReZVmfKTzfVk=","3O7/PPYf/a9BOWG9XMXizRxO9S3sSYmTPZ1KT/nRFjU=","gS9ZQ6L/efY8EFLnlp1zlkJebmZGYWRKhdM9qltpx90=","wj67LvFlagjULYOKXbESeSssnTkCvaEdCuci4sxfIRM=","l4WmOBioNj5e3Xux0oOgxDCkYmgaERSmj2XCbKbDOts=","OAtwbLp7OwRhFIeDl54lZwvaUXGVzuqy185ma2MKrAo=","qfWuOY0uOsjehxUX7bZfTCJYc35rZViLZhK0Aah5Oi4=","aJ1p1fT9naz8+Hwbc8IWjUNdhgiwQl8LDVy8KrA54n4=","BX/DpuMuzZfj3MKgGAFlNC9hRh9uYEWanzDGXZyKtCc=","2UC63Vb+6cKbSL3dTLPEXv6Mt3eNsElRvARdcyn8br8=","kUBMPDe7TArbRNp54B9WMVl+utqYFjSV26EJehdDtic=","SOjdFLwY3mSSMyNSmWT9F1qyamOnMPJI0BZeRY06+1E=","CjEVZaZ4k/sVYyQ98G8hm/lgtTifR1h8rug+ilHW7dQ=","Qv/iNj8Pddl0YLcWoqhT/XROAL84CJCrJS51ts+SnKQ=","3NUOl6+EhxYdaZj3XylL8t5tr/totp+XYmhh8PnOEtM=","yWTRr3OnuKkQISIV9aNdnyNvTWE3/AYFhKXCjOFX5hU=","oJwAJ1DS9GYg78dnrRsX3K+RPc6pCCqMQZ0UuxJ5NR4=","GWUeY7o2XHyq8pzMKhDk+oWwDAN9blKKH84vbsLXYvo=","Z3pWAbcqCfNLOORpTJw4skKseDM4JNNQGB1rf1MMfAA=","9c0O7WEb8wdX151PRFzZnBEReX9RBN+J+kEsdwiCBo4=","T3D0+JcccHi4qJoc0v7iOaa7tjfqPMhY3jFDEY/rnE4=","VqFYFnuaPt4NyRvCrCoINhXueaFjewFTIsRgon+/19s=","X7d/sjok9jC++P1Ddt2UC0RarQqRIc8gwuZndTdT+ug=","PyUiuf1G7q6C9L5cBhwNgiymBTFfegWPWNlxhrAiAhs=","F2bOjTB19YKU2Z0ZoWCGx7gb3Pvy3ekveIEv33GrYe8=","aMUsrSyneV6LZS43/GGhpe7liXYGHNc3vsDVvC4HcRg=","FiF//2u3VLWRxibgf0UiasmoWLmZ5XXp9/kU80itDYI=","mQO02k8bdazsrJ9KSaOlVEr/VpCeZO5SGLZNZ8kmx5c=","H6G/YNjwXDmj5g2IFMAXHNJCbjiAtWBUOzDQKsiDzPQ=","Rh7C3+/NMD3DsV+UXlBRgBqq6LCIVli94eovEmpcnqw=","vEwzRo+9/XN/uswZDVKCyArqWzEtBs13w2Dqy6pIKMg=","MroVtpmS+gzLO7GenB98vV7vb8UK5ZyODzTfOAKEyIQ=","qs1IH5ekYHpnoocVsUUCRFVRvvJZNrmaMCw6oki5o6M=","3bLHX8jDrtmzwrC8rDqiYlfBPOq8swW/+pRQue3wC4o=","dIj1nrNu1DHGZwdjma25d6KufGDvjJUC9XQyfKF0MiE=","/Qk9kmup0mVD7D0Lzv3PXjGyDZjnU1lcIvgcNfnuKok=","Trma+0iB/EP/DcYEMLlYBzdxbIaOopLzeHhlmB/xa38=","8qxrCarCxRMPaz2CH2XPS2FKU/1jCHpw5dAbNX//GCk=","e9zMPV3WUvPgCS+fHkDWH6s+dKlsh+oVm7RozMpN6Ro=","K5YtL6vt04AphpGfbUe+m5VC73hT7Rx/WGE1p1tvD7k=","RyOAHR/meP+WJnXZmKFc1RMd86itU6Fj6wOrAibR2IY=","RBl256EOBjsvZ5+idon9jai/r1UEYm3pOT97mdLd7z0=","rde96p7qmWnOrB39Geqrqp2cki7NZPifkKrab44wbp8=","5gRBOx/Fwnnu88t9p+RnYyL2JwB75UW6hKHobSd6Pak=","0Vv5rR4HaFhJo57PLBN/k0zFeQmqpE9zWVRlW7GoeJ8=","fc2L/N7q3ZQGUVOJb0ApTwQGgxWcOAlDOSklr4Z4JCM=","07kAt3KLORNF6aQyNht8ILjTYSUoYux1tAhk8bajQ+0=","wvHHPPbCvgU/QfG+Rgrex1eERdF6+9VCtD+Y4tFo40M=","1U664q/cepj8klteKhS3enuaZYR/FsfA7vrWeJCdVLM=","7ZaIOd/Uqzx9ZGBcTYWVUtTjjZ4ParG/ngyURyF8FkA=","NFAVu6bjPZ0yvCvV+Rq9CPx3sRwM3OU+tCEIuVTwXRI=","HHXVhaGFHnKBMRVjr0U4O2v2Clt0BnbglLN4KKAVcJo=","VHbSHWDX36TOF7yLkqRZAivQkKg9KVR+5famp26qAPQ=","lwvCcPetIHgHHqaYVXSdFiaeidvaDeVqd2JXDWHzr74=","meu9//B2McMTJjKsU2rJJy3OurtwAUoi+JkSgJY6PvM=","krzg3hGJjrxIgfWEOfO2jsVKYkODtcchVCoOnbCgFKI=","z9iqLOKqZCV8Qi5R0UPTBc6kPtbtqNS+ZGMaUtR0LoM=","JeztcCj/NMaHTB0bhhTB8a7APK6LcaAw3Gw6mTjKGTw=","besd5hbUrxtJsiuItAM3i9nPFRWodiuNcreIC9heia8=","XXDubqZBoj4IPgaBCik8NYT+ue063NFbox54us2uZfI=","zL2Hpq/dwPkPpGdNn+BHF/bNHxgWupGm/knFkwyaBVM=","8znx23jFEn5CS0X5huFbhiUBnNk35E14Pc0eYN1lRyM=","POvk8LcjNjrJFdl+LJsHUUWOFVByg9dKxomEqqG+56o=","rybCGZ05D2uarCJHT7tW4QrOS7PKSGvX4DWA6IFFZNA=","e3sS2qtwNpND3vSwxGS7S2KBp7YMgZhVitdqj9F5erc=","kLb8q8OcruT8HCgrD66lws0DH+0gg4EC9FEx5tjk0lQ=","4osMdpsQzYU9AYLrt+CY0oHnAsgDUUrIIMaTCTO00eg=","zy3n7QRKxWYyezc8dZZr4N5d90ZQPH+efTPBtrhiGlw=","3XBnQMrTRmkcPYjtdmJp0pb8KJbvSC0bi4IJV9Y43jA=","ogBx3f7vJTHqX8c3OYFof1Uw2T7k3rUB170DDNTVw2I=","bNCj0im3w2t9710YEcZDaj2Pzm/hmGDMyYFzhj52tqk=","LpIiPp7KBkuolYyLB0URE/iLb/OH1ofgBp0dgbDwaZY=","XsgKeTEwgkMR4U/k6wRKjlH+FQREtb6eN0Q59wMjY90=","8fLPS/cjyvaGa7GBxah+8yV5XUcPgyRqGn7ICFFqFQs=","9KwoECdfZzyPWqVk8g5j8a1vthA3vY8QiiAveZEnBZA=","LhjBmFV/5DfBpGOG748+xScNd9JknZV7BFbH0WVPe/Q=","cxBr9NUE9/FTg3PNMAbuqWaK832cesCUqc9HHxmMYF8=","abxN7oV/bStb0R4NLtzOF7ymBKO+fV+0R+GXYAGvk0I=","gnTeqAj4LLPj3PyH+tu07mr+Cjw5mjOxtmgi/hyDWYU=","RWmT1QI+fGIqSCi7NMDevs9F7X9rBs/ve050KZxeN68=","Uu8uFuY7vdZe2mC+Hjgpm3DqFAcHVSrwh4qd96YygFI=","O6Xy+34YtEsbFqAyXZ2V1QSwpiuyQUaWPUmIzgcNpu0=","osnkcJWlx6LC9ItClVdozEFvlkkzrJ6t3M+BVCk8o7s=","nO3eaujeEJ98OS8n3/0PGv7kMldffoS9Y+g+GDtPe6w=","MAwnbdjzFLJd9l7rFdTKEiklK0uos2utti8I4lU657c=","SZa4Ddi3StsYb5hC2JZOSntXeNtVOe4YkSQYJCO0BFc=","nii/wPzhI0vuZHtzRBWWUe2De+UMCLZQ7xhCkURBQ7Q=","zKsNJ/i2355HTZT9SndkRZ4wS+zoMu4NddFnmq3CStU=","O7AychaFnzOhpRuLGk8/OQiW4IZhSqyO001eKpaShvk=","caHDNfVTAy4FzuiKqaBeaTInPackgxbDgiPK/gzeSRc=","I5PXUttsqaboFM2EX1t3wyNPMGTNi9hH76DRKQnFrVA=","l9duB8ah54wJ0u4BJkYUvCBzmmptjD7WwfTiJBtm4Ek=","7L8ZTXvZQ9xtUoI6yAL0gMXuDvRaxP4KHSbyqh4NuhM=","OSiVgFRt3PE6rT05XE3ipKR8dw+m6yD9twmtdoYTUZw=","1Lj6+WNVPSn8tBnpcAAe5ZYpbx71UnYbc1Go7gESdJ8=","NPPqamue8UMFu2zz2pZMwufkFddOSp7ccwvRU/1oTVY=","V3hGnP6o69Tko5s3C0XmJJRNK7/zZIsHUWtjmzgvlWY=","nsgjjVfF2LUWKrlrIqDS0FyVMaljkW6q1Ejk3aifcJU=","sN1fQ1u3vSydvZo/G8VvUzzphQBAxJ+VE85p6ju5Pws=","w91negih4aYY+SbgVTKOW2FGa8rDLYQfIC8ZzHLem10=","qvHS17LVerXvx2DjQDzaLEYQulQLmwUst5tLlC7vQos=","RnbepujNhZvcQT8GeFFGSiO3T04lBnHQVupiNMluwjc=","J9Ry3gO6eiK9qIZmtEv6Sh14whgHRZZk1XH+QPjLdSg=","B4TTqeGHG0jEaEhTqFDlFuhvOv2uzVctR95tEFzv0O8=","tyKn0NNOt/onkYPeEGiouLtxfEcCJncuZ4nS5qXxt1E=","fCZfKvu+BDaW6hkdh123NOhmFHVDaN3bP9kQSw7GHfk=","B4AEAzq07dsv+MZcanh9ZnnfU6Un94SJTtO6wet5sZc=","g/xS+KeT7N9cM4iY2vzz7KY5VzRnaoio52b38nKhzWg=","s45CLVjCvtYtz8n5+Aldd5QDM8r5VGOrPE8RfVKk9n8=","NEiCZ+Uux9kUTIBWA79WZ11l0hj0OkWF4IeWYNBFtdE=","NAvZA9jQOp0h5TAQE08bv8+wu6+nqX5kFWExHj8cctE=","1/Sv0uzJen+EQgsqSoNqwLQeqoX9mjTjxZTXjASopuE=","ycsUIG9AzGbtxxUCJ8dZSOiHr3mJak8t+LKdXxjoRns=","TFW7S5BkbQxFkBrO55Yd6u/+N7w76djJ7Jm/b/6Fudo=","KYFYRl8JwKUG9PY/FBYc8V5QBxctY1N2Cp1xU7fStIE=","ifUMKlqPuQQPGkJ3hYh8l+J90b0YDa60nEcXmEJHl8k=","NdE5Arsp0dr6TrFVUNJ93oVT7Zmrv/mbYGj3j2we0m0=","AhZtknpNtTQpWw13MH/jI5SrbwY4zBmUr2tALEKqmno=","hoBn/AiE64IVb9mcC7s1Iff6KqgRytRVrZL77t8GJno=","RvezwvJuuCEC0RHEvZMoG83kVbfgPkDpTVwXt+Abr/4=","Pf6mbPW6syQUKAKjfdXg3udk54xLeZFpQgW3PCHhfM8=","5yfZFhkQ/gGU8ttFggVgeXEmTl0Hjbzk5cekU5uFm5M=","LYXe1qvgGM0cIRXnqIydctpHXSvRWuWbzT/TIcaWq0I=","8omaRptVut752sx3iNYmGb+7smYQDpwwFFZHvK/eohY=","flq7D2kakbtw8ssNJa91eKMKCbi8/+Ta2IopapInJCs=","o6IxOAVugwE7Uz75TMRp2LSyXH1W1Yr2O3AgDLVRtjg=","kOY+O1XDfR8+zbtRWtXurIjcxzImdTjxCHjOg7qerOA=","cuv3KPYGK6q/Yei3RSx6WOfnnoZ03cNxfnGpQQywWBw=","yr8rUn6F592y3Q3KNLs3X9QO805SW2IEM17xqmkb2yk=","HSM8u+hFblx1zQloEYXVF1JM+LHzet9QAwi5ok75lHU=","SHbkQr/hR69a/Pt1y8YkeUDXUTitROHuvF8/SzO4d30=","Kpop2agnROZSa6E7vp3IIpLRiV9uApNlrgDFHqwiI10=","/fdUvzczrheZQMDPYCSsj0SpRP0dKkCAcH7u5PF23n0=","lPuNO1b40OfrkL6Y/vV5yKP3mVNqhPggvyEJqAVBkaM=","VFCXqfHzTejaaTa1CC/SLDCEfyTRbKMQQlv7syeh9z4=","JgvWAXR6AULbgdGCvunze8IQyGgtJFGZXatM62sGb7E=","8XrPY86A+BxhRHVSDOdRvBUgGCKF1vyOY6bz8Q/Bxuo=","n73OwSZEToApPASg5HY06UVRpzI8yMT5ms+h38YsaN8=","5jFhn5ewC+V7fzZKlvc2Lw0dIixtGKVm97MtA5Cdpik=","fh8PsmNKxEO9P7M8mlTlEcf+Pgmo2edNk32AJ9JqCZc=","X6nWF1mggt/iuhSDQE2KT/x7UF1JaEogyFudpXkkuI8=","9vyyzPoNF2hej8XpfC0NJpkzozO5UFkoUPw0CGWFJ5E=","YGsdl/SOOlnMiBo/pyBBB/4ALZCXwiiuh5/lKB9y0Tw=","moswJ5UZY+Z03UmMTl1g4Q9KYtqTzXPQa5jw7zs6feo=","xHYfaQY+ZbhfHiQJvpLwOtCAThtv9OgHyEbrNyAZ0gY=","NcHQjAUrUZmqF+Sh3vd8rCxvIBqRPfQ/BFjstOUfqvg=","c2t21huMpn2E3/oyGEYjuPOTika9ajhqGSwkReUlezU=","+C+oagoYbz6CvIBdpK6sGoGKUY8qvWeyT4REbDWq7ZE=","2AvrqcVFO3ue4u7ueGMZeoPGdFHJEsSF7Kh1Fn9h+xo=","EDHtEJeriEj2VvjKScxoQdK0v1W4DRw/mVdqGOh/KjY=","kwRbPHt3U6xjReUU0aj3YrEwGiL568hlJt03pkxEA4I=","6n7HwcYHYfBxUm+6jwVPJ2QbyK1QDl6X57k3hgiU/pw=","xp0poQGPQh2AURA3tstngKOAQDnx+zjHdCbHIGzkMzE=","ftcbcQUJ26klSOqZ/bAkGaAf/O3cStxIhBhetFp2OEI=","bPrEWqsxtR3x9M3Q9S3r6EGWMZ5vDFKo0xZ51r8Ig5o=","o3bRLCd43NrphWEfESM/PilNHYfWeGvrjEEFYnMfu9A=","/DBTlzQonEBMqNW7C0zPsA7qHihJ8xrWY4muXfu4q0g=","2tBkj9QlNEQ/35+DhnF9OdzaV2xM+Pp5EE8GlNpLebA=","8wCOZTYSYlJAzG1twtpEFXdNw86GZAllNhkffi16YXs=","fkuy3ouV3Yg4sJYcPbimWBCcP4j7Tc/tV8+Cd/4ETqI=","fPAU3MQgRqiWpveGNy5bvWrtft8AOcCeWyZRu5fzhfE=","sJKGpSfHa0osO2jOgPuuOyGBpS4HEEQ55dCXyaawHN4=","PUUxl3X8YMOaaqOqnrMzkXcpeD9qRaeN2/5DN56LKg8=","1RwuKjq+RFLIi1PHiQOsVx2ea4YaLtimgTRtv2tIz/k=","+ocqNrixDGxu5MU2hMYrsh95Uw/S2z9FMvbN381FSt8=","W8CEkZ24CBpGG6QX3wgoH1mCV6GqhtgXZWHc3MqbrgQ=","skxmPaOZxOikVOV+U3Y7WZA7haYjmwpWR4IXPyG7d8E=","32KLQkfTZdtS5kFy1viJaqp74g5V84PxtboHFSw4Tw8=","29Jeu4UrOWHwEX3hQ8PPLpiY4pp2JLCbBzLyg5mskNU=","qAvKrmk4U5xxGVmAbRALo65jyDKTgUiX17ABzjbhr3k=","5Sah4bG+4Ykxm3CEYQMjyk8PpCbq/wsByFaxstqETqo=","Uh2YXEL9YF9S1/M7D85Zgk6feoSIwv0IPCWc7P0fkhc=","HC0IQrD/sBg5A5W8UP8SIMuHamY+wXNN1K0zAPRh9hM=","5oiaWsm3VeAqZSI/Pack5egz/mVMWeZmSKbRJHpcvHI=","4eYRttFhtXER6r/tymDxyyU/gXNux91/NRIZ6NbfaS4=","75ZyyEcISmuKnWXRErg3EA9BKcfbOTRVBxCSduLBM/0=","0XTjcIoNbvni8BsDUqiExW7tR0zrqrOq00xpHUlDTQY=","EmaxJm6ZjeJZUkNaMBXilPsBwAz7vhFhZY8NmIv+lqE=","SCcvpzucLqD9M/N4WR8gh6rjvxWqJaLHyc7rKhkKPug=","9KfrTMXT1y0mJJr8WQX+P9oJt7voYuZkWsJltY6641A=","bkRyH0KlO5DOTr6RxBPHR+a3UaN6/9gdIGgHL6ZVxHs=","otErDOoG1gQl98y5Kw18Z/EAE3ABvQnjLeBhCkWnDn4=","KetcoPNe3PFzfb9KyOjgZx99M4jStTy9L2ndgDrWZHM=","YTxJOVANR3ytasKLqu8C5HrJg7DP3nejRnFxW1/YCAg=","nvqodI0KnzhBlAXyWmXLutFGsqJG5VCpOqBFDY+IUjA=","9Pcyhchj1cRSCmZEDhgbRxrqLpq01ymr+BUcCv8Bjws=","GjEluQWup5e1oXxUSfgi+xeV4808Ff+tDh80H+5Xo74=","xjJZ5W9yrOcsyt59EIzMfqQ7i3wSINZdx5U1nrdjA1o=","T06oL4yTzhAcYg5sLk7sNhvE5ztaH0VstOyNchOpGk8=","7IsnzOmGhyqOJunNhfiU/F90ZQsowp1kDtg+BFYNbuI=","mTNET0Y6SP9tJdeojefcsuYCTaFJrW2ZJUQUlq0gscg=","JKqfDJHGOc2Whq9bpVJrXKFxv/TI8jnOkKE0/JWuf4o=","px6f1r0uaZuE6a8KW8VLm/yVspS786ig3eW2vBQ8GNc=","mRXFkEFHxebJK8sP8Am1OI7HfVbKk097IXorb9FGA7E=","Ur6DzliLjoIKIFng3SvJnysMQIRCW6uiiOyqDb7IxQo=","4hoyO243mCpcXkUH9V+U669L3oJusfQhYASbWO3e6XM=","LoIpAEqW4LW0wPBdBRVN2FSH/ROw6o53IsAwysyqDek=","aZEYe+932I/TsRX2cF7iiZzy6dZOhofAZF/ZYnMiOU0=","d82k8xMOQhpFHuh5iXOKgmEnXHRSq+ZEoI1fPZvNOlQ=","f/2vkhcCxJNKsvIvjBB82sVld8jDq8YjUyztXUY+CFM=","48hqM6MxDJjNHS5D1q5D/BztIcLXMpsyJsHWQPxRaJw=","GpY5ZW2brW+ZydZQMBBZ59m7TMtcxqeECQnqisMi/xA=","B55wdD94D28Was/0wZDk6zQgFBdqr/ctTpYQ7eICm8k=","1ZH1WZyhRn0T6EW0pcJdLamrv7vJ3g8DCP8Wam7npkE=","ODFvAwquRiiQRLhfffLkLyRUmT0uo+d1Yyr3abECplI=","72FoclNHCx1fzBYeZ67sxPfx1YnPKcO6HQ4wHigCvpA=","eWpWsExgaJ9DLLNwU4JmsLAbE0KP4vZF/pTNmCGW4jU=","PMvhXXVW3pMQROZXeJ3J4QdSsOUq61T+xxSiK8S5uT0=","6nT9x/6SsUr4Uiq4ke/EEfmYM1iIbw3/taVxoOozJP8=","Xx7ewQ4fN1jj6W00Xs3K/flMi49cAN2oRenjG02PZMM=","MxOwznBjZOFmGgfXikUk7l165eA80ZwXsIk8138TPCk=","EJMcwYz7KqAKV6oGLwkiEALQfn6yQ7UMaaomE5puJ8M=","puhIlYbYaFhh0IA72UHqM/IflB2/p4+14st59VC2zpE=","q1UvjW3Aq3T+WJrdgrPcV//EB9pD76swAbLbOSDKv6Q=","KcCTuHhIRmIgjWfz5RM3Dsn95U31KcndS0A8Qr4DFtw=","jKa/JWN18vn2Pb0/j7tIYK+vldKHdSnIfmYiOP4jv38=","bz8upn6dnuSyu57rFAYaUcE/hZ/1Jk0mZmiORVMLFeQ=","fIZ7xP9WsyFUP/LpZJp3XqUeqxPhEOj9FEuU6mkByOU=","osIBberwhaKvVKcnY9i2n8NAY+5/nDIy3Wh34fP3MkY=","Ck6kxqNv+aTKQSerFrtdLWHmC71qShyMLmLXVnY5PVU=","fuz5e7bj5rGsr9ytIsLslae2cnPBil/HC0MPIYqRjks=","3bBaT6Adn1GIMrVg9+Pr3tb6eu8J6s7i+rHSlAbNiSI=","Mh2j1GfUrMwKVHyOcMBdMwS4NHp5AMIS3pOPCjbZvR4=","N5vHcuP9YkB1cs9sij6X6xCTM4Ic1sTVNqj2RwOB1B8=","nmO6H4YmCVaFR4JrdvCUG11Q5vQ4F2tM8jZuH5P/BLM=","XfUZmC7ODU5meYycJIDis1eTyLPp+/wAUDp/8DDJR3E=","SuknsFi5FCVkXrHMXia6tDo5t00g2pbvL51XJHjzJUM=","E/2sQLb5gaxR9da7E8lOhhOP5Iba5W4yG0qS6+6ybYA=","A4TCYrAwP599Q0vgMnWXKmkjW2tQG2RtJp92Yin++sM=","ESZ5iOUWnMdookxF+YrWqVjCOdblXUAk0zr3cGl5Km4=","aaHjQiSisQf99Iqv6KMkkQnZ8PAtEI6u+Mw48/i9P5w=","6KCxaFuhYBfrWcG1rFyUyFXa2zSeAOPynN+8/SCawn0=","4ZFCmGNAIfthy4S5AaD1mAUP6l83kDyk1mhWicCyS7w=","yLU6RhhfErOQQHHD/RKb26tTCcj58qbfkZk/1ffSeNg=","BNFktrJL4vcQw5SxJlULRLIKjwQie5c88WKDdTxr32g=","14RQ1BbSN340ad41aTFr1gB3FEZsZeg/DIxVUUs+L5U=","7GnrjIIx4EqOJ5rnaFx0yuTB2L2cRwt1reLcEuFwAR8=","NdL4VeLcJOD1r+4q/jbTsBhu0vt46aGVNFzM3LH+UB4=","KROgp8r6zAvboLA9HxX5eE/BX/hPd6EmQTy4mTcnMJI=","LobzPedjd2zwWw7FoYFit9/SbVhCUvLeKDs+KBofwvE=","8Lx/b2jnWlDdBkd0PtUs73U/8kXTvlQ6gahfCGFKlds=","erFZTfN0PoNN7S4Y1wl7UsKEUyVGI3PJcbxdzde5Ldw=","fzIqqELZxlp+yQXTZybsTQ3TrVxmqjC3rrViZ2LEQS8=","BWBaixCBxQ6M4Dybhg4xOnWy+XtwXPcALxOSm5pZ9lM=","9Q2/HWU3feluI9bHh/N5kbQw2hlvQD3HokxpH2SluNk=","cRJ7jC/qTOv7v+XR/8E02DLXtDfw0kmR7UUOiXvai6E=","N88yGmo9fMeANssDXPiZUGXhmXUZm5wZ7kruFTvnMlw=","aQxJ4pOVtKIYKNYxNjBLq7jsCt9xbGQxVLFaYXXSkww=","XMjqmPNfalUDvcoFfWb09HZm3dalZX0qoDnrVaiSGU0=","2R6Jv4msCQFtEsJVgoZ1Ge0+AtsKoz5klQ21zMu6A+Y=","rPODOZAWP7dGTC9SwS7v2Lll9Y3FYjkZiFjqaC2C7bs=","j9xmMPM+6ar/x3utTHwt0enI1mYAXr9a8KquMy/SnTY=","i3z/WD7PY7aQYhXK0l/2MFqXsTm0lWhzlJ2jwFR8S/A=","2VXJQoJMvqMcZNJzhMZU1T25Y4bfGYivA2lEXRJKKlw=","UrDA79xdQv1vWKMlbNUF3J5P3Iq+5ptOpnX5PrCDi94=","/IBDY1qfaL1+93AMS+CHomN0e4oXX6pDubeOLu9+hxk=","ZnTiK7Kzf6WmhpGwfO4j3M5ekKr01uLh7gF7jPtDt4I=","7jqZLBEqZbEq4xiwveqoLtz0qZ5k4fZGPu9t8NucVLA=","6bxFP8JMcZJmzig3kzU9hQspaUO35wg5M2oqCPifGc8=","or1HvMk1+fzZGoSI33SOMv/+BPfHh37qSQSM2n4Ry4k=","S9DG/6HMabWdE1+oDiXF/XsoDdV8shdK9vOGWKIvjS4=","PhndhxnZwJZxY1GzHKm0WK1ITSiuTKLItdb7EyZKzFw=","Zxfjp+aR9SgiZDADj13NStw2GOscGT0fILMPfQ3QTtU=","a4N0wWZd/le+YhfWDRTIqsKSxVbfuUyUEKrQJJ0ta6I=","ssSlX5LtGJZEZ10kNIwsgIkzT5eZ96REUH34ZGWjPb0=","3oREzxlp/Or9JVVjUDb0xKNfE6IcX9rfI33uuVfY4GM=","CxbAmMcFsH0rM4gQWpA+Z6Ey+Pmz7S7acv6zXmvJqY4=","97od/okKsSDbcfPOfcgwelBQ355m62dcphu9Jj5vdCo=","Z8BfjXWt70f3qU+1CvXJnpJ7NU42LmNY/D6qZNh5Oh8=","ZRsjkDBqVYRXKgiCJc441XvNI/+cJCR85B9S0VpAEtY=","Us7OJZXklFzsrGVsBld/vzFfIpTjufXsMxqyo+Uul0k=","pEBOHUG/XPZwIOlO8IOSrTdZaprvr2beDa3r8ulosOo=","HxDhE25ehIZu82nYSPHG4luCbwL5tIe1+VYxbBIhVq4=","/kvIMYuty8i86MXnOp8+oGVfXP1EI1dt0FoeYubHdFM=","BfgBky0GszLQAwERyqkH4o6nHQiAsr6RJGVm5AJalWU=","DZuS/Te32/qMcXiIB59eTsBCQ/J7Tv4so6HBXl3fG+U=","AKBfzI+4wpFgVzdHHzpb20G0Kaxre1WmF2SOQ+qshIA=","cHI5heDutw6SzAxm8McOadAJJS8vgOz8u0V3VGXrcZU=","EyVWoJRs/stvP3iJMgNvuHqf6IYDvl65o3F5H7AYHGg=","k3z9TkgRd28UslI/4Pdrd4v+AC5AWIJYUIXJDkMelRk=","FATimwap/4OuLCkYyIzDWHJyh995N+H0XFXkJ2Hyshw=","/7n9ooLVGDKnFrsfu/u+X+30218GYdGsZE7T9p4MAoY=","dc73JCx5Pyc3bePhMfl59vroWEXOT8bCldqgWDCaicU=","Xb983BRpFjgrOYx+Ox+LBpys7FCudJovnC+iKSCQD50=","9kaUYsiX0uujN0hSbX2HxYYAtW8ZNrcZsZJ36EO/7ms=","0BrYsQ6zfTEIbXgVD/lZvV1xncqdX5oPPQL2u7AJIYw=","VmKsa77bQMr06SFukPembcRmERi0HRWIYAB+vHxeBGI=","E1PUD47615y990teun1sxVNFSWO+s80ewbGa7phzQcM=","waXMIhgGvjcCfQSkn8jcn7VND3FNA2SFuwjF3zvtetE=","OMc244BqqseWcm9R/MMWJang/oHX65tX4JQTn47hCa8=","tTP9CkeGhY3lUAgjfPz0nk9QOCDiZnHpCM5O/BjOF78=","J1vcBXWYloU5CVQawlA4IeKPuQGmDMG4X6nNzbEz/aw=","nbwg6Nk3QySpzIZRprLbiLyEOvJDhhiCW8vy6jlIRlo=","Eu6IjG11L6b4RcSLULTFe68l8QNV8kJs70+RnUGzDnA=","KxiDuWopSN4fS9xgu/+0uodVuQ5kLdkGmXuLi5u7Q78=","N3qTunj2cK4hJHn2XTKNQcNdgMxJY44Motc3ooJyHV8=","6wuTUAOdEO4gFY0lGGRkfBg6Fe+/0ZszHRh7Sq0AYEU=","DNJUuIEL5e4thRGixHhKP3gBlXOe4XtmkG+NeTSx60M=","rXzq0U2TE1dMX+QI2P9yqQWTUtyPmn5Mi7xk3BoLPX4=","AbjXXNUEDdd2bweA2tIxmvSdcMayNeoykIN3t7obn50=","isMnnX002XZyiDBACR6aTUbU6fI2PbDomBuj+aCMpgM=","kmBsRUqVCcUip1jvB+14MrhgTctryC9Fsi8bgzlI84w=","Mmwt2OcTk4ueeguEnJF6d/Mvt9lESdoUge3VA3k3af0=","4gKnGO3+jyW4RZLLVDe8l7kkNGdb9GIqkM1Z6nFlDE4=","V7qr0aDAE1TTGthrneDXUeOWkj75m/tFUBEMzN0qHqs=","/DW66tQzEb0PNIn82AwdZXh6/SsvPIiY2vYQyVgxp6c=","AI/iyWn3c9GhUdHCbQtOlY+mNz28hUScp/nZ9Wz/hXo=","pi22Q34BzRBCjKca7LcjIbf2Ddzgb60GtKBowlWq/ow=","cvUylOu4u7IF+Eex+9w4yHVl+A9szTql9awNS7OWMxg=","Dpdzm0fLqKtaPfaixiywcK48fHTEXe2wFfFtwweiU/s=","wzuA7NCUA81B+odmTlp+3fOQHMaCNqv7d2+rfkcWS5w=","iqu6i4N0KsArTBUYcj1PccdCHXbS/9JxivGk3JGd+RM=","NBR1JI20URaT4ikRxfZD7TQBIAM6CUu8ApPho5PCuFI=","On5lxBGzuJIk73X8ltclVUEoVQWP+slvl0p6a7W9Eew=","2PuZodnq6Sgof5SBnZzbUJ3TS6KCkP0uip0cf4bHv1U=","Xfcti6nBbjlyltQYBR40Q5EZVyhSS19qg+UDy0oI5Gk=","pL3iRqcYfVBipywqUFfPl72b7SB/CIfn9AdK8KPS4RI=","B1a0VvsX491EnMyRO6QqOgVmRFTk0zcBRzUH+UQEc7w=","ORkE8hVLBudAEFaHtehwR/6WNWMvBBkXbTESLC17dcQ=","SOsg0DrRePn95UET9YM5np3Q4u7gjlY7doreG4m0+Bg=","K+Q7VpXL7VeCboNeB4Sq9sWYnPGLT79kaoTHizovW9A=","h/nnZCqhTKUXKb7C/9huwN9yTefFwUdn2m0QT5sC7CI=","ivBACvRW9UkWuQdHf+Rx3uVVwVncL9leX+1EVL52Bp0=","XjFylgrieGYrA7HvnTd3Vx8kdjs7A5caJGdYzwrYpls=","wAtuc3SjOEl2boF+hlrrTVI4C383Bim8zDuqQ2Olo5w=","oGq3iwF1AssWcwKU8OetPtxsaSza6eWeIBguyCgviIk=","FSq4JKqI+rHOPm/pXRjj6p+OMezFesCKS3Y7UshsT88=","cQNLqq0yOvmWdfWDy+1MngHXjFZSd7fXC6aaOts7Mog=","qL4jxuua/EvFP/pLV7F6wXcI23CQWcSXp8qfTdjno4s=","SyM4oi6SPr/fp3WuuvQkIeyaAmFzaWYH9s2bfbgp78M=","nsXKcjLuVjR/QpDIltmSREajKcYjFXdPlFH9m72Gufw=","q8SgiayXBvep94vyfwQqZ+bRgz6NCnpK59iXMJ24n3Q=","BgLEqgIlp6pZ5/o3JSOyRvKpoggYaWihFTp5UnvrV0A=","C7nK7S2Lnw/oEU+bHDfGz2avzAJ1J+hf3MPH1zLMniI=","ciPztk/mwO6wWLBMnkyn92q1VhJdhbDamAPumnyldq8=","ES7+abR5Q6qibZkzC4wbD84DmS+/oAJDAKCS3CtSb5Y=","j+qqfz/p2QEprFQzRqmpnXxpTBfuldQwVx1jqb/j78I=","OdWCEBcjoRJ2HjXKmGYFbuEb6gey+ojBQzXNAAUY1gY=","4yyhYIL5LHj2syKUgNTusrhWEPhGeZrUSyra/ySVk1c=","oLVNDeguhWimYMVYJf8kTeILYcWtsTlscdVO+/KSnIo=","WzzLMmj1vuFxuGlUjhZlxUhMnxNdTo9VYOCuqAVbyMI=","pPbgDM1lR/ZaOI0hTVNqHjBdTaMgUCe1FMD3wRezmRk=","TAapodJaRGMdT3jgZvlING/JWMiC9iXIfibuZY/gE9g=","7veo8lL873aIBskCko9tWlo/bp0AM35R7GJN/PksTTk=","/RxF89wuZj9iLDv/Urp9kXWjyfqoIerZhEPAGlcSVL8=","NX1gZllgD7TtDIBNFw/w+tB4ErHyiMO9Y/k6rv8P8p8=","5kgsEu1RNwhCDEHnuuIZ9xizNWJQBlS/hs6cZvF/0jQ=","8NO7k9Sbvjb1HS0lMaOOTUOLCF5Ji13ljMsrZZdxTys=","U7ytSUcD7ZVFLUAQIWNno4dG0DKWDwo2+nS3DcdzHNI=","VqpKIPoNm//1o5VN5u/WGzMTULln2nDvtDHoNMd8m10=","+Pn968mfvCA+djoc/U7bmrAxR0jPUoNjEclm0hyoRo0=","C8CsaDSUMujciHijmo3Zs0Nbi2dTMgPsdAy5U9dvAA4=","vXpLGp40nJFgCbBix0Ntf3xIdkDWDAlm3n1I++ZJCYc=","xAzOtVqX9QXhtRJzhmK60ymCwo6m0dDW/3er+jgB4i0=","RXTXDiZ4WUmtlDQ0AF7ZS+cJZb+7IJRdjSBmx1k54sA=","AHroG9ZPr204mLPxL24BIcFScFNweyWJf0dhWU6AaZ0=","Y8fBcvhHtBzt7btaJp4bLYjooSQjz3E7J9ngciXOYdQ=","t3tr8Bdp6Ze4S0lBOpozeqf/DIS5Uue0cD6dbyXrd4g=","b+wEaAOt913fg/ubLXlXfLYNrib4gIWhJGpTZ4aBFrc=","LSK5rBJIEwEP456R6NRUm+LY8okbHgZcV9bhRzxwlj8=","X80vD+FCK92/Jm9FkJ/yrP4oeV9lYkqGURxuzF6LZcE=","yf11AKmHHMu0bQA7JNjcQZi42XsTBJB2TPRbhcyEsTU=","usoEhPhZLE0wtcBQNpCl201u0qLmM5cMzy3DzYJW69A=","uX8U0mj0aaF6mLuKp+HX/y3RrIlc5uqshfuaUJH+dsw=","+Hqqx7XFfryJYuv9imC5N1MaZB9QAR6XanvV55lWpAY=","S67J3e5VdtQwymM4oyHYVQPo/5tLLZPiuT9rNkw+7AY=","1GIv/+DeEc0hDEXHoB9yZWlwepPsNAr8QawUVr/qCE4=","x+GJqXRHx/NLDZIru1EdM9Qd8oQLjzFtVow+iaPIbds=","7klbr2Wn38HJaWi8jADt+cCVGn9ohRiLrh2j/JuBKcA=","oSctgD0YMdmgRX0MH05k8xLyj9htz+u6meABTVtl6v0=","aRYrFQm0Xj3VfH/BqjAOJaaQqz6lj3xFdkmASYDmiNw=","DdOTipdCuiHtsvN9V1hdoYI5lY7hQMJgCQ+JOQNc3P8=","WT5L9Og/4Gr+/Yfo5vs071OSehz6xCRFxTuO78S1HgU=","7yd1RGRMtZD7/nTeFZ7QjN83blerQ36WIsILgE8+K4o=","d2U6K3VA5NJasfr1ZVaahR25eqXVOHOc87DAUZCw2/0=","QhADF0yp/1X+gim49dr8FEvNdnu45QLiyBFXeqcGq1g=","L/naUsmTqNn7nDV7CbSTGRUyP237lUOsSDSzYj0ghcU=","8NbILPLw3rOHPxLHbztx+Dg9NWnxHuoYGKWQS0uh14k=","pH+yivehszBiN6hdd3LjrhnBu+Eev4I9uiUpqRpIFpE=","4Lm234N07vgVm1slZoSbL6CYb214VFqRIMBw1C4MWLY=","EXkZ05XZkq2j9gUNijkYmDryg7pwygazV2Ghgd1BMqM=","Zg+lITFmDk0gcyB70jqNz7+hSdNHB4NxIa0HAigGO0I=","nYzRN82qxqaR8maiv80hcHLAnSHxO6dS7x4t6chrExE=","E5WVqYU8Immub5HxFkor7+CgACQYxBuR36hx/4dkbks=","hJTEP9RUam2bS7j8XBL/InUulkytpqygYmO1buNwtM8=","+w6MZPideM/SBqpy8L6rp7Oe0WARjd0a8Kxf3GNd6jc=","VNGhmnN6iaqKBMMjb2xcsB4GxzGn3e+g55NeL5YXWM8=","4vFuMUMf+xsKdqVAbOxpVqoyWE/PHK4SdG/vn5Y+EvU=","xdeVwUhTuqCMhlPaGH6kdqvTWqIly472RYVr/1PxWtg=","Es/BHUpwtVux9nvwRkyScz10ViY8QcIC/35YwW8Idl8=","Ysqjb9riENNvdUSbzIx8T669gBtJOATnJ+l8CgVMrhE=","UuqT8NYzpDGJV471MYcrNfUFA5l1o++OU3qTuDYAo5Q=","CeFoOUNfR9C3LFXY1cMauSs0MALLTHaRX/xRgDRXwjM=","+P9SrsR+X8kUuUhSbW1xl8emqF7Uhn5uUDrSprGrIhU=","AucH+h1/pqmgzpVzTYed7uoqSWsz2v9qwKpb2UPZioI=","qGZPiasFYrq1YxSLA4leZW8krzVRw6tLA/OucIKggaM=","I1VSA+hy0HuBYHt2ih5K19i/osJwfDi3XBvkSWL2ekU=","QK4NFavgqeT20ah11b0jofGbj2HAcpr7ScjUvdIsZKg=","mgorR0B8FWNM9X8jNzVZdl4HJSUUBm/YAB7i9y+5F3Y=","TDy2Hsn9+xynMwhVU4LQj2M3XTMCo+CTbqo9QjqGZAQ=","ontGcFp+v/m8dUHptZccz29uIWVTiUqYCigGDwAmNZ0=","PwupRzE0TnANMhx9KmP3NS1PZA0+MDBq/Nq6Qe4ULa0=","qp32A0Ovr0vxfA4TI5EbzeGJ+xS0RkmQ67EcPnB9VX4=","PceIWjsc3MrNBnUacjIa7MP5A+rw2+Xy8KRWVl3SJvw=","qrrAwn0K3lc5BfI20zJSGrd3a2KrNMIFNr7wRVrXUfM=","qFDPwbERXSGT11vQ0asqUbki7HCnpJ1jKzfQvCFUYh8=","pYZnJX4rfgWVFHyrmOA2dz7BxOGkr5/WsvbS8AKQ5+0=","SwAWlsNJzhdu2/eWUST4ayptKcjhvas2MgI23/gWwFw=","vh0qZ6EfeafJxNYpBsdb03pnbNy+8cXharE0gQIZ0Qo=","A8oqoCtRsxwf6kOlGoFUNttEq7pWCnfEXMGpbyfvj4c=","ZitrOH+Bm9A6bd/n+GrxhOo/q6o0Qdg55Y74r8724o0=","eGBZWEwMs1BGaWV5skGsTV6s7r802XoDNZQcEFG59rw=","vv/ohhO0ENUOzLIBCNwF71jzHmokH72avj8/LEgbm38=","Ah3ADfJyws6Uu2p9M5M5dfk+aDP9S82+X8/ZWPd4Yns=","YeyVVmCRlBRYS0KyKSA9np/ToeP2830nYz/FlDbw7+I=","VxuwM+VtIBmfny+KwzU0a7bDrm93CMv1PlT6jT5OoH0=","2HdTHvQS1CdKzFCvVsus2IaMKByfFZ7p9yeuIjE7oNY=","WXOG3bLzPuNkz8KDzlfAQtz9pisXu7E3vvkWiwUIRG0=","eLsFqUiCioIWsdSDVr4XKOXXLhYQ+/DaugePuXSRFBc=","L2W3k9Yc0Ve39722aJOXsICl6Wi9pQ8ZUaed/PJteqg=","lgdeabuhtNA+yVBq62Vla0bbXcztjxP4z4eNbfDlgL8=","XuEy7oaoKxKkUUG9Uk4N1NDUQjI1vjXzT6o+gaS431g=","Eleor2C6ETwNtrbD7VlYNKEglLcccxUQ9hBsTlyGAxQ=","ukmr9Suak5QBVFZsIUhqEOTLCRHqLB6FzKyohSFLeaY=","sjVdwZrH6MRaCDPzqpU0C+BZ3/3KveRqte692peYCMk=","TEXwz/5Luu/GHR82me2fXkiX4equOwhHGEg4ThEBCEY=","scXxKsWTgiG2JqIljo7sL+sK9s/0uC1HvLzLuCGzNkg=","b6y/gLF4iZjmd+EXs2jVh69vjl3L+TbY1TF8yyRhVTM=","7otEms4TQJDb9TYRFa3ME5/pPE50KZcsZqDfrhpeHa0=","QNFLL9R1OepcaoZ3Wp3W0szdJJoh6/hLaj7+OGaENwk=","B8CmbInCndZMyX8itE2aueqkrePtnF+6DaYLfjx5JZM=","uSKVTJzJ7pxoR/ogJrAldwnV8h+vZlK/Is7PQR2QM7w=","1/xYKJOv0ZqRowXDCydKQeioAakpPTkPTvn/De+uvEE=","x2maABewKSsLsVXJUmf42yuO+rU52WJqWDf4SClTLDY=","XWIsuYvbPEqcF2f2w2nqpuVhSm97mi1VMC8aaV3RNZI=","Q3U3yT0g1GlXxG5alMaH6KdCszhaCmTE8aPKoPe1KqU=","8hd39e3eMhV0E7F7dFuN0e0z6xHCWbeigo2pVqdPIeE=","i1BN92MQVX0jntKc8WgaYiHzxWmv87cEZiJB+QRYUpo=","5TXG57bTeIgLmbVsSnhMUdMsAqg2I4FGAPt8+3E3ud0=","tze+Cegw+odbFI/u1VL/FH/k/ZWQg+31Y4HEjalQgjA=","XNMkgzC+KqdCoCt7a6Ft+R8YFyI4rxJAVpT7IpXi8sk=","PbWNqx1wcj4ZYwRSTlnhd2eSFUKPEiJ6YsrmGStocfA=","MqCikEl/zgC4hTXll/oreBXDg8g2HUuC4VQUF+xHgdw=","FM996NecHlYm6UNvveIqibEOYU3p/7njKOfv/tb2x2k=","Xa3UDCIEOUgSfus4CYpI/cYymuGGzcfBdEradLU+eTw=","lP5Gq1VfSuAczfcx7UE3eYSiOXh7S4tZsc0xYiohVT0=","M9LLaBLCTt48VlzpsFKr9Jfbm6zkRzoa8qu5CW6PfMU=","t63DMA6m+ven24595jgM7nS0jup+liPKTARJMNQhFLk=","/DlutW8l7/9qBP7SfqOHScz1q5apnhaskfrpcvjqSiA=","JoF5LqMo6w2G+3S9LLW+GazbLR80WsVWdIh6XOacNVI=","/XKzFe+opO++1s0fGLVuVRdnF9rZ7UKkWnpYU1vOi6A=","FJ7PWxUYJoXg2R84pnFXDPxi5swmsZcy15i0+2eDIlQ=","4y3+vcS0I7SPG716i81KlUaW86aVKUwiwJEAc0+2KnQ=","LNcXu68qY92caTQ9c/CxrZYB15yKGCnFiQkVSGszxGA=","LJ7OHcoUAjdgX6AvLXLVwULMpSEMpqIo2Avd61BENU4=","uplEDbDXt3O/nK4/wjr1QRLxvaJ0LYhdsdtHq03zjA4=","qZ6J4JnGfPBMDCdhavBeHGV53/iGUqL9xiRPnzPUENQ=","QT4/cIJJPRUcJEMyroHPfNeQdIt1YCxrwlMzQxImLFg=","Q2kt6EtgLDgXjYvuMqiBmbgK3/5HV4yWO27Ij5OhJ94=","OGU97Ahx+fWoplwALoHS6FLW67z0GsxRS1RASen3p5s=","8IK8iOHYbtPUZ0q3/KXHVpmMrCXbTc7W9b+pycmuu7c=","Eq8GtPrc05v+RqVpIExFXaalbD0Eg+xtGGCjLELjzJQ=","a2RCwi4pLpKj4R0v5HNchs7ra2hDrxQ2SMmq+fpwyjY=","hnwjr3secvI12UcvWeV26SBNiVcVvpnOjwXIfTcbhdQ=","3tL3sWjStJ8QXIwZTLghoJmBHL/+xLu0tryW879prUU=","G6GRcMePxNWauQZPityK0hcqzWEsvI9OPhX3ii4ouO4=","+yz7rirkoXx4iR78mt5cBUnj0txOQmmFEObvZPfyEls=","5k74UEiW7Ew+bhMJ6nXeDT5f7roYRXqQ12x7fVhqA/Y=","oLAuww0drhrXBoerkPuYEpcLWTEllAVP21t+y71czA0=","ULaNhWvchhwFyjlYJdAC4Ld3FJC5d7Nkg5N4yov5Ov4=","3ZC1AxhOpBxIXGRs2AJXKviQocbiy3vM1ikaOvT68h8=","85iwQCL7z8Ub20OXPrEBKwTV5qoElX/QENJRuDVQdsU=","IiZNn1+TBIRlUiZggT9HQQGlHf14/tNauO2tdJegZhE=","N4KHXTnQBzopPPIEC0OBiY49wXcA321RnUPaMJIyA2c=","1F/t3m9TWQfv/wVOZ/z3aAU1jruq6iwxT1kYx7g/1XA=","mKxW85AKZyatIyWg/ZXPqCRaQc16jVo3EdzBWEiOzhY=","jNaJoLBOtC6SAd1y6Y0A2AQeQweYVuleDFKV+2ffZME=","hAv68FXU+25OsuxWvb8jEHzZH4JkK14s1Ap3GMb+Pls=","xM/ImVrl2ZOFmZkft3/iSisDsw3Jc8YPd9qCpvgu5bI=","NqFTbZCoTJDPpbILCm89K5WrPq8RAwB16Xjl9BhBwxU=","KLAPtx3YBC3xg1Z/usnLjhK/FOs/B6sgSzGy81KaxOU=","IeFFVR71BXOtZKcrfBIz5DEc+jbhUbLwG3Z2Wupj8kA=","1a92qKCDyQjhTwrWos1ykZVtOCn2JSFEmuztwLe46YQ=","r4uPdTdERVhNHvbuo7mWrEZ0erZcOD5lJkGTvjbMZfU=","mpkJNTakQj0tfM+NiyO4daMGObcgR6R6BZ+XdjpP2d4=","JAl7GOswK/2JXcoqSzv3dCt9FF4aPhfaNk3lfkCx/Fo=","s4/EF2HKfALi45Tx1lqNOvv6WMzXDyHBJQ6LdCsfhGQ=","3oscfu2+qMEAltTNv9PraR4KU5r/WJqpwVLG+d4ifKo=","bx+tdO55FQKlsYMuAwUAZ4EqDvtIVmItt/CgQQrxP3w=","klnKpNO+x4tBJ4cOiX+RAseBiuxmGe/FSByubvvj6p0=","+qNW8jvy0GkGMFjdEw0L5MbdSEjpe+pp5dZDvTG7DI4=","cfxjCB75MiC7e0AfP/B7Jyzj7pN+PZkbMOnLBR+lT3M=","pQcehYWZs9kvNqvaUBLHB9KUKnESFPPbG0K99SjM19E=","Rj4KMIJQZ7TBC7Wm2G4UXMAxxsNV/TfPG5ogOkqZT/M=","UCzFfFpZX6XnbicaT8Lh4wqAasLUow8bC4hfmanAuPQ=","H3FeJMtByoy27Q+5sAcvSRDgd7RxLU+PlmvQGXhjiVc=","V5Cj8He6qNGGK2v6kudYZI/PP2UjMnheCrZ9zzu3spg=","PdV7dReeUohU1BnhpQq8iceyW5wYeQu4iwfOyjiy/LM=","NXPlnkOBjxN6vr+UImWzWuDFmCkS7/upzKrge7quKK4=","dnhD8uU9u0ObmeVPz6wmko0i2D/0kg4wE5MMMvdroqI=","sPymjsIjm/F5R1kF3FQhWvdLRwr7BY2O+/zzUqpj/5I=","rrxTIq2e3Ud8vtb3Yo6GyTIAzMi1t+kKgVYbJUYRgvs=","rwppq70cIkGHl0KbBdb03RcTsqnkmbwgWNphLBsjuig=","B0Z4AMb1A2n5ZDfolrUciRqeu3v8L+2KJLWRrg5a/Zs=","eWKCE7ft51cVcxk5BdYEPBAUaQHOCXR2CfKhgm1yeis=","A2D/veY0N2QGgxI30QrFvK9EPZFDZHoUtFkrHfdIONk=","yNqRNrhikcKV8ehnIzGk2rQrgBZY+6EGuWM8l6Ro9jY=","vKcMGL1XpBsncC9lMt4+n//yf5YsbecpK55U+DqZdbA=","KmSRXmJZIBDkwnDFjNMnq1egtYBA3PFVLrbBGCUBRiU=","ZViI63wt4eKcNUyielKq7an+tPOdzrHUCKYQ0fbsAAY=","2+A1LMfRO2ihWTYut8PJ6N85iWLf17ZfaDdx4Pc4TQs=","mq2brec6i5ajMyslILxt6QxoYcCnIikeel8VISSbozw=","PXcWgnbT60ORDqu23+aN4QgSOHpD3BsxMdrMyM4HLQI=","W+teLBMQTgtVWjuWvNRZGebh+nb6KAe2sIxcQ2nToK0=","hjLIRJ86XgWYmas2gyLNG95+fPAaTJdCRqFIFslRh9U=","o6+HG/m1E3SzpY+ih+tFqH9fzOG9g7jveqcDpXJraNA=","M0rUmKAJcFKFsquCgDI0XoDSJkkFHB22RDJp1bjxNdA=","BVRpFpJKstkO17NRW13aqPWiuVCjJvImjh3HTruMUDI=","3xiIAMjd1PoVPxbstmp1om0XYrnKCF2xmmVJlMCTPZo=","laAqzBPsE6bp4FL+PwjEBLCx+I2Xfbt2iCcSsC1PsSg=","O1FAZEvqXElXOZNmuEv9fO/n+N5VRvEPBnn+zJkBd3I=","9qfi1JOvZGruYR+RBwFgRupcrzU4Zv52nTFdlbvrIHk=","wdsWdUYpoo+L3pDK6XB5gSTYiNO+hF0pKRA6S9CJC+0=","9Vy+zRdkKQxI0UNK0asO4H9fYH9m2ANHcM5KDuIVXPU=","ztM6UaMo2kL0p+cBkjpgRFb//Aetd15dN188w9DdjyM=","Sfu9TzTxupqfrVH+5EKOVDPtKYNql1x84eYukWqO+eQ=","WH5NioTn9kSoauO3d490aloB8IIAodd+5K2cabU2uS0=","1bzUwrAhipgY8L/AImUcffTy69b3BfRp46cmwvJMqYQ=","c2rOdEjMghnRekwND7F+l0J2qkGV5Pcw0NsMtxhnueA=","oJeTVYAtc+vDOAA44nfq6zpNln+NIArZwX+Zycwyqdk=","JOtigbmN+7tm91zxc7BOIhtpqKRDRtUfC7MNYQg1gLA=","v7w4Ha3qeJvi9qbPikc5BnBZPLRRc3D3797AgXlqJbY=","qAqTnS7woGvtU8dlRA6bKvDmAJ/AT87kVK9L30QHQ44=","r2mkf9kyKkC8Giv/jGU2zaeRLPXCZoTlsjoJWZEy41A=","Nee+31R/eNAtimgk0LeWN6zTaVSBzBtn3EI2+07a+j4=","VICuP8BOzzJ9B/bu2Mov5yEgiWUBXVtRig4AUKe6Yb0=","IRWHn+/n+nkAXBpht78pIxHDscun5Vcc8FFaYkbsZ58=","mWUZmIXX8zBwG8KBFAVIEJK30/lVrfIhKeskHy/DE0E=","C2iARqn1GILD0VKFPdgLAA3+tqIwvoQNdtYC+F9gTOM=","LdAEW+657KozFWCaChi7e5L8JqJEAJ6zKKMWdui8ilA=","zjGp0JqAyux9+dPWj+/W0V8QyLNJeJz29TLMpHs+jEg=","MUT6+y65Lhu/tBepOyswjsSggCB0ihZfjD5dWc9hsWs=","shIWGIOHjaa5pOdg2t5xX/R+Sjez326oOORJAD637aA=","cmDcSnKsXB+ys4CHQzscd+6I650dOlVLv9kyN6DWDT0=","wM8k81+AfYeKiP691+tXb3Z9FN63cKAZmdmuJ6MMEKY=","pPohFlY17RsBtyQ8vF6LKFVOSxL+c8sKZrLwvKG4dbA=","UqIMOSp39PUPxT8hn3FFeQ6oytiWThYIZzOaHRsT7Po=","jQ1z77ziOFg1P4CmpRG5xDPBnx+zUyIz19unCfHSoxk=","9sE2dEUdwT/iXxf1LoIeYGhLatK37NeuLsVYm/wHbAo=","Vy8/One4k0CBE1F7psnkpwymreYF41kYCoWUE4NfyXk=","vkSdErGJAwrUpYu4jQCUdOb2hDXThsXcHZPYY8fGjXo=","Trf8coMlldlp84B2QwqneyaeEloJliGR2L/JZpBJO38=","ENuaPDIoxEepwTByDIep1IUJl0iiJiEZ6UP8mn2NTHU=","oc9hKaHWkjaRjKje+ajHmPz0xQMKR3cDTrBA+hUFaH8=","vsyCwe8rYoa2cJl6kQGDtKulk/5zINkAxPQP+La1vn4=","1aOxChhxp3Gu5Qim52TH8BzXBdS3/gkU/xnfCe1fsac=","qHIPVgA/+ROWielSmpp0AlhcPMrE9ZeDHs3hREslVxM=","U8w/+qOCcLUzAJeR3ICdfww4ZnYsXUT8nafUySITUCs=","0yrafxlZzJLmJnQdnDV2JpJvZc56h1XtHITE/pnOAOc=","w0Fu5jiOTD+IEEaH6NH6JP/XotNxqahQfiLLAVVtrKU=","ARxhtQjDxlaJ3wgG0Mm8YsnCF/2qVgdQeGzX7KyTqH0=","gCoMygpwxo/z2kdHqr+rEAUmKc4tu44atHzLPKiuyP0=","JXQo+s6M8apHqPMDPrfg9wLEqG2gsapj3aiIzVpWsAw=","dFf9/yDdiTaLw1MKJcvdVTCph+WA2fJwXDHui/mOMto=","g1UsqA7TgdhuN72imDiKCoNT6OmJlCmmZuSnE/hCg4U=","ST/XwJFvNk41RHqmTIYD+caY+M0bpGMtWdw3qb8Jaw8=","MCBhhJdp+bwMIP7noWfiWgwqDS37q5kDbsOgNEBzlBg=","gNQLTejamJL6U/vXLJS7qt+7XL13Pdyxh5nWEHM3t/I=","dZ5gi7T79jfTUqofF7XL+QSxG6sncnVlskd87b87S7k=","6aFy4/NBG/g6JeOVcmf96DsFV7zgKZBV9kAlqFnc/ko=","d3IfOfsaA2M707XHwThvsS8muVlgC77WG5KsUUHB/Ls=","OGYG/dkDZsxSphuElDPyKKM4uknT32z5epoCPGQUifE=","ZL1nZcpH5djXEjtds7vFSFminXzlUuFDgn0W9ui6uTg=","cAd8lxOfHZZpTyf3nrAHSQcXVfBv+9lDIe1qGfRNBPo=","6/zjC4fwZxDnpW+8tH464TsscsnGKtUwKmL3eV80IiA=","EtQhMh0VLGPyLl6vUbljdRiNs9r6UHiJxtaNF2F8Hzo=","tf8ffxnlB2PC8LoHxnRlNuWRM0k+zIfi6RVAvvqW6QQ=","IE3VqhB0qOzSzd0cEEbbyuijYXcyTVx59JbwSKJ0uuI=","34HA/L+wSsGs+m/yMwQe8LD/hm31FfJV5sltkyGPyJc=","9Tq6GOwGTjGkGobYCjXLH+T1yjpk7qpCZE677uWnqO8=","rrPekFOKObw2YHRPuJTx57y/o9XmKIqA9Yd31ZqmAxE=","fmSPM4LZNfK/UXOtxp9thO7jknxxp1n+Uu2/ygFeOdM=","enTZDNnX3POm58C27xVnKs2NnTMF1IsLYHUxK9ibCY0=","nv5E/N/kuDHieUU9I7excaDQ1QSSbmyDwPrpHWFtjwM=","MOVffiJluDx/8fFtIPg+EHvKlcqn9zgfGd/IfNLE7lI=","trCId1IjCrdZg2daCx+q8/AcDUWvD5mz7WTtcrvwERY=","LAFaSvPkQMIhi6pP0lIfiaClk8bYfQcuH752wLWbz4c=","9xsyPDoF9pxXRCKcMruA2LeMqHFc0JXodtmTYRE6irU=","WehU96BOKW4aDMRyadUePajpHipdWe0B8nSEbNeqVLc=","y5eeNCDeS847yhPfNhIG25Tvai73uxVUwJA7zSP6LTQ=","OQf4iNRdC3Mio4NlCaW5ajVgLS6vN05J/st+uj2Cnks=","Dkf+1viKITg6K7sPPToDtdSjesXyaBMhGDAqPSjtZKg=","HV4XCoGjpdN0BkPiqNPpy4qPJtaBZZJi6lIWH87CA9E=","00KLqwShIEc5B7OCFQtOyZkSHf306qQp8E5uajxTWB4=","YXgFxXWDWJzr22e1XXA7n5/aab04HK0vOlWNHwZOGdY=","TApub0TvSh2nHvzWznO1g0pdqiRcNZN0Ul+00IMS2eE=","ahEeSLlJbzsHJBkeE3gDO9qGikjDz2AdJpeVvD2tCTk=","fhiKN73W670/8oVX4fwOvTZcEqemlhs3FTu27ktk9Wc=","qKcfLyLuPwYYCWq6hNRW2wSXkUWPa/TcQYvNOfOZvaw=","qdta9InARU0ryyoVqq64ThdshNdN+qeGF9t8P9IZ0y8=","DPUJ7lishq5NqqDx5ye0/GGemewSBAAnvPYzTaNdk9A=","Sm1JujLUaKzHnV216Vr8rq+dG0rJhAh4wRVvrNDdNJE=","Qi49REMZ4c2ox944CVqKx0K2krZWjPE/CSW6nUKwNCo=","6HWb8Ve7Q81dLYR00RCaB+8DJGQfVpTIATCn91qDl8o=","HgdEK6UJVcZuoOM3rA+w2WANFsiZJcds0V55llVD2bU=","pGiShowix5u3KiJWr3JhliQDptIBXJbngibz8cIkvag=","BF7pc10Z5/TU5kbC0ls5rXp5nWemgZxp8+/9sbFHEnY=","WyaEsgbfLit+IwzgsPmiiOsN7IokEpni9E6YEgAdcdU=","qzfWKYbj026pVM7j6aYVXCmXVsDO5opWbIHga19T1E8=","0i2/Quu5lCQFT3DIkuccKZHyR6vITOOM3NELclboCY4=","hVVxzi7Ei0z6bi5H+cuuStV7yq+GHzVrTD35zFX6PD4=","u7bmBCXRBJe+7T6BnrqeU/wiyTLOVzwrdWfqu2Gluj4=","KLWzbdOay9vREzGaR+PA+XshyO0QFiB0S6augqdZKsY=","M7Xk2hWekwJpNhZ7nVuVB1f7LHeO7BkYZmyyuA3P2c4=","96+CrY4gAQmIrMk7wNhsynuFDBUWnaLRa7cerfhhaxs=","1y1GMClb1cZDuDStu1t2pOEaU6em0ymy5QWxEByLUjA=","fXZvEMIoFfdJViqpCG51cYnN3wKHVcSNHRoYL7OjXNk=","Ey7Q1CDPWa9no3qgwFq+lv83BOzeQ7M5M9/DxYVZ8S0=","7rzUIsKKORVveiXPf0ZUxTBddedtC7zPIZ8Mm/hkhWw=","UbI55wECxIcFbfKhiomZ/acNCMuxO6uvPgn974Sny9E=","ygKXZPenRQIuzLSYtTAuruufU/oWwarFyQ2DDi5dIb8=","YPZpndVDf0uBT34h86/WzxxI4O7BurZIsEXvwqJmxNw=","3kshyqMbuVhKcJObHUlcnLEcGMWf55Z7MVfwZve4ejk=","G2TbZG0ocQ9g/pHNSmiw98d9Noi+Xe2OK1RjPWbQtWM=","Ru1/8RHskfCu8tcBLkh7dp9uy/JgIV/+vDH/Kb5HMbI=","SS6iLH2IVCAeSOIB/xbAa2Q8o7FRaJtFJ5Ya4r6YPBw=","jT663R/H+p8Z1FXc60ZE3DnrBJ4yfqgxw18yGCCbJoE=","uvgLVUoIlXIMW3xI1iKcQIQ5uOfpLb/VWTE4vsw91hA=","Jifq5OPuNdNmBEEC9WOb9GOU2rGoEXEzOddBKcO9KE8=","Xiu6nV+4PXTTt5L+WpQcaWdluzUB7dORU0/S1F+WXPo=","Ymc7vjh0oIMARgRE7yuNqFYbYpBf0qGagLFw/vlNEus=","TWIG4/xJwKbEUm/Dqco3w9g18KbUMZTQ0khMoqGQvXo=","87eCsAUyn/H9H0JL+x+5qAV09qUS1SjYlM/LV0mtY6A=","fdO2KGQu7O5/f0W0SnuOmAsDZxxwXQOsEkSsLxqf7OM=","v9HVFhbNoPbw5FzzE0/ZSV0LUkrqyVC64zJsHuo8uEY=","QuUmb8n3uahlLR//2gOW9pLW2u59InbVUBRetP5tMZI=","kWSTnMaUak/NTziB28j0bloRbah7oVMlyZ1yXUl3pbg=","RSZH0wmLAwZUKqn60BOdIKDdVpuN7IcZnFQU4WXwwMU=","o6Fyxhd9HT3pbInkc2tAEvg7vwtI2z+zCo2VUqAwmoI=","w1hX0feIHKpfNS9xO1N6cExtulUHEXsQzbTFrs6Dsx4=","P6bjo05oqTJ14J5MQWqsfUNfGM3dn6RdlFdPFA36lOU=","RDx9KfB9qCFttZ9fIToO8MLxlxbWSbb8F7EAMB+Acug=","yz/jMOautDBCVjcqcBQxJyMw1R6cU4ElhZSuMQp+HBE=","7hPkxvO08g+cAEXHIiPf+n+kcwEfRK9jBa87XudElFI=","P777Y4KwIGzPKIvS52Mmly30SkHnqSPPKZKkE/QjWbI=","JlrztPggciPDjy3HskYksSsybir8Ml7WgTCoRQL8k2M=","Q/bBWwSxK+kavLTu7dxjQHz5ltmJKsNvWf8Ge21j1xk=","cp08iQRmmQslPUjTver/O63ccRROaSAgzllTkdfpMIo=","lVaCV40f6o9HoK9jJ7EQ7n2dPKBi2BLjXdQ2adBQduM=","OVWBRiLwzR3j/t1DBQCHloqdRI7bkAo6YPW/n8vyn94=","95dz7488GlAl99NCmNMLZ63llcHGmfmJRMnpacqD1Yk=","2CgchKgUvzctKJiKJoGGmFB5A4KbZKEMKGPeruzJX1o=","n0G50Qc35GOIUI0csZ1y2UEPYtsNJMFbJOt1WlWgecw=","zNrr/CoxcQDzlsyBfW6+oU/PzB2VIXqDpU21lpGQmxU=","pL9kztqtdPUCEuJ6Yw7j2uk1mWcqQqRPlTJVB7xCBs4=","9Tr2JBh6plZ8U4UVNXne1CUwRqC1wOCHlz7ccwBOF3Q=","K97Py1nF/0AvJv5f57JHg2LQemGQ5hMtAj7qtV5Pe0E=","YNH5Xz/dlfgBj3WSam7o2yq3Gi3V4cJn6ckDSVodbcA=","WKJXwb0KZNjB/T/49IEz27ZtQUOygoXKd+xqzc466cw=","UXjKy95muRsTpbP3t/SYRozhfDsR3EMMwCwj3No3PpA=","k9CieI/W/Ua40i/4GI7HNXsTkYqWArzSEbDR8oEFuUQ=","D/9v3iEu23iIr2fOktBBAYpwlS5Qhw7KBZu25majh2Y=","d3VHyBS7JxvsJcbinMDfvqPiM9ByPyHLpywftrazFd4=","jjsKufSzDjo1hDUr33O0Kk4uzTO+ttQ2hrn0t9kXmHc=","pcYaBY3ZlgOj0XQAh6hTz9Nwi2+Qb3QJLM9Wn6S8q40=","9kysVZOnhPvBuSaC65Gixbh6YNMX5rRJUjqBf8YEhDg=","ddcxeEr2UaGA8yfVW/rdYefpYO3UXu+FT5hWBXCz0Go=","jk5Hlg3btu5dh4tcUDXG3kpU81YpxKIn95va2l9lWOo=","egRP35DUFpV/D9ITfBdClmMbwLeSHssVCt0H0SammDE=","ERQxflxGWsMPHh2jVbni99eVLZoyAs3c9Zw6BObyMCI=","QZLdlGIDJse3LnkVMlp20N5SbRutyxesB8WMWLb6agw=","aW9zvzl5NpLi2elkU49Nr4HWD7myi4+6xLDcSwoRfOI=","9USoJjk5DnMBSR6QNRjy/rjoPICtGPrWcqotV+cAuRQ=","7jcYieAK1SW9vrBuvi92SWqv9SyOz0+yzh4semU7wCI=","bJHYQeFfZOzW1QBLC06YZxMWpO3P9JFHt6oviy94sVQ=","louDU0lbXFPtDliiAOUk9yvDefJUkARWJhl2HYevMSw=","zGJaDKOPq6O+MP/+sgeslL+Rb51YOHF/P9eWFa5nxAo=","xv/VTLmkGbA0vMFKUIYXBjheGJBApkKrcBSXEx7iNr8=","mdVYgFOH3S5diVuIWgujKz0qH62oFzvHzIlDtZYBtsk=","RBOAbGlm3N0eqAMkqu5e4UEGnUBqy7JpP1BtB6Fnhvw=","I+ato48Zs/DgcLwPcRg3FHiCVVBzdDKVuu2MyW7SOTQ=","kTkMBkVYU4jU+CiuizTjNRC8TQaDT9euflF0tGHRzyQ=","i4Wsas37J5anRsIOyIMVqDotKmtMW7PLx2W+j5lMhFc=","Bgz6UxLZnU+2wNkuCs2rVqUdAK2YizK0jYrcxF//WWg=","tJSPx32pk/5gaiK/zLlm0tmGJZ0griVVkRQhCXyG6D0=","F85PYagBuiGH2OzsKw+oUTkPEY2UUyqsEljo2bAQlQ0=","Q+NhwTBk0bkUQbefWkggpaP+YYgpsA8W4xuEuQBgBGc=","jBkr0ZT0hON+Qq/FHQQf7F1l5KC4BIDn195x/fu/f/A=","O/BvL54qQsIupsW6IldFfMybiHSfO6O+WjUgluk4OFc=","Zqdz2QqRewfS9JFiP/6RtqJurOiMmoH5EZCIe2XyJ/g=","lq2VEdz2unaNZ4Xc+MPnemsupooi2D85GhIF0GJK0kc=","1lJ8Mt8BCC0A2Z//TfHd50INf0nwcYFjFlTmt9Q7gB0=","kgE4lR/QDpLmeMrUErdCkIcTKWNClfRAzLvCY0OO/OU=","b+fbnQHEaFCsMGvN5pqQZjcF78YXQ+cei0fMQtNJN5A=","S1Q/kCDMGc0lOyhhv1+t9+bIRzWoj0JKuYXPjM6T5UM=","VcaieyXBD5Eu6ss9tJ4nD31F+yLrzbgP+z68Y8FD2bE=","4dxtnn6gHP2ueuIRGENiPP+C965m36QQugqRnPl5JBU=","L4ns4vZfM4hs7v8Y+iveyuRXH3MUUE0y5abh0iPk+CA=","O5RVtB8A2BLetYZa2G1O11pEOYa8NGZ+slJGuZxZ6ys=","XDz2MvbJTu9aanhWMcDUQCJFsxjFrQN8klJQxRPFKcM=","X3jC+XwIfO74fgW3gcsP0FFa46q791pvdJ89wxcEOuU=","L0bXYulLb7UHNtC3f3KNO0bT6v+5+MGi7rEC9ISwAUE=","r0+b37w0nRQr8/B2ppAQmZUeFXTIAWLLUAShNWUflwA=","UnLsH8a9oYwMN+gj1AO11Jz0QWsNmh4RvcnDV9PMpxc=","JRQI56B8JHLHnK/iN2Et2u0wNE7dswVXFCys4I5jNnc=","Qf/kPPwXm4cPhTIVL6BBFJl1M1UaRf+6lOWzQtwLdgU=","XNAN44NKU41OmJegu7G2MFccTyNt0g8yvW2IHRRQka0=","zLWuw1W12eoktQfsw61AdtWXwkRCYbQHIiNbbwTuBYI=","jCXA+QhOLwpbdC9F8IWZJzybGt8Vq2govi8kPlsiNEQ=","5JwjlB3npvOC1b4uuu/1Mv5qfpOeizP+IL8Zx+/qmiA=","GFLCo35nQUhJufK14NohSxjgsYLJjqCGdwDmpMUgFOY=","+51SpDHJduuJh6bSmhkloxnMu0WGrhYqeAUPFqzrQLU=","NAWy8z/2Tx9ZXQZxc7G3j5YRDzXBmgcQT4oJstdtbOw=","gTkvgGFU6VrFPneD9LYwOkwHPDfz2L/TKdohn5nbbyI=","ZgFzI7wKsI4KNf86iXTNFudKc89C5BzQwakECObQDDc=","Q4XDt7RbyxFVKw4pBbC3gv85+GFApgAokXTV2Pa5wfA=","CGA0uSBedaMw3ZpcLjK7KrAa8CTm4NeThFFltLrttS0=","9JV/1eDgNaQTSQBFbI0jnmtY9Oa9HknRZ+/zJOWq6w0=","uOlDvaewvPjKQwEJYaCDoIqd8/wqs/mxUKUCkB6rItw=","ukjYEl43X34MDI+zrJYZm7QRVnSXH9L88Pn0iGh1jzc=","lBF9Dt5/Hz3LkJ5SnCO9EwYcrZmq67p6koIRLWJvXVY=","EmT1Nbe1taFU7bPcW/4ZuUiZm2UcaMSe5rsNSlbbx9k=","Qajy9ALAIGC5GNS3KomaqxT7uPWwTDFF2o05QhYti7k=","WsA1GR3JeQmexBk4e6zf3RgS9YMAClwlCQKiJ1MeY8g=","potW/yMjjyaPpCgbTJokhu5dxB4yBUPXKhrLdsssnF8=","kWEE0ApExx1ooS65761YjAz7hfAXVaHdOWkuEbdkR9s=","pZ+dW3tkUV3aHV6EgnJgjJY3AuRzY45kgPM5oGju+dk=","qhCcVI7gc3kZMrRmFZKu5e/1qYKOUwqpiSCeRKvfXDQ=","LdIYZw8DZFRI6QwLYVyDc4etm+MCAQN3AlfdKevO8kQ=","oTKbaoudmKSfOeftGqhlLy3ElJ1kMYqzsy+jbci0Yhc=","7Ffvd1W3h7DlqgZzFZg4uDzJ1CNghedw3jYOrvgzw8M=","bODUgzgk7COr714RjHMsx1XiowwbOoHkb2/SJGYD0Zo=","A1cl1WupNYdqyfYx8Ts6V8BDuvgFFkiuHe/ZDI8jCiY=","UUZZDgsSOW/LrPGgxR+ieLlWw/dBqkbkOsWCIRxlKLw=","pGQJmqQDDh4Q3MIW8aZVF/LaCPR/ptqr2/XhNb7S3vM=","ovLciN4FMsIlwbjWjqAquw1HwuDqO6D5S9Ky43Z7GNs=","+r/9p5GWqqO4wNtwX6wRBOL1chLm19KFPfqBUuGS9b0=","P8q+4daco/rehyEGTSDKEp+K82fm4j89nureOKRpmD0=","BQyJHzvut8WW4DDPdhFjk8kBBtavaEJRR3Gt0oYsBxs=","UrPQPtn2b8R3lmHgvZdUhh2RJXxWl8tsIuimoTOqieg=","vlgKD7iQdT+0CWDf055sn+AUF90QnxpwhW1UPtIzahg=","tS4r3UPVU2zSLA2WkcpEju0+CqX4IRvi5YJUuJ/HtEY=","lhn/CJA34aZUL7WAMyuYc6rsjzs5+0/O89zC1qjkseg=","5n3CwWngjcnZjQaTuTzjGRW41QjUqk7OOIGHwn781XU=","IJRIc2YtLLVaqA35lInuikC4ioKiSKdy4m0PAEW6dH0=","q34IsBHTx3RJwL4w4NNPaN756UMD//8DyQ89l/5CeGY=","KoExeaS246nRgQOgMqPFdICV5jpynsVj2Fyinmwi8hQ=","rNUIBsbr+dYzky0awgbVxYJnSmyp0Qj9Ibsek4jVXM8=","+bBqLbtXB4VzdHE/7oVosQ7JahkQ6GPAOCzpJFGYnJI=","Uy7LihJwK2Ve1puowr5E9eYiAa95sJ416+DSRSzjq/4=","Yt6Qpgw43No1n67HpiRU8tNnLh7u5cO4oefXzqFRXWY=","k4ctx07l6DXHl5IbbildmAwTY7nSq0TS1n4msVn5CEA=","xVKIOfypbNtMHb/FlB/OlmQYhAsxL38dKJimQy78F2s=","YaUJNU0bhYvZeuhlFkg1HiAQ7Xo2dkfqYbvrPmWrrWM=","lRHa2g8Vmapkqgy/0CroqdRlx30qXg2j7kpMCVvXvGQ=","fPBMe0P6F3gTvUKtu45jp3amQjyNeCT20W/7DQKQxxM=","yKTqrkAwxfZEiO0saNcj2msT0nJTGGaxwuJVbxC3RF0=","25DqSAWmL7o7nxyypil6G4DJT0nB/kG+NlLTKIaGJSY=","cWE8qeCWXL3okMdrV/ibI0Gsgjbgd8WZcXs0qY0iE3I=","KoDCRbxkyWrLzOcsUsFygUZTzrOeLPGvFFSc8SPe8qU=","NfFNPCYE0D+N/kfmYw2wnmbzI90335GKUeIMvE6GBmQ=","AmFJF6ULWjxcNgKPCXiUySnE/f0WZFVl3t6YT4KlMZQ=","84rieHrs5YiC3VIzae4KI6aQjcMAGTrGj7j2Hvol9uo=","Vq+Yy8VJ+q79EC4yIcBHmeQud0tH/K6MWnYbfCw1nCY=","hbRiRgASJEIMznCR4vTliYcmCc1cTM1ENSejS2w2TxE=","kFNOeX4GOJupWhm4JcLRQZyXjmiS9aQL2tSyS4hZsIw=","EHCHOF1Fflfp4FwPh89lQfDiQ3z1WKXAGgmfnyof33g=","oY52VRgVVq5ibVJPVhuLAS1Dp+i3kDPqYWUd8n+5lNI=","omzHw6euS0Ys1ikfV6+9bTYUsEsAC9DBk1cmRgORZ/4=","Y7MGHXn2VsBIg3dPh7N2wuQXbY1narAZx6HP+3VIdGU=","SIADoRLdblIzY06X5y9uK8/zw5xumN26KKyovYNv9+Y=","hhbGOgKj5XSmLJcQ8KNyi5O7nGXOykHkcH3lT5EFgW4=","1zlxYTf7sR6tZmFu4jk1jqNfnDImBia6J1dQc44g2ls=","nh3SWWhNY7ijh1vteMYxin2wDPTYP9qi5PljDN7nftU=","B2PrDYxY0/Jl9fRpatkULf2qQk2WjsN02fQDyGfMWzY=","nBGjxXStr2mFYQEi3cT5TBsVh6kmbKbGI+Fq5CCke5M=","As1DMuuuik9wcXq2w0z80FewRo8phv/PC4JphaBWaI4=","+PRC1MkBfB4E93PQFpGfmTzhIwpIglyVIkV5OI4eFXc=","s/6Zzh3kl/WdPLxNvo3guR3uYqsngJhaZ1K/CbczPVk=","OM9Lyj+2/WHzfhNBK1HftQvdTEx6yOu5DaduB5Yf8sU=","i8uThJRcVE6UPDG3d9tfy9LEY/JHWHtoVcuGRjLEhg8=","TKwk5PmfCHflLI/WXcH7WU1dtfvkMfE/XVzXwVL+/gs=","xdXiIFtCXct6FVhLwuCj2OMlLq1opWE79IwosSnAj7k=","P+c6hUTr3LCmwVyeDo6dn1ZUmnuwHhhgPZ9vhNV05yU=","VbhhuCvhOZHC8mZq9aJ0gs4Y1nsbIMW3ulM1xkzWQ8k=","lrMrS67FqLXyNl/NX+3mTnfFYrobZbY7Wlz7krenlAU=","a+Q61L8ZS9n9OLBzvSc4YgCPMY9CgyMe8jRT39HVV74=","BKoRvHWpAI9JwjHeof+dn1Z6IdUQNS320tmDqulYsRQ=","Nkq8OiDa2ipsrfDaH+SDIkliu6CYx2apJOqEFFGQ5Yw=","+bYV0OXL/KHB5P3i6ipyvEyUL3O7OoyFAyuE2ZPu8CY=","x6l/Wd1J3nYzlyxXsGwLnqplDBr4G/OsQuJkZ03k8Og=","rzihvEcoOg5XYeJQy2QqWu+h0XM5GgHvnlS5K482fM0=","H/7bJVF8/YqRGBlRpc3DNVl4gZDUsX6GtdU1Okh52Yw=","TcsupGGNnIwbInkikbSE8pUfVtFPgy4J++5XJEmCna0=","ZE+DCdQqY0GHVhrlHT3z5Ry5CyLsuX2DikIrjLHRT5g=","tyrNpbo8bBBMFvYc+2G/rWfiekPEH5nUY9trMeHzCTA=","BVDtYpa+369kNYZFGTlKz5gLQttsuU4dhyCnxHVG5Og=","wOEJIAvYgZgs9cf8SW/jHOOIKz+sTBxaej6wJp+Idpg=","yHDxpYlE6raUt/X5mjczpTG4k5XKLnYWwAmFQ+3O8uI=","CbDGjrbJqXHod/O2Q/q8vnlbR0w8Ur1fOcMxAu8o6Ks=","DcoULJRg0sdj4E78pvWH1KGxQd510rNuY/sbuL6JeHQ=","luINmJq9wAeaf3TH+4JGleCknrN8V/WUbhOhP2Ka+Lk=","hV1Twt2TUONGD0QctAX4Yt+9scZQqDUEujcyoG3iXyo=","h4fyUMVzOvq/sZthplTEfFNaTGCtQe2AZU4kG2Dll3M=","z8rwjcwFt0lueRWPLbAMumEhLhGjuTZQtXX1esgOdNo=","q8j2uYezuA0/Rj3clFprQTv07ogDdbBLEXNZY2QkEFM=","ebQAek3m8666P12luNUVx8Kr7hNEOU1NeqmDCXHmxTA=","ATyJQEPi6v9NqoOXqLFQXTiix7QMx8MzTA6L+Ilgm2k=","X40nmEHxbh5xuwVTty64Nfl1zt6NmjDuUnEGthZbaBU=","rf30XzokNb3cfi8sx5q1VGtfFE5BD94+S1Mwnuwh824=","19yYSi7XdOvo6Yr+FN9N0oK/1as/wJmzOKfNUuEaS5w=","oL/ZFCNt/sbMBeR/CNWE3Yh0OXsxVKDhGxMoW1x0GWc=","nFACj7Cpj8X5sQYGPgbSFMv/iIceFPADLigVN+fXaho=","F/ggOnKIHAAiqKOLsmLKovLJkBW5gYez45yQxda8gas=","ZUrgT501f1Bb3Y9FeW2RyYzWAH4MTEx+HKQuoNX1M6s=","1O6+7rSATz7yFhCxuJOEUMR4zzt1Cc9q2swixcBpees=","JL+zKOK18YzgT3IHlqW5YTG5rT2M+Jf/JwvahjmTtps=","1SruAjiA3QYqUEoeciyGTMZzX+RkF29Vp4apLvtN5qE=","AMmfjM41x+osYdH5uF9hD32L6O3Tv4zwLIVtBIShBd8=","SZVyefbrmeDqCSFRJfQjLabPL+ybXiOCr0XT/VXmlRs=","PjGooo6FHkkHRiPRA5DAVth1qL7WJU1qqy5Q3BmwpQE=","jVuqaRZEnZ1ynLy1vIiw+L+oy5QhzRCOdBAVM+KTc+o=","Jwz+mybtq9resshSpNPb3ycTyheuvGd5pC78c6yT7mA=","Pqm6v3FP+kxXWJ5z75I7h7LwyVh3zrBDEZswfUiMj2g=","duIDRtpOl8d3LoGtL76tV8G9H9asdXLakyUQkn422NM=","5d3VpdipWsk7UV4eysISvHT26gQ2oNI9epbK0AdWBl8=","iLznIis1v1Eg7EqhrdSaB4BV8hCFkGeTlSNHopXKjV4=","7RWVDEmjeF2VN4v885kYW/irZV+Rk9ITg8oSMuT719c=","Tw36toyLe1SWew9uLhwGEDgtVR00rfKGkH3HGG0y7yk=","7gga+q2xFsffUXEIOCaYllZJK7tqhyHuX+DZZPibjIo=","0dqM5Xwbd5NYYYTkwx/NqOs3j1PmkbQ7R27aVbzcArc=","KjPqljHpG0LPpqNICP8Uq7rEGTEm1oT/I7Thtduzw7w=","9yAgyXJFgbdFaOzy5FNLTiw5ycNUJ4/Jn6EG55YBUqY=","/B4YhSTOClJsgkUSwS2XV9WgyjgvI9PDdXxeABXGUb4=","sNQCAo/2hazZerXiiOnqEAbHHXYUB2YfQfNJoGX84Gg=","Rs0o+dYJ+JGoD7GZJZ41qA3EmwigkI3wP1jqQzEvC1o=","rBpmKwcOsgJsOVMZ7zWAuHg0fZwjkg6saVofC/qLo4Y=","xXhXx33qVXESTX2FDl0uiWyXhL4iW+vI7u3EVjNIqlk=","ZOzpy5eXKnl1Sf+uUrpoFRfq2Pa/6X4TgDWhDyPshwg=","yHt0RAHpjiCh2K4kgA7y+/RUDp0Soahx1Z91IWhC1bM=","q1g8cs0UWZkeUxlxmysuNRgbmDhO4ABVYyhUsmbVbSw=","wVIr/8hkZd9B2mr8cw/k6CDIjiKqDkiQmBdI/6Ml57M=","FDnO4uSGHlqNHMkwrH3bq/k58wRoADYB/ohO66pples=","T9r0Wpk8Ux2tq3ZIOhDI/BdwD8yv0D5PMNsnlqOITJY=","iKU/AT1z7foCxwol/4uMjyG4R/sjKoSzAQU2F042GZI=","MlmrVBgSIjeq5CjTxNh+JGEsyWI1Etz8p6fBBwVJhiQ=","8hHWwSkB3jZWG+hf85Vf7F9Q14r1EM1teh8nBxYEVhw=","Cq2Y0Qmt3ecZmgF6O9k961za7yxz5jLeP2Qj5Bmd7A4=","S/Rrg8P3ivwdn5j+8T1tV+Gf7omJXoioVPWr450UWdY=","Bjcy7OfzdYtrHg7HvpTIXBSk6w2ee6ANeaqsWU0dNbs=","qykZyNC9+IlMe57+t9ZtP017H9UYAYCt75epdNvFd2I=","lDaNDWO0xPQBIKnyPqznYAyH6zHdK8/ASMJuKIUUHY0=","LbM+UbL0GmJxr/wH9SGlWupbWDzeaDVfIluQxbRH6oY=","xW/tEIvwMxL1/gWmkkFEwC/iBagRoIY2eSkI+vp5bgY=","T29KqZFgkwXeE/aAnT2DlJ65g1iwkgF9z3Oqfk+2xD0=","8Ui/gFBwwssXadgkwA+9KuojOAqQNxsl2PHcwWpcRbQ=","x5U5QaIcvl3/EMVNPuFfpEB5wK/cbi8HgZ58Efb7QfM=","f2fetczKbNUEFAlLyJG3VpUJUJaYWcPnyRyfosMH4pw=","/5KpCTcCiTSIwteF0iZGhiSqd8wqXg6rCXgmY/tnh38=","859YlfXrAM9MiDwLtLgic+pVXIHBVlyqs10MIYU6x0Y=","idW5MBiYIFynDSuZUQX9q8P17m81GPPU+XkXQjaQeTs=","9AnEmI2sKgV30zlBJdFZY1NP2QZaamCvh7Xw4pM3Ma4=","Xay6tZAcYOmI81XC7WcngzUN8d9GQGikvVy3SbA6Cq4=","2NdxKsK5JwbNqgexEeW0y8Mn+ApqDld0NENy6llsjig=","4emy1CsdDFVyZtVoLgvtl93j1N2dsgS8o9aR0lOzh/o=","+MGq/QE/nCuN90X8j9y2+Fw34KV/HSRJBT/lgf7xm7U=","v+KNE9HB0DJm7o5w8A/4Wgr/P6fvP757HYW5Ryd97WM=","Ft5ofycF69ACcsWAzqjTFo5m+AOmsXcdQYIQJf9Ahzk=","G/g3kc+6BYqWMYpbcG8fa1Jg6daNPAL8gW6J9bWv2Ow=","meuD9ivXqB5VOIaBA1o1ROJT3Wfiqo53X5TusqXMLlA=","31jjC8pAw9EKa39z3w0B1LVMyqi9r8qeAcWhriSopQE=","+Nd2pYIBTITpOGXV3YqpMG0oMMEiDvoT0WSiESLn9vw=","wXTsXLGRLbprfZ9GUw6gvd++jhOfhcyefVFkUE3262E=","jyXJu5+AX+/IDeRWF5rhOrpbxhXPrHVQgk+2xU459cc=","DdL+CXjpCkSkCs/iEKL9D2bSRDVYvqeHVXLmLzr7/GI=","yPmMGYjRbGX5xzGNtdPKkPDncoW6S4R75GPyQ+QL6nc=","zGpQIrLGaFuIg0UakKnV/uN3iCDzmmxZDY8NVguCxAA=","KFO6Al2iTGPoPmYrSNEetcyIlRXhMqIfB+T6zk4ceqg=","LygmxRuojX+rtduV8uycvgeJeY3dRAtT+Z91rfif3Mo=","LIuY014aevyPHtLLBCamaOkTZXsO79A5lfDpNJkYrPQ=","oH1IOwYuyYBCz99EXTGNZ0MEq4TVNPzmb1ceZKJKzok=","SmIRaU+QVQbt+Bz9DSsFZIWNCtnsf9k4OIqCmi+hYHY=","3S20ZVAJCAblNfsf+L3/xiH32awMJO/VINgfBOjixuQ=","85Jow/2YugrDI3scmLrq2jXByPhSu6UKeYMNbzKvw2U=","HyaKMaHU4tWKa+ZUodqwQVN3TBFuV+UHnqpgO6plaJM=","B97z3hGF9DIfaiDkqKBlr5BKxKIQYqsooZUGtRGDR1I=","W+dMKPy/XMNVTwLdWNmWzoRCY/hZHm+hnZIYtwSBHiI=","5TUqAZ/RkXIDmnVGTLljLr3g2xOU+eYPNghFa6BbEtM=","94TmdqffXxonpWVUuF9Yux3X7LBiOeoZT8tlbegrN6k=","BpJbLkoIWBXjTiTG/Tbbl1NRRGcQpfyYfm0nwh8wI04=","Xolt45qDlSNsPSuhL8T65ipwX/iVFflWg39oFlCWlE0=","s9PyjXoif2iyB++pkbnEWSL3aeJYyPmwXFdjUtWmvBc=","hXS97MWQFhNCLidkXZiUqFVSK+Izh3iyzi9Ue9ii8Xc=","O1BLUuxED3vog2C2TCvSQ482Dij4b0R1v+ZZT+knpd0=","pZSyYN9M2czemKGJlJfe8aTx5F2hi2ROc5LlzDKOgbw=","MYszCy8vLINaoEnB2oE9zoJfHThgmbLN82KY9AjstaU=","lp0TIulh56x5aUohH1gQgzcQi4Qb7M6Lp13ZfpKwr+I=","g+DGThmMPAbwFzvzyU2YLu0td6sQFnSnFJNZrrbD/EU=","iecwaqmp5LxgkQtEXhYeluukckPhrG0NM7URDeVwy7U=","Svn7TInGn1kmhgthkqdho3+S80ylryYaVxBSZDjcbwA=","7flWg3BXvDqi/+Fxja5FVcqXPhCnJ00EUfBXgS/tPOs=","tj+75ekEpyNR0fNt4NuTrmwlkZzTJvjX6zwIIXWkhdw=","6AksiFGpKxSEt3qwyLrXsz9lWG+MGtwtFURP5Tk5dvg=","Gkp5ZzHFjjuz3B/iROSkAWXQNxiUCk3yNBCwwQHabf8=","qfrKAAHY31oGLhX4lj70Rti/tRNQ54wqbyxqlyeCsCk=","23ef8I0CmhWsmI4Ef1CJaf/1VLhEfgvAiDSoNUpeJTk=","ZySmpY9vgTDX70GONSYzkLO1kjoJ/T4PM3BzQFNPMMA=","rhMwjM8qKOQ94oBrl55r0Bl4Ofi27PXzJD0EUlHd2bo=","4GDwh/tTgwuZiDb3MpZWsJySC4XR9xOZx9HQCvrst5M=","w3UrSZol9NNoZ14K+KMKsScHvGkWRZ488rXP2DaVRh0=","khPD43W+5uFE4+So/OVb0rAcKoKw/I4eLDo5Fwz/6y8=","bxquephNS+6Yo32GZjbjDMdVe7j956eRFrPiCFSk8eQ=","oK6qlYtA6momA1nlBgtBNJC8zu/l9ZMrUm2tvoHPBGY=","mx1FfwG1F/jGhwXiqmFW4GbRfukDchnQzxV6c+2ylyk=","vuUWZmAtkuZX6YGiBufFG/tBwrerMQ6BsQ1oNyyOSkg=","gwc1Ndk0cCf2agtbTUwko+gONfq+JkGeiUoxSfmDRVs=","yvnClivu6w7X7P68RUFwiHi6K1kaxKJmWTeMmZtyINs=","m6d2/Skw4QKVXnKUt2P2u7nRC1FyrYs1mnMBVPxmV9g=","LZIh6BCkLa3Yhkkv/XXpnW0W2MBAeniBVk133HN4vhQ=","85MdZlOazXbYE53v5E/9l9UbRF/5gqnok7R7STgLpLA=","rKCcurc5rZv2j1xD/zbOW67msID9T7NGUJQ4pNwluso=","U1UhuIYnD0RX+Y5iUKckySo2Yslj9ZTxL01OYcL0lr8=","0zO7jQXrd5bsh0LnKdKQswV8BbWomPqX7UOWY1cbFPc=","/rbAUt7mylM/h3Bdkdw10mdV4USx3cGJpzk536tadwE=","KLq0swKFIJJP5QlreRVLi8RnDIZUu3hHV4h2K1qgECc=","bkZ69FkcdscROjFFiOakFm8XJBiWPeNKJeQl1sPy+B0=","4MF8OWbk16XjHf6BoRPmgw9Wa1SdJrieYtw4x4mIQTc=","GIN+/9yWbYw453hb9RFA6onQhCbwWzHy7xcBlS4HzK0=","CbGJ7gajrFWVw9AHTVe3QPh4hDEPWkZ7T1PG6Kk/B2Q=","rbQVXh3bEjL+qB4UY+QtcTBpJbPij3St+xTI4GCtLVo=","zdHI0egWSP2dqRI5bp4oiC8g/947vqsIF4JoGSHBt7g=","GcECFljCbruFjqBdscVw0KNfGxPRAZxrkh/80MFrwLk=","htDIXmAEEhNCEPB1i9il9wJtIGy1PCi0FBZ/gWELw90=","RGy84mKHGlWmeWjtJMc9Sk2N6t/r/B0QdN/WtWqJDfU=","Yx29pL7oo9Wh6T+AwyHu0L1PjmZAADMgctuDDcGBRKA=","Ph0yUZqbkjbsiuzzdbHrMRUTU7yZMOSzIc8rFslDJdc=","qQGYO2NO1/sPlaiObHTcMlyyYO0vRvc2QaoNZDamRmM=","3nrHKWuPK3Q4lri/qIkbVSBxXeeX6sxUxYkKcx8plmo=","+qgj88ULWR79wSikSyLkttxwapVDfICsCnSp3TMMIWI=","fHBTcjoucQJSFHVCmpg3QeN0fZmG6pC/91TLcocKAYI=","9otjRDsGCRCcOMZGAbjbEse4p9xfKWZlZdAJeJ97kjQ=","wDBAnDASlYnsHaMDG2bQg8tu5Ost6pCQOuxTmtCVBF4=","3K8EPvlHZmfwiwlsMcxV4poNXdOPcnBB38LgqKSxHGQ=","9ULiIWcKyRTgLDcK5vTEp1iI5ERlD/YLiULcx0e0JeI=","PW5OjaniqEU450swY3g60dpZxZYmKW1R+lwOkBYAt4s=","8PynEGASWBT3FEsTTuW1V+fCYJbn/8dhDugEW/Cr2bU=","LUkiZPwjYdEahBo6ShOphIOqQrvDs0MPbQ0Rt4ZZneM=","blZlVFwoURFd1w6pY5Zi0iZrrda8A2zNtXD4mGH8b9s=","SZXKZrHZbe0Yd6lep66Z7wBM/FAt46PlOR3qWrlpu6o=","MaIzFdU52owgliu7icc3IuPPnGh2hESS6DUhljbGN8o=","+SrObUCdl/GYrqg6+KdZkYw5RgUeh+4xQFeplcVGVFI=","oPIArbXnnmo4A11SlKvlOzPMO6rQ/T2l/h6ym0Vc5Kg=","VhAtawJJGKR215mZtzKweuCNETtm2Nnp6NPhCef9oEg=","ykTZ99GLKzNFUIL0Y6muqpbIKBFvUg8ia83kFof8j6o=","XNtzTAiK/TrWAoT48d1V69JGbWgUe4ReHL21VNN5xAI=","r6wxMkK5Xv3pwJ6dsZnjG90Oj1QJLZGw9euGL8xVv8s=","nELqN+ShyNaaFNtazi6YIuz1aF/g/w1l8x/soUdUB4o=","8yOyL8dxqN/2yl6cVUz1rlNRl+TfKet0BGnfk6AWj8Q=","LrA7VAXb9ttR78ku5aKRT7JY015UrxJCybLpq904E5k=","ZrZamOozr22Wc0w6+++db8XsDf5ZnLyb4Kv7VZ3KNj4=","p4j4qB2lAH6b4CF30cXdYQkBO9VoLSMDgYjPVuL8XWY=","NbnDMktSFtQmQXmOxkmC9yrGQ4Hsqldv5jVVGMaRA8U=","kuCaIxvP1TdVKSie+dDuIUA/V1NAFD2+Dp6lnK+oR88=","rqlXnSz+X+GjYYxkrTUR6NyTrv0IvLn5xfSqmtBgE3U=","FX84SaYMtVw4aWsKYQ2o0ai2cwniya9c69gqxAEf3fk=","pv8qqnqN8705+rw//X09k5Py4BDBd6luFepU0wyics0=","aLrhU6zZ2tfMRChnzUVPmabzE02mj/Wcx5enb/hrEEs=","DELoo5UwfzPYpnYgtt7CyojGfQvHuv8MQm4DocxqMlA=","qHHlEY9mGq0yWsdF1bUOhMUZSulD5/MbQHMETFQv0Rc=","TAXu3SO311I7mQSgeKqAPDffhbMCjNnoTPR0TaTSPVA=","fi2ZN5an30iKEwZm5/61UdzF7hDrwvYwql2nP/p3QUI=","pE6u/r9OYufoWbvr7n1hXXkj09d3Ufeq6bYklg3qfXk=","6C7BJaqzzUY6AhcZ2yxOVOgCQQPIqDhT2WTPnOa3v8c=","nmpLZZWTWKJiYt+vf2fayh7Qk94i53Jg6tg03MWNYkc=","UEyq9Mgem0zCEwehnPHDw1S7pdAYYmOqctBeA6WQCeM=","bBadxOVMiJBhV6IxLTc0wCjSsbC9oAuCvfhI/oE/nME=","GpQrPZn8jFqRHbW5iBi43ZKMRraoJ1bnWuqv2j4U9ug=","nSVnCPxgvXihpNCI7z4bkyXcYOX7Kv6ePCbClTkCJyk=","kNHqjAMrNVzK2pXXDh5aMAhaInni+7jNl+LMyexfZUA=","GXyeao4+qWh6B7QnUdMkAk6DyJavFYel9j7xD23I6xQ=","I30UllbsV9WoSwaQVz8yXqsnX2859jT1geQxtxA2BMs=","tog41i8SVg2gCWLjYlq1c1fh/MOH1AQBO2FnP0fpdCM=","Z4tqXEJTCtiCW/yJqEAPurvJ3E7tDZezfI2Sc1haDVk=","boBAmVe98brSuzygVlIEByeTuCRFvdIfH9b7RsAnmYs=","Iy/v7aS15GfdqXUSWEra5MWB97KwYHjpESzkQwBMKzA=","yMSUon5HD5TgCy4eIoIbPX9spN+wp42A35wFnc4rx90=","DoU/wz2iTtvPgFEsPF/8W9MlDkTyO10OQALsdiCBOhA=","oeSQ3HiEH4nfiJ9V7W6WHjOaPz7FfFkIgj3VNdU6xBI=","tAjDqEvSSNI8AD6B9rCFUgdSHoUbk/NiDVv0jQzBF7U=","DQXCdq0I9wFrO7maZLa24kzCX1y+SBO7lcR1bwriNSo=","Cmt+I9qRUnU8bZs/r2eyM/L6OgfQlRmAgpiECe8h8rA=","Ochz7XsGbSOxzyAbgprzASZMeVVajqhjz6W6zOIiU5s=","xkkKqqUo8LB0wR1hUqnJi92zgTmijx90KaxQF2bJ3TI=","7NAiylsurPz3mXptpu3g5VAhjHfGx66IVwwxhD/HQug=","ETfHXx0MttMgutMnVd0whh8fLLz3W/qn0qA/6Hxk194=","MGfUJMWtBAsqXbwOsMzu9FkvV3mKvzYrsb2tpGb9Kqg=","ktdqeB+WNd77Dx0XlZeN+zNSnQtmG0/FfxJbDTsR09o=","Dci2q7ptmdQIP54WGX+bnSNVBJb15V2SBDMMBJwqwh8=","ApnjZusN/zBWAVVCPoEDRRzjtSjO0aHc6mX7lMX3U2A=","IMI4//I4CuRXhjY+XDHW//HXz+oauEJFgdDQw4nxGzQ=","L4YdCtntVxvBozv3TjQvKCoQDTlByB7QoGQzbPJfMXk=","xLJ46IDy053+jvUVYFYpSgJNqlT0KXrTumx5ip9VISw=","zNxV7YfQBvVqzt9JYxBlvWzpyKBY/EH/z0AsVncAZjU=","Su2Ulopype8/GvEAZLb24qJrct+hiFS6IspyqG7tPiI=","rDTw1LM7KrUe91QVcvovnuhI2pfwLBeyVKcfejcdXyc=","ZAVknHW7gyg0UKCq/IsqioLmEDLpG3o49JSEb3XGJgg=","x7wD/nc7IMm+RlYpcaiUFYK44fQVVUprpgaVFi09Ka8=","UBrCIDntBpk3awSK0HWNtbmhljh/A1L1FABzKhRE6S8=","+TrBI89LFZeZESpSBVfPLF9luIhTEZaRYe8SVYFiRhs=","D55Ovy3LcF+wVd+8DBZbfnYTz7IU6kx3Y/lwtsvuu0A=","GFCQYMxYVOX8BM0R42kdlhcYvi5mK8OEapInUkkMGno=","7IQNii5nNjl7MMfpnuTRKKsEU+YGki6Cq4vDKpxA9eQ=","8L790ttJ3x0eSpW7tfxvKuK3YDGRcn+N3Z+ELTG9omU=","7+ANYMWF5GBRgMYw/kqRcbydkWAGQFAAls/n2A+4tBQ=","VVpJ2jNCi7hI7svamaQHBnIyx+LQKw1LrIjFzASpqTY="],"block_size":4096,"path":"js/json/570_schema.json.exclude"},{"block_hashes":["8N1ihAolnaZAhihZhS75EkUTa0moAndOcEi0kQ3r09Q=","I6NmHaKLIZgPMbwm2H3sdoeW7Y3ipypcOZvrP4JHJAs=","1V/Y0MKtSj4dhnD76gsktBzoOjgGU5CmzToz/gZ5118="],"block_size":4096,"path":"js/json/730.json.exclude"},{"block_hashes":["q6O7UdcCIIOYyjXpvKpzqFLYwf5jQY9gJuyXtVCMWZ0="],"block_size":4096,"path":"js/json/PredefinedButtons.json"},{"block_hashes":["90fz4lktHIwuDvgxpPMhOojQcS0eaCxmZ4Sob8PDJ9I=","10g8+mG1XsGIA7zs0bc9VGugzEG05mn50qUM+kuUE3E=","7UE4emQ8nOqBnywLARdmnen9Ck5G7zA2avyKpiX0Un8=","sjBNfrdIKlSWnY97HwWVMoe1C9zqXC3oCvq9IDeYcSs=","LFUE5/Y6iHm8fMlj52/Mw/5nHUkNkuvDD7PG6RFfiig=","u8qZNRR2Cg6IVL/L48KvBq8lte9GHtl2FqLd+NpggA8=","BEs5blc+L3G5Eo9nMCYBoAutXLovaJ2ThrQzLYAX6Kw=","xXREt8sNEKdzCGeaHFovKaWdz+PfDKMyHa+SLkDaHDo=","pngFE+u02cE5+BfjzMxf5i0ZDnJCzrd4/jaydRTJmV8=","JdpXfF+8ojsQstbFoF02sGGEqt9+LCUsYWVMuki7qyI=","TmelGHzEPutPsjfxG/hyH1fOb70/58YZ+HDyeWgvXbA=","Pt6gUnWf7WXCYj5KihkymLsDXhdeotkZHcdIZxBpl90=","l15/SL8gsMDE7aGRfoiBSOE1YudfaXPDxJiVhE/80bA=","SLjp3IBdYEK+HOb4H1lMfkR3sSviCiLOeQzlUQf/IJg=","dJ9zZlEMsvqldDFsOMg8lxhpXgthf8AIS+aGQI9wTzU=","qYbBstoEzHIESXYNLJhK42YYdBFQUlLsWR86i6jDZ+g=","XLNPJwITlMQawZIaYwJaJ2/YhTp/881PPedzBBAWKb0=","vE1iDZd7GddTm0EgvU9oDJ0Fzn6yBRqsRTYTOaItNAI=","BPkSTWb8BmUaCtCMbHGeU6Ti1Qy+w0eqDzMH02RceCo=","lUQ2ZlBXSnAKhb/jX6bSRtD2xp4KfA518EGLfJLbRKA=","aDjctc4JD2doqiYIOV4bcRVw115/6jxKXzZVLtbyBSs=","oE5AtheWUtc+l4CbgUN0WBT1ebeLCMGTx1GdG0sks84=","qM8hodeudSPETm7+pOK7apEc5KqSMXvtFt3QZgjv1/c=","xb4E5Yw+48YbEgvHUBpybEcS879miqKWqXQtlf/GHZ0=","fBgIaMjM/nqGEvUKFLkfHj+q+3YSR+EhZo46cwjbY/g=","719LOHElbcU+LMIrzq13P5koJdod1gmfiveqtDWsoUA=","cfUWXgYDdklr0eZGk6nD4NmoSy+ujgyhGiUvedi9hjg=","y9tqHx23RB5ITPFdI+i05Hu8DLG60lnoAbsRWKKSUEk=","+qdJFUB+hn5uMwVq93dFmlLLsBplZcfM3ghLRClvD58=","PIjQLHCuapq/zRozcfuDwNbYtwfYt31S7v8CUUprXA8=","yeJK1R29Pf1J5YvYLPBO4251Cp9ea5wQP0mXOToIJWI=","wuMkDy3pZpQQzLK5g/6hvrXMAO1wGiZsPZK993PL+Pc=","Gv5vOa9cqIUrWBUGQXhYmj7PbWzWxlQtp4sgGOtr+vo=","QDCgweFY3+kSqAZoBzZfcVlpYmR1nlpTSpL+cNAxdsA=","EPFiX/MADLwTt89EPGfrL7mSDHhniIShEC33yzyAtZ0=","52Yh9YJIjiEgk5ENIKVRSa0I67tS70WlGhMlSv7Vjac=","ohgEPcKkkcjfLKuEZ1iTbH+0mc+D2cg9P9nt2U/ms0I=","0f5JK8NDPiXNDnyUC4IY16Mvs+U6mqz3oQ+yLi8E8zw=","gDqk2gRIfI5pDC5gCDqbMjtTYwHN/8DzGTxFuheuw70=","rhwJCj8E5QaNgg8xnUpXuDuQvkn8hoTgScswtG24/uw=","8FAzPGOFzA+H/MckIoz8UC/EsmXuX+/PQE0oho4y5lU=","9MJJQnx0s5YfqiywvBHU+Hkn5foLSrtl/PO8O0zsnxQ=","Z4rssYNCyVGHN49Nuj4qjDdYj85vqdOTAQMPvHyt7mw=","co4xmhPvc7/RocZIeMxzMCgvYuaiPIjvyRb/upiudHE=","2ZRix8wGGHt/ABGM6AHK73Ns4v31Bc1bq75IeDxNOpM=","Rmy/3Vv32vriMRDLOQtyRdQlrMPnAdFvptmOQr5rUzs=","nmuUL3NwjF57eQ2X8qkqIWYmL1onUGvhUZsVrmWRq/0=","a91v51EDu0MEQdZm7RjL0SwGFU8vC9GjbPoKgWQcB9k=","wQu0jqF6fMmnZw+mjVATc7JyPToyhenuZvr3T88idLM=","hMLIOQUxu5K96+U1wqzfEAviL/DBztauHzRcMa5AH5k=","XY5QYWzccJgCkpaVyEBmB8W+YhG/mpD/HO2tyx9HCDA=","0afqilFipQLgw8J4Ny7h03xzkARKTXnUPFNcaIKXQc0=","ek6ivy0H3EPC3VaWGRMQZoM+dxVP5O7kgHd1Q7xl4i4=","6djoBDY5KG/Redu4L8VzWauqBrOuIrMzMVa3lUQ5XXM=","nb1YeMA/yDzFFhSJpOkaNu2XoNuqCI891kquy1sYvx4=","483vMbsYJJFJFGHLyesnlPXbuu/bTA4V2ikzkcVUilo=","b+3JrHSxI4a8Kt2HZW7JLDVMVD8p6mW38id42I8hzvk=","19AOyCwIo7sw07oXzpAON1PapsNZaKd+VmNDbTyr08w=","M0bjIrfvNf1XIdqxpQgBapIpx/QAKOeFTcmfRdWWTPo=","xbA13/e9SyNcOf9DrEmcZTTJ3DPg+XDqoShxlsjwSTY=","QFshMVcESphMM0MF3aAXqQLlO7sZFkgIVywjIEJjVZ0=","zVcvL/ObnVBvPO7ODAlrqTQp8nybtT/x8USFB82WGJE=","G9B9JKC4fm6RkSad5Dc1ffsvef5QMtXfi83ZKpUNYPg=","xQWc/vqf7NxVbBHEKf4ciM6tOsmPt+TuuXDxnpLebeU=","BKIUxR9eWzhB8FJTSVtiFlVhigpWVU7NUbslLEvwsi8=","wFhOCXkVuYXhKa8tM1ENqMP6sSuh/t7xX5vbllDLTws=","DZIfstuLGuY4QDtLEyL/8wcsxwaJkkkNdCoAWb2yVdw=","bJkjZ6jtMKtncvXKx4+G1+TG+hkz0vBlr0DbdWma2Yc=","OwOxIWJbEBBAII3sLY1Zl9hy925jvUyF+ecZiQgZ0Ds=","/yx65bluyJpOSEAE9iUsUgvdQ3K0G8kUnrI7eEwTlgs=","SrUMWO/6wzMUuu/QW7D+nHHtG47WETqQgMsesx38JFk=","aCReMZzdNW6B17fHJ/v/2Ev+HGbMFl6OEyqLYn9rbn0=","+tgwFGy3CWRJaMju3q2vbnKlfQ6ZtdzzqAdUppgjrvw=","hFkbT0ruzNGOgTv4rC/hY7ZvgRR8EYdZs6AzWrCx1fg=","FU4CTJzTCj3JAafb2MHG4WZqOhNYNVC7IKdkKkdHSws=","UwTKANZ5ppWobf7GfhDq6ajM8+gW/EiMA1e2v0nzFl4=","awaT1uFoedbNlnC5NE4F3QrfSxtHhe96POnrx0sG1Uk=","ks9VfXGS2mK3wl5YcDCl2KSCdLing0Xq9cSDnZxlIKM=","MhrqWzI7Rxpa4pDt46EQZFk+CnCREyGBOeup7l1I+2k=","np76seM1o85w6yYSpdnOxZ2dsUwxScIPJ2HqZ65hNvE=","RLXbpKXPjOAu3DOF3FZ1LiYZrJKcb08H411t6Iz9pJM=","vsQdsYlOdR2JTKIo2sDIC3p5bWcy/MLYQdyl0ph0uqM=","o5VYBsJdIb5J8YcP35ik2xEXWSSRBJN8MrjfX8lpViE=","fxIdDtf2oTFSQ+bnD9vZgc2Ph+u5tGSu4wgvHhmOlPE=","EWo68i4VHp9CsgcsCPkIqtPF+7gWWOJ5r/RBUE68kPs=","LQtsOd/cSpJ7N5Az3jhG7sZlhF7Gx51FdBLZlcvactE=","6TRpmCot+ET2DPpx7X8VWQOM357/HeEaZfzHpoEINl0=","VBfLZXbRy3JPFzBU1k4lv3xOsqGcdp4qmwy6HK1YYFg=","DkdmAIu2+OEp/T+SYCxB6pIFDOcnyuKxdX7LlI0f8c4=","7FwcY1LQW41ToO3OdSjMkcGiT4g96sjnJUKtMWMfL00=","ifBcm78UpEWPcDXpa1WWw1ErGXZTXrhlUio7zcgEitY=","PV+Xfuh62+OkX1ncD9eYG8DDGrIFBsPTq/hhAwifk/o=","U/lACyTUEmuAd4W+49Pm6weZqq10Ea5NEgD5Reh+gZY=","WEaqiNxIqCghxpUNroGuG3+CklPZzML0pcVaenUN/0E=","B5CqUiSrYxMejt6DrpmMeiZ3TjADF4piPILLaaHGZlA=","CP09ZLkI0ouEmWkH+wvPmkdzWrhHOFClWdEjv52bMyk=","uOZKsBOKoYhZvZdZz5vhrZnIyx4o2gM7kmz16hl3iQ8=","B2pL5aCjPyeSDMkB0OsLKqxEKrxPK+qfLOczpc9xEtM=","XAeVggKT053Zt5MOiZRlbW64mpqQ0PjyfI1YB5w2W+Y=","h82Yu0kyNIdAlcdVEZh1qAq1ElnHUICxV0vUf2N/RmY=","X7WSAgN0VkRMI2+haaFso+JRXHNwOR4q2RkZywvCTb8=","IWDIQqh8BHV1I41JN6r4z/yMSvSc1OdfmDKwpiiGTxM=","9IOpjfr8q8HF3ytdpXYiTJu/4BSsvm5pT/+gZjHfVvw=","32vM+sx+lCSKd0dO/4D+N/j7lRZsu0z2VYBAZDv4L9U=","30sVOyYlM/c0vEqLAUQb+tqqOIxVc2hcH5l+fwvq4O8=","Hkg4YboHXKWn/DuQiFjBxcxAkg+OILNlNtf0QPjmVmc=","83l9DAYFEJ1UKfTE2l6F1byCOdzN5up/qb5QMbkp6p0=","h2WLJS8T4vK/A9OnTl2wZWoeZfBtwnNU8NkNuyJ0qNk=","b19/zk5za5ghaIzZH27pkJib4AGecnozK9eorJgoGhg=","70phoafKh0QJHcw936kSsBMaj+W0biTnDvosURn+Agc=","CU3ngUQt8NGRU/NPmcZrZ28gjXwTXkBm4PeMf5d6GEg=","l7+M/E8Hrn0rUnSd57Mqwb44uRlY/raD2H2NmEouKwU=","fMd8zVvUD3sskRV5vWeb5F9Kuo+flXsEp2UvLfCoQCI=","R3fk5P/PdRDM51p0UGOyQhoqwJo7tF7NEDjkdVHMlg0=","FLoL2O7O1Yfva+egBNi97m03Wk6E7nY8OATNL5JQNfY=","vm8Edhl0qlyuHo4SsUyj35UsS4dE6vDTFWRZ8PRlvPE=","WdumwHkANpm5TG9eqdUtbYTXkaSIlHGA5A716nJfUwE=","1H6lC8nIibh5FKH/SPmUy0AJS5/vte40faFo4bB9gWA=","CfVMMEQGwbYB5vQeEcsMnEH4PQK01JmbLZOB67PHprk=","QOaRxxJfaBiznX7MwhX1rwXlOspdBFiPDymUTii+s4g=","iQkuxP8nFo/iBjdHl5EEq9zZLGT9b1rWxoLrnzb+nNY=","phV4DKEO/i1XQcyin99I53yzTLoqrOspPgFGxCbsjRA=","Bqa1JoKjAhdv9BdRf/IFv/fro7sIEAYKrSuXO4RLr4I=","4rYJ3AZ0zoR5K69qi79rPpL2z+Ic/QZPCFH0SKedHcc=","4TRDEtmxAYwFPTddcTerdCa/50HNRw43zyF7bJcsN4o=","EraKAGrfX4rx9ZBRQitBZM59qnMgU/mAdjzarx6nwxc=","zk5x73XN6CAbJXdjNfIpw6nZ9lhoNzii+0o47YN7OC4=","hmfrnjDEuU6k2Ng0DASpd7qdjS5UQ3nZwxM4hUJYoTE=","RWgmTu+LiT05g6j7c2pn0fV5Qd26epMBXg1GvrTxE1o=","Up5rduuPlVq8TQKXCEXwFfaGsqeATANvYP/0EQbC7ZU=","dBjW7CMXKF5zR2LSGHlyPSIIL/c9FAavj+YTc8SwWSQ=","oLHwvNBCAoOgEbfUvzYSuKUp2tMAaPWk1PYVm7PFI30=","LBm1XbCNsO2rjA+KpSJLjI7bWx49VKZ+3n3P8OGvuI0=","nX/0lA2lChL2RTkLh1TrWyGF6sC+oFpE/PVYifYF8TU=","/7qU/II8ihOQ2pzyXp6ptG7wk0oYns440ozakmcMQVs=","K/lam5TBUXz9rOkcJXVxHV8m3pcl2Y9LSunlRl96/qo=","QaLmNwekYi9h/B/41tfI3QAxkir+kBxbJfLOX6+Kifw=","98Qq5ra8Qur5Nvc2NxIAMMeXxPa97epiwvkwQ+Eun5I=","4aEHK317P0ce31s87lAB/Teob0v2Ki0RO2p6dX0CW6o=","/jY4XekXGyLEYWdVk+Czz76uyAPPZpHMZ3p8uEnFfLc=","i3geByaUmzeO6xKVfOqTZgpG2LtlRJWlAoQjxp3P6ko=","KHf/Ah041yDQHdFAKwKBAdEWV0ncoaGt4QkujkI7eBI=","5AKHrpqTywcPTxXwHLtDxoGSmrB2QZvt4lF4J66nphE=","BNu4xozjgRFa9iElMTE6iqbH9QppO7IIwCqmSorFNy0=","+8lWCzy2cJW7ntnthfb7+nxTDn7wHBBiN6a7j8ihf+Y=","IZQwubxpbIGiyZEv3j1iX9117noNNQhP9+x6CBo9XBo=","4SoD8TBJWWQwqeJpXB77SjOz6qw7f7gF2wHjzlcGhFA=","J+dU4kDdsxIU3TOZM/0tDEP1K1r3rf/ocvBkeD/lPpQ=","4DHyOxZxC3TbHyqNK121Hp3nNpX+NQ/Wp2nDQ7Cd+M4=","pxO18+WjdnCOcTFAzmjysk0cVSsJXgmUzGrCn10iz5s=","rIL5SGP4vhUrvJ8j+x8EdnLHAmHUNixVTaoI7qYXcvA=","O0g2u75DE9au8o28ZGo4TAvuulYxQXMBljuyX0uP0ks=","zWnMjQ3nDxbc/5sivJMUzCspl1jAbl0NoQCNx1uuO5w=","aNN7ujJ9Afj9f2JxxkKeLEYdgCij73AfQJVoLRygp60=","X4f1StagWRVsRkd8yYqeeN3TcvShmXGACsAERJH1LFU=","W5bBHRoXKVZmuGzyGlVC3lMpAb6VawR/fpWiTmwG8Ls=","q93omvtV75fxyltXgIlBC1ybdjPgL5Zn0vpW3VGlieQ=","VS/0F4m7ncxHjVfTKmW4x7xYNVYOHHsGVcw+Ybmk4vg=","YzHvhoHOBpb7Nc7OMM6QDlPHQN2yw2jQN5O1vfYssOk=","zr19WjmyV6s9mSdzQMcT048Z7SSIo36/VLwrSqVABR8=","1WgZthSpZpypcY1bX0KtO95kJjJ1ivwvVEh+dpPheYU=","STqUIfkiafj1KZ1RWrSS8msKrdH7zTr6Coay8YFS4+U=","fVyrmXlkie6DpKRN3fUObmeCl4DLCtmY1ro122xOp6E=","leOU/koIGSLR+tjFCTlOzviE750F82vkW4ZhbeHDnB4=","nDqeFDNSZ0XmF1m111QppJQc0QDWXcrwmnjk5wFPL4Q=","RodgFfgGkkbGfuxJCNv+zd/i3D+x1rIAaGacGnm1nr0=","ePoyP09pPp3M/anErh5DRFs7TwEzc9i2ERtLeXIooS8=","08rOFvgkSI8pg1R3hZIyMJxbdoQ23FJ7A//pgsXr06E=","bOdL41A2I6jNnL1ElyTqLY7sMYyJUVfLdRueqzGIFV0=","vNxjWa6psH/XiwiyRc1smbNn+mTYDYaJw0nfKeYf6sY=","rmFWOQtj/Gxf2027bWfp/aEG0plYJPGQGv6a6AaU12U=","sI2ZDn28HYee2zm0xRlaPt2DEGLDf84Eu+UW5RTDH5I=","K0jjKdI7ClWtegWADwO1X3e5dD+iI+vu274lv9fYOxU=","Zp+q106rYq6QSGDDE+I9cMXNkoj5RGW0aJyHWnE2uL0=","hVW1fvOCtyxU17NFSTAPkGyjeTXpIwjOhINUfYg3HN8=","AcG+kUucDkxo+rl8T3iCjTGGjCT8RoIm8Np4Mu2Ckzo=","p2ZgUMWz3PffuVzupRvMnR9Zn2BwQQDxqhGTO+hFZGI=","nEYvG7Ws3rqvvRUW2oG7YpxETTx6Mze1eeO2Iw5uen8=","1vmF+LSVBQlrK2iUVaD4HolW92ZSCiGkuVLRzs75PGY=","zqK1ZJcyiYBCZcfNJq5pw7N5pj7bQun2xIhjt1Fi8ZU=","8UsorV3CN6YyCIlUJji4ujOsgRC1Xop1n1Ein19P8L0=","h/5RFhIO3bzTi5XNmRsI1AjiVk6iV8cSo7/mjN7V2sE=","m1eYSwJbw7Ui4fRU34EgCpnq4bU0n8L6BGYjudp7/T0=","43IvQIafIYRvAA8TzIsc8dIMRgk37M0FseWT1qGl2jU=","fGpUdti/4aWG1T2ZqL2FQ8CCtBVeyF52bEz9usd0dWA=","XhQgsT8R1D8d7xqdiRhzx4KyjmjNYo/jHQnUgrdslFE=","9bGN7nCURjJOWdrdOp3QHMc/86s8WCNFkb+OrS8Eokc=","fGFxCTIHTo4H+3MoW3GOZmxYZ6O599fg0vFkcVXtgRA=","L1nlXohVnxrlATVQZ+3TmIBj0UsslwhKZIJZZO/0xMs=","co5r/yOYZwV2G6OGZAJZx2oRdm/tRJExAy5s6NCZ+WU=","0IzI1FTJFWuCjROP35c2DjeVjCAJGbqqc9hsromhCCM=","cYkTjFKxEbBCJJb4lfHfuJ0Ld+nG3TVqP6vkq8/g8WA=","WqOJU+HDn4dqRZUFt+HZqrqCkw9a9oEWmuYHC4O/SOE=","7B59Z5gKKDbukH83onN26MmJhCaqAY30ZYsal3ABhLE=","NqtZt5rA9F0QWqkKYex7mjw0XiWwanEvLZyg9ieRnt0=","Z/6Ye68DoYhslGFGoHJyIbqeHzdBCgqaiByoVXKcXWg=","ssWIX5Cj3H5lCohXFR/TcgP9jILG4S15iG9Qf+DbeJM=","rmivBgCqYVB/FGEZ+eXRu05Y+eo5HSLY/siilKF5HF4=","MHmAXWY20er2KvCSABKc4rH8zxu77C9zmfMU6stDM48=","ofjJ1V8TesL/DZnJQkhFRQcMEkq0BGVwwSg+NgJB2HE=","rfVZcDS7UxYOc7OBZ3s73n5kKFczBdBxz3EfWWXfqPI=","GIbNnZUal0jml6TBv5OicxbGZbcbtQMz3x1Qfbf1wDs=","Qodld6NEPxK3ZtrmXw99xkwkrrzEQyc0ulsFzj0E3ZE=","lMFmUnLQwkJRj1I6n2VT4B1/k/0oOH7I3dJrNbgbae0=","NNiRnKlmbW0ydwqqXMKG5DFz5W3Of4UU/Jg/bXlKgr0=","JU7r+MESrOhWMChyWH3WHBeQOtEhfrSzV0BWKUmVTXA=","MZFwYOL9q5MYXoQso/ZXV2FQ4nzKyUExy5n6vVp3EcM=","afF5plxzQjDsSMpbgt+uHctVuY6TbiHJUKju6TsVju8=","ewRMKMjWdZzdYeb1c3AZKeO0RzpCsJ8wesHDfBfBGV8=","LLdCqmTuAbitaN/MLgk6NMfK/LHn7irQ3UDVpUXNzAQ=","Zu8Pt2GJ6asirJkLbk97IbOHTnMMva8D/zT/Ii4Vdds=","lfp08U+IA/GVUDPex68JD5Z9AvlZA3prT/iA46viLxw=","OG3gC7sJ0dDw1N1MtvVUTHO+3eZA/T+ds2nEuw3BfmQ=","zWuKj/GayNehkBtVTf60eSveJRZ5C9Rs1sJu1RlB24w=","z8js1i9d7ERO96Yxb9jMjeiM7eYieYUSVUDzJRmd968=","7+FWNKbd648AqmWURT6aIuEEMpV6AviDEvPaiu/c3dM=","g0TYwwFudw09e4VnEaraoSnlVyyFJiKp0uADdicaCYE=","IPD6BPCXWfJ0QpY4ssGDV8fpBiP9nMhDnq7IfBDdZww=","LsrTG9sPW9aoW18wgtBHG7LOeW4SqdHLxgANan3tFMc=","sMxEkFPS6k9zbUcC/1apjiSG8EeAH64KZSAgvl61ucg=","wd5AGGlrSiycb7Jo8/MN7yZAGNBS6FukpEsI98OOBMY=","lLji0wSHYTKSdOI97vNV3OsvdgdeThTDLI6UaqS0x+A=","KjnuJ4mcq3+5ylc1SgkAkqD0iataMJFNbXTKCc3AlN0=","UhnqZ4Na2chI/t1jkWyZWprZR98W0sb5mYAbDl6IUH0=","+UPjT9zMeBFfUETLfvJCm2t2lZX7U3KlaHtZUeU5K8E=","2Gw9G49+2gGScVHhogxhnyud+pRkZam9Mw7dG02+jj4=","0jX9U/vPx1n4WnjfYlReceFazRNqpdU8HgD22jX4nvk=","ojQFoG+efLdOLu+jDuZym+QiUSV3odpqvTWjJ4UNApM=","3dnR909KeqvI1luSWW6ML1dSY0l9JrpGvfYr12VlSac=","ZehLyTPGnjOkgB9xOeZBNfKcquf82qgf6lZi9EKGUr0=","6sCVa4dT5jnoVw7nkQYqRL/1EiwNn4uoTbqPxFNg738=","ZEASScY0Af8d9h4kC17GxsPtWJZ9cGVPzxUmtIFtW8Q=","XI5y2hA1Rlx7tSLzUNmHNlAnbKSKh7SkmjkLqXnKVrQ=","kMno9gbYgM/zxzM6RrG9DQPV4+hVL3KD1UF5IvJvGlo=","4q5p78vSP1VbH0LndDtGERmeonjyAaaAZlakkJvIPXg=","IQJmq31b++6mQfUJgaLpPXVXmzOZMhW6PKOyE6C9G6A=","Z0hhSSXxCjwHh7vH/gNcWHFuT0y9SyrQmi1PhuluSsg=","KaNsyqciR/eceA/GnQA4LnxjkYjjKWs2el7gHyjWkZs=","TW/e9EZzxKw7np8DGR6c+1XYixeb4tuXTIlaChOYdJ8=","iXu7k7jKsx0KMesHHS2fPkPi573HHaKIa+iw+pGEEbE=","cDSGK6q9yew4PMf64dQVqXztyPZ73EkVyJ2mvGkUDks=","yOwh6hV/Yus3VYC4R9p7lFA9lgdxZf5yoP6RzquOkS0=","RGKX/DsoC++iixvlyUE2PAvGwX+8X1NeMuRfQNC5IEY=","20dwIvAReA6E1JcSpBx9CExNLxiXCw83xPAm5zaTGIg=","JCMhaSfaZ+0VDxyV47yJLljf/MlQ1ittoEhYPnCp0ZI=","Oh8T0WWroXlokG6nWQpCvVZ1yUfPzFvQbZZLsLSfLMA=","gsVm/SCU5wLDgzZEOLz8/px5NOHAtlo+/+da0E0KDLM=","jK5eDqttIsD/mBNCSqmXW7fOjXSu9OAWFd7Txupk1EI=","9xdQNXGE+HgqBBiXkjZmDlxcAmlEjJOSE1OqOC4x0t4=","ICSHr1CxjORJTeOqQzHa0lx4hMlEwUpZcnflJkaB788=","0k453Bl7ycz7pFUrCRVgnu5k/S+4MtWVNVJlkJnryG8=","JZ0bLt2YrVaSc+WCc7t+70mdjXc+Lc50HtfVbG63+t4=","cXjJk/UL2lDOmyjQJDKPlhb/OcSRhz6wDO7zT7RxIC8=","5lqWO9FSDtgHd1QFwuRw+yIE1wGVdgO1JdTrKNsGu5s=","08hNVjHZ1INpDayaFbD86bHNpoJt/CpUcPevXZ9YVak=","P5DLKZcGnJysUcdNzPYBMrNCjNNyVDxRja+85xOHbDE=","1NLxEktfo61c70QpNH8zW46vHrRdBgB18VMIneOVso8=","wITIDFuujlVtv2E62ifdah69mViIAOFbs7vxfOoYOYY=","gS93QSUn+vGkUtYQmDl6HMqhOUIOZLnaW+Dx/WhRDJI=","PA9zQBITzv5N7DFgBl21KEima3VvRRMEMhq8yL6Kpro=","u+FTkSSH0GWq5XwrtQw/E9zNZ3h4DVyEZE9vvz8f+rA=","y9A8fDc/Kzyb4VM16KsBixTkh/oakNsqIuS8m+8QX0Y=","DQebPOUf4yprz53YFsXZ8MsZ9X+Pa/Ominud7Fmkf3Y=","Wn5bfKi0+QqaLW6nqPF2mfQhfPUqGialmE7jd0nhdUY=","OMLrjYgLKo9ZH9VfU0VQ9tzctaQciQuiHaMwBW/a3I4=","cTGp8alx4itKC21+wXS5GD99YMpyCy/NNB7TDYpUjzA=","9YvatbvYWcYAx7QXejqlXwUJBL/2BJnr5pzYeCpGK88=","/6o/ko5S5yyLRjw9+ZA4bWEunreuI1cr9beevwIQmdA=","Zw49mMCa8VzcCDdZt//1eUHVggpjShFtPaC2/OE2/0A=","IrFncDZM/q5z8LcQ9sMbdKpdO+Rg8MhP8zGvmGaZv+g=","uUjqebO/1Dm2+qqtbALq5kL61oZjsp9N4FQc4wteLQw=","jwdHzkY6vrdY/zij6e3NSN8DLFc5UIE0F3lAW/cgwAo=","UtY9TnmZ94IXmh0QJ3rqL/eslI2/USx2WnKVcvnxNJ8=","iGLugVlpWrjqu3ZdnXMqJKHY8MgOwAuTCFFoeVqu99E=","lajJweIWb0XJGQcHWe599La5+cJmAzePld+BTApHhIs=","tQ2IcURnitZ2e+N2xUfkxNjZImI6GFxYSBYBKbs8on8=","1BjrkwCP90MzjZYu3COPQ63OtZhfgahLyJWCEONqTw8=","kSnK6/3CNAgZC+mSFgeOESBmJaXLA0T6BxSLinmWBu8=","fNhxKKN9PjXTxLFO2Rj0XOJ5RbYuRFrlQtMM+v2AIqc=","HnjQyujSZYYYkiDgTcWkN8oCaFduCAIgwO4of0gXIfQ=","OQYMdEHlHXCgv2qL3PINryjQWo2gQOKRGBiTcqir2bg=","GsEDhLDZIGn2F1bSH6F8YVgvZQAhqVnzZp9QOSnf9yM=","m0urMZQADEE9ZcGhwqVW7QnHpIMI7uivZW291pR8sOw=","9zLVo5MEYKYZLZ8RFVSHaP4rsX3nSaLtW3Hlz+/okRA=","4yWjHOsL1/J6yC0zbMvZJqtSR5M+G9f4ZM6Oy7y+fRY=","LAUbaPBVBtJJMJmxqrERg8fESC7zDDmPDgCu4jWzPOs=","d1Sc/D5hLvc7A4Aw+UjcGdUcmMJNsgw2FQSAl8uhOn8=","GIVysLJ/sDrJeKywyy7oAsGoT9A1pHNgBmCrwYWtYh0=","FgzRGb7aqSHXtbpRJrzD3xi0wgkrhIJmF+QlfhZSYbM=","oLj1FiHW+RDrl2mhUnExoeq8f0AsjrhXfw3Mcx1XScI=","hb94zvE7njOlRlFEiOxI7PlTqPJUFjSSgCUiFwVSUWI=","BVbNXZH3FYtok3J5bs/MlW8QSCoJ7FNG0nSlv+TqkBM=","6XOgBIupA/+4vazyGgQ/IRCX7F7Ghl9qXIxZY++1crs=","kk34QrrGLeFaubDpPv63U37q4P3Wctz7CyFmtMa6K8I=","bhYXi2iWJm8BzqUr1GSGqlIvl64RBv7h1UHaSGmmqvI=","sG6MLIO0ktYus28glQezijYQzoewFqjk9iPUxePjpSw=","bGNpTuOGWlCMOIiTTJnEvadkUrohwGDdPg2pHybfAqk=","JE8UT2XZlYc6yordsTr5TBi7NSJJ8PmwbYWQL5hzwr4=","tSuw1ZdB1wM2jGfDyt7YH7tkOtpKxLRkI8DXdcYceGQ=","DIFopQEnZmGhopqcgIFueDdPefrU3cnoZKFFzP6KTH8=","K3nB55Ar8DVKZCQtyHXR0ykB1I4V0lPet4E24qUQufs=","KtbZDNlUNBipqVe8j+gBPZ0JZaiHQ4C6UPZt+Dj7M+M=","UyBClFlyzOPp577atRUf85L6bqYSzUximDcOr/Tw8Z4=","NtAtlyyP/1RSq/okVhMnBd1opZ4M7dio6rGhYNY15TE=","J0EwBTBSNqIsxtgclkV3pZEK5NyKXllRQlLVNdKIXaI=","7iPpiUl0fL6GBt4mvC2EsMZRhGHlajdCSNEsWiEzOHs=","oGodNP2abmM+vszXxmCds2kidnQEbSXNycx8Ex8KIgg=","Vi00nxVX+11LMVGVUqZSL4gcXYTKWKEtqOh41SQjl1A=","z3j/9ElCeWabeRN/0WvPqAnRDlMydylkukXLKVlISzE=","8o1r5Vqe2lzcbIx3V6otAc6+EPOc2Vdfc6LCFCXkga0=","G97iCLRqjrINgCG902RxtWLuyekuqQm4iEliNW+7Vtg=","YDDkDGTlpaV4yQXPfVkMNHhjavZX9XFzVB88W8oqCG8=","KyA2BocrFpcedj6IVn654XbWnMbqq8Rt6BzUm6ijGYo=","pmAaOV9zzIlNwb/1f9HIYG4o+qVmoQnIJpKzxt0TF9o=","ko+gxqJsqjBzON0ucVHVLCY2VwTODCKsUr5GQybpyoc=","VaNEPT9HtFx00wq36sDXTH7qsoVd/udpeTbl5uFrBa8=","aY3CsnyX7Ajxyi5dovUo+o7mbubJMBZ/dzcPxdU/rAY=","v+4XiHAAWahq/LOKKzIKkKjDlie57sNFnLjEJhCzPCA=","nkzCx1c+lxIIV1YWybBq4rgGmBMNE8e73+QsoLx2qpw=","T3AUHEFcJplprtc00hS1MvSQJRCukTv6beCzifJmj2U=","Z++WvmlV0RxXreSho3jj14ytC83s6baWrwogjgPOejA=","naHR2IjCRPYD6o+4QlBrfi5obVaa3hZ3Mx2MoFgSY9A=","H/vWIrscAlRmFFIZRbFbq37D11rtgtCAA4jaJHv4hj8=","vZTn9gJehEOPn0KDRbRDUEgn5dqhXMEVODzyeytfkxQ=","uL8ZLZZCbgU3QUxAflTaa9YhAXYql85ebHY2TwEwmB4=","yCBqnDA8t2r9BxRi7cbVQxzPXLTXgq1cT+gDVae5KNQ=","IGblu9R/y85U3090pZDNrwP1C3+lABHt6UXrc+OVf/Y=","JOyG8q4NQRbPUPBdXkd66zcBz04gY70Lm5RNM8HMnQQ=","AhbvrEQtltJmhW9UlyIMQfjLJFUeM9nbzlUG7PxEGCo=","otQAuxFq4GW5wCM/U2f8U30LkTpgjVu+9UAnVboV4q4=","g4ptbNqfqephn5+Bc1SyAwRxDeD0BYtT6+x3ma6zlZE=","4PoCurLEtfNorUtzJKhcLbeVqxWDHnxuXsCoOylL3dQ=","22RbbqeCz95QXJQ4zBXt5HBiB5Td2Azz0lK0OKMcHpE=","CQXa1b/xnYxMuC4ez2weLp2LfB1zxeBUafMTftEr8Xk=","BnEFPKRM+S0thNimKuCzw9rGYTu6CGP7/twKLtoeKwc=","k9gyPAiP+ZG66APp6rVSpQEFmywsRFB0ikmcLxtQ+mk=","jKkcYTEDd98B6XkzZIMzPRuFatI4HJ3vQGx6G5nzyd8=","sPDx1PM+N/TVznDG3ECDswQ1+5YNObMEnGYZsmwv3cE=","1M1Czj3wP22paGGoiS8VO4SYXYsXOkImqcYl921APoo=","d3gwx6zaVDf7FZ1oOLiYHGdoohyAuI2o/PQDGG99PPQ=","KiKMZWIhuaHrWmTZY00alsSAfMZTsRDxpwRS9ULXaXE=","aXsT5Noma47lQkM4xfud9gdpBz1hyMb09qCvvH7Ii94=","O6i93B3cj4o6IAPu9xocwnQQveMnx/YqYicGHhGvU88=","CJEh9P8mqH0TF46i8bMcPyA8+7E3xEbdI/H06TANASA=","csJmb8ptzacXbEyQY+ZTdBsHBy5ABuSHTqvo29DyvW0=","EMkzmAqfpa7S/X0htH4j4O3OdBRHv4RwJGR4K5X/hM0=","5vzUaLV59XGPF3Mz6UiXsW+MtpL/+IymtH2T76NWjwc=","xgWyZ2LL/J5UWShM3tvzAtNydjHEaCYVN4B1A2BewQ8=","vwLraR6/yiBYq8XiBYEKYtCUwhOx+4rqgWD/T3khC4U=","6Zw3z1v01VOLTvHmcrva+mWSiAzZnPvRIro/V96YaVE=","UxE1Y94EQFfmXc6dnNwuUQGZwls3WOHgcLAeDi+t9TM=","2P5b/c6oyL7uxVGwhMB0l0WitJSfeTpqPYKQFTAELAg=","XqfFKRXhNfYJP9CSKacLwFBejWBMQ9/7jfvaYTA/hOU=","WQjni6kEN1MLTs2AJLIXju6C/OwsS7vTNon2KGBQM9c=","cv8ApbB8sjg2DBiGXjY7OU8mkG3wNtSI9xHs/PzZpOE=","0/XE/1k0i9zi/1wfeTMVxBaVRmbUcg7brnpKgX9luFw=","KCsMrJrf8mjAkInBWkDiy9T/JUFSqgYdmae28TLH95c=","cRHVKsVZKE4ItBCKRh/JYtLl3DlFDSjIt0RPLLJxpVc=","H/6Ki89hEK4eET/2GqpvKxUHOH/YIGer8fSUy+0br5M=","fo8ZJu3sK3bScjM7s/F3Qb01YRHWqKXRwjOD+Adfao8=","KxrRDDbUb9cVYZj995reqj0s2Elm9wbfZouqzz8vwjo=","dEqNiLbYqF+ZahvP7P1Vlen9fuzZA8OxF+4JeNRmp2A=","WUHt+rRoJzp01wC6v8yxOHdFHWjzY9McdB3GBwuUhHo=","7PEtmFTuTMNwjkum3BMMCv39/7HpPg1vN7+VVXjvRvs=","dNOgTQIHzURjgtvN4AqBh8xs/nZJH97Etb+n2aJIltw=","NJ2f0PJka6SpOPOzMEFVg+UjJ3Gu7A/rcSW4gmElWl0=","TUC8XD1I83BvTFjVVPnSJtjNk2xZnah7GgwRDMIALW0=","V6v6tEk8cvbtDHTdbrdDT6vEZfcI2iy1ou0Dqk+jOD4=","JvQ0runtPSj0Tce6z5qCfLXgVp/eEunyketgyquTWGc=","0U6UVpmkdZTbLp44WObqLbQ0AlW/oF1mbpmz+P9GSno=","qF09tPDnDWiIhFzVOXSYi4YrKft8uHXclClt8nBkQGs=","B14H5h5b/51mOmLmK26h2l/dySqVABCOcrQOkj+Vl/0=","oDJ1VDtR6OIjQDpY1zwHm0Ouak/9k9E/BrO5TDA2txs=","Mfv1IKPpSdzmU1NY6ovxb/JuZM10cqLtrtuuWtxo6sw=","iRw/JEo28zZcPY0/i00mCaNbbBB6WI9plcgWfNe8SvQ=","569AJrUIK00S08/XbqGsjqCTnFMIpW6d0351uC/Eiig=","gmYcJTgsWVyPMNZxA6Q024CizupUn1azHo/9WqiyVsE=","FKkQCmkp7Svq3usmoYFbK1RFolnkND0ys6s0Y0+XU9M=","zYe2nLpzxm4yXHeKXSegV/FNnvvZBO852WO4oDae/AY=","68Um8phdLPOSgf9g+twwRmcqC4Z2fKV6VEYd7Xf7J9s=","Y9hcFePW56VpYkNutqndcBvs1/amv765OTfBA6IslFQ=","OY6d/lPUSkhPzATviC9h/QG4zqB8r2R6FRW7hNKC7Nw=","/eHX5T/tLf+4cpMSjPIg9sf4uPBC+s7dIGaqxsx5H3Y=","KtqNFe/gTkM7ZE9P95iy60wD81+xw2h+qJxA99qJyzc=","cIBttCDdDeimLDg25+4JHWycXzOfYhOG4DHcqLyOGfQ=","hysk89dQaral4H4usbxAmImz7SVW0DeNN12UG5n9QGA=","jjwwa2MDEk+I/2/LrcUart3OnMMC9Q12yLHqoImJZQs=","7WN51lfvjkxMU57em48ca+kgLGo55NZsFNMriQjZw/U=","+sVX/3IxcUp2EdoCPdCk9k+IqECwNmy+G0/lQK65hGM=","a9PHi4+W9YFmcdNARBdHqEHuGQtJV5K9QTtarpLoKms=","N+mca0Y/1KenCIxDKHp7ezQZRahI19dFKB4J6pkc9xQ=","m8L2AY2qFXZ0fejICovrM3KfV81HvX5r1Sl7L0LsaMs=","2YyTaHYnLUAtDUaX5TPEy+RDOoMwV7LpdQJ3TWH718s=","Hw/k2uqiqYsWAgKPAB8L9ZPtsaAVJrPLybVL9twUX8g=","OqgudS44wQilMDyd/FqDV1J5t4CaMBrxyIlwP8R1lhQ=","2yBOhB8cKFfurgdpselDNWDKRpG8oGstb3i6wuZQlfI=","sUKdq8tMvzq7go1b20GRb+hLzM/rn6XuNmyhELuPUuU=","4cBSOb/jk0uWMb40wvu4kQD00nklFOf5r0ZQ0Vdpm2k=","b0VAJU0jgpAqyp8vv667eGeu9wfYt/lPZ+CRjLQSPTY=","BNzePL1+t3LHVjpJ1l6PqAVt66uQ53hpbL1mQYErO5A=","uiGhTa+bezMtW9MiXkNOHdUG7MAMnfL8OmLD07ZFlMg=","PCvrx+N7uxUJSPcoLA0Cx9X1xg6coKjSLHbvx8tNmmM=","dAsOjVc5GzZOlopa7g4XREG/DBXg4YQCIP92vefosfQ=","7WpvUcWm3pYPQMQP3DP3lOGNr8cKjtT0JIMi09F7AWo=","mInJJdDUdnuY1289yvqEkBw5hBvPJVnmCWS5L6JNBFo=","AM86l4or4FzotxPZkgiOCGwNOtVRzS9tZPY5CVx7qLA=","2DjvMukXupj8hCQ2QtTwqq5KgsbV72BFDIhEhmqM1AM=","vVJF8Sziq+oTofQJXkHHVSZIc/KTMV11p6d/sEbcQ50=","jZ3wiMjjQBStfbT67xRciCr27LQT11h1HXcGZvKl2EQ=","hu2ygGOxZ1hIQ6L8eaZyi3HSvaQga0OXfKumfpk9bqE=","liphmRYzx6Bm38S+BX5HpSSi31HFR7w532m/wfv2VEY=","9Q8Y7pVCzeH7PCEVSJpQ4p4TAAGEn3Nv3/8nTb88bZw=","6e8nxAXReK0R9hnbE9KbzrSDzwglWRv92zPvo5VOuXo=","N1x6UXwD3x7MddpFZ2wWTRY1GQu0DqsV1GIZ3Y64NQU=","wS8qsIB6Ul42Nl0vnuJk0nqb/hg6o+DQoqgrQCO5mTE=","HW7SPQn65OTFaWjiu5H2q5SWGwHC23GEo6asld8eYik=","RH0P+PHxo77jFWNvj0ISUmY2Goktk0coFtQxRv5CvgU=","CDTEUn0UAxMoDYmIj1ius6DWt7VQFkY/It70uuF2/AI=","6zZTA0Hs/TnFvvmq4NjFBu2BE0FVMdlu7lx9IF/8lgA=","yVaiHFw10QtC1P2T+Mc0E/aIXbADItPq3o/tN3ZLruE=","UBIiUMkzkDRMPCAWn+FvDGnPCz/EqBHVFMQlIjoNBxM=","LPUolQ9GK/zNgiVmN5DbIscn2Z4pcb9nEIigBc/Z3To=","Uav6ouR/5dt4uQas0UptUGPwr60gct+K+36au7mV6G4=","C50IxAqkofqcUWq0B3YiJL67rWPWlh/ouIUNeQHDUS0=","Nxk1QmR7V9+UQURGYE/OvHQUc6T3AJzmnBMwT6HO0o4=","U9hlI6jCz5ZzGUfQsoqdjibytfR5MlG4kTRsu7wfGoA="],"block_size":4096,"path":"js/json/tf.json"},{"block_hashes":["/jr6ijBN/71TEazuC/MiR9ImIzBTGyslV2EfSdBegPg="],"block_size":4096,"path":"js/json/tfcur.json"},{"block_hashes":["Uj4+NWsSZFZmwok+1WBhZiri0UxDlG0F9eJbQmKmS/g=","OyQKkIP3RRGo4LDtnlvMfjO3FWQuKafxnEHJH1W+SpI="],"block_size":4096,"path":"js/lang/_gen.js"},{"block_hashes":["bbowij6Ie9GXqpsxsnU/ljKLXNrBl8z1kJr35lnMkFk="],"block_size":4096,"path":"js/lang/bg.js"},{"block_hashes":["I/ajse3N+H/rmIu5T+Dvobd5I34ugUNIweJ9mTfkSvM="],"block_size":4096,"path":"js/lang/common.js"},{"block_hashes":["hr+jNWXKbFQpFreUSk4SgqdFCtnlLdvlIVvbImCdGZc="],"block_size":4096,"path":"js/lang/cs.js"},{"block_hashes":["B0m6runUIAg+fuQTVXVk8adWUlHgG6rXk+s0VGd8NCA="],"block_size":4096,"path":"js/lang/de.js"},{"block_hashes":["rAkm91em+xtdf361GO++lom5K5ZBPp5LsDb8pKqwHMI="],"block_size":4096,"path":"js/lang/en.js"},{"block_hashes":["PncoLnqq4orAyIzRJvPzT+4MXMaH3a9ZpexmylcyMUQ="],"block_size":4096,"path":"js/lang/es.js"},{"block_hashes":["88gUwHMFq9hfFe1WrRnKLcjS5XCaPcpQ+jizdd9hb+E="],"block_size":4096,"path":"js/lang/fr.js"},{"block_hashes":["m56HodE9P9aDGD1rJu8+prcwHvMxD/6La2mmVzqFtw8="],"block_size":4096,"path":"js/lang/it.js"},{"block_hashes":["1YF2Wy1X3W0L7Pnm5PH9aywLd72Ym1vwsxh5oK6E1so="],"block_size":4096,"path":"js/lang/ka.js"},{"block_hashes":["Js50S7vM8084EMHzHwrgfzfy3Yjf0Xwx4vNgVCvmKZQ="],"block_size":4096,"path":"js/lang/lv.js"},{"block_hashes":["l7k37l25fx1jwEbM1UXI+uCT3gsQH7n3mY7g250DIIM="],"block_size":4096,"path":"js/lang/pl.js"},{"block_hashes":["UmfeG1uocFbehbhTi/oG2X1/0R8BlSbQIOnlwLWoT40="],"block_size":4096,"path":"js/lang/pt.js"},{"block_hashes":["k4CFS3514IgUtn0y+Ts6eiW9H4TjmHFPb+kmvtbzhjY="],"block_size":4096,"path":"js/lang/ro.js"},{"block_hashes":["NaisacPLiEgDcuRcpihrxjt/gIqeDSZ62at7KC2n+bc=","wdPVVGkPaPOPb1++P5GkRDbpzi9epprrvPBmz1PZpro="],"block_size":4096,"path":"js/lang/ru.js"},{"block_hashes":["XVt6fH7KSdZ4POvkGES4VwC7iHZPPCigSZsOpxLri0Q="],"block_size":4096,"path":"js/lang/sv.js"},{"block_hashes":["YvSPi+xqa0prSTIBP+VdbLCYgVFCkrG1FjvkhszeJgc="],"block_size":4096,"path":"js/lang/tr.js"},{"block_hashes":["KMi2VWK5reEAV35BGjIuokFZvdX9uvEbvn7/ksoOB74="],"block_size":4096,"path":"js/lang/uk.js"},{"block_hashes":["QYpjxyxGfjM8iAVHWyjn4PKeWoaCSavSGkoFAPST8n8="],"block_size":4096,"path":"js/lang/vi.js"},{"block_hashes":["D6kVGZJ7g1vmZZzWyBvzoE4Lrj3bNTuiaRXLGaOChzs="],"block_size":4096,"path":"js/lang/zh-CN.js"},{"block_hashes":["Ts5KOKocsimRFzgBI7inuZfcdj/YGFSFPNR+8YttuCM="],"block_size":4096,"path":"js/lang/zh-TW.js"},{"block_hashes":["D6kVGZJ7g1vmZZzWyBvzoE4Lrj3bNTuiaRXLGaOChzs="],"block_size":4096,"path":"js/lang/zh.js"},{"block_hashes":["xIeA84iB6hFNZIi4hnmdlNreGrTB4ciio1JoX1TKjTY="],"block_size":4096,"path":"js/listing.js"},{"block_hashes":["ykK791rYo/ZVJJ3smm+3u3bzLmvRQ59T7jVob6b017s=","clUNrS3dVUYoXCLtEzr2LKDT+tf4nCCfovnpVTPhopY=","e17KaNf481KZDU/ZLhvllVUIfER/Yf/4/UjiRhH+004=","RuA92RGcLeP0Laq45EzZRQiTCZ3GZa4ScEcNH4m0HRc=","YLSNm6PXz3Yba7n/eje84zHIdshG9hw6502/R8YTVDg="],"block_size":4096,"path":"js/listing.script.js"},{"block_hashes":["7MiTO4DIbBOR60f34vFNhmAyGTvnbuJfDvxGds62ODk=","99GzK1jforE4DxxDfhhwA9PJ/S92cFs6EI1G83UU62k="],"block_size":4096,"path":"js/long/long.min.js"},{"block_hashes":["gBGz6WN/82pnFwGg7iLmH6oBO/MzmssNkc/RGK5X/L0=","XtIotljRvXilUmilzhz9LsIldNGxCtRD5c6X6xsE/hY="],"block_size":4096,"path":"js/market.js"},{"block_hashes":["r5/GEnxuR7pA45xJpPYxx6c6FguRZq8Y/HIfoBDka+I=","5LDUiv0TS4oB9zbjJYcc0f7heQImjj/M9FZ/ozqh448=","xMhNZJtbdwW/Mvbb8LmJy0y5aNORnK4n7dL9BIMR5YE=","nTWP3liu5MLB83Snm+Ytyp82UC1TU7j8gLgzxXPZADM=","DKJAeeKRV6HP22LNtLR1HFR04K3v+q8W/oeeMfTK+rc=","cFgMXKW+51EPxiuJmDPfuHpXajc0SEgnI/ZJGzTqpU0=","VCuuU57bn0nYPVz0lghfkMGc2/nTi1i6355AV/PllRw=","gwD4F7AYRPGYrXIq5vQ/ST0uYT44BrWXkrC9GjC7Guo=","Uam4PaXNf8UjgSPcqEE/ZBagvjLg9KrYW/uJJywZ76o=","T+sHu4DZShu1Zve/cO/bSffibxzsYlU7wNMSsqFBnuU=","GT2Lt6jfkeS/GjeSvrafD6BBxHnNUfr8p7ZhJPyF4lw=","2qRsx2Da2BrqTWask34+Jc3jM+jZUoJUkvwGXG/NOwM=","Sbx2zXJnhopW/qVyCG6Nne9qaJJybfBLQaAZlq64VIU=","XDlyDzHjxkfsQWv9KyXjmtHKQ84iqIf9EVe9R0pbZAQ="],"block_size":4096,"path":"js/market.script.js"},{"block_hashes":["BLsanC1Wh6rxJK1E5qy3Z2+MP17v5u9GzUD4k6Ks15Y=","SdEOU/a1HHt8qh8ZaaloZiwpGLWM1+bbyVk6NN4UwGA=","1e1YCrglJNNApz2efOKHg3BbPlnPuuGYFhROXUaE0gU=","sqTCPKgGj4FwxG9IeIL+xNtds16cwYYcsuFlYz5orAc=","ggnX3fiCsPPkHF4idcO7D2cIgeCHULrDzbdPEXZ3Se8=","dXofJxfRGBC7IQi+1y3x3oGNCmD+C/tg6jznoRcrH4k=","bEBCTz8CAf6tCjcKvKfZBFOW9MnJhRn0Rw9ugS4NBN0=","UFtGrjim126EhdcEz5cdmm3SSq9Fk+SF/p78jAYhRUQ=","rbiRihDZfwvkeoLuVmXLqiIaZuWhWuPpbJDS7Ton85k="],"block_size":4096,"path":"js/offernof.js"},{"block_hashes":["k9h/imOmvi+uUAkc3E7mghFbBBBOP9WGLqnaTA//DQY="],"block_size":4096,"path":"js/options.js"},{"block_hashes":["e/MH9fCvjIIZIUzWIwNFaIQ3spCGKJYX32ycvyE9ZVM=","KTMh/t80WgLfP6V7lrJElIt8BXV+xyHvwLSOEL05oGQ="],"block_size":4096,"path":"js/pages/bookmarkeditems.js"},{"block_hashes":["JIAuKoLrkL66hiciJn/71NyB9NDmaAZzbPBYbUzea+k="],"block_size":4096,"path":"js/pages/bookmarks.js"},{"block_hashes":["6oSnxxJREamI+Oda7bo6GgHU3EX1VO0LLY177GPQC6U="],"block_size":4096,"path":"js/pages/custombuttons.js"},{"block_hashes":["aGk+9ap9u/l3PZf17FM896exD7/rquDKfF8BBlCj57E=","cc8DLFqgK9F/pj9el9k9z7PwpYK2Uw6h1F2e5v+Ncbc=","bGA55ozQ1SXFPVGH8wWxOIN9jNKujX0WnYBYz8vhWnY=","hoDGtuDUsBt5+L0AJJ4cIr5I0+p72NyUljhT+J/EywM=","nF91DbNxieK1Tv2xAGnkOq+dagpzQixBqayoF73kHTg="],"block_size":4096,"path":"js/pages/graph.js"},{"block_hashes":["gt6sCXIMJTgfZ4pJYj6WeRZu8FHUbyOWMO2zDT7VpVg="],"block_size":4096,"path":"js/pages/newupdate.js"},{"block_hashes":["Z1HX2YDID6xeFsQGZm3eylPltRGBekhelKsF99vvMNo=","cut85FFGU20VmpalnBpOl85Yy6bjw2H+CQ8agXdYhB4=","wICE8hZ4O03ETflAP9eh+R3dJi/FLQsxEz80P2yPPbA=","Ygf88ZA4J29cuxqfyONGGIxdB9b3RvrnDyJdKDZFHr0=","BIDayCLPlCoTL/3JiiViz2RuFTRfaUGMknEAAUbNDiA=","XqkEvUREj9sKLvv13dv4KOWhah+jfjEUbURV8JSnPS8="],"block_size":4096,"path":"js/pages/popup.js"},{"block_hashes":["AD0yhUqrNhzd5l/Wtl3AvQ8cgzW1+WsOwjTeKKgAl68=","+rdYEkRM0fXvDfxAWEOgJS292cOBmZOOmSz1lLhZ6sw=","N7FsClOU6p9L6wQU59bfSIiY4ZSlPJAqpv6q2radwtU="],"block_size":4096,"path":"js/pages/priceQueue.js"},{"block_hashes":["2W0BC/1Vb/fCvseZwa/9cw8WAdONCzQwtp5JznY/FVE=","RAHKk5kcW0LwYf3wi3p9SDlZg6NKs9wkjzZ2Vs1TW3w=","pWqV4UiFA9JLxaCcprm0O+eaK0Y42HMV7UIDDpljXr0=","c4UZimoWUNRJTK+oeRv+s1vyZjBescakd0I5pr9sMWk=","VjuL+9ob7kJJdywuPhVYcr2jkHLy2nn+qmqbjmHKe3M=","kDUgld1QyilvdS8sCL7SU4Yff65hg5cbp/8KIIVrfhY=","qITVYW361RCyMsts3Q09b/0dkE4C+1l8Dfx1G4n7Uns="],"block_size":4096,"path":"js/pages/tradeofferspage.js"},{"block_hashes":["MH3oG6l2EFCgcYL3/AfmmJc53H/SU5XcmZ+20C7ekPE="],"block_size":4096,"path":"js/profile.js"},{"block_hashes":["FRSlCyXI00+12OQQgch0VxMown6DPzl+DVngPGZnE1Q="],"block_size":4096,"path":"js/profile.script.js"},{"block_hashes":["1j/ewwNVP//XiX0aZ9wQU9wy37p86WTHI66YWaK9A/8=","VaXUlxScOg3p6MH5bx9eiyXxALTiGF16I2ig8TLapgo="],"block_size":4096,"path":"js/steam/economy_common.js"},{"block_hashes":["DLG+A8cG0yUPakZG5IERP93/dJHU+P6kmE4xg1N3ft8=","/1aPM5+bFsvEfYKKUSPAZwd/VzilYVK9T/LrQIqt/no=","RSYLScCw2TGk9FdJ5SArs5/fklPlx7QH9UIA+oF2vSg=","4lVfWWRu/vJxq3NQo874y5I9d21f4ZfdURX8dKuGgHw=","GD0G63z9oEOW+MPG9plCjoC/v3RQFWQbTJIoUXIRuJA=","URtu84L94NrUV41Tvy9e6wllGKZhyQ5BVqQ3E06JIn8=","Z4J4nSU5KeBfNmvkVXc/xSqfuyOkklmqAUCD3tPTYYI=","VvZ5LIcoJ2jmkxlClIV7wMjdadeFK7X96SVS7KrvpgU=","OwueWrY/xNFkGSIQDT/fxe10YXceDcoH9++Z9emMFCE=","4iWkPOWbanz8JWHE0cBDNMlLSsAiNc4sXsvei5iPu+U=","NjCSkJR0eGngMG/aOpYhz7oXvrTb+vhALwN17HRLmHg=","2prYxLjOW6xWAt5dTkkUfHCvPjhBAm0DoxkHjWOSQZc="],"block_size":4096,"path":"js/steam/global.js"},{"block_hashes":["sFeBUqGa0o0NIedCe7rqfWo68xkGEo9TXOF+8rcYQRc=","pB8vllkMZdduxRCHwTa30wZTbCLaeDu54LOz49o3YT8="],"block_size":4096,"path":"js/tradeoffer.js"},{"block_hashes":["6+/WbgpHcUZajQMS1LGqv4TZPxtAr/6ocHHmkiUxsoA=","ubRdL9/+/xszfsxsyJAAy13Geo1NrFUuW98lQSd+9Vc=","5X7qeFPKOyPtQKBnk4DKrSvTktm3iVw9bTIrJcOHJTY=","/NCPdT1W/GZbGALTTV2QjDBjG0V6qmGUzlheKXlQ1UU=","OnAzaPnvNEFKFKBjYFREJ3hQ9XBMZCEmCKppTdv/KIA=","R75xQ4qfQjTYLjsUbfJ1U0aerQmCQlJpFZzWiHFex4A=","4wIXpOE8WdIsVFueh17VgzNkJjbPkV/LIEoXbJeSt8I=","9rsxRhc5sgJ81VK8WyMTH6qNpsoHG8KN/yO/WOJ7uRM=","26hyTuKDDs8E+h5nGBaNweXamSlKkRIB1aKRMkQsm1Q=","B09NOzGujDShob1nEAGS4mwtjWvhYMw2SxR3DiAQGzo=","7NG+e67pkE5rX03x8i/62UzGdymYxgOn8CRRexg3bQY=","UbgSUAry4EL0BgBIQY2xFlQzKwqj1DJOOa3qC1oR9QE=","kSh/kThQig7h4vvvpi6CqSQv25p0Zi3ErkQzqHcBSsM=","w35aa901nVmRysGEGV6YtRr+WBQgduFWCPNjdDibFRk=","pHayATYytAJ0GYsZbZdmL41NJs546jyuzh1ApNHLo4s="],"block_size":4096,"path":"js/tradeoffer.script.js"},{"block_hashes":["JLfA75vQ/4SVE43RHotxYGR+oURrXf0dpwf693XehuE="],"block_size":4096,"path":"js/tradeofferrev.js"},{"block_hashes":["LH0FgOyeg/p1BWezuE+8KZbMMpRwmp/vhRhrp/lhGB4=","XRQ/1/orAlGKIYwS3kQkai8dNxRAi5xC2xv7riBF960=","j8jVC/q9puLNDHphjMRS0kCmwKbtr74GhALMH7weXrY=","saVR9Z4EQH5nU6eYJp6Ir++7cCIHJ1IS6PIwn8f+7XY="],"block_size":4096,"path":"js/tradeofferrev.script.js"},{"block_hashes":["ga8MAcM4hlgQaA+Qg62sroKBNaNLKCqiPdBZlOLfdLY="],"block_size":4096,"path":"latestchanges/en.html"},{"block_hashes":["EAGJxrUlGJ2Y+vu2hyIxLE+2zGZp4ZTE1X1vSbKCn68="],"block_size":4096,"path":"latestchanges/ru.html"},{"block_hashes":["4lScS32ckzVVjmOfBsaeWFe+3zcnRqtXB9mFSskJQt4=","sbLenxdNhPoKHgjBGWT5Hq96vt6a2aNYFoZIf9zGcCc="],"block_size":4096,"path":"userscripts/badge.script.min.js"},{"block_hashes":["N51Ec2iLTH/FJi2E5Z2cGsI7NuvlhTXq+S3Pv+Vc+nw="],"block_size":4096,"path":"userscripts/gen.js"},{"block_hashes":["hIcXlvxPWGgjMs7JZOKGp5DPWKUCn9EqIqxRDqZXQv0=","VbpaWsifCB/Wgbp8X098Loq4tEBiIWiNyFGl64YwWD0=","oiRmYptk18qwX+F0f0pih1+NMKyAImqWAspYxDbZ65s=","YL5idjm2XqPHxEpJ4yKMNf6x1F8VvYYpQn1S3n6nHdo=","kVUdGHhNXUTHvpn/qW/6WlnCVtMaVpWxvoXk94cSjHE="],"block_size":4096,"path":"userscripts/hovermod.script.min.js"},{"block_hashes":["WUWktGYFNESu+1FUFxUcWM1xAR5V2YK5jf4EjQVPYgE=","WjFrDlYaMK15oOB8F5+haHKA6Pn/oLMYZUlCLJwezSQ=","YsNPEFMg8gcUEMg1/Tx0oVK8dBc2G9CxADOwVKKa2oE=","E8J+QNPclCKS3AJZxi5foM7KFATxII6ugFMoKur6cDo=","X/26X5SACdLzHHRIWUwa8uKbyCZWJNKrc51FhJ+BJyk=","TEUWpboQfHfVV43l7OzarKZsws45ixOiB/MGTqAnCC8=","Mkh0cEpyhosF8LLsCBiWty1cXmSvpDMjJDg8b6bhaE4=","foymf+XQF5WGe1QNLgO3fGLhtdQMyyLKdg9SU/nFckQ=","VhKLYGk37VqHMh9QJ8743nHvo3uayWjrf0t5OH6Ptgw=","LVRbDimOLdUeKFDoIM4bHhmuyNg6x6soYwXNUPTqaUc=","6orybfscT94pIPM0P7pz+1Ld88uPxX8+UosEwRbDavc=","uMyMVjNJ0XY8vNIZndVWdOA8b+SEDzXo/fmMUg4qzyg=","q6h7uLcH3kHBkuJ5Ct5KWH0qoBznmTZthp76ot4pTww="],"block_size":4096,"path":"userscripts/inventprice.script.min.js"},{"block_hashes":["tziTrEorwhUAgXMPJRzKA32fZL/X2w2Z8Tlgf3Asp5Y=","12SdU3sYQOdJxUtxjwVTIMRKhqV57P/9TDk3E9wlXjo=","eiUk9hLQ1+24clwP9kbyb25o275Go++b93d5/rX63fs="],"block_size":4096,"path":"userscripts/inventscript.css"},{"block_hashes":["VgZdgGwJvadzZCenMSSFK1qjgOIOWO259us/5uPBaIY="],"block_size":4096,"path":"userscripts/inventscript.user.js"},{"block_hashes":["dovRPInhnfNKvbRQth1OxUXYsSVUDnVOhODinaZhFlo=","ySN51v3kn1A86kRexdtlHqLRiGNxS0KIg+xOOMQ3y9s=","OCFzTYb+BLs43TKvDYlfAO2abdJuOvCrkNr1VCpWeIM=","Q+w8aH1Rlmu76s3K1u9cULw8Y5IYLNWrCQO/9TtqLHg=","11DbwAzmV15xYWusVZJrao/ObuvA+bPsi8+/TMM6BSY=","Scxtg6iTEmVedas223ClBn8fxoXGM1Dqpek11cpTxDY="],"block_size":4096,"path":"userscripts/jquery.scrollbar.css"},{"block_hashes":["b5aXfvCQCojiKWcyJPEGalbGprjpo/OMDDff9p18mDQ=","qfJ26f28ZeYdhgDad9Fw/ZIDov68Cif2ABgvGBGTNqs=","kh4ENHGjtcWXWiZ4xluIUShDDHZX/s8OKeMxCWqVqp0="],"block_size":4096,"path":"userscripts/jquery.scrollbar.min.js"},{"block_hashes":["x+4jlyBg5KoiMAikGoKA3ptGqBIplaYeTftXctUDKc0="],"block_size":4096,"path":"userscripts/listing.script.min.js"},{"block_hashes":["2NzPkFn1SYSRTjwHOfHF0EqXF7PvPMOOjDiYkBvJFRk="],"block_size":4096,"path":"userscripts/market.css"},{"block_hashes":["s9gKOAzYG6DGemIcbAYsXPLBntahXsoWlxmIfkkwozQ=","6C11G012Ltmi09jdFxlU5PLLEKlPK8dk2WMHciuMMpo=","vWlxkhsASfwC/1uhN0PaKp4dwGRrETNh6ta5XagkFHM="],"block_size":4096,"path":"userscripts/market.script.min.js"},{"block_hashes":["0UzRvVAMbxXh+iVu3KqyLYLlEUZerUzxOtOj1SzBeVM="],"block_size":4096,"path":"userscripts/market.user.js"},{"block_hashes":["Z9dH8zkC28kZaIIAEfl12vBDDf9lJoaLJCxmo3JeRj4="],"block_size":4096,"path":"userscripts/market1.user.js"},{"block_hashes":["ZcTZJ32Av6h4XFcZXBCwVkMqZUa13PWzZhP4WkjSbMc="],"block_size":4096,"path":"userscripts/tradeoffer.user.js"}],"version":2} \ No newline at end of file diff --git a/_metadata/verified_contents.json b/_metadata/verified_contents.json new file mode 100644 index 0000000..2828bbc --- /dev/null +++ b/_metadata/verified_contents.json @@ -0,0 +1 @@ +[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJfbG9jYWxlcy9iZy9jb250cm9scy5qc29uIiwicm9vdF9oYXNoIjoicldLMW5KbmJJdFJadUR3MzZEVmVnOVE1eUZva1NZOGpHSThCTndsakE5MCJ9LHsicGF0aCI6Il9sb2NhbGVzL2JnL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJiWlE1R2pNVndHNjZXNVoteVFGWDMyMXVCNF9iWFQxcWpPUTJQRDVCbUcwIn0seyJwYXRoIjoiX2xvY2FsZXMvYmcvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6ImhVS0x4SzNRQ0I3dUhpMUlCTnd6Q212eXlvS1luWE00dTJUVjR6M0Z3X00ifSx7InBhdGgiOiJfbG9jYWxlcy9jcy9jb250cm9scy5qc29uIiwicm9vdF9oYXNoIjoiSVdQZHJfTTRfZnlsTlIzLTRTNlR6Y2JGclBJTHRQOUs1d293UWpIdDV5cyJ9LHsicGF0aCI6Il9sb2NhbGVzL2NzL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJuY3RPdktYNjNTTVZZbF9semlFY19nZzcxWlhZWXdsdEVXQU9PbG52Q1pvIn0seyJwYXRoIjoiX2xvY2FsZXMvY3MvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6InZTUkhhSU5heFgxa3cwYi1IU2s4NEZMeVVpTVNjRWZlcWRYZ1ZlVThlRk0ifSx7InBhdGgiOiJfbG9jYWxlcy9kZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiOWJwRlRCN2xsZFlNdF9SeWI1TzRpbVdjODhFM1Y1VnZ1V284RlZZaGlsSSJ9LHsicGF0aCI6Il9sb2NhbGVzL2RlL3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJPU2dfcHVxWmxSanJjWUFRTFFvdUp6dTlic2gxYnh0aHUxdkNuVDhMaTVjIn0seyJwYXRoIjoiX2xvY2FsZXMvZW4vY29udHJvbHMuanNvbiIsInJvb3RfaGFzaCI6Ind3VWF5dk9TOEdxMEdidDgzUklkZk50RTdJWF9hckNRRWhlNkFnS3l6TEEifSx7InBhdGgiOiJfbG9jYWxlcy9lbi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiWE9NRk1qOEVxYnUzZDY2X3ZkeE0ydUxsNjNZcEltR3RHUzVKNi1GRFpCRSJ9LHsicGF0aCI6Il9sb2NhbGVzL2VuL3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJMZldTU3JpSVRPdk5FcWZ5MnQySmxZanlYVVFJRXN2UzhQM0xjeHd3ekU4In0seyJwYXRoIjoiX2xvY2FsZXMvZXMvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImItRUJ3eDJ2S0lDbkZVME5PMDZfZ0huMy1XUXNxelhiQ0dCUm91NHVDQncifSx7InBhdGgiOiJfbG9jYWxlcy9lcy90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoiWUJPaXh4cEVsdndpN3k2WmtndFhrMUdkQXlYWlNhcklLVFN0YXFZcnA2OCJ9LHsicGF0aCI6Il9sb2NhbGVzL2ZyL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJUUHY0YWluQUZzSmx1YU50OFpTUzJaTS0tNWtlV2N2bGJyV2ZNcGJmM1E4In0seyJwYXRoIjoiX2xvY2FsZXMvZnIvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6ImtiMkV0SlFlSW1UbGlQZzVYOEhaY0x3SXNhNTluN3JMZUtrblpUM3hNeTAifSx7InBhdGgiOiJfbG9jYWxlcy9pdC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiUThWeXlkajhaQ2NONTVxazJZV3NaWlotVXF5cDRDWGFDaFJtdFQ4a0tGNCJ9LHsicGF0aCI6Il9sb2NhbGVzL2l0L3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJpWjZEVVNVd294SmZmMmhGNmJubzlrUnk1bURSZlYxNEhUYWVDV2ZwMnFVIn0seyJwYXRoIjoiX2xvY2FsZXMva2EvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjFlTHN5blVrcVZqZ241Y21VSjZVQWdLUUFpYWVMUklPdDRMTnJIdDJWeHMifSx7InBhdGgiOiJfbG9jYWxlcy9rYS90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoia3d2dFExWEF2QW1yZHpkLUQ2RkFJS3o5MWliRTNXVXZ4UjhqZnMyY0twYyJ9LHsicGF0aCI6Il9sb2NhbGVzL2x2L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI5N2Y4bm41cTYzOWNfTTVWR0RUcnJCRElQY2VQN3N3SF82X3pGb1NNZllFIn0seyJwYXRoIjoiX2xvY2FsZXMvbHYvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6Ik5VMmpFNlp0VGQwbFRfYi1oMnJUQVNmemZfelhnamtzdlpWcGxDZlMzczgifSx7InBhdGgiOiJfbG9jYWxlcy9uby9jb250cm9scy5qc29uIiwicm9vdF9oYXNoIjoibHMxWmRaTDg1SVk0UWlVbUVpaU9EQjBxRUJqQUxFZk9USVNzanFENmFMRSJ9LHsicGF0aCI6Il9sb2NhbGVzL25vL3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJCY0FZdGExR0JpWHh2dExqeTZ4X2ptdzdEdWwzX3JwSGhoVTkySUJFU3ZjIn0seyJwYXRoIjoiX2xvY2FsZXMvcGwvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImM0TWhxOHZqaHdCVHZiaFg1TGRLTU5UNUJBQVJvem1pM2ZwclR2UlZMWWMifSx7InBhdGgiOiJfbG9jYWxlcy9wbC90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoiMlVLMkV1cTB0TV9kMGFYVHk5dWczV1FrdmI3NVFEcm5jRW1sUXMzV1FHMCJ9LHsicGF0aCI6Il9sb2NhbGVzL3B0L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJpNkxLOWc4SWVnQ0hrY2dDM3haVmt0NGh1UkJwXzE3VVJYRVRGTEpaLTc0In0seyJwYXRoIjoiX2xvY2FsZXMvcHQvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6IkRMVkpZMzFkdzdQWjlCc2hOaXJjajFwOWNaN0RCZi1feXVob05vNElTcTgifSx7InBhdGgiOiJfbG9jYWxlcy9yby9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoibnIxalAtQWZ2ZEJYWTdUeF9ONnh1aEhTcHhEVExCYVpFNE9BZ1BfTHZWWSJ9LHsicGF0aCI6Il9sb2NhbGVzL3JvL3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJfWXlkdExUT1pSV3VzY3J1emJVenVkR2Y1bmVDVEdSQVkyNlM0N2pVeklNIn0seyJwYXRoIjoiX2xvY2FsZXMvcnUvY29udHJvbHMuanNvbiIsInJvb3RfaGFzaCI6Iko3WU1nS1daZHNKOGl3VHBsWUVaLTIzWnhfVkZPTDNWeFBwZmlCZ0VCNWMifSx7InBhdGgiOiJfbG9jYWxlcy9ydS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiSndwUVBMRFQ1UDRvMWh5MVA1QS1KX1dWbnhwckVxRm1BcFpoU1VXZC1WMCJ9LHsicGF0aCI6Il9sb2NhbGVzL3J1L3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJ6NVdKZU9JMmh1Zk1oTERlSFphMk00bmZzWWpJT0RtQ2w2eDdjWml1a0xZIn0seyJwYXRoIjoiX2xvY2FsZXMvc3YvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjRYcXo3eGxqUWw3Z2dNTzFqZlJCMHlnZ2gzNWpaNWh2WWJqRHl1eGM4d3cifSx7InBhdGgiOiJfbG9jYWxlcy9zdi90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoiaUNCN24tRlktSTNlRmU3ekhPY0h2RDhybC1FQ2FZeDl5SXlxRC02WjhRSSJ9LHsicGF0aCI6Il9sb2NhbGVzL3RyL2NvbnRyb2xzLmpzb24iLCJyb290X2hhc2giOiJ3N3VFRXFFQTJaMTJnQXRBNDdMWTY4WVh1LTNNNWhGd2VqdzExWDhLNF84In0seyJwYXRoIjoiX2xvY2FsZXMvdHIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IlI1MXgtdXAwOU14WUotZzIyM2xhTEtjOEhnckVLUEgyN1BHaGM4SlEwUWMifSx7InBhdGgiOiJfbG9jYWxlcy90ci90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoidjVkQUx6TnN3RW1OLURVdzhiaG1lYUhHXzRuQmwzbWJlRmc4V2pXdzliMCJ9LHsicGF0aCI6Il9sb2NhbGVzL3VrL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI0UUJZZk9JSUp6WERlZDZSWURIb0l2cXpkNUI3OUI1N3pFX2JQT0VJTnNzIn0seyJwYXRoIjoiX2xvY2FsZXMvdWsvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6InYxanNRdkVZWG5EbjJXWDVJUlVfSkNZQkM4enRPX3ZXU1A0eWZSbHFuV00ifSx7InBhdGgiOiJfbG9jYWxlcy92aS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiU0pVZWRrazRnT042N1RRcGU2THl2MzZUa21QQ0k4czVEZHVvUEdQenJxdyJ9LHsicGF0aCI6Il9sb2NhbGVzL3ZpL3RyYW5zbGF0aW9uLmpzb24iLCJyb290X2hhc2giOiJ4aUdnbmZBN1ppWjNUMVpmS2dGOGVMWm5iSFIzcC1iV3puYXQyLVVHNmIwIn0seyJwYXRoIjoiX2xvY2FsZXMvemgtQ04vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Ii1XbzVxejR1NWNzVGFhRmNTRU9sdFJ0YXg5djJpZ3FSYVJBdlUzTFcyUEUifSx7InBhdGgiOiJfbG9jYWxlcy96aC1DTi90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoiWjFtd182RnJrTzdhX0tJX0dQNUYxRmhKdUNuOU5TcGw4SUdIaGM2Q3F0OCJ9LHsicGF0aCI6Il9sb2NhbGVzL3poLVRXL2NvbnRyb2xzLmpzb24iLCJyb290X2hhc2giOiJtVjRPME8xSHhXUmpQd25vanlMYXN3Y1AzbFdMX2VDd1F0bkZhUm8zV3M4In0seyJwYXRoIjoiX2xvY2FsZXMvemgtVFcvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Ii1XbzVxejR1NWNzVGFhRmNTRU9sdFJ0YXg5djJpZ3FSYVJBdlUzTFcyUEUifSx7InBhdGgiOiJfbG9jYWxlcy96aC1UVy90cmFuc2xhdGlvbi5qc29uIiwicm9vdF9oYXNoIjoiQlR3ODU0cGQ1dmMtSmx4SDR5bFRMTndOYjFSVVlVeG1DTllPOW9UWHhBRSJ9LHsicGF0aCI6Il9sb2NhbGVzL3poL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiItV281cXo0dTVjc1RhYUZjU0VPbHRSdGF4OXYyaWdxUmFSQXZVM0xXMlBFIn0seyJwYXRoIjoiX2xvY2FsZXMvemgvdHJhbnNsYXRpb24uanNvbiIsInJvb3RfaGFzaCI6IloxbXdfNkZya083YV9LSV9HUDVGMUZoSnVDbjlOU3BsOElHSGhjNkNxdDgifSx7InBhdGgiOiJhc3NldHMvQ29tbXVuaWNhdGlvbi1jaGFubmVsLm9nZyIsInJvb3RfaGFzaCI6IldrSDZtbkU5Z0xjZmdrczJfamVTNGNvZ1JjbHE0dzRUVEtVN25adG4tMDgifSx7InBhdGgiOiJhc3NldHMvR2V0cy1pbi10aGUtd2F5Lm9nZyIsInJvb3RfaGFzaCI6Ik1BcTgwd2doekpEdk1YbE5wcDRGUFpON1JFUXUyUDE2eTBLb1RWdjFDN1EifSx7InBhdGgiOiJhc3NldHMvSXNudC1pdC5vZ2ciLCJyb290X2hhc2giOiJ5RjVKSXJlZ0YwQWJpMWM1QU9zNmRJYldtYXVNSDFvSjY4SHhUcmlKM1JrIn0seyJwYXRoIjoiYXNzZXRzL0p1c3QtbGlrZS1tYWdpYy5vZ2ciLCJyb290X2hhc2giOiItYnBqYndyVjU0N1FTQndSQ2Q3YmVlUFBQQWpvS1l6UjBmNjZ6aXBqTGdjIn0seyJwYXRoIjoiYXNzZXRzL1N5c3RlbS1mYXVsdC5vZ2ciLCJyb290X2hhc2giOiJYX0FyT1ZQRXViS1NYQ3BPbjI5dHRQdjJpcmdCUnUtRl9tajVydURZSHRRIn0seyJwYXRoIjoiYXNzZXRzL2JhZGdlX2Rldi5wbmciLCJyb290X2hhc2giOiJOYVRNWHgwNmpMRzNqYXNGeGdKaEdqUVpwc0ptVHRCcEVOMVRPNENUODU0In0seyJwYXRoIjoiYXNzZXRzL2JhZGdlX2RvbjEucG5nIiwicm9vdF9oYXNoIjoiUkdBRVNEVmdPU1I3N2Jpd3c3aUZXZHU2NkhuQUpLcnFtWkJXQnZHUDFOcyJ9LHsicGF0aCI6ImFzc2V0cy9ibGFuay5naWYiLCJyb290X2hhc2giOiI3eGxWcm5WOGk1WnNneVNEVURNYjA2TVBaWXp0RWZPSC1PdndXck0yaGlrIn0seyJwYXRoIjoiYXNzZXRzL2Jvb2ttYXJrZWQucG5nIiwicm9vdF9oYXNoIjoiYmpkbjFJQTRtekVBenpsbnI5Tm4wY1VoLTVGQmdBanVhUVZab3E0b2hybyJ9LHsicGF0aCI6ImFzc2V0cy9idGJnLmpwZyIsInJvb3RfaGFzaCI6IjZPR0NFeDF4QWdLT3NnSFphSUwtMWF6Z1BLRnNkNWVLU01SMG9zQS11emMifSx7InBhdGgiOiJhc3NldHMvY29pbnMub2dnIiwicm9vdF9oYXNoIjoiM1NWQmh0ekx4MC1uMkFTUm5XZkZtWDFvZTFIdS11clAzejFYWGpfV19jVSJ9LHsicGF0aCI6ImFzc2V0cy9jc2dvZmFzdC5wbmciLCJyb290X2hhc2giOiJuMUdjT3lzY3Vod1pDU0hxQXlTdmVjT3N0eThxMDJGUDFyTmpoRFpCbHJjIn0seyJwYXRoIjoiYXNzZXRzL2NzZ29mYXN0X3NtYWxsLnBuZyIsInJvb3RfaGFzaCI6Im9Za1RXRVRZdDZvWlEyU1VSRXFheWNQNW1xeXNMcHVONkhfNXRHZWpTbVEifSx7InBhdGgiOiJhc3NldHMvY3Ntb25leS9iaWcucG5nIiwicm9vdF9oYXNoIjoiRjJGemdQU2ZacFRfZkpVNGVoWUd4UUNacFEyMjZ6WEZuU1M5QVFlZ3dDNCJ9LHsicGF0aCI6ImFzc2V0cy9jc21vbmV5L21pbmkucG5nIiwicm9vdF9oYXNoIjoibG1NX0JOb1Y2R3dHOXl3V3dBMmkwLThMVXhWUUlMclF3ZWtvYnc5d01uayJ9LHsicGF0aCI6ImFzc2V0cy9lcXVpcHBlZC5wbmciLCJyb290X2hhc2giOiIzX09IbjhlU3NoMjZDU21pc0Q3ODJhX0RScTNwTE9YZWh6TXZQZi1kVkNzIn0seyJwYXRoIjoiYXNzZXRzL2ZsYWdzL2ZhbS1mbGFncy5wbmciLCJyb290X2hhc2giOiJvRFF2ZE1JWlhYakZJNEc5M1dRYmFFSko0emZwb3R5b0ItblB2dVN3NGFJIn0seyJwYXRoIjoiYXNzZXRzL2ljb24xMjgucG5nIiwicm9vdF9oYXNoIjoianNFNUtKOFV5MXllVTRPdUxhZmtsSF9OLUVxdmwzMWRsbHVnRmlwXzNyMCJ9LHsicGF0aCI6ImFzc2V0cy9pY29uMTYucG5nIiwicm9vdF9oYXNoIjoieEFnUGZwU0VROC1wT2NZdWwxWmlJMFFJMVM1MXBXaTdqU0syT19aSDlyayJ9LHsicGF0aCI6ImFzc2V0cy9pY29uMTkucG5nIiwicm9vdF9oYXNoIjoia0l0N0xNWVFtR0s4TlczNXcwbDNHUUp2OFo5ZGNnVmcwLUdhVy1LZGdhayJ9LHsicGF0aCI6ImFzc2V0cy9pY29uNDgucG5nIiwicm9vdF9oYXNoIjoiTzlaYkQtb0pWNnhRUE5paTBLM19FaF9Dd0xwRnB6Mk5vMmNZNmtTQjZuNCJ9LHsicGF0aCI6ImFzc2V0cy9pbnRyYWRlLnBuZyIsInJvb3RfaGFzaCI6ImVZd0U4N0tIQmxsQzFHU1Jka0pZcnhCZnpqZ1B2b0h0UWNhLXl4YjUyZWsifSx7InBhdGgiOiJhc3NldHMvanNvbi9jYy5qc29uIiwicm9vdF9oYXNoIjoieFo0b3o0X00taHBmYkhEbkJqTVA2NERrUFFNYWpfb3lXUm1yVF9LSlFCMCJ9LHsicGF0aCI6ImFzc2V0cy9qc29uL3N0b3Jlcy5qc29uIiwicm9vdF9oYXNoIjoicGpnZHdxb20tYWR6UlpGcndFRWZMdEo1bTdsbFlXa25tX2hQTTdDMzFjNCJ9LHsicGF0aCI6ImFzc2V0cy9qc29uL3RmMl9xdWFsaXR5Lmpzb24iLCJyb290X2hhc2giOiItb25CR2E4QzJDZDU2YllZQVVFZ29BeEVNY1RBa0xJVjM3WldHXzlBT2dFIn0seyJwYXRoIjoiYXNzZXRzL2tuaWZlLnBuZyIsInJvb3RfaGFzaCI6IjN3X3VCcUtYQklCc0FoYlJyMHZaY09YeUJjOGctRWFZSWRTdHVveEdjeVkifSx7InBhdGgiOiJhc3NldHMvbWFnbmlmaWVyLnBuZyIsInJvb3RfaGFzaCI6ImVUMzdZMEZaQVpzRHJkUEE4QUp2ZzBEMlRLT0IzVTEwa2ppaHZ0Zkd4ZDQifSx7InBhdGgiOiJhc3NldHMvbm9mLm9nZyIsInJvb3RfaGFzaCI6IklaakpJdFFOQW5nbDBKOTJoV01jRmZjLVNuUWxUZmtuTVl5N3VEdS1JczgifSx7InBhdGgiOiJhc3NldHMvb2ZmZXJzb3VuZC5vZ2ciLCJyb290X2hhc2giOiJJcXJaaUh2bE1FbVVPNUViZU0yM2h6ZjdSWlFZek10WTIxWlVxTEJqNlhNIn0seyJwYXRoIjoiYXNzZXRzL3Byb3ZpZGVycy9jc2dvYnAucG5nIiwicm9vdF9oYXNoIjoiT0xaVURGbmN1SnY2cmpkempQdWhSNUY2bEViN1l6cWxWLWVTb01OcjNvMCJ9LHsicGF0aCI6ImFzc2V0cy9wcm92aWRlcnMvY3Nnb2Zhc3QucG5nIiwicm9vdF9oYXNoIjoiZFJEek5ERkprb1J2NWlLbjNjUFJ4QnRsMktSOF9IdkpsZEhPQkZfMXI1ZyJ9LHsicGF0aCI6ImFzc2V0cy9wcm92aWRlcnMvb3Bza2lucy5wbmciLCJyb290X2hhc2giOiJHbkduVmFNRTU1R1ZyQW5YU1NKeURDdUk2emJFbHlGT2NIS2hHMzlsa2t3In0seyJwYXRoIjoiYXNzZXRzL3Byb3ZpZGVycy9za2luc2phci5wbmciLCJyb290X2hhc2giOiJ4SVh0LUFoRnZyR0x6dlpMYXIxMXRoX1pEMFNXRjZqcUF2RWt0MFhUSGdrIn0seyJwYXRoIjoiYXNzZXRzL3Byb3ZpZGVycy90ZjIucG5nIiwicm9vdF9oYXNoIjoibDAtM0FlbGlVQ1NobUNXMm9YLTNVMHFwU0hEQ1B1cjhwNmsxck13c0M0QSJ9LHsicGF0aCI6ImFzc2V0cy92ZXJpZmllZC5wbmciLCJyb290X2hhc2giOiJfeHlmNkhVeTl4Um8tLXhrRE91blJNalo4SXZ3QTB6LV9mQWliLXFUc0o0In0seyJwYXRoIjoiYnVuZGxlL2Nzcy9nYW1lcHJpY2UuY3NzIiwicm9vdF9oYXNoIjoiVnk3eW9UQ3VadEJud0RndjdBOFNheWFJTklMb2pMVHp3b1YzVktacDFYSSJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9SZXF1ZXN0Q2FjaGVyLmpzIiwicm9vdF9oYXNoIjoiZG1pczh0M1RwSDVrNGlFTnhLcU9wdGFibDVwcFRjOGtZNzBRV0lSVVhZVSJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9iYWNrZ3JvdW5kLmpzIiwicm9vdF9oYXNoIjoiNGN6MG1zOW5lVWx0TllWMWVRVkdkcjZobW11MER2UGNvaTRLbU5RNUV1NCJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9jb21tb24uanMiLCJyb290X2hhc2giOiJMM3YwZUVjaXhReUo4WWpMZnZwZExPZjhCUTR3Qm1vZFhjSm9SaUZpTnhNIn0seyJwYXRoIjoiYnVuZGxlL2pzL2dhbWVwcmljZS5qcyIsInJvb3RfaGFzaCI6IkprZ2tCRmxnaE1hbElJTHV3a2YxS3M1ejJrRlhCXzYxN1VQa0w0T0MzcWMifSx7InBhdGgiOiJidW5kbGUvanMvaGlnaGxpZ2h0LmpzIiwicm9vdF9oYXNoIjoickY4ckk0T0hGQkVHN0FmMjBZM2pKeE0wVVFjeDJNM0JNMy1ROWFjYWNkQSJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9oaXN0b3J5LmpzIiwicm9vdF9oYXNoIjoiUkp1UUVaOXVHUlNVRlV3N3hnOExIeXprLXh5LVBhbTB4VDVscnFxQnZ5SSJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9pbnZpdGVzLmpzIiwicm9vdF9oYXNoIjoiRVRiX3h1U2NWVlFSR2FERHhfeHNmMlhVakdQSmdoQ0ZFdTQyT0xJd2VyWSJ9LHsicGF0aCI6ImJ1bmRsZS9qcy9sb2NhbGl6YXRpb24uanMiLCJyb290X2hhc2giOiJCRGhPLWVoaUFQdzF2QWljb1BNVDhSZk1VMDlYLWxxRUpYeWxRaVRINXJ3In0seyJwYXRoIjoiYnVuZGxlL2pzL25ld3VwZGF0ZS5qcyIsInJvb3RfaGFzaCI6IjVJd3hOUjJvMVVfMmpHTkxKa1BoV1p1ZVI1UHdLbHVJWVpNSU85NWEtS3cifSx7InBhdGgiOiJidW5kbGUvanMvcHJvZmlsZS5qcyIsInJvb3RfaGFzaCI6Ik1xM0ljUGJiM3ZyWjNGTjBPZGZzdHVfcEowSUtXOXNuT2R0WGJ1bVJrV2cifSx7InBhdGgiOiJidW5kbGUvanMvcmVnaW9ucy5qcyIsInJvb3RfaGFzaCI6Im1lNmFURV9TbVVEbGFYdHpEVy0xTmdmMEx3SHhvVDYtMHFESE41UkR2aFUifSx7InBhdGgiOiJidW5kbGUvanMvc3BlbnRtb25leS5qcyIsInJvb3RfaGFzaCI6IlZES05ycnZkNlhLY1BrSDZiTGR3aGtETU8tOHVGSUk1ekluc0lhbnEtcU0ifSx7InBhdGgiOiJidW5kbGUvanMvc3RvcmVzLmpzIiwicm9vdF9oYXNoIjoiOWx3XzJDajlFZVdXcnB6QTRreWJkZjVpMm80R1I0THZsUUhZb0Zlb21hdyJ9LHsicGF0aCI6ImNzcy9ib29rbWFya2VkaXRlbXMuY3NzIiwicm9vdF9oYXNoIjoiMjd5bDE3OHlFSTZ4NDhCYjJLdUZjVnlMekJkd0FhcUNOVE5rRlZYc1VKZyJ9LHsicGF0aCI6ImNzcy9jaGFuZ2Vsb2dzLmNzcyIsInJvb3RfaGFzaCI6ImpxUnY1R1FEdzk4Y0lkaDRhSGlZcWl1cTZ5TU1kYVF2eGw1YVJzMlFwR3MifSx7InBhdGgiOiJjc3MvY3VzdG9tYnV0dG9ucy5jc3MiLCJyb290X2hhc2giOiJpQW5HZkU1OGNxbENpekkxbzlremRzMmRSM3JfTDh2ZkEtRnRVMFNUak5zIn0seyJwYXRoIjoiY3NzL2ZhbS1mbGFncy5jc3MiLCJyb290X2hhc2giOiJhbWMzTml0eGRYRWFSdWUyVXZSZ01qZlJ1U0hpQUllZm1TSG1KWlZnNkswIn0seyJwYXRoIjoiY3NzL2ZhcS5jc3MiLCJyb290X2hhc2giOiJNbFZjRzYyQVUtYTlBU1JDcktrVWZmNTBsYzVTMEh6U3pwODk5bW0yM1VNIn0seyJwYXRoIjoiY3NzL2ZvbnRlbGxvLmNzcyIsInJvb3RfaGFzaCI6IjE2U09ic3dvVDZmeTJfNElrM1ZyN3I3b2ZUU201YVYya3gzWmVCM1I3ZUUifSx7InBhdGgiOiJjc3MvZ2FtZXMuY3NzIiwicm9vdF9oYXNoIjoiOVRNQ0F0dU5fN3NfdTI4dVB0T0JISnNjZkdVNTR4WXNoUHpJSTN1UjNRZyJ9LHsicGF0aCI6ImNzcy9nZW5lcmFsLmNzcyIsInJvb3RfaGFzaCI6IlBaRWlBbXdRbmxIcm5xYnpIbElRUEQ0Qk1VTGM1czIwRVBWZ2stN1FldTQifSx7InBhdGgiOiJjc3MvaGlzdG9yeS5jc3MiLCJyb290X2hhc2giOiJCSVdRTUtmeXZNZWp1UUNhQlJiOWhHS29hdi0zTHBuUTExWUhsQ3VvSmQ0In0seyJwYXRoIjoiY3NzL2ludmVudHNjcmlwdC5jc3MiLCJyb290X2hhc2giOiJKWGpabmhMZHp3ckRNMDJfZ0V6V0lPdk9IUGplbDI0YkRrOGU1QXhHclFnIn0seyJwYXRoIjoiY3NzL2ludml0ZXMuY3NzIiwicm9vdF9oYXNoIjoiV0FTa2VNNHFhcnFiSmRyX3lUUU9oYjVTVXNWSUtNYmR4OTFFT2cxTVlwMCJ9LHsicGF0aCI6ImNzcy9qcXVlcnkuc2Nyb2xsYmFyLmNzcyIsInJvb3RfaGFzaCI6Ijd5QmF5aU8yNlVieUQ5RjN6b0NUc09KWnlTeDdUOXE0M0ZyQjZJMGVCdWcifSx7InBhdGgiOiJjc3MvbGlzdGluZ3MuY3NzIiwicm9vdF9oYXNoIjoiX2RHNndTamFvdTVHSUN1WmJDUkRReW9YUExLd0NFcE5jMjZGUTFJRFNFTSJ9LHsicGF0aCI6ImNzcy9tYXJrZXQuY3NzIiwicm9vdF9oYXNoIjoiT0Ezd2tPSlNLdFFRZ0gzbUx3N21UU0V3QmM4TExDRTNIbWxIZ1lZaFdhayJ9LHsicGF0aCI6ImNzcy9wb3B1cC5jc3MiLCJyb290X2hhc2giOiJ4RGJlREJGSW5wN2Iwcjk0RUxETEFqYkc1aVoyVWVkQzNTUjlZc2NIQ3dVIn0seyJwYXRoIjoiY3NzL3ByaWNlUXVldWUuY3NzIiwicm9vdF9oYXNoIjoiaHVMdEhBck80eUNtdmQ0RzluUEVCNUVQcmRiRDk4ZTRSMTJkYlhzOVBvVSJ9LHsicGF0aCI6ImNzcy9wcm9maWxlcy5jc3MiLCJyb290X2hhc2giOiJiR3hELXM2SVNtdUt6Y0lUSGhSUDNkSzdpRmpGdGFrdU5WMXg5SDZrajU4In0seyJwYXRoIjoiY3NzL3RyYWRlb2ZmZXIuY3NzIiwicm9vdF9oYXNoIjoiM2xJS1dpS2xSVEItQmwwQWpPRmVIWUdLeElSLVVzTFo1dWh6T0dvb1gzcyJ9LHsicGF0aCI6ImNzcy90cmFkZW9mZmVycy5jc3MiLCJyb290X2hhc2giOiJqUU95LTdMUmhJLUhPUUwtR3B4QzV3ekR4b1ViNjYtQlltbWgtSy1rM2dnIn0seyJwYXRoIjoiZm9udC9mb250ZWxsby5lb3QiLCJyb290X2hhc2giOiJGeExLQTkzX0pHOHZacjFWR29pTnNxU0w0STNKOGx3VlVfM0VXT196amtzIn0seyJwYXRoIjoiZm9udC9mb250ZWxsby5zdmciLCJyb290X2hhc2giOiI4T3hxTDdFdnd2YURCczhUUDJmbVd2SlVVOTg4bmh3MGZtUlRHX3NtVUNVIn0seyJwYXRoIjoiZm9udC9mb250ZWxsby50dGYiLCJyb290X2hhc2giOiJUQkUwOXRkc1J4ZGdRbnRVM05TUUtvZ042cWVsaDFZY0g1RGprVlQtMmJNIn0seyJwYXRoIjoiZm9udC9mb250ZWxsby53b2ZmIiwicm9vdF9oYXNoIjoibnVnZ2NMZFN6SXZwR3pkUTc5b1I4MEpFZ3NWTjJLajN1c1FQRjFUUXc3OCJ9LHsicGF0aCI6ImZvbnQvZm9udGVsbG8ud29mZjIiLCJyb290X2hhc2giOiJkdVlFcnpBNHd5M0JYVkZJdmVzUFMxa29NRWt4ZUJ3dVRyY1V0ekg3eUhnIn0seyJwYXRoIjoiaHRtbC9hYm91dC5odG1sIiwicm9vdF9oYXNoIjoiRDlyTXFWYnpVTGw5cFhiX1I1dkR0bm5RSnVZeHZKenRXM2JPRnJTZVdhMCJ9LHsicGF0aCI6Imh0bWwvYXV0b3JlcGx5Lmh0bWwiLCJyb290X2hhc2giOiJHbW5oUFEwS19JWmFpS0VVbUhiSlJWS055ODNfdWRrZ1dIVkl4VzZyVTNFIn0seyJwYXRoIjoiaHRtbC9ib29rbWFya2VkaXRlbXMuaHRtbCIsInJvb3RfaGFzaCI6InlsRzdZR1kyY3pia0xya2QzUFEyNUIyTUlza0dRa1AxZXEwOGhGVnVTaVUifSx7InBhdGgiOiJodG1sL2Jvb2ttYXJrcy5odG1sIiwicm9vdF9oYXNoIjoibW1HNy1QVEtyckhIN1F6QVR2VzlGSGVWMnRHaFNLYm5WTFNQc21mSVdNUSJ9LHsicGF0aCI6Imh0bWwvY2hhbmdlbG9ncy5odG1sIiwicm9vdF9oYXNoIjoiMmxUWmlGVEViRnJUaTRyQlNaYzFPNFIyYXgtSUZ3bFI5R0stcTdidVc4dyJ9LHsicGF0aCI6Imh0bWwvY3VzdG9tYnV0dG9ucy5odG1sIiwicm9vdF9oYXNoIjoicVFhVXN4NXljd0tZa0djalNCdVoxci1FcU1TV0UySmhUTVNJT2dpWko5YyJ9LHsicGF0aCI6Imh0bWwvZmFxLmh0bWwiLCJyb290X2hhc2giOiJKU2JiQVVfNVdaMXFOM251SjhlbzZpUWJKanh6QjZ1N2V1VENXT3QxbmFrIn0seyJwYXRoIjoiaHRtbC9ncmFwaC5odG1sIiwicm9vdF9oYXNoIjoiX1AyczVqa3J3VzZ1MTdqNVFzdm0tclJIMGRrZGxGZ3A0Z05acU9iaXJtbyJ9LHsicGF0aCI6Imh0bWwvbmV3dXBkYXRlLmh0bWwiLCJyb290X2hhc2giOiJwZ1NIMGxoNzhVY0M4Tk13S3lQSmdldi1zQU9ja0tldnZoUVdEVjZXeVcwIn0seyJwYXRoIjoiaHRtbC9vcHRpb25zLmh0bWwuZXhjbHVkZSIsInJvb3RfaGFzaCI6ImFJaWxJY09RZF9OVjlzbFpzbHQ5dDBXTlVBX3QwX3RMS3d5ekFhMVJuUTQifSx7InBhdGgiOiJodG1sL3BvcHVwLmh0bWwiLCJyb290X2hhc2giOiI5RUo2aVNTdWNVNTlpbDh0WjZFMXh3NktTT0pJQWppX3QtZnhDR1FjX1VBIn0seyJwYXRoIjoiaHRtbC90cmFkZW9mZmVycy5odG1sIiwicm9vdF9oYXNoIjoicmVIOEQ4WWJpNHo3SFJEb2d3ZldOWDZhWUlzTHJ5MElDRHlSQkJpME9zdyJ9LHsicGF0aCI6ImpzL0h0bWxQYWdlLmh0bWwiLCJyb290X2hhc2giOiI2ZDNJMjEyeE1Wc3ZPQUQ1RG5ibjJ1cnBLUDBmT0RXRDBZQVctSXUtRlRjIn0seyJwYXRoIjoianMvSmF2YVNjcmlwdC5qcyIsInJvb3RfaGFzaCI6Imp6SVBTWHhBaEwyZWlSOWRzQmFKQXZyX25zczJzLW1lRFREUHZkdmlEeDgifSx7InBhdGgiOiJqcy9QcmljZVF1ZXVlLmpzIiwicm9vdF9oYXNoIjoiYkFNSkh3T0hBM3RGVTA3OUJkYzRHcVdYcEdxUVA3aHBydkdRX2loU1dmWSJ9LHsicGF0aCI6ImpzL2F1dG9yZXBseS5qcyIsInJvb3RfaGFzaCI6Inlxc0lVTEtrVWdaVnRIb2c3YnhrWnhMQWxYOHBsZmFiTEwwcUtFUXhXYXcifSx7InBhdGgiOiJqcy9iYWRnZS5qcyIsInJvb3RfaGFzaCI6Ilo1LWZfalRsN25lNU8wZms4MEJqaE5HMzlTQlBsT1VIZjgxdDJ5Q1VNQ0EifSx7InBhdGgiOiJqcy9iYWRnZS5zY3JpcHQuanMiLCJyb290X2hhc2giOiJuTzU1ZFpMeFhXZnJsWUZZVjNZUDJuZTJhaFNGTnFFM2txQjc1cWFJdkVnIn0seyJwYXRoIjoianMvY29tbW9uL3NldHRpbmdzLmpzIiwicm9vdF9oYXNoIjoiLU9QNG4wV2ZsRFBfTGxrdmQ0MXIyMGx0R1h2amNFd3JTQjRkQUhMUmxZMCJ9LHsicGF0aCI6ImpzL2ZhcS5qcyIsInJvb3RfaGFzaCI6IjhKc1EwdDhBSHdESmF3b3JxUzBTcWV2SGdFeEVxQWVtQnNJNDFJYlFYTWMifSx7InBhdGgiOiJqcy9naWZ0cy5qcyIsInJvb3RfaGFzaCI6IkdDcXVzM1c0YzBQclh2WG1CZWR3Z2o5R1pTczhhaEZ6Sl9qZEJoVlFfczAifSx7InBhdGgiOiJqcy9naWZ0cy5zY3JpcHQuanMiLCJyb290X2hhc2giOiJ4Xy1uc2t3V1VpaHZhbjJOMWktaEJkdFVMN0ZtelpPQl9mdE5Ld2FxZnhFIn0seyJwYXRoIjoianMvaGVscGVyLmpzIiwicm9vdF9oYXNoIjoibl9iWThXRzdGbmxIS0NaV3lGaXpzUzIxZzBLNTVBRWZQRmFKbGpFaS0wdyJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC9oaWdoY2hhcnRzLW1vcmUuanMiLCJyb290X2hhc2giOiI3ZjVTekdEdHZMMGQzbERtNjl6Y1ZpaVNQUEFOTkN6d2JSVHg3RXhjbm9BIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L2hpZ2hjaGFydHMuanMiLCJyb290X2hhc2giOiJQZWdSVnhuX1BTX3VsTXZJa2dNS1BJS3U5cnZfdkxZME9TUjhLS041OVZJIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L21vZHVsZXMvYW5ub3RhdGlvbnMuanMiLCJyb290X2hhc2giOiJUN3ptUjFwNlFXckVHSm1ybzFwa1BwMzJkVWU0dWxQTmk3cndhS0tUOFIwIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L21vZHVsZXMvYW5ub3RhdGlvbnMuc3JjLmpzIiwicm9vdF9oYXNoIjoiR1BOckhUUVlvTkF6NDM5blVGVlp4M09TTVdTc3JUYWZWeHFORzhPZHFjVSJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC9tb2R1bGVzL2NhbnZhcy10b29scy5qcyIsInJvb3RfaGFzaCI6Ildxak1zV1VIcWlHc01vY2hWWUs1aEU3d25OdVViZlJJc2dpdXpyMjEwdXMifSx7InBhdGgiOiJqcy9oaWdoY2hhcnQvbW9kdWxlcy9jYW52YXMtdG9vbHMuc3JjLmpzIiwicm9vdF9oYXNoIjoiSFJCUGRBYWduQ19KSVl3YjhQemUyNGRVMDl4dThJVzY3Q0ZkU0hLMjVjUSJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC9tb2R1bGVzL2RhdGEuanMiLCJyb290X2hhc2giOiJhZUJmNTZXRlNpYmVsOGhZMVMzaW9RYjFMNXoxMDRFVUpfZ0RWQjJPbmpvIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L21vZHVsZXMvZGF0YS5zcmMuanMiLCJyb290X2hhc2giOiJ2eVBQZWtIN01OVXBoa0xYemxIUUFSSkZwYmdJanMyMXM4RG8waXVJNkk4In0seyJwYXRoIjoianMvaGlnaGNoYXJ0L21vZHVsZXMvZXhwb3J0aW5nLmpzIiwicm9vdF9oYXNoIjoiTTdWOTAxYmdTR3VkX254QVZydW9ub1ZkWG13YlkxTU1jWXpYSzFfRnFBSSJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC9tb2R1bGVzL2V4cG9ydGluZy5zcmMuanMiLCJyb290X2hhc2giOiJYTWJNRWdxNmxvQlFYQkJiLUpsak1GNU41aTZTU1lrNnNkWUdaOXFiQl9NIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L21vZHVsZXMvZnVubmVsLmpzIiwicm9vdF9oYXNoIjoiQkU5RHJjeTNVUUtEamlkclpYeEl0WVVWdzkwLWVkYzZPelZKLWRhUDBQbyJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC9tb2R1bGVzL2Z1bm5lbC5zcmMuanMiLCJyb290X2hhc2giOiJUQVAydUhSYTFkQkhSV3I2R3RzNW1KWEp5NktRZXBrVlp6NGhSTGFkeEwwIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L3RoZW1lcy9kYXJrLWJsdWUuanMiLCJyb290X2hhc2giOiJWWW9ZTFUzOEwwLTJYZ1E1VDRXOGV4bUtEUEhHX2c5T21sT1NfamhwR0hjIn0seyJwYXRoIjoianMvaGlnaGNoYXJ0L3RoZW1lcy9kYXJrLWdyZWVuLmpzIiwicm9vdF9oYXNoIjoiMFFPVEJjQlVVRk5jUmhnaWMzY3hKWjM0VUl0ZFRXeDRtMWRHQ3lraXRnSSJ9LHsicGF0aCI6ImpzL2hpZ2hjaGFydC90aGVtZXMvZ3JheS5qcyIsInJvb3RfaGFzaCI6InhkOHY1NTBlcnV0T1lkaXNidksxVzhoWHVjUFltbjFEZkw5VXpFM1l1TnMifSx7InBhdGgiOiJqcy9oaWdoY2hhcnQvdGhlbWVzL2dyaWQuanMiLCJyb290X2hhc2giOiJfSF96TlQwY3B4ZGZSNVlPUFhTWTMzTVhjZ1J6TTlIUEgtX19zQS0yMGk0In0seyJwYXRoIjoianMvaGlnaGNoYXJ0L3RoZW1lcy9za2llcy5qcyIsInJvb3RfaGFzaCI6IjVYVVFPWUZOU1Z1Rk9LR194RVVub1E3a1BrOC1GWUd0RGpHeC1fU0pCUlkifSx7InBhdGgiOiJqcy9oaXN0b3J5LmpzIiwicm9vdF9oYXNoIjoiWDRvTXV0QWl3eElOSkNqYTZLLXpvMUFSaF9VbVBfV0NuZ09SS3dEWk5kbyJ9LHsicGF0aCI6ImpzL2hpc3Rvcnkuc2NyaXB0LmpzIiwicm9vdF9oYXNoIjoicEFYWXFDalQ3YThUOGkyXzlXYW1LUXdUY25zNm1FSlFXbTRuWFN2Um42dyJ9LHsicGF0aCI6ImpzL2hvdmVybW9kLnNjcmlwdC5qcyIsInJvb3RfaGFzaCI6IlBYWVdSMERnVmR1dVNpMllmbGN1TTF4UE1XdEtoc1pHak1WeDU4U3NQU2MifSx7InBhdGgiOiJqcy9pbnZlbnRwcmljZS5qcyIsInJvb3RfaGFzaCI6IlFOSktCbGNJcS16ZDlLS2xfNFZvRlhtSkl3a1NFMDI3TV9YajQxV3lfRVkifSx7InBhdGgiOiJqcy9pbnZlbnRwcmljZS5zY3JpcHQuanMiLCJyb290X2hhc2giOiJmYUpSN2pDSUVlSlZBZEdlYXkxVFBnQzNOX0tySW9wWWR4U2tQRklxc0NvIn0seyJwYXRoIjoianMvaW52ZW50cHJpY2VfMTQwOTA2LnNjcmlwdC5qcy5leGNsdWRlIiwicm9vdF9oYXNoIjoiMmtOS2lTTnFMOTJjdlFrSXQ2MFRFSVBIZTM0cUhlUkhMcTktYlFmQ2VXTSJ9LHsicGF0aCI6ImpzL2ludmVudHNjcmlwdC51c2VyLmpzIiwicm9vdF9oYXNoIjoiNFNtNDRCMm10amRfdTF0MXNpUXV3UnFHOFVwRkduY0hHazJOMVg0aDE3cyJ9LHsicGF0aCI6ImpzL2ludml0ZXMuanMiLCJyb290X2hhc2giOiJNQW1OeDVqODR4MFpzZ3hqTHNkeVZ0NU0zNWY2emtKTVFxY0RCU0FOVk5jIn0seyJwYXRoIjoianMvaW52aXRlcy5zY3JpcHQuanMiLCJyb290X2hhc2giOiJqT2dsbTBZYXBkQXBkTlQ2RnJqc2FGU0pnUmdteUVDaTRwVjlfX1d6YjdVIn0seyJwYXRoIjoianMvanF1ZXJ5L2pxdWVyeS0xLjEwLjIubWluLmpzIiwicm9vdF9oYXNoIjoiY2FtcFhVLUdsVW4xclRUSk1ILS1OZndUYjdCMnExU0R0T0FPZ3FwSm0zayJ9LHsicGF0aCI6ImpzL2pxdWVyeS9qcXVlcnkuY29va2llLmpzIiwicm9vdF9oYXNoIjoibjhIcjNSMUpkQnBQQ3VzbC12cEcxektReXhPQnJ0UlZfNDBqdEVWd3JNRSJ9LHsicGF0aCI6ImpzL2pxdWVyeS9qcXVlcnkuc2Nyb2xsYmFyLm1pbi5qcyIsInJvb3RfaGFzaCI6IlgycE4zRGI0aDBiaTVfeG5xSjMzaUdQLU1aUWpoVlJRbFdrQjluZ1FHNVkifSx7InBhdGgiOiJqcy9qc29uLzQ0MC5qcy5leGNsdWRlIiwicm9vdF9oYXNoIjoiYm9JOW1pTFpvQTRiQVJEc2tsMzJGWmhBZXY3bVBUeGNNWk1INmJnWHJ0WSJ9LHsicGF0aCI6ImpzL2pzb24vNTcwLmpzLmV4Y2x1ZGUiLCJyb290X2hhc2giOiJCYzh0OXhwcFloLWtNOWlYOXJsdXZKMVFyRVNzdy1TWHZGRUc0YTlZemk0In0seyJwYXRoIjoianMvanNvbi81NzBfc2NoZW1hLmpzb24uZXhjbHVkZSIsInJvb3RfaGFzaCI6IlVOM1hyNW82VkVGSXNoRXA3eEYybENacWtOQmpEdmhHT3pBSVdvXzFjRVkifSx7InBhdGgiOiJqcy9qc29uLzczMC5qc29uLmV4Y2x1ZGUiLCJyb290X2hhc2giOiJMUHZJZTlPMUc3M0sxMzM4R3QwTFZBeU9ESTVyZ0NZNl9CUm81WmFKeVpZIn0seyJwYXRoIjoianMvanNvbi9QcmVkZWZpbmVkQnV0dG9ucy5qc29uIiwicm9vdF9oYXNoIjoicTZPN1VkY0NJSU9ZeWpYcHZLcHpxRkxZd2Y1alFZOWdKdXlYdFZDTVdaMCJ9LHsicGF0aCI6ImpzL2pzb24vdGYuanNvbiIsInJvb3RfaGFzaCI6IjhGTlZCazFzVHYwaTVXa0xXamxxNWVyRFh4SnVQcWg5Q1VTRkZ6S0VzOFEifSx7InBhdGgiOiJqcy9qc29uL3RmY3VyLmpzb24iLCJyb290X2hhc2giOiJfanI2aWpCTl83MVRFYXp1Q19NaVI5SW1JekJUR3lzbFYyRWZTZEJlZ1BnIn0seyJwYXRoIjoianMvanNvbjIuanMiLCJyb290X2hhc2giOiJTMXlXaEFpZy05enFfMW5aM1VOT3lVNU1EVi1aQ1Q4T2xQRnZhVUFRZUJBIn0seyJwYXRoIjoianMvbGFuZy9fZ2VuLmpzIiwicm9vdF9oYXNoIjoiNUpxYVRONHVoenoyX1V0a0hrLVdlQTBEV1UwR04wbEFNcExpY3hDZThUQSJ9LHsicGF0aCI6ImpzL2xhbmcvYmcuanMiLCJyb290X2hhc2giOiJiYm93aWo2SWU5R1hxcHN4c25VX2xqS0xYTnJCbDh6MWtKcjM1bG5Na0ZrIn0seyJwYXRoIjoianMvbGFuZy9jb21tb24uanMiLCJyb290X2hhc2giOiJJX2Fqc2UzTi1IX3JtSXU1VC1Edm9iZDVJMzR1Z1VOSXdlSjltVGZrU3ZNIn0seyJwYXRoIjoianMvbGFuZy9jcy5qcyIsInJvb3RfaGFzaCI6ImhyLWpOV1hLYkZRcEZyZVVTazRTZ3FkRkN0bmxMZHZsSVZ2YkltQ2RHWmMifSx7InBhdGgiOiJqcy9sYW5nL2RlLmpzIiwicm9vdF9oYXNoIjoiQjBtNnJ1blVJQWctZnVRVFZYVms4YWRXVWxIZ0c2clhrLXMwVkdkOE5DQSJ9LHsicGF0aCI6ImpzL2xhbmcvZW4uanMiLCJyb290X2hhc2giOiJyQWttOTFlbS14dGRmMzYxR08tLWxvbTVLNVpCUHA1THNEYjhwS3F3SE1JIn0seyJwYXRoIjoianMvbGFuZy9lcy5qcyIsInJvb3RfaGFzaCI6IlBuY29MbnFxNG9yQXlJelJKdlB6VC00TVhNYUgzYTlacGV4bXlsY3lNVVEifSx7InBhdGgiOiJqcy9sYW5nL2ZyLmpzIiwicm9vdF9oYXNoIjoiODhnVXdITUZxOWhmRmUxV3JSbktMY2pTNVhDYVBjcFEtaml6ZGQ5aGItRSJ9LHsicGF0aCI6ImpzL2xhbmcvaXQuanMiLCJyb290X2hhc2giOiJtNTZIb2RFOVA5YURHRDFySnU4LXByY3dIdk14RF82TGEybW1WenFGdHc4In0seyJwYXRoIjoianMvbGFuZy9rYS5qcyIsInJvb3RfaGFzaCI6IjFZRjJXeTFYM1cwTDdQbm01UEg5YXl3TGQ3MlltMXZ3c3hoNW9LNkUxc28ifSx7InBhdGgiOiJqcy9sYW5nL2x2LmpzIiwicm9vdF9oYXNoIjoiSnM1MFM3dk04MDg0RU1Iekh3cmdmemZ5M1lqZjBYd3g0dk5nVkN2bUtaUSJ9LHsicGF0aCI6ImpzL2xhbmcvcGwuanMiLCJyb290X2hhc2giOiJsN2szN2wyNWZ4MWp3RWJNMVVYSS11Q1QzZ3NRSDduM21ZN2cyNTBESUlNIn0seyJwYXRoIjoianMvbGFuZy9wdC5qcyIsInJvb3RfaGFzaCI6IlVtZmVHMXVvY0ZiZWhiaFRpX29HMlgxXzBSOEJsU2JRSU9ubHdMV29UNDAifSx7InBhdGgiOiJqcy9sYW5nL3JvLmpzIiwicm9vdF9oYXNoIjoiazRDRlMzNTE0SWdVdG4weS1UczZlaVc5SDRUam1IRlBiLWttdnRiemhqWSJ9LHsicGF0aCI6ImpzL2xhbmcvcnUuanMiLCJyb290X2hhc2giOiJTOVRuMG5oX1JpTzhINTJYWExjWGRwdVlaV18xc0NDaHZDSHVtT2hkN2pZIn0seyJwYXRoIjoianMvbGFuZy9zdi5qcyIsInJvb3RfaGFzaCI6IlhWdDZmSDdLU2RaNFBPdmtHRVM0VndDN2lIWlBQQ2lnU1pzT3B4THJpMFEifSx7InBhdGgiOiJqcy9sYW5nL3RyLmpzIiwicm9vdF9oYXNoIjoiWXZTUGkteHFhMHByU1RJQlAtVmRiTENZZ1ZGQ2tyRzFGanZraHN6ZUpnYyJ9LHsicGF0aCI6ImpzL2xhbmcvdWsuanMiLCJyb290X2hhc2giOiJLTWkyVldLNXJlRUFWMzVCR2pJdW9rRlp2ZFg5dXZFYnZuN19rc29PQjc0In0seyJwYXRoIjoianMvbGFuZy92aS5qcyIsInJvb3RfaGFzaCI6IlFZcGp4eXhHZmpNOGlBVkhXeWpuNFBLZVdvYUNTYXZTR2tvRkFQU1Q4bjgifSx7InBhdGgiOiJqcy9sYW5nL3poLUNOLmpzIiwicm9vdF9oYXNoIjoiRDZrVkdaSjdnMXZtWlp6V3lCdnpvRTRMcmozYk5UdWlhUlhMR2FPQ2h6cyJ9LHsicGF0aCI6ImpzL2xhbmcvemgtVFcuanMiLCJyb290X2hhc2giOiJUczVLT0tvY3NpbVJGemdCSTdpbnVaZmNkal9ZR0ZTRlBOUi04WXR0dUNNIn0seyJwYXRoIjoianMvbGFuZy96aC5qcyIsInJvb3RfaGFzaCI6IkQ2a1ZHWko3ZzF2bVpaeld5QnZ6b0U0THJqM2JOVHVpYVJYTEdhT0NoenMifSx7InBhdGgiOiJqcy9saXN0aW5nLmpzIiwicm9vdF9oYXNoIjoieEllQTg0aUI2aEZOWklpNGhubWRsTnJlR3JUQjRjaWlvMUpvWDFUS2pUWSJ9LHsicGF0aCI6ImpzL2xpc3Rpbmcuc2NyaXB0LmpzIiwicm9vdF9oYXNoIjoiQXlVb2xEMVRlZGhrNGlYMGVXYnR4YVZ4SXh2UU1LNTlXQUZMREVkWmFEVSJ9LHsicGF0aCI6ImpzL2xvbmcvbG9uZy5taW4uanMiLCJyb290X2hhc2giOiJrakNvZ0hsWXZUVllYYy0zbGlnLTFVM0drUjE0dFIwZzFaSVRCbmt0d2VnIn0seyJwYXRoIjoianMvbWFya2V0LmpzIiwicm9vdF9oYXNoIjoiejhnSWtBaEpSWEt3emV5dGRVVzVjN0tDMGh2a3BudXRUek0wbUtJWlczVSJ9LHsicGF0aCI6ImpzL21hcmtldC5zY3JpcHQuanMiLCJyb290X2hhc2giOiIzOFc5ZjR2ZW5rVFNkcGNXSlQ0UWNFc25hZUNiMUhpOXZfVjRsZnRRM1VFIn0seyJwYXRoIjoianMvb2ZmZXJub2YuanMiLCJyb290X2hhc2giOiJqTkVWZlNXOGpsdzdoUUZzYzNFZThWMTA5MmZUdlN6VmxFOUNRYW5laXY0In0seyJwYXRoIjoianMvb3B0aW9ucy5qcyIsInJvb3RfaGFzaCI6Ims5aF9pbU9tdmktdVVBa2MzRTdtZ2hGYkJCQk9QOVdHTHFuYVRBX19EUVkifSx7InBhdGgiOiJqcy9wYWdlcy9ib29rbWFya2VkaXRlbXMuanMiLCJyb290X2hhc2giOiIyUjRHMExzM2Q0aXh5UDlZX19zQi1DWUUzZDF3Z0tBQWhoWl85YjV4Y2Y4In0seyJwYXRoIjoianMvcGFnZXMvYm9va21hcmtzLmpzIiwicm9vdF9oYXNoIjoiSklBdUtvTHJrTDY2aGljaUpuXzcxTnlCOU5EbWFBWnpiUEJZYlV6ZWEtayJ9LHsicGF0aCI6ImpzL3BhZ2VzL2N1c3RvbWJ1dHRvbnMuanMiLCJyb290X2hhc2giOiI2b1NueHhKUkVhbUktT2RhN2JvNkdnSFUzRVgxVk8wTExZMTc3R1BRQzZVIn0seyJwYXRoIjoianMvcGFnZXMvZ3JhcGguanMiLCJyb290X2hhc2giOiJkLXJQWXBOYjN1UlloSC1HMHpTb0VxcW5tOXFxQzRtTWpTZTFsVExMaE5jIn0seyJwYXRoIjoianMvcGFnZXMvbmV3dXBkYXRlLmpzIiwicm9vdF9oYXNoIjoiZ3Q2c0NYSU1KVGdmWjRwSllqNldlUlp1OEZIVWJ5T1dNTzJ6RFQ3VnBWZyJ9LHsicGF0aCI6ImpzL3BhZ2VzL3BvcHVwLmpzIiwicm9vdF9oYXNoIjoiVDhYc0RueS1tdjVxMlVTU1hpN0NNVFpreFVYNnAxbUJWZjhha1l0TkYwdyJ9LHsicGF0aCI6ImpzL3BhZ2VzL3ByaWNlUXVldWUuanMiLCJyb290X2hhc2giOiIyOFd4eUhPeWY0R1ZTTDNZUUN4QllVUkRBR043UUFuMjdzOVhEVUNaOWkwIn0seyJwYXRoIjoianMvcGFnZXMvdHJhZGVvZmZlcnNwYWdlLmpzIiwicm9vdF9oYXNoIjoiSDlLNlFzYTBHWTViU2drN21UMy1ERUhYRWN4cTA1cHlhNXlEbjBQUmU3OCJ9LHsicGF0aCI6ImpzL3Byb2ZpbGUuanMiLCJyb290X2hhc2giOiJNSDNvRzZsMkVGQ2djWUwzX0FmbW1KYzUzSF9TVTVYY21aLTIwQzdla1BFIn0seyJwYXRoIjoianMvcHJvZmlsZS5zY3JpcHQuanMiLCJyb290X2hhc2giOiJGUlNsQ3lYSTAwLTEyT1FRZ2NoMFZ4TW93bjZEUHpsLURWbmdQR1puRTFRIn0seyJwYXRoIjoianMvc3RlYW0vZWNvbm9teV9jb21tb24uanMiLCJyb290X2hhc2giOiJYakFmSVR4alFTWFVsbmh6ajZkUDdlX1dicWlHS1pCc0VVV2d5aHAtM19nIn0seyJwYXRoIjoianMvc3RlYW0vZ2xvYmFsLmpzIiwicm9vdF9oYXNoIjoiQ1J3Yk9LazdrQWxUQzNuM2d5UGlQcXlKUzEtX0VlTFQ4R1phLVFMaE1ybyJ9LHsicGF0aCI6ImpzL3RyYWRlb2ZmZXIuanMiLCJyb290X2hhc2giOiJBa283QWdJV2FwRWFNUmpBckNSUjBacy1IaHV2UEk2N1p5TmJwcFAxLXFzIn0seyJwYXRoIjoianMvdHJhZGVvZmZlci5zY3JpcHQuanMiLCJyb290X2hhc2giOiJKemxfREdEVXNxRDRkZEU2N3F3elBraTBGQ040SXp2NW1wVEw0VWNzTjR3In0seyJwYXRoIjoianMvdHJhZGVvZmZlcnJldi5qcyIsInJvb3RfaGFzaCI6IkpMZkE3NXZRXzRTVkU0M1JIb3R4WUdSLW9VUnJYZjBkcHdmNjkzWGVodUUifSx7InBhdGgiOiJqcy90cmFkZW9mZmVycmV2LnNjcmlwdC5qcyIsInJvb3RfaGFzaCI6Ik94QXR2ZkVZSGF0d0N3cXlTNElSeHR3YS1PVWRaM1FuUTlrRjd5aXBwclUifSx7InBhdGgiOiJsYXRlc3RjaGFuZ2VzL2VuLmh0bWwiLCJyb290X2hhc2giOiJnYThNQWNNNGhsZ1FhQS1RZzYyc3JvS0JOYU5MS0NxaVBkQlpsT0xmZExZIn0seyJwYXRoIjoibGF0ZXN0Y2hhbmdlcy9ydS5odG1sIiwicm9vdF9oYXNoIjoiRUFHSnhyVWxHSjJZLXZ1Mmh5SXhMRS0yekdacDRaVEUxWDF2U2JLQ242OCJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJZN3hwZUpkTUpfNlVWQm9obGRBbWpadnhRMEdrd3BWTWNEQjJZZVZEamU0In0seyJwYXRoIjoidXNlcnNjcmlwdHMvYmFkZ2Uuc2NyaXB0Lm1pbi5qcyIsInJvb3RfaGFzaCI6Im5oY3gzalNMTzR1Tk9NSENIeW9hM0NHVXZJN3k2bnpHNngzLXpfZzN0cGMifSx7InBhdGgiOiJ1c2Vyc2NyaXB0cy9nZW4uanMiLCJyb290X2hhc2giOiJONTFFYzJpTFRIX0ZKaTJFNVoyY0dzSTdOdXZsaFRYcS1TM1B2LVZjLW53In0seyJwYXRoIjoidXNlcnNjcmlwdHMvaG92ZXJtb2Quc2NyaXB0Lm1pbi5qcyIsInJvb3RfaGFzaCI6IjhISWFWS2JoT0Nsd3B2WjBsdmFPQmdMMWZsT0Jpcmh4aXpqb3oxempybm8ifSx7InBhdGgiOiJ1c2Vyc2NyaXB0cy9pbnZlbnRwcmljZS5zY3JpcHQubWluLmpzIiwicm9vdF9oYXNoIjoiaGV1ZlVya2xTMVItOXRKV2tBemtvLVkzcFNLR1RGOGNaVW93VnF5aG9LWSJ9LHsicGF0aCI6InVzZXJzY3JpcHRzL2ludmVudHNjcmlwdC5jc3MiLCJyb290X2hhc2giOiJ5M1VrVHhaZExUWmV5eklzbmFJT3FvTmJtLTVZLVN1WnhieG00Y240Z0gwIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvaW52ZW50c2NyaXB0LnVzZXIuanMiLCJyb290X2hhc2giOiJWZ1pkZ0d3SnZhZHpaQ2VuTVNTRksxcWpnT0lPV08yNTl1c181dVBCYUlZIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvanF1ZXJ5LnNjcm9sbGJhci5jc3MiLCJyb290X2hhc2giOiI4VUxIUGYzTkhuZkMyRWU0dHlRMmxEM1NYcC1lNC16cmNJcnBWSWFRTU1RIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvanF1ZXJ5LnNjcm9sbGJhci5taW4uanMiLCJyb290X2hhc2giOiJuOWVDdmpVOW9nOThQTlEyM3FFR2FzTmVhUVNHME03bWwwRGtBd2doN0pVIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvbGlzdGluZy5zY3JpcHQubWluLmpzIiwicm9vdF9oYXNoIjoieC00amx5Qmc1S29pTUFpa0dvS0EzcHRHcUJJcGxhWWVUZnRYY3RVREtjMCJ9LHsicGF0aCI6InVzZXJzY3JpcHRzL21hcmtldC5jc3MiLCJyb290X2hhc2giOiIyTnpQa0ZuMVNZU1JUandIT2ZIRjBFcVhGN1B2UE1PT2pEaVlrQnZKRlJrIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvbWFya2V0LnNjcmlwdC5taW4uanMiLCJyb290X2hhc2giOiJRd0R0MTZEbU5zajJfemVxYnFoYU5QYkxMVm1Mb1BMSXk2TWx4am4yai1vIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvbWFya2V0LnVzZXIuanMiLCJyb290X2hhc2giOiIwVXpSdlZBTWJ4WGgtaVZ1M0txeUxZTGxFVVplclV6eE90T2oxU3pCZVZNIn0seyJwYXRoIjoidXNlcnNjcmlwdHMvbWFya2V0MS51c2VyLmpzIiwicm9vdF9oYXNoIjoiWjlkSDh6a0MyOGtaYUlJQUVmbDEydkJERGY5bEpvYUxKQ3htbzNKZVJqNCJ9LHsicGF0aCI6InVzZXJzY3JpcHRzL3RyYWRlb2ZmZXIudXNlci5qcyIsInJvb3RfaGFzaCI6IlpjVFpKMzJBdjZoNFhGY1pYQkN3VmtNcVpVYTEzUFd6WmhQNFdralNiTWMifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJjbWVha2dqZ2dqZGxjcG5jaWdnbG9icGpia2FiaG1qbCIsIml0ZW1fdmVyc2lvbiI6IjEuMTEuNC4yIiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"bkmwfs1oY7z-BIOs8y-q_s98cMG-6rqfL2L-D85CXnOCGnscGiID-gBfpV8g981R6e-7XR7lIl-lgSsIAv5utRReqkEDCx9F2TTQVFqJH_Sj_ySlslSgFYM_rzaPhk78Vdn33ABp9QQO9-rGmQI8wJhNqqNIB2GmCJKLHQbPdCUoUVKYgTxfphBk17ZBCPDMgYt84cDl491ru-aRHq-XAS2XO44lpEqa5UL7gHNtmAhJQ9azXLrwXuBumBVudxYQBm5_EZJ8saJlCnuwYVMPZPiwR0Bio5fRQw53SWtuj5vJ7L6jiQfE2SC1VaDBDA1fGlXsH1kTvjZikRIdGgbI5g"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"ElyDoXdgTyXC9ia4hQ7NFQ-CzGDV5k7GioFdeQdtjiOnnrpCg-V_9hpF-82RBe63ZESSZICdzQF_okthjMcvmJmdnrkpn5M26OCfxOtwY8IB1O4Ln-beYIjv2oVED5HHZn3vNHfCJHlDmX1SF-AwVghyJFYHXHUfpLobzpdbxn4RElOxSZMbII8jw4h0Z6Qmm5sW0SNQb21oTTspuTRM_F0P_jOPO1nz7WoRvgNTDI98rk125IAq2x0ylRYgmukt_N625iQCvGr4urpeOYBW8Lo_TY27eVevB0RFrWEH3iEt26LXDgG62GxMjwyT53yQFltUIN4GDlwoiiSDHFbTXw"}]}}] \ No newline at end of file diff --git a/assets/Communication-channel.ogg b/assets/Communication-channel.ogg new file mode 100644 index 0000000..4b27be8 Binary files /dev/null and b/assets/Communication-channel.ogg differ diff --git a/assets/Gets-in-the-way.ogg b/assets/Gets-in-the-way.ogg new file mode 100644 index 0000000..06a5dcf Binary files /dev/null and b/assets/Gets-in-the-way.ogg differ diff --git a/assets/Isnt-it.ogg b/assets/Isnt-it.ogg new file mode 100644 index 0000000..6fd82a6 Binary files /dev/null and b/assets/Isnt-it.ogg differ diff --git a/assets/Just-like-magic.ogg b/assets/Just-like-magic.ogg new file mode 100644 index 0000000..42e8052 Binary files /dev/null and b/assets/Just-like-magic.ogg differ diff --git a/assets/System-fault.ogg b/assets/System-fault.ogg new file mode 100644 index 0000000..4871630 Binary files /dev/null and b/assets/System-fault.ogg differ diff --git a/assets/badge_dev.png b/assets/badge_dev.png new file mode 100644 index 0000000..1728e05 Binary files /dev/null and b/assets/badge_dev.png differ diff --git a/assets/badge_don1.png b/assets/badge_don1.png new file mode 100644 index 0000000..0d8f581 Binary files /dev/null and b/assets/badge_don1.png differ diff --git a/assets/blank.gif b/assets/blank.gif new file mode 100644 index 0000000..f191b28 Binary files /dev/null and b/assets/blank.gif differ diff --git a/assets/bookmarked.png b/assets/bookmarked.png new file mode 100644 index 0000000..53e6671 Binary files /dev/null and b/assets/bookmarked.png differ diff --git a/assets/btbg.jpg b/assets/btbg.jpg new file mode 100644 index 0000000..41c92c1 Binary files /dev/null and b/assets/btbg.jpg differ diff --git a/assets/coins.ogg b/assets/coins.ogg new file mode 100644 index 0000000..432b1d6 Binary files /dev/null and b/assets/coins.ogg differ diff --git a/assets/csgofast.png b/assets/csgofast.png new file mode 100644 index 0000000..ed905b3 Binary files /dev/null and b/assets/csgofast.png differ diff --git a/assets/csgofast_small.png b/assets/csgofast_small.png new file mode 100644 index 0000000..46a0116 Binary files /dev/null and b/assets/csgofast_small.png differ diff --git a/assets/csmoney/big.png b/assets/csmoney/big.png new file mode 100644 index 0000000..6dcedee Binary files /dev/null and b/assets/csmoney/big.png differ diff --git a/assets/csmoney/mini.png b/assets/csmoney/mini.png new file mode 100644 index 0000000..c1a5249 Binary files /dev/null and b/assets/csmoney/mini.png differ diff --git a/assets/equipped.png b/assets/equipped.png new file mode 100644 index 0000000..faecff7 Binary files /dev/null and b/assets/equipped.png differ diff --git a/assets/flags/fam-flags.png b/assets/flags/fam-flags.png new file mode 100644 index 0000000..081e7c1 Binary files /dev/null and b/assets/flags/fam-flags.png differ diff --git a/assets/icon128.png b/assets/icon128.png new file mode 100644 index 0000000..5e833f5 Binary files /dev/null and b/assets/icon128.png differ diff --git a/assets/icon16.png b/assets/icon16.png new file mode 100644 index 0000000..0923c0d Binary files /dev/null and b/assets/icon16.png differ diff --git a/assets/icon19.png b/assets/icon19.png new file mode 100644 index 0000000..3f506ba Binary files /dev/null and b/assets/icon19.png differ diff --git a/assets/icon48.png b/assets/icon48.png new file mode 100644 index 0000000..25f4aa1 Binary files /dev/null and b/assets/icon48.png differ diff --git a/assets/intrade.png b/assets/intrade.png new file mode 100644 index 0000000..e607673 Binary files /dev/null and b/assets/intrade.png differ diff --git a/assets/json/cc.json b/assets/json/cc.json new file mode 100644 index 0000000..608263b --- /dev/null +++ b/assets/json/cc.json @@ -0,0 +1,255 @@ +{ + "None":"", + "Afghanistan":"af", + "Albania":"al", + "Algeria":"dz", + "American Samoa":"as", + "Andorra":"ad", + "Angola":"ao", + "Anguilla":"ai", + "Antigua and Barbuda":"ag", + "Argentina":"ar", + "Armenia":"am", + "Aruba":"aw", + "Australia":"au", + "Austria":"at", + "Azerbaijan":"az", + "Bahamas":"bs", + "Bahrain":"bh", + "Bangladesh":"bd", + "Barbados":"bb", + "Belarus":"by", + "Belgium":"be", + "Belize":"bz", + "Benin":"bj", + "Bermuda":"bm", + "Bhutan":"bt", + "Bolivia, Plurinational State of":"bo", + "Bosnia and Herzegovina":"ba", + "Botswana":"bw", + "Bouvet Island":"bv", + "Brazil":"br", + "British Indian Ocean Territory":"io", + "Brunei Darussalam":"bn", + "Bulgaria":"bg", + "Burkina Faso":"bf", + "Cambodia":"kh", + "Cameroon":"cm", + "Canada":"ca", + "Canary Islands":"ic", + "Cape Verde":"cv", + "Catalonia":"catalonia", + "Cayman Islands":"ky", + "Central African Republic":"cf", + "Chad":"td", + "Chile":"cl", + "China":"cn", + "Colombia":"co", + "Comoros":"km", + "Congo":"cg", + "Congo, The Democratic Republic of the":"cd", + "Cook Islands":"ck", + "Costa Rica":"cr", + "Cote d'Ivoire":"ci", + "Croatia":"hr", + "Cuba":"cu", + "Curacao":"cw", + "Cyprus":"cy", + "Czech Republic":"cz", + "Denmark":"dk", + "Djibouti":"dj", + "Dominica":"dm", + "Dominican Republic":"do", + "Ecuador":"ec", + "Egypt":"eg", + "El Salvador":"sv", + "England":"england", + "Equatorial Guinea":"gq", + "Eritrea":"er", + "Estonia":"ee", + "Ethiopia":"et", + "European Union":"eu", + "Falkland Islands (Malvinas":"fk", + "Faroe Islands":"fo", + "Fiji":"fj", + "Finland":"fi", + "France":"fr", + "French Guiana":"gf", + "French Polynesia":"pf", + "French Southern Territories":"tf", + "Gabon":"ga", + "Gambia":"gm", + "Georgia":"ge", + "Germany":"de", + "Ghana":"gh", + "Gibraltar":"gi", + "Greece":"gr", + "Greenland":"gl", + "Grenada":"gd", + "Guadeloupe":"gp", + "Guam":"gu", + "Guatemala":"gt", + "Guernsey":"gg", + "Guinea":"gn", + "Guinea-Bissau":"gw", + "Guyana":"gy", + "Haiti":"ht", + "Heard Island and McDonald Islands":"hm", + "Holy See (Vatican City State":"va", + "Honduras":"hn", + "Hong Kong":"hk", + "Hungary":"hu", + "Iceland":"is", + "India":"in", + "Indonesia":"id", + "Iran, Islamic Republic of":"ir", + "Iraq":"iq", + "Ireland":"ie", + "Isle of Man":"im", + "Israel":"il", + "Italy":"it", + "Jamaica":"jm", + "Japan":"jp", + "Jersey":"je", + "Jordan":"jo", + "Kazakhstan":"kz", + "Kenya":"ke", + "Kiribati":"ki", + "Korea, Democratic People's Republic of":"kp", + "Korea, Republic of":"kr", + "Kosovo":"xk", + "Kurdistan":"kurdistan", + "Kuwait":"kw", + "Kyrgyzstan":"kg", + "Lao People's Democratic Republic":"la", + "Latvia":"lv", + "Lebanon":"lb", + "Lesotho":"ls", + "Liberia":"lr", + "Libya":"ly", + "Liechtenstein":"li", + "Lithuania":"lt", + "Luxembourg":"lu", + "Macao":"mo", + "Macedonia, The Former Yugoslav Republic of":"mk", + "Madagascar":"mg", + "Malawi":"mw", + "Malaysia":"my", + "Maldives":"mv", + "Mali":"ml", + "Malta":"mt", + "Marshall Islands":"mh", + "Martinique":"mq", + "Mauritania":"mr", + "Mauritius":"mu", + "Mayotte":"yt", + "Mexico":"mx", + "Micronesia, Federated States of":"fm", + "Moldova, Republic of":"md", + "Monaco":"mc", + "Mongolia":"mn", + "Montenegro":"me", + "Montserrat":"ms", + "Morocco":"ma", + "Mozambique":"mz", + "Myanmar":"mm", + "Namibia":"na", + "Nauru":"nr", + "Nepal":"np", + "Netherlands":"nl", + "Netherlands Antilles":"an", + "New Caledonia":"nc", + "New Zealand":"nz", + "Nicaragua":"ni", + "Niger":"ne", + "Nigeria":"ng", + "Niue":"nu", + "Norfolk Island":"nf", + "Northern Mariana Islands":"mp", + "Norway":"no", + "Oman":"om", + "Pakistan":"pk", + "Palau":"pw", + "Palestinian Territory, Occupied":"ps", + "Panama":"pa", + "Papua New Guinea":"pg", + "Paraguay":"py", + "Peru":"pe", + "Philippines":"ph", + "Pitcairn":"pn", + "Poland":"pl", + "Portugal":"pt", + "Puerto Rico":"pr", + "Qatar":"qa", + "Reunion":"re", + "Romania":"ro", + "Russian Federation":"ru", + "Rwanda":"rw", + "Saint Helena":"sh", + "Saint Kitts and Nevis":"kn", + "Saint Lucia":"lc", + "Saint Pierre and Miquelon":"pm", + "Saint Vincent and the Grenadines":"vc", + "Samoa":"ws", + "San Marino":"sm", + "Sao Tome and Principe":"st", + "Saudi Arabia":"sa", + "Scotland":"scotland", + "Senegal":"sn", + "Serbia":"rs", + "Seychelles":"sc", + "Sierra Leone":"sl", + "Singapore":"sg", + "Sint Maarten":"sx", + "Slovakia":"sk", + "Slovenia":"si", + "Solomon Islands":"sb", + "Somalia":"so", + "Somaliland":"somaliland", + "South Africa":"za", + "South Georgia and the South Sandwich Islands":"gs", + "South Sudan":"ss", + "Spain":"es", + "Sri Lanka":"lk", + "Sudan":"sd", + "Suriname":"sr", + "Swaziland":"sz", + "Sweden":"se", + "Switzerland":"ch", + "Syrian Arab Republic":"sy", + "Taiwan, Province of China":"tw", + "Tajikistan":"tj", + "Tanzania":"tz", + "Thailand":"th", + "Tibet":"tibet", + "Timor-Leste":"tl", + "Togo":"tg", + "Tokelau":"tk", + "Tonga":"to", + "Trinidad and Tobago":"tt", + "Tunisia":"tn", + "Turkey":"tr", + "Turkmenistan":"tm", + "Turks and Caicos Islands":"tc", + "Tuvalu":"tv", + "Uganda":"ug", + "Ukraine":"ua", + "United Arab Emirates":"ae", + "United Kingdom":"gb", + "United States":"us", + "United States Minor Outlying Islands":"um", + "Uruguay":"uy", + "Uzbekistan":"uz", + "Vanuatu":"vu", + "Venezuela, Bolivarian Republic of":"ve", + "Viet Nam":"vn", + "Virgin Islands, British":"vg", + "Virgin Islands, U.S":"vi", + "Wales":"wales", + "Wallis and Futuna":"wf", + "Western Sahara":"eh", + "Yemen":"ye", + "Zambia":"zm", + "Zanzibar":"zanzibar", + "Zimbabwe":"zw" +} diff --git a/assets/json/stores.json b/assets/json/stores.json new file mode 100644 index 0000000..7ac60fb --- /dev/null +++ b/assets/json/stores.json @@ -0,0 +1,142 @@ +[ + { + "id": "steam", + "title": "Steam", + "color": "#9ffc3a" + }, + { + "id": "gamersgate", + "title": "GamersGate", + "color": "#fc5d5d" + }, + { + "id": "impulse", + "title": "GameStop PC", + "color": "#c63f62" + }, + { + "id": "gamesplanet", + "title": "GamesPlanet UK", + "color": "#f6a740" + }, + { + "id": "gamesplanetfr", + "title": "GamesPlanet FR", + "color": "#f6a740" + }, + { + "id": "gamesplanetde", + "title": "GamesPlanet DE", + "color": "#f6a740" + }, + { + "id": "gog", + "title": "GOG", + "color": "#f16421" + }, + { + "id": "dotemu", + "title": "DotEmu", + "color": "#f6931c" + }, + { + "id": "amazonus", + "title": "Amazon", + "color": "#fcc588" + }, + { + "id": "indiegalastore", + "title": "IndieGala Store", + "color": "#ffb4e0" + }, + { + "id": "dlgamer", + "title": "DLGamer", + "color": "#f5fe94" + }, + { + "id": "direct2drive", + "title": "Direct2Drive", + "color": "#1df884" + }, + { + "id": "origin", + "title": "Origin PC", + "color": "#ddff1c" + }, + { + "id": "uplay", + "title": "Uplay PC", + "color": "#01657a" + }, + { + "id": "humblewidgets", + "title": "Humble Widgets", + "color": "#f8300c" + }, + { + "id": "humblestore", + "title": "Humble Store", + "color": "#ff3e1b" + }, + { + "id": "indiegamestand", + "title": "IndieGameStand", + "color": "#73c175" + }, + { + "id": "squenix", + "title": "Square Enix", + "color": "#b41919" + }, + { + "id": "bundlestars", + "title": "Bundle Stars", + "color": "#d0fe00" + }, + { + "id": "fireflower", + "title": "FireFlower", + "color": "#29698c" + }, + { + "id": "newegg", + "title": "Newegg", + "color": "#f79328" + }, + { + "id": "coinplay", + "title": "Coinplay.io", + "color": "#1b4284" + }, + { + "id": "wingamestore", + "title": "WinGameStore", + "color": "#0b3e65" + }, + { + "id": "macgamestore", + "title": "MacGameStore", + "color": "#0b3e65" + }, + { + "id": "gamebillet", + "title": "GameBillet", + "color": "#f22f15" + }, + { + "id": "silagames", + "title": "SilaGames", + "color": "#f9cf6b" + }, + { + "id": "imperialgames", + "title": "Imperial Games", + "color": "#16a085" + }, + { + "id": "battlenet", + "title": "Battle.net", + "color": "#00cbe6" + } +] diff --git a/assets/json/tf2_quality.json b/assets/json/tf2_quality.json new file mode 100644 index 0000000..67a9418 --- /dev/null +++ b/assets/json/tf2_quality.json @@ -0,0 +1,25 @@ +{ + "Stock": "0", + "Normal": "0", + "Vintage": "3", + "Genuine": "1", + "rarity1": "1", + "rarity2": "2", + "rarity3": "4", + "Unusual": "5", + "rarity4": "5", + "Unique": "6", + "Community": "7", + "Valve": "8", + "developer": "8", + "Self-Made": "9", + "selfmade": "9", + "customized": "10", + "Strange": "11", + "completed": "12", + "Haunted": "13", + "Collector's": "14", + "collectors": "14", + "Decorated": "15", + "paintkitweapon": "15" +} diff --git a/assets/knife.png b/assets/knife.png new file mode 100644 index 0000000..17f4b19 Binary files /dev/null and b/assets/knife.png differ diff --git a/assets/magnifier.png b/assets/magnifier.png new file mode 100644 index 0000000..b9f5a2f Binary files /dev/null and b/assets/magnifier.png differ diff --git a/assets/nof.ogg b/assets/nof.ogg new file mode 100644 index 0000000..46e7ccd Binary files /dev/null and b/assets/nof.ogg differ diff --git a/assets/offersound.ogg b/assets/offersound.ogg new file mode 100644 index 0000000..c914afb Binary files /dev/null and b/assets/offersound.ogg differ diff --git a/assets/providers/csgobp.png b/assets/providers/csgobp.png new file mode 100644 index 0000000..485ab36 Binary files /dev/null and b/assets/providers/csgobp.png differ diff --git a/assets/providers/csgofast.png b/assets/providers/csgofast.png new file mode 100644 index 0000000..0f25f0f Binary files /dev/null and b/assets/providers/csgofast.png differ diff --git a/assets/providers/opskins.png b/assets/providers/opskins.png new file mode 100644 index 0000000..8ad2e66 Binary files /dev/null and b/assets/providers/opskins.png differ diff --git a/assets/providers/skinsjar.png b/assets/providers/skinsjar.png new file mode 100644 index 0000000..d96e26f Binary files /dev/null and b/assets/providers/skinsjar.png differ diff --git a/assets/providers/tf2.png b/assets/providers/tf2.png new file mode 100644 index 0000000..8707816 Binary files /dev/null and b/assets/providers/tf2.png differ diff --git a/assets/verified.png b/assets/verified.png new file mode 100644 index 0000000..ed47e04 Binary files /dev/null and b/assets/verified.png differ diff --git a/bundle/css/gameprice.css b/bundle/css/gameprice.css new file mode 100644 index 0000000..3730037 --- /dev/null +++ b/bundle/css/gameprice.css @@ -0,0 +1 @@ +@font-face{font-family:fontello;src:url("chrome-extension://__MSG_@@extension_id__/font/fontello.eot?49913611");src:url("chrome-extension://__MSG_@@extension_id__/font/fontello.eot?49913611#iefix") format("embedded-opentype"),url("chrome-extension://__MSG_@@extension_id__/font/fontello.woff2?49913611") format("woff2"),url("chrome-extension://__MSG_@@extension_id__/font/fontello.woff?49913611") format("woff"),url("chrome-extension://__MSG_@@extension_id__/font/fontello.ttf?49913611") format("truetype"),url("chrome-extension://__MSG_@@extension_id__/font/fontello.svg?49913611#fontello") format("svg");font-weight:400;font-style:normal}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-check-circled:before{content:"\E800"}.icon-check-squared:before{content:"\E801"}.icon-check:before{content:"\E802"}.icon-eye:before{content:"\E803"}.icon-steam:before{content:"\F1B6"}.icon-steam-squared:before{content:"\F1B7"}.icon-twitch:before{content:"\F1E8"}.icon-youtube:before{content:"\F313"} \ No newline at end of file diff --git a/bundle/js/RequestCacher.js b/bundle/js/RequestCacher.js new file mode 100644 index 0000000..6b5d666 --- /dev/null +++ b/bundle/js/RequestCacher.js @@ -0,0 +1 @@ +var RequestCacher=function(t){function n(e){if(r[e])return r[e].exports;var i=r[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var r={};return n.m=t,n.c=r,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=408)}([function(t,n,r){var e=r(2),i=r(22),o=r(12),u=r(13),c=r(19),s=function(t,n,r){var a,f,l,h,p=t&s.F,v=t&s.G,d=t&s.S,y=t&s.P,g=t&s.B,m=v?e:d?e[n]||(e[n]={}):(e[n]||{}).prototype,_=v?i:i[n]||(i[n]={}),b=_.prototype||(_.prototype={});v&&(r=n);for(a in r)f=!p&&m&&void 0!==m[a],l=(f?m:r)[a],h=g&&f?c(l,e):y&&"function"==typeof l?c(Function.call,l):l,m&&u(m,a,l,t&s.U),_[a]!=l&&o(_,a,h),y&&b[a]!=l&&(b[a]=l)};e.core=i,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,n,r){var e=r(4);t.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){var e=r(66)("wks"),i=r(43),o=r(2).Symbol,u="function"==typeof o;(t.exports=function(t){return e[t]||(e[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=e},function(t,n,r){t.exports=!r(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n,r){var e=r(1),i=r(107),o=r(26),u=Object.defineProperty;n.f=r(6)?Object.defineProperty:function(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(25),i=Math.min;t.exports=function(t){return t>0?i(e(t),9007199254740991):0}},function(t,n,r){var e=r(23);t.exports=function(t){return Object(e(t))}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(7),i=r(39);t.exports=r(6)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){var e=r(2),i=r(12),o=r(11),u=r(43)("src"),c=Function.toString,s=(""+c).split("toString");r(22).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,r,c){var a="function"==typeof r;a&&(o(r,"name")||i(r,"name",n)),t[n]!==r&&(a&&(o(r,u)||i(r,u,t[n]?""+t[n]:s.join(n+""))),t===e?t[n]=r:c?t[n]?t[n]=r:i(t,n,r):(delete t[n],i(t,n,r)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||c.call(this)})},function(t,n,r){var e=r(0),i=r(3),o=r(23),u=function(t,n,r,e){var i=o(t)+"",u="<"+n;return""!==r&&(u+=" "+r+'="'+(e+"").replace(/"/g,""")+'"'),u+">"+i+""};t.exports=function(t,n){var r={};r[t]=n(u),e(e.P+e.F*i(function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3}),"String",r)}},function(t,n,r){var e=r(51),i=r(23);t.exports=function(t){return e(i(t))}},function(t,n,r){var e=r(52),i=r(39),o=r(15),u=r(26),c=r(11),s=r(107),a=Object.getOwnPropertyDescriptor;n.f=r(6)?a:function(t,n){if(t=o(t),n=u(n,!0),s)try{return a(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(11),i=r(9),o=r(87)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(10);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},function(t,n,r){"use strict";var e=r(3);t.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},function(t,n,r){var e=r(19),i=r(51),o=r(9),u=r(8),c=r(72);t.exports=function(t,n){var r=1==t,s=2==t,a=3==t,f=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var d,y,g=o(n),m=i(g),_=e(c,v,3),b=u(m.length),x=0,w=r?p(n,b):s?p(n,0):void 0;b>x;x++)if((h||x in m)&&(d=m[x],y=_(d,x,g),t))if(r)w[x]=y;else if(y)switch(t){case 3:return!0;case 5:return d;case 6:return x;case 2:w.push(d)}else if(f)return!1;return l?-1:a||f?f:w}}},function(t,n){var r=t.exports={version:"2.5.0"};"number"==typeof __e&&(__e=r)},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(0),i=r(22),o=r(3);t.exports=function(t,n){var r=(i.Object||{})[t]||Object[t],u={};u[t]=n(r),e(e.S+e.F*o(function(){r(1)}),"Object",u)}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(4);t.exports=function(t,n){if(!e(t))return t;var r,i;if(n&&"function"==typeof(r=t.toString)&&!e(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!e(i=r.call(t)))return i;if(!n&&"function"==typeof(r=t.toString)&&!e(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,n,r){"use strict";(function(t){function n(t,n,r){t[n]||Object[e](t,n,{writable:!0,configurable:!0,value:r})}if(r(340),r(341),r(138),t._babelPolyfill)throw Error("only one instance of babel-polyfill is allowed");t._babelPolyfill=!0;var e="defineProperty";n(String.prototype,"padLeft","".padStart),n(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(t){[][t]&&n(Array,t,Function.call.bind([][t]))})}).call(n,r(97))},function(t,n,r){var e=r(127),i=r(0),o=r(66)("metadata"),u=o.store||(o.store=new(r(130))),c=function(t,n,r){var i=u.get(t);if(!i){if(!r)return;u.set(t,i=new e)}var o=i.get(n);if(!o){if(!r)return;i.set(n,o=new e)}return o},s=function(t,n,r){var e=c(n,r,!1);return void 0!==e&&e.has(t)},a=function(t,n,r){var e=c(n,r,!1);return void 0===e?void 0:e.get(t)},f=function(t,n,r,e){c(r,e,!0).set(t,n)},l=function(t,n){var r=c(t,n,!1),e=[];return r&&r.forEach(function(t,n){e.push(n)}),e},h=function(t){return void 0===t||"symbol"==typeof t?t:t+""},p=function(t){i(i.S,"Reflect",t)};t.exports={store:u,map:c,has:s,get:a,set:f,keys:l,key:h,exp:p}},function(t,n,r){"use strict";if(r(6)){var e=r(36),i=r(2),o=r(3),u=r(0),c=r(68),s=r(93),a=r(19),f=r(34),l=r(39),h=r(12),p=r(40),v=r(25),d=r(8),y=r(125),g=r(42),m=r(26),_=r(11),b=r(50),x=r(4),w=r(9),S=r(79),E=r(37),O=r(17),P=r(38).f,M=r(95),T=r(43),j=r(5),A=r(21),F=r(54),k=r(67),R=r(96),N=r(45),I=r(61),L=r(41),C=r(71),D=r(99),U=r(7),W=r(16),G=U.f,q=W.f,B=i.RangeError,V=i.TypeError,z=i.Uint8Array,H=Array.prototype,X=s.ArrayBuffer,J=s.DataView,K=A(0),Y=A(2),$=A(3),Q=A(4),Z=A(5),tt=A(6),nt=F(!0),rt=F(!1),et=R.values,it=R.keys,ot=R.entries,ut=H.lastIndexOf,ct=H.reduce,st=H.reduceRight,at=H.join,ft=H.sort,lt=H.slice,ht=H.toString,pt=H.toLocaleString,vt=j("iterator"),dt=j("toStringTag"),yt=T("typed_constructor"),gt=T("def_constructor"),mt=c.CONSTR,_t=c.TYPED,bt=c.VIEW,xt=A(1,function(t,n){return Pt(k(t,t[gt]),n)}),wt=o(function(){return 1===new z(new Uint16Array([1]).buffer)[0]}),St=!!z&&!!z.prototype.set&&o(function(){new z(1).set({})}),Et=function(t,n){var r=v(t);if(r<0||r%n)throw B("Wrong offset!");return r},Ot=function(t){if(x(t)&&_t in t)return t;throw V(t+" is not a typed array!")},Pt=function(t,n){if(!(x(t)&&yt in t))throw V("It is not a typed array constructor!");return new t(n)},Mt=function(t,n){return Tt(k(t,t[gt]),n)},Tt=function(t,n){for(var r=0,e=n.length,i=Pt(t,e);e>r;)i[r]=n[r++];return i},jt=function(t,n,r){G(t,n,{get:function(){return this._d[r]}})},At=function(t){var n,r,e,i,o,u,c=w(t),s=arguments.length,f=s>1?arguments[1]:void 0,l=void 0!==f,h=M(c);if(void 0!=h&&!S(h)){for(u=h.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(l&&s>2&&(f=a(f,arguments[2],2)),n=0,r=d(c.length),i=Pt(this,r);r>n;n++)i[n]=l?f(c[n],n):c[n];return i},Ft=function(){for(var t=0,n=arguments.length,r=Pt(this,n);n>t;)r[t]=arguments[t++];return r},kt=!!z&&o(function(){pt.call(new z(1))}),Rt=function(){return pt.apply(kt?lt.call(Ot(this)):Ot(this),arguments)},Nt={copyWithin:function(t,n){return D.call(Ot(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Q(Ot(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return C.apply(Ot(this),arguments)},filter:function(t){return Mt(this,Y(Ot(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Z(Ot(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){K(Ot(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return rt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return at.apply(Ot(this),arguments)},lastIndexOf:function(t){return ut.apply(Ot(this),arguments)},map:function(t){return xt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Ot(this),arguments)},reduceRight:function(t){return st.apply(Ot(this),arguments)},reverse:function(){for(var t,n=this,r=Ot(n).length,e=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function(t){return ft.call(Ot(this),t)},subarray:function(t,n){var r=Ot(this),e=r.length,i=g(t,e);return new(k(r,r[gt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,d((void 0===n?e:g(n,e))-i))}},It=function(t,n){return Mt(this,lt.call(Ot(this),t,n))},Lt=function(t){Ot(this);var n=Et(arguments[1],1),r=this.length,e=w(t),i=d(e.length),o=0;if(i+n>r)throw B("Wrong length!");for(;o255?255:255&e),i.v[p](r*n+i.o,e,wt)},j=function(t,n){G(t,n,{get:function(){return M(this,n)},set:function(t){return T(this,n,t)},enumerable:!0})};_?(v=r(function(t,r,e,i){f(t,v,a,"_d");var o,u,c,s,l=0,p=0;if(x(r)){if(!(r instanceof X||"ArrayBuffer"==(s=b(r))||"SharedArrayBuffer"==s))return _t in r?Tt(v,r):At.call(v,r);o=r,p=Et(e,n);var g=r.byteLength;if(void 0===i){if(g%n)throw B("Wrong length!");if((u=g-p)<0)throw B("Wrong length!")}else if((u=d(i)*n)+p>g)throw B("Wrong length!");c=u/n}else c=y(r),u=c*n,o=new X(u);for(h(t,"_d",{b:o,o:p,l:u,e:c,v:new J(o)});l_;_++)if((y=n?m(u(v=t[_])[0],v[1]):m(t[_]))===a||y===f)return y}else for(d=g.call(t);!(v=d.next()).done;)if((y=i(d,m,v.value,n))===a||y===f)return y};n.BREAK=a,n.RETURN=f},function(t,n){t.exports=!1},function(t,n,r){var e=r(1),i=r(115),o=r(75),u=r(87)("IE_PROTO"),c=function(){},s=function(){var t,n=r(74)("iframe"),e=o.length;for(n.style.display="none",r(77).appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write(" + + + + + diff --git a/html/autoreply.html b/html/autoreply.html new file mode 100644 index 0000000..a20e9d3 --- /dev/null +++ b/html/autoreply.html @@ -0,0 +1,64 @@ + + + + SIH - Auto reply configurations + + + + +
+

Auto reply settings

+
+
Online:
+
+ + +
+
+
+
Away:
+
+ + +
+
+
+
Busy:
+
+ + +
+
+
+
Looking to play:
+
+ + +
+
+
+
Looking to trade:
+
+ + +
+
+
+
In game:
+
+ + +
+
+
+
 
+
+ Save +
+
+
+ + + + + diff --git a/html/bookmarkeditems.html b/html/bookmarkeditems.html new file mode 100644 index 0000000..e6548aa --- /dev/null +++ b/html/bookmarkeditems.html @@ -0,0 +1,41 @@ + + + + Bookmarked items + + + + + + +
+ +
+
+
+
Name
+
Volume
+
Price
+
 
+
+
+
+
+ + + + + + + + + + + diff --git a/html/bookmarks.html b/html/bookmarks.html new file mode 100644 index 0000000..296714a --- /dev/null +++ b/html/bookmarks.html @@ -0,0 +1,32 @@ + + + + + + Bookmarks categories + + +
+

Manage bookmarks

+

List of categories

+
+
+
+ +

Add categories

+
+
Category's name
+
+ +   + +
+
+
+ + + + + + + diff --git a/html/changelogs.html b/html/changelogs.html new file mode 100644 index 0000000..3b37444 --- /dev/null +++ b/html/changelogs.html @@ -0,0 +1,1325 @@ + + + + + + SIH Changelogs + + + + + +

Steam Inventory Helper (SIH)

+

Release Notes and Changelog

+
+

Version 1.11.4

+
+
    +
  • Fixed: Mass listing not working.
  • +
  • Added: PLAYERUNKNOWN'S BATTLEGROUNDS external prices (OPSKINS).
  • +
  • Added: Steam Community items external prices (OPSKINS).
  • +
  • Added: Bookmarks "evolved". You will be able to create a lists with the bookmarks, to manage them as you wish. (This function is in beta and will be corrected a bit in the next update).
  • +
  • Corrected: Steam API key enter field is moved to the top in the settings.
  • +
  • Added: Updated Turkish translations.
  • +
  • Corrected: Inventory total price calculation function.
  • +
+
+
+
+

Version 1.11.3

+
+
    +
  • Fixed: Missing "In trade" tag in the trade offers.
  • +
  • Fixed: Missing items prices, trade info in the trade offers page.
  • +
  • Added: Updated translations strings (in the FAQ section). If you wish to translate SIH to your language - You are welcome :) Send a message with the edited strings to our email.
  • +
  • Added: Updated Russian translations.
  • +
+
+
+
+

Version 1.11.2

+
+
    +
  • Fixed: GLWS links.
  • +
  • Fixed: Russian translations in all extension.
  • +
  • Fixed: Nothing happening when you have two or more same cards selected in the mass listing function and trying + to sell them.
  • +
  • Fixed: Bug when you have selected cards that are not available to sell currently with the items that are + available to sell and trying to sell them all via mass listing function. Normal items (available to sell) + were trying to be sold with the "autoadjust" checkbox.
  • +
  • Fixed: Function to show "Not tradable items" accuring some errors and not showing items that are not available + to sell and got sell couldown.
  • +
  • Fixed: Prices on the weapon icons in the mass listing queue are dissapeared.
  • +
  • Fixed: Bug when gifted items with the description in DOTA2 inventory could run a html code with the external + sound. +
  • +
+
+
+
+

Version 1.11.1

+
+
    +
  • Added: Sticker prices on the weapons (optional). Warning: You may have experience steam requests cooldown + for some minutes with this function, because 1 gun with the 4 stickers sends 5 steam requests instead + of 1. However, a lot of users asked us to bring this back. Function will be set to off at the 1st app + install, you can enable it on your own risk.
  • +
  • Added: "Buy missing parts" (Buy set) function! Hopefully we are able to bring that back. You can buy the + missing parts of the set from the inventory button now, you will be able to refresh the lots, see the + refresh time of the cheapest lots and see all of the missing items with the chepest price available.
  • +
  • Fixed: Some "Market graph" fixes, the graph will work normally now. You can collect the data and filter it + to see the spent and profit money on the marketplace.
  • +
  • Fixed: "Quick sell" button is now showing up when you have hidden the default price info.
  • +
  • Fixed: " ' " - symbol bug in the item search. Links were cut off if the selected item has " ' " in its name.
  • +
+
+
+
+

Version 1.11.0

+
+
    +
  • Added: "Sort by Float" function.
  • +
  • Added: Setting to off "Get float" function.
  • +
  • Fixed: External price providers icons are dropping down in the inventory and causing a visual bug.
  • +
  • Fixed: External price providers on-hover hint with the provider name are not displaying.
  • +
  • Fixed: "Hide listings" button are displayed on the market when you are logged off and no active listings + are visible.
  • +
  • Fixed: Some market translations to Russian.
  • +
  • Some minor fixes and improvements.
  • +
+
+
+
+

Version 1.10.9

+
+
    +
  • Added: FLOAT bots! Float function is back! You are now able to check items float on the market page and in + the inventory.
  • +
  • Added: Function to open all selected booster packs with the 1 click.
  • +
  • Added: Function to count all market item pages summary, not only the page total. You will be able to see + page total and all listings total now.
  • +
  • Fixed: Wrong item positions in the "Buy orders" after the sorting applied.
  • +
  • Some minor fixes and improvements.
  • +
+
+
+
+

Version 1.10.8

+
+
    +
  • Fixed: Imposing Steam Market price labels on the price of an external price provider in a trade offer window + after moving an item from the active trade to the inventory.
  • +
  • Added: Possibility to sort items by external prices not only in the CS:GO inventory but in the other popular + games too.
  • +
  • Fixed: Sort items by price error on the Steam Market page in the "My buy orders" directory.
  • +
  • Fixed: Visual bug with the OFF tag displaying on the SIH icon in the browser when extension is working.
  • +
  • And also other minor fixes and improvements.
  • +
+
+
+
+

Version 1.10.7

+
+
    +
  • Added: Icons/logos of the external prices providers that may help you to understand what prices are displaying + at this moment.
  • +
  • Corrected: External prices display position in the inventory/in the trade offer window.
  • +
  • Added: Possibility to extend market listings amount up to the 500 positions.
  • +
  • Fixed: Market sorting function by Name/Price (you will be able to sort anything of the market listings categories + now: active listings, buy orders and also listings, awaiting confirmation).
  • +
  • Fixed: The total price/sorting functions are not dissapearing from the market page after you have deleted + all the listings.
  • +
  • Fixed: Bug when all external prices on the inventory page are dissapearing after you have refreshed your + items by ALT+R function.
  • +
  • Fixed: Wrong price history median in the mass selling queue.
  • +
+
+
+
+

Version 1.10.6

+
+
    +
  • Added: Sorting functions (by Name or Price) on the Steam Market.
  • +
  • Added: Possibility to skip items that don't have a market price. (Items without price will be deleted from + the queue so you can setup the price manually)
  • +
  • Fixed: Simplified Chinese and Traditional Chinese translation errors.
  • +
  • Fixed: Coupons price checking issue. SIH won't count coupons in the price checking function anymore.
  • +
  • Updated: Czech translations.
  • +
+
+
+
+

Version 1.10.5

+
+
    +
  • Added: Button to hide active market listings.
  • +
  • Added: Button to hide/display detailed info about the incoming friend requests.
  • +
  • Added: "Quick info" icons that display (VAC/Trade/Community ban status) of the incoming friend request.
  • +
  • Added: Button to ON/OFF Twitch and YouTube links on the store page.
  • +
  • Corrected: Small visual corrections to the trade offer total value function in the trade offer window. The + prices in the trade offer window are more user friendly now.
  • +
  • Fixed: 0.03$ listings in the multi-selling queue will no longer bug the selling process. If the item price + is subtracted by any value or percentage, 0.03$ items will no longer bug the selling process (steam politics + are not allowing to subtract any value from the 0.03$ item).
  • +
  • Fixed: Changing the external price provider in the trade offer window now will take affect on the change + of the total trade offer value (it was not changing earlier).
  • +
  • Fixed: Quick Buy button on the Marketplace was not working.
  • +
+
+
+
+

Version 1.10.4

+
+
    +
  • Added: OPSKINS external prices for the CS:GO, Dota 2, TF2, H1Z1, Rust, Unturned, Payday 2, Killing Floor + 2 inventories.
  • +
  • Added: Buttons on the game store page to search it on YouTube, Twitch.
  • +
  • Added: Button to sort inventory items in the trade offer window.
  • +
  • Fixed: Quick sell error in the mass listing window.
  • +
  • Fixed: Permalink error (the link was set to your profile, not the users profile you are checking).
  • +
  • Fixed: Buttons translations in the trade offer window.
  • +
+
+
+
+

Version 1.10.3

+
+
    +
  • Added: External prices for Team Fortress 2 (backpack.tf).
  • +
  • Added: External prices for CS:GO (csgobackpack.net).
  • +
  • Added: Total inventory value button (now it loads way more faster and you can also check the total inventory + value of any user you want by visiting their inventory).
  • +
  • Added: Button to show/not show float value.
  • +
  • Added: Button to show/not show user permalink (permament ID) on the profile page.
  • +
+
+
+
+

Version 1.10.2

+
+
    +

    We are happy to introduce you our brand new site! Steam Inventory Helper

    +
  • Report a bug, suggest a feature, ask a question through our feedback form.
  • +
  • Check the latest updates or news in our BLOG section.
  • +
  • Check the FAQ section with all of the common questions of SIH.
  • +

    Other updates:

    +
  • Added: Norwegian translation (Thanks to Nazhad Chawshin).
  • +
  • Added: Selection setting of stores prices that you want to see in the Steam Store.
  • +
  • Removed: "Sort items" button in the inventory (this button is causing alot of bugs, removed for the further + inspection). +
  • +
  • Removed: TF 2 external prices (provider has ceased to provide prices).
  • +
+
+
+
+

Version 1.10.1

+
+
    +
  • Added: Traditional Chinese translation (Thanks to Kyonko Li).
  • +
  • Added: Showing money spent total in Steam (on the account page).
  • +
  • Fixed: Highlighting wishlist and owned items fucntion title corrected.
  • +
  • Fixed: Turkish translation corrected (Thanks to Onur Tura).
  • +
  • Fixed: Wishlist and owned items highlighting colors are looking more softly now.
  • +
  • Fixed: Improper display of inventory items when switching to another game inventory.
  • +
  • Fixed: Improper profit calculation if the game price on Steam and other game-stores are in different currencies.
  • +
  • Fixed: Not displaying external item prices in the opponents inventory (When someone sends you a trade).
  • +
+
+
+
+

Version 1.10.0

+
+
    +
  • Added: Displaying lowest price of games and DLC's in Steam Store (and external game stores).
  • +
  • Added: Displaying historical lowest price of games and DLC's in Steam Store (and external game stores).
  • +
  • Added: Displaying regional prices of games and DLC's in Steam Store.
  • +
  • Added: Highlighting your wishlist and games or DLC's you already own.
  • +
  • Added: Turkish translation.
  • +
+
+
+
+

Version 1.9.12

+
+
    +
  • Added: "Instant sell" button on Inventory page.
  • +
  • Added: "Sort items" button on Inventory page to sortitems by price.
  • +
  • Added: New (in-browser) notification about declined offers (Only if you add API key in Settings).
  • +
  • Fixed: Czech translation (thanks to PapuleX).
  • +
  • Fixed: Function of ignoring and blocking friend requests from users with private profiles if you have set-up + "Ignore invites" or "Block invites".
  • +
  • Fixed: "Quick Buy" feature is disabled by default in Settings.
  • +
+
+
+
+

Version 1.9.11

+
+
    +
  • Added: Link to the profile page with Steamrep.
  • +
  • Added: Ability to change the language of the extension interface from the Settings spot.
  • +
  • Changed: Proposal check interval up to 5 minutes to prevent blockage of Trade Offers page for frequent polling + (CAPTCHA will be displayed in the case of blocking).
  • +
  • Fixed: Query bug and display information from Steamrep for private profiles.
  • +
  • Fixed: Error of calculating the external price of items for mass listing function.
  • +
  • Fixed: Displaying external prices without setting "Show external prices".
  • +
+
+
+
+

Version 1.9.10

+
+
    +
  • Added: Displaying SteamRep.com reputation and status on the user's profile page.
  • +
  • Fixed: Tradable gifts sending problem.
  • +
  • Fixed: Error in calculating of total price of the items in trade offer with Settings «Show offer total price».
  • +
  • Fixed: Prices in some national currencies displayed wrong.
  • +
  • Fixed: Missing value of notification sound.
  • +
  • Fixed: Polish translations (thanks to Miłosz Skaza).
  • +
+
+
+
+

Version 1.9.9

+
+
    +
  • Added: Option of checking a list of trades through Steam API, if users Steam API key is set in plugin options + (recommended). +
  • +
  • Added: Check users Steam authorization. If user is not logged in, "OFF" is displayed on the icon of extension.
  • +
  • Added: The extension can be installed in Opera browser. Install "Download Chrome Extension" in Opera, if + you need to install extensions from Chrome Web Store.
  • +
  • Fixed: Steam: 429 Too Many Requests.
  • +
  • Fixed: Trade offer sound notifications.
  • +
+
+
+
+

Version 1.9.8

+
+
    +
  • Added: Show summary of non tradable items.
  • +
  • Added: Possibilities to select all transactions by item.
  • +
  • Added: Skip already sent gifts when sending gifts in bulk.
  • +
+
+
+
+

Version 1.9.7.1

+
+
    +
  • Fixed: Broken translation.
  • +
+
+
+
+

Version 1.9.7

+
+
    +
  • Added: Show user ban info on the users profile from steamrep and trade offer page.
  • +
  • Added: Show offer price on the trade offer page.
  • +
  • Fixed: Inventory UI in "Simplify UI" mode.
  • +
  • Added: Possibility to disable button "Select all".
  • +
  • Fixed: Loading price for bookmarks.
  • +
  • Added: Trade counters and date of last trade on the trade offer page.
  • +
  • Added: Button for quickly remove items has no price.
  • +
+
+
+
+

Version 1.9.6

+
+
    +
  • Fixed: Can't show up price "on hover" in the Trade Offers page.
  • +
  • Added: Possible to calculate price of the tab inventory (Experimental feature, can work incorrect).
  • +
  • Fixed: External price for CS:GO and TF2.
  • +
  • Fixed: Incorrect select all with advanced filters.
  • +
  • Added: Step line graph for the market graph.
  • +
+
+
+
+

Version 1.9.5

+
+
    +
  • Added: Button 'Select all' to select all items on current inventory page.
  • +
  • Added: Button for checking current price in market history.
  • +
  • Added: Quick refuse link similar to button 'Quick accept'.
  • +
  • Fixed: Crash functionality in inventory when TF2 tab is getting opened.
  • +
  • Update: Flexible protocol (previous can broke some functionality).
  • +
+
+
+
+

Version 1.9.4.1

+
+
    +
  • Fixed: Quick accept.
  • +
  • Fixed: Showing items in trade.
  • +
+
+
+
+

Version 1.9.4

+
+
    +
  • Fixed: Trade offers notifications.
  • +
  • Fixed: Trade offers page error 429 Unknown.
  • +
  • Added: Trade counters. (Steam API key is required).
  • +
  • Fixed: Broken html in description.
  • +
+
+
+
+

Version 1.9.3.1

+
+
    +
  • Fixed: External prices.
  • +
  • Fixed: Popup trade offers notifications.
  • +
+
+
+
+

Version 1.9.3

+
+
    +
  • Updated: Possibility to remove bookmarks.
  • +
  • Fixed: 'View on glws' repeats.
  • +
+
+
+
+

Version 1.9.2

+
+
    +
  • Fixed: In trade marks.
  • +
  • Fixed: Comments notifications.
  • +
  • Fixed: Invites notifications.
  • +
  • Fixed: Trade offers notifications.
  • +
  • Fixed: Extension's trade offers tab.
  • +
+
+
+
+

Version 1.9.1

+
+
    +
  • Updated: New design.
  • +
  • Fixed: Market graph was crashed if data was empty.
  • +
  • Fixed: Some trade offers bugs.
  • +
+
+
+
+

Version 1.9.0

+
+
    +
  • Fixed: Trade offers notifications.
  • +
  • Fixed: Extension's trade offers tab.
  • +
+
+
+
+

Version 1.8.9

+
+
    +
  • + Added: Quick link to view CSGO skin float value on market via glws.org.
    + This link will replace the old "Inspect in game" link after game name, and a new inspect link will be added to skin image when hover on it. +
  • +
  • Added: Clickable stickers, the stickers' market listing pages will open when you click on them.
  • +
  • Added: Option to change external prices provider in inventory page.
  • +
+
+
+
+

Version 1.8.8

+
+
    +
  • + Added: TF2BP prices for Unusual and Genuine items.
    + Your SteamAPI have to work for this. +
  • +
  • Added: total in keys/metal for TF2 trades.
  • +
  • Added: Ability to change buying order prices on buy trading cards dialog.
  • +
  • Fixed: the total of buying order.
  • +
  • Added: Chart type for market graph.
  • +
+
+
+
+

Version 1.8.7

+
+
    +
  • + Added: TF2BP prices.
    + I have to build a proxy to get it works, don't know if it could handle all the users. Some of the prices are not 100% exact, as some information need to get through SteamAPI to pinpoint TF2BP prices, and that thing is too unstable +
  • +
  • Fixed: Some minor bugs.
  • +
+
+
+
+

Version 1.8.6

+
+
    +
  • Added: CSGO stickers on skin on listing page.
  • +
  • + Added: Option to add custom price API.
    + I have setup a sample API for those who want to make their own price API for their users.
    + Note: as I mentioned, this is just a sample for the prices providers, don't use it for trading. And for users, don't add unknown sources. +
    +
  • +
  • + Modified: Warning tag on items on listing page, change to the actual warning messages instead of the general warning.
    + This may clear those misunderstanding about the warning sign. +
  • +
  • Fixed: Some minor bugs.
  • +
+
+
+
+

Version 1.8.5

+
+
    +
  • Added: Show total external prices in trade offers, and selling queue.
  • +
  • Added: Buttons to take items by prices in trade offers.
  • +
  • Added: Option to hide sponsor's banner.
  • +
+
+
+
+

Version 1.8.4

+
+
    +
  • + Added: Currency options for external prices.
    + + This function works by using exchange rates from api.fixer.io, if they don't have the rates, it won't work. And the prices can't not match exactly what Steam provide as they have their own exchange rates. + +
  • +
  • + Added: Options to use external prices for mass listing.
    + + Please use this with caution. As you should have known external prices are cached, and some expensive items are manual input. + +
  • +
  • + Added: Sort / remove items base on external prices. +
  • +
  • + Added: custom colors for external prices.
    + + Because I can't satisfy everyone with a static color. This way, you guys can pick the fabulous pink color for price tags. + +
  • +
  • + Updated: Prices on pages will update right when you change the currency in settings.
    + Again, this affects only external prices, as I don't want to force the exchange rates upon the "offical" prices from Steam. The prices get after the change will use the updated currency though. +
  • +
  • Updated: Romania translations - credit to Stefan3D #NiP HyperX.
  • +
+
+
+
+

Version 1.8.3.1

+
+
    +
  • Fixed: Items' images on wrong trade in Extension's trade offers tab.
  • +
+
+
+
+

Version 1.8.3

+
+
    +
  • Added: Custom tag for bookmarked items in trade offers.
  • +
  • Added: Option to switch external prices providers in trade offers.
  • +
  • Added: CSGOFast.com prices provider.
  • +
  • Fixed: Trade offers notifications.
  • +
  • Fixed: Extension's trade offers tab.
  • +
+
+
+
+

Version 1.8.2

+
+
    +
  • Added: External prices for inventory and trade offers.
  • +
+
+
+
+

Version 1.8.1

+
+
    +
  • + Added: Options for get prices. +
      +
    • Get prices on hover
    • +
    • Get Dota 2 gems prices
    • +
    • Get CS:GO stickers prices
    • +
    +
  • +
  • Added: Filering for buy orders list.
  • +
  • Added: Add all pending gifts to Steam Gift Inventory.
  • +
  • + Changed: No duplicate option in trade offer from checkbox to a textbox.
    + So you can input the maximum number of duplicates, ex: 5, and the extension only pick maximum 5 copies of every items. 1 is equivalent to the old checkbox. Leave blank to ignore this function +
  • +
  • Updated: Latvian translations - credit to Niklāvs Radovics.
  • +
  • Updated: Ukrainian translations - credit to Юрій Мацелюх.
  • +
+
+
+
+

Version 1.8.0

+
+
    +
  • + Added: Getting prices monitor.
    + So you can tell if the extension is running or not, and how much Steam hate you. +
  • +
  • + Added: Getting prices with different providers.
    + + Every price fetchings will be managed with a queue. If a provider fail to get, the extension will try again with another provider. If every provider fail, well...
    + Currently, there are only 2 provider, there will be more if I can get my hand on any. +
    +
  • +
  • Fixed: Hover container on trade offers page.
  • +
  • Updated: French translations - credit to tchitchi317.
  • +
  • Updated: Czech translations - credit to Michal Tar.
  • +
  • + Temp removed: Gems prices (Dota 2), and Stickers prices (CS:GO) on items
    + To reduce total calls to price API, they will come back as options. +
  • +
  • + Side note: This is a major change, some functions may be buggy. I will try to patch + them with the limit time that I have daily.
    Oh my fallout 4, I haven't even reached 30h yet. +
  • +
+
+
+
+

Version 1.7.7

+
+
    +
  • Added: Remove equipped items (Dota 2) from listing queue button.
  • +
  • Added: Remove in-trade / equipped items (Dota 2) buttons in trade offer windows.
  • +
  • Added: Remove items by price buttons in trade offer windows.
  • +
  • Added: Option to disable confirm dialog for quick accept.
  • +
  • Added: Quick accept buttons in trade offers tab of extension popup.
  • +
  • + Added: Stickers' prices for CSGO items. + I haven't test this through, it might have some bugs. +
  • +
  • Updated: German translations - credit to Octo Ossi.
  • +
+
+
+
+

Version 1.7.6

+
+
    +
  • Added: Show in-trade tag in inventory.
  • +
  • Added: Remove in-trade items from listing queue button.
  • +
  • Added: Clear bookmarks link in settings.
  • +
  • Added: Option to skip in-trade items in trade offer window.
  • +
  • + Added: Quick accept link on trade offers page.
    + The link will start a 10s countdown when you click on it, when the count down reach 0, it will open the trade offer window and accept it. You can cancel the trade by click on the link again before the count down reach 0, or just close the trade offer windows before it load complete. +
  • +
  • Changed: Relocate some buttons in trade offer window.
  • +
  • + Removed: No trash option in trade window.
    + This term is obsolete for a long time. +
  • +
  • + Fixed: Some strange bug with bookmarks items. + I can't reproduce the error, just try to isolate the buggy data. In case it is not fixed, clearing all bookmarks is recommended. +
  • +
+
+
+
+

Version 1.7.5

+
+
    +
  • + Added: Automatic update prices of bookmarked items every 10s.
    + There will be a highlight blink when the prices change. And the time when the prices are get will be display on the bookmark header +
  • +
  • Added: Custom tag in trade offer window for items in other sent trade offers.
  • +
  • Added: Quick action links for items on listings page (Inspect CSGO, TF2 skins).
  • +
  • + Added: Reset options button.
    + This button will reset all your settings, including bookmarks categories and custom buttons. +
  • +
  • Fixed: A bug when buying trading cards with number sign (#) in name.
  • +
  • Fixed: Market graph functions.
  • +
  • Fixed: Some UI bugs with market main page.
  • +
+
+
+
+

Version 1.7.4

+
+
    +
  • Added: Bookmarked items tab on extension popup.
  • +
  • Added: Seller prices for bookmarked items.
  • +
  • + Added: Doppler phases for CS:GO knives.
    + This function based on Steam WebApi, it may be laggy if the services is not stable. +
  • +
  • Added: Decline all link on trade offers tab.
  • +
  • + Changed: The Steam WebAPI calls will retries maximum 10 times if it can not get the data.
    + This may improve the function a little. +
  • +
  • + Changed: Bookmark items using local storage instead of sync storage.
    + This will increase the limit of storage for bookmarked items, but it can not be synced across your computers. And you have to add them back if you reinstall the extension. +
  • +
+
+
+
+

Version 1.7.3

+
+
    +
  • + Added: Categories for bookmarks.
    + You can manage bookmarks categories in the settings. +
  • +
  • Added: Option to show/hide bookmark link and tab.
  • +
  • Added: Sort bookmarked items by name, volume and lowest price.
  • +
  • Added: Warning on trade offers with not marketable items or items that can't get prices.
  • +
  • Added: Open all trade offers in trade offer tab.
  • +
  • Added: Volume (number of sales in 24h) in hover popup.
  • +
  • + Added: Option to auto adjust price by value or percentage when listing items.
    + All the calculation will be done with seller price (the value you will recieve after the items sold.) +
  • +
  • Added: Spanish language.
  • +
  • Changed: Save the last tab opened as default popup when clicking on SIH icon.
  • +
  • Changed: Clicking on trade offers in trade offer tab to open them will not make the tab lose focus.
  • +
  • Fixed: Dismissing sell items dialog will close the queue and the sort panel.
  • +
+
+
+
+

Version 1.7.2

+
+
    +
  • + Added: Bookmarks tab to market main pages.
    + You can add items to this tab by go to their listing page and click on the new "Add to bookmarks" link. The prices will be get when you click on the tab. +
  • +
  • + Added: Select all duplicate items link.
    + You can also select all similar items with ctrl + click in select mode +
  • +
  • + Added: Ctrl + click on item in trade offer windows will pick move/remove similar items from the trade.
    + It still uses the same counting function as custom buttons, if you don't assign the total number, it only take similar items on the same page. +
  • +
  • Changed: Enable buy card dialog on complete badges.
  • +
  • Changed: Allow turning not-marketable into gems.
  • +
  • Fixed: Some UI bugs.
  • +
  • Fixed: Recalculate total price when remove item in trade offer window.
  • +
+
+
+
+

Version 1.7.1

+
+
    +
  • Added: Show number of duplicated items in inventories and trade offer window.
  • +
  • Fixed: Trade offers tab.
  • +
  • Fixed: Default custom buttons can be deleted.
  • +
  • + Removed: "No reload inventory" checkbox.
    + I think it is not needed anymore. +
  • +
+
+
+
+

Version 1.7.0

+
+
    +
  • + Added: Send multiple gifts function (beta).
    + It can only work if you send it directy to friend or a gmail, if you using other email services, you have to change the emails for each gifts. Tutorial will be available soon on youtube channel. +
  • +
  • Added: Enable sending gifts to friend who already have the games.
  • +
  • Added: Allow creating buy orders for owned trading cards in buy cards dialog.
  • +
  • Fixed: Some diaglogs (listings, grinding, buy cards...) due to Valve recently updating their dialog.
  • +
+
+
+
+

Version 1.6.3

+
+
    +
  • Added: Accumulated lines for market graph.
  • +
  • Added: Time range buttons for market graph.
  • +
  • Added: Swedish language.
  • +
+
+
+
+

Version 1.6.2

+
+
    +
  • Added: Custom Steam WebAPI key option.
  • +
  • + Added: Fix data button for market graph. + This button only fix those errors caused by disorder market transactions (like a 'Jul 17' record after those 'Jun 18' records) for now. +
  • +
  • Added: "Show datatable" button to show collected data in a table.
  • +
  • Fixed: US date format for Market graph.
  • +
+
+
+
+

Version 1.6.1

+
+
    +
  • Added: Games tabs scroll for those with more than 10 games tabs in inventory when using simplified UI.
  • +
  • Fixed: Steam API for http protocol.
  • +
+
+
+
+

Version 1.6.0

+
+
    +
  • + Added: CS:GO skins' float value in inventory and trade offer windows.
    + This function based on Steam WebApi, it may be laggy if the services is not stable. +
  • +
  • Fixed: Some translation related bugs.
  • +
+
+
+
+

Version 1.5.16

+
+
    +
  • Added: Options to ignore/block private profiles' invites.
  • +
  • Fixed: Card buying orders sometimes don't create orders.
  • +
+
+
+
+

Version 1.5.15

+
+
    +
  • + Added: Highlight overpriced option.
    + Highlight overpriced items in the my listings tab on market main page, and add a new button to select them all. +
  • +
  • Added: Number of items in trade offers list page.
  • +
  • Fixed: Some bugs on the trade offers list page.
  • +
+
+
+
+

Version 1.5.14

+
+
    +
  • Added: Volume option for notification sound.
  • +
  • Added: Option to change market history page size.
  • +
  • Added: Checkboxes for buying order list to remove multi orders at once.
  • +
  • Added: Number of cards for buy cards dialog.
  • +
+
+
+
+

Version 1.5.13

+
+
    +
  • + Added: Auto decline unavailable trade offers.
    + You have to enable both "decline unavailable offers" and "Display trade offers notifications" options for this function to work. +
  • +
  • Added: Decline buttons on the popup windows.
  • +
+
+
+
+

Version 1.5.12

+
+
    +
  • + Added: Auto ignore / block friend invites with Steam level below threshold.
    + Threshold can be set in settings page, default to 0 (off) +
  • +
+
+
+
+

Version 1.5.11

+
+
    +
  • Added: number of trade offers on extension badge.
  • +
  • Added: trade offers tab.
  • +
  • + Added: custom sound for notifications. + It only accepts online URL because I don't want to change the permissions of the extension. +
  • +
+
+
+
+

Version 1.5.10

+
+
    +
  • Added: Dota 2 item preview on DotaHattery.
  • +
  • Fixed: Steam API error on inventory page.
  • +
+
+
+
+

Version 1.5.9

+
+
    +
  • Modified: Change the way get total price of trade offers in the offers list page.
  • +
+
+
+
+

Version 1.5.8

+
+
    +
  • + Added: Description label for items in trade offers. +
    + It is just CSGO weapons exterior for now, as for other games I need some suggestions. +
  • +
+
+
+
+

Version 1.5.7

+
+
    +
  • + Added: Option to adjust delay between listings (multi sell) in milliseconds. +
    + As a user suggests, you can set it to 60000ms (1 minute) if you want, although it can take hours to sell like 500 cards. +
  • +
+
+
+
+

Version 1.5.6

+
+
    +
  • Added: Grind multi items into gems dialog, similar to multi sell.
  • +
+
+
+
+

Version 1.5.5

+
+
    +
  • + Added: "Remove all" button for trade offer, as someone doesn't know that the little "x" beside every item category count + can remove all that category's items from the active trade content. +
  • +
  • + Fixed: a bug where it is allowed to add/remove items in trade offer counter mode without clicking counter trade button. +
  • +
  • Fixed: Quick buy functions.
  • +
+
+
+
+

Version 1.5.4

+
+
    +
  • Added: separate options for notifications.
  • +
  • Fixed: price bug of BattleBlock items.
  • +
  • + Fixed: items hover function. +
    + This is due to Steam recent updates, they get rid of some funcions that cause errors even in vanilla state, hope they will fix it soon. +
  • +
+
+
+
+

Version 1.5.3

+
+
    +
  • Added: desktop notifications for new invites and comments.
  • +
+
+
+
+

Version 1.5.2

+
+
    +
  • Added: display warnings, gems (dota 2), stickers (CS:GO) of items on selling queue.
  • +
+
+
+
+

Version 1.5.1

+
+
    +
  • Added: sort function in trade offers.
  • +
  • + Added: simplify inventory. +
    + + Credit to Alystair for the idea and a clean design. You have 10+ tabs in your inventory? This option will tidy it up. Check the option in settings to check it out. + +
  • +
+
+
+
+

Version 1.5.0

+
+
    +
  • + Added: custom price vector. +
    + + For those who always have a calculator opened to do "(item price / treasure key price) = number of keys needed" kind of math. + +
  • +
+
+
+
+

Version 1.4.9

+
+
    +
  • + Added: Steam community market graph. +
    + + this function will collect data from Steam market main page, do a little math and visualize then them. + This function don't run in background, so you have to keep the page opened while collecting data. + All the data will be stored locally so you can close the page, and continue collecting by open it again and click start collecting data again. + But don't run more than 1 collecting page. + +
  • +
+
+
+
+

Version 1.4.8

+
+
    +
  • + Removed: AddonJet ads. +
    + + due to lately negative feedbacks, they stressed me out bit, so I've decided to remove the ads. + And I will not try to monetize extensions anymore. + The permissions needed will change back to the 4 sites like before. + But please check the changelog whenever an update occures, future features may need access to some other sites. + +
  • +
+
+
+
+

Version 1.4.7

+
+
    +
  • + Added: quick remove items belongs to a category in trade offer windows.
    + it's the little "x" character beside every categories items counts. +
  • +
+
+
+
+

Version 1.4.6

+
+
    +
  • + Added: AddonJet ads. This will need to change the permissions from Steam sites only to all sites to function.
    + + Sorry about this, but I have chose the least annoying ads out there, it even doesn't show up on any Valve's sites. + You can check it out here AddonJet. + And you can always disable it in the options anyway. + +
  • +
  • Added: more language support.
  • +
  • Fixed: some errors caused by thousands delimiter.
  • +
+
+
+
+

Version 1.4.5

+
+
    +
  • + Added: SteamRep info in invites page.
    + You can disable this funtion on settings page. +
  • +
  • Added: ignore all level 0 invites.
  • +
  • + Added: warning message on empty trade offers.
    + I don't know if this could be any help but a suggestion is a suggestion. +
  • +
+
+
+
+

Version 1.4.4

+
+
    +
  • + Added: custom buttons for trade offer window and more. +
    Check this video to know how to config it: Youtube. +
  • +
+
+
+
+

Version 1.4.3

+
+
    +
  • Added: reload listings button (market home page).
  • +
  • Added: hotkeys for some functions.
  • +
  • Changed: items count in trade offer windows in a more general way.
  • +
  • + Added: Steam community market income / outcome graphs.
    + This takes a lot of bandwidth for someone with like 100k market transactions and I haven't found a solution to track and cache past transactions +
  • +
  • Fixed: some funny bugs
  • +
+
+
+
+

Version 1.4.2

+
+
    +
  • Added: sort items on selling queue.
  • +
  • Added: remove items on selling queue with specific price.
  • +
+
+
+
+

Version 1.4.1

+
+
    +
  • Added: quick buying Steam trading card set.
  • +
  • Fixed: some price bugs on trader offer windows.
  • +
+
+
+
+

Version 1.4.0

+
+
    +
  • Added: price check currencies supported.
  • +
  • + Experiment: multi languages support.
    All the translations are done by using Google translate. If + you want to correct the translations or add new language supports, feel free to email us your translation + files at csinvhelp@gmail.com
    Sample files: funtions strings, + extension strings. +
  • +
+
+
+
+

Version 1.3.23

+
+
    +
  • Added: custom border color for items in selling queue.
  • +
  • Added: hover information on selling queue.
  • +
  • Added: scrollbars for long selling list.
  • +
  • Added: highlight similar items on selected.
  • +
  • Added: sort funtions for sell listing at market home page.
  • +
  • Changed: price backgound and text color on selling queue for easy reading.
  • +
+
+
+
+

Version 1.3.22

+
+
    +
  • Added: show item market price in trade offer windows.
  • +
  • Added: show items total price (with and without fees).
  • +
  • Added: button to recalculate total price in trade offer windows.
  • +
+
+
+
+

Version 1.3.21

+
+
    +
  • Added: options to show/hide "Quick sell", "Buy missing parts" buttons.
  • +
+
+
+
+

Version 1.3.20

+
+
    +
  • Added: show gem price in listing pages when hover on items.
  • +
+
+
+
+

Version 1.3.19

+
+
    +
  • Added: https protocol supported.
  • +
+
+
+
+

Version 1.3.18

+
+
    +
  • Added: Option to enable/disable quick buy buttons.
  • +
  • Added: Option to enable/disable desktop notifications.
  • +
  • Added: Option to change fast sell price adjusment.
  • +
  • Added: Number of rows display on listing page option.
  • +
+
+
+
+

Version 1.3.17

+
+
    +
  • Added: Display equipped items in inventory and trade offer windows (Dota 2 items only - no more mistrade + in-use items).
  • +
+
+
+
+

Version 1.3.16

+
+
    +
  • Added: Buying set dialog in inventory.
  • +
  • Added: Display item infomation when hover on quick buy buttons.
  • +
  • Fixed some minor bugs.
  • +
+
+
+
+

Version 1.3.15

+
+
    +
  • Added: Port fraud warning and quick buy functions to newly listed tab on market main page.
  • +
  • Added: Filtering items in my sell listings tab.
  • +
  • Added: Quick remove listing items with checkboxes.
  • +
+
+
+
+

Version 1.3.14

+
+
    +
  • Added: Reload button on listing page.
  • +
  • Added: Display fraud warning message on items with custom description and (or) custom name on listing page.
  • +
  • Added: Quick buy button on listing page.
  • +
+
+
+
+

Version 1.3.13

+
+
    +
  • Added: No duplicate option in trade offers.
  • +
  • Added: Fast selling item button (at market base price - 0.01).
  • +
  • Changed: Unify the two sell button to the same function.
  • +
+
+
+
+

Version 1.3.12

+
+
    +
  • Show item lowest price of each item on selling queue.
  • +
  • Show sum prices (with and without fee).
  • +
  • Added: option to auto adjust listing price relative to market lowest price (can be negative for fast selling).
  • +
+
+
+
+

Version 1.3.11

+
+
    +
  • Show items set price.
  • +
  • Add market link to each parts.
  • +
  • Minor bugs fixed.
  • +
+
+
+
+

Version 1.3.10

+
+
    +
  • Shift select through many pages bug fixed.
  • +
  • Rearrange buttons in offer window.
  • +
  • Remake count function in offer window.
  • +
  • Changelogs added.
  • +
+
+
+
+

Version 1.3.9

+
+
    +
  • Shift select support for selling multi items.
  • +
  • Minor bugs fixed.
  • +
+
+
+
+

Version 1.3.8

+
+
    +
  • Update Foulfell Shard price check.
  • +
  • Show total items in queue, and allow removing items from selling queue.
  • +
+
+
+
+

Version 1.3.5

+
+
    +
  • Display a queue when selling multi items.
  • +
  • Fixe bug when dismissing a listing queue.
  • +
+
+
+
+

Version 1.3.1

+
+
    +
  • Change Steam avatars link.
  • +
  • Add more notification sounds.
  • +
+
+
+
+

Version 1.3.0

+
+
    +
  • Initial version on chrome store.
  • +
+
+
+ + + diff --git a/html/custombuttons.html b/html/custombuttons.html new file mode 100644 index 0000000..e04bcc3 --- /dev/null +++ b/html/custombuttons.html @@ -0,0 +1,62 @@ + + + + + + Custom buttons + + +
+

Config custom buttons

+

Team Fortress 2

+
+
+
+

Dota 2

+
+
+
+

Counter-Strike: Global Offensive

+
+
+
+

Steam

+
+
+
+

Add custom button

+
+
Game
+
+ +
+
+
+
Button name
+
+ +
+
+
+
Expression
+
+ +
+
+
+
 
+
+ +
+
+
+ + + + + diff --git a/html/faq.html b/html/faq.html new file mode 100644 index 0000000..8dfbe9c --- /dev/null +++ b/html/faq.html @@ -0,0 +1,104 @@ + + + + Steam inventory helper FAQ + + + + +
+ +
+
+
[Q] Why doesn't the float value show up sometimes?
+
+ [A] + The function is based solely on Steam web API, if the API can not be accessed, the value will not show up. +
+
+
[Q] How can I sell items in bulk?
+
+ [A] + Check this video out +
+
+
[Q] How can I buy trading cards set quickly?
+
+ [A] + Check this video out +
+
+
[Q] What is "Buy set" thing, and how it work?
+
+ [A] + It is a function, for Dota 2 only, that help you buy your missing parts from Steam Community Market with a custom dialog. + You can watch how it works here +
+
+
[Q] How can I create custom take buttons in trade offer page?
+
+ [A] + Check this video out +
+
+
[Q] How can I send multiple Steam gifts to my friend?
+
+ [A] + Check this video out +
+
+
[Q] I've got a good idea, how can I suggest it to you?
+
+ [A] + Please email us at csinvhelp@gmail.com or join our Group and start a discussion. + Any suggestions are welcomed. If it is posible and doens't violate + Steam's ToS (maybe a bit, heh, who knows?), it will be on my update list. +
+
+
[Q] I want SIH run in my language, how can I submit translations?
+
+ [A] + You can download these 2 file functions strings, extension strings edit them using any text editor program, and email us + your translations at csinvhelp@gmail.com +
+
+
[Q] Will I get banned for using this extension?
+
+ [A] + TL/DR: No, you won't. Why? +
+ Valve doesn't collect what kind of extensions you have used, and probably will never do. And then do you think Google Chrome is that insecure? + But they do collect what kind of browser you used, to improve user experience. Will they ban all Chrome users? +
+
+
+
[Q] But is there a function that sell multi items?
+
+ [A] + Yes, it is some kind of automation with a queue. If you don't want to take the risk, just ignore that function. + But then again, that function probably won't get you banned. + Why again? +
+ The function itself is built based on Valve's Steam community website functionality with no modification to all the requests. + What's different here is that you list item at a higher rate then normal people, but it's no different from a person with 5 tabs opened, + and list items on those tabs one by one, the only different thing is that the person with 5 tabs will got the inventory reload everytime he finish listing 1 item (do I need to make fake requests to make it the same?), + and you can misplace a number (e.g: I have sold an Axe of Phractos for like 3 buck, Google that thing if you don't know it, and that is the origin of this extension). +
+
+
+
+
+ + + + + + + diff --git a/html/graph.html b/html/graph.html new file mode 100644 index 0000000..c49529b --- /dev/null +++ b/html/graph.html @@ -0,0 +1,41 @@ + + + + Market graph + + + + +
+ Start collecting data + Reset + Fix data + Show datatable + + +
+ +
+
+
+
+ + + + + + + diff --git a/html/newupdate.html b/html/newupdate.html new file mode 100644 index 0000000..0efca6c --- /dev/null +++ b/html/newupdate.html @@ -0,0 +1,30 @@ + + + + + + Extension updated + + +
+
+

Steam Inventory Helper

+

+ has updated to version + +

+
+ Last changes: +
    +
    +

    + Click here to view changelogs or skip this +

    +
    +
    + + + + + + diff --git a/html/options.html.exclude b/html/options.html.exclude new file mode 100644 index 0000000..32eb770 --- /dev/null +++ b/html/options.html.exclude @@ -0,0 +1,23 @@ + + + + Dota 2 lounge auto bump & Steam notify Options + + + + Notification sound: + +
    + + + diff --git a/html/popup.html b/html/popup.html new file mode 100644 index 0000000..932ca3a --- /dev/null +++ b/html/popup.html @@ -0,0 +1,552 @@ + + + + Steam inventory helper options + + + + + + + +
    + +
    +
    +

    Steam API

    +
    +
    SteamAPI key:
    +
    + + Get your key +
    +
    +
    +
    +

    Inventory

    +
    +
    "Buy set" buttons:
    +
    + +
    +
    +
    +
    "Quick sell" button:
    +
    + +
    +
    +
    +
    "Instant sell" button:
    +
    + +
    +
    +
    +
    "Select all" button:
    +
    + +
    +
    +
    +
    "Inventory value" button:
    +
    + +
    +
    +
    +
    Quick sell dif:
    +
    + +
    +
    +
    +
    Delay between listings:
    +
    + + ms +
    +
    +
    +
    Hide default price info:
    +
    + +
    +
    +
    +
    Simplify UI:
    +
    + +
    +
    +
    +
    Show float value:
    +
    + +
    +
    +
    +
    Show summary of non tradable items:
    +
    + +
    +
    +
    +
    +

    Store prices

    +
    +
    Show lowest price of all time:
    +
    + +
    +
    +
    +
    Show lowest price currently:
    +
    + +
    +
    +
    +
    Get prices from all stores
    +
    + +
    +
    +
    +
    +
    Show regional price:
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    Highlight Store items

    +
    +
    Highlight items in wishlist:
    +
    + + + + + +
    +
    +
    +
    Highlight owned items:
    +
    + + + + + +
    +
    +
    +
    +

    Listing & market

    +
    +
    "Quick buy" buttons:
    +
    + +
    +
    + +
    +
    Number of listings:
    +
    + + 10 +
    +
    +
    +
    History page size:
    +
    + + 10 +
    +
    +
    +
    Total row:
    +
    + +
    +
    +
    +
    Total row (all pages):
    +
    + +
    +
    +
    +
    Highlight overpriced:
    +
    + +
    +
    +
    +
    Show "Get Float" function:
    +
    + +
    +
    +
    +
    +

    Trade offer

    +
    +
    Auto get prices when offer:
    +
    + +
    +
    +
    +
    Decline unavailable offers:
    +
    + +
    +
    +
    +
    Offer price check delay:
    +
    + + + ms +
    +
    +
    +
    Quick accept:
    +
    + + Delay + + s + +
    +
    +
    +
    Quick refuse:
    +
    + + Delay + + s + +
    +
    +
    +
    Show offer total price:
    +
    + +
    +
    +
    +
    Custom buttons:
    +
    + Manage +
    +
    +
    +
    +

    Friend requests (0 = off)

    +
    +
    Ignore invites below:
    +
    + + Steam level or + +
    +
    +
    +
    Block invites below:
    +
    + + Steam level or + +
    +
    +
    +
    Total:
    +
    + + Reset +
    +
    +
    +
    +

    External prices

    +
    +
    Show external price:
    +
    + +
    +
    +
    +
    Use for mass listing:
    +
    + +
    +
    +
    +
    Background color:
    +
    + +
    +
    +
    +
    Text color:
    +
    + +
    +
    +
    +
    Custom price provider:
    +
    + +
    +
    +
    +
    +

    General

    +
    +
    Auto get prices:
    +
    + + + +
    +
    +
    +
    Get price delay (ms):
    +
    + Success + + Error + +
    +
    +
    +
    Display notifications:
    +
    + + + +
    +
    +
    +
    Notification sound:
    +
    + + +
    +
    +
    +
    Sound volume:
    +
    + +
    +
    +
    +
    Show vector price:
    +
    + +
    +
    +
    +
    Show Steamrep:
    +
    + +
    +
    +
    +
    Show profile permalink:
    +
    + +
    +
    +
    +
    Show links on Youtube and Twitch:
    +
    + +
    +
    + +
    +
    Bookmarks:
    +
    + + Manage categories | + Clear bookmarks +
    +
    +
    +
    Currency:
    +
    + +
    +
    +
    +
    Language:
    +
    + +
    +
    + + +
    + You need to refresh current pages for changes to take effect +
    +
    +
    +
    + + + + + + + + + + diff --git a/html/tradeoffers.html b/html/tradeoffers.html new file mode 100644 index 0000000..7434636 --- /dev/null +++ b/html/tradeoffers.html @@ -0,0 +1,46 @@ + + + + Trade offers + + + + + +
    + +
    +
    + + +
    + Loading... +
    +
    +
    +
    + + + + + + + + + + + + diff --git a/js/HtmlPage.html b/js/HtmlPage.html new file mode 100644 index 0000000..d1725aa --- /dev/null +++ b/js/HtmlPage.html @@ -0,0 +1,358 @@ + + + + + + + +
    +
    +
    PRICE
    +
    WITH
    +
    ACTED ON
    +
    LISTED ON
    +
    NAME
    +
    +
    +
    + -
    + +
    + + + $0.14 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + D.J
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Auspicious Call of the Dendrochron +
    + Dota 2 +
    +
    +
    +
    + +
    + +
    + + + $0.37 USD +
    +
    +
    +
    + + + + + + + +
    + Seller:
    + Tundark
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + The Fearmaker +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.51 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + ~Holly^One_2Ez4Rtz
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Kinetic: Rift of Reminiscence +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.97 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + airkkid
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Kinetic: Crown of Hells! +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.54 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + LordLanCiman
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Fluttering Mortis +
    + Dota 2 +
    +
    +
    +
    + +
    + +
    + + + $1.17 USD +
    +
    +
    +
    + + + + + + + +
    + Seller:
    + [SMD]NICE
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Crown of Gore +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.77 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + epal
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Gloomblade +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.52 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + H i X
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Kinetic: Free to Fear +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.17 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + AlzTk- FaQ
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Yulsaria's Glacier +
    + Dota 2 +
    +
    +
    +
    + -
    + +
    + + + $0.46 USD +
    +
    +
    +
    + + + + + + + +
    + Buyer:
    + AMB
    +
    +
    + 19 Sep
    +
    + 19 Sep
    + +
    + Kinetic: Mark of the Divine Anchor +
    + Dota 2 +
    +
    + + + diff --git a/js/JavaScript.js b/js/JavaScript.js new file mode 100644 index 0000000..4405217 --- /dev/null +++ b/js/JavaScript.js @@ -0,0 +1 @@ +var regex = /
    \s+?([\+\-])\s+?<\/div>[\s\S]+?([\s\S]+?)<\/span>[\s\S]+?
    ([\s\S]+?)<\/div>/gmi; \ No newline at end of file diff --git a/js/PriceQueue.js b/js/PriceQueue.js new file mode 100644 index 0000000..a795266 --- /dev/null +++ b/js/PriceQueue.js @@ -0,0 +1,804 @@ +var expMarketHashName = /market_hash_name=([^&]+)/; +var expCountryCode = /country=([^&]+)/; +var expCurrencyID = /currency=([^&]+)/; +var expAppID = /appid=([^&]+)/; + +if (!window.SIHID) { + window.SIHID = 'cmeakgjggjdlcpncigglobpjbkabhmjl'; + //window.SIHID = 'eggogcjcakfmimappcfccfffjfcgclal'; +} + +var tf2Quality; +$J.getJSON(`chrome-extension://${window.SIHID}/assets/json/tf2_quality.json`, function (data) { + tf2Quality = data; +}); + +var PriceQueue = { + _numberOfErrors: 0, + _currentError: 0, + _isRunning: false, + _isInit: false, + _successDelay: 2500, + _failureDelay: 5000, + _queue: {}, + _urls: [], + _cache: {}, + _currentproviderIdx: 0, + + _rebuildURL: function (url) { + var _appid = expAppID.exec(url)[1]; + var _countryCode = expCountryCode.exec(url)[1]; + var _currencyID = expCurrencyID.exec(url)[1]; + var _marketHashName = expMarketHashName.exec(url)[1]; + + if (!_currencyID || _currencyID == 'undefined' || isNaN(parseInt(_currencyID))) { + _currencyID = 1; + } + url = 'appid=' + _appid + '&country=' + _countryCode + '¤cy=' + _currencyID + '&market_hash_name=' + _marketHashName; + return url; + }, + GetPrice: function (options) { + if (!PriceQueue._isInit) { + PriceQueue.Init(); + } + + options.url = PriceQueue._rebuildURL(options.url); + + if (PriceQueue._cache[options.url]) { + var cache = PriceQueue._cache[options.url]; + options.success(cache.response, options.pars); + } else { + if (!PriceQueue._queue[options.url]) { + PriceQueue._queue[options.url] = { url: options.url, handlers: [], pars: [] }; + if (options.insert) { + PriceQueue._urls.unshift(options.url); + } else { + PriceQueue._urls.push(options.url); + } + } + PriceQueue._queue[options.url].handlers.push(options.success); + PriceQueue._queue[options.url].pars.push(options.pars || null); + PriceQueue.StartQueue(); + PriceQueue.UpdateLabels(); + } + }, + PricesProviders: [ + { + name: 'SteamOverviewPrice', + getprice: function (appid, countryCode, currencyId, market_hash_name) { + var cacheURL = 'appid=' + appid + '&country=' + countryCode + '¤cy=' + currencyId + '&market_hash_name=' + market_hash_name; + var url = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=' + appid + '&country=' + countryCode + '¤cy=' + currencyId + '&market_hash_name=' + market_hash_name; + + $J.ajax({ + method: "GET", + url: url, + cacheURL: cacheURL, + success: function (response, textStatus, jqXHR) { + PriceQueue._generalHandler.success(response, this.cacheURL, 'SteamOverviewPrice'); + }, + error: PriceQueue._generalHandler.error, + complete: PriceQueue._generalHandler.complete + }); + } + }, + { + name: 'SteamListingPrice', + getprice: function (appid, countryCode, currencyId, market_hash_name) { + var cacheURL = 'appid=' + appid + '&country=' + countryCode + '¤cy=' + currencyId + '&market_hash_name=' + market_hash_name; + var url = window.location.protocol + '//steamcommunity.com/market/listings/' + appid + '/' + market_hash_name + '/render/?start=0&count=5&country=' + countryCode + '&language=english¤cy=' + currencyId; + + $J.ajax({ + method: "GET", + url: url, + cacheURL: cacheURL, + success: function (response, textStatus, jqXHR) { + if (response && response.success && response.listinginfo) { + var pprice1, pprice2; + var $html = $J(response.results_html); + var $priceBlock = $html.find('.market_table_value'); + var $curItem; + $priceBlock.each(function (idx, elem) { + var lowest = $J(elem).find('span.market_listing_price_with_fee').text(); + if (!/SOLD!/i.test(lowest)) { + $curItem = $J(elem); + pprice1 = $curItem.find('span.market_listing_price_with_fee').text(); + pprice2 = $curItem.find('span.market_listing_price_without_fee').text(); + return false; + } else { + console.log('SOLD', elem); + } + }); + + // var price1, price2; + // price1 = /market_listing_price_with_fee">([\s\S]+?)<\/span>/g.exec(response.results_html); + // price2 = /market_listing_price_without_fee">([\s\S]+?)<\/span>/g.exec(response.results_html); + + var _response = { success: true }; + if (response.total_count > 1) { + _response.volume = response.total_count; + } + if (pprice1 && pprice1.length > 1) { + // _response.lowest_price = price1[1]; + _response.lowest_price = pprice1; + } + if (pprice2 && pprice2.length > 1) { + // _response.median_price = price2[1]; + _response.median_price = pprice2; + } + // if (v_currencyformat && GetCurrencyCode) { + // if (response.listinginfo.length) { + // var lstItem = response.listinginfo[Object.keys(response.listinginfo)[0]]; + // for (var i in response.listinginfo) { + // if (response.listinginfo[i] && response.listinginfo[i].converted_price) { + // lstItem = response.listinginfo[i]; + // break; + // } + // } + // + // _response.lowest_price = v_currencyformat(lstItem.converted_price + lstItem.converted_fee, GetCurrencyCode(currencyId)); + // _response.median_price = v_currencyformat(lstItem.converted_price, GetCurrencyCode(currencyId)); + // } + // } + + if (pprice1 === undefined) { + PriceQueue._generalHandler.error(); + } + + PriceQueue._generalHandler.success(_response, this.cacheURL, 'SteamListingPrice'); + } else { + PriceQueue._generalHandler.error(true); + } + }, + error: PriceQueue._generalHandler.error, + complete: PriceQueue._generalHandler.complete + }); + } + } + ], + StartQueue: function () { + if (PriceQueue._isRunning) { + return; + } + if (PriceQueue._urls.length > 0) { + var url = PriceQueue._urls[0]; + var appid = expAppID.exec(url)[1]; + var countryCode = expCountryCode.exec(url)[1]; + var currencyID = expCurrencyID.exec(url)[1]; + var marketHashName = expMarketHashName.exec(url)[1]; + + PriceQueue._isRunning = true; + PriceQueue.PricesProviders[PriceQueue._currentproviderIdx].getprice(appid, countryCode, currencyID, marketHashName); + } else { + PriceQueue._currentError = 0; + } + }, + UpdateHandler: function () { }, + UpdateLabels: function () { + if (PriceQueue._urls.length == 0) { + $J('#_priceQueueCont').hide(); + } else { + $J('#_priceQueueCont').show(); + var hashname = ''; + var m = /market_hash_name=([^&]+)/.exec(PriceQueue._urls[0]); + if (m && m.length > 1) { + hashname = decodeURI(m[1]); + } + $J('#_priceQueueCont .pq-info').html(hashname + '
    ' + PriceQueue._urls.length + ' items remain - ' + PriceQueue._currentError + ' errors'); + } + }, + GenPriceDescription: function (rgItems) { + if (!rgItems || !rgItems.descriptions || !rgItems.lowestPrice) { + return; + } + for (var i = 0; i < rgItems.descriptions.length; i++) { + var des = rgItems.descriptions[i]; + if (des.isprice) { + return; + } + } + var priceProvider = rgItems.providerName || 'Lowest price'; + var marketLink = `${window.location.protocol}//steamcommunity.com/market/listings/${rgItems.appid}/${encodeURIComponent(rgItems.market_hash_name)}`; + + var ddHtml = `${SIHLang.steamprice}: ${rgItems.lowestPrice}`; + if (rgItems.volume) { + ddHtml += ` (${rgItems.volume} ${SIHLang.sold24h})`; + } + + if (mediumPrice && rgItems.market_hash_name !== mediumName) { + var price = parseFloat(getNumber(rgItems.lowestPrice)), + mprice = parseFloat(getNumber(mediumPrice)), + eq = (price / mprice).toFixed(2); + + ddHtml += ' (' + eq + ' ' + mediumName + ')'; + } + + var pdes = { + isprice: true, + type: 'html', + value: ddHtml + }; + + rgItems.descriptions.unshift(pdes); + }, + _generalHandler: { + success: function (response, url, providerName) { + response.providerName = providerName; + + PriceQueue._cache[url] = { response: response, providerName: providerName }; + if (url == PriceQueue._urls[0]) { + PriceQueue._urls.shift(); + } + if (PriceQueue._queue[url]) { + var handlers = PriceQueue._queue[url].handlers; + var pars = PriceQueue._queue[url].pars; + for (var i = 0; i < handlers.length; i++) { + try { + handlers[i](response, pars[i]); + } catch (err) { + console.log(err); + } + } + delete PriceQueue._queue[url]; + } + $J('#_priceQueueCont .pq-progress').stop().css({ width: '1%' }).animate({ width: '100%' }, PriceQueue._successDelay); + window.setTimeout(function () { + PriceQueue._isRunning = false; + PriceQueue.StartQueue(); + }, PriceQueue._successDelay); + }, + error: function (isAppError) { + PriceQueue._currentError++; + PriceQueue._numberOfErrors++; + PriceQueue._currentproviderIdx++; + + if (isAppError) { + var strUrl = PriceQueue._urls.shift(); + PriceQueue._urls.push(strUrl); + } + + if (PriceQueue._currentproviderIdx >= PriceQueue.PricesProviders.length) { + PriceQueue._currentproviderIdx = 0; + $J('#_priceQueueCont .pq-progress').stop().css({ width: '1%' }).animate({ width: '100%' }, PriceQueue._failureDelay); + window.setTimeout(function () { + PriceQueue._isRunning = false; + PriceQueue.StartQueue(); + }, PriceQueue._failureDelay); + } else { + PriceQueue._isRunning = false; + PriceQueue.StartQueue(); + } + + console.log('No error', PriceQueue._numberOfErrors); + }, + complete: function () { + if (PriceQueue.UpdateHandler) { + PriceQueue.UpdateHandler(); + } + PriceQueue.UpdateLabels(); + } + }, + Init: function () { + if (PriceQueue._isInit) { + return; + } + + var cnt = $J('
     
     
    '); + $J('body').append(cnt); + PriceQueue._isInit = true; + } +}; + +var CSGOFAST = { + name: 'CSGOFAST', + _cache: null, + + GetPrices: function (appid, items, show) { + if (!CSGOFAST._cache && SIHID) { + chrome.runtime.sendMessage(SIHID, { type: "CSGOFAST", data: "prices" }, function (e) { + if (e.success) { + CSGOFAST._cache = e.prices; + if (show) { + if (typeof g_ActiveInventory.LoadCompleteInventory == 'function' && !g_ActiveInventory.BIsFullyLoaded()) { + g_ActiveInventory.LoadCompleteInventory().done(function () { + CSGOFAST.SetPrices(730); + }); + } else { + CSGOFAST.SetPrices(730); + } + } + } + }); + } else { + if (show) { + window.setTimeout('CSGOFAST.SetPrices(730)', 100); + } + } + }, + SetPrices: function (appid) { + if (appid != 730 || !CSGOFAST._cache) { + return; + } + // var context = 'item' + appid + '_2_'; + var context = appid + '_2_'; + var items = $J('div[id*="' + context + '"].item'); + var crate = ExchangeRates.GetCurrentRate(); + + items.each(function () { + var item_hash_name = this.rgItem ? this.rgItem.market_hash_name || this.rgItem.description.market_hash_name : null; + var $elem = $J(this); + var pprice = $elem.find('.p-price'); + if (!this.rgItem || !CSGOFAST._cache[item_hash_name]) { + delete this.rgItem.extprice; + if (pprice.length) pprice.remove(); + return; + } + + if (typeof g_ActiveInventory.LoadItemImage == 'function') g_ActiveInventory.LoadItemImage($elem); + if (!pprice.length) { + pprice = $J('
    '); + $elem.append(pprice); + } + + var nprice = CSGOFAST._cache[item_hash_name]; + this.rgItem.extprice = Math.round(nprice * crate * 100) / 100; + pprice.prop('title', 'csgofast'); + pprice.text(ExchangeRates.Format(nprice)); + pprice.append(''); + }); + } +}; + +var CSGOBACKPACK = { + name: 'CSGOBACKPACK', + _cache: null, + GetPrices: function (appid, items, show) { + chrome.runtime.sendMessage(SIHID, { type: "CSGOBACKPACK", data: "prices" }, function (e) { + if (e.success) { + CSGOBACKPACK._cache = e.prices; + if (show) { + if (typeof g_ActiveInventory.LoadCompleteInventory == 'function' && !g_ActiveInventory.BIsFullyLoaded()) { + g_ActiveInventory.LoadCompleteInventory().done(function () { + CSGOBACKPACK.SetPrices(730); + }); + } else { + CSGOBACKPACK.SetPrices(730); + } + } + } + }); + }, + SetPrices: function (appid) { + if (appid != 730 || !CSGOBACKPACK._cache) return; + + var context = appid + '_2_'; + var items = $J('div[id*="' + context + '"].item'); + var crate = ExchangeRates.GetCurrentRate(); + + items.each(function (idx, elem) { + var item_hash_name = elem.rgItem ? elem.rgItem.market_hash_name || elem.rgItem.description.market_hash_name : null; + var $elem = $J(elem); + var pprice = $elem.find('.p-price'); + if (!elem.rgItem || !CSGOBACKPACK._cache[item_hash_name]) { + delete this.rgItem.extprice; + if (pprice.length) pprice.remove(); + return; + } + + if (typeof g_ActiveInventory.LoadItemImage == 'function') g_ActiveInventory.LoadItemImage($elem); + if (!pprice.length) { + pprice = $J('
    '); + $elem.append(pprice); + } + + var nprice = CSGOBACKPACK._cache[item_hash_name]; + elem.rgItem.extprice = Math.round(nprice * crate * 100) / 100; + pprice.prop('title', 'csgobackpack'); + pprice.text(ExchangeRates.Format(nprice)); + pprice.append(''); + }); + } +}; + +var OPSKINS = { + name: 'OPSKINS', + _cache: {}, + GetPrices: function (appid, items, show) { + chrome.runtime.sendMessage(SIHID, { type: "OPSKINS", data: "prices", appid: appid }, function (e) { + if (e.success) { + OPSKINS._cache[appid] = e.prices; + if (show) { + if (typeof g_ActiveInventory.LoadCompleteInventory == 'function' && !g_ActiveInventory.BIsFullyLoaded()) { + g_ActiveInventory.LoadCompleteInventory().done(function () { + OPSKINS.SetPrices(appid); + }); + } else { + OPSKINS.SetPrices(appid); + } + } + } + }); + }, + SetPrices: function (appid) { + var context = appid + '_2_'; + var items = $J('div.item.app' + appid); + var crate = ExchangeRates.GetCurrentRate(); + + items.each(function (idx, elem) { + var item_hash_name = elem.rgItem ? elem.rgItem.market_hash_name || (elem.rgItem.description && elem.rgItem.description.market_hash_name) || elem.rgItem.name : null; + var $elem = $J(elem); + var pprice = $elem.find('.p-price'); + if (!elem.rgItem || !OPSKINS._cache[appid][item_hash_name]) { + delete this.rgItem.extprice; + if (pprice.length) pprice.remove(); + return; + } + + if (typeof g_ActiveInventory.LoadItemImage == 'function') g_ActiveInventory.LoadItemImage($elem); + if (!pprice.length) { + pprice = $J('
    '); + $elem.append(pprice); + } + + var nprice = OPSKINS._cache[appid][item_hash_name]; + elem.rgItem.extprice = Math.round(nprice * crate * 100) / 100; + pprice.prop('title', 'opskins'); + pprice.text(ExchangeRates.Format(nprice)); + pprice.append(''); + }); + } +}; + +var TF2BP = { + name: 'tf2backpack', + _cache: {}, + + GetPrices: function (appid, items, show) { + if (!Object.keys(TF2BP._cache).length && SIHID) { + chrome.runtime.sendMessage(SIHID, { type: "TF2BP", data: "prices" }, function (e) { + if (e.success) { + TF2BP._cache = e.prices; + if (show) { + if (typeof g_ActiveInventory.LoadCompleteInventory == 'function' && !g_ActiveInventory.BIsFullyLoaded()) { + g_ActiveInventory.LoadCompleteInventory().done(function () { + TF2BP.SetPrices(appid); + }); + } else { + TF2BP.SetPrices(appid); + } + } + } + }); + } else { + if (show) { + window.setTimeout('TF2BP.SetPrices(440)', 100); + } + } + }, + SetPrices: function (appid) { + if (appid != 440) return; + + // var context = 'item' + appid + '_2_'; + // var items = $J('[id^="' + context + '"]'); + var context = appid + '_2_'; + var items = $J('div[id*="' + context + '"].item'); + var strangeModifiers = ['Strange Specialized Killstreak ', 'Strange Professional Killstreak ', 'Strange ', 'Vintage ', 'The ', 'Genuine ']; + + var prepareData = function (sItem) { + if (sItem.description !== undefined) { + var desc = sItem.description; + sItem.tradable = desc.tradable; + var qualityName; + desc.tags.map(function (tag) { + if (tag.category.toLowerCase() == 'quality') qualityName = tag.internal_name; + }); + sItem.app_data = { quality: tf2Quality[qualityName] }; + sItem.market_hash_name = desc.market_hash_name; + sItem.apivalue = { attributes: desc.attributes }; + } + return sItem; + }; + + items.each(function () { + this.rgItem = prepareData(this.rgItem); + + if (!this.rgItem || (!this.rgItem.description && !this.rgItem.tradable) || (this.rgItem.description && !this.rgItem.description.tradable)) return; + + var nprice = 0, + quality = this.rgItem.app_data.quality, + tradable = (this.rgItem.tradable ? 'Tradable' : 'Untradable'), + craftable = 'Craftable', + priceindex = 0; + var name = this.market_name || this.rgItem.market_hash_name; + if (TF2BP._cache[name] === undefined) { + for (var i = 0; i < strangeModifiers.length; i++) { + if (name.indexOf(strangeModifiers[i]) == 0 && TF2BP._cache[name.substr(strangeModifiers[i].length)]) { + name = name.substr(strangeModifiers[i].length); + break; + } + } + } + + var isUnusual = false; + if (name.indexOf('Unusual ') == 0) { + isUnusual = true; + name = name.substr(8); + if (this.rgItem.apivalue && this.rgItem.apivalue.attributes) { + for (var iidx = 0; iidx < this.rgItem.apivalue.attributes.length; iidx++) { + if (this.rgItem.apivalue.attributes[iidx].defindex == 134) { + priceindex = this.rgItem.apivalue.attributes[iidx].float_value; + break; + } + } + } + } + + if (!priceindex && name.indexOf('#') !== -1) { + priceindex = name.substr(name.indexOf('#') + 1).trim(); + } + + if (name.indexOf('Series') !== -1) { + name = name.substr(0, name.indexOf('Series')).trim(); + } + + var el = $J(this); + var pprice = el.find('.p-price'); + if (!pprice.length) { + pprice = $J('
    '); + el.append(pprice); + } + + if (TF2BP._cache[name] && + TF2BP._cache[name].prices && + TF2BP._cache[name].prices[quality] && + TF2BP._cache[name].prices[quality][tradable] && + TF2BP._cache[name].prices[quality][tradable][craftable] && + TF2BP._cache[name].prices[quality][tradable][craftable][priceindex] + ) { + var iprice = TF2BP._cache[name].prices[quality][tradable][craftable][priceindex]; + this.rgItem.extcrr = iprice.currency; + this.rgItem.extprice = iprice.value; + + pprice.prop('title', 'TF2BP'); + pprice.text(iprice.value + ' ' + iprice.currency); + pprice.append(''); + } else { + delete this.rgItem.extprice; + if (pprice.length) pprice.remove(); + return; + } + }); + } +}; + +var ExchangeRates = { + _rates: null, + + GetRate: function () { + chrome.runtime.sendMessage(SIHID, { type: "exchangerate" }, function (e) { + if (e && e.success) { + ExchangeRates._rates = e.rates.rates; + } + }); + }, + GetCurrentRate: function () { + if (currencyId && currencyId > 1 && ExchangeRates._rates != null) { + var ccode = GetCurrencyCode(currencyId); + return (ExchangeRates._rates[ccode]) ? ExchangeRates._rates[ccode] : 1; + } else { + return 1; + } + }, + Format: function (input) { + if (currencyId && currencyId > 1 && ExchangeRates._rates != null) { + var ccode = GetCurrencyCode(currencyId); + if (ExchangeRates._rates[ccode]) { + input *= ExchangeRates._rates[ccode]; + return v_currencyformat(Math.round(input * 100), ccode); + } else { + return v_currencyformat(Math.round(input * 100), 'USD'); + } + } else { + return v_currencyformat(Math.round(input * 100), 'USD'); + } + } +}; + +var ExternalPrices = { + // Team Fortress 2 + 440: { + apis: [{ + name: 'backpack.tf', + api: TF2BP + }, { + name: 'opskins.com', + api: OPSKINS + }] + }, + // DOTA 2 + 570: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // Counter-Strike: Global Offensive + 730: { + apis: [{ + name: 'csgofast.com', + api: CSGOFAST + }, { + name: 'csgobackpack.net', + api: CSGOBACKPACK + }, { + name: 'opskins.com', + api: OPSKINS + }] + }, + // PAYDAY 2 + 218620: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // Rust + 252490: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // H1Z1 : Just Survive + 295110: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // H1Z1: King of the Kill + 433850: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // Unturned + 304930: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // Killing Floor 2 + 232090: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // PLAYERUNKNOWN'S BATTLEGROUNDS + 578080: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + // Steam Community + 753: { + apis: [{ + name: 'opskins.com', + api: OPSKINS + }] + }, + + UpdatePrice: function (_currencyid) { + if (_currencyid && _currencyid > 0) { + currencyId = _currencyid; + } else { + currencyId = typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo['wallet_currency'] : 1; + } + var apiIdx = 0; + if ($J('#cb_ExternalPrices').length) { + apiIdx = $J('#cb_ExternalPrices').val(); + } + if (apiIdx === null) return; + var _api = ExternalPrices[g_ActiveInventory.appid].apis[apiIdx]; + if (_api && _api.api && _api.api.SetPrices) { + _api.api.SetPrices(g_ActiveInventory.appid, _api.code); + } + }, + Push: function (data) { }, + cusapis: {} +}; + +ExchangeRates.GetRate(); + +chrome.runtime.sendMessage(SIHID, { type: "getcustomtotal" }, function (e) { + if (e) { + for (var i = 0; i < e; i++) { + getCustomAPI(i); + } + } +}); + +var getCustomAPI = function (idx) { + chrome.runtime.sendMessage(SIHID, { type: "getcustom", idx: idx }, function (e) { + if (!e) { + return; + } + var isApproved = false; + if (e.aprrovedids && typeof (g_ulTradePartnerSteamID) != 'undefined') { + var arr = e.aprrovedids; + for (var i = 0; i < arr.length; i++) { + if (g_ulTradePartnerSteamID == arr[i]) { + var a = $J('
    Verified'); + a.prop('title', 'Verified by ' + e.name); + a.text('Verified by ' + e.name); + $J('#trade_theirs h2').append(a); + isApproved = true; + break; + } + } + } + if (e.prices) { + if (!ExternalPrices.cusapis[e.name]) { + var napi = { + name: e.name, + + GetPrices: function (appid, items, show) { + if (items && (items.appid || Object.keys(items).length) && show) { + var appid = items.appid || items[Object.keys(items)[0]].appid; + var $__api = this; + window.setTimeout(function () { + $__api.SetPrices(appid); + }, 100); + } + }, + SetPrices: function (appid) { + var $__api = this; + //console.log($__api); + if (!$__api._cache[appid]) { + return; + } + var context = 'item' + appid + '_'; + var items = $J('[id^="' + context + '"]'); + var crate = ExchangeRates.GetCurrentRate(); + //console.log(items); + items.each(function () { + var name = this.rgItem.market_hash_name || this.rgItem.market_name || this.rgItem.name; + if (!this.rgItem || !$__api._cache[appid][name]) { + return; + } + var el = $J(this); + var pprice = el.find('.p-price'); + if (!pprice.length) { + pprice = $J('
    '); + el.append(pprice); + } + var nprice = $__api._cache[appid][name].lowest; + if (el[0].rgItem) { + el[0].rgItem.extprice = Math.round(nprice * crate * 100) / 100; + } + pprice.prop('title', $__api.name); + pprice.text(ExchangeRates.Format(nprice)); + }); + } + }; + ExternalPrices.cusapis[e.name] = napi; + $J.each(e.prices, function (idx, o) { + idx = parseInt(idx) + ''; + if (!ExternalPrices[idx]) { + ExternalPrices[idx] = { apis: [] }; + } + ExternalPrices[idx].apis.push({ + name: e.name, + api: ExternalPrices.cusapis[e.name], + isApproved: isApproved + }); + }); + } + var capi = ExternalPrices.cusapis[e.name]; + capi._cache = e.prices; + } + }); +}; diff --git a/js/autoreply.js b/js/autoreply.js new file mode 100644 index 0000000..3fcb6b8 --- /dev/null +++ b/js/autoreply.js @@ -0,0 +1,42 @@ +$(function () { + restore_options(); + $('#bt_Save').click(function () { + save_options(); + return false; + }); +}); + +function restore_options() { + // Use default value color = 'red' and likesColor = true. + chrome.storage.sync.get({ + autoreply: {} + }, function (items) { + var settings = items.autoreply; + console.log(items.autoreply); + + $('input[type=checkbox][data-key]').each(function () { + var key = $(this).data('key'); + if (settings[key] != null) { + $(this).prop('checked', true); + $('input[type=text][data-key=' + key + ']').val(settings[key]); + } + }); + }); +} + +function save_options() { + var settings = {}; + $('input[type=checkbox][data-key]').each(function () { + if ($(this).prop('checked')) { + var key = $(this).data('key'); + settings[key] = $('input[type=text][data-key=' + key + ']').val(); + } + }); + console.log(settings); + chrome.storage.sync.set({ + autoreply: settings + + }, function () { + alert('Settings saved.'); + }); +} \ No newline at end of file diff --git a/js/badge.js b/js/badge.js new file mode 100644 index 0000000..0c9383c --- /dev/null +++ b/js/badge.js @@ -0,0 +1,50 @@ +var sGen = document.createElement('script'); +sGen.src = chrome.extension.getURL('js/lang/_gen.js'); +(document.head || document.documentElement).appendChild(sGen); +sGen.onload = function () { + sGen.parentNode.removeChild(sGen); +}; + +var sCacher = document.createElement('script'); +sCacher.src = chrome.extension.getURL('bundle/js/RequestCacher.js'); +(document.head || document.documentElement).appendChild(sCacher); +sCacher.onload = function () { + sCacher.parentNode.removeChild(sCacher); +}; + +var cssM = document.createElement('link'); +cssM.href = window.location.protocol + '//steamcommunity-a.akamaihd.net/public/css/skin_1/economy_market.css'; +cssM.rel = 'stylesheet'; +cssM.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssM); + +chrome.storage.sync.get({ + lang: '' +}, function (items) { + + var sLang = document.createElement('script'); + if (items.lang == '') { + sLang.src = chrome.extension.getURL('js/lang/' + chrome.i18n.getMessage("langcode") + '.js'); + } else { + sLang.src = chrome.extension.getURL('js/lang/' + items.lang + '.js'); + } + + (document.head || document.documentElement).appendChild(sLang); + sLang.onload = function () { + sLang.parentNode.removeChild(sLang); + }; +}); + +var sOffer = document.createElement('script'); +sOffer.src = chrome.extension.getURL('js/badge.script.js'); +(document.head || document.documentElement).appendChild(sOffer); +sOffer.onload = function () { + sOffer.parentNode.removeChild(sOffer); +}; + +var sModal = document.createElement('script'); +sModal.src = 'http://steamcommunity-a.akamaihd.net/public/javascript/modalv2.js?v=xM3yIvzXuMtB&l=english'; +(document.head || document.documentElement).appendChild(sModal); +sModal.onload = function () { + sModal.parentNode.removeChild(sModal); +}; diff --git a/js/badge.script.js b/js/badge.script.js new file mode 100644 index 0000000..a66ccdb --- /dev/null +++ b/js/badge.script.js @@ -0,0 +1,416 @@ +var buyingExp = /javascript:BuyMarketListing\('listing', '(\d+)', (\d+), '(\d+)', '(\d+)'\)/; +var linkExp = /\/\/steamcommunity\.com\/market\/listings\/(\d+)\/(.+)/; +BuyCardSetDialog = { + m_bInitialized: false, + m_oItemsToBuy: [], + m_oBuyQueue: [], + m_fnDocumentKeyHandler: null, + m_total: 0, + m_modal: null, + m_elDialogContent: null, + b_buyall: false, + + Initialize: function () { + if ($('market_buycardset_dialog_cancel')) { + $('market_buycardset_dialog_cancel').observe('click', this.OnCancel.bindAsEventListener(this)); + } + $('market_buycardset_dialog_buyall').observe('click', this.OnBuyAll.bindAsEventListener(this)); + + this.m_elDialogContent = $('market_buycardset_dialog'); + this.m_elDialogContent.style.visibility = 'hidden'; + this.m_elDialogContent.show(); + // TODO: Slider + this.m_elDialogContent.hide(); + this.m_elDialogContent.style.visibility = ''; + + this.m_bInitialized = true; + }, + + Show: function (items) { + if (!this.m_bInitialized) + this.Initialize(); + //if (items.length == 0) return; + m_oItemsToBuy = items; + this.m_fnDocumentKeyHandler = this.OnDocumentKeyPress.bindAsEventListener(this); + $(document).observe('keydown', this.m_fnDocumentKeyHandler); + + this.OnReload({ + stop: function () { + } + }); + + this.m_modal = new CModal($J(this.m_elDialogContent)); + this.m_modal.Show(); + }, + + RemoveItem: function (link) { + // console.log(link); + for (var i = 0; i < m_oItemsToBuy.length; i++) { + var it = m_oItemsToBuy[i]; + if (it.link === link) { + m_oItemsToBuy.splice(i, 1); + + if (m_oItemsToBuy.length === 0) { + //window.location.reload(); + } + return; + } + } + }, + + ProcessBuyQueue: function () { + if (this.m_oBuyQueue.length) { + const me =this; + const data = this.m_oBuyQueue.shift(); + const $row = $J(`#lstParts .market_listing_row.market_recent_listing_row[data-name="${data.market_hash_name}"]`); + + $row.find('.sih-card-price').css({ background: `url(${window.location.protocol}//steamcommunity-a.akamaihd.net/public/images/login/throbber.gif) no-repeat` }); + $J.ajax({ + url: 'https://steamcommunity.com/market/createbuyorder/', + type: 'POST', + data: data, + crossDomain: true, + xhrFields: {withCredentials: true} + }).done(function (response) { + if (response.success == 29) { + $row.data('done', true); + $row.find('.sih-card-price').replaceWith('Already ordered'); + } else if (response.success == 1) { + $row.data('done', true); + $row.find('.sih-card-price').replaceWith('Done'); + } else if (response.success == 10) + $row.find('.market_listing_price.market_listing_price_with_fee').html('Error'); + + window.setTimeout('BuyCardSetDialog.ProcessBuyQueue();', 1500); + }).fail(function (jqxhr) { + // jquery doesn't parse json on fail + var data = $J.parseJSON(jqxhr.responseText); + $row.find('.market_listing_price.market_listing_price_with_fee').html('Error'); + + window.setTimeout('BuyCardSetDialog.ProcessBuyQueue();', 1500); + }); + } else { + window.setTimeout('window.location.reload();', 5000); + } + }, + + BuyFirstCard: function () { + const me = this; + var rows = $J('#lstParts .market_listing_row.market_recent_listing_row'); + const cardsToBuy = rows.filter((idx, item) => { + const count = $J(item).find('.sih-number-of-card').val(); + return parseInt(count, 10) > 0; + }); + + cardsToBuy.each(function () { + var $row = $J(this); + var rdata = $row.data(); + var inp = $row.find('input.sih-number-of-card'); + var inpprice = $row.find('input.sih-card-price'); + var numberOfCard = parseInt(inp.val()); + var priceAsInt = GetPriceValueAsInt(inpprice.val() + ''); + var data = { + sessionid: g_sessionID, + currency: g_rgWalletInfo.wallet_currency, + appid: rdata.appid, + market_hash_name: rdata.marketname, + price_total: priceAsInt * numberOfCard, + quantity: numberOfCard + }; + me.m_oBuyQueue.push(data); + }); + + this.ProcessBuyQueue(); + }, + + Dismiss: function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + if (this.m_modal) + this.m_modal.Dismiss(); + }, + + OnCancel: function (event) { + this.Dismiss(); + event.stop(); + }, + + OnAccept: function (event) { + event.stop(); + }, + + OnReload: function (event) { + event.stop(); + $J('#lstParts').html(''); + //$J('#lstParts').html('Working...'); + $J('.badge_card_to_collect').each(function (i, e) { + var imgUrl = $J(this).find('img').attr('src'); + var cardName = $J(this).find('.badge_card_set_text:nth-child(2)').text(); + var link = $J(this).find('a[href*="/market/listings/"]').attr('href'); + + var m = linkExp.exec(link); + var appID = m[1]; + var marketHashname = decodeURIComponent(m[2]).replace(/#/g, '%23'); + var rdata = { + appid: appID, + marketname: marketHashname + }; + var priceLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=' + appID + '&country=' + g_rgWalletInfo.wallet_country + '¤cy=' + g_rgWalletInfo.wallet_currency + '&market_hash_name=' + marketHashname; + var row = $J(`
    `); + row.append('
    '); + row.append('
    ' + + '
    '); + row.append('
    ' + + '
    ' + + '' + cardName + '
    ' + appID + ' ' + marketHashname.replace(/%23/g, '#') + '' + + '
    '); + row.data(rdata); + + RequestCacher.get({ + method: "GET", + url: priceLink + }).then((response) => { + var lp = 0, nfp = 0; + if (response.success) { + if (response.median_price) { + lp = response.lowest_price; + nfp = response.median_price; + var pp = parseFloat(getNumber(lp)); + //row.data('price', pp); + row.find('.sih-card-price').val(pp); + row.find('.sih-card-price').prop('placeholder', lp); + + BuyCardSetDialog.CalculateTotal(); + } + } + }); + + $J('#lstParts').append(row); + }); + var gameID = /\/steamcommunity.com\/(.+)\/gamecards\/(\d+)/.exec(window.location.href)[2]; + // console.log(gameID); + $J('.badge_card_set_card.owned').each(function (i, e) { + var div = $J(this).find('.badge_card_set_text.ellipsis').clone(); + div.find('.badge_card_set_text_qty').remove(); + var imgUrl = $J(this).find('img.gamecard').attr('src'); + var cardName = $J(div[0]).text().trim(); + var badgeSeries = $J(div[1]).text().trim(); + // console.log(cardName); + // console.log(badgeSeries); + var marketHashname = gameID + '-' + decodeURIComponent(cardName).replace(/#/g, '%23'); + var rdata = { + appid: 753, + marketname: marketHashname + }; + var priceLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=' + 753 + '&country=' + g_rgWalletInfo.wallet_country + '¤cy=' + g_rgWalletInfo.wallet_currency + '&market_hash_name=' + marketHashname; + var row = $J(`
    `); + row.append('
    '); + row.append('
    ' + + '
    '); + row.append('
    ' + + '
    ' + + '' + badgeSeries + '
    753 ' + marketHashname.replace(/%23/g, '#') + '' + + '
    '); + row.data(rdata); + + RequestCacher.get({ + method: "GET", + url: priceLink + }).then((response) => { + var lp = 0, nfp = 0; + if (response.success) { + if (response.median_price) { + lp = response.lowest_price; + nfp = response.median_price; + var pp = parseFloat(getNumber(lp)); + //row.data('price', pp); + row.find('.sih-card-price').val(pp); + row.find('.sih-card-price').prop('placeholder', lp); + + BuyCardSetDialog.CalculateTotal(); + } + } + }).catch(() => { + var altName = row.data('marketname'); + if (altName.indexOf('(Trading Card)') == -1) { + altName = altName + ' (Trading Card)'; + row.data('marketname', altName); + + RequestCacher.get({ + method: "GET", + url: '//steamcommunity.com/market/priceoverview/?appid=753&country=' + g_rgWalletInfo.wallet_country + '¤cy=' + g_rgWalletInfo.wallet_currency + '&market_hash_name=' + altName + }).then((response) => { + var lp = 0, nfp = 0; + if (response.success) { + if (response.median_price) { + lp = response.lowest_price; + nfp = response.median_price; + var pp = parseFloat(getNumber(lp)); + //row.data('price', pp); + row.find('.sih-card-price').val(pp); + row.find('.sih-card-price').prop('placeholder', lp); + + BuyCardSetDialog.CalculateTotal(); + } + } + }).catch(() => { + row.remove(); + }); + } else { + row.remove(); + } + }); + + $J('#lstParts').append(row); + }); + }, + + OnBuyAll: function (event) { + event.stop(); + this.b_buyall = true; + this.BuyFirstCard(); + $J('#market_buycardset_dialog_buyall').prop('disabled', true); + }, + + CalculateTotal: function () { + var rows = $J('#lstParts .market_listing_row.market_recent_listing_row'); + BuyCardSetDialog.m_total = 0; + rows.each(function () { + var $row = $J(this); + var rdata = $row.data(); + var inp = $row.find('input.sih-number-of-card'); + var inpprice = $row.find('input.sih-card-price'); + var numberOfCard = parseInt(inp.val()); + var priceAsInt = GetPriceValueAsInt(inpprice.val() + ''); + // console.log(priceAsInt, numberOfCard); + if (priceAsInt && numberOfCard) { + BuyCardSetDialog.m_total += priceAsInt * numberOfCard / 100; + } + }); + $J('#market_buycardset_dialog_buyall span').text(SIHLang.tradingcards.buyall + ' (' + formatNumber(BuyCardSetDialog.m_total) + ')'); + }, + + OnDocumentKeyPress: function (event) { + if (event.keyCode == Event.KEY_ESC) { + this.Dismiss(); + event.stop(); + } + } +}; + +var AddBuyCardSet = function () { + var dialog = ''; + + dialog += ''; + $J('body').append(dialog); + $J('#lstParts').on('change', 'input[type=number]', function () { + BuyCardSetDialog.CalculateTotal(); + }); +}; + +var g_rgWalletInfo = null; +var g_strLanguage = 'english'; +var g_rgAppContextData = {}; +var missingCards = []; + +setTimeout(function () { + var cardsleft = $J('.badge_card_to_collect_links'); + //if (cardsleft.length < 1) { + // return; + //} + + $J('.gamecards_inventorylink').append('' + SIHLang.tradingcards.showpopup + ''); + var inventLink = $J('.popup_menu_item.header_notification_items').attr('href'); + $J.ajax({ + url: inventLink, + success: function (res) { + var expWallet = /g_rgWalletInfo = .+?;/; + var m = expWallet.exec(res); + if (m) { + eval(m[0]); + } + + m = /g_strLanguage = .+?;/.exec(res); + if (m) { + eval(m[0]); + } + + $J('#bt_buyMissings').click(function () { + BuyCardSetDialog.Show(missingCards); + }); + } + }); + missingCards = []; + cardsleft.each(function (e, i) { + var link = $J(this).find('a[href*="/market/listings/"]'); + if (link.length < 1) return; + missingCards.push({link: link.attr('href')}); + }); + + AddBuyCardSet(); + ReloadLang(); +}, 10); diff --git a/js/common/settings.js b/js/common/settings.js new file mode 100644 index 0000000..ae8e16a --- /dev/null +++ b/js/common/settings.js @@ -0,0 +1,53 @@ +chrome.runtime.onMessage.addListener( + function (request, sender, sendResponse) { + if (request.type == "updatecurency") { + var currencyid = parseInt(request.currencyid); + var actualCode = ['ExternalPrices.UpdatePrice(' + currencyid + ');'].join('\r\n'); + var script = document.createElement('script'); + script.textContent = actualCode; + (document.head || document.documentElement).appendChild(script); + script.parentNode.removeChild(script); + } + + if (request.type == "changeextcolor") { + modStyle(request.colors); + } + + if (request.type == "changesimplify") { + if (request.simplify) { + $('body').addClass('simple'); + } else { + $('body').removeClass('simple'); + } + } + }); + +(function () { + var styleEl = document.createElement('style'); + document.body.appendChild(styleEl); + window.modStyle = function (styles) { + var str = ''; + if (styles.extbgcolor) { + var bgcolor = hexToRgb(styles.extbgcolor); + str += 'body .p-price {' + + 'background-color: rgba(' + bgcolor.r + ',' + bgcolor.g + ',' + bgcolor.b + ',0.6);' + + 'color: ' + styles.exttextcolor + ';}'; + } + styleEl.innerHTML = str; + } +}()); + +function hexToRgb(hex) { + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function (m, r, g, b) { + return r + r + g + g + b + b; + }); + + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +} \ No newline at end of file diff --git a/js/faq.js b/js/faq.js new file mode 100644 index 0000000..3098146 --- /dev/null +++ b/js/faq.js @@ -0,0 +1,8 @@ +$(function () { + chrome.browserAction.setPopup({ + popup: "html/faq.html" + }); + $('.detail-link').click(function () { + $(this).next('.detail-content').toggle(); + }); +}); \ No newline at end of file diff --git a/js/gifts.js b/js/gifts.js new file mode 100644 index 0000000..dd7a507 --- /dev/null +++ b/js/gifts.js @@ -0,0 +1,34 @@ +var sGen = document.createElement('script'); +sGen.src = chrome.extension.getURL('js/lang/_gen.js'); +(document.head || document.documentElement).appendChild(sGen); +sGen.onload = function () { + sGen.parentNode.removeChild(sGen); +}; + +chrome.storage.sync.get({ + lang: '' +}, function (items) { + var sLang = document.createElement('script'); + if (items.lang == '') { + sLang.src = chrome.extension.getURL('js/lang/' + chrome.i18n.getMessage("langcode") + '.js'); + } else { + sLang.src = chrome.extension.getURL('js/lang/' + items.lang + '.js'); + } + + (document.head || document.documentElement).appendChild(sLang); + sLang.onload = function () { + sLang.parentNode.removeChild(sLang); + }; +}); + +var script = document.createElement('script'); +script.textContent = `window.SIHID = '${chrome.runtime.id}'`; +(document.head || document.documentElement).appendChild(script); +script.parentNode.removeChild(script); + +var sOffer = document.createElement('script'); +sOffer.src = chrome.extension.getURL('js/gifts.script.js'); +(document.head || document.documentElement).appendChild(sOffer); +sOffer.onload = function () { + sOffer.parentNode.removeChild(sOffer); +}; diff --git a/js/gifts.script.js b/js/gifts.script.js new file mode 100644 index 0000000..03b0d99 --- /dev/null +++ b/js/gifts.script.js @@ -0,0 +1,157 @@ +var giftsID = []; +var cacheResult = null; +var isGmail = false; + +var SplitGmail = function (email) { + email = email.toLowerCase().trim(); + var idx = email.lastIndexOf('@gmail.com'); + if (idx == -1) return [email]; + if (email.substring(idx) != '@gmail.com') return [email]; + return [email.substring(0, idx), email.substring(idx)] +}; + +function SendGifts() { + if (g_bSendGiftCallRunning) { + return; + } + + var gidGift = null; + $J('[data-giftid]').each(function () { + var data = $J(this).data(); + if (!data.done) { + gidGift = data.giftid; + $J(this).data('done', true); + $J(this).find('.loading').show(); + return false; + } + }); + + if (gidGift) { + console.log('Sending: ' + gidGift); + } else { + console.log('Done'); + OnSendGiftSuccess(cacheResult); + return false; + } + var giftee_account_id = 0; + var giftee_email = ''; + var giftee_name = ''; + var gift_message = ''; + var gift_sentiment = ''; + var gift_signature = ''; + var bIsGift = true; + try { + if ($('send_via_email').checked) { + giftee_email = $('email_input').value; + var res = SplitGmail(giftee_email); + if (res.length == 2) { + giftee_email = res[0] + '+' + gidGift + res[1]; + isGmail = true; + } else { + isGmail = false; + } + } else { + giftee_account_id = currently_selected_friend_id; + } + giftee_name = $('gift_recipient_name').value; + gift_message = $('gift_message_text').value; + gift_sentiment = $('gift_sentiment').value; + gift_signature = $('gift_signature').value; + + g_bSendGiftCallRunning = true; + + new Ajax.Request('https://store.steampowered.com/checkout/sendgiftsubmit/', + { + method: 'post', + parameters: { + // gift info + 'GifteeAccountID': giftee_account_id, + 'GifteeEmail': giftee_email, + 'GifteeName': giftee_name, + 'GiftMessage': gift_message, + 'GiftSentiment': gift_sentiment, + 'GiftSignature': gift_signature, + 'GiftGID': gidGift, + 'SessionID': g_sessionID + }, + onSuccess: function (transport) { + g_bSendGiftCallRunning = false; + if (transport.responseJSON && transport.responseJSON.success) { + var result = transport.responseJSON.success; + // Success... + if (result == 1 || result == 22) { + $J('[data-giftid=' + gidGift + '] .loading').html('Done'); + if (!$('send_via_email').checked || isGmail) { + SendGifts(); + } + cacheResult = result; + } else { + OnSendGiftFailure(result); + } + } else { + OnSendGiftFailure(2); + } + }, + onFailure: function () { + g_bSendGiftCallRunning = false; + OnSendGiftFailure(3); + } + }); + } + catch (e) { + ReportCheckoutJSError('Failed gathering form data and calling DoSendGift', e); + } +} +var InitGifts = function () { + var href = window.location.href; + var stIdx = href.indexOf('' + g_gidGift); + var arr = href.substring(stIdx).split('/'); + $J('.friend_block.disabled input[type=radio]').prop('disabled', false); + $J('.friend_block.disabled').removeClass('disabled'); + if (arr.length > 2) { + var params = { + type: 'GetInventoryItems', + steamid: arr[arr.length - 1], + appid: 753, + contextid: 1 + }; + + chrome.runtime.sendMessage(SIHID, params, function (res) { + if (res && res.success) { + var rgInventory = res.rgInventory; + for (var i = 0; i < arr.length - 1; i++) { + var item = rgInventory[arr[i]]; + if (item) { + giftsID.push({ + id: item.id, + des: res.rgDescriptions[item.classid + '_' + item.instanceid] + }); + } + } + if (giftsID.length) { + var giftsDiv = $J($J('.checkout_tab')[0]); + giftsDiv.empty(); + for (var i = 0; i < giftsID.length; i++) { + var l_gift = giftsID[i]; + var elGift = '
    ' + + '
    ' + + '' + + '
    ' + + '
    ' + + '' + + l_gift.des.name + + '
    ' + + '
    '; + giftsDiv.append(elGift); + } + SendGift = SendGifts; + } + } + }); + } +}; + +$J(function () { + InitGifts(); +}); diff --git a/js/helper.js b/js/helper.js new file mode 100644 index 0000000..ebe2851 --- /dev/null +++ b/js/helper.js @@ -0,0 +1,9 @@ +// Convert time to format yyyy-mm-dd +function formatDate(time) { + var date = new Date(); + date.setTime(time * 1000); + var day = (date.getDate().toString().length == 1) ? '0' + date.getDate() : date.getDate(); + var month = date.getMonth() + 1; + month = month.toString().length == 1 ? '0' + month.toString() : month; + return date.getFullYear() + '-' + month + '-' + day; +} diff --git a/js/highchart/highcharts-more.js b/js/highchart/highcharts-more.js new file mode 100644 index 0000000..915fb51 --- /dev/null +++ b/js/highchart/highcharts-more.js @@ -0,0 +1,51 @@ +/* + Highcharts JS v3.0.2 (2013-06-05) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(k,F){function K(a,b,c){this.init.call(this,a,b,c)}function L(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment=function(a){var c=this.xAxis.center;a.push("L",c[0],c[1])},this.closedStacks=!0}function M(a,b){var c=this.chart,d=this.options.animation,e=this.group,f=this.markerGroup,g=this.xAxis.center,j=c.plotLeft,l=c.plotTop;if(c.polar){if(c.renderer.isSVG)if(d===!0&&(d={}),b){if(c={translateX:g[0]+j,translateY:g[1]+l,scaleX:0.001,scaleY:0.001},e.attr(c),f)f.attrSetters=e.attrSetters, +f.attr(c)}else c={translateX:j,translateY:l,scaleX:1,scaleY:1},e.animate(c,d),f&&f.animate(c,d),this.animate=null}else a.call(this,b)}var Q=k.arrayMin,R=k.arrayMax,r=k.each,H=k.extend,m=k.merge,S=k.map,q=k.pick,x=k.pInt,n=k.getOptions().plotOptions,h=k.seriesTypes,A=k.extendClass,N=k.splat,p=k.wrap,O=k.Axis,v=k.Tick,B=k.Series,y=h.column.prototype,u=Math,I=u.round,C=u.floor,J=u.ceil,T=u.min,U=u.max,t=function(){};H(K.prototype,{init:function(a,b,c){var d=this,e=d.defaultOptions;d.chart=b;if(b.angular)e.background= +{};d.options=a=m(e,a);(a=a.background)&&r([].concat(N(a)).reverse(),function(a){var b=a.backgroundColor,a=m(d.defaultBackgroundOptions,a);if(b)a.backgroundColor=b;a.color=a.backgroundColor;c.options.plotBands.unshift(a)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{shape:"circle",borderWidth:1,borderColor:"silver",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#FFF"],[1,"#DDD"]]},from:Number.MIN_VALUE,innerRadius:0,to:Number.MAX_VALUE, +outerRadius:"105%"}});var G=O.prototype,v=v.prototype,V={getOffset:t,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:t,setCategories:t,setTitle:t},P={isRadial:!0,defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,plotBands:[],tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2},defaultRadialXOptions:{gridLineWidth:1,labels:{align:null, +distance:15,x:0,y:null},maxPadding:0,minPadding:0,plotBands:[],showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},plotBands:[],showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){this.options=m(this.defaultOptions,this.defaultRadialOptions,a)},getOffset:function(){G.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center=h.pie.prototype.getCenter.call(this.pane)},getLinePath:function(a, +b){var c=this.center,b=q(b,c[2]/2-this.offset);return this.chart.renderer.symbols.arc(this.left+c[0],this.top+c[1],b,b,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})},setAxisTranslation:function(){G.setAxisTranslation.call(this);if(this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.isXAxis))this.minPixelPadding=this.transA*this.minPointOffset+(this.reversed?(this.endAngleRad-this.startAngleRad)/ +4:0)},beforeSetTickPositions:function(){this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange)},setAxisSize:function(){G.setAxisSize.call(this);if(this.center)this.len=this.width=this.height=this.isCircular?this.center[2]*(this.endAngleRad-this.startAngleRad)/2:this.center[2]/2},getPosition:function(a,b){if(!this.isCircular)b=this.translate(a),a=this.min;return this.postTranslate(this.translate(a),q(b,this.center[2]/2)-this.offset)},postTranslate:function(a,b){var c= +this.chart,d=this.center,a=this.startAngleRad+a;return{x:c.plotLeft+d[0]+Math.cos(a)*b,y:c.plotTop+d[1]+Math.sin(a)*b}},getPlotBandPath:function(a,b,c){var d=this.center,e=this.startAngleRad,f=d[2]/2,g=[q(c.outerRadius,"100%"),c.innerRadius,q(c.thickness,10)],j=/%$/,l,o=this.isCircular;this.options.gridLineInterpolation==="polygon"?d=this.getPlotLinePath(a).concat(this.getPlotLinePath(b,!0)):(o||(g[0]=this.translate(a),g[1]=this.translate(b)),g=S(g,function(a){j.test(a)&&(a=x(a,10)*f/100);return a}), +c.shape==="circle"||!o?(a=-Math.PI/2,b=Math.PI*1.5,l=!0):(a=e+this.translate(a),b=e+this.translate(b)),d=this.chart.renderer.symbols.arc(this.left+d[0],this.top+d[1],g[0],g[0],{start:a,end:b,innerR:q(g[1],g[0]-g[2]),open:l}));return d},getPlotLinePath:function(a,b){var c=this.center,d=this.chart,e=this.getPosition(a),f,g,j;this.isCircular?j=["M",c[0]+d.plotLeft,c[1]+d.plotTop,"L",e.x,e.y]:this.options.gridLineInterpolation==="circle"?(a=this.translate(a))&&(j=this.getLinePath(0,a)):(f=d.xAxis[0], +j=[],a=this.translate(a),c=f.tickPositions,f.autoConnect&&(c=c.concat([c[0]])),b&&(c=[].concat(c).reverse()),r(c,function(c,b){g=f.getPosition(c,a);j.push(b?"L":"M",g.x,g.y)}));return j},getTitlePosition:function(){var a=this.center,b=this.chart,c=this.options.title;return{x:b.plotLeft+a[0]+(c.x||0),y:b.plotTop+a[1]-{high:0.5,middle:0.25,low:0}[c.align]*a[2]+(c.y||0)}}};p(G,"init",function(a,b,c){var i;var d=b.angular,e=b.polar,f=c.isX,g=d&&f,j,l;l=b.options;var o=c.pane||0;if(d){if(H(this,g?V:P), +j=!f)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else if(e)H(this,P),this.defaultRadialOptions=(j=f)?this.defaultRadialXOptions:m(this.defaultYAxisOptions,this.defaultRadialYOptions);a.call(this,b,c);if(!g&&(d||e)){a=this.options;if(!b.panes)b.panes=[];this.pane=(i=b.panes[o]=b.panes[o]||new K(N(l.pane)[o],b,this),o=i);o=o.options;b.inverted=!1;l.chart.zoomType=null;this.startAngleRad=b=(o.startAngle-90)*Math.PI/180;this.endAngleRad=l=(q(o.endAngle,o.startAngle+360)-90)*Math.PI/180;this.offset= +a.offset||0;if((this.isCircular=j)&&c.max===F&&l-b===2*Math.PI)this.autoConnect=!0}});p(v,"getPosition",function(a,b,c,d,e){var f=this.axis;return f.getPosition?f.getPosition(c):a.call(this,b,c,d,e)});p(v,"getLabelPosition",function(a,b,c,d,e,f,g,j,l){var o=this.axis,i=f.y,h=f.align,k=(o.translate(this.pos)+o.startAngleRad+Math.PI/2)/Math.PI*180;o.isRadial?(a=o.getPosition(this.pos,o.center[2]/2+q(f.distance,-25)),f.rotation==="auto"?d.attr({rotation:k}):i===null&&(i=x(d.styles.lineHeight)*0.9-d.getBBox().height/ +2),h===null&&(h=o.isCircular?k>20&&k<160?"left":k>200&&k<340?"right":"center":"center",d.attr({align:h})),a.x+=f.x,a.y+=i):a=a.call(this,b,c,d,e,f,g,j,l);return a});p(v,"getMarkPath",function(a,b,c,d,e,f,g){var j=this.axis;j.isRadial?(a=j.getPosition(this.pos,j.center[2]/2+d),b=["M",b,c,"L",a.x,a.y]):b=a.call(this,b,c,d,e,f,g);return b});n.arearange=m(n.area,{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'{series.name}: {point.low} - {point.high}
    '}, +trackByArea:!0,dataLabels:{verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0}});h.arearange=k.extendClass(h.area,{type:"arearange",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",getSegments:function(){var a=this;r(a.points,function(b){if(!a.options.connectNulls&&(b.low===null||b.high===null))b.y=null;else if(b.low===null&&b.high!==null)b.y=b.high});B.prototype.getSegments.call(this)},translate:function(){var a=this.yAxis;h.area.prototype.translate.apply(this); +r(this.points,function(b){var c=b.low,d=b.high,e=b.plotY;d===null&&c===null?b.y=null:c===null?(b.plotLow=b.plotY=null,b.plotHigh=a.toPixels(d,!0)):d===null?(b.plotLow=e,b.plotHigh=null):(b.plotLow=e,b.plotHigh=a.toPixels(d,!0))})},getSegmentPath:function(a){var b,c=[],d=a.length,e=B.prototype.getSegmentPath,f,g;g=this.options;var j=g.step;for(b=HighchartsAdapter.grep(a,function(a){return a.plotLow!==null});d--;)f=a[d],f.plotHigh!==null&&c.push({plotX:f.plotX,plotY:f.plotHigh});a=e.call(this,b);if(j)j=== +!0&&(j="left"),g.step={left:"right",center:"center",right:"left"}[j];c=e.call(this,c);g.step=j;g=[].concat(a,c);c[0]="L";this.areaPath=this.areaPath.concat(a,c);return g},drawDataLabels:function(){var a=this.data,b=a.length,c,d=[],e=B.prototype,f=this.options.dataLabels,g,j=this.chart.inverted;if(f.enabled||this._hasPointLabels){for(c=b;c--;)g=a[c],g.y=g.high,g.plotY=g.plotHigh,d[c]=g.dataLabel,g.dataLabel=g.dataLabelUpper,g.below=!1,j?(f.align="left",f.x=f.xHigh):f.y=f.yHigh;e.drawDataLabels.apply(this, +arguments);for(c=b;c--;)g=a[c],g.dataLabelUpper=g.dataLabel,g.dataLabel=d[c],g.y=g.low,g.plotY=g.plotLow,g.below=!0,j?(f.align="right",f.x=f.xLow):f.y=f.yLow;e.drawDataLabels.apply(this,arguments)}},alignDataLabel:h.column.prototype.alignDataLabel,getSymbol:h.column.prototype.getSymbol,drawPoints:t});n.areasplinerange=m(n.arearange);h.areasplinerange=A(h.arearange,{type:"areasplinerange",getPointSpline:h.spline.prototype.getPointSpline});n.columnrange=m(n.column,n.arearange,{lineWidth:1,pointRange:null}); +h.columnrange=A(h.arearange,{type:"columnrange",translate:function(){var a=this.yAxis,b;y.translate.apply(this);r(this.points,function(c){var d=c.shapeArgs;c.plotHigh=b=a.translate(c.high,0,1,0,1);c.plotLow=c.plotY;d.y=b;d.height=c.plotY-b})},trackerGroups:["group","dataLabels"],drawGraph:t,pointAttrToOptions:y.pointAttrToOptions,drawPoints:y.drawPoints,drawTracker:y.drawTracker,animate:y.animate,getColumnMetrics:y.getColumnMetrics});n.gauge=m(n.line,{dataLabels:{enabled:!0,y:15,borderWidth:1,borderColor:"silver", +borderRadius:3,style:{fontWeight:"bold"},verticalAlign:"top",zIndex:2},dial:{},pivot:{},tooltip:{headerFormat:""},showInLegend:!1});v={type:"gauge",pointClass:k.extendClass(k.Point,{setState:function(a){this.state=a}}),angular:!0,drawGraph:t,trackerGroups:["group","dataLabels"],translate:function(){var a=this.yAxis,b=this.options,c=a.center;this.generatePoints();r(this.points,function(d){var e=m(b.dial,d.dial),f=x(q(e.radius,80))*c[2]/200,g=x(q(e.baseLength,70))*f/100,j=x(q(e.rearLength,10))*f/100, +l=e.baseWidth||3,o=e.topWidth||1,i=a.startAngleRad+a.translate(d.y,null,null,null,!0);b.wrap===!1&&(i=Math.max(a.startAngleRad,Math.min(a.endAngleRad,i)));i=i*180/Math.PI;d.shapeType="path";d.shapeArgs={d:e.path||["M",-j,-l/2,"L",g,-l/2,f,-o/2,f,o/2,g,l/2,-j,l/2,"z"],translateX:c[0],translateY:c[1],rotation:i};d.plotX=c[0];d.plotY=c[1]})},drawPoints:function(){var a=this,b=a.yAxis.center,c=a.pivot,d=a.options,e=d.pivot,f=a.chart.renderer;r(a.points,function(c){var b=c.graphic,e=c.shapeArgs,o=e.d, +i=m(d.dial,c.dial);b?(b.animate(e),e.d=o):c.graphic=f[c.shapeType](e).attr({stroke:i.borderColor||"none","stroke-width":i.borderWidth||0,fill:i.backgroundColor||"black",rotation:e.rotation}).add(a.group)});c?c.animate({translateX:b[0],translateY:b[1]}):a.pivot=f.circle(0,0,q(e.radius,5)).attr({"stroke-width":e.borderWidth||0,stroke:e.borderColor||"silver",fill:e.backgroundColor||"black"}).translate(b[0],b[1]).add(a.group)},animate:function(a){var b=this;if(!a)r(b.points,function(a){var d=a.graphic; +d&&(d.attr({rotation:b.yAxis.startAngleRad*180/Math.PI}),d.animate({rotation:a.shapeArgs.rotation},b.options.animation))}),b.animate=null},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);h.pie.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:h.pie.prototype.setData,drawTracker:h.column.prototype.drawTracker};h.gauge=k.extendClass(h.line,v);n.boxplot=m(n.column,{fillColor:"#FFFFFF",lineWidth:1, +medianWidth:2,states:{hover:{brightness:-0.3}},threshold:null,tooltip:{pointFormat:'{series.name}
    Minimum: {point.low}
    Lower quartile: {point.q1}
    Median: {point.median}
    Higher quartile: {point.q3}
    Maximum: {point.high}
    '},whiskerLength:"50%",whiskerWidth:2});h.boxplot=A(h.column,{type:"boxplot",pointArrayMap:["low","q1","median","q3","high"],toYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:"high", +pointAttrToOptions:{fill:"fillColor",stroke:"color","stroke-width":"lineWidth"},drawDataLabels:t,translate:function(){var a=this.yAxis,b=this.pointArrayMap;h.column.prototype.translate.apply(this);r(this.points,function(c){r(b,function(b){c[b]!==null&&(c[b+"Plot"]=a.translate(c[b],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.points,c=a.options,d=a.chart.renderer,e,f,g,j,l,o,i,h,k,n,s,E,p,w,m,u,y,t,x,v,B,A,z=a.doQuartiles!==!1,D=parseInt(a.options.whiskerLength,10)/100;r(b,function(b){k=b.graphic; +B=b.shapeArgs;s={};w={};u={};A=b.color||a.color;if(b.plotY!==F)if(e=b.pointAttr[b.selected?"selected":""],y=B.width,t=C(B.x),x=t+y,v=I(y/2),f=C(z?b.q1Plot:b.lowPlot),g=C(z?b.q3Plot:b.lowPlot),j=C(b.highPlot),l=C(b.lowPlot),s.stroke=b.stemColor||c.stemColor||A,s["stroke-width"]=q(b.stemWidth,c.stemWidth,c.lineWidth),s.dashstyle=b.stemDashStyle||c.stemDashStyle,w.stroke=b.whiskerColor||c.whiskerColor||A,w["stroke-width"]=q(b.whiskerWidth,c.whiskerWidth,c.lineWidth),u.stroke=b.medianColor||c.medianColor|| +A,u["stroke-width"]=q(b.medianWidth,c.medianWidth,c.lineWidth),i=s["stroke-width"]%2/2,h=t+v+i,n=["M",h,g,"L",h,j,"M",h,f,"L",h,l,"z"],z&&(i=e["stroke-width"]%2/2,h=C(h)+i,f=C(f)+i,g=C(g)+i,t+=i,x+=i,E=["M",t,g,"L",t,f,"L",x,f,"L",x,g,"L",t,g,"z"]),D&&(i=w["stroke-width"]%2/2,j+=i,l+=i,p=["M",h-v*D,j,"L",h+v*D,j,"M",h-v*D,l,"L",h+v*D,l]),i=u["stroke-width"]%2/2,o=I(b.medianPlot)+i,m=["M",t,o,"L",x,o,"z"],k)b.stem.animate({d:n}),D&&b.whiskers.animate({d:p}),z&&b.box.animate({d:E}),b.medianShape.animate({d:m}); +else{b.graphic=k=d.g().add(a.group);b.stem=d.path(n).attr(s).add(k);if(D)b.whiskers=d.path(p).attr(w).add(k);if(z)b.box=d.path(E).attr(e).add(k);b.medianShape=d.path(m).attr(u).add(k)}})}});n.errorbar=m(n.boxplot,{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:n.arearange.tooltip.pointFormat},whiskerWidth:null});h.errorbar=A(h.boxplot,{type:"errorbar",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"high",doQuartiles:!1,getColumnMetrics:function(){return this.linkedParent&& +this.linkedParent.columnMetrics||h.column.prototype.getColumnMetrics.call(this)}});p(G,"getSeriesExtremes",function(a,b){a.call(this,b);if(!this.isXAxis){var c=this,d=[],e=!0;r(c.series,function(a){if(a.visible&&a.stackKey&&!(a.type!=="waterfall"||HighchartsAdapter.inArray(a.stackKey)!==-1)){if(e)c.dataMin=c.dataMax=null,e=!1;var b=a.processedYData,j=b.length,l=b[0],h=b[0],i=a.options.threshold,k=c.stacks,n=a.stackKey,p="-"+n,s,E,m,w;for(w=0;wi)s+=E,k[m][w].setTotal(s), +k[m][w]._cum=null;sh&&(h=s);E=s}a.dataMin=l;a.dataMax=h;c.dataMin=T(q(c.dataMin,l),l,i);c.dataMax=U(q(c.dataMax,h),h,i);d.push(a.stackKey);if(typeof i==="number")if(c.dataMin>=i)c.dataMin=i,c.ignoreMinPadding=!0;else if(c.dataMax0&&!a.color)a.pointAttr=d,a.color=c})},getGraphPath:function(){var a=this.data,b=a.length,c=I(this.options.lineWidth+this.options.borderWidth)%2/2,d=[],e,f,g;for(g=1;g=d?a.shapeArgs.y+a.shapeArgs.height:a.shapeArgs.y;d=b.y>=d?b.shapeArgs.y:b.shapeArgs.y+b.shapeArgs.height; +d>c&&(e=c,c=d,d=e);return[c,d]},drawGraph:B.prototype.drawGraph});n.bubble=m(n.scatter,{dataLabels:{inside:!0,style:{color:"white",textShadow:"0px 0px 3px black"},verticalAlign:"middle"},marker:{lineColor:null,lineWidth:1},minSize:8,maxSize:"20%",tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},zThreshold:0});h.bubble=A(h.scatter,{type:"bubble",pointArrayMap:["y","z"],trackerGroups:["group","dataLabelsGroup"],pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor"}, +applyOpacity:function(a){var b=this.options.marker,c=q(b.fillOpacity,0.5),a=a||b.fillColor||this.color;c!==1&&(a=k.Color(a).setOpacity(c).get("rgba"));return a},convertAttribs:function(){var a=B.prototype.convertAttribs.apply(this,arguments);a.fill=this.applyOpacity(a.fill);return a},getRadii:function(a,b,c,d){var e,f,g,j=this.zData,h=[];for(f=0,e=j.length;f0?(j[f]-a)/(b-a):0.5,h.push(u.ceil(c+g*(d-c))/2);this.radii=h},animate:function(a){var b=this.options.animation;if(!a)r(this.points, +function(a){var d=a.graphic,a=a.shapeArgs;d&&a&&(d.attr("r",1),d.animate({r:a.r},b))}),this.animate=null},translate:function(){var a,b=this.data,c,d,e=this.radii;h.scatter.prototype.translate.call(this);for(a=b.length;a--;)c=b[a],d=e?e[a]:0,c.negative=c.z<(this.options.zThreshold||0),d>=this.minPxSize/2?(c.shapeType="circle",c.shapeArgs={x:c.plotX,y:c.plotY,r:d},c.dlBox={x:c.plotX-d,y:c.plotY-d,width:2*d,height:2*d}):c.shapeArgs=c.plotY=c.dlBox=F},drawLegendSymbol:function(a,b){var c=x(a.itemStyle.fontSize)/ +2;b.legendSymbol=this.chart.renderer.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup)},drawPoints:h.column.prototype.drawPoints,alignDataLabel:h.column.prototype.alignDataLabel});O.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,e=b,f=this.isXAxis,g=f?"xData":"yData",j=this.min,h={},k=u.min(c.plotWidth,c.plotHeight),i=Number.MAX_VALUE,m=-Number.MAX_VALUE,n=this.max-j,p=b/n,s=[];this.tickPositions&&(r(this.series,function(b){var c=b.options;if(b.type==="bubble"&& +b.visible&&(a.allowZoomOutside=!0,s.push(b),f))r(["minSize","maxSize"],function(a){var b=c[a],d=/%$/.test(b),b=x(b);h[a]=d?k*b/100:b}),b.minPxSize=h.minSize,b=b.zData,b.length&&(i=u.min(i,u.max(Q(b),c.displayNegative===!1?c.zThreshold:-Number.MAX_VALUE)),m=u.max(m,R(b)))}),r(s,function(a){var b=a[g],c=b.length,k;f&&a.getRadii(i,m,h.minSize,h.maxSize);if(n>0)for(;c--;)k=a.radii[c],d=Math.min((b[c]-j)*p-k,d),e=Math.max((b[c]-j)*p+k,e)}),n>0&&q(this.options.min,this.userMin)===F&&q(this.options.max, +this.userMax)===F&&(e-=b,p*=(b+d-e)/b,this.min+=d/p,this.max+=e/p))};var z=B.prototype,n=k.Pointer.prototype;z.toXY=function(a){var b,c=this.chart;b=a.plotX;var d=a.plotY;a.rectPlotX=b;a.rectPlotY=d;a.clientX=b/Math.PI*180;b=this.xAxis.postTranslate(a.plotX,this.yAxis.len-d);a.plotX=a.polarPlotX=b.x-c.plotLeft;a.plotY=a.polarPlotY=b.y-c.plotTop};p(h.area.prototype,"init",L);p(h.areaspline.prototype,"init",L);p(h.spline.prototype,"getPointSpline",function(a,b,c,d){var e,f,g,j,h,k,i;if(this.chart.polar){e= +c.plotX;f=c.plotY;a=b[d-1];g=b[d+1];this.connectEnds&&(a||(a=b[b.length-2]),g||(g=b[1]));if(a&&g)j=a.plotX,h=a.plotY,b=g.plotX,k=g.plotY,j=(1.5*e+j)/2.5,h=(1.5*f+h)/2.5,g=(1.5*e+b)/2.5,i=(1.5*f+k)/2.5,b=Math.sqrt(Math.pow(j-e,2)+Math.pow(h-f,2)),k=Math.sqrt(Math.pow(g-e,2)+Math.pow(i-f,2)),j=Math.atan2(h-f,j-e),h=Math.atan2(i-f,g-e),i=Math.PI/2+(j+h)/2,Math.abs(j-i)>Math.PI/2&&(i-=Math.PI),j=e+Math.cos(i)*b,h=f+Math.sin(i)*b,g=e+Math.cos(Math.PI+i)*k,i=f+Math.sin(Math.PI+i)*k,c.rightContX=g,c.rightContY= +i;d?(c=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,j||e,h||f,e,f],a.rightContX=a.rightContY=null):c=["M",e,f]}else c=a.call(this,b,c,d);return c});p(z,"translate",function(a){a.call(this);if(this.chart.polar&&!this.preventPostTranslate)for(var a=this.points,b=a.length;b--;)this.toXY(a[b])});p(z,"getSegmentPath",function(a,b){var c=this.points;if(this.chart.polar&&this.options.connectEnds!==!1&&b[b.length-1]===c[c.length-1]&&c[0].y!==null)this.connectEnds=!0,b=[].concat(b,[c[0]]);return a.call(this, +b)});p(z,"animate",M);p(y,"animate",M);p(z,"setTooltipPoints",function(a,b){this.chart.polar&&H(this.xAxis,{tooltipLen:360});return a.call(this,b)});p(y,"translate",function(a){var b=this.xAxis,c=this.yAxis.len,d=b.center,e=b.startAngleRad,f=this.chart.renderer,g,h;this.preventPostTranslate=!0;a.call(this);if(b.isRadial){b=this.points;for(h=b.length;h--;)g=b[h],a=g.barX+e,g.shapeType="path",g.shapeArgs={d:f.symbols.arc(d[0],d[1],c-g.plotY,null,{start:a,end:a+g.pointWidth,innerR:c-q(g.yBottom,c)})}, +this.toXY(g)}});p(y,"alignDataLabel",function(a,b,c,d,e,f){if(this.chart.polar){a=b.rectPlotX/Math.PI*180;if(d.align===null)d.align=a>20&&a<160?"left":a>200&&a<340?"right":"center";if(d.verticalAlign===null)d.verticalAlign=a<45||a>315?"bottom":a>135&&a<225?"top":"middle";z.alignDataLabel.call(this,b,c,d,e,f)}else a.call(this,b,c,d,e,f)});p(n,"getIndex",function(a,b){var c,d=this.chart,e;d.polar?(e=d.xAxis[0].center,c=b.chartX-e[0]-d.plotLeft,d=b.chartY-e[1]-d.plotTop,c=180-Math.round(Math.atan2(c, +d)/Math.PI*180)):c=a.call(this,b);return c});p(n,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?r(c.axes,function(a){var f=a.isXAxis,g=a.center,h=b.chartX-g[0]-c.plotLeft,g=b.chartY-g[1]-c.plotTop;d[f?"xAxis":"yAxis"].push({axis:a,value:a.translate(f?Math.PI-Math.atan2(h,g):Math.sqrt(Math.pow(h,2)+Math.pow(g,2)),!0)})}):d=a.call(this,b);return d})})(Highcharts); diff --git a/js/highchart/highcharts.js b/js/highchart/highcharts.js new file mode 100644 index 0000000..e3af755 --- /dev/null +++ b/js/highchart/highcharts.js @@ -0,0 +1,272 @@ +/* + Highcharts JS v3.0.2 (2013-06-05) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(){function v(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function x(){var a,b=arguments.length,c={},d=function(a,b){var c,h;for(h in b)b.hasOwnProperty(h)&&(c=b[h],typeof a!=="object"&&(a={}),a[h]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?d(a[h]||{},c):b[h]);return a};for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+Q(a-c).toFixed(f).slice(2):"")}function va(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function zb(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this,a)}}function wa(a,b){for(var c="{", +d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h-1?h.thousandsSep:"")):e=Ua(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function ib(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b= +[1/c])));for(d=0;d=E[jb]&&(i.setMilliseconds(0),i.setSeconds(j>=E[Va]?0:k*T(i.getSeconds()/k)));if(j>=E[Va])i[Db](j>=E[Oa]?0:k*T(i[kb]()/k));if(j>=E[Oa])i[Eb](j>=E[oa]?0:k*T(i[lb]()/k));if(j>=E[oa])i[mb](j>=E[Pa]?1:k*T(i[Qa]()/k));j>=E[Pa]&&(i[Fb](j>=E[xa]?0:k*T(i[Xa]()/k)),h=i[Ya]());j>=E[xa]&&(h-=h%k,i[Gb](h));if(j===E[Wa])i[mb](i[Qa]()-i[nb]()+o(d,1));b=1;h=i[Ya]();for(var d=i.getTime(),m=i[Xa](), +l=i[Qa](),p=g?0:(864E5+i.getTimezoneOffset()*6E4)%864E5;dc&&(c=a[b]);return c}function Ha(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ra(a){$a||($a=U(ya));a&&$a.appendChild(a);$a.innerHTML=""}function qa(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else O.console&&console.log(c)}function ia(a){return parseFloat(a.toPrecision(14))}function Ia(a,b){za=o(a,b.animation)} +function Jb(){var a=N.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Za=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,o(c,1),o(g,0),o(h,0),o(i,0))).getTime()};kb=b+"Minutes";lb=b+"Hours";nb=b+"Day";Qa=b+"Date";Xa=b+"Month";Ya=b+"FullYear";Db=c+"Minutes";Eb=c+"Hours";mb=c+"Date";Fb=c+"Month";Gb=c+"FullYear"}function ra(){}function Ja(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function pb(a,b){this.axis=a;if(b)this.options=b,this.id=b.id}function Kb(a, +b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.stack=e;this.percent=f==="percent";this.alignOptions={align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ab(){this.init.apply(this,arguments)}function qb(){this.init.apply(this,arguments)}function rb(a,b){this.init(a,b)}function sb(a,b){this.init(a, +b)}function tb(){this.init.apply(this,arguments)}var y,z=document,O=window,I=Math,t=I.round,T=I.floor,ja=I.ceil,q=I.max,K=I.min,Q=I.abs,Y=I.cos,ca=I.sin,Ka=I.PI,bb=Ka*2/360,Aa=navigator.userAgent,Lb=O.opera,Fa=/msie/i.test(Aa)&&!Lb,cb=z.documentMode===8,db=/AppleWebKit/.test(Aa),eb=/Firefox/.test(Aa),Mb=/(Mobile|Android|Windows Phone)/.test(Aa),sa="http://www.w3.org/2000/svg",Z=!!z.createElementNS&&!!z.createElementNS(sa,"svg").createSVGRect,Sb=eb&&parseInt(Aa.split("Firefox/")[1],10)<4,$=!Z&&!Fa&& +!!z.createElement("canvas").getContext,Sa,fb=z.documentElement.ontouchstart!==y,Nb={},ub=0,$a,N,Ua,za,vb,E,ta=function(){},Ba=[],ya="div",S="none",Ob="rgba(192,192,192,"+(Z?1.0E-4:0.002)+")",Bb="millisecond",jb="second",Va="minute",Oa="hour",oa="day",Wa="week",Pa="month",xa="year",Pb="stroke-width",Za,kb,lb,nb,Qa,Xa,Ya,Db,Eb,mb,Fb,Gb,aa={};O.Highcharts=O.Highcharts?qa(16,!0):{};Ua=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b),e,f=d[lb](),g=d[nb](), +h=d[Qa](),i=d[Xa](),j=d[Ya](),k=N.lang,m=k.weekdays,d=v({a:m[g].substr(0,3),A:m[g],d:va(h),e:h,b:k.shortMonths[i],B:k.months[i],m:va(i+1),y:j.toString().substr(2,2),Y:j,H:va(f),I:va(f%12||12),l:f%12||12,M:va(d[kb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:va(d.getSeconds()),L:va(t(b%1E3),3)},Highcharts.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};Hb.prototype={wrapColor:function(a){if(this.color>= +a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};E=function(){for(var a=0,b=arguments,c=b.length,d={};a-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length- +6,6));if(d<=c.length/f)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length{point.key}
    ',pointFormat:'{series.name}: {point.y}
    ',shadow:!0,snap:Mb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com", +position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var X=N.plotOptions,W=X.line;Jb();var ma=function(a){var b=[],c,d;(function(a){a&&a.stops?d=La(a.stops,function(a){return ma(a[1])}):(c=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(a))?b=[u(c[1]),u(c[2]),u(c[3]),parseFloat(c[4],10)]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?b=[u(c[1],16),u(c[2],16),u(c[3], +16),1]:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))&&(b=[u(c[1]),u(c[2]),u(c[3]),1])})(a);return{get:function(c){var f;d?(f=x(a),f.stops=[].concat(f.stops),n(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)n(d,function(b){b.brighten(a)});else if(Ea(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=u(a*255),b[c]<0&&(b[c]=0),b[c]>255&& +(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};ra.prototype={init:function(a,b){this.element=b==="span"?U(b):z.createElementNS(sa,b);this.renderer=a;this.attrSetters={}},opacity:1,animate:function(a,b,c){b=o(b,za,!0);Ta(this);if(b){b=x(b);if(c)b.complete=c;wb(this,a,b)}else this.attr(a),c&&c()},attr:function(a,b){var c,d,e,f,g=this.element,h=g.nodeName.toLowerCase(),i=this.renderer,j,k=this.attrSetters,m=this.shadows,l,p,s=this;fa(a)&&r(b)&&(c=a,a={},a[c]=b);if(fa(a))c= +a,h==="circle"?c={x:"cx",y:"cy"}[c]||c:c==="strokeWidth"&&(c="stroke-width"),s=A(g,c)||this[c]||0,c!=="d"&&c!=="visibility"&&(s=parseFloat(s));else{for(c in a)if(j=!1,d=a[c],e=k[c]&&k[c].call(this,d,c),e!==!1){e!==y&&(d=e);if(c==="d")d&&d.join&&(d=d.join(" ")),/(NaN| {2}|^$)/.test(d)&&(d="M 0 0");else if(c==="x"&&h==="text")for(e=0;el&&/[ \-]/.test(b.textContent||b.innerText))L(b,{width:l+"px",display:"block",whiteSpace:"normal"}),k=l;l=a.fontMetrics(b.style.fontSize).b; +B=s<0&&-k;w=p<0&&-m;xb=s*p<0;B+=p*l*(xb?1-h:h);w-=s*l*(j?xb?h:1-h:1);i&&(B-=k*h*(s<0?-1:1),j&&(w-=m*h*(p<0?-1:1)),L(b,{textAlign:g}));this.xCorr=B;this.yCorr=w}L(b,{left:e+B+"px",top:f+w+"px"});if(db)m=b.offsetHeight;this.cTT=G}}else this.alignOnAdd=!0},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"): +f&&a.push("rotate("+f+" "+(this.x||0)+" "+(this.y||0)+")");(r(c)||r(d))&&a.push("scale("+o(c,1)+" "+o(d,1)+")");a.length&&A(this.element,"transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||fa(c))this.alignTo=d=c||"renderer",ga(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo; +c=o(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=t(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=t(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d=this.rotation;c=this.element;var e=this.styles,f=d*bb;if(!a){if(c.namespaceURI=== +sa||b.forExport){try{a=c.getBBox?v({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(g){}if(!a||a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){b=a.width;c=a.height;if(Fa&&e&&e.fontSize==="11px"&&c.toPrecision(3)==="22.7")a.height=c=14;if(d)a.width=Q(c*ca(f))+Q(b*Y(f)),a.height=Q(c*Y(f))+Q(b*ca(f))}this.bBox=a}return a},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this; +b.animate({opacity:0},{duration:a||150,complete:function(){b.hide()}})},add:function(a){var b=this.renderer,c=a||b,d=c.element||b.box,e=d.childNodes,f=this.element,g=A(f,"zIndex"),h;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(g)c.handleZ=!0,g=u(g);if(c.handleZ)for(c=0;cg||!r(g)&&r(b))){d.insertBefore(f,a);h=!0;break}h||d.appendChild(f);this.added=!0;D(this,"add");return this},safeRemoveChild:function(a){var b= +a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d,e;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;Ta(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(e=0;e/g,'').replace(/<(i|em)>/g,'').replace(//g,"").split(//g),f=b.childNodes,g=/style="([^"]+)"/,h=/href="([^"]+)"/,i=A(b,"x"),j=a.styles,k=j&&j.width&&u(j.width),m=j&&j.lineHeight, +l=f.length;l--;)b.removeChild(f[l]);k&&!a.added&&this.box.appendChild(b);e[e.length-1]===""&&e.pop();n(e,function(e,f){var l,o=0,e=e.replace(//g,"|||");l=e.split("|||");n(l,function(e){if(e!==""||l.length===1){var p={},n=z.createElementNS(sa,"tspan"),q;g.test(e)&&(q=e.match(g)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),A(n,"style",q));h.test(e)&&!d&&(A(n,"onclick",'location.href="'+e.match(h)[1]+'"'),L(n,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g, +"")||" ").replace(/</g,"<").replace(/>/g,">");n.appendChild(z.createTextNode(e));o?p.dx=0:p.x=i;A(n,p);!o&&f&&(!Z&&d&&L(n,{display:"block"}),A(n,"dy",m||c.fontMetrics(/px$/.test(n.style.fontSize)?n.style.fontSize:j.fontSize).h,db&&n.offsetHeight));b.appendChild(n);o++;if(k)for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),r,t=[];e.length||t.length;)delete a.bBox,r=a.getBBox().width,p=r>k,!p||e.length===1?(e=t,t=[],e.length&&(n=z.createElementNS(sa,"tspan"),A(n,{dy:m||16,x:i}),q&&A(n,"style", +q),b.appendChild(n),r>k&&(k=r))):(n.removeChild(n.firstChild),t.unshift(e.pop())),e.length&&n.appendChild(z.createTextNode(e.join(" ").replace(/- /g,"-")))}})})},button:function(a,b,c,d,e,f,g){var h=this.label(a,b,c,null,null,null,null,null,"button"),i=0,j,k,m,l,p,a={x1:0,y1:0,x2:0,y2:1},e=x({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);m=e.style;delete e.style;f=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0, +"#FFF"],[1,"#ACF"]]}},f);l=f.style;delete f.style;g=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);p=g.style;delete g.style;J(h.element,"mouseenter",function(){h.attr(f).css(l)});J(h.element,"mouseleave",function(){j=[e,f,g][i];k=[m,l,p][i];h.attr(j).css(k)});h.setState=function(a){(i=a)?a===2&&h.attr(g).css(p):h.attr(e).css(m)};return h.on("click",function(){d.call(h)}).attr(e).css(v({cursor:"default"},m))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=t(a[1])-b%2/ +2);a[2]===a[5]&&(a[2]=a[5]=t(a[2])+b%2/2);return a},path:function(a){var b={fill:S};Da(a)?b.d=a:V(a)&&v(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=V(a)?a:{x:a,y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(V(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;return this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0})},rect:function(a,b,c,d,e,f){e=V(a)?a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:S});return e.attr(V(a)? +a:e.crisp(f,a,b,q(c,0),q(d,0)))},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[o(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return r(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:S};arguments.length>1&&v(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink", +"href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(t(b),t(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),v(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&v(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(t((d-b[0])/2),t((e-b[1])/2)))},j=a.match(i)[1],a=Nb[j],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),U("img",{onload:function(){k(g, +Nb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d, +e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=Y(f),j=ca(f),k=Y(g),g=ca(g),e=e.end-f');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=U(c);this.renderer=a;this.attrSetters= +{}},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();D(this,"add");return this},updateTransform:ra.prototype.htmlUpdateTransform,attr:function(a,b){var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,k,m=this.shadows,l,p=this.attrSetters,s=this;fa(a)&&r(b)&&(c=a,a={},a[c]=b);if(fa(a))c=a,s=c==="strokeWidth"|| +c==="stroke-width"?this.strokeweight:this[c];else for(c in a)if(d=a[c],l=!1,e=p[c]&&p[c].call(this,d,c),e!==!1&&d!==null){e!==y&&(d=e);if(j&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(c))k||(this.symbolAttr(a),k=!0),l=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");e=d.length;l=[];for(var o;e--;)if(Ea(d[e]))l[e]=t(d[e]*10)-5;else if(d[e]==="Z")l[e]="x";else if(l[e]=d[e],d.isArc&&(d[e]==="wa"||d[e]==="at"))o=d[e]==="wa"?1:-1,l[e+5]===l[e+7]&&(l[e+7]-=o),l[e+6]===l[e+8]&&(l[e+8]-= +o);d=l.join(" ")||"x";f.path=d;if(m)for(e=m.length;e--;)m[e].path=m[e].cutOff?this.cutOffPath(d,m[e].cutOff):d;l=!0}else if(c==="visibility"){if(m)for(e=m.length;e--;)m[e].style[c]=d;h==="DIV"&&(d=d==="hidden"?"-999em":0,cb||(g[c]=d?"visible":"hidden"),c="top");g[c]=d;l=!0}else if(c==="zIndex")d&&(g[c]=d),l=!0;else if(la(c,["x","y","width","height"])!==-1)this[c]=d,c==="x"||c==="y"?c={x:"left",y:"top"}[c]:d=q(0,d),this.updateClipping?(this[c]=d,this.updateClipping()):g[c]=d,l=!0;else if(c==="class"&& +h==="DIV")f.className=d;else if(c==="stroke")d=i.color(d,f,c),c="strokecolor";else if(c==="stroke-width"||c==="strokeWidth")f.stroked=d?!0:!1,c="strokeweight",this[c]=d,Ea(d)&&(d+="px");else if(c==="dashstyle")(f.getElementsByTagName("stroke")[0]||U(i.prepVML([""]),null,null,f))[c]=d||"solid",this.dashstyle=d,l=!0;else if(c==="fill")if(h==="SPAN")g.color=d;else{if(h!=="IMG")f.filled=d!==S?!0:!1,d=i.color(d,f,c,this),c="fillcolor"}else if(c==="opacity")l=!0;else if(h==="shape"&&c==="rotation")this[c]= +d,f.style.left=-t(ca(d*bb)+1)+"px",f.style.top=t(Y(d*bb))+"px";else if(c==="translateX"||c==="translateY"||c==="rotation")this[c]=d,this.updateTransform(),l=!0;else if(c==="text")this.bBox=null,f.innerHTML=d,l=!0;l||(cb?f[c]=d:A(f,c,d))}return s},clip:function(a){var b=this,c;a?(c=a.members,ga(c,b),c.push(b),b.destroyClip=function(){ga(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:cb?"inherit":"rect(auto)"});return b.css(a)},css:ra.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&& +Ra(a)},destroy:function(){this.destroyClip&&this.destroyClip();return ra.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=O.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=u(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,m,l,p,s;k&&typeof k.value!=="string"&&(k="x");l=k;if(a){p=o(a.width,3);s=(a.opacity|| +0.15)/p;for(e=1;e<=3;e++){m=p*2+1-2*e;c&&(l=this.cutOffPath(k.value,m+0.5));j=[''];h=U(g.prepVML(j),null,{left:u(i.left)+o(a.offsetX,1),top:u(i.top)+o(a.offsetY,1)});if(c)h.cutOff=m+1;j=[''];U(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this}};F=ea(ra,F); +var na={Element:F,isIE8:Aa.indexOf("MSIE 8.0")>-1,init:function(a,b,c){var d,e;this.alignedObjects=[];d=this.createElement(ya);e=d.element;e.style.position="relative";a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.setSize(b,c,!1);if(!z.namespaces.hcv)z.namespaces.add("hcv","urn:schemas-microsoft-com:vml"),z.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "},isHidden:function(){return!this.box.offsetWidth}, +clipRect:function(a,b,c,d){var e=this.createElement(),f=V(a);return v(e,{members:[],left:f?a.x:a,top:f?a.y:b,width:f?a.width:c,height:f?a.height:d,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+t(a?e:d)+"px,"+t(a?f:b)+"px,"+t(a?b:f)+"px,"+t(a?d:e)+"px)"};!a&&cb&&c==="DIV"&&v(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){n(e.members,function(a){a.css(e.getCSS(a))})}})}, +color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=S;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,m,l=a.linearGradient||a.radialGradient,p,s,o,B,w,q="",a=a.stops,r,t=[],y=function(){h=[''];U(e.prepVML(h),null,null,b)};p=a[0];r=a[a.length-1];p[0]>0&&a.unshift([0,p[1]]);r[0]<1&&a.push([1,r[1]]);n(a,function(a,b){g.test(a[1])?(f=ma(a[1]),k=f.get("rgb"), +m=f.get("a")):(k=a[1],m=1);t.push(a[0]*100+"% "+k);b?(o=m,B=k):(s=m,w=k)});if(c==="fill")if(i==="gradient")c=l.x1||l[0]||0,a=l.y1||l[1]||0,p=l.x2||l[2]||0,l=l.y2||l[3]||0,q='angle="'+(90-I.atan((l-a)/(p-c))*180/Ka)+'"',y();else{var j=l.r,v=j*2,P=j*2,H=l.cx,C=l.cy,x=b.radialReference,u,j=function(){x&&(u=d.getBBox(),H+=(x[0]-u.x)/u.width-0.5,C+=(x[1]-u.y)/u.height-0.5,v*=x[2]/u.width,P*=x[2]/u.height);q='src="'+N.global.VMLRadialGradientURL+'" size="'+v+","+P+'" origin="0.5,0.5" position="'+H+","+ +C+'" color2="'+w+'" ';y()};d.added?j():J(d,"add",j);j=B}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=ma(a),h=["<",c,' opacity="',f.get("a"),'"/>'],U(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'): +a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","1&&f.attr({x:b,y:c,width:d,height:e});return f},rect:function(a,b,c,d,e,f){if(V(a))b=a.y,c=a.width,d=a.height,f=a.strokeWidth,a=a.x;var g=this.symbol("rect");g.r=e;return g.attr(g.crisp(f,a,b,q(c,0),q(d,0)))},invertChild:function(a,b){var c=b.style;L(a,{flip:"x",left:u(c.width)-1,top:u(c.height)-1,rotation:-90})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=Y(f),i=ca(f),j=Y(g), +k=ca(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){var f=a+c,g=b+d,h;!r(e)||!e.r?f=Ca.prototype.symbols.square.apply(0,arguments):(h=K(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b+h,"L",f,g-h,"wa",f-2*h,g-2* +h,f,g,f,g-h,f-h,g,"L",a+h,g,"wa",a,g-2*h,a+2*h,g,a+h,g,a,g-h,"L",a,b+h,"wa",a,b,a+2*h,b+2*h,a,b+h,a+h,b,"x","e"]);return f}}};Highcharts.VMLRenderer=F=function(){this.init.apply(this,arguments)};F.prototype=x(Ca.prototype,na);Sa=F}var Rb;if($)Highcharts.CanVGRenderer=F=function(){sa="http://www.w3.org/1999/xhtml"},F.prototype.symbols={},Rb=function(){function a(){var a=b.length,d;for(d=0;dj&&(c=!1)):h+k>l&&(h=l-k,d&&h+m0&&b.height>0){f=x({align:c&&k&&"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g)a.label=g=t.text(f.text,0,0).attr({align:f.textAlign||f.align,rotation:f.rotation,zIndex:w}).css(f.style).add();b=[s[1],s[4],o(s[6],s[1])];s=[s[2],s[5],o(s[7],s[2])];c=Ga(b);k=Ga(s);g.align(f,!1,{x:c,y:k,width:pa(b)-c,height:pa(s)-k});g.show()}else g&&g.hide(); +return a},destroy:function(){ga(this.axis.plotLinesAndBands,this);Ha(this,this.axis)}};Kb.prototype={destroy:function(){Ha(this,this.axis)},setTotal:function(a){this.cum=this.total=a},render:function(a){var b=this.options,c=b.format,c=c?wa(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,0,0,b.useHTML).css(b.style).attr({align:this.textAlign,rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c= +this.axis,d=c.chart,e=d.inverted,f=this.isNegative,g=c.translate(this.percent?100:this.total,0,0,0,1),c=c.translate(0),c=Q(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e.attr({visibility:this.options.crop===!1||d.isInsidePlot(f.x,f.y)?Z?"inherit":"visible":"hidden"})}};ab.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S", +minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:M,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e", +fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{align:"right",x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return ua(this.total,-1)},style:M.style}},defaultLeftAxisOptions:{labels:{align:"right",x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{align:"left",x:8,y:null},title:{rotation:90}}, +defaultBottomAxisOptions:{labels:{align:"center",x:0,y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{align:"center",x:0,y:-5},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.xOrY=(this.isXAxis=c)?"x":"y";this.opposite=b.opposite;this.side=this.horiz?this.opposite?0:2:this.opposite?1:3;this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.staggerLines=this.horiz&&d.labels.staggerLines;this.userOptions= +b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=r(d.linkedTo);this.tickmarkOffset=this.categories&&d.tickmarkPlacement==="between"?0.5:0;this.ticks={};this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0; +this.stacks={};this._stacksTouched=0;this.min=this.max=null;var f,d=this.options.events;la(this,a.axes)===-1&&(a.axes.push(this),a[c?"xAxis":"yAxis"].push(this));this.series=this.series||[];if(a.inverted&&c&&this.reversed===y)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)J(this,f,d[f]);if(this.isLog)this.val2lin=ka,this.lin2val=da},setOptions:function(a){this.options=x(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions, +this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],x(N[this.isXAxis?"xAxis":"yAxis"],a))},update:function(a,b){var c=this.chart,a=c.options[this.xOrY+"Axis"][this.options.index]=x(this.userOptions,a);this.destroy();this._addedPlotLB=!1;this.init(c,a);c.isDirtyBox=!0;o(b,!0)&&c.redraw()},remove:function(a){var b=this.chart,c=this.xOrY+"Axis";n(this.series,function(a){a.remove(!1)});ga(b.axes,this);ga(b[c],this);b.options[c].splice(this.options.index, +1);n(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;o(a,!0)&&b.redraw()},defaultLabelFormatter:function(){var a=this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=N.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=wa(h,this);else if(c)g=b;else if(d)g=Ua(d,b);else if(f&&a>=1E3)for(;f--&&g===y;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=ua(b/c,-1)+e[f]);g===y&&(g=b>=1E3?ua(b,0):ua(b,-1));return g},getSeriesExtremes:function(){var a= +this,b=a.chart,c=a.stacks,d=[],e=[],f=a._stacksTouched+=1,g,h;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;n(a.series,function(g){if(g.visible||!b.options.chart.ignoreHiddenSeries){var j=g.options,k,m,l,p,s,n,B,w,G,t=j.threshold,v,u=[],x=0;a.hasVisibleSeries=!0;if(a.isLog&&t<=0)t=j.threshold=null;if(a.isXAxis){if(j=g.xData,j.length)a.dataMin=K(o(a.dataMin,j[0]),Ga(j)),a.dataMax=q(o(a.dataMax,j[0]),pa(j))}else{var P,H,C,A=g.cropped,z=g.xAxis.getExtremes(),E=!!g.modifyValue;k=j.stacking;a.usePercentage= +k==="percent";if(k)s=j.stack,p=g.type+o(s,""),n="-"+p,g.stackKey=p,m=d[p]||[],d[p]=m,l=e[n]||[],e[n]=l;if(a.usePercentage)a.dataMin=0,a.dataMax=99;j=g.processedXData;B=g.processedYData;v=B.length;for(h=0;h0))if(E&&(G=g.modifyValue(G)),g.getExtremesFromAll|| +A||(j[h+1]||w)>=z.min&&(j[h-1]||w)<=z.max)if(w=G.length)for(;w--;)G[w]!==null&&(u[x++]=G[w]);else u[x++]=G}if(!a.usePercentage&&u.length)g.dataMin=k=Ga(u),g.dataMax=g=pa(u),a.dataMin=K(o(a.dataMin,k),k),a.dataMax=q(o(a.dataMax,g),g);if(r(t))if(a.dataMin>=t)a.dataMin=t,a.ignoreMinPadding=!0;else if(a.dataMaxf+this.width)l=!0}else if(c=f,i=m-this.right,hg+this.height)l=!0;return l&&!d?null:e.renderer.crispLine(["M",c,h,"L",i,j],b||0)},getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);d&&c?d.push(c[4], +c[5],c[1],c[2]):d=null;return d},getLinearTickPositions:function(a,b,c){for(var d,b=ia(T(b/a)*a),c=ia(ja(c/a)*a),e=[];b<=c;){e.push(b);b=ia(b+a);if(b===d)break;d=b}return e},getLogTickPositions:function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=t(a),g=this.getLinearTickPositions(a,b,c);else if(a>=0.08)for(var f=T(b),h,i,j,k,m,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];fb&&(!d|| +k<=c)&&g.push(k),k>c&&(m=!0),k=j}else if(b=da(b),c=da(c),a=e[d?"minorTickInterval":"tickInterval"],a=o(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=ib(a,null,I.pow(10,T(I.log(a)/I.LN10))),g=La(this.getLinearTickPositions(a,b,c),ka),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length; +for(a=1;a=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===y&&!this.isLog)r(a.min)||r(a.max)?this.minRange=null:(n(this.series, +function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===y||hb&&(g=0);c=q(c,g);e=q(e,h?0:g/2);f=q(f,h==="on"?0:g);!a.noSharedTooltip&&r(m)&&(d=r(d)?K(d,m):m)}),g=this.ordinalSlope&&d?this.ordinalSlope/d:1,this.minPointOffset=e*=g,this.pointRangePadding=f*=g,this.pointRange=K(c,b),this.closestPointRange=d;if(a)this.oldTransA=h;this.translationSlope=this.transA=h=this.len/(b+f||1);this.transB=this.horiz?this.left:this.bottom;this.minPixelPadding= +h*e},setTickPositions:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,k=d.minPadding,m=d.tickInterval,l=d.minTickInterval,p=d.tickPixelInterval,s=b.categories;h?(b.linkedParent=c[g?"xAxis":"yAxis"][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=o(c.min,c.dataMin),b.max=o(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&qa(11,1)):(b.min=o(b.userMin,d.min,b.dataMin),b.max=o(b.userMax,d.max,b.dataMax)); +if(e)!a&&K(b.min,o(b.dataMin,b.min))<=0&&qa(10,1),b.min=ia(ka(b.min)),b.max=ia(ka(b.max));if(b.range&&(b.userMin=b.min=q(b.min,b.max-b.range),b.userMax=b.max,a))b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!s&&!b.usePercentage&&!h&&r(b.min)&&r(b.max)&&(c=b.max-b.min)){if(!r(d.min)&&!r(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;if(!r(d.max)&&!r(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}b.tickInterval=b.min===b.max||b.min===void 0||b.max=== +void 0?1:h&&!m&&p===b.linkedParent.options.tickPixelInterval?b.linkedParent.tickInterval:o(m,s?1:(b.max-b.min)*p/(b.len||1));g&&!a&&n(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);if(!m&&b.tickIntervale&&i.shift(),d.endOnTick?b.max=f:b.max+h(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&& +!this.categories&&!this.isLinked&&this.options.alignTicks!==!1){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e=this.dataMax&&(b=y));this.displayBtn=a!==y||b!==y;this.setExtremes(a,b,!1,y,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=b.offsetRight||0,e=this.horiz,f,g;this.left=g=o(b.left,a.plotLeft+c);this.top=f=o(b.top,a.plotTop);this.width=c=o(b.width,a.plotWidth-c+d);this.height=b=o(b.height,a.plotHeight); +this.bottom=a.chartHeight-b-f;this.right=a.chartWidth-c-g;this.len=q(e?c:b,0);this.pos=e?g:f},getExtremes:function(){var a=this.isLog;return{min:a?ia(da(this.min)):this.min,max:a?ia(da(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?da(this.min):this.min,b=b?da(this.max):this.max;c>a||a===null?a=c:b=a.min&&b<=a.max)j[b]||(j[b]=new Ja(a,b)),w&&j[b].isNew&&j[b].render(c,!0),j[b].render(c,!1,1)}),s&&a.min===0&&(j[-1]||(j[-1]=new Ja(a,-1,null,!0)),j[-1].render(-1))), +p&&n(g,function(b,c){if(c%2===0&&b1||Q(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(){var a=this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},o(this.options.hideDelay,500)),b&&n(b,function(a){a.setState()}),this.chart.hoverPoints=null},hideCrosshairs:function(){n(this.crosshairs,function(a){a&&a.hide()})},getAnchor:function(a,b){var c,d=this.chart,e= +d.inverted,f=d.plotTop,g=0,h=0,i,a=ha(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===y&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(n(a,function(a){i=a.series.yAxis;g+=a.plotX;h+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return La(c,t)},getPosition:function(a,b,c){var d=this.chart,e=d.plotLeft,f=d.plotTop,g=d.plotWidth,h=d.plotHeight,i= +o(this.options.distance,12),j=c.plotX,c=c.plotY,d=j+e+(d.inverted?i:-a-i),k=c-b+f+15,m;d<7&&(d=e+q(j,0)+i);d+a>e+g&&(d-=d+a-(e+g),k=c-b+f-i,m=!0);k=k&&c<=k+b&&(k=c+f+i));k+b>f+h&&(k=q(f,f+h-b-i));return{x:d,y:k}},defaultFormatter:function(a){var b=this.points||ha(this),c=b[0].series,d;d=[c.tooltipHeaderFormatter(b[0])];n(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});d.push(a.options.footerFormat|| +"");return d.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h,i={},j,k=[];j=e.formatter||this.defaultFormatter;var i=c.hoverPoints,m,l=e.crosshairs;h=this.shared;clearTimeout(this.hideTimer);this.followPointer=ha(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];h&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,i&&n(i,function(a){a.setState()}),n(a,function(a){a.setState("hover");k.push(a.getLabelConfig())}),i={x:a[0].category, +y:a[0].y},i.points=k,a=a[0]):i=a.getLabelConfig();j=j.call(i,this);i=a.series;h=h||!i.isCartesian||i.tooltipOutsidePlot||c.isInsidePlot(f,g);j===!1||!h?this.hide():(this.isHidden&&(Ta(d),d.attr("opacity",1).show()),d.attr({text:j}),m=e.borderColor||a.color||i.color||"#606060",d.attr({stroke:m}),this.updatePosition({plotX:f,plotY:g}),this.isHidden=!1);if(l){l=ha(l);for(d=l.length;d--;)if(e=a.series[d?"yAxis":"xAxis"],l[d]&&e)if(h=d?o(a.stackY,a.y):a.x,e.isLog&&(h=ka(h)),e=e.getPlotLinePath(h,1),this.crosshairs[d])this.crosshairs[d].attr({d:e, +visibility:"visible"});else{h={"stroke-width":l[d].width||1,stroke:l[d].color||"#C0C0C0",zIndex:l[d].zIndex||2};if(l[d].dashStyle)h.dashstyle=l[d].dashStyle;this.crosshairs[d]=c.renderer.path(e).attr(h).add()}}D(c,"tooltipRefresh",{text:j,x:f+c.plotLeft,y:g+c.plotTop,borderColor:m})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(t(c.x),t(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)}};rb.prototype={init:function(a, +b){var c=$?"":b.chart.zoomType,d=a.inverted,e;this.options=b;this.chart=a;this.zoomX=e=/x/.test(c);this.zoomY=c=/y/.test(c);this.zoomHor=e&&!d||c&&d;this.zoomVert=c&&!d||e&&d;this.pinchDown=[];this.lastValidTouch={};if(b.tooltip.enabled)a.tooltip=new qb(a,b.tooltip);this.setDOMEvents()},normalize:function(a){var b,c,d,a=a||O.event;if(!a.target)a.target=a.srcElement;a=Qb(a);d=a.touches?a.touches.item(0):a;this.chartPosition=b=Ub(this.chart.container);d.pageX===y?(c=a.x,b=a.y):(c=d.pageX-b.left,b=d.pageY- +b.top);return v(a,{chartX:t(c),chartY:t(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};n(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e,f=b.hoverPoint,g=b.hoverSeries,h,i,j=b.chartWidth,k=this.getIndex(a);if(d&&this.options.tooltip.shared&& +(!g||!g.noSharedTooltip)){e=[];h=c.length;for(i=0;ij&&e.splice(h,1);if(e.length&&e[0].clientX!==this.hoverX)d.refresh(e,a),this.hoverX=e[0].clientX}if(g&&g.tracker){if((b=g.tooltipPoints[k])&&b!==f)b.onMouseOver(a)}else d&&d.followPointer&&!d.isHidden&&(a=d.getAnchor([{}],a), +d.updatePosition({plotX:a[0],plotY:a[1]}))},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,b=e&&e.shared?b.hoverPoints:d;(a=a&&e&&b)&&ha(b)[0].plotX===y&&(a=!1);if(a)e.refresh(b);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&(e.hide(),e.hideCrosshairs());this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart;n(c.series,function(d){d.xAxis&&d.xAxis.zoomEnabled&&(d.group.attr(a),d.markerGroup&&(d.markerGroup.attr(a),d.markerGroup.clip(b?c.clipRect:null)),d.dataLabelsGroup&& +d.dataLabelsGroup.attr(a))});c.clipRect.attr(b||c.clipBox)},pinchTranslateDirection:function(a,b,c,d,e,f,g){var h=this.chart,i=a?"x":"y",j=a?"X":"Y",k="chart"+j,m=a?"width":"height",l=h["plot"+(a?"Left":"Top")],p,s,o=1,n=h.inverted,w=h.bounds[a?"h":"v"],q=b.length===1,t=b[0][k],r=c[0][k],v=!q&&b[1][k],u=!q&&c[1][k],x,c=function(){!q&&Q(t-v)>20&&(o=Q(r-u)/Q(t-v));s=(l-r)/o+t;p=h["plot"+(a?"Width":"Height")]/o};c();b=s;bw.max&&(b=w.max-p,x=!0);x?(r-=0.8*(r-g[i][0]),q||(u-= +0.8*(u-g[i][1])),c()):g[i]=[r,u];n||(f[i]=s-l,f[m]=p);f=n?1/o:o;e[m]=p;e[i]=b;d[n?a?"scaleY":"scaleX":"scale"+j]=o;d["translate"+j]=f*l+(r-f*t)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=c.tooltip&&c.tooltip.options.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.zoomHor||b.pinchHor,j=b.zoomVert||b.pinchVert,k=i||j,m=b.selectionMarker,l={},p={};a.type==="touchstart"&&(e||k)&&a.preventDefault();La(f,function(a){return b.normalize(a)});if(a.type==="touchstart")n(f,function(a, +b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],n(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=K(e,f),e=q(e,f);b.min=K(a.pos,g-d);b.max=q(a.pos+a.len,e+d)}});else if(d.length){if(!m)b.selectionMarker=m=v({destroy:ta},c.plotBox);i&&b.pinchTranslateDirection(!0,d,f,l,m,p,h);j&&b.pinchTranslateDirection(!1,d,f,l,m,p,h);b.hasPinched=k;b.scaleGroups(l, +p);!k&&e&&g===1&&this.runPointActions(b.normalize(a))}},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,a=a.chartY,e=this.zoomHor,f=this.zoomVert,g=b.plotLeft,h=b.plotTop,i=b.plotWidth,j=b.plotHeight,k,m=this.mouseDownX,l=this.mouseDownY;dg+i&&(d=g+i);ah+j&&(a=h+j);this.hasDragged=Math.sqrt(Math.pow(m-d,2)+Math.pow(l-a,2));if(this.hasDragged> +10){k=b.isInsidePlot(m-g,l-h);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&k&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(g,h,e?1:i,f?1:j,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&e&&(e=d-m,this.selectionMarker.attr({width:Q(e),x:(e>0?0:e)+m}));this.selectionMarker&&f&&(e=a-l,this.selectionMarker.attr({height:Q(e),y:(e>0?0:e)+l}));k&&!this.selectionMarker&&c.panning&&b.pan(d)}},drop:function(a){var b=this.chart,c=this.hasPinched; +if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},e=this.selectionMarker,f=e.x,g=e.y,h;if(this.hasDragged||c)n(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?f:g),b=a.toValue(b?f+e.width:g+e.height);!isNaN(c)&&!isNaN(b)&&(d[a.xOrY+"Axis"].push({axis:a,min:K(c,b),max:q(c,b)}),h=!0)}}),h&&D(b,"selection",d,function(a){b.zoom(v(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups({translateX:b.plotLeft, +translateY:b.plotTop,scaleX:1,scaleY:1})}if(b)L(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){this.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=Qb(a);c&&d&&d.isCartesian&&!b.isInsidePlot(a.pageX-c.left-b.plotLeft,a.pageY-c.top- +b.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset();this.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart,a=this.normalize(a);a.returnValue=!1;b.mouseIsDown==="mousedown"&&this.drag(a);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=A(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b= +this.chart.hoverSeries;if(b&&!b.options.stickyTracking&&!this.inClass(a.toElement||a.relatedTarget,"highcharts-tooltip"))b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,f=b.inverted,g,h,i,a=this.normalize(a);a.cancelBubble=!0;if(!b.cancelClick)c&&this.inClass(a.target,"highcharts-tracker")?(g=this.chartPosition,h=c.plotX,i=c.plotY,v(c,{pageX:g.left+d+(f?b.plotWidth-i:h),pageY:g.top+e+(f?b.plotHeight-h:i)}),D(c.series,"click",v(a,{point:c})),b.hoverPoint&& +c.firePointEvent("click",a)):(v(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&D(b,"click",a))},onContainerTouchStart:function(a){var b=this.chart;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&(this.runPointActions(a),this.pinch(a))):a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){this.drop(a)},setDOMEvents:function(){var a= +this,b=a.chart.container,c;this._events=c=[[b,"onmousedown","onContainerMouseDown"],[b,"onmousemove","onContainerMouseMove"],[b,"onclick","onContainerClick"],[b,"mouseleave","onContainerMouseLeave"],[z,"mousemove","onDocumentMouseMove"],[z,"mouseup","onDocumentMouseUp"]];fb&&c.push([b,"ontouchstart","onContainerTouchStart"],[b,"ontouchmove","onContainerTouchMove"],[z,"touchend","onDocumentTouchEnd"]);n(c,function(b){a["_"+b[2]]=function(c){a[b[2]](c)};b[1].indexOf("on")===0?b[0][b[1]]=a["_"+b[2]]: +J(b[0],b[1],a["_"+b[2]])})},destroy:function(){var a=this;n(a._events,function(b){b[1].indexOf("on")===0?b[0][b[1]]=null:ba(b[0],b[1],a["_"+b[2]])});delete a._events;clearInterval(a.tooltipTimeout)}};sb.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=o(b.padding,8),f=b.itemMarginTop||0;this.options=b;if(b.enabled)c.baseline=u(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=x(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=e-5,c.maxItemWidth=0,c.chart=a, +c.itemHeight=0,c.lastLineHeight=0,c.render(),J(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.color:g,g=a.options&&a.options.marker,i={stroke:h,fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g)for(j in g=a.convertAttribs(g),g)d=g[j],d!==y&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding, +b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;n(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&a[b].destroy()});b&&Ra(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c= +b.translateY,n(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,L(f,{left:b.translateX+e.legendItemWidth+f.x-20+"px",top:g+"px",display:g>c-6&&g(l||c.chartWidth-2*k-o))b.itemX=o,b.itemY+=s+b.lastLineHeight+p,b.lastLineHeight=0;b.maxItemWidth=q(b.maxItemWidth,e);b.lastItemY=s+b.itemY+p;b.lastLineHeight=q(g,b.lastLineHeight);a._legendItemPos=[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY+=s+g+p,b.lastLineHeight= +g);b.offsetWidth=l||q(f?b.itemX-o:e,b.offsetWidth)},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,m=j.borderWidth,l=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=[];n(b.series,function(a){var b=a.options;b.showInLegend&&!r(b.linkedTo)&&(e=e.concat(a.legendItems|| +(b.legendType==="point"?a.data:a)))});Ib(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;n(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(m||l){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null,g,h)),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,m||0).attr({stroke:j.borderColor, +"stroke-width":m||0,fill:l||S}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;n(e,function(b){a.positionItem(b)});f&&d.align(v({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h=this.clipRect,i=e.navigation,j=o(i.animation,!0),k=i.arrowSize||12,m=this.nav;e.layout=== +"horizontal"&&(f/=2);g&&(f=K(f,g));if(a>f&&!e.useHTML){this.clipHeight=c=f-20-this.titleHeight;this.pageCount=ja(a/c);this.currentPage=o(this.currentPage,1);this.fullHeight=a;if(!h)h=b.clipRect=d.clipRect(0,0,9999,0),b.contentGroup.clip(h);h.attr({height:c});if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,k,k).on("click",function(){b.scroll(-1,j)}).add(m),this.pager=d.text("",15,10).css(i.style).add(m),this.down=d.symbol("triangle-down",0,0,k,k).on("click", +function(){b.scroll(1,j)}).add(m);b.scroll(0);a=f}else if(m)h.attr({height:c.chartHeight}),m.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pageCount,d=this.currentPage+a,e=this.clipHeight,f=this.options.navigation,g=f.activeColor,h=f.inactiveColor,f=this.pager,i=this.padding;d>c&&(d=c);if(d>0)b!==y&&Ia(b,this.chart),this.nav.attr({translateX:i,translateY:e+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:d===1?h:g}).css({cursor:d=== +1?"default":"pointer"}),f.attr({text:d+"/"+this.pageCount}),this.down.attr({x:18+this.pager.getBBox().width,fill:d===c?h:g}).css({cursor:d===c?"default":"pointer"}),e=-K(e*(d-1),this.fullHeight-e+i)+1,this.scrollGroup.animate({translateY:e}),f.attr({text:d+"/"+c}),this.currentPage=d,this.positionCheckboxes(e)}};tb.prototype={init:function(a,b){var c,d=a.series;a.series=null;c=x(N,a);c.series=a.series=d;var d=c.chart,e=d.margin,e=V(e)?e:[e,e,e,e];this.optionsMarginTop=o(d.marginTop,e[0]);this.optionsMarginRight= +o(d.marginRight,e[1]);this.optionsMarginBottom=o(d.marginBottom,e[2]);this.optionsMarginLeft=o(d.marginLeft,e[3]);this.runChartClick=(e=d.events)&&!!e.click;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Ba.length;Ba.push(f);d.reflow!==!1&&J(f,"load",function(){f.initReflow()});if(e)for(g in e)J(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=$?!1:o(d.animation,!0);f.pointCount=0;f.counters=new Hb; +f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=aa[a.type||b.type||b.defaultSeriesType])||qa(17,!0);b=new b;b.init(this,a);return b},addSeries:function(a,b,c){var d,e=this;a&&(b=o(b,!0),D(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var b=b?"xAxis":"yAxis",e=this.options;new ab(this,x(a,{index:this[b].length}));e[b]=ha(e[b]||{});e[b].push(a);o(c,!0)&&this.redraw(d)},isInsidePlot:function(a,b,c){var d= +c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&n(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h=this.isDirtyBox,i=c.length,j=i,k=this.renderer,m=k.isHidden(),l=[];Ia(a,this);for(m&&this.cloneRenderTo();j--;)if(a=c[j],a.isDirty&&a.options.stacking){g=!0;break}if(g)for(j=i;j--;)if(a=c[j],a.options.stacking)a.isDirty= +!0;n(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,n(b,function(a){a.setScale()});this.adjustTickAmounts();this.getMargins();n(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,l.push(function(){D(a,"afterSetExtremes",a.getExtremes())});if(a.isDirty||h||g)a.redraw(),h=!0})}h&&this.drawChartBox();n(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian|| +a.xAxis)&&a.redraw()});d&&d.reset&&d.reset(!0);k.draw();D(this,"redraw");m&&this.cloneRenderTo(!0);n(l,function(a){a.call()})},showLoading:function(a){var b=this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv=c=U(ya,{className:"highcharts-loading"},v(d.style,{zIndex:10,display:S}),this.container),this.loadingSpan=U("span",null,d.labelStyle,c);this.loadingSpan.innerHTML=a||b.lang.loading;if(!this.loadingShown)L(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+ +"px",height:this.plotHeight+"px"}),wb(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&wb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){L(b,{display:S})}});this.loadingShown=!1},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;dK(e.dataMin,e.min)&&c19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Ra(b),delete this.renderToClone): +(c&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),L(b,{position:"absolute",top:"-9999px",display:"block"}),z.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+ub++;if(fa(a))this.renderTo=a=z.getElementById(a);a||qa(13,!0);c=u(A(a,"data-highcharts-chart"));!isNaN(c)&&Ba[c]&&Ba[c].destroy();A(a,"data-highcharts-chart",this.index);a.innerHTML="";a.offsetWidth||this.cloneRenderTo(); +this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=U(ya,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},v({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new Ca(a,c,d,!0):new Sa(a,c,d);$&&this.renderer.create(this,a,c,d)},getMargins:function(){var a=this.options.chart, +b=a.spacingTop,c=a.spacingRight,d=a.spacingBottom,a=a.spacingLeft,e,f=this.legend,g=this.optionsMarginTop,h=this.optionsMarginLeft,i=this.optionsMarginRight,j=this.optionsMarginBottom,k=this.options.title,m=this.options.subtitle,l=this.options.legend,p=o(l.margin,10),s=l.x,t=l.y,B=l.align,w=l.verticalAlign;this.resetMargins();e=this.axisOffset;if((this.title||this.subtitle)&&!r(this.optionsMarginTop))if(m=q(this.title&&!k.floating&&!k.verticalAlign&&k.y||0,this.subtitle&&!m.floating&&!m.verticalAlign&& +m.y||0))this.plotTop=q(this.plotTop,m+o(k.margin,15)+b);if(f.display&&!l.floating)if(B==="right"){if(!r(i))this.marginRight=q(this.marginRight,f.legendWidth-s+p+c)}else if(B==="left"){if(!r(h))this.plotLeft=q(this.plotLeft,f.legendWidth+s+p+a)}else if(w==="top"){if(!r(g))this.plotTop=q(this.plotTop,f.legendHeight+t+p+b)}else if(w==="bottom"&&!r(j))this.marginBottom=q(this.marginBottom,f.legendHeight-t+p+d);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+= +this.extraTopMargin);this.hasCartesianSeries&&n(this.axes,function(a){a.getOffset()});r(h)||(this.plotLeft+=e[3]);r(g)||(this.plotTop+=e[0]);r(j)||(this.marginBottom+=e[2]);r(i)||(this.marginRight+=e[1]);this.setChartSize()},initReflow:function(){function a(a){var g=c.width||gb(d,"width"),h=c.height||gb(d,"height"),a=a?a.target:O;if(!b.hasUserSize&&g&&h&&(a===O||a===z)){if(g!==b.containerWidth||h!==b.containerHeight)clearTimeout(e),b.reflowTimeout=e=setTimeout(function(){if(b.container)b.setSize(g, +h,!1),b.hasUserSize=null},100);b.containerWidth=g;b.containerHeight=h}}var b=this,c=b.options.chart,d=b.renderTo,e;J(O,"resize",a);J(b,"destroy",function(){ba(O,"resize",a)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&D(d,"endResize",null,function(){d.isResizing-=1})};Ia(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(r(a))d.chartWidth=e=q(0,t(a)),d.hasUserSize=!!e;if(r(b))d.chartHeight=f=q(0,t(b));L(d.container,{width:e+"px",height:f+"px"});d.setChartSize(!0); +d.renderer.setSize(e,f,c);d.maxTicks=null;n(d.axes,function(a){a.isDirty=!0;a.setScale()});n(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.getMargins();d.redraw(c);d.oldChartHeight=null;D(d,"resize");za===!1?g():setTimeout(g,za&&za.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=f.spacingTop,h=f.spacingRight,i=f.spacingBottom,j=f.spacingLeft,k=this.clipOffset,m,l,p,o;this.plotLeft=m= +t(this.plotLeft);this.plotTop=l=t(this.plotTop);this.plotWidth=p=q(0,t(d-m-this.marginRight));this.plotHeight=o=q(0,t(e-l-this.marginBottom));this.plotSizeX=b?o:p;this.plotSizeY=b?p:o;this.plotBorderWidth=b=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:j,y:g,width:d-j-h,height:e-g-i};this.plotBox=c.plotBox={x:m,y:l,width:p,height:o};c=ja(q(b,k[3])/2);d=ja(q(b,k[0])/2);this.clipBox={x:c,y:d,width:T(this.plotSizeX-q(b,k[1])/2-c),height:T(this.plotSizeY-q(b,k[2])/2-d)};a||n(this.axes,function(a){a.setAxisSize(); +a.setAxisTranslation()})},resetMargins:function(){var a=this.options.chart,b=a.spacingRight,c=a.spacingBottom,d=a.spacingLeft;this.plotTop=o(this.optionsMarginTop,a.spacingTop);this.marginRight=o(this.optionsMarginRight,b);this.marginBottom=o(this.optionsMarginBottom,c);this.plotLeft=o(this.optionsMarginLeft,d);this.axisOffset=[0,0,0,0];this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground, +g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,m=a.plotBackgroundImage,l=a.plotBorderWidth||0,p,o=this.plotLeft,n=this.plotTop,t=this.plotWidth,q=this.plotHeight,r=this.plotBox,v=this.clipRect,u=this.clipBox;p=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp(null,null,null,c-p,d-p));else{e={fill:j||S};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(p/2,p/2,c-p,d-p,a.borderRadius,i).attr(e).add().shadow(a.shadow)}if(k)f? +f.animate(r):this.plotBackground=b.rect(o,n,t,q,0).attr({fill:k}).add().shadow(a.plotShadow);if(m)h?h.animate(r):this.plotBGImage=b.image(m,o,n,t,q).add();v?v.animate({width:u.width,height:u.height}):this.clipRect=b.clipRect(u);if(l)g?g.animate(g.crisp(null,o,n,t,q)):this.plotBorder=b.rect(o,n,t,q,0,l).attr({stroke:a.plotBorderColor,"stroke-width":l,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;n(["inverted","angular","polar"], +function(g){c=aa[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];for(e=d&&d.length;!f&&e--;)(c=aa[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},render:function(){var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=d.credits,g;a.setTitle();a.legend=new sb(a,d.legend);n(b,function(a){a.setScale()});a.getMargins();a.maxTicks=null;n(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&n(b,function(a){a.render()}); +if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();n(a.series,function(a){a.translate();a.setTooltipPoints();a.render()});e.items&&n(e.items,function(b){var d=v(e.style,b.style),f=u(d.left)+a.plotLeft,g=u(d.top)+a.plotTop+12;delete d.left;delete d.top;c.text(b.html,f,g).attr({zIndex:2}).css(d).add()});if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position); +a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;D(a,"destroy");Ba[a.index]=y;a.renderTo.removeAttribute("data-highcharts-chart");ba(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();n("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())}); +if(d)d.innerHTML="",ba(d),f&&Ra(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!Z&&O==O.top&&z.readyState!=="complete"||$&&!O.canvg?($?Rb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):z.attachEvent("onreadystatechange",function(){z.detachEvent("onreadystatechange",a.firstRender);z.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender())a.getContainer(),D(a,"init"),a.resetMargins(), +a.setChartSize(),a.propFromSeries(),a.getAxes(),n(b.series||[],function(b){a.initSeries(b)}),D(a,"beforeRender"),a.pointer=new rb(a,b),a.render(),a.renderer.draw(),c&&c.apply(a,[a]),n(a.callbacks,function(b){b.apply(a,[a])}),a.cloneRenderTo(!0),D(a,"load")}};tb.prototype.callbacks=[];var Na=function(){};Na.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++], +a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.pointValKey,a=Na.prototype.optionsToObject.call(this,a);v(this,a);this.options=this.options?v(this.options,a):a;if(d)this.y=this[d];if(this.x===y&&c)this.x=b===y?c.autoIncrement():b;return this},optionsToObject:function(a){var b,c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b={y:a};else if(Da(a)){b={};if(a.length>e){c=typeof a[0]; +if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;ga+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart.options,c=b.plotOptions, +d=c[this.type];this.userOptions=a;a=x(d,c.series,a);this.tooltipOptions=x(b.tooltip,a.tooltip);d.marker===null&&delete a.marker;return a},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,e;e=a.color||X[this.type].color;if(!e&&!a.colorByPoint)r(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a=this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols, +c=c.counters;this.symbol=b.symbol;if(!this.symbol)r(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:function(a){var b=this.options,c=b.marker,d=a.options.symbolWidth,e=this.chart.renderer,f=this.legendGroup,a=a.baseline,g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a-4,"L",d,a-4]).attr(g).add(f)}if(c&&c.enabled)b= +c.radius,this.legendSymbol=e.symbol(this.symbol,d/2-b,a-4-b,2*b,2*b).add(f)},addPoint:function(a,b,c,d){var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xData,k=this.yData,m=this.zData,l=this.names,p=g&&g.shift||0,n=e.data;Ia(d,i);if(g&&c)g.shift=p+1;if(h){if(c)h.shift=p+1;h.isArea=!0}b=o(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d,[a]);j.push(d.x);k.push(this.toYData?this.toYData(d):d.y);m.push(d.z);if(l)l[d.x]=d.name;n.push(a);e.legendType==="point"&& +this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),j.shift(),k.shift(),m.shift(),n.shift()));this.getAttribs();this.isDirtyData=this.isDirty=!0;b&&i.redraw()},setData:function(a,b){var c=this.points,d=this.options,e=this.chart,f=null,g=this.xAxis,h=g&&g.categories&&!g.categories.length?[]:null,i;this.xIncrement=null;this.pointRange=g&&g.categories?1:d.pointRange;this.colorCounter=0;var j=[],k=[],m=[],l=a?a.length:[],p=(i=this.pointArrayMap)&&i.length,n=!!this.toYData;if(l>(d.turboThreshold|| +1E3)){for(i=0;f===null&&i1&&j[1]k||this.forceCrop))if(a=i.getExtremes(),i=a.min,k=a.max,b[d-1]k)b=[],c=[];else if(b[0]k){for(a=0;a=i){e=q(0,a-1);break}for(;ak){f=a+1;break}b=b.slice(e,f);c=c.slice(e,f);g=!0}for(a=b.length-1;a>0;a--)if(d=b[a]-b[a-1],d>0&&(h===y||d= +0&&c<=d;)h[c++]=f}this.tooltipPoints=h}},tooltipHeaderFormatter:function(a){var b=this.tooltipOptions,c=b.xDateFormat,d=b.dateTimeLabelFormats,e=this.xAxis,f=e&&e.options.type==="datetime",b=b.headerFormat,e=e&&e.closestPointRange,g;if(f&&!c)if(e)for(g in E){if(E[g]>=e){c=d[g];break}}else c=d.day;f&&c&&Ea(a.key)&&(b=b.replace("{point.key}","{point.key:"+c+"}"));return wa(b,{point:a,series:this})},onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&& +D(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&D(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState();b.hoverSeries=null},animate:function(a){var b=this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.inverted,h;if(e&&!V(e))e=X[b.type].animation;h="_sharedClip"+e.duration+e.easing;if(a)a=c[h], +e=c[h+"m"],a||(c[h]=a=d.clipRect(v(f,{width:0})),c[h+"m"]=e=d.clipRect(-99,g?-c.plotLeft:-c.plotTop,99,g?c.chartWidth:c.chartHeight)),b.group.clip(a),b.markerGroup.clip(e),b.sharedClipKey=h;else{if(a=c[h])a.animate({width:c.plotSizeX},e),c[h+"m"].animate({width:c.plotSizeX+99},e);b.animate=null;b.animationTimeout=setTimeout(function(){b.afterAnimate()},e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=this.group;c&&this.options.clip!==!1&&(c.clip(a.clipRect),this.markerGroup.clip()); +setTimeout(function(){b&&a[b]&&(a[b]=a[b].destroy(),a[b+"m"]=a[b+"m"].destroy())},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,m=this.options.marker,l,n=this.markerGroup;if(m.enabled||this._hasPointMarkers)for(f=b.length;f--;)if(g=b[f],d=g.plotX,e=g.plotY,k=g.graphic,i=g.marker||{},a=m.enabled&&i.enabled===y||i.enabled,l=c.isInsidePlot(t(d),e,c.inverted),a&&e!==y&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""],h=a.r,i=o(i.symbol,this.symbol),j=i.indexOf("url")=== +0,k)k.attr({visibility:l?Z?"inherit":"visible":"hidden"}).animate(v({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(l&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(n)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=o(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=X[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color, +h={stroke:g,fill:g},i=a.points||[],j=[],k,m=a.pointAttrToOptions,l=b.negativeColor,p;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=e.color||ma(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,h);n(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],j[""])});a.pointAttr=j;for(g=i.length;g--;){h=i[g];if((c=h.options&&h.options.marker||h.options)&&c.enabled===!1)c.radius=0;if(h.negative&&l)h.color=h.fillColor=l;f=b.colorByPoint||h.color; +if(h.options)for(p in m)r(c[m[p]])&&(f=!0);if(f){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker)f.color=ma(f.color||h.color).brighten(f.brightness||e.brightness).get();k[""]=a.convertAttribs(v({color:h.color},c),j[""]);k.hover=a.convertAttribs(d.hover,j.hover,k[""]);k.select=a.convertAttribs(d.select,j.select,k[""]);if(h.negative&&b.marker&&l)k[""].fill=k.hover.fill=k.select.fill=a.convertAttribs({fillColor:l}).fill}else k=j;h.pointAttr=k}},update:function(a,b){var c=this.chart,d= +this.type,a=x(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},a);this.remove(!1);v(this,aa[a.type||d].prototype);this.init(c,a);o(b,!0)&&c.redraw(!1)},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(Aa),d,e,f=a.data||[],g,h,i;D(a,"destroy");ba(a);n(["xAxis","yAxis"],function(b){if(i=a[b])ga(i.series,a),i.isDirty=i.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(e=f.length;e--;)(g=f[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout); +n("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(b){a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())});if(b.hoverSeries===a)b.hoverSeries=null;ga(b.series,a);for(h in a)delete a[h]},drawDataLabels:function(){var a=this,b=a.options.dataLabels,c=a.points,d,e,f,g;if(b.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(b),g=a.plotGroup("dataLabelsGroup","data-labels",a.visible?"visible":"hidden",b.zIndex||6),e=b,n(c,function(c){var i, +j=c.dataLabel,k,m,l=c.connector,n=!0;d=c.options&&c.options.dataLabels;i=e.enabled||d&&d.enabled;if(j&&!i)c.dataLabel=j.destroy();else if(i){i=b.rotation;b=x(e,d);k=c.getLabelConfig();f=b.format?wa(b.format,k):b.formatter.call(k,b);b.style.color=o(b.color,b.style.color,a.color,"black");if(j)if(r(f))j.attr({text:f}),n=!1;else{if(c.dataLabel=j=j.destroy(),l)c.connector=l.destroy()}else if(r(f)){j={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:i, +padding:b.padding,zIndex:1};for(m in j)j[m]===y&&delete j[m];j=c.dataLabel=a.chart.renderer[i?"text":"label"](f,0,-999,null,null,null,b.useHTML).attr(j).css(b.style).add(g).shadow(b.shadow)}j&&a.alignDataLabel(c,j,b,null,n)}})},alignDataLabel:function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=o(a.plotX,-999),a=o(a.plotY,-999),i=b.getBBox(),d=v({x:g?f.plotWidth-a:h,y:t(g?f.plotHeight-h:a),width:0,height:0},d);v(c,{width:i.width,height:i.height});c.rotation?(d={align:c.align,x:d.x+c.x+d.width/2,y:d.y+ +c.y+d.height/2},b[e?"attr":"animate"](d)):b.align(c,null,d);b.attr({visibility:c.crop===!1||f.isInsidePlot(h,a,g)?f.renderer.isSVG?"inherit":"visible":"hidden"})},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;n(a,function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c}, +getGraphPath:function(){var a=this,b=[],c,d=[];n(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=this.getGraphPath(),g=b.negativeColor;g&&c.push(["graphNeg",g]);n(c,function(c,g){var j=c[0],k=a[j];if(k)Ta(k),k.animate({d:f});else if(d&&f.length){k={stroke:c[1],"stroke-width":d,zIndex:1};if(e)k.dashstyle=e;a[j]= +a.chart.renderer.path(f).attr(k).add(a.group).shadow(!g&&b.shadow)}})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=b.chartHeight,k=q(e,j);if(d&&(f||g))d=ja(this.yAxis.len-this.yAxis.translate(a.threshold||0)),a={x:0,y:0,width:k,height:d},k={x:0,y:d,width:k,height:k-d},b.inverted&&c.isVML&&(a={x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d, +height:e}),this.yAxis.reversed?(b=k,e=a):(b=a,e=k),h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};n(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)J(c,"resize",a),J(b,"destroy",function(){ba(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b, +c,d,e){var f=this[a],g=!f,h=this.chart,i=this.xAxis,j=this.yAxis;g&&(this[a]=f=h.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"]({translateX:i?i.left:h.plotLeft,translateY:j?j.top:h.plotTop,scaleX:1,scaleY:1});return f},render:function(){var a=this.chart,b,c=this.options,d=c.animation&&!!this.animate&&a.renderer.isSVG,e=this.visible?"visible":"hidden",f=c.zIndex,g=this.hasRendered,h=a.seriesGroup;b=this.plotGroup("group","series",e,f,h);this.markerGroup=this.plotGroup("markerGroup", +"markers",e,f,h);d&&this.animate(!0);this.getAttribs();b.inverted=this.isCartesian?a.inverted:!1;this.drawGraph&&(this.drawGraph(),this.clipNeg());this.drawDataLabels();this.drawPoints();this.options.enableMouseTracking!==!1&&this.drawTracker();a.inverted&&this.invertGroups();c.clip!==!1&&!this.sharedClipKey&&!g&&b.clip(a.clipRect);d?this.animate():g||this.afterAnimate();this.isDirty=this.isDirtyData=!1;this.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis, +e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:o(d&&d.left,a.plotLeft),translateY:o(e&&e.top,a.plotTop)}));this.translate();this.setTooltipPoints(!0);this.render();b&&D(this,"updatedData")},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisible:function(a, +b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===y?!h:a)?"show":"hide";n(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&n(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});n(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();D(c, +f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===y?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;D(this,a?"select":"unselect")},drawTracker:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,k=k&&{cursor:k},m=a.singlePoints,l,n=function(){if(f.hoverSeries!==a)a.onMouseOver()};if(e&&!c)for(l= +e+1;l--;)d[l]==="M"&&d.splice(l+1,0,d[l+1]-i,d[l+2],"L"),(l&&d[l]==="M"||l===e)&&d.splice(l,0,"L",d[l-2]+i,d[l-1]);for(l=0;l=0;d--)da&&i>e?(i=q(a,e),k=2*e-i):ig&&k>e?(k=q(g,e),i=2*e-k):kh?n-h:g-(f.translate(c.y,0,1,0,1)<=g?h:0));c.barX=s;c.pointWidth=i;c.shapeType="rect";c.shapeArgs=c=b.renderer.Element.prototype.crisp.call(0,e,s,t,j,l);e%2&&(c.y-=1,c.height+=1)})},getSymbol:ta,drawLegendSymbol:M.prototype.drawLegendSymbol,drawGraph:ta,drawPoints:function(){var a=this,b=a.options,c=a.chart.renderer,d;n(a.points,function(e){var f=e.plotY,g=e.graphic;if(f!==y&&!isNaN(f)&&e.y!==null)d=e.shapeArgs,g?(Ta(g),g.animate(x(d))):e.graphic= +c[e.shapeType](d).attr(e.pointAttr[e.selected?"select":""]).add(a.group).shadow(b.shadow,null,b.stacking&&!b.borderRadius);else if(g)e.graphic=g.destroy()})},drawTracker:function(){var a=this,b=a.chart.pointer,c=a.options.cursor,d=c&&{cursor:c},e=function(b){var c=b.target,d;for(a.onMouseOver();c&&!d;)d=c.point,c=c.parentNode;if(d!==y)d.onMouseOver(b)};n(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});a._hasTracking?a._hasTracking=!0:n(a.trackerGroups, +function(c){if(a[c]&&(a[c].addClass("highcharts-tracker").on("mouseover",e).on("mouseout",function(a){b.onTrackerMouseOut(a)}).css(d),fb))a[c].on("touchstart",e)})},alignDataLabel:function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>o(this.translatedThreshold,f.plotSizeY),j=o(c.inside,!!this.options.stacking);if(h&&(d=x(h),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height: +0,d.height=0);c.align=o(c.align,!g||j?"center":i?"right":"left");c.verticalAlign=o(c.verticalAlign,g||j?"middle":i?"top":"bottom");R.prototype.alignDataLabel.call(this,a,b,c,d,e)},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(Z)a?(e.scaleY=0.001,a=K(b.pos+b.len,q(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)}, +remove:function(){var a=this,b=a.chart;b.hasRendered&&n(b.series,function(b){if(b.type===a.type)b.isDirty=!0});R.prototype.remove.apply(a,arguments)}});aa.column=F;X.bar=x(X.column);na=ea(F,{type:"bar",inverted:!0});aa.bar=na;X.scatter=x(W,{lineWidth:0,tooltip:{headerFormat:'{series.name}
    ',pointFormat:"x: {point.x}
    y: {point.y}
    ",followPointer:!0},stickyTracking:!1});na=ea(R,{type:"scatter",sorted:!1,requireSorting:!1, +noSharedTooltip:!0,trackerGroups:["markerGroup"],drawTracker:F.prototype.drawTracker,setTooltipPoints:ta});aa.scatter=na;X.pie=x(W,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});W={type:"pie",isCartesian:!1, +pointClass:ea(Na,{init:function(){Na.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;v(a,{visible:a.visible!==!1,name:o(a.name,"Slice")});b=function(){a.slice()};J(a,"select",b);J(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart,e;b.visible=b.options.visible=a=a===y?!b.visible:a;c.options.data[la(b,c.data)]=b.options;e=a?"show":"hide";n(["graphic","dataLabel","connector","shadowGroup"],function(a){if(b[a])b[a][e]()});b.legendItem&&d.legend.colorizeItem(b, +a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Ia(c,d.chart);o(b,!0);this.sliced=this.options.sliced=a=r(a)?a:!this.sliced;d.options.data[la(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth", +fill:"color"},getColor:ta,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)n(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b){R.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();o(b,!0)&&this.chart.redraw()},getCenter:function(){var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight- +2*c,b=a.center,a=[o(b[0],"50%"),o(b[1],"50%"),a.size||"100%",a.innerSize||0],g=K(e,f),h;return La(a,function(a,b){h=/%$/.test(a);d=b<2||b===2&&h;return(h?[e,f,g,g][b]*u(a)/100:a)+(d?c:0)})},translate:function(a){this.generatePoints();var b=0,c=0,d=this.options,e=d.slicedOffset,f=e+d.borderWidth,g,h,i,j=this.startAngleRad=Ka/180*((d.startAngle||0)%360-90),k=this.points,m=2*Ka,l=d.dataLabels.distance,n=d.ignoreHiddenPoint,o,q=k.length,r;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){i= +I.asin((b-a[1])/(a[2]/2+l));return a[0]+(c?-1:1)*Y(i)*(a[2]/2+l)};for(o=0;o0.75*m&&(i-=2*Ka);r.slicedTranslation={translateX:t(Y(i)*e),translateY:t(ca(i)*e)};g=Y(i)*a[2]/2;h=ca(i)*a[2]/2;r.tooltipPos=[a[0]+g*0.7,a[1]+h*0.7];r.half=i0,v,w,u,x,y=[[],[]],A,z,E,H,C,D=[0,0,0,0], +K=function(a,b){return b.y-a.y},M=function(a,b){a.sort(function(a,c){return a.angle!==void 0&&(c.angle-a.angle)*b})};if(e.enabled||a._hasPointLabels){R.prototype.drawDataLabels.apply(a);n(b,function(a){a.dataLabel&&y[a.half].push(a)});for(H=0;!x&&b[H];)x=b[H]&&b[H].dataLabel&&(b[H].dataLabel.getBBox().height||21),H++;for(H=2;H--;){var b=[],L=[],I=y[H],J=I.length,F;M(I,H-0.5);if(m>0){for(C=s-p-m;C<=s+p+m;C+=x)b.push(C);w=b.length;if(J>w){c=[].concat(I);c.sort(K);for(C=J;C--;)c[C].rank=C;for(C=J;C--;)I[C].rank>= +w&&I.splice(C,1);J=I.length}for(C=0;C0){if(w=L.pop(),F=w.i,z=w.y,c>z&&b[F+1]!==null||ch-f&&(D[1]=q(t(A+w-h+f),D[1])),z-x/2<0?D[0]=q(t(-z+x/2),D[0]):z+x/2>d&&(D[2]=q(t(z+x/2-d),D[2]))}}if(pa(D)===0||this.verifyDataLabelOverflow(D))this.placeDataLabels(),r&&g&&n(this.points,function(b){i=b.connector;u=b.labelPos;if((v=b.dataLabel)&&v._pos)E=v._attr.visibility,A=v.connX,z=v.connY,j=k?["M",A+(u[6]==="left"?5:-5),z, +"C",A,z,2*u[2]-u[4],2*u[3]-u[5],u[2],u[3],"L",u[4],u[5]]:["M",A+(u[6]==="left"?5:-5),z,"L",u[2],u[3],"L",u[4],u[5]],i?(i.animate({d:j}),i.attr("visibility",E)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:E}).add(a.group);else if(i)b.connector=i.destroy()})}},verifyDataLabelOverflow:function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=q(b[2]-q(a[1],a[3]),c):(e=q(b[2]-a[1]-a[3],c),b[0]+=(a[3]- +a[1])/2);d[1]!==null?e=q(K(e,b[2]-q(a[0],a[2])),c):(e=q(K(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);e-1?b[j]=g.translate(b[j]):s(j,["height","y"])>-1&&(b[j]=o.translate(b[j]));b.width&&(b.width-=g.toPixels(0)-g.left);b.x&&(b.x+=g.minPixelPadding)}m.attr(b)}c.bBox=null;if(!k(i))p=c.getBBox(),i=p.width;if(!k(t))p||(p=c.getBBox()),t=p.height;if(!k(v))v=n.center;if(!k(u))u=n.center;e-=i*v;h-=t*u;d.animation&&l(c.translateX)&&l(c.translateY)?c.animate({translateX:e,translateY:h}):c.translate(e,h)}},destroy:function(){var a=this,d=this.chart.annotations.allItems,c=d.indexOf(a);c>-1&&d.splice(c, +1);x(["title","shape","group"],function(b){a[b]&&(a[b].destroy(),a[b]=null)});a.group=a.title=a.shape=a.chart=a.options=null},update:function(a,d){r(this.options,a);this.linkObjects();this.render(d)},linkObjects:function(){var a=this.chart,d=this.linkedObject,c=d&&(d.id||d.options.id),b=this.options.linkedTo;if(l(b)){if(!l(d)||b!==c)this.linkedObject=a.get(b)}else this.linkedObject=null}};r(w.prototype,{annotations:{add:function(a,d){var c=this.allItems,b=this.chart,f,e;Object.prototype.toString.call(a)=== +"[object Array]"||(a=[a]);for(e=a.length;e--;)f=new z(b,a[e]),c.push(f),f.render(d)},redraw:function(){x(this.allItems,function(a){a.redraw()})}}});w.prototype.callbacks.push(function(a){var d=a.options.annotations,c;c=a.renderer.g("annotations");c.attr({zIndex:7});c.add();a.annotations.allItems=[];a.annotations.chart=a;a.annotations.group=c;Object.prototype.toString.call(d)==="[object Array]"&&d.length>0&&a.annotations.add(a.options.annotations);f.addEvent(a,"redraw",function(){a.annotations.redraw()})})})(Highcharts, +HighchartsAdapter); diff --git a/js/highchart/modules/annotations.src.js b/js/highchart/modules/annotations.src.js new file mode 100644 index 0000000..67de1a8 --- /dev/null +++ b/js/highchart/modules/annotations.src.js @@ -0,0 +1,354 @@ +(function (Highcharts, HighchartsAdapter) { + +var UNDEFINED, + ALIGN_FACTOR, + ALLOWED_SHAPES, + Chart = Highcharts.Chart, + extend = Highcharts.extend, + each = Highcharts.each, + defaultOptions; + +defaultOptions = { + xAxis: 0, + yAxis: 0, + title: { + style: {}, + text: "", + x: 0, + y: 0 + }, + shape: { + params: { + stroke: "#000000", + fill: "transparent", + strokeWidth: 2 + } + } +}; + +ALLOWED_SHAPES = ["path", "rect", "circle"]; + +ALIGN_FACTOR = { + top: 0, + left: 0, + center: 0.5, + middle: 0.5, + bottom: 1, + right: 1 +}; + + +// Highcharts helper methods +var inArray = HighchartsAdapter.inArray, + merge = Highcharts.merge; + +function isArray(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +} + +function isNumber(n) { + return typeof n === 'number'; +} + +function defined(obj) { + return obj !== UNDEFINED && obj !== null; +} + + +// Define annotation prototype +var Annotation = function () { + this.init.apply(this, arguments); +}; +Annotation.prototype = { + /* + * Initialize the annotation + */ + init: function (chart, options) { + this.chart = chart; + this.options = merge({}, defaultOptions, options); + }, + + /* + * Render the annotation + */ + render: function (redraw) { + var annotation = this, + chart = this.chart, + renderer = annotation.chart.renderer, + group = annotation.group, + title = annotation.title, + shape = annotation.shape, + options = annotation.options, + titleOptions = options.title, + shapeOptions = options.shape; + + if (!group) { + group = annotation.group = renderer.g(); + } + + if (!title && titleOptions) { + title = annotation.title = renderer.label(titleOptions); + title.add(group); + } + + if (!shape && shapeOptions && inArray(shapeOptions.type, ALLOWED_SHAPES) !== -1) { + shape = annotation.shape = renderer[options.shape.type](shapeOptions.params); + shape.add(group); + } + + group.add(chart.annotations.group); + + // link annotations to point or series + annotation.linkObjects(); + + if (redraw !== false) { + annotation.redraw(); + } + }, + + /* + * Redraw the annotation title or shape after options update + */ + redraw: function () { + var options = this.options, + chart = this.chart, + group = this.group, + title = this.title, + shape = this.shape, + linkedTo = this.linkedObject, + xAxis = chart.xAxis[options.xAxis], + yAxis = chart.yAxis[options.yAxis], + width = options.width, + height = options.height, + anchorY = ALIGN_FACTOR[options.anchorY], + anchorX = ALIGN_FACTOR[options.anchorX], + resetBBox = false, + shapeParams, + linkType, + series, + param, + bbox, + x, + y; + + if (linkedTo) { + linkType = (linkedTo instanceof Highcharts.Point) ? 'point' : + (linkedTo instanceof Highcharts.Series) ? 'series' : null; + + if (linkType === 'point') { + options.xValue = linkedTo.x; + options.yValue = linkedTo.y; + series = linkedTo.series; + } else if (linkType === 'series') { + series = linkedTo; + } + + if (group.visibility !== series.group.visibility) { + group.attr({ + visibility: series.group.visibility + }); + } + } + + + // Based on given options find annotation pixel position + x = (defined(options.xValue) ? xAxis.toPixels(options.xValue + xAxis.minPointOffset) : options.x) - xAxis.minPixelPadding; + y = defined(options.yValue) ? yAxis.toPixels(options.yValue) : options.y; + + + if (isNaN(x) || isNaN(y) || !isNumber(x) || !isNumber(y)) { + return; + } + + + if (title) { + title.attr(options.title); + title.css(options.title.style); + resetBBox = true; + } + + if (shape) { + shapeParams = extend({}, options.shape.params); + + if (options.units === 'values') { + for (param in shapeParams) { + if (inArray(param, ['width', 'x']) > -1) { + shapeParams[param] = xAxis.translate(shapeParams[param]); + } else if (inArray(param, ['height', 'y']) > -1) { + shapeParams[param] = yAxis.translate(shapeParams[param]); + } + } + + if (shapeParams.width) { + shapeParams.width -= xAxis.toPixels(0) - xAxis.left; + } + + if (shapeParams.x) { + shapeParams.x += xAxis.minPixelPadding; + } + + } + + resetBBox = true; + shape.attr(shapeParams); + } + + group.bBox = null; + + // If annotation width or height is not defined in options use bounding box size + if (!isNumber(width)) { + bbox = group.getBBox(); + width = bbox.width; + } + + if (!isNumber(height)) { + // get bbox only if it wasn't set before + if (!bbox) { + bbox = group.getBBox(); + } + + height = bbox.height; + } + + // Calculate anchor point + if (!isNumber(anchorX)) { + anchorX = ALIGN_FACTOR.center; + } + + if (!isNumber(anchorY)) { + anchorY = ALIGN_FACTOR.center; + } + + // Translate group according to its dimension and anchor point + x = x - width * anchorX; + y = y - height * anchorY; + + if (chart.animation && defined(group.translateX) && defined(group.translateY)) { + group.animate({ + translateX: x, + translateY: y + }); + } else { + group.translate(x, y); + } + }, + + /* + * Destroy the annotation + */ + destroy: function () { + var annotation = this, + chart = this.chart, + allItems = chart.annotations.allItems, + index = allItems.indexOf(annotation); + + if (index > -1) { + allItems.splice(index, 1); + } + + each(['title', 'shape', 'group'], function (element) { + if (annotation[element]) { + annotation[element].destroy(); + annotation[element] = null; + } + }); + + annotation.group = annotation.title = annotation.shape = annotation.chart = annotation.options = null; + }, + + /* + * Update the annotation with a given options + */ + update: function (options, redraw) { + extend(this.options, options); + + // update link to point or series + this.linkObjects(); + + this.render(redraw); + }, + + linkObjects: function () { + var annotation = this, + chart = annotation.chart, + linkedTo = annotation.linkedObject, + linkedId = linkedTo && (linkedTo.id || linkedTo.options.id), + options = annotation.options, + id = options.linkedTo; + + if (!defined(id)) { + annotation.linkedObject = null; + } else if (!defined(linkedTo) || id !== linkedId) { + annotation.linkedObject = chart.get(id); + } + } +}; + + +// Add annotations methods to chart prototype +extend(Chart.prototype, { + annotations: { + /* + * Unified method for adding annotations to the chart + */ + add: function (options, redraw) { + var annotations = this.allItems, + chart = this.chart, + item, + len; + + if (!isArray(options)) { + options = [options]; + } + + len = options.length; + + while (len--) { + item = new Annotation(chart, options[len]); + annotations.push(item); + item.render(redraw); + } + }, + + /** + * Redraw all annotations, method used in chart events + */ + redraw: function () { + each(this.allItems, function (annotation) { + annotation.redraw(); + }); + } + } +}); + + +// Initialize on chart load +Chart.prototype.callbacks.push(function (chart) { + var options = chart.options.annotations, + group; + + group = chart.renderer.g("annotations"); + group.attr({ + zIndex: 7 + }); + group.add(); + + // initialize empty array for annotations + chart.annotations.allItems = []; + + // link chart object to annotations + chart.annotations.chart = chart; + + // link annotations group element to the chart + chart.annotations.group = group; + + if (isArray(options) && options.length > 0) { + chart.annotations.add(chart.options.annotations); + } + + // update annotations after chart redraw + Highcharts.addEvent(chart, 'redraw', function () { + chart.annotations.redraw(); + }); +}); +}(Highcharts, HighchartsAdapter)); diff --git a/js/highchart/modules/canvas-tools.js b/js/highchart/modules/canvas-tools.js new file mode 100644 index 0000000..316cf63 --- /dev/null +++ b/js/highchart/modules/canvas-tools.js @@ -0,0 +1,133 @@ +/* + A class to parse color values + @author Stoyan Stefanov + @link http://www.phpied.com/rgb-color-parser-in-javascript/ + Use it if you like it + + canvg.js - Javascript SVG parser and renderer on Canvas + MIT Licensed + Gabe Lerner (gabelerner@gmail.com) + http://code.google.com/p/canvg/ + + Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/ + + Highcharts JS v3.0.2 (2013-06-05) + CanVGRenderer Extension module + + (c) 2011-2012 Torstein Hønsi, Erik Olsson + + License: www.highcharts.com/license +*/ +function RGBColor(m){this.ok=!1;m.charAt(0)=="#"&&(m=m.substr(1,6));var m=m.replace(/ /g,""),m=m.toLowerCase(),a={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b", +darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff", +gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa", +lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080", +oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd", +slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"},c;for(c in a)m==c&&(m=a[c]);var d=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(b){return[parseInt(b[1]),parseInt(b[2]),parseInt(b[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/, +example:["#00ff00","336699"],process:function(b){return[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(b){return[parseInt(b[1]+b[1],16),parseInt(b[2]+b[2],16),parseInt(b[3]+b[3],16)]}}];for(c=0;c255?255:this.r;this.g=this.g<0||isNaN(this.g)?0: +this.g>255?255:this.g;this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b;this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"};this.toHex=function(){var b=this.r.toString(16),a=this.g.toString(16),d=this.b.toString(16);b.length==1&&(b="0"+b);a.length==1&&(a="0"+a);d.length==1&&(d="0"+d);return"#"+b+a+d};this.getHelpXML=function(){for(var b=[],k=0;k "+o.toRGB()+" -> "+o.toHex());l.appendChild(n);l.appendChild(q);c.appendChild(l)}catch(p){}return c}} +if(!window.console)window.console={},window.console.log=function(){},window.console.dir=function(){};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(m){for(var a=0;a]*>/,""),d=new ActiveXObject("Microsoft.XMLDOM");d.async="false";d.loadXML(a);return d}};a.Property=function(c,d){this.name=c;this.value=d;this.hasValue=function(){return this.value!=null&&this.value!==""};this.numValue=function(){if(!this.hasValue())return 0;var b=parseFloat(this.value);(this.value+"").match(/%$/)&& +(b/=100);return b};this.valueOrDefault=function(b){return this.hasValue()?this.value:b};this.numValueOrDefault=function(b){return this.hasValue()?this.numValue():b};var b=this;this.Color={addOpacity:function(d){var c=b.value;if(d!=null&&d!=""){var f=new RGBColor(b.value);f.ok&&(c="rgba("+f.r+", "+f.g+", "+f.b+", "+d+")")}return new a.Property(b.name,c)}};this.Definition={getDefinition:function(){var d=b.value.replace(/^(url\()?#([^\)]+)\)?$/,"$2");return a.Definitions[d]},isUrl:function(){return b.value.indexOf("url(")== +0},getFillStyle:function(b){var d=this.getDefinition();return d!=null&&d.createGradient?d.createGradient(a.ctx,b):d!=null&&d.createPattern?d.createPattern(a.ctx,b):null}};this.Length={DPI:function(){return 96},EM:function(b){var d=12,c=new a.Property("fontSize",a.Font.Parse(a.ctx.font).fontSize);c.hasValue()&&(d=c.Length.toPixels(b));return d},toPixels:function(d){if(!b.hasValue())return 0;var c=b.value+"";return c.match(/em$/)?b.numValue()*this.EM(d):c.match(/ex$/)?b.numValue()*this.EM(d)/2:c.match(/px$/)? +b.numValue():c.match(/pt$/)?b.numValue()*1.25:c.match(/pc$/)?b.numValue()*15:c.match(/cm$/)?b.numValue()*this.DPI(d)/2.54:c.match(/mm$/)?b.numValue()*this.DPI(d)/25.4:c.match(/in$/)?b.numValue()*this.DPI(d):c.match(/%$/)?b.numValue()*a.ViewPort.ComputeSize(d):b.numValue()}};this.Time={toMilliseconds:function(){if(!b.hasValue())return 0;var a=b.value+"";if(a.match(/s$/))return b.numValue()*1E3;a.match(/ms$/);return b.numValue()}};this.Angle={toRadians:function(){if(!b.hasValue())return 0;var a=b.value+ +"";return a.match(/deg$/)?b.numValue()*(Math.PI/180):a.match(/grad$/)?b.numValue()*(Math.PI/200):a.match(/rad$/)?b.numValue():b.numValue()*(Math.PI/180)}}};a.Font=new function(){this.Styles=["normal","italic","oblique","inherit"];this.Variants=["normal","small-caps","inherit"];this.Weights="normal,bold,bolder,lighter,100,200,300,400,500,600,700,800,900,inherit".split(",");this.CreateFont=function(d,b,c,e,f,g){g=g!=null?this.Parse(g):this.CreateFont("","","","","",a.ctx.font);return{fontFamily:f|| +g.fontFamily,fontSize:e||g.fontSize,fontStyle:d||g.fontStyle,fontWeight:c||g.fontWeight,fontVariant:b||g.fontVariant,toString:function(){return[this.fontStyle,this.fontVariant,this.fontWeight,this.fontSize,this.fontFamily].join(" ")}}};var c=this;this.Parse=function(d){for(var b={},d=a.trim(a.compressSpaces(d||"")).split(" "),k=!1,e=!1,f=!1,g=!1,j="",h=0;hthis.x2)this.x2=b}if(a!=null){if(isNaN(this.y1)||isNaN(this.y2))this.y2=this.y1=a;if(athis.y2)this.y2=a}};this.addX=function(b){this.addPoint(b,null)};this.addY=function(b){this.addPoint(null,b)};this.addBoundingBox=function(b){this.addPoint(b.x1,b.y1);this.addPoint(b.x2,b.y2)};this.addQuadraticCurve=function(b,a,d,c,k,l){d=b+2/3*(d-b);c=a+2/3*(c- +a);this.addBezierCurve(b,a,d,d+1/3*(k-b),c,c+1/3*(l-a),k,l)};this.addBezierCurve=function(b,a,d,c,k,l,o,n){var q=[b,a],p=[d,c],t=[k,l],m=[o,n];this.addPoint(q[0],q[1]);this.addPoint(m[0],m[1]);for(i=0;i<=1;i++)b=function(b){return Math.pow(1-b,3)*q[i]+3*Math.pow(1-b,2)*b*p[i]+3*(1-b)*Math.pow(b,2)*t[i]+Math.pow(b,3)*m[i]},a=6*q[i]-12*p[i]+6*t[i],d=-3*q[i]+9*p[i]-9*t[i]+3*m[i],c=3*p[i]-3*q[i],d==0?a!=0&&(a=-c/a,0=this.tokens.length-1};this.isCommandOrEnd=function(){return this.isEnd()? +!0:this.tokens[this.i+1].match(/^[A-Za-z]$/)!=null};this.isRelativeCommand=function(){return this.command==this.command.toLowerCase()};this.getToken=function(){this.i+=1;return this.tokens[this.i]};this.getScalar=function(){return parseFloat(this.getToken())};this.nextCommand=function(){this.previousCommand=this.command;this.command=this.getToken()};this.getPoint=function(){return this.makeAbsolute(new a.Point(this.getScalar(),this.getScalar()))};this.getAsControlPoint=function(){var b=this.getPoint(); +return this.control=b};this.getAsCurrentPoint=function(){var b=this.getPoint();return this.current=b};this.getReflectedControlPoint=function(){return this.previousCommand.toLowerCase()!="c"&&this.previousCommand.toLowerCase()!="s"?this.current:new a.Point(2*this.current.x-this.control.x,2*this.current.y-this.control.y)};this.makeAbsolute=function(b){if(this.isRelativeCommand())b.x=this.current.x+b.x,b.y=this.current.y+b.y;return b};this.addMarker=function(b,a,d){d!=null&&this.angles.length>0&&this.angles[this.angles.length- +1]==null&&(this.angles[this.angles.length-1]=this.points[this.points.length-1].angleTo(d));this.addMarkerAngle(b,a==null?null:a.angleTo(b))};this.addMarkerAngle=function(b,a){this.points.push(b);this.angles.push(a)};this.getMarkerPoints=function(){return this.points};this.getMarkerAngles=function(){for(var b=0;b1&&(h*=Math.sqrt(q),l*=Math.sqrt(q));o=(o==j?-1:1)*Math.sqrt((Math.pow(h,2)*Math.pow(l,2)-Math.pow(h,2)*Math.pow(n.y,2)-Math.pow(l,2)*Math.pow(n.x,2))/(Math.pow(h,2)*Math.pow(n.y,2)+Math.pow(l,2)*Math.pow(n.x,2)));isNaN(o)&&(o=0);var p=new a.Point(o*h*n.y/l,o*-l*n.x/h),g=new a.Point((g.x+e.x)/2+Math.cos(f)* +p.x-Math.sin(f)*p.y,(g.y+e.y)/2+Math.sin(f)*p.x+Math.cos(f)*p.y),m=function(b,a){return(b[0]*a[0]+b[1]*a[1])/(Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2))*Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)))},s=function(b,a){return(b[0]*a[1]=1&&(n=0);j==0&&n>0&&(n-=2*Math.PI);j==1&&n<0&&(n+=2*Math.PI);q=new a.Point(g.x-h*Math.cos((o+n)/ +2),g.y-l*Math.sin((o+n)/2));b.addMarkerAngle(q,(o+n)/2+(j==0?1:-1)*Math.PI/2);b.addMarkerAngle(e,n+(j==0?1:-1)*Math.PI/2);c.addPoint(e.x,e.y);d!=null&&(m=h>l?h:l,e=h>l?1:h/l,h=h>l?l/h:1,d.translate(g.x,g.y),d.rotate(f),d.scale(e,h),d.arc(0,0,m,o,o+n,1-j),d.scale(1/e,1/h),d.rotate(-f),d.translate(-g.x,-g.y))}break;case "Z":d!=null&&d.closePath(),b.current=b.start}return c};this.getMarkers=function(){for(var a=this.PathParser.getMarkerPoints(),b=this.PathParser.getMarkerAngles(),c=[],e=0;ethis.maxDuration)if(this.attribute("repeatCount").value=="indefinite")this.duration=0;else return this.attribute("fill").valueOrDefault("remove")=="remove"&&!this.removed?(this.removed=!0,this.getProperty().value=this.initialValue,!0):!1;this.duration+=a;a=!1;if(this.begin0&&b[c-1]!=" "&&c0&&b[c-1]!=" "&&(c==b.length-1||b[c+1]==" "))g="initial";typeof a.glyphs[e]!="undefined"&&(f=a.glyphs[e][g],f==null&&a.glyphs[e].type=="glyph"&&(f=a.glyphs[e]))}else f=a.glyphs[e];if(f==null)f=a.missingGlyph;return f};this.renderChildren=function(c){var b=this.parent.style("font-family").Definition.getDefinition();if(b!=null){var k=this.parent.style("font-size").numValueOrDefault(a.Font.Parse(a.ctx.font).fontSize), +e=this.parent.style("font-style").valueOrDefault(a.Font.Parse(a.ctx.font).fontStyle),f=this.getText();b.isRTL&&(f=f.split("").reverse().join(""));for(var g=a.ToNumberArray(this.parent.attribute("dx").value),j=0;j0?c.childNodes[0].nodeValue:c.text;this.getText=function(){return this.text}};a.Element.tspan.prototype=new a.Element.TextElementBase;a.Element.tref=function(c){this.base=a.Element.TextElementBase;this.base(c);this.getText=function(){var a=this.attribute("xlink:href").Definition.getDefinition();if(a!=null)return a.children[0].getText()}};a.Element.tref.prototype=new a.Element.TextElementBase; +a.Element.a=function(c){this.base=a.Element.TextElementBase;this.base(c);this.hasText=!0;for(var d=0;d1?c.childNodes[1].nodeValue: +""),c=c.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,""),c=a.compressSpaces(c),c=c.split("}"),d=0;d0){l=g[j].indexOf("url");h=g[j].indexOf(")",l);l=g[j].substr(l+5,h-l-6);l=a.parseXml(a.ajax(l)).getElementsByTagName("font");for(h=0;h + * @link http://www.phpied.com/rgb-color-parser-in-javascript/ + * Use it if you like it + * + */ +function RGBColor(color_string) +{ + this.ok = false; + + // strip any leading # + if (color_string.charAt(0) == '#') { // remove # if any + color_string = color_string.substr(1,6); + } + + color_string = color_string.replace(/ /g,''); + color_string = color_string.toLowerCase(); + + // before getting into regexps, try simple matches + // and overwrite the input + var simple_colors = { + aliceblue: 'f0f8ff', + antiquewhite: 'faebd7', + aqua: '00ffff', + aquamarine: '7fffd4', + azure: 'f0ffff', + beige: 'f5f5dc', + bisque: 'ffe4c4', + black: '000000', + blanchedalmond: 'ffebcd', + blue: '0000ff', + blueviolet: '8a2be2', + brown: 'a52a2a', + burlywood: 'deb887', + cadetblue: '5f9ea0', + chartreuse: '7fff00', + chocolate: 'd2691e', + coral: 'ff7f50', + cornflowerblue: '6495ed', + cornsilk: 'fff8dc', + crimson: 'dc143c', + cyan: '00ffff', + darkblue: '00008b', + darkcyan: '008b8b', + darkgoldenrod: 'b8860b', + darkgray: 'a9a9a9', + darkgreen: '006400', + darkkhaki: 'bdb76b', + darkmagenta: '8b008b', + darkolivegreen: '556b2f', + darkorange: 'ff8c00', + darkorchid: '9932cc', + darkred: '8b0000', + darksalmon: 'e9967a', + darkseagreen: '8fbc8f', + darkslateblue: '483d8b', + darkslategray: '2f4f4f', + darkturquoise: '00ced1', + darkviolet: '9400d3', + deeppink: 'ff1493', + deepskyblue: '00bfff', + dimgray: '696969', + dodgerblue: '1e90ff', + feldspar: 'd19275', + firebrick: 'b22222', + floralwhite: 'fffaf0', + forestgreen: '228b22', + fuchsia: 'ff00ff', + gainsboro: 'dcdcdc', + ghostwhite: 'f8f8ff', + gold: 'ffd700', + goldenrod: 'daa520', + gray: '808080', + green: '008000', + greenyellow: 'adff2f', + honeydew: 'f0fff0', + hotpink: 'ff69b4', + indianred : 'cd5c5c', + indigo : '4b0082', + ivory: 'fffff0', + khaki: 'f0e68c', + lavender: 'e6e6fa', + lavenderblush: 'fff0f5', + lawngreen: '7cfc00', + lemonchiffon: 'fffacd', + lightblue: 'add8e6', + lightcoral: 'f08080', + lightcyan: 'e0ffff', + lightgoldenrodyellow: 'fafad2', + lightgrey: 'd3d3d3', + lightgreen: '90ee90', + lightpink: 'ffb6c1', + lightsalmon: 'ffa07a', + lightseagreen: '20b2aa', + lightskyblue: '87cefa', + lightslateblue: '8470ff', + lightslategray: '778899', + lightsteelblue: 'b0c4de', + lightyellow: 'ffffe0', + lime: '00ff00', + limegreen: '32cd32', + linen: 'faf0e6', + magenta: 'ff00ff', + maroon: '800000', + mediumaquamarine: '66cdaa', + mediumblue: '0000cd', + mediumorchid: 'ba55d3', + mediumpurple: '9370d8', + mediumseagreen: '3cb371', + mediumslateblue: '7b68ee', + mediumspringgreen: '00fa9a', + mediumturquoise: '48d1cc', + mediumvioletred: 'c71585', + midnightblue: '191970', + mintcream: 'f5fffa', + mistyrose: 'ffe4e1', + moccasin: 'ffe4b5', + navajowhite: 'ffdead', + navy: '000080', + oldlace: 'fdf5e6', + olive: '808000', + olivedrab: '6b8e23', + orange: 'ffa500', + orangered: 'ff4500', + orchid: 'da70d6', + palegoldenrod: 'eee8aa', + palegreen: '98fb98', + paleturquoise: 'afeeee', + palevioletred: 'd87093', + papayawhip: 'ffefd5', + peachpuff: 'ffdab9', + peru: 'cd853f', + pink: 'ffc0cb', + plum: 'dda0dd', + powderblue: 'b0e0e6', + purple: '800080', + red: 'ff0000', + rosybrown: 'bc8f8f', + royalblue: '4169e1', + saddlebrown: '8b4513', + salmon: 'fa8072', + sandybrown: 'f4a460', + seagreen: '2e8b57', + seashell: 'fff5ee', + sienna: 'a0522d', + silver: 'c0c0c0', + skyblue: '87ceeb', + slateblue: '6a5acd', + slategray: '708090', + snow: 'fffafa', + springgreen: '00ff7f', + steelblue: '4682b4', + tan: 'd2b48c', + teal: '008080', + thistle: 'd8bfd8', + tomato: 'ff6347', + turquoise: '40e0d0', + violet: 'ee82ee', + violetred: 'd02090', + wheat: 'f5deb3', + white: 'ffffff', + whitesmoke: 'f5f5f5', + yellow: 'ffff00', + yellowgreen: '9acd32' + }; + for (var key in simple_colors) { + if (color_string == key) { + color_string = simple_colors[key]; + } + } + // emd of simple type-in colors + + // array of color definition objects + var color_defs = [ + { + re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, + example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'], + process: function (bits){ + return [ + parseInt(bits[1]), + parseInt(bits[2]), + parseInt(bits[3]) + ]; + } + }, + { + re: /^(\w{2})(\w{2})(\w{2})$/, + example: ['#00ff00', '336699'], + process: function (bits){ + return [ + parseInt(bits[1], 16), + parseInt(bits[2], 16), + parseInt(bits[3], 16) + ]; + } + }, + { + re: /^(\w{1})(\w{1})(\w{1})$/, + example: ['#fb0', 'f0f'], + process: function (bits){ + return [ + parseInt(bits[1] + bits[1], 16), + parseInt(bits[2] + bits[2], 16), + parseInt(bits[3] + bits[3], 16) + ]; + } + } + ]; + + // search through the definitions to find a match + for (var i = 0; i < color_defs.length; i++) { + var re = color_defs[i].re; + var processor = color_defs[i].process; + var bits = re.exec(color_string); + if (bits) { + channels = processor(bits); + this.r = channels[0]; + this.g = channels[1]; + this.b = channels[2]; + this.ok = true; + } + + } + + // validate/cleanup values + this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r); + this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g); + this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b); + + // some getters + this.toRGB = function () { + return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')'; + } + this.toHex = function () { + var r = this.r.toString(16); + var g = this.g.toString(16); + var b = this.b.toString(16); + if (r.length == 1) r = '0' + r; + if (g.length == 1) g = '0' + g; + if (b.length == 1) b = '0' + b; + return '#' + r + g + b; + } + + // help + this.getHelpXML = function () { + + var examples = new Array(); + // add regexps + for (var i = 0; i < color_defs.length; i++) { + var example = color_defs[i].example; + for (var j = 0; j < example.length; j++) { + examples[examples.length] = example[j]; + } + } + // add type-in colors + for (var sc in simple_colors) { + examples[examples.length] = sc; + } + + var xml = document.createElement('ul'); + xml.setAttribute('id', 'rgbcolor-examples'); + for (var i = 0; i < examples.length; i++) { + try { + var list_item = document.createElement('li'); + var list_color = new RGBColor(examples[i]); + var example_div = document.createElement('div'); + example_div.style.cssText = + 'margin: 3px; ' + + 'border: 1px solid black; ' + + 'background:' + list_color.toHex() + '; ' + + 'color:' + list_color.toHex() + ; + example_div.appendChild(document.createTextNode('test')); + var list_item_value = document.createTextNode( + ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex() + ); + list_item.appendChild(example_div); + list_item.appendChild(list_item_value); + xml.appendChild(list_item); + + } catch(e){} + } + return xml; + + } + +} + +/** + * @license canvg.js - Javascript SVG parser and renderer on Canvas + * MIT Licensed + * Gabe Lerner (gabelerner@gmail.com) + * http://code.google.com/p/canvg/ + * + * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/ + * + */ +if(!window.console) { + window.console = {}; + window.console.log = function(str) {}; + window.console.dir = function(str) {}; +} + +if(!Array.prototype.indexOf){ + Array.prototype.indexOf = function(obj){ + for(var i=0; i ignore mouse events + // ignoreAnimation: true => ignore animations + // ignoreDimensions: true => does not try to resize canvas + // ignoreClear: true => does not clear canvas + // offsetX: int => draws at a x offset + // offsetY: int => draws at a y offset + // scaleWidth: int => scales horizontally to width + // scaleHeight: int => scales vertically to height + // renderCallback: function => will call the function after the first render is completed + // forceRedraw: function => will call the function on every frame, if it returns true, will redraw + this.canvg = function (target, s, opts) { + // no parameters + if (target == null && s == null && opts == null) { + var svgTags = document.getElementsByTagName('svg'); + for (var i=0; i]*>/, ''); + var xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); + xmlDoc.async = 'false'; + xmlDoc.loadXML(xml); + return xmlDoc; + } + } + + svg.Property = function(name, value) { + this.name = name; + this.value = value; + + this.hasValue = function() { + return (this.value != null && this.value !== ''); + } + + // return the numerical value of the property + this.numValue = function() { + if (!this.hasValue()) return 0; + + var n = parseFloat(this.value); + if ((this.value + '').match(/%$/)) { + n = n / 100.0; + } + return n; + } + + this.valueOrDefault = function(def) { + if (this.hasValue()) return this.value; + return def; + } + + this.numValueOrDefault = function(def) { + if (this.hasValue()) return this.numValue(); + return def; + } + + /* EXTENSIONS */ + var that = this; + + // color extensions + this.Color = { + // augment the current color value with the opacity + addOpacity: function(opacity) { + var newValue = that.value; + if (opacity != null && opacity != '') { + var color = new RGBColor(that.value); + if (color.ok) { + newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacity + ')'; + } + } + return new svg.Property(that.name, newValue); + } + } + + // definition extensions + this.Definition = { + // get the definition from the definitions table + getDefinition: function() { + var name = that.value.replace(/^(url\()?#([^\)]+)\)?$/, '$2'); + return svg.Definitions[name]; + }, + + isUrl: function() { + return that.value.indexOf('url(') == 0 + }, + + getFillStyle: function(e) { + var def = this.getDefinition(); + + // gradient + if (def != null && def.createGradient) { + return def.createGradient(svg.ctx, e); + } + + // pattern + if (def != null && def.createPattern) { + return def.createPattern(svg.ctx, e); + } + + return null; + } + } + + // length extensions + this.Length = { + DPI: function(viewPort) { + return 96.0; // TODO: compute? + }, + + EM: function(viewPort) { + var em = 12; + + var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize); + if (fontSize.hasValue()) em = fontSize.Length.toPixels(viewPort); + + return em; + }, + + // get the length as pixels + toPixels: function(viewPort) { + if (!that.hasValue()) return 0; + var s = that.value+''; + if (s.match(/em$/)) return that.numValue() * this.EM(viewPort); + if (s.match(/ex$/)) return that.numValue() * this.EM(viewPort) / 2.0; + if (s.match(/px$/)) return that.numValue(); + if (s.match(/pt$/)) return that.numValue() * 1.25; + if (s.match(/pc$/)) return that.numValue() * 15; + if (s.match(/cm$/)) return that.numValue() * this.DPI(viewPort) / 2.54; + if (s.match(/mm$/)) return that.numValue() * this.DPI(viewPort) / 25.4; + if (s.match(/in$/)) return that.numValue() * this.DPI(viewPort); + if (s.match(/%$/)) return that.numValue() * svg.ViewPort.ComputeSize(viewPort); + return that.numValue(); + } + } + + // time extensions + this.Time = { + // get the time as milliseconds + toMilliseconds: function() { + if (!that.hasValue()) return 0; + var s = that.value+''; + if (s.match(/s$/)) return that.numValue() * 1000; + if (s.match(/ms$/)) return that.numValue(); + return that.numValue(); + } + } + + // angle extensions + this.Angle = { + // get the angle as radians + toRadians: function() { + if (!that.hasValue()) return 0; + var s = that.value+''; + if (s.match(/deg$/)) return that.numValue() * (Math.PI / 180.0); + if (s.match(/grad$/)) return that.numValue() * (Math.PI / 200.0); + if (s.match(/rad$/)) return that.numValue(); + return that.numValue() * (Math.PI / 180.0); + } + } + } + + // fonts + svg.Font = new (function() { + this.Styles = ['normal','italic','oblique','inherit']; + this.Variants = ['normal','small-caps','inherit']; + this.Weights = ['normal','bold','bolder','lighter','100','200','300','400','500','600','700','800','900','inherit']; + + this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { + var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font); + return { + fontFamily: fontFamily || f.fontFamily, + fontSize: fontSize || f.fontSize, + fontStyle: fontStyle || f.fontStyle, + fontWeight: fontWeight || f.fontWeight, + fontVariant: fontVariant || f.fontVariant, + toString: function () { return [this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily].join(' ') } + } + } + + var that = this; + this.Parse = function(s) { + var f = {}; + var d = svg.trim(svg.compressSpaces(s || '')).split(' '); + var set = { fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false } + var ff = ''; + for (var i=0; i this.x2) this.x2 = x; + } + + if (y != null) { + if (isNaN(this.y1) || isNaN(this.y2)) { + this.y1 = y; + this.y2 = y; + } + if (y < this.y1) this.y1 = y; + if (y > this.y2) this.y2 = y; + } + } + this.addX = function(x) { this.addPoint(x, null); } + this.addY = function(y) { this.addPoint(null, y); } + + this.addBoundingBox = function(bb) { + this.addPoint(bb.x1, bb.y1); + this.addPoint(bb.x2, bb.y2); + } + + this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) { + var cp1x = p0x + 2/3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0) + var cp1y = p0y + 2/3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0) + var cp2x = cp1x + 1/3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0) + var cp2y = cp1y + 1/3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0) + this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y); + } + + this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y]; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + + for (i=0; i<=1; i++) { + var f = function(t) { + return Math.pow(1-t, 3) * p0[i] + + 3 * Math.pow(1-t, 2) * t * p1[i] + + 3 * (1-t) * Math.pow(t, 2) * p2[i] + + Math.pow(t, 3) * p3[i]; + } + + var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + var c = 3 * p1[i] - 3 * p0[i]; + + if (a == 0) { + if (b == 0) continue; + var t = -c / b; + if (0 < t && t < 1) { + if (i == 0) this.addX(f(t)); + if (i == 1) this.addY(f(t)); + } + continue; + } + + var b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) continue; + var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + if (0 < t1 && t1 < 1) { + if (i == 0) this.addX(f(t1)); + if (i == 1) this.addY(f(t1)); + } + var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + if (0 < t2 && t2 < 1) { + if (i == 0) this.addX(f(t2)); + if (i == 1) this.addY(f(t2)); + } + } + } + + this.isPointInBox = function(x, y) { + return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2); + } + + this.addPoint(x1, y1); + this.addPoint(x2, y2); + } + + // transforms + svg.Transform = function(v) { + var that = this; + this.Type = {} + + // translate + this.Type.translate = function(s) { + this.p = svg.CreatePoint(s); + this.apply = function(ctx) { + ctx.translate(this.p.x || 0.0, this.p.y || 0.0); + } + this.applyToPoint = function(p) { + p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]); + } + } + + // rotate + this.Type.rotate = function(s) { + var a = svg.ToNumberArray(s); + this.angle = new svg.Property('angle', a[0]); + this.cx = a[1] || 0; + this.cy = a[2] || 0; + this.apply = function(ctx) { + ctx.translate(this.cx, this.cy); + ctx.rotate(this.angle.Angle.toRadians()); + ctx.translate(-this.cx, -this.cy); + } + this.applyToPoint = function(p) { + var a = this.angle.Angle.toRadians(); + p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]); + p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]); + p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]); + } + } + + this.Type.scale = function(s) { + this.p = svg.CreatePoint(s); + this.apply = function(ctx) { + ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0); + } + this.applyToPoint = function(p) { + p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]); + } + } + + this.Type.matrix = function(s) { + this.m = svg.ToNumberArray(s); + this.apply = function(ctx) { + ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]); + } + this.applyToPoint = function(p) { + p.applyTransform(this.m); + } + } + + this.Type.SkewBase = function(s) { + this.base = that.Type.matrix; + this.base(s); + this.angle = new svg.Property('angle', s); + } + this.Type.SkewBase.prototype = new this.Type.matrix; + + this.Type.skewX = function(s) { + this.base = that.Type.SkewBase; + this.base(s); + this.m = [1, 0, Math.tan(this.angle.Angle.toRadians()), 1, 0, 0]; + } + this.Type.skewX.prototype = new this.Type.SkewBase; + + this.Type.skewY = function(s) { + this.base = that.Type.SkewBase; + this.base(s); + this.m = [1, Math.tan(this.angle.Angle.toRadians()), 0, 1, 0, 0]; + } + this.Type.skewY.prototype = new this.Type.SkewBase; + + this.transforms = []; + + this.apply = function(ctx) { + for (var i=0; i= this.tokens.length - 1; + } + + this.isCommandOrEnd = function() { + if (this.isEnd()) return true; + return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null; + } + + this.isRelativeCommand = function() { + return this.command == this.command.toLowerCase(); + } + + this.getToken = function() { + this.i = this.i + 1; + return this.tokens[this.i]; + } + + this.getScalar = function() { + return parseFloat(this.getToken()); + } + + this.nextCommand = function() { + this.previousCommand = this.command; + this.command = this.getToken(); + } + + this.getPoint = function() { + var p = new svg.Point(this.getScalar(), this.getScalar()); + return this.makeAbsolute(p); + } + + this.getAsControlPoint = function() { + var p = this.getPoint(); + this.control = p; + return p; + } + + this.getAsCurrentPoint = function() { + var p = this.getPoint(); + this.current = p; + return p; + } + + this.getReflectedControlPoint = function() { + if (this.previousCommand.toLowerCase() != 'c' && this.previousCommand.toLowerCase() != 's') { + return this.current; + } + + // reflect point + var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y); + return p; + } + + this.makeAbsolute = function(p) { + if (this.isRelativeCommand()) { + p.x = this.current.x + p.x; + p.y = this.current.y + p.y; + } + return p; + } + + this.addMarker = function(p, from, priorTo) { + // if the last angle isn't filled in because we didn't have this point yet ... + if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length-1] == null) { + this.angles[this.angles.length-1] = this.points[this.points.length-1].angleTo(priorTo); + } + this.addMarkerAngle(p, from == null ? null : from.angleTo(p)); + } + + this.addMarkerAngle = function(p, a) { + this.points.push(p); + this.angles.push(a); + } + + this.getMarkerPoints = function() { return this.points; } + this.getMarkerAngles = function() { + for (var i=0; i 1) { + rx *= Math.sqrt(l); + ry *= Math.sqrt(l); + } + // cx', cy' + var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt( + ((Math.pow(rx,2)*Math.pow(ry,2))-(Math.pow(rx,2)*Math.pow(currp.y,2))-(Math.pow(ry,2)*Math.pow(currp.x,2))) / + (Math.pow(rx,2)*Math.pow(currp.y,2)+Math.pow(ry,2)*Math.pow(currp.x,2)) + ); + if (isNaN(s)) s = 0; + var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); + // cx, cy + var centp = new svg.Point( + (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, + (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y + ); + // vector magnitude + var m = function(v) { return Math.sqrt(Math.pow(v[0],2) + Math.pow(v[1],2)); } + // ratio between two vectors + var r = function(u, v) { return (u[0]*v[0]+u[1]*v[1]) / (m(u)*m(v)) } + // angle between two vectors + var a = function(u, v) { return (u[0]*v[1] < u[1]*v[0] ? -1 : 1) * Math.acos(r(u,v)); } + // initial angle + var a1 = a([1,0], [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]); + // angle delta + var u = [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]; + var v = [(-currp.x-cpp.x)/rx,(-currp.y-cpp.y)/ry]; + var ad = a(u, v); + if (r(u,v) <= -1) ad = Math.PI; + if (r(u,v) >= 1) ad = 0; + + if (sweepFlag == 0 && ad > 0) ad = ad - 2 * Math.PI; + if (sweepFlag == 1 && ad < 0) ad = ad + 2 * Math.PI; + + // for markers + var halfWay = new svg.Point( + centp.x - rx * Math.cos((a1 + ad) / 2), + centp.y - ry * Math.sin((a1 + ad) / 2) + ); + pp.addMarkerAngle(halfWay, (a1 + ad) / 2 + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2); + pp.addMarkerAngle(cp, ad + (sweepFlag == 0 ? 1 : -1) * Math.PI / 2); + + bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better + if (ctx != null) { + var r = rx > ry ? rx : ry; + var sx = rx > ry ? 1 : rx / ry; + var sy = rx > ry ? ry / rx : 1; + + ctx.translate(centp.x, centp.y); + ctx.rotate(xAxisRotation); + ctx.scale(sx, sy); + ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag); + ctx.scale(1/sx, 1/sy); + ctx.rotate(-xAxisRotation); + ctx.translate(-centp.x, -centp.y); + } + } + break; + case 'Z': + if (ctx != null) ctx.closePath(); + pp.current = pp.start; + } + } + + return bb; + } + + this.getMarkers = function() { + var points = this.PathParser.getMarkerPoints(); + var angles = this.PathParser.getMarkerAngles(); + + var markers = []; + for (var i=0; i this.maxDuration) { + // loop for indefinitely repeating animations + if (this.attribute('repeatCount').value == 'indefinite') { + this.duration = 0.0 + } + else if (this.attribute('fill').valueOrDefault('remove') == 'remove' && !this.removed) { + this.removed = true; + this.getProperty().value = this.initialValue; + return true; + } + else { + return false; // no updates made + } + } + this.duration = this.duration + delta; + + // if we're past the begin time + var updated = false; + if (this.begin < this.duration) { + var newValue = this.calcValue(); // tween + + if (this.attribute('type').hasValue()) { + // for transform, etc. + var type = this.attribute('type').value; + newValue = type + '(' + newValue + ')'; + } + + this.getProperty().value = newValue; + updated = true; + } + + return updated; + } + + // fraction of duration we've covered + this.progress = function() { + return ((this.duration - this.begin) / (this.maxDuration - this.begin)); + } + } + svg.Element.AnimateBase.prototype = new svg.Element.ElementBase; + + // animate element + svg.Element.animate = function(node) { + this.base = svg.Element.AnimateBase; + this.base(node); + + this.calcValue = function() { + var from = this.attribute('from').numValue(); + var to = this.attribute('to').numValue(); + + // tween value linearly + return from + (to - from) * this.progress(); + }; + } + svg.Element.animate.prototype = new svg.Element.AnimateBase; + + // animate color element + svg.Element.animateColor = function(node) { + this.base = svg.Element.AnimateBase; + this.base(node); + + this.calcValue = function() { + var from = new RGBColor(this.attribute('from').value); + var to = new RGBColor(this.attribute('to').value); + + if (from.ok && to.ok) { + // tween color linearly + var r = from.r + (to.r - from.r) * this.progress(); + var g = from.g + (to.g - from.g) * this.progress(); + var b = from.b + (to.b - from.b) * this.progress(); + return 'rgb('+parseInt(r,10)+','+parseInt(g,10)+','+parseInt(b,10)+')'; + } + return this.attribute('from').value; + }; + } + svg.Element.animateColor.prototype = new svg.Element.AnimateBase; + + // animate transform element + svg.Element.animateTransform = function(node) { + this.base = svg.Element.animate; + this.base(node); + } + svg.Element.animateTransform.prototype = new svg.Element.animate; + + // font element + svg.Element.font = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + + this.horizAdvX = this.attribute('horiz-adv-x').numValue(); + + this.isRTL = false; + this.isArabic = false; + this.fontFace = null; + this.missingGlyph = null; + this.glyphs = []; + for (var i=0; i0 && text[i-1]!=' ' && i0 && text[i-1]!=' ' && (i == text.length-1 || text[i+1]==' ')) arabicForm = 'initial'; + if (typeof(font.glyphs[c]) != 'undefined') { + glyph = font.glyphs[c][arabicForm]; + if (glyph == null && font.glyphs[c].type == 'glyph') glyph = font.glyphs[c]; + } + } + else { + glyph = font.glyphs[c]; + } + if (glyph == null) glyph = font.missingGlyph; + return glyph; + } + + this.renderChildren = function(ctx) { + var customFont = this.parent.style('font-family').Definition.getDefinition(); + if (customFont != null) { + var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); + var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle); + var text = this.getText(); + if (customFont.isRTL) text = text.split("").reverse().join(""); + + var dx = svg.ToNumberArray(this.parent.attribute('dx').value); + for (var i=0; i 0 ? node.childNodes[0].nodeValue : // element + node.text; + this.getText = function() { + return this.text; + } + } + svg.Element.tspan.prototype = new svg.Element.TextElementBase; + + // tref + svg.Element.tref = function(node) { + this.base = svg.Element.TextElementBase; + this.base(node); + + this.getText = function() { + var element = this.attribute('xlink:href').Definition.getDefinition(); + if (element != null) return element.children[0].getText(); + } + } + svg.Element.tref.prototype = new svg.Element.TextElementBase; + + // a element + svg.Element.a = function(node) { + this.base = svg.Element.TextElementBase; + this.base(node); + + this.hasText = true; + for (var i=0; i 1 ? node.childNodes[1].nodeValue : ''); + css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ''); // remove comments + css = svg.compressSpaces(css); // replace whitespace + var cssDefs = css.split('}'); + for (var i=0; i 0) { + var urlStart = srcs[s].indexOf('url'); + var urlEnd = srcs[s].indexOf(')', urlStart); + var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6); + var doc = svg.parseXml(svg.ajax(url)); + var fonts = doc.getElementsByTagName('font'); + for (var f=0; f
    Sticker:'); + if (stIdx == -1 || d.stickers) break; + var stickers = d.value.substr(stIdx + 12, d.value.length - (stIdx + 27)).split(','); + d.stickers = []; + for (var i2 = 0; i2 < stickers.length; i2++) { + d.stickers.push({name: stickers[i2].trim()}); + if (g_strCountryCode === undefined) { + var g_strCountryCode = 1; + } + + var stickerLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=730&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Sticker | ' + stickers[i2].trim(); + if (cachePrices[stickerLink]) { + d.stickers[i2].prices = cachePrices[stickerLink]; + if (sItem === g_ActiveInventory.selectedItem) { + reloadDes(); + } + } else { + PriceQueue.GetPrice({ + method: "GET", + url: stickerLink, + pars: {stickeridx: i2}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.stickers[$this.stickeridx].prices = {lowestPrice: lp, nofeePrice: nfp};// cachePrices[this.url]; + + if (sItem === hItem) { + var elDescriptors = $(pref + '_item_descriptors'); + PopulateDescriptions(elDescriptors, sItem.descriptions); + } + } + }, + error: function () {} + }); + } + } + + } + } + } + + if (sItem.lowestPrice) { + //var ddHtml = "" + sItem.lowestPrice; + //if (sItem.volume) { + // ddHtml += ' (V: ' + sItem.volume + ')'; + //} + + //ddHtml += "" + //if (mediumPrice && sItem.market_hash_name !== mediumName) { + // var price = parseFloat(getNumber(sItem.lowestPrice)), + // mprice = parseFloat(getNumber(mediumPrice)), + // eq = (price / mprice).toFixed(2); + // ddHtml += ' (' + eq + ' ' + mediumName + ')'; + //} + + //$J('#' + pref + 'iprice').html(ddHtml); + //$J('#' + pref + 'iprice').find('a').attr('href', itemLink); + PriceQueue.GenPriceDescription(sItem); + if (sItem === hItem) { + var elDescriptors = $(pref + '_item_descriptors'); + PopulateDescriptions(elDescriptors, sItem.descriptions); + } + if (UpdateTotal) UpdateTotal(sItem); + if (callback) callback(sItem); + return; + } + + //if (!sItem.marketable) { + // $J('#iprice').html("Not Marketable"); + // return; + //} + + PriceQueue.GetPrice({ + method: "GET", + url: itemLink, + insert: true, + success: function (response) { + if (response.success) { + sItem.lowestPrice = response.lowest_price || 'Can\'t get price'; + sItem.nofeePrice = response.median_price || 'Can\'t get price'; + sItem.volume = response.volume || ''; + sItem.providerName = response.providerName || ''; + + PriceQueue.GenPriceDescription(sItem); + + if (sItem === hItem) { + var elDescriptors = $(pref + '_item_descriptors'); + PopulateDescriptions(elDescriptors, sItem.descriptions); + } + //var ddHtml = "" + sItem.lowestPrice; + //if (sItem.volume) { + // ddHtml += ' (V: ' + sItem.volume + ')'; + //} + + //ddHtml += "" + //if (mediumPrice && sItem.market_hash_name !== mediumName) { + // var price = parseFloat(getNumber(sItem.lowestPrice)), + // mprice = parseFloat(getNumber(mediumPrice)), + // eq = (price / mprice).toFixed(2); + // ddHtml += ' (' + eq + ' ' + mediumName + ')'; + //} + //$J('#' + pref + 'iprice').html(ddHtml); + //$J('#' + pref + 'iprice').find('a').attr('href', itemLink); + } else { + sItem.lowestPrice = 'Fail'; + sItem.nofeePrice = 'Fail'; + PriceQueue.GenPriceDescription(sItem); + + //if (sItem === hItem) { + // var ddHtml = "" + sItem.lowestPrice + ""; + // $J('#' + pref + 'iprice').html(ddHtml); + // $J('#' + pref + 'iprice').find('a').attr('href', itemLink); + //} + } + + if (UpdateTotal) { + UpdateTotal(sItem); + } + if (callback) { + callback(sItem); + } + }, + error: function (response) { + if (!response.success) { + cachePrices[itemLink] = new Object(); + cachePrices[itemLink].lowestPrice = sItem.lowestPrice = 'Fail'; + cachePrices[itemLink].nofeePrice = sItem.nofeePrice = 'Fail'; + + if (sItem === hItem) { + $J('#' + pref + 'iprice').html("" + sItem.lowestPrice + ""); + $J('#' + pref + 'iprice').find('a').attr('href', itemLink); + } + } + if (UpdateTotal) UpdateTotal(sItem); + if (callback) callback(sItem); + } + }); +}; + +var clearCachePrices = function () { + cachePrices = {}; +}; + +var ModifyDescriptionFunction = function () { + PopulateDescriptions = function (elDescriptions, rgDescriptions) { + if (elDescriptions) { + elDescriptions.update(''); + } else { + return; + } + + if (!rgDescriptions || !rgDescriptions.length) { + elDescriptions.hide(); + return; + } + + elDescriptions.show(); + var setEl = null; + var setName = null; + var totalPrice = 0; + var missingParts = []; + for (var i = 0; i < rgDescriptions.length; i++) { + var description = rgDescriptions[i]; + if (!description.value) continue; + + var strParsedDescription = v_trim(description.value.replace(/\[date\](\d*)\[\/date\]/g, function (match, p1) { + var date = new Date(p1 * 1000); + return date.toLocaleString(); + })); + + var elDescription = new Element('div', {'class': 'descriptor'}); + if (description.color) { + elDescription.style.color = '#' + description.color; + } + + // just use a blank space for an empty string + if (strParsedDescription.length == 0) { + elDescription.update(' '); + } else if (description.type == 'image') { + var elImage = new Element('img', {src: v_trim(description.value)}); + elDescription.appendChild(elImage); + } else if (description.type == 'html') { + var html = strParsedDescription; + if (description.app_data && !description.app_data.limited && !description.app_data.is_itemset_name) { + var item = {}; + if (description.app_data.price) { + var pp = getNumber(description.app_data.price); + item.price = pp; + item.link = window.location.protocol + '//steamcommunity.com/market/listings/' + g_ActiveInventory.appid + '/' + encodeURIComponent(description.app_data.market_hash_name); + item.name = strParsedDescription; + item.market_hash_name = description.app_data.market_hash_name; + totalPrice += parseFloat(pp); + html = '' + html + ' (' + description.app_data.price + ')'; + } + + if (description.isinset) { + if (description.app_data.owned) { + html = '✓ ' + html; + } else { + html = '✗  ' + html; + if (description.app_data.price) { + missingParts.push(item); + } + } + } + } + if (description.isstickers) { + html = html.substr(0, html.indexOf('
    Sticker:') + 12); + for (var k = 0; k < description.stickers.length; k++) { + var sticker = description.stickers[k]; + if (k) html += ', '; + html += sticker.name; + if (sticker.prices && sticker.prices.lowestPrice) { + html += ' - ' + sticker.prices.lowestPrice + '' + } + } + html += '
    '; + } + + if (description.insgems && description.insgems.length) { + if (!description.orgvalue) { + description.orgvalue = description.value; + } else { + description.value = description.orgvalue; + } + + var regexgem = /([\w\s]+)<\/span>/gi; + for (var j = 0; j < description.insgems.length; j++) { + var m = regexgem.exec(description.orgvalue); + var ggem = description.insgems[j]; + var gemLink = window.location.protocol + '//steamcommunity.com/market/listings/570/' + ggem.name; + if (ggem.lowestPrice) { + description.value = description.value.replace(m[0], '' + m[1] + ' (' + ggem.lowestPrice + ')') + } else { + description.value = description.value.replace(m[0], '' + m[1] + '') + } + } + //console.log(description.insgems); + html = description.value; + } + + elDescription.update(html); + + } else { + elDescription.update(strParsedDescription.replace(/\n/g, '
    ')); + } + + if (description.app_data && description.app_data.is_itemset_name) { + setEl = elDescription; + setName = description.value; + } + + if (description.label) { + var elLabel = new Element('span', {'class': 'descriptor_label'}); + elLabel.update(description.label + ': '); + elDescription.insert({top: elLabel}); + } + + elDescriptions.appendChild(elDescription); + } + //console.log(totalPrice); + if (setEl && totalPrice > 0) { + //var totalStr = (Math.round(totalPrice * 100) / 100) + ''; + //if (totalStr.lastIndexOf('.') == -1) totalStr += '.00'; + //totalStr = totalStr.replace(/(\d)(\d{3})([,\.])/, '$1,$2$3'); + setEl.update(setName + ' (' + formatNumber(totalPrice) + ')'); + + if (missingParts.length > 0 && g_bViewingOwnProfile && g_bMarketAllowed && buysetbuttons && !elDescriptions.id.startsWith('hover')) { + var buySetBtn = $J('' + SIHLang.buymissing + ''); + buySetBtn.click(function () { + BuySetDialog.Show(missingParts); + return false; + }); + $J(setEl).append('
    ').append(buySetBtn); + } + } + + }; + + if (PopulateTags) { + var orgPopulateTags = PopulateTags; + PopulateTags = function (elTags, elTagsContent, rgTags) { + orgPopulateTags(elTags, elTagsContent, rgTags); + if (rgTags && rgTags.length > 0) { + var link = $J('Gen. expression'); + link.click(function () { + GenExpDialog.Show(rgTags); + }); + $J(elTagsContent).append('
    ').append(link); + } + } + } +}; + +$J(function () { + currencyId = typeof (g_rgWalletInfo) != 'undefined' && g_rgWalletInfo.wallet_currency ? g_rgWalletInfo.wallet_currency : 1; + countryCode = typeof (g_rgWalletInfo) != 'undefined' && g_rgWalletInfo.wallet_country ? g_rgWalletInfo.wallet_country : 'US'; + if (typeof (window.currency) != 'undefined' && window.currency != '') { + currencyId = window.currency; + } + + if (window.usevector) { + var _mediumName = GetCookie('mediumname'); + var _mediumAppid = GetCookie('mediumappid'); + + if (_mediumName && _mediumAppid) { + getMediumPrice({market_hash_name: _mediumName, appid: _mediumAppid}); + } + } + + ModifyDescriptionFunction(); + + BuildHover = function (prefix, item, owner) { + var imageName = item.icon_url_large ? item.icon_url_large : item.icon_url; + hItem = item; + var url = (g_bIsTrading) ? ImageURL(imageName, 192, 192) : ImageURL(imageName, 330, 192); + var strHoverClass = 'item_desc_content'; + if (item.appid) { + strHoverClass = strHoverClass + ' app' + item.appid + ' context' + item.contextid; + } + + $(prefix + '_content').className = strHoverClass; + $(prefix + '_item_icon').src = url; + $(prefix + '_item_icon').alt = item.name; + + var strName = GetNameForItem(item); + $(prefix + '_item_name').update(strName); + if ($J('#' + prefix + 'iprice').length == 0) { + $J('#' + prefix + '_item_name').after('

    '); + } + + //$J('#iprice').html('loading...'); + if (window.agp_hover && item.appid !== 440) { + getLowestPriceHandler(item, prefix); + } + //if (owner && typeof (apiItems) != undefined && item.appid == 570) { + // $J('.equiped').remove(); + // if (item && apiItems && owner && apiItems[owner.strSteamId]) { + // $J.each(apiItems[owner.strSteamId], function (i, o) { + // if (o.id == item.id) { + // if (o.equipped) { + // $J('#' + prefix + '_item_name').after('
    Equiped
    '); + // } + // $J(elDescriptions).prepend('
    Equiped
    '); + // return false; + // } + // }); + // } + //} + + var el = $J(`div[data-economy-item*="${item.appid}/${item.classid}${item.instanceid ? '/' + item.instanceid : ''}"]`); + if (el.length == 1) { + el = el[0]; + el.rgItem = item; + } + + var elArrowLeft = $(prefix + '_arrow_left'); + var elArrowRight = $(prefix + '_arrow_right'); + if (item.name_color) { + $(prefix + '_item_name').style.color = '#' + item.name_color; + $(prefix + '_content').parentNode.style.borderColor = '#' + item.name_color; + if (elArrowLeft) { + elArrowLeft.style.borderRightColor = '#' + item.name_color; + } + if (elArrowRight) { + elArrowRight.style.borderLeftColor = '#' + item.name_color; + } + } else { + $(prefix + '_item_name').style.color = ''; + $(prefix + '_content').parentNode.style.borderColor = ''; + if (elArrowLeft) { + elArrowLeft.style.borderRightColor = ''; + } + if (elArrowRight) { + elArrowRight.style.borderLeftColor = ''; + } + } + + var elFraudWarnings = $(prefix + '_fraud_warnings'); + if (elFraudWarnings) { + // on the inventory page, we only show fraud warnings for currency (special privacy notice) + if (item.fraudwarnings || (g_bIsInventoryPage && item.is_currency)) { + elFraudWarnings.update(''); + if (item.fraudwarnings) { + for (var i = 0; i < item.fraudwarnings.length; i++) { + var warning = new Element('div', {'class': 'fraud_warning_box'}); + var warningImage = new Element('img', { + 'class': 'fraud_warning_image', + src: window.location.protocol + '//cdn.steamcommunity.com/public/images/sharedfiles/icons/icon_warning.png' + }); + warning.appendChild(warningImage); + var warningText = new Element('span'); + warningText.update(item.fraudwarnings[i]); + warning.appendChild(warningText); + elFraudWarnings.appendChild(warning); + } + } + if (g_bIsInventoryPage && item.is_currency) { + var warning = new Element('div'); + warning.update('This amount is private and shown only to you.'); + elFraudWarnings.appendChild(warning); + } + elFraudWarnings.show(); + } else { + elFraudWarnings.hide(); + } + } + + if (item.appid && g_rgAppContextData[item.appid]) { + var rgAppData = g_rgAppContextData[item.appid]; + $(prefix + '_game_icon').src = rgAppData.icon; + $(prefix + '_game_icon').alt = rgAppData.name; + $(prefix + '_game_name').update(rgAppData.name); + $(prefix + '_item_type').update(item.type); + $(prefix + '_game_info').show(); + } else { + $(prefix + '_game_info').hide(); + } + + var elDescriptors = $(prefix + '_item_descriptors'); + PopulateDescriptions(elDescriptors, item.descriptions); + + var elActions = $(prefix + '_item_actions'); + if (elActions) { + PopulateActions(prefix, elActions, item.actions, item); + } + + var elOwnerDescriptors = $(prefix + '_item_owner_descriptors'); + if (elOwnerDescriptors) { + PopulateDescriptions(elOwnerDescriptors, item.owner_descriptions) + } + + var elOwnerActions = $(prefix + '_item_owner_actions'); + if (elOwnerActions) { + PopulateActions(prefix, elOwnerActions, item.owner_actions, item); + } + + var elCurrencyInTradeDescriptor = $(prefix + '_currency_in_trade'); + if (elCurrencyInTradeDescriptor) { + elCurrencyInTradeDescriptor.update(''); + if (item.is_currency && item.parent_currency && owner == UserYou) { + // this item is currency in a trade, display how much is being offered + var rgContext = owner && owner.GetContext(item.appid, item.contextid); + var oParams = {}; + oParams.amount = v_numberformat(item.amount); + oParams.contextname = rgContext ? rgContext.name : ''; + oParams.currencystyle = item.name_color ? 'color: #' + item.name_color + ';' : ''; + elCurrencyInTradeDescriptor.update(HoverCurrencyFromTemplate.evaluate(oParams)); + } + } + + var elTags = $(prefix + '_item_tags'); + var elTagsContent = $(prefix + '_item_tags_content'); + if (elTags && elTagsContent) { + PopulateTags(elTags, elTagsContent, item.tags); + } + + var elMarketActions = $(prefix + '_item_market_actions'); + if (elMarketActions) { + PopulateMarketActions(elMarketActions, item); + } + + $(prefix).builtFor = item; + $(prefix).builtForAmount = item.amount; + }; + + AddItemHoverToElement = function (element, rgItem) { + element = $(element); + element.observe('mouseover', MouseOverItem.bindAsEventListener(null, UserYou, element, rgItem)); + element.observe('mouseout', MouseOutItem.bindAsEventListener(null, UserYou, element, rgItem)); + }; + + if (window.gpdelayscc) { + PriceQueue._successDelay = window.gpdelayscc; + } + if (window.gpdelayerr) { + PriceQueue._failureDelay = window.gpdelayerr; + } +}); + +setTimeout(function () { + if (window.gpdelayscc) { + PriceQueue._successDelay = window.gpdelayscc; + } + if (window.gpdelayerr) { + PriceQueue._failureDelay = window.gpdelayerr; + } +}, 10); diff --git a/js/inventprice.js b/js/inventprice.js new file mode 100644 index 0000000..09ac207 --- /dev/null +++ b/js/inventprice.js @@ -0,0 +1,145 @@ +var sGen = document.createElement('script'); +sGen.src = chrome.extension.getURL('js/lang/_gen.js'); +(document.head || document.documentElement).appendChild(sGen); +sGen.onload = function () { + sGen.parentNode.removeChild(sGen); +}; + +var sCacher = document.createElement('script'); +sCacher.src = chrome.extension.getURL('bundle/js/RequestCacher.js'); +(document.head || document.documentElement).appendChild(sCacher); +sCacher.onload = function () { + sCacher.parentNode.removeChild(sCacher); +}; + +var sPriceQueue = document.createElement('script'); +sPriceQueue.src = chrome.extension.getURL('js/PriceQueue.js'); +(document.head || document.documentElement).appendChild(sPriceQueue); +sPriceQueue.onload = function () { + sPriceQueue.parentNode.removeChild(sPriceQueue); +}; + +var cssPQ = document.createElement('link'); +cssPQ.href = chrome.extension.getURL('css/priceQueue.css'); +cssPQ.rel = 'stylesheet'; +cssPQ.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssPQ); + +var sHelper = document.createElement('script'); +sHelper.src = chrome.extension.getURL('js/helper.js'); +(document.head || document.documentElement).appendChild(sHelper); +sHelper.onload = function () { + sHelper.parentNode.removeChild(sHelper); +}; + +var sGlobal = document.createElement('script'); +sGlobal.src = chrome.extension.getURL('js/steam/global.js'); +(document.head || document.documentElement).appendChild(sGlobal); +sGlobal.onload = function () { + sGlobal.parentNode.removeChild(sGlobal); +}; + +var sCommon = document.createElement('script'); +sCommon.src = chrome.extension.getURL('js/inventprice.script.js'); +(document.head || document.documentElement).appendChild(sCommon); +sCommon.onload = function () { + sCommon.parentNode.removeChild(sCommon); +}; + +var sScroll = document.createElement('script'); +sScroll.src = chrome.extension.getURL('js/jquery/jquery.scrollbar.min.js'); +(document.head || document.documentElement).appendChild(sScroll); +sScroll.onload = function () { + sScroll.parentNode.removeChild(sScroll); +}; + +var cssF = document.createElement('link'); +cssF.href = chrome.extension.getURL('css/inventscript.css'); +cssF.rel = 'stylesheet'; +cssF.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssF); + +var cssM = document.createElement('link'); +cssM.href = window.location.protocol + '//steamcommunity-a.akamaihd.net/public/css/skin_1/economy_market.css'; +cssM.rel = 'stylesheet'; +cssM.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssM); + +var cssC = document.createElement('link'); +cssC.href = chrome.extension.getURL('css/jquery.scrollbar.css'); +cssC.rel = 'stylesheet'; +cssC.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssC); + +chrome.storage.sync.get({ + fastdelta: -0.01, + delaylistings: 200, + quicksellbuttons: true, + instantsellbuttons: false, + buysetbuttons: true, + selectallbuttons: true, + inventoryprice: true, + currency: '', + lang: '', + apikey: '', + gpdelayscc: 2500, + gpdelayerr: 5000, + agp_hover: true, + agp_gem: false, + agp_sticker: false, + usevector: false, + simplyinvent: false, + hidedefaultprice: false, + extprice: true, + extmasslisting: false, + extbgcolor: '#0000FF', + exttextcolor: '#FFFFFF', + userUrl: '//steamcommunity.com/my/', + show_float_value: true, + tradableinfo: false +}, function (items) { + var actualCode = ['window.fastdelta = ' + items.fastdelta + ';', + 'window.delaylistings = ' + items.delaylistings + ';', + 'window.quicksellbuttons = ' + items.quicksellbuttons + ';', + 'window.instantsellbuttons = ' + items.instantsellbuttons + ';', + 'window.buysetbuttons = ' + items.buysetbuttons + ';', + 'window.selectallbuttons = ' + items.selectallbuttons + ';', + 'window.inventoryprice = ' + items.inventoryprice + ';', + 'window.usevector = ' + items.usevector + ';', + 'window.currency = \'' + items.currency + '\';', + 'window._apikey = \'' + items.apikey + '\';', + 'window.hidedefaultprice = ' + items.hidedefaultprice + ';', + 'window.simplyinvent = ' + items.simplyinvent + ';', + 'window.gpdelayscc = ' + items.gpdelayscc + ';', + 'window.gpdelayerr = ' + items.gpdelayerr + ';', + 'window.agp_gem = ' + items.agp_gem + ';', + 'window.agp_sticker = ' + items.agp_sticker + ';', + 'window.extprice = ' + items.extprice + ';', + 'window.extmasslisting = ' + items.extmasslisting + ';', + 'window.SIHID = \'' + chrome.runtime.id + '\';', + 'window.userUrl = \'' + items.userUrl + '\';', + 'window.show_float_value = ' + items.show_float_value + ';', + 'window.tradableinfo = ' + items.tradableinfo + ';' + ].join('\r\n'); + if (items.simplyinvent) { + $('body').addClass('simple'); + } + modStyle({extbgcolor: items.extbgcolor, exttextcolor: items.exttextcolor}); + var script = document.createElement('script'); + script.textContent = actualCode; + (document.head || document.documentElement).appendChild(script); + script.parentNode.removeChild(script); + + var sLang = document.createElement('script'); + if (items.lang == '') { + sLang.src = chrome.extension.getURL('js/lang/' + chrome.i18n.getMessage("langcode") + '.js'); + } else { + sLang.src = chrome.extension.getURL('js/lang/' + items.lang + '.js'); + } + + (document.head || document.documentElement).appendChild(sLang); + sLang.onload = function () { + sLang.parentNode.removeChild(sLang); + //ReloadLang(); + }; +}); diff --git a/js/inventprice.script.js b/js/inventprice.script.js new file mode 100644 index 0000000..2af97e3 --- /dev/null +++ b/js/inventprice.script.js @@ -0,0 +1,3516 @@ +/*global $J, g_ActiveInventory, g_ActiveUser, g_sessionID, UserYou, SellItemDialog*/ +var lowestPriceWithFeeRegExp = /\s*(((?!Sold).)*?)\s*<\/span>/i; +var lowestPriceWithoutFeeRegExp = /\s*(((?!Sold).)*?)\s*<\/span>/i; +var insGemExp = /(((?!:).)*?): \d+<\/span>
    Inscribed Gem<\/span>/gi; +var kinGemExp = /(((?!<).)*?)<\/span>
    Kinetic Gem<\/span>/gi; +var priGemExp = /(((?!<).)*?)<\/span>
    Prismatic Gem<\/span>/gi; +var ethGemExp = /(((?!<).)*?)<\/span>
    Ethereal Gem<\/span>/gi; +var corGemExp = /(((?!:).)*?): \d+<\/span>
    Foulfell Shard<\/span>/gi; +var masGemExp = /(((?!:).)*?): \d+<\/span>
    Rune of the Duelist Indomitable<\/span>/gi; +var buyingExp = /javascript:BuyMarketListing\('listing', '(\d+)', (\d+), '(\d+)', '(\d+)'\)/; +var itemRegExp = /BuildHover.*;/i; +var taradableStrExp = /Tradable after.+?/i; +var cacheItems = {}; +var cachePrices = {}; +var itemsInTrades = []; +var sellingStack = {}; +var selectmode = false; +var currencyId = 1; +var sellcurrencyId = 1; +var lastSelectedItem = null; +var reqPriceHistory = true; +var apiItems = {}; +var inventoryPrice = 0; +// var lastSort = null; +var userInventory = []; +var dotahatteryAlias = { + 'doom_bringer': 'doom', + 'treant': 'treant_protector', + 'shadow_shaman': 'shadowshaman', + 'naga_siren': 'siren', + 'nyx_assassin': 'nerubian_assassin', + 'drow_ranger': 'drow', + 'riki': 'rikimaru', + 'templar_assassin': 'lanaya', + 'nevermore': 'shadow_fiend', + 'vengefulspirit': 'vengeful', + 'witch_doctor': 'witchdoctor', + 'gyrocopter': 'gyro', + 'tusk': 'tuskarr', + 'bloodseeker': 'blood_seeker', + 'skeleton_king': 'wraith_king' +}; + +if (typeof (BShouldSuppressFades) == 'undefined') { + BShouldSuppressFades = function () { + return false; + }; +} + +const addQuickSellButton = (item, elActions) => { + const description = item.description; + var num = getNumber(description.lowestPrice); + var inputValue = GetPriceValueAsInt(num); + var nAmount = inputValue; + var sellingPrice = null; + if (inputValue > 0 && nAmount == parseInt(nAmount)) { + // Calculate what the seller gets + var publisherFee = typeof item.market_fee != 'undefined' ? item.market_fee : g_rgWalletInfo.wallet_publisher_fee_percent_default; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees + (100 * (window.fastdelta)); + if (nAmount <= 0) nAmount = 1; + + var info = CalculateAmountToSendForDesiredReceivedAmount(nAmount, publisherFee); + inputValue = info.amount; + sellingPrice = v_currencyformat(inputValue, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + } + + $J(elActions).find('#quicksellbtn').remove(); + fastSellBt = CreateMarketActionButton('green', 'javascript:void(0);', SIHLang.quicksell.replace('$1', sellingPrice)); + fastSellBt.id = 'quicksellbtn'; + $J(fastSellBt).css({ 'marginRight': '12px', 'marginBottom': '8px' }); + const elPriceInfoContent = $J('.item_market_actions:visible').find('div div:last'); + $J(fastSellBt).click(function () { + elPriceInfoContent.html('Working...'); + SellItemDialog.m_item = item; + $J.ajax({ + url: 'https://steamcommunity.com/market/sellitem/', + type: 'POST', + data: { + sessionid: g_sessionID, + appid: item.appid, + contextid: item.contextid, + assetid: item.assetid, + amount: 1, + price: nAmount + }, + crossDomain: true, + xhrFields: {withCredentials: true} + }).done(function (data) { + SellItemDialog.OnSuccess({responseJSON: data}); + // if ($J('#Ck_NoReload').is(':checked')) PopulateMarketActions(elActions, item); + }).fail(function (jqxhr) { + // jquery doesn't parse json on fail + elPriceInfoContent.html('Error...'); + var data = $J.parseJSON(jqxhr.responseText); + SellItemDialog.OnFailure({responseJSON: data}); + }); + return false; + }); + + elActions.appendChild(fastSellBt); +}; + +const addInstantSellButton = (item, elActions) => { + const strMarketName = GetMarketHashName(item.description); + const marketListingsURL = window.location.protocol + '//steamcommunity.com/market/listings/' + item.appid + '/' + encodeURIComponent(strMarketName); + + RequestCacher.get({ + type: 'GET', + url: marketListingsURL + }).then((response) => { + var nameid = response.match(/Market_LoadOrderSpread\( (\d+)/)[1]; + + RequestCacher.get({ + url: `${window.location.protocol}//steamcommunity.com/market/itemordershistogram`, + type: 'GET', + data: { + country: g_strCountryCode, + language: 'english', + currency: (g_rgWalletInfo && g_rgWalletInfo.wallet_currency ? g_rgWalletInfo.wallet_currency : 1), + item_nameid: nameid, + two_factor: 0 + } + }).then((data) => { + if (data.success && data.highest_buy_order) { + var nAmount = parseInt(data.highest_buy_order, 10); + // Calculate what the seller gets + var publisherFee = typeof item.market_fee != 'undefined' ? item.market_fee : g_rgWalletInfo.wallet_publisher_fee_percent_default; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees; + if (nAmount <= 0) nAmount = 1; + + var info = CalculateAmountToSendForDesiredReceivedAmount(nAmount, publisherFee); + var inputValue = info.amount; + var sellingPrice = v_currencyformat(inputValue, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + + $J(elActions).find('#instantsellbtn').remove(); + var instantSellBt = CreateMarketActionButton('green', 'javascript:void(0);', SIHLang.instantsell.replace('$1', sellingPrice)); + instantSellBt.id = 'instantsellbtn'; + $J(instantSellBt).css({ 'marginRight': '12px', 'marginBottom': '8px' }); + // $J(instantSellBt).find('.item_market_action_button_contents').text(SIHLang.instantsell.replace('$1', sellingPrice)); + + const elPriceInfoContent = $J('.item_market_actions:visible').find('div div:last'); + $J(instantSellBt).click(function () { + elPriceInfoContent.html('Working...'); + SellItemDialog.m_item = item; + $J.ajax({ + url: 'https://steamcommunity.com/market/sellitem/', + type: 'POST', + data: { + sessionid: g_sessionID, + appid: item.appid, + contextid: item.contextid, + assetid: item.assetid, + amount: 1, + price: nAmount + }, + crossDomain: true, + xhrFields: { withCredentials: true } + }).done(function (data) { + SellItemDialog.OnSuccess({ responseJSON: data }); + // if ($J('#Ck_NoReload').is(':checked')) PopulateMarketActions(elActions, item); + }).fail(function (jqxhr) { + // jquery doesn't parse json on fail + elPriceInfoContent.html('Error...'); + var data = $J.parseJSON(jqxhr.responseText); + SellItemDialog.OnFailure({ responseJSON: data }); + }); + }); + + elActions.appendChild(instantSellBt); + } else { + console.log('nothing'); + } + }); + }); +} + +var checkPrice = function () { + var currentIdx = $J('#iteminfo0').is(':visible') ? 0 : 1; + var name = $J('#iteminfo' + currentIdx + '_item_name').text(); + getLowestPriceHandler(); +}; + +var reloadDes = function () { + var sOldInfo = 'iteminfo' + iActiveSelectView; + var elDescriptors = $(sOldInfo + '_item_descriptors'); + PopulateDescriptions(elDescriptors, g_ActiveInventory.selectedItem.description.descriptions); +}; + +var mediumPrice = 0; +var mediumName = ''; + +var getSetLink = function (d, sItem, isGenuine) { + var itname = d.market_hash_name || d.value; + //if (itname.indexOf('The ') == 0) itname = itname.substring(4); + var setLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=' + (isGenuine ? 'Genuine%20' : '') + encodeURIComponent(itname); + d.setLink = setLink; + d.isinset = true; + if (cachePrices[setLink] && cachePrices[setLink].lowestPrice) { + d.app_data.price = cachePrices[setLink].lowestPrice; + d.app_data.market_hash_name = cachePrices[setLink].market_hash_name; + d.app_data.owned = cachePrices[setLink].owned; + + //d.value = '' + d.value + ' (' + cachePrices[setLink].lowestPrice + ')'; + if (sItem === g_ActiveInventory.selectedItem.description) + reloadDes(); + return; + } else { + //if (itname.indexOf('The ') == 0) itname = itname.substring(4); + cachePrices[setLink] = {market_hash_name: (isGenuine ? 'Genuine ' : '') + itname}; + //var owned = false; + var exp = new RegExp('.*' + cachePrices[setLink].market_hash_name.replace('The ', '(The )?') + '$'); + //console.log(exp); + $J.each(g_ActiveInventory.rgInventory, function () { + if (exp.test(this.market_hash_name)) { + cachePrices[setLink].market_hash_name = this.market_hash_name; + cachePrices[setLink].owned = true; + return false; + } + }); + d.app_data.market_hash_name = cachePrices[setLink].market_hash_name; + if (!d.value.startsWith('' + d.value + ''; + } + reloadDes(); + } + + return; +}; + +var getMediumPrice = function (sItem) { + if (!sItem.market_hash_name) { + sItem.market_hash_name = sItem.name; + } + var itemLink = window.location.protocol + "//steamcommunity.com/market/priceoverview/?appid=" + sItem.appid + "&country=" + g_strCountryCode + "¤cy=" + currencyId + "&market_hash_name=" + encodeURIComponent(sItem.market_hash_name); + mediumName = sItem.market_hash_name; + PriceQueue.GetPrice({ + method: "GET", + url: itemLink, + success: function (response) { + if (response.success) { + //cachePrices[itemLink] = new Object(); + mediumPrice = response.lowest_price; + } + } + }); + +}; + +var getGiftPrice = function (gitem) { + var appIdExp = /http:\/\/store.steampowered.com\/app\/(\d+)\//; + var storeLink = gitem.description.actions[0].link; + var appid = appIdExp.exec(storeLink)[1]; + $J('.dd_price').html("Loading..."); + RequestCacher.get({ + url: window.location.protocol + '//store.steampowered.com/api/appdetails?appids=' + appid, + crossDomain: true, + }).then(function (res) { + if (res && res[appid] && res[appid].success) { + var price_overview = res[appid].data.price_overview; + var strPrice = ''; + if (price_overview.discount_percent > 0) { + strPrice = (price_overview.final / 100) + ' (-' + price_overview.discount_percent + ') ' + price_overview.currency; + } else { + strPrice = (price_overview.final / 100) + ' ' + price_overview.currency; + } + $J('.dd_price').html(strPrice); + } + }).catch(function () { + $J('.dd_price').html("Error"); + }); +}; + +var getLowestPriceHandler = function (gitem, callback) { + var sItem = gitem || g_ActiveInventory.selectedItem; + if (sItem.appid == 753 && !sItem.description.marketable) { + //getGiftPrice(sItem); + return; + } + if (!sItem.description.market_hash_name) { + sItem.description.market_hash_name = sItem.description.name; + } + var theItemString = encodeURIComponent(name); + // from Steam's community market website + var appID = g_ActiveInventory.appid; + //var marketLink = sItem.appid + '/' + sItem.market_hash_name + '/'; + //$J('.dd_price').html("Loading..."); + var isGenuine = false; + const cc = g_strCountryCode || g_rgWalletInfo.wallet_country; + var itemLink = window.location.protocol + "//steamcommunity.com/market/priceoverview/?appid=" + sItem.appid + "&country=" + cc + "¤cy=" + currencyId + "&market_hash_name=" + encodeURIComponent(sItem.description.market_hash_name); + var itemLinkW = window.location.protocol + "//steamcommunity.com/market/priceoverview/?appid=" + sItem.appid + "&country=" + cc + "¤cy=" + sellcurrencyId + "&market_hash_name=" + encodeURIComponent(sItem.description.market_hash_name); + + var marketLink = window.location.protocol + "//steamcommunity.com/market/listings/" + sItem.appid + "/" + encodeURIComponent(sItem.description.market_hash_name); + if (cachePrices[itemLink] && cachePrices[itemLink].nofeePrice) { + sItem.description.nofeePrice = cachePrices[itemLink].nofeePrice; + sItem.description.lowestPrice = cachePrices[itemLink].lowestPrice; + sItem.description.providerName = cachePrices[itemLink].providerName; + } else { + cachePrices[itemLink] = {market_hash_name: sItem.description.market_hash_name, owned: true}; + } + + if (cachePrices[itemLinkW] && cachePrices[itemLinkW].nofeePrice) { + sItem.description.nofeePriceW = cachePrices[itemLinkW].nofeePrice; + sItem.description.lowestPriceW = cachePrices[itemLinkW].lowestPrice; + sItem.description.providerName = cachePrices[itemLinkW].providerName; + } else { + cachePrices[itemLinkW] = {market_hash_name: sItem.description.market_hash_name, owned: true}; + } + + $J.each(sItem.description.tags, function () { + //console.log((this.category == 'Quality' && this.internal_name == 'genuine')); + isGenuine = (isGenuine || (this.category == 'Quality' && this.internal_name == 'genuine')); + if (isGenuine) return false; + }); + + if (sItem.description.descriptions === undefined) sItem.description.descriptions = [{ type: 'html', value: '' }]; + + const hasFloatDescription = sItem.description.descriptions.find(x => x.isFloat); + const isWeapon = sItem.description.tags.find(x => x.category.toUpperCase() === 'WEAPON'); + if (!hasFloatDescription && isWeapon && sItem.description.actions && sItem.description.actions.length) { + // const btn = CreateMarketActionButton('green floatbutton', 'javascript:void(0);', 'Get Float'); + // Get Float + //
    + const btnGetFloat = ` + + `; + sItem.description.descriptions.unshift({ + isFloat: true, + type: 'html', + value: btnGetFloat + }); + } + + if (window.agp_gem && sItem.description.type !== "Rare Inscribed Gem" && sItem.appid == 570) { + for (var i = 0; i < sItem.description.descriptions.length; i++) { + var d = sItem.description.descriptions[i]; + //if (d.type != 'html' && d.value.indexOf('Inscribed Gem') < 0 && d.value.indexOf('Kinetic Gem') < 0 && d.value.indexOf('Prismatic Gem') < 0 && d.value.indexOf('Ethereal Gem') < 0) continue; + if (d.app_data && !d.app_data.is_itemset_name && !d.app_data.price && !d.app_data.limited) { + getSetLink(d, sItem.description, isGenuine); + } + if (d.insgems) { + break; + } + + var ematch, gidx = 0; + d.insgems = []; + + while ((ematch = insGemExp.exec(d.value))) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Inscribed ' + ematch[1]; + //var nText = ematch[0].replace('Inscribed Gem', 'Inscribed Gem (Loading)'); + d.insgems.push({name: 'Inscribed ' + ematch[1]}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) { + reloadDes(); + } + } + }, + error: function () { + + } + }); + gidx++; + } + + while (ematch = kinGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Kinetic: ' + ematch[1]; + + d.insgems.push({name: 'Kinetic: ' + ematch[1]}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + + + }, + error: function () { + + } + }); + gidx++; + //console.log(gidx); + } + + while (ematch = masGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Rune%20of%20the%20Duelist%20Indomitable'; + d.insgems.push({name: 'Rune%20of%20the%20Duelist%20Indomitable'}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + }, + error: function () { + + } + }); + gidx++; + //console.log(gidx); + } + + while (ematch = corGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Foulfell Shard'; + + d.insgems.push({name: 'Foulfell Shard'}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + }, + error: function () { + + } + }); + gidx++; + //console.log(gidx); + } + + while (ematch = ethGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Ethereal: ' + ematch[1]; + + d.insgems.push({name: 'Ethereal: ' + ematch[1]}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + }, + error: function () { + + } + }); + gidx++; + //console.log(gidx); + } + + while (ematch = priGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Prismatic: ' + ematch[1]; + + d.insgems.push({name: 'Prismatic: ' + ematch[1]}); + + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + pars: {gemidx: gidx}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.insgems[$this.gemidx].lowestPrice = lp; + d.insgems[$this.gemidx].nofeePrice = nfp; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + + + }, + error: function () { + + } + }); + gidx++; + //console.log(gidx); + } + + if (gidx > 0) { + //console.log(d); + } else { + delete d.insgems; + } + } + } + + ///Temporary ignore + if (window.agp_sticker && sItem.appid == 730) { + for (var i = 0; i < sItem.description.descriptions.length; i++) { + var d = sItem.description.descriptions[i]; + if (d.type == 'html' && d.value.startsWith('
    Sticker:'); + if (stIdx == -1 || d.stickers) break; + var stickers = d.value.substr(stIdx + 12, d.value.length - (stIdx + 27)).split(','); + d.stickers = []; + for (var i2 = 0; i2 < stickers.length; i2++) { + d.stickers.push({name: stickers[i2].trim()}); + if (g_strCountryCode === undefined) { + var g_strCountryCode = 1; + } + + var stickerLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=730&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Sticker | ' + stickers[i2].trim(); + if (cachePrices[stickerLink]) { + d.stickers[i2].prices = cachePrices[stickerLink]; + if (sItem === g_ActiveInventory.selectedItem) { + reloadDes(); + } + } else { + PriceQueue.GetPrice({ + method: "GET", + url: stickerLink, + pars: {stickeridx: i2}, + success: function (response, $this) { + var lp = 0, nfp = 0; + if (response.success) { + //cachePrices[this.url] = new Object(); + //cachePrices[this.url].lowestPrice = + lp = response.lowest_price; + //cachePrices[this.url].nofeePrice = + nfp = response.median_price; + + d.stickers[$this.stickeridx].prices = {lowestPrice: lp, nofeePrice: nfp};// cachePrices[this.url]; + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + }, + error: function () { + + } + }); + } + } + } + } + } + + if (!sItem.description.marketable) { + //$J('.dd_price').html("Not Marketable"); + if (callback && itemLinkW == itemLink) + callback(sItem); + return; + } + + const numberOwnedDesc = sItem.description.descriptions.filter(function (x) { return x.iscount; }); + if (!numberOwnedDesc.length) { + const similarCount = g_bViewingOwnProfile ? `(${SIHLang.selectall})` : ''; + sItem.description.descriptions.unshift({ + iscount: true, + type: 'html', + value: `${SIHLang.numowned}: ${sItem.description.use_count} ${similarCount}` + }); + } + + if (sItem.description.lowestPrice) { + PriceQueue.GenPriceDescription(sItem.description); + + if (callback && itemLinkW == itemLink) { + callback(sItem); + return; + } + } else { + PriceQueue.GetPrice({ + method: "GET", + url: itemLink, + success: function (response) { + if (response.success) { + //cachePrices[itemLink] = new Object(); + if (/SOLD!/i.test(response.lowest_price)) console.log(itemLink, response); + cachePrices[itemLink].lowestPrice = sItem.description.lowestPrice = response.lowest_price; + cachePrices[itemLink].nofeePrice = sItem.description.nofeePrice = response.median_price; + if (response.volume) { + cachePrices[itemLink].volume = sItem.description.volume = response.volume; + } + + if (response.providerName) { + cachePrices[itemLink].providerName = sItem.description.providerName = response.providerName; + } + + PriceQueue.GenPriceDescription(sItem.description); + if (itemLinkW == itemLink) { + sItem.description.lowestPriceW = response.lowest_price; + sItem.description.nofeePriceW = response.median_price; + sItem.description.providerName = response.providerName; + } + //cachePrices[itemLink].market_hash_name = sItem.market_hash_name; + + if (sItem === g_ActiveInventory.selectedItem) { + reloadDes(); + + $J('.dd_price').find('a').attr('href', marketLink); + } + + if (callback && itemLinkW == itemLink) + callback(sItem); + } + } + }); + } + + if (sItem.description.lowestPriceW) { + if (callback) { + callback(sItem); + } + } else if (itemLinkW != itemLink) { + PriceQueue.GetPrice({ + method: "GET", + url: itemLinkW, + success: function (response) { + if (response.success) { + //cachePrices[itemLink] = new Object(); + if (/SOLD!/i.test(response.lowest_price)) console.log(itemLinkW, response); + cachePrices[itemLinkW].lowestPrice = sItem.description.lowestPriceW = response.lowest_price; + cachePrices[itemLinkW].nofeePrice = sItem.description.nofeePriceW = response.median_price; + if (response.volume) { + cachePrices[itemLink].volume = sItem.description.volume = response.volume; + } + //cachePrices[itemLink].market_hash_name = sItem.market_hash_name; + + if (callback) + callback(sItem); + } + } + }); + } +}; + +var selectSimilar = function (classid) { + if (!selectmode) + $J('#Lnk_Sellmulti').trigger('click'); + g_ActiveInventory.LoadCompleteInventory().done(function () { + $J('.inventory_ctn:visible .inventory_page .item').each(function (i, el) { + if (el.rgItem.description.marketable && el.rgItem.classid == classid) { + g_ActiveInventory.LoadItemImage($J(el)); + $J(el).addClass('selectedSell'); + } + }); + + var itC = $J('.selectedSell').length; + if (itC > 0) { + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + $J('#Lnk_ShowSellMulti').show(); + if (g_ActiveInventory.appid == 753) { + $J('#Lnk_TurnIntoGems').show(); + $J('#Lnk_SendGifts').show(); + } + } + }); + return false; +}; + +var setGemPrice = function (sItem, gemName, gemType, callback) { + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=1&market_hash_name=' + gemName; + PriceQueue.GetPrice({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + lp = response.lowest_price; + var pp = /([\d\.,]+)/.exec(lp.replace(/\&#\d+;/g, '').replace(' pуб.', '').replace(/,/g, '.'))[1]; + sItem.extimatePrice[gemName] = pp; + callback(sItem); + } + }, + error: function () { + } + }); +}; + +var imgRex = /]*>/g, + imgRex2 = /background-image: url\(([^\)]+?)\)/g; + +var recalTotal = function () { + var totalWithoutFee = 0; + var totalWithFee = 0; + $J('.queue-item-container:visible').each(function (idx, elem) { + totalWithoutFee += elem.rgItem.description.sellerPrice; + totalWithFee += elem.rgItem.description.buyerPrice; + }); + $J('.queue-total-price .without-fee').html( + v_currencyformat(totalWithoutFee, GetCurrencyCode(g_rgWalletInfo.wallet_currency)) + ); + $J('.queue-total-price .with-fee').html( + v_currencyformat(totalWithFee, GetCurrencyCode(g_rgWalletInfo.wallet_currency)) + ); +}; + +var ShowQueue = function (goo) { + $J('div.queue-container').remove(); + var selectedItems = $J('.selectedSell'); + var div = $J('
    '); + var rightDiv = $J('
    '); + div.append(rightDiv); + + var cdiv = $J('
    '); + cdiv.append('Quick sell all'); + div.append(cdiv); + + selectedItems.sort(function (a, b) { + var rgItemA = a.rgItem, rgItemB = b.rgItem; + + if (rgItemA.description.market_hash_name == rgItemB.description.market_hash_name) { + return 0; + } else if (rgItemA.description.market_hash_name < rgItemB.description.market_hash_name) { + return -1; + } else { + return 1; + } + }); + + if (window.extmasslisting) { + ExternalPrices.UpdatePrice(typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo.wallet_currency : 1); + } + + selectedItems.each(function () { + var rgItem = null; + if (!(rgItem = this.rgItem) || ((!rgItem.description.marketable) && !goo) || (goo == '1' && (rgItem.appid != 753 || rgItem.contextid != 6))) { + $J(this).removeClass('selectedSell'); + return true; + } + var container = $J('
    '); + container.append(''); + var img = ''; + if (rgItem.fraudwarnings) { + img += ''; + } + if (rgItem.description.descriptions && rgItem.description.descriptions.length) { + var mm = null; + for (var i = 0; i < rgItem.description.descriptions.length; i++) { + while ((mm = imgRex.exec(rgItem.description.descriptions[i].value)) != null || (mm = imgRex2.exec(rgItem.description.descriptions[i].value)) != null) { + img += ''; + } + } + } + //console.log(img); + if (img.length > 0) { + container.append('
    ' + img + '
    '); + } + var item = $J('
    '); + item.css('border-color', '#' + rgItem.description.name_color); + if ($J(this).hasClass('item-equipped')) { + item.addClass('item-equipped'); + } + + if ($J(this).hasClass('item-in-trade')) { + item.addClass('item-in-trade'); + } + if (window.extmasslisting && rgItem.extprice) { + var extpricetag = $J('
    '); + extpricetag.prop('title', 'scmspy'); + // extpricetag.text(ExchangeRates.Format(rgItem.extprice)); + extpricetag.text(v_currencyformat(rgItem.extprice * 100, GetCurrencyCode(typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo.wallet_currency : 1))); + item.append(extpricetag); + } + + item.append($J(this).find('img').clone()); + container[0].rgItem = rgItem; + container.append(item); + AddItemHoverToElement(item[0], rgItem); + cdiv.append(container); + }); + + const itemCount = $J('.selectedSell').length; + if (itemCount === 0) { + if (goo == '1') { + GrindDialog.Dismiss(); + } else { + SellItemDialog.Dismiss(); + } + $J('div.queue-container').remove(); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + + return false; + } else { + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itemCount > 1 ? SIHLang.sellnitem.replace('$1', itemCount) : SIHLang.sell1item)); + } + + rightDiv.append('
    ' + $J('.selectedSell').length + '
    ' + + '
    ' + + '
    '); + rightDiv.append(''); + rightDiv.append('
    ' + SIHLang.sort.sortitem + '' + SIHLang.sort.price + '
    '); + + div.find('#bt_lower, #bt_higher').click(function (e) { + //e.stop(); + var operator = ($J(this).attr('id') === 'bt_lower' ? -1 : 1); + var pricetocompare = parseFloat($J('#txt_remove_queue').val().replace(',', '.')); + //console.log('p2c', pricetocompare); + if (isNaN(pricetocompare)) return false; + $J('.queue-item-container:visible').each(function (idx, elem) { + var item = elem.rgItem; + //console.log(item); + if (item && (item.description.lowestPriceW || item.extprice)) { + var price = item.description.lowestPriceW ? parseFloat(getNumber(item.description.lowestPriceW)) : (item.extprice || 0); + if ((price * operator) > (pricetocompare * operator)) { + $J(elem).find('.queue-item-remove').trigger('click'); + } + } + }); + setTimeout(function () { + recalTotal(); + }, 100); + return false; + }); + + div.find('#bt_intrade').click(function (e) { + //e.stop(); + $J('.queue-item-container:visible').each(function (idx, elem) { + if ($J(elem).find('.item-in-trade').length) { + $J(elem).find('.queue-item-remove').trigger('click'); + } + }); + setTimeout(function () { + recalTotal(); + }, 100); + return false; + }); + + div.find('#bt_removeequipped').click(function (e) { + //e.stop(); + $J('.queue-item-container:visible').each(function (idx, elem) { + if ($J(elem).find('.item-equipped').length) { + $J(elem).find('.queue-item-remove').trigger('click'); + } + }); + setTimeout(function () { + recalTotal(); + }, 100); + return false; + }); + + div.find('#bt_sort_price').click(function (e) { + //e.stop(); + if (isSorting) { + return false; + } + isSorting = true; + var order = 1; + $this = $J(this); + if ($this.find('.market_sort_arrow').is(':contains("▲")')) { + order = -1; + $this.find('.market_sort_arrow').text('▼'); + } else { + $this.find('.market_sort_arrow').text('▲'); + } + + var $rows = div.find('div:has(>.queue-item-container:visible)'), + $rowsli = $rows.children('.queue-item-container:visible'); + + $rowsli.sort(function (a, b) { + var rgIa = a.rgItem, rgIb = b.rgItem; + + if (!rgIa) + return order; + if (!rgIb) + return order * -1; + + var an = (typeof (rgIa.description.lowestPriceW) == 'undefined' ? (rgIa.extprice || 0) : parseFloat(getNumber(rgIa.description.lowestPriceW))), + bn = (typeof (rgIb.description.lowestPriceW) == 'undefined' ? (rgIb.extprice || 0) : parseFloat(getNumber(rgIb.description.lowestPriceW))); + + if (an == bn) { + an = rgIa.market_hash_name; + bn = rgIb.market_hash_name; + } + + if (an > bn) { + return 1 * order; + } + if (an < bn) { + return -1 * order; + } + return 0; + }); + + $rowsli.detach().appendTo($rows); + + var rgItem = $J('.queue-item-container:visible')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + UpdateSellItem(rgItem); + + isSorting = false; + return false; + }); + + $J('body').append(div); + $J(cdiv).scrollbar(); + + qTotalPrice = 0; + qTotalBuyerPrice = 0; + if (goo) { + GetQueueGoo(); + } else { + GetQueuePrice(); + PriceQueue.UpdateHandler = ContinueListing; + // Temporary commented. Maybe it's useless code + // var rgItem = $J('.queue-item-container:visible')[0].rgItem; + // g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + // g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + // //var lbp = $J('#market_sell_buyercurrency_input').val(), lsp = $J('#market_sell_currency_input').val(); + // if (!UpdateSellItem(rgItem)) return; + } +}; + +var qTimer = null; +var qTotalPrice = 0; +var qTotalBuyerPrice = 0; +var isSorting = false; + +var GetQueuePrice = function () { + isSorting = false; + if (qTimer) window.clearTimeout(qTimer); + var it = $J('.queue-item-container:not(:has(>span.price))'); + it.sort(function (a, b) { + var rgItemA = a.rgItem, rgItemB = b.rgItem; + + if (rgItemA.description.market_hash_name == rgItemB.description.market_hash_name) { + return 0; + } else if (rgItemA.description.market_hash_name < rgItemB.description.market_hash_name) { + return -1; + } else { + return 1; + } + }); + for (var i = 0; i < it.length; i++) { + + var rgItem = it[i].rgItem; + if (window.extmasslisting && rgItem.extprice) { + var num = rgItem.extprice; + var inputValue = GetPriceValueAsInt(num + ''); + var nAmount = inputValue; + var priceWithoutFee = null; + if (inputValue > 0 && nAmount == parseInt(nAmount)) { + // Calculate what the seller gets + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo.wallet_publisher_fee_percent_default; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees; + + priceWithoutFee = v_currencyformat(nAmount, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + } + + rgItem.description.buyerPrice = inputValue; + rgItem.description.sellerPrice = nAmount; + + qTotalPrice += inputValue; + qTotalBuyerPrice += nAmount; + + $J('.queue-total-price .with-fee').html(v_currencyformat(qTotalPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + $J('.queue-total-price .without-fee').html(v_currencyformat(qTotalBuyerPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + + var pp = $J(''); + pp.html(rgItem.extprice); + pp.attr('title', priceWithoutFee); + + continue; + } + + getLowestPriceHandler(rgItem, function (item) { + var itCnt; + if (item && item.description.lowestPriceW) { + var num = getNumber(item.description.lowestPriceW);//.replace(/\&#\d+;/g, '').replace(' pуб.', ''); + var inputValue = GetPriceValueAsInt(num); + var nAmount = inputValue; + var priceWithoutFee = null; + if (inputValue > 0 && nAmount == parseInt(nAmount)) { + // Calculate what the seller gets + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo.wallet_publisher_fee_percent_default; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees; + + priceWithoutFee = v_currencyformat(nAmount, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + } + + var pp = $J(''); + pp.html(item.description.lowestPriceW); + pp.attr('title', priceWithoutFee); + + item.description.buyerPrice = inputValue; + item.description.sellerPrice = nAmount; + itCnt = $J('.queue-item-container[data-id="' + item.assetid + '"]'); + itCnt.append(pp); + qTotalPrice += inputValue; + qTotalBuyerPrice += nAmount; + $J('.queue-total-price .with-fee').html(v_currencyformat(qTotalPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + $J('.queue-total-price .without-fee').html(v_currencyformat(qTotalBuyerPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + + } else { + // var rgItemOrg = item; + $J('#' + item.appid + '_' + item.contextid + '_' + item.assetid + '.selectedSell').removeClass('selectedSell'); + + var itC = $J('.inventory_page .selectedSell').length; + if (itC <= 0) { + SellItemDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + return false; + } + + var rgItem1 = $J('.queue-item-container')[0].rgItem; + + UpdateSellItem(rgItem1); + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + itCnt = $J('.queue-item-container[data-id="' + item.assetid + '"]'); + itCnt.remove(); + } + //window.setTimeout('GetQueuePrice();', 50); + }); + } +}; + +var GetQueueGoo = function () { + isSorting = false; + if (qTimer) window.clearTimeout(qTimer); + var it = $J('.queue-item-container:not(:has(>span.price))'); + if (it.length > 0) { + var rgItem = it[0].rgItem; + + var rgAJAXParams = { + sessionid: g_sessionID, + appid: getAppIdFromTags(rgItem.description.tags), + assetid: rgItem.assetid, + contextid: rgItem.contextid + }; + var strActionURL = g_strProfileURL + "/ajaxgetgoovalue/"; + + $J.get(strActionURL, rgAJAXParams).done(function (data) { + var $Content = $J(data.strHTML); + var strDialogTitle = data.strTitle; + rgItem.goo_value = data.goo_value; + + if (rgItem.goo_value > 0) { + + var pp = $J(''); + pp.html(rgItem.goo_value); + pp.attr('title', rgItem.goo_value); + $J(it[0]).append(pp); + qTotalPrice += parseInt(rgItem.goo_value); + $J('.queue-total-price .with-fee').html(qTotalPrice); + $J('.queue-total-price .without-fee').html('gems'); + + } else { + var rgItemOrg = it[0].rgItem; + $J('#item' + rgItemOrg.appid + '_' + rgItemOrg.contextid + '_' + $J(it[0]).data().id + '.selectedSell').removeClass('selectedSell'); + + var itC = $J('.inventory_page .selectedSell').length; + if (itC <= 0) { + GrindDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + return false; + } + + var rgItem1 = $J('.queue-item-container')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem1.element, rgItem1); + g_ActiveInventory.EnsurePageActiveForItem(rgItem1.element); + UpdateSellItem(rgItem1); + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + $J(it[0]).remove(); + + } + window.setTimeout('GetQueueGoo();', 50); + }); + } else { + //isSorting = false; + } +}; + +var SetQueueTotal = function () { + qTotalPrice = 0; + qTotalBuyerPrice = 0; + $J('.queue-item-container').each(function (i, e) { + + }); +}; + +var getAppIdFromTags = function (tags) { + var appId = null; + var appName = ''; + tags.map(function (item) { + if (item.category.toLowerCase() === 'game') appName = item.internal_name; + }); + var matched = appName.match(/app_(\d+)/); + if (matched) { + appId = matched[1]; + } + return appId; +}; + +var GrindNextItem = function () { + if ($J('.selectedSell').length == 0) { + GrindDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + } else if ($J('.selectedSell').length > 0 && !GrindDialog.m_bIsDismissed) { + var itC = $J('.selectedSell').length; + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + var rgItem = $J('.queue-item-container:visible')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + //var lbp = $J('#market_sell_buyercurrency_input').val(), lsp = $J('#market_sell_currency_input').val(); + //$J('#market_sell_buyercurrency_input').val(lbp); + //$J('#market_sell_currency_input').val(lsp); + + + if (rgItem.goo_value) { + var rgAJAXParams = { + sessionid: g_sessionID, + appid: getAppIdFromTags(rgItem.description.tags), + assetid: rgItem.assetid, + contextid: rgItem.contextid, + goo_value_expected: rgItem.goo_value + }; + strActionURL = g_strProfileURL + "/ajaxgrindintogoo/"; + + $J.post(strActionURL, rgAJAXParams).done(function (data) { + + g_ActiveInventory.selectedItem.description.marketable = 0; + $J(g_ActiveInventory.selectedItem.element).removeClass('selectedSell'); + $J(g_ActiveInventory.selectedItem.element).css('opacity', '0.3'); + $J('div.queue-item-container[data-id=' + g_ActiveInventory.selectedItem.assetid + ']').hide(200, function () { + setTimeout('GrindNextItem()', 100); + }); + }).fail(function () { + ShowAlertDialog(strDialogTitle, 'There was an error communicating with the network. Please try again later.'); + }); + } + } else { + GrindDialog.Dismiss(); + } +}; + +var ModifyMarketActions = function () { + if (typeof (window.fastdelta) == 'undefined') window.fastdelta = -0.01; + if (typeof (window.delaylistings) == 'undefined') window.delaylistings = 200; + if (typeof (window.quicksellbuttons) == 'undefined') window.quicksellbuttons = true; + if (typeof (window.buysetbuttons) == 'undefined') window.buysetbuttons = true; + + PopulateMarketActions = function (elActions, item) { + var description = item.description; + elActions.update(''); + if ( !description.marketable || ( item.is_currency && CurrencyIsWalletFunds( item ) ) ) { + elActions.hide(); + return; + } + + var bIsTrading = typeof( g_bIsTrading ) != 'undefined' && g_bIsTrading; + + if ( ( typeof(g_bViewingOwnProfile) != 'undefined' && g_bViewingOwnProfile ) || bIsTrading ) { + var strMarketName = GetMarketHashName( description ); + + var elPriceInfo = new Element( 'div' ); + var elPriceInfoHeader = new Element ( 'div', { 'style': 'height: 24px;' } ); + + var elMarketLink = new Element( 'a', { + 'href': 'http://steamcommunity.com/market/listings/' + item.appid + '/' + encodeURIComponent( strMarketName ) + } ); + elMarketLink.update(`${SIHLang.info.viewcm || 'View in Community Market'}` ); + + if ( bIsTrading ) + Steam.LinkInNewWindow( $J(elMarketLink) ); + + elPriceInfoHeader.appendChild( elMarketLink ); + + elPriceInfo.appendChild( elPriceInfoHeader ); + + var elPriceInfoContent = new Element( 'div', { 'style': 'min-height: 3em; margin-left: 1em;' } ); + elPriceInfoContent.update( 'Working...' ); + elPriceInfo.appendChild( elPriceInfoContent ); + elActions.appendChild( elPriceInfo ); + + if ( !bIsTrading ) { + var elSellButton = CreateMarketActionButton('green', 'javascript:SellCurrentSelection()', `${SIHLang.info.sell || 'Sell'}` ); + $J(elSellButton).css({ 'marginRight': '12px', 'marginBottom': '8px' }); + elActions.appendChild( elSellButton ); + + if (window.instantsellbuttons && !selectmode) addInstantSellButton(item, elActions); + } + + const itemLink = `${window.location.protocol}//steamcommunity.com/market/priceoverview/?appid=${item.appid}&country=${g_strCountryCode}¤cy=${typeof( g_rgWalletInfo ) != 'undefined' ? g_rgWalletInfo.wallet_currency : 1}&market_hash_name=${encodeURIComponent(strMarketName)}`; + + // new Ajax.Request( 'http://steamcommunity.com/market/priceoverview/', { + // method: 'get', + // parameters: { + // country: g_strCountryCode, + // currency: typeof( g_rgWalletInfo ) != 'undefined' ? g_rgWalletInfo['wallet_currency'] : 1, + // appid: item.appid, + // market_hash_name: strMarketName + // }, + // onSuccess: function({ responseJSON }) { + PriceQueue.GetPrice({ + method: 'GET', + url: itemLink, + success: function( responseJSON ) { + if ( responseJSON && responseJSON.success ) { + var strInfo = ''; + if ( responseJSON.lowest_price ) { + strInfo += `${SIHLang.info.startingAt || 'Starting at'}: ${responseJSON.lowest_price}
    ` + item.description.lowestPrice = responseJSON.lowest_price; + item.description.lowestPriceW = responseJSON.lowest_price; + } else { + strInfo += `${SIHLang.info.nosales || 'There are no listings currently available for this item.'}
    `; + } + + if ( responseJSON.volume ) { + var strVolume = `${SIHLang.info.last24 || '%1$s sold in the last 24 hours'}`; + strVolume = strVolume.replace( '%1$s', responseJSON.volume ); + //strInfo += 'Median price: ' + responseJSON.median_price + '
    '; + strInfo += `${SIHLang.info.volume || 'Volume'}: ${strVolume}
    `; + } + + if (window.hidedefaultprice) { + elPriceInfoContent.update( '' ); + // elPriceInfo.hide(); + } else { + elPriceInfoContent.update( strInfo ); + } + + if (window.quicksellbuttons) addQuickSellButton(item, elActions); + $J(elActions).trigger('v_contentschanged'); + } + }, + // onFailure: function( transport ) { elPriceInfo.hide(); } + } ); + + + if ( !g_bMarketAllowed ) { + var elTooltip = $('market_tip_noaccess'); + InstallHoverTooltip( elSellButton, elTooltip ); + } + } else { + elActions.hide(); + return; + } + + elActions.show(); + }; +}; + +var ModifyDescriptionFunction = function () { + const orgPopulateDescriptions = PopulateDescriptions; + PopulateDescriptions = function (elDescriptions, rgDescriptions) { + elDescriptions.update(''); + if (!rgDescriptions || !rgDescriptions.length) { + elDescriptions.hide(); + return; + } + + elDescriptions.show(); + var setEl = null; + var setName = null; + var totalPrice = 10; + const playerItems = new Set(Object.keys(g_ActiveInventory.m_rgAssets).map(item => { + const rgItem = g_ActiveInventory.GetLoadedAsset(item); + return rgItem.description.market_hash_name; + })); + var missingParts = []; + for (var i = 0; i < rgDescriptions.length; i++) { + var description = rgDescriptions[i]; + if (!description.value.trim()) continue; + description.value = description.value.trim(); + + var strParsedDescription = v_trim(description.value.replace(/\[date\](\d*)\[\/date\]/g, function (match, p1) { + var date = new Date(p1 * 1000); + return date.toLocaleString(); + })); + + var elDescription = new Element('div', {'class': 'descriptor'}); + if (description.color) + elDescription.style.color = '#' + description.color; + + // just use a blank space for an empty string + if (strParsedDescription.length == 0) { + elDescription.update(' '); + } else if (description.type == 'image') { + var elImage = new Element('img', {src: v_trim(description.value)}); + elDescription.appendChild(elImage); + } else if (description.type == 'html') { + var html = strParsedDescription; + if (description.app_data && !description.app_data.limited && !description.app_data.is_itemset_name) { + var item = {}; + if (description.app_data.price) { + var pp = getNumber(description.app_data.price); + item.price = pp; + item.link = window.location.protocol + '//steamcommunity.com/market/listings/' + g_ActiveInventory.appid + '/' + encodeURIComponent(description.app_data.market_hash_name); + item.name = strParsedDescription; + item.market_hash_name = description.app_data.market_hash_name; + totalPrice += parseFloat(pp); + html = '' + html + ' (' + description.app_data.price + ')'; + } + + if (description.isinset) { + if (description.app_data.owned) { + html = '✓ ' + html; + } else { + html = '✗  ' + html; + if (description.app_data.price) { + missingParts.push(item); + } + } + } + } + + if (description.color && description.color === '9da1a9') { + setEl = elDescription; + } + + if (description.color && description.color === '6c7075') { + if (playerItems.has(description.value) || [...playerItems].find(item => item.endsWith(description.value) || description.value.endsWith(item))) { + html = '✓ ' + html; + } else { + html = '✗ ' + html; + const item = {}; + item.link = `${window.location.protocol}//steamcommunity.com/market/listings/${g_ActiveInventory.appid}/${encodeURIComponent(description.value.replace('The ', ''))}`; + item.name = strParsedDescription; + missingParts.push(item); + } + } + + if (description.isstickers) { + html = html.substr(0, html.indexOf('
    Sticker:') + 12); + for (var k = 0; k < description.stickers.length; k++) { + var sticker = description.stickers[k]; + if (k) html += ', '; + html += sticker.name; + if (sticker.prices && sticker.prices.lowestPrice) { + html += ' - ' + sticker.prices.lowestPrice + '' + } + } + html += '
    '; + } + + if (description.insgems && description.insgems.length) { + if (!description.orgvalue) { + description.orgvalue = description.value; + } else { + description.value = description.orgvalue; + } + + var regexgem = /([\w\s]+)<\/span>/gi; + for (var j = 0; j < description.insgems.length; j++) { + var m = regexgem.exec(description.orgvalue); + var ggem = description.insgems[j]; + var gemLink = window.location.protocol + '//steamcommunity.com/market/listings/570/' + ggem.name; + if (ggem.lowestPrice) { + description.value = description.value.replace(m[0], '' + m[1] + ' (' + ggem.lowestPrice + ')') + } else { + description.value = description.value.replace(m[0], '' + m[1] + '') + } + } + html = description.value; + } + elDescription.update(html); + } else { + elDescription.update(strParsedDescription.escapeHTML().replace( /\n/g, '
    ' )); + } + + if (description.app_data && description.app_data.is_itemset_name) { + setEl = elDescription; + setName = description.value; + } + + if (description.label) { + var elLabel = new Element('span', {'class': 'descriptor_label'}); + elLabel.update(description.label + ': '); + elDescription.insert({top: elLabel}); + } + + elDescriptions.appendChild(elDescription); + } + //console.log(totalPrice); + if (setEl) { + //var totalStr = (Math.round(totalPrice * 100) / 100) + ''; + //if (totalStr.lastIndexOf('.') == -1) totalStr += '.00'; + //totalStr = totalStr.replace(/(\d)(\d{3})([,\.])/, '$1,$2$3'); + // setEl.update(setName + ' (' + formatNumber(totalPrice) + ')'); + + if (missingParts.length > 0 && g_bViewingOwnProfile && g_bMarketAllowed && buysetbuttons && !elDescriptions.id.startsWith('hover')) { + var buySetBtn = $J('' + SIHLang.buymissing + ''); + buySetBtn.click(function () { + BuySetDialog.Show(missingParts); + return false; + }); + $J(setEl).append('
    ').append(buySetBtn); + } + } + + }; + + var orgPopulateTags = PopulateTags; + PopulateTags = function (elTags, elTagsContent, rgTags) { + orgPopulateTags(elTags, elTagsContent, rgTags); + if (rgTags && rgTags.length > 0) { + var link = $J('Gen. expression'); + link.click(function () { + GenExpDialog.Show(rgTags); + }); + $J(elTagsContent).append('
    ').append(link); + } + } +}; + +var ModifyItemDisplay = function () { + UserYou.OnLoadInventoryComplete = function (transport, appid, contextid) { + this.cLoadsInFlight--; + if (transport.responseJSON && transport.responseJSON.success) { + var inventory = new CInventory(this, appid, contextid, transport.responseJSON.rgInventory, transport.responseJSON.rgCurrency); + + this.addInventory(inventory); + var elInventory = inventory.getInventoryElement(); + elInventory.hide(); + $('inventories').insert(elInventory); + + var elTags = inventory.getTagContainer(); + var elTagHolder = $('filter_options'); + if (elTagHolder && elTags) { + elTags.hide(); + elTagHolder.insert(elTags); + elTagHolder.addClassName('filter_collapsed'); + } + + var classArr = {}; + for (var ii in transport.responseJSON.rgInventory) { + var rgItem = transport.responseJSON.rgInventory[ii]; + if (!classArr[rgItem.classid]) { + classArr[rgItem.classid] = 1; + } else { + classArr[rgItem.classid]++; + } + } + //console.log(classArr); + + for (var ii in transport.responseJSON.rgInventory) { + var rgItem = transport.responseJSON.rgInventory[ii]; + if (classArr[rgItem.classid] && classArr[rgItem.classid] > 1 && rgItem.descriptions) { + if (!rgItem.descriptions[0].iscount) { + rgItem.descriptions.unshift({ + iscount: true, + type: 'html', + value: 'Number owned: ' + classArr[rgItem.classid] + '' + (g_bViewingOwnProfile ? ' (Select all)' : '') + }); + } + } + } + + if (appid == 570) { + $J.ajax({ + url: 'https://api.steampowered.com/IEconItems_570/GetPlayerItems/v0001/', + strSteamId: this.strSteamId, + data: { + SteamID: this.strSteamId, + key: apiKey + }, + success: function (data) { + if (!apiItems[this.strSteamId]) { + apiItems[this.strSteamId.toString()] = {}; + } + + if (data && data.result && data.result.status == 1) { + apiItems[this.strSteamId][appid] = data.result.items; + $J.each(apiItems[this.strSteamId][appid], function (i, o) { + var elIt = $J('div.item[id=item570_2_' + o.id + ']'); + if (o.equipped) { + elIt.addClass('item-equipped'); + elIt.each(function () { + this.rgItem.equipped = true; + }); + } + elIt.each(function () { + this.rgItem.defindex = o.defindex; + }); + }); + } + }, + error: function () { + + } + }); + } else if (appid == 440) { + $J.ajax({ + url: 'https://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/', + strSteamId: this.strSteamId, + data: { + SteamID: this.strSteamId, + key: apiKey + }, + success: function (data) { + if (!apiItems[this.strSteamId]) { + apiItems[this.strSteamId.toString()] = {}; + } + + if (data && data.result && data.result.status == 1) { + apiItems[this.strSteamId][appid] = data.result.items; + $J.each(apiItems[this.strSteamId][appid], function (i, o) { + var elIt = $J('div.item[id=item440_2_' + o.id + ']'); + if (o.equipped) { + elIt.addClass('item-equipped'); + elIt.each(function () { + this.rgItem.equipped = true; + }); + } + elIt.each(function () { + this.rgItem.defindex = o.defindex; + this.rgItem.apivalue = o; + }); + }); + } + if (TF2BP && TF2BP.SetPrices) { + TF2BP.SetPrices(appid); + } + }, + error: function () {} + }); + } + if (window.extprice) { + SetupExternalDropdown(g_ActiveInventory.appid); + if (ExternalPrices[appid]) { + var lastAPI = GetCookie('lastext_' + appid); + if (lastAPI != null) { + lastAPI = parseInt(lastAPI); + } else { + lastAPI = 0; + } + $J.each(ExternalPrices[appid].apis, function (idx, el) { + if (this.api && this.api.GetPrices) { + this.api.GetPrices(appid, inventory.rgInventory, (idx == lastAPI)); + } + }); + } + } + } else { + this.OnInventoryLoadFailed(transport, appid, contextid); + return; + } + + this.ShowInventoryIfActive(appid, contextid); + $J(window).trigger('resize.DynamicInventorySizing'); + + $J.each(itemsInTrades, function () { + var it = this; + if (it.appid == appid) { + var elIt = $J('div.item[id=item' + it.appid + '_' + it.context + '_' + it.id + ']'); + elIt.addClass('item-in-trade'); + } + }); + + if (g_bIsTrading) { + RedrawCurrentTradeStatus(); + } + }; +}; + +var numberOfRetries = 0, maxRetries = 10; +var dopplerPhaseName = { + 421: 'Phase 4', + 420: 'Phase 3', + 419: 'Phase 2', + 418: 'Phase 1', + 417: 'Black Pearl', + 416: 'Sapphire', + 415: 'Ruby' +}; + +function SortInventory() { + if ($J('#Lnk_SortItems').data('asc')) { + $J('#Lnk_SortItems').find('.item_market_action_button_contents').html('▲ ' + SIHLang.sort.sortitem); + $J('#Lnk_SortItems').data('asc', false); + SortItem(true); + } else { + $J('#Lnk_SortItems').find('.item_market_action_button_contents').html('▼ ' + SIHLang.sort.sortitem); + $J('#Lnk_SortItems').data('asc', true); + SortItem(false); + } +} +// +var SortItem = function (asc) { + // lastSort = asc; + var order = (asc ? 1 : -1); + var sortFunc = function (a, b) { + var aobj = a[0].rgItem; + var bobj = b[0].rgItem; + + var an = (aobj && aobj.extprice !== undefined) ? aobj.extprice : 0; + var bn = (bobj && bobj.extprice !== undefined) ? bobj.extprice : 0; + + if (an === bn) { + an = aobj.description.market_hash_name; + bn = bobj.description.market_hash_name; + } + + if (an === bn) { + an = a.assetid; + bn = b.assetid; + } + + if (an > bn) { + return order; + } + if (an < bn) { + return -1 * order; + } + return 0; + }; + + // var userInv= UserYou.rgContexts[730][2]["inventory"]; + g_ActiveInventory.m_rgItemElements.sort(sortFunc); + var curTags = Filter.rgCurrentTags; + var elFilter = Filter.elFilter; + var strLastFilter = Filter.strLastFilter; + // Filter.ClearTextFilter(); + Filter.ClearFilter(); + g_ActiveInventory.LayoutPages(); + Filter.strLastFilter = strLastFilter; + Filter.elFilter = elFilter; + Filter.elFilter.value = strLastFilter; + Filter.UpdateTagFiltering(curTags); + Filter.ReApplyFilter(); +}; + +var ModifyGamesTabs = function () { + //$J('.games_list_tabs').append($J('.games_list_tabs a.games_list_tab').clone()); + var numberOfGames = $J('.games_list_tabs a.games_list_tab').length; + var cIdx = $J('.games_list_tabs a.games_list_tab').index($J('.games_list_tabs .active')); + + if (numberOfGames > 10) { + var divCont = $J('
    '); + var divCtrl = $J('
    '); + var children = $J('.games_list_tabs').children().remove(); + divCont.append(children); + divCtrl.append('updown'); + divCtrl.find('.tab-up').click(function () { + divCont.stop(); + + var cPos = parseInt(divCont.scrollTop() / 56) * 56; + divCont.animate({scrollTop: cPos - 112}, 500); + return false; + }); + divCtrl.find('.tab-down').click(function () { + divCont.stop(); + var cPos = (parseInt(divCont.scrollTop() / 56)) * 56; + divCont.animate({scrollTop: cPos + 112}, 500); + return false; + }); + $J('.games_list_tabs').append(divCont); + $J('.games_list_tabs').append(divCtrl); + if (cIdx > 5) { + divCont.animate({scrollTop: cIdx * 56}, 500); + } + } +}; + +// var orgShowItemInventory = null; +// var ModifyShowItemInventory = function () { +// orgShowItemInventory = ShowItemInventory; +// ShowItemInventory = function (appid, contextid, assetid, bLoadCompleted) { +// orgShowItemInventory(appid, contextid, assetid, bLoadCompleted); +// SetupExternalDropdown(appid); +// if (ExternalPrices[appid]) { +// $J.each(ExternalPrices[appid].apis, function (idx, el) { +// if (this.api && this.api.GetPrices) { +// this.api.GetPrices(appid, g_ActiveInventory.rgInventory, (idx == 0)); +// } +// }); +// } +// } +// }; + +var loadPriceHistory = function (rgItem) { + // Load price history + $J('#pricehistory_container').show(); + $J('#pricehistory').hide(); + $J('#pricehistory_throbber').show(); + $J('#pricehistory_notavailable').hide(); + new Ajax.Request( `${window.location.protocol}//steamcommunity.com/market/pricehistory/`, { + method: 'get', + parameters: { + appid: rgItem.appid, + market_hash_name: GetMarketHashName( rgItem.description ) + }, + onSuccess: function( transport ) { SellItemDialog.OnPriceHistorySuccess( transport ); }, + onFailure: function( transport ) { SellItemDialog.OnPriceHistoryFailure( transport ); } + }); +}; + +var updateInfoWindow = function (item) { + SellItemDialog.m_item = item; + var elItem = $('market_sell_dialog_item'); + if (item.description.name_color) + elItem.style.borderColor = '#' + item.description.name_color; + if (item.description.background_color) + elItem.style.backgroundColor = '#' + item.description.background_color; + + var elItemImage = $('market_sell_dialog_item_img'); + if (item.description.is_stackable) { + elItemImage.src = ImageURL(item.description.icon_url, '96f', '58f'); + } else { + elItemImage.src = ImageURL(item.description.icon_url, '96f', '96f'); + } + + SellItemDialog.m_strName = GetEscapedNameForItem(item); + $('market_sell_dialog_item_name').update(SellItemDialog.m_strName); + $('market_sell_quantity_available_amt').update(item.amount); + + if (item.description.name_color) { + $('market_sell_dialog_item_name').style.color = '#' + item.description.name_color; + } else { + $('market_sell_dialog_item_name').style.color = ''; + } + + if (item.appid && g_rgAppContextData[item.appid]) { + var rgAppData = g_rgAppContextData[item.appid]; + $('market_sell_dialog_game_icon').src = rgAppData.icon; + $('market_sell_dialog_game_icon').alt = rgAppData.name; + $('market_sell_dialog_game_name').update(rgAppData.name); + $('market_sell_dialog_item_type').update(item.description.type); + $('market_sell_dialog_game_info').show(); + } else { + $('market_sell_dialog_game_info').hide(); + } + + if (item.amount == 1) { + $('market_sell_quantity_input').disable(); + + $('market_sell_quantity_label').hide(); + $('market_sell_quantity_input').hide(); + $('market_sell_quantity_available').hide(); + } else { + $('market_sell_quantity_label').show(); + $('market_sell_quantity_input').show(); + $('market_sell_quantity_available').show(); + } + + if ($J('#pricehistory_container').is(':visible')) loadPriceHistory(item); +}; + +var UpdateSellItem = function (item) { + if ($J('#ck_autoadjust').is(':checked')) { + if (item.description.lowestPriceW === undefined && !isSorting) { + SellItemDialog.b_isInterupted = true; + return false; + } + recalcPrice(item); + // var calPrice = CalculateSellingPrice(item.description.sellerPrice); + // if (calPrice <= 0) calPrice = item.description.sellerPrice; + // var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo['wallet_publisher_fee_percent_default']; + // var info = CalculateAmountToSendForDesiredReceivedAmount(calPrice, publisherFee); + // + // $J('#market_sell_currency_input').val(v_currencyformat(calPrice, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + // $J('#market_sell_buyercurrency_input').val(v_currencyformat(info.amount, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + // SellItemDialog.m_nConfirmedPrice = calPrice; + } + + updateInfoWindow(item); + return true; +}; + +var recalcPrice = function (item) { + var rgItem = item || g_ActiveInventory.selectedItem; + $J('#market_sell_currency_input').val(v_currencyformat(0, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + $J('#market_sell_buyercurrency_input').val(v_currencyformat(0, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + if (rgItem.description.lowestPriceW === undefined && rgItem.description.buyerPrice === undefined) return; + var calPrice, info, sellerPrice, buyerPrice; + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo.wallet_publisher_fee_percent_default; + + buyerPrice = rgItem.description.buyerPrice || GetPriceValueAsInt(getNumber(rgItem.description.lowestPriceW)); + + calPrice = CalculateSellingPrice(buyerPrice); + if (calPrice < 3) calPrice = buyerPrice; // minimal price is 0.03 + + info = CalculateFeeAmount(calPrice, publisherFee); + sellerPrice = calPrice - info.fees; + buyerPrice = calPrice; + + $J('#market_sell_currency_input').val(v_currencyformat(sellerPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + $J('#market_sell_buyercurrency_input').val(v_currencyformat(buyerPrice, GetCurrencyCode(g_rgWalletInfo.wallet_currency))); + SellItemDialog.m_nConfirmedPrice = sellerPrice; +}; + +var ModifySellingFunctions = function () { + SellItemDialog.orgOnSuccess = SellItemDialog.OnSuccess; + SellItemDialog.orgOnFailure = SellItemDialog.OnFailure; + SellItemDialog.newOnSuccess = function (transport) { + this.m_bWaitingForUserToConfirm = false; + this.m_bWaitingOnServer = false; + if (transport.responseJSON) { + //this.Dismiss(); + $('market_headertip_itemsold_itemname').update(this.m_strName); + if (this.m_item.description.name_color) { + $('market_headertip_itemsold_itemname').style.color = '#' + this.m_item.description.name_color; + } else { + $('market_headertip_itemsold_itemname').style.color = ''; + } + + //new Effect.BlindDown('market_headertip_itemsold', { duration: 0.25 }); + // g_ActiveInventory.selectedItem.description.marketable = 0; + $J(g_ActiveInventory.selectedItem.element).removeClass('selectedSell'); + $J(g_ActiveInventory.selectedItem.element).css('opacity', '0.3'); + $J('div.queue-item-container[data-id=' + g_ActiveInventory.selectedItem.assetid + ']').hide(200, function () { + // $J('div.queue-item-container[data-id=' + g_ActiveInventory.selectedItem.assetid + ']').remove(); + + var items = $J('.queue-item-container:visible'); + var itC = items.length; + if (itC > 0) { + $J('.queue-item-count').html(itC); + var nextItem = items.has('span.price')[0] || items[0]; + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + var rgItem = nextItem.rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + //var lbp = $J('#market_sell_buyercurrency_input').val(), lsp = $J('#market_sell_currency_input').val(); + if (!UpdateSellItem(rgItem)) return; + + //$J('#market_sell_buyercurrency_input').val(lbp); + //$J('#market_sell_currency_input').val(lsp); + + if ($J('#ck_autoaccept').is(':checked')) { + if ($J('#market_sell_dialog').is(':visible')) + window.setTimeout('SellItemDialog.OnConfirmationAccept({stop:function(){}});', window.delaylistings); + //window.setTimeout('$J("#market_sell_dialog_ok").trigger("click");', 200); + } else { + var $marketSellDialogOk = $('market_sell_dialog_ok'); + $marketSellDialogOk.show(); + $marketSellDialogOk.setOpacity('0'); + $marketSellDialogOk.fade({duration: 0.25, from: 0, to: 1}); + var $marketSellDialogBack = $('market_sell_dialog_back'); + $marketSellDialogBack.show(); + $marketSellDialogBack.setOpacity('0'); + $marketSellDialogBack.fade({duration: 0.25, from: 0, to: 1}); + $('market_sell_dialog_throbber').fade({duration: 0.25}); + } + } + //else { + // SellItemDialog.Dismiss(); + // $J('.item.selectedSell').removeClass('selectedSell'); + // $J('.similar-item').removeClass('similar-item'); + + // $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.selectitem); + // $J('#Lnk_ShowSellMulti').hide(); + // selectmode = false; + // SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + // $J('.item_market_actions').html(''); + //} + }); + + if ($J('.selectedSell').length <= 0) { + SellItemDialog.Dismiss(); + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.selectitem); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + selectmode = false; + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + $J('.item_market_actions').html(''); + } + } else { + this.DisplayError('There was a problem listing your item. Refresh the page and try again.'); + } + }; + + //SellItemDialog.Dismiss = function () { + // $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + // $J('div.queue-container').remove(); + // $J('#div_multi').hide(); + // $J('#ck_autoaccept,#ck_autoadjust').prop('checked', false); + // $J('#Txt_adjust').prop('disabled', false); + // hideModal('market_sell_dialog'); + // if (this.m_modal) + // this.m_modal.Dismiss(); + // HideHover(); + //} + + SellItemDialog.orgShow = SellItemDialog.Show; + + SellItemDialog.Show = function (item) { + SellItemDialog.orgShow(item); + SellItemDialog.m_modal.m_fnOnDismiss = function () { + $J('div.queue-container').remove(); + $J('#ck_autoaccept, #ck_autoadjust').prop('checked', false); + // $J('#Txt_adjust').prop('disabled', false); + $J('#div_multi').hide(); + HideHover(); + } + }; + + SellItemDialog.newOnFailure = function (transport) { + this.m_bWaitingOnServer = false; + + var queue = Effect.Queues.get('global'); + queue.each(function (effect) { + effect.cancel(); + }); + + var $marketSellDialogOk = $('market_sell_dialog_ok'); + $marketSellDialogOk.show(); + $marketSellDialogOk.setOpacity('0'); + $marketSellDialogOk.fade({duration: 0.25, from: 0, to: 1}); + var $marketSellDialogBack = $('market_sell_dialog_back'); + $marketSellDialogBack.show(); + $marketSellDialogBack.setOpacity('0'); + $marketSellDialogBack.fade({duration: 0.25, from: 0, to: 1}); + $('market_sell_dialog_throbber').fade({duration: 0.25}); + + if (transport.responseJSON && transport.responseJSON.message) { + this.DisplayError(transport.responseJSON.message); + var errMsgList = [ + 'Лот с этим предметом уже ожидает вашего согласия на продажу. Подтвердите или отмените его.', + 'You already have a listing for this item pending confirmation. Please confirm or cancel the existing listing.', + 'The item specified is no longer in your inventory or is not allowed to be traded on the Community Market.' + ]; + if (errMsgList.indexOf(transport.responseJSON.message) === -1) { + if ($J('#ck_autoaccept').is(':checked') && transport.responseJSON.message.indexOf('exceed the maximum wallet balance') < 0) { + window.setTimeout('SellItemDialog.OnConfirmationAccept({stop:function(){}});', 200); + } + } else { + $J(g_ActiveInventory.selectedItem.element).removeClass('selectedSell'); + $J(g_ActiveInventory.selectedItem.element).css('opacity', '0.3'); + $J('.queue-item-container[data-id="' + g_ActiveInventory.selectedItem.assetid + '"]').find('.queue-item-remove ').trigger('click'); + $J('#market_sell_dialog_skip').trigger('click'); + } + } else { + this.DisplayError('There was a problem listing your item. Refresh the page and try again.'); + } + }; + //g_bMarketAllowed + $J('#filter_options').after( + '
    ' + + '' + + 'Reload inventory (alt + r)' + + 'Select items' + + '' + + '' + + '' + + '' + + '
    ' + ); + if (window.selectallbuttons) { + $J('#Lnk_Sellmulti').after('Select all items'); + } + $J('#market_sell_dialog_accept_ssa_label').after(''); + + // var btnRefreshGraph = 'Refresh price graph'; + // $J('#market_sell_dialog_accept').before('
    '); + // $J('#market_sell_dialog_accept').after(btnRefreshGraph); + // $J('body').on('click', '#price_history_refresh', function () { + // loadPriceHistory(g_ActiveInventory.selectedItem); + // }); + + $J('.market_dialog_bottom_buttons').prepend(''); + $J('#market_sell_dialog_skip').click(function () { + var items = $J('.queue-item-container:visible'); + var nextItem = items.has('span.price')[0] || items[0]; + const rgItem = nextItem.rgItem; + $J('#market_sell_dialog_error').hide(); + g_ActiveInventory.selectedItem = rgItem; + updateInfoWindow(rgItem); + recalcPrice(rgItem); + + // Load price history + // $J('#pricehistory_container').show(); + $J('#pricehistory_container').hide(); + $J('#pricehistory').hide(); + // $J('#pricehistory_throbber').show(); + $J('#pricehistory_notavailable').hide(); + // new Ajax.Request( 'http://steamcommunity.com/market/pricehistory/', { + // method: 'get', + // parameters: { + // appid: rgItem.appid, + // market_hash_name: GetMarketHashName( rgItem.description ) + // }, + // onSuccess: function( transport ) { SellItemDialog.OnPriceHistorySuccess( transport ); }, + // onFailure: function( transport ) { SellItemDialog.OnPriceHistoryFailure( transport ); } + // }); + console.log('Skipping this item'); + setTimeout(function () { + // $J('#market_sell_dialog_back').trigger('click'); + document.getElementById('market_sell_dialog_ok').click(); + }, 500); + $J(this).hide(); + }); + + + // выбираем целевой элемент + var target = document.getElementById('market_sell_dialog_confirm_buttons'); + + // создаём экземпляр MutationObserver + var observer = new MutationObserver(function(mutations) { + // console.log(mutations); + // setTimeout(function () { + const isVisible = $J('#market_sell_dialog_ok').is(':visible'); + $J('#div_multi input[type=checkbox], #Txt_adjust, #cb_adtype').prop('disabled', isVisible); + if (isVisible) { + $J('#price_history_refresh').hide(); + } else { + $J('#price_history_refresh').show(); + if (!reqPriceHistory) loadPriceHistory(g_ActiveInventory.selectedItem); + } + reqPriceHistory = !isVisible; + // }, 300); + }); + + // конфигурация нашего observer: + var config = { attributes: true }; + + // передаём в качестве аргументов целевой элемент и его конфигурацию + observer.observe(target, config); + + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + + $J('#Ck_NoReload').click(function () { + if ($J(this).is(':checked')) { + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + } else { + SellItemDialog.OnSuccess = SellItemDialog.orgOnSuccess; + } + }); + $J('#Txt_adjust, #cb_adtype').change(function (e) { + if (e.target.id == 'Txt_adjust' && e.target.value === '') e.target.value = 0; + recalcPrice(); + }); + $J('#ck_autoadjust').change(function () { + const isChecked = $J(this).prop('checked'); + $J('#market_sell_currency_input, #market_sell_buyercurrency_input').prop('disabled', isChecked); + $J('#Txt_adjust, #cb_adtype').prop('disabled', !isChecked); + if (isChecked) recalcPrice(); + }); + $J('#Lnk_Reload').click(function () { + var it = g_ActiveInventory.selectedItem; + UserYou.ReloadInventory(it.appid, it.contextid); + cachePrices = {}; + selectmode = false; + $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.selectitem); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + SetupExternalDropdown(it.appid); + + return false; + }); + $J('#Lnk_Sellmulti').click(function () { + selectmode = !selectmode; + if (selectmode) { + $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.cancel); + $J('#Ck_NoReload').prop('checked', true); + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + SellItemDialog.OnFailure = SellItemDialog.newOnFailure; + } else { + CancelSelectAll(); + $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.selectitem); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + } + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + return false; + }); + $J('#Lnk_Sellall').click(function () { + $J('#Lnk_Sellmulti .item_market_action_button_contents').html(SIHLang.selectitem); + if (!$J('#tabcontent_inventory').find('#Lnk_Cancel').length) { + var cancelButton = '' + SIHLang.cancel +''; + $J('#Lnk_Sellall').after(cancelButton); + } + + $J('#Ck_NoReload').prop('checked', true); + $J('.equiped').remove(); + $J('.review').remove(); + + $J('div[id^="inventory_"]:visible.inventory_ctn').each(function (i) { + var $visiblePage = $J(this).find('.inventory_page:visible'); + $visiblePage.find('div.item:visible').each(function (i) { + if (!$J(this).hasClass('selectedSell')) { + if (this.rgItem && (this.rgItem.description.marketable || this.rgItem.appid == 753)) { + // g_ActiveInventory.LoadItemImage(this); + $J(this).addClass('selectedSell'); + } + } + }); + }); + + var itC = $J('.selectedSell').length; + if (itC > 0) { + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + $J('#Lnk_ShowSellMulti').show(); + if (g_ActiveInventory.appid == 753) { + $J('#Lnk_TurnIntoGems').show(); + $J('#Lnk_SendGifts').show(); + $J('#Lnk_Unpack').show(); + } + } + + selectmode = true; + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + SellItemDialog.OnFailure = SellItemDialog.newOnFailure; + return false; + }); + $J('#Lnk_ShowSellMulti').click(function () { + if ($J('.selectedSell').length > 0) { + $J('#div_multi input[type=checkbox]').prop('disabled', false); + $J('#div_multi').show(); + // $J('#ck_autoadjust').prop('checked', false); + var rgItem = $J('.selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + SellItemDialog.m_bWaitingOnServer = false; + SellItemDialog.Show(rgItem); + ShowQueue(); + } + return false; + }); + $J('#Lnk_TurnIntoGems').click(function () { + if ($J('.selectedSell').length > 0) { + //$J('#div_multi input[type=checkbox]').prop('disabled', false); + //$J('#div_multi').show(); + //$J('#ck_autoaccept').prop('checked', true); + //var rgItem = $J('.selectedSell')[0].rgItem; + ////g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + ////g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + ////SellItemDialog.m_bWaitingOnServer = false; + ////SellItemDialog.Show(rgItem); + + //var rgAJAXParams = { + // sessionid: g_sessionID, + // appid: rgItem.app_data.appid, + // assetid: rgItem.id, + // contextid: rgItem.contextid + //}; + var strActionURL = g_strProfileURL + "/ajaxgetgoovalue/"; + GrindDialog.Show(); + ShowQueue(1); + //$J.get(strActionURL, rgAJAXParams).done(function (data) { + // var $Content = $J(data.strHTML); + // var strDialogTitle = data.strTitle; + // ShowConfirmDialog(strDialogTitle, $Content).done(function () { + // GrindNextItem(); + // }); + //}); + } + return false; + }); + $J('#Lnk_SendGifts').click(function () { + var url = ''; + $J('.selectedSell').each(function () { + var rgItem = this.rgItem; + if (rgItem.appid == 753 && rgItem.contextid == 1) { + var isSent = false; + var msgSent = ''; + // проверяем чтобы gift не был отправлен ранее + if (rgItem.description.owner_descriptions && Array.isArray(rgItem.description.owner_descriptions)) { + var re = new RegExp('.*'); // ссылка на профиль получателя + isSent = rgItem.description.owner_descriptions.some(function (desc) { + var res = re.test(desc.value); + if (res) msgSent = rgItem.name + ': ' + desc.value.replace(/<[^>]*>/g, ''); // текст сообщения что gift был уже отправлен пользователю + return res; + }); + } + if (!isSent) { + url += rgItem.assetid + '/'; + } else { + alert(msgSent); + } + } + }); + + if (url != '') { + url = 'http://store.steampowered.com/checkout/sendgift/' + url + g_steamID; + window.location.href = url; + } else { + $J('#Lnk_SendGifts').hide(); + } + return false; + }); + + $J('#Lnk_Unpack').click(function () { + // var Modal = BuildBoosterModal( 'Unpacking booster pack', 753 ); + // var $Content = Modal.GetContent().find( '.booster_unpack_dialog' ); + // var $CardArea = $Content.find( '.booster_unpack_cardarea' ); + const $rgCards = []; + const reqData = []; + const CARDS_PER_BOOSTER_PACK = 3; + + $J('.selectedSell').each(function (idx, elem) { + const rgItem = elem.rgItem; + const market_hash_name = rgItem.description.market_hash_name; + if (rgItem.appid == 753 && rgItem.contextid == 6 && market_hash_name.toUpperCase().endsWith('BOOSTER PACK')) { + console.log(market_hash_name); + reqData.push({ + appid: rgItem.description.market_fee_app, + communityitemid: rgItem.assetid, + sessionid: g_sessionID + }); + } + }); + var submitUrl = `${g_strProfileURL}/ajaxunpackbooster/`; + if (reqData.length) { + Promise.all( + reqData.map(data => new Promise((resolve, reject) => $J.post(submitUrl, data).then(resolve).fail(reject))) + ).then(respValues => { + var $Content = $J('
    ', {'class': 'booster_unpack_dialog' } ); + + var $TitleArea = $J('
    ', {'class': 'booster_unpack_title' } ); + $Content.append( $TitleArea ); + + var $PostUnpackActions = $J('
    ', {'class': 'booster_unpack_actions post_unpack' } ); + + var $BtnClose = $J('
    ', {'class': 'btn_grey_white_innerfade btn_medium booster_unpack_closebtn' } ); + $BtnClose.append( $J('').text('Close') ); + $PostUnpackActions.append( $BtnClose ); + + respValues.map((respData, idx) => { + if (respData.rgItems && respData.rgItems.length > 0) { + var $CardArea = $J('
    ', {'class': 'booster_unpack_cardarea cardarea' + (idx + 1) } ); + for (let i = 0; i < CARDS_PER_BOOSTER_PACK; i += 1) { + var item = respData.rgItems[i]; + // if ( item.foil ) + // $PostUnpackActions.find('.foil_badge_progress').show(); + var $Card = $J('
    ', {'class': 'booster_unpack_card card_front card' + (i+1) } ); + var $Img = $J('', {'class': 'booster_unpack_card_image', src: item.image } ); + var $CardTitle = $J('
    ', {'class': 'booster_unpack_card_title'} ).text( item.name ); + var $CardSeries= $J('
    ', {'class': 'booster_unpack_card_title'}).text( 'Series %s'.replace( /%s/, item.series ) ); + $Card.append( $Img, $CardTitle, $CardSeries ); + $CardArea.append( $Card ); + // $rgCards.push( $Card ); + } + $Content.append( $CardArea ); + } + }); + + $Content.append( $PostUnpackActions ); + var Modal = ShowDialog( 'Unpacking booster pack', $Content, { bExplicitDismissalOnly: true } ); + $BtnClose.click( function() { Modal.Dismiss(); } ); + Modal.GetContent().find('.newmodal_close').fadeIn( 500 ); + Modal.SetDismissOnBackgroundClick( true ); + ReloadCommunityInventory(); + }).catch(reason => { + console.log(reason); + ShowAlertDialog( 'Unpacking booster pack', 'Sorry, there was a problem unpacking some booster pack. It may have already been unpacked. Please try again later.' ); + ReloadCommunityInventory(); + }); + } + }); + $J('body').on('click', '#Lnk_Cancel', function () { + CancelSelectAll(); + return false; + }); + $J('body').on('click', '.queue-item-remove', function () { + var p = $J(this).parent('.queue-item-container'); + var rgItemOrg = p[0].rgItem; + $J('#' + rgItemOrg.appid + '_' + rgItemOrg.contextid + '_' + p.data().id + '.selectedSell').removeClass('selectedSell'); + p.hide(100); + var items = $J('.selectedSell'); + var itC = items.length; + if (itC <= 0) { + SellItemDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + return false; + } + + var nextItem = items.has('span.price')[0] || items[0]; + var rgItem = nextItem.rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + $J('.queue-item-count').html(itC); + updateInfoWindow(rgItem); + recalcPrice(rgItem); + // UpdateSellItem(rgItem); + setTimeout(recalTotal, 200); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + return false; + }); + + // $J('body').on('click', '.queue-item-container', function () { + // const $item = $J(this); + // const rgItem = $item[0].rgItem; + // $J('#market_sell_dialog_error').hide(); + // g_ActiveInventory.selectedItem = rgItem; + // // g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + // // g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + // updateInfoWindow(rgItem); + // recalcPrice(rgItem); + // + // // Load price history + // $J('#pricehistory_container').show(); + // $J('#pricehistory').hide(); + // $J('#pricehistory_throbber').show(); + // $J('#pricehistory_notavailable').hide(); + // new Ajax.Request( 'http://steamcommunity.com/market/pricehistory/', { + // method: 'get', + // parameters: { + // appid: rgItem.appid, + // market_hash_name: GetMarketHashName( rgItem.description ) + // }, + // onSuccess: function( transport ) { SellItemDialog.OnPriceHistorySuccess( transport ); }, + // onFailure: function( transport ) { SellItemDialog.OnPriceHistoryFailure( transport ); } + // }); + // }); +}; + +var AddDialogHTML = function () { + var dialog = ''; + dialog += ''; + dialog += ''; + dialog += ''; + $J('body').append(dialog); +}; + +var CalculateSellingPrice = function (basePrice) { + var calPrice = basePrice; + if ($J('#cb_adtype').val() == '2') { + var per = Math.round((basePrice * parseFloat($J('#Txt_adjust').val())) / 100); + if (per == 0 && parseFloat($J('#Txt_adjust').val()) != 0) { + per = (parseFloat($J('#Txt_adjust').val()) < 0 ? -1 : 1); + } + calPrice = basePrice + per; + } else { + calPrice = basePrice + Math.floor(parseFloat($J('#Txt_adjust').val()) * 100); + } + + if (calPrice <= 0) calPrice = basePrice; + return calPrice; +}; + +var ContinueListing = function () { + if (!SellItemDialog.b_isInterupted) return; + + console.log('Resume listing'); + + var firstItem = $J('.queue-item-container:has(>span.price):visible'); + if (firstItem.length == 0) return; + var rgItem = firstItem[0].rgItem; + SellItemDialog.b_isInterupted = false; + + if (!UpdateSellItem(rgItem)) return; + + if ($J('#ck_autoaccept').is(':checked')) { + if ($J('#market_sell_dialog').is(':visible')) + window.setTimeout('SellItemDialog.OnConfirmationAccept({stop:function(){}});', window.delaylistings); + } +}; + +var SetupAcceptAllGifts = function () { + if ($J('#tabcontent_pendinggifts .pending_gift').length == 0) return; + var divCnt = $J('
    '); + var AcceptAllGifts = $J('Add all to my Steam Gift Inventory');// CreateMarketActionButton('yellow', '#', 'Add all to my Steam Gift Inventory'); + divCnt.append(AcceptAllGifts); + + $J(AcceptAllGifts).click(function (e) { + e.preventDefault(); + var giftIds = []; + $J('#tabcontent_pendinggifts .pending_gift > div[id^="pending_gift_"]').each(function () { + var thisID = $J(this).attr('id'); + var giftID = thisID.substring(13); + giftIds.push(giftID); + ShowAcceptGiftOptions(giftID); + DoAcceptGift(giftID, false); + }); + }); + + $J('#tabcontent_pendinggifts .pending_gifts_header').after(divCnt); +}; + +BuySetDialog = { + m_bInitialized: false, + m_oItemsToBuy: [], + m_fnDocumentKeyHandler: null, + + Initialize: function () { + //$('market_buyset_dialog_accept').observe('click', this.OnAccept.bindAsEventListener(this)); + $('market_buyset_dialog_cancel').observe('click', this.OnCancel.bindAsEventListener(this)); + $('market_buyset_dialog_reload').observe('click', this.OnReload.bindAsEventListener(this)); + + var $marketBuysetDialog = $('market_buyset_dialog'); + $marketBuysetDialog.style.visibility = 'hidden'; + $marketBuysetDialog.show(); + // TODO: Slider + $marketBuysetDialog.hide(); + $marketBuysetDialog.style.visibility = ''; + + this.m_bInitialized = true; + }, + + Show: function (items) { + if (!this.m_bInitialized) + this.Initialize(); + if (items.length == 0) return; + m_oItemsToBuy = items; + this.m_fnDocumentKeyHandler = this.OnDocumentKeyPress.bindAsEventListener(this); + $(document).observe('keydown', this.m_fnDocumentKeyHandler); + showModal('market_buyset_dialog', true); + this.OnReload({ + stop: function () {} + }); + }, + + OnCancel: function (event) { + this.Dismiss(); + event.stop(); + }, + + Dismiss: function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + hideModal('market_buyset_dialog'); + if (this.m_modal) + this.m_modal.Dismiss(); + }, + + OnAccept: function (event) { + event.stop(); + }, + + OnReload: function (event) { + event.stop(); + + $J('#lstParts').html('Working...'); + for (var i = 0; i < m_oItemsToBuy.length; i++) { + var it = m_oItemsToBuy[i]; + //var li = $J('
    '); + //li.html(it.name + ' (' + it.price + ')'); + //li[0].item = it; + RequestCacher.get({ + url: `${it.link}/render/?start=0&count=1&country=${g_rgWalletInfo.wallet_country}&language=${g_strLanguage}¤cy=${g_rgWalletInfo.wallet_currency}` + }).then(function (data) { + $J('#lstParts').find('img.loading').remove(); + if (data.success) { + var listDiv = $J(data.results_html); + $J('#lstParts').append(listDiv); + $J('#lstParts').find('.market_listing_table_header').remove(); + listDiv.find('a.item_market_action_button').each(function () { + var $row = $J(this).parents('.market_listing_row'); + var match = buyingExp.exec($J(this).attr('href')); + if (match) { + $J(this).attr('href', 'javascript:void(0);'); + // $J(this).find('.item_market_action_button_contents').html(SIHLang.quickbuy); + // AddItemHoverToElement(this, data.assets[match[2]][match[3]][match[4]]); + $J(this).click(function () { + $J(this).hide(); + var obj = { + listingid: match[1], + appid: match[2], + contextid: match[3], + id: match[4] + }; + var rgListing = data.listinginfo[obj.listingid] + var dat = { + sessionid: g_sessionID, + currency: g_rgWalletInfo.wallet_currency, + subtotal: rgListing.converted_price, + fee: rgListing.converted_fee, + total: rgListing.converted_price + rgListing.converted_fee, + quantity: 1 + }; + + //var setLink = 'http://steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + g_rgWalletInfo['wallet_currency'] + + // '&market_hash_name=' + data.assets[match[2]][match[3]][match[4]].market_hash_name; + + //var itemLink = "http://steamcommunity.com/market/priceoverview/?appid=" + obj.appid + "&country=" + g_strCountryCode + + // "¤cy=" + g_rgWalletInfo['wallet_currency'] + "&market_hash_name=" + data.assets[match[2]][match[3]][match[4]].market_hash_name; + //console.log(cachePrices[setLink]); + //cachePrices[setLink].owned = true; + //return false; + + $row.find('.market_listing_buy_button').append('Working...'); + $J.ajax({ + url: 'https://steamcommunity.com/market/buylisting/' + obj.listingid, + type: 'POST', + data: dat, + crossDomain: true, + xhrFields: {withCredentials: true} + }).done(function (data1) { + if ($row.is(':visible')) { + $row.find('.market_listing_buy_button').html('Success'); + } else { + alert('Success'); + } + }).fail(function (jqxhr) { + $row.find('.market_listing_buy_button img').remove(); + var data1 = $J.parseJSON(jqxhr.responseText); + if (data1 && data1.message) { + alert(data1.message); + } + }); + return false; + }); + } + }); + } + }); + } + const divInfoBlock = $J('#market_buyset_dialog_reload').siblings('div'); + divInfoBlock.css('height', '32px'); + divInfoBlock.css('line-height', '32px'); + divInfoBlock.css('text-align', 'right'); + divInfoBlock.html(`Updated at: ${new Date().toLocaleTimeString()}

    `); + }, + + OnDocumentKeyPress: function (event) { + if (event.keyCode == Event.KEY_ESC) { + this.Dismiss(); + event.stop(); + } + } +}; + +GrindDialog = { + m_bInitialized: false, + m_bIsDismissed: true, + m_fnDocumentKeyHandler: null, + m_modal: null, + m_elDialogContent: null, + + Initialize: function () { + //$('market_grind_dialog_accept').observe('click', this.OnAccept.bindAsEventListener(this)); + $('market_grind_dialog_cancel').observe('click', this.OnCancel.bindAsEventListener(this)); + $('market_grind_dialog_grind').observe('click', this.OnGrind.bindAsEventListener(this)); + + this.m_elDialogContent = $('market_grind_dialog'); + + this.m_elDialogContent.style.visibility = 'hidden'; + this.m_elDialogContent.show(); + // TODO: Slider + this.m_elDialogContent.hide(); + this.m_elDialogContent.style.visibility = ''; + + this.m_bInitialized = true; + }, + + Show: function () { + + if (!this.m_bInitialized) + this.Initialize(); + this.m_bIsDismissed = false; + this.m_fnDocumentKeyHandler = this.OnDocumentKeyPress.bindAsEventListener(this); + $(document).observe('keydown', this.m_fnDocumentKeyHandler); + this.m_modal = new CModal($J(this.m_elDialogContent)); + this.m_modal.Show(); + }, + + OnCancel: function (event) { + this.Dismiss(); + event.stop(); + }, + + Dismiss: function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + //hideModal('market_grind_dialog'); + + if (this.m_modal) + this.m_modal.Dismiss(); + this.m_bIsDismissed = true; + $J('div.queue-container').remove(); + }, + + OnAccept: function (event) { + event.stop(); + }, + + OnGrind: function (event) { + event.stop(); + GrindNextItem(); + }, + + OnDocumentKeyPress: function (event) { + if (event.keyCode == Event.KEY_ESC) { + this.Dismiss(); + event.stop(); + } + } +}; + +GenExpDialog = { + m_bInitialized: false, + m_oItem: null, + m_fnDocumentKeyHandler: null, + + Initialize: function () { + //$('market_getexp_dialog_accept').observe('click', this.OnAccept.bindAsEventListener(this)); + $('market_getexp_dialog_cancel').observe('click', this.OnCancel.bindAsEventListener(this)); + $('market_getexp_dialog_gen').observe('click', this.OnGenerate.bindAsEventListener(this)); + + var $marketGetexpDialog = $('market_getexp_dialog'); + $marketGetexpDialog.style.visibility = 'hidden'; + $marketGetexpDialog.show(); + // TODO: Slider + $marketGetexpDialog.hide(); + $marketGetexpDialog.style.visibility = ''; + $J('#market_getexp_dialog_exptext').click(function () { + $J(this).select(); + }); + this.m_bInitialized = true; + }, + + Show: function (item) { + if (!this.m_bInitialized) + this.Initialize(); + if (!item) return; + this.m_oItem = item; + this.m_fnDocumentKeyHandler = this.OnDocumentKeyPress.bindAsEventListener(this); + $(document).observe('keydown', this.m_fnDocumentKeyHandler); + this.CreateList(); + showModal('market_getexp_dialog', true); + }, + + CreateList: function () { + var container = $J('#market_getexp_dialog .tags-container'); + container.empty(); + for (var i = 0; i < this.m_oItem.length; i++) { + var tag = this.m_oItem[i]; + var ck = $J(''); + ck.data('exp', tag); + container.append(ck); + container.append(' ' + tag.category_name + ': ' + tag.name + '
    '); + } + this.OnGenerate({ + stop: function () { + } + }); + //console.log('1'); + }, + + OnCancel: function (event) { + this.Dismiss(); + event.stop(); + }, + + Dismiss: function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + hideModal('market_getexp_dialog'); + + if (this.m_modal) + this.m_modal.Dismiss(); + }, + + OnGenerate: function (event) { + event.stop(); + var container = $J('#market_getexp_dialog .tags-container'); + var exp = ''; + var cats = []; + container.find('input[type=checkbox]').each(function () { + if ($J(this).prop('checked')) { + var tag = $J(this).data('exp'); + if (cats.indexOf(tag.category) >= 0) return; + exp += ',"' + tag.category + '":"' + tag.internal_name + '"'; + cats.push(tag.category); + } + }); + if (exp.length > 0) exp = "{" + exp.substring(1) + "}"; + $J('#market_getexp_dialog_exptext').val(exp); + $J('#market_getexp_dialog_exptext').select(); + + }, + + OnDocumentKeyPress: function (event) { + if (event.keyCode == Event.KEY_ESC) { + this.Dismiss(); + event.stop(); + } + } +}; + +var addInventoryTotalPanel = function () { + invTotalPanel = '
    ' + + '
    ' + SIHLang.total + '
    ' + + '' + SIHLang.inventvalue + '' + + '
    '; + $J('#control-panel').next('div').attr('style', 'clear:both;'); + $J('#control-panel').after(invTotalPanel); +}; + +function hasExternalPricesAPI (appid) { + return Object.keys(ExternalPrices).includes(appid.toString()); +} + +var addSortItemsButton = function () { + //add "Sort items" button + var sortButton = '' + + '' + + '' + SIHLang.sort.sortitem + '' + + '' + + '' + + ''; + if (g_bViewingOwnProfile) { + $J(sortButton).insertBefore('#Lnk_Reload') + } else { + $J('#filter_options').after('
    ' + sortButton + '
    ') + } + if (!hasExternalPricesAPI(g_ActiveInventory.appid)) $J('#Lnk_SortItems').hide(); +}; + +setTimeout(function () { + //INVENTORY_PAGE_ITEMS = 36; + //INVENTORY_PAGE_WIDTH = 104 * 6 + sellcurrencyId = typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo.wallet_currency : 1; + if (typeof (window.currency) != 'undefined' && window.currency != '') { + currencyId = window.currency; + } else { + currencyId = sellcurrencyId; + } + + var qs = function (key) { + key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars + var match = location.search.match(new RegExp("[?&]" + key + "=([^&]+)(&|$)")); + return match && decodeURIComponent(match[1].replace(/\+/g, " ")); + }; + $J('.inventory_page_right .hover_item_name').after('

    '); + if (window.usevector) { + $J('.inventory_page_right .hover_item_name').after('use this as vector'); + var _mediumName = GetCookie('mediumname'); + var _mediumAppid = GetCookie('mediumappid'); + $J('#lnk_Medium').click(function () { + SetCookie('mediumname', g_ActiveInventory.selectedItem.description.market_hash_name, 365 * 10, '/'); + SetCookie('mediumappid', g_ActiveInventory.selectedItem.appid, 365 * 10, '/'); + getMediumPrice(g_ActiveInventory.selectedItem.description); + return false; + }); + + if (_mediumName && _mediumAppid) { + getMediumPrice({market_hash_name: _mediumName, appid: _mediumAppid}); + } + } + //$('.dd_price').html("Loading..."); + // apiKey = (window._apikey != '' ? window._apikey : apiKey); + apiKey = window._apikey; + + $J('body').on('click', '.item', function (e) { + //extimatePrice(g_ActiveInventory.selectedItem); + getLowestPriceHandler(); + $J('.equiped').remove(); + $J('.review').remove(); + //if (g_ActiveInventory.selectedItem.equipped) + // $J('.hover_item_name:visible').after('
    Equipped
    '); + // if (g_ActiveInventory.selectedItem.defindex) { + // var hero = ''; + // $J.each(g_ActiveInventory.selectedItem.tags, function (i, e) { + // var tag = g_ActiveInventory.selectedItem.tags[i]; + // //console.log(tag); + // if (tag.category === 'Hero') { + // //npc_dota_hero_legion_commander + // hero = tag.internal_name.substring(14); + // if (dotahatteryAlias[hero]) + // hero = dotahatteryAlias[hero]; + // } + // }); + // if (hero != '') + // $J('.hover_item_name:visible').after('Preview'); + // } + //$J.each(apiItems[g_ActiveUser.strSteamId], function (i, o) { + // if (o.id == g_ActiveInventory.selectedItem.id) { + // if (o.equipped) { + // $J('.hover_item_name:visible').after('
    Equiped
    '); + // } + // //$J(elDescriptions).prepend('
    Equiped
    '); + // return false; + // } + //}); + + if (selectmode) { + if (this.rgItem && (this.rgItem.description.marketable || this.rgItem.description.appid == 753)) { + $J(this).toggleClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + var p_market_hash_name = this.rgItem.description.market_hash_name; + var iclassid = this.rgItem.classid; + var bselected = $J(this).hasClass('selectedSell'); + if (e.ctrlKey) { + $J('.inventory_ctn:visible .inventory_page .item').each(function (i, el) { + if (this.rgItem.description.marketable && this.rgItem.classid == iclassid) { + if (bselected) { + // g_ActiveInventory.LoadItemImage(this); + $J(this).addClass('selectedSell'); + } else { + $J(this).removeClass('selectedSell'); + } + } + }); + } else if (bselected) { + $J('.inventory_ctn:visible .inventory_page .item').each(function (i, el) { + if (this.rgItem && this.rgItem.description && this.rgItem.description.market_hash_name == p_market_hash_name && this.rgItem.description.marketable) { + $J(this).addClass('similar-item'); + } + }); + } + + if (e.shiftKey && lastSelectedItem) { + var lastContainer = $J(lastSelectedItem).parent('.itemHolder'); + var itemsPage = lastContainer.parent('.inventory_page'); + var idx1 = lastContainer.index(), idx2 = $J(this).parent('.itemHolder').index(), + pidx1 = itemsPage.index(), pidx2 = $J(this).parents('.inventory_page').index(); + + if ((pidx1 == pidx2 && idx1 > idx2) || (pidx2 < pidx1)) { + var tmp = idx1; + idx1 = idx2; + idx2 = tmp; + } + //console.log(pidx1 + '-' + idx1 + ' ' + pidx2 + '-' + idx2); + for (var pi = pidx1; pi <= pidx2; pi++) { + var filter = '.inventory_ctn:visible .inventory_page:eq(' + pi + ') .itemHolder'; + if (pi == pidx1) { + filter += ':gt(' + idx1 + ')'; + + if (pi == pidx2) { + filter += ':lt(' + (idx2 - idx1) + ')'; + } + } else if (pi == pidx2) { + filter += ':lt(' + idx2 + ')'; + } + + $J(filter + '[style!="display: none;"] .item').each(function () { + if (this.rgItem && (this.rgItem.description.marketable || this.rgItem.description.appid == 753)) { + $J(this).addClass('selectedSell'); + } + }); + + //for (var i = idx1 + 1; i <= idx2; i++) { + // itemsPage.find('.itemHolder:eq(' + i + ')[style!="display: none;"] .item ').addClass('selectedSell'); + //} + } + + if (itemsPage.is(':visible')) { + + } + } + + var itC = $J('.selectedSell').length; + if (itC > 0) { + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html((itC > 1 ? SIHLang.sellnitem.replace('$1', itC) : SIHLang.sell1item)); + $J('#Lnk_ShowSellMulti').show(); + if (g_ActiveInventory.appid == 753) { + $J('#Lnk_TurnIntoGems').show(); + $J('#Lnk_SendGifts').show(); + $J('#Lnk_Unpack').show(); + } + } else { + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + } + + lastSelectedItem = this; + } + return false; + } + }); + + $J('body').on('click', '.floatbutton', function () { + const $btn = $J(this); + const $parent = $btn.parents('.descriptor'); + const $curItem = $J('.item.activeInfo'); + const rgItem = $curItem[0].rgItem; + + const updateFloatValue = function (data) { + const floatValue = ` +
    +
    Float Value: ${data.iteminfo.floatvalue}
    +
    Paint Seed: ${data.iteminfo.paintseed}
    +
    + `; + $parent.html(floatValue); + rgItem.floatvalue = data.iteminfo.floatvalue; + rgItem.paintseed = data.iteminfo.paintseed; + if (!$curItem.find('.float-value').length) { + $curItem.append(`
    Float: ${data.iteminfo.floatvalue.toFixed(4)}
    `); + } + }; + + if (!rgItem.floatvalue) { + const actionLink = rgItem.description.actions[0].link + .replace('%owner_steamid%', g_ActiveUser.strSteamId) + .replace('%assetid%', rgItem.assetid); + $btn.hide(); + $btn.siblings('.spinner').show(); + chrome.runtime.sendMessage(SIHID, { type: 'floatvalue', data: actionLink }, function (data) { + updateFloatValue(data) + }); + } else { + updateFloatValue({ iteminfo: { floatvalue: rgItem.floatvalue, paintseed: rgItem.paintseed }}); + } + }); + + $J('body').on('click', '#bt_quick_sell', function () { + var itemsAmount = $J('.queue-item-container:visible').length; + var currentItem = 0; + var time = 200; + + function applyItem() { + if (currentItem == itemsAmount) { + return; + } + + document.getElementById('bt_quick_sell').innerText = 'Selling...'; + document.getElementById('market_sell_dialog_accept_ssa').checked = true; + document.getElementById('ck_autoaccept').click(); + document.getElementById('ck_autoaccept').checked = true; + document.getElementById('ck_autoadjust').click(); + document.getElementById('ck_autoadjust').checked = true; + document.getElementById('market_sell_dialog_accept').click(); + document.getElementById('market_sell_dialog_ok').click(); + + // if (currentItem++ < itemsAmount) { + // setTimeout(function () { + // applyItem(); + // }, time); + // } + } + + applyItem(); + return false; + }); + + //var btSellSelected = 'Sell selected items' + //$J('.item_market_actions').append(btSellSelected); + if (g_bViewingOwnProfile) { + ModifySellingFunctions(); + ModifyMarketActions(); + } + + ModifyDescriptionFunction(); + AddDialogHTML(); + ModifyItemDisplay(); + SetupAcceptAllGifts(); + + if (window.extprice) { + var divRight = $J('
    '); + var divExtPrices = $J(`
    ${SIHLang.externalprices}:
    `); + var cb = $J(''); + + divExtPrices.append(cb); + divRight.append(divExtPrices); + + cb.change(function () { + var _api = ExternalPrices[g_ActiveInventory.appid].apis[parseInt($J(this).val())]; + if (_api && _api.api && _api.api.SetPrices) { + _api.api.SetPrices(g_ActiveInventory.appid, _api.code); + SetCookie('lastext_' + g_ActiveInventory.appid, $J(this).val(), 356); + } + }); + $J('#inventory_pagecontrols').before(divRight); + if (g_ActiveInventory && g_ActiveInventory.appid) { + SetupExternalDropdown(g_ActiveInventory.appid); + } + // ModifyShowItemInventory(); + + // watch for incoming # urls + $J(window).on('hashchange', function() { + OnLocationChange( null, window.location.hash ); + SetupExternalDropdown(g_ActiveInventory.appid); + }); + addSortItemsButton(); + // if (g_ActiveInventory.appid == 730) { + // } + } + + var inventoryLink = $J('.whiteLink').attr('href').split(':')[1]; + // if (window.inventoryprice && window.userUrl.startsWith(inventoryLink)) { + if (window.inventoryprice) { + addInventoryTotalPanel(); + + $J('.games_list_tab').on('click', function () { + $J('#total-price').text(`${SIHLang.total || ''}`); + }); + + $J('body').on('click', '.lnk_inventory_price', function () { + // var appId = $J('.games_list_tab.active').attr('href').substr(1); + var $total = $J('#total-price'); + $total.text(`${SIHLang.loading || ''}`); + if (g_ActiveInventory.appid == 730) { + chrome.runtime.sendMessage(SIHID, {type: 'GetInventoryValue', data: g_ActiveUser.strSteamId}, function (resp) { + if (resp.success) { + $total.text(ExchangeRates.Format(resp.value)); + } else { + inventoryPrice = 0; + $total.text("Error! Sorry :'("); + // if service unavailable then calc total by old method + // GetAllInventoryPrice($J('div[id^="inventory_"]:visible')); + } + }); + } else { + setTimeout(function () { + inventoryPrice = 0; + GetAllInventoryPrice($J('div[id^="inventory_"]:visible')); + }, 1000); + } + + return false; + }); + } + if (window.tradableinfo) { + $J('body').on('click', '#tradable-msg-holder .hide-msg', function () { + $J(this).parent().remove(); + }); + showNonTradableItems(); + } + if (window.simplyinvent) { + ModifyGamesTabs(); + } + if (window.gpdelayscc) { + PriceQueue._successDelay = window.gpdelayscc; + } + if (window.gpdelayerr) { + PriceQueue._failureDelay = window.gpdelayerr; + } + + $J('.games_list_tab').click(function () { + $J('#Lnk_SortItems').find('.item_market_action_button_contents').html(SIHLang.sort.sortitem); + $J('#Lnk_SortItems').data('asc', null); + if (hasExternalPricesAPI(g_ActiveInventory.appid)) { + g_ActiveInventory.LoadCompleteInventory().done(function () { + if ($J('#Lnk_SortItems').length) { + $J('#Lnk_SortItems').show(); + } else { + addSortItemsButton(); + if (!$J('.price-holder').length) addInventoryTotalPanel(); + } + }); + } else { + $J('#Lnk_SortItems').hide(); + } + }); + + + ReloadLang(); + +}, 10); + +var SetupExternalDropdown = function (appid) { + $J('#cb_ExternalPrices').empty(); + if (ExternalPrices[appid]) { + var lastAPI = GetCookie('lastext_' + appid); + if (lastAPI != null) { + lastAPI = parseInt(lastAPI); + } else { + lastAPI = 0; + } + var rgDeferreds = g_ActiveInventory.LoadCompleteInventory().done(function () { + for (var i = 0; i < g_ActiveInventory.m_cPages; i++) { + g_ActiveInventory.EnsurePageItemsCreated(i); + } + $J.each(ExternalPrices[appid].apis, function (idx, el) { + if (this.api && this.api.GetPrices) { + var opt = $J(''); + opt.text(this.name); + if (idx == lastAPI || this.isApproved) { + opt.prop('selected', true); + } + $J('#cb_ExternalPrices').append(opt); + this.api.GetPrices(appid, {}, (idx == lastAPI)); + } + }); + }); + } +}; + +var econItemExp = /data-economy-item="(\d+)\/(\d+)\/(\d+)\/(\d+)"/gi; +var GetItemsInTrades = function () { + $J.ajax({ + url: window.location.protocol + window.userUrl + 'tradeoffers/sent/' + }).done(function (res) { + var m = null; + while (m = econItemExp.exec(res)) { + itemsInTrades.push({ + id: m[3], + appid: parseInt(m[1]), + context: parseInt(m[2]) + }); + var elIt = $J('div.item[id=item' + m[1] + '_' + m[2] + '_' + m[3] + ']'); + elIt.addClass('item-in-trade'); + } + }); +}(); + +var CancelSelectAll = function () { + $J('#Lnk_ShowSellMulti').hide(); + $J('#Lnk_TurnIntoGems').hide(); + $J('#Lnk_SendGifts').hide(); + $J('#Lnk_Unpack').hide(); + + // $J('div[id^="inventory_"]').each(function (i) { + // var $itemsInInventory = $J(this).find('div[id^="item"].item.selectedSell'); + // $itemsInInventory.each(function (i) { + // $J(this).removeClass('similar-item').removeClass('selectedSell'); + // }); + // }); + var items = $J(g_ActiveInventory.getInventoryElement()).find('div.item.selectedSell'); + items.each(function (idx, elem) { + $J(elem).removeClass('similar-item').removeClass('selectedSell'); + }); + + selectmode = false; + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + $J('#Lnk_Cancel').remove(); +}; + +var GetAllInventoryPrice = function (inventar) { + inventar.find('div.item').each(function () { + if (this.rgItem.appid == 753 && this.rgItem.contextid == 3) return; + var dataEconomyItem = $J(this).attr('id').split('_'); + dataEconomyItem.push(UserYou.strSteamId); + var strURL = null, appId = dataEconomyItem[0]; + + if (dataEconomyItem.length == 3 || dataEconomyItem.length == 4) { + if (appId == 'classinfo') { + var classId = dataEconomyItem[2]; + var instanceId = (dataEconomyItem.length > 3 ? dataEconomyItem[3] : 0); + + appId = dataEconomyItem[1]; + strURL = 'economy/itemclasshover/' + appId + '/' + classId + '/' + instanceId + '?content_only=1&l=english'; + } else { + var contextId = dataEconomyItem[1]; + var assetId = dataEconomyItem[2]; + var currentItem = cacheItems[appId + '/' + contextId + '/' + assetId]; + + if (currentItem != null && currentItem.lowest_price !== undefined) { + var price = currentItem.lowest_price.replace(',', '.').split(' '); + inventoryPrice += parseFloat(price[0]); + $J('#total-price').text(inventoryPrice.toFixed(2) + ' ' + price[1]); + return true; + } + + strURL = 'economy/itemhover/' + appId + '/' + contextId + '/' + assetId + '?content_only=1&omit_owner=1&l=english'; + if (dataEconomyItem.length == 4 && dataEconomyItem[3]) { + var strOwner = dataEconomyItem[3]; + strURL += (strOwner.indexOf('id:') == 0) ? '&o_url=' + strOwner.substr(3) : '&o=' + strOwner; + } + } + + RequestCacher.get({ + url: window.location.protocol + '//steamcommunity.com/' + strURL, + cache: true + }).then(function (data) { + var match = itemRegExp.exec(data); + if (match) { + eval(match[0].replace('BuildHover', 'CheckItem')); + } + }); + } + }); +}; + +var CheckItem = function (prefix, item, owner) { + var cacheId = item.appid + '/' + item.contextid + '/' + item.id; + var sItem = item || g_ActiveInventory.selectedItem.description; + + if (sItem.appid == 753 && sItem.actions && sItem.actions[0].link && sItem.actions[0].link.startsWith('http://store.steampowered.com/app/')) { + return; + } + + if (!sItem.market_hash_name) { + sItem.market_hash_name = sItem.name; + } + + var itemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=' + sItem.appid + + '&country=' + g_strCountryCode + + '¤cy=' + currencyId + + '&market_hash_name=' + encodeURIComponent(sItem.market_hash_name); + + RequestCacher.get({ + type: 'GET', + url: itemLink + }).then((response) => { + if (response.success) { + cacheItems[cacheId] = response; + if (response.lowest_price) { + var lowest_price = response.lowest_price.replace(',', '.').split(' '); + var price = parseFloat(getNumber(response.lowest_price)); + if (!isNaN(price)) { + inventoryPrice += price; + var formatPrice = v_currencyformat(inventoryPrice * 100, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + $J('#total-price').text(formatPrice); + } + } + } + }); +}; + +function showNonTradableItems() { + $J('body').append('
    Loading...
    '); + + var nonTradableCounter = 0; + var tradableDates = []; + var assets = []; + var gameData = getUserGames(); + var counter = 0; + var dataSize = gameData.length; + + function getGameInfo() { + if (counter >= dataSize) return; + + RequestCacher.get({ + // method: 'GET', + url: `${location.origin}${location.pathname}json/${gameData[counter].id}/${gameData[counter].param}` + }).then(function (res) { + if (res.success) { + var items = res.rgDescriptions; + for (var i in items) { + if (!items[i].tradable && items[i].cache_expiration !== undefined) { + var tradableDate = new Date(items[i].cache_expiration).getTime(); + var time = Math.floor(tradableDate / 1000); + Object.keys(res.rgInventory).forEach(itemID => { + const invItem = res.rgInventory[itemID]; + if (`${invItem.classid}_${invItem.instanceid}` === i) { + nonTradableCounter += 1; + assets.push({ + appid: items[i].appid, + name: (items[i].market_hash_name || items[i].market_name || items[i].name) + }); + } + }); + tradableDates.push(parseInt(time)); + } + } + } + + if (++counter === dataSize) { + if (nonTradableCounter) { + tradableDates.sort(); + $J('#tradable-msg-holder').html(makeItemsInfoMessage(nonTradableCounter, tradableDates[0], tradableDates[tradableDates.length - 1])); + getNonTradableItemsPrice(assets); + } else { + $J('#tradable-msg-holder').text('All items are tradable.'); + setTimeout(function () { + $J('#tradable-msg-holder').remove(); + }, 5000); + } + } else { + getGameInfo(); + } + }).catch((e) => { console.error(e); getGameInfo(); }); + } + getGameInfo(); +} + +function getUserGames() { + var apps = [730, 570, 440], data = []; + + $J('.games_list_tab').each(function () { + var gameId = this.getAttribute('href').substr(1); + var param = (apps.indexOf(parseInt(gameId)) !== -1) ? 2 : 1; + data.push({id: gameId, param: param}); + }); + + return data; +} + +function getNonTradableItemsPrice(assets) { + PriceQueue._successDelay = 600; + var totalPrice = 0; + var size = assets.length; + + for (var i = 0; i < size; ++i) { + var itemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=' + assets[i].appid + + '&country=' + g_strCountryCode + + '¤cy=' + currencyId + + '&market_hash_name=' + encodeURIComponent(assets[i].name); + + PriceQueue.GetPrice({ + method: 'get', + // RequestCacher.get({ + url: itemLink, + success: function(res) { + if (res.success && res.lowest_price) { + totalPrice += parseFloat(getNumber(res.lowest_price)); + var formatPrice = v_currencyformat(totalPrice * 100, GetCurrencyCode(g_rgWalletInfo.wallet_currency)); + $J('#tradable-msg-holder .non-tradable-total').text(formatPrice); + } + }, + error: function() {} + // }).catch(); + }); + } +} + +function makeItemsInfoMessage(count, timeStart, timeEnd) { + return `${count} ${SIHLang.nontradable.counter}. +
    ${SIHLang.nontradable.startdate}: ${timeStart ? formatDate(timeStart) : 'UNKNOWN'}. +
    ${SIHLang.nontradable.lastdate}: ${timeEnd ? formatDate(timeEnd) : 'UNKNOWN'}. +
    ${SIHLang.nontradable.totalprice}:
    + x`; +} + +function findDate(str) { + var time = 0; + try { + if (str.toLowerCase().indexOf('tradable after') !== -1) { + var value = str.replace(taradableStrExp, ''); + if (value.indexOf('[date]') !== -1) { + time = /\d+/.exec(value)[0]; + } else { + var tradableDate = new Date(value).getTime(); + time = Math.floor(tradableDate / 1000); + } + } + } catch (err) {} + return time; +} diff --git a/js/inventprice_140906.script.js.exclude b/js/inventprice_140906.script.js.exclude new file mode 100644 index 0000000..19ee1f9 --- /dev/null +++ b/js/inventprice_140906.script.js.exclude @@ -0,0 +1,1323 @@ + +var lowestPriceWithFeeRegExp = /\s*(((?!Sold).)*?)\s*<\/span>/i; +var lowestPriceWithoutFeeRegExp = /\s*(((?!Sold).)*?)\s*<\/span>/i; +var insGemExp = /(((?!:).)*?): \d+<\/span>
    Inscribed Gem<\/span>/i; +var kinGemExp = /(((?!<).)*?)<\/span>
    Kinetic Gem<\/span>/i; +var priGemExp = /(((?!<).)*?)<\/span>
    Prismatic Gem<\/span>/i; +var ethGemExp = /(((?!<).)*?)<\/span>
    Ethereal Gem<\/span>/i; +var corGemExp = /(((?!:).)*?): \d+<\/span>
    Foulfell Shard<\/span>/i; +var masGemExp = /(((?!:).)*?): \d+<\/span>
    Rune of the Duelist Indomitable<\/span>/i; +var buyingExp = /javascript:BuyMarketListing\('listing', '(\d+)', (\d+), '(\d+)', '(\d+)'\)/; +var cachePrices = {}; +var sellingStack = {}; +var selectmode = false; +var currencyId = 1; +var lastSelectedItem = null; +var apiItems = {}; +var someIds = ['76561198090644557', 'abcdef', '76561198028005207']; +var checkPrice = function () { + var currentIdx = $J('#iteminfo0').is(':visible') ? 0 : 1; + var name = $J('#iteminfo' + currentIdx + '_item_name').text(); + getLowestPriceHandler(); +} + +var reloadDes = function () { + var sOldInfo = 'iteminfo' + iActiveSelectView; + var elDescriptors = $(sOldInfo + '_item_descriptors'); + PopulateDescriptions(elDescriptors, g_ActiveInventory.selectedItem.descriptions); +} + +var getSetLink = function (d, sItem, isGenuine) { + var itname = d.market_hash_name || d.value; + //if (itname.indexOf('The ') == 0) itname = itname.substring(4); + var setLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=' + (isGenuine ? 'Genuine%20' : '') + encodeURIComponent(itname); + d.setLink = setLink; + if (cachePrices[setLink] && cachePrices[setLink].lowestPrice) { + d.app_data.price = cachePrices[setLink].lowestPrice; + d.app_data.market_hash_name = cachePrices[setLink].market_hash_name; + d.app_data.owned = cachePrices[setLink].owned; + + //d.value = '' + d.value + ' (' + cachePrices[setLink].lowestPrice + ')'; + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + return; + } + else { + //if (itname.indexOf('The ') == 0) itname = itname.substring(4); + cachePrices[setLink] = { market_hash_name: (isGenuine ? 'Genuine ' : '') + itname }; + //var owned = false; + var exp = new RegExp('.*' + cachePrices[setLink].market_hash_name.replace('The ', '(The )?') + '$'); + //console.log(exp); + $J.each(g_ActiveInventory.rgInventory, function () { + if (exp.test(this.market_hash_name)) { + cachePrices[setLink].market_hash_name = this.market_hash_name; + cachePrices[setLink].owned = true; + return false; + } + }); + } + $J.ajax({ + method: "GET", + url: setLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + if (response.median_price) { + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + if (sItem === g_ActiveInventory.selectedItem) { + for (var k = 0; k < sItem.descriptions.length; k++) { + var dd = sItem.descriptions[k]; + if (dd.setLink == this.url) { + dd.app_data.price = cachePrices[this.url].lowestPrice; + dd.app_data.market_hash_name = cachePrices[this.url].market_hash_name; + dd.app_data.owned = cachePrices[this.url].owned; + //dd.value = '' + dd.value + ' (' + cachePrices[this.url].lowestPrice + ')'; + break; + } + } + reloadDes(); + } + } + else if (itname.indexOf('The ') == 0) { + d.market_hash_name = itname.substring(4); + getSetLink(d, sItem, isGenuine); + } + } + else if (itname.indexOf('The ') == 0) { + d.market_hash_name = itname.substring(4); + getSetLink(d, sItem, isGenuine); + } + }, + error: function () { + if (itname.indexOf('The ') == 0) { + d.market_hash_name = itname.substring(4); + getSetLink(d, sItem, isGenuine); + } + } + }); + +} + +var getLowestPriceHandler = function (gitem, callback) { + var sItem = gitem || g_ActiveInventory.selectedItem; + var theItemString = encodeURIComponent(name); + // from Steam's community market website + var appID = g_ActiveInventory.appid; + //var marketLink = sItem.appid + '/' + sItem.market_hash_name + '/'; + $J('.dd_price').html("Loading..."); + var isGenuine = false; + var itemLink = window.location.protocol + "//steamcommunity.com/market/priceoverview/?appid=" + sItem.appid + "&country=" + g_strCountryCode + "¤cy=" + currencyId + "&market_hash_name=" + encodeURIComponent(sItem.market_hash_name); + var marketLink = window.location.protocol + "//steamcommunity.com/market/listings/" + sItem.appid + "/" + encodeURIComponent(sItem.market_hash_name); + if (cachePrices[itemLink] && cachePrices[itemLink].nofeePrice) { + sItem.nofeePrice = cachePrices[itemLink].nofeePrice; + sItem.lowestPrice = cachePrices[itemLink].lowestPrice; + } + else { + cachePrices[itemLink] = { market_hash_name: sItem.market_hash_name, owned: true }; + } + + $J.each(sItem.tags, function () { + //console.log((this.category == 'Quality' && this.internal_name == 'genuine')); + isGenuine = (isGenuine || (this.category == 'Quality' && this.internal_name == 'genuine')); + if (isGenuine) return false; + }) + for (var i = 0; i < sItem.descriptions.length; i++) { + var d = sItem.descriptions[i]; + if (d.type != 'html' && d.value.indexOf('Inscribed Gem') < 0 && d.value.indexOf('Kinetic Gem') < 0 && d.value.indexOf('Prismatic Gem') < 0 && d.value.indexOf('Ethereal Gem') < 0) continue; + if (d.app_data && !d.app_data.is_itemset_name && !d.app_data.price && !d.app_data.limited) { + getSetLink(d, sItem, isGenuine); + } + + var ematch; + while (ematch = insGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Inscribed ' + ematch[1]; + var nText = ematch[0].replace('Inscribed Gem', 'Inscribed Gem (Loading)'); + if (cachePrices[gemLink] && cachePrices[gemLink].lowestPrice) { + d.value = d.value.replace('Inscribed Gem', 'Inscribed Gem (' + cachePrices[gemLink].lowestPrice + ')'); + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + continue; + } + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Inscribed Gem (Loading)', 'Inscribed Gem (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Inscribed Gem (Loading)', 'Inscribed Gem'); + + + }, + error: function () { + d.value = d.value.replace('Inscribed Gem (Loading)', 'Inscribed Gem'); + } + }); + } + + while (ematch = kinGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Kinetic: ' + ematch[1]; + var nText = ematch[0].replace('Kinetic Gem', 'Kinetic Gem (Loading)'); + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Kinetic Gem (Loading)', 'Kinetic Gem (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Kinetic Gem (Loading)', 'Kinetic Gem'); + }, + error: function () { + d.value = d.value.replace('Kinetic Gem (Loading)', 'Kinetic Gem'); + } + }); + } + + while (ematch = masGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Rune%20of%20the%20Duelist%20Indomitable'; + var nText = ematch[0].replace('Rune of the Duelist Indomitable', 'Rune of the Duelist Indomitable (Loading)'); + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Rune of the Duelist Indomitable (Loading)', 'Rune of the Duelist Indomitable (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Rune of the Duelist Indomitable (Loading)', 'Rune of the Duelist Indomitable'); + }, + error: function () { + d.value = d.value.replace('Rune of the Duelist Indomitable (Loading)', 'Rune of the Duelist Indomitable'); + } + }); + } + + while (ematch = corGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Foulfell Shard'; + var nText = ematch[0].replace('Foulfell Shard', 'Foulfell Shard (Loading)'); + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Foulfell Shard (Loading)', 'Foulfell Shard (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Foulfell Shard (Loading)', 'Foulfell Shard'); + }, + error: function () { + d.value = d.value.replace('Foulfell Shard (Loading)', 'Foulfell Shard'); + } + }); + } + + while (ematch = ethGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Ethereal: ' + ematch[1]; + var nText = ematch[0].replace('Ethereal Gem', 'Ethereal Gem (Loading)'); + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Ethereal Gem (Loading)', 'Ethereal Gem (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Ethereal Gem (Loading)', 'Ethereal Gem'); + }, + error: function () { + d.value = d.value.replace('Ethereal Gem (Loading)', 'Ethereal Gem'); + } + }); + } + + while (ematch = priGemExp.exec(d.value)) { + //console.log(ematch); + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + currencyId + '&market_hash_name=Prismatic: ' + ematch[1]; + var nText = ematch[0].replace('Prismatic Gem', 'Prismatic Gem (Loading)'); + d.value = d.value.replace(ematch[0], nText); + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + + var lp = 0, nfp = 0; + if (response.success) { + cachePrices[this.url] = new Object(); + cachePrices[this.url].lowestPrice = lp = response.lowest_price; + cachePrices[this.url].nofeePrice = nfp = response.median_price; + + d.value = d.value.replace('Prismatic Gem (Loading)', 'Prismatic Gem (' + lp + ')'); + + if (sItem === g_ActiveInventory.selectedItem) + reloadDes(); + } + else + d.value = d.value.replace('Prismatic Gem (Loading)', 'Prismatic Gem'); + }, + error: function () { + d.value = d.value.replace('Ethereal Gem (Loading)', 'Ethereal Gem'); + } + }); + } + } + + if (sItem.lowestPrice) { + $J('.dd_price').html("" + sItem.lowestPrice + ""); + $J('.dd_price').find('a').attr('href', marketLink); + if (callback) + callback(sItem); + return; + } + + if (!sItem.marketable) { + $J('.dd_price').html("Not Marketable"); + if (callback) + callback(sItem); + return; + } + + $J.ajax({ + method: "GET", + url: itemLink, + success: function (response) { + if (response.success) { + //cachePrices[itemLink] = new Object(); + cachePrices[itemLink].lowestPrice = sItem.lowestPrice = response.lowest_price; + cachePrices[itemLink].nofeePrice = sItem.nofeePrice = response.median_price; + //cachePrices[itemLink].market_hash_name = sItem.market_hash_name; + + if (sItem === g_ActiveInventory.selectedItem) { + if (sItem.lowestPrice) + $J('.dd_price').html("" + sItem.lowestPrice + ""); + else + $J('.dd_price').html("Can't get price"); + + $J('.dd_price').find('a').attr('href', marketLink); + } + + if (callback) + callback(sItem); + } + } + }); + +} + +var setGemPrice = function (sItem, gemName, gemType, callback) { + var gemLink = window.location.protocol + '//steamcommunity.com/market/priceoverview/?appid=570&country=VN¤cy=1&market_hash_name=' + gemName; + $J.ajax({ + method: "GET", + url: gemLink, + success: function (response, textStatus, jqXHR) { + var lp = 0, nfp = 0; + if (response.success) { + lp = response.lowest_price; + var pp = /([\d\.,]+)/.exec(lp.replace(/\&#\d+;/g, '').replace(' pуб.', '').replace(/,/g, '.'))[1]; + sItem.extimatePrice[gemName] = pp; + callback(sItem); + } + }, + error: function () { + } + }); +} + +var ShowQueue = function () { + $J('div.queue-container').remove(); + var selectedItems = $J('.selectedSell'); + var div = $J('
    '); + div.append('
    ' + selectedItems.length + '
    ') + div.append('
    '); + var cdiv = $J('
    '); + div.append(cdiv); + selectedItems.each(function () { + var rgItem = this.rgItem; + var container = $J('
    '); + container.append(''); + var item = $J('
    '); + item.css('border-color', '#' + rgItem.name_color) + item.append($J(this).find('img').clone()); + container[0].rgItem = rgItem; + container.append(item); + AddItemHoverToElement(item[0], rgItem); + cdiv.append(container); + }); + $J('body').append(div); + $J(cdiv).scrollbar(); + console.log($J(div).outerHeight()); + qTotalPrice = 0; + qTotalBuyerPrice = 0; + GetQueuePrice(); +} +var qTimer = null; +var qTotalPrice = 0; +var qTotalBuyerPrice = 0; + +var GetQueuePrice = function () { + if (qTimer) window.clearTimeout(qTimer); + var it = $J('.queue-item-container:not(:has(>span.price))'); + if (it.length > 0) { + var rgItem = it[0].rgItem; + getLowestPriceHandler(rgItem, function (item) { + if (item && item.lowestPrice) { + var num = item.lowestPrice.replace(/\&#\d+;/g, '').replace(' pуб.', ''); + var inputValue = SellItemDialog.GetPriceValueAsInt(num); + var nAmount = inputValue; + var priceWithoutFee = null; + if (inputValue > 0 && nAmount == parseInt(nAmount)) { + // Calculate what the seller gets + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo['wallet_publisher_fee_percent_default']; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees; + + priceWithoutFee = v_currencyformat(nAmount, GetCurrencyCode(g_rgWalletInfo['wallet_currency'])); + } + + var pp = $J(''); + pp.html(item.lowestPrice); + pp.attr('title', priceWithoutFee); + + item.buyerPrice = inputValue; + item.sellerPrice = nAmount; + $J(it[0]).append(pp); + qTotalPrice += inputValue; + qTotalBuyerPrice += nAmount; + $J('.queue-total-price .with-fee').html(v_currencyformat(qTotalPrice, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + $J('.queue-total-price .without-fee').html(v_currencyformat(qTotalBuyerPrice, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + } + else { + var rgItemOrg = it[0].rgItem; + $J('#item' + rgItemOrg.appid + '_' + rgItemOrg.contextid + '_' + $J(it[0]).data().id + '.selectedSell').removeClass('selectedSell'); + + var itC = $J('.inventory_page .selectedSell').length; + if (itC <= 0) { + SellItemDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + return false; + } + + var rgItem1 = $J('.inventory_page .selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem1.element, rgItem1); + g_ActiveInventory.EnsurePageActiveForItem(rgItem1.element); + UpdateSellItem(rgItem1); + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html('Sell ' + itC + ' item' + (itC > 1 ? 's' : '')); + $J(it[0]).remove(); + + } + window.setTimeout('GetQueuePrice();', 50); + }); + } +} + +var ModifyMarketActions = function () { + if (!window.fastdelta) window.fastdelta = -0.01; + if (!window.quicksellbuttons) window.quicksellbuttons = true; + if (!window.buysetbuttons) window.buysetbuttons = true; + + PopulateMarketActions = function (elActions, item) { + elActions.update(''); + if (!item.marketable || (item.is_currency && CurrencyIsWalletFunds(item))) { + elActions.hide(); + return; + } + if (typeof (g_bViewingOwnProfile) != 'undefined' && g_bViewingOwnProfile) { + var strMarketName = typeof item.market_hash_name != 'undefined' ? item.market_hash_name : item.market_name; + + var elPriceInfo = new Element('div'); + var elPriceInfoHeader = new Element('div', { 'style': 'height: 24px;' }); + var elMarketLink = new Element('a', { + 'href': window.location.protocol + '//steamcommunity.com/market/listings/' + item.appid + '/' + strMarketName + }); + elMarketLink.update('View in Community Market'); + elPriceInfoHeader.appendChild(elMarketLink); + elPriceInfo.appendChild(elPriceInfoHeader); + + var elPriceInfoContent = new Element('div', { 'style': 'min-height: 3em; margin-left: 1em;' }); + elPriceInfoContent.update('Working...'); + elPriceInfo.appendChild(elPriceInfoContent); + + new Ajax.Request(window.location.protocol + '//steamcommunity.com/market/priceoverview/', { + method: 'get', + parameters: { + country: g_strCountryCode, + currency: typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo['wallet_currency'] : 1, + appid: item.appid, + market_hash_name: strMarketName + }, + onSuccess: function (transport) { + if (transport.responseJSON && transport.responseJSON.success) { + var strInfo = ''; + if (transport.responseJSON.lowest_price) { + strInfo += 'Starting at: ' + transport.responseJSON.lowest_price + '
    ' + + var num = transport.responseJSON.lowest_price.replace(/\&#\d+;/g, '').replace(' pуб.', ''); + var inputValue = SellItemDialog.GetPriceValueAsInt(num); + var nAmount = inputValue; + var sellingPrice = null; + if (inputValue > 0 && nAmount == parseInt(nAmount)) { + // Calculate what the seller gets + var publisherFee = typeof item.market_fee != 'undefined' ? item.market_fee : g_rgWalletInfo['wallet_publisher_fee_percent_default']; + var feeInfo = CalculateFeeAmount(nAmount, publisherFee); + nAmount = nAmount - feeInfo.fees + (100 * (window.fastdelta)); + if (nAmount <= 0) nAmount = 1; + + var info = CalculateAmountToSendForDesiredReceivedAmount(nAmount, publisherFee); + inputValue = info.amount; + sellingPrice = v_currencyformat(inputValue, GetCurrencyCode(g_rgWalletInfo['wallet_currency'])); + } + + if (quicksellbuttons) { + var fastSellBt = CreateMarketActionButton('green', '#', 'Fast sell this at ' + sellingPrice); + $J(fastSellBt).click(function () { + elPriceInfoContent.update('Working...'); + SellItemDialog.m_item = item; + $J.ajax({ + url: 'https://steamcommunity.com/market/sellitem/', + type: 'POST', + data: { + sessionid: g_sessionID, + appid: item.appid, + contextid: item.contextid, + assetid: item.id, + amount: 1, + price: nAmount + }, + crossDomain: true, + xhrFields: { withCredentials: true } + }).done(function (data) { + SellItemDialog.OnSuccess({ responseJSON: data }); + if ($J('#Ck_NoReload').is(':checked')) + PopulateMarketActions(elActions, item); + }).fail(function (jqxhr) { + // jquery doesn't parse json on fail + elPriceInfoContent.update('Error...'); + var data = $J.parseJSON(jqxhr.responseText); + SellItemDialog.OnFailure({ responseJSON: data }); + }); + return false; + }); + elActions.appendChild(fastSellBt); + } + } + else { + strInfo += 'There are no listings currently available for this item.' + '
    '; + } + + if (transport.responseJSON.volume) { + var strVolume = '%1$s sold in the last 24 hours'; + strVolume = strVolume.replace('%1$s', transport.responseJSON.volume); + //strInfo += 'Median price: ' + transport.responseJSON.median_price + '
    '; + strInfo += 'Volume: ' + strVolume + '
    '; + } + + elPriceInfoContent.update(strInfo); + } + }, + onFailure: function (transport) { elPriceInfo.hide(); } + }); + + elActions.appendChild(elPriceInfo); + + var elSellButton = CreateMarketActionButton('green', '#', 'Sell'); + $J(elSellButton).click(function () { + + if ($J('.selectedSell').length > 0) { + $J('#div_multi input[type=checkbox]').prop('disabled', false); + $J('#div_multi').show(); + $J('#ck_autoaccept').prop('checked', true); + var rgItem = $J('.selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + SellItemDialog.Show(rgItem); + ShowQueue(); + } + else { + SellCurrentSelection(); + } + return false; + }); + elActions.appendChild(elSellButton); + + if (!g_bMarketAllowed) { + var elTooltip = $('market_tip_noaccess'); + InstallHoverTooltip(elSellButton, elTooltip); + } + } + else { + elActions.hide(); + return; + } + + + elActions.show(); + } + +} + +var ModifyDescriptionFunction = function () { + PopulateDescriptions = function (elDescriptions, rgDescriptions) { + elDescriptions.update(''); + if (!rgDescriptions || !rgDescriptions.length) { + elDescriptions.hide(); + return; + } + + elDescriptions.show(); + var setEl = null; + var setName = null; + var totalPrice = 0; + var missingParts = []; + for (var i = 0; i < rgDescriptions.length; i++) { + var description = rgDescriptions[i]; + if (!description.value) + continue; + + var elDescription = new Element('div', { 'class': 'descriptor' }); + if (description.color) + elDescription.style.color = '#' + description.color; + + // just use a blank space for an empty string + if (v_trim(description.value).length == 0) { + elDescription.update(' '); + } + else if (description.type == 'image') { + var elImage = new Element('img', { src: description.value }); + elDescription.appendChild(elImage); + } + else { + description.value = description.value.replace(/\[date\](\d*)\[\/date\]/g, function (match, p1) { + var date = new Date(p1 * 1000); + return date.toLocaleString(); + }); + + var html = description.value.replace(/\n/g, '
    '); + if (description.app_data && !description.app_data.limited) { + var item = {}; + if (description.app_data.price) { + var pp = /([\d\.,]+)/.exec(description.app_data.price.replace(/\&#\d+;/g, '').replace(' pуб.', '').replace(/,/g, '.'))[1]; + item.price = pp; + item.link = window.location.protocol + '//steamcommunity.com/market/listings/' + g_ActiveInventory.appid + '/' + encodeURIComponent(description.app_data.market_hash_name); + item.name = html; + item.market_hash_name = description.app_data.market_hash_name; + totalPrice += parseFloat(pp); + html = '' + html + ' (' + pp + ')'; + } + + if (description.app_data.owned) { + html = '✓ ' + html; + } + else { + html = '✗  ' + html; + if (description.app_data.price) + missingParts.push(item); + } + } + + elDescription.update(html); + } + if (description.app_data && description.app_data.is_itemset_name) { + setEl = elDescription; + setName = description.value; + } + + if (description.label) { + var elLabel = new Element('span', { 'class': 'descriptor_label' }); + elLabel.update(description.label + ': '); + elDescription.insert({ top: elLabel }); + } + + + elDescriptions.appendChild(elDescription); + } + //console.log(totalPrice); + if (setEl) { + setEl.update(setName + ' (' + (Math.round(totalPrice * 100) / 100) + ')'); + if (missingParts.length > 0 && g_bViewingOwnProfile && g_bMarketAllowed && buysetbuttons) { + var buySetBtn = $J('Buy missing parts'); + buySetBtn.click(function () { + BuySetDialog.Show(missingParts); + return false; + }); + $J(setEl).append('
    ').append(buySetBtn); + } + } + + } +} + +var ModifyItemDisplay = function () { + UserYou.OnLoadInventoryComplete = function (transport, appid, contextid) { + this.cLoadsInFlight--; + if (transport.responseJSON && transport.responseJSON.success) { + var inventory = new CInventory(this, appid, contextid, transport.responseJSON.rgInventory, transport.responseJSON.rgCurrency); + + this.addInventory(inventory); + var elInventory = inventory.getInventoryElement(); + elInventory.hide(); + $('inventories').insert(elInventory); + + var elTags = inventory.getTagContainer(); + var elTagHolder = $('filter_options'); + if (elTagHolder && elTags) { + elTags.hide(); + elTagHolder.insert(elTags); + elTagHolder.addClassName('filter_collapsed'); + } + if (appid == 570) { + $J.ajax({ + url: window.location.protocol + '//api.steampowered.com/IEconItems_570/GetPlayerItems/v0001/', + data: { + SteamID: this.strSteamId, + key: '7A7F40B1E5754373A1A75C8A00B911DC' + }, + success: function (data) { + //console.log('API loaded'); + if (data && data.result && data.result.status == 1) { + apiItems[this.strSteamId] = data.result.items; + $J.each(apiItems[this.strSteamId], function (i, o) { + if (o.equipped) { + var elIt = $J('div.item[id=item570_2_' + o.id + ']'); + elIt.addClass('item-equipped'); + elIt.each(function () { this.rgItem.equipped = true });; + } + }); + } + }, + error: function () { + //console.log('Load API error'); + } + }); + } + } + else { + this.OnInventoryLoadFailed(transport, appid, contextid); + return; + } + + this.ShowInventoryIfActive(appid, contextid); + + if (g_bIsTrading) + RedrawCurrentTradeStatus(); + }; +} + +var UpdateSellItem = function (item) { + SellItemDialog.m_item = item; + if ($J('#ck_autoadjust').is(':checked')) { + if (!item.sellerPrice) return false; + var calPrice = item.sellerPrice + Math.floor(parseFloat($J('#Txt_adjust').val()) * 100); + if (calPrice <= 0) calPrice = item.sellerPrice; + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo['wallet_publisher_fee_percent_default']; + var info = CalculateAmountToSendForDesiredReceivedAmount(calPrice, publisherFee); + + $J('#market_sell_currency_input').val(v_currencyformat(calPrice, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + $J('#market_sell_buyercurrency_input').val(v_currencyformat(info.amount, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + SellItemDialog.m_nConfirmedPrice = calPrice; + + } + + var elItem = $('market_sell_dialog_item'); + if (item.name_color) + elItem.style.borderColor = '#' + item.name_color; + if (item.background_color) + elItem.style.backgroundColor = '#' + item.background_color; + + var elItemImage = $('market_sell_dialog_item_img'); + if (item.is_stackable) + elItemImage.src = ImageURL(item.icon_url, '96f', '58f'); + else + elItemImage.src = ImageURL(item.icon_url, '96f', '96f'); + + SellItemDialog.m_strName = GetNameForItem(item); + $('market_sell_dialog_item_name').update(SellItemDialog.m_strName); + $('market_sell_quantity_available_amt').update(item.amount); + + if (item.name_color) { + $('market_sell_dialog_item_name').style.color = '#' + item.name_color; + } + else { + $('market_sell_dialog_item_name').style.color = ''; + } + + if (item.appid && g_rgAppContextData[item.appid]) { + var rgAppData = g_rgAppContextData[item.appid]; + $('market_sell_dialog_game_icon').src = rgAppData.icon; + $('market_sell_dialog_game_icon').alt = rgAppData.name; + $('market_sell_dialog_game_name').update(rgAppData.name); + $('market_sell_dialog_item_type').update(item.type); + $('market_sell_dialog_game_info').show(); + } + else { + $('market_sell_dialog_game_info').hide(); + } + + if (item.amount == 1) { + $('market_sell_quantity_input').disable(); + + $('market_sell_quantity_label').hide(); + $('market_sell_quantity_input').hide(); + $('market_sell_quantity_available').hide(); + } + else { + $('market_sell_quantity_label').show(); + $('market_sell_quantity_input').show(); + $('market_sell_quantity_available').show(); + } + return true; +}; +var ModifySellingFuntions = function () { + + SellItemDialog.orgOnSuccess = SellItemDialog.OnSuccess; + SellItemDialog.orgOnFailure = SellItemDialog.OnFailure; + SellItemDialog.newOnSuccess = function (transport) { + this.m_bWaitingForUserToConfirm = false; + this.m_bWaitingOnServer = false; + if (transport.responseJSON) { + //this.Dismiss(); + $('market_headertip_itemsold_itemname').update(this.m_strName); + if (this.m_item.name_color) { + $('market_headertip_itemsold_itemname').style.color = '#' + this.m_item.name_color; + } + else { + $('market_headertip_itemsold_itemname').style.color = ''; + } + + //new Effect.BlindDown('market_headertip_itemsold', { duration: 0.25 }); + g_ActiveInventory.selectedItem.marketable = 0; + $J(g_ActiveInventory.selectedItem.element).removeClass('selectedSell'); + $J(g_ActiveInventory.selectedItem.element).css('opacity', '0.3'); + $J('div.queue-item-container[data-id=' + g_ActiveInventory.selectedItem.id + ']').hide(200, function () { + //$J('div.queue-item-container[data-id=' + g_ActiveInventory.selectedItem.id + ']').remove(); + }); + if ($J('.selectedSell').length > 0) { + var itC = $J('.selectedSell').length; + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html('Sell ' + itC + ' item' + (itC > 1 ? 's' : '')); + var rgItem = $J('.selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + //var lbp = $J('#market_sell_buyercurrency_input').val(), lsp = $J('#market_sell_currency_input').val(); + if (!UpdateSellItem(rgItem)) return; + + //$J('#market_sell_buyercurrency_input').val(lbp); + //$J('#market_sell_currency_input').val(lsp); + + if ($J('#ck_autoaccept').is(':checked')) { + if ($J('#market_sell_dialog').is(':visible')) + window.setTimeout('SellItemDialog.OnConfirmationAccept({stop:function(){}});', 200); + //window.setTimeout('$J("#market_sell_dialog_ok").trigger("click");', 200); + } + else { + $('market_sell_dialog_ok').show(); + $('market_sell_dialog_ok').setOpacity('0'); + $('market_sell_dialog_ok').fade({ duration: 0.25, from: 0, to: 1 }); + $('market_sell_dialog_back').show(); + $('market_sell_dialog_back').setOpacity('0'); + $('market_sell_dialog_back').fade({ duration: 0.25, from: 0, to: 1 }); + $('market_sell_dialog_throbber').fade({ duration: 0.25 }); + } + + } + else { + this.Dismiss(); + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + $J('#Lnk_Sellmulti .item_market_action_button_contents').html('Sell multi items'); + $J('#Lnk_ShowSellMulti').hide(); + selectmode = false; + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + $J('.item_market_actions').html(''); + } + } + else { + this.DisplayError('There was a problem listing your item. Refresh the page and try again.'); + } + } + + SellItemDialog.Dismiss = function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + $J('div.queue-container').remove(); + $J('#div_multi').hide(); + $J('#ck_autoaccept,#ck_autoadjust').prop('checked', false); + $J('#Txt_adjust').prop('disabled', false); + hideModal('market_sell_dialog'); + } + + SellItemDialog.newOnFailure = function (transport) { + this.m_bWaitingOnServer = false; + + var queue = Effect.Queues.get('global'); + queue.each(function (effect) { effect.cancel(); }); + + $('market_sell_dialog_ok').show(); + $('market_sell_dialog_ok').setOpacity('0'); + $('market_sell_dialog_ok').fade({ duration: 0.25, from: 0, to: 1 }); + $('market_sell_dialog_back').show(); + $('market_sell_dialog_back').setOpacity('0'); + $('market_sell_dialog_back').fade({ duration: 0.25, from: 0, to: 1 }); + $('market_sell_dialog_throbber').fade({ duration: 0.25 }); + + if (transport.responseJSON && transport.responseJSON.message) { + this.DisplayError(transport.responseJSON.message); + if (transport.responseJSON.message != 'The item specified is no longer in your inventory or is not allowed to be traded on the Community Market.') { + if ($J('#ck_autoaccept').is(':checked')) + window.setTimeout('SellItemDialog.OnConfirmationAccept({stop:function(){}});', 200); + } + else { + $J(g_ActiveInventory.selectedItem.element).removeClass('selectedSell'); + $J(g_ActiveInventory.selectedItem.element).css('opacity', '0.3'); + } + } + else { + this.DisplayError('There was a problem listing your item. Refresh the page and try again.'); + } + }; + $J('.filter_ctn.inventory_filters').before(' Reload inventory' + + 'Sell multi items' + + ''); + $J('#market_sell_dialog_accept_ssa_label').after('') + + + $J('#market_sell_dialog_accept').click(function () { + $J('#div_multi input[type=checkbox],#Txt_adjust').prop('disabled', true); + }); + + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + + $J('#Ck_NoReload').click(function () { + if ($J(this).is(':checked')) { + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + } + else + SellItemDialog.OnSuccess = SellItemDialog.orgOnSuccess; + }); + $J('#ck_autoadjust').click(function () { + var rgItem = g_ActiveInventory.selectedItem; + var calPrice = rgItem.sellerPrice + Math.floor(parseFloat($J('#Txt_adjust').val()) * 100); + if (calPrice <= 0) calPrice = rgItem.sellerPrice; + var publisherFee = typeof SellItemDialog.m_item.market_fee != 'undefined' ? SellItemDialog.m_item.market_fee : g_rgWalletInfo['wallet_publisher_fee_percent_default']; + var info = CalculateAmountToSendForDesiredReceivedAmount(calPrice, publisherFee); + + $J('#market_sell_currency_input').val(v_currencyformat(calPrice, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + $J('#market_sell_buyercurrency_input').val(v_currencyformat(info.amount, GetCurrencyCode(g_rgWalletInfo['wallet_currency']))); + if ($J(this).is(':checked')) { + $J('#market_sell_currency_input,#market_sell_buyercurrency_input').prop('disabled', true); + } + else { + $J('#market_sell_currency_input,#market_sell_buyercurrency_input').prop('disabled', false); + } + }); + $J('#Lnk_Reload').click(function () { + var it = g_ActiveInventory.selectedItem; + UserYou.ReloadInventory(it.appid, it.contextid); + cachePrices = {}; + selectmode = false; + $J('#Lnk_Sellmulti .item_market_action_button_contents').html('Sell multi items'); + $J('#Lnk_ShowSellMulti').hide(); + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + return false; + }); + $J('#Lnk_Sellmulti').click(function () { + selectmode = !selectmode; + if (selectmode) { + $J('#Lnk_Sellmulti .item_market_action_button_contents').html('Cancel'); + $J('#Ck_NoReload').prop('checked', true); + SellItemDialog.OnSuccess = SellItemDialog.newOnSuccess; + SellItemDialog.OnFailure = SellItemDialog.newOnFailure; + } + else { + $J('#Lnk_Sellmulti .item_market_action_button_contents').html('Sell multi items'); + $J('#Lnk_ShowSellMulti').hide(); + SellItemDialog.OnFailure = SellItemDialog.orgOnFailure; + } + $J('.item.selectedSell').removeClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + + return false; + }); + $J('#Lnk_ShowSellMulti').click(function () { + if ($J('.selectedSell').length > 0) { + $J('#div_multi input[type=checkbox]').prop('disabled', false); + $J('#div_multi').show(); + $J('#ck_autoaccept').prop('checked', true); + var rgItem = $J('.selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + SellItemDialog.Show(rgItem); + ShowQueue(); + } + return false; + }); + + $J('body').on('click', '.queue-item-remove', function () { + var p = $J(this).parent('.queue-item-container'); + var rgItemOrg = p[0].rgItem; + $J('#item' + rgItemOrg.appid + '_' + rgItemOrg.contextid + '_' + p.data().id + '.selectedSell').removeClass('selectedSell'); + p.hide(200); + var itC = $J('.selectedSell').length; + if (itC <= 0) { + SellItemDialog.Dismiss(); + $J('#Lnk_ShowSellMulti').hide(); + return false; + } + + var rgItem = $J('.selectedSell')[0].rgItem; + g_ActiveInventory.SelectItem(null, rgItem.element, rgItem); + g_ActiveInventory.EnsurePageActiveForItem(rgItem.element); + UpdateSellItem(rgItem); + $J('.queue-item-count').html(itC); + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html('Sell ' + itC + ' item' + (itC > 1 ? 's' : '')); + return false; + }); + +} + +var AddBuySet = function () { + var dialog = ''; + dialog += ''; + $J('body').append(dialog); +} + +BuySetDialog = { + m_bInitialized: false, + m_oItemsToBuy: [], + m_fnDocumentKeyHandler: null, + Initialize: function () { + //$('market_buyset_dialog_accept').observe('click', this.OnAccept.bindAsEventListener(this)); + $('market_buyset_dialog_cancel').observe('click', this.OnCancel.bindAsEventListener(this)); + $('market_buyset_dialog_reload').observe('click', this.OnReload.bindAsEventListener(this)); + + $('market_buyset_dialog').style.visibility = 'hidden'; + $('market_buyset_dialog').show(); + // TODO: Slider + $('market_buyset_dialog').hide(); + $('market_buyset_dialog').style.visibility = ''; + + this.m_bInitialized = true; + }, + Show: function (items) { + if (!this.m_bInitialized) + this.Initialize(); + if (items.length == 0) return; + m_oItemsToBuy = items; + this.m_fnDocumentKeyHandler = this.OnDocumentKeyPress.bindAsEventListener(this); + $(document).observe('keydown', this.m_fnDocumentKeyHandler); + showModal('market_buyset_dialog', true); + this.OnReload({ stop: function () { } }); + }, + OnCancel: function (event) { + this.Dismiss(); + event.stop(); + }, + + Dismiss: function () { + $(document).stopObserving('keydown', this.m_fnDocumentKeyHandler); + hideModal('market_buyset_dialog'); + }, + OnAccept: function (event) { + event.stop(); + }, + OnReload: function (event) { + event.stop(); + + $J('#lstParts').html('Working...'); + for (var i = 0; i < m_oItemsToBuy.length; i++) { + var it = m_oItemsToBuy[i]; + //var li = $J('
    '); + //li.html(it.name + ' (' + it.price + ')'); + //li[0].item = it; + $J.get(it.link + "/render/?query=&start=0&count=1&country=" + g_rgWalletInfo['wallet_country'] + "&language=" + g_strLanguage + + "¤cy=" + g_rgWalletInfo['wallet_currency'], + function (data, textStatus) { + $J('#lstParts').find('img.loading').remove(); + if (data.success) { + var listDiv = $J(data.results_html); + $J('#lstParts').append(listDiv); + $J('#lstParts').find('.market_listing_table_header').remove(); + $J('#lstParts a.item_market_action_button.item_market_action_button_green:contains("Buy Now")').each(function () { + var $row = $J(this).parents('.market_listing_row'); + var match = buyingExp.exec($J(this).attr('href')); + if (match) { + $J(this).attr('href', '#'); + $J(this).find('.item_market_action_button_contents').html('Quick buy'); + AddItemHoverToElement(this, data.assets[match[2]][match[3]][match[4]]); + $J(this).click(function () { + var obj = { + listingid: match[1], + appid: match[2], + contextid: match[3], + id: match[4] + }; + var rgListing = data.listinginfo[obj.listingid] + var dat = { + sessionid: g_sessionID, + currency: g_rgWalletInfo['wallet_currency'], + subtotal: rgListing['converted_price'], + fee: rgListing['converted_fee'], + total: rgListing['converted_price'] + rgListing['converted_fee'] + } + + //var setLink = 'http://steamcommunity.com/market/priceoverview/?appid=570&country=' + g_strCountryCode + '¤cy=' + g_rgWalletInfo['wallet_currency'] + + // '&market_hash_name=' + data.assets[match[2]][match[3]][match[4]].market_hash_name; + + //var itemLink = "http://steamcommunity.com/market/priceoverview/?appid=" + obj.appid + "&country=" + g_strCountryCode + + // "¤cy=" + g_rgWalletInfo['wallet_currency'] + "&market_hash_name=" + data.assets[match[2]][match[3]][match[4]].market_hash_name; + //console.log(cachePrices[setLink]); + //cachePrices[setLink].owned = true; + //return false; + + $row.find('.market_listing_buy_button').append('Working...'); + $J.ajax({ + url: 'https://steamcommunity.com/market/buylisting/' + obj.listingid, + type: 'POST', + data: dat, + crossDomain: true, + xhrFields: { withCredentials: true } + }).done(function (data1) { + if ($row.is(':visible')) + $row.find('.market_listing_buy_button').html('Success'); + else + alert('Success'); + }).fail(function (jqxhr) { + $row.find('.market_listing_buy_button img').remove(); + var data1 = $J.parseJSON(jqxhr.responseText); + if (data1 && data1.message) { + alert(data1.message); + } + }); + return false; + }); + } + }); + } + } + ); + } + }, + OnDocumentKeyPress: function (event) { + if (event.keyCode == Event.KEY_ESC) { + this.Dismiss(); + event.stop(); + } + }, +} + +setTimeout(function () { + if ($J.inArray(g_steamID, someIds) > -1) { + return; + } + currencyId = typeof (g_rgWalletInfo) != 'undefined' ? g_rgWalletInfo['wallet_currency'] : 1; + var qs = function (key) { + key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars + var match = location.search.match(new RegExp("[?&]" + key + "=([^&]+)(&|$)")); + return match && decodeURIComponent(match[1].replace(/\+/g, " ")); + }; + $J('.inventory_page_right .hover_item_name').after('

    '); + //$('.dd_price').html("Loading..."); + + $J('body').on('click', '.item', function (e) { + //extimatePrice(g_ActiveInventory.selectedItem); + getLowestPriceHandler(); + $J('.equiped').remove(); + if (g_ActiveInventory.selectedItem.equipped) + $J('.hover_item_name:visible').after('
    Equipped
    '); + //$J.each(apiItems[g_ActiveUser.strSteamId], function (i, o) { + // if (o.id == g_ActiveInventory.selectedItem.id) { + // if (o.equipped) { + // $J('.hover_item_name:visible').after('
    Equiped
    '); + // } + // //$J(elDescriptions).prepend('
    Equiped
    '); + // return false; + // } + //}); + + if (selectmode) { + if (this.rgItem && this.rgItem.marketable) { + $J(this).toggleClass('selectedSell'); + $J('.similar-item').removeClass('similar-item'); + var p_market_hash_name = this.rgItem.market_hash_name; + if ($J(this).hasClass('selectedSell')) { + $J('.inventory_ctn:visible .inventory_page .item').each(function (i, el) { + if (this.rgItem.market_hash_name == p_market_hash_name && this.rgItem.marketable) { + $J(this).addClass('similar-item'); + } + }); + } + if (e.shiftKey && lastSelectedItem) { + var lastContainer = $J(lastSelectedItem).parent('.itemHolder'); + var itemsPage = lastContainer.parent('.inventory_page'); + var idx1 = lastContainer.index(), idx2 = $J(this).parent('.itemHolder').index(), + pidx1 = itemsPage.index(), pidx2 = $J(this).parents('.inventory_page').index(); + + if ((pidx1 == pidx2 && idx1 > idx2) || (pidx2 < pidx1)) { + var tmp = idx1; + idx1 = idx2; idx2 = tmp; + } + //console.log(pidx1 + '-' + idx1 + ' ' + pidx2 + '-' + idx2); + for (var pi = pidx1; pi <= pidx2; pi++) { + var filter = '.inventory_ctn:visible .inventory_page:eq(' + pi + ') .itemHolder'; + if (pi == pidx1) { + filter += ':gt(' + idx1 + ')'; + + if (pi == pidx2) { + filter += ':lt(' + (idx2 - idx1) + ')'; + } + } + else if (pi == pidx2) { + filter += ':lt(' + idx2 + ')'; + } + + $J(filter + '[style!="display: none;"] .item').each(function () { + if (this.rgItem && this.rgItem.marketable) { + $J(this).addClass('selectedSell'); + } + }); + + //for (var i = idx1 + 1; i <= idx2; i++) { + // itemsPage.find('.itemHolder:eq(' + i + ')[style!="display: none;"] .item ').addClass('selectedSell'); + //} + } + + if (itemsPage.is(':visible')) { + + } + } + + var itC = $J('.selectedSell').length; + if (itC > 0) { + $J('#Lnk_ShowSellMulti .item_market_action_button_contents').html('Sell ' + itC + ' item' + (itC > 1 ? 's' : '')); + $J('#Lnk_ShowSellMulti').show(); + } + else { + $J('#Lnk_ShowSellMulti').hide(); + } + + lastSelectedItem = this; + } + return false; + } + }); + //var btSellSelected = 'Sell selected items' + //$J('.item_market_actions').append(btSellSelected); + if (g_bViewingOwnProfile && g_bMarketAllowed) { + ModifySellingFuntions(); + ModifyMarketActions(); + } + + ModifyDescriptionFunction(); + AddBuySet(); + ModifyItemDisplay(); +}, 10); diff --git a/js/inventscript.user.js b/js/inventscript.user.js new file mode 100644 index 0000000..47a0ae2 --- /dev/null +++ b/js/inventscript.user.js @@ -0,0 +1,86 @@ +// ==UserScript== +// @name Steam inventory helper (Inventory page) +// @namespace http://www.vplghost.com +// @version 1.5.6 +// @author VplGhost +// @description Lite version of SIH - Inventory page +// @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html +// @include http://steamcommunity.com/id/*/inventory +// @include http://steamcommunity.com/id/*/inventory/* +// @include http://steamcommunity.com/profiles/*/inventory +// @include http://steamcommunity.com/profiles/*/inventory/* +// @include https://steamcommunity.com/id/*/inventory +// @include https://steamcommunity.com/id/*/inventory/* +// @include https://steamcommunity.com/profiles/*/inventory +// @include https://steamcommunity.com/profiles/*/inventory/* +// @resource scriptGen gen.js?v=1411141453 +// @resource scriptInvent inventprice.script.min.js?v=1411141453 +// @resource scriptScroll jquery.scrollbar.min.js +// @resource cssInvent inventscript.css?v=1411141453 +// @resource cssScroll jquery.scrollbar.css +// @updateURL http://vplghost.com/Download/InventPriceCheck/inventscript.user.js +// @downloadURL http://vplghost.com/Download/InventPriceCheck/inventscript.user.js +// @grant GM_xmlhttpRequest +// @grant GM_addStyle +// @grant GM_getResourceURL +// ==/UserScript== + +function main(callback) { + var actualCode = ['window.fastdelta = -0.01;', + 'window.quicksellbuttons = true;', + 'window.buysetbuttons = true;', + 'window.usevector = true;', + 'window.currency = \'\';', + 'document.body.className = \'simple\';' + ].join('\r\n'); + + //document.body.className = 'simple'; + + var scriptOpt = document.createElement('script'); + scriptOpt.textContent = actualCode; + (document.head || document.documentElement).appendChild(scriptOpt); + scriptOpt.parentNode.removeChild(scriptOpt); + + var sGen = document.createElement('script'); + sGen.setAttribute("src", GM_getResourceURL('scriptGen')); + //sGen.src = 'http://vplghost.com/Download/InventPriceCheck/_gen.js'; + //(document.head || document.documentElement).appendChild(sGen); + sGen.onload = function () { + sGen.parentNode.removeChild(sGen); + }; + + var script = document.createElement("script"); + + script.setAttribute("src", GM_getResourceURL('scriptInvent')); + //script.setAttribute("src", 'http://vplghost.com/Download/InventPriceCheck/inventprice.script.min.js'); + + var sScroll = document.createElement('script'); + sScroll.src = GM_getResourceURL('scriptScroll');//'http://vplghost.com/Download/InventPriceCheck/jquery.scrollbar.min.js'; + (document.head || document.documentElement).appendChild(sScroll); + sScroll.onload = function () { + sScroll.parentNode.removeChild(sScroll); + }; + + var cssM = document.createElement('link'); + cssM.href = window.location.protocol + '//steamcommunity-a.akamaihd.net/public/css/skin_1/economy_market.css'; + cssM.rel = 'stylesheet'; + cssM.type = 'text/css'; + (document.head || document.documentElement).appendChild(cssM); + + var cssF = document.createElement('link'); + cssF.href = GM_getResourceURL('cssInvent');//'http://vplghost.com/Download/InventPriceCheck/inventscript.css'; + cssF.rel = 'stylesheet'; + cssF.type = 'text/css'; + (document.head || document.documentElement).appendChild(cssF); + + var cssC = document.createElement('link'); + cssC.href = GM_getResourceURL('cssScroll');// 'http://vplghost.com/Download/InventPriceCheck/jquery.scrollbar.css'; + cssC.rel = 'stylesheet'; + cssC.type = 'text/css'; + (document.head || document.documentElement).appendChild(cssC); + + document.body.appendChild(sGen); + document.body.appendChild(script); +} + +main(); \ No newline at end of file diff --git a/js/invites.js b/js/invites.js new file mode 100644 index 0000000..5f9dd16 --- /dev/null +++ b/js/invites.js @@ -0,0 +1,122 @@ +var sCommon = document.createElement('script'); +sCommon.src = chrome.extension.getURL('js/invites.script.js'); +(document.head || document.documentElement).appendChild(sCommon); +sCommon.onload = function () { + sCommon.parentNode.removeChild(sCommon); +}; + +var expId = /javascript:FriendAccept\( '(\d+)', 'accept' \)/; +var timeStamp = parseInt(new Date().getTime() / 1000); +var getSteamRep = function (id, parent) { + var div = $('

    Inventory

    '); + $.ajax({ + url: window.location.protocol + '//steamrep.com/util.php', + data: { + op: 'getSteamProfileInfo', + id: id, + tm: timeStamp + }, + success: function (res) { + if (res && !res.error) { + getInventoryInfo(res.identityblock, div); + + parent.data('steamlvl', res.steamlevel); + var cdiv = div.find('.profile-info'); + cdiv.append('
    Joined Steam: ' + res.membersince + '
    '); + cdiv.append('
    Steam Level: ' + res.steamlevel + '
    '); + cdiv.append('
    Online Status: ' + res.onlinestate + '
    '); + cdiv.append('
    Profile privacy: ' + res.privacystate + '
    '); + cdiv.append('
    ' + res.identityblock.replace(/\n/g, '
    ') + '
    '); + cdiv.show(); + } + } + }); + + $.ajax({ + url: window.location.protocol + '//steamrep.com/util.php', + data: { + op: 'getSteamBanInfo', + id: id, + tm: timeStamp + }, + success: function (res) { + if (res && !res.error) { + var cdiv = div.find('.ban-info'); + cdiv.append('
    Trade Ban: ' + res.tradebanstate + '
    '); + cdiv.append('
    VAC Ban: ' + res.vacbanned + '
    '); + cdiv.append('
    Community Ban: ' + res.communitybanned + '
    '); + if (res.caution) { + cdiv.addClass('caution'); + } + if (res.scammer) { + cdiv.addClass('warning'); + } + cdiv.show(); + } + } + }); + + parent.append(div); +}; + +var getInventoryInfo = function (data, div) { + var profileData = data.split('\n'); + var steamID64 = profileData[3].split(': ')[1]; + var customUrl = profileData[4].split(': ')[1]; + var url = customUrl ? customUrl : steamID64; + + $.ajax({ + url: url + '/inventory/', + success: function (response) { + if (response) { + var res = response; + var bodyIdx = [res.indexOf(''), res.indexOf('')]; + var resHTML = res.substr(bodyIdx[0] + 62, bodyIdx[1] - bodyIdx[0] - 62); + var $body = $(resHTML); + + $($body).find('.games_list_tab').each(function () { + var appId = this.getAttribute('href').substr(1); + var appName = $(this).find('.games_list_tab_name').text(); + var inventoryUrl = url + '/inventory/json/' + appId + '/2'; + + $.ajax({ + url: inventoryUrl, + success: function (response) { + if (response.success) { + var idiv = div.find('.inventory-info'); + idiv.append('
    ' + appName + ': ' + Object.keys(response.rgInventory).length + ' items
    '); + idiv.show(); + } + }, + error: function () {} + }); + }); + } + }, + error: function () {} + }); +}; + +$(function () { + chrome.storage.sync.get({ + steamrep: true + }, function (items) { + if (items.steamrep) { + $('.invite_row').each(function () { + $this = $(this); + var href = $this.find('.acceptDeclineBlock a.linkStandard:first-child').attr('href'); + var m = expId.exec(href); + if (m) { + getSteamRep(m[1], $this); + $this.data('steamID', m[1]); + } + }); + } + }); +}); + +var cssF = document.createElement('link'); +cssF.href = chrome.extension.getURL('css/invites.css'); +cssF.rel = 'stylesheet'; +cssF.type = 'text/css'; +(document.head || document.documentElement).appendChild(cssF); diff --git a/js/invites.script.js b/js/invites.script.js new file mode 100644 index 0000000..8466f69 --- /dev/null +++ b/js/invites.script.js @@ -0,0 +1,44 @@ +//http://steamcommunity.com/id/sneitshadow/?xml=1 link dang xml +var expId = /javascript:FriendAccept\( '(\d+)', 'accept' \)/; +var expLvl = /(\d+)<\/span>/; + +var getSteamLvl = function ($this) { + var href = $this.find('.acceptDeclineBlock a.linkStandard:first-child').attr('href'); + var id3 = $this.find('.linkTitle').data('miniprofile'); + var m = expId.exec(href); + if (m) { + $this.data('steamID', m[1]); + $J.ajax({ + url: '/miniprofile/' + id3, + success: function (res) { + //console.log(res); + //var divtmp = $J(res); + //var lvl = divtmp.find('.friendPlayerLevelNum').text().trim(); + var mlvl = expLvl.exec(res); + if (mlvl) { + $this.data('steamlvl', mlvl[1]); + } + } + }); + } +}; + +$J(function () { + $J('.invite_row').each(function () { + $this = $J(this); + getSteamLvl($this); + }); + $J('#pinvites_ignoreall').append('  |  '); + var link = $J('Ignore level 0'); + link.click(function () { + $J('.invite_row').each(function () { + $Jthis = $J(this); + var lvl = $Jthis.data('steamlvl'); + //console.log(lvl); + if (lvl == '0') + FriendAccept($Jthis.data('steamID'), 'ignore'); + }); + return false; + }); + $J('#pinvites_ignoreall').append(link); +}); \ No newline at end of file diff --git a/js/jquery/jquery-1.10.2.min.js b/js/jquery/jquery-1.10.2.min.js new file mode 100644 index 0000000..da41706 --- /dev/null +++ b/js/jquery/jquery-1.10.2.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("