// ==UserScript==
// @name The West - tw-db.info Cloth Calc [ro]
// @version 0.44 Rev. 4
// @description The West Script: Cloth Calculation.
// @author Bluep, scoobydoo, Dun, Petee [tw-db.info] CrazzzyMan [rank system updated]
// @namespace http://tw-db.info
// @grant none
// @website http://tw-db.info
// @include http://*.the-west.*/game.php*
// @include https://*.the-west.*/game.php*
// @include http://*.tw.innogames.*/game.php*
// @include https://*.tw.innogames.*/game.php*
// ==/UserScript==
(function (f) {
var d = document, s = d.createElement('script');
s.setAttribute('type', 'application/javascript');
s.textContent = '(' + f.toString() + ')()';
(d.body || d.head || d.documentElement).appendChild(s);
s.parentNode.removeChild(s)
})(function () {
if (isDefined(window.TWDB)) {
new west.gui.Dialog(TWDB.script.name, '<div class="txcenter"><b><br>Script-ul CloathCalc este instalat de două ori, cu două versiuni lingvistice diferite. Va trebui să dezinstalați una dintre ele pentru script-ul să funcționeze corect!</br></b></div>', west.gui.Dialog.SYS_WARNING).addButton("OK").show();
} else {
TWDB = {};
TWDB.script = new Object({
version: 44,
revision: 3,
name: "The West - tw-db.info Cloth Calc",
update: "tw-db.info/cache/userscripts/clothcalc/clothcalc_ro.user.js",
check: "tw-db.info/cache/userscripts/clothcalc/version",
url: "tw-db.info",
protocol: location.protocol.match(/^(.+):$/)[1],
gameversion: 2.47,
lang: "ro"
});
try {
TWDB.script.notes = jQuery.parseJSON('[{\"version\":\"44\",\"notes\":\"Great news! <b>Tom Robert<\\\/b> has generously offered to take over ClothCalc development! We owe him a lot of thanks for the following features and fixes: <br>\\n[questbook] Toggle between start and end text of completed quests in the questbook is fixed. <br>\\n[calculator] Battle formula updated. <br>\\n[inventory] If you have an upgraded item, the base item won\\u0027t be shown as new anymore. <br>\\n[inventory] If you placed a bid on an item, it won\\u0027t be shown as new anymore. <br>\\n[market] Item count in market map fixed <br>\\n[selltip] High level weapons fixed\"},{\"version\":\"43\",\"notes\":\"[main *new*] Equip items button in ClothCalc window<br>\\n[tasklist] labor point hints have a star background now when you\\u0027ve equipped your best cloth<br>\\n[bugfix] job list in ClothCalc window is sorted again on startup<br>\\n[bugfix] bonus job import is working again<br>\\n[bugfix] alternative currency in tombolas working again\\n\"},{\"version\":\"42\",\"notes\":\"[misc] changing the amount in Crafting works the same way now as in Skills window, plus mouse wheel support in both<br \\\/>\\n[misc] labor point info on Task List switchable now and new hints there<br \\\/>\\n[misc *new*] option to sell all but one of the selected item to the Wandering Trader<br \\\/>\\n[misc *new*] option to disable scrollbars on small screens or when moving windows too far<br \\\/>\\n[misc *new*] option to reposition event counters (event currency, Hiro\\u0027s script) on wide screens\"},{\"version\":\"41\",\"notes\":\"[main] support for the upcoming new item IDs<br>\\n[main] automatic conversion of CC data (most of all statistics) for the ID update<br>\\n[main] job search automatically selects the job when search is narrowed down to only one<br>\\n[main bugfix] using cursor keys in job search works again<br>\\n[settings] rearranged the options and added captions for more clarity<br>\\n[jobs *new*] ClothCalc button in job windows<br>\\n[jobs *new*] display of labor points in job window title<br>\\n[jobs *new*] display of labor points in the task queue<br>\\n[misc *new*] instant hotel button on town signs<br>\\n[misc *new*] show BBCodes in received telegrams<br>\\n[misc *new*] show values on experience bar - thanks to <a href=\\\"https:\\\/\\\/greasyfork.org\\\/scripts\\\/3935-the-west-script-suite\\\">Leones\\\/Slygoxx<\\\/a><br>\\n[misc *new*] option to disable the Shop SALE sign below the saloon<br>\\n[misc *new*] you can assign a hotkey to ClothCalc in the <u>game<\\\/u> settings -> Keyboard shortcuts<br>\\n[misc *new*] option to minimize the Chat rooms GUI element bottom left (compatible with Diggo\\u0027s Friends Script)<br>\\n[pin items] redesigned to fit the new inventory layout<br>\\n[main] option to open the Wear window minimized\"},{\"version\":\"39\",\"notes\":\"Support for HTTPS <br \\\/>\\r\\nKO timer ready for beta protection system\"},{\"version\":\"38\",\"notes\":\"[pin items] feature to pin items in the recently used section of Inventory <br\\\/>\\n[analyser] job analyser can now switch to display all found products and items <br\\\/>\\n[bugfixes] selltip unequip <br\\\/>\"},{\"version\":\"37\",\"notes\":\"[bugfix] fix for self opening chat when chat extension was enabled <br>\\n[bugfix] fix for buy tip in the new shop <br>\\n[market] option to save your preferences in the market sell dialog <br>\\n[crafting] reminder for the level 600 crafting recipe waiting periods <br>\\n[settings] tiny improvements to the TW-DB settings dialog <br>\\n[misc] duel motivation bar is replaced by a K.O. timer when you died <br>\\n[misc] added option to avoid nuggets as default payment in event games (must be explicitly enabled) <br>\\n[misc] added option to skip the Premium dialog when using fetch all in the market (must be explicitly enabled)\"},{\"version\":\"36\",\"notes\":\"[main] ready for the new calculator engine (comming soon) <br \\\/>\\r\\n[main] actual bonus level shown in clothcalc window <br \\\/>\\r\\n[main] bugfixes (attribute images in customs, level based attributes NaN, ...)\"},{\"version\":\"35\",\"notes\":\"[main] Black Friday items work with the calculator now <br \\\/>\\r\\n[main] calculation data update is necessary less often (more work done on the client) <br \\\/>\\r\\n[main] ready for adding fair construction job\"},{\"version\":\"34\",\"notes\":\"[*NEW*] [buytip] fixed major bug, data update necessary!<br \\\/>\\r\\n[main] job list displays rewards for the best equipment, current reward for the selected job displayed separately <br \\\/>\\r\\n[main] various bugfixes, some performance issues addressed, more precise reward calculation <br \\\/>\\r\\n[main] fixed job reward calculation (+-1 precision formulas), data update needed! <br \\\/>\\r\\n[main] added sorting jobs by danger <br \\\/>\\r\\n[main] now checks for duplicit clothcalc installation <br \\\/>\\r\\n[sleep] added vertical scrollbar\"},{\"version\":\"33\",\"notes\":\"[main] ready for 2.08.1 <br \\\/>\\r\\n[questwiki] added option to switch between introduction \\\/ completion texts in the quest book (already last version) <br \\\/>\\r\\n[questwiki] added option to always show full quest texts (default OFF!) <br \\\/>\\r\\n[jobs] motivation calculation adjusted for 25% steps <br \\\/>\\r\\n[main] BUGFIXes: server data loading sometimes got stuck; CC not working for players below level 10 <br \\\/>\\r\\n[buytip] fix for the new Mobile Trader window\"},{\"version\":\"32\",\"notes\":\"small update for game version 2.06; hotfix for beta worlds\"},{\"version\":\"31\",\"notes\":\"tiny update for game version 2.05\"},{\"version\":\"30\",\"notes\":\"script is now ready for gameversion 2.04\\r\\nthere are still some fields to fix, but the most parts should work \"},{\"version\":\"25\",\"notes\":\"[bonusjobs] security query before reset<br \\\/>\\r\\n[bonusjobs] sorting of the export<br \\\/>\\r\\n[chestanalyser] some stats for future drops of chests, bags & collector cards<br \\\/>\\r\\n[marketreminder] add reminder for market offers<br \\\/>\\r\\n[other] button for deposit money<br \\\/>\"},{\"version\":\"24\",\"notes\":\"[ClothCalc] Bugfix, Motivation was not included at Wages<br \\\/>\\r\\nFeatures listed below comes from an other Userscript \\\"stewues The West Tools\\\"<br \\\/>\\r\\nAs he decided to stop Offering his tool, he has asked me to include this Features into our Script.<br \\\/>\\r\\nFirst at this Point <b>Thanks a lot!<\\\/b> Stewue for your hard Work and your Decision to Offer this Features now through this Script.<br \\\/>\\r\\n- button for sleeping into best hotel room or fort barrack<br \\\/>\\r\\n- confirmation prompt before quest cancel<br \\\/>\\r\\n- hint to deposit cash<br \\\/>\\r\\n- button for last post on ingameforum threads<br \\\/>\\r\\n- moved button for new post on ingameforum to upper menu<br \\\/>\\r\\n- add duelmotivation into userinterface<br \\\/>\\r\\n- remove automation pa hints, like the nugget picture on work queue<br \\\/>\\r\\n- activate Fortrecruitment also for non generals and captains<br \\\/>\\r\\n- enhance the Fortrecruitment through some more Features<br \\\/>\\r\\n- the market map<br \\\/>\"},{\"version\":\"23\",\"notes\":\"[general] script is ready for version 2.03, all features should be working<br \\\/>\\r\\n[clothcalc] added the wages values, honour to petee for his great work to find out the wage formula<br \\\/>\"},{\"version\":\"22\",\"notes\":\"[clothcalc] fixed Bug with faulty Detection of corrupted Cache<br \\\/>\\r\\n[questwiki] Show tw-db Link on Questwindow<br \\\/>\\r\\n[questswiki] Show total Amount of Items at Inventory<br \\\/>\\r\\n[questswiki] Button for Open the ClothCalc Window<br \\\/>\\r\\n[buytip] added new sets<br \\\/>\\r\\n[buytip] fort boni of natty where wrong<br \\\/>\"},{\"version\":\"21\",\"notes\":\"[general] fixed failed script start at gameversion 2.02<br \\\/>\\r\\n[errorlog] fixed Error through new Notification-Bar Object at gameversion 2.02<br \\\/>\\r\\n[settings] added Group for the SellTip Settings<br \\\/>\\r\\n[SellTip] add Option for never sell Set-Items<br \\\/>\\r\\n[bonusjobs] discovered Bonus Jobs are now cached<br \\\/>\\r\\n[bonusjobs] add Export and Import for discovered Bonus Jobs<br \\\/>\\r\\n[other] Option to remove the Game-Hints on Notification Bar, which could not be disabled through Game-Settings<br \\\/>\\r\\n[other] Option for a Scroll-To Inpute Field on Minimap<br \\\/>\\r\\n[ClothCalc] fixed the Bug, that Joblist is sometime not clickable<br \\\/>\\r\\n[ClothCalc] fixed the Bug, missing fastes animal on bestwears without animal<br \\\/>\\r\\n[chat] fixed bug for missing smiley and color inject on chat windows, which are already opend on gameloading<br \\\/>\\r\\n[general] removed script parts for gameversion 1.36\"},{\"version\":\"20\",\"notes\":\"[general] reworked the Script for the-west Version 2.0 <br \\\/>\\r\\n[general] Release Notes for Script is added ingame <br \\\/>\\r\\n[Importer] the Import Userscript is now included in ClothCalc Userscript (for Gameversion 1.36 you will still need it) <br \\\/>\\r\\n[Importer] the Alliance Import Script is now directly available through the script <br \\\/>\\r\\n[ClothCalc] Basic Function is working (showing best cloth) <br \\\/>\\r\\n[ClothCalc] <b>Values for Wages and Danger when sorting the Joblist are wrong!<\\\/b> , so temporarly this feature this sorting is removed until our date is up2date<br \\\/>\\r\\n[ClothCalc] preselecting the selected Job on Minimap is ready for Version 2.0 <br \\\/>\\r\\n[ClothCalc] the sorted job List (experience, wages) could be changed from normal mode to value per minute to value per energy point <br \\\/>\\r\\n[ClothCalc] Joblist is reworked, jobs could now be searched and jobs have little popup with complete job data <br \\\/>\\r\\n[FavoriteJob] this Feature has been removed because it now emulates a premium feature <br \\\/>\\r\\n[SearchJob]the jobsearch is Version 2.0 ready, the direct start of one of the four shown job is a pa automation only feature (innos decision]<br \\\/>\\r\\n[ReportAnalyser] the basic function is reworked for game version 2.0 <br \\\/>\\r\\n[ReportAnalyser] detailed job report and detailed item report will be added later <br \\\/>\\r\\n[Chat] is ready for Version 2.0 <br \\\/>\\r\\n[BuyTip] is ready for Version 2.0<br \\\/>\\r\\n[BuyTip] set bonus is now also included here<br \\\/>\\r\\n[BuyTip] also shown on market now<br \\\/>\\r\\n[Collector] is ready for Version 2.0<br \\\/>\\r\\n[Collector] also shown on market now<br \\\/>\\r\\n[SellTip] is ready for Version 2.0<br \\\/>\\r\\n[BonusJobs]Bonus Jobs you\\u2019ve found are now shown on minimap<br \\\/>\"},{\"version\":\"10\",\"notes\":\"[ClothCalc] added Favorite Job Feature (petee)<br \\\/>disabled script for TW2.0\"},{\"version\":\"9\",\"notes\":\"[Chat] added popup on permanent whisper icon<br \\\/>\\r\\n[Chat] history ist now saved on localStorage (color, whisper)<br \\\/>\\r\\n[Chat] added permanent whisper to player menu<br \\\/>\\r\\n[Chat] added inputfield to direct input color number<br \\\/>\\r\\n[Chat] added bold and captialize options<br \\\/>\\r\\n[analyser] added table footer with overall values<br \\\/>\\r\\n[analyser] added statistics reset function<br \\\/>\\r\\n[analyser] exclude questitems from item statistic<br \\\/>\\r\\n[analyser] granular report for items (Item-Report), click on items at new table footer<br \\\/>\\r\\n[calc] added option to switch position of cloth calc window between left and right<br \\\/>\\r\\n[enhancements] added feature so you can hold the +\\\/- buttons in the skills window to change the value faster<br \\\/>\\r\\n\"},{\"version\":\"8\",\"notes\":\"added settings window<br \\\/>\\r\\nadded chat features (permanent wisper, color, smilies)<br \\\/>\\r\\nadded Report Analyser<br \\\/>\\r\\nadded second Buytip Icon if item gives bonus for current selected job<br \\\/>\\r\\nfixed with * marker for new items on market<br \\\/>\\r\\nfixed several small bugs on job search feature<br \\\/>\\r\\nfixed buyTip was not shown without calcdata update<br \\\/>\"},{\"version\":\"7\",\"notes\":\"add new feature jobsearch (petee)<br \\\/>\\r\\n\\\"new\\\" Icon will now also look at Wear Items (thx Inno optimizing your Wear Object)<br \\\/>\\r\\nchanged max gameversion to 1.36 for coming new gameversion (no problems found with new gameversion)<br \\\/>\\r\\nadded new Script Loader with Info on footer (next to servertime)<br \\\/>\"},{\"version\":\"6\",\"notes\":\"code cleaning and optimising<br \\\/>\\r\\nupdate minimap on jobchange if minimap is opend<br \\\/>\\r\\nset limit for custom jobs from 10 to 15<br \\\/>\\r\\nfixed several problems with attributes on customs<br \\\/>\\r\\nadded images for fort-customs and for attributes on customs<br \\\/>\\r\\nadded icon on Traders with tooltip for which jobs this item would give a better bonus<br \\\/>\\r\\nadded icon on Inventory with tooltip of bonus on selected job<br \\\/>\\r\\non rev. 59 added colored tooltip for better visibility<br \\\/>\\r\\non rev. 59 added icon for unused items on inventory<br \\\/>\"},{\"version\":\"5\",\"notes\":\"eleminating browser freezes<br \\\/>\\r\\nmaking custom section customisable<br \\\/>\\r\\nshowing best and current \\\"job\\\" values on custom section<br \\\/>\\r\\nchanges on cache system<br \\\/>\\r\\ncorrected code verification on rev. 34<br \\\/>\"},{\"version\":\"4\",\"notes\":\"fixed removed indexedDB.setVersion on Mozilla<br \\\/>\\r\\nbetter error handling of indexedDB, click on \\\"cache error\\\" icon will initiate a reset of indexedDB<br \\\/>\\r\\nsolution for Cache Problem on Scriptupdate with Chrome (not working on this update :( )<br \\\/>\\r\\nearlier button add, opacity to 50% until initializing isn\\u0027t finished<br \\\/>\\r\\nten second sleeper on initializing to handle chrome freezes<br \\\/>\\r\\nadded marker for items on traders which are not at own inventory<br \\\/>\\r\\nadded \\\"*\\\" prefix on market for all items which are not at own inveontory<br \\\/>\\r\\nfixed wrong levelbonus for soldiers<br \\\/>\\r\\nprevent script from be active in more than one language<br \\\/>\"},{\"version\":\"3\",\"notes\":\"fixed problem with need of cache update<br \\\/>\\r\\nfixed problem that inventory window was closed<br \\\/>\\r\\nadded best animal to every job<br \\\/>\\r\\nadded mark of weared items\"},{\"version\":\"0\",\"notes\":\"** please enter some notes for this version **\"}]');
} catch (e) {
}
;
TheWestApi.version = Game.version = parseInt(Game.version, 10) ? Game.version : TWDB.script.gameversion;
TWDB.script.gameversion = Game.version;
TWDB.script.isDev = function () {
return this.check.search("dev_version") !== -1
};
Number.prototype.round = function (e) {
var t = Math.pow(10, e);
return Math.round(this * t) / t
};
String.prototype.twdb_twiceHTMLUnescape = function () {
return $($.parseHTML($($.parseHTML(String(this))).text())).text()
};
window.debLog = TWDB.script.isDev() && console.info ? function (e) {
console.info.apply(console, ["CC:"].concat(Array.prototype.slice.call(arguments)))
} : function (e) {
};
TWDB.images = {
iconName: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqBJREFUeNqslEtvElEUxy90gOHRDhQpDBIEaysKNQZpYpqiLroxaUjUrV/Bpd/BD6IrdySGmK5cVzf1sSgNgrzDAB0QBpgZxnPonYZSSLvwJj/unXMP/3vOfRyDpmnkfzUGf1Kp1Lw5A7BEwTYGVNpfaul0+kxsQbMAHOCmi/aBFtAF5IWRLbC7gLtPGOalPBpZG7J8cmKxHIDtN3AKaNcVw6gCYZNp/4XV+kaRJNKs16V3wSBG9pdyKTrjgr1aBsK7LPtqPBwStdsl1mbTGiuX98HuB6zzIpgnZgJuAHfWNc2ndjpEabcn3KtUtnERupfG64jZAH7XbN5bHg5ZVRTJT0Kq416PhATBsyJJUZj3AOarxPB7BQhuGo2Rcb9PTiVpcMDzuOnErCjMVqmUpKnarxLD1TxOgyF2X1F4TPHQbC4KNtug4HY30CFSrW5AFwKcswc4K4ar3YwbjU8xLQVSPOK4iUjW5xOw94miixfFBAy9s6kyc+5WOCHLG0qrRfqtlhLv93mcZGX53PdBsZisclwGhjlA0u8cM3O3vAFNiztrNccwlyOGdpvZPju9Cw1S9X+OxdZh+IO+itG0mH63go+bzWeD4+PJ3apxXPvChiqKabXXczgGAzaRz+99DYUOwVyeFdNTDNzK5dZQCDf8/c4OPp/vgAisAY/eZjLP8VTDjUYExHALHHRe08WwMrDJQuEhW6+zaMh7PFnoPgFH9Pngg69mvd5otFy+vVmr8RClq2W3W+hBqtNpDj2CsCQ4HGX40H75/R/A9g11cQ7A0xyD2EevKL4GH3WrWFz5Eoko9P/EgMUR6hk+oVVMkz4lrFsVSofWMIberQBNGX1qug/Us/PIVFpWMII/9Kgl+j2e8hGpraRnAwx0n38CDAD3lwpCS51YdAAAAABJRU5ErkJggg==",
iconExperience: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAz9JREFUeNqsVNlPE0Ecntltt3u00FqK2KIQQCKERAQxKqCJB8YjMdEXH1Bjor6YoNEYH/wDJP4HJvpkYkxMCB7REOIRPDAicgkVa1sKEtqypff22u06g9Nkg6I+OMmXmZ3j+32/a6GqquB/DfiXfUqzxlbzmvUvQ/cHMhpBT2Y8FASZ4Ldk1CpEeN+AICAUjzy6cn/iyYUXaM0SAfBfyQBRwyGYL3edbeMpsSUbm9t07+7tM9VVFcxqZLrfqILEPR7BEgp4LTxtsohL0/RSdr7U7fHpiQitq6o2wBQh1hNXjNg9BKvXOytAOUwp0ncgBn3lgsCbyTlWzhAvlnloTaDZqxdPrp+ccjFbN9dsSKeltWYTV9F97dgph8HlUJLfYUK2Whw1LQEIQbSlqU64fulE9dGDbUzv0zcxnGlIFGE1wp2bnR121tdiNfNNlmJzA6QZvUFdZNW4k1LisyANLUqGqQrTFOXPpqJyOBoxS2XnHwTStlvnznfN6IgyPAvxDGeji8ytptzHLVwsA1XaCPJyFuRzyDBFIb+idD4+WuILyCWukDGt2I442SgvSlIIZx5CTQmUINgPHti78/j+2tP1hsdV63hRB/KoTtUcwJ0STQIw6gFgLGDPxbltz98PT9+YnHS60DvsZqYQPJqQmr65vfTgyIzY0NpZazfFjBwMA0XOAQVxRhIAfAmaQJDZtzAwON7tdE4jahDHRLiYKdIiuKrTCMg2SC0uivGXAyPjRpNZTUpZMBsEIJz4mfciTgZqPjPn8czMkfuZQlcUyLKYhBzGjAIvHd5dWaYkpuHQVxkMeO3qRNC2rM7KpcAaQ0TP8xy+KxEyBWiKD3/kiDppe3MN214jNnx2LoDRcGNiItLkGhLbfe7kRglnysr4K/fu2WUhbwq9qupWVDE+SDXWOdhXrz+8D4JDtm9LYKyvv38C+Sj7O3Y7jjSXH2czn6311W2NPQAMr9ZOeWIp6ZuPON8Nmzwy9DOfRsZEWVaW26z3Ud9UKLT97UZHLbo4617594CaudCPxuIioYjneXbBv5gjRqCmbXJrS22p1h1blZ6HzxZIvNWVZIXiNZC5kBx1BZmqiW+WxHuZ7IcAAwAW9VeYOecN4AAAAABJRU5ErkJggg==",
iconDollar: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwZJREFUeNqsk91P01AYxk+3buyj6+gGZXOTrwCSiRB0gkYiGXilYDSAqHjh56XXmhAT77nUS+/8AwhqTIQQE8CIfGNAkskE5thGYWPr1lk6unpqTkkz4M6T/HJOz2mfvu/7nBeTJAn8r6EB/3Fgxzxr0Fr5WQ4ioRmg9cFQssPzhDRoT4/QojMRIiBExKH64HlCsoAJQnTc7D11rulCcwZ3dWd4PkdpY2+jkfD4m1cDyypR6ai0MCRkhthaWttO17Y+HIiksOqNaBpsxdKgxKYHbgpnLpWxj148fzYK39tT0s5PU06nAGKB0Fr6bMfgxEZ5NS2BzTD8RkiCXUEHlqZztL9U6CMI83g6zWVVNTxUaFmMdLrLSn8mSJ8JY3UV0swsZRT5YkICd8/nQOWJFMCz8Wqv12s9wryDyJR6GWs89TWTnOTOpgGImq2UjSrUJpNaMD05/BqPbE12XL1CbEYKTapApPx7plGcDK4u7XR79WmDRgCfwxWVfgbThaAYV+zrLCAd5Ip/PfDu/afEUZFhCCPEDnFBqnq6rrfZikoaAoxo/7btLuM4DuA6A9AYrMDjEMNdDXtP+/tfjsB3M7KrigHqDpB3xJ7e2+U8ZsUX5ueXSi1ssMppEFykAO43ZQBN5MDcIkMvBFKPnzy4U4KMw45rJ2nZH0xsW3x9VOO9Gziul2zG7I7OVAgiv76P1jrxFBB5PBTeavZ4atpUl/pQB/yLlbJaDD/Wfmd241nyVnvLZc0fPchpdwBrbPTMrCSNesCAKgfJr60FI/l1w9UpQrJfx0ZWO7uKhhb3yWuDE1krhpswgYuDkJhyOghBavcVCzQBJoY+DK8cZ4B8LQiVCa4mb2O93eGqm2OKmrk0a+25SO1RZm0gFot/HPsyNRiJMus8z8uuChJyQBGTczegDpAF5eLaDYYCm6fuTAVlp08CgV2fnl2cYtlUCJ4xkITKTSm/N3HUBXKEJIJAUefQh0lECsLLZZHPlKuB5aUsR6hDokY040hMQAI8Wu+jWiuBgb8CDAAXATNfWNNYlgAAAABJRU5ErkJggg==",
iconLuck: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA39JREFUeNqsVEtvG1UUPvO2x+OxnTp+xY7T2iRUlEcKqFCVV1cVEiD1HxQWSLACJCSoxAL27Nixh58AGxYQlJaXILIT0zhOnNiJY8f2vD32vLhj3UHTUnXFSJ/uvZp7vvude893CM/z4P/6iIesyRCo0D8XwcGjD+9RZAQOZhA4hAieUzhwhjBFMPHceZCQfoDcD4wKQiz5yecfvOWsMLeHxkgo8ZnpzrBFuDOLfnXhuU+/uP3l183WwQQT3hdMhFT5ahI0Q2effW39zSOif2V3sE/vjg+41qDN1RrbTJZOly8VV7/buPOLhNO9T1lwT35qMUSUtGb2ufqv26PpOmht5TBOovPlgQLE0IPR0SguHUminwFO8987pLCiOdG7H9164fK1p68uV4sXO80OJZA8p4pGUZIVxObBWuQ8PJZdcQaG9LvlWvKNN67zU9WcjUbSnIzEl8wjpP6o1fhplfxMfnz63oXXqzflfUkpTwtj/9yVWB5Wl6ugZx1Cyc5eghuRTbvgfv/xh++/EmRI40kMIZ09n7nalY+jh0oX9l07VngmHWU5OrpKlEGgYqBmTDA5LalljHcGWwPo0SmRWCLeFuPChqJqFh1WtryYv7BHnqA3csFQdGhYSrpMLkE5XgCdmsCutgcz2YGJoUOc4kEgYkT/9Ey3bIcJlJFYHXdGSNnjcQ/GPRkIA6AiLMECswB9QoKcmwJ34sC21gLbtkFVVejTQ+9sNNqaTCbz1yRDL2IPm/2meaJ63JByn2Ar3pO5iyDmU6DSBrT1Y6iwJXiRfwp4mXM5jXFFMq799POdzaBEaFx4flUrSlP5czEimizDVMq5pWqkFM8MiB4Jkgcd8xQ4k4G/v218lStk7UuVy7lERDz8Zmvz2BfiE1JY3dxWiqSY3U5P3mu2z1DRuLDGlA9GR4ykyOCYLpyeDLwSm7/712/1Hxv15g/bO/c2LMuWUejcDb4yC0H3CTXdALx2FFlJ1Xd3JqfDfjRJiWBODL/WPJ6PGa7rttGeISJS0WgEtgqnGe4EZK/TZ192rrXWxHKC0qA7sMfDc8WF1TQpmndZtj+bzWRsfDswPRHqHIGlEgiLCPliqVC2pxaXTCZoZDO5Vm/Urjy/rtd37nU1TdcxEQQiHtaCfM8JCEkE34MsPtlPxze3gufTR7WgoESCTRYOpEJrM5Taf75/BBgAw3Si4MpJ570AAAAASUVORK5CYII=",
iconDanger: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuNJREFUeNqsVE1rE1EUvfMy08xUbc0kU6U2H6WYSWwpRQgU6cZFV9KV4E/wBwiCP8Cf4dJuRARXVZCqYDbagk1tYwshhKZpmkzitJOkaZKZ8b72ThkL7vrgwPu65553z3tPWFpagqtqDK6wib6+QOQBAh+7CIfgJReo783btO+CTKC+jLhGEGnzKaJPRJIvpovoIE4QPU7qLQSIIIy4jbiFUChrmwIYzck0byKqiDrimCcVSVUQEUIkRiTp/tN0+smUZU2Wt7YarxnLlmSZBwUWJybSDxQlJRWLsFKvf86GQqs4/xsx4BBJ1TBiTGLs3suFhecJ29Zgbw/uVKth3bJiz+bmfjxOJiceRaOTgETQbIKezU51Z2dH1mOxZYy1uHrRJ19b1LSHiU5Hg40NgLU1AMOAm5Ikv7Dt6buuG4L1dYBcDniiouuyYLG4CLHYF4wtIwyPjB/zhu44OhQKAJubAKUSlh/rL8uQzOdV2N8/I4fDQ3D6fWhyBstSBccJu4xxMaLfTUFqNETooEGmeU7E2ymaWcbEAm4ZYGls+8wNpObqBNFGExkTvHvjkvXtg3p9H3Z30Zvji4sFLi73emekLhLxu7CN4Gc7UZS2K0kGXRObkc18j/F2dPRj3jBaJVTXoAwucfJN/GjfEbzi24LgBFOpD9it0NXoB3Rd944JA8YgF4mYjmnq3W5X8Zzh7RDxlYgKktSTZ2ZWpWj0PQ53EDUuiJO5vufRaweDVj4eL6HUMcU0VRFdO8KFT0RkqWpDmZ9/J0YiKzjcovJZfmXeG+vTkdu1SKRSCYdttVaL5rDIb/iRx8crw5nMsjA09I2I+JU4oifneGQeYZ+KyZ9Qu6UoRjUUqh8fHEzXNG1HyWReoas/cS1Pii6ILv8anqsOPQ/eb1VUtZxMJJrX4/Ff9rkS7z22Lnn0Dxn4jOPq/lDWxm46XaD5EyLpUEL3f/+Zv3lfz4ACAz7Ftv8P87e/AgwA2Gk+sVBbJGIAAAAASUVORK5CYII=",
iconLaborpoints: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeVJREFUeNqclM1OwkAUhVtaKMViA2K7cOfOV/JF2LLyFVjwEkRehK0rUxISBUUrP/2xP95LzjRjaSNxki80LXPmzLl3RlVOhwoahCa9T4mMyMGvkee5oteINYkWYUCQRSKQQPiswQt0iRvizvf92W63mwVBMJtMJrdYSD3XGTsxiT7hRlGk6LquaJqmLBaLCyyW1LmoEjPgbhCGodJsNo+Cq9WqVcrxRKwhhc1YxCXRI65YLE1TIWbhey5lVxRFl8I24YiFHBZiQSHG7ubzuYVv/P+QCIiY+GYxFdthgf50On3gSX/BLsWv4zj3LEoFSHTJjUsVU5IkqYTdiWcWElvHfHZ3FNOw1TZvqU5IbFU8S2KaXIAMYcaj0egxy7Ie/dEm21167o7H44FwNRwOn9Y0DMP4sCzr3XXdF8wvxLirt8Ta87xIVJG45rDJbSG2XC496rUlvd8QPvGG+aks9gV3n2CPFVtyjrZts5NnCHElD5ifKVI3HxCihpKr6Kc+nwCRkWma7GgNsQSIPjuKpVJu4qCb2PqOi8JBs1in0wnwfi/dHHn5OOWlq+Ybbv04jgtnJLzH98prSK04Ytw3NvcdaCOCFfGKTMOyWN2tkSLcDRy2EMEWbpO6g17lrPGfy5Gd/QgwADbFOC1FlFuVAAAAAElFTkSuQmCC",
iconData: "data:image/png;base64,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",
iconCache: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAUCAYAAAD/Rn+7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABTFJREFUeNqslslvHEUUxr+qrtk8i3Hs2M5GnDhOEBI4JBISiYBIIJYTBxBSDkjkHwAJceCfgAvc4Q4SBzhEQRFiEZdI2EoQkE1JnEw8GXuWnp6t1+KrnklwPDPxZSK9dLu76tev3vK9ES+/9gZWLl7Ae2fff3O6MPEcolBLpQCNHf+ZJVJa4n65cnvmj++/+3P6CPTs4bHyVP/dsZe8G1+LlVu5e5UQ6ZSC1k8mCpoXAQuzCrvqtagEbPDRL+PmGQfV68uHPl9yruf+ueXgaLu/Wux8YhDoO8DxpyF/cvAFn7xK646Tp/zN4kcfLu99pV7WOP7iNKYtjTCK4hPHp35o/SRsDYSktQhd58dPqs7ShWvlz7IyVR0nT6nqvTPphVNYPPMWEkELrlNHaNcQNGntBoJOG5HfhQ4C6CjsfYgQIfQj6EQ3gjN3BItBcHqzeNsZJ09luo1UuHIe316aR6ftQvkdJNFGx+nAbbmwIg+uG0BGPYCVZE2wMFrtXlH7Bl7I49wn5/D7jz+r1s0deNpD1/BCHWd9J57SiVSuIDz8fWkV65s+9nPx0gLQLAN2A5jMAGsdnoqbc7SpOSDPP4p3gMACyj6QndqNvVNZ+J6XJU9u5x0lz34A1FhfM1mg0uKeflnm5nn/BJ5S6YzMHFhC4anr8DcfYI4O7efudJpGB+dOCCy+K2KY/Y1GvqQxxXc1ftgjMDTHjgJ4TJ2OIjmMt5cO5LIplFs+I6rhM1aT3BZIgYytkdEpzCmPPD3IUxN55BeeRSpbouY8QIqeZPhhczUtPrcHOHFWxPH/7bxGcJ+O832yrw0Jmh8G8Jt11panh/GSLKzZXBKn/QJkZQMrUuIma+9tMgtBGvauKVy0S8N5KpNFemYPZCI1oEvGNNPrNnsO6rYR0m2KIcyBfbj1DYReB8N4invWGw6kyuFoJoNnul0sCEaPTob7dqGerUKYGpeDPCksBZlMj5Qmb5MbPB2buYc1ZAIYYLWM0O1iFM9su1GvwkkqJHifp4UygVK6ycbojuRJ0+Om3Uepu1/TsGQ6NnMv5LY1/RN79iYiAkfxWG6ouS7qThNGUSJqY8RU3t1oxAwxgqeMl55dgQ7Dx4dif3FQB/76chEJkw77CsTstuFpgKZmHFMzLobx4jHG/ygAmDepLBSg8nlYxSLmq+zcqV7pDOMpv+WgtXaNAtp8zLlHPjA39xJXwMwhSvXG0UCK6UzQbvLkBA/hmWmRlEm8UJjAhCWxls+hygguz89jodlBvcp9uvUojFt5yoCctasEN3pNscWML4K5OXF4GcmEhUtyJU5NPK22Osi0Rh6nA+VhGM8Ec2Z6N2oH9sGj7FxeuYrItpE7/jwKs2kcopDf+fVfyk8wwFNsZXiVEnx2FjUSLr3qhL2rSUu7pfHDx6uxSKeYBpXtvWfPxGb2RGZchb7RLZ56kOfyunG/iHKliN0EbTR7TbK6ehmTFGr63mNagzxlijpkOBuksBw4Pzk1KCd1rrQJ74Yi/t3TYjwsWsM859oSC9Sc1+zhRKVMhA/DOZzH17ZZKwxPwDGdzey0eciWN5qntB+JWuEgPvj0HQjmQjCxSrAGXAacXcdQUNU70C6HvOcazWEXBjh4LIpToVnddr2GYmPdSILQvh4rT1WsPNylU5js1OP2NmENeA1ZA2G3zWJtsa6cuLbCbofP3VinHv4SMRFL8/S3ugp32yFca2KsPJFQ6qukJU+GYWQJIf7Xjy2NsP3XsMD2JjHpgvYifVlK6Y6T958AAwBjoD0Kglj//QAAAABJRU5ErkJggg==",
iconCount: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAv1JREFUeNqElMtPE1EUxs9MH0zfL2iAlkCLQkkBRR4hBk1oYkiMduUCNi5cuPZvcGPiyhjXGHGlMTFBXBAlEQUkkUBTWmyaYm1REAq0A9On045nmlszYIs3+WUyc+795rvnnHspQRBAHF6vFySDRuQEJSKDk6OI/CbwSAnI5GpDXKxGNIgWYRCKxMSFeeQYSRNqilHEjQGxeocsw+pCvGExqohvscrMxIipQ8UFuEmf7R2ZnyfuTohRxJEoVI84kLbb11ofKgMvmZXvQ1P97WblxGXteGBu/RDAFiLbFB3mKrmRbk2FWEQRxH2uWTuqLOwxvliBj6R09haL7AKkQjCzoWExbkP05Of0WWKiq662ZlNfOR11hqQ4oa1JrwU+Bxxdn8FXM5kvr+jIq4jVT98feQqAVc7jbnYW4KKVbZi+k/CADusR84Od5tw5OjMWLvWvkHVUrZypYO0BGsJ08GmYWQfYTgF4XMugUS7Ds88AsxtYZhOUaGs5Z6WKgFRMIAHB+/rKI3z2To2+8azGAXww9jEeOdSNt37p8+1qOF2n5wPG50kli9LmhCru5O4Wldboug5XXUyOByXf02HXdrvd0N+uOyYCvNRVtT4TxRX3brmHNXW0DRSb0Is1u6tPOrpcbiPIEjBg/8FoVP7zaUEb+7TrXDxLrHx8PM6jgXLyIy8glgDmhtPnAD4JP8JBCG+BKcWxpjRt3QRwFv/nTPZ+Kbg2Ygn1TM6DPHzcuBNg5fywNdjyBDMVSjuiQrHwy2zQrOKBy5EtC6dzViIdnX28oJ9j6Jw8ug/wjRr8Gs007RcxGkkZknXW7lmm6dLzjLpTPE5i8xZqiYkB9qY7yxwmWTjIlzudG2w8UO9h2gUZE8V3PxJGtpEjsuafgy5+yCIJOxVmX/lV4SPBLC5a2ktm1dEdtUyhNr5FC0H89hNB35CptFO5FST3GU2uHfG2MBIYSQ8WyKFOke1xlduiVtMWJNbZU3GeNGn+dLPWEuMluaOq5LTC3wpKxx8BBgAeuiDOQ7ICHgAAAABJRU5ErkJggg==",
iconKilled: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAx9JREFUeNpslE1v20YQhmeXXxIlUYodObArNDXSHoIgSJt7Pg4OmpOBBOhP6M/rsafeCvTcOBc7iBPHlmQ7shSJkknxY7nsu8IoUBUTeEACu/vOvDOzFGVZ0v7+PvEjgAVc4DE2KEEOEpACBQpae+yVbyPkAB80wSZogSrQYAa+MFOQseg3YkuhOmiDu67r3tvd3X2wvb39gxBCHh0eHgyurt4WRfER6z0w5iB6XUyCCrgNfoLAk70Xe791Ot930jS2puGUajX/Wb/X/+fNwcEfKI1k62O2rVfFzLsBdhqN+uPXr1/97lUqt05PP9JoNCLHtmg8GftRFD2/s3XHu/x8qdiiYiFjuVwVC8B3v758+cr17FunZyd0dHREURRTM/CpWvFpOLpyRsPJz41G7SSezyOt9TVnZpqhlmLLem1tbGw87Pa69OnkA2XpHMWUlKaKhJxTI6jjOwmCVrDn16rzwWB4gTMT7rKSLGbxGNTDcFoOh0OK4xlJKVEYSddRZGyS40ra7mzR8fH7rX/fHLzgGtf4/P9GwwjbUXydqyy3pbCpUvUJ5aJZnCwyJNS93+9R96ynSxNlZ+HG5WkguSJmuqPTNFOW5VLFDRb7HBsV0JrMcDuOC+uKlCoKjI7ijMS6mOYi5lKKXFjIqlKlqushsxLfNUIMkFKWK0QttW3bOZ8pma9iy+uSCRK5DyEhrUXnVZGRDa/Skovs8jRHGkJblhVxJ/N1sYJnZWbELAgJKSjJMjTBeNAQtEljV5amRhSlsML1e2qviM3BKJyEkziad5I0hkVBzUawyKzQkpIkhdWMcL0Uajbkkfia2aqYGcDL4w/Hf+V5XptOZzvI0Gvf3qTNjRY5lkNJmUF0cU5jbEZ4xyymbxK7GAwGf8JCVyn1NC3SR59Or9v98/O679cIQWgynlBRqATZfeYz2U2ZGf8mmsafIcLmM9j7G93/BSL3Ly7P7w4GV+0wnFCr1Tr0PO8d9oY3ZVZyBM2LJqKpSRe8cxyn3Ww2A4B2/GjWznltKfbNz3E5HoqzjPhHeMH3tspDmvFayG+1tPmfAAMAqEx/WbBWiOIAAAAASUVORK5CYII=",
iconNew: "data:image/png;base64,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",
iconSetting: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABGNJREFUeNqsVFtsFFUY/s7MbGfvpfcWSyvVUKhFtFHCEzZNVR54IJKIjRhr1BjjOwmP+oBv+m5MDDGSGKMPQpoYBRM1Sg2JQCllWwqUtnbb7rK7szv3c/GfAY0EjS+eZCaTOef/zv9dzmFKKfyfw/i3iZuXziV13RiRgg97XrhdQTUnmvQKFBYD35vx/PDiyOgL4X8Czv38NQLfedazipMa054JPbe9atmmVALpTBLEyLWtWsmqN76tbix/0tbd+9Oe/Yf/qmd/p7wwfbpp9caVN5hmvJvN59qhJALXRb3ugEuBVMaECAN4tgPH9VQQ+qtJM3l8YHjfZyNjL6n7Orw+fZqVb1973dCN9xVjeR74UIIj8ByEgQtBG/uuAAhYSgkhJAP0XqaxD+YufCe5VKf2jk/cBRQ8QOg1xkmn96RQeUH0mPRRuDaP6V8vYmB7H3q2duHKbAGSgIeHHgVjGjQjAT9gHa4XnLDrlRs89M/HgMtXfzBrm7cmdd1s83wbIdFSuoLjuKhZFq7OL2Jp+XeUShVsaW1GEHAkEgnomkGqSEAz+y6dP3s0leu88CflEUCNKUgW7Xx98SZR4qjUqkiYBjzXhl23wDkDDwVK5SoEAWWyGbS0tsFyXFatOQds1995F1DJ3aRLC6GQXh4uz8yiSp0Zmh5Pd3V2IplMYn39DoHVaKNZmlP0vwM7d2dh2x4xsXsCLge1u3gYUFKZkQmhZ2NgoB9t7S0EHqCtdQv2PL4Le596AruHB2EmDHI+RP+2bdhO61LEQNc06l6kyea+GFBKkY86k4rHHbW2tCCdTENFPhoGfSeRSplEMQVylbItkW/OIpvLwNB1elgsAWUwe09DVYnjQICRxjMzc9golalMYWOzjMvkbj6Xx/LKGnwvoPUaCoXrqFRrGBwaQt3x0aCHQK17GqpFenlEMcnDEBrt2tPdAS5CFIubWFhYopgYsVHptInm5hyVSGha9E8gSnTIRcMPxVIMaLvOTLlqlcxEslfTtVizXD6D4loR5c07oNRSMaO4CNK2EyN7HkME0yAzihSltY0qbMdbIR8KsYac46LjeN84rq/8IESa9GqinAku4iM3uKMfo/ufRisZFFIGSSx4Psd6pY7VYgTmk4DaGU3TCnGHT44eDjdWbp5cXrj8fMBZLzM0tFMeo6h0d1FkMlmYqSS29naBTgXK1QZWNmpYXa/Epjl2fX7swKFTh45MyhgwCrOeav6x1nCPU1MfKl1rJ2+QNtPYtXMoooM60Wvr6oBlOQTo4E61HjtLZi4bhnGsq3vrb9Th/bfNua8+ZmfPfDFRshonUplcv9lkIGs2UY2AR7o0qLuaFd00PoKQS7tRn89kMseOvPrW6Zdfe+fB6ysaU59/hBu3lvb98v3UK6bZNM4D/lDDcTMRGDMYDKbXBecrARdTzx08/Gn/w49cmph8+5/vw/uAvzypkxRDruvvoEj0UaCzlIAaZf02HdOCApt78eibD9T9IcAAnaJ+kwOqUbEAAAAASUVORK5CYII=",
iconSupport: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABAtJREFUeNpMlFtPG0cUx89eWN921/h+aWyC4wUbohQRKTSqqjQoUtMH2j7x1Le+5CXqQ16jfId8ikSqlLa0apWH5KFUgMsllUkxYDA1dsAG1tjGFxbvpWfQuGKkn3ZnZ+a/M+f8zzAzMzNwpTEIj9gRB+KizwE63kO6SIdyQb+ZQBf2G0sXiYgXCVIGqaCFnCMN5IRSQ5pUVOev7IgIyUgYSbhEcezu1NR01GYbaWSznB6NmlYweP6hVCrm8/mlTqeTw3kF5AA5JTvmrwhJSBRJXR8amv4snZ4ZLZUi9o0N4Ox2iDx7BpzPB/VaTVlaWrr9x+JiZndz8zfTNLN0QyY3OjrK0diEiFBiaOjhN4oym1xY8PtKJWBPTqDudoPtwQOQ8ClJEqRSKUc0Hk+UstlgvdOpWpZFjtomYjYao4TH4/n06xs3vk2urw+KrRasVKvwFsUWj497mcLuRXG/yIqyzIqNBggvXzLs6mq4KIrOjmFs4fp6P3NejuOG7yYSD9PlstdlWTC3uQWL7ZauDroPwCWewn6pV6ydOg42NmJfnahyaGUFrmHSor3e5InHQ+Jc4Gmm/NjGbodCaefeHizMz8Of3e6FGovtMOHwWxwvktjiDuL/7O9/MlEu34rHYsKlf1otETwecjIXT+PlSyrKrdTsrL3jdMLS/Lyl+v0lFPodx5aREiIQW+j8gE9NKjG90wnxF+gIyyKWcpJxlh5T/igajUteL3Tu34fqxETbDIe38Tshj+whh8RbPMu2BJ9P5xwOYFgWTJ7vW4shYiSbNomkibhP04ARBjS0wxF2W9SQ//+U4TifgnN17JzpOmgsGQLSNVjqEUvTNOJw8IgSBDxeFn/lJ3ZBH8UNw1DwPY2MhSOR1MePH8uOp0+hevMmqKapEVsgGt+vt0qlctrI5cLw4gVMZrNSRdeHa37/JIoFWZbVGYYJBYLBqe+fPEnah4fBDIWgoiigvn9Pykolgjwt3EZha2t389WrdKxchnuyzNt0PflTs+loyXLdYbPB+MSE57tHj64FAoHLIK2urUEml9O7LtdfeIoKqVGeVv/x4dHRu2VVnXapqtMtivB5ICDcczqHa2637nI4WFlRWGcgcBmTTCYDv8zNQbFY3BIGBt7Q+jzrix11Ne3vlZGRX7vV6pdKPi+F63Vw+/3gbjZ5Bk1c2MbERiKwc3YGb16/hu3t7YIgCD/gWuL+KtHhabbIVVKo9Xo/ro2Pn+7kcl+4K5XrfLcLPPqOwfRrhgFnz5/DIcu2W83mut1u/xnXvEP+JaVEdPoJaFEfGW1Jqrfv3FnGToDeJAL1kQG6TuJbRyEy9wM9Xo3G3eDpLan11enl94EK2a7csiYd79ILsUEtcU59Zv0nwACopqbnHDzSLQAAAABJRU5ErkJggg==",
attacker: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeJJREFUeNrsVk1LAlEUfTM6qYy6TVcG7lwIEghBiC3bRJt+gbs2Cq37F9p/CNE2irgJkhZGLUQGMYNa6IC6MciJdNDXufEEVzUjQQRz4TCX+3HO9c6bhxLnnP2FyeyPzBF2hB3hXzO3lSJJkq7xMIEj8VRw8cxEbjW8AtQBpPjBj6R0c/0EmEalbrf7zuVy6fC313Iq4jrlqAZ4sMIpW/i1e36/f+j1elk8Hk96PB4VjaO1wY3FYhFOp9OUY6h9pZ6N3zGaM8Fg8CkcDtdzudxBrVZjqVSKQURFLrpWF4XgMpFIsEqlwqg2FArVqZc4bK8ak7+AhPd6Pd5sNnm1WuXJZNJcrRPYEiCfRyKRebFY5I1Gg3e7XZ7NZjlx2F71dDo9LZVKxnA4ZKPRiI3HY6Zp2hypZ2AXuBAg/1HX9Y92u80GgwHr9/usXC4bxGF71ZiqNplMtHw+vyThTqfDTNP8QOqY5gIyAuSfyLJ802q1voQLhcKSeoljo1MN2/H5fPeqqhqBQGCqKMolvVbgSqycC1+CcB61BgEH8Z56v+W2+DnFADqpEbFeCr4LcBGLipqYJU4rRWsDnAmhN2Bf4E3Ezu1wyRvcdAPgEM23BPJFbGaHSHL+cznCjrAj/O+EPwUYAEvcy6pPo+pUAAAAAElFTkSuQmCC",
defender: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYhJREFUeNrslr9rwlAQx9+LVpNMnfsnCOLSWQjZnPoHFNo/wL+hf4OjLl0zWulS2qFuLk4WyVCok5RUESEm5Mcz6fekllIpGEkQSg6OvFwe97l7dzkej+OYHUMkdiTJwTn4/4GL+25UVfWlVCoVbNu+jaLoHib/65MsSdJFuVy+FkKsgiA438cf33eAcM7jbrfLDMNw+/1+tF6vGQIgO6tWq4VKpaJ0Oh0B+0mqGRNY0zSu67pK74vFgs3n82+1LIshCZ56jQlMGZJQtmEY7ihtyxT8E4aabhT1zSZjNJY9nU53wASkp+u6DE0mUgfD6V2v14t+g7c6m80ouPfUwY7joKGN1V/1NU1ToBQPWQyQ58lkUoTu1JeOeTgcYhm0UgejcUIcd6vZbDq+72+A2wBQAh/fH6FmJiMTmd2MRqPXdrstttDBYMDG4/ESwVwlmpk0uZIo5ExRlLdGo+HV63UPDfUBWy2pH37InQv/9Kksy09YWp7nXcLHMrGP/LKXg3NwDj5UPgUYAFHjaDUOHPhzAAAAAElFTkSuQmCC",
iconStar: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABnRJREFUeNqEVnlsFFUY/+bY3dnddntCu1gKrbS0UKXlEEMVKFRAgWgQU+APEyIigoZ4IxpRE6+QEOIt3pCIGtSgQPHkkgRErK0F6UEoPaHHstvd2Z17/L7ZVyz1Dyf57Zv33ux3/X7vm4FPnp0H37y2FA68eS/gxQ3HwbdXww87Hhha9yNydry4aiOOuYgUtj50cSNw9RIFHuccBzwv0JynNQRN7EXrP9ZxNNncX5A3Kr9kQsErN08pqDtRf6EZ15Rh+yL7P80NNjoXj17QgQhokLyLK26fGnxizaKb8H4UIgMhITyItPtq5i93S17vsoUzamjO9gjp9Pzau6dXrFpYmsccXs2Gd4k8cDwPP324waaIPq/9w1o0d9oHO15e+xTOCxFBRDYZKZtYuJgXXFBUeF01CyKb7Rdse3rlxgUzx+/67Pu/9aFK/JuJ2wuCSwJBdAPbELt6o79PvbFkfe3OFz6tvrViHq4VTyrKLxsTzJpEAY7Ozii6acr1U2m9ambpvL3vb/q4oiT3sY6e/jqWxTWX6PL4IAni1amjXnu47lBZaVFNMJgz8dXNa976ev+RfbZlSrapc7ZtAWdb3ILKsqWzpoybs7R62pKU1IA7OtAJJxq6jg/j5BpFuBhhHBszERMP79n6RXrAn2XbNhhaApR41OJsk/bBskwwdN0ylIhTCbc3AJc6z4eXP777HtxuQgzQY6wylsik6WMEikya/vrGlsbK6SVzTF0BXY2Docq8ZbIA0bFlGbyaiAJlxgsiNDZ3nmG2iCsvy0ZFyOIbm5fdieFMUE13imHxkm5anoSi+TVV9ZFxXY2BFh/EUQbbwlKh1MmwTdngGklfED1gGJp/9eKSVT5JlFGxqlvkVb/XJaOw2riqGYWT1tVUvhMckzfb400FUo9DjqGi4QToShQU+QqOMadMJPdkMhaoShwkbwq4fQGIhbohNKiCReU1KVMbEqp58uDJ9geFtu4r1p4fGo7m56TqecGsCg5LaJk61lxFLjATRb4Kw9AxAyMJdKKoOoh88iDHYjGIyBrICQNicV2va+l/f/uXDVvaeqLdAiPIPHKqtaWlrefv0sLsckm0A0S2Tk6wJARN14kK4NkRszFSTTeBzhlJJhKNQziqweVQovvb4xefP/RH11f4WA8iOuSEwHf0hKwDhxva5kwdO90jWD4inZwZNKJRDtuPIAhMiDaougVYe4efvnACOnvl8Ef7z23r6pP/xAe6EWEiX2CqCpAqZpWPn7Zl3fwns1LFHNPUkBcdLIRhGE4WjhNMhe7RJ9bcwFJxoBsmZUBcSIVjAqVx1WgdiCiXmboMgfWdnGfXVt1fs6Bss9/DZZjIh2loQJIlmFaSzKFmZDNyY4lkCZFgxwlzGigIps7PH53iOncxfBYf17ils4srlleXbE+TuNmkHiKUIjdMK1kUNIKyxmiTc+KAsqDoByIqeCURNM2E1q4IKFqy8VK2KV4XiCJ/svH8wEZxbnlueUfn5WP1g0odGvKg9DyYrt/rEQumTMiakczCSmbCwdVyqUh6KKqAT3dhUBY0tYf/xMyaXQJPZ0P1Sy41K02SS8ZnlHOsXCNPfN5Dy8seLR6bPodKQSrSdCvZ7ETOKZ+KUfdeSUDA73YUd+pc3/Ff63u24iMdiNg1J55+EIkRvStj7OjUMtJ8XDEgoRmof93iOY7HEjiR45p1Jary1Jx8HhHS/O7JzFbff3rXrufm606NMdo1rx6mfs/Nm3bdBCxRVjiqIrmG1tDav4+UU5yfdgepibJo7oj8Eotrg5MKMpdgdG5B4NLx/sazF0ItLAvtmpeW5BJA8jjtgtTmmjk5p4oyuBSKN9WeuLjh+F+X3m3pDO/FktkKlk9WDbv9UvQ7dPTeb2d7NyiacUZyizA+N7Vy2Kt42PvE5WJN3xhq/UYw0zf9dFPf27sONu9k6ZvYl2RUT6PXI9yAamrpjyincb2ru19u3f1ja/3iWeNq8kb7l418lziRr6guRssc3PPMQYeTu2YXBEJR7eintU37mIMQ40wYm5MSyEyTKntDid3tl2OHcI0O3CBx0dIROZ2e6v5lXG4ggf0qwjhJxr/npUXODel+5ZYfheFfK7Q87GskMztdyl95W9HPe49eWIJOmhnB//u1Ilr4jnAkYDvvfWs4Ya8/cotNreThbcfoD3J/WGlXVXMTcyAzQ/ZIoyOvfwQYAIwqb0/YdNpmAAAAAElFTkSuQmCC",
iconStar2: "data:image/png;base64,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",
iconStar3: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABU5JREFUeNqkln1oVWUcx3/3nHPPfd29e3HTvTpn6lzldFPDfInECJXMVCLTESYEGmkgqQX+U1BhFkUJkWFYRkiynCGIomtixdJMU7fMl23KdXN3d9vd3X09L7fvc/Yb3K0JUgc+PPfc53l+v9/ze3sO0cjHNorM/10gF6wFecAt/k+n0yQYvXf4f54b8UhABU7gADJvkllBFfgZ1LCizPnhfWKUMpVIo6xVwDjwMMgBPt4k8IIlr9Y9LZQ/xe8Onsvi9dNAgZBjw5Np+fCT5ncT7AIvgWJWms0sWDhX6KfHWGg2zxexG98BOp/k337ix8GC392xafV5jM3gCrjA4+01S+d1sqA00wbOb3phkVi/m/c7M92ljFJisoDzzRevr5w2uXT6tldW0e0LF0k309SeMMnrcdCJAzsp8EcrpZNxMosKy480Xi4/2ngphH2DLMOgMeIgZbhPxKEcfD67euqsfbu3kp6KUyIWQcoM7TVNgwxNIy0RJkV1kery0fc/nKRPDjUfw/RGEGZl1nKFU3M4K2ROTfEeSJvmrFQsTFoyRnoySqahc/TSUKRTMh7BT5MkWaEZ+W6alONe3tYXm8fuFRZpIC6UPAFKWZmIiZ1/q2lYnIwPUCo2AEVRglJqaLpGRxpb6NPty7AwTpIkk6w4KKFrZFeFjbQCTAcpoQB0CiUtYuK1uiU1bo+HHKqDXE6VPC67/NYH39GWtw/iBJrlou7eGBXkemhxbSmpUoqSiSROAUWKnQpK4ACHjLni+fk5rhmaZlJ90y2RLO+JmPg5DVeC1Qc/3KxWlBWQActCoZB8ubXN/f7+01M3LKuk2sp8ynKrZJUAiMWTMMaJmGRRX2+Qtn58lp5dOOnyV8f+ikFWAzgMemROQxGkO6C9/sS5qU/OqfC41TQCpKVP/dqaXZjn9C9/vIwUWSKJSyyNbEtpBtkVyUqf+sbrFEsYwZPn7lzD9BfgFBAZF1U4OFGOhcj5b9dv3//yod1r/V6njVwqGYFYkkzRHmC9zSZBmE7NLV10/U6YAsEotXdGaEqpL9jS3iv2HwI3QQSIE+kKC/dw6k4C6/btesbvVk3SNZ2qH8qLNDTdGNEYPjv8p3BXaEKeK7Z0Xlm8osgXC/bHjTlV4+V9DS3PY9E3oB8khZdk7jui+T0HNuzducxXmOtATFJWynqdknEjELZ3dA0KQ6i7P06BnihNLvZ3L5pZ1DMh150yccx7vShMuLCi2Oe5eqt3LtefOJlu46a2beOKR2sUqFRkG9kx5vmcEOQTJUF766+UhcKJfKt6ue9le9Uggnzb5VQolTLgvnsU7E+QbpjWHjvknLnUKbJrj43zumS4NjLqpPjNupqq0vFe2rznTO1HW+aLhCIZkRdCRCa9sW7m726nnQLdg/Tlj61/Y08H14aWUSdd4kiNY1S8aNfrowmNIjHNsrxvIGmNimIjwxxqsD2w3OcxsUbIswQeB/c44CMqPs4Byuxdgsl+NMPwoCWAQuG45SoFKavrQ23palsvVU7MIa9b2EcVLKtvrN6lZ6SOnZtmydyqAn9HV4S+Pn7NOopjQKceO9IY7kqmhhrlby3dp8HCFQvK7Yhf1s3AwBSuNwMtXhsWqoxx/Yr/Zuci8FDQwelYd7Wjb9Vdc8gezbCMPAnqwS9Hz7a/WD1lnDhJNfiJ3a7d79ISsZkAjoAd4BG+hCbyhXSlvDDrLsZWsJhvxGK++18HR3m/834fEjYOvthYy4tzuDOLbCsDW2ZX5osbcDu/u3leXMPj+SQlLMf2f75WmsAsfn+grxX6D99da3h84O+ufwQYALcjQ3kgubxiAAAAAElFTkSuQmCC",
iconSell: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8JJREFUeNq8VltIVEEY3nO2E6adNdM0DArWaqtVW0MizSS6vEQFXcQeBCPouTITJCLCegmLpLeIoKjoQhFLV7rIqll0MbK7Ursdz+66tnn0uBfXPbunb7bZWgK3zhYNfMzMmTnzz/z/938zjKqquv9RJow3wDBMrMZGOFTTACOQDbBAAOgHREAGFMxX6XxthhKKHjAEg06jIJxdbzAU2WX59agsvwmLovvMxo13R/7qRHR3DDWkE4TzpkBAyPJ6H5bjvM7WVmezoqhlGHoADALhZGsxSWJEjEwGZgHzgKkul3Wm3X5yWzSqPq6svL4D34apGxWyKeK+8dZLZigDmA+Ujo0NFvT0HCkdHn5l+hlD1pWePqvZYmm5ju4YEIGhSCqGyEkqJelZWW/vsVXhsExOpxNFfx/Pc3Jm5kQz6bvdgX1VVfevoTlEjI23HpvErVkA19NzdEXcyL17TseWLQ+eNDd3n8R6hG26nJy0vajK6fxxSzJDitt9g1MUnyH+4flzbxeqW0uW5Epgf+z7p08jxG1mGs+UWPfF7/9oT/xQXV3gs1o/t5G82rp17m5B8G9qbXX50XcBwVRZxyK4+ra2tY9Ylsn/4c+sRcd5fn40GBSfmUz1X+lJBJrAY5rJACPktDk1NbNXYfcNaWn6nF9mjFRUWBfg/yiJJcmjlOhNToOKBwrKy/MW7txZuDk/P91CR2Wa0reWLrXuQSONUpwkraqJDOr3EgLed3Z6Lp048f5UwqjhO3TVNtvao9gUMRChSa6ZDJmUTXNhTCHsxoK7UBfv378ob/XqGWtiC0xgN7e0lPVh7By6nlRENZdID2RnudN5tVBVI5XoHwLeHjjQJa1cme8HSarIRLh0A6puKkdDWvOIkaQuFtq2AhKUGw4Pr2loKF6OHQ8ABQbDnGh8otc7OpFeI5NTSViX19v2ON7x+cKOw4e7b6JJFHsZMCc+ZrO5AzQ+Ec15ROk9vampdHtFRV4Nx7GTOG7KBZ43TQ+FPDP8fkfMUHt7/0Bj49OXaF4EOrCerNUQR29Us8WSXVJXV1RmNPJmqDYbRSESdPu26D548AVRjzsULkocTYYYmog89f1oR8e6EtSnBgdDntpaW68khUjgOwEiS30kj1JRb5VKig+IiOKVeRkZxphCBwJKCK58h+ZlIrJxI6mqd7wQdskOx2mTx/OhFveRoNczmfX1RYspleXfGfmjxwk8qFA2EReNAiYqOZ8p0/R/8jhJFqPEtwOJFZGcKQm5Qq4Hib4bwgnSpfma+KflmwADAByiwbZmDJRuAAAAAElFTkSuQmCC",
iconSearch: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAAKXRFWHRDcmVhdGlvbiBUaW1lAG5lIDIyIDQgMjAxMiAxMjo0Nzo0OCArMDEwMJeg7h0AAAAHdElNRQfcBBcTBzGRmTTGAAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGPC/xhBQAABAVJREFUeNodVMmLHUUcrq27q/e3zJKX5b1JJpPBN4oxBGMCCYp4CMaDIEJOHgQV/D/8GxQ8efDmzYgKXkRMJgQMQozzYiaTyThvmbf1+nqp6vI39qmpqq/6+31L4++/+PhoNJpEC9fUwzSnhHCdIYSm0QIWzyx54zAN0ryz4seLAs7AgZrDHa7JSrE7vz3sz2JYZZTABkYIXqJFgTGaxdlgFu8O5oWQo3mSlXIeZ62GY2gUkARj+vm7l4WssOH1D2NrnLizopwLMcv0Qj9RsZVY1CW1LCdUWqS0pKKRoIOoZFX5ytoKg88CyXAYnE6LHaQdKtw91W56fi6KP4ZD7PNGGHRFGUj8hJrEXx7PR8E82bpQh+kY8BwFyZrEjyz3jc3uB9evGZZFKEUYA7Egju7cu//dvbvvNVavcn3XdinDWRobGlNK0U9uXsIIN4dR0Vn/6MZ1zTSxYWCNYYYJY9wwLnU618+f//L+gy7XBK0SpJVFYlNRd0xyCJoWwqjU8vIKXGZwQ/dc6rqlxlOEMoUjIXzHvX319QDhs43m5rmOZWjgAohPDqcxwHOCp4v82+1tIQVRqihEKQWirKiE0jXiWJrrrfk+Ysz2fRAcIL3DKWvVHYKTmFerT3vfBNHdvf03t17a6qw1GzXXr/V2epPp7J/hYBzM33adF4gYhg4+ZYU4drdSKs3LEJNWkty2zR+zxdc//Qz6X7t6LY/jJI0PhqNzvv++Zx9ZNq4tCYQmYdq2yammy2BguEa6zj5WW4bxmZTPfXcnyz0lK8v0G/Xdvee41dIc1wEXLLMyTZvrOlMwM4OEUIhUhXPLfO55qVJtzjfKMovntmnKKNVfffmr7QfswsY7GFmuKzwnyYpKV9328rFdjOBSKGTxhedNGAuEEFKuntsYI6UrsSXllY3133d6ttZ9azoJRUGVcrgOdNlxqCnRNRoLSXVDaJrVtHWFwwoeSWVehMGtzum/B6NfHj02Mbm81l5i9H8QJgmoleYYY4UMnbs653bNsZomNTW3WVsQFliu4OatC+tSyh/+erw3mbRUBVZBi+il9RMI4VEiCXdNiBdSnBtFnmlML/I8y3IbhMjy5SIvOX/WHzydh2sa5XXdMw3WcE1Qu59VSRpJmSeLrOznpmW5Ng3DkFKtqKpS12snWx82G4M0f22pqQ6eEGxAfRl4DSHzTPvRzt501Pfs47bABgh5bAQhMJSlkQOdLmX5RYXy8f4uwjd962AcMqj+cdGL4NMbnY32if3++Mxqw7C9aHY0CRcaI3WbE6YRyo6m0HUJvxGD0aMw7f07ZXkpAd9tL0E/HvZeeJbx65+7ICY48Ww4v3h2teFa/fF8GmcgL1TixVEIpCChVzZP/geRJSzu2YducgAAAABJRU5ErkJggg==",
iconChat: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAPCAYAAAC4EqxxAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA41JREFUeNrkl39oTWEYx7/n3t1rY8yw0a6xe8eda1lMkqaw/OF3mZQUkT/Ijz9WU6SU7A9lbMUf8o+lKBSh/NhClmnNlmVk0YhZ2MXYZjP33h3f9+6913GcO+eMojz16bzvOe/znPO87/M+73MUVVUxWJnpdg1auf55q4K/IHGRxt5CBfNHAa+q4MjuwYjWOmSO70ViCBnNCcjyn0GguxEBCA8vqlWx7J0nV0g1aSaZJI8sIQX4ByRO21FUpA5NwFaPig0zRmCizW9HD5xfnsFxKxmOYgUfa0Lo6zOw85aUkFKuXEhzv0nASCjntZAUkbExvsVOFhEXmUYaiZ9Ukq5f+GFaN+pwIIDRLheOLRiFlajhjaf9dhKQFJ8N32IvfHM6ULXxAVov8oE+lEvoaMkA4SsmoYSOi+5BgyHbyR4yzuDZJ3Kc7Cah39W1RZ5keFHoXU5n3eykk0Rx1yHtpLOVO3IzdpR5MdtrEMalJiOqVI7XyiFyJMYHC0kiOw30BqcrkpagqQv+z6LZRq6RZQTjyH7yUA2gUw3y1mGU74ro5GakqWRTpG8GMV7oyb5blSKjxhCN5GtsuVVrEtaNhvSTYRjdwmtKCpA2D4hvQZtakfPB/nXtlPfwhDdpNxmDhbm6Way2mDeqdSsQnXgTkmika1ISf9jD3LahIPsBtj/HA+2r0joDFdvaUs95smhZiZeDQ0gaojPUbPHF2vENYouLEy6cNJWfTyrNRLyUSchQ9xcS1Y06XMf9/IHXN+Q1UhFK3pSBrUvTmWeVMY392zqNfEXLO8CnNZYps7FZydT1l5ETIssOsMrCsTWkJ5buQEe+Vjfq8L3HqO/2OWf1ht0SR+c8u+K229UVAD1EO9flVbdY4VOXgWKtwTyLDufp+mKOF5PpZB2ZQETqbJUrc4bciWHLsm7U4fYyxz4cnXweDp9TQU54t0IE7yQyi44m8GB7fPWso/P+Dd1Ll4hzVnf+xqrM7LII0UuWzLhTyQWy2sIEWtK1fd9Z6nUcCG5ROlz+/kkaDjhlHHtEt/YsbA07bYjr1NkokEWFGSmMUXGJfZgvjxfGVPjNpitcK7rfK604JYjmnpNq+dO7ylzPekwOTkFfwIn2F+/QVH0JHcFKKA5WLYYlcJEsKkqNVlqubKTSMpLTpFZWSbfDqcK8WNJV/vDPg+laWvPzIMLpkUxANy1+gmVd5X/7W/omwACxMr4C5yIs3wAAAABJRU5ErkJggg==",
iconClock: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+1JREFUeNpclFlvG1UUx/+zeWa8xGOPndiJE9dxGxcUtWoKJA2q8sDSp4DYHgAhBHwUPggfgCdeKlQWARISBVpSitIqOHGSxvFuT7zMvnDH3EhRLf00M9Y9//s/5557mO3tbTz3YwgyIUXIE+YJMYJN6BDqhC5hQnAvBvLPiXCECEElFAkvfP7pR1/KIjtzWv3Tvf+4/tVpZ/QtXdci6FQwuCgWCgkXHIVCq4SbHBNkWs0WV3vWxWSib1ARlsaEDscEh+Dz9E+eppIlXOJ5/vpiYeHNzfW1im2MrH7zUOr1B57MuyU+Kb+tja2o5wVhBlVCkzAiWDy1HKVCKyklufH+u299XJjPLTKBx83EJaSTCSxfrrDpVCL78MHD7OHxSXEw8XO9M+N76jKso89VKhWJvGQI5WhU3vjskw+/uFxaWJREjjVNA8WFHPr9DmLxGF5ZW0ViRkFU4uPHRwcVlouYluP1aaoGS9ObE0Xx2tbtzfcKC/n5CC9geSkP1tJxclRDPjuDQjaJk9o+VCWOrVfXUS4txXy9/Y4sCi+R+BwhHqaZCFtgc/3m66tXl0uOZcCcGHhWfYxcjqxhWDBE3LQtmFYAhhh5Wm8ik8mA5zjFMEevgZH+JhqNc2fZUrFwnQ08WYxwyGUUyJKM+nGVCHdBdgdDNhFggYtEsHKljDtbt5BOpzDotsq0TLHQWVizuOfayb6mMdrZGfjAnaYpSCKe7u7g0e/3UVoso3h1BYLAo9ft45+9AwwnJrThOJ7ITg9QZM87tt9t+6NBFwLHQE3NwHFcyHIUi8UyLEaElJ0j58bCs02wpJksQ8doNIFlOz6VCEJnZnga7W5HU6JCdHYuz+zuHyEtEtHZWXgshxev3YBuOzg5rUP2A2g+CzWTxmisgxciY3q1bJ6+tHXdfGIO20qz2Yr5nIQ3bt9Cr91DXFXAMwIC0iaDoQY2peLrb+6i3uygdlxHUs0dnN9VlnZv4+i0d6+t2VVdnwQbL6+hfTZEXxvAtSw0221Y5Dk2bLI9h5XlJfxbPUTACloqnfkxjA91zp21hiN9x+C5aMcZKewvPy05iDAZNYVYyiCl4jDQHTQGI/z61z389scOTNOc5AuXvouI0gN6X8c8HS0a4dBxPfIteY92ax/IIndlPMzKjUYDju3CdYlYq4O96qEvilKXCP2gpNS7JG6fpjm9mx4dJZ3pKGFYW0qofdMYbz3ZO7hhmFbG0HWJ1N0ThMhISWdrqpr5WZKjoaMDmuJ0cvB0Frk0Xf9/p4wmyokjQji7FDrjfBrUo5MiTK1Pa26fjyBcENQvCHfoVZPpiApoG02oaPi06Pppr/0nwABCMa7R/XpFcQAAAABJRU5ErkJggg==",
iconUpb: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA6BJREFUeNpcVN9v22QUPbEdx47TplnSNnaSdm1hDMZDN2CAoLww9oBE33jiCal/0SZN/BlIqHvhAU0CJgQriA5o0q5DbZw0bRonTWI7/sn9oi+Sh6WjOPp0j++553w3Fccxtre3QU+KIBIEgsSRJmQ5FH7uE4YcI4JHiMELwAlYoUrQEsgR8oQF9v7J1sc3Hcee/Prb3vf03+QkISFIkkm8sEAwCMuERULx7t333lIUVbftcW5r66MN3/Oig/phMBwOn9C5y8EI4xkZ62qesLqzs/N1GIa1ZrNZWlmp5u7c3tQLhVLasizsPt7FarUKvbz8peM4rSAIulRjccJXyJiU6+9/eOcrMSWiVNJxdtbE/v5zeu/iuHGEBw8f4YvPP4OmaWue590SBOGAz5LNLhL+J3OpfvgcPz19gmG3B9sewXXGEMmaSlXHu7ffhigJiONQIpk1PpYsNwYzMuakzAg9P8ThcR394SUWcvlpsWM7UFUFN99cB8lDLqch8H0jQSYlycCdEfxggotBG/3RFfLaPDIZGa47gSCIWNINpOi3eK0EURSKURSVuCLWSGpGFvH8uKlICsh9mDQvKAqMcgVKVsXloIe12nXcv/fp9Ls3brxejqKwzCPEyIQZWcjDZ4dh0F1cLKBlniIKQ3hhgPNuhySIoDNsbt5iEjHxvAyZoPPOMsnOQm7vqN8bDUvzRnR+1oXvezS3HDySyRwWRCL0KJ9SBJEqSb7BI8XCLs3IAk52dd7ptjY2NsJYdtBuNVFYKGJ9dQ2yLIFdvZ41wPJSmdyt0NzEWdCn3SVn5jCyWm0llFVRPG2/RP3oH6jaHMI4gmX16dMSHOp2xahgXsuxiCxGcbTEu1OSMhlZ73d6mqedztgdx/XG39OxRnTsxyFSpM267CEtp6ed1iqGQXNb5TIzUqIzJtPap2fi2X+uV98oXlp9mVKOuayGg4sGWhMPbbNDOVPQeHEM23Xjq751f6Jkd/P5vCglMjYhDAjto8OXz+699sE7Deuv0mBwBbN9gb29P/CCCFqtNtJpyRal9MCduGoUxo8L17JnLA1JMmbCmNChMB5l0rmTbFYtfvPoYernp7/ANE0/Lcvd+Xy+oWW1OjlrjsdjT1XVZ9R9mymTEjcg4t2xLXBSXNAvDvYb5rc/flfy/OBc140fyL1/qfCEztm2GNCFZwuyz4xjM08lNu3sws8R2DWp8r2mcYP6nMTiW9blQfe4qvA/AQYA7z2lEDB0G6EAAAAASUVORK5CYII=",
iconMoti: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0VJREFUeNqUlMtvG0Ucx+e16117/U5ixzhxQo1MGypHFBOCOJJjkLj0VAmhihy5cOKf6aVHOHBqORYpAqHSoBYk0kei5qEm2LHX3oe9j9mZztCxFIkghZU+0mpW+53vfH+/38DNzU0CANAVGnjzRIJQEAsScMlHCqUFBUFekFE/jwS2wBUwAb+MGFJCDcH1rz7sfHMT42/F+zuCObUR/j/Oyhih5pcbG7c/YMnHDx498lKr7d0QQOnQF0wuOCr/L2f5rfWPbnUK+fXe74/h2Pet1KD/mVi/IpgVZJVDU6ErE/AiZ6Tre4H74CfA9/cAiyLIu90GKpXfZwD2lCtHuZHvY+VWQs+L4VarVTsZjczGycmq5TpG1OsDD2PNrczmKcRSLCVzbVTmlq7krCV7PAkp51RV+l9i+YjSLEqnF5quVw8nYwiDEIZWhgS5nEEZLzTn51e21ta2Mvd+bD/W9WcUIU85C8/nJzOzRe2PHibJ9kDXfZzJgCJjoLV/kF3p9iorpdK1rzc+/dza258/2N1diTlvi3/mBZZyTRSIqF46pYy9+M0w/moC0HmBETDDAF6fjJdri3UEn/yBD+/dB39HEeGusw5K5X2VI1AZyuNG8phTh/oAIUDH7o1BLqs9zVpgZ/Et/CuNEN3eBumXh2DIORho2IzKM6dKSE6MgRHUxScmxbgqM0owBua7zeJe2lx6bo/8oeM6vuOduSnj7O04tnJhiEPGDLtajRmEZqdeb31SLq2VxuPyQZIcEzUuMsyzhPOnXS+4Syg/qs5VhYbhQAjTIu3KcZyg9nC0vO64eNZ1Fmbaq/VOsVg5/v675OeUfh/UF38hyi6d9pLrjUUG8LlhmpoaJTmvtYeF/JDo2hcsDHLpnZ1GE2HU73bBDzS2XyLMhZA5FWOqzEwF2lU5AtX1PV/T/CdXW5W+Pbj5iiawFk3c5aGtnTLOWdX6p0XIuVmjqsNDleE0S02tRT0rN4GWdVAI42JMSHpQi696h0cLXNf6co7JBQPML1iT7SMKBgIOUC+VSs3ImdaXG7Zp2zcCQp7JfiWXuFmmESSqUPKeeyWH/zSgf4Jr793R3mzmkEteVYkSjZSgc+5mRmpO49cCDABebWpp4n76+wAAAABJRU5ErkJggg==",
iconYield: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABBJJREFUeNpclFtv22QYxx87tuP4kJOTdG0X2qrQoiE2DlpXJgaTAAk0VdoNF1z1km/AFR8IkJC4Aa4QIHUCVrYO2q1dD2mbpkmd2Ens+GzH5nH1RqqI9JPt2O//fQ7/96HW1tbKAJBHZERAMkiIuMgIcchzSoyMCel9Ald+DFJF6sgsoiBZxEMGiEauqaBPNkixyXN4VTAVq99/f+XLaim/kqHGlRwTU549gu2d59Zf+/pPoijtkQgtxER0pEuu6X8BifRS7Pp8febTLJuRXFPFHCOwbAu8KMn5rvWRLOcX1r94+HpXVcfNk4a2fdj5BtccIQ2kTTZIox2nYqXE7oBSysKfh1uwf6xCo6VDGIVQlQvlxbnpzNAY1Xq9LsSxrwhsvJ7juTN14P3AMMwOrm+ScripWPa8a8YyjXX3R8AmPmSoBJwgBNuPhPN2R5AEDox+F16rK9zy/NRSs6XOn7b1RJILPK7nSMm0zPLy8qpS4O+ZTsg/edmB064F3aEDxsgDrT8E1zJA5sZwoRvw/c+PYDTswddfrdOfP7w/t/ficKk3cC5omk5r56Zit0QuXl2eyuQ9U4fYt0AbWuA4Lry1UIaP356FBYWDeonDesZQnyrCTE2mJEGi77zzZun3R5v1KMm8RLFhmubguD1sLFaYWZqigErGsDRbhLuf3IBaUQDXD2EOBWqFHDy4vQAjN4TG3i609hsQixW4++7Sq9/+uPlepVo9ScV6jj/e/Hu3teqYfdbBjx/cngY2mwVJFOHezWuX/ozRotE4dUAElaIMh+c6bD09gESq0a5j3UC7SqlYl+Oyz3ZPOk9FMO/YXgR72NGYosGq1yCJQ1icLkM5L0EYJxBQLJz0NOhbATzeV6FQDMB2HM73fTatWSqYZHOS3tEdxfGj7HSBybGYc+B50LrQ4aCpQlsfAsuwYGDkLJr+u99ewGlnEHcH9iDLi08kSdpkiOla6JnMK/MLsW3bH/Ssi88UKZJ4LgMCy2CKMewed2D76AJoloMgZuFcM8ENktHM9WvPZFn+g+f5NkPOYT8tDLY4xhfuhWrx7YH2YUX0pPmqQOdz2En0oRuOod3tg+7EoBvuOF8oa/l8/jHyz8Rnk0kwmRSWIEptP2Z0zQHqrGfxYRDwNDbaxBRNx4f2wMc2cF3s4EaxWPwVgzhIzypD3DsmEaYTIKIoylMURSuVSjuO49xsDvSVpmEslrKRMrR8GNrxqDpV2yoUChtYniNy6F3myjiKyViJSZQm7tjDwp6JorhjmuYbak+9ZbnRHC+IDUztF0EQ/sXvVDKSoqtiE8Hg0kwk5bSeGGkHozjCxRuGYShBEIS4yXN8d04aeDk4/y8GJNXJJI2uTFyNZVm+UqkwZLFDIvIm8+w/AQYAA2L5OdadVygAAAAASUVORK5CYII=",
iconRate: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA85JREFUeNpsVNtOG1cUPXOzPeMxvoHHJnY8JnZtrECISKpQVEVFPKSRaB/6nk+I+pLP6BdEkapGVaVWEelD27QPBSyVqA1CDUGQggW48f0CnvHYnrHHnu6DjiuKamlJs/eeWd5n7bUPtbKyQiOEOIAdIABsAJzrA3RAFzAAUOQ9DETqI+A6YklRBPgA44AxQoaJTgEN8oxzDgBPyDRAmxD9S+YETACuirw/PSXdXW6dWUKperSv219nIJ8DtEhnYnz803u7mWHUCmw+5scbx6RzNCLDnUxGgzeXUqFPPn/zUrF3NOi8I31ULoiLwYXfvoD6GWAoOgKS1Zx6lC+9OImnG4/JqajLZFLEt/DZ8yc5e2n4Xckn2ert/aXpttm/IZT5xbFgdw9rI4nzH659dSzw7+18Dzz42EOANSKjiejuTt0TPyltocisduiJnNUCqWoJl8+qw/ehHgWEjYr8scavH12Jc7sQGwSDi2T4RzXKOmJAW85GmTgxdZ03GYpHFH0u+ETEc3fh5c91j1euviAaqmQw/yHD7FohX67xlIzUg5kIRwusw4yHdCuPRDeDJyb0SsnbCruuhGK23QskI7sw+Jkl/1JrGNs/9VDwQT0rJZRsMrFjbSBTeKv6IkzeNbgtv1qri2NTReiKwz50ERvR5HtsEwOTKYCiO/F21eSK7fK71nJz0BBEL1VJp/wHoLFFK9enu9xGO5nissSPFrFUEzcCqOCJs8R4VTwZv6y2/DJag/c9EPsh5QvYF++82TYEX6zxCnKeoHsmLksfpNQ6YnO5k6zKbD5jhNbOyBoGEbNPWnYTE+OYc/RuzKnWRjsRVwp+x9z0pP3+/No3RdQzhkhwXQmXazfTkaXMI2xemgjZJcetkS5x+91rE/dmN39ouFyxLBadCjrvJJ9/uYfq4pND562vM7VqRe90O4HyIb8Mde/IGlgDk3SDyNLz5ml4XuEyajBunE+wp4qiZv2FIknmHWsbmPItpcTAumotTcYajsgQGbONLP0YbMTc9q96TAzn1iGu465bzT6yUwE06LFYHhS95mctWAITtfEmDC+TceRm4JjWzP2qvnkanbb9AvHfeOHzpeMjGwogdW8h4bXNTtQOgiEV/Yl8QWYL24O9RHZO7tQX0xs/FhOWf38VTpyHVA8f2xC2nnVp6aFW6IUqq1yojZ4iynvwOjAZ/gN3f5EMkcXVc3t9q+/+/enVJPctxAUycc45WdRkd62Yz/aWDbMpSD5qPxwL42vqBJNRcNNeXC0H0cxJnnFHHTIYmtjm/y5QrKn6jwADAOdNghDsOz2+AAAAAElFTkSuQmCC",
iconItem: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1BJREFUeNp0VE1vGzcUJJek90O25A9JVpQYdZLC7sUoArTJJe2tKBrAKJD+xl576KE99VQ0xwBBkIuLtqitRLEcWdZqP8TdJbfzNlRhuCmBAUjucjjz3uPjx8fH7MbggHcDtYMBrMN/hryxpoMKCIAICN2aiDSQAbmbV27/g2QC8IENYAfoA9uOlJTEwDtgAlwBKVBcJ5TOlnQqtoBhXdf3ksXi8yxLHuZLva2kLDbbG6cbnc4zW/NX+OfUkcbXVFpxeHhIJG1gANwHPr2cTr+dXl48TdL0bpZlO4sk7Z9PLj5eD+WDqNXSdc2Fc8KdMrsi62JyGzjUevl4djX75u3b88+MsWSXC+FxKSW3kBQneRD6qg+yrrGmjX3jyEhZSfZ6wMFsdnl8cT752jDbLcuKpUnCOOdM+YqtKcU8z2MCzKPxZH86nX3Uaa9/cXs4/HVre+cH+o8IpTFm982b10/iOP6urExgqopZaxn3OKswL9KSZbg7jELWaoVMreH+2vLJZLq+iNOvDg5q2+31KBmpt1gsekk8fwzJgbWGlWXBqqJkNQjoRo97731A7VLrJkxRFBAh07qQo9HoS8T1AWXfA0nOhTwBiY7CoElxrvNGFbLagMKMWUNYFBVTEraFADi7mi823k2nj3CsK46OjtphGFVZlt8CwXYURbIsS7bMQWgMex8O3sSMUJaaFVBIhKR8hX6//xtlcw2jBEmWptluVRaddrst4Y9ZY6GkwLPgzFiaa2xzqOXMD/wmBEQUBH7c6/V+oWxeUs2EYejt7e3Zs7PTp1rrTzY3O0EYhGy5zBt7FjGig3JNMSlkU2BKSawlYhj9QQUs3bOgUQdBYO7c2dPj8fgJSuNISrHVarU42aYMX28FpIpsS6n+HAwGP2P3nGz+W3TAUil1BZuvhZQpsufDpkIOpIfTFJ4mftyzyIfGa3i5v7//ve/7z3H2TJycnDBHaNzDzXHjHIpGIP3L94MLrDMoq5sqF2IOW78Pbg1/Gg6HP6KQX2D/bwoXv95C0NuEazmr90pdowebu2maDpHtCMqXuGiMkhqTNddJ5uSK/09zXJFSS2o5hK67WNfTKNaJm1OIrPxAw1zFcGWbGuLMXeDd+F458qan/SPAADZkjTT769JCAAAAAElFTkSuQmCC",
tableBorder: "data:image/png;base64,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",
iconReset: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABB5JREFUeNpMlM9vG0UUx2dm1/Z6vY7txE5cE5yQQOymMSERJGmjSFBVSqUgAVJVoR44IA4cOJdzVfE3IBAnJISK4FQOICSKhNS0KCQqpGnaJnZ+NI7t+Nfau17vr1nelHGVkT7aGdnzfW++8+bhvwhBRBTRjeVljBDyAUEgDEQBBQgAFNCBFofNTcAFPMSHeHNl5cUckIE4MAy8DAwNG0byWTBYhXkTqABF/m0AHcDmwZ4LsEEACRgAxmVKZ6+Uyx+NVasTgmUR2u2iI0KO1lKp39dHRu7woOwULIgGWCxDIZPJ9EQjQFr0vJlPi8Xr6Wo17bXb2G21kK3riBhG30ilMg0BXqmGw0VNkjSeld07LhMTuTdJYHJJVT/MFYuTLghQTUNFUdS3EolqJRyuEUq9uKaNnj0+nq9EIhtNWa7Dnm5PkAn5gT4gBbyaabdzHgULXBcVIpHqdwsLmxTjPULIMfxujJbL0fM7Owvvra/fuD0z80k+kWCCArOKnBJjmaXPqGrUsyzkQlY/53JPPEIOBEHYBrE89pHKYSq1fWtp6cut0dGvLm1tXePmk55Xvvf3999+yTA+LoliBJ+cCFang6qC4E7t7qZlx4k8ymTyx7EY+XdOvTL2UP5NafuMP86du+8gtNlnmrQVCDDPEPMstB2NGgbG4oVCYZnoutj+v5iIIwjm3fn575uK0mor9sTBlHFVlbrJocPArud57b14PG+KoooxZjXnCNlsVoZF6ESWcSMQQK+VSmfBUdxQFO3O4uItOxhsOIQmd8+b18wgDdX8+iDuUhRt+gu8NFQQZpfgsrMSEHPAE/VRKnV3I51epWDlxuTkT6YkFVzBE/YW7Q86MRq3XBsZrokfjtUuFVLqmyAiAYS/Ao/AAuenO1mWKhhd+TOX++FocHAVjF41BjzhYMF5FxRErDuG4UICDkWDZamyn2gu/Z0tvQMimF8AZhcQKMX0i+asq09tRB9Yomj8Ojf3Lbslf4XaqRLdgLS1wxXrgmGBGBwx9zR+T7LEX+A/a7z66fPM2C1MrUV+rA9ZV+9drH1eTHVetzwv4bruKKV0AjIf355ujVXtpg8ZFIVUQQOhJ/yNNnnRur3SsJSW2MzeV24+mmt98c8b9c+CWbHZr0kqcbGvJneUE7HVh3QIblKUaCg7sOcpF1N596CnnxMO6oLdf+TfbMidwWbEHNdDTrQeMsIt3AkgC/x1PSR1RW12N/mNSMkD2HPAM7N7bYiJeXzh+m1iDh8pj8OqeNzx2zETOZJLXR+LO1CX9t7aPvN10PIxn/aBGs/KO93DLN5G2Lkd1qOSJbkJrMM8pslWv9Lx13lNPQMO+bzb62O9IRxcj6DxxwrlQl3e8FQeuey3hTx8Czwb5lO91xRvX97zMjvRF2L/CTAAXkAASAqjjOQAAAAASUVORK5CYII=",
button: "data:image/png;base64,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",
arrow: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAzxJREFUeNrsV9tOE0EY/vfQA1CsUqCcJAZDQkzAoARNiFdKNCbeeqEXmpgYE1/AK9/ASx7AV+AFNF6YoKGAjYC1FLFVeqTtbts9zoz/lilsGk2qCCTK33yZ7s50vu8/zL9bgTEGx2EiHJP9f8QndmQmcIgcznfKwTgOxWRO5kG0I/z82kKYfLQ56N8U0iD2Ppq9+kTwePuyFePz/JuFD3hPQ1T5qHEhbjHkIEIaYQ6M9ofG7lyZmA8PDoWDoV5SVCubmXxh/ev3dHRxNba4tZ3d5kJqXIjhEmK5hLDfybET4t7Jc+FbN6cvznX3D0ltHR04g1PYUimloFaquXSusL6dL0Q3UulI5FMixkU0oqJzMS2lR+CjhOhEDM+OjzydHh973NF5CmSPF0RJRn4BiG2BjaCEgIT3mCSrZbWWyJXKa5vJ1MqrpbUFLqKl9AguAU6+TyNG7l2bfDHc3zPj9flBkmUQRRFMXQdD19B7Ah6vD5w5x5xoVJUyBLt7iE5hcyMej6XSuZV4priYVbVvuERFKHzUuAgqNHnvQwz4PfLkg+tTcwG/L8woA9syoVZRECoQy8IoSPVoMCSlDInLJegKD4C/vR0yya36esctg7B0zabLJmFvqxZ9/XHHXObkRG4KvbOe6Jatl9RahmmVsFLcgYqigIkCcAMgmHPB+XDJzlPVwjklmQQZbyLRflIZ9GGSJ3G1GPCIZDzky0cLRrxxnMCV5zZE1+3LY3fPeIWJTDIFqmGCZjPQyS6xTXe35XVXJ0EuaJMFkEUBVJN8wWUxFLqimvS9YtIELinxcFd5we0Ri43Knjo/eGMo4LlfymehYliAP4SqxZyw1b0mCLYfHg2vE7hkHTdYKZv0HUakxKu9xitdbyqweqXvNRCnsM6GghdGg55nmdSWZFgECSlUEDV711tEAT2OY2lG0cuIZtNV19muNR2pxtn+aaPZa5k+Weq81Ot/XsznuhwiJ29FgyTQixgSRDHcEfQ6+YsmYrrObktNpEEszvT5HiqKqud18rKgk/WsRpbQu1LTuTRcJA2P4E9ap+DKbweHxDc2Wg3bQR6LkguME9iH/Wg8sX/8nevkL8xR2Q8BBgA2hPFRtbbr5wAAAABJRU5ErkJggg==",
iconChatSM: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoMDB4YZ3mPAAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABeklEQVQoz3WTvW4TURCFv2+DiFIipXbWCgqiySP4Idy6oEJyCV1eIR1FXoDCUqrU1JFQHiEikrVri9KioOAnEhwK3zU3KNxm9/6cM2fOzEi1ulW3Bxyr0yQz4AS4AxbAlbpsR+2v4b0V8FB9V0DbS7fXSYb/BfCmHbWbHbgAr4GXBZeaeIuPKklugcn4aLyxW3V76ntgNoCqSI/ugUWSVw1wXEk1yQo4B26SCNyo50lWZU+SmXrcqNNKGsDl+Gh8lmRezuftqD0DLofo5TttCkvxR9RJv+5P1XnJcd6v+1NgUsj/Ru9W3U/1aW3UkGOS32rzmAfAfVPqOOi2IkFteGh5XcK7pjg3AL4m+QD8GB4nuVc74GORnMK1sFt1J+qnQvBdvQA+D3Utaz/Ja/V5JeTFE2AJLNRZkgPgLfAF+Fbs31efAQd1nYGlAP26P0xyrf63wyqXb9VJO2o3DUDp1UmVv7VBFdFiAPIP+26qgGlp191UqVfAg6n6A0q42/cMWcqjAAAAAElFTkSuQmCC",
iconChatNoColor: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWFJREFUeNqMUz1LA0EU3N1gY2OQs7HwI8L9gUAqG5VYWqS1EIOQIv4OtUxjKwS8NoWI+APyG0RCzrtLaWKwVPFYZ46nRLmNtzDs2903c7v35mmrslEC0jiJOG9prRvW2kPEPjAAAqCH/XB9bSNVMgywBDy+V6v7OOwi7oA4xFzHehGoIx5i7mDuJqPY+yYrfvmjsnmUlsufk4uzcyt7eYhHcStKogfAy26MoITN69fT9iU2noHafwLMJ49kH7iTw4MiAsyHgG/4c7C+klfcACfALVBTjgEO8xuGfxWL/sxZEYE+eUbKMf5zOFcAROb7Ruq4kqPuFMBNmT8gOYDStuN6LgHmB0ac01TukSfQBKdHcghM4ZxWEYEXGIn5GU8K79E5NMC8+tJIdOIbrMy1lsZQaAqP/sX7l6WOLMdYfg7fyKdNV3d27xfCp2PEez9kEci6igYAfnUV38irznbVlwADABPWyIVOu15aAAAAAElFTkSuQmCC",
iconSave: "data:image/png;base64,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",
iconPlus: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpckTsKwkAQhvPYaFTUQhAEQbAVcyM7L+E5rLyF5BamMpAiRQKCVSBNECRqkvWfOCurAx/7w7xnTeNjJmNprwSN9v4ECWBrkNWgYmrBweTsMF3gcLUXeDBStRUcOAAjKeUljuMd9BD02Wdbf5V7nGCUZamSVad2NBJjMC+KIpB/liTJHr4ZJQpehDaWaH10XTf0PG+b5/k5y7IgTdOTdpV2Xmo3BUuwpopRFB2gV2ABJsAVnEEneoI7ad/3N2EYXqFvND77GlNb0NFQd674fESlgg0OsDTUz315CzAAWshhdQv5QQQAAAAASUVORK5CYII=",
iconExport: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAr5JREFUeNqkU0tME1EUve/Np62hUyhBIfYTFI2u3Bj5LIplw8KthhgTTDRgDCvZoMQgbghrNkSWagyEhW4kAg3GaIsKwbYKjYQmiggBOrTQMv1M5413akoCRGPiTc7kZd57555z731E13X4n+CNz9DQEPj9/v07SMzxPEmnMzpjGvA8DxzHASHkMMGrqSl4PjKyb8PldDZ3dNzuWt/YCGK8DoXCn2R5a+WgAvLR4YB4IgFpRQGKP9YZgzaTaO+9e+9Re/uty/JWjOU1TUklkzuyLEcXFxcDszMz06Hw5/DS0tIyeYuXOJRlSONw/YMxa2dNTd3I8PBoqc1m293dBYp2jFLxPAcmkwnQkpZXVW1wcPA+TygF9lsNh2c8ZoDOFrc7elSSbPLaGmj5PFBRBBAEyGYZJFMpMJtMnNls1rfi8Q2jBkZVTiKuY0e6SyilntXVlURPD6hoC5AA6uuBNDUBRRJd0woq5ue/hH0+34RBYEf0Iq7paINHrfZIxJGKRArMxZrzXi8wSkAoGGVaIBCYjMXkNYMgh3iMKEWhl1S0RE9UA2XGfCByKhCXG1ekQMajis3N2Lpv0ves2MYkYgI35yKM3XCVVzys6OszZwWxcEFTc8CsEp7EGcAOEYFCKBh6P7+wEN6bAyMsjMVenKoOdff3U3b2HCZnwHQjL6rIKAXvhgY1m1HGxl4+KU4wNSpsQe8dnFDecPNqV6VLES3ZFShhChzRksDlYiByBETRVCje9+/LX9/5/ePFxLRuexsGWlpgWtedyk5K870JRj7MzkV/RoMJgeaY1XYMJMkONkmCsrIywOxPFSWd3htlggp0nHNg+W8P+gbasOEWHElLVVXlGW+jx1tbe+G82+2schx3WDOZTHx8fGL0wJvRobW19U8PzYY4LUlSc0ND/Z2LjZ4rh079heCf4pcAAwAOSzJPzSWG8AAAAABJRU5ErkJggg==",
iconImport: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtBJREFUeNqkU1tIFGEU/uayt2xm3UxX000RLKVeBFES0awHKYIgKn1p8cWwNYqeRCiJXnoUwhDsoQdFkehJErxgEO4WKOqaGq4KZWFednZWV2fHnVv/iAYqRdA/fPMwZ853zne+81OGYeB/Dmu+2tvb4ff7D0YIMcOyVDwuG7qugWVZMAwDiqKOEgwPDKPnbc+BwGmPp6qh4V7j6traJDnvg8GpCUGI/DjcAZXZkglRFCFJEkCTLxuA/ZXN1dTc1F5Xd/emEAnrqqZJW7HYpiAIi6FQKDA2OvoxOPV5amFhYYnCU5LEmFR7WARyPuRc7e7o7kpLSXNGY1HQpG1zUqYMm80GIklTFUVra2t7TJOqNhI9Bh3HsYMkaojKSNxIPOyN9DpXoitgdRaaqkFVFWxvbyMsCKTbOEMzLB0RxTUKz1BPyPMIUgg02kIn2eP2KxIl8WXpZajNrcW55POwUAw0Q4OmG+A5DrOzM+M+n++aOcTrBJcIrOZQdFWHxEi7ckaWRjAuTuBlUSsKUwqhKRosjKlX1wKBwGA4LPw0Cab3kk8RISobZVI5nnOLm1GkJ7tRnVONVHsqEloCFE2BtViwvh5eHRoc6tq3sYXAQQZpRSf4+94Hrcvu7+5o8gbqC+qRz+WTZAWyIoMmBBRNIzgZ/DQzOzu1T7C8ayjprEDNvewtvn02Yldg0SictKUirkpQVJlIondtUnZkqa/vXcf+BrNWxkr6VoHXTIrvTs0TNzPNJbN5MBwuyOoGqSoT65KIUQwYUn0+FJob8fv79xeJjjXGUDNTA2PO8IhbW8qAf/pLYHR08dv8WNRKJ3TO6QbPn4CT5+FyuUCqdxIb479X2eyAJY9hqF+bn7+oAywOshuOjIz0/MqK8sqSkuKi7GxPRlZmFifLstjfP/Dm0J0x4PV6/3TRnARneJ6vKi298OhiRfmtI3/9heCfzi8BBgASRjBF6Hz+5AAAAABJRU5ErkJggg==",
iconReset2: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtFJREFUeNqsVEtME1EUvfPrtCVRoNQfJEXjgoQJxJDACuOPhdEFRRYkJqzcGAILE3ThJ2FpIolujGyMIoSFWlQGIcYVIMVgEVrAFtLaUiJ105IWOh3m550pEJBqMPEmb8578947c++59w6haRr8F/sbka2w8Kjdbj+4Hx5CJyIIYs+G1Wp1dD15/A5RjSwtjU1Ofhnxer3T0Wj0ezKZkvdLRDmd9bc7H3R2JFMpYFkT6H5viKKQSCSCaOMTbvfo3Py8b3p65psgCBs5iUiSdPT19fGVlZXc+npaF0DXAFQEk4kBi8ViSCJLkhoMLvra22856VzhOhyOUxzHlWUyGZBlKfvSeBCQTqdhHQeJcwybZBiTthKL/SBzEJlqa2vPmM0sLcuy7p3hDYGoqWp2vWk0TUFPb+/TZDIp5iAiDl+oqzstiqLhviShR0T2mEGmqbqwGKIJlpejP4eGhl8ZpFvXq6uq6hH68XKooqKsWEjHoftZL3yemISz58+Bs6ERKIo09CQRGYYGt9v9Mh6Pr+wiQnuDJN14sPmti4fikhKDpASx4UqjQaAoCnpFoFcEiBlRdL12Pd8Oc2dQ4UjkPlfONQ3yvAmF1MWEltZWwwNVUbPZxbBYloWvU55x3+ycZzvTO4lOlBbXtLVcY/S5np2Lly7DgfxCQ2TQFKOWUCKgUCtXv6tLVVVtD5HPHzh+43rzTd/E8HZRhYMBYKk1oKkMsOY81IVBZCEWWwmPjX76sKv2trAgv+Dk3ELYzI/44VBRgXTsSJHqmZoBfyAIFqsdi9AMeRiqzWaDAX6gJ7G6mshFRMiiEB36OG7TF975xZbZQKgDNdl49LBL8fv9KK1gtMpaKpkZ5N+/+L1otsRWSh2OJkSPnrmlaEQ/aLGWl6/RDHP13p27IbPVMlNTXc1h5haDodDCvrt/ZwPj0BNg2fzwKg7pn/5HufrwTxu/BBgArZRH3O1yru8AAAAASUVORK5CYII=",
questwiki: "data:image/png;base64,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",
iconLight: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVlJREFUeNqMUj1LxEAQ3WyC4SBVKrsQm/sBBwdWtv4Df4UgVtZWVvZWdsJVNhbiP7CzFUKKoCBKCEnM98f6Bowsl128gZfJ7s68nXmzhhCCKWwBrIHl7zoF7oF2FkkEEkzgHPgUc6O9C2BPztkmuKHIcRxF27ZCYw86ghWdhmFIjhGJysqyFGmaHk95XOpmRR/f9w3yhmGotGFd1zGQHE5rSzp7n2RhGkNVlMyapommPS4dPsK99H2vy2d5nhMBXbSZEXDOB5Cc4pf8LBmisizL2DAMZ57nfevGSLhFFTPx4jgWQRA8bcdzRaVXpmky+YFRRVVVkbCX/z2kCc/yGCGaiKLoTRVrafQKiqJYT4LWdU3je1UF6giuHcf5EypJEhJvo4zUtLCUBUT/JOLRzi3gtgFlf+DJ7tPLgwZftm1Xruvu1gKmEIDgADefYP4Ly7LuMPtUFfsjwABKB8AI2XbIaQAAAABJRU5ErkJggg==",
buttonSleep: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAZCAYAAABzVH1EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFRkU1NkIxNzg1N0VFMjExQTJEQUMwQTIxNTUxREQyOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3RTMwNEJCRTdFOEMxMUUyQjBDRURFM0I5NkY5QkY5NiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3RTMwNEJCRDdFOEMxMUUyQjBDRURFM0I5NkY5QkY5NiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0RTU2QjE3ODU3RUUyMTFBMkRBQzBBMjE1NTFERDI5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGRTU2QjE3ODU3RUUyMTFBMkRBQzBBMjE1NTFERDI5Ii8+IDwvcmRmOkRlc2NyaXB0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",
buttonBank: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAZCAIAAAD8NuoTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFRkU1NkIxNzg1N0VFMjExQTJEQUMwQTIxNTUxREQyOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNEZCQUJBMDg5QkUxMUUyODZDMkNGRjA0OThCNDIwNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNEZCQUI5Rjg5QkUxMUUyODZDMkNGRjA0OThCNDIwNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBGMDUxMUFGQkQ4OUUyMTE5MTMyRjkyRDBERDlFNjRDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGRTU2QjE3ODU3RUUyMTFBMkRBQzBBMjE1NTFERDI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CbeTcwAACpBJREFUeNqUltmPHNd1xm/dunVrX7qqp/eZac5wGXJMURIt0IkNRLIS+NkG4jzlyX9FHpMXP/rfSJ4TOECgKAlly1LMJSKHpsjhbL13VVd3177eqlwmQIA8BKEKhUYX0PVrnHO+832X+au/fM+Z2Vrng9eXl2ySCIKQo0hlDImvCBPrpuxukyThSMYSEssaIjkrCEbkLZzZaFPKHuBNg1VzX9GsB8f6+VXd2G1cjMdZWJpGI00zjFlBEXKQdjQ1XCerhCVpycEMKTWXQkFTXHcznrkhwwekHGia7Cd8i0dywd/45Ce//NU/TNwtRoSUsLMD5quxLAA/AYAFFQE6lpM80hCuyrLUqtgHIsOwLBOWIQ9TtdT/4hc/D86eFWn14x/dejVfsKLICVUtQdnAca2VcISKrpNH6zQxpOMKvUG1uGFAV8M2TOkvj+4MEolrFDzutO+3hLMXz9jrHf1vP//d5SyVjFKRWRlbURJxmMkIMC2DIXXPUhs6RphdV0Q9GKZZ3Gy2alw7cYYatETeDuPZevOzT3/4xaOn//bom5eXE9UwOu1OkaVlUeSAkQSM0l2hlrL8qdXJa9bKarnbHhRpUUJGE/WsyMMsdaaLEpJtNP34/nuIdLrjhy8J5AVJtTTBXwS6xGOUMUxDFKpKJKKQM4CTMWxKGKSTYYNFAjfLC7PPAl7awIiUYDq9eFMkgx/80ZNf/9Otm7cMCTNhyG62nUbTRhXMOR5dcBIc6vfECGkQhFrIROuBricEzp0liP33bh6AhrwOo5evy+M/HaLhja4uyzgnIItIkO22G6JmHNw5mo0XnCjuHV4bz+w8JxChsiRVXQ27zdV0Mnc3bFwl7mbXbOQVY6+C+Xxs9Q/8JE/yIlnZbQkpsrVKysHtO+ORnWCsdgajqZ1SlTCoTN+ibrRbbOpG5UprtmbTIC1rSFDLlN/867+wD67Jv/ndxe3rLUMSeJANv/+xWyDXz0XDLBhu5niSJHEcDyGUZdpGbG9CLGvD4R7HgiTwVZVJ81RSmseNYjVb2cvt4XDIVjHmqtA8ugyYiRMzohqXcGJ7ovi/UHM3SIHQ3OklSVj5MRQEscakPttXuyhxl9dbFseWsKo5SSak6rabqqoChkEUwLKQYWp6gbquqqquZUnM8jxM6sH7Dw7v3v33z/5OUWBSkk8eHP/6tyd5GGehp/EIkix+N5QT583+PXOQzl5+wcdpUkuHtzuoudclv92QohAEnakiWRLKmum3rbigbaY3eQv4L0xFd49+ZxAgjCCi84mrKRKtnC2Jyhl2ttB2DSgyLKoaAl9t/PK7oFaK5HvpsSKYSMi3W8RBfQW2MujCegulOolCwNHNATyPF+uIyolSioIaQ0U/0ix/+wcA0OKLPFdl47lHDruaJHju8r5Qv1mHHMi3jsqYYp6nEd2kd0fNw7zsKqBklpsE8gAZOisLlcRTq8FJGLEsmxekKos8yyYz13Y9P0qjNIMsFBAzG48YUCuqIlClCAIv8gwASZyv4z+oVtZs4yqPSVQqtUWS9DuhQC2QTKzzVEAiTL1NFtHZa6Kg6bpqmUYY0WUqqCCoFGi/EYtURZJEAXPID4KiJBzH0cJp3TzmOJYJAn+79a/t3rZnQebXHavXwJIuQENTvhOKx2waec5sabUsapNl6lceH3OkYiGk/hytwjzLRZ5jGNphluYBAtV4MqkZGEdRr9elmk2ThIXAdRzEwnazCxlWhA1TGUTe/Ox00d1vIJ32AEf2+h1RG3fFgKTV1uThPZ6voaoZNao24XJhzy+vloqsBmGU5XTcBZ0OvdI4evXq9OLisqErd793REgxvRqtnBWVcJLEELGablDLwex2610URRLExedfn//jw28lRXt3VJrElmmajZ2pl2yKDJ28HpWEka2dKnNpw92lUxQF3ds8x1SjdKNTGg2kvv/h3V6v/eTp8ziKp5OpqqmG1brW6Z140bNvT51VOHrvJofMsna1Ru+wS+rZ0l7a74466PQef7kScvbhyem1YRv5ZZIRnuF0ukJIyueTK03WoyihQVaWoCwInWyv29rZMf/5899025YkWbTzPMeFaSaL4saLS1lIa/j4xajRryJShVFR1/FhV8q8pSaL74hSJDGIy/PJOsnQ2dNT+OEf3y25fLo4i9IgKyoAMK0vzdLkbWk5tUDf85m6Gl1NqFQVVd1uwyIv6e6wCAk8ByA32BsSWN94YN2832E5+va2ygtv7DMEfRcUoqbQ2TMtS9776C6K7LzFVjd29joGa1fb3ZZ5eTpFHKJWWVQQ1ICedRzHod6cJOnJyUsOC93OjqoqBMCvvnrEgkJmi64s7+/g9QU+aqJBo9jvm1MX91Xx8WT+jqgvv/w9B0tVASpGO7rI3mtV51FBBwzYvJaZ0dXs+IMPX59PdFWGCCdpiTF2bMd1XUFSWk2rYeqGYazWHodQFm522xI1gjevJ1Zfn83qV2546+hWkpMIiHyBzet774jiq7TLV9c7jZP56MBi2Z/9yfefnc18f+PMN1s/gFSfRXrjztGr84miyFlZI/qOKG7X6yJLSF3leRlGKQNZ6j47KizjjcDiJE4bO/Je59ZnX31dRmEaelPHjlcbLILDw8Nvz8b/L6qjswdtpYi9MIM1VpAmYOKG7997cLCrRuHKX4aGYS5nr1tmc75cKZrpeVuOw73dvcD3FUno9ztMVU6nM5khwXYV+mG/NTi+8z2LCyTitVTw6YP7naaYgZxZBSHPJUzWsbT/CwUBsRd2R8GRu74kweF+50dar4YlslNOkfRtXnwzmkp1Dmt+625ZLh129VM7mi0cUeB3+7rIgdqQ/PXmxaOvtmsXgWIBiWXoiR9Np6s4yQ96zQrSoAFz26ONCMt1bfv63oGzde7uDh5dev+DomfEqiEFm/Xpf/ze89cI5JtzZtjrvZlcApapw81h10B///Dr18vNtD4lXMysCzptInA8Ccxss3frY8DAnim/fPni6vIqL1NJpf01moYGqyjy/SKu2p3h6flZVZcPHy8FBp9vmOLRKc9VUE0aBUKeWATTjut1rh3TCNprKSfPn0zHEwSxJRqKStOoVnkRAzR/NTq6czybzs4Xq5hm5l//4s98xxm7G71jtuhAIY4hw4FSrHaWq/mTZ8+c1ZwDxJDE3f39mscaYmmWWFZDVUxMnzCezOftvnhzr33/g7sBU16e24f7h3pXqQLCKQOG8WjUVNTfT75xHLuhKSLG/X6vLXF0Ewa7O6Ig7fVv6FYXydLTVy+OhgcY8+zPP9Ie3Pzht2eXV1eenqSo4oqqbNR1vkxSQIIylXmhsH3o0wiJYrKOvDDJImpG04ntrsLxZDrYVz7+9KN6cX572L1252j5yl6MR3mxtVjgOEkJN3FCrkZzxGKRw9PpPMsqjhVXwdXVynZiu8LCF4+fT33vsyd/GLzf/+kHVhDEzN/8+Q+aMp64izM3bFl7NCUuVk4QpmkSaZJoGJoa55bCE5EobK3rGq8VGLJJDiWt5c4uvZL95HaXmuOzq9l2xbUkdOUuL9ZBu7lfEnLu2G9RaUzPJ6ZpKFFiqmIlFirLaJrOa/l/o2S97UzOfYJ/fNTmVfX5aP6fAgwAJaNCBH+YKRMAAAAASUVORK5CYII=",
iconAlarm: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5Q0JGRTU5MDhBOEFFMjExQkM0RkRGRTM4QUMzODJBMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMjVGQjlCMDhBOEExMUUyODFBMTg4RUE2RTEwNTY4QiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMjVGQjlBRjhBOEExMUUyODFBMTg4RUE2RTEwNTY4QiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlEQkZFNTkwOEE4QUUyMTFCQzRGREZFMzhBQzM4MkEwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjlDQkZFNTkwOEE4QUUyMTFCQzRGREZFMzhBQzM4MkEwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bLqFjQAAA3tJREFUeNqsVVlIm0EQ3kRr1UgVTY23tR5oQKFFBKGKBwoKSl+qb0JREEQJ0vqgqFh8yYOFgDRajQ+tF6KgjXhGqxRCFashFCvxQoxgDPFITRRzTWd/+H+iEfriwPLvZme+neObCQ8AyEMKnzyweN/9YWhoqGJpaSk7KirKWF5e/iU5OVnnfq9Wq1+OjIxU2Gw2QWlp6WRxcbHyFgANmV39/f3SlJQUiIuLg/DwcOjs7FSwd5eXl8RkMpH29vYfERERkJCQAOnp6TA7O1vnjsFjc7i1tfW8trZ2b39/n+Tk5OgrKyvfnZ6eRi0sLBQg0AtUcQqFwl9FRUVKLy8vS1dXl3x1dTUkKyvLOjAwIPLx8bHe8hANX8XGxgICaYxGo7ijo0MRFhYGYrEYJBKJq6amxpWUlASYCujp6fmAD+cVFBQYMjIy4Pr6OoTF4QBdLpdfU1PT8tra2puGhobFgIAAmJ6ehpubG1hfXwetVgsWiwW6u7sBvQGFQvENPZQ0Nzer0J7nAcguzNsEhgQajQZYqa+vh8bGRu48NTUFAoEAlErlR2pjNpvJvYB2u12YmpoKUqmUMRweHobx8XEOyGAwwMXFBbPPz8+HkpISx8nJCf/8/NwTcHd3lwwODlZFR0fDwcEBIC0AQwJ61ul0cHV1xVSfeudwOGBsbAwSExNhY2Mj290pjtiYWIJVfRoaGkrQgFaaiEQisrOzQ5BvJD4+nszNzZGYmBhSVlZGsDjE29ubhht8dnbmSWyqEBkZacKwCJ/PJzMzM8TX15dgAcj8/DxNBwNKv729vZTgjB6uc+rMvcRGujyj1Ghra4P/CfIRCgsLAdnxxB3DnTbMt6+v709gYCCsrKxwxq2trdDS0sKdVSoV+Pv7w/Ly8ve7LOE2TqeT3T9G4ytqMDo6yvBwcXGRAaGFwQdZHpqprrszt1qPFazwI71e/xYHhEwul/vRIiBFmKLRXFKKYANYc3Nz32NP9wUHB9vvHQ57e3uMMoanplQ5PDx8jUuB57/Yjq7q6mqXTCa7QJ1Pm5ubdTQt+OBXaosU43C4KqMxsVqtBDtAhfyKRgL/RpJPYGWrsI+ZiiMQCQoKItvb23lpaWl6nEw/maHK53vSho4nmkfs4UkEwkdt+uPjY4YmOGUItiPjydHREfVEm5mZ+RnTsURt6R0rvIf+C/gnwABBPec5UzOlgQAAAABJRU5ErkJggg==",
notiBell: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMjhFNDI0QzYyOURFMjExOEQwMUUwQkVBMzJBREI2MiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4N0EzMEJDMDlENjIxMUUyODhFNUM1MTdFQzA2NTAwQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4N0EzMEJCRjlENjIxMUUyODhFNUM1MTdFQzA2NTAwQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMzOEU0MjRDNjI5REUyMTE4RDAxRTBCRUEzMkFEQjYyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMyOEU0MjRDNjI5REUyMTE4RDAxRTBCRUEzMkFEQjYyIi8+IDwvcmRmOkRlc2NyaXB0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",
jobTime: "data:image/png;base64,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",
pinMini: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtpJREFUeNqsU0trE1EYPTOT9+TRpE1qYmlibAQ1BcGCVKStC0EQQdzoTvoDLIhLdwrdKC5c6Mqdr7pRqNCFILgQRVSsQhdqK5WURpvapOk0mcxMxnNtYlGpqdALh+/O/e537vkeI9m2ja1aMrZwOZqbcUlCQHHtjybjo/Ln2b4VG/m3wOgccHsn/QHiGHGBuNyKzBHfnu0+M/zKejoGQwG6yojU87j1DZin/Cf1/0mzs3/wulubgTb9EXYUKMWAoAfoAe5S1fkasEPaLJky8bB/dfwOnIyGRTQiDSDmBK4QM0zjXGkzZFpl1VBXAZsSbJOqFoHlKlCgL0/wGJ+Aq32qesIfi/2b7DlwM88CRRgRmSZJDpjkORWBx5glJoh+07xxMpmU5ERi4wa4gREG750q4jDrj3JDTfM1sRdNKOr6tmgud9DV1vbMW6mgWq2iQvubskFm1wvcT3HvaYxCGyFGWl977KdKQbii6/uMQsHn9Xp9mUxGymazcDqd68p610yVpUKGeEd8EIENYvGA3t4ONRisv5+bUyxFObIELFiWNZtOpwsDAwP6L2VHibPAAz+tEL2b2EN0cZhjRM3hwIGhIczE469f1GoLzG8X3QLZXC6X0jQtIDX/TUlam4VrwCmS3psSMkWNZBnz9CU9HiQDgfLxfP7SpLhr2xJTW1FVtRQOh78Gg8Gc48+OjABjIrVh4KKLL+v1OtKSVPuiaS9Pa9qjSVFG247wylKdPsMwJNM03bIsh/5S1lzdgOsQs2dnM5wz8zGDeRxt9EVjcFVRlIrP5yuHQqFiR0fH4oZk65Mod9LZRzU9vCzznkUim6gxTY1paiRbjkQiRUern9epKIscgTe6rheopJPwkUgmkelyuYQyze/3l4VtScZ6mFQzn0gkvnNAw/xsZ7Dq8Xhkklkk0amuKhS2JBNlKJVKoDo9lUrlaQucLQ8L7yaZ4na7bRLVaY0fAgwAsOEOz+nRA24AAAAASUVORK5CYII=",
pinItems: "data:image/png;base64,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",
duelMotBar: "data:image/png;base64,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",
instanthotel: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABOFJREFUeNp0VFlsVGUU/u46c2eflm4UmBFL2UVRo7IlQiwKGJYAUYghKgkYE014wfBoYgxPPmN4MBKiJMYABqSWBMHQiFLsQktpgDLTzkzbWe5sd+bu1zNjSwwJZ/LnnvmX7z//Od93mLDPh5o5joNQ0IuPtm2GyXHMgkjL0thEZp08nV3DcFxDVpanhx/G/5HLSq9uGuOFkoJVnVH0338Ey7LBEEZt8DUwuVyug+YVBT6fe9XCaNvRZStW7+uIlptHRu7CqDroaI+gY/4iVHQj/tfg4A93tfi3fSMPHmHWnNnBNPj8yJVL9cn3uza99/GBnV/7w1L06s0+3Bl8gMeJBDRVg9fjgdvtQWu4AVF/EEW1OnI7Pn7s74HRbvzPGJfAQzNM7O/asOPA9q6zkzMzgSu37uAhXc5aVahVFZLLDZfIwbQB1WGxoK0db6zshCcgpE+d6z4YS2V75gA5y7bRFPK3fHpo1+lSRY2eudiD9FQCIZeNaFsjli6JYM/uHehYvAjlQhYC40AuFpDMK1jYGPJ2RtpX990f76E8ynXApnAQ619eerhzcduHZ365hmQiBS/ngGNZ5EoaXl2/EZ8cPYy1L63E6INJumwKtuUgNZ0FFQuLmuc1T8ul4kyu8EctjVzHgpbA1o2vfRlL5qLXe/tQqVRg0ttqaTj4wQEc++wIHEuHrml48YUVmEwXceNmPwzTRLqgICgFGEO3QvFM5joxJc01+Hyrd+/YduLPgWExEY+hrSmAoM+N418cw6GD++GYKhzbBE/RcByLtQQabghgaPgeVE2nQkmY5w/445n0kKYb/bzIccuGB+96JyYnYVommhsbcOTIYWztevMJ2JyJglD/7t35NgTRhZPfnEJGzqHZL3lZhnmeljwsz/B8diaHdFYmHjnYt283ujavqxfAcSzk8kVMzWTpMqtO3YnENBJTM+jsiGLvrndo3oCLtcA5Vk0hEp8pFeOlSkUTed4luUScOv0d4hNJnP/1Gnp7zmFweAw9N25hOQHsefctJKcz+PzESWzfsg6Xu69B4AXkq6pumHalFj1frCgj5Wp1tKUxvGba1uiZOs5fuISyboHhXYhTRD/+dAkc6WrLm5tQJZIrpKyfL1yheB24gy7cjyUyZdV4TFsM1nacqdjU1NVadEQWeiYHygfFztefqBsGadWCJApgqTAMrTmzOhM4AX6JQVlThwhnjAArbKGi4l48dVZRtKRX8qJU1RHwCIi0eGHrCmwivkDV5YmbjqFCpQgZ+gmknNamEAKik86UtF4Ce0xCMpi5CkaaGo4vibR9lZJlTlVKCHtEcAKLbFknztkIed0wDAsFRUWtt8wn6oT8onJ7LHWxoOjfs8DvNWXS3f91iWKlOkLq8Efmt77CsQJTVDQCMCl3DAIE5pdEiC6OtMUj4Bbh9wjl0Qn5t2yxeokwegksX5ceMwtIpuaKykC+pBQDkvRcU6gxIEoexmZYioentuXANIhoAq+XytXxsWTuslzWugnsOp1NOHPdphahPfuHfIb8MLmvNwZ821rDwQ0eydPOMJyYzcuGrlcmi6o+VFC0IdozQPv76TtjP4npKcAnk0Qn2tFM7jKOZZazLNtI3cSiSqZo7iGtx2ik6JyGp8+yeLYRKEvDS66bACib0MmvtXfzWWf+FWAAEgZP3u0LJukAAAAASUVORK5CYII=",
bestwear: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAABuCAYAAACdk7vKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAALmFJREFUeNrsfAeUXOd13n39TZ/Z2d6AxS4KARIgCZIiwQIWUyIlUlYoOVJUrcSyTmz5JHFsn1jHSZzIOYpjOS6yZVmxrd5iSYy6VUjalEWJBRJJVKLuLra36TOvv3z3f28WgyUWpiQyJy6L8zBvZ6e877/tu/e/90lhGNI/9B+Z/hH8/BPIfwL59+hHerE/8Ffe+ZZBSVZeYRr6G2u16lX4gr60qZJr2+Q67vq3SqpGTScgQ9cWCl3F47V64+Nh4H/jfX/68bkf97s3c6IvCOTwQA9JkiRe7vhEuiqTYagUBgGel0nG3+6+Zf/9qUTqV2VVvbU3n6J0IiHe23Ic8dioNclpNqiC32XfJ8fz8Dmq+Bufu26L1ESBCoXCo0Yy/d//5MOf/Hp0hSHNzi+/9CCHBnrxARLJcgSUgSmKhEOme2+97v5cvvinA31dA329Xc97b6PpUavVopVKDUeT6s0mpSSPIGlKahJZVgtSdsnzWuL1zXqD0vkuyveOzCqa9vP/6xOf+trU+aWXHuSWkT5cBEABpKrKAtwb7ru7KMnq58cnJg6ObN0mgLR/lldW6KmnD9OREyeoXKpASrZ43vNCYoXgR6gmvp01QqfB/iJt7euiHLSjAWk3qiUKPZsGx3ZR/9btj5aWFx54zx/+xepPAlLacC5dYgHa50IH3/XWB24bHx//wi133qPKskyNRoM8x6LvP/EUffOR7wiQCi8GQAShTOmUIhbGavnQhpAc6Lzr+mR5PgVQXTn0cIEBhViBnSMD1J81oNrlyDPi83dcewAnxqu2793/9de/8S3hjwNSjg8lPtT4Ue7wvvw6/oSBf/n6n/65Ow7e+ksHbv8p8YdyqURPPfUkfeZzX6SllTXSdRWHRoamk2lqlM1ALRM62XZALSsAWI8816OVqgewDhVSHhapRX7gUaXi4DU+6YZEO0b6qWjKeF+dQt+jnXtvpFRx4N2//p7fee+PA1KPgRnxuRk/avGxLt1X/dQtv/6On33rz1x17Q3izWurq/S+338/HYNaqnAiumZSLpuiXC5JqpygVAoAkwr5cKqWBRUlOBj8kjRdWpp3qGHZcFoWOVBnRbGpXLYB1IUjcqEBAaXSSdq/pZvsVpl8z6GxXftILwz/l/f+3p/85o8KMoUjiSONI4sjE58b8cFA6Z6DN179trf8i1+54cBB8cbTp07T7/z+H9DS8golTIO6ChlILUupZIYyuDhD10lWJQqCUKipovhkmOyEHCFBWXJocdmmpZJNkmVRviuk0lqdqmWLyg2HbNclVQlJhXO6ZscYKdaqALpl+1UM9L9ee+Mtv7lRdTcF+d6fvXUbR4nZlcYWPO7AsXuoO7UVjz14TiyAo6bVq667STlwxz1ColOT5+i3f/8PIR0H0kpQsVCgvt4CzjMAmcDFacJR2fDIQ71JGtkyQaM4EA9hqyrVqjVaWDhHR599gh556CmqNi0yFYsqJQvq6kDiiKkAGRIOhBA8Rdfs3EZKc1HY8MTu/WSku9669+a7PvGdT/1eiOsVYP7Dhx/dFOQugBnG+ThevB2P/PvA9PlzvSzR0ZGxRLJ/p379rQelYrGbqtUqvfd/vh8XY0NyKerv7qL+/i7K5rO4MBPqqUKyKkAqdP3LDtCNt9wC20xctNKdj6dPnaTPfeYj9O2HHqPuggWpW1QqO/DCDtXrsNFWCHsNKcDrb9w5TIFdFkDHrrjBTucLQ8/8zYPC6+I66f1fPnRpkFeOpPbya+x6sKPmujsymrYdjwywG+eJl93ystSr73uFKpkFAEjR+97/QVpZWaVEMg2AReqH68/nMlC3BC5ah3ppAJmme+9/ABLcSpPnztH3vv99OnjwIA0ODl4EsPP84x/+c/ryFz5MmuYijDQFwAaOShmqrsKaQ444Ct24a4ic+grOZRrccd2Tt937wMv+zc+/XXzQfM29JEj19HLDJIvSVuRwjDJ5baejpEe7lIntE0oTXjGFv37kU5+ltdIKVNKk7q4cTUx0USKRxEprsDMV7h5STJj0qp9+HQ2NjNLf/s3D9PShH1KupxfB33gesM7zN73t7aB9dfrqFz8JScnERAlmTalMSMxBGg1+rUtPTy7TvqEkCESLrOrS9d/4yoNvLNe9T14ufqqweQaXxn+52PHARwqQ6u3XXaUPduWFHZ6enKGjx5+DU9Epl0lTb08atEyBZ5QBABQvVCiQVLr5ttsFwEcf+TYdO3qC7nrFPbRr9+51UBvBtR/r9Trddc9r6IeHHqfnjh8lB/xBg9OBTxN/N01YqhOCEdWo6mNxqUWrc5PUN5b+3Y9+6uOfavuezbKQRB5SBLBEx2EMjBS1gZ4erc09v/pX3xQfYeomgaMiXOjUbMqIeQipCOKaLlEv7HPvNdfT6ZMn6cypU3T3K16+DvBS0ms/MpkoId7yceud91A6o+B7JHjaEM4I5MHl8AO2hNeqIBPHz50nPZkR77dqq32PfO2Lr7+sJG8wyRjtIv25NRFGjHQ6IgM79u1WYHdCis+cmkIMW0FQNylh4EhoIviYCQkqFQrwzLX37NsriPz3HnuMRse20raJ7Re5906Q7edsZCe1Wg3xsUJra2ukaElyQAh8BoSvUQCKY6yNIwFpanJANpjSSlMSaldZmScz0/3LOP3spvnkxLisD12RS141Lif6emV9rE82xgeSeiab0wXfVBP0PdA1Qchhc07AqkmIWZBAHSymGeJv8H0I3uPjE7S6ugx7KtOVV+17HriNEvXhJRmkBZthdWXPzQyqZUULl4E9QmHEYyrFnicAgYDqJuCVZ+ZIVtLi83zHuu7I9x/p2hTkucVAf/i7FQOPRqMZyIfPBNJyMCAlTZ2pHVVaoGDLawjuClRUJQ2SMs1AAPOxorLqwdP5uCZfOKFUKk2333kvFbt7Lym9zh8PKRYfDJQJPqstHxq8qaIGInxYdgTYgMZoWigcEC+47zRJMgzxObXSvDQ/M/+2y1UGFEhQeNNUUtb5fHisT5cVOBUwjGPHjkMzA6iqRmmmaMghXTfA6jPAAIzGF8lwq+kKt67rBo1t2y6I9WY22H4MxGe569JsInQ0Ghw+QqEh9RpA8mM1AlfD744fIKy4eG1As2sN4utkT4tk5nWbgoSWyItLgQDLksQhhYquSm6UOk2fnwXf5DwPia7tk8cJr+1FB8A1GxzXcKE4FywlBsYANvOmQsXwOXy0QbIEGaSNC2Ypskpm84FQV06cWaqcwag4dx1W9YAm59dINZJRct5s7tjU8cTSlBgsA20yQUB+3MRF+y6vXoMMKC5zUM+D5JDw1pBBJFMuyZYi6JvnRzGttLYqCMPfRZx5ARggc1hWU7ZHBsmPTTCeWjUAzw0Fd81kQ9hppKp87jhRNtMC0ISHazPSIksJPKd4OXWV4FH50ePfe9Oc+MuKjQ9z7aa4CNeLnIuMNCmF1MhAFuEHkACItOs6uGAcnkUnjj7zPEezEWCnmrLk2LOWy2URPvjcBl1kk+CcUwILWFqMol+A9y0uBljQCDwSHQD0ItqmRKWYTSUJgCJXjEOHFCmHL/kOZwLsvQLEJhJOhu2QJNgeEmFR80EsC1qR52Oi/r3vPkK79+4Xdsl/5/SrfbCN8nNtgLx47E1Xka6tIMlmkCzJytoSUjVPSGxlBUk1FjjXG9LyMrIU/i6ZFxsXjoM5rS1ppCMh0BKbFx5lOBsBLF0whange+C5AokdgetFdsNAOZll+3MdT3BKqAdUFQ6jxTmgJS72/NQifenBB8XFs1T4ovlz2IPy57TVlJ/jv3NcXF5eFiA5TjbAZiZPPYcFCOLXgsj5nIJxwSygNGwV1Fg8L9ZYibREUrGovrK5JNnR4FrwFhYTyfCuABI5HS9mO4rC/NGP6zP4HTJHcg/ozEYC4YyaTYQQU6FDT/wN9fX10BVX7hMXyhJkSbIUWVXbasqgeGEYJINlm1yaPYXvqeP1CPgIHckk14RCWqmweoYitLD9C6ngP6wlvGqCTEmJ2MhmICFJSHO99AFPCXXyfah4IAFt7CgAMGJvkAJYDlbT0JiJBFBNrHrIToSlxQRdoYe+8ZegZjnBeDZ6WnY2DIjtkEEyQJZ4aWmS5meW8L4o5rJGqfgOtkUdQJuQLqNDxABYLDISjqYdlZ4SsKdQ1y5bQRe2CHAsVeEbsPqhBy+nhS5xvNUUplVeZI84PN+FJGxxwR4cDpcwfB9Jb4U9ZQsAKvSXyBEtq4mLUoQ022GDVbUNkg8GWCsv0OLMlPB99ZoHE8CFI4QwATB0tkFoCiSbBl3NgMuBeMEe2aMrlILrl5CvBpdxPPKZ6UA6txRoS1g5Vls+FDMdKKov1JbrrWwXDhxAs8lVNXhWz8XFYClDW3hXTqDDwIIzAIA67HOlRTPTs/SNr34WF5tYV9d22GBgIlxAbVvNBk2dOSUKXC5soC6uA2rphsI2WVu4ktdTYBsk8FqwsDKJakECDEDTI9bjBpvbpIxF0xsQBl9ju0qngxV7kGqjWoNqGFRnfqqF4ssbdQCFNBUtIgJNkdwyLbOFIxKSlS1I3qKvffmbNAsJGYaxDpK9KkuTHxnwKtTUgcRX1iAti00rjEi/FDkfz2O6SEK6Cwt4bESqB8dOqXRKVOFV8Gvf91Y3t0kzqso1GCQOdjnLrSBsr0tfTzecQI1pk8jHGjB2GYQgnQpEGQLKLXJJziv5nw/yxASBY1wIDf/W1/+Kdu7aI9S2k+Gwx2VbLy/PiEIzsxjDCKmQD6lagReF8+Hn2fHAR1E9djjQXFEKwdM0MjJIuhzFyrobTm4qSYBjkDoWSSlxfob3L5+fC/SMBjuoU1/OEBkHq4+PC6kjC1hdZS7pr9tnrQZSYDtRII/DiirblAdDyedNIUUG2UkGouewLNAUJht5gNOhLZVyQEsA2WxFi8C0Lpu7UBjm/8DKyMZ7x4cGRFbkyzrBbXxtU5Bc9liFhvXjHIKSCgx8bZHMdHdkyVYJqmnCBllycAIczO1ArPb8XIAgzrGU46cjACcTHlIyB17TATPK0Bve/I4olklSvGlEAjAfyWSadu65QUgri8VMJvC5VV/EqXoDDsiOvGitGtdOcYFsgnzeVchSXzFDmqFRFY5scHj4g5uqa9EU0myrrfC2jTJov2pSEp7Ladboii299IOj58hIIs1qxq4chmG7koiVYqOmJUGCCNipUDgKVtnpyfP0e//jN2jL2BXR5g8yjLW1svC+9XoFgJp0+MgxaAKvZ0NkFqzGJuydw165Gl0kEwANWslFatbVlCrRrVfvEJV3Zlq24z/9rY9+fO53PvixS4NcZVGmVWnV86hza+CJw8fC/eN9VC8vU1pxSEEc4go3hxQvCAVQrpO0paMhx3OtuFIOj8z8Ml/oo3e+692UyxeEmnJcnJ2dFcf8/LwIIYlUir7yhf9DC6BwFrMiXEe64wJ5SzMO14IIMGXJ5lPU1z8EwMiAwJxqLet3L7cbpN5351WMDqa0GsTcNVgsh0FfXgpTII0AKbE0r9kxSo/94CT5yA5MIxRqFOMTNEvnRNbjlAe2pkqCW9YqK/SJj3yQto3vFB64Cr0rV0qQJo5SBTbcpJmp41gsl6xyRPvCGJgAxxfkRI6GIiFyEKf7bz9AvYWoxjM7N7/0lYe//+mbtg9sDnLPaN6fXWk4Q6PjTTwKwPu2p0TwscGj7OagVF6eI91do+HebprhtKCzjBFEKyzjHYomCSmKXTmdi1smHbjlTtimSSuQorKikRdyRdwFCA+hQqd8cYBOnThBgVBD3sWKPt5yL2ylOe0iMVZ1/75dtHNslPSkSkvzizAP49f+8xtv8i9byDo6Xeao0Vg5daahGsUG74XgnKXJSMK9V18XVlbmJQ4Xu0YzVLJSSLFqosDEXlekUlIUnMERENMkofAycS3WEnsm27bvgIQUoeYMznG5UIVFBNmwWnU8RnmeIZMoXiGFXeeZfBFZLQLd31+kByDFVCZJLuyx0bJ/cOzZH35UhLq8dNmegbu4Ws4Oq2PDx4h3t6CEdMU7fubu25cmj4k36OluevjQSTgHhAtmQna4vvqsYoJC4hypm/hw+BgaGe2jn/3XvyL2OTjj4CzlHLKN4888BiYViEDfCKKttDy+fbUWb4YCpe1HTqJQSNBbX/866i1GSfmZs9Ned09/f+fm7OV2tXbEO1vpjm07s2PPcsftN169Y3tv6k3L81G89RM99NgPjwugrGYMkt29qHoDJBeG2Sml0hFTYfBbt22l0bHdUeZfq9DJo0eo0rAFVeNra8aGp8fZu9qxeZqA6/+5t/wMDfUWxGvmZs7TXKn+ho8/+K3PvtCtu1y8LdCmdVoHQP4Z5P/e+NMvf12Kau9anpsWxSNuYnjs6FmqYNnZ2balyRJkwHwOxyk8I++08++8IKYZfWjNih7bKunEK8tYNXwWzBnMSKJCsUBveuBVNDHcJ16/AJ8ws1T6Tx/6zFfe86PsTyqX2FLv3EI32y/+xTe/+l1Obfm3VhdnI4MG0BOTa3QMZFwGUUgaog1ASJIfOee029KIVS+IV7PtLduraXV8kdi2AaPZt2cHvfauW6i7mF8HuLhW+Y0//sSX/tuL3hjRA2bBtI4v6z/+6r/9teee/t5vL8+eiSSh6mTJaXriyBmqV+rCIbXcCEgQH3pcmUBCQX78pfx3PwaZNqJkvMH2B87bDTbz6rsP0s7xQcomoqg5NTuNRVLe/b4PffrH2k5/ASCzccU7qpT/+1945ysXpk4+OD95VPdxdbKgaDmqeAo9e3qGVpZ5+9sTehh2fEkbtBQDt4PYq3IpA5lwvqeLbr7xBto72i88aAIhpgkyPzk1DaVQXvtHH/vCl1+yFpfe7pzgl57LwTrisL/09jcW/SD8/OL50werq/PrrzWTeVFcWkQKNj01i3DQpEazJd6j8kLxFgO3ykAdk8mE2Nuc2LaNxge7RYDPGCaFiCWaoottwnLN/ttsNvean7TF5QVIMgcBRjGRwYoiExN1J6B3//IvvHJxdupDVnllqFUvX/hgZBcmvJAia5BY5MNUXV//uwZKlE2oZHKaD5esq9HfDICvgHAvV6rziqq98wOQXvD/ou3shfz81q//u3tXF+d+rVUtHfQcW7KR3Zpwpcl0FNc4seWMQUhb7ig6xbUZXrhKtc6M6LswzN/+4489+OUXrbcuDB9+/pPSnT9xA2Hoe29Ctr7HaVT7VFWVWD21drFJFIsDZDHIKzVjEb8c18zEx37yBsKHXzhIojv+njZ9PvKPt99V/VFW5B8YyJ+4SXizZkRpQwND52N4ief/vwEpbTja1YVOyih1PLcRVJsjhDEJ6nz+RQGtvgjgNnZZtqvy2obnLgUyiIH5MWVtn3sd4INLSPolB7kRnNpx6B1H3GUpqR2bvcoGhseFWzcG5cbJSPvwOg5/g3TDlwrkpSSnxYCMC4m2ZMYJhdnRZalvUN02SFdssETJih0lI6EVJyXt55x4Adpggw2q/KKB5Bq/EnXVi44HDed6B5gkXpKMk+/4kBIbgGodKht0SC8GI8DV8eemqE9SyI/NGHArfl0brPSjSFX9O8G5DpffFJI5Q5S4iSeSWkgJ/JXBpeOSSVw6kdL1WnPg7MnlHTNTKyNL86W+Rr2VbTXrqUapLiiPpquumTCaqYxZ7RroWtq+a2R663jvuXxXBmwnBFDicnIN59UIMIMXQNtgvQ67/Tsdk7QZFQI4WSR3khzZnSS11S6J80QMKBtXFvJW0xs+8sz0/plTC1eWVhrDoSwbYvuci1aSR27DpobdotBxkEwjk/Es3lqKtg08m1q+Z/dtHZy78cYrDl9zw/ZnkimD6R3vXJRjsG3Abem6G+w1fOEgm7W4WmxIou0xchy8LcV5fyqWHoBJnK4XG3Vry9NPzR1cXrb3So7T3d4OEAfWqOXJIies1+piJ8u2kX/KAfQ4ujZu0LfqTfJdPHIvQa1BPYPF1T3X7zl89yv3Pwppn8cLkWaFMWCqxZK1OhzUZYFeGqQYBVCjmo8kmzHItAAnCYBdQRD2HTu8cHt9TT1gtYKBNih+XFldo8MnTtC56UmqVRuiU4QL0UG8188jE4HvidxSRbI8UMwgnevC6nFjUoWa9QoWw6WRrUMLd77mtu8eOLiHW5KXgWE5BlqOpdqpvpsCFSAnJt4hDQ12Cc/39jffJvf2d6ndPTnthuu285aUGbLdSVIBF5fXNK27vNbYfvp4437N6L8KoKRmsyHA/eAHT9B3Hz9E1VqFDFNDzsiKoFA6pYoNHs4/OR/lcQk+Wo4rJgtC3xFbety+MjbcT2nJIRufwR0nXL++5vYbnnnrz7/yS6lM4gwwLEWSFarcttW2Bw467PQCyPHxcREW9lwxJAJ3JpvUDty4M5XLpfRCIZMYGekppDOJVDKR6DMTZn5tpX716pJ5T7F76zBLpVat0rEjT9OX/uqbVKnVkO1zF6VBSe6mTBqiP9Y0dVEj4pZOWfbFpk6lEY1MJHWXGlBX2+FpAotqdZtCyadtA32UAdhKtUa+ZdGua6449+Zf/Gdf3DI28CyAzsdA1zqA2h1k4iJpKkODfarnBWq9bhmO6yev2TeWg6rAqchdPd3ZwVCSe3DenzASw/Oz5VvsVvc9hcJwH69MpVKmP/vIn9Mj3/mOUMNsOkPdRW6655btLnFeyGfI0JOQalKA13SdCjneT4SkFRWHLKRsmhIPSEGqkpDg4mqZVhoOjRRz0ACbFuZmC+eOTm/pGe5v9g10lToA+RvY0fN+lIGBXnyvasCRpruL2UKpVC8apj4M4IOKpg0jYx8wNXNrrWLvbzWzN3d3jxZYNc+dO0vv/+Af0dzcAmWzaTFN0N/XDdvqpq4Cg8uKuQ5Ni8KkkVApk1HEMBuvSDotc5uucEwQHH7XRWtbGPcnuH4A6bs0W6rSyGAfBZYNW1/JnDs1Nzi0dajc218obWBEnYAvkqT6C/dcmSVT7q6WrSFZkbcqqdS2oYGukWxGHXVJHulNZ8/Lvp+anXMnRrdN5KpwDPML8/RHH/yAuKg8JNXTXaS+vi6oJoClkqRr3G8uk4fQ2p3XqKenl3p6ewAyI4rQ7GVLa4s0NXWWnnl6Eh6EK4FcgeZGfZ/y2YAMldtAA7Icj546eZ72jg1QUF6jqZOnBj73F1+5r+uXX18b2NLbtkW3I6QEGwm+cv/Ne/LVup2XFLl3pKfYn0+Ygw2fBuDy+zRNzee7ivIPjy5tgTnmNNhZeWWB/vBPPiQaFgqFLA319dDQIKTXVSBVTQs7TCR0UY+9as92uunADbRly6j4O2+Yss3yFBA3NO3cOUHbt4+SY9VpdqEittQNIxClT+4P4m4Q7lj24KRmlsu0dWRQ9PvNn58ptBqUuOHg3pMbmJB3KdVVDDNZmFmuFedXGj0nzy8PrDSd/rVaq182k92pZDq5WG5l0mYmz3v7XL7/wJ9/lOqNBqUzWerr7qHe3iLUNYsjSWAx8KoGmUaCDty8n7aNj9LKSomePHSEspkkAIJLhH5H8hFA+ibtuXKceSOdn5oTu8rcJMzel8E1uTcBr+MWuNmlCm3p7wXwOk2ePDuQzHe5O3Zvmd6E466HEyXbleupWk635Ye9sqb2aQljMJXNdhvJdC4Fo6qXmqlQz8oJ3aDPf+XrNDM3BweTpL6eIo1P9GD106RoCUjOgAPR4WQMSO9aqGiBjhw+RYefOQVeodPocA/+Jl8wndC/6Hzbtn7RJjN9fh6Oh7uWObZGWZcic58Cb9K6tNL0qAeagtgrrS7Xsjuv3D5VKGZKGyR6kZeVHSeia0lTTxoJPatqWjavhGbONNXV5bIRBrIqu2U6PX2eDh89ITqYc1m2Q3hNLLsf8CCaBmoLWovjyisnqLs7T88+e4rOTS3RNft30V23XwN7NKJr4L6XsEO7YrDcV7vnqu3EU0SeD6cUcD6gUMLkGUtZ7HuKfroKiIKeERR98rmTg3/77UMHYmqZjkcf9Y4cVmoXsvRUQjfBwc2MppkpWaiwrqmKblUbqs/BWs/TN7/1iHDxCCWUTqaExFxHgYMBrUUYUHUJDiNJY9tGaG52GV53lfZfu51GR3ou5MGhf7FDjAHWESfXStwWWoF2jFIS5IGlbjUlqKsMZhSxKYVHM3D5x85Ok5bICXt7/NGnrpo+u7ilA6TRkbBHIPflbOXGPtKHElqqR/GTI/2G2ZVD3Gw1EmEgiBodPXGaSpU1SsGmEqYpHIukSAgLctQcEZJoft8KD8jh5djxKerrL9DgQNcFH3CRegbrtilGJuoNxNw6ra5VuJND9Li2Z014zIv3PVvNqBHS1PDeAKTBjfLvuXPnen7wxLH9McjkJUBK8mBfWilu6dKvGPH0np5kYjDlqoWcppWWayoDVHSVnnjyEII571+o5IVRgZivEUmF2H/kWSqEcYAqggHV4SRaNLalryP59zfYYuTdo4ZCR9giqysDLZVqYpKHf1IpSUz5ZHD53BbK72s6vN9CdGJyGtJOie2Lw0+e2Bmne22QamcnizxXstUjx+v6+YpMDcvzl2tJeaYUyp7tiKVaanLXcAkfCHbCIxOQLfeHM7CoRZTbqKONIJ5Y5+nXq/dtp1wusQFgtCPWWa6JRiZ8QcabAModlvVGMx6ZiMaWeI8zGpkg0Z3V5JEJXIPP0+zpglDjk08fHz11fGrrhiT9groaCVPKZeQwJctmJpNOpTO6bll+MkSy7NoWHT16TLhwnupJJaKRCd7d4skCSYkGsH03mjDg7mIOAQP9eXEunMwlJMhH1H7GIHguxIFEbWo2LXHwzjRv5PLYBMdJVtVmK2pgdALuBuMRDZ9OLpRIhg43rbpx7uTM+IYp3vUhArnR8nFg7UBRLLJ9K1BCqKomOpIR0M/PzscjE55w49yl7DpREy9nDpblUQuS4IvlFlHhOdvHRR704moFB3yWIgd8VtlGwxJbfKy6nG9qGo/7hqJrmrXEaoVi4TpHJubnlxG+og2l2bNLQxtKLes22e4/INs1Q81SFCS1mt2wVU5/WCU4H+TwFq26L/bIuddVUVyssivGdnmukccBG40qJJ67UJEIww3VxHDDyIQrJFcXAy9Noa4Mkvtco23CAJ42kiC3iLItcotateaLkQlNbwgvH0Lss9MLPRtqSetlUJUbWVMJl/2WIVItIwhsp6Vw6HBMVgu2ES3qQZc9eDsX/DLqjrThBbhhV/MAEo5pGoylu5i8bMmlraasCdwJUq02hLPhEMLnrLpCyjyaj+VfXQFgn/dDfVpb8sVsCre0ZRPRyITKfXC2TqXVUn5Dg8d6nFRzZsgnHly1lDIUwfcCRGNu7VTiEqki+SK5bbXwoZqDTAIuTrKFI2q1ZKgVT98l6cjRszQ83CVaPKORCUUc/LpoZIJigK7odmZvuoKUih3b2loVoaQpxjN4Iblxf23VFfafygRUrgZUwnMK14yCqMLAIxPMZXjj1rGCZAe4zvInrjnBPcBgXhmN03bFgdwarSYYlbc+NBZCSk2LaZUjPGgdDIon8CIyIEOFeN6jJMZ9H/vec7R374gAxfcb4NtfRJuwUS96O2yw1Dj4Ly2VaHmlTOUKD75AM0wV2UeUWPNMGMdNZ43bwn1KYLF509pxogEYHplI6HCGSBxcxzM22Xch1W05sKpUmK17CptTMe2LhkBVtHdGoxM8IyUJOsbj84qoUNq2IkpBsitH7Swux7WAO6VA4TQaGirGIxPSOsAwnjpgNS2Xa5AiQEKKDJYdTzbNSXR0swX21poK3opjacWHHvqCw/LkUdvWuaM50E1SoXXtXexL1l1ZkgXYbhLeRU1IatOSOZ0JLd+TcqlW3GTEACUhtSbsUIJGJAw+5+RXErFMsaN+gmTSR9g5BYlrNADG0+5Ubnf7s6qykykxyJWyAMhqmgJH5a+BvxV3j6jXo8yDvS9rVR1enFvU+Dt4botZUL3VLizqZKYS9iX2Ty6MFnJsaTqBEjhyyINaSHy56wFm54ggrMrswl0mYZE0XVuMR7QgERv5XeA38Rw8ca0pvCU37z7xxFERIi4emcDn2E48VlED0MgOeSTDNJiUc70nskcVEpRFBuKJ+w3U4Q8SiUBoC8dnLnqJkQlomAKbz6YTjc3KIfL5OUubKflaxVYUAFVrsORkOuolbVlNUaLgkQne3+cL4IkBbsWulLnfvCW4JwPzxa1mEMibTNFsSKhMzz5zXNxNou14oslXgGxEC8Iqyrana7Lw3kLKDf4e2G2L7wniioPjcT7DMTIQ5ICn8MTIhKmL+pGOhcwU8uVL7JkIvZZboafUWp4Cj2rIQahwiTHf0xO4AoAjWlRqoFI8EFqDCnGM9AMbdsgFYxxVxLlaC0BtUXBy3GjPhhfiqUPPQWJVobrCG/pBHActYZcMSlcjsl6pMqkIRfIsSZ4wEdE2yq/Ro7Hi+XmwnxoIAkxAE9w2uW533YPFpU02h0IZZqgkNEVFyJDqdqA0bFvOFfKiSdb36jTQVxBzGjxtkytEU7DMZkwTC6BEezGBb8Mh4KJtSwC1xK0tXNGAfwhAZTlqrI+maD3BVVmVeaE1JcpKuCbL5cpkimutnhjLkPA9/FypFCBZhoR55NCL7h7BvmJ8fCgeLTSod6A401Eh8C5KmlmS5DvyciDLVduRoZZyLm8G3EbmYxWHc0kBTFApG9Js+WLkr17nqVe2T4QDSNRB3BMjE74jQMqSi7wzhGOKCAjHzojtXBiZ4OIzdzqzfTGzYe9Zq+LzK1DVJo9IASRCdzrN6RW0iUkU/uP7Kljw2iOjY3G2oltjEz2nNxSaL0gSjlRbgh2mfUdB2iJpPsSqyWH/1nFhtHarJsoa7ZEJyWdyDmpV9mlh3od9sMsHWJs3cqBaYEMIzWIRuMZ68PabKbrllLQ+LcdS5bBiwKYSqZxYcDPB9/HhCgFUlaljwxUTrzxHWamEYgg0aYRiZILFyCMT/aYk7LlvtH9q++7Rcxu2+NYlqRpJSSHPUrhPisf6bavpW0jHJ3aN0+TJZ8ltVehq5IbfPz5JOpJkg287o5JopkdoJi9g+1FgY1HKlMsp6833S4tr9IXPf4n6+/vjCoAlKByHD847xVwX6Jzd5CzGBUGISL8mOxRAqqt1vq9AxFu5L89zottP8cjEHS+7Er6iTplUmrZNDB6PN4IuuTei1ku+Yvak5FU3kHzb5XjtJ+pWMDCYD4u9Q7Q0A3BaILqpymUH8ZETr6ihk+/qIIrF+J1ti9/Mu1aaxtuZrGZZuu/+e8W9Qvh7OS7OzC7R+ZlFmptbIVmrCqlOAnC1zlsHCB9ilCCINoUgPduPJtXFbiIXnUOe+EnRSHc3/JVNqWxq6Yprtzy5YbugU11JveXAblk2/DChuQHIdpjLqJJimkER7GPnvr3B8tyUzNK8fs84PfrkcQpMOAdIlEuGYlmZaoW8+orY3LFaqvCOBhag2azRQ9/+a5CCXoQCW2Q0a/C2zFNXuQJgsbOqQVKuGEj1XTfKV/keH3A0DrdEO9EdXHgHTOTPsMX7X3kX4mK0ob3z6u1Pj471TcYgmx2OZ50QqFsGdblatoLh4oC/im/RjJQzOtgTdmXSYf66Ap09scOdPfOcplhlGhnoppmFRZHvqYoU54q80843InEFr/V5S84De9GZziVp9+4JsQsPEiayf+aAXhANs0UkSIvnMBEvedIOn92UgmjAJs5YbFZVdqcAeMPVu2hnf7fIjLSsPnPbHbu+w9syG3a4vIsYz6kpKyg1Zf/4uWmn1LAc5HbWucmz3g9PTvpLWO2b7ri5xFzVcZo0MZCibCEjvK2YoOMJdtcXMa1lMSfli8WBOMpOineqpqbm4X2bwltWqlyVg02WoJ6IrS2+K6HHNR5f3CSBx584h2zxFh9WQIknaDM8boiLHR/ppwfuvA1ZSYYdWXDVtVu/2zPcfapjF3qjqkbF5YWakz5ybqF6bKZSsQJpea7UmJmruKflhHHG0OSpYm9hWVGSubnpyRRve08MD9Lkck04B0kOxcYqV+okQcCj4RduM2Bpc0765JPH6ORzJxFX0yLb4KyjjBSrBadhN9bgTXHeRMhwPDFty/GxysNoDsdJ2LgX2Wdvb4be9MB9lEgb5IFiDo93P37fG276DJeh4i282oYtvAvbBKMjA8iGVLu/N1/Hwi0P9BdKmWxyaXCoazWRSSwUi9naxK5tldJipXdlaTHJexFbEJ+mFkoiY1BVLh1G96fjg6t6PIzGasw78uygGg1IsbImbp1RhZOxkN20muxsXJFtsDY04V1bYvLdFQA5jAi7h4TzXVl62+tfQ8V8jiMuFXvTJ2+7/+pPZ3PJqXifstLRS+Bt3KNU4AER8/36+FhvNZtNlFRNWezvK9SSSXN565beejpjro1t65sZ27mtcvbk7Gi1tJaioEW7to7SzCrfK8CBR12/L4O4fY1gxvEYBUuB878a6N/aWgWgGjjAXSGtqIjFI4SuqBNJTnR7Dc46+O5o3MbeP9xH/+q1r6Ku7i4xoJ3KJabvfM3Vnxge7TmCr1npsEdro1ft3GlWhga7lHgrXctmU0pXd1Y9eOsecBApKclKvmV7+WTC7Dr05MkDn/nAXz5w5tRzA6oGcpzP0onpBk3OLMBpSJRDHsnb6Nwowk5IVjQKNUXcgQnUUXhJMSbBj+KmmVGlz2Ni7vB8hSv4cgOPsqbR/n076d6bb0JiHLElNalP337flZ8YGes7FPUQCDWtxPZobeCsF/cMzJ6e4p6BSBwyj6cqvLekw0BM0acjybB0Oc8NESePz1z/0ff/79cef+bpCc4sjCSeNjJ06MRZspBVcJ7pg1YwKBWxVWaAenSbRSeMpBzd0CeIQHqcELti8rUCW1MQivp7uujVP3UbFbIZSuqKcD6JXPLkrffu/vTQlp5nY4ClDodjXcrhPK/7owOoJGYgZIXzIxaLyTeWwCMfXCzqWluujv/ZH3z+nz/x14/yrQhlbqDPZLtFveXwmfNQzaYIodxMz55ZjbfMuZoUxIU8GU6l5UZ3SWIvmkokYGtFOrj/SthgXgyMc0cUmF3QN5x5/O5XX/O5dDZ5pqMpotbhUZ3NAD6/xaXdwyPqGuwycdWSjOjO9Uwpgd/jHh7iFpfit776+N3f/txDd0xPT42qLHhINpnNkQQ+WkbOeH5uUfTmMN1j6TE1E3MhXA7hkQkAK2TTtH37durPZUDXNDEkIgeR9LL55PmdV48+fMOtEw/H9leK1bMWOxp7Q3dl+KM3K0Xqy3toF4CKnSPRtMTTYflapTn8hU8+9PJjTx67fnlhuZ+JuKwZ4sgBANPBlqLFzUuGUOf23SPSvOXHe5pM2uXoTix8h4hMNrHYN9771O0v3/0QpDdzoTPrIvV8QQAv33bGYKOuLElUjyUpavWMGgcT8eZKexQx36hZA9955OkbDj9+fP/c5OJYrVYzk4kkJTLRvQBk5Hx6dEcqMjQTLMYXQDXeKgr4pl+KlesvTu65ZsuhffvHDqUy5nwstc6Ws1ZHJ5bbsWX9Y/bWbWwB5VQjKrnpMVgjBtrZGSmaCVeWykMnjkzvmDqzOLa2UB5s1Jt5u+WmEEnFzJmWTFp6QmumUmap2Fec2zLeO7lr99DJTD41H6miaCJsNw52gtsovRfUEvpCQF6ukbfzdqnJWMKpuOe1sxVU7RiJpI5WbK+jr5XbP1od3ZDNDmCdXR7+Jdq3X5R+1/ASfePt1Wx3GlsxoJroVYkAcijaWLqnjvd78dZX+zPsjs/aCMy/RLv2S9KeHW7oMd3YnNvq6D+Pb44bqhvL9s8Huv4Z3oZC1Ga96C95D3q4oY9c7rigzob7jfsS8iYL5l/i0b9Eg/2PPVHwfwUYAE2x06PWZ04FAAAAAElFTkSuQmCC",
lastpost: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAEASURBVChTY2hIjqlLiIy1NgKiZHuTJHuTBFsTHx3lAAM1oEictXGwqS5Dgb/9758/Pr17iRXtXTcj1MaAIcPD+uyBNX7GOk7aqkAyzs4UGa1b0O1jqs2Q4GgCVARU8f///4nNtQ5aKj6GWqlOFnBFbgZqDNk+IJMgiiCgp74GqNTPUAuiyN9CG6jIFk0RBACVBpvpgxXpMmR5oZsEAXBFfubaUIejWeekreKlr4Hd4X0NNS7aqkHGOjFW+qGm2giHp3pYAhXhCQIvUy2GJFeLtfO7l05vwYqmd1d6GGsyuOuq2aopminJApGVqpylqpyFspypooyFMkjEXFnOXFkOAHW5yBE3A5XXAAAAAElFTkSuQmCC"
};
TWDB.Util = function (e) {
var t = {};
var n = function (t, n) {
var r = "twdb_css";
if (typeof n !== "undefined" && typeof n === "string") {
r += "_" + n.replace(/\W+/g, "")
}
if (e("head style#" + r).append("\n" + t).length === 1) {
return
} else {
e("head").append(e('<style type="text/css" id="' + r + '">').text(t))
}
};
t.addCss = function (e, t) {
return n(e, t)
};
var r = null, i = function () {
if (r === null) {
r = isDefined(ItemManager.getByBaseId)
}
return r
};
t.isNewIDsystem = function () {
return i()
};
var s = function () {
var e = [], t, n, r = "twdb_" + Character.playerId + "_", i;
if (localStorage.getItem(r + "embackup") === true) {
return
}
for (i = 0; i < localStorage.length; i++) {
t = localStorage.key(i);
if (t.search(r) === 0 && t.search(/(marketreminder|notes|settings|statistic)$/i) !== -1) {
e.push({key: t, newkey: "backup_" + t, val: localStorage.getItem(t)})
}
}
for (i = 0; i < e.length; i++) {
localStorage.setItem(e[i].newkey, e[i].val);
console.log("key " + e[i].key.substr(r.length) + " saved.")
}
localStorage.setItem(r + "embackup", true)
};
t.backupData = function () {
return s()
};
t.idMigrationDone = function () {
var e = TWDB.Cache.load("migration") || {};
e.itemid = e.itemid || {};
return e.itemid.migcomplete === true
};
var o = function () {
if (!TWDB.Util.isNewIDsystem()) {
return
}
var t = ["barracks", "bonusdisplay", "bonusjobs", "chathistory", "embackup", "marketreminder", "migration", "msdsettings", "notes", "settings", "statistic"], n = {keys: true}, r = [], i, s, o, u, a, f, l = "twdb_" + Character.playerId + "_", c = TWDB.Cache.load("migration") || {};
c.itemid = c.itemid || {};
if (c.itemid.migcomplete === true) {
return
}
var h = function (e) {
return JSON.parse(JSON.stringify(e))
};
var p = function (e) {
return parseInt(e, 10) * 1e3
};
for (u = 0; u < localStorage.length; u++) {
i = localStorage.key(u);
if (i.search(l) === 0) {
r.push(i.substr(l.length))
}
}
for (u = 0; u < r.length; u++) {
i = r[u];
if (t.indexOf(i) === -1) {
localStorage.removeItem(l + i)
} else {
if (c.itemid[i] === true) {
n[i] = true;
continue
}
switch (i) {
case"marketreminder":
s = TWDB.Cache.load(i) || {};
for (a in s) {
if (s[a].item) {
s[a].item = p(s[a].item)
}
}
TWDB.Cache.save(i, s);
c.itemid[i] = true;
TWDB.Cache.save("migration", c);
break;
case"notes":
s = TWDB.Cache.load(i) || "";
o = s.replace(/\[item=(\d+)\]/gi, function (e, t) {
return "[item=" + p(t) + "]"
});
if (o !== s) {
TWDB.Cache.save(i, o)
}
c.itemid[i] = true;
TWDB.Cache.save("migration", c);
break;
case"settings":
s = TWDB.Cache.load(i);
if (isDefined(s.pinnedItems) && isDefined(s.pinnedItems.length)) {
for (a = 0; a < s.pinnedItems.length; a++) {
s.pinnedItems[a] = p(s.pinnedItems[a])
}
TWDB.Cache.save(i, s)
}
c.itemid[i] = true;
TWDB.Cache.save("migration", c);
break;
case"statistic":
s = TWDB.Cache.load(i);
o = {};
var d, v, m, g, y, b;
for (d in s.chest) {
f = p(d);
o[f] = h(s.chest[d]);
o[f].items = {};
for (v in s.chest[d].items) {
o[f].items[p(v)] = s.chest[d].items[v]
}
}
s.chest = h(o);
for (m in s.job) {
if (!JobList.getJobById(m)) {
continue
}
o = {};
for (g in s.job[m]) {
o[g] = {};
if (g === "products") {
for (y in s.job[m][g]) {
o[g][p(y)] = h(s.job[m][g][y])
}
} else if (e.isNumeric(g)) {
for (b in s.job[m][g]) {
if (b === "items" || b === "extraitems") {
o[g][b] = {};
for (v in s.job[m][g][b]) {
o[g][b][p(v)] = s.job[m][g][b][v]
}
} else {
o[g][b] = h(s.job[m][g][b])
}
}
if (!isDefined(o[g].duration) || !e.isNumeric(o[g].duration)) {
o[g].duration = 0
}
} else {
o[g] = h(s.job[m][g])
}
}
s.job[m] = h(o)
}
TWDB.Cache.save(i, s);
c.itemid[i] = true;
TWDB.Cache.save("migration", c);
break;
default:
break
}
n[i] = true
}
}
TWDB.Cache.save("keys", n);
c.itemid.migcomplete = true;
TWDB.Cache.save("migration", c)
};
t.idMigrator = function () {
return o()
};
var u = function (e) {
if (localStorage.getItem("twdb_" + Character.playerId + "_embackup") !== "TRUE") {
return
}
var t = [], n, r, i = "backup_twdb_" + Character.playerId + "_", s;
for (s = 0; s < localStorage.length; s++) {
n = localStorage.key(s);
if (n.search(i) === 0) {
t.push(n)
}
}
if (e === true) {
for (s = 0; s < t.length; s++) {
localStorage.removeItem(t[s])
}
localStorage.removeItem("twdb_" + Character.playerId + "_embackup")
} else {
for (s = 0; s < t.length; s++) {
localStorage.setItem(t[s].substr(7), localStorage.getItem(t[s]))
}
}
};
t.simpleRestore = function (e) {
return u(e)
};
t.wrapBetaGetItem = function () {
ItemManager.__twdb__get = ItemManager.__twdb__get || ItemManager.get;
ItemManager.get = function (e) {
try {
return ItemManager.__twdb__get(e)
} catch (t) {
console.log(t);
TWDB.script.isDev() && console.trace && console.trace();
return undefined
}
}
};
return t
}(jQuery);
TWDB.ClothCalc = {
uid: "twdb_clothcalc",
_sk4attr: {
strength: [5, 6, 7, 8, 9],
flexibility: [10, 11, 12, 13, 14],
dexterity: [15, 16, 17, 18, 19],
charisma: [20, 21, 22, 23, 24]
},
_type2id: {
animal: 1,
body: 2,
foot: 3,
head: 4,
left_arm: 5,
neck: 6,
right_arm: 7,
yield: 8,
pants: 9,
belt: 10
},
_id2type: {
1: "animal",
2: "body",
3: "foot",
4: "head",
5: "left_arm",
6: "neck",
7: "right_arm",
8: "yield",
9: "pants",
10: "belt"
},
_skill2id: {
strength: 1,
flexibility: 2,
dexterity: 3,
charisma: 4,
build: 5,
punch: 6,
tough: 7,
endurance: 8,
health: 9,
ride: 10,
reflex: 11,
dodge: 12,
hide: 13,
swim: 14,
aim: 15,
shot: 16,
pitfall: 17,
finger_dexterity: 18,
repair: 19,
leadership: 20,
tactic: 21,
trade: 22,
animal: 23,
appearance: 24
},
_id2skill: {
1: "strength",
2: "flexibility",
3: "dexterity",
4: "charisma",
5: "build",
6: "punch",
7: "tough",
8: "endurance",
9: "health",
10: "ride",
11: "reflex",
12: "dodge",
13: "hide",
14: "swim",
15: "aim",
16: "shot",
17: "pitfall",
18: "finger_dexterity",
19: "repair",
20: "leadership",
21: "tactic",
22: "trade",
23: "animal",
24: "appearance"
},
_class2id: {greenhorn: 1, adventurer: 2, duelist: 3, worker: 4, soldier: 5},
data: {skills: {}, items: {}, jobs: {}, custom: {}},
calcdata: {
skills: {},
items: {},
jobs: {},
custom: {},
animals: [],
buyTip: {},
jobBoni: {},
used: {},
loaded: false
},
ready: false,
loaded: false,
up2date: true,
gui: {job: {}, custom: {}},
bidsLoading: false,
bids: {},
getBids: function () {
if (this.bidsLoading)return;
this.bidsLoading = true;
var e = this;
Ajax.remoteCall("building_market", "fetch_bids", {}, function (t) {
if (t.error)return (new UserMessage(t.msg, UserMessage.TYPE_ERROR)).show();
var n = t.msg.search_result;
for (var r = 0; r < n.length; r++) {
e.bids[n[r].item_id] = 1
}
e.bidsLoading = false
})
},
init: function () {
if (this.ready) {
return
}
var e = this;
this.jobs.setParent(this);
this.joblist.parent = this;
this.customs.setParent(this);
this.bag.setParent(this);
this.getBids();
TWDB.Eventer.set("TWDBdataLoaded", function () {
e.handleTWDBData()
});
this.gui.copyright = jQuery('<div style="position:absolute;bottom:0px;left:0px;height:15px;display:block;font-size:10px;color:#000000;">.:powered by tw-db team:. | <a href="https://tw-db.info" style="font-weight:normal;color:#000000;" target="_blank">.:tw-db.info:.</a> | ' + TWDB.script.version / 100 + " rev. " + TWDB.script.revision + "</div>");
this.gui.cache = jQuery('<div style="position:absolute;top:10px;right:8px;width:20px;height:20px;cursor:pointer;" />');
this.gui.bag = jQuery('<div style="position:absolute;top:95px;left:1px;width:252px;height:186px;" />');
this.BagInt = window.setInterval(function () {
e.finishInit()
}, 100);
this.data.custom = TWDB.Settings.get("custom", {
1: {id: 1, type: "speed", para: {}, name: "Speed"},
2: {id: 2, type: "custom", para: {9: 1}, name: "max Health"},
3: {id: 3, type: "regen", para: {}, name: "Health Regeneration"},
4: {
id: 4,
type: "fort",
para: {att: 200, def: 20, health: 100, type: 0},
name: "Fortbattle Attacker (Att)"
},
5: {
id: 5,
type: "fort",
para: {att: 20, def: 200, health: 100, type: 0},
name: "Fortbattle Attacker (Def)"
},
6: {
id: 6,
type: "fort",
para: {att: 200, def: 20, health: 100, type: 1},
name: "Fortbattle Defender (Att)"
},
7: {
id: 7,
type: "fort",
para: {att: 20, def: 200, health: 100, type: 1},
name: "Fortbattle Defender (Def)"
},
8: {id: 8, type: "duel", para: {12: 1, 15: 1, 16: 1, 24: 1}, name: "Range Dueler (Att)"},
9: {id: 9, type: "duel", para: {12: 1, 15: 1, 16: 1, 21: 1}, name: "Range Dueler (Def)"},
10: {id: 10, type: "duel", para: {6: 1, 7: 1, 11: 1, 15: 1}, name: "Melee Dueler"}
});
if (!TWDB.Updater.wasUpdated()) {
var t = TWDB.Cache.load("calcdata");
if (typeof t === "object" && t !== null && isDefined(t.loaded)) {
this.calcdata = t
}
}
},
finishInit: function () {
if (typeof this.BagInt === "undefined") {
return
}
if (Bag.loaded) {
window.clearInterval(this.BagInt);
delete this.BagInt;
this.loaded = true;
this.ready = true;
this.addButton();
var e = this;
HotkeyManager.register(new Hotkey("twdbcc", "", "tw-db ClothCalc", function () {
e.open()
}));
if (isDefined(this.open_param)) {
this.open(this.open_param[0], this.open_param[1]);
delete this.open_param
}
}
},
addButton: function () {
if (this.ready === false) {
return
}
var e = this;
var t = jQuery('<div title="tw-db.info ClothCalc " class="menulink" />').css("background-image", "url(" + TWDB.images.button + ")").css("background-position", "0px -25px").mouseenter(function () {
jQuery(this).css("background-position", "-25px -25px")
}).mouseleave(function () {
jQuery(this).css("background-position", "0px -25px")
}).click(function () {
e.open()
});
jQuery("#TWDB_ClothCalc_menubuttons .menucontainer_bottom").before(t)
},
isBetterItem: function (e) {
var t = ItemManager.get(e);
if (isDefined(t) && isDefined(t.set)) {
debLog("isBetterItem - ID", e, t, "is seen as new set item");
return true
}
var n, r, i, s;
for (n in this.calcdata.jobs) {
var o = this.getClothForJob(n);
if (!isDefined(o)) {
debLog("isBetterItem - job ID", n, "has no Calc data");
return true
}
r = 0;
i = TWDB.Calc.getItemBonusForJob(e, n);
if (isDefined(o[TWDB.ClothCalc._type2id[t.type]])) {
s = ItemManager.get(o[TWDB.ClothCalc._type2id[t.type]].id);
if (isDefined(s) && isDefined(s.set)) {
continue
}
r = TWDB.Calc.getItemBonusForJob(s.item_id, n)
}
if (i > r) {
debLog("isBetterItem - ID", e, t, "is seen as better than ID", s.item_id, ItemManager.get(s.item_id), "for job ID", n);
return true
}
}
return false
},
checkSkill: function () {
var e;
for (e in this.data.skills) {
if (typeof this.calcdata.skills[e] === "undefined") {
return true
}
if (this.data.skills[e].val !== this.calcdata.skills[e].val) {
return true
}
}
return false
},
checkItems: function () {
var e;
for (e in this.data.items) {
if (typeof this.calcdata.items[e] === "undefined") {
if (this.isBetterItem(this.data.items[e].id)) {
debLog("checkItems -", this.data.items[e].id, "causes update");
return true
}
}
}
for (e in this.calcdata.items) {
if (typeof this.data.items[e] === "undefined") {
if (!isDefined(ItemManager.get(e))) {
console.log("Item ID=" + e + " seems to be no more defined...")
}
return true
}
}
return false
},
checkCustom: function () {
var e, t;
for (e in this.data.custom) {
if (typeof this.calcdata.custom[e] === "undefined") {
return true
}
if (this.calcdata.custom[e].name !== this.data.custom[e].name) {
return true
}
for (t in this.data.custom[e].para) {
if (typeof this.calcdata.custom[e].para[t] === "undefined") {
return true
}
if (this.calcdata.custom[e].para[t] !== this.data.custom[e].para[t]) {
return true
}
}
}
if (typeof this.calcdata.custom[Number(e) + 1] !== "undefined") {
return true
}
return false
},
checkCache: function () {
var e = this.checkItems(), t = false, n = this.checkCustom(), r;
this.gui.cache.children().remove();
if (e || t || n) {
var i = "datele nu sunt actualizate, click pe Update";
if (e) {
i += " [Inventar]"
}
if (t) {
i += " [Îndemânare]"
}
if (n) {
i += " [Îndemânări selectate]"
}
r = jQuery('<div title="' + i + '" style="position:absolute;top:0px;right:0px;width:20px;height:20px;background: url(' + TWDB.images.iconData + ')no-repeat 0px 0px;" />');
this.up2date = false
} else {
r = jQuery('<div title="datele sunt actualizate" style="position:absolute;top:0px;right:0px;width:20px;height:20px;background: url(' + TWDB.images.iconData + ')no-repeat -20px 0px;" /></div>');
this.up2date = true
}
this.gui.cache.append(r);
r.click(function () {
TWDB.DataManager.loadData(true)
})
},
openWear: function () {
var e, t = wman.getById(Inventory.uid);
if (TWDB.Settings.get("wear_openmin", false)) {
if (!isDefined(wman.getById(Wear.uid))) {
Wear.open();
wman.minimize(Wear.uid, true)
}
} else {
if (!isDefined(wman.getById(Wear.uid))) {
Wear.open()
} else {
wman.reopen(Wear.uid)
}
}
e = wman.getById(Inventory.uid);
if (typeof t === "undefined" && typeof e !== "undefined") {
e.fireEvent(TWE("WINDOW_CLOSE"), e)
}
},
open: function (e, t) {
var n = this;
if (this.ready === false) {
if (isDefined(e) && isDefined(t)) {
this.open_param = [e, t]
}
return
}
if (wman.getById(this.uid)) {
wman.reopen(this.uid);
this.openWear();
if (isDefined(e) && isDefined(t)) {
var r;
switch (t) {
case"job":
r = TWDB.Jobs.getJobById(e);
r = isDefined(r) ? r.name : null;
break;
case"item":
r = e;
break;
case"default":
r = null;
break
}
if (r !== null) {
n.showTab(e, "Jobs");
n.joblist.open(r)
}
}
return
}
if (typeof this.eventOpen !== "undefined") {
TWDB.Eventer.remove("getGameData", this.eventOpen)
}
var i = 0, s;
for (s in this.calcdata.jobs) {
i++;
break
}
if (i === 0) {
this.eventOpen = TWDB.Eventer.set("getGameData", function () {
TWDB.DataManager.loadData(true)
}, 1);
this.up2date = false;
this.getGameData()
} else {
this.eventOpen = TWDB.Eventer.set("getGameData", function () {
n.finishOpening()
}, 1);
this.getGameData()
}
this.openWear();
this.jobs.selected = 0;
this.gui.job.sort = jQuery('<div style="position:absolute;top:10px;left:0px;height:20px;" />').append('<img src="' + TWDB.images.iconName + '" title=" sortat după nume " alt=" sortat după nume " onclick="javascript:TWDB.ClothCalc.joblist.order(\'name\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconExperience + '" title=" sortat după experienţă " alt=" sortat după experienţă " onclick="javascript:TWDB.ClothCalc.joblist.order(\'experience\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconDollar + '" title=" sortat după salariu " alt=" sortat după salariu " onclick="javascript:TWDB.ClothCalc.joblist.order(\'wages\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconLuck + '" title=" sortat după noroc " alt=" sortat după noroc " onclick="javascript:TWDB.ClothCalc.joblist.order(\'luck1\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconLaborpoints + '" title=" sortat după punctele de muncă " alt=" sortat după punctele de muncă " onclick="javascript:TWDB.ClothCalc.joblist.order(\'laborpoints\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconMoti + '" title=" Sortează după motivaţie " alt=" Sortează după motivaţie " onclick="javascript:TWDB.ClothCalc.joblist.order(\'motivation\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />').append('<img src="' + TWDB.images.iconDanger + '" title=" sortat după pericol " alt=" sortat după pericol " onclick="javascript:TWDB.ClothCalc.joblist.order(\'danger\')" style="margin:0px 2px 0px 2px;cursor:pointer;" />');
this.gui.job.title = jQuery('<div style="position:absolute;top:37px;left:0px;width:187px;height:19px;font-weight:bold;text-align:center;white-space: nowrap;">Alege munca aici >></div>');
this.gui.job.mode = jQuery("<div style=\"position:absolute;top:10px;right:30px;width:20px;height:20px;background:url('" + TWDB.images.jobTime + '\') no-repeat scroll 0 0 transparent;cursor:pointer;display:block;" title=" Durata muncii " />');
this.gui.job.search = jQuery("<div style=\"position:absolute;top:35px;right:50px;width:20px;height:20px;background:url('" + TWDB.images.iconSearch + '\') no-repeat scroll 0 0 transparent;cursor:pointer;display:none;" title=" Găseşte această muncă pe hartă " />');
this.gui.job.checkbox = new west.gui.Checkbox("", this.joblist.all ? "" : "tw2gui_checkbox_checked", function () {
n.joblist.all = !this.isSelected();
n.joblist.update()
});
this.gui.job.checkbox.setTooltip("Ascunde muncile pe care nu le poţi face");
this.gui.job.checkbox.getMainDiv().css({position: "absolute", top: "35px", right: "30px"});
this.gui.job.button = jQuery('<div style="position:absolute;top:35px;right:4px;width:26px;height:20px;background:url(\'/images/window/character/title_editbtn.jpg\') no-repeat scroll 0 0 transparent;cursor:pointer;" title=" Alege munca aici " />');
this.gui.job.skills = jQuery('<div style="position:absolute;top:60px;left:1px;width:170px;height:30px;display:block;" />');
this.gui.job.mainDiv = jQuery('<div style="position:absolute;top:0px;left:0px;height:100%;width:100%;" />');
this.gui.job.mainDiv.append(this.gui.job.sort);
this.gui.job.mainDiv.append(this.gui.job.title);
this.gui.job.mainDiv.append(this.gui.job.mode);
this.gui.job.mainDiv.append(this.gui.job.search);
this.gui.job.mainDiv.append(this.gui.job.checkbox.getMainDiv());
this.gui.job.mainDiv.append(this.gui.job.button);
this.gui.job.mainDiv.append(this.joblist.getMainDiv());
this.gui.job.mainDiv.append(this.gui.job.skills);
this.gui.job.calc = $('<div title=" Recompense curente " style="position:absolute;top:60px;width:100px;right:1px;height:30px;display:block;;font-weight:bold;text-align:center;" />');
this.gui.job.mainDiv.append(this.gui.job.calc);
this.gui.job.button.click(function () {
if (n.joblist.getMainDiv().is(":visible")) {
n.joblist.close()
} else {
n.joblist.open()
}
}.bind(this));
this.gui.job.search.click(function () {
n.jobSearch()
}.bind(this));
this.gui.job.searchDiv = jQuery("<div />");
if (n.joblist.getMainDiv().is(":visible")) {
n.joblist.close()
}
n.joblist.name = null;
if (isDefined(e) && isDefined(t)) {
var r;
switch (t) {
case"job":
r = TWDB.Jobs.getJobById(e);
r = isDefined(r) ? r.name : null;
break;
case"item":
r = e;
break;
case"default":
r = null;
break
}
if (r !== null) {
n.joblist.name = r
}
}
this.customs.selected = 0;
this.gui.custom.title = jQuery('<div style="position:absolute;top:36px;left:0px;width:210px;height:19px;font-weight:bold;text-align:center;">Alege munca aici >></div>');
this.gui.custom.settings = jQuery('<div title="setări" style="position:absolute;top:35px;right:30px;width:20px;height:20px;background:url(' + TWDB.images.iconSetting + ');cursor:pointer;" />');
this.gui.custom.settings.click(function () {
n.customs.showConfig()
});
this.gui.custom.button = jQuery('<div style="position:absolute;top:35px;right:4px;width:26px;height:20px;background:url(\'/images/window/character/title_editbtn.jpg\') no-repeat scroll 0 0 transparent;cursor:pointer;" title=" Alege munca aici " />');
this.gui.custom.selectbox = new west.gui.Selectbox;
this.gui.custom.selectbox.elContent.css("max-height", "660px");
this.gui.custom.selectbox.setWidth(300).addListener(function (e) {
n.customs.switchCustomJob(e)
});
this.gui.custom.skills = jQuery('<div style="position:absolute;top:60px;left:1px;width:252px;height:30px;display:block;" />');
this.gui.custom.mainDiv = jQuery('<div style="position:absolute;top:0px;left:0px;height:100%;width:100%;" />').hide();
this.gui.custom.mainDiv.append(this.gui.custom.title);
this.gui.custom.mainDiv.append(this.gui.custom.settings);
this.gui.custom.mainDiv.append(this.gui.custom.button);
this.gui.custom.mainDiv.append(this.gui.custom.skills);
this.gui.custom.mainDiv.append(this.gui.custom.calc);
this.gui.custom.button.click(function (e) {
n.gui.custom.selectbox.show(e)
});
this.gui.bag.children().remove();
var o = function (e, t) {
n.showTab(e, t)
};
this.gui.window = wman.open(this.uid, null, "noreload").setMiniTitle("TWDB Cloth Calc").setTitle("tw-db.info Cloth Calc").addTab("Muncă", "Jobs", o).addTab("Îndemânări selectate", "Custom", o).appendToContentPane(this.gui.job.mainDiv).appendToContentPane(this.gui.custom.mainDiv).appendToContentPane(this.gui.cache).appendToContentPane(this.gui.bag).appendToContentPane(this.gui.copyright);
this.gui.window.showLoader();
var u = $('<div title="Salvează poziția " style="width:20px;height:20px;position:absolute;left:0px;top:0px;background:url(\'' + TWDB.images.iconSave + "') no-repeat scroll 0px -20px transparent;cursor:pointer;display:block;\" />").hover(function () {
$(this).css("background-position", "0px 0px")
}, function () {
$(this).css("background-position", "0px -20px")
}).click(function () {
TWDB.Settings.set("clothPos", "custom");
var e = n.gui.window.saveAppearance();
TWDB.Settings.set("clothPosition", {x: e.x, y: e.y});
(new UserMessage("Salvat cu succes", UserMessage.TYPE_SUCCESS)).show()
});
$(this.gui.window.divMain).find(".tw2gui_window_buttons").append(u);
$(this.gui.window.divMain).children(".tw2gui_window_tabbar").css("right", "22px");
var a = this.gui.window.saveAppearance();
switch (TWDB.Settings.get("clothPos", "left")) {
case"left":
a.x = Wear.window.divMain.offsetLeft - 295;
break;
case"custom":
a = TWDB.Settings.get("clothPosition", {x: 0, y: 0});
break;
case"default":
a.x = Wear.window.divMain.offsetLeft + Wear.window.divMain.offsetWidth - 15;
break
}
if (a.x < -20) {
a.x = 0
} else if (a.x > $("body").width() - 150) {
a.x = $("body").width() - 150
}
this.gui.window.restoreAppearance({h: 410, w: 310, x: a.x, y: a.y});
return
},
finishOpening: function () {
this.jobs.mode(2);
this.joblist.init(this);
this.customs.createSelectbox();
if (typeof this.gui.window !== "undefined") {
this.checkCache();
delete this.eventOpen;
var e = function (e) {
TWDB.ClothCalc.jobs.update()
};
EventHandler.unlisten("wear_changed", e);
EventHandler.listen("wear_changed", e);
this.gui.window.hideLoader()
}
},
showTab: function (e, t) {
this.gui.window.activateTab(t);
this.gui.window.showLoader();
this.gui.bag.children().remove();
switch (t) {
case"Jobs":
this.gui.custom.mainDiv.hide();
if (this.jobs.selected !== 0) {
this.jobs.switchJob(this.jobs.selected)
}
this.gui.job.mainDiv.show();
break;
case"Custom":
this.gui.job.mainDiv.hide();
if (this.customs.selected !== 0) {
this.customs.switchCustomJob(this.customs.selected)
}
this.gui.custom.mainDiv.show();
break
}
this.gui.window.hideLoader()
},
getGameData: function (e) {
var t = this;
if (typeof e === "undefined") {
this.getState = {skill: false, items: false, jobs: false};
TWDB.Eventer.set("getSkill", function () {
t.getGameData("skill")
}, 1);
TWDB.Eventer.set("getItems", function () {
t.getGameData("items")
}, 1);
TWDB.Eventer.set("getJobs", function () {
t.getGameData("jobs")
}, 1);
TWDB.DataManager.loadData();
this.getSkill();
this.getJobs();
this.getItems()
} else {
this.getState[e] = true;
var n = true, r;
for (r in this.getState) {
if (!this.getState[r]) {
n = false;
break
}
}
if (n) {
delete this.getState;
TWDB.Eventer.trigger("getGameData")
}
}
},
getSkill: function (e) {
if (typeof e === "undefined") {
var t = this;
setTimeout(function () {
t.getSkill(CharacterSkills.skills)
}, 10);
return
} else {
this.data.skills = {};
var n, r;
for (n in e) {
r = TWDB.ClothCalc._skill2id[n];
this.data.skills[r] = {id: r, val: e[n].points}
}
TWDB.Eventer.trigger("getSkill")
}
},
getItems: function (e) {
if (typeof e === "undefined") {
var t = this;
jQuery.post("game.php?window=inventory", {}, function (e) {
t.getItems(e)
}, "json");
return
} else {
this.data.items = {};
var n, r;
for (n = 0; n < e.wear.length; n++) {
r = ItemManager.get(e.wear[n]);
if (!this.isItemUsable(r.item_id)) {
continue
}
this.data.items[r.item_id] = {id: r.item_id}
}
for (n in Bag.items_by_id) {
r = Bag.items_by_id[n].obj;
if (!this.isItemUsable(r.item_id)) {
continue
}
this.data.items[r.item_id] = {id: r.item_id}
}
TWDB.Eventer.trigger("getItems")
}
},
getJobs: function (e) {
if (typeof e === "undefined") {
var t = this;
jQuery.post("game.php?window=work&mode=index", {}, function (e) {
t.getJobs(e)
}, "json");
return
} else {
this.data.jobs = e;
TWDB.Eventer.trigger("getJobs")
}
},
isItemUsable: function (e, t) {
var n = ItemManager.get(e);
if (typeof n === "undefined") {
return false
}
var r = false;
if (!this.itemHasBonus(n)) {
return false
}
if (n.characterClass !== null && n.characterClass !== Character.charClass) {
return false
}
if (n.characterSex !== null && n.characterSex !== Character.charSex) {
return false
}
if (n.level !== null && n.level > Character.level + Character.itemLevelRequirementDecrease.all + (typeof Character.itemLevelRequirementDecrease[n.type] !== "undefined" ? Character.itemLevelRequirementDecrease[n.type] : 0)) {
return isDefined(t) && t
}
return true
},
itemHasBonus: function (e) {
if (e.type === "left_arm" || e.type === "right_arm") {
return true
}
if (typeof e.set !== "undefined" && e.set !== null) {
return true
}
if (typeof e.speed !== "undefined" && e.speed !== null) {
return true
}
if (typeof e.bonus === "undefined") {
return false
}
var t;
if (typeof e.bonus.skills !== "undefined") {
for (t in e.bonus.skills) {
if (!jQuery.isFunction(e.bonus.skills[t])) {
return true
}
}
}
if (typeof e.bonus.attributes !== "undefined") {
for (t in e.bonus.attributes) {
if (!jQuery.isFunction(e.bonus.attributes[t])) {
return true
}
}
}
if (typeof e.bonus.item !== "undefined") {
for (t in e.bonus.item) {
if (!jQuery.isFunction(e.bonus.item[t])) {
return true
}
}
}
if (typeof e.bonus.fortbattle !== "undefined") {
for (t in e.bonus.fortbattle) {
if (e.bonus.fortbattle[t] > 0) {
return true
}
}
}
if (typeof e.bonus.fortbattlesector !== "undefined") {
for (t in e.bonus.fortbattlesector) {
if (e.bonus.fortbattle[t] > 0) {
return true
}
}
}
return false
},
handleTWDBData: function () {
var e = TWDB.DataManager.getData("twdb");
var t = this;
this.calcdata.items = jQuery.extend(true, {}, t.data.items);
this.calcdata.skills = jQuery.extend(true, {}, t.data.skills);
this.calcdata.time = e.time;
this.calcdata.jobs = e.jobs;
this.calcdata.custom = e.custom;
this.calcdata.loaded = true;
this.calcdata.used = {};
try {
this.jobs.init()
} catch (n) {
TWDB.Error.report(n, "GENERICERROR#; handle Jobs")
}
try {
this.joblist.reset()
} catch (n) {
TWDB.Error.report(n, "GENERICERROR#; handle Jobslist")
}
try {
this.customs.init()
} catch (n) {
TWDB.Error.report(n, "GENERICERROR#; handle Customs")
}
try {
this.setUsedItems()
} catch (n) {
TWDB.Error.report(n, "GENERICERROR#; setUsedItems")
}
TWDB.Cache.save("calcdata", this.calcdata);
this.finishOpening()
},
jobs: {
selected: 0,
base: 1,
basetime: 1,
sort: {list: [], type: "name", order: 1},
setParent: function (e) {
this.parent = e
},
init: function () {
var e = [], t = 0, n = 0, r, i, s;
while (true) {
t++;
i = JobList.getJobById(t);
if (!i) {
n++;
if (n > 5) {
break
}
continue
}
n = 0;
e[i.shortname] = i.id
}
for (r in this.parent.calcdata.jobs) {
i = this.parent.calcdata.jobs[r];
if (typeof e[i.short_name] === "undefined") {
if (i.short_name === "construction") {
i.name = "Construcţie";
i.skills = {};
i.gameid = 0;
i.laborpoints.current = 0;
i.duration = 7200 * Number(this.parent.data.jobs.workspeed);
i.energy = 24
} else {
i.name = "!!".job.short_name;
i.skills = {};
i.gameid = 0;
i.laborpoints.current = 0;
i.duration = 0;
i.energy = 0
}
continue
}
s = JobList.getJobById(e[i.short_name]);
i.name = s.name;
i.skills = s.skills;
i.gameid = s.id;
i.difficulty = s.malus;
i.duration = 0;
i.energy = s.energy;
i.laborpoints.current = 0
}
},
update: function () {
if (isDefined(this.parent.calcdata.jobs[this.selected])) {
var e = this.calcJob(this.selected);
var t = e.name.substring(0, 18) + " [" + e.laborpoints.current + "/" + e.laborpoints.sum + "]";
this.parent.gui.job.title.html(t);
this.parent.jobs.showCur()
}
},
showCur: function () {
if (isDefined(this.selected)) {
var e = this.parent.calcdata.jobs[this.selected];
if (isDefined(e)) {
var t = "";
switch (this.parent.joblist.sort.type) {
case"luck1":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconLuck + '"/> ';
t += " $" + e.values.cur_luck1 + "-" + "$" + e.values.cur_luck2;
break;
case"laborpoints":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconLaborpoints + '"/> ';
t += e.laborpoints.current;
break;
case"experience":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconExperience + '"/> ';
t += e.values.cur_experience + "exp";
break;
case"wages":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconDollar + '"/> ';
t += " $" + e.values.cur_wages;
break;
case"danger":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconDanger + '"/> ';
t += e.values.cur_danger + "%";
break;
case"motivation":
t += '<img style="vertical-align: bottom;" src="' + TWDB.images.iconMoti + '"/> ';
t += e.values.resmotivation * 100 + " (" + Math.round(e.values.motivation * 100) + ")%";
break
}
this.parent.gui.job.calc.html(t)
}
}
},
switchJob: function (e) {
if (typeof this.parent.calcdata.jobs[e] === "undefined" || typeof this.parent.calcdata.jobs[e].cloth === "undefined") {
return
}
var t = this.parent, n = t.calcdata.jobs[e];
if (n.gameid !== 0) {
TWDB.Map.setMinimapJob(n.name);
t.gui.job.search.show()
} else {
t.gui.job.search.hide()
}
this.selected = e;
var r = n.name.substring(0, 18) + " [" + n.laborpoints.current + "/" + n.laborpoints.sum + "]";
t.gui.job.title.html(r);
t.bag.showItems(n.cloth, "jobs");
t.gui.job.skills.children().remove();
var i, s, o;
for (i in n.skills) {
for (s = 0; s < n.skills[i]; s++) {
o = jQuery('<div style="float:left;width;30px;height:30px;" />');
t.gui.job.skills.append(o.append(t.getSkillImg(i, 30)))
}
}
this.showCur()
},
mode: function (e) {
var t = this, n = 2, r = t.parent.data.jobs.jobs, i;
for (i in t.parent.data.jobs.jobs) {
n = Math.min(r[i].durations.length - 1, n)
}
if (n < e) {
return t.mode(0)
}
try {
t.parent.gui.job.mode.unbind("click")
} catch (s) {
}
switch (e) {
case 1:
t.base = 1;
t.basetime = 600;
t.parent.gui.job.mode.css("background-position", "-20px 0px").click(function () {
t.mode(2);
t.parent.joblist.update()
});
break;
case 2:
t.base = 2;
t.basetime = 3600;
t.parent.gui.job.mode.css("background-position", "-40px 0px").click(function () {
t.mode(0);
t.parent.joblist.update()
});
break;
default:
t.base = 0;
t.basetime = 15;
t.parent.gui.job.mode.css("background-position", "0px 0px").click(function () {
t.mode(1);
t.parent.joblist.update()
});
break
}
},
_calcStepFormula: function (e, t, n, r, i, s, o, u, a) {
var f = Math.ceil((i + 1) / 5), l = Math.min(Math.floor(r / f), 15), c = Math.ceil(o / 25) * .25;
return r < 5 * f || r <= i ? Math[e]({
0: 1,
1: 2,
2: 3,
3: 4,
4: 5,
5: 6.25
}[a ? 0 : l] * s * c * u) : Math[t](n(r - i, l) * s * c * u)
},
calcWage: function (e, t, n, r, i) {
return this._calcStepFormula("ceil", "round", function (e) {
return 6.25 * Math.pow(e, .05)
}, e, t, n, r, i)
},
calcExp: function (e, t, n, r, i) {
return this._calcStepFormula("ceil", "ceil", function (e) {
return 6.25
}, e, t, n, r, i)
},
calcLuck: function (e, t, n, r, i) {
return this._calcStepFormula("floor", "floor", function (e) {
return 6.25 * Math.pow(e, .2)
}, e, t, (.9 * n + 5) / 1.25, 100, i)
},
calcProductRate: function (e, t, n, r, i) {
return this._calcStepFormula("round", "round", function (e, t) {
return t < 15 ? 6.25 : 9.375
}, e, t, n, 100, i)
},
calcDanger: function (e, t, n, r, i) {
return this._calcStepFormula("floor", "floor", function (e) {
return Math.pow(e, -.2)
}, e, t, n, 100, i, true)
},
addPremium: function (e) {
var t = Number(Premium.hasBonus("character")), n = Number(Premium.hasBonus("money")), r = 1, i = 1, s = 1;
if (n) {
r *= 1.5
}
if (Character.charClass === "worker") {
i = t ? 1.1 : 1.05
}
if (Character.charClass === "adventurer") {
s = t ? .8 : .9
}
e.values.cur_wages = Math.round(e.values.cur_wages * r);
e.values.cur_experience = Math.round(e.values.cur_experience * i);
e.values.cur_luck2 = Math.floor(e.values.cur_luck2 * r);
e.values.cur_danger = Math.round(e.values.cur_danger * s);
e.values.wages = Math.round(e.values.wages * r);
e.values.experience = Math.round(e.values.experience * i);
e.values.luck2 = Math.floor(e.values.luck2 * r);
e.values.danger = Math.round(e.values.danger * s);
return e
},
calcJob: function (e) {
var t = this.parent.calcdata.jobs[e], n = t.difficulty, r = JobList.getJobById(t.gameid), i;
t.values = {};
t.sp = 0;
t.max_sp = 0;
t.laborpoints.skills = 0;
for (i in t.skills) {
t.laborpoints.skills += Number(t.skills[i]) * Number(CharacterSkills.skills[i].points)
}
t.laborpoints.sum = t.laborpoints.cloth;
t.laborpoints.sum += t.laborpoints.skills;
t.laborpoints.sum -= t.difficulty + 1;
if (isDefined(r)) {
t.laborpoints.current = r.calcJobPoints() - (r.malus + 1);
t.sp = r.calcJobPoints();
t.max_sp = t.laborpoints.skills + t.laborpoints.cloth
} else {
t.laborpoints.current = 0
}
if (t.gameid !== 0) {
t.values.motivation = this.parent.data.jobs.jobs[t.gameid].motivation;
t.values.resmotivation = Math.ceil(this.parent.data.jobs.jobs[t.gameid].motivation * 4) / 4
} else {
t.values.motivation = 0;
t.values.resmotivation = 0
}
t.values.name = t.name;
t.values.laborpoints = Number(t.laborpoints.sum);
t.values.duration = Number(this.basetime);
var s = 1;
switch (this.base) {
case 0:
s = .1;
break;
case 1:
s = .47;
break;
default:
break
}
var o = t.values.motivation * 100;
t.values.cur_wages = this.calcWage(t.sp, n, t.wages, o, s);
t.values.cur_experience = this.calcExp(t.sp, n, t.experience, o, s);
t.values.cur_luck1 = this.calcLuck(t.sp, n, t.luck, o, 1);
t.values.cur_luck2 = this.calcLuck(t.sp, n, t.luck, o, 3);
t.values.cur_danger = this.calcDanger(t.sp, n, t.danger, o, 1);
t.values.wages = this.calcWage(t.max_sp, n, t.wages, t.values.resmotivation * 100, s);
t.values.experience = this.calcExp(t.max_sp, n, t.experience, t.values.resmotivation * 100, s);
t.values.luck1 = this.calcLuck(t.max_sp, n, t.luck, t.values.resmotivation * 100, 1);
t.values.luck2 = this.calcLuck(t.max_sp, n, t.luck, t.values.resmotivation * 100, 3);
t.values.danger = this.calcDanger(t.max_sp, n, t.danger, t.values.resmotivation * 100, 1);
return this.addPremium(t)
},
getJobPopup: function (e) {
var t = this.parent.calcdata.jobs[e].values, n;
t.laborpoints = this.parent.calcdata.jobs[e].laborpoints.sum;
n = "<table>" + '<tr><td colspan="4" style="font-weight:bold;text-align:center;font-size:11px;">' + this.parent.calcdata.jobs[e].name + "</td></tr>" + '<tr><td><img src="' + TWDB.images.iconExperience + '" title=" Experienţă " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.experience + "</td>" + '<td><img src="' + TWDB.images.iconDollar + '" title=" Salariu " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.wages + "</td></tr>" + '<tr><td><img src="' + TWDB.images.iconLuck + '" title=" Noroc " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.luck1 + "-" + t.luck2 + "</td>" + '<td><img src="' + TWDB.images.iconDanger + '" title=" Pericol " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.danger + "</td></tr>" + '<tr><td><img src="' + TWDB.images.iconLaborpoints + '" title=" ?laborpoints " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.laborpoints + "</td>" + '<td><img src="' + TWDB.images.iconClock + '" title=" Durată " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.duration + "</td></tr>" + '<tr><td><img src="' + TWDB.images.iconMoti + '" title=" Motivație " height="15px" width="15px" /></td><td style="font-size:10px;vertical-align:bottom;">' + t.resmotivation * 100 + " (" + Math.round(t.motivation * 100) + ")%</td><td></td><td></td></tr>" + "</table>";
return n
}
},
joblist: {
ready: false,
gui: {},
elements: [],
focused: 0,
sort: {type: "name", order: 1},
all: false,
name: null,
reset: function () {
this.ready = false;
delete this.elements;
this.elements = [];
this.getMainDiv().children().remove();
this.getMainDiv().append('<style type="text/css">.TWDB_hide{display:none;}.TWDB_filter{display:none;}</style>');
this.init(this.parent)
},
init: function (e) {
if (this.ready) {
return
}
this.ready = true;
this.parent = e;
if (!this.gui.main) {
this.gui.main = this.getMainDiv()
}
this.gui.result = jQuery('<div class="tw2gui_jobsearchbar_allresults" style="width:285px;" />');
this.gui.input = (new west.gui.Textfield).maxlength(32).setClass4Input("tw2gui_jobsearch_string").setWidth(265);
this.gui.button = jQuery('<div class="tw2gui_jobsearch_showall" style="display:block;cursor:pointer;"></div>');
this.gui.scrollpane = new west.gui.Scrollpane;
jQuery(this.gui.scrollpane.getMainDiv()).css({width: "285px", height: "250px"});
var t, n, r, i;
for (t in e.calcdata.jobs) {
n = e.calcdata.jobs[t];
r = jQuery("<p>" + n.name + "</p>");
i = {};
i.dom = r;
i.id = t;
i.str = "§" + n.name.toUpperCase() + "§";
if (n.gameid !== 0) {
var s = JobList.getJobById(n.gameid), o;
for (o in s.yields) {
if (isNaN(o)) {
continue
}
i.str += ItemManager.get(o).name.toUpperCase() + "§"
}
}
this.elements.push(i)
}
this.gui.main.append(jQuery('<div style="position:relative;top:0;left:0;width:305px" />').append(this.gui.input.getMainDiv()).append(this.gui.button)).append(this.gui.result);
this.update();
if (this.name) {
this.open(this.name)
}
},
open: function (e) {
var t = this;
this.gui.result.show();
jQuery(this.gui.input.getMainDiv()).unbind().keyup(function (e) {
t.keyHandler(e)
});
jQuery(this.gui.input.getField()).unbind().focus(function () {
t.gui.result.show()
});
delete this.gui.scrollpane;
this.gui.scrollpane = new west.gui.Scrollpane;
jQuery(this.gui.scrollpane.getMainDiv()).css({width: "285px", height: "250px"});
var n = true;
jQuery.each(this.elements, function (e, r) {
r.dom.unbind();
t.updateJob(e);
if (n && r.dom.is(":visible")) {
this.focused = e;
r.dom.addClass("focused");
n = false
} else {
r.dom.removeClass("focused")
}
r.dom.addMousePopup(TWDB.ClothCalc.jobs.getJobPopup(r.id));
r.dom.click(function (e) {
return function () {
t.close();
TWDB.ClothCalc.jobs.switchJob(e)
}
}(r.id));
t.gui.scrollpane.appendContent(r.dom)
});
this.gui.result.children().remove();
this.gui.result.append(this.gui.scrollpane.getMainDiv());
this.gui.button.click(function () {
if (t.gui.result.is(":visible")) {
t.gui.result.hide()
} else {
jQuery(t.gui.input.getField()).focus()
}
});
this.gui.main.show();
if (isDefined(e)) {
jQuery(this.gui.input.getField()).attr("value", e);
this.search(e, true)
}
},
search: function (e, t) {
var n = new RegExp(isDefined(t) ? "§" + e.toUpperCase() + "§" : e.toUpperCase(), "i");
var r = true;
var i = this;
var s = [];
jQuery.each(this.elements, function (e, t) {
t.dom.removeClass("focused");
if (n.test(t.str)) {
t.dom.removeClass("TWDB_filter");
if (t.dom.is(":visible")) {
s.push(t.dom);
if (r) {
i.focused = e;
t.dom.addClass("focused");
r = false
}
}
} else {
t.dom.addClass("TWDB_filter")
}
});
if (s.length === 1) {
s[0].click()
}
},
keyHandler: function (e) {
var t = e.keyCode || e.which, n;
if (t === 38 || t === 40) {
if (t === 38) {
this.elements[this.focused].dom.removeClass("focused");
for (n = 0; n < this.elements.length; n++) {
this.focused--;
if (this.focused < 0) {
this.focused = this.elements.length - 1
}
if (this.elements[this.focused].dom.is(":visible")) {
this.elements[this.focused].dom.addClass("focused");
break
}
}
} else {
this.elements[this.focused].dom.removeClass("focused");
for (n = 0; n < this.elements.length; n++) {
this.focused++;
if (this.focused >= this.elements.length) {
this.focused = 0
}
if (this.elements[this.focused].dom.is(":visible")) {
this.elements[this.focused].dom.addClass("focused");
break
}
}
}
var r = this.elements[this.focused].dom.offset().top, i = jQuery(this.gui.scrollpane.clipPane).offset().top, s;
if (r - i > 180 || i - r > 0) {
s = (r - i - 90) / 16;
this.gui.scrollpane.scrollTo(0, s)
}
} else if (t === 13) {
this.elements[this.focused].dom.click()
} else {
this.search(this.gui.input.getValue())
}
},
order: function (e) {
function t(t, n) {
var r = TWDB.ClothCalc.calcdata.jobs[t.id].values[e];
var s = TWDB.ClothCalc.calcdata.jobs[n.id].values[e];
return r > s ? i : -i
}
function n(t, n) {
var r = TWDB.ClothCalc.calcdata.jobs[t.id].values[e];
var s = TWDB.ClothCalc.calcdata.jobs[n.id].values[e];
return r * 1 > s * 1 ? i : -i
}
var r = true;
if (e) {
if (e === this.sort.type) {
this.sort.order *= -1
} else {
r = false;
if (e === "danger" || e === "name") {
this.sort.order = 1
} else {
this.sort.order = -1
}
this.sort.type = e
}
}
var i = this.sort.order, e = this.sort.type, s = this, o = true;
if (e === "name") {
this.elements.sort(t)
} else {
this.elements.sort(n)
}
jQuery.each(this.elements, function (e, t) {
if (!r) {
s.updateJob(e)
}
if (o && t.dom.is(":visible")) {
this.focused = e;
t.dom.addClass("focused");
o = false
} else {
t.dom.removeClass("focused")
}
s.gui.scrollpane.appendContent(t.dom)
});
this.parent.jobs.showCur()
},
updateJob: function (e) {
var t = this.elements[e], n = TWDB.ClothCalc.jobs.calcJob(t.id), r = n.name;
t.dom.removeClass("TWDB_hide");
r += " [" + n.laborpoints.current + "/" + n.laborpoints.sum + "] ";
switch (this.sort.type) {
case"luck1":
r += " $" + n.values.luck1 + "-" + "$" + n.values.luck2;
break;
case"laborpoints":
break;
case"experience":
r += n.values.experience + "exp";
break;
case"wages":
r += "$" + n.values.wages;
break;
case"danger":
r += n.values.danger + "%";
break;
case"duration":
r += n.values.duration + " sec";
break;
case"motivation":
r += n.values.resmotivation * 100 + " (" + Math.round(n.values.motivation * 100) + ")%";
break
}
t.dom.html(r);
if (n.laborpoints.current < 0) {
if (n.laborpoints.sum < 0) {
if (JobList.getJobById(t.id).level <= Character.level) {
t.dom.css("color", "blue")
} else {
t.dom.css("color", "red");
if (!this.all) {
t.dom.addClass("TWDB_hide")
}
}
} else {
t.dom.css("color", "orange")
}
} else {
t.dom.css("color", "#333")
}
return n
},
update: function () {
var e = this;
jQuery.each(this.elements, function (t) {
e.updateJob(t)
});
this.order()
},
getMainDiv: function () {
if (!this.gui.main) {
this.gui.main = jQuery('<div style="position:absolute;left: 255px; top: 30px; display: none;" />').append('<style type="text/css">.TWDB_hide{display:none;}.TWDB_filter{display:none;}</style>')
}
return this.gui.main
},
close: function () {
this.gui.main.hide()
}
},
customs: {
selected: 0, setParent: function (e) {
this.parent = e
}, init: function () {
var e, t;
for (e in this.parent.calcdata.custom) {
try {
t = this.parent.calcdata.custom[e];
switch (t.type) {
case"speed":
t.skills = ["ride"];
if (!t.laborpoints) {
var n = t.cloth && t.cloth[1] && t.cloth[1].other && t.cloth[1].other[1] || 0, r = t.boni && t.boni.other && t.boni.other[1] || 0;
r -= n;
n += t.boni && t.boni.skill && t.boni.skill[2] || 0;
n += t.boni && t.boni.skill && t.boni.skill[10] || 0;
n += CharacterSkills.skills.ride.points;
t.laborpoints = Math.round((100 + n) * (1 + r / 100))
}
t.laborpoints += "%";
break;
case"regen":
t.skills = ["health"];
t.laborpoints = "";
break;
case"fort":
var i, s = {}, o = Character.charClass === "soldier" ? Premium.hasBonus("character") ? 1.5 : 1.25 : 1, u = Character.charClass == "worker" ? Premium.hasBonus("character") ? 1.4 : 1.2 : 1, a = (Number(t.boni.other[11]) || 0) + (Number(t.boni.other[17]) || 0), f = (Number(t.boni.other[12]) || 0) + (Number(t.boni.other[18]) || 0);
if (t.para.type === 0) {
s.aim = CharacterSkills.skills.aim.points + (typeof t.boni.skill[3] !== "undefined" ? t.boni.skill[3] : 0) + (typeof t.boni.skill[15] !== "undefined" ? t.boni.skill[15] : 0);
s.hide = CharacterSkills.skills.hide.points + (typeof t.boni.skill[2] !== "undefined" ? t.boni.skill[2] : 0) + (typeof t.boni.skill[13] !== "undefined" ? t.boni.skill[13] : 0);
s.dodge = CharacterSkills.skills.dodge.points + (typeof t.boni.skill[2] !== "undefined" ? t.boni.skill[2] : 0) + (typeof t.boni.skill[12] !== "undefined" ? t.boni.skill[12] : 0);
s.leadership = CharacterSkills.skills.leadership.points + (typeof t.boni.skill[4] !== "undefined" ? t.boni.skill[4] : 0) + (typeof t.boni.skill[20] !== "undefined" ? t.boni.skill[20] : 0);
s.health = CharacterSkills.skills.health.points + (typeof t.boni.skill[1] !== "undefined" ? t.boni.skill[1] : 0) + (typeof t.boni.skill[9] !== "undefined" ? t.boni.skill[9] : 0);
i = 100 + (Character.level - 1) * Character.lifePointPerHealthSkill + s.health * (Character.lifePointPerHealthSkill + Character.lifePointPerHealthSkillBonus) + " | ";
i += Number((25 + Math.pow(s.leadership * o, .5) + Math.pow(s.aim, .5) + Math.pow(s.hide, .6) + a) * u).round(2) + " | ";
i += Number((10 + Math.pow(s.leadership * o, .5) + Math.pow(s.dodge, .5) + Math.pow(s.hide, .6) + f) * u).round(2)
} else {
s.aim = CharacterSkills.skills.aim.points + (typeof t.boni.skill[3] !== "undefined" ? t.boni.skill[3] : 0) + (typeof t.boni.skill[15] !== "undefined" ? t.boni.skill[15] : 0);
s.pitfall = CharacterSkills.skills.pitfall.points + (typeof t.boni.skill[3] !== "undefined" ? t.boni.skill[3] : 0) + (typeof t.boni.skill[17] !== "undefined" ? t.boni.skill[17] : 0);
s.dodge = CharacterSkills.skills.dodge.points + (typeof t.boni.skill[2] !== "undefined" ? t.boni.skill[2] : 0) + (typeof t.boni.skill[12] !== "undefined" ? t.boni.skill[12] : 0);
s.leadership = CharacterSkills.skills.leadership.points + (typeof t.boni.skill[4] !== "undefined" ? t.boni.skill[4] : 0) + (typeof t.boni.skill[20] !== "undefined" ? t.boni.skill[20] : 0);
s.health = CharacterSkills.skills.health.points + (typeof t.boni.skill[1] !== "undefined" ? t.boni.skill[1] : 0) + (typeof t.boni.skill[9] !== "undefined" ? t.boni.skill[9] : 0);
i = 100 + (Character.level - 1) * Character.lifePointPerHealthSkill + s.health * (Character.lifePointPerHealthSkill + Character.lifePointPerHealthSkillBonus) + " | ";
i += Number((25 + Math.pow(s.leadership * o, .5) + Math.pow(s.aim, .5) + Math.pow(s.pitfall, .6) + a) * u).round(2) + " | ";
i += Number((10 + Math.pow(s.leadership * o, .5) + Math.pow(s.dodge, .5) + Math.pow(s.pitfall, .6) + f) * u).round(2)
}
t.skills = ["health", "attacker", "defender"];
t.laborpoints = i;
break;
case"duel":
t.skills = [];
var i = 0, l, c;
for (l in t.para) {
c = Math.floor(l / 5);
if (typeof t.boni.skill[l] !== "undefined") {
i += t.boni.skill[l]
}
if (typeof t.boni.skill[c] !== "undefined") {
i += t.boni.skill[c]
}
if (typeof TWDB.ClothCalc._id2skill[l] !== "undefined") {
t.skills.push(TWDB.ClothCalc._id2skill[l]);
if (typeof CharacterSkills.skills[TWDB.ClothCalc._id2skill[l]] !== "undefined") {
i += CharacterSkills.skills[TWDB.ClothCalc._id2skill[l]].points
} else if (typeof CharacterSkills.attributes[TWDB.ClothCalc._id2skill[l]] !== "undefined") {
i += CharacterSkills.attributes[TWDB.ClothCalc._id2skill[l]].points
}
}
}
t.laborpoints = i;
break;
case"custom":
t.skills = [];
var i = 0, l, c;
for (l in t.para) {
c = Math.floor(l / 5);
if (typeof t.boni.skill[l] !== "undefined") {
i += t.boni.skill[l]
}
if (typeof t.boni.skill[c] !== "undefined") {
i += t.boni.skill[c]
}
if (typeof TWDB.ClothCalc._id2skill[l] !== "undefined") {
t.skills.push(TWDB.ClothCalc._id2skill[l]);
if (typeof CharacterSkills.skills[TWDB.ClothCalc._id2skill[l]] !== "undefined") {
i += CharacterSkills.skills[TWDB.ClothCalc._id2skill[l]].points
} else if (typeof CharacterSkills.attributes[TWDB.ClothCalc._id2skill[l]] !== "undefined") {
i += CharacterSkills.attributes[TWDB.ClothCalc._id2skill[l]].points
}
}
}
t.laborpoints = i;
break;
default:
break
}
} catch (h) {
TWDB.Error.report(h, "GENERICERROR#; handle Customs")
}
}
}, calc: function () {
var e = this.parent.calcdata.custom[this.selected];
return isDefined(e) && e.type === "fort" ? "0|0|0" : ""
}, createSelectbox: function () {
if (!this.parent.gui.custom.selectbox) {
return
}
var e, t;
this.parent.gui.custom.selectbox.elContent.empty();
this.parent.gui.custom.selectbox.value = null;
this.parent.gui.custom.selectbox.items = [];
for (e in this.parent.calcdata.custom) {
t = this.parent.calcdata.custom[e].name + " [" + this.parent.calcdata.custom[e].laborpoints + "]";
this.parent.gui.custom.selectbox.addItem(e, t)
}
this.switchCustomJob(this.selected)
}, switchCustomJob: function (e) {
if (isDefined(this.parent.calcdata.custom[e]) && isDefined(this.parent.calcdata.custom[e].cloth)) {
this.parent.customs.selected = e;
var t = " [" + this.parent.calcdata.custom[e].laborpoints + "]";
t = this.parent.calcdata.custom[e].name.substring(0, 35 - t.length) + t;
this.parent.gui.custom.title.html(t);
this.parent.bag.showItems(this.parent.calcdata.custom[e].cloth, "custom");
this.showSkill()
}
}, showSkill: function () {
this.parent.gui.custom.skills.children().remove();
if (!isDefined(this.parent.calcdata.custom[this.parent.customs.selected])) {
return
}
if (this.parent.calcdata.custom[this.parent.customs.selected].type == "fort") {
return
}
var e = this.calc();
var t = String(e).split("|");
for (var n = 0; n < this.parent.calcdata.custom[this.selected].skills.length; n++) {
var r = jQuery('<div style="float:left;width:30px;height:30px;" />');
r.append(this.parent.getSkillImg(this.parent.calcdata.custom[this.selected].skills[n], 30));
this.parent.gui.custom.skills.append(r);
if (this.parent.calcdata.custom[this.parent.customs.selected].type == "fort" && typeof t[n] !== "undefined") {
var i = jQuery('<div style="float:left;height:25px;padding:5px 10px 0px 5px ;font-weight:bold;">' + t[n] + "</div>");
this.parent.gui.custom.skills.append(i)
}
}
if (this.parent.calcdata.custom[this.parent.customs.selected].type !== "fort") {
var i = jQuery('<div style="float:left;height:25px;padding:5px 0px 0px 5px ;font-weight:bold;">' + e + "</div>");
this.parent.gui.custom.skills.append(i)
}
}, showConfig: function () {
var e = this;
var t = jQuery('<div title="editează" style="display:inline-block;vertical-align:top;height:16px;width:16px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/window/messages/head-icons.png') repeat scroll 0 16px transparent;\" />");
var n = jQuery('<div title="şterge" style="display:inline-block;vertical-align:top;height:16px;width:16px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/icons/delete.png') repeat scroll 0px 0px transparent;\" />");
var r = jQuery('<div title="adaugă" style="display:block;margin-top:2px;vertical-align:top;height:20px;width:25px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/window/messages/icons.png') repeat scroll 72px -5px transparent;\" />");
var i = jQuery("<div />");
for (var s in this.parent.data.custom) {
var o = this.parent.data.custom[s];
var u = jQuery('<div style="display:inline-block;vertical-align:top;height:16px;width:300px;overflow:hidden;" />').html(o.name);
var a = t.clone(false);
var f = n.clone(false);
var l = jQuery('<div style="display:block;height:18px;padding: 3px 0px 0px 0px;border-bottom: 1px solid #666" />').append(u).append(a).append(f);
i.append(l);
var c = function (t) {
return function () {
e.editConfig(t)
}
}(s);
a.click(c);
var c = function (t) {
return function () {
e.deleteConfig(t)
}
}(s);
f.click(c)
}
var h = 0;
for (var s in this.parent.data.custom) {
h++
}
if (h < 15) {
i.append(r);
r.click(function () {
e.addConfig()
})
}
this.parent.gui.custom.config = new west.gui.Dialog("Îndemânări selectate", i);
this.parent.gui.custom.config.addButton("ok", function () {
e.parent.checkCache()
});
this.parent.gui.custom.config.show()
}, addConfig: function () {
var e = 0;
for (var t in this.parent.data.custom) {
e++
}
if (e >= 15) {
(new UserMessage("prea multe intrări, doar zece sunt permise", UserMessage.TYPE_ERROR)).show()
} else {
e++;
this.editConfig(e)
}
}, htmlUnEscape: function (e) {
return String(e).replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">")
}, htmlEscape: function (e) {
return String(e).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">")
}, editConfig: function (e, t) {
if (typeof t == "undefined") {
var n = this;
var r = "";
var i = "";
var s = "adaugă - ";
if (typeof this.parent.data.custom[e] !== "undefined") {
s = "editează - ";
var r = this.parent.data.custom[e].name;
var i = JSON.stringify({
type: this.parent.data.custom[e].type,
para: this.parent.data.custom[e].para
})
}
this.tmp = {name: r, code: i};
this.parent.gui.custom.name = (new west.gui.Textfield("twdb_cc_custom_name")).setSize(30).setValue(this.htmlUnEscape(r));
this.parent.gui.custom.code = (new west.gui.Textfield("twdb_cc_custom_code")).setSize(30).setValue(i);
var o = jQuery('<table width="400px" />');
o.append(jQuery("<tr />").append('<td style="vertical-align:middle">Nume:</td>').append(jQuery("<td />").append(this.parent.gui.custom.name.getMainDiv())));
o.append(jQuery("<tr />").append('<td style="vertical-align:middle">Cod:</td>').append(jQuery("<td />").append(this.parent.gui.custom.code.getMainDiv())));
o.append('<tr><td colspan="2">vă rugăm să mergeţi la TW-db.info pentru a obţine fragmentele de cod pentru a le introduce aici <a href="https://tw-db.info/?strana=calc" target="_blank">tw-db.info Calculator</a></td></tr>');
var o = new west.gui.Dialog(s + "Îndemânări selectate", o);
o.addButton("ok", function () {
return n.editConfig(e, true)
});
o.addButton("cancel");
o.show()
} else {
var u = function (e) {
(new UserMessage("inserările făcute sunt incorecte: " + e, UserMessage.TYPE_ERROR)).show();
return false
};
if (this.parent.gui.custom.name.getValue() == "") {
return u("gol Nume")
}
if (this.parent.gui.custom.code.getValue() == "") {
return u("gol Cod [1]")
}
if (this.parent.gui.custom.name.getValue() == this.tmp.name && this.parent.gui.custom.code.getValue() == this.tmp.code) {
return true
}
try {
var i = jQuery.parseJSON(this.parent.gui.custom.code.getValue())
} catch (a) {
return u("greşit Cod [2]")
}
if (typeof i.type == "undefined" || typeof i.para == "undefined") {
return u("greşit Cod [3]")
}
var f = 0;
for (var l in i.para) {
f++
}
switch (i.type) {
case"speed":
case"regen":
if (f !== 0) {
return u("greşit Cod [4]")
}
break;
case"fort":
if (typeof i.para.type == "undefined" || typeof i.para.att == "undefined" || typeof i.para.def == "undefined" || typeof i.para.health == "undefined") {
return u("greşit Cod [5]")
}
if (i.para.type !== 1 && i.para.type !== 0) {
return u("greşit Cod [6]")
}
if (!jQuery.isNumeric(i.para.att) || i.para.att < 0) {
return u("greşit Cod [7]")
}
if (!jQuery.isNumeric(i.para.def) || i.para.def < 0) {
return u("greşit Cod [8]")
}
if (!jQuery.isNumeric(i.para.health) || i.para.health < 0) {
return u("greşit Cod [9]")
}
break;
case"duel":
case"custom":
if (f <= 0) {
return u("greşit Cod [10]")
}
break;
default:
return u("greşit Cod [11]")
}
delete this.tmp;
this.parent.data.custom[e] = {
id: Number(e),
type: i.type,
para: i.para,
name: this.htmlEscape(this.parent.gui.custom.name.getValue())
};
this.parent.gui.custom.config.hide();
this.showConfig();
TWDB.Settings.set("custom", this.parent.data.custom)
}
}, deleteConfig: function (e, t) {
if (typeof t == "undefined") {
var n = this;
var r = new west.gui.Dialog("şterge - Îndemânări selectate", "şterge: " + this.parent.data.custom[e].name + "?");
r.addButton("ok", function () {
n.deleteConfig(e, true)
});
r.addButton("cancel");
r.show()
} else {
var i = this.parent.data.custom;
delete i[e];
this.parent.data.custom = {};
var s = 0;
for (var e in i) {
s++;
this.parent.data.custom[s] = i[e];
this.parent.data.custom[s].id = s
}
this.parent.gui.custom.config.hide();
this.showConfig();
TWDB.Settings.set("custom", this.parent.data.custom)
}
}
},
getSkillImg: function (e, t) {
var n = 1;
var r = 1;
var i = 0;
switch (e) {
case"build":
var s = Game.cdnURL + "/images/skill/skills_strength.png";
r = 2;
break;
case"punch":
var s = Game.cdnURL + "/images/skill/skills_strength.png";
i = 1;
r = 2;
break;
case"tough":
var s = Game.cdnURL + "/images/skill/skills_strength.png";
i = 2;
r = 2;
break;
case"endurance":
var s = Game.cdnURL + "/images/skill/skills_strength.png";
i = 3;
r = 2;
break;
case"health":
var s = Game.cdnURL + "/images/skill/skills_strength.png";
i = 4;
r = 2;
break;
case"ride":
var s = Game.cdnURL + "/images/skill/skills_flexibility.png";
r = 2;
break;
case"reflex":
var s = Game.cdnURL + "/images/skill/skills_flexibility.png";
i = 1;
r = 2;
break;
case"dodge":
var s = Game.cdnURL + "/images/skill/skills_flexibility.png";
i = 2;
r = 2;
break;
case"hide":
var s = Game.cdnURL + "/images/skill/skills_flexibility.png";
i = 3;
r = 2;
break;
case"swim":
var s = Game.cdnURL + "/images/skill/skills_flexibility.png";
i = 4;
r = 2;
break;
case"aim":
var s = Game.cdnURL + "/images/skill/skills_dexterity.png";
r = 2;
break;
case"shot":
var s = Game.cdnURL + "/images/skill/skills_dexterity.png";
i = 1;
r = 2;
break;
case"pitfall":
var s = Game.cdnURL + "/images/skill/skills_dexterity.png";
i = 2;
r = 2;
break;
case"finger_dexterity":
var s = Game.cdnURL + "/images/skill/skills_dexterity.png";
i = 3;
r = 2;
break;
case"repair":
var s = Game.cdnURL + "/images/skill/skills_dexterity.png";
i = 4;
r = 2;
break;
case"leadership":
var s = Game.cdnURL + "/images/skill/skills_charisma.png";
r = 2;
break;
case"tactic":
var s = Game.cdnURL + "/images/skill/skills_charisma.png";
i = 1;
r = 2;
break;
case"trade":
var s = Game.cdnURL + "/images/skill/skills_charisma.png";
i = 2;
r = 2;
break;
case"animal":
var s = Game.cdnURL + "/images/skill/skills_charisma.png";
i = 3;
r = 2;
break;
case"appearance":
var s = Game.cdnURL + "/images/skill/skills_charisma.png";
i = 4;
r = 2;
break;
case"strength":
var s = Game.cdnURL + "/images/window/skills/circle_strength.png";
break;
case"flexibility":
var s = Game.cdnURL + "/images/window/skills/circle_flexibility.png";
break;
case"dexterity":
var s = Game.cdnURL + "/images/window/skills/circle_dexterity.png";
break;
case"charisma":
var s = Game.cdnURL + "/images/window/skills/circle_charisma.png";
break;
case"attacker":
var s = TWDB.images.attacker;
break;
case"defender":
var s = TWDB.images.defender;
break;
default:
return jQuery("<div />")
}
var o = "";
if (typeof CharacterSkills.skills[e] !== "undefined") {
var o = CharacterSkills.skills[e].name
} else if (typeof CharacterSkills.attributes[e] !== "undefined") {
var o = CharacterSkills.attributes[e].name
}
s = '<img src="' + s + '" height="' + t * r + '" title="' + o + '" style="margin-left:-' + i * t + 'px" />';
s = jQuery(s);
var u = '<div style="display:block;overflow:hidden;width:' + t * n + "px;height:" + t + 'px;"/>';
u = jQuery(u);
return u.append(s)
},
bag: {
stack: {}, interval: false, setParent: function (e) {
this.parent = e
}, showItems: function (e, t) {
this.parent.gui.bag.children().remove();
this.items = {};
var n = this, r = false, i = function (e) {
var r = (new tw2widget.InventoryItem(ItemManager.get(e))).setCharacter(Character);
var i = r.getMainDiv();
var s = function (e) {
return function () {
n.click(r, e, t)
}
}(e);
jQuery(i).removeAttr("id").children(".TWDBbuyTip, .TWDBsellTip, .TWDBcollector").remove().end().children("img:first-child").removeAttr("id").end().click(s).appendTo(n.parent.gui.bag);
n.items[e] = jQuery(i)
}, s, o;
for (s in e) {
if (typeof s === "function") {
break
}
o = e[s].id;
i(o);
r = r || ItemManager.get(o).type === "animal"
}
this.parent.gui.bag.append(jQuery((new west.gui.Button(Inventory.guiElements.instantWearButton.caption.text, n.autoEquip, n, null)).getMainDiv()).css({
position: "absolute",
right: "8px",
bottom: "5px"
}));
var u = TWDB.DataManager.getAnimals();
if (!r && u.length > 0) {
i(u[0]["id"])
}
this.wear()
}, autoEquip: function () {
var e;
for (e in this.items) {
if (this.items.hasOwnProperty(e)) {
jQuery(this.items[e]).click()
}
}
}, click: function (e, t, n) {
if (Bag.getItemByItemId(t) === undefined) {
return false
}
Wear.carry(e);
this.stack[t] = e;
var r = this, i;
if (this.interval === false) {
switch (n) {
case"jobs":
i = function () {
r.wear();
r.parent.jobs.update();
r.parent.joblist.update()
};
break;
case"custom":
i = function () {
r.wear();
r.parent.customs.showSkill()
};
break
}
TWDB.Eventer.set("carryChecker", i, 1);
this.interval = setInterval(function () {
r.carry()
}, 100)
}
}, carry: function () {
var e = 0, t, n;
for (t in this.stack) {
n = this.stack[t];
if (n === undefined || n.getImgEl().css("opacity") === "1") {
delete this.stack[t]
} else {
e++
}
}
if (e === 0) {
clearInterval(this.interval);
this.interval = false;
TWDB.Eventer.trigger("carryChecker")
}
}, wear: function () {
var e, t;
for (e in Wear.wear) {
t = Wear.wear[e].getId();
if (typeof this.items[t] !== "undefined") {
this.items[t].css("opacity", "0.5")
}
}
}
},
setUsedItems: function () {
for (var e in this.calcdata.jobs) {
for (var t in this.calcdata.jobs[e].cloth) {
var n = this.calcdata.jobs[e].cloth[t].id;
if (typeof (this.calcdata.used[n] == "undefined")) {
this.calcdata.used[n] = 1
} else {
this.calcdata.used[n]++
}
}
}
for (var r in this.calcdata.custom) {
for (var t in this.calcdata.custom[r].cloth) {
var n = this.calcdata.custom[r].cloth[t].id;
if (typeof (this.calcdata.used[n] == "undefined")) {
this.calcdata.used[n] = 1
} else {
this.calcdata.used[n]++
}
}
}
},
jobSearch: function () {
var e = this;
if (this.jobs.selected == 0) {
return
}
if (this.gui.job.searchDiv.parent().length) {
this.jobs.switchJob(this.jobs.selected);
return
}
this.gui.bag.children().remove();
var t = TWDB.Map.getNearestJob(this.jobs.selected);
var n = 4;
var r = jQuery("<table />");
for (var i = 0; i < t.length; i++) {
if (i === n) {
break
}
var s = t[i];
var o = "rotate(" + s.angle + "deg);";
var u = jQuery("<tr />");
u.append('<td style="text-align:left;vertical-align:middle">' + s.time.formatDuration() + "</td>");
u.append(jQuery('<td style="text-align:left;vertical-align:middle">').append(jQuery('<img src="' + TWDB.images.arrow + '" title="Direcţie" style="cursor:pointer;-moz-transform: ' + o + "-webkit-transform:" + o + "-rotat-transform:" + o + "-ms-transform:" + o + "transform:" + o + '" />').click(function (e, t) {
return function () {
Map.center(e, t)
}
}(s.x, s.y))));
var a = jQuery("<td />");
var f = new west.gui.Button("Deschide", function (e, t, n) {
return function () {
TWDB.Jobs.openJob(e, t, n)
}
}(e.jobs.selected, s.x, s.y));
jQuery(f.divMain).css({"min-width": "50px", "max-width": "80px"});
jQuery(f.divMain).find(".textart_title").css({overflow: "hidden"});
f.appendTo(a);
u.append(a);
if (Premium.hasBonus("automation")) {
var a = jQuery("<td />");
var f = new west.gui.Button("default", function (t, n, r) {
return function () {
TWDB.Jobs.startJob(t, n, r, Number(e.jobs.basetime))
}
}(e.jobs.selected, s.x, s.y));
jQuery(f.divMain).css({"min-width": "50px", "max-width": "80px"});
jQuery(f.divMain).find(".textart_title").css({overflow: "hidden"});
f.appendTo(a);
u.append(a)
}
r.append(u)
}
this.gui.job.searchDiv.children().remove();
this.gui.job.searchDiv.append(r);
this.gui.bag.append(this.gui.job.searchDiv)
},
isUsedItem: function (e) {
if (this.calcdata.used[e]) {
return true
} else {
return false
}
},
getClothForJob: function (e) {
if (!isDefined(this.calcdata.jobs[e]) || !isDefined(this.calcdata.jobs[e].cloth)) {
return null
}
return this.calcdata.jobs[e].cloth
},
getLPForJob: function (e) {
if (!isDefined(this.calcdata.jobs[e]) || !isDefined(this.calcdata.jobs[e].laborpoints)) {
return null
}
return this.calcdata.jobs[e].laborpoints
},
getSelectedJob: function () {
return this.jobs.selected
},
isLoaded: function () {
if (isDefined(this.calcdata.loaded)) {
return this.calcdata.loaded
}
return false
}
};
(function ($) {
var _base = TWDB;
var w = window;
var Images = _base.images;
var Script = _base.script;
var ClothCalc = _base.ClothCalc;
var Debugger = function (e) {
var t = {};
return t
}($);
_base.Debugger = Debugger;
var Error = function (e) {
var t = {};
var n = "twdb_error";
var r = [];
var i = true;
t.report = function (e, t) {
if (!isDefined(e.message)) {
r.push({msg: "failed to add error", e: t})
} else {
r.push({msg: t + " " + (e.stack && (e.stack.match(/:\d+:\d+/) || [])[0] || ""), e: e.message})
}
if (i) {
i = false;
WestUi.NotiBar.add(new OnGoingPermanentEntry(function () {
s()
}, "tw-db.info: an error occured", "tip"))
}
};
var s = function () {
var t = new west.gui.Scrollpane;
e(t.getMainDiv()).css("height", "370px");
e(t.getMainDiv()).find(".tw2gui_scrollpane_clipper_contentpane").addClass("selectable");
var i = '<table border="1" cellpadding="3" cellspacing="1">';
for (var s = r.length - 1; s >= 0; s--) {
i += "<tr><td>" + s + "</td><td>" + r[s].msg + "</td><td>" + r[s].e + "</td></tr>"
}
i += "</table>";
t.appendContent(i);
var o = wman.open(n, null, "noreload").setMiniTitle("TWDB Errorlog").setTitle("tw-db.info Errorlog").appendToContentPane(t.getMainDiv())
};
return t
}($);
_base.Error = Error;
Debugger.Error = Error;
var Loader = function (e) {
var t = {};
var n = [];
var r = {};
var i = {};
var s;
var o = false;
var u = false;
var a = false;
var f = 0;
t.add = function (e, t, r, i) {
var s = {ready: false};
n.push({key: e, txt: t, call: r, dep: i || {}, ready: s, count: 0});
return s
};
t.init = function () {
if (s) {
return
}
s = w.setInterval(function () {
l()
}, 500)
};
var l = function () {
if (u) {
return
}
u = true;
if (o === false) {
if (!c()) {
u = false;
return
}
TWDB.Cache.init();
r.Cache = true;
try {
Updater.query();
h()
} catch (e) {
Error.report(e, "");
(new UserMessage("a eşuat în a înregistra scriptul tw-db.info pe TheWestApi", UserMessage.TYPE_FATAL)).show();
return d()
}
if (TWDB.Util.isNewIDsystem()) {
TWDB.Util.wrapBetaGetItem()
}
if (TWDB.Util.isNewIDsystem() && window.location.href.indexOf(".beta.the-west.net") === -1 && !TWDB.Util.idMigrationDone()) {
try {
TWDB.Util.backupData()
} catch (e) {
}
try {
TWDB.Util.idMigrator();
(new UserMessage("Converting TW-DB data to new item ID system successful.", UserMessage.TYPE_SUCCESS)).show();
TWDB.Util.simpleRestore(true)
} catch (e) {
Error.report(e, "Item ID conversion failed.");
(new UserMessage("Item ID conversion failed. Do not use the ANALYSERS if you want to save your data!", UserMessage.TYPE_FATAL)).show();
TWDB.Util.simpleRestore()
}
}
return p()
}
if (isDefined(i[o.key])) {
return p()
}
if (o.ready.ready) {
r[o.key] = true;
a = false;
return p()
}
u = false
};
var c = function () {
if (!isDefined(w.jQuery) || !isDefined(w.TheWestApi) || !isDefined(w.TheWestApi.version) || w.ItemManager.get(2e3) === undefined || !isDefined(w.Character) || w.Character.playerId === 0 || !w.Bag.loaded) {
return false
} else {
return true
}
};
var h = function () {
var t = w.TheWestApi.register("twdb_clothcalc", "tw-db.info Cloth Calc", "2.04", String(Script.gameversion), "scoobydoo, Dun, Petee, Bluep, Tom Robert [tw-db.info]", "https://tw-db.info");
var n = '<br><br><form action="https://www.paypal.com/cgi-bin/webscr" method="post">' + '<input name="cmd" value="_s-xclick" type="hidden">' + '<input name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----" type="hidden">' + '<input type="image" src="https://www.paypalobjects.com/en_US/DE/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">' + '<img width="1" border="0" height="1" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" alt=""></form><br>';
var r = e("<div style='font-family:comic sans ms; font-size:13pt; padding-top:10px; text-align:center;' />").append("Script-ul ClathCalc este un proiect creat de echipa TW-DB.info. El oferă o mulţime de caracteristici şi extensii ce vă va oferi o experienţă de joc îmbunătăţită - economisind timpul şi optimizând câteva din activităţile dumneavoastră. ", n, "Vă mulțumim!");
t.setGui(r);
if (t.isOutdated()) {
w.TheWestApi.displayOutdated()
}
};
var p = function () {
if (n.length === 0) {
return d()
}
o = n.shift();
o.count++;
if (o.count > f) {
if (a) {
Error.report({message: "deadlock detected"}, "failed to load module: " + o.key);
i[o.key] = true;
return p()
}
f++;
a = true
}
for (var e in o.dep) {
if (!isDefined(r[e])) {
if (TWDB.script.isDev()) {
console.log(o.key, "needs ", e)
}
n.push(o);
return p()
}
}
try {
o.call()
} catch (t) {
Error.report(t, "failed to load module: " + o.key);
i[o.key] = true;
return p()
}
u = false;
l()
};
var d = function () {
w.clearInterval(s);
w.setTimeout(function () {
delete t
}, 1e3)
};
t.stack = n;
t.loaded = r;
t.failed = i;
t.current = o;
return t
}($);
Debugger.Loader = Loader;
var Cache = function (e) {
var t = {};
var n = {};
var r = "";
var i = {};
var s = function (e) {
if (!i[e]) {
i[e] = true;
t.save("keys", i)
}
};
var o = function () {
if (n.ready) {
return
}
r = "twdb_" + Character.playerId + "_";
i = t.load("keys");
if (!i) {
i = {keys: true}
}
n.ready = true
};
t.load = function (n) {
s(n);
try {
return e.parseJSON(decodeURIComponent(localStorage.getItem(r + n)))
} catch (i) {
Error.report(i, "load " + n + " from cache");
t.save(n, null);
return null
}
};
t.save = function (e, n) {
s(e);
try {
localStorage.setItem(r + e, encodeURIComponent(JSON.stringify(n)));
return true
} catch (i) {
Error.report(i, "save " + e + " to cache");
t.save(e, null);
return false
}
};
t.reset = function (n, s) {
try {
if (n) {
if (isDefined(s)) {
localStorage.removeItem(s)
} else {
for (var o in i) {
localStorage.removeItem(r + o)
}
}
(new UserMessage("Reset Done, page will now be reloaded", UserMessage.TYPE_SUCCESS)).show();
location.href = location.href.replace(location.hash || "#", "")
} else {
var u = e("<div><h2>Ești sigur ca vrei sa-ți resetezi cache-ul? </h2></div>");
var a = (new west.gui.Textfield("twdb_cache_key")).setSize(40).setLabel("Key:");
u.append(a.getMainDiv());
var f = (new west.gui.Checkbox("all Keys")).setSelected(true);
f.setCallback(function (e) {
if (e) {
a.setValue("")
}
});
e(a.getMainDiv()).find("span").css("font-size", "12px");
e(a.getMainDiv()).find("input").keyup(function () {
f.setSelected(false)
});
u.append(e('<div style="display:block;" />').append(f.getMainDiv()));
(new west.gui.Dialog("tw-db Cache Reset", u, west.gui.Dialog.SYS_QUESTION)).addButton("ok", function () {
if (f.isSelected()) {
t.reset(true)
} else {
t.reset(true, a.getValue())
}
}).addButton("cancel").show()
}
} catch (l) {
Error.report(l, "cache reset")
}
};
t.init = o;
return t
}($);
_base.Cache = Cache;
Debugger.Cache = Cache;
var Worker = function (e) {
var t = {};
var n = [];
var r = false;
var i = false;
t.add = function (e) {
n.push(e);
if (r) {
return
}
r = w.setInterval(function () {
s()
}, 100)
};
var s = function () {
if (i) {
return
}
i = true;
var e = n.shift();
try {
e()
} catch (t) {
Error.report(t, "Worker")
}
if (n.length == 0) {
w.clearInterval(r);
r = false
}
i = false
};
return t
}($);
Debugger.Worker = Worker;
var Jobs = function (e) {
var t = {};
var n = {};
var r = [];
var i = {};
var s = {};
var o = [1828e3, 1829e3, 183e4, 2e6, 2003e3, 2006e3, 2009e3];
var u;
var a = {};
var f = function () {
if (n.ready) {
return
}
var t = 0;
var f = 0;
var c = {};
while (true) {
t++;
var h = w.JobList.getJobById(t);
if (!h) {
f++;
if (f > 5) {
break
}
continue
}
f = 0;
r.push(h.id);
i[h.name.toLowerCase()] = h.id;
s[h.shortname.toLowerCase()] = h.id;
for (var p in h.yields) {
if (isNaN(p) || c[p]) {
continue
}
c[p] = true;
o.push(Number(p))
}
}
u = function (e) {
var t = {
description: "",
duration: 1800,
energy: 6,
groupid: null,
id: 255,
malus: 0,
name: "Construcţie",
randomyields: [],
shortname: "construction",
skills: {build: 3, repair: 1, leadership: 1},
yields: {},
calcJobPoints: function () {
return 0
},
canDo: function () {
return true
}
};
return t
}(e);
r.push(255);
i[u.name.toLowerCase()] = 255;
s[u.shortname.toLowerCase()] = 255;
var d = function (e, t) {
var n = e === 255 ? u : w.JobList.getJobById(e);
var r = t === 255 ? u : w.JobList.getJobById(t);
return n.name > r.name
};
r.sort(d);
o.sort();
a = Cache.load("jobdata");
if (a === null || typeof a !== "object") {
a = {}
}
Eventer.set("TWDBdataLoaded", function () {
l()
});
n.ready = true
};
n = Loader.add("Jobs", "tw-db Jobsystem", f, {Cache: true});
var l = function () {
a = {};
Cache.save("jobdata", a)
};
t.getJobByName = function (n) {
n = e.trim(n).toLowerCase();
if (!isDefined(i[n])) {
return null
}
return t.getJobById(i[n])
};
t.getJobByShortname = function (n) {
n = e.trim(n).toLowerCase();
if (!isDefined(s[n])) {
return null
}
return t.getJobById(s[n])
};
t.getJobById = function (t) {
var n;
if (t === 255) {
n = u
} else {
n = w.JobList.getJobById(t);
if (!n) {
return n
}
}
var r = e.extend(true, {}, n);
var i = 1;
if (w.Character.charClass == "adventurer") {
if (w.Premium.hasBonus("character")) {
i *= 1.2
} else {
i *= 1.1
}
}
if (w.Premium.hasBonus("money")) {
i *= 1.5
}
for (var s = 0; s < r.randomyields.length; s++) {
r.randomyields[s] = (r.randomyields[s] * i).round(2)
}
if (typeof r.yields.length == "undefined") {
for (var o in r.yields) {
r.yields[o].prop = (r.yields[o].prop * i).round(2)
}
}
return r
};
t.openJob = function (e, t, n) {
w.JobWindow.open(e, t, n)
};
t.startJob = function (e, t, n, r) {
w.JobWindow.startJob(e, t, n, Number(r) || 3600)
};
t.getAllJobs = function () {
return r
};
t.isProduct = function (t) {
return e.inArray(Number(t), o)
};
t.getPopup = function (e, n) {
var r = '<div style="min-width:60px;text-align:center" >';
var i = t.getJobById(e);
if (isDefined(i)) {
r += '<span style="font-weight:bold;display:block;">' + i.name + "</span>" + '<div class="job" style="position:relative;left:50%;margin:10px -25px;">' + "<div " + (!isDefined(n) ? "" : 'class="featured ' + n + '"') + "></div>" + '<img src="' + Game.cdnURL + "/images/jobs/" + i.shortname + '.png" class="job_icon" >' + "</div>"
}
return r += "</div>"
};
return t
}($);
_base.Jobs = Jobs;
Debugger.Jobs = Jobs;
var Window = function (e) {
var t = {};
var n = "twdb_window";
var r = null;
var i = null;
var s = {};
var o = {};
var u = function () {
if (o.ready) {
return
}
var t = e('<div title="tw-db.info" class="menulink" />').css("background-image", "url(" + Images.button + ")").mouseenter(function () {
e(this).css("background-position", "-25px 0px")
}).mouseleave(function () {
e(this).css("background-position", "0px 0px")
}).click(function () {
a()
});
e("#ui_menubar").append(e('<div class="ui_menucontainer" id="TWDB_ClothCalc_menubuttons" />').append(t).append('<div class="menucontainer_bottom" />'));
ready = true;
o.ready = true
};
o = Loader.add("Window", "tw-db Scriptwindow", u);
t.open = function (e) {
a(e)
};
var a = function (t) {
r = wman.open(n, null).setMiniTitle("tw-db.info").setTitle("tw-db.info");
r.appendToContentPane(e('<div style="width:100%;text-align:center;position:absolute;bottom:0px;left:0px;height:15px;display:block;font-size:12px;color:#000000;">.:powered by tw-db team:. | <a href="https://tw-db.info" style="font-weight:normal;color:#000000;" target="_blank">.:tw-db.info:.</a> | ' + (Script.version / 100 + " rev. " + Script.revision) + "</div>"));
r.appendToContentPane(e('<div title=" tw-db support " style="width:19px;height:19px;position:absolute;bottom:-5px;right:5px;display:block;cursor:pointer;" />').append('<img src="' + Images.iconSupport + '" />').click(function () {
Support.open()
}));
var o;
for (var u in s) {
if (!isDefined(o)) {
o = u
}
if (t == u) {
o = u
}
r.addTab(s[u].name, u, function (e, t) {
f(t)
});
s[u].gui.children().remove();
r.appendToContentPane(s[u].gui)
}
if (isDefined(o)) {
i = s[o].gui;
f(o)
}
};
var f = function (e) {
i.hide();
r.showLoader();
r.activateTab(e);
if (!isDefined(s[e])) {
return
}
if (s[e].title !== "") {
r.setTitle("tw-db.info " + s[e].title)
} else {
r.setTitle("")
}
i = s[e].gui;
i.show();
w.setTimeout(s[e].callback, 10)
};
t.addTab = function (t, n, r, i) {
s[t] = {title: r, name: n, callback: i, gui: null};
s[t].gui = e('<div style="margin-top:10px;"/>').hide();
return s[t].gui
};
t.hideLoader = function () {
r.hideLoader()
};
return t
}($);
Debugger.Window = Window;
var Support = function (e) {
var t = {};
var n = "twdb_support";
var r = {};
t.addKey = function (e, t) {
r[e] = t
};
t.open = function () {
var t = e('<p style="margin:10px;">Please include the text displayed below in a bug report sent using <a href="https://tw-db.info/?strana=contact" target="_blank">our contact form</a> and also try to describe how to reproduce this error (what did you do when it occured). Thanks!</p>');
var i = e('<div style="margin:10px;"/>');
var s = "[CODE]";
for (var o in r) {
s += String(o) + "\n";
s += String(r[o]) + "\n";
s += "----------" + "\n"
}
s += "[/CODE]";
i.append((new west.gui.Textarea).setContent(s).setWidth(600).setHeight(250).setReadonly().getMainDiv());
wman.open(n, null).setMiniTitle("tw-db.info Support").setTitle("tw-db.info Support").appendToContentPane(t).appendToContentPane(i)
};
return t
}($);
Debugger.Support = Support;
var Timer = function (e) {
var t = {};
var n = 0;
var r = 0;
var i = 0;
t.getTimeout = function () {
var e = (new Date).getTime();
if (e - n < 2e3) {
r++
} else {
r = 0
}
if (e - n < 6e4) {
i++
} else {
i = 0
}
n = e;
var t = 0;
if (i > 50) {
t = 6e4
}
if (r < 20) {
return t + 200
}
return t + 2e3
};
return t
}($);
Debugger.Timer = Timer;
var Eventer = function (e) {
var t = {};
var n = {};
t.set = function (e, t, r) {
if (!isDefined(n[e])) {
n[e] = {}
}
if (!isDefined(r)) {
var r = false
}
var i = Number((new Date).getTime());
while (n[e][i])i++;
n[e][i] = {id: i, call: t, count: r};
return i
};
t.trigger = function (e) {
if (!isDefined(n[e])) {
return
}
var t = 0;
for (var r in n[e]) {
if (!isDefined(n[e][r].id)) {
continue
}
w.setTimeout(n[e][r].call, 10);
if (n[e][r].count == false) {
t++;
continue
}
n[e][r].count--;
if (n[e][r].count > 0) {
t++;
continue
}
}
if (t == 0) {
delete n[e]
}
};
t.remove = function (e, t) {
if (!isDefined(n[e]) || !isDefined(n[e][t])) {
return false
}
delete n[e][t]
};
return t
}($);
_base.Eventer = Eventer;
Debugger.Eventer = Eventer;
var Calc = function (e) {
var t = {};
var n = false;
var r = {sets: {}};
var i = {sets: {}, items: {}};
var s = {};
var o = function (e) {
for (set in e) {
var t = e[set];
var n = {};
var i = {}, s = {}, o = {};
var u = 0;
for (level in t.bonus) {
if (!t.bonus.hasOwnProperty(level))continue;
n[level] = {jobs: {}, attributes: [], skills: []};
if (u > 0) {
for (var a = parseInt(u, 10) + 1; a <= level; ++a) {
n[a] = JSON.parse(JSON.stringify(n[u]))
}
}
for (bonus in t.bonus[level]) {
if (!t.bonus[level].hasOwnProperty(bonus))continue;
var f = t.bonus[level][bonus];
var l = TWDB.ClothCalc._skill2id[f.name];
switch (f.type) {
case"job":
if (!isDefined(n[level]["jobs"][f.job]))n[level]["jobs"][f.job] = 0;
n[level]["jobs"][f.job] += f.value;
break;
case"attribute":
if (!isDefined(i[l]))i[l] = 0;
i[l] += f.value;
n[level]["attributes"][l] = i[l];
for (iT = 0; iT < TWDB.ClothCalc._sk4attr[f.name].length; iT++) {
var c = TWDB.ClothCalc._sk4attr[f.name][iT];
if (!isDefined(s[c]))s[c] = 0;
s[c] += f.value;
n[level]["skills"][c] = s[c]
}
break;
case"skill":
if (!isDefined(s[l]))s[l] = 0;
s[l] += f.value;
n[level]["skills"][l] = s[l];
break;
case"character":
if (f.bonus && f.key === "level") {
var h = f.roundingMethod;
if (f.bonus.type === "skill") {
var p = TWDB.ClothCalc._skill2id[f.bonus.name];
if (!isDefined(s[p]))s[p] = 0;
s[p] += Math[h](Character.level * f.bonus.value);
n[level]["skills"][p] = s[p]
} else if (f.bonus.type == "attribute") {
for (iT = 0; iT < TWDB.ClothCalc._sk4attr[f.bonus.name].length; iT++) {
var c = TWDB.ClothCalc._sk4attr[f.bonus.name][iT];
if (!isDefined(s[c]))s[c] = 0;
s[c] += Math[h](Character.level * f.bonus.value);
n[level]["skills"][c] = s[c]
}
} else if (f.bonus.type == "job") {
if (!isDefined(n[level]["jobs"][f.bonus.job]))n[level]["jobs"][f.bonus.job] = 0;
n[level]["jobs"][f.bonus.job] += Math[h](Character.level * f.bonus.value)
}
}
break;
default:
break
}
}
u = level
}
r.sets[set] = n
}
return r.sets
};
var u = function () {
if (s.ready) {
return
}
Worker.add(function () {
return function () {
r = o(west.storage.ItemSetManager._setList);
s.ready = true;
n = true
}
}())
};
s = Loader.add("Calc", "tw-db Calculator", u, {});
t.getCcCache = function () {
return i
};
t.getSetCache = function () {
return r
};
t.getSetBonusForJob = function (e, t, n) {
if (isDefined(i.sets[e]) && isDefined(i.sets[e][t]) && isDefined(i.sets[e][t][n])) {
return i.sets[e][t][n]
}
try {
return a(e, t, n)
} catch (r) {
Error.report(r, "calcSetBonusForJob (" + e + " " + t + " " + n + ")")
}
return 0
};
t.getItemBonusForJob = function (e, t) {
try {
if (isDefined(i) && isDefined(i.items) && isDefined(i.items[e]) && isDefined(i.items[e][t])) {
return i.items[e][t]
}
return f(e, t)
} catch (n) {
Error.report(n, "calcItemBonusForJob (" + e + " " + t + ")")
}
return 0
};
t.isCached = function (e, t) {
if (isDefined(i.items[e]) && isDefined(i.items[e][t])) {
return true
} else {
return false
}
};
var a = function (e, t, n) {
if (!isDefined(r[e])) {
console.log({message: "unknown set " + e}, "calcSetBonusForJob");
return 0
}
if (!isDefined(r[e][t])) {
return 0
}
var s = r[e][t];
var o = Jobs.getJobById(n);
if (!o) {
return 0
}
var u = 0;
if (isDefined(s.jobs["all"])) {
u += s.jobs["all"]
}
if (isDefined(s.jobs[n])) {
u += s.jobs[n]
}
for (var a in o.skills) {
var f = o.skills[a];
if (isDefined(s.skills[TWDB.ClothCalc._skill2id[a]])) {
u += s.skills[TWDB.ClothCalc._skill2id[a]] * f
}
}
if (!isDefined(i.sets[e])) {
i.sets[e] = {}
}
if (!isDefined(i.sets[e][t])) {
i.sets[e][t] = {}
}
i.sets[e][t][n] = u;
return u
};
var f = function (e, t) {
var n = ItemManager.get(e);
if (!n) {
return 0
}
var r = Jobs.getJobById(t);
if (!r) {
return 0
}
var s = n.getValue(r.skills, t);
if (!isDefined(i.items[e])) {
i.items[e] = {}
}
i.items[e][t] = s;
return s
};
return t
}($);
_base.Calc = Calc;
Debugger.Calc = Calc;
var Importer = function (e) {
var t = {};
var n = {};
t.div = null;
var r = function () {
if (n.ready) {
return
}
t.div = Window.addTab("importer", "Importer", "", function () {
i()
});
n.ready = true
};
n = Loader.add("Importer", "tw-db Importersystem", r, {Window: true});
var i = function () {
t.div.children().remove();
Window.hideLoader();
e.getScript(Script.protocol + "://" + Script.url + "/cache/js/sDoImport_" + Script.lang + ".js")
};
return t
}($);
_base.Importer = Importer;
Debugger.Importer = Importer;
var Settings = function (e) {
var t = {};
var n = {};
var r = null;
var i = {};
var s = function () {
if (i.ready) {
return
}
var e = Cache.load("settings");
if (typeof e === "object" && e !== null) {
n = e
} else {
n = {}
}
TWDB.Util.addCss("span.twdb_sett_capt { font-size: 115%; font-weight: bold; font-style: italic; display: inline-block; margin-top: 8px; text-shadow: 2px 1px 2px #643; }");
r = Window.addTab("settings", "setări", "setări", o);
i.ready = true
};
i = Loader.add("Settings", "tw-db Settingssystem", s, {Cache: true, Window: true});
var o = function () {
r.children().remove();
var i = new west.gui.Scrollpane;
e(i.getMainDiv()).css("height", "300px");
r.append(i.getMainDiv());
var s = [[9, "", "Inventar", false], [0, "jobBoniTooltip", "arată informaţii despre punctele de muncă în fereastra inventarului pentru munca selectată", false], [0, "collector", "marchează obiectele de la negustor şi piaţă pe care nu le ai", false], [0, "buyTip", "arată opţiunea de cumpărare la negustor", false], [0, "sellTip", "arată opţiunea de vânzare în fereastra inventarului", false], [0, "sellTip1", "Vinde obiectele care le deții de mai multe ori", "Setări pentru sfaturi de vânzare"], [0, "sellTip2", "Vinde obiectele care nu le folosești la nicio muncă", "Setări pentru sfaturi de vânzare"], [0, "sellTip3", "Nu vindeți niciodată obiectele cu aură! ", "Setări pentru sfaturi de vânzare"], [0, "sellTip4", "Nu vindeți niciodată obiectele care pot fi obținute doar muncind", "Setări pentru sfaturi de vânzare"], [0, "sellTip5", "Nu vindeți obiecte ce fac parte dintr-un set. ", "Setări pentru sfaturi de vânzare"], [0, "pinitems", "Activează fixarea obiectelor în secțiunea &quot;Utilizat recent&quot; din Inventar", false], [0, "collectorsell", "Adaugă un buton la negustorul ambulant care vinde toate obiectele (excepție un obiect) din cele selectate", false], [9, "", "Misiuni", false], [0, "questwiki", "Include tw-db și ClothCalc in fereastra pentru misiuni ", false], [0, "questcancle", "Când anulaţi o misiune veţi primi o întrebare dacă într-adevăr vrei să faceţi asta", false], [0, "qbswitch", "Activează comutarea între introducerea şi completarea textului în cartea de misiuni", false], [0, "qfulltext", "Afişează întotdeauna tot textul misiunii", false], [9, "", "Piaţă", false], [0, "marketmap", "Foloseşte harta pieţei", false], [0, "marketreminder", "Adaugă un memento pentru licitaţiile de la piata", false], [0, "marketselldialog", "Îmbunătăţeşte caseta de dialog al vânzării pe piaţă", false], [9, "", "Munci", false], [0, "jobwin_ccbutton", "Adaugă ClothCalc la fereastra muncii", false], [0, "jobwin_showlp", "Arată punctele de muncă în fereastra muncii", false], [9, "", "Listă cu sarcini", false], [0, "tasklistpoints", "Arată indicaţii despre punctele de muncă in lista de comenzi", false], [9, "", "GUI", false], [0, "duelmotivation", "Adaugă un indicator pentru motivaţia de duel", false], [0, "directsleep", "Afişează un buton care te trimite direct la hotel sau cazarmă", false], [0, "deposit", "Adauga un buton pentru depozitarea banilor la bancă", false], [0, "noshopsale", "Dezactivează notificarea pentru reducerile din magazin", false], [0, "expbarvalues", "Arată valorile pe bara de experienţă; Credite & mulţumiri Leones/Slygoxx", false], [0, "mini_chatgui", "Permite ca interfața chat-ului să fie minimizată", false], [0, "customcounterpos", "Repoziționați contoarele de evenimente (ouă, inimi, artificii, etc.) pe ecrane late", false], [0, "noscrollbars", "Dezactiveză barele de derulare pe ecrane mici sau când mişti ferestrele prea departe", false], [9, "", "Mini-hartă", false], [0, "showbonusjobs", "Arată muncile bonus pe hartă", false], [0, "showscrollto", "Adaugă o listă pentru a coordona câmpul de introducere din mini-hartă", false], [9, "", "Fort", false], [0, "fortrecruitment", "Arată prezentarea generală a recrutării la fort", false], [0, "enhancedfortrecruitment", "Arată jucătorii de lângă fort", false], [9, "", "Diverse", false], [0, "chat", "foloseşte chatul intensiv", false], [0, "notes", "Folosește Notițele. ", false], [0, "forumlastpage", "Adaugă un buton pe forum pentru a te direcţiona la ultima postare", false], [0, "fastskillchange", "Activează schimbarea rapidă de indemanari (Țineți apăsat click stânga pe mouse) ", false], [0, "autodeposit", "Primeşte un mesaj pentru a depozita banii dacă ajungi în oraş", false], [0, "chestanalyser", "Creează o statistică pentru cuferele deschise", false], [0, "weeklycrafting", "Fi anunțat când expiră perioada de așteptare a meseriilor.", false], [0, "noworkqueuepa", "Scoate sfaturile pentru optiunea de Automatizare (CP)", "Setări premium"], [0, "nofetchallpa", "Dezactivați solicitarea premium când preluaţi toate obiectele de pe piață", "Setări premium"], [0, "nowofnuggets", "Nu utilizați pepite ca plată implicită pentru evenimente (dacă este disponibil)", "Setări premium"], [0, "instanthotel", "Add a hotel button to town signs", false], [0, "telegramsource", "Adaugă un buton pentru comutarea textului neformatat din telegrame", false], [8, "clothPos"], [0, "wear_openmin", "Deschide fereastra cu echipament minimizată la deschiderea ClothCalc", false]];
var o = {};
var a = e("<table />");
var f = {};
for (var l = 0; l < s.length; l++) {
var c = s[l][1];
o[c] = t.get(c);
var h = e("<tr />");
if (s[l][0] === 9) {
h.append(e('<td colspan="2" />').append(e('<span class="twdb_sett_capt" />').text((s[l][2] + "").twdb_twiceHTMLUnescape())));
a.append(h);
continue
}
if (s[l][0] === 8) {
h.addClass("placeholder_" + s[l][1]);
a.append(h);
continue
}
switch (s[l][0]) {
case 0:
var p = function (e) {
return function () {
o[e] = !o[e]
}
}(c);
var d = new west.gui.Checkbox("", !o[c] ? "" : "tw2gui_checkbox_checked", p);
h.append(e('<td style="width:25px;" />').append(d.getMainDiv()));
break
}
h.append(e("<td />").text((s[l][2] + "").twdb_twiceHTMLUnescape()));
if (s[l][3]) {
var v = s[l][3];
if (!isDefined(f[v])) {
f[v] = e("<table />").hide();
a.append(e('<tr><td style="width:25px;cursor:pointer;" /><td style="cursor:pointer;" class="item_sell"><span class="twdb_cat butMinus" style="margin-top: -3px;" /> ' + v.twdb_twiceHTMLUnescape() + "</td></tr>").click(function (t) {
return function () {
e(f[t]).toggle();
e(this).find("span.twdb_cat").toggleClass("butMinus").toggleClass("butPlus")
}
}(v)), e("<tr>").append(e('<td style="width:25px;">'), e("<td>").append(f[v])))
}
f[v].append(h)
} else {
a.append(h)
}
}
var m = new west.gui.Combobox;
m.addItem("left", "stânga").addItem("right", "dreapta").addItem("custom", "Poziția salvată ");
m.select(String(n["clothPos"]));
e("tr.placeholder_clothPos", a).removeClass("placeholder_clothPos").append(e('<td colspan="2" />').append(m.getMainDiv(), "<span> dreapta</span>"));
a.append(e("<tr><td> </td></tr>"));
var g = new west.gui.Button("Salvează", function () {
switch (m.getValue()) {
case"left":
n["clothPos"] = "left";
break;
case"right":
n["clothPos"] = "right";
break;
default:
n["clothPos"] = "custom";
break
}
u(o)
});
var y = e('<div style="width:100%;text-align:right;" />').append(e('<img style="position:relative;top:-20px;cursor:pointer;" title=" reset local Storage" src="' + Images.iconReset + '" />').click(function () {
Cache.reset()
}));
i.appendContent(a);
r.append(g.getMainDiv()).append(y);
Window.hideLoader()
};
t.get = function (e, r) {
if (!isDefined(n[e])) {
t.set(e, r);
return r
}
return n[e]
};
t.set = function (e, t) {
n[e] = t;
Cache.save("settings", n)
};
var u = function (e) {
for (var t in e) {
n[t] = e[t]
}
if (Cache.save("settings", n)) {
(new UserMessage("Salvat cu succes", UserMessage.TYPE_SUCCESS)).show()
} else {
(new UserMessage("?save_error", UserMessage.TYPE_ERROR)).show()
}
};
return t
}($);
_base.Settings = Settings;
Debugger.Settings = Settings;
var JobWindowCC = function (e) {
var t = {};
var n = {};
var r = function () {
if (n.ready) {
return
}
if (Settings.get("jobwin_ccbutton", true)) {
i()
}
if (Settings.get("jobwin_showlp", true)) {
s()
}
n.ready = true
};
var i = function () {
try {
JobWindow.prototype.__twdb__getBestWearButton = JobWindow.prototype.__twdb__getBestWearButton || JobWindow.prototype.getBestWearButton;
JobWindow.prototype.getBestWearButton = function () {
var t = JobWindow.prototype.__twdb__getBestWearButton.apply(this, arguments);
var n = this;
return t.append(e('<div class="twdb_bestwear" title="Arată munca in fereastra ClothCalc">').click(function (e) {
e.stopImmediatePropagation();
TWDB.ClothCalc.open(n.job.id, "job")
}))
};
var t = "div.job_bestwearbutton {left: 15px!important; width: 210px;}\n" + "div.twdb_bestwear {background: url('" + TWDB.images.bestwear + "') no-repeat top; " + "height: 55px; width: 55px; position: relative; left: 195px; top: -15px;}\n" + "div.job_bestwearbutton:hover .twdb_bestwear {background-position: bottom;}";
TWDB.Util.addCss(t, "bestwear")
} catch (n) {
Error.report(n, "manipulate JobWindow.prototype.getBestWearButton")
}
};
var s = function () {
try {
JobWindow.prototype.__twdb__initView = JobWindow.prototype.__twdb__initView || JobWindow.prototype.initView;
JobWindow.prototype.initView = function () {
var t = JobWindow.prototype.__twdb__initView.apply(this, arguments);
var n = " (" + (this.currSkillpoints - this.job.workpoints) + " PM)";
e("div.tw2gui_inner_window_title > .textart_title", this.window.divMain).append(n);
return t
}
} catch (t) {
Error.report(t, "manipulate JobWindow.prototype.initView")
}
};
n = Loader.add("JobWindowCC", "tw-db Job window", r, {Settings: true, ClothCalc: true});
return t
}($);
var Tools = function (e) {
var t = {};
var n = {};
var r;
var i = function () {
if (n.ready) {
return
}
r = Window.addTab("tools", "Tools", "", function () {
s()
});
n.ready = true
};
n = Loader.add("Tools", "tw-db Toolsystem", i, {Window: true});
var s = function () {
r.children().remove();
(new west.gui.Button("open Tool", function () {
w.open("https://" + Script.url + "/?strana=politic_map&world=" + location.hostname.split(".")[0])
})).appendTo(r);
var t = new west.gui.Button;
t.setCaption("Alliance Import".escapeHTML()).click(function () {
t.disable();
e.getScript(Script.protocol + "://" + Script.url + "/js/sDoAllianceImport.js")
}).appendTo(r);
Window.hideLoader()
};
return t
}($);
Debugger.Tools = Tools;
var Updater = function (e) {
var t = {};
var n = {};
var r;
var i = false;
var s = function () {
if (n.ready) {
return
}
r = Window.addTab("notes", "Release Notes", "Release Notes", function () {
u()
});
if (Cache.load("version") && Script.version + " " + Script.revision !== Cache.load("version")) {
Cache.save("version", Script.version + " " + Script.revision);
i = true;
var e = "Scriptul a fost updatat";
var t = '<div class="txcenter">Script-ul =1= a fost actualizat. Vrei să vezi ce s-a modificat?</div>';
t = t.replace("=1=", "<b>" + Script.name + "</b>");
(new west.gui.Dialog(e, t, west.gui.Dialog.SYS_WARNING)).addButton("no").addButton("yes", function () {
Window.open("notes")
}).show()
}
n.ready = true
};
n = Loader.add("Updater", "tw-db Updater", s, {Cache: true, Window: true});
var o = function (t, n) {
var r = "Scriptul are nevoie de update";
var i = '<div class="txcenter">Pentru script =1= este o nouă versiune disponibilă, va rog apăsaţi OK pentru a actualiza scriptul</div>';
i = i.replace("=1=", "<b>" + Script.name + "</b>");
i += "<div><br />current version: " + Script.version / 100 + " revision " + Script.revision + "<br />new version: " + t / 100 + " revision " + n + "</div>";
var s = Script.protocol + "://" + Script.update;
if (e.browser.webkit) {
s += "?" + Script.version + Script.revision
}
var o = function () {
try {
location.href = s
} catch (e) {
}
(new west.gui.Dialog(Script.name, "Vă rugăm reîncărcaţi fereastra după instalare.", west.gui.Dialog.SYS_WARNING)).setModal(true, false, true).show()
};
(new west.gui.Dialog(r, i, west.gui.Dialog.SYS_WARNING)).addButton("Nu acum").addButton("ok", o).show()
};
t.wasUpdated = function () {
return i
};
var u = function () {
r.children().remove();
var t = new west.gui.Scrollpane;
e(t.getMainDiv()).css("height", "335px");
var n = false;
for (var i = 0; i < Script.notes.length; i++) {
var s = e("<h3><a>Version " + String(Script.notes[i].version / 100) + "</a></h3>").css("border-bottom", "1px solid black").click(function () {
e(this).next().toggle()
});
var o = e("<div>" + Script.notes[i].notes + "</div>");
t.appendContent(s).appendContent(o);
if (n) {
o.hide()
}
n = true
}
r.append(t.getMainDiv());
Window.hideLoader()
};
t.query = function () {
setTimeout(function () {
e.getScript(Script.protocol + "://" + Script.check + "?" + (new Date).getTime())
}, 500)
};
t.check = function (e, t, n) {
if (Script.version !== e || Script.revision !== t) {
o(e, t)
}
};
return t
}($);
_base.Updater = Updater;
Debugger.Updater = Updater;
var Sleep = function (e) {
var t = {};
var n = null;
var r = [];
var i = [];
var s = {};
var o = 1;
var u = false;
var a = {};
var f = function () {
if (a.ready) {
return
}
if (Settings.get("directsleep", true)) {
var e = "ul.tw2gui_selectbox_content.twdb_sleepmenu {max-width: 320px!important; white-space: nowrap; overflow-y: auto; overflow-x: hidden;}" + "ul.tw2gui_selectbox_content.twdb_sleepmenu > div.tw2gui_scrollpane {width: 320px!important}" + "ul.tw2gui_selectbox_content.twdb_sleepmenu > li {padding-right: 20px!important;}";
TWDB.Util.addCss(e);
s = Cache.load("barracks");
if (s == null || typeof s !== "object") {
s = {}
}
if (Character.homeTown.town_id !== 0) {
l();
d()
}
}
a.ready = true
};
a = Loader.add("Sleep", "tw-db DirectSleep", f, {Cache: true, Settings: true});
var l = function () {
n = GameInject.CharacterButton.add(Images.buttonSleep);
n.addMousePopup("Somn").click(function (e) {
if (w.Character.homeTown.town_id !== 0 && r.length == 0) {
h()
} else {
c(e)
}
})
};
var c = function (t) {
if (r.length == 0) {
return
}
var n = Map.getLastPosition();
n.x = n[0];
n.y = n[1];
for (var i = 0; i < r.length; i++) {
r[i].distance = w.Map.calcWayTime(n, r[i])
}
r.sort(function (e, t) {
return e.distance == t.distance ? 0 : e.distance > t.distance ? 1 : -1
});
var s = (new west.gui.Selectbox(true)).addListener(function (e) {
switch (e) {
case 0:
h();
break;
default:
p(e);
break
}
}).addItem(0, "Hotel " + w.Map.calcWayTime(n, w.Character.homeTown).formatDuration());
for (var i = 0; i < r.length; i++) {
if (r[i].stage !== 0) {
s.addItem(r[i].id, "Etapă " + r[i].stage + " " + r[i].distance.formatDuration() + " | " + r[i].name)
}
}
e(s.elContent).addClass("twdb_sleepmenu");
s.show(t)
};
var h = function () {
Ajax.remoteCallMode("building_hotel", "get_data", {town_id: w.Character.homeTown.town_id}, function (e) {
if (e.error) {
(new UserMessage(e.error, UserMessage.TYPE_ERROR)).show();
return
}
var t = "";
for (var n in e.rooms) {
if (e.rooms[n].available) {
t = n
}
}
w.TaskQueue.add(new TaskSleep(w.Character.homeTown.town_id, t))
})
};
var p = function (e) {
if (isDefined(s[e])) {
w.TaskQueue.add(new TaskFortSleep(e, s[e].x, s[e].y))
}
};
var d = function () {
if (w.Character.homeTown.alliance_id == 0) {
return
}
Ajax.remoteCallMode("alliance", "get_data", {alliance_id: w.Character.homeTown.alliance_id}, function (e) {
if (e.error) {
(new UserMessage(e.error, UserMessage.TYPE_ERROR)).show();
return
}
i = e.data.forts;
if (i.length > 0) {
w.setTimeout(function () {
v()
}, Timer.getTimeout())
}
})
};
var v = function () {
try {
if (i.length <= 0) {
return
}
var t = i.pop();
var n = t.fort_id;
if (!isDefined(s[n])) {
s[n] = {time: 0, stage: 0}
}
e.extend(s[n], {id: n, x: t.x, y: t.y, name: t.name, type: t.type});
if (s[n].stage !== 5 && s[n].time + o * 86400 > (new Date).getTime() / 1e3) {
r.push(s[n]);
if (i.length > 0) {
w.setTimeout(function () {
v()
}, Timer.getTimeout())
} else {
Cache.save("barracks", s)
}
return
}
Ajax.remoteCallMode("fort_building_barracks", "index", {fort_id: n}, function (e) {
if (e.error) {
(new UserMessage(e.error, UserMessage.TYPE_ERROR)).show()
} else {
s[n].time = Number((new Date).getTime() / 1e3).round(0);
if (isDefined(e.barrackStage)) {
s[n].stage = e.barrackStage
}
}
r.push(s[n]);
if (i.length > 0) {
w.setTimeout(function () {
v()
}, Timer.getTimeout())
} else {
Cache.save("barracks", s)
}
})
} catch (u) {
Error.report(u, "getFortData")
}
};
return t
}($);
Debugger.Sleep = Sleep;
var Analyser = function ($) {
var _self = {};
var ready = false;
var statistic = null;
var backup = null;
var locked = false;
var reports = [];
var failedReports = [];
var lastPage = 0;
var gui = {};
var sorting = {};
_self.extra = false;
var loader = {};
var init = function () {
if (loader.ready) {
return
}
TWDB.Util.addCss(".messages-analyser-job .item img.tw_item { width: 30px; height: 27px; }" + ".messages-analyser-job .item .count { bottom: -4px; }" + ".messages-analyser-job .item span.usable { display: none; }" + "div.tw2gui_window .messages-analyser-job div.fancytable .row > div { display: none; vertical-align: top; }" + ".messages-analyser-job.view-rewards div.fancytable .row > div.view-rewards { display: inline-block; }" + ".messages-analyser-job.view-items div.fancytable .row > div.view-items { display: inline-block; }" + "div.tw2gui_window .messages-analyser-job div.fancytable div.trows div.tbody div.row { height: auto; }");
var e = Cache.load("statistic");
if (typeof e == "object" && e !== null) {
statistic = e
} else {
reset("all", true)
}
if (!statistic.ver) {
reset("all", true)
}
switch (statistic.ver) {
case 1:
reset("job", true, 1);
reset("duel", true, 1);
statistic.ver = 2;
case 2:
reset("job", true, 1);
reset("duel", true, 1);
statistic.ver = 3;
case 3:
reset("chest", true, 1);
statistic.ver = 4
}
backup = $.extend(true, {}, statistic);
GameInject.addTabOnMessagesWindow("Analizator de munci", "analyser-job", function () {
show("job")
});
if (Settings.get("chestanalyser", true)) {
GameInject.ItemUse(Chest.add);
GameInject.addTabOnMessagesWindow("Analizator de cufere", "analyser-chest", function () {
Chest.show()
})
}
loader.ready = true
};
loader = Loader.add("Analyser", "tw-db Job-Analyser", init, {Cache: true, Settings: true, Jobs: true});
_self.restore = function () {
statistic = $.extend(true, {}, backup)
};
_self.debug = function () {
console.log(statistic);
console.log(sorting)
};
var reset = function (e, t, n) {
if (t == true) {
if (!n) {
var n = 0
} else {
var r = /\[report=([0-9]+)([A-Fa-f0-9]{10})\]/;
var i = String(n).match(r);
if (i) {
var n = i[1]
}
}
if (isNaN(parseInt(n, 10))) {
var s = 0
} else {
var s = parseInt(n, 10) - 1
}
switch (e) {
case"job":
statistic[e] = {last: s, items: {last: 0}};
break;
case"duel":
statistic[e] = {last: s};
break;
case"chest":
statistic[e] = {};
break;
case"all":
statistic = {ver: 4};
reset("job", true, s + 1);
reset("duel", true, s + 1);
reset("chest", true, s + 1);
break
}
} else {
var o = $('<div><h2>Do you really want to reset the ReportAnalyser statistics?</h2><span style="font-size:12px"><br />Give Report-Link of first Report which should be read after Reset</span></div>');
var u = (new west.gui.Textfield("twdb_analyser_last")).setSize(40);
u.setLabel("Report-Link:");
o.append(u.getMainDiv());
var a = new west.gui.Checkbox("or use all reports ");
var f = new west.gui.Checkbox("or use only future reports");
a.setCallback(function (e) {
if (e) {
f.setSelected(false);
u.setValue("")
}
});
f.setCallback(function (e) {
if (e) {
a.setSelected(false);
u.setValue("")
}
});
$(u.getMainDiv()).find("span").css("font-size", "12px");
$(u.getMainDiv()).find("input").keyup(function () {
a.setSelected(false);
f.setSelected(false)
});
o.append($('<div style="display:block;" />').append(a.getMainDiv()).append(f.getMainDiv()));
var l = new west.gui.Dialog("ReportAnalyser - Resetare", o);
l.addButton("ok", function () {
if (a.isSelected()) {
reset(e, true)
} else if (f.isSelected()) {
reset(e, true, statistic[e].last + 1)
} else {
reset(e, true, u.getValue())
}
l.hide();
MessagesWindow.open("analyser-" + e)
});
l.addButton("cancel");
l.show()
}
};
var Chest = function (e) {
var t = {};
t.add = function (e, t) {
var n = false;
for (i = 0; i < t.msg.effects.length; i += 1) {
var r = t.msg.effects[i];
if (r.type == "lottery" || r.type == "content") {
if (!isDefined(statistic.chest[e])) {
statistic.chest[e] = {count: 0, items: {}}
}
var s = statistic.chest[e];
if (!n) {
s.count++;
n = true
}
r.items.each(function (e) {
if (!isDefined(s.items[e.item_id])) {
s.items[e.item_id] = 0
}
s.items[e.item_id] += e.count
})
}
}
Cache.save("statistic", statistic)
};
t.show = function () {
if (!MessagesWindow.window) {
return
}
var t = e(MessagesWindow.window.getContentPane()).find(".messages-analyser-chest");
MessagesWindow.window.showLoader();
t.children().remove();
var n = new west.gui.Scrollpane;
e(n.getMainDiv()).css("height", "385px");
t.append(n.getMainDiv());
for (var r in statistic.chest) {
var i = statistic.chest[r];
var s = (new tw2widget.Item(ItemManager.get(r), "item_inventory")).setCount(i.count);
s.getImgEl().addClass("item_inventory_img");
n.appendContent(e('<div style="float:left;position:relative;height:61px;width:60px;margin:5px" />').append(s.getMainDiv()));
var o = 0;
var u = e('<div style="float:left;position:relative;width:590px;margin:5px" />');
for (var a in i.items) {
o++;
var s = (new tw2widget.Item(ItemManager.get(a), "item_inventory")).setCount(i.items[a]);
s.getImgEl().addClass("item_inventory_img");
u.append(s.getMainDiv())
}
u.css("height", (parseInt(o / 10, 10) + 1) * 61 + "px");
n.appendContent('<div style="float:left;position:relative;width:10px;height:' + String((parseInt(o / 10, 10) + 1) * 61 + 10) + "px;background: url(" + Game.cdnURL + '/images/window/report/devider_report.png) repeat-x scroll 0 0 transparent;" />');
n.appendContent(u);
n.appendContent('<div style="clear:both;position:relative;width:100%;height:10px;display:block;background: url(' + Game.cdnURL + '/images/window/dailyactivity/wood_devider_horiz.png) repeat-x scroll 0 0 transparent;" />')
}
MessagesWindow.window.hideLoader()
};
return t
}($);
var analyse = function (e) {
if (locked) {
return
}
locked = true;
reports = [];
queryReports(e)
};
var queryReports = function (e, t) {
if (!t) {
t = 1
}
lastPage = t;
Ajax.remoteCall("reports", "get_reports", {page: t, folder: e}, function (t) {
readReports(e, t)
})
};
var readReports = function (e, t) {
var n = true;
if (typeof t.reports !== "object") {
t.reports = [];
n = false
}
if (typeof t.page == "undefined" || lastPage !== t.page) {
t.reports = [];
n = false
}
for (var r = 0; r < t.reports.length; r++) {
var i = t.reports[r];
if (i.report_id <= statistic[e].last) {
n = false;
break
}
reports.push({id: i.report_id, hash: i.hash, type: e})
}
gui.bar.setMaxValue(reports.length);
if (n) {
window.setTimeout(function () {
queryReports(e, lastPage + 1)
}, Timer.getTimeout())
} else {
analyseReports(e)
}
};
var analyseReports = function (e) {
if (reports.length > 0) {
gui.bar.setValue(gui.bar.getValue() + 1);
queryReport(reports.pop())
} else {
Cache.save("statistic", statistic);
locked = false;
show(e, true)
}
};
var queryReport = function (e) {
$.post("game.php?window=reports&mode=show_report", {
flash: null,
hash: e.hash,
report_id: e.id
}, function (t) {
readReport(e.type, t)
}, "json")
};
var readReport = function (e, t) {
if (!t || !t.report_id || !t.publishHash) {
(new UserMessage("empty Server Response", UserMessage.TYPE_ERROR)).show();
return false
}
if (typeof t.page !== "string" || typeof t.title !== "string" || typeof t.js !== "string") {
failedReports.push(t.report_id)
} else {
switch (e) {
case"job":
analyseJobReport(t);
break;
case"duel":
analyseDuelReport(t);
break
}
statistic[e].last = t.report_id
}
window.setTimeout(function () {
analyseReports(e)
}, Timer.getTimeout())
};
var analyseDuelReport = function (e) {
};
var analyseJobReport = function (json) {
try {
data = {
id: null,
hash: null,
job: null,
motivation: null,
duration: null,
wage: null,
bond: null,
experience: null,
injury: 0,
killed: false,
date_received: null,
items: {}
};
data.id = json.report_id;
data.hash = json.publishHash;
var job = Jobs.getJobByName(json.title.slice(json.title.indexOf(":") + 1));
if (!job) {
failedReports.push(data.id);
return false
}
data.job = job.id;
data.date_received = json.date_received;
var tmp = $(json.page);
tmp.find(".rp_row_jobdata").each(function (index) {
var str = $.trim($(this).children("span:last-child").html());
str = str.split(" ").join(" ");
switch (index) {
case 0:
data.motivation = parseInt(str.slice(0, str.indexOf(" ")), 10);
break;
case 1:
var tmp = str.replace("h", " * 3600 + ");
tmp = tmp.replace("m", " * 60 + ");
tmp = tmp.replace("s", " * 1 + ");
tmp += "0";
try {
data.duration = parseInt(eval(tmp), 10)
} catch (e) {
throw{message: "unrecognized time on report: " + str}
}
break;
case 2:
data.wage = parseInt(str.slice(str.indexOf(" ") + 1), 10);
break;
case 3:
data.bond = parseInt(str, 10);
break;
case 4:
data.experience = parseInt(str.slice(0, str.indexOf(" ")), 10);
break
}
});
tmp.find(".rp_hurtmessage_text").each(function () {
var e = new RegExp("[0-9]+");
data.injury = Number(e.exec($(this).html()))
});
tmp.find(".rp_row_killmessage").each(function () {
data.killed = true
});
var tmp = json.js.split(";");
$(tmp).each(function () {
var e = new RegExp(/\s*ItemManager\.get\(([0-9]+)\)\s*\)\.setCount\(([0-9]+)\)/m);
var t = e.exec(this);
if (t) {
data.items[Number(t[1])] = Number(t[2])
}
});
if (!statistic.job[data.job]) {
statistic.job[data.job] = {count: 0, products: {}}
}
var jobstats = statistic.job[data.job];
jobstats.count++;
if (!jobstats[data.motivation]) {
jobstats[data.motivation] = {
count: 0,
duration: 0,
wage: 0,
bond: 0,
experience: 0,
injury: {},
killed: 0,
items: {},
extraitems: {}
}
}
var stats = jobstats[data.motivation];
if (!isDefined(stats.duration)) {
stats.duration = 0
}
stats.count++;
stats.duration += data.duration;
stats.wage += data.wage;
stats.bond += data.bond;
stats.experience += data.experience;
if (!stats.injury[data.injury]) {
stats.injury[data.injury] = 0
}
stats.injury[data.injury]++;
if (data.killed) {
stats.killed++
}
for (var key in data.items) {
var id = Number(key);
var geronimoID = TWDB.Util.isNewIDsystem() ? 138e3 : 138;
if (id === geronimoID) {
if (!isDefined(statistic.extra)) {
statistic.extra = {count: 0};
_self.extra = true
}
statistic.extra.count++;
statistic.extra[statistic.extra.count] = data
}
var count = data.items[id];
var item = ItemManager.get(id);
if (Jobs.isProduct(id) !== -1) {
if (!jobstats.products[id]) {
jobstats.products[id] = {last: 0}
}
var tmp = jobstats.products[id];
for (var i = 0; i < count; i++) {
var last = jobstats.count - tmp.last;
tmp.last = jobstats.count;
if (!tmp[last]) {
tmp[last] = 0
}
tmp[last]++
}
} else if (item.price == 0) {
if (!stats.extraitems[id]) {
stats.extraitems[id] = 0
}
stats.extraitems[id]++
} else {
luck = true;
if (!stats.items[id]) {
stats.items[id] = 0
}
stats.items[id]++
}
}
} catch (e) {
failedReports.push(data.id);
return false
}
};
var show = function (e, t) {
if (!MessagesWindow.window) {
return
}
gui.window = $(MessagesWindow.window.getContentPane()).find(".messages-analyser-" + e);
if (typeof t == "undefined") {
MessagesWindow.window.showLoader();
gui.bar = new west.gui.Progressbar(0, reports.length);
gui.window.children().remove();
gui.window.append(gui.bar.getMainDiv());
analyse(e)
} else {
switch (e) {
case"job":
var n = showJobs();
break;
case"duel":
var n = showDuels();
break
}
gui.window.children().remove();
gui.window.append(n);
sort();
switchAvg();
sort();
MessagesWindow.window.hideLoader()
}
};
var sort = function (e) {
try {
if (typeof e != "undefined") {
if (sorting.type == e) {
sorting.ord *= -1
} else {
sorting.ord = 1;
sorting.type = e
}
} else {
var e = sorting.type
}
var t = sorting.ord;
var n = function (n, r) {
var i = $(n).find(".cell_" + e).html();
var s = $(r).find(".cell_" + e).html();
if (Number(i) == i) {
return i * 1 > s * 1 ? t : -t
} else {
return i > s ? t : -t
}
};
gui.rows.sort(n);
for (var r = 0; r < gui.rows.length; r++) {
gui.bodyscroll.appendContent(gui.rows[r])
}
} catch (i) {
Error.report(i, "Analyser sort")
}
};
var switchAvg = function () {
switch (sorting.avg) {
case"avg":
sorting.avg = "sum";
break;
case"sum":
sorting.avg = "avg";
break
}
$(gui.window).find("div.row div").each(function (e) {
var t = $(this).data(String(sorting.avg));
var n = $(this).data(String(sorting.avg) + "-t");
$(this).html(t).attr("title", n)
})
};
var showJobs = function () {
gui.window.addClass("view-rewards");
sorting = {ord: 1, type: 0, avg: "avg"};
var e = $('<div class="fancytable">' + '<div class="_bg tw2gui_bg_tl"></div>' + '<div class="_bg tw2gui_bg_tr"></div>' + '<div class="_bg tw2gui_bg_bl"></div>' + '<div class="_bg tw2gui_bg_br"></div>' + '<div class="trows">' + '<div class="thead statics">' + '<div class="row row_head">' + '<div class="cell_0 view-rewards view-items" style="width:91px; text-align:center;">' + '<span title="Nume" style="cursor:pointer, margin-bottom:3px;">' + '<img src="' + Images.iconName + '" />' + "</span>" + "</div>" + '<div class="cell_1 view-rewards view-items" style="width:50px; text-align:center;">' + '<span title="Număr">' + '<img src="' + Images.iconCount + '" />' + "</span>" + "</div>" + '<div class="cell_2 view-rewards view-items" style="width:50px; text-align:center;">' + '<span title="Durată">' + '<img src="' + Images.iconClock + '" />' + "</span>" + "</div>" + '<div class="cell_3 view-rewards" style="width:50px; text-align:center;">' + '<span title="Experienţă">' + '<img src="' + Images.iconExperience + '" />' + "</span>" + "</div>" + '<div class="cell_4 view-rewards" style="width:50px; text-align:center;">' + '<span title="Salariu">' + '<img src="' + Images.iconDollar + '" />' + "</span>" + "</div>" + '<div class="cell_5 view-rewards" style="width:50px; text-align:center;">' + '<span title="Obligaţiune">' + '<img src="' + Images.iconUpb + '" />' + "</span>" + "</div>" + '<div class="cell_6 view-rewards" style="width:50px; text-align:center;">' + '<span title="Motivație">' + '<img src="' + Images.iconMoti + '" />' + "</span>" + "</div>" + '<div class="cell_7 view-rewards" style="width:50px; text-align:center;">' + '<span title="Pericol">' + '<img src="' + Images.iconDanger + '" />' + "</span>" + "</div>" + '<div class="cell_8 view-rewards" style="width:50px; text-align:center;">' + '<span title="Omorât">' + '<img src="' + Images.iconKilled + '" />' + "</span>" + "</div>" + '<div class="cell_9 view-rewards" style="width:50px; text-align:center;">' + '<span title="Produse">' + '<img src="' + Images.iconYield + '" />' + "</span>" + "</div>" + '<div class="cell_9 view-items" style="width:63px; text-align:center;">' + '<span title="Produse">' + '<img src="' + Images.iconYield + '" />' + "</span>" + "</div>" + '<div class="cell_10 view-rewards" style="width:50px; text-align:center;">' + '<span title="Obiect">' + '<img src="' + Images.iconItem + '" />' + "</span>" + "</div>" + '<div class="cell_10 view-items" style="width:378px; text-align:center;">' + '<span title="Obiect">' + '<img src="' + Images.iconItem + '" />' + "</span>" + "</div>" + '<div class="cell_11 view-rewards" style="width:41px; text-align:center;">' + '<span title="Noroc">' + '<img src="' + Images.iconLuck + '" />' + "</span>" + "</div>" + '<div class="cell_reset view-rewards view-items" style="width:20px; text-align:right;">' + '<span title="Resetare">' + '<img src="' + Images.iconReset + '" />' + "</span>" + "</div>" + "</div>" + "</div>" + '<div class="tbody">' + '<div class="_bg tw2gui_bg_l"></div>' + '<div class="_bg tw2gui_bg_r"></div>' + "</div>" + '<div class="tfoot statics">' + '<div class="row row_foot"></div>' + "</div>" + "</div>" + "</div>");
e.find(".row_head > div").each(function () {
var e = $(this).attr("class").match(/cell_(\d+|reset)/)[1], t = $(this).find("img");
if (e == "reset") {
$(this).click(function () {
reset("job")
})
} else {
$(this).click(function (e) {
return function () {
sort(e)
}
}(e * 1))
}
});
e.find(".row_head").find("img").css("cursor", "pointer");
var t = 0;
var n = {
jobs: 0,
count: 0,
duration: 0,
experience: 0,
wage: 0,
bond: 0,
motivation: 0,
injury: 0,
killed: 0,
products: 0,
items: 0,
luck: 0
};
var r = statistic.job;
var i = $();
gui.rows = [];
for (var s in r) {
var o = Jobs.getJobById(s);
if (!o) {
continue
}
var u = {
count: 0,
duration: 0,
experience: 0,
wage: 0,
bond: 0,
motivation: 0,
injury: 0,
killed: 0,
products: 0,
items: 0,
luck: 0,
all_products: {},
all_items: {}
};
var a = r[s];
u.count = a.count;
var f = 0;
for (var t = 0; t < o.randomyields.length; t++) {
f += o.randomyields[t]
}
if (typeof o.yields.length == "undefined") {
for (var l in o.yields) {
f += o.yields[l].prop
}
}
for (var l in a.products) {
for (var c in a.products[l]) {
if (c == "last") {
continue
}
var h = ItemManager.get(l);
u.products += Number(a.products[l][c]);
u.luck += Number(h.price * a.products[l][c]);
u.all_products[l] = (u.all_products[l] || 0) + a.products[l][c]
}
}
for (var p in a) {
if (p == "count" || p == "products") {
continue
}
var c = a[p];
u.motivation += p * c.count;
u.bond += c.bond;
u.duration += c.duration || 0;
u.experience += c.experience;
for (var d in c.injury) {
u.injury += d * c.injury[d]
}
for (var l in c.items) {
var h = ItemManager.get(l);
u.items += Number(c.items[l]);
u.luck += Number(h.price * c.items[l]);
u.all_items[l] = (u.all_items[l] || 0) + c.items[l]
}
u.killed += c.killed;
u.wage += c.wage
}
var v = $('<div class="row row_' + t + '" />');
var c = $('<div class="cell_0 view-rewards view-items" style="width:91px; text-align:left;cursor:pointer;font-size:11px;" ></div>');
c.data("sum", o.name);
c.data("sum-t", o.name);
c.data("avg", o.name);
c.data("avg-t", o.name);
v.append(c);
n.jobs++;
var c = $('<div class="cell_1 view-rewards view-items" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.count);
c.data("sum-t", u.count);
c.data("avg", u.count);
c.data("avg-t", u.count);
v.append(c);
n.count += u.count;
var c = $('<div class="cell_2 view-rewards view-items" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", (u.duration / 3600).round(2));
c.data("sum-t", String((u.duration / 3600).round(2)) + " ore");
c.data("avg", (u.duration / (3600 * u.count)).round(2));
c.data("avg-t", "Ø " + String((u.duration / (3600 * u.count)).round(2)) + " ore");
v.append(c);
n.duration += u.duration;
var c = $('<div class="cell_3 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.experience);
c.data("sum-t", String(u.experience));
c.data("avg", (u.experience / u.count).round(2));
c.data("avg-t", "Ø " + String((u.experience / u.count).round(2)));
v.append(c);
n.experience += u.experience;
var c = $('<div class="cell_4 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.wage);
c.data("sum-t", "$" + String(u.wage));
c.data("avg", (u.wage / u.count).round(2));
c.data("avg-t", "Ø $" + String((u.wage / u.count).round(2)));
v.append(c);
n.wage += u.wage;
var c = $('<div class="cell_5 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.bond);
c.data("sum-t", String(u.bond));
c.data("avg", (u.bond / u.count * 100).round(2));
c.data("avg-t", "Ø " + String((u.bond / u.count * 100).round(2)) + "%");
v.append(c);
n.bond += u.bond;
var c = $('<div class="cell_6 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.motivation);
c.data("sum-t", String(u.motivation) + "%");
c.data("avg", (u.motivation / u.count).round(2));
c.data("avg-t", "Ø " + String((u.motivation / u.count).round(2)) + "%");
v.append(c);
n.motivation += u.motivation;
var c = $('<div class="cell_7 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.injury);
c.data("sum-t", String(u.injury));
c.data("avg", (u.injury / u.count).round(2));
c.data("avg-t", "Ø " + String((u.injury / u.count).round(2)));
v.append(c);
n.injury += u.injury;
var c = $('<div class="cell_8 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.killed);
c.data("sum-t", String(u.killed));
c.data("avg", (u.killed / u.count * 100).round(2));
c.data("avg-t", "Ø " + String((u.killed / u.count * 100).round(2)) + "%");
v.append(c);
n.killed += u.killed;
var c = $('<div class="cell_9 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.products);
c.data("sum-t", String(u.products));
c.data("avg", (u.products / u.count * 100).round(2));
c.data("avg-t", "Ø " + String((u.products / u.count * 100).round(2)) + "% [" + f * 100 + "%]");
v.append(c);
n.products += u.products;
var c = $('<div class="cell_9 view-items" style="width:63px; text-align:center;cursor:pointer;" ></div>');
var m = $.map(u.all_products, function (e, t) {
return (new tw2widget.Item(ItemManager.get(t))).setCount(e).getMainDiv()
});
c.data("sum", m);
c.data("avg", m);
v.append(c);
var c = $('<div class="cell_10 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.items);
c.data("sum-t", String(u.items));
c.data("avg", (u.items / u.count * 100).round(2));
c.data("avg-t", "Ø " + String((u.items / u.count * 100).round(2)) + "%");
v.append(c);
n.items += u.items;
var c = $('<div class="cell_10 view-items" style="width:390px; text-align:center;cursor:pointer;" ></div>');
var m = $.map(u.all_items, function (e, t) {
return (new tw2widget.Item(ItemManager.get(t))).setCount(e).getMainDiv()
});
c.data("sum", m);
c.data("avg", m);
v.append(c);
var c = $('<div class="cell_11 view-rewards" style="width:50px; text-align:center;cursor:pointer;" ></div>');
c.data("sum", u.luck);
c.data("sum-t", "$" + String(u.luck));
c.data("avg", (u.luck / u.count).round(2));
c.data("avg-t", "Ø $" + String((u.luck / u.count).round(2)));
v.append(c);
n.luck += u.luck;
gui.rows.push(v);
v.click(function () {
detail($(this).children(".cell_0").html())
});
t++
}
gui.bodyscroll = new west.gui.Scrollpane;
$(gui.bodyscroll.getMainDiv()).css("height", "300px");
e.find(".tbody").append(gui.bodyscroll.getMainDiv());
gui.footer = e.find(".row_foot");
var c = $('<div class="cell_0" style="width:71px; text-align:center;" ></div>');
c.data("sum", n.jobs);
c.data("sum-t", n.jobs + " Munci");
c.data("avg", n.jobs);
c.data("avg-t", n.jobs + " Munci");
gui.footer.append(c);
var c = $('<div class="cell_0 view-rewards view-items" style="width:87px; text-align:center;cursor:pointer;color:#444;" ></div>');
c.mouseenter(function () {
$(this).css("color", "#888")
}).mouseleave(function () {
$(this).css("color", "#444")
});
c.click(function () {
switchAvg()
});
c.data("sum", "∑");
c.data("sum-t", "schimbă în Ø");
c.data("avg", "Ø");
c.data("avg-t", "schimbă în ∑");
gui.footer.append(c);
var c = $('<div class="cell_1 view-rewards view-items" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.count);
c.data("sum-t", n.count);
c.data("avg", n.count);
c.data("avg-t", n.count);
gui.footer.append(c);
var c = $('<div class="cell_2 view-rewards view-items" style="width:50px; text-align:center;" ></div>');
c.data("sum", (n.duration / 3600).round(2));
c.data("sum-t", String((n.duration / 3600).round(2)) + "ore");
c.data("avg", (n.duration / (3600 * n.count)).round(2));
c.data("avg-t", "Ø " + String((n.duration / (3600 * n.count)).round(2)) + "ore");
gui.footer.append(c);
var c = $('<div class="cell_3 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.experience);
c.data("sum-t", String(n.experience));
c.data("avg", (n.experience / n.count).round(2));
c.data("avg-t", "Ø " + String((n.experience / n.count).round(2)));
gui.footer.append(c);
var c = $('<div class="cell_4 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.wage);
c.data("sum-t", "$" + String(n.wage));
c.data("avg", (n.wage / n.count).round(2));
c.data("avg-t", "Ø $" + String((n.wage / n.count).round(2)));
gui.footer.append(c);
var c = $('<div class="cell_5 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.bond);
c.data("sum-t", String(n.bond));
c.data("avg", (n.bond / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.bond / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_6 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.motivation);
c.data("sum-t", String(n.motivation) + "%");
c.data("avg", (n.motivation / n.count).round(2));
c.data("avg-t", "Ø " + String((n.motivation / n.count).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_7 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.injury);
c.data("sum-t", String(n.injury));
c.data("avg", (n.injury / n.count).round(2));
c.data("avg-t", "Ø " + String((n.injury / n.count).round(2)));
gui.footer.append(c);
var c = $('<div class="cell_8 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.killed);
c.data("sum-t", String(n.killed));
c.data("avg", (n.killed / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.killed / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_9 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.products);
c.data("sum-t", String(n.products));
c.data("avg", (n.products / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.products / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_9 view-items" style="width:63px; text-align:center;" ></div>');
c.data("sum", n.products);
c.data("sum-t", String(n.products));
c.data("avg", (n.products / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.products / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_10 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.items);
c.data("sum-t", String(n.items));
c.data("avg", (n.items / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.items / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_10 view-items" style="width:390px; text-align:center;" ></div>');
c.data("sum", n.items);
c.data("sum-t", String(n.items));
c.data("avg", (n.items / n.count * 100).round(2));
c.data("avg-t", "Ø " + String((n.items / n.count * 100).round(2)) + "%");
gui.footer.append(c);
var c = $('<div class="cell_11 view-rewards" style="width:50px; text-align:center;" ></div>');
c.data("sum", n.luck);
c.data("sum-t", "$" + String(n.luck));
c.data("avg", (n.luck / n.count).round(2));
c.data("avg-t", "Ø $" + String((n.luck / n.count).round(2)));
gui.footer.append(c);
var i = $('<div style="margin: 0px 6px 0px 6px;width:680px;" />').append($('<a href="#">Schimbă între recompense şi obiecte găsite</a>').css({
marginTop: "-8px",
display: "block",
textAlign: "center"
}).click(function () {
$(".messages-analyser-job").toggleClass("view-rewards view-items")
})).append(e);
return i
};
var detail = function (e) {
};
_self.getExtra = function () {
if (isDefined(statistic.extra)) {
return statistic.extra
}
return null
};
return _self
}($);
Debugger.Analyser = Analyser;
var Notes = function (e) {
var t = {};
var n = null;
var r = {};
var i = function () {
if (r.ready) {
return
}
if (r.ready) {
return
}
if (Settings.get("notes", true)) {
GameInject.addTabOnMessagesWindow("Notițe", "notes", function () {
s()
})
}
r.ready = true
};
r = Loader.add("Notes", "tw-db Notes", i, {Cache: true, Settings: true});
var s = function () {
if (!w.MessagesWindow.window) {
return
}
n = e(w.MessagesWindow.window.getContentPane()).find(".messages-notes");
n.css("width", "680px").css("margin", "0 auto").css("position", "relative").css("top", "0");
a(Cache.load("notes"))
};
var o = function (e) {
Cache.save("notes", e);
(new UserMessage("Salvat cu succes", UserMessage.TYPE_SUCCESS)).show()
};
var u = function (t) {
n.children().remove();
w.MessagesWindow.window.showLoader();
var r = (new west.gui.Textarea).setWidth(660).setHeight(300).setContent(t);
n.append(e('<div style="margin-left:8px" />').append((new west.gui.Bbcodes(r)).getMainDiv())).append(r.getMainDiv()).append(e('<div style="margin-left:8px" />').append((new west.gui.Button("Salvează".escapeHTML(), function () {
o(r.getContent());
a(r.getContent())
})).getMainDiv()).append((new west.gui.Button("Previzualizează".escapeHTML(), function () {
a(r.getContent())
})).getMainDiv()));
w.MessagesWindow.window.hideLoader()
};
var a = function (t) {
n.children().remove();
var r = new west.gui.Scrollpane;
e(r.getMainDiv()).css("height", "324px");
e(r.getMainDiv()).find(".tw2gui_scrollpane_clipper_contentpane").addClass("selectable");
n.append(e('<div style="margin:8px" />').append(r.getMainDiv())).append(e('<div style="margin-left:8px" />').append((new west.gui.Button("Salvează".escapeHTML(), function () {
o(t)
})).getMainDiv()).append((new west.gui.Button("editează".escapeHTML(), function () {
u(t)
})).getMainDiv()));
if (t) {
w.MessagesWindow.window.showLoader();
Ajax.remoteCall("settings", "get_parsed_text", {text: t}, function (e) {
r.appendContent(w.Game.TextHandler.parse(e.parsed_text));
w.MessagesWindow.window.hideLoader()
})
}
};
return t
}($);
Debugger.Notes = Notes;
var Map = function (e) {
var t = {};
var n = false;
var r = 181;
var i = 79;
var s = 0;
var o = 0;
var u = {};
var a = {};
var f = null;
var l = null;
var c = {};
var h = function () {
if (c.ready) {
return
}
if (Settings.get("showscrollto", true)) {
d()
}
Ajax.get("map", "get_minimap", {}, function (e) {
if (e.error) {
c.failed = true;
return (new UserMessage(e.msg)).show()
}
u = e.job_groups;
c.ready = true
})
};
c = Loader.add("Map", "tw-db Map", h, {Settings: true});
t.getNearestJob = function (e) {
var n = JobList.getJobById(e);
var r = u[n.groupid];
if (!r) {
return []
}
var i = [];
var s = t.getLastPosition();
for (var o = 0; o < r.length; o++) {
var a = r[o][0] - s[0];
var f = r[o][1] - s[1];
var l = Math.sqrt(a * a + f * f);
var c = window.Map.calcWayTime({x: r[o][0], y: r[o][1]}, {x: s[0], y: s[1]});
var h = Number(Math.atan(f / a) * 180 / Math.PI).round(0);
if (a < 0) {
h -= 180
}
i.push({dist: l, time: c, x: r[o][0], y: r[o][1], angle: h})
}
var p = function (e, t) {
return e.dist * 1 > t.dist * 1 ? 1 : -1
};
i.sort(p);
return i
};
t.getLastPosition = function () {
var e = Character.position.x;
var t = Character.position.y;
var n = TaskQueue.queue;
for (var r = 0; r < n.length; r++) {
var i = n[r].wayData;
if (i.x) {
e = i.x;
t = i.y
}
}
return [e, t]
};
t.setMinimapJob = function (t) {
if (f) {
window.clearInterval(l);
window.clearInterval(f)
}
var n = function (t) {
if (!MinimapWindow.window || e(MinimapWindow.window.divMain).find(".tw2gui_jobsearch_string").length == 0 || !e(MinimapWindow.window.divMain).find(".tw2gui_jobsearch_string").is(":visible")) {
return
}
window.clearInterval(f);
window.clearInterval(l);
f = null;
l = null;
MinimapWindow.resetSearchContext();
e("input.tw2gui_jobsearch_string", MinimapWindow.DOM).val(t).keyup()
};
l = setInterval(function () {
window.clearInterval(f);
window.clearInterval(l);
f = null;
l = null
}, 3e5);
f = setInterval(function () {
n(t)
}, 200)
};
var p = function (e) {
var n = false;
var u = 0;
var e = [];
var a = s;
var f = o;
for (var a = s; a <= r; a++) {
for (var f = o; f <= i; f++) {
u++;
e.push([a, f]);
if (u > 299) {
n = true;
break
}
}
if (n) {
break
}
o = 0
}
s = a;
o = f + 1;
if (e.length > 0) {
window.Map.Data.Loader.load(e, function () {
setTimeout(function () {
t.loadMap()
}, Timer.getTimeout())
})
}
};
t.loadMap = function () {
p()
};
var d = function () {
var t = "div#mmap_twdb_coords {position: absolute; bottom: 35px; left: 1px; display: block;}\n" + "div#mmap_twdb_coords > img {cursor:pointer; opacity:0.5; position:relative;}";
TWDB.Util.addCss(t, "minimap");
var n = function () {
var t = e('<div id="mmap_twdb_coords" />');
var n = new west.gui.Textfield;
var r = new west.gui.Textfield;
var i = "";
var s = "";
n.setWidth(45);
r.setWidth(45).setMaxLength(5);
var o = function () {
var e = Number(n.getValue());
var t = Number(r.getValue());
window.Map.center(e, t);
n.setValue("");
r.setValue("")
};
e(n.getMainDiv()).find("input").keyup(function (t) {
window.setTimeout(function () {
var u;
if (t.ctrlKey && t.keyCode === 86 && !t.altKey) {
u = (new RegExp("^([0-9]{1,5})([^0-9]+)([0-9]{1,5})$")).exec(e.trim(n.getValue()));
if (u) {
n.setValue(u[1]);
r.setValue(u[3]);
e(r.getMainDiv()).find("input").focus();
i = n.getValue();
s = r.getValue();
return
}
u = (new RegExp("^([0-9]{1,5})$")).exec(e.trim(n.getValue()));
if (u) {
n.setValue(u[1]);
e(r.getMainDiv()).find("input").focus();
i = n.getValue();
return
}
n.setValue(i)
}
if (t.keyCode === 13) {
return o()
}
if (String(e.trim(n.getValue())).length === 0) {
i = n.getValue();
return
}
u = (new RegExp("^([0-9]{1,5})$")).exec(e.trim(n.getValue()));
if (u) {
n.setValue(u[1]);
if (String(u[1]).length === 5) {
e(r.getMainDiv()).find("input").focus()
}
i = n.getValue();
return
}
n.setValue(i)
}, 100)
});
e(r.getMainDiv()).find("input").keyup(function (t) {
window.setTimeout(function () {
if (t.ctrlKey && t.keyCode == 86 && !t.altKey) {
var n = (new RegExp("^([0-9]{1,5})$")).exec(e.trim(r.getValue()));
if (n) {
r.setValue(n[1]);
e(r.getMainDiv()).find("input").focus();
s = r.getValue();
return
}
r.setValue(s)
}
if (t.keyCode == 13) {
o();
return
}
if (String(e.trim(r.getValue())).length == 0) {
s = r.getValue();
return
}
var n = (new RegExp("^([0-9]{1,5})$")).exec(e.trim(r.getValue()));
if (n) {
r.setValue(n[1]);
if (String(n[1]).length == 5) {
e(r.getMainDiv()).find("input").focus()
}
s = r.getValue();
return
}
r.setValue(s)
}, 100)
});
var u = (new west.gui.Button("Ok", function () {
o()
}, null, null, "Centrează harta pe coordonatele date ")).setWidth("48");
var a = e('<img title="Arată coordonatele pe hartă " src="' + Images.iconCount + '" />').click(function () {
if (e(this).css("opacity") === 1) {
e(this).css("opacity", "0.5");
window.Map.hideCoords()
} else {
e(this).css("opacity", "1");
window.Map.showCoords()
}
});
t.append(a, n.getMainDiv(), "<span>|</span>", r.getMainDiv(), e(u.getMainDiv()).css("top", "6px"));
e(".minimap-right", MinimapWindow.window.divMain).append(t)
};
GameInject.injectMinimap(function () {
n()
})
};
return t
}($);
_base.Map = Map;
Debugger.Map = Map;
var BonusJobs = function (e) {
var t = {}, n, r = {}, i = {gold: false, silver: false}, s = function () {
if (r.ready) {
return
}
if (!Settings.get("showbonusjobs", true)) {
r.ready = true;
return
}
var e, t, s, a, f, l, c;
n = Cache.load("bonusjobs") || {};
i = Cache.load("bonusdisplay") || {gold: false, silver: false};
for (e in n) {
if (!n.hasOwnProperty(e)) {
continue
}
t = n[e];
s = 0;
for (a in t) {
if (!t.hasOwnProperty(a)) {
continue
}
if (t[a].gold) {
s++;
continue
}
var f = new Date;
var l = new Date;
l.setHours(2);
l.setMinutes(15);
l.setSeconds(0);
l.setMilliseconds(0);
var c = l.getTime();
if (f.getHours() < 2 || f.getHours() == 2 && f.getMinutes() < 15) {
c -= 24 * 60 * 60 * 1e3
}
if (t[a].time > c) {
s++
} else {
delete t[a]
}
}
if (s == 0) {
delete n[e]
}
}
u();
o();
r.ready = true
};
r = Loader.add("BonusJobs", "tw-db BonusJobs", s, {Settings: true, Cache: true, Jobs: true});
var o = function () {
var e = function (e) {
var t = window.Map.Helper.getPosition(e.parent);
if (!isDefined(t) || !isDefined(t.x) || !isDefined(t.y)) {
return
}
if (!isDefined(window.Map.JobHandler.Featured[t.x + "-" + t.y])) {
if (isDefined(n[t.x + "-" + t.y])) {
delete n[t.x + "-" + t.y];
Cache.save("bonusjobs", n)
}
return
}
var r = window.Map.JobHandler.Featured[t.x + "-" + t.y], i;
n[t.x + "-" + t.y] = {};
for (i in r) {
if (!r.hasOwnProperty(i)) {
continue
}
n[t.x + "-" + t.y][i] = r[i];
n[t.x + "-" + t.y][i]["time"] = (new Date).getTime()
}
Cache.save("bonusjobs", n)
};
GameInject.injectRadialmenu(function (t) {
e(t)
})
};
var u = function () {
var t = "div#mmap_twdb_bonusjobs {position:absolute; top:40px; right:10px;}\n" + 'div#mmap_twdb_bonusjobs > input[type="checkbox"] {margin-left:6px; cursor:pointer;}\n' + "div#mmap_twdb_bonusjobs > div {position:relative; display:inline-block; height:9px; width:9px; margin:1px;}\n" + "div#mmap_twdb_bonusjobs > img {margin-left:3px; cursor:pointer; position:relative; display:inline-block; height:16px; width:16px; top:-4px;}";
TWDB.Util.addCss(t, "minimap");
var n = function () {
var t = e('<div id="mmap_twdb_bonusjobs" />').append(e('<input title="Arată muncile de aur" type="checkbox" ' + (i.gold ? 'checked="checked"' : "") + " />").change(function () {
i.gold = e(this).attr("checked");
a()
})).append('<div title="Arată muncile de aur" style="background-color:yellow; border:1px solid red;" />').append(e('<input title="Arată muncile de argint" type="checkbox" ' + (i.silver ? 'checked="checked"' : "") + " />").change(function () {
i.silver = e(this).attr("checked");
a()
})).append('<div title="Arată muncile de argint" style="background-color:white; border:1px solid black;" />').append(e('<img title="Munci bonus Exportă" src="' + Images.iconExport + '" />').click(function () {
f()
})).append(e('<img title="Munci bonus Importă" src="' + Images.iconImport + '" />').click(function () {
l()
})).append(e('<img title="Munci bonus Resetare" src="' + Images.iconReset2 + '" />').click(function () {
c()
}));
e(MinimapWindow.window.divMain).find(".minimap-right").append(t);
a()
};
GameInject.injectMinimap(function () {
n()
})
};
var a = function () {
Cache.save("bonusdisplay", i);
e("#minimap_worldmap > div.TWDBbonusjob", MinimapWindow.window.divMain).remove();
var t = function (t, n, r, i, s) {
var o = .00513;
var u = parseInt(t * o, 10) - 3;
var a = parseInt(n * o, 10) + 2;
var f = "";
if (i > 1) {
f = "-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);"
}
var l = e('<div class="TWDBbonusjob" style="z-index:7;position:absolute;display:block;width:4px;height:4px;background-color:' + (r ? "yellow" : "white") + ";left:" + u + "px;top:" + a + "px;" + f + "border:1px solid " + (r ? "red" : "black") + ';" />').click(function (e, t) {
return function () {
window.Map.center(e, t)
}
}(t, n)).addMousePopup('<div style="min-width:60px;text-align:center">' + s.join('<div class="marker_popup_divider"></div>') + "</div>");
e(MinimapWindow.window.divMain).find("#minimap_worldmap").append(l)
};
var r = n;
for (key in r) {
if (!r.hasOwnProperty(key)) {
continue
}
var s = r[key];
var o = false;
var u = 0;
var a = [];
for (var f in s) {
if (!s.hasOwnProperty(f)) {
continue
}
if (s[f].gold) {
if (!i.gold) {
continue
}
o = true;
u++
}
if (s[f].silver) {
if (!i.silver) {
continue
}
u++
}
var l = s[f].x;
var c = s[f].y;
job = JobList.getJobById(s[f].job_id);
a.push(Jobs.getPopup(s[f].job_id, s[f].gold ? "gold" : "silver"))
}
if (u > 0) {
t(l, c, o, u, a)
}
}
};
var f = function () {
var t = [];
for (var r in n) {
if (!n.hasOwnProperty(r)) {
continue
}
var i = n[r];
for (var s in i) {
if (!i.hasOwnProperty(s)) {
continue
}
var o = Jobs.getJobById(s);
var u = Math.ceil(i[s].x / 6635) + (i[s].y > 10176 ? 7 : 0);
t.push({
name: o.name,
bonus: i[s].gold ? "gold" : "silver",
country: u,
x: i[s].x,
y: i[s].y,
id: s
})
}
}
var a = e("<textarea />").css({
width: "500px",
height: "200px",
"background-color": "transparent",
"border-width": "0px"
}).click(function () {
this.select()
});
var f = "";
var l = 1;
var c = function (e) {
if (f !== e) {
f = e;
l = 1
} else {
l *= -1
}
var n = function (e, t) {
return e[f] > t[f] ? l : -1 * l
};
t.sort(n);
var r = "";
var i = "";
for (var s = 0; s < t.length; s++) {
var o = t[s];
if (f == "country" && i !== o.country) {
i = o.country;
r += "-- ?country " + i + " --" + "\n"
}
r += o.name + "; " + o.bonus + "; " + o.x + "-" + o.y + "; " + o.id + "\n"
}
a.val(r)
};
c("name");
var h = e("<div />").css({
width: "500px",
height: "22px",
position: "relative",
display: "block"
}).append(e('<img src="' + Images.iconName + '" title=" sortat după nume " style="margin:0px 2px 0px 2px;cursor:pointer;" />').click(function () {
c("name")
})).append(e('<img src="' + Images.iconCount + '" title=" Sortează după ţară " style="margin:0px 2px 0px 2px;cursor:pointer;" />').click(function () {
c("country")
}));
(new west.gui.Dialog("Munci bonus Exportă", e("<div />").append(h).append(a))).addButton("ok").show()
};
var l = function () {
var t = e("<textarea />").css({width: "400px", height: "100px"});
var r = function () {
var r = t.val(), i = r.split(/[\n,\r,\r\n]/), s, o, u, f, l, c;
for (s = 0; s < i.length; s++) {
o = i[s].split(";", 4);
if (o.length !== 4 || !e.isNumeric(o[3]) || !Jobs.getJobById(Number(o[3]))) {
continue
}
u = String(o[2]).split("-", 2);
if (u.length !== 2 || !e.isNumeric(u[0]) || !e.isNumeric(u[1])) {
continue
}
f = Number(o[3]);
l = {
gold: e.trim(o[1]) == "gold" ? true : false,
group_id: Jobs.getJobById(f).groupid,
job_id: f,
silver: e.trim(o[1]) == "gold" ? false : true,
x: Number(u[0]),
y: Number(u[1]),
time: (new Date).getTime()
};
c = Number(u[0]) + "-" + Number(u[1]);
if (!isDefined(n[c])) {
n[c] = {}
}
n[c][f] = l
}
Cache.save("bonusjobs", n);
a()
};
(new west.gui.Dialog("Munci bonus Importă", t)).addButton("ok", r).addButton("cancel").show()
};
var c = function (e) {
try {
if (e) {
for (var t in n) {
if (!n.hasOwnProperty(t)) {
continue
}
var r = n[t];
var i = 0;
for (var s in r) {
if (!r.hasOwnProperty(s)) {
continue
}
if (e == "gold" && r[s].gold) {
i++;
continue
}
if (e == "silver" && r[s].silver) {
i++;
continue
}
delete r[s]
}
if (i == 0) {
delete n[t]
}
}
Cache.save("bonusjobs", n);
a();
(new UserMessage("Munci bonus Resetare", UserMessage.TYPE_SUCCESS)).show()
} else {
var o = "tw-db Munci bonus Resetare";
var u = '<div class="txcenter">Munci bonus Resetare</div>';
(new west.gui.Dialog(o, u, west.gui.Dialog.SYS_QUESTION)).addButton("Totul", function () {
c("all")
}).addButton("Munci de aur", function () {
c("silver")
}).addButton("Munci de argint", function () {
c("gold")
}).addButton("cancel").show()
}
} catch (f) {
Error.report(f, "bonusjob reset")
}
};
return t
}($);
Debugger.BonusJobs = BonusJobs;
var Chat = function (e) {
var t = {};
var n = false;
var i = {
":/": "sore",
"=:)": "invader",
">:(": "angry",
":'(": "cry",
":)": "smile",
":D": "grin",
":(": "frown",
";)": "smirk",
":P": "tongue",
":o": "ohmy",
":x": "muted",
":|": "silent",
">.<": "palm",
"-.-": "nc",
"o.O": "oo",
"O.o": "oo",
"^_^": "happy",
o_O: "oo",
"x.x": "xx",
"T.T": "cry",
"el pollo diablo!": "elpollodiablo",
"!el pollo diablo": "elpollodiablo_mirror",
"el pollo diablo?!": "elpollodiablo_front",
"add me": "sheep.gif",
"add me!": "sheep_rainbow.gif"
};
var s = [];
var o = {};
var u = function () {
if (o.ready) {
return
}
if (Settings.get("chat", true)) {
GameInject.ChatLayout(function (e) {
f(e)
});
GameInject.ChatSend(function (e) {
a(e)
});
var e = Cache.load("chathistory");
if (typeof e == "object" && e !== null) {
if (e.color) {
e = e.color;
Cache.save("chathistory", e)
}
s = e
}
if ($("div.tw2gui_window.chat.nominimize div.tw2gui_window_buttons_close").click().length > 0) {
ChatWindow.open()
}
}
o.ready = true
};
o = Loader.add("Chat", "tw-db Chat Enhancement", u, {Settings: true, Cache: true});
var a = function (e) {
var t = e.input.val();
if (!t) {
return
}
var n = function (t) {
if (e._caps) {
t = t.toUpperCase()
}
if (e._bold) {
t = t.replace(/\*/g, "~");
t = "*" + t + "*"
}
return t
};
if (t.substr(0, 1) == "/") {
r = new RegExp("^\\/(tell|msg)\\s+([^:]+):(.+)$");
v = t.match(r);
if (v) {
if (e._color) {
t = "/tell " + v[2] + ":/" + e._color + n(v[3])
} else {
t = "/tell " + v[2] + ":" + n(v[3])
}
}
e.input.val(t);
return
}
t = n(t);
if (e._color) {
t = "/" + e._color + t
}
e.input.val(t);
return
};
var f = function (e) {
var t = e.mainDiv.find(".TWDBchat");
if (t.length == 0) {
e.mainDiv.find(".chat_input").find(".cbg").css("left", "38px").addClass(".TWDBchat");
e._color = null;
e._bold = false;
e._caps = false;
l(e);
m(e)
}
};
var l = function (t) {
var n;
var r = e('<span style="padding:3px;display:none;width:160px;position:absolute;bottom:20px;left:-3px;" />');
for (var s in i) {
n = i[s].indexOf(".gif") === -1 ? i[s] + ".png" : i[s];
r.append(e('<img src="' + Game.cdnURL + "/images/chat/emoticons/" + n + '?1" title="' + s + '" style="cursor:pointer;margin:1px;" />').click(function (e) {
return function () {
t.input.val(t.input.val() + " " + e + " ");
t.input.focus();
r.hide()
}
}(s)))
}
var o = false;
t.mainDiv.find(".chat_input").append(e('<div style="position:absolute;width:15px;height:15px;bottom:7px;vertical-align:top;left:23px;cursor:pointer;" />').append(e('<img style="vertical-align:top;" src="' + Images.iconChatSM + '" />')).append(r).hover(function () {
o = true;
r.show()
}, function () {
o = false;
setTimeout(function () {
if (!o) {
r.hide()
}
}, 200)
}))
};
var c = function (e) {
var t = e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
if (t) {
return String(parseInt(t[1] * 9 / 255 + .5, 10)) + String(parseInt(t[2] * 9 / 255 + .5, 10)) + String(parseInt(t[3] * 9 / 255 + .5, 10))
} else {
return "000"
}
};
var h = function (e) {
return "rgb(" + parseInt(e[0] * 255 / 9, 10) + "," + parseInt(e[1] * 255 / 9, 10) + "," + parseInt(e[2] * 255 / 9, 10) + ")"
};
var p = function (e, t) {
if (isDefined(t.color)) {
var n = c(t.color);
var r = s.length;
for (var i = 0; i < r; i++) {
var o = s.shift();
if (o !== n) {
s.push(o)
}
}
s.push(n);
if (s.length > 5) {
s.shift()
}
Cache.save("chathistory", s);
e._color = n
}
if (t.color === null) {
e._color = null
}
if (isDefined(t.bold)) {
e._bold = t.bold
}
if (isDefined(t.caps)) {
e._caps = t.caps
}
if (e._bold) {
e.mainDiv.find(".TWDBtext").css("font-weight", "bold")
} else {
e.mainDiv.find(".TWDBtext").css("font-weight", "normal")
}
if (e._caps) {
e.mainDiv.find(".TWDBtext").html("A")
} else {
e.mainDiv.find(".TWDBtext").html("a")
}
if (e._color) {
e.mainDiv.find(".TWDBcolor").children("div").children("div").css("background-color", h(e._color));
if (e._color[1] >= 4) {
e.mainDiv.find(".TWDBtext").css("color", "#000")
} else {
e.mainDiv.find(".TWDBtext").css("color", "#fff")
}
} else {
e.mainDiv.find(".TWDBcolor").children("div").children("div").css("background-color", "#e0e2e0");
e.mainDiv.find(".TWDBtext").css("color", "#000")
}
e.input.focus()
};
var d = function (t) {
return e('<div style="position:absolute;display:block;width:15px;height:15px;"/>').append(e('<div style="position:absolute;width:15px;height:1px;top:7px;left:0px;background-color:' + t + ';opacity:0.1;" />')).append(e('<div style="position:absolute;width:1px;height:15px;top:0px;left:7px;background-color:' + t + ';opacity:0.1;" />')).append(e('<div style="position:absolute;width:15px;height:3px;top:6px;left:0px;background-color:' + t + ';opacity:0.33;" />')).append(e('<div style="position:absolute;width:3px;height:15px;top:0px;left:6px;background-color:' + t + ';opacity:0.33;" />')).append(e('<div style="position:absolute;width:15px;height:5px;top:5px;left:0px;background-color:' + t + ';opacity:0.47;" />')).append(e('<div style="position:absolute;width:5px;height:15px;top:0px;left:5px;background-color:' + t + ';opacity:0.47;" />')).append(e('<div style="position:absolute;width:13px;height:9px;top:3px;left:1px;background-color:' + t + ';opacity:0.6;" />')).append(e('<div style="position:absolute;width:9px;height:13px;top:1px;left:3px;background-color:' + t + ';opacity:0.6;" />')).append(e('<div style="position:absolute;width:11px;height:11px;top:2px;left:2px;background-color:' + t + ';opacity:0.8;" />')).append(e('<div style="position:absolute;width:13px;height:7px;top:4px;left:1px;background-color:' + t + ';" />')).append(e('<div style="position:absolute;width:7px;height:13px;top:1px;left:4px;background-color:' + t + ';" />')).append(e('<div style="position:absolute;width:9px;height:11px;top:2px;left:3px;background-color:' + t + ';" />')).append(e('<div style="position:absolute;width:11px;height:9px;top:3px;left:2px;background-color:' + t + ';" />'))
};
var m = function (t) {
try {
var n = e('<span style="position:relative;display:none;padding:3px;width:300px;position:absolute;bottom:17px;left:-5px;" />');
n.append('<div style="position:absolute;height: 50px; width:25;display:block" />');
var r = ["black", "red", "blue", "yellow", "green", "brown", "magenta", "gray"];
n.append(e('<div style="display:inline-block;width:15px;height:15px;padding:2px;opacity:0.5;"/>').append(d("#e0e2e0")).append(e('<div style="position:absolute;width:15px;height:15px;" ><table border="0" cellspacing="0" cellpadding="0" style="padding:0px;margin:0px;border:0px;" ><tr><td style="display:block;width:15px;height:15px;vertical-align:top;text-align:center;font-size:11px;color:#000;font-weight:bold;">a</td></tr></table></div>')).click(function () {
if (e(this).css("opacity") == .5) {
p(t, {bold: true});
e(this).css("opacity", 1)
} else {
p(t, {bold: false});
e(this).css("opacity", .5)
}
n.hide()
}));
n.append(e('<div style="display:inline-block;width:15px;height:15px;padding:2px;opacity:0.5;"/>').append(d("#e0e2e0")).append(e('<div style="position:absolute;width:15px;height:15px;" ><table border="0" cellspacing="0" cellpadding="0" style="padding:0px;margin:0px;border:0px;" ><tr><td style="display:block;width:15px;height:15px;vertical-align:top;text-align:center;font-size:11px;color:#000;">A</td></tr></table></div>')).click(function () {
if (e(this).css("opacity") == .5) {
p(t, {caps: true});
e(this).css("opacity", 1)
} else {
p(t, {caps: false});
e(this).css("opacity", .5)
}
n.hide()
}));
for (var i = 0; i < r.length; i++) {
n.append(e('<div style="display:inline-block;width:15px;height:15px;padding:2px;"/>').append(d(r[i])).click(function () {
p(t, {color: e(this).children("div").children("div").css("background-color")});
n.hide()
}))
}
n.append(e('<div style="margin:2px;display:inline-block;vertical-align:top;width:15px;height:15px;background:url(' + Images.iconChatNoColor + ')no-repeat 0px 0px transparent;"/>').click(function () {
p(t, {color: null});
n.hide()
}));
n.append(e('<div style="margin:3px;display:inline-block;vertical-align:top;width:13px;height:13px;background:url(' + Images.iconChat + ')no-repeat 0px 0px transparent;"/>').click(function () {
g(t);
n.hide()
}));
var s = false;
t.mainDiv.find(".chat_input").append(e('<div class="TWDBcolor" style="position:absolute;width:15px;height:15px;bottom:7px;vertical-align:top;left:5px;cursor:pointer;" />').append(d("#e0e2e0")).append(e('<div style="position:absolute;width:15px;height:15px;" ><table border="0" cellspacing="0" cellpadding="0" style="padding:0px;margin:0px;border:0px;" ><tr><td class="TWDBtext" style="display:block;width:15px;height:15px;vertical-align:top;text-align:center;font-size:11px;color:#000;">a</td></tr></table></div>')).append(n).hover(function () {
s = true;
n.show()
}, function () {
s = false;
setTimeout(function () {
if (!s) {
n.hide()
}
}, 200)
}))
} catch (o) {
Error.report(o, "injectColor")
}
};
var g = function (t) {
var n = t.mainDiv.find(".TWDBcolor").children("div").children("div");
var r = c(n.css("background-color"));
var i = {};
i.customColor = e('<div style="width:50px;height:50px;display:inline-block;vertical-align:top;margin: 5px;" />');
i.customColor.css("background-color", h(c(n.css("background-color"))));
var o = function (e, t) {
if (t && r[e] == 9 || !t && r[e] == 0) {
return
}
var n = [Number(r[0]), Number(r[1]), Number(r[2])];
n[e] += t ? 1 : -1;
r = String(n[0]) + String(n[1]) + String(n[2]);
i.input.val(r);
if (r[e] == 0) {
i.plusminus[e].children(".butMinus").css("opacity", .3)
} else {
i.plusminus[e].children(".butMinus").css("opacity", 1)
}
if (r[e] == 9) {
i.plusminus[e].children(".butPlus").css("opacity", .3)
} else {
i.plusminus[e].children(".butPlus").css("opacity", 1)
}
i.customColor.css("background-color", h(r))
};
var u = e('<div style="width:42px;height:48px;display:inline-block;vertical-align:top;margin: 6px 5px 6px 5px;" />');
i.plusminus = [];
for (var a = 0; a < 3; a++) {
switch (a) {
case 0:
var f = "#f00";
break;
case 1:
var f = "#0f0";
break;
case 2:
var f = "#00f";
break
}
i.plusminus[a] = e('<div class="tw2gui_plusminus" style="display:inline-block;background-color:' + f + ';width:12px;height:46px;padding:1px;"><span class="butPlus" style="cursor:pointer;"></span><span style="width:12px;height:10px;display:inline-block;"></span><span class="butMinus" style="cursor:pointer;"></span></div>');
i.plusminus[a].children(".butMinus").click(function (e) {
return function () {
o(e, false)
}
}(a));
i.plusminus[a].children(".butPlus").click(function (e) {
return function () {
o(e, true)
}
}(a));
if (r[a] == 0) {
i.plusminus[a].children(".butMinus").css("opacity", .3)
}
if (r[a] == 9) {
i.plusminus[a].children(".butPlus").css("opacity", .3)
}
u.append(i.plusminus[a])
}
u.append(i.plusminus[0]).append(i.plusminus[1]).append(i.plusminus[2]);
i.input = e('<input maxLength="3" type="text" value="' + r + '" style="position: relative; top: -35px; left: 2px;color: rgb(255, 255, 255); font-weight: bold; letter-spacing: 6px; text-shadow: 1px 1px 1px rgb(0, 0, 0); width: 43px; background: none repeat scroll 0pt 0pt transparent; border: medium none; height: 18px; line-height: 18px; margin: 0pt; outline: medium none;" />');
i.input.keyup(function () {
var e = i.input.val();
if (e.length < 3) {
return
}
if (!e.match(/(\d){3}/)) {
i.input.val(r);
return
}
r = e;
for (var t = 0; t < 3; t++) {
if (r[t] == 0) {
i.plusminus[t].children(".butMinus").css("opacity", .3)
} else {
i.plusminus[t].children(".butMinus").css("opacity", 1)
}
if (r[t] == 9) {
i.plusminus[t].children(".butPlus").css("opacity", .3)
} else {
i.plusminus[t].children(".butPlus").css("opacity", 1)
}
}
i.customColor.css("background-color", h(r));
i.input.attr("value", r)
});
u.append(i.input);
var l = {bold: t._bold, caps: t._caps};
var d = e('<div style="height:50px;display:inline-block;vertical-align:top;margin: 5px;" />');
var v = new west.gui.Checkbox("*reliefat*", l.bold ? "tw2gui_checkbox_checked" : "", function () {
l.bold = l.bold ? false : true
});
e(v.getMainDiv()).css("display", "block").css("margin-bottom", "5px");
d.append(v.getMainDiv());
var v = new west.gui.Checkbox("Valorifică", l.caps ? "tw2gui_checkbox_checked" : "", function () {
l.caps = l.caps ? false : true
});
d.append(v.getMainDiv());
var m = e('<div style="width:160px;height:50px;display:inline-block;vertical-align:top;border: 1px solid #000;padding: 0px;margin: 5px;" />');
m.append('<span style="width:140px;height:15px;display:inline-block;text-align:center;padding: 4px 0px 2px 0px;font-size:11px;">istorie</span>');
for (var a = 0; a < s.length; a++) {
var g = e('<div style="width:20px;height:20px;display:inline-block;vertical-align:top;margin: 0px 0px 0px 10px;cursor:pointer;background-color:' + h(s[a]) + ';" />');
g.click(function () {
p(t, {color: e(this).css("background-color"), bold: l.bold, caps: l.caps});
i.colorBox.hide()
});
m.append(g)
}
var y = e("<div />").append(i.customColor).append(u).append(d).append(m);
i.colorBox = new west.gui.Dialog("Culoare", y);
i.colorBox.addButton("ok", function () {
p(t, {color: e(i.customColor).css("background-color"), bold: l.bold, caps: l.caps})
});
i.colorBox.addButton("cancel");
i.colorBox.show()
};
return t
}(jQuery);
Debugger.Chat = Chat;
var SellTip = function (e) {
var t = {};
var n = false;
var r = {};
var i = function () {
if (r.ready) {
return
}
if (Settings.get("sellTip", true)) {
GameInject.injectItem("Inventory", "sellTip", function (e) {
setTimeout(function () {
return s(e)
}, 0)
})
}
r.ready = true
};
r = Loader.add("sellTip", "tw-db sellTip", i, {Settings: true, ClothCalc: true});
var s = function (e) {
var t = e.obj.item_id;
var n = w.ItemManager.get(t);
var r = false;
var i = "";
if (!n.sellable && !n.auctionable) {
return
}
if (Settings.get("sellTip1", true)) {
var s = w.Bag.getItemByItemId(n.item_id);
var o = w.Wear.wear[n.type];
if (s || o && o.obj.item_id == n.item_id) {
var u = (s !== undefined ? s.count : 0) + (o !== undefined && o.obj.item_id == n.item_id ? 1 : 0);
if (u > 1) {
r = true;
i = "Deții acest obiect de mai multe ori".escapeHTML()
}
}
}
if (Settings.get("sellTip2", true) && ClothCalc.isLoaded()) {
if (!ClothCalc.isUsedItem(n.item_id)) {
r = true;
i = "Acest obiect nu este folosit pentru nicio muncă sau pentru o activitate predefinită (ClothCalc)".escapeHTML()
}
}
if (Settings.get("sellTip3", true)) {
if (n.named) {
r = false
}
}
if (Settings.get("sellTip4", true)) {
if (n.traderlevel === null || n.traderlevel > 20) {
r = false
}
}
if (Settings.get("sellTip5", true)) {
if (n.set) {
r = false
}
}
e.divMain.find(".TWDBsellTip").remove();
if (r) {
e.divMain.append('<img src="' + Images.iconSell + '" class="TWDBsellTip" title="' + i + '" title=" Nu deţii acest obiect deocamdată " style="position:absolute;bottom:4px;right:0px;width:19px;height:19px;padding:0px;border:0px;margin:0px;" />')
}
};
return t
}($);
Debugger.SellTip = SellTip;
var Collector = function (e) {
var t = {};
var n = false;
var r = {};
var i = function () {
if (r.ready) {
return
}
if (Settings.get("collector", true)) {
GameInject.injectItem("Trader", "collector", function (e) {
return s(e)
});
GameInject.injectTrader("collector", function (e) {
if (t.isNewItem(e.item_id)) {
var n = '<img src="' + Images.iconNew + '" class="TWDBcollector" title=" Nu deţii acest obiect deocamdată " ' + ' style="position:absolute;top:0px;left:0px;padding:0px;border:0px;margin:0px;" />';
return n
}
return ""
});
GameInject.injectMarket("collector", function (e) {
return o(e)
});
GameInject.injectGetBids()
}
r.ready = true
};
r = Loader.add("Collector", "tw-db Collector", i, {Settings: true});
t.isNewItem = function (e) {
var t = w.ItemManager.get(e);
var n = w.Bag.getItemsIdsByBaseItemId(t.item_base_id);
var r = w.Wear.wear[t.type];
var i = r && r.obj.item_base_id == t.item_base_id;
var s = TWDB.ClothCalc.bids[t.item_id];
if (n.length || i || s) {
return false
} else {
return true
}
};
var s = function (e) {
e.divMain.find(".TWDBcollector").remove();
if (t.isNewItem(e.obj.item_id)) {
e.divMain.append('<img src="' + Images.iconNew + '" class="TWDBcollector" title=" Nu deţii acest obiect deocamdată " style="position:absolute;top:-8px;left:-15px;padding:0px;border:0px;margin:0px;" />')
}
};
var o = function (e) {
if (t.isNewItem(e)) {
return '<img src="' + Images.iconNew + '" class="TWDBcollector" title=" Nu deţii acest obiect deocamdată " style="width:18px;height:18px;position:relative;top:0px;left:0px;padding:0px;border:0px;margin:0px;" />'
} else {
return ""
}
};
return t
}($);
Debugger.Collector = Collector;
var BuyTip = function (e) {
var t = {};
var n = false;
var r = {};
var i = 0;
var s = {};
var o = {};
var u = function () {
if (o.ready) {
return
}
if (Settings.get("buyTip", true)) {
GameInject.injectItem("Trader", "buytip", function (e) {
return f(e, "trader")
});
GameInject.injectTrader("buytip", function (e) {
return a(e)
});
GameInject.injectMarket("buytip", function (e) {
return f(e, "market")
})
}
Eventer.set("TWDBdataLoaded", function () {
t.reset()
});
if (!Updater.wasUpdated()) {
r = Cache.load("betteritems");
if (r == null || typeof r !== "object") {
r = {}
}
}
o.ready = true
};
o = Loader.add("BuyTip", "tw-db BuyTip", u, {
Settings: true,
Cache: true,
Collector: true,
ClothCalc: true,
Calc: true
});
t.reset = function () {
r = {};
Cache.save("betteritems", r)
};
var a = function (e) {
n = e.item_id;
if (!Collector.isNewItem(n) || isDefined(r[n]) && r[n].length == 0) {
return ""
}
if (isDefined(r[n])) {
var t = h(n);
if (isDefined(t)) {
t.css({bottom: "45px", right: "11px"})
}
return t
}
l(n);
var t = h(n);
if (isDefined(t)) {
t.css({bottom: "45px", right: "11px"})
}
return t
};
var f = function (e, t) {
if (t == "shop") {
n = e.item_id
} else {
n = t == "market" ? e : e.obj.item_id
}
if (!Collector.isNewItem(n) || isDefined(r[n]) && r[n].length == 0) {
return ""
}
if (t == "market") {
if (isDefined(r[n])) {
return c(n)
}
i++;
Worker.add(function (e, t) {
return function () {
l(t);
var n = w.MarketWindow.DOM.find("#TWDBbuyTip" + e);
n.after(c(t));
n.remove()
}
}(i, n));
return '<img id="TWDBbuyTip' + i + '" src="' + Images["iconStar3"] + '" class="TWDBbuyTip" width="18px" height="18px" title="Se calculeză, vă rog aşteptaţi..." style="padding:0px;border:0px;margin:0px;" />'
}
if (isDefined(r[n])) {
if (t == "shop") {
var s = h(n);
s.css({bottom: "45px", right: "11px"});
return s
} else {
e.divMain.find(".TWDBbuyTip").remove();
e.divMain.append(h(n))
}
return
}
if (isDefined(e.divMain)) {
e.divMain.find(".TWDBbuyTip").remove()
}
e.divMain.append('<img src="' + Images["iconStar3"] + '" class="TWDBbuyTip" width="25px" height="25px" title="Se calculeză, vă rog aşteptaţi..." style="position:absolute;bottom:-8px;right:-5px;padding:0px;border:0px;margin:0px;" />');
Worker.add(function (e, t) {
return function () {
l(t);
if (t == "shop") {
var n = h(t);
n.css({bottom: "45px", right: "11px"});
return n
} else {
e.divMain.find(".TWDBbuyTip").remove();
e.divMain.append(h(t))
}
}
}(e, n))
};
var l = function (e) {
if (!ClothCalc.isLoaded()) {
return
}
if (!ClothCalc.isItemUsable(e, true)) {
return
}
if (isDefined(r[e])) {
return
}
r[e] = [];
var t = ItemManager.get(e);
var n = Jobs.getAllJobs();
for (var i = 0; i < n.length; i++) {
var s = n[i];
var o = ClothCalc.getClothForJob(s);
if (!isDefined(o)) {
continue
}
var u = 0;
var a = Calc.getItemBonusForJob(e, s);
if (isDefined(o[TWDB.ClothCalc._type2id[t.type]])) {
var f = ItemManager.get(o[TWDB.ClothCalc._type2id[t.type]].id);
u += Calc.getItemBonusForJob(f.item_id, s)
}
if (isDefined(f) && isDefined(f.set) || isDefined(t.set)) {
var l = isDefined(f) && isDefined(f.set) ? f.set : null;
var c = isDefined(t.set) ? t.set : null;
var h = {};
h[l] = 0;
h[c] = 0;
for (var p in o) {
var d = ItemManager.get(o[p].id);
if (!isDefined(d)) {
continue
}
if (d.set) {
if (d.set == l) {
h[l]++
}
if (d.set == c && l !== c) {
h[c]++
}
}
}
if (l) {
u += Calc.getSetBonusForJob(l, h[l], s);
u -= Calc.getSetBonusForJob(l, h[l] - 1, s)
}
if (c) {
a += Calc.getSetBonusForJob(c, h[c] + 1, s);
a -= Calc.getSetBonusForJob(c, h[c], s)
}
}
if (a > u) {
var v = ClothCalc.getLPForJob(s);
if (isDefined(v)) {
var m = v.sum - u + a;
r[e].push({job: s, newlp: m, more: m - v.sum})
} else {
r[e].push({job: s, newlp: a, more: a})
}
}
}
Cache.save("betteritems", r)
};
var c = function (e) {
if (!isDefined(r[e])) {
return ""
}
if (r[e].length == 0) {
return ""
}
s[e] = false;
var t = p(e).escapeHTML();
return "<img onload=\"$(this).next('.TWDBcollector').remove();$(this).addMousePopup('" + t + '\');" src="' + Images["iconStar" + (s[e] ? "2" : "")] + '" class="TWDBbuyTip" width="18px" height="18px" style="padding:0px;border:0px;margin:0px;" />'
};
var h = function (t) {
if (!isDefined(r[t])) {
return
}
if (r[t].length == 0) {
return
}
s[t] = false;
var n = p(t);
return e('<img src="' + Images["iconStar" + (s[t] ? "2" : "")] + '" class="TWDBbuyTip" width="25px" height="25px" title=\'' + n + '\' style="position:absolute;bottom:-8px;right:-5px;padding:0px;border:0px;margin:0px;" />')
};
var p = function (e) {
if (!isDefined(r[e])) {
return ""
}
var t = '<table border="0" cellspacing="0" cellpadding="0"><tr>';
if (!ClothCalc.isItemUsable(e)) {
var n = ItemManager.get(e);
t += '<td colspan="2" style="text-align:center; font-weight:bold;">Nivel ' + n.level + "</td></tr><tr>"
}
for (var i = 0; i < r[e].length; i++) {
var o = r[e][i];
var u = Jobs.getJobById(o.job);
var a = " +" + o.more + " " + u.name.escapeHTML() + " [" + o.newlp + "]";
if (o.job == ClothCalc.getSelectedJob()) {
a = "<b>" + a + "</b>";
s[e] = true
}
if (o.newlp < 0) {
var f = "#FF0000"
} else {
if (o.newlp - o.more < 0) {
var f = "#0000FF"
} else {
var f = "#008000"
}
}
t += '<td style="color:' + f + ';">' + a + "</td>";
if (i % 2) {
t += "</tr><tr>"
}
}
if (i % 2) {
t += "<td></td></tr>"
} else {
t = t.substring(0, t.length - 4)
}
t += "</table>";
return t
};
return t
}($);
Debugger.BuyTip = BuyTip;
var LpInfo = function (e) {
var t = {};
var n = false;
var r = {};
var i = function () {
if (r.ready) {
return
}
if (Settings.get("jobBoniTooltip", true)) {
GameInject.injectItem("Inventory", "lpInfo", function (e) {
return s(e)
})
}
r.ready = true
};
r = Loader.add("LpInfo", "tw-db LpInfo", i, {Settings: true, Jobs: true, Calc: true});
var s = function (e) {
e.divMain.find(".TWDBlpInfo").remove();
var t = ClothCalc.getSelectedJob();
if (!isDefined(t)) {
return
}
var n = e.obj.item_id;
e.divMain.find(".TWDBlpInfo").remove();
if (Calc.isCached(n, t)) {
e.divMain.append(o(n, t))
} else {
Worker.add(function (e, t, n) {
return function () {
e.divMain.find(".TWDBlpInfo").remove();
e.divMain.append(o(t, n))
}
}(e, n, t))
}
};
var o = function (e, t) {
var n = Calc.getItemBonusForJob(e, t);
if (isNaN(n) || n <= 0) {
return
}
var t = Jobs.getJobById(t);
return '<img src="' + Images.iconLaborpoints + '" title="+' + n + " " + t.name.escapeHTML() + '" class="TWDBlpInfo" style="position: absolute; top: 2px; right: 2px; width: 15px; height: 15px; border: 0px none; margin: 0px;"/>'
};
return t
}($);
Debugger.LpInfo = LpInfo;
var Snippets = function ($) {
var _self = {};
var timeout = null;
var interval = null;
var loader = {};
var init = function () {
if (loader.ready) {
return
}
trustTWDB();
if (Settings.get("collectorsell", true)) {
GameInject.injectWanderingTraderSellDialog()
}
if (Settings.get("customcounterpos", true)) {
repositionEventCounters()
}
if (Settings.get("noscrollbars", false)) {
disableScrollbars()
}
if (Settings.get("instanthotel", true)) {
InstantHotel()
}
if (Settings.get("qbswitch", true)) {
QuestbookSwitch()
}
if (Settings.get("qfulltext", false)) {
QuestFullText()
}
if (Settings.get("fastskillchange", true)) {
fastSkillChange()
}
if (Settings.get("fortrecruitment", true)) {
activateFortRecruitment()
}
if (Settings.get("noworkqueuepa", true)) {
removeWorkQueuePA()
}
if (Settings.get("nofetchallpa", false)) {
removeVariousPA()
}
if (Settings.get("nowofnuggets", false)) {
changeWofNuggets()
}
if (Settings.get("marketselldialog", true)) {
enhanceMarketSellDialog()
}
if (Settings.get("weeklycrafting", false)) {
weeklyCrafting()
}
if (Settings.get("pinitems", true)) {
GameInject.injectInventoryAddItemsPinItems();
GameInject.injectInventoryAddItemDivToInvPinItems()
}
if (Settings.get("telegramsource", true))GameInject.injectTelegramWindowAppendTelegramDisplaySource();
if (Settings.get("noshopsale", false)) {
supressOnGoingEntries()
}
if (Settings.get("expbarvalues", true)) {
expBarValues()
}
if (Settings.get("mini_chatgui", true)) {
allowChatGuiMinimize()
}
if (Settings.get("tasklistpoints", true)) {
addTaskJobsHints();
GameInject.injectTaskJobs()
}
loader.ready = true
};
loader = Loader.add("Snippets", "tw-db code Snippets", init, {Settings: true});
var trustTWDB = function () {
try {
var str = showlink.toString();
str = str.replace("the-west", "tw-db|the-west");
str = str.replace("|com|", "|com|info|");
eval("showlink = " + str)
} catch (e) {
}
};
var repositionEventCounters = function () {
TWDB.Util.addCss("@media (min-width: 1320px) { .custom_unit_counter {top: -1px!important; margin-left: 310px!important;} #hiro_friends_container {top: -1px!important; margin-right: 304px!important;} }")
};
var disableScrollbars = function () {
$("body").css({overflow: "hidden"})
};
var allowChatGuiMinimize = function () {
TWDB.Util.addCss("div#ui_bottomleft { width: auto; overflow: hidden; }" + "div#ui_chat { margin-top: 12px; }" + "div#ui_chat div#toggleMinChat { position: absolute; top: -14px; left: 5px; width: 27px; display: block; background-size: 108px 42px; border: 0px solid rgba(0, 0, 0, 0); background-clip: content-box; }" + "div#ui_chat.minchat div#toggleMinChat { background-position: 0px 0px; border-width: 0px 8px 34px 0px; }" + "div#ui_chat.minchat div#servertime { display: none; }" + "div#ui_chat.minchat > div.tabs div { display: none; }" + "div#ui_chat.minchat div.container div.friend { display: none!important; }" + "div#ui_chat.minchat div.container div.general { display: block!important; }" + "div#ui_chat.minchat div.container div.vertical_divider { display: none; }" + "div#ui_chat.minchat img.leave_channel { display: none!important; }" + "div#ui_chat div.minchat_tabr { display: none; }" + 'div#ui_chat.minchat div.minchat_tabr { display: block; position: absolute; left: 32px; top: 0px; width: 8px; height: 34px; background: url("' + to_cdn("images/interface/chat/chat-top.png?1") + '") top right; }' + "div#ui_chat.minchat { position: relative; left: -10px; top: 4px; width: 39px; }" + 'div#ui_chat.minchat > div.tabs { width: 32px; background: url("' + to_cdn("images/interface/chat/chat-top.png?1") + '"); }' + "div#ui_chat.minchat div.chat_channel { width: 24px; }" + "div#ui_chat.minchat div.chat_channel .new_message { left: 2px; top: 0px; }" + "div#ui_chat.minchat div.chat_channel div.online_count { background: none; position: absolute; right: 0px; top: -1px; width: auto; height: auto; line-height: normal; padding: 0px; font-size: 8pt; font-weight: bold; text-align: right; text-shadow: -1px 1px 1px #FFF, 0px 0px 2px #FFF; cursor: default; }" + "div#ui_chat.minchat div.container { width: 40px; background-position-x: right; }" + "div#ui_chat.minchat div.row_title { left: 5px; width: 32px; opacity: 0; }" + "div#ui_chat.minchat div.tw2gui_scrollpane { width: 50px; }", "minchat");
$("div#ui_chat").append('<div class="minchat_tabr" />').toggleClass("minchat", Settings.get("mini_chatgui_min", true)).children(".tabs").first().append($('<div id="toggleMinChat" class="tw2gui_arrow_up_top" />').on("click", function (e) {
e.stopPropagation();
Settings.set("mini_chatgui_min", $("div#ui_chat").toggleClass("minchat").hasClass("minchat"));
return false
}))
};
var addTaskJobsHints = function () {
var e = "div#ui_workcontainer div.twdb_lp_hint { position: absolute; left: 2px; width: 18px; height: 18px; background-color: #432; border: 2px ridge #976; border-radius: 11px; background-blend-mode: soft-light; }" + "div.twdb_lp_hint > img { position: absolute; left: 1px; top: 1px; }";
TWDB.Util.addCss(e);
var t = function () {
if (TaskQueue.queue.length) {
var e, t = $("div#ui_workcontainer"), n, r;
for (e = 0; e < TaskQueue.queue.length; e++) {
if (TaskQueue.queue[e].type === "job") {
n = null;
r = TWDB.ClothCalc.calcdata.loaded && TaskQueue.queue[e].data.job_points < TWDB.ClothCalc.calcdata.jobs[TaskQueue.queue[e].data.job.id].laborpoints.sum - 5;
if (TaskQueue.queue[e].data.job_points < 0) {
n = west.gui.Icon.get("exclamation-priority-3", "Puncte de muncă negative")
} else if (TaskQueue.queue[e].data.job_points < TaskQueue.queue[e].data.job.malus / 5) {
n = west.gui.Icon.get("exclamation-priority-2", "Puncte de muncă foarte puține")
} else if (r) {
n = west.gui.Icon.get("exclamation-priority-1", "Puncte de muncă reduse")
}
if (n !== null) {
$(".task-queuePos-" + e + " > div.icon", t).children(".twdb_lp_hint").remove().end().append($('<div class="twdb_lp_hint" />').toggleClass("tw2gui-iconset tw2gui-icon-star", !r).append(n))
}
}
}
}
};
EventHandler.listen(["taskqueue-updated", "taskqueue-ready"], t)
};
var expBarValues = function () {
if (isDefined(w.SlySuite)) {
TWDB.Settings.set("expbarvalues", false);
return
}
TWDB.Util.addCss("div#ui_experience_bar .label {text-shadow: 3px 1px 1px #000, 3px -1px 1px #000, -2px 1px 1px #000, -2px 0px 0px #000;}");
var e = function (e) {
if (Math.abs(e) >= 1e4) {
return Math.round(e / 1e3) + "k"
} else {
return e
}
};
var t = function () {
var t = $("#ui_experience_bar"), n = undefined === Character.getTrackingAchievement() ? WestUi.updateTrackXp(t) : WestUi.updateTrackAchievement(t);
$(".label", t).off("hover");
$(".label span", t).show();
xpString = "";
if (Character.level < 150) {
xpString = n.percent + "% - " + e(n.current) + " / " + e(n.required);
xpString += " (" + e(n.required - n.current) + ")"
} else xpString = Character.experience.toLocaleString();
$(".label span", t).html(xpString)
};
EventHandler.listen("character_exp_changed", t);
EventHandler.listen("character_tracking_achievement_changed", t);
t()
};
var supressOnGoingEntries = function () {
var e = ["shop_sale"];
var t = function (e) {
if ($.isArray(e)) {
for (var n = 0; n < e.length; n++) {
t(e[n])
}
} else if (typeof e === "string") {
var r = WestUi.NotiBar.main.list;
for (var n = 0; n < r.length; n++) {
if ($(r[n].element).children().is("div.image." + e)) {
WestUi.NotiBar.remove(r[n])
}
}
}
};
var n = function (e) {
try {
WestUi.NotiBar.__twdb__add = WestUi.NotiBar.__twdb__add || WestUi.NotiBar.add;
WestUi.NotiBar.add = function (t) {
var n = $(".image", t.element);
for (var r = 0; r < e.length; r++) {
if (n.hasClass(e[r])) {
return
}
}
WestUi.NotiBar.__twdb__add.apply(this, arguments)
}
} catch (t) {
Error.report(t, "manipulate WestUi.NotiBar.add")
}
};
n(e);
t(e)
};
var InstantHotel = function () {
try {
w.Map.Component.Town.prototype.__twdb__getContent = w.Map.Component.Town.prototype.__twdb__getContent || w.Map.Component.Town.prototype.getContent;
w.Map.Component.Town.prototype.getContent = function () {
var e = this.__twdb__getContent();
if (e === "") {
return e
} else {
return e.replace(/\<\/div\>$/, "<div class='instanthotel needslistener' title='Hotel' tid='" + this.data[1].town_id + "'></div></div>")
}
};
w.Map.Draw.__twdb__checkDouble = w.Map.Draw.__twdb__checkDouble || w.Map.Draw.checkDouble;
w.Map.Draw.checkDouble = function () {
$("#map div.instanthotel.needslistener").each(function (e, t) {
var n = $(t);
var r = parseInt(n.attr("tid"), 10);
n.click(function (e) {
e.stopPropagation();
HotelWindow.open(r);
return false
}).removeClass("needslistener").removeAttr("tid")
});
return w.Map.Draw.__twdb__checkDouble()
};
var e = "div.instanthotel { background-image: url('" + TWDB.images.instanthotel + "'); width: 20px; height: 20px; " + "position: absolute; right: 10px; top: -8px; cursor: pointer; display: none; }\n" + "div.townname:hover .instanthotel { z-index: 2; display: block; }";
TWDB.Util.addCss(e);
w.Map.refresh(true)
} catch (t) {
Error.report(t, "manipulate town signs")
}
};
var fastSkillChange = function () {
try {
west.gui.Plusminusfield.prototype.__twdb__init = west.gui.Plusminusfield.prototype.init;
west.gui.Plusminusfield.prototype.init = function (e, t, n, r, i, s, o, u) {
this.__twdb__init.apply(this, arguments);
var a = this;
var f = {minus: $("span.butMinus", a.divMain), plus: $("span.butPlus", a.divMain)};
$(this.divMain).off("mousewheel").on("mousewheel", function (e, t) {
f[t < 0 ? "minus" : "plus"].click();
e.stopPropagation();
return false
});
$.each(f, function (e, t) {
var n = 400, r = -1, i = function () {
n = Math.max(Math.round(n * (n / 200 + 1) / (n / 133 + 1)), 5);
t.click();
r = setTimeout(i, n)
}, s = function () {
r = setTimeout(i, n)
}, o = function (e) {
if (r !== -1) {
clearTimeout(r);
r = -1
}
n = 400
};
t.css("cursor", "pointer").mousedown(s).mouseup(o).mouseout(o)
})
}
} catch (e) {
Error.report(e, "manipulate Plusminusfield")
}
};
var QuestbookSwitch = function () {
try {
QuestGroupWindowView.cc_showSolvedQuest = QuestGroupWindowView.showSolvedQuest;
QuestGroupWindowView.showSolvedQuest = function (e) {
QuestGroupWindowView.cc_showSolvedQuest(e);
var t = $("div.window-quest_group div.quest_description_container span").slice(1).hide();
var n = $("<span><br>" + e.description + "</span>");
$("div.window-quest_group div.quest_description_container").append(n);
var r = $('<a href="#"> Arată textul de completare </a>').addClass("introshown").click(function () {
var e = $(this), r = e.hasClass("introshown");
t.toggle(r);
n.toggle(!r);
e.text(r ? " Arată textul de introducere " : " Arată textul de completare ");
e.toggleClass("introshown")
});
$("div.window-quest_group div.solved_text_container").append($("<div style='text-align:center;margin-top:10px;'>").append(r))
}
} catch (e) {
Error.report(e, "manipulate showSolvedQuest")
}
};
var QuestFullText = function () {
try {
QuestWindowView.cc_showQuest = QuestWindowView.showQuest;
QuestWindowView.showQuest = function (e) {
QuestWindowView.cc_showQuest(e);
$("div.quest_description_container div#quest_shortd").hide();
$("div.quest_description_container div#quest_fulld").show()
};
QuestEmployerView.cc_showQuest = QuestEmployerView.showQuest;
QuestEmployerView.showQuest = function (e) {
QuestEmployerView.cc_showQuest(e);
$("div.quest_description_container div#quest_shortd").hide();
$("div.quest_description_container div#quest_fulld").show()
}
} catch (e) {
Error.report(e, "manipulate showQuest")
}
};
var removeWorkQueuePA = function () {
try {
TWDB.Util.addCss("#queuedTasks .buyPremiumTask {background: none!important}");
Premium.checkForAutomationPremium = function (e, t) {
if (typeof t !== "undefined")return t()
}
} catch (e) {
Error.report(e, "manipulate removeWorkQueuePA")
}
};
var changeWofNuggets = function () {
try {
west.gui.payHandler.prototype.__twdb__addPayOption = west.gui.payHandler.prototype.addPayOption;
west.gui.payHandler.prototype.addPayOption = function (e) {
this.__twdb__addPayOption.apply(this, arguments);
if (false === e || "nugget" === e) {
return this
}
this.setSelectedPayId(e.id);
return this
}
} catch (e) {
Error.report(e, "manipulate changeWofNuggets")
}
};
var removeVariousPA = function () {
var e = [], t;
if (Settings.get("nofetchallpa", false))e.push("marketdelivery all");
if (!e.length)return;
t = new RegExp(e.join("|"));
try {
Premium.twdb_confirmUse = Premium.confirmUse;
Premium.confirmUse = function (e, n, r, i, s, o, u, a) {
if (t.test(e)) {
if (typeof u !== "undefined")return u()
} else {
return Premium.twdb_confirmUse(e, n, r, i, s, o, u, a)
}
}
} catch (n) {
Error.report(n, "manipulate removeVariousPA")
}
};
var activateFortRecruitment = function () {
try {
FortBattleWindow.__twdb__getInfoArea = FortBattleWindow.__twdb__getInfoArea || FortBattleWindow.getInfoArea;
FortBattleWindow.getInfoArea = function () {
this.preBattle.battleData.canSetPrivilege = true;
return FortBattleWindow.__twdb__getInfoArea.apply(this, arguments)
}
} catch (e) {
Error.report(e, "manipulate FortBattleWindow.getInfoArea")
}
};
var enhanceMarketSellDialog = function () {
var e;
var t = TWDB.Cache.load("msdsettings");
if (typeof t !== "object" || t == null) {
t = {cb: {}}
} else if (typeof t.cb !== "object" || t.cb == null) {
t.cb = {}
}
try {
if (!isDefined(west.gui.Dialog.prototype.__twdb__show)) {
west.gui.Dialog.prototype.__twdb__show = west.gui.Dialog.prototype.show
}
if (TWDB.script.isDev()) {
west.gui.Dialog.prototype.show = function () {
if (this.divMain.attr("id") === "market_createoffer_window") {
var e = this.__twdb__show();
w.setTimeout(function () {
MarketWindow.TWDB_touchUpSellDialog(e)
}, 25);
return e
}
var t = ["div#equip_manager_list", "span.twdb_banking"].join(", ");
if ($(this.divMain).find(t).addBack().is(t)) {
return this.setModal(false).setBlockGame(false).setDraggable(true).__twdb__show()
}
return this.__twdb__show()
}
} else {
west.gui.Dialog.prototype.show = function () {
if (this.divMain.attr("id") === "market_createoffer_window") {
var e = this.__twdb__show();
w.setTimeout(function () {
MarketWindow.TWDB_touchUpSellDialog(e)
}, 25);
return e
}
return this.__twdb__show()
}
}
if (!isDefined(MarketWindow.TWDB_createMarketOffer)) {
MarketWindow.TWDB_createMarketOffer = MarketWindow.createMarketOffer
}
MarketWindow.createMarketOffer = function (t) {
var n = typeof t == "number" ? t : $(t).data("itemId");
if (n === undefined) {
var r = $(this).data("dnd_droppedObj");
n = r.data("itemId")
}
e = w.ItemManager.get(n);
return MarketWindow.TWDB_createMarketOffer(n)
}
} catch (n) {
Error.report(n, "manipulate market sell dialog")
}
MarketWindow.TWDB_touchUpSellDialog = function (n) {
if (n.divMain.attr("id") !== "market_createoffer_window") {
return
}
var r = $("div.tw2gui_dialog_content", n.divMain);
if (r.find("#auction_item_slot", r).html() == "")return w.setTimeout(function () {
MarketWindow.TWDB_touchUpSellDialog(n)
}, 25);
$("div.tw2gui_dialog_framefix").css({left: "50%", top: "50%", width: "1px", height: "1px"});
$("textarea#auction_description", r).css("width", "270px").closest("tr").append("<td id='twdb_msd_desc_cc'>");
var i = $("table:nth-child(2)", r);
$("tr:first-child", i).after($("<tr>").append("<td>", '<td id="twdb_msd_bid_cc" style="min-width: 90px;">', "<td>", '<td id="twdb_msd_buy_cc" style="min-width: 90px;">'));
$("tr:nth-last-child(5) td:nth-child(2) span.tw2gui_textfield", i).after('<span id="twdb_msd_mult_cc" title="Reglați (multiplică) prețul curent cu acest număr" style="background-image: url("/images/ranking/town_ranking_icons.png"); display:inline-block; height:16px; width:16px; background-position:0px -80px; cursor:pointer;"> </span>');
$("tr:last-child td:first-child", i).attr("colspan", 3).before('<td id="twdb_msd_opt_cc">');
var s = function () {
n.divMain.css({
"margin-top": "-" + n.divMain.height() / 2 + "px",
"margin-left": "-" + n.divMain.width() / 2 + "px"
})
};
var o = function () {
var e, n = this.groupClass;
$("div.tw2gui_checkbox." + n).not(this.divMain).removeClass("tw2gui_checkbox_checked");
if (this.isSelected()) {
e = this.getValue();
this.divMain.next().click()
} else {
e = 0
}
t.cb[n] = e;
TWDB.Cache.save("msdsettings", t);
(new UserMessage("Salvat cu succes", UserMessage.TYPE_SUCCESS)).show();
return this
};
var u = function (e, n) {
t[e] = n;
TWDB.Cache.save("msdsettings", t);
(new UserMessage("Salvat cu succes", UserMessage.TYPE_SUCCESS)).show()
};
var a = function () {
var e, n;
for (e in t.cb) {
if (!t.cb.hasOwnProperty(e))continue;
$("div.tw2gui_checkbox." + e).each(function () {
n = $(this).guiElement();
if (n.getValue() === t.cb[e]) {
n.setSelected(true, true);
$(this).next().click()
}
})
}
$("textarea#auction_description", r).val(t.description || "");
$("span#market_days.tw2gui_combobox", r).guiElement().select(t.duration || 1);
$("span#market_rights.tw2gui_combobox", r).guiElement().select(isDefined(t.rights) ? t.rights : 2)
};
$("#twdb_msd_desc_cc", r).append($('<div class="tw2gui-iconset tw2gui-icon-save" title="Salvează descrierea pentru viitoarele licitaţii">').click(function () {
u("description", $("textarea#auction_description", r).val())
}), $('<div class="tw2gui-iconset tw2gui-icon-abort" title="Resetează descrierea">').click(function () {
u("description", "");
$("textarea#auction_description", r).val("")
}));
$("#twdb_msd_buy_cc", r).append((new west.gui.Checkbox("", "twdb_msd_buy_fix", o)).setTitle("Foloseşte ca preţ implicit").setValue(2).divMain).append($('<div class="tw2gui_checkbox" title="Setează preţul de cumpărare al obiectului">').append('<span class="invPopup_buyicon" style="height:20px;">').click(function () {
$("#market_max_price", r).val(e.price || 1).keyup()
})).append(" ").append((new west.gui.Checkbox("", "twdb_msd_buy_fix", o)).setTitle("Foloseşte ca preţ implicit").setValue(1).divMain).append($('<div class="tw2gui_checkbox" title="Setează preţul de vânzare al obiectului">').append('<span class="invPopup_sellicon" style="height:20px;">').click(function () {
$("#market_max_price", r).val(e.sell_price || 1).keyup()
}));
$("#twdb_msd_bid_cc", r).append((new west.gui.Checkbox("", "twdb_msd_bid_fix", o)).setTitle("Foloseşte ca preţ implicit").setValue(2).divMain).append($('<div class="tw2gui_checkbox" title="Setează preţul de cumpărare al obiectului">').append('<span class="invPopup_buyicon" style="height:20px;">').click(function () {
$("#market_min_bid", r).val(e.price || 1).keyup()
})).append(" ").append((new west.gui.Checkbox("", "twdb_msd_bid_fix", o)).setTitle("Foloseşte ca preţ implicit").setValue(1).divMain).append($('<div class="tw2gui_checkbox" title="Setează preţul de vânzare al obiectului">').append('<span class="invPopup_sellicon" style="height:20px;">').click(function () {
$("#market_min_bid", r).val(e.sell_price || 1).keyup()
}));
$("#twdb_msd_mult_cc", r).click(function () {
var e, t = parseInt($("#market_sell_itemStack", r).val(), 10);
if (t > 0) {
e = parseInt($("#market_min_bid", r).val(), 10);
if (e > 0) {
$("#market_min_bid", r).val(t * e).keyup()
}
e = parseInt($("#market_max_price", r).val(), 10);
if (e > 0) {
$("#market_max_price", r).val(t * e).keyup()
}
}
});
$("#twdb_msd_opt_cc", r).append($('<span class="tw2gui-iconset tw2gui-icon-save" title="Salvează durata şi drepturile pentru viitoarele licitaţii" style="display: inline-block;">').click(function () {
u("duration", parseInt($("#market_days", r).data("value"), 10));
u("rights", parseInt($("#market_rights", r).data("value"), 10))
}), $('<span class="tw2gui-iconset tw2gui-icon-abort" title="Resetează opţiunile" style="display: inline-block;">').click(function () {
u("duration", 1);
$("span#market_days.tw2gui_combobox", r).guiElement().select(1);
u("rights", 2);
$("span#market_rights.tw2gui_combobox", r).guiElement().select(2)
}));
var f = $("span#market_rights.tw2gui_combobox", r).guiElement().items;
if (f.length === 3) {
var l = ["home", "flag", "world"];
for (var c = 0; c < f.length; c++) {
f[c].node[0].innerHTML = '<span class="tw2gui-iconset tw2gui-icon-' + l[f[c].value] + '" style="display: inline-block;position: relative;top: 4px;"></span> ' + f[c].node[0].innerHTML
}
}
var h = $("h4", r), p = $("table#mps_otheroffers", r);
if ($("tr", p).length > 2 || $("tr:nth-child(2) > td", p).attr("colspan") !== 4) {
h.html(h.html() + " (" + ($("tr", p).length - 1) + ")").click(function () {
p.toggle();
s()
}).css({cursor: "pointer"})
} else {
h.html(h.html() + " (0)");
p.hide()
}
s();
a()
}
};
var weeklyCrafting = function () {
if (w.Character.professionId && w.Character.professionSkill > 599) {
var e = function (e) {
var t = new OnGoingEntry;
var n = ItemManager.get(ItemManager.get(e).craftitem);
var r = "<div style='text-align:center;'>Puteţi meşteşugi din nou!<br />" + '<div class="item item_inventory" style="display:inline-block;float:none;"><img class="tw_item item_inventory_img" src="' + n.image + '"></div><br />' + n.name + "</div>";
t.init("", function () {
CharacterWindow.open("crafting");
TWDB.Cache.save("craftingCheck", {found: false, date: null})
}, 11);
t.setTooltip(r);
t.setImageClass("work");
t.highlightBorder();
WestUi.NotiBar.add(t);
TitleTicker.setNotifyMessage("Meserie")
};
var t = function () {
var r = TWDB.Cache.load("craftingCheck") || {found: false, date: null};
if (!r.found) {
return n()
}
var i = (new Date(r.date)).getTime() - (new ServerDate).getTime();
if (i < 0) {
return e(r.found)
} else if (i < 864e5) {
if (i < 18e4) {
w.setTimeout(function () {
e(r.found)
}, i)
} else {
w.setTimeout(function () {
t()
}, parseInt(i / 2, 10))
}
}
};
var n = function () {
Ajax.remoteCall("crafting", "", {}, function (e) {
if (e.error) {
return (new UserMessage(e.msg)).show()
}
if (e.hasOwnProperty("recipes_content") && e.recipes_content.length > 0) {
var n;
var r = [20099e3, 20104e3, 20109e3, 20114e3];
for (n = 0; n < e.recipes_content.length; n++) {
if (r.indexOf(e.recipes_content[n].item_id) !== -1) {
if (e.recipes_content[n].last_craft) {
TWDB.Cache.save("craftingCheck", {
found: e.recipes_content[n].item_id,
date: new Date((new ServerDate).getTime() + parseInt(e.recipes_content[n].last_craft * 1e3, 10))
})
} else {
TWDB.Cache.save("craftingCheck", {
found: e.recipes_content[n].item_id,
date: new Date(null)
})
}
return t()
}
}
}
TWDB.Cache.save("craftingCheck", {found: false, date: null})
})
};
t()
}
};
return _self
}($);
Debugger.Snippets = Snippets;
var GameInject = function ($) {
var _self = {};
var save = {};
var minimap = [];
var questlog = [];
var radialmenu = [];
var quests = [];
var ready = false;
var timeout = null;
var interval = null;
var _position = [];
var _reportreceived = [];
_self.CharacterButton = function (e) {
var t = {};
var n = 0;
var r = null;
t.add = function (t) {
if (n == 0) {
var i = "div#twdb_characbut {width:36px; height:35px; position:absolute; left:141px; top:131px; border-bottom-left-radius:8px;" + "background:url(" + Game.cdnURL + "/images/interface/character/character.png?3) no-repeat -141px -105px transparent;}";
TWDB.Util.addCss(i);
r = e('<div id="twdb_characbut" />');
e("#ui_character_container").prepend(r)
}
n++;
r.css({height: 10 + 26 * n + "px", "background-position": "-141px " + (26 * n - 131) + "px"});
var s = e('<div class="char_links" style="top:' + (6 + (n - 1) * 26) + "px;left:6px;background:url(" + t + ')no-repeat 0px 0px transparent;"/>');
s.hover(function () {
e(this).css("background-position", "-25px 0px")
}, function () {
e(this).css("background-position", "0px 0px")
});
r.append(s);
return s
};
return t
}($);
_self.injectTaskJobs = function () {
try {
var e = TaskJob;
TaskJob = function () {
var t = e.apply(this, arguments);
t.__twdb__getTitle = t.getTitle;
t.getTitle = function () {
return t.__twdb__getTitle() + "PM: " + (this.data.job_points < 0 ? "<b class='text_red'>" : "<b>") + this.data.job_points + "</b><br />"
};
return t
}
} catch (t) {
Error.report(t, "manipulate TaskJob template")
}
try {
if (TaskQueue.queue.length) {
var n = $("script:contains('TaskQueue.init')").text().match(/TaskQueue\.init\(\s*(\[[^\]]*\])/);
if (n.length === 2) {
n = $.parseJSON(n[1]);
TaskQueue.init(n, TaskQueue.limit)
}
}
} catch (t) {
Error.report(t, "manipulate existing Job tasks")
}
};
_self.ChatLayout = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
save["window.Chat.Layout.Tab.prototype.getMainDiv"] = window.Chat.Layout.Tab.prototype.getMainDiv;
window.Chat.Layout.Tab.prototype.getMainDiv = function () {
for (var e = 0; e < t.length; e++) {
try {
t[e](this)
} catch (n) {
Error.report(n, "callbacks on Chat Layout")
}
}
return this.mainDiv
}
} catch (n) {
Error.report(n, "manipulate Chat Layout");
window.Chat.Layout.Tab.prototype.getMainDiv = save["window.Chat.Layout.Tab.prototype.getMainDiv"]
}
}
t.push(e)
}
}($);
_self.ChatSend = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
window.Chat.Layout.Tab.prototype.twdb_send = window.Chat.Layout.Tab.prototype.send;
window.Chat.Layout.Tab.prototype.send = function () {
for (var e = 0; e < t.length; e++) {
try {
t[e](this)
} catch (n) {
Error.report(n, "callbacks on Chat Send")
}
}
this.twdb_send()
}
} catch (n) {
Error.report(n, "manipulate Chat Send");
window.Chat.Layout.Tab.prototype.send = window.Chat.Layout.Tab.prototype.twdb_send
}
}
t.push(e)
}
}($);
_self.MarketOfferTable = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
save["MarketWindow.Offer.updateTable"] = MarketWindow.Offer.updateTable;
MarketWindow.Offer.updateTable = function (e) {
save["MarketWindow.Offer.updateTable"](e);
for (var n = 0; n < t.length; n++) {
try {
t[n](e)
} catch (r) {
Error.report(r, "callbacks MarketOfferTable")
}
}
}
} catch (n) {
Error.report(n, "manipulate MarketOfferTable");
MarketWindow.Offer.updateTable = save["MarketWindow.Offer.updateTable"]
}
}
t.push(e)
}
}($);
_self.MarketWatchlistTable = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
save["MarketWindow.Watchlist.updateTable"] = MarketWindow.Watchlist.updateTable;
MarketWindow.Watchlist.updateTable = function (e) {
save["MarketWindow.Watchlist.updateTable"](e);
for (var n = 0; n < t.length; n++) {
try {
t[n](e)
} catch (r) {
Error.report(r, "callbacks MarketWatchlistTable")
}
}
}
} catch (n) {
Error.report(n, "manipulate MarketWatchlistTable");
MarketWindow.Watchlist.updateTable = save["MarketWindow.Watchlist.updateTable"]
}
}
t.push(e)
}
}($);
_self.MarketWhatIsHotTable = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
save["MarketWindow.WhatIsHot.updateTable"] = MarketWindow.WhatIsHot.updateTable;
MarketWindow.WhatIsHot.updateTable = function (e) {
save["MarketWindow.WhatIsHot.updateTable"](e);
for (var n = 0; n < t.length; n++) {
try {
t[n](e)
} catch (r) {
Error.report(r, "callbacks MarketWhatIsHotTable")
}
}
}
} catch (n) {
Error.report(n, "manipulate MarketWhatIsHotTable");
MarketWindow.WhatIsHot.updateTable = save["MarketWindow.WhatIsHot.updateTable"]
}
}
t.push(e)
}
}($);
_self.injectSetDuelMotivation = function (e) {
var t = [];
return function (e) {
if (t.length == 0) {
try {
Character.twdb_setDuelMotivation = Character.setDuelMotivation;
Character.setDuelMotivation = function (e) {
this.twdb_setDuelMotivation(e);
for (var n = 0; n < t.length; n++) {
try {
t[n](e)
} catch (r) {
Error.report(r, "callbacks setDuelMotivation")
}
}
}
} catch (n) {
Error.report(n, "manipulate setDuelMotivation");
Character.setDuelMotivation = twdb_Character.setDuelMotivation
}
}
t.push(e)
}
}($);
_self.ItemUse = function ($) {
var callbacks = [];
return function (callback) {
if (callbacks.length == 0) {
ItemUse.twdb = function (e, t) {
for (var n = 0; n < callbacks.length; n++) {
try {
callbacks[n](e, t)
} catch (r) {
Error.report(r, "callbacks on ItemUse")
}
}
};
save["ItemUse.doIt"] = ItemUse.doIt;
try {
var str = ItemUse.doIt.toString();
var pos = str.indexOf("EventHandler.signal('item_used'");
var inject = str.substr(0, pos) + "ItemUse.twdb(itemId,res);" + str.substr(pos);
eval("ItemUse.doIt = " + inject)
} catch (e) {
ItemUse.doIt = save["ItemUse.doIt"];
Error.report(e, "manipulate ItemUse")
}
}
callbacks.push(callback)
}
}($);
_self.injectItem = function (type, name, callback) {
var item = type + "Item";
if (typeof save[item] == "undefined") {
save[item] = tw2widget[item].prototype.getMainDiv
}
try {
tw2widget[item].prototype["TWDB" + name] = function (e) {
try {
return callback(e)
} catch (t) {
Error.report(t, "injected " + e + " function: " + name);
return ""
}
}
} catch (e) {
Error.report(e, "inject " + item + " function: " + name)
}
try {
var inject = "this.TWDB" + name + "(this);";
inject.replace(/ /g, "");
var newfunction = tw2widget[item].prototype.getMainDiv.toString().replace("return", inject + "\n return");
eval("tw2widget['" + item + "'].prototype.getMainDiv = " + newfunction)
} catch (e) {
Error.report(e, "manipulate " + item + ".prototype.getMainDiv");
tw2widget[item].prototype.getMainDiv = save[item]
}
};
_self.injectTrader = function (name, callback) {
if (typeof save["west.game.shop.item.view.prototype.render"] == "undefined") {
save["west.game.shop.item.view.prototype.render"] = west.game.shop.item.view.prototype.render
}
try {
west.game.shop.item.view.prototype["TWDB" + name] = function (e) {
try {
return callback(e)
} catch (t) {
Error.report(t, "callback on injectTrader, function: " + name);
return ""
}
}
} catch (e) {
Error.report(e, "injectTrader, creating callback function: " + name)
}
try {
var str = west.game.shop.item.view.prototype.render.toString();
var inject = "window.setTimeout(function() {$item.append(that.TWDB" + name + "(model.getItemData()))}, 100);";
inject.replace(/ /g, "");
var newfunction = str.replace("return $item", inject + "\n return $item");
eval("west.game.shop.item.view.prototype.render = " + newfunction)
} catch (e) {
Error.report(e, "manipulate west.game.shop.item.view.prototype.render");
west.game.shop.item.view.prototype.render = save["west.game.shop.item.view.prototype.render"]
}
};
_self.injectMarket = function (name, callback) {
if (typeof save.MarketWindow == "undefined") {
save.MarketWindow = MarketWindow.getClearName.toString()
}
try {
MarketWindow["TWDB" + name] = function (e) {
try {
return callback(e)
} catch (t) {
Error.report(t, "injected MarketWindow function:" + name)
}
return ""
}
} catch (e) {
Error.report(e, "inject MarketWindow function:" + name)
}
try {
var str = MarketWindow.getClearName.toString();
var inject = "this.TWDB" + name + "(obj.item_id)";
inject.replace(/ /g, "");
var newfunction = "";
while (str.indexOf("return") !== -1) {
var pos = str.indexOf("return");
newfunction += str.slice(0, pos + 6) + " " + inject + " + String(";
str = str.substr(pos + 7);
var pos = str.indexOf(";");
newfunction += str.slice(0, pos) + ");";
str = str.substr(pos + 1)
}
newfunction += str;
eval("MarketWindow.getClearName = " + newfunction)
} catch (e) {
Error.report(e, "manipulate MarketWindow.getClearName");
eval("MarketWindow.getClearName = " + save.MarketWindow)
}
};
_self.injectGetBids = function () {
try {
MarketWindow.twdb_showTab = MarketWindow.twdb_showTab || MarketWindow.showTab;
MarketWindow.showTab = function () {
MarketWindow.twdb_showTab.apply(this, arguments);
TWDB.ClothCalc.getBids()
}
} catch (e) {
Error.report(e, "manipulate MarketWindow.showTab (3)")
}
};
_self.addTabOnMessagesWindow = function (name, shortname, callback) {
if (typeof save.MessagesWindowOpen == "undefined") {
save.MessagesWindowOpen = MessagesWindow.open.toString();
save.MessagesWindowTab = MessagesWindow.showTab.toString()
}
try {
var inject = "MessagesWindow.window.addTab('" + name + "', '" + shortname + "', tabclick).appendToContentPane($('<div class=\"messages-" + shortname + "\"/>'));";
var newfunction = MessagesWindow.open.toString().replace(/MessagesWindow.Telegram.DOM/g, inject + "MessagesWindow.Telegram.DOM");
eval("(function ($) {" + "MessagesWindow.open = " + newfunction + "})(jQuery);")
} catch (e) {
Error.report(e, "manipulate MessagesWindow.open");
eval("(function ($) {" + "MessagesWindow.open = " + save.MessagesWindowOpen + "})(jQuery);")
}
try {
MessagesWindow["TWDB-" + shortname] = function () {
callback()
}
} catch (e) {
Error.report(e, "add showTab to MessagesWindow")
}
try {
var inject = "case '" + shortname + "':MessagesWindow['TWDB-" + shortname + "']();break;";
var newfunction = MessagesWindow.showTab.toString().replace(/switch(\s)*\(id\)(\s)*{/g, "switch (id) { " + inject);
eval("(function ($) {" + "MessagesWindow.showTab = " + newfunction + "})(jQuery);")
} catch (e) {
Error.report(e, "manipulate MessagesWindow.showTab");
eval("(function ($) {" + "MessagesWindow.showTab = " + save.MessagesWindowTab + "})(jQuery);")
}
};
_self.addTabOnMarketWindow = function (name, shortname, callback) {
var first = false;
var current = {};
if (MarketWindow.twdb_showTab)current = {
fn: MarketWindow.twdb_showTab,
name: "MarketWindow.twdb_showTab"
}; else current = {fn: MarketWindow.showTab, name: "MarketWindow.showTab"};
if (typeof save.MarketWindowOpen == "undefined") {
first = true;
save.MarketWindowOpen = MarketWindow.open.toString();
save.MarketWindowTab = current.fn.toString()
}
try {
var inject = "MarketWindow.window.addTab('" + name + "', '" + shortname + "', tabclick).appendToContentPane($('<div class=\"marketplace-" + shortname + "\"/>'));";
var newfunction = MarketWindow.open.toString().replace(/MarketWindow.DOM/, inject + "MarketWindow.DOM");
eval("(function ($) {" + "MarketWindow.open = " + newfunction + "})(jQuery);")
} catch (e) {
Error.report(e, "manipulate MarketWindow.open");
eval("(function ($) {" + "MarketWindow.open = " + save.MarketWindowOpen + "})(jQuery);")
}
try {
MarketWindow["TWDB-" + shortname] = function () {
callback()
}
} catch (e) {
Error.report(e, "add showTab to MarketWindow")
}
try {
var inject = "case '" + shortname + "':MarketWindow['TWDB-" + shortname + "']();break;";
current.fn = current.fn.toString().replace(/switch(\s)*\(id\)(\s)*{/, "switch (id) { " + inject);
eval("(function ($) {" + current.name + " = " + current.fn + "})(jQuery);;")
} catch (e) {
Error.report(e, "manipulate MarketWindow.showTab (1)");
eval("(function ($) {" + current.name + " = " + save.MarketWindowTab + "})(jQuery);")
}
if (first) {
try {
var inject = "MarketWindow.window.setSize(748,471).removeClass('premium-buy');";
var newfunction = current.fn.toString().replace(/{/, "{" + inject);
eval("(function ($) {" + current.name + " = " + newfunction + "})(jQuery);;")
} catch (e) {
Error.report(e, "manipulate MarketWindow.showTab (2)");
eval("(function ($) {" + current.name + " = " + save.MarketWindowTab + "})(jQuery);")
}
}
};
var waitForMinimap = function (e) {
if (interval) {
window.clearInterval(timeout);
window.clearInterval(interval)
}
var t = function () {
if (!MinimapWindow.window || $(MinimapWindow.window.divMain).find(".mmap_jobs").length == 0) {
return
}
if ($(MinimapWindow.window).find(".loader").is(":visible")) {
return
}
window.clearInterval(timeout);
window.clearInterval(interval);
interval = null;
timeout = null;
for (var e = 0; e < minimap.length; e++) {
try {
minimap[e]()
} catch (t) {
Error.report(t, "MinimapWindow inject")
}
}
};
timeout = setInterval(function () {
window.clearInterval(interval);
window.clearInterval(timeout);
interval = null;
timeout = null
}, 3e5);
interval = setInterval(function () {
t()
}, 200)
};
_self.injectMinimap = function (e) {
try {
if (!MinimapWindow._open) {
MinimapWindow._open = MinimapWindow.open;
MinimapWindow.open = function (e) {
try {
MinimapWindow._open(e);
waitForMinimap()
} catch (t) {
Error.report(t, "MinimapWindow.open")
}
}
}
} catch (t) {
Error.report(t, "manipulate MinimapWindow.open")
}
try {
if (!MinimapWindow._refreshWindow) {
MinimapWindow._refreshWindow = MinimapWindow.refreshWindow;
MinimapWindow.refreshWindow = function () {
try {
MinimapWindow._refreshWindow();
window.setTimeout(function () {
waitForMinimap()
}, 2500)
} catch (e) {
Error.report(e, "MinimapWindow.refreshWindow")
}
}
}
} catch (t) {
Error.report(t, "manipulate MinimapWindow.refreshWindow")
}
minimap.push(function () {
e()
})
};
_self.injectRadialmenu = function (e) {
try {
if (!window.Map.Radialmenu.prototype._open) {
window.Map.Radialmenu.prototype._open = window.Map.Radialmenu.prototype.open;
window.Map.Radialmenu.prototype.open = function (e) {
try {
this._open(e);
for (var t = 0; t < radialmenu.length; t++) {
radialmenu[t](this)
}
} catch (n) {
Error.report(n, "Radialmenu.open")
}
}
}
} catch (t) {
Error.report(t, "manipulate Radialmenu.open")
}
radialmenu.push(function (t) {
e(t)
})
};
_self.injectQuestLog = function (e) {
try {
if (!QuestEmployerView._buildQuestLog) {
QuestEmployerView._buildQuestLog = QuestEmployerView.buildQuestLog;
QuestEmployerView.buildQuestLog = function (e) {
try {
QuestEmployerView._buildQuestLog(e);
for (var t = 0; t < questlog.length; t++) {
questlog[t](e)
}
} catch (n) {
Error.report(n, "QuestEmployerView.buildQuestLog")
}
}
}
questlog.push(function (t) {
e(t)
})
} catch (t) {
Error.report(t, "manipulate QuestEmployerView.buildQuestLog")
}
};
_self.injectQuest = function (e) {
try {
if (!Quest.prototype._render) {
Quest.prototype._render = Quest.render;
Quest.prototype.render = function () {
try {
this._render();
for (var e = 0; e < quests.length; e++) {
quests[e](this)
}
} catch (t) {
Error.report(t, "Quest.render")
}
}
}
quests.push(function (t) {
e(t)
})
} catch (t) {
Error.report(t, "manipulate Quest.render")
}
};
_self.injectReportReceivedEntry = function (callback) {
try {
if (_reportreceived.length == 0) {
try {
var inject = "this._TWDB(msg);";
var newfunction = OnGoingReportReceivedEntry.toString().replace("{", "{\n" + inject + "\n");
eval("OnGoingReportReceivedEntry = " + newfunction);
OnGoingReportReceivedEntry.prototype = new OnGoingEntry;
OnGoingReportReceivedEntry.prototype._TWDB = function (e) {
try {
for (var t = 0; t < _reportreceived.length; t++) {
_reportreceived[t](e)
}
} catch (n) {
Error.report(n, "OnGoingReportReceivedEntry")
}
}
} catch (e) {
Error.report(e, "manipulate " + item + ".prototype.getMainDiv");
eval(item + ".prototype.getMainDiv = " + save[item])
}
}
} catch (e) {
Error.report(e, "manipulate OnGoingReportReceivedEntry")
}
_reportreceived.push(function (e) {
callback(e)
})
};
_self.injectInventoryAddItemsPinItems = function () {
try {
Inventory.__CCPI__addItems = Inventory.__CCPI__addItems || Inventory.addItems;
Inventory.addItems = function (e, t) {
Inventory.__CCPI__addItems.apply(this, arguments);
if (!$("#CC_pin_items").length) {
Inventory.DOM.children(".actions").append($('<div id="CC_pin_items" class="tw2gui_iconbutton" />').attr({title: "Comutare mod de fixare".twdb_twiceHTMLUnescape()}).toggleClass("pinact", TWDB.Settings.itemPinningMode === 1))
}
$("#CC_pin_items").off("click").click(function () {
TWDB.Settings.itemPinningMode ^= true;
$(this).toggleClass("pinact", TWDB.Settings.itemPinningMode === 1);
Inventory.addItems(e, t)
});
if ((e || Inventory.defaultCategory) == "new") {
$.each((TWDB.Settings.get("pinnedItems") || []).slice().reverse(), function (e, t) {
var n = Bag.getItemByItemId(t);
if (n)Inventory.addItemDivToInv(n, true)
})
}
};
var e = "div#CC_pin_items {" + 'background-image: url("' + Images.pinItems + '");' + "background-position: top;" + "width: 34px;" + "height: 36px;" + "position: absolute;" + "left: 1px; }" + "div#CC_pin_items.pinact { background-position: bottom; }";
TWDB.Util.addCss(e, "pinning")
} catch (t) {
Error.report(t, "manipulate Inventory.addItems (pin items)")
}
};
_self.injectInventoryAddItemDivToInvPinItems = function () {
try {
Inventory.__CCPI__addItemDivToInv = Inventory.__CCPI__addItemDivToInv || Inventory.addItemDivToInv;
Inventory.addItemDivToInv = function (e, t) {
if (!TWDB.Settings.itemPinningMode && !t)Inventory.__CCPI__addItemDivToInv.apply(this, arguments); else {
var n = TWDB.Settings.get("pinnedItems") || [], r = e.getId();
var i = $("<div>").append(e.getMainDiv().data("itemId", e.getId()));
i.find("img").off("click").click(TWDB.Settings.itemPinningMode ? function (e) {
var t = n.indexOf(r);
if (t < 0) {
if (n.length >= Inventory.latestSize)return;
n.push(r)
} else n.splice(t, 1);
$(this).parent().parent().toggleClass("opacity05");
TWDB.Settings.set("pinnedItems", n)
} : function (t) {
Inventory.clickHandler(e.getId(), t)
});
if (TWDB.Settings.itemPinningMode)i.addClass(n.indexOf(r) < 0 ? "opacity05" : ""); else i.find("img").setDraggable(Inventory.announceDragStart, Inventory.announceDragStop);
if (t) {
i.addClass("pinned").prependTo($("#bag", Inventory.DOM));
$("#bag > div:empty", Inventory.DOM).remove();
if ($("#bag > div").length > Inventory.latestSize)$("#bag > div:not(.pinned):first", Inventory.DOM).detach()
} else i.appendTo($("#bag", Inventory.DOM))
}
};
var e = "#bag > .pinned > .item {" + 'background: rgba(134, 93, 39, 0.4) url("' + Images.pinMini + '") -1px -1px no-repeat;' + "border-radius: 4px;" + "-webkit-box-shadow: inset 0px 0px 2px 1px #852;" + "-moz-box-shadow: inset 0px 0px 2px 1px #852;" + "box-shadow: inset 0px 0px 2px 1px #852; }" + "#bag > .pinned > .item span.count { bottom: -1px; left: 1px; }" + "#bag > .pinned > .item span.usable { right: -1px; }" + "#bag > .pinned > .item span.item_level { opacity: 0.4; top: 1px; left: initial; right: 1px; background-color: rgba(0, 0, 0, 0); }" + "#bag > .pinned > .item span.cooldown { top: 2px; left: 15px; }";
TWDB.Util.addCss(e, "pinning")
} catch (t) {
Error.report(t, "manipulate Inventory.addItemDivToInv (pin items)")
}
};
_self.injectTelegramWindowAppendTelegramDisplaySource = function (e) {
try {
TelegramWindow.__CCDTS__appendTelegram = TelegramWindow.__CCDTS__appendTelegram || TelegramWindow.appendTelegram;
TelegramWindow.appendTelegram = function (e, t) {
TelegramWindow.__CCDTS__appendTelegram.apply(this, arguments);
t.contentPane.find(".telegram-head:last .author").css({
left: "81px",
width: "140px",
background: "url(//westzzs.innogamescdn.com/images/window/messages/post-head.jpg) -16px 0"
}).before($('<div class="telegram-source"><div>BB</div></div>').attr("title", "Schimbă între textul formatat şi textul sursă").click(function () {
var t = $(this).toggleClass("active").hasClass("active");
$(this).closest(".telegram-head").next(".telegram-post").html(t ? e.text.replace(/<(\/?(b|i|u|del))>/g, "[$1]").replace(/<a href="[^"]+PlayerProfileWindow[^"]+">([^<]+)<\/a>/g, "[player]$1[/player]").replace(/<a href="[^"]+TownWindow[^"]+">([^<]+)<\/a>/g, "[town]$1[/town]").replace(/<a href="[^"]+FortWindow[^"]+">([^<]+)<\/a>/g, "[fort]$1[/fort]").replace(/<a href="[^"]+AllianceWindow[^"]+">([^<]+)<\/a>/g, "[alliance]$1[/alliance]").replace(/<a class="external_link" href="[^=]+=redirect[^=]+=([^"]+)" target="_blank">([^<]+)<\/a>/g, function (e, t, n) {
return "[url=" + decodeURIComponent(t) + "]" + n + "[/url]"
}) : Game.TextHandler.parse(e.text))
}))
};
TWDB.Util.addCss(".telegram-source { position: absolute; width: 24px; height: 24px; cursor: pointer; " + "background: url(//westzzs.innogamescdn.com/images/window/messages/icons.png) 72px -3px; " + "left: 52px; }\n" + ".telegram-source div { display: inline-block; width: 14px; height: 11px; color: white; " + "background: #523F30; font-size: 10px; margin: 4px; padding: 0px 0 5px 2px; line-height: 16px; " + "font-family: Impact, sans-serif; font-weight: 300; }\n" + ".telegram-source.active div { background: blue; }\n")
} catch (t) {
Error.report(t, "manipulate TelegramWindow.appendTelegram (display telegram source)")
}
};
_self.injectWanderingTraderSellDialog = function () {
try {
west.window.shop.view.__proto__.__twdb__showSellDialog = west.window.shop.view.__proto__.showSellDialog;
west.window.shop.view.__proto__.showSellDialog = function (e) {
var t = this.getController(), n = Bag.getItemByItemId(e), r = n.count, i, s;
this.__twdb__showSellDialog.apply(this, arguments);
if (r < 3) {
return
}
i = $("div.tw2gui_dialog").has("div.textart_title:contains(" + n.getName() + ")");
if (i.length === 1) {
r--;
s = "Max-1 (" + r + "x = $ " + r * n.getSellPrice() + ")";
i.children("div.tw2gui_dialog_actions").prepend((new west.gui.Button(s, function () {
t.requestSell({inv_id: n.inv_id, count: r});
i.find("div.tw2gui_button").last().click()
}.bind(this))).getMainDiv())
}
}
} catch (e) {
Error.report(e, "manipulate .showSellDialog (wandering trader - sell all but one)")
}
};
return _self
}($);
Debugger.GameInject = GameInject;
var DataManager = function (e) {
var t = {};
var n = false;
var r = {};
var i = {};
var s = {};
var o = [];
var u = 0;
var a = {items: {}, skills: {}};
var f = {items: true, skills: true};
var l = null;
var c = {};
var h = function () {
if (c.ready) {
return
}
var t = window.addEventListener ? "addEventListener" : "attachEvent";
var n = window[t];
var o = t == "attachEvent" ? "onmessage" : "message";
n(o, function (t) {
if (t.origin !== Script.protocol + "://" + Script.url) {
return
}
try {
var n = e.parseJSON(t.data);
if (isDefined(n.error)) {
(new UserMessage(Script.url + ": " + n.error, UserMessage.TYPE_ERROR)).show()
} else {
(new UserMessage(Script.url + ": " + n.message, UserMessage.TYPE_SUCCESS)).show();
r = n.data;
a.skills = s;
a.items = i;
Cache.save("datamanager", a);
f = {items: true, skills: true};
u++;
Eventer.trigger("TWDBdataLoaded")
}
} catch (t) {
console.log(Script.url + ": empty or corrupt data recieved")
}
}, false);
var l = Cache.load("datamanager");
if (isDefined(l) && isDefined(l.skills) && isDefined(l.items)) {
a = l
}
if (!window.Bag.loaded && window.Bag.loadItems) {
window.Bag.loadItems()
}
var h = window.setInterval(function () {
if (window.Bag.loaded) {
window.clearInterval(h);
c.ready = true
}
}, 100)
};
c = Loader.add("DataManager", "tw-db DataManager", h, {Cache: true});
t.getData = function (e) {
if (isDefined(r[e])) {
return r[e]
}
return r
};
t.getSkills = function () {
return s
};
t.getItems = function () {
return i
};
t.getAnimals = function () {
return o
};
t.getVersion = function () {
return u
};
t.getUp2Date = function () {
return f
};
var p = function () {
try {
var t = e.extend(true, {}, a.skills);
s = {};
for (var n in CharacterSkills.skills) {
var r = TWDB.ClothCalc._skill2id[n];
var i = CharacterSkills.skills[n].points;
s[r] = i;
if (isDefined(t[r])) {
if (t[r] !== i) {
f.skills = false
}
delete t[r]
} else {
f.skills = false
}
}
if (!e.isEmptyObject(t)) {
f.skills = false
}
} catch (o) {
Error.report(o, "DataManager loadSkill")
}
};
var d = function () {
try {
var t = e.extend(true, {}, a.items);
i = {};
o = [];
for (var n in Bag.items_by_id) {
var r = Bag.items_by_id[n].obj;
if (ClothCalc.isItemUsable(r.item_id)) {
i[r.item_id] = true;
if (r.type === "animal") {
o.push({id: r.item_id, speed: r.speed})
}
if (isDefined(t[r.item_id])) {
delete t[r.item_id]
} else {
f.items = false
}
}
}
for (var s in Wear.wear) {
var u = Number(Wear.wear[s].getId());
if (isDefined(i[u])) {
continue
}
if (ClothCalc.isItemUsable(u)) {
i[u] = true;
if (s == "animal") {
o.push({id: u, speed: Wear.wear[s].obj.speed})
}
if (isDefined(t[u])) {
delete t[u]
} else {
f.items = false
}
}
}
if (!e.isEmptyObject(t)) {
f.items = false
}
var l = function (e, t) {
return e["speed"] > t["speed"] ? true : false
};
o.sort(l)
} catch (c) {
Error.report(c, "DataManager loadItems")
}
};
t.loadData = function (e) {
p();
d();
if (e === true) {
v()
}
};
var v = function () {
try {
var t = {};
var n = {};
for (var r in i) {
var o = ItemManager.get(r);
var u = Number(TWDB.ClothCalc._type2id[o.type]);
if (!isDefined(t[u])) {
t[u] = []
}
t[u].push(r);
if (isDefined(o.set)) {
if (!isDefined(n[u])) {
n[u] = []
}
n[u].push(r)
}
}
var a = {
0: Number(Premium.hasBonus("regen")),
1: Number(Premium.hasBonus("automation")),
2: Number(Premium.hasBonus("money")),
3: Number(Premium.hasBonus("character"))
};
var f = '<form name="TWDB_CC_Form" action="' + Script.protocol + "://" + Script.url + '/ingame_calc_2.php" method="post">';
f += '<input style="display:none" type="text" name="worldfull" value="' + window.location.host + '" />';
f += '<input style="display:none" type="text" name="protocol" value="' + Script.protocol + '" />';
f += '<input style="display:none" type="text" name="version" value="' + TheWestApi.version + '" />';
f += '<input style="display:none" type="text" name="after_000_migration" value="' + TWDB.Util.isNewIDsystem() + '" />';
f += '<input style="display:none" type="text" name="nick" value="' + Character.name + '" />';
f += '<input style="display:none" type="text" name="level" value="' + Number(Character.level) + '" />';
f += '<input style="display:none" type="text" name="class" value="' + Number(TWDB.ClothCalc._class2id[Character.charClass]) + '" />';
f += '<input style="display:none" type="text" name="premium" value=\'' + JSON.stringify(a).replace(/'/g, "\\'") + "' />";
f += '<input style="display:none" type="text" name="items" value=\'' + JSON.stringify(t).replace(/'/g, "\\'") + "' />";
f += '<input style="display:none" type="text" name="setitems" value=\'' + JSON.stringify(n).replace(/'/g, "\\'") + "' />";
f += '<input style="display:none" type="text" name="skill" value=\'' + JSON.stringify(s).replace(/'/g, "\\'") + "' />";
f += '<input style="display:none" type="text" name="custom" value=\'' + JSON.stringify(Customs.getCustoms()).replace(/'/g, "\\'") + "' />";
if (Analyser.getExtra()) {
f += '<input style="display:none" type="text" name="report" value=\'' + JSON.stringify(Analyser.getExtra()).replace(/'/g, "\\'") + "' />"
}
f += "</form>";
f += '<script type="text/javascript">document.forms.TWDB_CC_Form.submit();</script>';
f += "</body>";
Support.addKey("world", window.location.host);
Support.addKey("version", TheWestApi.version);
Support.addKey("name", Character.name);
Support.addKey("level", Number(Character.level));
Support.addKey("class", Number(TWDB.ClothCalc._class2id[Character.charClass]));
Support.addKey("premium", JSON.stringify(a).replace(/'/g, "\\'"));
Support.addKey("items", JSON.stringify(t).replace(/'/g, "\\'"));
Support.addKey("setitems", JSON.stringify(n).replace(/'/g, "\\'"));
Support.addKey("skill", JSON.stringify(s).replace(/'/g, "\\'"));
Support.addKey("custom", JSON.stringify(Customs.getCustoms()).replace(/'/g, "\\'"));
if (isDefined(l)) {
e(l).remove()
}
l = e('<iframe width="1px" height="1px" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" allowtransparency="false" style="display:none;" />');
e("body").append(l);
var c = l.get(0);
var h = c.contentWindow || c.contentDocument;
if (h.document)h = h.document;
h.write(f)
} catch (p) {
Error.report(p, "DataManager sendForm")
}
};
t.aktuell = f;
return t
}($);
_base.DataManager = DataManager;
Debugger.DataManager = DataManager;
var Quests = function (e) {
var t = {};
var n = {};
var r = function () {
if (n.ready) {
return
}
if (Settings.get("questwiki", true)) {
i()
}
if (Settings.get("questcancle", true)) {
s()
}
n.ready = true
};
n = Loader.add("Quests", "tw-db Quests", r, {Settings: true});
var i = function () {
try {
window.Quest.CCopen = function (e, t) {
try {
ClothCalc.open(e, t)
} catch (n) {
Error.report(n, "ClothCalc.open ")
}
}
} catch (t) {
Error.report(t, "open ClothCalc from Quest")
}
var n = function (t) {
if (t.requirements.length !== 0) {
t.el.find(".quest_requirement").each(function (n) {
if (isDefined(t.requirements[n])) {
var r = t.requirements[n];
if (isDefined(r.jsInfo) && isDefined(r.jsInfo.id)) {
if (r.jsInfo.type == "inventory_changed") {
var i = Bag.getItemByItemId(r.jsInfo.id);
if (i) {
e(this).children(":last").before("<span> [" + i.count + "]</span>")
}
var s = ItemManager.get(r.jsInfo.id);
if (s) {
e(this).children(".quest_mmaplink").after('<span title="Arată munca in fereastra ClothCalc" class="quest_mmaplink" title="" onclick="javascript:void(Quest.CCopen(\'' + s.name + "','item'))\"><img src=\"" + Images.iconLight + '" /></span>')
}
} else if (r.jsInfo.type == "task-finish-job") {
var o = Jobs.getJobById(r.jsInfo.id);
if (o) {
e(this).children(".quest_mmaplink").after('<span title="Arată munca in fereastra ClothCalc" class="quest_mmaplink" title="" onclick="javascript:void(Quest.CCopen(\'' + o.id + "','job'))\"><img src=\"" + Images.iconLight + '" /></span>')
}
}
}
}
})
}
t.el.find(".questRequirementHelp").append('<a target="_blank" title="Arată misiunea pe tw-db.info" href="' + Script.protocol + "://" + Script.url + "/quest_redirect.php?id=" + t.id + '" style="margin-left:10px;"><img src="' + Images.questwiki + '" /></a>')
};
GameInject.injectQuest(function (e) {
n(e)
})
};
var s = function () {
try {
var e = QuestWindow.cancelQuest;
QuestWindow.cancelQuest = function (t) {
(new west.gui.Dialog("Anulezi misiunea?", "Eşti sigur că vrei să anulezi misiunea?")).setIcon(west.gui.Dialog.SYS_QUESTION).setModal(true, false, {
bg: Game.cdnURL + "/images/curtain_bg.png",
opacity: .4
}).addButton("yes", function () {
e(t)
}).addButton("no", function () {
}).show()
}
} catch (t) {
Error.report(t, "inject " + item + " function: " + name)
}
};
return t
}($);
Debugger.Quests = Quests;
var Customs = function (e) {
var t = {};
var n = {};
var r = false;
var i = null;
var s = {};
var o = function () {
if (s.ready) {
return
}
Eventer.set("TWDBdataLoaded", function () {
a()
});
var e = Cache.load("customs");
if (!e || typeof e !== "object") {
var e = Settings.get("custom");
if (!e || typeof e !== "object") {
u();
var e = n
} else {
for (var t in e) {
if (!e.hasOwnProperty(t)) {
continue
}
e[t].cloth = {};
e[t].ready = false
}
}
}
n = e;
if (Updater.wasUpdated()) {
for (var t in e) {
if (!e.hasOwnProperty(t)) {
continue
}
e[t].cloth = {};
e[t].ready = false
}
}
s.ready = true
};
s = Loader.add("Customs", "tw-db Customs", o, {Settings: true, Cache: true});
var u = function () {
n = {
1: {id: 1, type: "speed", para: {}, name: "Speed", cloth: {}, ready: false},
2: {id: 2, type: "custom", para: {9: 1}, name: "max Health", cloth: {}, ready: false},
3: {id: 3, type: "regen", para: {}, name: "Health Regeneration", cloth: {}, ready: false},
4: {
id: 4,
type: "fort",
para: {att: 200, def: 20, health: 100, type: 0},
name: "Fortbattle Attacker (Att)",
cloth: {},
ready: false
},
5: {
id: 5,
type: "fort",
para: {att: 20, def: 200, health: 100, type: 0},
name: "Fortbattle Attacker (Def)",
cloth: {},
ready: false
},
6: {
id: 6,
type: "fort",
para: {att: 200, def: 20, health: 100, type: 1},
name: "Fortbattle Defender (Att)",
cloth: {},
ready: false
},
7: {
id: 7,
type: "fort",
para: {att: 20, def: 200, health: 100, type: 1},
name: "Fortbattle Defender (Def)",
cloth: {},
ready: false
},
8: {
id: 8,
type: "duel",
para: {12: 1, 15: 1, 16: 1, 24: 1},
name: "Range Dueler (Att)",
cloth: {},
ready: false
},
9: {
id: 9,
type: "duel",
para: {12: 1, 15: 1, 16: 1, 21: 1},
name: "Range Dueler (Def)",
cloth: {},
ready: false
},
10: {
id: 10,
type: "duel",
para: {6: 1, 7: 1, 11: 1, 15: 1},
name: "Melee Dueler",
cloth: {},
ready: false
}
}
};
t.isUp2Date = function () {
var e = true;
for (var t in n) {
if (!n.hasOwnProperty(t)) {
continue
}
if (!n[t].ready) {
update = false;
break
}
}
return e
};
var a = function () {
var e = DataManager.getData("custom");
for (var t in e) {
try {
if (!e.hasOwnProperty(t)) {
continue
}
if (!isDefined(n[t])) {
continue
}
n[t].cloth = e[t].cloth;
n[t].boni = e[t].boni;
var r = n[t];
switch (r.type) {
case"speed":
r.skills = ["ride"];
if (!r.laborpoints) {
var i = r.cloth && r.cloth[1] && r.cloth[1].other && r.cloth[1].other[1] || 0;
var r = r.boni && r.boni.other && r.boni.other[1] || 0;
r -= i;
i += r.boni && r.boni.skill && r.boni.skill[2] || 0;
i += r.boni && r.boni.skill && r.boni.skill[10] || 0;
i += CharacterSkills.skills.ride.points;
r.laborpoints = Math.round((100 + i) * (1 + r / 100))
}
r.laborpoints += "%";
break;
case"regen":
r.skills = ["health"];
r.laborpoints = "";
break;
case"fort":
var s = {}, o = Character.charClass == "soldier" ? Premium.hasBonus("character") ? 1.5 : 1.25 : 1, u = Character.charClass == "worker" ? Premium.hasBonus("character") ? 1.4 : 1.2 : 1, a = (Number(r.boni.other[11]) || 0) + (Number(r.boni.other[17]) || 0), f = (Number(r.boni.other[12]) || 0) + (Number(r.boni.other[18]) || 0);
if (r.para.type == 0) {
s.aim = CharacterSkills.skills.aim.points + (isDefined(r.boni.skill[3]) ? r.boni.skill[3] : 0) + (isDefined(r.boni.skill[15]) ? r.boni.skill[15] : 0);
s.hide = CharacterSkills.skills.hide.points + (isDefined(r.boni.skill[2]) ? r.boni.skill[2] : 0) + (isDefined(r.boni.skill[13]) ? r.boni.skill[13] : 0);
s.dodge = CharacterSkills.skills.dodge.points + (isDefined(r.boni.skill[2]) ? r.boni.skill[2] : 0) + (isDefined(r.boni.skill[12]) ? r.boni.skill[12] : 0);
s.leadership = CharacterSkills.skills.leadership.points + (isDefined(r.boni.skill[4]) ? r.boni.skill[4] : 0) + (isDefined(r.boni.skill[20]) ? r.boni.skill[20] : 0);
s.health = CharacterSkills.skills.health.points + (isDefined(r.boni.skill[1]) ? r.boni.skill[1] : 0) + (isDefined(r.boni.skill[9]) ? r.boni.skill[9] : 0);
var l = 100 + (Character.level - 1) * Character.lifePointPerHealthSkill + s.health * (Character.lifePointPerHealthSkill + Character.lifePointPerHealthSkillBonus);
var c = Number((25 + Math.pow(s.leadership * o, .5) + Math.pow(s.aim, .5) + Math.pow(s.hide, .6) + a) * u).round(2);
var h = Number((10 + Math.pow(s.leadership * o, .5) + Math.pow(s.dodge, .5) + Math.pow(s.hide, .6) + f) * u).round(2)
} else {
s.aim = CharacterSkills.skills.aim.points + (isDefined(r.boni.skill[3]) ? r.boni.skill[3] : 0) + (isDefined(r.boni.skill[15]) ? r.boni.skill[15] : 0);
s.pitfall = CharacterSkills.skills.pitfall.points + (isDefined(r.boni.skill[3]) ? r.boni.skill[3] : 0) + (isDefined(r.boni.skill[17]) ? r.boni.skill[17] : 0);
s.dodge = CharacterSkills.skills.dodge.points + (isDefined(r.boni.skill[2]) ? r.boni.skill[2] : 0) + (isDefined(r.boni.skill[12]) ? r.boni.skill[12] : 0);
s.leadership = CharacterSkills.skills.leadership.points + (isDefined(r.boni.skill[4]) ? r.boni.skill[4] : 0) + (isDefined(r.boni.skill[20]) ? r.boni.skill[20] : 0);
s.health = CharacterSkills.skills.health.points + (isDefined(r.boni.skill[1]) ? r.boni.skill[1] : 0) + (isDefined(r.boni.skill[9]) ? r.boni.skill[9] : 0);
var l = 100 + (Character.level - 1) * Character.lifePointPerHealthSkill + s.health * (Character.lifePointPerHealthSkill + Character.lifePointPerHealthSkillBonus);
var c = Number((25 + Math.pow(s.leadership * o, .5) + Math.pow(s.aim, .5) + Math.pow(s.pitfall, .6) + a) * u).round(2);
var h = Number((10 + Math.pow(s.leadership * o, .5) + Math.pow(s.dodge, .5) + Math.pow(s.pitfall, .6) + f) * u).round(2)
}
r.skills = ["health", "attacker", "defender"];
r.laborpoints = l + " | " + c + " | " + h;
break;
case"duel":
r.skills = [];
var p = 0;
for (var d in r.para) {
var v = Math.floor(d / 5);
p += r.boni && r.boni.skill && r.boni.skill[d] || 0;
p += r.boni && r.boni.skill && r.boni.skill[v] || 0;
if (isDefined(TWDB.ClothCalc._id2skill[d])) {
r.skills.push(TWDB.ClothCalc._id2skill[d]);
if (isDefined(CharacterSkills.skills[TWDB.ClothCalc._id2skill[d]])) {
p += CharacterSkills.skills[TWDB.ClothCalc._id2skill[d]].points
} else if (isDefined(CharacterSkills.attributes[TWDB.ClothCalc._id2skill[d]])) {
p += CharacterSkills.attributes[TWDB.ClothCalc._id2skill[d]].points
}
}
}
r.laborpoints = p;
break;
case"custom":
r.skills = [];
var p = 0;
for (var d in r.para) {
var v = Math.floor(d / 5);
p += r.boni && r.boni.skill && r.boni.skill[d] || 0;
p += r.boni && r.boni.skill && r.boni.skill[v] || 0;
if (isDefined(TWDB.ClothCalc._id2skill[d])) {
r.skills.push(TWDB.ClothCalc._id2skill[d]);
if (isDefined(CharacterSkills.skills[TWDB.ClothCalc._id2skill[d]])) {
p += CharacterSkills.skills[TWDB.ClothCalc._id2skill[d]].points
} else if (isDefined(CharacterSkills.attributes[TWDB.ClothCalc._id2skill[d]])) {
p += CharacterSkills.attributes[TWDB.ClothCalc._id2skill[d]].points
}
}
}
r.laborpoints = p;
break;
default:
return;
break
}
r.ready = true
} catch (m) {
Error.report(m, "GENERICERROR#; handle Customs")
}
}
};
t.open = function () {
var t = e("<div />");
var r = 0;
for (var s in n) {
if (!n.hasOwnProperty(s)) {
continue
}
var o = n[s];
var u = e('<div title="editează" style="display:inline-block;vertical-align:top;height:16px;width:16px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/window/messages/head-icons.png') repeat scroll 0 16px transparent;\" />").click(function (e) {
return function () {
c(e)
}
}(s));
var a = e('<div title="şterge" style="display:inline-block;vertical-align:top;height:16px;width:16px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/icons/delete.png') repeat scroll 0px 0px transparent;\" />").click(function (e) {
return function () {
f(e)
}
}(s));
t.append(e('<div style="display:block;height:18px;padding: 3px 0px 0px 0px;border-bottom: 1px solid #666" />').append('<div style="display:inline-block;vertical-align:top;height:16px;width:300px;overflow:hidden;" title="' + String(o.name).escapeHTML() + '" >' + String(o.name).escapeHTML() + "</div>").append(u).append(a));
r++
}
if (r < 15) {
t.append(e('<div title="adaugă" style="display:block;margin-top:2px;vertical-align:top;height:20px;width:25px;cursor:pointer;background:url(\'' + Game.cdnURL + "/images/window/messages/icons.png') repeat scroll 72px -5px transparent;\" />").click(function () {
l()
}))
}
i = (new west.gui.Dialog("Îndemânări selectate", t)).addButton("ok", function () {
DataManager.loadData()
}).show()
};
var f = function (e) {
if (!isDefined(n[e])) {
return
}
var r = function () {
var r = n;
var s = 0;
n = {};
for (var o in r) {
if (!r.hasOwnProperty(o)) {
continue
}
if (o == e) {
continue
}
s++;
n[s] = r[o];
n[s].id = s
}
i.hide();
t.open()
};
(new west.gui.Dialog("şterge - Îndemânări selectate", "şterge: " + String(n[e].name).escapeHTML() + "?")).addButton("ok", r).addButton("cancel").show()
};
var l = function () {
var e = 0;
for (var t in n) {
if (!n.hasOwnProperty(t)) {
continue
}
e++
}
if (e >= 15) {
(new UserMessage("prea multe intrări, doar zece sunt permise", UserMessage.TYPE_ERROR)).show()
} else {
e++;
c(e)
}
};
var c = function (t) {
if (isDefined(n[t])) {
var r = n[t].name;
var i = JSON.stringify({type: n[t].type, para: n[t].para});
var s = "editează - Îndemânări selectate"
} else {
var r = "";
var i = "";
var s = "adaugă - Îndemânări selectate"
}
var o = (new west.gui.Textfield("twdb_cc_custom_name")).setSize(30).setValue(r);
var u = (new west.gui.Textfield("twdb_cc_custom_name")).setSize(30).setValue(i);
var a = function () {
};
var f = e('<table width="400px" />').append(e("<tr />").append('<td style="vertical-align:middle">Nume:</td>').append(e("<td />").append(o.getMainDiv()))).append(e("<tr />").append('<td style="vertical-align:middle">Cod:</td>').append(e("<td />").append(u.getMainDiv()))).append(e('<tr><td colspan="2">vă rugăm să mergeţi la TW-db.info pentru a obţine fragmentele de cod pentru a le introduce aici <a href="https://' + Script.url + '/?strana=calc" target="_blank">tw-db.info Calculator</a></td></tr>'));
(new west.gui.Dialog(s, f)).addButton("ok", a).addButton("cancel").show()
};
t.getCustoms = function () {
return ClothCalc.data.custom
};
t.debug = function () {
return n
};
return t
}($);
Debugger.Customs = Customs;
var Forum = function (e) {
var t = {};
var n = {};
var r = function () {
if (n.ready) {
return
}
if (Settings.get("forumlastpage", true)) {
e("#windows").on("DOMNodeInserted", "iframe", function () {
e("iframe[src='forum.php']").load(function () {
i()
})
})
}
n.ready = true
};
n = Loader.add("Forum", "tw-db Forum", r, {Settings: true});
var i = function () {
var t = e('iframe[src="forum.php"]').contents();
if (t.find("#thread_overview").length == 1) {
t.find(".row").each(function (t) {
var n = Math.floor(e(this).find(".cell_4").html() / 10) + 1;
var r = e(this).find(".cell_1 a").attr("onclick").match(/\d+/);
e(this).find(".cell_3").append('<img src="' + TWDB.images.lastpost + '" style="position:absolute;cursor:pointer;margin-left:3px;" onclick="Forum.openThread(' + r + ", " + n + ')"></img>')
})
}
};
return t
}($);
Debugger.Forum = Forum;
var DuelMotivation = function (e) {
var t = {};
var n = {};
var r = null;
var i = null;
var s = null;
var o = null;
var u = 0;
var a = "";
var f = 0;
var l = "";
var c = false;
var h = function () {
if (n.ready) {
return
}
if (!Settings.get("duelmotivation", true)) {
n.ready = true;
return
}
if (Character.setDuelProtection.toString().search("duelprotection_changed") == -1) {
Character.twdb_setDuelProtection = Character.setDuelProtection;
Character.setDuelProtection = function (e) {
if (e === 0) {
e = 1
}
var t = e !== Character.duelProtection;
Character.twdb_setDuelProtection.apply(this, arguments);
if (t) {
EventHandler.signal("duelprotection_changed", [])
}
}
} else if (TWDB.script.isDev()) {
console.log("setDuelProtection changed");
(new UserMessage("setDuelProtection changed")).show()
}
var t = "div#ui_character_container .twdb_charcont_ext {background-image:" + e("#ui_character_container").css("background-image") + "; background-repeat:no-repeat; background-position:bottom left; width:143px; height:15px; position:absolute; left:0px; top:173px; padding-top:2px;}" + "div#ui_character_container #duelmot_bar {background-image:url(" + TWDB.images.duelMotBar + "); background-repeat:no-repeat; background-position:0px -26px; top:2px; left:3px; height:13px; width:137px; position:absolute; color:#FFF; text-align:center; font-size:8pt; line-height:12px; font-weight:bold; text-shadow: 1px 0px 1px #000, -1px 0px 1px #000;}" + "div#ui_character_container .duelmot_ko {background-position:0px -13px!important;}" + "div#ui_character_container .duelmot_protect {background-position:0px 0px!important;}" + "div#ui_character_container .duelmot_warn {background-position:0px 0px; top:2px; left:3px; opacity:0;}" + "div#ui_character_container .duelmot_dim {opacity:0.6;}";
TWDB.Util.addCss(t, "duelmot");
c = Game.duelProtectionEarly === Game.duelProtectionHours;
p();
EventHandler.listen("duelprotection_changed", function () {
v()
});
EventHandler.listen("duelmotivation_changed", function () {
m()
});
v();
m(true);
if (Character.homeTown.town_id !== 0) {
Ajax.remoteCallMode("building_saloon", "get_data", {town_id: Character.homeTown.town_id}, function (e) {
if (e.error) {
return (new UserMessage(e.msg)).show()
}
Character.setDuelMotivation(e.motivation)
})
}
n.ready = true
};
var p = function () {
e("#ui_character_container").css({"background-repeat": "no-repeat", height: "191px"});
e(".energy_add").css({top: "161px"});
var t = e('<div class="twdb_charcont_ext" />').insertBefore(".energy_bar");
r = e('<div id="duelmot_bar" class="duelmot_dim" />').appendTo(t);
i = e('<div class="status_bar duelmot_warn" />').appendTo(t)
};
var d = function (e, t, n, s, o) {
if (e === undefined) {
e = ""
}
if (t === undefined) {
t = false
}
if (n === undefined) {
n = false
}
if (s === undefined) {
s = false
}
if (!s) {
if (typeof n === "string") {
r.attr("class", n)
}
r.text(e);
if (typeof t === "string") {
i.addMousePopup(t)
}
} else {
i.fadeTo(400, 1, function () {
d(e, t, n, false);
if (o) {
o()
}
i.fadeTo(400, 0)
})
}
};
var v = function () {
if (s === Character.duelProtection) {
return
}
s = Character.duelProtection;
if (Character.getDuelProtection(true) > (new ServerDate).getTime()) {
g()
} else if (u > 0) {
o = 666
} else {
m()
}
};
var m = function (e) {
if (o === Character.duelMotivation || u > 0) {
return
}
o = Character.duelMotivation;
var t = Math.round(Character.duelMotivation * 100);
d(t + "%", "Motivaţie de duel: " + t + "%", e ? "duelmot_dim" : "")
};
var g = function (e) {
if (f) {
w.clearInterval(f)
}
var t = (new ServerDate).getTime();
var n = Character.getMandatoryDuelProtection(true);
var r = Character.getDuelProtection(true);
a = "<div style='text-align:center;'>Timp K.O.<br />";
if (!c && n > t && !e) {
a += "Suspendare pe " + (new Date(n)).toLocaleString() + "<br />";
u = parseInt((n - t) / 1e3, 10);
l = "getMandatoryDuelProtection"
} else {
u = parseInt((r - t) / 1e3, 10);
l = "getDuelProtection"
}
u = Math.max(0, u);
a += "Protecţie duel până pe " + (new Date(r)).toLocaleString() + "</div>";
d(u.formatDuration(), a, l === "getDuelProtection" ? "duelmot_protect" : "duelmot_ko", true);
i.addClass("koblink").click(function () {
i.removeClass("koblink").stop(true, false).css({opacity: 0})
});
f = w.setInterval(function () {
y()
}, 1e3)
};
var y = function () {
if (u > 0) {
if (u % 180 === 0) {
u = parseInt((Character[l](true) - (new ServerDate).getTime()) / 1e3, 10) || 0
} else {
u--
}
if (u <= 0 || o === 666) {
w.clearInterval(f);
i.stop(true, true);
u = 0;
if (l === "getDuelProtection" || o === 666) {
o = null;
return d("", "", "", true, m)
} else {
return g(true)
}
}
d(u.formatDuration());
if (u <= 1800 && i.hasClass("koblink") && u % 8 === 0) {
i.fadeTo(500, .5).fadeTo(500, 0)
}
return
}
o = null;
m()
};
n = Loader.add("DuelMotivation", "tw-db DuelMotivation", h, {Settings: true});
return t
}($);
Debugger.DuelMotivation = DuelMotivation;
var Bank = function (e) {
var t = {};
var n = true;
var r = {};
var i = function () {
if (r.ready) {
return
}
if (Settings.get("autodeposit", true)) {
EventHandler.listen("position_change", function () {
u()
});
u()
}
if (Settings.get("deposit", true)) {
s()
}
r.ready = true
};
r = Loader.add("Bank", "tw-db Bank", i, {Settings: true});
var s = function () {
btn = GameInject.CharacterButton.add(Images.buttonBank);
btn.click(function () {
o()
}).addMousePopup("Depozitează-ţi banii")
};
var o = function () {
(new west.gui.Dialog("Depozitează-ţi banii", e("<span class='twdb_banking'>Bani: " + w.Character.money + "</span>"))).setIcon(west.gui.Dialog.SYS_QUESTION).setModal(true, false).addButton("yes", function () {
a(1)
}).addButton("no").show()
};
var u = function () {
try {
if (w.Character.homeTown.town_id == 0 || w.Character.money <= 10) {
n = true;
return
}
if (w.Character.position.x == w.Character.homeTown.x && w.Character.position.y == w.Character.homeTown.y) {
if (n) {
n = false;
(new west.gui.Dialog("Depozitează-ţi banii", e("<span class='twdb_banking'>Ai ajuns în oras. Vrei să-ţi depozitezi banii? <br />Bani: " + w.Character.money + "</span>"))).setIcon(west.gui.Dialog.SYS_QUESTION).setModal(true, false).addButton("yes", function () {
n = true;
a(w.Character.homeTown.town_id)
}).addButton("no").show()
}
} else {
n = true
}
} catch (t) {
Error.report(t, "autoDeposit")
}
};
var a = function (e) {
if (w.Character.money <= 0) {
return
}
w.BankWindow.townid = e;
w.BankWindow.DOM = (new west.gui.Textfield("tb_balance_input_" + w.BankWindow.townid)).setSize(10).setValue(w.Character.money).getMainDiv();
w.BankWindow.Balance.add()
};
return t
}($);
Debugger.Bank = Bank;
var Market = function (e) {
var t = {};
var n = false;
var r = false;
var i = {};
var s = {};
var o = function () {
if (s.ready)return;
if (Settings.get("marketmap", true)) {
GameInject.addTabOnMarketWindow("Harta pieţei", "marketmap", function () {
c()
});
TWDB.Util.addCss(".twdb_mmap_point { width: 7px;" + "height: 7px;" + "background-color: #F00;" + "position: absolute;" + "border: 1px solid #000;" + "border-radius: 5px; }")
}
if (Settings.get("marketreminder", true)) {
GameInject.MarketOfferTable(function (e) {
u(e)
});
GameInject.MarketWatchlistTable(function (e) {
a(e)
});
l.init()
}
s.ready = true
};
s = Loader.add("Market", "tw-db Market", o, {Settings: true});
var u = function (t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
var i = e('<div class="mpo_alert" />');
e(MarketWindow.offerTable.getMainDiv()).children().find(".marketBidsData_" + r.market_offer_id).append(i);
if (!r.isFinished) {
i.append(f(r))
}
}
};
var a = function (t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
var i = e('<div class="mpo_alert" />');
e(MarketWindow.watchlistTable.getMainDiv()).children().find(".marketWatchData_" + r.market_offer_id).append(i);
if (!r.isFinished) {
i.append(f(r))
}
}
};
var f = function (t) {
var n = e('<img src="' + Images.iconAlarm + '" />').css({cursor: "pointer"});
n.click(function (e, t) {
return function () {
l.create(e, t)
}
}(t, n));
if (l.exists(t.market_offer_id) === false) {
n.css("opacity", .5)
}
return n
};
var l = function (e) {
var t = {}, n = {}, r = {};
t.init = function () {
var e = Cache.load("marketreminder");
if (isDefined(e)) {
n = e
}
for (var t in n) {
i(t)
}
};
t.exists = function (e) {
return isDefined(n[e])
};
var i = function (e) {
var t = n[e], r = Math.max(t.ends * 1e3 - (new Date).getTime() - t.reminder * 60 * 1e3, 100);
t.timer = setTimeout(function (e) {
return function () {
u(e)
}
}(e), r)
};
var s = function (e, r, s) {
var o = parseInt(r.getValue(), 10);
if (isNaN(o) || o < 1) {
t.create(e, s);
return
}
if ((new Date).getTime() / 1e3 + o * 60 >= e.auction_end_date) {
(new UserMessage("?remindertoolate")).show();
t.create(e, s);
return
}
if (t.exists(e.market_offer_id)) {
clearTimeout(n[e.market_offer_id].timer);
delete n[e.market_offer_id].timer
}
n[e.market_offer_id] = {
ends: e.auction_end_date,
reminder: o,
id: e.market_offer_id,
item: e.item_id
};
Cache.save("marketreminder", n);
i(e.market_offer_id)
};
var o = function (e) {
delete n[e];
Cache.save("marketreminder", n)
};
var u = function (t) {
var r = n[t], i = ItemManager.get(r.item), s = new OnGoingEntry;
s.init();
s.setTooltip("Licitaţie: " + i.name + ", Sfârşit: " + Number(r.ends - (new Date).getTime() / 1e3).getTimeString4Timestamp());
s.setImage(e('<img src="' + Images.notiBell + '" />'));
WestUi.NotiBar.add(s);
TitleTicker.setNotifyMessage("Licitaţie: " + i.name + ", Sfârşit: " + Number(r.ends - (new Date).getTime() / 1e3).getTimeString4Timestamp());
AudioController.play(AudioController.SOUND_NEWMSG);
o(t)
};
t.create = function (r, i) {
var u = e("<div />").append('<span style="position:relative; width:100%;display:block;">Sfârşitul licitaţiei: ' + r.auction_ends_in.getTimeString4Timestamp() + "</span>"), a = (new west.gui.Textfield("twdb_analyser_last")).maxlength(4).onlyNumeric().setLabel("Aminteşte-mi înainte de sfârşitul licitaţiei: ").setPlaceholder("Minute");
u.append(a.getMainDiv());
if (t.exists(r.market_offer_id)) {
a.setValue(n[r.market_offer_id].reminder);
i.css("opacity", 1)
} else {
i.css("opacity", .5)
}
var f = (new west.gui.Dialog("Memento pentru piaţă", u)).setIcon(west.gui.Dialog.SYS_QUESTION).setModal(true, false, {
bg: w.Game.cdnURL + "/images/curtain_bg.png",
opacity: .4
}).addButton("ok", function () {
i.css("opacity", 1);
s(r, a, i)
});
if (t.exists(r.market_offer_id)) {
f.addButton("şterge", function () {
o(r.market_offer_id);
i.css("opacity", .5)
})
}
f.addButton("cancel", function () {
}).show()
};
return t
}(e);
var c = function () {
try {
window.MarketWindow.window.showLoader();
window.MarketWindow.window.setTitle("Harta pieţei").setSize(840, 655).addClass("premium-buy");
var t = -111, s = -1;
r = e('<div style="position:relative;display:block;margin:10px 9px 10px 9px;width:770px;height:338px;" />');
for (var o = 1; o < 16; o++) {
if (o == 8) {
s += 169;
t = -111
}
t += 110;
var u = e('<img style="position:absolute;border:1px solid #000;width:110px;height:169px;left:' + t + "px;top:" + s + 'px;" src="' + Game.cdnURL + "/images/map/minimap/county_" + o + '.jpg" />');
if (o == 4) {
u.css({height: "114px"})
} else {
if (o == 11) {
u.css({height: "114px", top: s + 55 + "px"})
} else {
if (o == 15) {
u.css({height: "108px", width: "109px", left: "329px", top: "114px"})
}
}
}
r.append(u)
}
n = e("<div />").append(r);
e(MarketWindow.window.getContentPane()).find(".marketplace-marketmap").children().remove();
e(MarketWindow.window.getContentPane()).find(".marketplace-marketmap").append(n);
i = {};
p();
d();
v();
m();
window.MarketWindow.window.hideLoader()
} catch (a) {
Error.report(a, "Market map")
}
};
var h = function (e, t, n, r, s, o, u) {
if (!isDefined(i[e])) {
i[e] = {
name: t,
town_id: e,
x: n,
y: r,
count: 0,
offers_end: {},
offers_unend: {},
money: 0,
distance: window.Map.calcWayTime(window.Character.position, {x: n, y: r}).formatDuration()
}
}
var a = i[e];
if (s !== "") {
if (!isDefined(a["offers_end"][s["item_id"]])) {
a["count"]++;
a["offers_end"][s["item_id"]] = s
} else {
a["offers_end"][s["item_id"]]["count"] += s["count"]
}
}
if (o !== "") {
if (!isDefined(a["offers_unend"][o["item_id"]])) {
a["count"]++;
a["offers_unend"][o["item_id"]] = o
} else {
a["offers_unend"][o["item_id"]]["count"] += o["count"]
}
}
if (u !== 0) {
a["money"] += u
}
};
var p = function () {
e.ajax({
url: "game.php?window=building_market&action=fetch_bids&h=" + Player.h,
type: "POST",
data: {},
dataType: "json",
async: false,
success: function (e) {
var t = e.msg.search_result;
for (var n = 0; n < t.length; n++) {
if (t[n]["auction_ends_in"] < 0 || t[n]["current_bid"] == t[n]["max_price"]) {
var r = new Object;
r["item_id"] = t[n].item_id;
r["count"] = parseFloat(t[n].item_count);
var i = ""
} else {
var i = new Object;
i["item_id"] = t[n].item_id;
i["count"] = parseFloat(t[n].item_count);
var r = ""
}
h(t[n].market_town_id, t[n].market_town_name, t[n].market_town_x, t[n].market_town_y, r, i, 0)
}
}
})
};
var d = function () {
e.ajax({
url: "game.php?window=building_market&action=fetch_offers&h=" + Player.h,
type: "POST",
data: {},
dataType: "json",
async: false,
success: function (e) {
var t = e.msg.search_result;
for (var n = 0; n < t.length; n++) {
h(t[n].market_town_id, t[n].market_town_name, t[n].market_town_x, t[n].market_town_y, "", "", t[n].current_bid)
}
}
})
};
var v = function () {
for (var t in i) {
var n = i[t];
var s = '<div style="max-width: 305px;"><b>' + n.name + "</b>" + (n["money"] == 0 ? "" : " " + n["money"] + "$") + "<br/>";
var o = 0, u;
for (var a in n["offers_end"]) {
o++;
if (o > 19) {
s += " ... ";
break
}
u = n["offers_end"][a];
if (n["offers_end"][a] !== 0) {
s += '<div class="item item_inventory"><img width="53" height="53" src="' + ItemManager.get(a).image + '" class="tw_item item_inventory_img dnd_draggable dnd_dragElem" style="margin-left:3px;margin-top:4px;"><span class="count" style="display: block;"><p>' + u.count + "</p></span></div>"
}
}
for (a in n["offers_unend"]) {
o++;
if (o > 19) {
s += " ... ";
break
}
u = n["offers_unend"][a];
if (n["offers_unend"][a] !== 0) {
s += '<div style="opacity:0.35" class="item item_inventory"><img width="53" height="53" src="' + ItemManager.get(a).image + '" class="tw_item item_inventory_img dnd_draggable dnd_dragElem" style="margin-left:3px;margin-top:4px;"><span class="count" style="display: block;"><p>' + u.count + "</p></span></div>"
}
}
s += "</div>";
e("<div />").css({
left: n.x / (181 * window.Map.tileSize) * 770 - 5 + "px",
top: n.y / (79 * window.Map.tileSize) * 338 - 5 + "px"
}).attr({"class": "twdb_mmap_point", id: t, title: s}).click(function (e) {
return function () {
TownWindow.open(e.x, e.y)
}
}(n)).appendTo(r)
}
e("<img src='" + to_cdn("images/map/minimap/icons/miniicon_pos.png") + "' />").css({
left: Character.position.x / (181 * window.Map.tileSize) * 770 - 8 + "px",
top: Character.position.y / (79 * window.Map.tileSize) * 338 - 8 + "px",
width: "16px",
height: "16px"
}).attr({"class": "mmap_mappoint", id: "mmap_icon_pos", title: "Poziţia ta."}).appendTo(r)
};
var m = function () {
try {
var t = [], r, s, o;
for (r in i) {
t.push({id: r, distance: i[r].distance})
}
t.sort(function (e, t) {
return e.distance == t.distance ? 0 : e.distance > t.distance ? 1 : -1
});
o = "";
for (var u = 0; u < t.length; u++) {
var a = i[t[u].id];
o += '<div><a onclick="TownWindow.open(' + a.x + ", " + a.y + ');">' + a.name + "</a>" + ' <a title="Arată oraşul pe hartă" onclick="Map.center(' + a["x"] + ", " + a["y"] + ')"><img src="' + Game.cdnURL + '/images/icons/center.png" /></a>' + " Distanță: " + a["distance"] + ' <a title="Mergi în oraş" onclick="TaskQueue.add(new TaskWalk(' + a.town_id + ",'town'))\"><img src=\"" + Game.cdnURL + '/images/map/icons/instantwork.png"></a>' + (a["money"] == 0 ? "" : " " + a["money"] + "$") + "<br />";
for (s in a["offers_end"]) {
var f = a["offers_end"][s];
if (a["offers_end"][s] !== 0) {
var l = new ItemPopup(ItemManager.get(s));
o += '<div class="item item_inventory" title="' + l.getXHTML().escapeHTML() + '"><img width="53" height="53" src="' + ItemManager.get(s).image + '" class="tw_item item_inventory_img dnd_draggable dnd_dragElem" style="margin-left:3px;margin-top:4px;"><span class="count" style="display: block;"><p>' + f.count + "</p></span></div>"
}
}
for (s in a["offers_unend"]) {
var f = a["offers_unend"][s];
if (a["offers_unend"][s] !== 0) {
var l = new ItemPopup(ItemManager.get(s));
o += '<div style="opacity:0.35" class="item item_inventory" title="' + l.getXHTML().escapeHTML() + '"><img width="53" height="53" src="' + ItemManager.get(s).image + '" class="tw_item item_inventory_img dnd_draggable dnd_dragElem" style="margin-left:3px;margin-top:4px;"><span class="count" style="display: block;"><p>' + f.count + "</p></span></div>"
}
}
o += "</div>";
for (var c = 0; c <= (a.count - a.count % 12) / 12; c++) {
o += a.count == 0 ? "<br/>" : "<br/><br/><br/><br/>"
}
}
var h = new west.gui.Scrollpane;
e(h.getMainDiv()).css({height: "200px", "margin-left": "8px"});
h.appendContent(o);
n.append(h.getMainDiv())
} catch (p) {
Error.report(p, "Market createTownList")
}
};
return t
}($);
Debugger.Market = Market;
var Fort = function ($) {
var _self = {};
var loader = {};
var init = function () {
if (loader.ready) {
return
}
if (Settings.get("enhancedfortrecruitment", true)) {
inject()
}
loader.ready = true
};
loader = Loader.add("Fort", "tw-db Fort", init, {Settings: true});
var inject = function () {
try {
var gradeValues = {
TRAITOR: "-2",
RESERVIST: "-1",
RECRUIT: "0",
PRIVATE: "1",
SERGEANT: "2",
CAPTAIN: "3",
GENERAL: "4"
};
var gradeNames = {
"-2": "traitor",
"-1": "reservist",
0: "recruit",
1: "private",
2: "sergeant",
3: "captain",
4: "general"
};
var getGradeImg = function (e, t, n, r) {
try {
return '<img class="' + (n || "") + '" src="' + window.Game.cdnURL + "/images/chat/servicegrade_" + gradeNames[e] + '.png" title="' + (t ? window.Chat.rankTitles[gradeNames[e]].escapeHTML() : "") + (isDefined(r) && r !== "" ? " (" + r + ")" : "") + '" />'
} catch (i) {
Error.report(i, "getGradeImg")
}
};
var newfunction = String(FortBattleWindow.updateRecruitlist);
newfunction = newfunction.replace(/totalCnt\s{0,1}=\s{0,1}0;/, " totalCnt = 0 , totalCntTotal = 0 , gradeCountTotal = { '-2': 0, '-1': 0, '0': 0, '1': 0, '2': 0, '3': 0 };");
newfunction = newfunction.replace(/gradeCount\[g\]/, "gradeCount[g] + ' [' + gradeCountTotal[g] + ']'");
newfunction = newfunction.replace(/\+\s{0,1}totalCnt\s{0,1}\+/, "+ totalCnt + ' [' + totalCntTotal + ']' +");
newfunction = newfunction.replace(/if\(this\.preBattle\.isHidden\(list\[i\]\['class'\],'rank_'\+priv\)\)continue;/g, "totalCntTotal++;gradeCountTotal[priv]++;if(this.preBattle.isHidden(list[i]['class'],'rank_'+priv,list[i].coords.x,list[i].coords.y))continue;");
newfunction = newfunction.replace(/getGradeImg\(priv,true,'recruitplayer recruitplayer-'\+i\)/g, "getGradeImg(priv,true,'recruitplayer recruitplayer-'+i,list[i].officername||'')");
newfunction = newfunction.replace(/\.addColumns\(\['count','name','town','rank','class','status','evaluated'\]\)/g, ".addColumns(['count','name','town','rank','class','status','healthpoints'])");
newfunction = newfunction.replace(/\.appendToThCell\('head','evaluated',.*,.*\);var list=/g, ".appendToThCell('head','healthpoints','Sortează după viaţă','<span class=\"sort sort-healthpoints\">'+'Lp'+'</span>');var list=");
newfunction = newfunction.replace(/evaluated:list\[i\]\.officername\|\|''/g, "healthpoints:'<p style=\"font-weight: 700; color: '+((this.preBattle.battleData.fortCoords.x-list[i].coords.x==0&&this.preBattle.battleData.fortCoords.y-list[i].coords.y==0) ? 'rgb(0, 153, 0)' : ((Math.abs(this.preBattle.battleData.fortCoords.x-list[i].coords.x)<=500&&Math.abs(this.preBattle.battleData.fortCoords.y-list[i].coords.y)<=500) ? 'rgb(255, 119, 0)' : 'rgb(255, 0, 0)'))+'\">'+list[i].currhealth+'/'+list[i].maxhealth+'</p>'");
eval("FortBattleWindow.updateRecruitlist=(function(){ var lastStamp; return " + newfunction + "})();");
var newfunction = String(PreBattle.getSortedPlayerlist);
newfunction = newfunction.replace(/pa\s{0,1},\s{0,1}pb\s{0,1}\)/g, "pa,pb,that)");
eval("PreBattle.getSortedPlayerlist = " + newfunction);
var fb_sort = String(FortBattleWindow.recruitListClick);
fb_sort = "FortBattleWindow.recruitListClick=" + fb_sort;
fb_sort = fb_sort.replace(/var hidden=function\(classKey,privKey\){return that\.preBattle\.isHidden\(classKey,'rank_'\+privKey\);};/g, "var hidden=function(classKey,privKey, location){return that.preBattle.isHidden(classKey,'rank_'+privKey, null, null, location);};");
fb_sort = fb_sort.replace(/return{message:sorting,title:title};/g, "else if(key=='healthpoints'){title='Sortează după viaţă';sorting.append(getSortLink('Crescător - Viaţă curentă','>currhealth'));sorting.append(getSortLink('Descrescător - Viaţă curentă','<currhealth')); sorting.append(getSortLink('Crescător - Viaţă Maximă','>maxhealth'));sorting.append(getSortLink('Descrescător - Viaţă Maximă','<maxhealth'));sorting.append('<br />');sorting.append(getSortLink('Crescător - Distantă','>distance'));sorting.append(getSortLink('Descrescător - Distanţă','<distance'));sorting.append(getVisLink(hidden(null,'-3','atfort')?'Arată jucătorii de la fort':'Ascunde jucătorii de la fort','atfort'));sorting.append(getVisLink(hidden(null,'-3','nearbyfort')?'Arată jucătorii de lângă fort':'Ascunde jucătorii de lângă fort','nearbyfort'));sorting.append(getVisLink(hidden(null,'-3','notatfort')?'Arată jucătorii care nu sunt langa fort':'Ascunde jucătorii care nu sunt în apropierea fortului','notatfort'));}return{message:sorting,title:title};");
eval(fb_sort);
PreBattle.recruitSorting.currhealth = function (e, t, n) {
return n ? e.currhealth == t.currhealth : e.currhealth < t.currhealth
};
PreBattle.recruitSorting.maxhealth = function (e, t, n) {
return n ? e.maxhealth == t.maxhealth : e.maxhealth < t.maxhealth
};
PreBattle.recruitSorting.distance = function (e, t, n, r, i, s) {
};
PreBattle.isHidden = function (e, t, n, r, i) {
if (i == null) {
var s = this.battleData.fortCoords.x - n;
var o = this.battleData.fortCoords.y - r;
var u = "notatfort";
if (s == 0 && o == 0) {
u = "atfort"
} else if (Math.abs(s) <= 500 && Math.abs(o) <= 500) {
u = "nearbyfort"
}
} else if (i !== null) {
var u = i
}
return e !== undefined && this.recruitlistVisibility[e] || t !== undefined && this.recruitlistVisibility[t] || u !== undefined && this.recruitlistVisibility[u]
}
} catch (e) {
Error.report(e, "Fort")
}
};
return _self
}($);
Debugger.Fort = Fort;
var CCstarter = function (e) {
var t = {};
var n = {};
var r = function () {
if (n.ready) {
return
}
ClothCalc.ready = n.ready;
ClothCalc.init();
n.ready = true
};
n = Loader.add("ClothCalc", "tw-db ClothCalc", r, {});
return t
}($);
Debugger.CCstarter = CCstarter;
if ((w.location.href.indexOf(".the-west.") !== -1 || w.location.href.indexOf(".tw.innogames.") !== -1) && w.location.href.indexOf("game.php") !== -1) {
Loader.init()
}
})(jQuery)
}
});