diff --git a/dist/main.bundle.js b/dist/main.bundle.js index 00036df10..a42a0afd1 100644 --- a/dist/main.bundle.js +++ b/dist/main.bundle.js @@ -1,4 +1,4 @@ -!function(t){function e(e){for(var a,o,s=e[0],l=e[1],c=e[2],u=0,m=[];uObject(o.a)({unbuyable:{color:t.palette.action.disabled},money:{color:t.colors.money}}));function l(t){const e=s();if(void 0!==t.player){if("number"!=typeof t.money)throw new Error("if player if provided, money should be number, contact dev");if(!t.player.canAfford(t.money))return a.createElement("span",{className:e.unbuyable},r.a.formatMoney(t.money))}return a.createElement("span",{className:e.money},"number"==typeof t.money?r.a.formatMoney(t.money):t.money)}},,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"f",(function(){return i})),n.d(e,"a",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return l})),n.d(e,"c",(function(){return c}));var a=n(147);function r(t,e=!1){t=Math.floor(t);const n=Math.floor(t/1e3),a=Math.floor(n/86400),r=n%86400,i=Math.floor(r/3600),o=r%3600,s=Math.floor(o/60),l=o%60,c=(()=>{let e=""+t%1e3;for(;e.length<3;)e="0"+e;return e})();let f="";return a>0&&(f+=a+" days "),i>0&&(f+=i+" hours "),s>0&&(f+=s+" minutes "),f+=(e?`${l}.${c}`:""+l)+" seconds",f}function i(t){if(!o(t))return"";if(0===t.length)return"";const e=t.concat().sort(),n=e[0],a=e[e.length-1],r=n.length;let i=0;for(;i>>16,2246822507)^Math.imul(a^a>>>13,3266489909),a=Math.imul(a^a>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),(4294967296*(2097151&a)+(n>>>0)).toString(16)}},function(t,e,n){"use strict";n.d(e,"c",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(374);function r(t,e){if(null==e)return null;if("object"==typeof e&&"string"==typeof e.ctor&&void 0!==e.data){if("AllServersMap"===e.ctor)return console.warn("Converting AllServersMap for v0.43.1"),e.data;const t=r.constructors[e.ctor];if("function"==typeof t&&"function"==typeof t.fromJSON){const n=t.fromJSON(e);return void 0!==t.validationData&&Object(a.b)(n,t.validationData),n}}return e}function i(t,e,n){n||(n=Object.keys(e));const a={};for(let t=0;t{switch(typeof t){case"number":return t;case"object":return Object(o.a)(t.min,t.max);default:throw Error(`Do not know how to convert the type '${typeof t}' to a number`)}};for(const t of r.a){const r={hostname:t.hostname,ip:g(),numOpenPortsRequired:t.numOpenPortsRequired,organizationName:t.organizationName};void 0!==t.maxRamExponent&&(r.maxRam=Math.pow(2,i(t.maxRamExponent)));for(const e of n)void 0!==t[e]&&(r[e]=i(t[e]));const o=new a.a(r);for(const e of t.literature||[])o.messages.push(e);o.hostname===c.a.WorldDaemon&&(o.requiredHackingSkill*=f.a.WorldDaemonDifficulty),y(o),void 0!==t.networkLayer&&e[i(t.networkLayer)-1].push(o)}const s=(t,e)=>{for(const r of t)n=r,a=e(),n.serversOnNetwork.push(a.hostname),a.serversOnNetwork.push(n.hostname);var n,a};s(e[0],()=>t);for(let t=1;t{return(n=e[t-1])[Math.floor(Math.random()*n.length)];var n})}function E(){for(const t of Object.keys(u))delete u[t];u={}}function v(t){u=JSON.parse(t,s.c)}function k(t=!1){const e=JSON.parse(JSON.stringify(u),s.c);for(const n of Object.keys(e)){const a=e[n];if(t)a.runningScripts=[];else for(let t=0;tObject(a.useContext)(i.Player),Router:()=>Object(a.useContext)(i.Router)}},,function(t,e,n){"use strict";n.d(e,"j",(function(){return a})),n.d(e,"d",(function(){return r})),n.d(e,"i",(function(){return i})),n.d(e,"f",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"h",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"g",(function(){return h}));const a=["Software Engineering Intern","Junior Software Engineer","Senior Software Engineer","Lead Software Developer","Head of Software","Head of Engineering","Vice President of Technology","Chief Technology Officer"],r=["IT Intern","IT Analyst","IT Manager","Systems Administrator"],i=["Security Engineer"],o=["Network Engineer","Network Administrator"],s=["Business Intern","Business Analyst","Business Manager","Operations Manager","Chief Financial Officer","Chief Executive Officer"],l=["Police Officer","Police Chief","Security Guard","Security Officer","Security Supervisor","Head of Security"],c=["Field Agent","Secret Agent","Special Operative"],f=["Waiter","Employee"],u=["Software Consultant","Senior Software Consultant"],m=["Business Consultant","Senior Business Consultant"],h=["Part-time Waiter","Part-time Employee"]},,function(t,e,n){"use strict";function a(t,e){const n=Math.min(t,e),a=Math.max(t,e);return Math.floor(Math.random()*(a-n+1))+n}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o}));const a={ScriptBaseRamCost:1.6,ScriptDomRamCost:25,ScriptCorporationRamCost:1022.4,ScriptHackRamCost:.1,ScriptHackAnalyzeRamCost:1,ScriptGrowRamCost:.15,ScriptGrowthAnalyzeRamCost:1,ScriptWeakenRamCost:.15,ScriptWeakenAnalyzeRamCost:1,ScriptScanRamCost:.2,ScriptRecentScriptsRamCost:.2,ScriptPortProgramRamCost:.05,ScriptRunRamCost:1,ScriptExecRamCost:1.3,ScriptSpawnRamCost:2,ScriptScpRamCost:.6,ScriptKillRamCost:.5,ScriptHasRootAccessRamCost:.05,ScriptGetHostnameRamCost:.05,ScriptGetHackingLevelRamCost:.05,ScriptGetMultipliersRamCost:4,ScriptGetServerRamCost:.1,ScriptGetServerMaxRam:.05,ScriptGetServerUsedRam:.05,ScriptFileExistsRamCost:.1,ScriptIsRunningRamCost:.1,ScriptHacknetNodesRamCost:4,ScriptHNUpgLevelRamCost:.4,ScriptHNUpgRamRamCost:.6,ScriptHNUpgCoreRamCost:.8,ScriptGetStockRamCost:2,ScriptBuySellStockRamCost:2.5,ScriptGetPurchaseServerRamCost:.25,ScriptPurchaseServerRamCost:2.25,ScriptGetPurchasedServerLimit:.05,ScriptGetPurchasedServerMaxRam:.05,ScriptRoundRamCost:.05,ScriptReadWriteRamCost:1,ScriptArbScriptRamCost:1,ScriptGetScriptRamCost:.1,ScriptGetRunningScriptRamCost:.3,ScriptGetHackTimeRamCost:.05,ScriptGetFavorToDonate:.1,ScriptCodingContractBaseRamCost:10,ScriptSleeveBaseRamCost:4,ScriptGetOwnedSourceFiles:5,ScriptSingularityFn1RamCost:2,ScriptSingularityFn2RamCost:3,ScriptSingularityFn3RamCost:5,ScriptGangApiBaseRamCost:4,ScriptBladeburnerApiBaseRamCost:4,ScriptStanekWidth:.4,ScriptStanekHeight:.4,ScriptStanekCharge:.4,ScriptStanekFragmentDefinitions:0,ScriptStanekPlacedFragments:5,ScriptStanekClear:0,ScriptStanekCanPlace:.5,ScriptStanekPlace:5,ScriptStanekFragmentAt:2,ScriptStanekDeleteAt:.15};function r(t){return e=>{if(4===e.bitNodeN)return t;const n=e.sourceFileLvl(4);return n<=1?16*t:2===n?4*t:t}}const i={hacknet:{numNodes:0,purchaseNode:0,getPurchaseNodeCost:0,getNodeStats:0,upgradeLevel:0,upgradeRam:0,upgradeCore:0,upgradeCache:0,getLevelUpgradeCost:0,getRamUpgradeCost:0,getCoreUpgradeCost:0,getCacheUpgradeCost:0,numHashes:0,hashCost:0,spendHashes:0},sprintf:0,vsprintf:0,scan:a.ScriptScanRamCost,hack:a.ScriptHackRamCost,hackAnalyzeThreads:a.ScriptHackAnalyzeRamCost,hackAnalyze:a.ScriptHackAnalyzeRamCost,hackAnalyzeSecurity:a.ScriptHackAnalyzeRamCost,hackAnalyzeChance:a.ScriptHackAnalyzeRamCost,sleep:0,asleep:0,share:2.4,getSharePower:.2,grow:a.ScriptGrowRamCost,growthAnalyze:a.ScriptGrowthAnalyzeRamCost,growthAnalyzeSecurity:a.ScriptGrowthAnalyzeRamCost,weaken:a.ScriptWeakenRamCost,weakenAnalyze:a.ScriptWeakenAnalyzeRamCost,print:0,printf:0,tprint:0,clearLog:0,disableLog:0,enableLog:0,isLogEnabled:0,getScriptLogs:0,nuke:a.ScriptPortProgramRamCost,brutessh:a.ScriptPortProgramRamCost,ftpcrack:a.ScriptPortProgramRamCost,relaysmtp:a.ScriptPortProgramRamCost,httpworm:a.ScriptPortProgramRamCost,sqlinject:a.ScriptPortProgramRamCost,run:a.ScriptRunRamCost,exec:a.ScriptExecRamCost,spawn:a.ScriptSpawnRamCost,kill:a.ScriptKillRamCost,killall:a.ScriptKillRamCost,exit:0,atExit:0,scp:a.ScriptScpRamCost,ls:a.ScriptScanRamCost,ps:a.ScriptScanRamCost,getRecentScripts:a.ScriptRecentScriptsRamCost,hasRootAccess:a.ScriptHasRootAccessRamCost,getIp:a.ScriptGetHostnameRamCost,getHostname:a.ScriptGetHostnameRamCost,getHackingLevel:a.ScriptGetHackingLevelRamCost,getHackingMultipliers:a.ScriptGetMultipliersRamCost,getHacknetMultipliers:a.ScriptGetMultipliersRamCost,getBitNodeMultipliers:a.ScriptGetMultipliersRamCost,getServer:a.ScriptGetMultipliersRamCost/2,getServerMoneyAvailable:a.ScriptGetServerRamCost,getServerSecurityLevel:a.ScriptGetServerRamCost,getServerBaseSecurityLevel:a.ScriptGetServerRamCost,getServerMinSecurityLevel:a.ScriptGetServerRamCost,getServerRequiredHackingLevel:a.ScriptGetServerRamCost,getServerMaxMoney:a.ScriptGetServerRamCost,getServerGrowth:a.ScriptGetServerRamCost,getServerNumPortsRequired:a.ScriptGetServerRamCost,getServerRam:a.ScriptGetServerRamCost,getServerMaxRam:a.ScriptGetServerMaxRam,getServerUsedRam:a.ScriptGetServerUsedRam,serverExists:a.ScriptGetServerRamCost,fileExists:a.ScriptFileExistsRamCost,isRunning:a.ScriptIsRunningRamCost,stock:{getSymbols:a.ScriptGetStockRamCost,getPrice:a.ScriptGetStockRamCost,getAskPrice:a.ScriptGetStockRamCost,getBidPrice:a.ScriptGetStockRamCost,getPosition:a.ScriptGetStockRamCost,getMaxShares:a.ScriptGetStockRamCost,getPurchaseCost:a.ScriptGetStockRamCost,getSaleGain:a.ScriptGetStockRamCost,buy:a.ScriptBuySellStockRamCost,sell:a.ScriptBuySellStockRamCost,short:a.ScriptBuySellStockRamCost,sellShort:a.ScriptBuySellStockRamCost,placeOrder:a.ScriptBuySellStockRamCost,cancelOrder:a.ScriptBuySellStockRamCost,getOrders:a.ScriptBuySellStockRamCost,getVolatility:a.ScriptBuySellStockRamCost,getForecast:a.ScriptBuySellStockRamCost,purchase4SMarketData:a.ScriptBuySellStockRamCost,purchase4SMarketDataTixApi:a.ScriptBuySellStockRamCost,purchaseWseAccount:a.ScriptBuySellStockRamCost,purchaseTixApi:a.ScriptBuySellStockRamCost},getPurchasedServerLimit:a.ScriptGetPurchasedServerLimit,getPurchasedServerMaxRam:a.ScriptGetPurchasedServerMaxRam,getPurchasedServerCost:a.ScriptGetPurchaseServerRamCost,purchaseServer:a.ScriptPurchaseServerRamCost,deleteServer:a.ScriptPurchaseServerRamCost,getPurchasedServers:a.ScriptPurchaseServerRamCost,write:0,tryWritePort:0,read:0,peek:0,clear:0,writePort:0,readPort:0,getPortHandle:0,rm:a.ScriptReadWriteRamCost,scriptRunning:a.ScriptArbScriptRamCost,scriptKill:a.ScriptArbScriptRamCost,getScriptName:0,getScriptRam:a.ScriptGetScriptRamCost,getHackTime:a.ScriptGetHackTimeRamCost,getGrowTime:a.ScriptGetHackTimeRamCost,getWeakenTime:a.ScriptGetHackTimeRamCost,getScriptIncome:a.ScriptGetScriptRamCost,getScriptExpGain:a.ScriptGetScriptRamCost,getRunningScript:a.ScriptGetRunningScriptRamCost,nFormat:0,tFormat:0,getTimeSinceLastAug:a.ScriptGetHackTimeRamCost,prompt:0,wget:0,getFavorToDonate:a.ScriptGetFavorToDonate,getPlayer:a.ScriptSingularityFn1RamCost/4,mv:0,getOwnedSourceFiles:a.ScriptGetOwnedSourceFiles,tail:0,toast:0,universityCourse:r(a.ScriptSingularityFn1RamCost),gymWorkout:r(a.ScriptSingularityFn1RamCost),travelToCity:r(a.ScriptSingularityFn1RamCost),goToLocation:r(a.ScriptSingularityFn3RamCost),purchaseTor:r(a.ScriptSingularityFn1RamCost),purchaseProgram:r(a.ScriptSingularityFn1RamCost),getCurrentServer:r(a.ScriptSingularityFn1RamCost),connect:r(a.ScriptSingularityFn1RamCost),manualHack:r(a.ScriptSingularityFn1RamCost),installBackdoor:r(a.ScriptSingularityFn1RamCost),getDarkwebProgramCost:r(a.ScriptSingularityFn1RamCost/4),getDarkwebPrograms:r(a.ScriptSingularityFn1RamCost/4),getStats:r(a.ScriptSingularityFn1RamCost/4),getCharacterInformation:r(a.ScriptSingularityFn1RamCost/4),hospitalize:r(a.ScriptSingularityFn1RamCost/4),isBusy:r(a.ScriptSingularityFn1RamCost/4),stopAction:r(a.ScriptSingularityFn1RamCost/2),upgradeHomeRam:r(a.ScriptSingularityFn2RamCost),upgradeHomeCores:r(a.ScriptSingularityFn2RamCost),getUpgradeHomeRamCost:r(a.ScriptSingularityFn2RamCost/2),getUpgradeHomeCoresCost:r(a.ScriptSingularityFn2RamCost/2),workForCompany:r(a.ScriptSingularityFn2RamCost),applyToCompany:r(a.ScriptSingularityFn2RamCost),getCompanyRep:r(a.ScriptSingularityFn2RamCost/3),getCompanyFavor:r(a.ScriptSingularityFn2RamCost/3),getCompanyFavorGain:r(a.ScriptSingularityFn2RamCost/4),checkFactionInvitations:r(a.ScriptSingularityFn2RamCost),joinFaction:r(a.ScriptSingularityFn2RamCost),workForFaction:r(a.ScriptSingularityFn2RamCost),getFactionRep:r(a.ScriptSingularityFn2RamCost/3),getFactionFavor:r(a.ScriptSingularityFn2RamCost/3),getFactionFavorGain:r(a.ScriptSingularityFn2RamCost/4),donateToFaction:r(a.ScriptSingularityFn3RamCost),createProgram:r(a.ScriptSingularityFn3RamCost),commitCrime:r(a.ScriptSingularityFn3RamCost),getCrimeChance:r(a.ScriptSingularityFn3RamCost),getCrimeStats:r(a.ScriptSingularityFn3RamCost),getOwnedAugmentations:r(a.ScriptSingularityFn3RamCost),getAugmentationsFromFaction:r(a.ScriptSingularityFn3RamCost),getAugmentationCost:r(a.ScriptSingularityFn3RamCost),getAugmentationPrereq:r(a.ScriptSingularityFn3RamCost),getAugmentationPrice:r(a.ScriptSingularityFn3RamCost/2),getAugmentationRepReq:r(a.ScriptSingularityFn3RamCost/2),getAugmentationStats:r(a.ScriptSingularityFn3RamCost),purchaseAugmentation:r(a.ScriptSingularityFn3RamCost),softReset:r(a.ScriptSingularityFn3RamCost),installAugmentations:r(a.ScriptSingularityFn3RamCost),isFocused:r(.1),setFocus:r(.1),gang:{createGang:a.ScriptGangApiBaseRamCost/4,inGang:a.ScriptGangApiBaseRamCost/4,getMemberNames:a.ScriptGangApiBaseRamCost/4,getGangInformation:a.ScriptGangApiBaseRamCost/2,getOtherGangInformation:a.ScriptGangApiBaseRamCost/2,getMemberInformation:a.ScriptGangApiBaseRamCost/2,canRecruitMember:a.ScriptGangApiBaseRamCost/4,recruitMember:a.ScriptGangApiBaseRamCost/2,getTaskNames:a.ScriptGangApiBaseRamCost/4,getTaskStats:a.ScriptGangApiBaseRamCost/4,setMemberTask:a.ScriptGangApiBaseRamCost/2,getEquipmentNames:a.ScriptGangApiBaseRamCost/4,getEquipmentCost:a.ScriptGangApiBaseRamCost/2,getEquipmentType:a.ScriptGangApiBaseRamCost/2,getEquipmentStats:a.ScriptGangApiBaseRamCost/2,purchaseEquipment:a.ScriptGangApiBaseRamCost,ascendMember:a.ScriptGangApiBaseRamCost,getAscensionResult:a.ScriptGangApiBaseRamCost/2,setTerritoryWarfare:a.ScriptGangApiBaseRamCost/2,getChanceToWinClash:a.ScriptGangApiBaseRamCost,getBonusTime:0},bladeburner:{getContractNames:a.ScriptBladeburnerApiBaseRamCost/10,getOperationNames:a.ScriptBladeburnerApiBaseRamCost/10,getBlackOpNames:a.ScriptBladeburnerApiBaseRamCost/10,getBlackOpRank:a.ScriptBladeburnerApiBaseRamCost/2,getGeneralActionNames:a.ScriptBladeburnerApiBaseRamCost/10,getSkillNames:a.ScriptBladeburnerApiBaseRamCost/10,startAction:a.ScriptBladeburnerApiBaseRamCost,stopBladeburnerAction:a.ScriptBladeburnerApiBaseRamCost/2,getCurrentAction:a.ScriptBladeburnerApiBaseRamCost/4,getActionTime:a.ScriptBladeburnerApiBaseRamCost,getActionEstimatedSuccessChance:a.ScriptBladeburnerApiBaseRamCost,getActionRepGain:a.ScriptBladeburnerApiBaseRamCost,getActionCountRemaining:a.ScriptBladeburnerApiBaseRamCost,getActionMaxLevel:a.ScriptBladeburnerApiBaseRamCost,getActionCurrentLevel:a.ScriptBladeburnerApiBaseRamCost,getActionAutolevel:a.ScriptBladeburnerApiBaseRamCost,setActionAutolevel:a.ScriptBladeburnerApiBaseRamCost,setActionLevel:a.ScriptBladeburnerApiBaseRamCost,getRank:a.ScriptBladeburnerApiBaseRamCost,getSkillPoints:a.ScriptBladeburnerApiBaseRamCost,getSkillLevel:a.ScriptBladeburnerApiBaseRamCost,getSkillUpgradeCost:a.ScriptBladeburnerApiBaseRamCost,upgradeSkill:a.ScriptBladeburnerApiBaseRamCost,getTeamSize:a.ScriptBladeburnerApiBaseRamCost,setTeamSize:a.ScriptBladeburnerApiBaseRamCost,getCityEstimatedPopulation:a.ScriptBladeburnerApiBaseRamCost,getCityCommunities:a.ScriptBladeburnerApiBaseRamCost,getCityChaos:a.ScriptBladeburnerApiBaseRamCost,getCity:a.ScriptBladeburnerApiBaseRamCost,switchCity:a.ScriptBladeburnerApiBaseRamCost,getStamina:a.ScriptBladeburnerApiBaseRamCost,joinBladeburnerFaction:a.ScriptBladeburnerApiBaseRamCost,joinBladeburnerDivision:a.ScriptBladeburnerApiBaseRamCost,getBonusTime:0},codingcontract:{attempt:a.ScriptCodingContractBaseRamCost,getContractType:a.ScriptCodingContractBaseRamCost/2,getData:a.ScriptCodingContractBaseRamCost/2,getDescription:a.ScriptCodingContractBaseRamCost/2,getNumTriesRemaining:a.ScriptCodingContractBaseRamCost/5},sleeve:{getNumSleeves:a.ScriptSleeveBaseRamCost,setToShockRecovery:a.ScriptSleeveBaseRamCost,setToSynchronize:a.ScriptSleeveBaseRamCost,setToCommitCrime:a.ScriptSleeveBaseRamCost,setToUniversityCourse:a.ScriptSleeveBaseRamCost,travel:a.ScriptSleeveBaseRamCost,setToCompanyWork:a.ScriptSleeveBaseRamCost,setToFactionWork:a.ScriptSleeveBaseRamCost,setToGymWorkout:a.ScriptSleeveBaseRamCost,getSleeveStats:a.ScriptSleeveBaseRamCost,getTask:a.ScriptSleeveBaseRamCost,getInformation:a.ScriptSleeveBaseRamCost,getSleeveAugmentations:a.ScriptSleeveBaseRamCost,getSleevePurchasableAugs:a.ScriptSleeveBaseRamCost,purchaseSleeveAug:a.ScriptSleeveBaseRamCost},stanek:{giftWidth:a.ScriptStanekWidth,giftHeight:a.ScriptStanekHeight,chargeFragment:a.ScriptStanekCharge,fragmentDefinitions:a.ScriptStanekFragmentDefinitions,activeFragments:a.ScriptStanekPlacedFragments,clearGift:a.ScriptStanekClear,canPlaceFragment:a.ScriptStanekCanPlace,placeFragment:a.ScriptStanekPlace,getFragment:a.ScriptStanekFragmentAt,removeFragment:a.ScriptStanekDeleteAt},ui:{getTheme:0,setTheme:0,resetTheme:0,getStyles:0,setStyles:0,resetStyles:0,getGameInfo:0},grafting:{getAugmentationGraftPrice:3.75,getAugmentationGraftTime:3.75,graftAugmentation:7.5},heart:{break:0}};function o(t,...e){if(0===e.length)return console.warn("No arguments passed to getRamCost()"),0;let n=i[e[0]];for(let t=1;tt===1.0777-1?"7.77%":t===1.777-1?"77.7%":i.a.formatPercentage(t,e);let s=a.createElement(a.Fragment,null,"Effects:");return t.hacking_mult&&t.hacking_mult==t.strength_mult&&t.hacking_mult==t.defense_mult&&t.hacking_mult==t.dexterity_mult&&t.hacking_mult==t.agility_mult&&t.hacking_mult==t.charisma_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_mult-1)," all skills"):(t.hacking_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_mult-1)," hacking skill")),t.strength_mult&&t.strength_mult==t.defense_mult&&t.strength_mult==t.dexterity_mult&&t.strength_mult==t.agility_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_mult-1)," combat skills"):(t.strength_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_mult-1)," strength skill")),t.defense_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.defense_mult-1)," defense skill")),t.dexterity_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.dexterity_mult-1)," dexterity skill")),t.agility_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.agility_mult-1)," agility skill"))),t.charisma_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.charisma_mult-1)," charisma skill"))),t.hacking_exp_mult&&t.hacking_exp_mult===t.strength_exp_mult&&t.hacking_exp_mult===t.defense_exp_mult&&t.hacking_exp_mult===t.dexterity_exp_mult&&t.hacking_exp_mult===t.agility_exp_mult&&t.hacking_exp_mult===t.charisma_exp_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_exp_mult-1)," exp for all skills"):(t.hacking_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_exp_mult-1)," hacking exp")),t.strength_exp_mult&&t.strength_exp_mult===t.defense_exp_mult&&t.strength_exp_mult===t.dexterity_exp_mult&&t.strength_exp_mult===t.agility_exp_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_exp_mult-1)," combat exp"):(t.strength_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_exp_mult-1)," strength exp")),t.defense_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.defense_exp_mult-1)," defense exp")),t.dexterity_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.dexterity_exp_mult-1)," dexterity exp")),t.agility_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.agility_exp_mult-1)," agility exp"))),t.charisma_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.charisma_exp_mult-1)," charisma exp"))),t.hacking_speed_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_speed_mult-1)," faster hack(), grow(), and weaken()")),t.hacking_chance_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_chance_mult-1)," hack() success chance")),t.hacking_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_money_mult-1)," hack() power")),t.hacking_grow_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_grow_mult-1)," grow() power")),t.faction_rep_mult&&t.faction_rep_mult===t.company_rep_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.faction_rep_mult-1)," reputation from factions and companies"):(t.faction_rep_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.faction_rep_mult-1)," reputation from factions")),t.company_rep_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.company_rep_mult-1)," reputation from companies"))),t.crime_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.crime_money_mult-1)," crime money")),t.crime_success_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.crime_success_mult-1)," crime success rate")),t.work_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.work_money_mult-1)," work money")),t.hacknet_node_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacknet_node_money_mult-1)," hacknet production")),t.hacknet_node_purchase_cost_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"-",r(-(t.hacknet_node_purchase_cost_mult-1))," hacknet nodes cost")),t.hacknet_node_level_cost_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"-",r(-(t.hacknet_node_level_cost_mult-1))," hacknet nodes upgrade cost")),t.bladeburner_max_stamina_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_max_stamina_mult-1)," Bladeburner Max Stamina")),t.bladeburner_stamina_gain_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_stamina_gain_mult-1)," Bladeburner Stamina gain")),t.bladeburner_analysis_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_analysis_mult-1)," Bladeburner Field Analysis effectiveness")),t.bladeburner_success_chance_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_success_chance_mult-1)," Bladeburner Contracts and Operations success chance")),n&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"Start with ",a.createElement(o.a,{money:n})," after installing Augmentations.")),e&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"Start with ",e.join(" and ")," after installing Augmentations.")),s}(this.mults,t.programs,t.startingMoney):this.stats=t.stats}addToFactions(t){for(let e=0;eObject(o.a)({modal:{display:"flex",alignItems:"center",justifyContent:"center"},paper:{backgroundColor:t.palette.background.default,border:"2px solid "+t.palette.primary.main,boxShadow:`0px 3px 5px -1px ${t.palette.primary.dark},0px 5px 8px 0px ${t.palette.primary.dark},0px 1px 14px 0px ${t.palette.primary.dark}`,padding:2,maxWidth:"80%",maxHeight:"80%",overflow:"auto","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}})),u=t=>{const e=f();return r.a.createElement(s.a,{disableRestoreFocus:!0,disableScrollLock:!0,disableEnforceFocus:!0,disableAutoFocus:!0,open:t.open,onClose:t.onClose,closeAfterTransition:!0,className:e.modal},r.a.createElement(l.a,{in:t.open},r.a.createElement("div",{className:e.paper},r.a.createElement(c.a,{sx:{m:2}},t.children))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Idle:1,Contract:2,Operation:3,BlackOp:4,BlackOperation:4,Training:5,Recruitment:6,FieldAnalysis:7,"Field Analysis":7,Diplomacy:8,"Hyperbolic Regeneration Chamber":9,"Incite Violence":10}},function(t,e,n){"use strict";n.d(e,"f",(function(){return a})),n.d(e,"b",(function(){return u})),n.d(e,"e",(function(){return l})),n.d(e,"c",(function(){return c})),n.d(e,"a",(function(){return s})),n.d(e,"d",(function(){return f}));var a,r=n(2),i=n(64),o=n(370);!function(t){t[t.Start=0]="Start",t[t.GoToCharacterPage=1]="GoToCharacterPage",t[t.CharacterPage=2]="CharacterPage",t[t.CharacterGoToTerminalPage=3]="CharacterGoToTerminalPage",t[t.TerminalIntro=4]="TerminalIntro",t[t.TerminalHelp=5]="TerminalHelp",t[t.TerminalLs=6]="TerminalLs",t[t.TerminalScan=7]="TerminalScan",t[t.TerminalScanAnalyze1=8]="TerminalScanAnalyze1",t[t.TerminalScanAnalyze2=9]="TerminalScanAnalyze2",t[t.TerminalConnect=10]="TerminalConnect",t[t.TerminalAnalyze=11]="TerminalAnalyze",t[t.TerminalNuke=12]="TerminalNuke",t[t.TerminalManualHack=13]="TerminalManualHack",t[t.TerminalHackingMechanics=14]="TerminalHackingMechanics",t[t.TerminalGoHome=15]="TerminalGoHome",t[t.TerminalCreateScript=16]="TerminalCreateScript",t[t.TerminalTypeScript=17]="TerminalTypeScript",t[t.TerminalFree=18]="TerminalFree",t[t.TerminalRunScript=19]="TerminalRunScript",t[t.TerminalGoToActiveScriptsPage=20]="TerminalGoToActiveScriptsPage",t[t.ActiveScriptsPage=21]="ActiveScriptsPage",t[t.ActiveScriptsToTerminal=22]="ActiveScriptsToTerminal",t[t.TerminalTailScript=23]="TerminalTailScript",t[t.GoToHacknetNodesPage=24]="GoToHacknetNodesPage",t[t.HacknetNodesIntroduction=25]="HacknetNodesIntroduction",t[t.HacknetNodesGoToWorldPage=26]="HacknetNodesGoToWorldPage",t[t.WorldDescription=27]="WorldDescription",t[t.TutorialPageInfo=28]="TutorialPageInfo",t[t.End=29]="End"}(a||(a={}));const s={currStep:a.Start,isRunning:!1,stepIsDone:{[a.Start]:!1,[a.GoToCharacterPage]:!1,[a.CharacterPage]:!1,[a.CharacterGoToTerminalPage]:!1,[a.TerminalIntro]:!1,[a.TerminalHelp]:!1,[a.TerminalLs]:!1,[a.TerminalScan]:!1,[a.TerminalScanAnalyze1]:!1,[a.TerminalScanAnalyze2]:!1,[a.TerminalConnect]:!1,[a.TerminalAnalyze]:!1,[a.TerminalNuke]:!1,[a.TerminalManualHack]:!1,[a.TerminalHackingMechanics]:!1,[a.TerminalGoHome]:!1,[a.TerminalCreateScript]:!1,[a.TerminalTypeScript]:!1,[a.TerminalFree]:!1,[a.TerminalRunScript]:!1,[a.TerminalGoToActiveScriptsPage]:!1,[a.ActiveScriptsPage]:!1,[a.ActiveScriptsToTerminal]:!1,[a.TerminalTailScript]:!1,[a.GoToHacknetNodesPage]:!1,[a.HacknetNodesIntroduction]:!1,[a.HacknetNodesGoToWorldPage]:!1,[a.WorldDescription]:!1,[a.TutorialPageInfo]:!1,[a.End]:!1}};function l(){s.isRunning=!0,s.currStep=a.Start}function c(){s.stepIsDone[s.currStep]=!0,s.currStepa.Start&&(s.currStep-=1),o.a.emit()}function u(){s.isRunning=!1,s.currStep=a.Start,r.a.getHomeComputer().messages.push(i.a.HackersStartingHandbook),o.a.emit()}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Operations:"Operations",Engineer:"Engineer",Business:"Business",Management:"Management",RandD:"Research & Development",Training:"Training",Unassigned:"Unassigned"}},function(t,e,n){"use strict";n.d(e,"gb",(function(){return tt})),n.d(e,"jb",(function(){return et})),n.d(e,"kb",(function(){return nt})),n.d(e,"sb",(function(){return at})),n.d(e,"o",(function(){return rt})),n.d(e,"p",(function(){return it})),n.d(e,"Rb",(function(){return ot})),n.d(e,"vb",(function(){return st})),n.d(e,"eb",(function(){return lt})),n.d(e,"yb",(function(){return ct})),n.d(e,"M",(function(){return ft})),n.d(e,"ib",(function(){return ut})),n.d(e,"s",(function(){return mt})),n.d(e,"tb",(function(){return ht})),n.d(e,"K",(function(){return dt})),n.d(e,"N",(function(){return pt})),n.d(e,"I",(function(){return gt})),n.d(e,"J",(function(){return yt})),n.d(e,"F",(function(){return bt})),n.d(e,"G",(function(){return Et})),n.d(e,"L",(function(){return vt})),n.d(e,"nb",(function(){return kt})),n.d(e,"wb",(function(){return _t})),n.d(e,"mb",(function(){return wt})),n.d(e,"Lb",(function(){return St})),n.d(e,"lb",(function(){return Ct})),n.d(e,"t",(function(){return xt})),n.d(e,"Sb",(function(){return Lt})),n.d(e,"D",(function(){return Ot})),n.d(e,"Mb",(function(){return Mt})),n.d(e,"Ub",(function(){return Tt})),n.d(e,"E",(function(){return At})),n.d(e,"Jb",(function(){return Rt})),n.d(e,"Nb",(function(){return Nt})),n.d(e,"Ib",(function(){return Pt})),n.d(e,"Gb",(function(){return It})),n.d(e,"Fb",(function(){return Ft})),n.d(e,"Hb",(function(){return Dt})),n.d(e,"Tb",(function(){return jt})),n.d(e,"B",(function(){return Bt})),n.d(e,"X",(function(){return Gt})),n.d(e,"W",(function(){return Wt})),n.d(e,"Z",(function(){return Ht})),n.d(e,"U",(function(){return Ut})),n.d(e,"V",(function(){return qt})),n.d(e,"S",(function(){return $t})),n.d(e,"T",(function(){return Kt})),n.d(e,"Y",(function(){return zt})),n.d(e,"Db",(function(){return Vt})),n.d(e,"x",(function(){return Yt})),n.d(e,"z",(function(){return Jt})),n.d(e,"Kb",(function(){return Xt})),n.d(e,"w",(function(){return Qt})),n.d(e,"C",(function(){return Zt})),n.d(e,"Cb",(function(){return te})),n.d(e,"Ob",(function(){return ee})),n.d(e,"y",(function(){return ne})),n.d(e,"Eb",(function(){return ae})),n.d(e,"v",(function(){return re})),n.d(e,"A",(function(){return ie})),n.d(e,"Ab",(function(){return oe})),n.d(e,"Pb",(function(){return se})),n.d(e,"ub",(function(){return le})),n.d(e,"fb",(function(){return ce})),n.d(e,"f",(function(){return fe})),n.d(e,"R",(function(){return ue})),n.d(e,"pb",(function(){return me})),n.d(e,"db",(function(){return he})),n.d(e,"m",(function(){return de})),n.d(e,"l",(function(){return pe})),n.d(e,"e",(function(){return ge})),n.d(e,"j",(function(){return ye})),n.d(e,"g",(function(){return be})),n.d(e,"c",(function(){return Ee})),n.d(e,"b",(function(){return ve})),n.d(e,"k",(function(){return ke})),n.d(e,"a",(function(){return _e})),n.d(e,"d",(function(){return we})),n.d(e,"h",(function(){return Se})),n.d(e,"n",(function(){return Ce})),n.d(e,"i",(function(){return xe})),n.d(e,"hb",(function(){return Le})),n.d(e,"qb",(function(){return Oe})),n.d(e,"rb",(function(){return Me})),n.d(e,"u",(function(){return Te})),n.d(e,"xb",(function(){return Ae})),n.d(e,"ob",(function(){return Re})),n.d(e,"H",(function(){return Ne})),n.d(e,"Qb",(function(){return Pe})),n.d(e,"cb",(function(){return Ie})),n.d(e,"r",(function(){return Fe})),n.d(e,"bb",(function(){return De})),n.d(e,"ab",(function(){return je})),n.d(e,"P",(function(){return Be})),n.d(e,"O",(function(){return Ge})),n.d(e,"Q",(function(){return We})),n.d(e,"zb",(function(){return He})),n.d(e,"q",(function(){return Ue})),n.d(e,"Bb",(function(){return qe}));var a=n(56),r=n(134),i=n(358),o=n(14),s=n(7),l=n(113),c=n(234),f=n(66),u=n(668),m=n(522),h=n(94),d=n(31),p=n(9),g=n(65),y=n(371),b=n(85),E=n(204),v=n(28),k=n(82),_=n(149),w=n(216),S=n(16),C=n(11),x=n(322),L=n(177),O=n(281),M=n(241),T=n(25),A=n(46),R=n(133),N=n(103),P=n(1393),I=n(1394),F=n(360),D=n(79),j=n(518),B=n(394),G=n(92),W=n(5),H=n(375),U=n(15),q=n(23),$=n(118),K=n(19),z=n(0),V=n.n(z),Y=n(357),J=n(143),X=n(778),Q=n(295),Z=n(4);function tt(){const t=Object(R.f)({adminRights:!0,hostname:"home",ip:Object(T.e)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=N.a.Home,Object(T.a)(t),this.getHomeComputer().programs.push(g.a.NukeProgram.name)}function et(){this.currentServer=N.a.Home,this.numPeopleKilled=0,this.hacking=1,this.strength=1,this.defense=1,this.dexterity=1,this.agility=1,this.charisma=1,this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.money=1e3,this.city=S.a.Sector12,this.location=C.a.TravelAgency,this.companyName="",this.jobs={},this.purchasedServers=[],this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[];const t=Math.min(3,D.a[10]+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>t&&(this.sleeves.length=t);for(let e=this.sleeves.length;e=100?this.sleeves[t].synchronize(this):this.sleeves[t].shockRecovery(this));this.isWorking=!1,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.createProgramName="",this.className="",this.crimeType="",this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.timeWorked=0,this.lastUpdate=(new Date).getTime(),this.playtimeSinceLastAug=0,this.scriptProdSinceLastAug=0,this.moneySourceA.reset(),this.hacknetNodes.length=0,this.hashManager.prestige(),this.reapplyAllAugmentations(!0),this.hp=this.max_hp}function nt(){this.entropy=0,this.prestigeAugmentation(),this.karma=0;for(let t=0;t0?this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)):this.intelligence=0;const t=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*t)}function st(){this.hacking_chance_mult=1,this.hacking_speed_mult=1,this.hacking_money_mult=1,this.hacking_grow_mult=1,this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.crime_money_mult=1,this.crime_success_mult=1,this.hacknet_node_money_mult=1,this.hacknet_node_purchase_cost_mult=1,this.hacknet_node_ram_cost_mult=1,this.hacknet_node_core_cost_mult=1,this.hacknet_node_level_cost_mult=1,this.work_money_mult=1,this.bladeburner_max_stamina_mult=1,this.bladeburner_stamina_gain_mult=1,this.bladeburner_analysis_mult=1,this.bladeburner_success_chance_mult=1}function lt(t){const e=this.getHomeComputer();if(null==e)return!1;for(let n=0;n=t}function ht(t,e){this.moneySourceA instanceof H.a||(console.warn("Player.moneySourceA was not properly initialized. Resetting"),this.moneySourceA=new H.a),this.moneySourceB instanceof H.a||(console.warn("Player.moneySourceB was not properly initialized. Resetting"),this.moneySourceB=new H.a),this.moneySourceA.record(t,e),this.moneySourceB.record(t,e)}function dt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainHackingExp()"):(this.hacking_exp+=t,this.hacking_exp<0&&(this.hacking_exp=0),this.hacking=Object(L.b)(this.hacking_exp,this.hacking_mult*s.a.HackingLevelMultiplier))}function pt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainStrengthExp()"):(this.strength_exp+=t,this.strength_exp<0&&(this.strength_exp=0),this.strength=Object(L.b)(this.strength_exp,this.strength_mult*s.a.StrengthLevelMultiplier))}function gt(t){if(isNaN(t))return void console.error("ERR: NaN passed into player.gainDefenseExp()");this.defense_exp+=t,this.defense_exp<0&&(this.defense_exp=0),this.defense=Object(L.b)(this.defense_exp,this.defense_mult*s.a.DefenseLevelMultiplier);const e=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*e)}function yt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainDexterityExp()"):(this.dexterity_exp+=t,this.dexterity_exp<0&&(this.dexterity_exp=0),this.dexterity=Object(L.b)(this.dexterity_exp,this.dexterity_mult*s.a.DexterityLevelMultiplier))}function bt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainAgilityExp()"):(this.agility_exp+=t,this.agility_exp<0&&(this.agility_exp=0),this.agility=Object(L.b)(this.agility_exp,this.agility_mult*s.a.AgilityLevelMultiplier))}function Et(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainCharismaExp()"):(this.charisma_exp+=t,this.charisma_exp<0&&(this.charisma_exp=0),this.charisma=Object(L.b)(this.charisma_exp,this.charisma_mult*s.a.CharismaLevelMultiplier))}function vt(t){isNaN(t)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(D.a[5]>0||this.intelligence>0)&&(this.intelligence_exp+=t,this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)))}function kt(t){const e=t.toLowerCase();return e.includes("hack")?this.hacking:e.includes("str")?this.strength:e.includes("def")?this.defense:e.includes("dex")?this.dexterity:e.includes("agi")?this.agility:e.includes("cha")?this.charisma:e.includes("int")?this.intelligence:0}function _t(t,e,n){this.workType!==p.a.WorkTypeFaction&&t===this.workType&&e===this.companyName||t===this.workType&&e===this.currentWorkFactionName&&n===this.factionWorkType||(this.isWorking&&this.singularityStopWork(),this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workMoneyLossRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.timeWorked=0,this.timeWorkedCreateProgram=0,this.timeWorkedGraftAugmentation=0,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.createProgramName="",this.graftAugmentationName="",this.className="",this.workType="")}function wt(t=1){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);const n=e*this.workHackExpGainRate*t,a=e*this.workStrExpGainRate*t,r=e*this.workDefExpGainRate*t,i=e*this.workDexExpGainRate*t,s=e*this.workAgiExpGainRate*t,l=e*this.workChaExpGainRate*t,c=(this.workMoneyGainRate-this.workMoneyLossRate)*t;this.gainHackingExp(n),this.gainStrengthExp(a),this.gainDefenseExp(r),this.gainDexterityExp(i),this.gainAgilityExp(s),this.gainCharismaExp(l),this.gainMoney(c,this.className?"class":"work"),this.workHackExpGained+=n,this.workStrExpGained+=a,this.workDefExpGained+=r,this.workDexExpGained+=i,this.workAgiExpGained+=s,this.workChaExpGained+=l,this.workRepGained+=e*this.workRepGainRate*t,this.workMoneyGained+=e*this.workMoneyGainRate*t,this.workMoneyGained-=e*this.workMoneyLossRate*t}function St(t){this.resetWorkStatus(p.a.WorkTypeCompany,t),this.isWorking=!0,this.companyName=t,this.workType=p.a.WorkTypeCompany,this.workHackExpGainRate=this.getWorkHackExpGain(),this.workStrExpGainRate=this.getWorkStrExpGain(),this.workDefExpGainRate=this.getWorkDefExpGain(),this.workDexExpGainRate=this.getWorkDexExpGain(),this.workAgiExpGainRate=this.getWorkAgiExpGain(),this.workChaExpGainRate=this.getWorkChaExpGain(),this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.timeNeededToCompleteWork=p.a.MillisecondsPer8Hours}function Ct(t,e=1){this.isWorking&&(this.workType==p.a.WorkTypeFaction?this.workForFaction(e)&&t.toFaction(v.a[this.currentWorkFactionName]):this.workType==p.a.WorkTypeCreateProgram?this.createProgramWork(e)&&t.toTerminal():this.workType==p.a.WorkTypeStudyClass?this.takeClass(e)&&t.toCity():this.workType==p.a.WorkTypeCrime?this.commitCrime(e)&&t.toLocation(w.a[C.a.Slums]):this.workType==p.a.WorkTypeCompanyPartTime?this.workPartTime(e)&&t.toCity():this.workType===p.a.WorkTypeGraftAugmentation?this.graftAugmentationWork(e)&&t.toGrafting():this.work(e)&&t.toCity())}function xt(){const t=Y.a.find(t=>t.specialName===this.companyName);if(!t)return.5;const e=Object(T.d)(t.hostname);return e instanceof A.a&&e&&e.backdoorInstalled?.75:.5}function Lt(t){let e=!1;this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer8Hours&&(e=!0,t=Math.round((p.a.MillisecondsPer8Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.processWorkEarnings(t);const n=f.a[this.companyName];return Object(j.a)(n,this.workRepGainRate,t),!!(e||this.timeWorked>=p.a.MillisecondsPer8Hours)&&(this.finishWork(!1),!0)}function Ot(t,e=!1){t&&(this.workRepGained*=this.cancelationPenalty());const n=.5===this.cancelationPenalty()?"half":"three-quarters";f.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();let a=V.a.createElement(V.a.Fragment,null,"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the company ",V.a.createElement("br",null),this.workHackExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null)),this.workStrExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null)),this.workDefExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null)),this.workDexExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null)),this.workAgiExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null)),this.workChaExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workChaExpGained)," charisma exp ",V.a.createElement("br",null)),V.a.createElement("br",null));if(a=t?V.a.createElement(V.a.Fragment,null,"You worked a short shift of ",Object(q.b)(this.timeWorked)," ",V.a.createElement("br",null),V.a.createElement("br",null),"Since you cancelled your work early, you only gained ",n," of the reputation you earned. ",V.a.createElement("br",null),V.a.createElement("br",null),a):V.a.createElement(V.a.Fragment,null,"You worked a full shift of 8 hours! ",V.a.createElement("br",null),V.a.createElement("br",null),a),e||Object(U.a)(a),this.isWorking=!1,this.focus=!1,this.resetWorkStatus(),e){return"You worked a short shift of "+Object(q.b)(this.timeWorked)+" and earned $"+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatReputation(this.workRepGained)+" reputation, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp."}return""}function Mt(t){this.resetWorkStatus(p.a.WorkTypeCompanyPartTime,t),this.isWorking=!0,this.companyName=t,this.workType=p.a.WorkTypeCompanyPartTime,this.workHackExpGainRate=this.getWorkHackExpGain(),this.workStrExpGainRate=this.getWorkStrExpGain(),this.workDefExpGainRate=this.getWorkDefExpGain(),this.workDexExpGainRate=this.getWorkDexExpGain(),this.workAgiExpGainRate=this.getWorkAgiExpGain(),this.workChaExpGainRate=this.getWorkChaExpGain(),this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.timeNeededToCompleteWork=p.a.MillisecondsPer8Hours}function Tt(t){let e=!1;return this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer8Hours&&(e=!0,t=Math.round((p.a.MillisecondsPer8Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.workRepGainRate=this.getWorkRepGain(),this.processWorkEarnings(t),!!(e||this.timeWorked>=p.a.MillisecondsPer8Hours)&&(this.finishWorkPartTime(),!0)}function At(t=!1){f.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();const e=V.a.createElement(V.a.Fragment,null,"You worked for ",Object(q.b)(this.timeWorked),V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the company ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null));if(t||Object(U.a)(e),this.isWorking=!1,this.resetWorkStatus(),t){return"You worked for "+Object(q.b)(this.timeWorked)+" and earned a total of $"+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatReputation(this.workRepGained)+" reputation, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp"}return""}function Rt(){this.focus=!0}function Nt(){this.focus=!1}function Pt(t){let e=1+t.favor/100;isNaN(e)&&(e=1),this.workRepGainRate*=e,this.workRepGainRate*=s.a.FactionWorkRepGain,this.isWorking=!0,this.workType=p.a.WorkTypeFaction,this.currentWorkFactionName=t.name,this.timeNeededToCompleteWork=p.a.MillisecondsPer20Hours}function It(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkHacking),this.workHackExpGainRate=.15*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.c)(this,t),this.factionWorkType=p.a.FactionWorkHacking,this.currentWorkFactionDescription="carrying out hacking contracts",this.startFactionWork(t)}function Ft(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkField),this.workHackExpGainRate=.1*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workStrExpGainRate=.1*this.strength_exp_mult*s.a.FactionWorkExpGain,this.workDefExpGainRate=.1*this.defense_exp_mult*s.a.FactionWorkExpGain,this.workDexExpGainRate=.1*this.dexterity_exp_mult*s.a.FactionWorkExpGain,this.workAgiExpGainRate=.1*this.agility_exp_mult*s.a.FactionWorkExpGain,this.workChaExpGainRate=.1*this.charisma_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.a)(this,t),this.factionWorkType=p.a.FactionWorkField,this.currentWorkFactionDescription="carrying out field missions",this.startFactionWork(t)}function Dt(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkSecurity),this.workHackExpGainRate=.05*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workStrExpGainRate=.15*this.strength_exp_mult*s.a.FactionWorkExpGain,this.workDefExpGainRate=.15*this.defense_exp_mult*s.a.FactionWorkExpGain,this.workDexExpGainRate=.15*this.dexterity_exp_mult*s.a.FactionWorkExpGain,this.workAgiExpGainRate=.15*this.agility_exp_mult*s.a.FactionWorkExpGain,this.workChaExpGainRate=0*this.charisma_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.b)(this,t),this.factionWorkType=p.a.FactionWorkSecurity,this.currentWorkFactionDescription="performing security detail",this.startFactionWork(t)}function jt(t){const e=v.a[this.currentWorkFactionName];if(!e)return!1;switch(this.factionWorkType){case p.a.FactionWorkHacking:this.workRepGainRate=Object(M.c)(this,e);break;case p.a.FactionWorkField:this.workRepGainRate=Object(M.a)(this,e);break;case p.a.FactionWorkSecurity:this.workRepGainRate=Object(M.b)(this,e)}this.workRepGainRate*=s.a.FactionWorkRepGain;let n=!1;return this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer20Hours&&(n=!0,t=Math.round((p.a.MillisecondsPer20Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.processWorkEarnings(t),!!(n||this.timeWorked>=p.a.MillisecondsPer20Hours)&&(this.finishFactionWork(!1),!0)}function Bt(t,e=!1){const n=v.a[this.currentWorkFactionName];if(n.playerReputation+=this.workRepGained,this.updateSkillLevels(),e||Object(U.a)(V.a.createElement(V.a.Fragment,null,"You worked for your faction ",n.name," for a total of ",Object(q.b)(this.timeWorked)," ",V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the faction ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null))),this.isWorking=!1,this.resetWorkStatus(),e){return"You worked for your faction "+n.name+" for a total of "+Object(q.b)(this.timeWorked)+". You earned "+W.a.formatReputation(this.workRepGained)+" rep, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, and "+W.a.formatExp(this.workChaExpGained)+" cha exp."}return""}function Gt(){let t=1;const e=f.a[this.companyName];D.a[11]>0&&(t=1+e.favor/100);const n=this.jobs[this.companyName],a=h.a[n];return null==a?(console.error(`Could not find CompanyPosition object for ${n}. Work salary will be 0`),0):a.baseSalary*e.salaryMultiplier*this.work_money_mult*s.a.CompanyWorkMoney*t}function Wt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work hack exp gain will be 0"].join(" ")),0):n.hackingExpGain*t.expMultiplier*this.hacking_exp_mult*s.a.CompanyWorkExpGain}function Ht(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work str exp gain will be 0"].join(" ")),0):n.strengthExpGain*t.expMultiplier*this.strength_exp_mult*s.a.CompanyWorkExpGain}function Ut(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work def exp gain will be 0"].join(" ")),0):n.defenseExpGain*t.expMultiplier*this.defense_exp_mult*s.a.CompanyWorkExpGain}function qt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work dex exp gain will be 0"].join(" ")),0):n.dexterityExpGain*t.expMultiplier*this.dexterity_exp_mult*s.a.CompanyWorkExpGain}function $t(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work agi exp gain will be 0"].join(" ")),0):n.agilityExpGain*t.expMultiplier*this.agility_exp_mult*s.a.CompanyWorkExpGain}function Kt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work cha exp gain will be 0"].join(" ")),0):n.charismaExpGain*t.expMultiplier*this.charisma_exp_mult*s.a.CompanyWorkExpGain}function zt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];if(null==t||null==n)return console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work rep gain will be 0"].join(" ")),0;let a=n.calculateJobPerformance(this.hacking,this.strength,this.defense,this.dexterity,this.agility,this.charisma);a+=this.intelligence/p.a.MaxSkillLevel;let r=1+t.favor/100;return isNaN(r)&&(r=1),a*this.company_rep_mult*r}function Vt(t,e,n){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeCreateProgram,this.createProgramReqLvl=n,this.timeNeededToCompleteWork=e;for(let e=0;e=100)break;this.timeWorkedCreateProgram=a/100*this.timeNeededToCompleteWork,this.getHomeComputer().programs.splice(e,1)}}this.createProgramName=t}function Yt(t){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);const n=this.createProgramReqLvl;let a=this.hacking/n*this.getIntelligenceBonus(3);return a=1+(a-1)/5,a*=e,this.timeWorked+=p.a._idleSpeed*t,this.timeWorkedCreateProgram+=p.a._idleSpeed*t*a,this.timeWorkedCreateProgram>=this.timeNeededToCompleteWork&&(this.finishCreateProgramWork(!1),!0)}function Jt(t){const e=this.createProgramName;if(!1===t)Object(U.a)(`You've finished creating ${e}!
The new program can be found on your home computer.`),this.getHomeComputer().programs.push(e);else{const t=e+"-"+(Math.floor(this.timeWorkedCreateProgram/this.timeNeededToCompleteWork*1e4)/100).toString()+"%-INC";this.getHomeComputer().programs.push(t)}return t||this.gainIntelligenceExp(p.a.IntelligenceProgramBaseExpGain*this.timeWorked/1e3),this.isWorking=!1,this.resetWorkStatus(),"You've finished creating "+e+"! The new program can be found on your home computer."}function Xt(t,e){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeGraftAugmentation,this.timeNeededToCompleteWork=e,this.graftAugmentationName=t}function Qt(t){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);let n=1+(this.getIntelligenceBonus(3)-1)/3;return n*=e,this.timeWorked+=p.a._idleSpeed*t,this.timeWorkedGraftAugmentation+=p.a._idleSpeed*t*n,this.timeWorkedGraftAugmentation>=this.timeNeededToCompleteWork&&(this.finishGraftAugmentationWork(!1),!0)}function Zt(t){const e=this.graftAugmentationName;return!1===t?(Object(r.a)(a.a[e]),this.hasAugmentation(o.a.CongruityImplant)||(this.entropy+=1,this.applyEntropy(this.entropy)),Object(U.a)(`You've finished grafting ${e}.
The augmentation has been applied to your body`+(this.hasAugmentation(o.a.CongruityImplant)?".":", but you feel a bit off."))):Object(U.a)(`You cancelled the grafting of ${e}.
Your money was not returned to you.`),t||this.gainIntelligenceExp(p.a.IntelligenceGraftBaseExpGain*this.timeWorked/1e4),this.isWorking=!1,this.resetWorkStatus(),`Grafting of ${e} has ended.`}function te(t,e,n){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeStudyClass,this.workCostMult=t,this.workExpMult=e,this.className=n;const a=Object(X.a)(this);this.workMoneyLossRate=a.workMoneyLossRate,this.workHackExpGainRate=a.workHackExpGainRate,this.workStrExpGainRate=a.workStrExpGainRate,this.workDefExpGainRate=a.workDefExpGainRate,this.workDexExpGainRate=a.workDexExpGainRate,this.workAgiExpGainRate=a.workAgiExpGainRate,this.workChaExpGainRate=a.workChaExpGainRate}function ee(t){this.timeWorked+=p.a._idleSpeed*t;const e=Object(X.a)(this);return this.workMoneyLossRate=e.workMoneyLossRate,this.workHackExpGainRate=e.workHackExpGainRate,this.workStrExpGainRate=e.workStrExpGainRate,this.workDefExpGainRate=e.workDefExpGainRate,this.workDexExpGainRate=e.workDexExpGainRate,this.workAgiExpGainRate=e.workAgiExpGainRate,this.workChaExpGainRate=e.workChaExpGainRate,this.processWorkEarnings(t),!1}function ne(t=!1){if(this.gainIntelligenceExp(p.a.IntelligenceClassBaseExpGain*Math.round(this.timeWorked/1e3)),this.workMoneyGained>0)throw new Error("ERR: Somehow gained money while taking class");if(this.updateSkillLevels(),t||Object(U.a)(V.a.createElement(V.a.Fragment,null,"After ",this.className," for ",Object(q.b)(this.timeWorked),", ",V.a.createElement("br",null),"you spent a total of ",V.a.createElement(K.a,{money:-this.workMoneyGained}),". ",V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null))),this.isWorking=!1,t){const t="After "+this.className+" for "+Object(q.b)(this.timeWorked)+", you spent a total of "+W.a.formatMoney(-1*this.workMoneyGained)+". You earned a total of: "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp";return this.resetWorkStatus(),t}return this.resetWorkStatus(),""}function ae(t,e,n,a,r,i,o,l,c,f,u=null){this.crimeType=e,this.resetWorkStatus(),this.isWorking=!0,this.focus=!0,this.workType=p.a.WorkTypeCrime,null!==u&&(this.committingCrimeThruSingFn=!0,this.singFnCrimeWorkerScript=u),this.workHackExpGained=n*this.hacking_exp_mult*s.a.CrimeExpGain,this.workStrExpGained=a*this.strength_exp_mult*s.a.CrimeExpGain,this.workDefExpGained=r*this.defense_exp_mult*s.a.CrimeExpGain,this.workDexExpGained=i*this.dexterity_exp_mult*s.a.CrimeExpGain,this.workAgiExpGained=o*this.agility_exp_mult*s.a.CrimeExpGain,this.workChaExpGained=l*this.charisma_exp_mult*s.a.CrimeExpGain,this.workMoneyGained=c*this.crime_money_mult*s.a.CrimeMoney,this.timeNeededToCompleteWork=f,t.toWork()}function re(t){return this.timeWorked+=p.a._idleSpeed*t,this.timeWorked>=this.timeNeededToCompleteWork&&(this.finishCrime(!1),!0)}function ie(t){if(!t){if(Object(y.a)(this,this.crimeType)){let t=null;for(const e of Object.keys(b.a))if(b.a[e].type==this.crimeType){t=b.a[e];break}if(null==t)return Object(U.a)(`ERR: Unrecognized crime type (${this.crimeType}). This is probably a bug please contact the developer`),"";this.gainMoney(this.workMoneyGained,"crime"),this.karma-=t.karma,this.numPeopleKilled+=t.kills,t.intelligence_exp>0&&this.gainIntelligenceExp(t.intelligence_exp),this.workHackExpGained*=2,this.workStrExpGained*=2,this.workDefExpGained*=2,this.workDexExpGained*=2,this.workAgiExpGained*=2,this.workChaExpGained*=2;const e=this.singFnCrimeWorkerScript;this.committingCrimeThruSingFn&&null!==e?null==e.disableLogs.ALL&&null==e.disableLogs.commitCrime&&e.scriptRef.log("SUCCESS: Crime successful! Gained "+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatExp(this.workHackExpGained)+" hack exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, "+W.a.formatExp(this.workChaExpGained)+" cha exp."):Object(U.a)(V.a.createElement(V.a.Fragment,null,"Crime successful!",V.a.createElement("br",null),V.a.createElement("br",null),"You gained:",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking experience ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength experience",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense experience",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity experience",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility experience",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma experience"))}else{this.workHackExpGained/=2,this.workStrExpGained/=2,this.workDefExpGained/=2,this.workDexExpGained/=2,this.workAgiExpGained/=2,this.workChaExpGained/=2;const t=this.singFnCrimeWorkerScript;this.committingCrimeThruSingFn&&null!==t?null==t.disableLogs.ALL&&null==t.disableLogs.commitCrime&&t.scriptRef.log("FAIL: Crime failed! Gained "+W.a.formatExp(this.workHackExpGained)+" hack exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, "+W.a.formatExp(this.workChaExpGained)+" cha exp."):Object(U.a)(V.a.createElement(V.a.Fragment,null,"Crime failed!",V.a.createElement("br",null),V.a.createElement("br",null),"You gained:",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking experience ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength experience",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense experience",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity experience",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility experience",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma experience"))}this.gainHackingExp(this.workHackExpGained),this.gainStrengthExp(this.workStrExpGained),this.gainDefenseExp(this.workDefExpGained),this.gainDexterityExp(this.workDexExpGained),this.gainAgilityExp(this.workAgiExpGained),this.gainCharismaExp(this.workChaExpGained)}return this.committingCrimeThruSingFn=!1,this.singFnCrimeWorkerScript=null,this.isWorking=!1,this.crimeType="",this.resetWorkStatus(),""}function oe(){if(!this.isWorking)return"";let t="";switch(this.workType){case p.a.WorkTypeStudyClass:t=this.finishClass(!0);break;case p.a.WorkTypeCompany:t=this.finishWork(!0,!0);break;case p.a.WorkTypeCompanyPartTime:t=this.finishWorkPartTime(!0);break;case p.a.WorkTypeFaction:t=this.finishFactionWork(!0,!0);break;case p.a.WorkTypeCreateProgram:t=this.finishCreateProgramWork(!0);break;case p.a.WorkTypeCrime:t=this.finishCrime(!0);break;default:return console.error(`Unrecognized work type (${this.workType})`),""}return t}function se(t){return"number"!=typeof t?(console.warn("Player.takeDamage() called without a numeric argument: "+t),!1):(this.hp-=t,this.hp<=0&&(this.hospitalize(),!0))}function le(t){"number"==typeof t?(this.hp+=t,this.hp>this.max_hp&&(this.hp=this.max_hp)):console.warn("Player.regenerateHp() called without a numeric argument: "+t)}function ce(){const t=Object(B.b)(this);return J.b.emit("You've been Hospitalized for "+W.a.formatMoney(t),"warning",2e3),this.loseMoney(t,"hospitalization"),this.hp=this.max_hp,t}function fe(t,e=!1){let n=null;""!==this.companyName&&(n=f.a[this.companyName]);const a=this.jobs[this.companyName],r=f.a[this.location];if(!(r instanceof c.a))return console.error(`Could not find company that matches the location: ${this.location}. Player.applyToCompany() failed`),!1;let i=t;if(!this.isQualified(r,i)){const t=Object(m.a)(r,i);return e||Object(U.a)("Unfortunately, you do not qualify for this position
"+t),!1}if(!r.hasPosition(i))return!1;for(;;){const t=Object(u.a)(i);if(null==t)break;if(!r.hasPosition(t))break;if(!this.isQualified(r,t))break;i=t}if(null!=n&&n.name==r.name&&i.name==a){const t=Object(u.a)(i);if(null==t)return e||Object(U.a)("You are already at the highest position for your field! No promotion available"),!1;if(r.hasPosition(t)){if(!e){const e=Object(m.a)(r,t);Object(U.a)("Unfortunately, you do not qualify for a promotion
"+e)}return!1}return e||Object(U.a)("You are already at the highest position for your field! No promotion available"),!1}return this.jobs[r.name]=i.name,!this.focus&&this.isWorking&&this.companyName!==this.location&&this.resetWorkStatus(),this.companyName=this.location,e||Object(U.a)("Congratulations! You were offered a new job at "+this.companyName+" as a "+i.name+"!"),!0}function ue(t,e){let n=null;if(""!==this.companyName&&(n=f.a[this.companyName]),null==n||n.name!=t.name)return e;const a=this.jobs[this.companyName];if(!a)return e;const r=h.a[a];return r.isSoftwareJob()&&e.isSoftwareJob()||r.isITJob()&&e.isITJob()||r.isBusinessJob()&&e.isBusinessJob()||r.isSecurityEngineerJob()&&e.isSecurityEngineerJob()||r.isNetworkEngineerJob()&&e.isNetworkEngineerJob()||r.isSecurityJob()&&e.isSecurityJob()||r.isAgentJob()&&e.isAgentJob()||r.isSoftwareConsultantJob()&&e.isSoftwareConsultantJob()||r.isBusinessConsultantJob()&&e.isBusinessConsultantJob()||r.isPartTimeJob()&&e.isPartTimeJob()?Object(u.a)(r):e}function me(t){1==this.isWorking&&this.workType.includes("Working for Company")&&this.companyName==t&&(this.isWorking=!1,this.companyName=""),this.companyName===t&&(this.companyName=""),delete this.jobs[t]}function he(){return Boolean(Object.keys(this.jobs).length)}function de(t=!1){return this.applyForJob(h.a[d.j[0]],t)}function pe(t=!1){return this.applyForJob(h.a[d.k[0]],t)}function ge(t=!1){return this.applyForJob(h.a[d.d[0]],t)}function ye(t=!1){const e=f.a[this.location];return this.isQualified(e,h.a[d.i[0]])?this.applyForJob(h.a[d.i[0]],t):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1)}function be(t=!1){const e=f.a[this.location];if(this.isQualified(e,h.a[d.f[0]])){const e=h.a[d.f[0]];return this.applyForJob(e,t)}return t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1}function Ee(t=!1){return this.applyForJob(h.a[d.b[0]],t)}function ve(t=!1){return this.applyForJob(h.a[d.c[0]],t)}function ke(t=!1){return this.applyForJob(h.a[d.h[2]],t)}function _e(t=!1){const e=f.a[this.location];if(this.isQualified(e,h.a[d.a[0]])){const e=h.a[d.a[0]];return this.applyForJob(e,t)}return t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1}function we(t=!1){const e=f.a[this.location],n=d.e[1];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Se(t=!1){const e=f.a[this.location],n=d.g[1];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed part-time at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Ce(t=!1){const e=f.a[this.location],n=d.e[0];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed as a waiter at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function xe(t=!1){const e=f.a[this.location],n=d.g[0];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed as a part-time waiter at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Le(t,e){const n=t.jobStatReqOffset,a=e.requiredHacking>0?e.requiredHacking+n:0,r=e.requiredStrength>0?e.requiredStrength+n:0,i=e.requiredDefense>0?e.requiredDefense+n:0,o=e.requiredDexterity>0?e.requiredDexterity+n:0,s=e.requiredDexterity>0?e.requiredDexterity+n:0,l=e.requiredCharisma>0?e.requiredCharisma+n:0;return this.hacking>=a&&this.strength>=r&&this.defense>=i&&this.dexterity>=o&&this.agility>=s&&this.charisma>=l&&t.playerReputation>=e.requiredReputation}function Oe(t=!0){t&&this.resetMultipliers();for(let t=0;te}const i=v.a[Z.a.Illuminati];!i.isBanned&&!i.isMember&&!i.alreadyInvited&&e>=30&&this.money>=15e10&&this.hacking>=1500&&this.strength>=1200&&this.defense>=1200&&this.dexterity>=1200&&this.agility>=1200&&t.push(i);const o=v.a[Z.a.Daedalus];!o.isBanned&&!o.isMember&&!o.alreadyInvited&&e>=Math.round(30*s.a.DaedalusAugsRequirement)&&this.money>=1e11&&(this.hacking>=2500||this.strength>=1500&&this.defense>=1500&&this.dexterity>=1500&&this.agility>=1500)&&t.push(o);const l=v.a[Z.a.TheCovenant];!l.isBanned&&!l.isMember&&!l.alreadyInvited&&e>=20&&this.money>=75e9&&this.hacking>=850&&this.strength>=850&&this.defense>=850&&this.dexterity>=850&&this.agility>=850&&t.push(l);const c=v.a[Z.a.ECorp];c.isBanned||c.isMember||c.alreadyInvited||!r(C.a.AevumECorp)||t.push(c);const u=v.a[Z.a.MegaCorp];u.isBanned||u.isMember||u.alreadyInvited||!r(C.a.Sector12MegaCorp)||t.push(u);const m=v.a[Z.a.BachmanAssociates];m.isBanned||m.isMember||m.alreadyInvited||!r(C.a.AevumBachmanAndAssociates)||t.push(m);const h=v.a[Z.a.BladeIndustries];h.isBanned||h.isMember||h.alreadyInvited||!r(C.a.Sector12BladeIndustries)||t.push(h);const d=v.a[Z.a.NWO];d.isBanned||d.isMember||d.alreadyInvited||!r(C.a.VolhavenNWO)||t.push(d);const g=v.a[Z.a.ClarkeIncorporated];g.isBanned||g.isMember||g.alreadyInvited||!r(C.a.AevumClarkeIncorporated)||t.push(g);const y=v.a[Z.a.OmniTekIncorporated];y.isBanned||y.isMember||y.alreadyInvited||!r(C.a.VolhavenOmniTekIncorporated)||t.push(y);const b=v.a[Z.a.FourSigma];b.isBanned||b.isMember||b.alreadyInvited||!r(C.a.Sector12FourSigma)||t.push(b);const E=v.a[Z.a.KuaiGongInternational];E.isBanned||E.isMember||E.alreadyInvited||!r(C.a.ChongqingKuaiGongInternational)||t.push(E);const k=v.a[Z.a.FulcrumSecretTechnologies],_=Object(T.d)(N.a.FulcrumSecretTechnologies);if(!(_ instanceof A.a))throw new Error(Z.a.FulcrumSecretTechnologies+" should be normal server");null==_?console.error(`Could not find ${Z.a.FulcrumSecretTechnologies} Server`):k.isBanned||k.isMember||k.alreadyInvited||!_.backdoorInstalled||!r(C.a.AevumFulcrumTechnologies,25e4)||t.push(k);const w=v.a[Z.a.BitRunners],x=Object(T.d)(N.a.BitRunnersServer);if(!(x instanceof A.a))throw new Error(Z.a.BitRunners+" should be normal server");null==x?console.error(`Could not find ${Z.a.BitRunners} Server`):w.isBanned||w.isMember||!x.backdoorInstalled||w.alreadyInvited||t.push(w);const L=v.a[Z.a.TheBlackHand],O=Object(T.d)(N.a.TheBlackHandServer);if(!(O instanceof A.a))throw new Error(Z.a.TheBlackHand+" should be normal server");null==O?console.error(`Could not find ${Z.a.TheBlackHand} Server`):L.isBanned||L.isMember||!O.backdoorInstalled||L.alreadyInvited||t.push(L);const M=v.a[Z.a.NiteSec],R=Object(T.d)(N.a.NiteSecServer);if(!(R instanceof A.a))throw new Error(Z.a.NiteSec+" should be normal server");null==R?console.error(`Could not find ${Z.a.NiteSec} Server`):M.isBanned||M.isMember||!R.backdoorInstalled||M.alreadyInvited||t.push(M);const P=v.a[Z.a.Chongqing];!P.isBanned&&!P.isMember&&!P.alreadyInvited&&this.money>=2e7&&this.city==S.a.Chongqing&&t.push(P);const I=v.a[Z.a.Sector12];!I.isBanned&&!I.isMember&&!I.alreadyInvited&&this.money>=15e6&&this.city==S.a.Sector12&&t.push(I);const F=v.a[Z.a.NewTokyo];!F.isBanned&&!F.isMember&&!F.alreadyInvited&&this.money>=2e7&&this.city==S.a.NewTokyo&&t.push(F);const D=v.a[Z.a.Aevum];!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=4e7&&this.city==S.a.Aevum&&t.push(D);const j=v.a[Z.a.Ishima];!j.isBanned&&!j.isMember&&!j.alreadyInvited&&this.money>=3e7&&this.city==S.a.Ishima&&t.push(j);const B=v.a[Z.a.Volhaven];!B.isBanned&&!B.isMember&&!B.alreadyInvited&&this.money>=5e7&&this.city==S.a.Volhaven&&t.push(B);const W=v.a[Z.a.SpeakersForTheDead];!W.isBanned&&!W.isMember&&!W.alreadyInvited&&this.hacking>=100&&this.strength>=300&&this.defense>=300&&this.dexterity>=300&&this.agility>=300&&this.numPeopleKilled>=30&&this.karma<=-45&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(W);const H=v.a[Z.a.TheDarkArmy];!H.isBanned&&!H.isMember&&!H.alreadyInvited&&this.hacking>=300&&this.strength>=300&&this.defense>=300&&this.dexterity>=300&&this.agility>=300&&this.city==S.a.Chongqing&&this.numPeopleKilled>=5&&this.karma<=-45&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(H);const U=v.a[Z.a.TheSyndicate];!U.isBanned&&!U.isMember&&!U.alreadyInvited&&this.hacking>=200&&this.strength>=200&&this.defense>=200&&this.dexterity>=200&&this.agility>=200&&(this.city==S.a.Aevum||this.city==S.a.Sector12)&&this.money>=1e7&&this.karma<=-90&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(U);const q=v.a[Z.a.Silhouette];!q.isBanned&&!q.isMember&&!q.alreadyInvited&&(a.includes("Chief Technology Officer")||a.includes("Chief Financial Officer")||a.includes("Chief Executive Officer"))&&this.money>=15e6&&this.karma<=-22&&t.push(q);const $=v.a[Z.a.Tetrads];!$.isBanned&&!$.isMember&&!$.alreadyInvited&&(this.city==S.a.Chongqing||this.city==S.a.NewTokyo||this.city==S.a.Ishima)&&this.strength>=75&&this.defense>=75&&this.dexterity>=75&&this.agility>=75&&this.karma<=-18&&t.push($);const K=v.a[Z.a.SlumSnakes];!K.isBanned&&!K.isMember&&!K.alreadyInvited&&this.strength>=30&&this.defense>=30&&this.dexterity>=30&&this.agility>=30&&this.karma<=-9&&this.money>=1e6&&t.push(K);const z=v.a[Z.a.Netburners];let V=0,Y=0,J=0;for(let t=0;t=80&&V>=8&&Y>=4&&J>=100&&t.push(z);const X=v.a[Z.a.TianDiHui];!X.isBanned&&!X.isMember&&!X.alreadyInvited&&this.money>=1e6&&this.hacking>=50&&(this.city==S.a.Chongqing||this.city==S.a.NewTokyo||this.city==S.a.Ishima)&&t.push(X);const Q=v.a[Z.a.CyberSec],tt=Object(T.d)(N.a.CyberSecServer);if(!(tt instanceof A.a))throw new Error(Z.a.CyberSec+" should be normal server");return null==tt?console.error(`Could not find ${Z.a.CyberSec} Server`):Q.isBanned||Q.isMember||!tt.backdoorInstalled||Q.alreadyInvited||t.push(Q),t}function Ae(t){this.bitNodeN=t}function Re(t){for(const e of this.queuedAugmentations)if(e.name==t)return void console.warn(`tried to queue ${t} twice, this may be a bug`);for(const e of this.augmentations)if(e.name==t)return void console.warn(`tried to queue ${t} twice, this may be a bug`);this.queuedAugmentations.push(new i.a(t))}function Ne(t,e=1){if(null==t||null==t.type)return"No reward for this contract";switch(t.type){case l.c.FactionReputation:if(null==t.name||!(v.a[t.name]instanceof E.a))return t.type=l.c.FactionReputationAll,this.gainCodingContractReward(t);const n=p.a.CodingContractBaseFactionRepGain*e;return v.a[t.name].playerReputation+=n,`Gained ${n} faction reputation for ${t.name}`;case l.c.FactionReputationAll:const a=p.a.CodingContractBaseFactionRepGain*e,r=[Z.a.Bladeburners],i=this.factions.slice().filter(t=>!r.includes(t));if(0==i.length)return t.type=l.c.Money,this.gainCodingContractReward(t,e);const o=Math.floor(a/i.length);for(const t of i)v.a[t]instanceof E.a&&(v.a[t].playerReputation+=o);return`Gained ${o} reputation for each of the following factions: ${i.toString()}`;case l.c.CompanyReputation:{if(null==t.name||!(f.a[t.name]instanceof c.a))return t.type=l.c.FactionReputationAll,this.gainCodingContractReward(t);const n=p.a.CodingContractBaseCompanyRepGain*e;return f.a[t.name].playerReputation+=n,`Gained ${n} company reputation for ${t.name}`}case l.c.Money:default:{const t=p.a.CodingContractBaseMoneyGain*e*s.a.CodingContractMoney;return this.gainMoney(t,"codingcontract"),"Gained "+W.a.formatMoney(t)}}}function Pe(t){return null==_.a[t]?(console.warn("Player.travel() called with invalid city: "+t),!1):(this.city=t,!0)}function Ie(t){return null==w.a[t]?(console.warn("Player.gotoLocation() called with invalid location: "+t),!1):(this.location=t,!0)}function Fe(){return 10===this.bitNodeN||D.a[10]>0}function De(t){this.exploits.includes(t)||(this.exploits.push(t),J.b.emit("SF -1 acquired!","success",2e3))}function je(t){const e=Q.a[t];e&&(this.achievements.map(t=>t.ID).includes(t)||(this.achievements.push({ID:t,unlockedOn:(new Date).getTime()}),J.b.emit(`Unlocked Achievement: "${e.Name}"`,"success",2e3)))}function Be(t){return Object(O.a)(this.intelligence,t)}function Ge(){return this.moneySourceA.casino}function We(t){return this.hasOwnProperty(t)?this[t]:1}function He(t,e){this.hasOwnProperty(t)&&(this[t]=e)}function Ue(){return 13===this.bitNodeN||D.a[13]>0}function qe(t){const e=this.sourceFiles.find(e=>e.n===t);return e?e.lvl:0}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(563),r=n(7),i=n(998),o=n(336),s=n(24);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class c extends a.a{constructor(t={hostname:"",ip:Object(o.a)()}){super(t),l(this,"backdoorInstalled",!1),l(this,"baseDifficulty",1),l(this,"hackDifficulty",1),l(this,"minDifficulty",1),l(this,"moneyAvailable",0),l(this,"moneyMax",0),l(this,"numOpenPortsRequired",5),l(this,"openPortCount",0),l(this,"requiredHackingSkill",1),l(this,"serverGrowth",1),this.hostname.startsWith("hacknet-node-")&&(this.hostname=Object(i.a)(10)),this.purchasedByPlayer=null!=t.purchasedByPlayer&&t.purchasedByPlayer,this.maxRam=null!=t.maxRam?t.maxRam:0,this.requiredHackingSkill=null!=t.requiredHackingSkill?t.requiredHackingSkill:1,this.moneyAvailable=null!=t.moneyAvailable?t.moneyAvailable*r.a.ServerStartingMoney:0,this.moneyMax=25*this.moneyAvailable*r.a.ServerMaxMoney,this.hackDifficulty=null!=t.hackDifficulty?t.hackDifficulty*r.a.ServerStartingSecurity:1,this.baseDifficulty=this.hackDifficulty,this.minDifficulty=Math.max(1,Math.round(this.hackDifficulty/3)),this.serverGrowth=null!=t.serverGrowth?t.serverGrowth:1,this.numOpenPortsRequired=null!=t.numOpenPortsRequired?t.numOpenPortsRequired:5}capDifficulty(){this.hackDifficulty100&&(this.hackDifficulty=100)}changeMinimumSecurity(t,e=!1){e?this.minDifficulty*=t:this.minDifficulty+=t,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(t){if(this.moneyMax>1e13){const e=this.moneyMax-1e13;t=1+(t-1)/Math.log(e)/Math.log(8)}this.moneyMax*=t}fortify(t){this.hackDifficulty+=t,this.capDifficulty()}weaken(t){this.hackDifficulty-=t*r.a.ServerWeakenRate,this.capDifficulty()}toJSON(){return Object(s.b)("Server",this)}static fromJSON(t){return Object(s.a)(c,t.data)}}s.c.constructors.Server=c},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s}));var a=n(0),r=n.n(a);const i={Corporation:r.a.createContext({}),Division:r.a.createContext({})},o=()=>Object(a.useContext)(i.Corporation),s=()=>Object(a.useContext)(i.Division)},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return f})),n.d(e,"e",(function(){return u}));var a=n(0),r=n.n(a),i=n(131),o=n(145);const s={Energy:"Energy",Utilities:"Water Utilities",Agriculture:"Agriculture",Fishing:"Fishing",Mining:"Mining",Food:"Food",Tobacco:"Tobacco",Chemical:"Chemical",Pharmaceutical:"Pharmaceutical",Computer:"Computer Hardware",Robotics:"Robotics",Software:"Software",Healthcare:"Healthcare",RealEstate:"RealEstate"},l={Energy:225e9,Utilities:15e10,Agriculture:4e10,Fishing:8e10,Mining:3e11,Food:1e10,Tobacco:2e10,Chemical:7e10,Pharmaceutical:2e11,Computer:5e11,Robotics:1e12,Software:25e9,Healthcare:75e10,RealEstate:6e11},c={Energy:t=>r.a.createElement(r.a.Fragment,null,"Engage in the production and distribution of energy.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Energy,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Utilities:t=>r.a.createElement(r.a.Fragment,null,"Distribute water and provide wastewater services.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Utilities,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Agriculture:t=>r.a.createElement(r.a.Fragment,null,"Cultivate crops and breed livestock to produce food.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Agriculture,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Fishing:t=>r.a.createElement(r.a.Fragment,null,"Produce food through the breeding and processing of fish and fish products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Fishing,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Mining:t=>r.a.createElement(r.a.Fragment,null,"Extract and process metals from the earth.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Mining,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Food:t=>r.a.createElement(r.a.Fragment,null,"Create your own restaurants all around the world.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Food,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Tobacco:t=>r.a.createElement(r.a.Fragment,null,"Create and distribute tobacco and tobacco-related products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Tobacco,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Chemical:t=>r.a.createElement(r.a.Fragment,null,"Produce industrial chemicals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Chemical,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Pharmaceutical:t=>r.a.createElement(r.a.Fragment,null,"Discover, develop, and create new pharmaceutical drugs.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Pharmaceutical,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Computer:t=>r.a.createElement(r.a.Fragment,null,"Develop and manufacture new computer hardware and networking infrastructures.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Computer,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Robotics:t=>r.a.createElement(r.a.Fragment,null,"Develop and create robots.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Robotics,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Software:t=>r.a.createElement(r.a.Fragment,null,"Develop computer software and create AI Cores.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Software,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Healthcare:t=>r.a.createElement(r.a.Fragment,null,"Create and manage hospitals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Healthcare,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),RealEstate:t=>r.a.createElement(r.a.Fragment,null,"Develop and manage real estate properties.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.RealEstate,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO")},f={Energy:Object(i.a)(),Utilities:Object(i.a)(),Agriculture:Object(i.a)(),Fishing:Object(i.a)(),Mining:Object(i.a)(),Food:Object(i.b)(),Tobacco:Object(i.b)(),Chemical:Object(i.a)(),Pharmaceutical:Object(i.b)(),Computer:Object(i.b)(),Robotics:Object(i.b)(),Software:Object(i.b)(),Healthcare:Object(i.b)(),RealEstate:Object(i.b)()};function u(){f.Energy=Object(i.a)(),f.Utilities=Object(i.a)(),f.Agriculture=Object(i.a)(),f.Fishing=Object(i.a)(),f.Mining=Object(i.a)(),f.Food=Object(i.b)(),f.Tobacco=Object(i.b)(),f.Chemical=Object(i.a)(),f.Pharmaceutical=Object(i.b)(),f.Computer=Object(i.b)(),f.Robotics=Object(i.b)(),f.Software=Object(i.b)(),f.Healthcare=Object(i.b)(),f.RealEstate=Object(i.b)()}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.Company=0]="Company",t[t.Gym=1]="Gym",t[t.Hospital=2]="Hospital",t[t.Slums=3]="Slums",t[t.Special=4]="Special",t[t.StockMarket=5]="StockMarket",t[t.TechVendor=6]="TechVendor",t[t.TravelAgency=7]="TravelAgency",t[t.University=8]="University",t[t.Casino=9]="Casino"}(a||(a={}))},,,function(t,e,n){"use strict";n.d(e,"g",(function(){return p})),n.d(e,"l",(function(){return g})),n.d(e,"h",(function(){return y})),n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return E})),n.d(e,"e",(function(){return v})),n.d(e,"f",(function(){return k})),n.d(e,"d",(function(){return _})),n.d(e,"c",(function(){return w})),n.d(e,"n",(function(){return S})),n.d(e,"o",(function(){return C})),n.d(e,"k",(function(){return x})),n.d(e,"j",(function(){return L})),n.d(e,"i",(function(){return O})),n.d(e,"p",(function(){return T})),n.d(e,"m",(function(){return A}));var a=n(219),r=n(206),i=n(183),o=n(39),s=n(92),l=n(368),c=n(239),f=n(369),u=n(43),m=n(25),h=n(46),d=n(79);function p(t){return 9===t.bitNodeN||d.a[9]>0}function g(t){if(u.a.isRunning){if(u.a.currStep!==u.f.HacknetNodesIntroduction)return-1;Object(u.c)()}const e=t.hacknetNodes.length;if(p(t)){const n=E(t);if(isNaN(n))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return!t.canAfford(n)||e>=o.b.MaxServers?-1:(t.loseMoney(n,"hacknet_expenses"),t.createHacknetServer(),T(t),e)}{const n=b(t);if(isNaN(n))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!t.canAfford(n))return-1;const r="hacknet-node-"+e,i=new a.a(r,t.hacknet_node_money_mult);return t.loseMoney(n,"hacknet_expenses"),t.hacknetNodes.push(i),e}}function y(t){return p(t)&&t.hacknetNodes.length>=o.b.MaxServers}function b(t){return Object(r.d)(t.hacknetNodes.length+1,t.hacknet_node_purchase_cost_mult)}function E(t){return Object(i.f)(t.hacknetNodes.length+1,t.hacknet_node_purchase_cost_mult)}function v(t,e,n){if(null==n)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(t.moneye.calculateLevelUpgradeCost(i,t.hacknet_node_level_cost_mult))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!==n&&t.money>e.calculateLevelUpgradeCost(o,t.hacknet_node_level_cost_mult)&&t.moneye.calculateLevelUpgradeCost(o,t.hacknet_node_level_cost_mult)))return Math.min(i,o);a=o+1}}return 0}function k(t,e,n){if(null==n)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(t.moneye.calculateRamUpgradeCost(a,t.hacknet_node_ram_cost_mult))return a;for(let n=a-1;n>=0;--n)if(t.money>e.calculateRamUpgradeCost(n,t.hacknet_node_ram_cost_mult))return n;return 0}function _(t,e,n){if(null==n)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(t.moneye.calculateCoreUpgradeCost(i,t.hacknet_node_core_cost_mult))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!=n&&t.money>e.calculateCoreUpgradeCost(o,t.hacknet_node_core_cost_mult)&&t.moneye.calculateCoreUpgradeCost(o,t.hacknet_node_core_cost_mult)))return Math.min(i,o);a=o+1}}return 0}function w(t,e,n){if(null==n)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!t.canAfford(e.calculateCacheUpgradeCost(1)))return 0;let a=1,r=n-1;const i=n-e.cache;if(t.canAfford(e.calculateCacheUpgradeCost(i)))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!=n&&t.canAfford(e.calculateCacheUpgradeCost(o))&&!t.canAfford(e.calculateCacheUpgradeCost(o+1)))return Math.min(i,o);if(t.canAfford(e.calculateCacheUpgradeCost(o))){if(!t.canAfford(e.calculateCacheUpgradeCost(o)))return Math.min(i,o);a=o+1}else r=o-1}return 0}function S(t,e,n=1){const a=Math.round(n),r=e.calculateLevelUpgradeCost(a,t.hacknet_node_level_cost_mult);if(isNaN(r)||r<=0||a<0)return!1;const i=e instanceof s.a;if(e.level>=(i?o.b.MaxLevel:o.a.MaxLevel))return!1;if(e.level+a>(i?o.b.MaxLevel:o.a.MaxLevel)){return S(t,e,Math.max(0,(i?o.b.MaxLevel:o.a.MaxLevel)-e.level))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeLevel(a,t.hacknet_node_money_mult),!0)}function C(t,e,n=1){const r=Math.round(n),i=e.calculateRamUpgradeCost(r,t.hacknet_node_ram_cost_mult);if(isNaN(i)||i<=0||r<0)return!1;if(e instanceof s.a&&e.maxRam>=o.b.MaxRam)return!1;if(e instanceof a.a&&e.ram>=o.a.MaxRam)return!1;if(e instanceof s.a){if(e.maxRam*Math.pow(2,r)>o.b.MaxRam){return C(t,e,Math.max(0,Math.log2(Math.round(o.b.MaxRam/e.maxRam))))}}else if(e instanceof a.a&&e.ram*Math.pow(2,r)>o.a.MaxRam){return C(t,e,Math.max(0,Math.log2(Math.round(o.a.MaxRam/e.ram))))}return!!t.canAfford(i)&&(t.loseMoney(i,"hacknet_expenses"),e.upgradeRam(r,t.hacknet_node_money_mult),!0)}function x(t,e,n=1){const a=Math.round(n),r=e.calculateCoreUpgradeCost(a,t.hacknet_node_core_cost_mult);if(isNaN(r)||r<=0||a<0)return!1;const i=e instanceof s.a;if(e.cores>=(i?o.b.MaxCores:o.a.MaxCores))return!1;if(e.cores+a>(i?o.b.MaxCores:o.a.MaxCores)){return x(t,e,Math.max(0,(i?o.b.MaxCores:o.a.MaxCores)-e.cores))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeCore(a,t.hacknet_node_money_mult),!0)}function L(t,e,n=1){const a=Math.round(n),r=e.calculateCacheUpgradeCost(a);if(isNaN(r)||r<=0||a<0)return!1;if(!(e instanceof s.a))return console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1;if(e.cache+a>o.b.MaxCache){return L(t,e,Math.max(0,o.b.MaxCache-e.cache))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeCache(a),!0)}function O(t,e){return 0===t.hacknetNodes.length?0:p(t)?function(t,e){if(!(t.hashManager instanceof l.a))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let n=0;for(let r=0;r0){const e=c.a["Sell for Money"];if(null===e)throw new Error("Could not get the hash upgrade");if(!e.cost)throw new Error("Upgrade is not properly configured");const n=Math.floor(r/e.cost);n>0&&t.gainMoney(e.value*n,"hacknet")}return n}(t,e):t.hacknetNodes[0]instanceof a.a?function(t,e){let n=0;for(let a=0;ar.a.createElement(i.a,l({},t,{classes:{root:c().root,...t.classes}})),u=t=>r.a.createElement(o.a,l({},t,{classes:{root:c().small,...t.classes}}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(16);const r={CityNames:[a.a.Aevum,a.a.Chongqing,a.a.Sector12,a.a.NewTokyo,a.a.Ishima,a.a.Volhaven],CyclesPerSecond:5,StaminaGainPerSecond:.0085,BaseStaminaLoss:.285,MaxStaminaToGainFactor:7e4,DifficultyToTimeFactor:10,DiffMultExponentialFactor:.28,DiffMultLinearFactor:650,EffAgiLinearFactor:1e4,EffDexLinearFactor:1e4,EffAgiExponentialFactor:.04,EffDexExponentialFactor:.035,BaseRecruitmentTimeNeeded:300,PopulationThreshold:1e9,PopulationExponent:.7,ChaosThreshold:50,BaseStatGain:1,BaseIntGain:.003,ActionCountGrowthPeriod:480,RankToFactionRepFactor:2,RankNeededForFaction:25,ContractSuccessesPerLevel:3,OperationSuccessesPerLevel:2.5,RanksPerSkillPoint:3,ContractBaseMoneyGain:25e4,HrcHpGain:2,HrcStaminaGain:1}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={HackersStartingHandbook:"hackers-starting-handbook.lit",CorporationManagementHandbook:"corporation-management-handbook.lit",HistoryOfSynthoids:"history-of-synthoids.lit",AGreenTomorrow:"A-Green-Tomorrow.lit",AlphaOmega:"alpha-omega.lit",SimulatedReality:"simulated-reality.lit",BeyondMan:"beyond-man.lit",BrighterThanTheSun:"brighter-than-the-sun.lit",DemocracyIsDead:"democracy-is-dead.lit",Sector12Crime:"sector-12-crime.lit",ManAndMachine:"man-and-machine.lit",SecretSocieties:"secret-societies.lit",TheFailedFrontier:"the-failed-frontier.lit",CodedIntelligence:"coded-intelligence.lit",SyntheticMuscles:"synthetic-muscles.lit",TensionsInTechRace:"tensions-in-tech-race.lit",CostOfImmortality:"cost-of-immortality.lit",TheHiddenWorld:"the-hidden-world.lit",TheNewGod:"the-new-god.lit",NewTriads:"new-triads.lit",TheSecretWar:"the-secret-war.lit"}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(999),r=n(1e3);const i={};for(const t of r.a)i[t.key]=new a.a(t.name,t.create,t.run)},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l}));var a=n(1011),r=n(234),i=n(24);let o={};function s(){const t=o;o={},a.a.forEach(t=>{var e;null!=o[(e=t).name]&&console.warn("Duplicate Company Position being defined: "+e.name),o[e.name]=new r.a(e)});for(const e of Object.keys(o)){const n=o[e];t[e]instanceof r.a?(n.favor=t[e].favor,isNaN(n.favor)&&(n.favor=0)):n.favor=0}}function l(t){o=JSON.parse(t,i.c)}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"n",(function(){return NewIndustry})),__webpack_require__.d(__webpack_exports__,"m",(function(){return NewCity})),__webpack_require__.d(__webpack_exports__,"A",(function(){return UnlockUpgrade})),__webpack_require__.d(__webpack_exports__,"j",(function(){return LevelUpgrade})),__webpack_require__.d(__webpack_exports__,"i",(function(){return IssueDividends})),__webpack_require__.d(__webpack_exports__,"q",(function(){return SellMaterial})),__webpack_require__.d(__webpack_exports__,"r",(function(){return SellProduct})),__webpack_require__.d(__webpack_exports__,"x",(function(){return SetSmartSupply})),__webpack_require__.d(__webpack_exports__,"y",(function(){return SetSmartSupplyUseLeftovers})),__webpack_require__.d(__webpack_exports__,"e",(function(){return BuyMaterial})),__webpack_require__.d(__webpack_exports__,"b",(function(){return BulkPurchase})),__webpack_require__.d(__webpack_exports__,"s",(function(){return SellShares})),__webpack_require__.d(__webpack_exports__,"c",(function(){return BuyBackShares})),__webpack_require__.d(__webpack_exports__,"a",(function(){return AssignJob})),__webpack_require__.d(__webpack_exports__,"B",(function(){return UpgradeOfficeSize})),__webpack_require__.d(__webpack_exports__,"z",(function(){return ThrowParty})),__webpack_require__.d(__webpack_exports__,"o",(function(){return PurchaseWarehouse})),__webpack_require__.d(__webpack_exports__,"C",(function(){return UpgradeWarehouse})),__webpack_require__.d(__webpack_exports__,"d",(function(){return BuyCoffee})),__webpack_require__.d(__webpack_exports__,"h",(function(){return HireAdVert})),__webpack_require__.d(__webpack_exports__,"l",(function(){return MakeProduct})),__webpack_require__.d(__webpack_exports__,"p",(function(){return Research})),__webpack_require__.d(__webpack_exports__,"g",(function(){return ExportMaterial})),__webpack_require__.d(__webpack_exports__,"f",(function(){return CancelExportMaterial})),__webpack_require__.d(__webpack_exports__,"k",(function(){return LimitProductProduction})),__webpack_require__.d(__webpack_exports__,"t",(function(){return SetMaterialMarketTA1})),__webpack_require__.d(__webpack_exports__,"u",(function(){return SetMaterialMarketTA2})),__webpack_require__.d(__webpack_exports__,"v",(function(){return SetProductMarketTA1})),__webpack_require__.d(__webpack_exports__,"w",(function(){return SetProductMarketTA2}));var _MaterialSizes__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(175),_IndustryData__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(50),_Industry__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(1032),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(38),_OfficeSpace__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(372),_Product__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(396),_Warehouse__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(237),_Locations_Cities__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(149),_EmployeePositions__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(44),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(318),_ResearchMap__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(282),_ui_Helpers__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(397);function NewIndustry(t,e,n){if(t.divisions.find(({type:t})=>e==t))throw new Error(`You have already expanded into the ${e} industry!`);for(let e=0;e_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.DividendMaxPercentage)throw new Error("Invalid value. Must be an integer between 0 and "+_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.DividendMaxPercentage);t.dividendPercentage=100*e}function SellMaterial(mat,amt,price){""===price&&(price="0"),""===amt&&(amt="0");let cost=price.replace(/\s+/g,"");cost=cost.replace(/[^-()\d/*+.MPe]/g,"");let temp=cost.replace(/MP/g,mat.bCost+"");try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell price field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell price field");if(cost.includes("MP")?mat.sCost=cost:mat.sCost=temp,amt=amt.toUpperCase(),amt.includes("MAX")||amt.includes("PROD")){let q=amt.replace(/\s+/g,"");q=q.replace(/[^-()\d/*+.MAXPROD]/g,"");let tempQty=q.replace(/MAX/g,mat.maxsll.toString());tempQty=tempQty.replace(/PROD/g,mat.prd.toString());try{tempQty=eval(tempQty)}catch(t){throw new Error("Invalid value or expression for sell quantity field: "+t)}if(null==tempQty||isNaN(parseFloat(tempQty))||parseFloat(tempQty)<0)throw new Error("Invalid value or expression for sell quantity field");mat.sllman[0]=!0,mat.sllman[1]=q}else{if(isNaN(parseFloat(amt))||parseFloat(amt)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let t=parseFloat(amt);isNaN(t)&&(t=0),0===t?(mat.sllman[0]=!1,mat.sllman[1]=0):(mat.sllman[0]=!0,mat.sllman[1]=t)}}}function SellProduct(product,city,amt,price,all){if(price.includes("MP")){price=price.replace(/\s+/g,""),price=price.replace(/[^-()\d/*+.MP]/g,"");let temp=price.replace(/MP/g,"1");try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell price field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell price field.");product.sCost=price}else{const t=parseFloat(price);if(isNaN(t))throw new Error("Invalid value for sell price field");product.sCost=t}const cities=Object.keys(_Locations_Cities__WEBPACK_IMPORTED_MODULE_7__.a);if(amt=amt.toUpperCase(),amt.includes("MAX")||amt.includes("PROD")){let qty=amt.replace(/\s+/g,"");qty=qty.replace(/[^-()\d/*+.MAXPROD]/g,"");let temp=qty.replace(/MAX/g,product.maxsll.toString());temp=temp.replace(/PROD/g,product.data[city][1].toString());try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell quantity field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell quantity field");if(all)for(let t=0;ti)throw new Error("You do not have enough warehouse size to fit this purchase");const o=a*n.bCost;if(!(t.funds>=o))throw new Error("You cannot afford this purchase.");t.funds=t.funds-o,n.qty+=a}function SellShares(t,e,n){if(isNaN(n))throw new Error("Invalid value for number of shares");if(n<0)throw new Error("Invalid value for number of shares");if(n>t.numShares)throw new Error("You don't have that many shares to sell!");if(!t.public)throw new Error("You haven't gone public!");if(t.shareSaleCooldown)throw new Error("Share sale on cooldown!");const a=t.calculateShareSale(n),r=a[0],i=a[1],o=a[2];return t.numShares-=n,t.issuedShares+=n,t.sharePrice=i,t.shareSalesUntilPriceUpdate=o,t.shareSaleCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SellSharesCooldown,e.gainMoney(r,"corporation"),r}function BuyBackShares(t,e,n){if(isNaN(n))throw new Error("Invalid value for number of shares");if(n<0)throw new Error("Invalid value for number of shares");if(n>t.issuedShares)throw new Error("You don't have that many shares to buy!");if(!t.public)throw new Error("You haven't gone public!");const a=1.1*t.sharePrice;if(e.money=o)throw new Error(`You are already at the max products (${o}) for division: ${e.name}!`);const l=new _Product__WEBPACK_IMPORTED_MODULE_5__.a({name:a.replace(/[<>]/g,""),createCity:n,designCost:r,advCost:i});if(s[l.name]instanceof _Product__WEBPACK_IMPORTED_MODULE_5__.a)throw new Error("You already have a product with this name!");t.funds=t.funds-(r+i),s[l.name]=l}function Research(t,e){const n=_IndustryData__WEBPACK_IMPORTED_MODULE_1__.c[t.type];if(void 0===n)throw new Error(`No research tree for industry '${t.type}'`);if(!n.getAllNodes().includes(e))throw new Error(`No research named '${e}'`);const a=_ResearchMap__WEBPACK_IMPORTED_MODULE_10__.a[e];if(t.sciResearch.qty{var e;null!=i[(e=t).name]&&console.warn("Duplicate Company Position being defined: "+e.name),i[e.name]=new r.a(e)})},function(t,e,n){"use strict";n.d(e,"b",(function(){return xt})),n.d(e,"a",(function(){return Lt}));var a=n(0),r=n.n(a),i=n(134),o=n(110),s=n(341),l=n(11),c=n(216),f=n(43),u=n(1050),m=n(370),h=n(450),d=n(15),p=n(25),g=n(28),y=n(242),b=n(101),E=n(115),v=n(139),k=n(21),_=n(1),w=n(26),S=n(1053),C=n(1057),x=n(1080),L=n(1085),O=n(1111),M=n(1142),T=n(1161),A=n(1196),R=n(589),N=n(1209),P=n(1210),I=n(1254),F=n(1262),D=n(1271),j=n(1296),B=n(399),G=n(621),W=n(1322),H=n(1323),U=n(1329),q=n(1330),$=n(400),K=n(1341),z=n(1351),V=n(620),Y=n(1352),J=n(1361),X=n(1364),Q=n(121),Z=n(296),tt=n(1369),et=n(182),nt=n(1370),at=n(143),rt=n(181),it=n(335),ot=n(395),st=n(580),lt=n(295),ct=n(299),ft=n(29),ut=n(403),mt=n(1372),ht=n(1375),dt=n(8),pt=n(1376),gt=n(1381),yt=n(1386),bt=n(1387),Et=n.n(bt),vt=n(1388),kt=n.n(vt),_t=n(632);const wt=location,St=Object(E.a)(t=>Object(v.a)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:t.spacing(0),flexGrow:1,display:"block",padding:"8px",minHeight:"100vh",boxSizing:"border-box"}})),Ct=()=>{throw new Error("Router called before initialization")};let xt={isInitialized:!1,page:Ct,allowRouting:Ct,toActiveScripts:Ct,toAugmentations:Ct,toBitVerse:Ct,toBladeburner:Ct,toStats:Ct,toCity:Ct,toCorporation:Ct,toCreateProgram:Ct,toDevMenu:Ct,toFaction:Ct,toFactions:Ct,toGameOptions:Ct,toGang:Ct,toHacknetNodes:Ct,toInfiltration:Ct,toJob:Ct,toMilestones:Ct,toGrafting:Ct,toScriptEditor:Ct,toSleeves:Ct,toStockMarket:Ct,toTerminal:Ct,toTravel:Ct,toTutorial:Ct,toWork:Ct,toBladeburnerCinematic:Ct,toLocation:Ct,toStaneksGift:Ct,toAchievements:Ct,toThemeBrowser:Ct,toImportSave:Ct};function Lt({player:t,engine:e,terminal:n}){const E=St(),[{files:v,vim:bt},vt]=Object(a.useState)({files:{},vim:!1}),[Ct,Lt]=Object(a.useState)(function(t){return ut.b?w.a.Recovery:t.isWorking?w.a.Work:w.a.Terminal}(t)),Ot=Object(a.useState)(0)[1],[Mt,Tt]=Object(a.useState)(!1),[At,Rt]=Object(a.useState)(t.currentWorkFactionName?g.a[t.currentWorkFactionName]:void 0);if(void 0===At&&Ct===w.a.Faction)throw new Error("Trying to go to a page without the proper setup");const[Nt,Pt]=Object(a.useState)(!1),[It,Ft]=Object(a.useState)(!1),[Dt,jt]=Object(a.useState)(void 0);if(void 0===Dt&&(Ct===w.a.Infiltration||Ct===w.a.Location||Ct===w.a.Job))throw new Error("Trying to go to a page without the proper setup");const[Bt,Gt]=Object(a.useState)(""),[Wt,Ht]=Object(a.useState)(0),[Ut,qt]=Object(a.useState)(dt.a.IsSidebarOpened),[$t,Kt]=Object(a.useState)(void 0),[zt,Vt]=Object(a.useState)(!1);if(void 0===$t&&Ct===w.a.ImportSave)throw new Error("Trying to go to a page without the proper setup");const[Yt,Jt]=Object(a.useState)(!0);function Xt(){Ot(t=>t+1)}function Qt(){for(const t of Object(p.c)())t.runningScripts=[];o.c.saveGame(),setTimeout(()=>wt.reload(),2e3)}function Zt(){Object(d.a)("Soft Reset!"),Object(i.e)(!0),Ht(Wt+1),xt.toTerminal()}Object(a.useEffect)(()=>m.a.subscribe(Xt),[]),xt={isInitialized:!0,page:()=>Ct,allowRouting:t=>Jt(t),toActiveScripts:()=>Lt(w.a.ActiveScripts),toAugmentations:()=>Lt(w.a.Augmentations),toBladeburner:()=>Lt(w.a.Bladeburner),toStats:()=>Lt(w.a.Stats),toCorporation:()=>Lt(w.a.Corporation),toCreateProgram:()=>Lt(w.a.CreateProgram),toDevMenu:()=>Lt(w.a.DevMenu),toFaction:(t,e=!1)=>{Tt(e),Lt(w.a.Faction),t&&Rt(t)},toFactions:()=>Lt(w.a.Factions),toGameOptions:()=>Lt(w.a.Options),toGang:()=>Lt(w.a.Gang),toHacknetNodes:()=>Lt(w.a.Hacknet),toMilestones:()=>Lt(w.a.Milestones),toGrafting:()=>Lt(w.a.Grafting),toScriptEditor:(t,e)=>{vt({files:t,vim:!(null==e||!e.vim)}),Lt(w.a.ScriptEditor)},toSleeves:()=>Lt(w.a.Sleeves),toStockMarket:()=>Lt(w.a.StockMarket),toTerminal:()=>Lt(w.a.Terminal),toTutorial:()=>Lt(w.a.Tutorial),toJob:()=>{jt(c.a[t.companyName]),Lt(w.a.Job)},toCity:()=>{Lt(w.a.City)},toTravel:()=>{t.gotoLocation(l.a.TravelAgency),Lt(w.a.Travel)},toBitVerse:(t,e)=>{Pt(t),Ft(e),Object(lt.b)(),Lt(w.a.BitVerse)},toInfiltration:t=>{jt(t),Lt(w.a.Infiltration)},toWork:()=>Lt(w.a.Work),toBladeburnerCinematic:()=>{Lt(w.a.BladeburnerCinematic),Gt(Bt)},toLocation:t=>{jt(t),Lt(w.a.Location)},toStaneksGift:()=>{Lt(w.a.StaneksGift)},toAchievements:()=>{Lt(w.a.Achievements)},toThemeBrowser:()=>{Lt(w.a.ThemeBrowser)},toImportSave:(t,e=!1)=>{Kt(t),Vt(e),Lt(w.a.ImportSave)}},Object(a.useEffect)(()=>{kt()(xt).filter(t=>t.startsWith("to")).forEach(t=>{xt[t]=Et()(xt[t],(e,...n)=>{if(Yt)return e(...n);console.log(`Routing is currently disabled - Attempted router.${t}()`)})})}),Object(a.useEffect)(()=>{Ct!==w.a.Terminal&&window.scrollTo(0,0)});let te=r.a.createElement(_.a,null,"Cannot load"),ee=!0,ne=!0,ae=!1;switch(Ct){case w.a.Recovery:te=r.a.createElement(ut.c,{router:xt,softReset:Zt}),ee=!1,ne=!1,ae=!0;break;case w.a.BitVerse:te=r.a.createElement(J.a,{flume:Nt,enter:ct.a,quick:It}),ee=!1,ne=!1;break;case w.a.Infiltration:te=r.a.createElement(A.a,{location:Dt}),ee=!1,ne=!1;break;case w.a.BladeburnerCinematic:te=r.a.createElement(tt.a,null),ee=!1,ne=!1;break;case w.a.Work:te=r.a.createElement(N.a,null),ee=!1;break;case w.a.Terminal:te=r.a.createElement(H.a,{terminal:n,router:xt,player:t});break;case w.a.Sleeves:te=r.a.createElement(I.a,null);break;case w.a.StaneksGift:te=r.a.createElement(X.a,{staneksGift:Q.b});break;case w.a.Stats:te=r.a.createElement(z.a,null);break;case w.a.ScriptEditor:te=r.a.createElement(G.a,{files:v,hostname:t.getCurrentServer().hostname,player:t,router:xt,vim:bt});break;case w.a.ActiveScripts:te=r.a.createElement(q.a,{workerScripts:et.a});break;case w.a.Hacknet:te=r.a.createElement(F.a,{player:t});break;case w.a.CreateProgram:te=r.a.createElement(B.a,null);break;case w.a.Factions:te=r.a.createElement($.a,{player:t,router:xt});break;case w.a.Faction:te=r.a.createElement(K.a,{faction:At,augPage:Mt});break;case w.a.Milestones:te=r.a.createElement(W.a,{player:t});break;case w.a.Tutorial:te=r.a.createElement(U.a,{reactivateTutorial:()=>{Object(h.a)(),xt.toTerminal(),Object(f.e)()}});break;case w.a.DevMenu:te=r.a.createElement(L.a,{player:t,engine:e,router:xt});break;case w.a.Gang:te=r.a.createElement(M.a,null);break;case w.a.Corporation:te=r.a.createElement(T.a,null);break;case w.a.Bladeburner:te=r.a.createElement(O.a,null);break;case w.a.Grafting:te=r.a.createElement(R.a,null);break;case w.a.Travel:te=r.a.createElement(V.a,{p:t,router:xt});break;case w.a.StockMarket:te=r.a.createElement(Y.a,{buyStockLong:y.a,buyStockShort:y.d,cancelOrder:b.c,eventEmitterForReset:b.e,initStockMarket:b.g,p:t,placeOrder:b.j,sellStockLong:y.c,sellStockShort:y.b,stockMarket:b.a});break;case w.a.City:te=r.a.createElement(j.a,null);break;case w.a.Job:case w.a.Location:te=r.a.createElement(D.a,{loc:Dt});break;case w.a.Options:te=r.a.createElement(P.a,{player:t,router:xt,save:()=>o.c.saveGame(),export:()=>{Object(s.c)(t),o.c.exportGame()},forceKill:Qt,softReset:Zt});break;case w.a.Augmentations:te=r.a.createElement(x.a,{exportGameFn:()=>{Object(s.c)(t),o.c.exportGame()},installAugmentationsFn:()=>{Object(i.e)()}});break;case w.a.Achievements:te=r.a.createElement(mt.a,null);break;case w.a.ThemeBrowser:te=r.a.createElement(pt.a,{router:xt});break;case w.a.ImportSave:te=r.a.createElement(gt.a,{importString:$t,automatic:zt,router:xt}),ee=!1,ne=!1,ae=!0}return r.a.createElement(ft.a.Player.Provider,{value:t},r.a.createElement(ft.a.Router.Provider,{value:xt},r.a.createElement(ht.a,{key:Wt,router:xt,softReset:Zt},r.a.createElement(yt.a,{content:ae?te:null},r.a.createElement(at.c,null,r.a.createElement(S.a,{mode:f.a.isRunning?"tutorial":"overview"},f.a.isRunning?r.a.createElement(u.a,null):r.a.createElement(Z.a,{save:()=>o.c.saveGame(),killScripts:Qt})),ee?r.a.createElement(k.a,{display:"flex",flexDirection:"row",width:"100%"},r.a.createElement(C.a,{player:t,router:xt,page:Ct,opened:Ut,onToggled:t=>{qt(t),dt.a.IsSidebarOpened=t}}),r.a.createElement(k.a,{className:E.root},te)):r.a.createElement(k.a,{className:E.root},te),r.a.createElement(nt.a,null),ne&&r.a.createElement(r.a.Fragment,null,r.a.createElement(rt.c,null),r.a.createElement(it.b,null),r.a.createElement(ot.b,null),r.a.createElement(st.b,null),r.a.createElement(at.a,null)),r.a.createElement(_t.a,null))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(0),r=n.n(a),i=n(47),o=n(30),s=n(1),l=n(5),c=n(23),f=n(296);const u=({name:t,color:e,classes:n=Object(f.b)(),children:a,data:u})=>{let m;return void 0!==u.content?m=u.content:void 0!==u.level&&void 0!==u.exp?m=`${Object(c.d)(u.level,0)} (${l.a.formatExp(u.exp)} exp)`:void 0!==u.level&&void 0===u.exp&&(m=""+Object(c.d)(u.level,0)),r.a.createElement(i.a,null,r.a.createElement(o.a,{classes:{root:n.cellNone}},r.a.createElement(s.a,{style:{color:e}},t)),r.a.createElement(o.a,{align:"right",classes:{root:n.cellNone}},m?r.a.createElement(s.a,{style:{color:e}},m):r.a.createElement(r.a.Fragment,null),a))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(11);const r={};r[a.a.AevumECorp]="ECP",r[a.a.Sector12MegaCorp]="MGCP",r[a.a.Sector12BladeIndustries]="BLD",r[a.a.AevumClarkeIncorporated]="CLRK",r[a.a.VolhavenOmniTekIncorporated]="OMTK",r[a.a.Sector12FourSigma]="FSIG",r[a.a.ChongqingKuaiGongInternational]="KGI",r[a.a.AevumFulcrumTechnologies]="FLCM",r[a.a.IshimaStormTechnologies]="STM",r[a.a.NewTokyoDefComm]="DCOMM",r[a.a.VolhavenHeliosLabs]="HLS",r[a.a.NewTokyoVitaLife]="VITA",r[a.a.Sector12IcarusMicrosystems]="ICRS",r[a.a.Sector12UniversalEnergy]="UNV",r[a.a.AevumAeroCorp]="AERO",r[a.a.VolhavenOmniaCybersystems]="OMN",r[a.a.ChongqingSolarisSpaceSystems]="SLRS",r[a.a.NewTokyoGlobalPharmaceuticals]="GPH",r[a.a.IshimaNovaMedical]="NVMD",r[a.a.AevumWatchdogSecurity]="WDS",r[a.a.VolhavenLexoCorp]="LXO",r[a.a.AevumRhoConstruction]="RHOC",r[a.a.Sector12AlphaEnterprises]="APHE",r[a.a.VolhavenSysCoreSecurities]="SYSC",r[a.a.VolhavenCompuTek]="CTK",r[a.a.AevumNetLinkTechnologies]="NTLK",r[a.a.IshimaOmegaSoftware]="OMGA",r[a.a.Sector12FoodNStuff]="FNS",r[a.a.Sector12JoesGuns]="JGN",r["Sigma Cosmetics"]="SGC",r["Catalyst Ventures"]="CTYS",r["Microdyne Technologies"]="MDYN",r["Titan Laboratories"]="TITN"},function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}));const a=[".js",".script",".ns"];function r(t){return a.some(e=>t.endsWith(e))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"e",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"f",(function(){return f}));var a=n(7),r=n(281);function i(t,e){const n=(100-t.hackDifficulty)/100,a=1.75*e.hacking,i=(a-t.requiredHackingSkill)/a*n*e.hacking_chance_mult*Object(r.a)(e.intelligence,1);return i>1?1:i<0?0:i}function o(t,e){null==t.baseDifficulty&&(t.baseDifficulty=t.hackDifficulty);let n=3;return n+=.3*t.baseDifficulty,n*e.hacking_exp_mult*a.a.HackExpGain}function s(t,e){const n=(100-t.hackDifficulty)/100*((e.hacking-(t.requiredHackingSkill-1))/e.hacking)*e.hacking_money_mult*a.a.ScriptHackMoney/240;return n<0?0:n>1?1:n}function l(t,e){let n=2.5*(t.requiredHackingSkill*t.hackDifficulty)+500;n/=e.hacking+50;return 5*n/(e.hacking_speed_mult*Object(r.a)(e.intelligence,1))}function c(t,e){return 3.2*l(t,e)}function f(t,e){return 4*l(t,e)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return y})),n.d(e,"j",(function(){return b})),n.d(e,"c",(function(){return E})),n.d(e,"i",(function(){return v})),n.d(e,"d",(function(){return k})),n.d(e,"f",(function(){return _})),n.d(e,"h",(function(){return w})),n.d(e,"k",(function(){return C})),n.d(e,"g",(function(){return x})),n.d(e,"e",(function(){return L}));var a=n(749),r=n(328),i=n(148),o=n(648),s=n(1018),l=n(114),c=n(76),f=n(98),u=n(9),m=n(126),h=n(5),d=n(15),p=n(24);let g={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0};const y={};function b(t,e,n,o,s,l=null){if(!(t instanceof i.a))return l?l.log("stock.placeOrder",()=>`Invalid stock: '${t}'`):Object(d.a)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof e||"number"!=typeof n)return l?l.log("stock.placeOrder",()=>`Invalid arguments: shares='${e}' price='${n}'`):Object(d.a)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new a.a(t.symbol,e,n,o,s);if(null==g.Orders){const t={};for(const e of Object.keys(g)){const n=g[e];n instanceof i.a&&(t[n.symbol]=[])}g.Orders=t}g.Orders[t.symbol].push(c);const f={stockMarket:g,symbolToStockMap:y};return Object(r.a)(t,c.type,c.pos,f),!0}function E(t,e=null){if(null==g.Orders)return!1;if(t.order&&t.order instanceof a.a){const e=t.order,n=g.Orders[e.stockSymbol];for(let t=0;t=e.cap&&(o=.1,e.b=!1),isNaN(o)&&(o=.5);const s=Math.random(),f={stockMarket:g,symbolToStockMap:y};st);f.a.factions.sort((t,n)=>e.indexOf(t)-e.indexOf(n));const n=t.getInfo();for(const t of n.enemies)c.a[t]instanceof l.a&&(c.a[t].isBanned=!0);for(let e=0;e0)for(let n=0;n=t.baseCost){const e=new r.a(t.name);if(t.name==i.a.NeuroFluxGovernor&&(e.level=_()),f.a.queuedAugmentations.push(e),f.a.loseMoney(t.baseCost,"augmentations"),t.name==i.a.NeuroFluxGovernor){let e=_();--e;const n=Math.pow(s.a.NeuroFluxGovernorLevelMult,e);t.baseRepRequirement=500*n*o.a.AugmentationRepCost,t.baseCost=75e4*n*o.a.AugmentationMoneyCost;for(let e=0;e{if(t.hasGangWith(e.name)){let n=Object.values(a.a);n=n.filter(t=>!t.isSpecial);const r=[i.a.NeuroFluxGovernor,i.a.CongruityImplant];2!==t.bitNodeN&&r.push(i.a.TheRedPill);const s=Object(y.b)(`BN${t.bitNodeN}.${t.sourceFileLvl(t.bitNodeN)}`),l=t=>t.factions.length>1||(!!e.augmentations.includes(t.name)||s()>=1-o.a.GangUniqueAugs);return n=n.filter(l),n=n.filter(t=>!r.includes(t.name)),n.map(t=>t.name)}return e.augmentations.slice()}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),function(t){t.Bypass="Bypass",t.PrototypeTampering="PrototypeTampering",t.Unclickable="Unclickable",t.UndocumentedFunctionCall="UndocumentedFunctionCall",t.TimeCompression="TimeCompression",t.RealityAlteration="RealityAlteration",t.N00dles="N00dles",t.YoureNotMeantToAccessThis="YoureNotMeantToAccessThis",t.TrueRecursion="TrueRecursion",t.INeedARainbow="INeedARainbow",t.EditSaveFile="EditSaveFile"}(a||(a={}));const r={Bypass:"by circumventing the ram cost of document.",EditSaveFile:"by editing your save file.",PrototypeTampering:"by tampering with Numbers prototype.",TimeCompression:"by compressing time.",Unclickable:"by clicking the unclickable.",UndocumentedFunctionCall:"by looking beyond the documentation.",RealityAlteration:"by altering reality to suit your whims.",N00dles:"by harnessing the power of the n00dles.",YoureNotMeantToAccessThis:"by accessing the dev menu.",TrueRecursion:"by truly recursing.",INeedARainbow:"by using the power of the rainbow."};function i(t){return r[t]}function o(t){return t=t.filter(t=>Object.keys(a).includes(t)),[...new Set(t)]}},function(t,e,n){"use strict";n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(147),r=n(25),i=n(176);function o(t,e){return e.delayReject&&e.delayReject(),new Promise((function(n,a){e.delay=window.setTimeout(()=>{e.delay=null,e.delayReject=void 0,e.env.stopFlag?a(new i.a(e)):n()},t),e.delayReject=a}))}function s(t,e){const n=Object(r.d)(t.hostname);if(null==n)throw new Error("WorkerScript constructed with invalid server ip: "+t.hostname);for(const n of t.scriptRef.dependencies){var a,i;e=null!==(a=null===(i=e)||void 0===i?void 0:i.replace(new RegExp(n.url,"g"),n.filename))&&void 0!==a?a:e}return"|DELIMITER|"+n.hostname+"|DELIMITER|"+t.name+"|DELIMITER|"+e}function l(t,e,n){const a=t.scriptRef.threads;if(!n)return isNaN(a)||a<1?1:a;const r=0|n;if(isNaN(n)||r<1)throw s(t,`Invalid thread count passed to ${e}: ${n}. Threads must be a positive number.`);if(r>a)throw s(t,`Too many threads requested by ${e}. Requested: ${n}. Has: ${a}.`);return r}function c(t){if(!Object(a.a)(t))return!1;return 4==t.split("|DELIMITER|").length}},,function(t,e,n){"use strict";n.d(e,"c",(function(){return R})),n.d(e,"b",(function(){return O})),n.d(e,"a",(function(){return A}));var a=n(152),r=n(66),i=n(9),o=n(28),s=n(82),l=n(268),c=n(2),f=n(25),u=n(8),m=n(79),h=n(101),d=n(121),p=n(143),g=n(341),y=n(15),b=n(24),E=n(337),v=n(1047),k=n(14),_=n(358),w=n(11),S=n(579),C=n(293);function x(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class L{constructor(){x(this,"PlayerSave",""),x(this,"AllServersSave",""),x(this,"CompaniesSave",""),x(this,"FactionsSave",""),x(this,"AliasesSave",""),x(this,"GlobalAliasesSave",""),x(this,"MessagesSave",""),x(this,"StockMarketSave",""),x(this,"SettingsSave",""),x(this,"VersionSave",""),x(this,"AllGangsSave",""),x(this,"LastExportBonus",""),x(this,"StaneksGiftSave","")}getSaveString(t=!1){this.PlayerSave=JSON.stringify(c.a),this.AllServersSave=Object(f.j)(t),this.CompaniesSave=JSON.stringify(r.a),this.FactionsSave=JSON.stringify(o.a),this.AliasesSave=JSON.stringify(a.a),this.GlobalAliasesSave=JSON.stringify(a.b),this.MessagesSave=JSON.stringify(l.a),this.StockMarketSave=JSON.stringify(h.a),this.SettingsSave=JSON.stringify(u.a),this.VersionSave=JSON.stringify(i.a.VersionNumber),this.LastExportBonus=JSON.stringify(g.a),this.StaneksGiftSave=JSON.stringify(d.b),c.a.inGang()&&(this.AllGangsSave=JSON.stringify(s.a));return btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(t=!0){const e=(new Date).getTime();c.a.lastSave=e;const n=this.getSaveString(u.a.ExcludeRunningScriptsFromSave);return new Promise((a,r)=>{Object(E.c)(n).then(()=>{const r={playerIdentifier:c.a.identifier,fileName:this.getSaveFileName(),save:n,savedOn:e};return Object(C.d)(r),t&&p.b.emit("Game Saved!","info",2e3),a()}).catch(t=>(console.error(t),r()))})}getSaveFileName(t=!1){const e=Math.round(Date.now()/1e3),n=c.a.bitNodeN;let a=`bitburnerSave_${e}_BN${n}x${m.a[n]}.json`;return t&&(a="RECOVERY"+a),a}exportGame(){const t=this.getSaveString(u.a.ExcludeRunningScriptsFromSave);A(this.getSaveFileName(),t)}importGame(t,e=!0){if(!t||""===t)throw new Error("Invalid import string");return Object(E.c)(t).then(()=>(e&&setTimeout(()=>location.reload(),1e3),Promise.resolve()))}getImportStringFromFile(t){if(null===t)return Promise.reject(new Error("No file selected"));const e=t[0];if(!e)return Promise.reject(new Error("Invalid file selected"));const n=new FileReader,a=new Promise((t,e)=>{n.onload=function(n){const a=n.target;if(null===a)return e(new Error("Error importing file"));const r=a.result;if("string"!=typeof r)return e(new Error("FileReader event was not type string"));t(r)}});return n.readAsText(e),a}async getImportDataFromString(t){var e,n,a,r,i,o,s,l;if(!t||""===t)throw new Error("Invalid import string");let f,u;try{f=window.atob(t),f=f.trim()}catch(t){console.error(t)}if(!f||""===f)return Promise.reject(new Error("Save game had not content or was not base64 encoded"));try{u=JSON.parse(f)}catch(t){console.log(t)}if(!u||"BitburnerSaveObject"!==u.ctor||!u.data)return Promise.reject(new Error("Save game did not seem valid"));const m={base64:t,parsed:u},h=S.a.fromJSON(JSON.parse(u.data.PlayerSave)),d={identifier:h.identifier,lastSave:h.lastSave,totalPlaytime:h.totalPlaytime,money:h.money,hacking:h.hacking,augmentations:null!==(e=null===(n=h.augmentations)||void 0===n?void 0:n.reduce((t,e)=>t+e.level,0))&&void 0!==e?e:0,factions:null!==(a=null===(r=h.factions)||void 0===r?void 0:r.length)&&void 0!==a?a:0,achievements:null!==(i=null===(o=h.achievements)||void 0===o?void 0:o.length)&&void 0!==i?i:0,bitNode:h.bitNodeN,bitNodeLevel:h.sourceFileLvl(c.a.bitNodeN)+1,sourceFiles:null!==(s=null===(l=h.sourceFiles)||void 0===l?void 0:l.reduce((t,e)=>t+e.lvl,0))&&void 0!==s?s:0};return m.playerData=d,Promise.resolve(m)}toJSON(){return Object(b.b)("BitburnerSaveObject",this)}static fromJSON(t){return Object(b.a)(L,t.data)}}function O(t){if(-1!==navigator.userAgent.indexOf("wv")&&-1!==navigator.userAgent.indexOf("Chrome/")&&setInterval(()=>{Object(y.a)("SCAM ALERT. This app is not official and you should uninstall it.")},1e3),!t)return!1;t=decodeURIComponent(escape(atob(t)));const e=JSON.parse(t,b.c);if(Object(c.b)(e.PlayerSave),Object(f.h)(e.AllServersSave),Object(r.c)(e.CompaniesSave),Object(o.d)(e.FactionsSave),e.hasOwnProperty("StaneksGiftSave")?Object(d.a)(e.StaneksGiftSave):(console.warn("Could not load Staneks Gift from save"),Object(d.a)("")),e.hasOwnProperty("AliasesSave"))try{Object(a.c)(e.AliasesSave)}catch(t){console.warn("Could not load Aliases from save"),Object(a.c)("")}else console.warn("Save file did not contain an Aliases property"),Object(a.c)("");if(e.hasOwnProperty("GlobalAliasesSave"))try{Object(a.d)(e.GlobalAliasesSave)}catch(t){console.warn("Could not load GlobalAliases from save"),Object(a.d)("")}else console.warn("Save file did not contain a GlobalAliases property"),Object(a.d)("");if(e.hasOwnProperty("MessagesSave"))try{Object(l.d)(e.MessagesSave)}catch(t){console.warn("Could not load Messages from save"),Object(l.c)()}else console.warn("Save file did not contain a Messages property"),Object(l.c)();if(e.hasOwnProperty("StockMarketSave"))try{Object(h.i)(e.StockMarketSave)}catch(t){Object(h.i)("")}else Object(h.i)("");if(e.hasOwnProperty("SettingsSave"))try{u.a.load(e.SettingsSave)}catch(t){console.error("ERROR: Failed to parse Settings. Re-initing default values"),u.a.init()}else u.a.init();if(e.hasOwnProperty("LastExportBonus"))try{g.d(JSON.parse(e.LastExportBonus))}catch(t){g.d((new Date).getTime()),console.error("ERROR: Failed to parse last export bonus Settings "+t)}if(c.a.inGang()&&e.hasOwnProperty("AllGangsSave"))try{Object(s.b)(e.AllGangsSave)}catch(t){console.error("ERROR: Failed to parse AllGangsSave: "+t)}if(e.hasOwnProperty("VersionSave"))try{const t=JSON.parse(e.VersionSave,b.c);!function(t){const e=c.a;if("string"==typeof t){if(t<="0.41.2"){null!=e.companyPosition&&"string"!=typeof e.companyPosition&&(e.companyPosition=e.companyPosition.data.positionName,null==e.companyPosition&&(e.companyPosition=""));for(const t of Object.keys(r.a)){const e=r.a[t];if(0==e.name&&null!=e.companyName&&(e.name=e.companyName),e.companyPositions instanceof Array){const t={};for(let n=0;nt.name===k.a.NeuroFluxGovernor);if(t)t.level+=10;else{const t=new _.a(k.a.NeuroFluxGovernor);t.level=10,c.a.augmentations.push(t)}c.a.reapplyAllAugmentations(!0),c.a.reapplyAllSourceFiles()}if(t<3&&(e.money=parseFloat(e.money),e.corporation)){e.corporation.funds=parseFloat(e.corporation.funds),e.corporation.revenue=parseFloat(e.corporation.revenue),e.corporation.expenses=parseFloat(e.corporation.expenses);for(let t=0;t0)for(const t of e.sleeves)if(t.augmentations&&0!==t.augmentations.length)for(const e of t.augmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade");t<12&&void 0!==e.resleeves&&delete e.resleeves}}(t),window.location.href.toLowerCase().includes("bitburner-beta")?Object(y.a)("You are playing on the beta environment! This branch of the game features the latest developments in the game. This version may be unstable.
Please report any bugs/issues through the github repository (https://github.com/danielyxie/bitburner/issues) or the Bitburner subreddit (reddit.com/r/bitburner).

"+i.a.LatestUpdate,M):t!==i.a.VersionNumber&&T()}catch(t){T()}else T();return!0}const M={"& h1, & h2, & h3, & h4, & p, & a, & ul":{margin:0,color:u.a.theme.primary,whiteSpace:"initial"},"& ul":{paddingLeft:"1.5em",lineHeight:1.5}};function T(){setTimeout(()=>Object(y.a)("New update!
Please report any bugs/issues through the github repository or the Bitburner subreddit (reddit.com/r/bitburner).

"+i.a.LatestUpdate,M),1e3)}function A(t,e){const n=new Blob([e],{type:"text/plain"}),a=window.navigator;if(a.msSaveOrOpenBlob)a.msSaveOrOpenBlob(n,t);else{const e=document.createElement("a"),a=URL.createObjectURL(n);e.href=a,e.download=t,document.body.appendChild(e),e.click(),setTimeout((function(){document.body.removeChild(e),window.URL.revokeObjectURL(a)}),0)}}b.c.constructors.BitburnerSaveObject=L;const R=new L},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(5),o=n(19);function s({money:t}){return r.a.createElement(o.a,{money:i.a.formatMoney(t)+" / sec"})}},function(t,e,n){"use strict";n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return f}));var a=n(949),r=n(24),i=n(564);class o{constructor(t,e,n,a,r,i){this.name=t,this.desc=e,this.generate=n,this.solver=a,this.difficulty=r,this.numTries=i}}const s={};for(const t of a.a)s[t.name]=new o(t.name,t.desc,t.gen,t.solver,t.difficulty,t.numTries);let l,c;!function(t){t[t.FactionReputation=0]="FactionReputation",t[t.FactionReputationAll=1]="FactionReputationAll",t[t.CompanyReputation=2]="CompanyReputation",t[t.Money=3]="Money"}(l||(l={})),function(t){t[t.Success=0]="Success",t[t.Failure=1]="Failure",t[t.Cancelled=2]="Cancelled"}(c||(c={}));class f{constructor(t="",e="Find Largest Prime Factor",n=null){var a,r,i;if(i=0,(r="tries")in(a=this)?Object.defineProperty(a,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[r]=i,this.fn=t,this.fn.endsWith(".cct")||(this.fn+=".cct"),null==s[e])throw new Error(`Error: invalid contract type: ${e} please contact developer`);this.type=e,this.data=s[e].generate(),this.reward=n}getData(){return this.data}getDescription(){return s[this.type].desc(this.data)}getDifficulty(){return s[this.type].difficulty}getMaxNumTries(){return s[this.type].numTries}getType(){return s[this.type].name}isSolution(t){return s[this.type].solver(this.data,t)}async prompt(){return new Promise(t=>{const e={c:this,onClose:()=>{t(c.Cancelled)},onAttempt:e=>{this.isSolution(e)?t(c.Success):t(c.Failure)}};i.a.emit(e)})}toJSON(){return Object(r.b)("CodingContract",this)}static fromJSON(t){return Object(r.a)(f,t.data)}}r.c.constructors.CodingContract=f},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t.LimitBuy="Limit Buy Order",t.LimitSell="Limit Sell Order",t.StopBuy="Stop Buy Order",t.StopSell="Stop Sell Order"}(a||(a={}))},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(5),i=n(115),o=n(139);const s=Object(i.a)(t=>Object(o.a)({reputation:{color:t.colors.rep}}));function l({reputation:t}){const e=s();return a.createElement("span",{className:e.reputation},"number"==typeof t?r.a.formatReputation(t):t)}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(24),r=n(750);let i=new r.a;function o(t){i=t?JSON.parse(t,a.c):new r.a}},,,,,function(t,e,n){"use strict";function a(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))}n.d(e,"a",(function(){return r}));class r{constructor(){var t,e,n;n={},(e="subscribers")in(t=this)?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n}subscribe(t){let e=a();for(;void 0!==this.subscribers[e];)e=a();return this.subscribers[e]=t,()=>{delete this.subscribers[e]}}emit(...t){for(const e in this.subscribers){const n=this.subscribers[e];void 0!==n&&n(...t)}}}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n(0),r=n.n(a),i=n(598),o=n.n(i),s=n(1089),l=n.n(s),c=n(111),f=n(1090),u=n.n(f),m=n(595),h=n.n(m),d=n(80),p=n(20);function g(t){const[e,n]=Object(a.useState)("");const{label:i,placeholder:s,add:f,subtract:m,reset:g,tons:y}=t;return r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{label:i,value:e,onChange:function(t){""===t.target.value?n(""):n(parseFloat(t.target.value))},placeholder:s,type:"number",InputProps:{startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:"Add a lot"},r.a.createElement(c.a,{onClick:y,size:"large"},r.a.createElement(h.a,{style:{transform:"rotate(-90deg)"}}))),r.a.createElement(p.a,{title:"Add"},r.a.createElement(c.a,{onClick:()=>f("string"!=typeof e?e:0),size:"large"},r.a.createElement(o.a,null)))),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:"Remove"},r.a.createElement(c.a,{onClick:()=>m("string"!=typeof e?e:0),size:"large"},r.a.createElement(l.a,null))),r.a.createElement(p.a,{title:"Reset"},r.a.createElement(c.a,{onClick:g,size:"large"},r.a.createElement(u.a,null))))}}))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n(282),r=n(645);function i(t){const e=a.a[t];if(null==e)throw new Error("Invalid research name: "+t);return new r.a({text:e.name,cost:e.cost})}function o(){const t=i("Hi-Tech R&D Laboratory"),e=i("AutoBrew"),n=i("AutoPartyManager"),a=i("Automatic Drug Administration"),r=i("Bulk Purchasing"),o=i("CPH4 Injections"),s=i("Drones"),l=i("Drones - Assembly"),c=i("Drones - Transport"),f=i("Go-Juice"),u=i("HRBuddy-Recruitment"),m=i("HRBuddy-Training"),h=i("JoyWire"),d=i("Market-TA.I"),p=i("Market-TA.II"),g=i("Overclock"),y=i("Self-Correcting Assemblers"),b=i("Sti.mu");return a.addChild(f),a.addChild(o),s.addChild(l),s.addChild(c),u.addChild(m),d.addChild(p),g.addChild(b),t.addChild(e),t.addChild(n),t.addChild(a),t.addChild(r),t.addChild(s),t.addChild(u),t.addChild(h),t.addChild(d),t.addChild(g),t.addChild(y),t}function s(){const t=new r.b;return t.setRoot(o()),t}function l(){const t=new r.b,e=o(),n=i("uPgrade: Fulcrum"),a=i("uPgrade: Capacity.I"),s=i("uPgrade: Capacity.II"),l=i("uPgrade: Dashboard");return a.addChild(s),n.addChild(a),n.addChild(l),e.addChild(n),t.setRoot(e),t}},,function(t,e,n){"use strict";n.d(e,"f",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"e",(function(){return d})),n.d(e,"d",(function(){return p})),n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return y}));var a=n(25),r=n(46),i=n(585),o=n(7),s=n(9),l=n(65),c=n(64),f=n(748);function u(t){let e=t.hostname.replace(/ /g,"-");if(null!=t.ip&&Object(a.g)(t.ip)&&(t.ip=Object(a.e)()),null!=Object(a.d)(e)){e+="-0";for(let t=0;t<200&&(e=e.replace(/-[0-9]+$/,"-"+t),null!=Object(a.d)(e));++t);}return t.hostname=e,new r.a(t)}function m(t,e,n,a=1){let r=1+(s.a.ServerBaseGrowthRate-1)/t.hackDifficulty;r>s.a.ServerMaxGrowthRate&&(r=s.a.ServerMaxGrowthRate);const i=t.serverGrowth/100,l=1+(a-1)/16;return Math.log(e)/(Math.log(r)*n.hacking_grow_mult*i*o.a.ServerGrowthRate*l)}function h(t,e,n,a,r=1){if(n<0&&(n=0),e>t.moneyMax&&(e=t.moneyMax),e<=n)return 0;const i=1+(s.a.ServerBaseGrowthRate-1)/t.hackDifficulty,l=Math.min(i,s.a.ServerMaxGrowthRate),c=1+(r-1)/16,f=t.serverGrowth/100*a.hacking_grow_mult*c*o.a.ServerGrowthRate,u=f*Math.log(l),m=n*u+Math.log(e*u);let h;if(m0&&(h-=Math.log(m));let d=h/u-n;const p=l**f;let g=1/0;do{const t=p**d,a=n+d;g=(a*t-e)/(a*u+1)/t,d-=g}while(Math.abs(g)>=1);const y=Math.floor(d);if(e<=(n+y)*Math.pow(l,y*f))return y;const b=Math.ceil(d);return e<=(n+b)*Math.pow(l,b*f)?b:b+1}function d(t,e,n,a=1){let r=Object(i.a)(t,e,n,a);r<1&&(console.warn("serverGrowth calculated to be less than 1"),r=1);const o=t.moneyAvailable;if(t.moneyAvailable+=1*e,t.moneyAvailable*=r,Object(f.a)(t.moneyMax)&&isNaN(t.moneyAvailable)&&(t.moneyAvailable=t.moneyMax),Object(f.a)(t.moneyMax)&&t.moneyAvailable>t.moneyMax&&(t.moneyAvailable=t.moneyMax),o!==t.moneyAvailable){let r=h(t,t.moneyAvailable,o,n,a);r=Math.min(Math.max(0,Math.ceil(r)),e),t.fortify(2*s.a.ServerFortifyAmount*r)}return t.moneyAvailable/o}function p(t,e){const n=e.programs.includes(l.a.BitFlume.name);e.programs.length=0,e.runningScripts=[],e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(l.a.NukeProgram.name),n&&e.programs.push(l.a.BitFlume.name),e.scripts.forEach((function(n){n.updateRamUsage(t,e.scripts)})),e.messages.length=0,e.messages.push(c.a.HackersStartingHandbook)}function g(t,e){return e>t.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):Object(a.d)(t.serversOnNetwork[e])}function y(t){return t instanceof r.a&&t.backdoorInstalled}},function(t,e,n){"use strict";n.d(e,"c",(function(){return v})),n.d(e,"f",(function(){return x})),n.d(e,"e",(function(){return S})),n.d(e,"d",(function(){return b})),n.d(e,"a",(function(){return w})),n.d(e,"b",(function(){return C}));var a=n(40),r=n(56),i=n(358),o=n(14),s=n(7),l=n(9),c=n(28),f=n(2),u=n(450),m=n(79),h=n(15),d=n(1392),p=n(4),g=n(488),y=n(95);function b(){!function(){for(const t of Object.keys(c.a))c.a.hasOwnProperty(t)&&(c.a[t].augmentations=[])}(),Object(d.a)(r.a),[Object(g.d)(),Object(g.e)(),...Object(g.c)(),...Object(c.b)(p.a.Bladeburners)?Object(g.a)():[],...Object(c.b)(p.a.ChurchOfTheMachineGod)?Object(g.b)():[]].map(_),function(){for(const t of Object.keys(r.a))if(r.a.hasOwnProperty(t)){const e=r.a[t];e.name===o.a.NeuroFluxGovernor?k(e):e.baseCost=e.startingCost*v()*s.a.AugmentationMoneyCost}}(),f.a.reapplyAllAugmentations()}function E(){return l.a.MultipleAugMultiplier*[1,.96,.94,.93][m.a[11]]}function v(){return Math.pow(E(),f.a.queuedAugmentations.length)}function k(t){let e=function(){let t=0;for(let e=0;e=0;t--)if(f.a.queuedAugmentations[t].name===o.a.NeuroFluxGovernor){n=t;break}for(let t=0;t"}return f.a.queuedAugmentations=[],t||Object(h.a)("You slowly drift to sleep as scientists put you under in order to install the following Augmentations:
"+e+"
You wake up in your home...you feel different..."),Object(u.a)(),y.b.toTerminal(),!0}function C(t){return r.a.hasOwnProperty(t)}function x(t){return(t instanceof a.a?t.name:t)===o.a.NeuroFluxGovernor}},function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"f",(function(){return i})),n.d(e,"a",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"e",(function(){return l})),n.d(e,"b",(function(){return c}));var a=n(27);function r(t,e){return Math.random()*(e-t)+t}const i="↑",o="↓",s="←",l="→";function c(t){switch(t.key){case a.a.UP_ARROW:case a.a.W:return i;case a.a.LEFT_ARROW:case a.a.A:return s;case a.a.DOWN_ARROW:case a.a.S:return o;case a.a.RIGHT_ARROW:case a.a.D:return l}return""}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={BladesIntuition:"Blade's Intuition",Cloak:"Cloak",Marksman:"Marksman",WeaponProficiency:"Weapon Proficiency",ShortCircuit:"Short-Circuit",DigitalObserver:"Digital Observer",Tracer:"Tracer",Overclock:"Overclock",Reaper:"Reaper",EvasiveSystem:"Evasive System",Datamancer:"Datamancer",CybersEdge:"Cyber's Edge",HandsOfMidas:"Hands of Midas",Hyperdrive:"Hyperdrive"}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(343),r=n(24);class i extends a.a{constructor(t=null){super(t),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return Object(r.b)("BlackOperation",this)}static fromJSON(t){return Object(r.a)(i,t.data)}}r.c.constructors.BlackOperation=i},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n(0);const r={Gang:n.n(a).a.createContext({})},i=()=>Object(a.useContext)(r.Gang)},function(t,e,n){"use strict";n.d(e,"c",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(0),r=n.n(a),i=n(753),o=n(115),s=n(126),l=n(1748),c=n(55),f=n(181);const u=Object(o.a)(()=>({snackbar:{zIndex:f.d+1e3+" !important","& .MuiAlert-icon":{alignSelf:"center"}}}));function m(t){const e=u();return r.a.createElement(i.a,{dense:!0,maxSnack:9,anchorOrigin:{horizontal:"right",vertical:"bottom"},autoHideDuration:2e3,classes:{containerRoot:e.snackbar}},t.children)}const h=new s.a;function d(){const{enqueueSnackbar:t,closeSnackbar:e}=Object(i.b)();return Object(a.useEffect)(()=>h.subscribe((n,a,i)=>{const o=t(r.a.createElement(l.a,{severity:a},n),{content:(t,e)=>r.a.createElement(c.a,{key:t},e),variant:a,autoHideDuration:i,onClick:()=>e(o)})})),r.a.createElement(r.a.Fragment,null)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return h}));var a=n(176),r=n(408),i=n(182),o=n(292),s=n(361),l=n(25),c=n(317),f=n(15),u=n(451),m=n(2);function h(t,e,n){if(null!=n&&"boolean"==typeof n||(n=!0),t instanceof r.a)return p(t),!0;if(t instanceof s.a&&"string"==typeof e){const a=d(t.pid,n);if(a)return a;for(const a of i.a.values())if(a.name==t.filename&&a.hostname==e&&Object(c.a)(a.args,t.args))return p(a,n),!0;return!1}return"number"==typeof t?d(t,n):(console.error("killWorkerScript() called with invalid argument:"),console.error(t),!1)}function d(t,e=!0){const n=i.a.get(t);return n instanceof r.a&&(p(n,e),!0)}function p(t,e=!0){if("function"==typeof t.atExit){try{t.atExit()}catch(e){Object(f.a)(`Error trying to call atExit for script ${t.name} on ${t.hostname} ${t.scriptRef.args} ${e}`)}t.atExit=void 0}t.env.stopFlag=!0,function(t){t instanceof r.a&&t.delay&&(clearTimeout(t.delay),t.delayReject&&t.delayReject(new a.a(t)))}(t),function(t,e=!0){const n=t.hostname,a=t.name,r=Object(l.d)(n);if(null==r)return void console.error("Could not find server on which this script is running: "+n);for(let e=0;eObject(o.a)({unbuyable:{color:t.palette.action.disabled},money:{color:t.colors.money}}));function l(t){const e=s();return t.corp.funds>t.money?a.createElement("span",{className:e.money},r.a.formatMoney(t.money)):a.createElement("span",{className:e.unbuyable},r.a.formatMoney(t.money))}},,function(t,e,n){"use strict";function a(t){return"string"==typeof t||t instanceof String}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(24),r=n(33);const i={b:!0,initPrice:1e4,marketCap:1e12,mv:1,name:"",otlkMag:0,spreadPerc:0,shareTxForMovement:1e6,symbol:""};function o(t){let e;switch(typeof t){case"number":return t;case"object":{const n=t;e=Object(r.a)(n.min,n.max);break}default:throw Error(`Do not know how to convert the type '${typeof t}' to a number`)}return"object"==typeof t&&"number"==typeof t.divisor?e/t.divisor:e}class s{constructor(t=i){this.name=t.name,this.symbol=t.symbol,this.price=o(t.initPrice),this.lastPrice=this.price,this.playerShares=0,this.playerAvgPx=0,this.playerShortShares=0,this.playerAvgShortPx=0,this.mv=o(t.mv),this.b=t.b,this.otlkMag=t.otlkMag,this.otlkMagForecast=this.getAbsoluteForecast(),this.cap=Object(r.a)(1e3*this.price,25e3*this.price),this.spreadPerc=o(t.spreadPerc),this.shareTxForMovement=o(t.shareTxForMovement),this.shareTxUntilMovement=this.shareTxForMovement;const e=t.marketCap/this.price;this.totalShares=1e5*Math.round(e/1e5);this.maxShares=1e5*Math.round(.2*this.totalShares/1e5)}changeForecastForecast(t){this.otlkMagForecast=t,this.otlkMagForecast>100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(t){this.lastPrice=this.price,this.price=t}cycleForecast(t=.1){const e=this.getForecastIncreaseChance();Math.random()5&&(this.otlkMag=Math.max(5,this.otlkMag-t))}influenceForecastForecast(t){this.otlkMagForecast>50?(this.otlkMagForecast-=t,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=t,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return Object(a.b)("Stock",this)}static fromJSON(t){return Object(a.a)(s,t.data)}}a.c.constructors.Stock=s},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"f",(function(){return l})),n.d(e,"e",(function(){return c})),n.d(e,"g",(function(){return m})),n.d(e,"h",(function(){return h}));var a=n(88);let r={},i={};function o(t){r=""===t?{}:JSON.parse(t)}function s(t){i=""===t?{}:JSON.parse(t)}function l(){for(const t of Object.keys(r))r.hasOwnProperty(t)&&a.a.print("alias "+t+"="+r[t]);for(const t of Object.keys(i))i.hasOwnProperty(t)&&a.a.print("global alias "+t+"="+i[t])}function c(t,e=!1){const n=t.match(/^([\w|!%,@-]+)=(("(.+)")|('(.+)'))$/);return null!=n&&7==n.length&&(e?function(t,e){t in r&&delete r[t];i[t]=e.trim()}(n[1],n[4]||n[6]):function(t,e){t in i&&delete i[t];r[t]=e.trim()}(n[1],n[4]||n[6]),!0)}function f(t){return r.hasOwnProperty(t)?r[t]:null}function u(t){return i.hasOwnProperty(t)?i[t]:null}function m(t){return r.hasOwnProperty(t)?(delete r[t],!0):!!i.hasOwnProperty(t)&&(delete i[t],!0)}function h(t){const e=t.split(" ");if(e.length>0){if("unalias"===e[0]||"alias"===e[0])return e.join(" ");let t=!0,r=0;for(;t&&r<10;){var n;r++,t=!1;const i=null===(n=f(e[0]))||void 0===n?void 0:n.split(" ");null!=i&&(t=!0,e.splice(0,1,...i));for(let n=0;nr.a.createElement(o.a,{injectFirst:!0},r.a.createElement(s.a,{theme:u},t))},,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(1),o=n(20);function s(t){const[e,n]=Object(a.useState)(!1);return r.a.createElement(o.a,{open:e,title:r.a.createElement(i.a,null,"Copied!")},r.a.createElement(i.a,{variant:t.variant,color:t.color,onClick:function(){const e=document.createElement("textarea");e.value=t.value,document.body.appendChild(e),e.select(),e.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(e),n(!0),setTimeout(()=>n(!1),1e3)}},t.value))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Water:.05,Energy:.01,Food:.03,Plants:.05,Metal:.1,Hardware:.06,Chemicals:.05,Drugs:.02,Robots:.5,AICores:.1,RealEstate:.005,"Real Estate":.005,"AI Cores":.1}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){var e,n,a;a="",(n="errorMessage")in(e=this)?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,this.pid=t.pid,this.name=t.name,this.hostname=t.hostname,this.errorMessage=t.errorMessage,Object.freeze(this)}}Object.freeze(a),Object.freeze(a.prototype)},function(t,e,n){"use strict";function a(t,e=1){return Math.max(Math.floor(e*(32*Math.log(t+534.5)-200)),1)}function r(t,e=1){return Math.exp((t/e+200)/32)-534.6}function i(t,e=1){const n=a(t,e),i=n+1;let o=r(n,e);o<0&&(o=0);let s=r(i,e);s<0&&(s=0);let l=s-o!=0?100*(t-o)/(s-o):99.99;l<0&&(l=0),l>100&&(l=100);let c=t-o,f=s-t;return c<0&&(c=0),f<0&&(f=0),{currentSkill:n,nextSkill:i,baseExperience:o,experience:t,nextExperience:s,currentExperience:c,remainingExperience:f,progress:l}}n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return i}))},,function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r})),function(t){t.Weapon="w",t.Armor="a",t.Vehicle="v",t.Rootkit="r",t.Augmentation="g"}(a||(a={}));const r=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:a.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:a.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:a.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:a.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:a.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:a.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:a.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:a.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:a.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:a.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:a.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:a.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:a.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:a.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:a.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:a.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:a.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:a.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:a.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:a.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:a.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:a.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:a.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:a.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:a.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:a.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:a.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:a.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:a.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:a.Augmentation}]},,function(t,e,n){"use strict";n.d(e,"b",(function(){return C})),n.d(e,"a",(function(){return x})),n.d(e,"c",(function(){return O})),n.d(e,"d",(function(){return T}));var a=n(0),r=n.n(a),i=n(126),o=n(144),s=n(1),l=n(21),c=n(10),f=n(55),u=n(442),m=n.n(u),h=n(1019),d=n(115),p=n(139),g=n(586),y=n.n(g),b=n(182),E=n(193),v=n(25),k=n(229),_=n(2),w=n(173);let S=0;const C=new i.a,x=new i.a;let L=[];function O(){const t=Object(a.useState)(!0)[1];function e(){t(t=>!t)}return Object(a.useEffect)(()=>C.subscribe(t=>{const n=t.server+"-"+t.filename+t.args.map(t=>""+t).join("-");L.find(t=>t.id===n)||(L.push({id:n,script:t}),e())}),[]),Object(a.useEffect)(()=>x.subscribe(()=>{L=[],e()})),r.a.createElement(r.a.Fragment,null,L.map(t=>r.a.createElement(A,{key:t.id,script:t.script,id:t.id,onClose:()=>{return n=t.id,L=L.filter(t=>t.id!==n),void e();var n}})))}const M=Object(d.a)(t=>Object(p.a)({title:{"&.is-minimized + *":{border:"none",margin:0,"max-height":0,padding:0,"pointer-events":"none",visibility:"hidden"}},logs:{overflowY:"scroll",overflowX:"hidden",scrollbarWidth:"auto",display:"flex",flexDirection:"column-reverse"},success:{color:t.colors.success},error:{color:t.palette.error.main},primary:{color:t.palette.primary.main},info:{color:t.palette.info.main},warning:{color:t.palette.warning.main}})),T=1500;function A(t){const e=Object(a.useRef)(null),n=Object(a.useRef)(null),[i,u]=Object(a.useState)(t.script),d=M(),p=Object(a.useRef)(null),g=Object(a.useState)(!1)[1],[C,x]=Object(a.useState)(!1);function L(){g(t=>!t)}function O(){const t=p.current;null!==t&&(t.style.zIndex=T+S+"",S++,L())}function A(t=!1){const e=`${i.filename} ${i.args.map(t=>""+t).join(" ")}`;return t||e.length<=30?e:e.slice(0,27)+"..."}Object(a.useEffect)(()=>{O();const t=setInterval(L,1e3);return()=>clearInterval(t)},[]),Object(a.useEffect)(()=>(window.addEventListener("resize",R),()=>{window.removeEventListener("resize",R)}),[]);const R=Object(w.debounce)(()=>{const t=null==e?void 0:e.current;t&&(N(t)||P())},100),N=t=>{const e=t.getBoundingClientRect();return!(e.right<0||e.bottom<0||e.left>innerWidth||e.top>outerWidth)},P=()=>{const t=null==n?void 0:n.current;if(!t)return;const e=t.state;e.x=0,e.y=0,t.setState(e)};return r.a.createElement(m.a,{handle:".drag",onDrag:t=>{if(t.clientX<0||t.clientY<0||t.clientX>innerWidth||t.clientY>innerHeight)return!1},ref:n},r.a.createElement(f.a,{style:{display:"flex",flexFlow:"column",position:"fixed",left:"40%",top:"30%",zIndex:1400},ref:p},r.a.createElement("div",{onMouseDown:O},r.a.createElement(f.a,{className:d.title+" "+(C?"is-minimized":""),style:{cursor:"grab"}},r.a.createElement(l.a,{className:"drag",display:"flex",alignItems:"center",ref:e},r.a.createElement(s.a,{color:"primary",variant:"h6",title:A(!0)},A()),r.a.createElement(l.a,{position:"absolute",right:0},!b.a.has(i.pid)&&r.a.createElement(c.a,{onClick:function(){const t=Object(v.d)(i.server);if(null===t)return;const e=Object(k.a)(i.filename,i.args,t);null===e?Object(E.e)(_.a,i,t):u(e)}},"Run"),b.a.has(i.pid)&&r.a.createElement(c.a,{onClick:function(){Object(o.a)(i,i.server,!0)}},"Kill"),r.a.createElement(c.a,{onClick:function(){x(!C)}},C?"🗖":"🗕"),r.a.createElement(c.a,{onClick:t.onClose},"Close")))),r.a.createElement(f.a,{sx:{overflow:"scroll",overflowWrap:"break-word",whiteSpace:"pre-wrap"}},r.a.createElement(h.ResizableBox,{className:d.logs,height:500,width:500,handle:r.a.createElement("span",{style:{position:"absolute",right:"-10px",bottom:"-13px",cursor:"nw-resize"}},r.a.createElement(y.a,{color:"primary",style:{transform:"rotate(45deg)"}}))},r.a.createElement(l.a,null,i.logs.map((t,e)=>{return r.a.createElement(s.a,{key:e,className:(n=t,n.match(/(^\[[^\]]+\] )?ERROR/)||n.match(/(^\[[^\]]+\] )?FAIL/)?d.error:n.match(/(^\[[^\]]+\] )?SUCCESS/)?d.success:n.match(/(^\[[^\]]+\] )?WARN/)?d.warning:n.match(/(^\[[^\]]+\] )?INFO/)?d.info:d.primary)},t,r.a.createElement("br",null));var n})))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new Map},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return o})),n.d(e,"e",(function(){return s})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"f",(function(){return f}));var a=n(7),r=n(39);function i(t,e,n,i,o){return r.b.HashesPerLevel*t*Math.pow(1.07,Math.log2(n))*(1+(i-1)/5)*(1-e/n)*o*a.a.HacknetNodeMoney}function o(t,e=1,n=1){const a=Math.round(e);if(isNaN(a)||a<1)return 0;if(t>=r.b.MaxLevel)return 1/0;const i=r.b.UpgradeLevelMult;let o=0,s=t;for(let t=0;t=r.b.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(t)),s=t;for(let t=0;t=r.b.MaxCores)return 1/0;const i=r.b.UpgradeCoreMult;let o=0,s=t;for(let t=0;t=r.b.MaxCache)return 1/0;const a=r.b.UpgradeCacheMult;let i=0,o=t;for(let t=0;t=r.b.MaxServers?1/0:r.b.BaseCost*Math.pow(r.b.PurchaseMult,t-1)*e}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.Field=0]="Field",t[t.Hacking=1]="Hacking",t[t.None=2]="None",t[t.Security=3]="Security"}(a||(a={}))},,function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(330),r=n(275),i=n(20),o=n(1),s=n(0),l=n.n(s);function c({checked:t,onChange:e,text:n,tooltip:c}){const[f,u]=Object(s.useState)(t);return Object(s.useEffect)(()=>e(f),[f]),l.a.createElement(a.a,{control:l.a.createElement(r.a,{checked:f,onChange:function(t){u(t.target.checked)}}),label:l.a.createElement(i.a,{title:l.a.createElement(o.a,null,c)},l.a.createElement(o.a,null,n))})}},,function(t,e,n){"use strict";function a(t){const e=Object.assign({},{progress:0,totalTicks:20},t);e.progress=Math.max(Math.min(e.progress,1),0);const n=Math.max(Math.floor(e.progress/(1/e.totalTicks)),1),a=Math.max(e.totalTicks-n,0);return`[${"|".repeat(n)}${"-".repeat(a)}]`}n.d(e,"a",(function(){return a}))},,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return A})),n.d(e,"c",(function(){return R})),n.d(e,"e",(function(){return P})),n.d(e,"f",(function(){return F})),n.d(e,"b",(function(){return D})),n.d(e,"d",(function(){return j}));var a=n(144),r=n(176),i=n(408),o=n(182),s=n(292),l=n(516),c=n(9),f=n(584),u=n(108),m=n(517),h=n(626),d=n(1391),p=n(361),g=n(633),y=n(229),b=n(25),E=n(8),v=n(667),k=n(15),_=n(253),w=n(514),S=n(147),C=n(409),x=n(252),L=n(300),O=n(81),M=n(2),T=n(88);const A=[];for(let t=0;t{i=!0;let e=t.source.value;e.startsWith("./")&&(e=e.slice(2));const n=function(t){for(let e=0;e{n.push(t.id.name),a.push(t)}}),r+=`var ${e};\n(function (namespace) {\n`,a.forEach(t=>{r+=Object(v.generate)(t),r+="\n"}),n.forEach(t=>{r+="namespace."+t+" = "+t,r+="\n"}),r+=`})(${e} || (" + namespace + " = {}));\n`}else{const e=[];t.specifiers.forEach(t=>{e.push(t.local.name)});const n=[];Object(L.b)(o,{FunctionDeclaration:t=>{e.includes(t.id.name)&&n.push(t)}}),n.forEach(t=>{r+=Object(v.generate)(t),r+="\n"})}}}),!i)return{code:t,lineOffset:0};let o=0;if("Program"!==n.type||null==n.body)throw new Error("Code could not be properly parsed");for(let t=n.body.length-1;t>=0;--t)"ImportDeclaration"===n.body[t].type&&(n.body.splice(t,1),++o);const s=(r.match(/\n/g)||[]).length-o;t=Object(v.generate)(n);return{code:t=r+t,lineOffset:s}}(e,t);n=a.code,i=a.lineOffset}catch(e){return Object(k.a)("Error processing Imports in "+t.name+":
"+e),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}const o=function(e,n){const i=Object(m.a)(t);for(const o of Object.keys(i)){const s=i[o];if("function"==typeof s)if(["hack","grow","weaken","sleep","prompt","manualHack","scp","write","share","wget"].includes(o)){const i=function(...n){const i=[];for(let t=0;t`;return s+="
",s+=o,Object(k.a)(s),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}}))};e.setProperty(n,o,e.createAsyncFunction(i))}else if("sprintf"===o||"vsprintf"===o||"scp"===o||"write"==o||"tryWrite"===o||"run"===o||"exec"===o){const t=function(...t){const n=[];for(let a=0;a"+e),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}return new Promise((function(e,n){try{!function a(){try{if(t.env.stopFlag)return n(new r.a(t));let i=!0,o=0;for(;o<3&&i;)i=i&&s.step(),o++;i?setTimeout(a,E.a.CodeInstructionRunTime):e()}catch(e){return e=e.toString(),Object(u.a)(e)||(e=Object(u.b)(t,e)),t.errorMessage=e,n(new r.a(t))}}()}catch(e){return Object(S.a)(e)?(t.errorMessage=e,n(new r.a(t))):e instanceof r.a?n(e):(console.error(e),n(new r.a(t)))}}))}function P(t,e,n,a){return I(t,e,n,a)?(n.runScript(e),e.pid):0}function I(t,e,n,c){let f=1;e.threads&&!isNaN(e.threads)?f=e.threads:e.threads=1;const d=Object(g.a)(e),p=Object(w.a)(d*f);if(p>n.maxRam-n.ramUsed)return Object(k.a)(`Not enough RAM to run script ${e.filename} with args `+Object(_.a)(e.args)+". This likely occurred because you re-loaded the game and the script's RAM usage increased (either because of an update to the game or your changes to the script.)"),!1;n.updateRamUsed(Object(w.a)(n.ramUsed+p),M.a);const y=Object(l.a)();if(-1===y)throw new Error("Failed to start script because could not find available PID. This is most because you have too many scripts running.");const b=new i.a(e,y,m.a);b.ramUsage=d,o.a.set(y,b),s.a.emit();let E=null;if(b.name.endsWith(".js")||b.name.endsWith(".ns"))E=function(t,e){e.running=!0;let n=null;function a(t,a){return function(...i){if(e.env.stopFlag)throw new r.a(e);if("asleep"===t)return a(...i);if(n)throw e.errorMessage=Object(u.b)(e,Object(C.sprintf)("Concurrent calls to Netscript functions are not allowed! Did you forget to await hack(), grow(), or some other promise-returning function? (Currently running: %s tried to run: %s)",n,t)),new r.a(e);let o;n=t;try{o=a(...i)}catch(t){throw n=null,t}return o&&void 0!==o.finally?o.finally((function(){n=null})):(n=null,o)}}return function t(e,...n){for(const r of Object.keys(e))switch(typeof e[r]){case"function":e[r]=a([...n,r].join("."),e[r]);break;case"object":if(Array.isArray(e[r]))continue;t(e[r],...n,r)}}(e.env.vars),new Promise((n,a)=>{Object(h.b)(t,e.getServer().scripts,e).then(()=>{n()}).catch(t=>a(t))}).catch(t=>{if(t instanceof Error)throw t instanceof SyntaxError?e.errorMessage=Object(u.b)(e,t.message+" (sorry we can't be more helpful)"):e.errorMessage=Object(u.b)(e,t.message+(t.stack&&"\nstack:\n"+t.stack.toString()||"")),new r.a(e);if(Object(u.a)(t))throw e.errorMessage=t,new r.a(e);if(t instanceof r.a)throw t;throw e.errorMessage=Object(u.b)(e,""+t),new r.a(e)})}(t,b);else if(E=N(b),!(E instanceof Promise))return!1;return E.then((function(){b.running=!1,b.env.stopFlag=!0,void 0!==c&&c.running&&(c.scriptRef.onlineExpGained+=e.onlineExpGained,c.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),Object(a.a)(b),b.log("",()=>"Script finished running")})).catch((function(t){if(t instanceof Error)return Object(k.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("Evaluating workerscript returns an Error. THIS SHOULDN'T HAPPEN: "+t.toString());if(t instanceof r.a){if(!Object(u.a)(b.errorMessage))return void b.log("",()=>"Script killed");{const t=b.errorMessage.split("|DELIMITER|");if(4!=t.length)return console.error("ERROR: Something wrong with Error text in evaluator..."),void console.error("Error text: "+b.errorMessage);const e=t[1],n=t[2],a=t[3];let r=`RUNTIME ERROR
${n}@${e} (PID - ${b.pid})
`;b.args.length>0&&(r+=`Args: ${Object(_.a)(b.args)}
`),r+="
",r+=a,Object(k.a)(r),b.log("",()=>"Script crashed with runtime error")}}else{if(Object(u.a)(t))return Object(k.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("ERROR: Evaluating workerscript returns only error message rather than WorkerScript object. THIS SHOULDN'T HAPPEN: "+t.toString());Object(k.a)("An unknown script died for an unknown reason. This is a bug please contact game dev"),console.error(t)}Object(a.a)(b)})),!0}function F(t=1){const e=t*c.a._idleSpeed/1e3;for(const t of o.a.values())t.scriptRef.onlineRunningTime+=e}function D(t){const e=-1!==window.location.href.toLowerCase().indexOf("?noscripts");e&&(T.a.warn("Skipped loading player scripts during startup"),console.info("Skipping the load of any scripts during startup"));for(const n of Object(b.c)()){n.ramUsed=0;for(let t=0;t`Invalid arguments: scriptname='${a} args='${r}'`),console.error("runScriptFromScript() failed due to invalid arguments"),0;r.forEach((t,e)=>{if("string"!=typeof t&&"number"!=typeof t&&"boolean"!=typeof t)throw new Error(`Only strings, numbers, and booleans can be passed as arguments to other scripts.\n${a} argument index ${e} is of type ${typeof t} and value ${JSON.stringify(t)}`)});if(null!=n.getRunningScript(a,r))return o.log(e,()=>`'${a}' is already running on '${n.hostname}'`),0;for(let t=0;t"Cannot execute a script with null/undefined as an argument"),0;for(let i=0;i`You do not have root access on '${n.hostname}'`),0;if(c>f)return o.log(e,()=>`Cannot run script '${a}' (t=${s}) on '${n.hostname}' because there is not enough available RAM!`),0;o.log(e,()=>`'${a}' on '${n.hostname}' with ${s} threads and args: ${Object(_.a)(r)}.`);const u=new p.a(l,r);return u.threads=s,u.server=n.hostname,P(t,u,n,o)}return o.log(e,()=>`Could not find script '${a}' on '${n.hostname}'`),0}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(0),r=n.n(a),i=n(61),o=n(140),s=n(151),l=n(47),c=n(1);function f({rows:t,title:e,wide:n}){const a=n?s.a:i.a;return r.a.createElement(r.a.Fragment,null,e&&r.a.createElement(c.a,null,e),r.a.createElement(a,{size:"small",padding:"none"},r.a.createElement(o.a,null,t.map((t,e)=>r.a.createElement(l.a,{key:e},t.map((t,e)=>r.a.createElement(i.b,{key:e,align:0!==e?"right":"left"},r.a.createElement(c.a,{noWrap:!0},t))))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={}){r(this,"name","InitName"),r(this,"qty",0),r(this,"qlt",0),r(this,"dmd",0),r(this,"dmdR",[0,0]),r(this,"cmp",0),r(this,"cmpR",[0,0]),r(this,"mv",0),r(this,"mku",0),r(this,"buy",0),r(this,"sll",0),r(this,"prd",0),r(this,"imp",0),r(this,"exp",[]),r(this,"totalExp",0),r(this,"bCost",0),r(this,"sCost",0),r(this,"prdman",[!1,0]),r(this,"sllman",[!1,0]),r(this,"marketTa1",!1),r(this,"marketTa2",!1),r(this,"marketTa2Price",0),r(this,"maxsll",0),t.name&&(this.name=t.name),this.init()}getMarkupLimit(){return this.qlt/this.mku}init(){switch(this.name){case"Water":this.dmd=75,this.dmdR=[65,85],this.cmp=50,this.cmpR=[40,60],this.bCost=1500,this.mv=.2,this.mku=6;break;case"Energy":this.dmd=90,this.dmdR=[80,99],this.cmp=80,this.cmpR=[65,95],this.bCost=2e3,this.mv=.2,this.mku=6;break;case"Food":this.dmd=80,this.dmdR=[70,90],this.cmp=60,this.cmpR=[35,85],this.bCost=5e3,this.mv=1,this.mku=3;break;case"Plants":this.dmd=70,this.dmdR=[20,90],this.cmp=50,this.cmpR=[30,70],this.bCost=3e3,this.mv=.6,this.mku=3.75;break;case"Metal":this.dmd=80,this.dmdR=[75,85],this.cmp=70,this.cmpR=[60,80],this.bCost=2650,this.mv=1,this.mku=6;break;case"Hardware":this.dmd=85,this.dmdR=[80,90],this.cmp=80,this.cmpR=[65,95],this.bCost=8e3,this.mv=.5,this.mku=1;break;case"Chemicals":this.dmd=55,this.dmdR=[40,70],this.cmp=60,this.cmpR=[40,80],this.bCost=9e3,this.mv=1.2,this.mku=2;break;case"Real Estate":this.dmd=50,this.dmdR=[5,99],this.cmp=50,this.cmpR=[25,75],this.bCost=8e4,this.mv=1.5,this.mku=1.5;break;case"Drugs":this.dmd=60,this.dmdR=[45,75],this.cmp=70,this.cmpR=[40,99],this.bCost=4e4,this.mv=1.6,this.mku=1;break;case"Robots":this.dmd=90,this.dmdR=[80,9],this.cmp=90,this.cmpR=[80,9],this.bCost=75e3,this.mv=.5,this.mku=1;break;case"AI Cores":this.dmd=90,this.dmdR=[80,99],this.cmp=90,this.cmpR=[80,9],this.bCost=15e3,this.mv=.8,this.mku=.5;break;case"Scientific Research":case"InitName":break;default:console.error("Invalid material type in init(): "+this.name)}}processMarket(){const t=1+Math.random()*this.mv/300,e=1+Math.random()*this.mv/100;Math.random()<.5?(this.cmp*=e,this.cmp>this.cmpR[1]&&(this.cmp=this.cmpR[1]),this.bCost*=1/t):(this.cmp*=1/e,this.cmpthis.dmdR[1]&&(this.dmd=this.dmdR[1]),this.bCost*=t):(this.dmd*=1/n,this.dmd=r.a.MaxLevel)return 1/0;const i=r.a.UpgradeLevelMult;let o=0,s=t;for(let t=0;t=r.a.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(t)),s=t;for(let t=0;t=r.a.MaxCores)return 1/0;const i=r.a.CoreBaseCost,o=r.a.UpgradeCoreMult;let s=0,l=t;for(let t=0;t1e10;return e&&Object(r.a)(a.createElement(a.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),e}class s extends a.Component{win(t,e){t.gainMoney(e,"casino")}reachedLimit(t){const e=t.getCasinoWinnings()>1e10;return e&&Object(r.a)(a.createElement(a.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),e}}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));const a=!1,r=!0,i={O:[[r,r],[r,r]],I:[[r,r,r,r]],L:[[a,a,r],[r,r,r]],J:[[r,a,a],[r,r,r]],S:[[a,r,r],[r,r,a]],Z:[[r,r,a],[a,r,r]],T:[[r,r,r],[a,r,a]]}},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(0),r=n.n(a);function i(t){return Object(a.useEffect)(()=>{function e(e){if(!e.isTrusted)return;t.onKeyDown.bind(this)(e)}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}),r.a.createElement(r.a.Fragment,null)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(1457),r=n(0),i=n.n(r),o=n(1762),s=n(60);const l=Object(o.a)(t=>({root:{backgroundColor:t.palette.background.paper},bar:{transition:"none",backgroundColor:t.palette.primary.main}}))(a.a);function c(t){const[e,n]=Object(r.useState)(100);return Object(r.useEffect)(()=>{const e=setInterval(()=>{n(e=>(e<=0&&t.onExpire(),e-200/t.millis*100))},200);return()=>{clearInterval(e)}},[]),i.a.createElement(s.a,{item:!0,xs:12},i.a.createElement(l,{variant:"determinate",value:e,color:"primary"}))}},function(t,e,n){"use strict";function a(t,e,n){function a(t,e,a){function r(t,e,n){return(1-n)*t+n*e}for(const i of Object.keys(t))n[i]=r(t[i],e[i],a);return t}return e<0?a(t.Trivial,t.Trivial,0):e>=0&&e<1?a(t.Trivial,t.Normal,e):e>=1&&e<2?a(t.Normal,t.Hard,e-1):e>=2&&e<3?a(t.Hard,t.Impossible,e-2):a(t.Impossible,t.Impossible,0)}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(422),r=n(149),i=n(752),o=n(16),s=n(1039);const l={};function c(t){if(!t.name)throw new Error("Invalid constructor parameters for Location. No 'name' property");return l[t.name]instanceof i.a&&console.warn(`Property with name ${t.name} already exists and is being overwritten`),l[t.name]=new i.a(t),l[t.name]}r.a[o.a.Aevum]=new a.a(o.a.Aevum),r.a[o.a.Chongqing]=new a.a(o.a.Chongqing),r.a[o.a.Ishima]=new a.a(o.a.Ishima),r.a[o.a.NewTokyo]=new a.a(o.a.NewTokyo),r.a[o.a.Sector12]=new a.a(o.a.Sector12),r.a[o.a.Volhaven]=new a.a(o.a.Volhaven),r.a[o.a.Aevum].asciiArt="\n [aevum police headquarters] 26 \n o \n I \\ [bachman & associates] \n \\ 56 B \n x \\ [summit university] \n \\ \\ 28 \n \\ [snap fitness gym] x o--L-----------N \n K \\ / \n \\ \\ Q [casino] \n x 58 \\ / [travel agency] \n \\ 94 95 o \n 90 x 59 o------o | \n \\ / \\ | 98 102 103 \n o--------O------x----o 93 96 o-----+------------o o----o \n \\ | \\ / \n [hospital] \\ 61 [ecorp] x 31 99 o-F-o 101 \n o | \n | o---E-- | [fulcrum tech.] \n x 62 / A [aerocorp] \n [crush fitness gym] | / | \n | / | \n o--------D------+--o o \n | |\\ [rho construction] \n H [netlink tech.] | J \n | | \\ \n | 34 x \\ \n [clarke inc.] C | \\ [world stock exchange] \n | | \\ \n | | o-M-------R--------o \n[galactic cybersystems] G 35 x \n | [watchdog security] \n | \n 67 o \n \n [the slums] P ",r.a[o.a.Chongqing].asciiArt="\n | \n 75 o \n \\ \n o 76 \n 7 | | \n | + 77 \n [world stock exchange] F | \n \\ o 78 [kuaigong international] \n \\ / \n 38 o----x--x------x------A------G-- \n / 39 | 41 [church] \n 37 o + 79 o--x--x-C-0 \n / | / \n / x-----+-----x-----0 [hospital] \n[solaris space system] B | \n | + 80 \n | | \n 34 o E [travel agency] \n | \n | \n x 82 \n [the slums] D ",r.a[o.a.Ishima].asciiArt="\n o 59 \n o o | \n [storm tech.] | | G [world stock exchange] \n | | 28 | \n 23 o--C------o--------+----x----o | \n / / 25 | 27 \\ x 57 \n / / | \\ | \n / / | \\ | \n o 22 o | \\| 29/56 \n | | o \n | [hospital] D / \\ 3 2 1 \n o | / \\ o-------x------o \n / o / \\ / \n 48 o / 55 x \\ / \n \\ / / x [glitch] \n \\ / [nova medical] / 4/30 \\ \n 49 x A \\ H \n / \\ / \\ \n / \\ [travel agency] F o 31 \n / \\ 51 / \n / o----B------x-----o \n o 50 52 \n [omega soft.] \n [the slums] E ",r.a[o.a.NewTokyo].asciiArt="\n \n \n o \n \\ \n [arcade] E [defcomm] \n \\ \n o--x---A--x--o [travel agency] \n 7 8 10 H \n [vitalife] o 12 [global pharmaceuticals] \n | \n o--D-x----x-------x-C-+--------x--x-B-x---x-o \n 21 22 23 \\ 24 25 26 27 \n \\ \n [noodle bar] x 14 \n \\ \n \\ \n [hospital] o 15 [world stock exchange] \n | \n o--x--F--x-----x-----x---+---x----x--I--x-o \n | \n | \n o 17 \n \n \n \n G [the slums] \n ",r.a[o.a.Sector12].asciiArt="\n 78 o 97 \n o [icarus microsystems] / \n N [powerhouse gym] o I \n 1 | | / \n o-----+---x----o 4 A [alpha ent.] o-------o / \n | 3 \\ | \\ / \n | \\ | [iron gym] x 95 \n (79) x \\ | / \\ \n | o-E----+----x----J--o 10 / o----T--o \n | | 8 \\ 94 x \n 80 x [city hall] | x 11 / [world stock exchange]\n | | \\ / \n | C [cia] \\ / \n Q [hospital] | F P [universal energy] \n | o [deltaone] \\ / \n | 35 o---------x 13/92/36 \n L [megacorp] 33 / / \\ \n | o------------o 34 / \\ \n (29) | / [carmichael sec.] D \\ \n o-----+-----x------o / O [rothman university] \n | 31 32 [nsa] M \n | / \n B [blade industries] H \n | / [four sigma] \n | [joe's guns] / \n | / \n 85 o--G--------K--------S-------o 88 [the slums] R \n \n [foodnstuff] [travel agency] ",r.a[o.a.Volhaven].asciiArt="\n [omnia cybersystems] \n 17 66 68 \n o o------G-------o \n \\ / \\ \n \\ o 65 o 69 \n [syscore sec.] H | | \n \\ | | [millenium fitness gym] \n \\ | 21 22 23 24 | 26 \n o----+--x--x----x---x---+-----x-------D-----o \n 19 | | 28 \n | F [omnitek inc.] \n [hospital] J 63 o \n | / 72 \n 3 | 5 6 / 9 \n o--------+----x-----x----+----------M-------o \n / | | \n / 61 x [helios labs] B [world stock exchange] \n [travel agency] L | | \n / | o \n / E [nwo] / 75 \n / [computek] | / \n / A-------o------I-----o \n 1 o | | \n | [zb] o 77 \n [lexocorp] C \n | \n o \n 57 \n \n \n [the slums] K ";for(const t of s.a){const e=c(t),n=e.city;if(null===n)for(const t of Object.keys(r.a))r.a[t].addLocation(e.name);else r.a[n].addLocation(e.name)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return f}));var a=n(0),r=n.n(a),i=n(7),o=n(4),s=n(16);class l{constructor(t,e,n,a="",i=r.a.createElement(r.a.Fragment,null)){this.number=t,this.difficulty=e,this.name=n,this.desc=a,this.info=i}}const c={};function f(t){null==t.bitNodeN&&(t.bitNodeN=1);for(const t of Object.keys(i.a))i.a.hasOwnProperty(t)&&(i.a[t]=1);switch(i.a.StaneksGiftExtraSize=0,t.bitNodeN){case 1:break;case 2:i.a.HackingLevelMultiplier=.8,i.a.ServerGrowthRate=.8,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.4,i.a.CrimeMoney=3,i.a.InfiltrationMoney=3,i.a.FactionWorkRepGain=.5,i.a.FactionPassiveRepGain=0,i.a.StaneksGiftPowerMultiplier=2,i.a.StaneksGiftExtraSize=-6,i.a.PurchasedServerSoftcap=1.3,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=5;break;case 3:i.a.HackingLevelMultiplier=.8,i.a.RepToDonateToFaction=.5,i.a.AugmentationRepCost=3,i.a.AugmentationMoneyCost=3,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.2,i.a.ServerGrowthRate=.2,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.25,i.a.CrimeMoney=.25,i.a.HacknetNodeMoney=.25,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=2,i.a.StaneksGiftPowerMultiplier=.75,i.a.StaneksGiftExtraSize=-2,i.a.PurchasedServerSoftcap=1.3,i.a.GangSoftcap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.5;break;case 4:i.a.ServerMaxMoney=.15,i.a.ServerStartingMoney=.75,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.1,i.a.CrimeMoney=.2,i.a.HacknetNodeMoney=.05,i.a.CompanyWorkExpGain=.5,i.a.ClassGymExpGain=.5,i.a.FactionWorkExpGain=.5,i.a.HackExpGain=.4,i.a.CrimeExpGain=.5,i.a.FactionWorkRepGain=.75,i.a.StaneksGiftPowerMultiplier=1.5,i.a.StaneksGiftExtraSize=0,i.a.PurchasedServerSoftcap=1.2,i.a.WorldDaemonDifficulty=3,i.a.GangUniqueAugs=.5;break;case 5:i.a.ServerMaxMoney=2,i.a.ServerStartingSecurity=2,i.a.ServerStartingMoney=.5,i.a.ScriptHackMoney=.15,i.a.HacknetNodeMoney=.2,i.a.CrimeMoney=.5,i.a.InfiltrationRep=1.5,i.a.InfiltrationMoney=1.5,i.a.AugmentationMoneyCost=2,i.a.HackExpGain=.5,i.a.CorporationValuation=.5,i.a.StaneksGiftPowerMultiplier=1.3,i.a.StaneksGiftExtraSize=0,i.a.PurchasedServerSoftcap=1.2,i.a.WorldDaemonDifficulty=1.5,i.a.GangUniqueAugs=.5;break;case 6:i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.75,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.HackExpGain=.25,i.a.DaedalusAugsRequirement=1.166,i.a.PurchasedServerSoftcap=2,i.a.StaneksGiftPowerMultiplier=.5,i.a.StaneksGiftExtraSize=2,i.a.GangSoftcap=.7,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.2;break;case 7:i.a.BladeburnerRank=.6,i.a.BladeburnerSkillCost=2,i.a.AugmentationMoneyCost=3,i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.5,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.HackExpGain=.25,i.a.FourSigmaMarketDataCost=2,i.a.FourSigmaMarketDataApiCost=2,i.a.DaedalusAugsRequirement=1.166,i.a.PurchasedServerSoftcap=2,i.a.StaneksGiftPowerMultiplier=.9,i.a.StaneksGiftExtraSize=-1,i.a.GangSoftcap=.7,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.2;break;case 8:i.a.ScriptHackMoney=.3,i.a.ScriptHackMoneyGain=0,i.a.ManualHackMoney=0,i.a.CompanyWorkMoney=0,i.a.CrimeMoney=0,i.a.HacknetNodeMoney=0,i.a.InfiltrationMoney=0,i.a.RepToDonateToFaction=0,i.a.CorporationValuation=0,i.a.CodingContractMoney=0,i.a.StaneksGiftExtraSize=-7,i.a.PurchasedServerSoftcap=4,i.a.GangSoftcap=0,i.a.CorporationSoftCap=0,i.a.GangUniqueAugs=0;break;case 9:i.a.HackingLevelMultiplier=.5,i.a.StrengthLevelMultiplier=.45,i.a.DefenseLevelMultiplier=.45,i.a.DexterityLevelMultiplier=.45,i.a.AgilityLevelMultiplier=.45,i.a.CharismaLevelMultiplier=.45,i.a.PurchasedServerLimit=0,i.a.HomeComputerRamCost=5,i.a.CrimeMoney=.5,i.a.ScriptHackMoney=.1,i.a.HackExpGain=.05,i.a.ServerStartingMoney=.1,i.a.ServerMaxMoney=.1,i.a.ServerStartingSecurity=2.5,i.a.CorporationValuation=.5,i.a.FourSigmaMarketDataCost=5,i.a.FourSigmaMarketDataApiCost=4,i.a.BladeburnerRank=.9,i.a.BladeburnerSkillCost=1.2,i.a.StaneksGiftPowerMultiplier=.5,i.a.StaneksGiftExtraSize=2,i.a.GangSoftcap=.8,i.a.CorporationSoftCap=.7,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.25;break;case 10:i.a.HackingLevelMultiplier=.35,i.a.StrengthLevelMultiplier=.4,i.a.DefenseLevelMultiplier=.4,i.a.DexterityLevelMultiplier=.4,i.a.AgilityLevelMultiplier=.4,i.a.CharismaLevelMultiplier=.4,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.5,i.a.HacknetNodeMoney=.5,i.a.ManualHackMoney=.5,i.a.ScriptHackMoney=.5,i.a.CodingContractMoney=.5,i.a.InfiltrationMoney=.5,i.a.CorporationValuation=.5,i.a.AugmentationMoneyCost=5,i.a.AugmentationRepCost=2,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=5,i.a.PurchasedServerLimit=.6,i.a.PurchasedServerMaxRam=.5,i.a.BladeburnerRank=.8,i.a.StaneksGiftPowerMultiplier=.75,i.a.StaneksGiftExtraSize=-3,i.a.PurchasedServerSoftcap=1.1,i.a.GangSoftcap=.9,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.25;break;case 11:i.a.HackingLevelMultiplier=.6,i.a.HackExpGain=.5,i.a.ServerMaxMoney=.1,i.a.ServerStartingMoney=.1,i.a.ServerGrowthRate=.2,i.a.ServerWeakenRate=2,i.a.CrimeMoney=3,i.a.CompanyWorkMoney=.5,i.a.HacknetNodeMoney=.1,i.a.AugmentationMoneyCost=2,i.a.InfiltrationMoney=2.5,i.a.InfiltrationRep=2.5,i.a.CorporationValuation=.1,i.a.CodingContractMoney=.25,i.a.FourSigmaMarketDataCost=4,i.a.FourSigmaMarketDataApiCost=4,i.a.PurchasedServerSoftcap=2,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=1.5,i.a.GangUniqueAugs=.75;break;case 12:{let e=0;for(let n=0;nu())return 1/0;const n=Math.max(0,Math.log(e)/Math.log(2)-6);return e*o.a.BaseCostFor1GBOfRamServer*i.a.PurchasedServerCost*Math.pow(i.a.PurchasedServerSoftcap,n)}function f(){return Math.round(o.a.PurchasedServerLimit*i.a.PurchasedServerLimit)}function u(){const t=Math.round(o.a.PurchasedServerMaxRam*i.a.PurchasedServerMaxRam);return 1<<31-Math.clz32(t)}function m(t,e,n,i){if(!i.canAfford(n))return void Object(s.a)("You don't have enough money to purchase this server!");if(i.purchasedServers.length>=f())return void Object(s.a)("You have reached the maximum limit of "+f()+" servers. You cannot purchase any more. You can delete some of your purchased servers using the deleteServer() Netscript function in a script");if(""==t)return void Object(s.a)("You must enter a hostname for your new server!");const o=Object(r.f)({adminRights:!0,hostname:t,ip:Object(a.e)(),isConnectedTo:!1,maxRam:e,organizationName:"",purchasedByPlayer:!0});Object(a.a)(o),i.purchasedServers.push(o.hostname);const l=i.getHomeComputer();l.serversOnNetwork.push(o.hostname),o.serversOnNetwork.push(l.hostname),i.loseMoney(n,"servers"),Object(s.a)("Server successfully purchased with hostname "+o.hostname)}function h(t){const e=t.getUpgradeHomeRamCost();if(!t.canAfford(e))return void Object(s.a)("You do not have enough money to purchase additional RAM for your home computer");const n=t.getHomeComputer();n.maxRam>=o.a.HomeComputerMaxRam?Object(s.a)("You cannot upgrade your home computer RAM because it is at its maximum possible value"):(n.maxRam*=2,t.loseMoney(e,"servers"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n(15),r=n(24),i=n(81);class o{get filename(){return this.fn}set filename(t){this.fn=t}constructor(t="",e=""){this.fn=(t.endsWith(".txt")?t:t+".txt").replace(/\s+/g,""),this.text=e}append(t){this.text+=t}download(){const t=this.fn,e=new Blob([this.text],{type:"text/plain"}),n=window.navigator;if(n.msSaveOrOpenBlob)n.msSaveOrOpenBlob(e,t);else{const t=document.createElement("a"),n=URL.createObjectURL(e);t.href=n,t.download=this.fn,document.body.appendChild(t),t.click(),setTimeout(()=>{document.body.removeChild(t),window.URL.revokeObjectURL(n)},0)}}read(){return this.text}show(){Object(a.a)(`${this.fn}

${this.text}`)}toJSON(){return Object(r.b)("TextFile",this)}write(t){this.text=t}static fromJSON(t){return Object(r.a)(o,t.data)}}function s(t,e){let n=t.endsWith(".txt")?t:t+".txt";Object(i.h)(n)&&(n=Object(i.k)(n));for(const t of e.textFiles)if(t.fn===n)return t;return null}function l(t,e,n){if(null!==s(t,n))return void console.error(`A file named "${t}" already exists on server ${n.hostname}.`);const a=new o(t,e);return n.textFiles.push(a),a}r.c.constructors.TextFile=o},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(244),r=n(136);const i={};i[r.a.BladesIntuition]=new a.a({name:r.a.BladesIntuition,desc:"Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%",baseCost:3,costInc:2.1,successChanceAll:3}),i[r.a.Cloak]=new a.a({name:r.a.Cloak,desc:"Each level of this skill increases your success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",baseCost:2,costInc:1.1,successChanceStealth:5.5}),i[r.a.ShortCircuit]=new a.a({name:r.a.ShortCircuit,desc:"Each level of this skill increases your success chance in Contracts, Operations, and BlackOps that involve retirement by 5.5%",baseCost:2,costInc:2.1,successChanceKill:5.5}),i[r.a.DigitalObserver]=new a.a({name:r.a.DigitalObserver,desc:"Each level of this skill increases your success chance in all Operations and BlackOps by 4%",baseCost:2,costInc:2.1,successChanceOperation:4}),i[r.a.Tracer]=new a.a({name:r.a.Tracer,desc:"Each level of this skill increases your success chance in all Contracts by 4%",baseCost:2,costInc:2.1,successChanceContract:4}),i[r.a.Overclock]=new a.a({name:r.a.Overclock,desc:"Each level of this skill decreases the time it takes to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 90)",baseCost:3,costInc:1.4,maxLvl:90,actionTime:1}),i[r.a.Reaper]=new a.a({name:r.a.Reaper,desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 2%",baseCost:2,costInc:2.1,effStr:2,effDef:2,effDex:2,effAgi:2}),i[r.a.EvasiveSystem]=new a.a({name:r.a.EvasiveSystem,desc:"Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%",baseCost:2,costInc:2.1,effDex:4,effAgi:4}),i[r.a.Datamancer]=new a.a({name:r.a.Datamancer,desc:"Each level of this skill increases your effectiveness in synthoid population analysis and investigation by 5%. This affects all actions that can potentially increase the accuracy of your synthoid population/community estimates.",baseCost:3,costInc:1,successChanceEstimate:5}),i[r.a.CybersEdge]=new a.a({name:r.a.CybersEdge,desc:"Each level of this skill increases your max stamina by 2%",baseCost:1,costInc:3,stamina:2}),i[r.a.HandsOfMidas]=new a.a({name:r.a.HandsOfMidas,desc:"Each level of this skill increases the amount of money you receive from Contracts by 10%",baseCost:2,costInc:2.5,money:10}),i[r.a.Hyperdrive]=new a.a({name:r.a.Hyperdrive,desc:"Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 10%",baseCost:1,costInc:2.5,expGain:10})},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(179),r=n(1009);const i={};a.b.forEach(t=>{i[t.name]=new r.a(t.name,t.cost,t.upgType,t.mults)})},function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(148),r=n(76),i=n(9);function o(t,e,n){if(isNaN(e)||e<=0||!(t instanceof a.a))return null;e=Math.min(e,t.maxShares);return n===r.a.Long?e*t.getAskPrice()+i.a.StockMarketCommission:e*t.getBidPrice()+i.a.StockMarketCommission}function s(t,e,n){if(isNaN(e)||e<=0||!(t instanceof a.a))return null;e=Math.min(e,t.maxShares);if(n===r.a.Long)return e*t.getBidPrice()-i.a.StockMarketCommission;return e*t.playerAvgShortPx+((t.playerAvgShortPx-t.getAskPrice())*e-i.a.StockMarketCommission)}function l(t,e){if(isNaN(e)||e<=0||!(t instanceof a.a))return;e=Math.min(e,t.maxShares);const n=t.shareTxUntilMovement;if(e<=n)return t.shareTxUntilMovement-=e,void(t.shareTxUntilMovement<=0&&(t.shareTxUntilMovement=t.shareTxForMovement,t.influenceForecast(.006),t.influenceForecastForecast(t.mv/100*.006)));const r=e-n;let i=1+Math.ceil(r/t.shareTxForMovement);t.shareTxUntilMovement=t.shareTxForMovement-(e-t.shareTxUntilMovement)%t.shareTxForMovement,(t.shareTxUntilMovement===t.shareTxForMovement||t.shareTxUntilMovement<=0)&&(++i,t.shareTxUntilMovement=t.shareTxForMovement);const o=.006*(i-1),s=o*(t.mv/100);t.influenceForecast(o),t.influenceForecastForecast(s)}function c(t,e,n){if(!(t instanceof a.a))return 0;const o=e===r.a.Long,s=n-i.a.StockMarketCommission,l=o?t.getAskPrice():t.getBidPrice();return Math.floor(s/l)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return l}));var a=n(7),r=n(9);function i(){return r.a.MarketData4SCost*a.a.FourSigmaMarketDataCost}function o(){return r.a.MarketDataTixApi4SCost*a.a.FourSigmaMarketDataApiCost}function s(){return r.a.WSEAccountCost}function l(){return r.a.TIXAPICost}},,,,function(t,e,n){"use strict";n.d(e,"c",(function(){return f})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return m}));var a=n(9),r=n(2),i=n(46),o=n(133),s=n(25),l=n(5),c=n(317);function f(t){const e=((new Date).getTime()-r.a.lastUpdate)/1e3;let n=t.onlineRunningTime/14400;n>=1&&(n=1);for(const n of Object.keys(t.dataMap))if(t.dataMap.hasOwnProperty(n)){if(0==t.dataMap[n][2]||null==t.dataMap[n][2])continue;const a=Object(s.d)(n);if(null==a)continue;const c=Math.round(.5*t.dataMap[n][2]/t.onlineRunningTime*e);t.log(`Called on ${a.hostname} ${c} times while offline`);const f=Object(s.d)(t.server);if(null===f)throw new Error("getServer of null key?");if(!(a instanceof i.a))throw new Error("trying to grow a non-normal server");const u=Object(o.e)(a,c,r.a,f.cpuCores);t.log(`'${a.hostname}' grown by ${l.a.format(100*u-100,"0.000000%")} while offline`)}const c=n*(t.onlineExpGained/t.onlineRunningTime)*e;r.a.gainHackingExp(c),t.offlineRunningTime+=e,t.offlineExpGained+=c;for(const n of Object.keys(t.dataMap))if(t.dataMap.hasOwnProperty(n)){if(0==t.dataMap[n][3]||null==t.dataMap[n][3])continue;const r=Object(s.d)(n);if(null==r)continue;if(!(r instanceof i.a))throw new Error("trying to weaken a non-normal server");const o=Object(s.d)(t.server);if(null===o)throw new Error("getServer of null key?");const l=Math.round(.5*t.dataMap[n][3]/t.onlineRunningTime*e);t.log(`Called weaken() on ${r.hostname} ${l} times while offline`);const c=1+(o.cpuCores-1)/16;r.weaken(a.a.ServerWeakenAmount*l*c)}}function u(t,e,n){for(let a=0;aObject(o.a)({money:{color:t.colors.money}}));function l({hashes:t}){const e=s();return a.createElement("span",{className:e.money},"number"==typeof t?r.a.formatHashes(t):t)}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return D}));var a=n(24),r=n(257),i=n(42),o=n(531),s=n(269),l=n(138),c=n(343),f=n(642),u=n(255),m=n(23),h=n(222),d=n(244),p=n(419),g=n(26),y=n(643),b=n(267),E=n(33),v=n(62),k=n(5),_=n(7),w=n(301),S=n(204),C=n(28),x=n(394),L=n(15),O=n(8),M=n(56),T=n(14),A=n(1003),R=n(106),N=n(4),P=n(59),I=n(27);function F(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class D{constructor(t){F(this,"numHosp",0),F(this,"moneyLost",0),F(this,"rank",0),F(this,"maxRank",0),F(this,"skillPoints",0),F(this,"totalSkillPoints",0),F(this,"teamSize",0),F(this,"teamLost",0),F(this,"hpLost",0),F(this,"storedCycles",0),F(this,"randomEventCounter",Object(E.a)(240,600)),F(this,"actionTimeToComplete",0),F(this,"actionTimeCurrent",0),F(this,"actionTimeOverflow",0),F(this,"action",new r.a({type:i.a.Idle})),F(this,"cities",{}),F(this,"city",v.a.CityNames[2]),F(this,"skills",{}),F(this,"skillMultipliers",{}),F(this,"staminaBonus",0),F(this,"maxStamina",0),F(this,"stamina",0),F(this,"contracts",{}),F(this,"operations",{}),F(this,"blackops",{}),F(this,"logging",{general:!0,contracts:!0,ops:!0,blackops:!0,events:!0}),F(this,"automateEnabled",!1),F(this,"automateActionHigh",new r.a({type:i.a.Idle})),F(this,"automateThreshHigh",0),F(this,"automateActionLow",new r.a({type:i.a.Idle})),F(this,"automateThreshLow",0),F(this,"consoleHistory",[]),F(this,"consoleLogs",["Bladeburner Console","Type 'help' to see console commands"]);for(let t=0;tthis.rank)return{error:"Tried to start a Black Operation without the rank requirement"};const n=[];for(const t of Object.keys(s.a))s.a.hasOwnProperty(t)&&n.push(t);n.sort((function(t,e){return s.a[t].reqdRank-s.a[e].reqdRank}));const a=n.indexOf(t.name);return-1===a?{error:`Invalid Black Op: '${name}'`}:a>0&&null==this.blackops[n[a-1]]?{error:`Preceding Black Op must be completed before starting '${t.name}'.`}:{isAvailable:!0,action:e}}startAction(t,e){if(null!=e)switch(this.action=e,this.actionTimeCurrent=0,e.type){case i.a.Idle:this.actionTimeToComplete=0;break;case i.a.Contract:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Contract Object for: "+e.name);if(t.count<1)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.Operation:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);if(t.count<1)return this.resetAction();if("Raid"===e.name&&0===this.getCurrentCity().comms)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const t=this.canAttemptBlackOp(e);if(!t.isAvailable){this.resetAction(),this.log("Error: "+t.error);break}if(void 0===t.action)throw new Error("action should not be null");this.actionTimeToComplete=t.action.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.Recruitment:this.actionTimeToComplete=this.getRecruitmentTime(t);break;case i.a.Training:case i.a.FieldAnalysis:case i.a["Field Analysis"]:this.actionTimeToComplete=30;break;case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:this.actionTimeToComplete=60;break;default:throw new Error("Invalid Action Type in startAction(Bladeburner,player, ): "+e.type)}}upgradeSkill(t){const e=t.name;if(this.skills[e]?++this.skills[e]:this.skills[e]=1,isNaN(this.skills[e])||this.skills[e]<0)throw new Error("Level of Skill "+e+" is invalid: "+this.skills[e]);this.updateSkillMultipliers()}executeConsoleCommands(t,e){try{this.consoleHistory[this.consoleHistory.length-1]!=e&&(this.consoleHistory.push(e),this.consoleHistory.length>50&&this.consoleHistory.splice(0,1));const n=e.split(";");for(let e=0;e100&&this.consoleLogs.shift())}log(t){this.postToConsole(`[${Object(A.a)()}] ${t}`)}resetAction(){this.action=new r.a({type:i.a.Idle})}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const t=C.a[N.a.Bladeburners];this.rank>=v.a.RankNeededForFaction&&Object(R.e)(t)}storeCycles(t=0){this.storedCycles+=t}getActionIdFromTypeAndName(t="",e=""){if(""===t||""===e)return null;const n=new r.a,a=t.toLowerCase().trim(),o=e.toLowerCase().trim();switch(a){case"contract":case"contracts":case"contr":return n.type=i.a.Contract,this.contracts.hasOwnProperty(e)?(n.name=e,n):null;case"operation":case"operations":case"op":case"ops":return n.type=i.a.Operation,this.operations.hasOwnProperty(e)?(n.name=e,n):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return n.type=i.a.BlackOp,s.a.hasOwnProperty(e)?(n.name=e,n):null;case"general":case"general action":case"gen":break;default:return null}if(a.startsWith("gen")){switch(o){case"training":n.type=i.a.Training,n.name="Training";break;case"recruitment":case"recruit":n.type=i.a.Recruitment,n.name="Recruitment";break;case"field analysis":case"fieldanalysis":n.type=i.a["Field Analysis"],n.name="Field Analysis";break;case"diplomacy":n.type=i.a.Diplomacy,n.name="Diplomacy";break;case"hyperbolic regeneration chamber":n.type=i.a["Hyperbolic Regeneration Chamber"],n.name="Hyperbolic Regeneration Chamber";break;case"incite violence":n.type=i.a["Incite Violence"],n.name="Incite Violence";break;default:return null}return n}return null}executeStartConsoleCommand(t,e){if(3!==e.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const n=e[2];switch(e[1].toLowerCase()){case"general":case"gen":null!=u.a[n]?(this.action.type=i.a[n],this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid action name specified: "+e[2]);break;case"contract":case"contracts":null!=this.contracts[n]?(this.action.type=i.a.Contract,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid contract name specified: "+e[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[n]?(this.action.type=i.a.Operation,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid Operation name specified: "+e[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=s.a[n]?(this.action.type=i.a.BlackOperation,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid BlackOp name specified: "+e[2]);break;default:this.postToConsole("Invalid action/event type specified: "+e[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(t){switch(t.length){case 1:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 2:if("list"===t[1].toLowerCase()){this.postToConsole("Skills: ");const t=Object.keys(h.a);for(let e=0;e=n.maxLvl?this.postToConsole(`This skill ${n.name} is already at max level (${t}/${n.maxLvl}).`):this.skillPoints>=a?(this.skillPoints-=a,this.upgradeSkill(n),this.log(n.name+" upgraded to Level "+this.skills[e])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+Object(m.d)(a,0))}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break}default:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info")}}executeLogConsoleCommand(t){if(t.length<3)return this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]"),void this.postToConsole("Use 'help log' for more details and examples");let e=!0;switch(t[1].toLowerCase().includes("d")&&(e=!1),t[2].toLowerCase()){case"general":case"gen":this.logging.general=e,this.log("Logging "+(e?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=e,this.log("Logging "+(e?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=e,this.log("Logging "+(e?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=e,this.log("Logging "+(e?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=e,this.log("Logging "+(e?"enabled":"disabled")+" for events");break;case"all":this.logging.general=e,this.logging.contracts=e,this.logging.ops=e,this.logging.blackops=e,this.logging.events=e,this.log("Logging "+(e?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+t[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(t){if(1===t.length)for(const t of y.a.helpList)this.postToConsole(t);else for(let e=1;e0&&(i*=Object(E.a)(2,4),--a.comms,++n.comms);const o=Math.round(a.pop*i);a.pop-=o,n.pop+=o}triggerPotentialMigration(t,e){(null==e||isNaN(e))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),e>1&&(e/=100),Math.random()=1){let a;a=t?Math.ceil(n/2):Math.floor(n);const r=Object(E.a)(0,a);this.teamSize-=r,this.teamLost+=r,this.logging.ops&&r>0&&this.log("Lost "+Object(m.d)(r,0)+" team members during this "+e.name)}const a=this.getCurrentCity();switch(e.name){case"Investigation":t?a.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":t?a.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":t&&a.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByCount(.1);break;case"Raid":if(t)a.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--a.comms;else{const t=Object(E.a)(-10,-5)/10;a.changePopulationByPercentage(t,{nonZero:!0,changeEstEqually:!1})}a.changeChaosByPercentage(Object(E.a)(1,5));break;case"Stealth Retirement Operation":t&&a.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByPercentage(Object(E.a)(-3,-1));break;case"Assassination":t&&a.changePopulationByCount(-1,{estChange:-1,estOffset:0}),a.changeChaosByPercentage(Object(E.a)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(t){switch(t.type){case i.a.Contract:return this.contracts[t.name];case i.a.Operation:return this.operations[t.name];case i.a.BlackOp:case i.a.BlackOperation:return s.a[t.name];case i.a.Training:return u.a.Training;case i.a["Field Analysis"]:return u.a["Field Analysis"];case i.a.Recruitment:return u.a.Recruitment;case i.a.Diplomacy:return u.a.Diplomacy;case i.a["Hyperbolic Regeneration Chamber"]:return u.a["Hyperbolic Regeneration Chamber"];case i.a["Incite Violence"]:return u.a["Incite Violence"];default:return null}}completeContract(t){if(this.action.type!==i.a.Contract)throw new Error("completeContract() called even though current action is not a Contract");const e=this.getCurrentCity();if(t)switch(this.action.name){case"Tracking":e.improvePopulationEstimateByCount(Object(E.a)(100,1e3));break;case"Bounty Hunter":e.changePopulationByCount(-1,{estChange:-1,estOffset:0}),e.changeChaosByCount(.02);break;case"Retirement":e.changePopulationByCount(-1,{estChange:-1,estOffset:0}),e.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+this.action.name)}}completeAction(t,e){switch(this.action.type){case i.a.Contract:case i.a.Operation:try{const t=this.action.type===i.a.Operation,n=this.getActionObject(this.action);if(null==n)throw new Error("Failed to get Contract/Operation Object for: "+this.action.name);const a=n.getDifficulty(),r=Math.pow(a,v.a.DiffMultExponentialFactor)+a/v.a.DiffMultLinearFactor,o=Math.pow(n.rewardFac,n.level-1);if(this.stamina-=v.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0),n.attempt(this)){this.gainActionStats(e,n,!0),++n.successes,--n.count;let a=0;if(t||(a=v.a.ContractBaseMoneyGain*o*this.skillMultipliers.money,e.gainMoney(a,"bladeburner")),t?n.setMaxLevel(v.a.OperationSuccessesPerLevel):n.setMaxLevel(v.a.ContractSuccessesPerLevel),n.rankGain){const r=Object(w.a)(n.rankGain*o*_.a.BladeburnerRank,10);this.changeRank(e,r),t&&this.logging.ops?this.log(n.name+" successfully completed! Gained "+Object(m.d)(r,3)+" rank"):!t&&this.logging.contracts&&this.log(n.name+" contract successfully completed! Gained "+Object(m.d)(r,3)+" rank and "+k.a.formatMoney(a))}t?this.completeOperation(!0):this.completeContract(!0)}else{this.gainActionStats(e,n,!1),++n.failures;let a=0,i=0;if(n.rankLoss&&(a=Object(w.a)(n.rankLoss*o,10),this.changeRank(e,-1*a)),n.hpLoss){i=n.hpLoss*r,i=Math.ceil(Object(w.a)(i,10)),this.hpLost+=i;const t=Object(x.a)(e,i);e.takeDamage(i)&&(++this.numHosp,this.moneyLost+=t)}let s="";a>0&&(s+="Lost "+Object(m.d)(a,3)+" rank. "),i>0&&(s+="Took "+Object(m.d)(i,0)+" damage."),t&&this.logging.ops?this.log(n.name+" failed! "+s):!t&&this.logging.contracts&&this.log(n.name+" contract failed! "+s),t?this.completeOperation(!1):this.completeContract(!1)}n.autoLevel&&(n.level=n.maxLevel),this.startAction(e,this.action)}catch(t){Object(b.a)(t)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const n=this.getActionObject(this.action);if(null==n||!(n instanceof l.a))throw new Error("Failed to get BlackOperation Object for: "+this.action.name);const a=n.getDifficulty(),r=Math.pow(a,v.a.DiffMultExponentialFactor)+a/v.a.DiffMultLinearFactor;this.stamina-=v.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0);const i=n.teamCount;let o;if(n.attempt(this)){this.gainActionStats(e,n,!0),n.count=0,this.blackops[n.name]=!0;let a=0;if(n.rankGain&&(a=Object(w.a)(n.rankGain*_.a.BladeburnerRank,10),this.changeRank(e,a)),o=Math.ceil(i/2),n.name===P.a.OperationDaedalus)return this.resetAction(),t.toBitVerse(!1,!1);this.logging.blackops&&this.log(n.name+" successful! Gained "+Object(m.d)(a,1)+" rank")}else{this.gainActionStats(e,n,!1);let t=0,a=0;if(n.rankLoss&&(t=Object(w.a)(n.rankLoss,10),this.changeRank(e,-1*t)),n.hpLoss){a=n.hpLoss*r,a=Math.ceil(Object(w.a)(a,10));const t=Object(x.a)(e,a);e.takeDamage(a)&&(++this.numHosp,this.moneyLost+=t)}o=Math.floor(i),this.logging.blackops&&this.log(n.name+" failed! Lost "+Object(m.d)(t,1)+" rank and took "+Object(m.d)(a,0)+" damage")}if(this.resetAction(),i>=1){const t=Object(E.a)(1,o);this.teamSize-=t,this.teamLost+=t,this.logging.blackops&&this.log("You lost "+Object(m.d)(t,0)+" team members during "+n.name)}}catch(t){Object(b.a)(t)}break;case i.a.Training:{this.stamina-=.5*v.a.BaseStaminaLoss;const t=30*e.strength_exp_mult,n=30*e.defense_exp_mult,a=30*e.dexterity_exp_mult,r=30*e.agility_exp_mult,i=.04*this.skillMultipliers.stamina;e.gainStrengthExp(t),e.gainDefenseExp(n),e.gainDexterityExp(a),e.gainAgilityExp(r),this.staminaBonus+=i,this.logging.general&&this.log("Training completed. Gained: "+Object(m.d)(t,1)+" str exp, "+Object(m.d)(n,1)+" def exp, "+Object(m.d)(a,1)+" dex exp, "+Object(m.d)(r,1)+" agi exp, "+Object(m.d)(i,3)+" max stamina"),this.startAction(e,this.action);break}case i.a.FieldAnalysis:case i.a["Field Analysis"]:{let t=.04*Math.pow(e.hacking,.3)+.04*Math.pow(e.intelligence,.9)+.02*Math.pow(e.charisma,.3);if(t*=e.bladeburner_analysis_mult,isNaN(t)||t<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const n=20*e.hacking_exp_mult,a=20*e.charisma_exp_mult,r=.1*_.a.BladeburnerRank;e.gainHackingExp(n),e.gainIntelligenceExp(v.a.BaseIntGain),e.gainCharismaExp(a),this.changeRank(e,r),this.getCurrentCity().improvePopulationEstimateByPercentage(t*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log(`Field analysis completed. Gained ${Object(m.d)(r,2)} rank, `+Object(m.d)(n,1)+" hacking exp, and "+Object(m.d)(a,1)+" charisma exp"),this.startAction(e,this.action);break}case i.a.Recruitment:{const t=this.getRecruitmentSuccessChance(e);if(Math.random()=a){const t=Math.floor((this.maxRank-a)/v.a.RanksPerSkillPoint+1);this.skillPoints+=t,this.totalSkillPoints+=t}}processAction(t,e,n){if(this.action.type!==i.a.Idle){if(this.actionTimeToComplete<=0)throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);if(!(this.action instanceof r.a))throw new Error("Bladeburner.action is not an ActionIdentifier Object");return this.actionTimeCurrent+=n+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete?(this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete,this.completeAction(t,e)):void 0}}calculateStaminaGainPerSecond(t){const e=t.agility*this.skillMultipliers.effAgi,n=this.maxStamina/v.a.MaxStaminaToGainFactor;return(v.a.StaminaGainPerSecond+n)*Math.pow(e,.17)*(this.skillMultipliers.stamina*t.bladeburner_stamina_gain_mult)}calculateMaxStamina(t){const e=t.agility*this.skillMultipliers.effAgi,n=(Math.pow(e,.8)+this.staminaBonus)*this.skillMultipliers.stamina*t.bladeburner_max_stamina_mult;if(this.maxStamina!==n){const t=this.maxStamina;this.maxStamina=n,this.stamina=this.maxStamina*this.stamina/t}if(isNaN(n))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new f.a({name:"Tracking",baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,rankGain:.3,hpLoss:.5,count:Object(E.a)(25,150),weights:{hack:0,str:.05,def:.05,dex:.35,agi:.35,cha:.1,int:.05},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.9,int:1},isStealth:!0}),this.contracts["Bounty Hunter"]=new f.a({name:"Bounty Hunter",baseDifficulty:250,difficultyFac:1.04,rewardFac:1.085,rankGain:.9,hpLoss:1,count:Object(E.a)(5,150),weights:{hack:0,str:.15,def:.15,dex:.25,agi:.25,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.contracts.Retirement=new f.a({name:"Retirement",baseDifficulty:200,difficultyFac:1.03,rewardFac:1.065,rankGain:.6,hpLoss:1,count:Object(E.a)(5,150),weights:{hack:0,str:.2,def:.2,dex:.2,agi:.2,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.operations.Investigation=new c.a({name:"Investigation",baseDifficulty:400,difficultyFac:1.03,rewardFac:1.07,reqdRank:25,rankGain:2.2,rankLoss:.2,count:Object(E.a)(1,100),weights:{hack:.25,str:.05,def:.05,dex:.2,agi:.1,cha:.25,int:.1},decays:{hack:.85,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Undercover Operation"]=new c.a({name:"Undercover Operation",baseDifficulty:500,difficultyFac:1.04,rewardFac:1.09,reqdRank:100,rankGain:4.4,rankLoss:.4,hpLoss:2,count:Object(E.a)(1,100),weights:{hack:.2,str:.05,def:.05,dex:.2,agi:.2,cha:.2,int:.1},decays:{hack:.8,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Sting Operation"]=new c.a({name:"Sting Operation",baseDifficulty:650,difficultyFac:1.04,rewardFac:1.095,reqdRank:500,rankGain:5.5,rankLoss:.5,hpLoss:2.5,count:Object(E.a)(1,150),weights:{hack:.25,str:.05,def:.05,dex:.25,agi:.1,cha:.2,int:.1},decays:{hack:.8,str:.85,def:.85,dex:.85,agi:.85,cha:.7,int:.9},isStealth:!0}),this.operations.Raid=new c.a({name:"Raid",baseDifficulty:800,difficultyFac:1.045,rewardFac:1.1,reqdRank:3e3,rankGain:55,rankLoss:2.5,hpLoss:50,count:Object(E.a)(1,150),weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isKill:!0}),this.operations["Stealth Retirement Operation"]=new c.a({name:"Stealth Retirement Operation",baseDifficulty:1e3,difficultyFac:1.05,rewardFac:1.11,reqdRank:2e4,rankGain:22,rankLoss:2,hpLoss:10,count:Object(E.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isStealth:!0,isKill:!0}),this.operations.Assassination=new c.a({name:"Assassination",baseDifficulty:1500,difficultyFac:1.06,rewardFac:1.14,reqdRank:5e4,rankGain:44,rankLoss:4,hpLoss:5,count:Object(E.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.8},isStealth:!0,isKill:!0})}process(t,e){if(t.isInitialized){if(t.page()!==g.a.BitVerse&&this.blackops.hasOwnProperty(P.a.OperationDaedalus))return t.toBitVerse(!1,!1);if(!1===M.a[T.a.BladesSimulacrum].owned&&e.isWorking){if(this.action.type!==i.a.Idle){let t="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(t+="

Your automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),O.a.SuppressBladeburnerPopup||Object(L.a)(t)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=v.a.CyclesPerSecond){let n=Math.floor(this.storedCycles/v.a.CyclesPerSecond);n=Math.min(n,5),this.storedCycles-=n*v.a.CyclesPerSecond,this.calculateMaxStamina(e),this.stamina+=this.calculateStaminaGainPerSecond(e)*n,this.stamina=Math.min(this.maxStamina,this.stamina);for(const t of Object.values(this.contracts)){const e=o.a[t.name];if(void 0===e)throw new Error(`growth formula for action '${t.name}' is undefined`);t.count+=n*e()/v.a.ActionCountGrowthPeriod}for(const t of Object.values(this.operations)){const e=o.a[t.name];if(void 0===e)throw new Error(`growth formula for action '${t.name}' is undefined`);void 0!==e&&(t.count+=n*e()/v.a.ActionCountGrowthPeriod)}for(const t of v.a.CityNames){const e=this.cities[t];if(!(e instanceof p.a))throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");e.chaos-=1e-4*n,e.chaos=Math.max(0,e.chaos)}this.randomEventCounter-=n,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=Object(E.a)(240,600)),this.processAction(t,e,n),this.automateEnabled&&(this.stamina<=this.automateThreshLow?this.action.name===this.automateActionLow.name&&this.action.type===this.automateActionLow.type||(this.action=new r.a({type:this.automateActionLow.type,name:this.automateActionLow.name}),this.startAction(e,this.action)):this.stamina>=this.automateThreshHigh&&(this.action.name===this.automateActionHigh.name&&this.action.type===this.automateActionHigh.type||(this.action=new r.a({type:this.automateActionHigh.type,name:this.automateActionHigh.name}),this.startAction(e,this.action))))}}}getTypeAndNameFromActionId(t){const e={type:"",name:""},n=Object.keys(i.a);for(let a=0;ar),!1;if(o.type===i.a.BlackOp){const t=this.canAttemptBlackOp(o);if(!t.isAvailable)return a.log("bladeburner.startAction",()=>t.error+""),!1}try{return this.startAction(t,o),a.log("bladeburner.startAction",()=>`Starting bladeburner action with type '${e}' and name '${n}'`),!0}catch(t){return this.resetAction(),a.log("bladeburner.startAction",()=>r),!1}}getActionTimeNetscriptFn(t,e,n,a){const r=`Invalid action: type='${e}' name='${n}'`,o=this.getActionIdFromTypeAndName(e,n);if(null==o)return a.log("bladeburner.getActionTime",()=>r),-1;const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.getActionTime",()=>r),-1;switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return 1e3*s.getActionTime(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:return 3e4;case i.a.Recruitment:return 1e3*this.getRecruitmentTime(t);case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return 6e4;default:return a.log("bladeburner.getActionTime",()=>r),-1}}getActionEstimatedSuccessChanceNetscriptFn(t,e,n,a){const r=`Invalid action: type='${e}' name='${n}'`,o=this.getActionIdFromTypeAndName(e,n);if(null==o)return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1];const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1];switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return s.getEstSuccessChance(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return[1,1];case i.a.Recruitment:{const e=this.getRecruitmentSuccessChance(t);return[e,e]}default:return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1]}}getActionCountRemainingNetscriptFn(t,e,n){const a=`Invalid action: type='${t}' name='${e}'`,r=this.getActionIdFromTypeAndName(t,e);if(null==r)return n.log("bladeburner.getActionCountRemaining",()=>a),-1;const o=this.getActionObject(r);if(null==o)return n.log("bladeburner.getActionCountRemaining",()=>a),-1;switch(r.type){case i.a.Contract:case i.a.Operation:return Math.floor(o.count);case i.a.BlackOp:case i.a.BlackOperation:return null!=this.blackops[e]?0:1;case i.a.Training:case i.a.Recruitment:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return 1/0;default:return n.log("bladeburner.getActionCountRemaining",()=>a),-1}}getSkillLevelNetscriptFn(t,e){return""!==t&&h.a.hasOwnProperty(t)?null==this.skills[t]?0:this.skills[t]:(e.log("bladeburner.getSkillLevel",()=>`Invalid skill: '${t}'`),-1)}getSkillUpgradeCostNetscriptFn(t,e){if(""===t||!h.a.hasOwnProperty(t))return e.log("bladeburner.getSkillUpgradeCost",()=>`Invalid skill: '${t}'`),-1;const n=h.a[t];return null==this.skills[t]?n.calculateCost(0):n.calculateCost(this.skills[t])}upgradeSkillNetscriptFn(t,e){const n=`Invalid skill: '${t}'`;if(!h.a.hasOwnProperty(t))return e.log("bladeburner.upgradeSkill",()=>n),!1;const a=h.a[t];let r=0;this.skills[t]&&!isNaN(this.skills[t])&&(r=this.skills[t]);const i=a.calculateCost(r);return a.maxLvl&&r>=a.maxLvl?(e.log("bladeburner.upgradeSkill",()=>`Skill '${t}' is already maxed.`),!1):this.skillPoints`You do not have enough skill points to upgrade ${t} (You have ${this.skillPoints}, you need ${i})`),!1):(this.skillPoints-=i,this.upgradeSkill(a),e.log("bladeburner.upgradeSkill",()=>`'${t}' upgraded to level ${this.skills[t]}`),!0)}getTeamSizeNetscriptFn(t,e,n){if(""===t&&""===e)return this.teamSize;const a=`Invalid action: type='${t}' name='${e}'`,r=this.getActionIdFromTypeAndName(t,e);if(null==r)return n.log("bladeburner.getTeamSize",()=>a),-1;const o=this.getActionObject(r);return null==o?(n.log("bladeburner.getTeamSize",()=>a),-1):r.type===i.a.Operation||r.type===i.a.BlackOp||r.type===i.a.BlackOperation?o.teamCount:0}setTeamSizeNetscriptFn(t,e,n,a){const r=`Invalid action: type='${t}' name='${e}'`,o=this.getActionIdFromTypeAndName(t,e);if(null==o)return a.log("bladeburner.setTeamSize",()=>r),-1;if(o.type!==i.a.Operation&&o.type!==i.a.BlackOp&&o.type!==i.a.BlackOperation)return a.log("bladeburner.setTeamSize",()=>"Only valid for 'Operations' and 'BlackOps'"),-1;const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.setTeamSize",()=>r),-1;let l=Math.round(n);return isNaN(l)||l<0?(a.log("bladeburner.setTeamSize",()=>"Invalid size: "+n),-1):(this.teamSize`Team size for '${e}' set to ${l}.`),l)}joinBladeburnerFactionNetscriptFn(t){const e=C.a[N.a.Bladeburners];return!!e.isMember||(this.rank>=v.a.RankNeededForFaction?(Object(R.e)(e),t.log("bladeburner.joinBladeburnerFaction",()=>`Joined ${N.a.Bladeburners} faction.`),!0):(t.log("bladeburner.joinBladeburnerFaction",()=>`You do not have the required rank (${this.rank}/${v.a.RankNeededForFaction}).`),!1))}toJSON(){return Object(a.b)("Bladeburner",this)}static fromJSON(t){return Object(a.a)(D,t.data)}}a.c.constructors.Bladeburner=D},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(359),r=n(31),i=n(340),o=n(24);const s={name:"",info:"",companyPositions:{},expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0};class l{constructor(t=s){this.name=t.name,this.info=t.info,this.companyPositions=t.companyPositions,this.expMultiplier=t.expMultiplier,this.salaryMultiplier=t.salaryMultiplier,this.jobStatReqOffset=t.jobStatReqOffset,this.isPlayerEmployed=!1,this.playerReputation=1,this.favor=0,this.isMegacorp=!1,t.isMegacorp&&(this.isMegacorp=!0)}hasPosition(t){return t instanceof a.a?null!=this.companyPositions[t.name]:null!=this.companyPositions[t]}hasAgentPositions(){return null!=this.companyPositions[r.a[0]]}hasBusinessConsultantPositions(){return null!=this.companyPositions[r.c[0]]}hasBusinessPositions(){return null!=this.companyPositions[r.b[0]]}hasEmployeePositions(){return null!=this.companyPositions[r.e[1]]}hasITPositions(){return null!=this.companyPositions[r.d[0]]}hasSecurityPositions(){return null!=this.companyPositions[r.h[2]]}hasSoftwareConsultantPositions(){return null!=this.companyPositions[r.k[0]]}hasSoftwarePositions(){return null!=this.companyPositions[r.j[0]]}hasWaiterPositions(){return null!=this.companyPositions[r.e[0]]}gainFavor(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain()}getFavorGain(){null==this.favor&&(this.favor=0);const t=Math.max(0,Object(i.a)(this.favor))+this.playerReputation;return Object(i.b)(t)-this.favor}toJSON(){return Object(o.b)("Company",this)}static fromJSON(t){return Object(o.a)(l,t.data)}}o.c.constructors.Company=l},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(195),r=n(175),i=n(24),o=n(267);function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class l{constructor(t={}){var e;s(this,"level",1),s(this,"sizeUsed",0),s(this,"smartSupplyEnabled",!1),s(this,"smartSupplyUseLeftovers",{}),s(this,"smartSupplyStore",0),this.loc=t.loc?t.loc:"",this.size=t.size?t.size:0,this.materials={Water:new a.a({name:"Water"}),Energy:new a.a({name:"Energy"}),Food:new a.a({name:"Food"}),Plants:new a.a({name:"Plants"}),Metal:new a.a({name:"Metal"}),Hardware:new a.a({name:"Hardware"}),Chemicals:new a.a({name:"Chemicals"}),Drugs:new a.a({name:"Drugs"}),Robots:new a.a({name:"Robots"}),AICores:new a.a({name:"AI Cores"}),RealEstate:new a.a({name:"Real Estate"})},this.smartSupplyUseLeftovers={Water:!0,Energy:!0,Food:!0,Plants:!0,Metal:!0,Hardware:!0,Chemicals:!0,Drugs:!0,Robots:!0,AICores:!0,RealEstate:!0},t.corp&&t.industry&&this.updateSize(t.corp,t.industry),null!==(e=t.corp)&&void 0!==e&&e.unlockUpgrades[1]&&(this.smartSupplyEnabled=!0)}updateMaterialSizeUsed(){this.sizeUsed=0;for(const t of Object.keys(this.materials)){const e=this.materials[t];r.a.hasOwnProperty(t)&&(this.sizeUsed+=e.qty*r.a[t])}this.sizeUsed>this.size&&console.warn("Warehouse size used greater than capacity, something went wrong")}updateSize(t,e){try{this.size=100*this.level*t.getStorageMultiplier()*e.getStorageMultiplier()}catch(t){Object(o.a)(t)}}toJSON(){return Object(i.b)("Warehouse",this)}static fromJSON(t){return Object(i.a)(l,t.data)}}i.c.constructors.Warehouse=l},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1007),r=n(582);const i={};a.a.forEach(t=>{i[t.name]=new r.a(t.name,t.desc,t.isHacking,t.isCombat,t.params)})},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1014),r=n(1015);const i={};for(const t of r.a)i[(o=t).name]=new a.a(o);var o},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(74),r=n(209);const i=[];class o{constructor(t,e,n,a,r){this.id=t,this.shape=e,this.type=n,this.power=a,this.limit=r}fullAt(t,e,n){if(e<0)return!1;if(e>=this.height(n))return!1;if(t<0)return!1;if(t>=this.width(n))return!1;let[a,r,i,o]=[0,0,1,1];1===n?[a,r,i,o]=[this.width(n)-1,0,-1,1]:2===n?[a,r,i,o]=[this.width(n)-1,this.height(n)-1,-1,-1]:3===n&&([a,r,i,o]=[0,this.height(n)-1,1,-1]);let[s,l]=[a+i*t,r+o*e];return n%2==1&&([s,l]=[l,s]),this.shape[l][s]}width(t){return t%2==0?this.shape[0].length:this.shape.length}height(t){return t%2==0?this.shape.length:this.shape[0].length}neighboors(t){const e=[],n=(n,a)=>{this.fullAt(n,a,t)||e.some(t=>t[0]===n&&t[1]===a)||e.push([n,a])};for(let e=0;ee[0]===t[0]&&e[1]===t[1])||a.push(t);return a}copy(){return new o(this.id,this.shape.map(t=>t.slice()),this.type,this.power,this.limit)}}function s(t){for(const e of i)if(e.id===t)return e;return null}!function(){const t=!1,e=!0;i.push(new o(0,r.a.S,a.b.Hacking,1,1)),i.push(new o(1,r.a.Z,a.b.Hacking,1,1)),i.push(new o(5,r.a.T,a.b.HackingSpeed,1.3,1)),i.push(new o(6,r.a.I,a.b.HackingMoney,2,1)),i.push(new o(7,r.a.J,a.b.HackingGrow,.5,1)),i.push(new o(10,r.a.T,a.b.Strength,2,1)),i.push(new o(12,r.a.L,a.b.Defense,2,1)),i.push(new o(14,r.a.L,a.b.Dexterity,2,1)),i.push(new o(16,r.a.S,a.b.Agility,2,1)),i.push(new o(18,r.a.S,a.b.Charisma,3,1)),i.push(new o(20,r.a.I,a.b.HacknetMoney,1,1)),i.push(new o(21,r.a.O,a.b.HacknetCost,2,1)),i.push(new o(25,r.a.J,a.b.Rep,.5,1)),i.push(new o(27,r.a.J,a.b.WorkMoney,10,1)),i.push(new o(28,r.a.L,a.b.Crime,2,1)),i.push(new o(30,r.a.S,a.b.Bladeburner,.4,1)),i.push(new o(100,[[t,e,e],[e,e,t],[t,e,t]],a.b.Booster,1.1,99)),i.push(new o(101,[[e,e,e,e],[e,t,t,t]],a.b.Booster,1.1,99)),i.push(new o(102,[[t,e,e,e],[e,e,t,t]],a.b.Booster,1.1,99)),i.push(new o(103,[[e,e,e,t],[t,t,e,e]],a.b.Booster,1.1,99)),i.push(new o(104,[[t,e,e],[t,e,t],[e,e,t]],a.b.Booster,1.1,99)),i.push(new o(105,[[t,t,e],[t,e,e],[e,e,t]],a.b.Booster,1.1,99)),i.push(new o(106,[[e,t,t],[e,e,e],[e,t,t]],a.b.Booster,1.1,99)),i.push(new o(107,[[t,e,t],[e,e,e],[t,e,t]],a.b.Booster,1.1,99))}();const l=new o(-2,[],a.b.None,0,1/0),c=new o(-2,[],a.b.Delete,0,1/0)},function(t,e,n){"use strict";n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(9),r=n(7),i=n(406);function o(t){let e=1+t.favor/100;return isNaN(e)&&(e=1),e*r.a.FactionWorkRepGain}function s(t,e){return(t.hacking+t.intelligence/3)/a.a.MaxSkillLevel*t.faction_rep_mult*t.getIntelligenceBonus(1)*o(e)*Object(i.a)()}function l(t,e){return.9*(t.strength+t.defense+t.dexterity+t.agility+(t.hacking+t.intelligence)*Object(i.a)())/a.a.MaxSkillLevel/4.5*t.faction_rep_mult*o(e)*t.getIntelligenceBonus(1)}function c(t,e){return.9*(t.strength+t.defense+t.dexterity+t.agility+t.charisma+(t.hacking+t.intelligence)*Object(i.a)())/a.a.MaxSkillLevel/5.5*t.faction_rep_mult*o(e)*t.getIntelligenceBonus(1)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"d",(function(){return h})),n.d(e,"b",(function(){return d}));var a=n(224),r=n(76),i=n(9),o=n(2),s=n(5),l=n(19),c=n(15),f=n(0);function u(t,e,n=null,u={}){if((e=Math.round(e))<=0)return!1;if(null==t||isNaN(e))return n?n.log("stock.buy",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==u.suppressDialog&&Object(c.a)("Failed to buy stock. This may be a bug, contact developer"),!1;const m=Object(a.b)(t,e,r.a.Long);if(null==m)return!1;if(o.a.money`You do not have enough money to purchase this position. You need ${s.a.formatMoney(m)}.`):!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"You do not have enough money to purchase this. You need ",f.createElement(l.a,{money:m}))),!1;if(e+t.playerShares+t.playerShortShares>t.maxShares)return n?n.log("stock.buy",()=>`Purchasing '${e+t.playerShares+t.playerShortShares}' shares would exceed ${t.symbol}'s maximum (${t.maxShares}) number of shares`):!0!==u.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${t.symbol} has a maximum of ${s.a.formatShares(t.maxShares)} shares.`),!1;const h=t.playerShares*t.playerAvgPx;o.a.loseMoney(m,"stock");const d=h+m-i.a.StockMarketCommission;if(t.playerShares=Math.round(t.playerShares+e),t.playerAvgPx=d/t.playerShares,Object(a.d)(t,e),null!=u.rerenderFn&&"function"==typeof u.rerenderFn&&u.rerenderFn(),n){const a=`Bought ${s.a.formatShares(e)} shares of ${t.symbol} for ${s.a.formatMoney(m)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;n.log("stock.buy",()=>a)}else!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"Bought ",s.a.formatShares(e)," shares of ",t.symbol," for ",f.createElement(l.a,{money:m}),". Paid"," ",f.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function m(t,e,n=null,i={}){if(null==t||e<0||isNaN(e))return n?n.log("stock.sell",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==i.suppressDialog&&Object(c.a)("Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer"),!1;if((e=Math.round(e))>t.playerShares&&(e=t.playerShares),0===e)return!1;const u=Object(a.c)(t,e,r.a.Long);if(null==u)return!1;let m=u-t.playerAvgPx*e;if(isNaN(m)&&(m=0),o.a.gainMoney(u,"stock"),n&&(n.scriptRef.onlineMoneyMade+=m,o.a.scriptProdSinceLastAug+=m),t.playerShares=Math.round(t.playerShares-e),0===t.playerShares&&(t.playerAvgPx=0),Object(a.d)(t,e),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),n){const a=`Sold ${s.a.formatShares(e)} shares of ${t.symbol}. After commissions, you gained a total of ${s.a.formatMoney(u)}.`;n.log("stock.sell",()=>a)}else!0!==i.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"Sold ",s.a.formatShares(e)," shares of ",t.symbol,". After commissions, you gained a total of"," ",f.createElement(l.a,{money:u}),"."));return!0}function h(t,e,n=null,u={}){if((e=Math.round(e))<=0)return!1;if(null==t||isNaN(e))return n?n.log("stock.short",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==u.suppressDialog&&Object(c.a)("Failed to initiate a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;const m=Object(a.b)(t,e,r.a.Short);if(null==m)return!1;if(o.a.money"You do not have enough money to purchase this short position. You need "+s.a.formatMoney(m)):!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"You do not have enough money to purchase this short position. You need ",f.createElement(l.a,{money:m}))),!1;if(e+t.playerShares+t.playerShortShares>t.maxShares)return n?n.log("stock.short",()=>`This '${e+t.playerShares+t.playerShortShares}' short shares would exceed ${t.symbol}'s maximum (${t.maxShares}) number of shares.`):!0!==u.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${t.symbol} has a maximum of ${t.maxShares} shares.`),!1;const h=t.playerShortShares*t.playerAvgShortPx;o.a.loseMoney(m,"stock");const d=h+m-i.a.StockMarketCommission;if(t.playerShortShares=Math.round(t.playerShortShares+e),t.playerAvgShortPx=d/t.playerShortShares,Object(a.d)(t,e),null!=u.rerenderFn&&"function"==typeof u.rerenderFn&&u.rerenderFn(),n){const a=`Bought a short position of ${s.a.formatShares(e)} shares of ${t.symbol} for ${s.a.formatMoney(m)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;n.log("stock.short",()=>a)}else u.suppressDialog||Object(c.a)(f.createElement(f.Fragment,null,"Bought a short position of ",s.a.formatShares(e)," shares of ",t.symbol," for"," ",f.createElement(l.a,{money:m}),". Paid ",f.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function d(t,e,n=null,i={}){if(null==t||isNaN(e)||e<0)return n?n.log("stock.sellShort",()=>`Invalid arguments: stock='${t}' shares='${e}'`):i.suppressDialog||Object(c.a)("Failed to sell a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;if((e=Math.round(e))>t.playerShortShares&&(e=t.playerShortShares),0===e)return!1;const u=e*t.playerAvgShortPx,m=Object(a.c)(t,e,r.a.Short);if(null==m||isNaN(m)||null==u)return n?n.log("stock.sellShort",()=>"Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"):i.suppressDialog||Object(c.a)("Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"),!1;let h=m-u;if(isNaN(h)&&(h=0),o.a.gainMoney(m,"stock"),n&&(n.scriptRef.onlineMoneyMade+=h,o.a.scriptProdSinceLastAug+=h),t.playerShortShares=Math.round(t.playerShortShares-e),0===t.playerShortShares&&(t.playerAvgShortPx=0),Object(a.d)(t,e),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),n){const a=`Sold your short position of ${s.a.formatShares(e)} shares of ${t.symbol}. After commissions, you gained a total of `+s.a.formatMoney(m);n.log("stock.sellShort",()=>a)}else i.suppressDialog||Object(c.a)(f.createElement(f.Fragment,null,"Sold your short position of ",s.a.formatShares(e)," shares of ",t.symbol,". After commissions, you gained a total of ",f.createElement(l.a,{money:m})));return!0}},function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"d",(function(){return f}));var a=n(0),r=n.n(a),i=n(8),o=n(365);class s{constructor(t,e){i.a.TimestampsFormat&&(t="["+Object(o.a)(i.a.TimestampsFormat)+"] "+t),this.text=t,this.color=e}}class l{constructor(t){i.a.TimestampsFormat&&(t=r.a.createElement(r.a.Fragment,null,"[",Object(o.a)(i.a.TimestampsFormat),"] ",t)),this.raw=t}}class c{constructor(t,e){i.a.TimestampsFormat&&(t="["+Object(o.a)(i.a.TimestampsFormat)+"] "+t),this.hostname=e,this.dashes=t}}class f{constructor(t,e,n){this.time=t,this.timeLeft=t,this.action=e,this.server=n}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(7);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={name:"foo",desc:"foo"}){if(r(this,"baseCost",1),r(this,"costInc",1),r(this,"maxLvl",0),r(this,"successChanceAll",0),r(this,"successChanceStealth",0),r(this,"successChanceKill",0),r(this,"successChanceContract",0),r(this,"successChanceOperation",0),r(this,"successChanceEstimate",0),r(this,"actionTime",0),r(this,"effHack",0),r(this,"effStr",0),r(this,"effDef",0),r(this,"effDex",0),r(this,"effAgi",0),r(this,"effCha",0),r(this,"stamina",0),r(this,"money",0),r(this,"expGain",0),!t.name)throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");if(!t.desc)throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");this.name=t.name,this.desc=t.desc,this.baseCost=t.baseCost?t.baseCost:1,this.costInc=t.costInc?t.costInc:1,t.maxLvl&&(this.maxLvl=t.maxLvl),t.successChanceAll&&(this.successChanceAll=t.successChanceAll),t.successChanceStealth&&(this.successChanceStealth=t.successChanceStealth),t.successChanceKill&&(this.successChanceKill=t.successChanceKill),t.successChanceContract&&(this.successChanceContract=t.successChanceContract),t.successChanceOperation&&(this.successChanceOperation=t.successChanceOperation),t.successChanceEstimate&&(this.successChanceEstimate=t.successChanceEstimate),t.actionTime&&(this.actionTime=t.actionTime),t.effHack&&(this.effHack=t.effHack),t.effStr&&(this.effStr=t.effStr),t.effDef&&(this.effDef=t.effDef),t.effDex&&(this.effDex=t.effDex),t.effAgi&&(this.effAgi=t.effAgi),t.effCha&&(this.effCha=t.effCha),t.stamina&&(this.stamina=t.stamina),t.money&&(this.money=t.money),t.expGain&&(this.expGain=t.expGain)}calculateCost(t){return Math.floor((this.baseCost+t*this.costInc)*a.a.BladeburnerSkillCost)}getMultiplier(t){return"successChanceAll"===t?this.successChanceAll:"successChanceStealth"===t?this.successChanceStealth:"successChanceKill"===t?this.successChanceKill:"successChanceContract"===t?this.successChanceContract:"successChanceOperation"===t?this.successChanceOperation:"successChanceEstimate"===t?this.successChanceEstimate:"actionTime"===t?this.actionTime:"effHack"===t?this.effHack:"effStr"===t?this.effStr:"effDef"===t?this.effDef:"effDex"===t?this.effDex:"effAgi"===t?this.effAgi:"effCha"===t?this.effCha:"stamina"===t?this.stamina:"money"===t?this.money:"expGain"===t?this.expGain:0}}},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(41),o=n(10),s=n(1);function l(t){return r.a.createElement(i.a,{open:t.open,onClose:t.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,null,t.confirmationText),r.a.createElement(o.a,{onClick:()=>{t.onConfirm()}},"Confirm"),t.additionalButton&&r.a.createElement(r.a.Fragment,null,t.additionalButton)))}},function(t,e,n){"use strict";function a(){try{return"2d2236bc"}catch(t){}return"DEV"}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(4);const r={GangRespectToReputationRatio:75,MaximumGangMembers:12,CyclesPerTerritoryAndPowerUpdate:100,AscensionMultiplierRatio:.15,Names:[a.a.SlumSnakes,a.a.Tetrads,a.a.TheSyndicate,a.a.TheDarkArmy,a.a.SpeakersForTheDead,a.a.NiteSec,a.a.TheBlackHand]}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(513),r=n(24),i=n(514);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}let s=0;class l{constructor(t=null,e="",n="",a="",r=[]){o(this,"code",""),o(this,"filename",""),o(this,"url",""),o(this,"module",""),o(this,"dependencies",[]),o(this,"dependents",[]),o(this,"ramUsage",0),o(this,"server",""),this.filename=e,this.code=n,this.ramUsage=0,this.server=a,this.module="",this.moduleSequenceNumber=++s,""!==this.code&&null!==t&&this.updateRamUsage(t,r)}download(){const t=this.filename,e=new Blob([this.code],{type:"text/plain"}),n=window.navigator;if(n.msSaveOrOpenBlob)n.msSaveOrOpenBlob(e,t);else{const n=document.createElement("a"),a=URL.createObjectURL(e);n.href=a,n.download=t,document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(a)}),0)}}markUpdated(){this.module="",this.moduleSequenceNumber=++s}saveScript(t,e,n,a,r){this.code=l.formatCode(n),this.filename=e,this.server=a,this.updateRamUsage(t,r),this.markUpdated();for(const t of this.dependents){const[e]=r.filter(e=>e.filename===t.filename&&e.server==t.server);null!==e&&e.markUpdated()}}async updateRamUsage(t,e){const n=await Object(a.a)(t,this.code,e);n.cost>0&&(this.ramUsage=Object(i.a)(n.cost),this.ramUsageEntries=n.entries),this.markUpdated()}imports(){return[]}toJSON(){return Object(r.b)("Script",this)}static fromJSON(t){const e=Object(r.a)(l,t.data);return e.url="",e.dependents=[],e}static formatCode(t){return t.replace(/^\s+|\s+$/g,"")}}r.c.constructors.Script=l},,function(t,e,n){"use strict";function a(t){const e=[];for(let n=0;n13)throw new Error("Card instantiated with improper value: "+t)}formatValue(){switch(this.value){case 1:return"A";case 11:return"J";case 12:return"Q";case 13:return"K";default:return""+this.value}}isRedSuit(){return this.suit===a.Hearts||this.suit===a.Diamonds}getStringRepresentation(){return`${this.formatValue()} of ${this.suit}`}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={}){r(this,"name",""),r(this,"type",-1),t.name&&(this.name=t.name),t.type&&(this.type=t.type)}toJSON(){return Object(a.b)("ActionIdentifier",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.ActionIdentifier=i},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(217);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t,e){r(this,"lvl",1),r(this,"owned",!1);const n="BitNode"+t,i=a.a[n];if(null==i)throw new Error("Invalid Bit Node for this Source File");this.n=t,this.name=`Source-File ${t}: ${i.name}`,this.info=e}}},function(t,e,n){"use strict";n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return f}));var a=n(7),r=n(16),i=n(9),o=n(177),s=n(281);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(){return{hack:0,str:0,def:0,dex:0,agi:0,cha:0,money:0}}class f{constructor(){l(this,"hacking",1),l(this,"strength",1),l(this,"defense",1),l(this,"dexterity",1),l(this,"agility",1),l(this,"charisma",1),l(this,"intelligence",1),l(this,"hp",10),l(this,"max_hp",10),l(this,"hacking_exp",0),l(this,"strength_exp",0),l(this,"defense_exp",0),l(this,"dexterity_exp",0),l(this,"agility_exp",0),l(this,"charisma_exp",0),l(this,"intelligence_exp",0),l(this,"hacking_mult",1),l(this,"strength_mult",1),l(this,"defense_mult",1),l(this,"dexterity_mult",1),l(this,"agility_mult",1),l(this,"charisma_mult",1),l(this,"hacking_exp_mult",1),l(this,"strength_exp_mult",1),l(this,"defense_exp_mult",1),l(this,"dexterity_exp_mult",1),l(this,"agility_exp_mult",1),l(this,"charisma_exp_mult",1),l(this,"hacking_chance_mult",1),l(this,"hacking_speed_mult",1),l(this,"hacking_money_mult",1),l(this,"hacking_grow_mult",1),l(this,"company_rep_mult",1),l(this,"faction_rep_mult",1),l(this,"crime_money_mult",1),l(this,"crime_success_mult",1),l(this,"work_money_mult",1),l(this,"hacknet_node_money_mult",1),l(this,"hacknet_node_purchase_cost_mult",1),l(this,"hacknet_node_ram_cost_mult",1),l(this,"hacknet_node_core_cost_mult",1),l(this,"hacknet_node_level_cost_mult",1),l(this,"bladeburner_max_stamina_mult",1),l(this,"bladeburner_stamina_gain_mult",1),l(this,"bladeburner_analysis_mult",1),l(this,"bladeburner_success_chance_mult",1),l(this,"augmentations",[]),l(this,"queuedAugmentations",[]),l(this,"city",r.a.Sector12)}applyAugmentation(t){for(const e of Object.keys(t.mults))null==this[e]?console.warn("Augmentation has unrecognized multiplier property: "+e):this[e]*=t.mults[e]}calculateStat(t,e=1){return Object(o.b)(t,e)}getFactionFieldWorkRepGain(){return.9*(this.hacking/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel+this.charisma/i.a.MaxSkillLevel)/5.5*this.faction_rep_mult}getFactionHackingWorkRepGain(){return this.hacking/i.a.MaxSkillLevel*this.faction_rep_mult}getFactionSecurityWorkRepGain(){return.9*(this.hacking/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel)/4.5*this.faction_rep_mult}resetMultipliers(){this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.crime_money_mult=1,this.crime_success_mult=1,this.work_money_mult=1}updateStatLevels(){this.hacking=Math.max(1,Math.floor(this.calculateStat(this.hacking_exp,this.hacking_mult*a.a.HackingLevelMultiplier))),this.strength=Math.max(1,Math.floor(this.calculateStat(this.strength_exp,this.strength_mult*a.a.StrengthLevelMultiplier))),this.defense=Math.max(1,Math.floor(this.calculateStat(this.defense_exp,this.defense_mult*a.a.DefenseLevelMultiplier))),this.dexterity=Math.max(1,Math.floor(this.calculateStat(this.dexterity_exp,this.dexterity_mult*a.a.DexterityLevelMultiplier))),this.agility=Math.max(1,Math.floor(this.calculateStat(this.agility_exp,this.agility_mult*a.a.AgilityLevelMultiplier))),this.charisma=Math.max(1,Math.floor(this.calculateStat(this.charisma_exp,this.charisma_mult*a.a.CharismaLevelMultiplier)));const t=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*t)}getIntelligenceBonus(t){return Object(s.a)(this.intelligence,t)}}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(757);function o({children:t}){return r.a.createElement(i.MathJaxContext,{version:3,src:"dist/ext/MathJax-3.2.0/es5/tex-chtml.js"},r.a.createElement(i.MathJax,null,t))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(15);function r(t){console.error(t),Object(a.a)("Caught an exception: "+t+"

Filename: "+(t.fileName||"UNKNOWN FILE NAME")+"

Line Number: "+(t.lineNumber||"UNKNOWN LINE NUMBER")+"

This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.

If you want to be safe, I suggest refreshing the game WITHOUT saving so that your safe doesn't get corrupted")}},function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return g})),n.d(e,"e",(function(){return p})),n.d(e,"d",(function(){return E})),n.d(e,"c",(function(){return k}));var a=n(327),r=n(56),i=n(14),o=n(65),s=n(2),l=n(299),c=n(25),f=n(8),u=n(15),m=n(24),h=n(4);function d(t,e=!1){t.recvd=!0,!e&&f.a.SuppressMessages||p(t.filename),function(t,e){const n=Object(c.d)(e);if(null==n)return void console.warn("Could not find server "+e);for(let e=0;e

This message was saved as "+e.filename+" onto your home computer.";Object(u.a)(n)}function g(){if(l.b)return;const t=b[v.Jumper0],e=b[v.Jumper1],n=b[v.Jumper2],a=b[v.Jumper3],c=b[v.Jumper4],f=b[v.CyberSecTest],u=b[v.NiteSecTest],m=b[v.BitRunnersTest],h=b[v.RedPill];let p=!1;if(r.a[i.a.TheRedPill].owned&&(p=!0),h&&p&&0===s.a.sourceFiles.length&&!l.b)d(h,!0);else if(h&&p)l.b||d(h);else if(t&&!t.recvd&&s.a.hacking>=25){d(t);const e=o.a.Flight.name,n=s.a.getHomeComputer();n.programs.includes(e)||n.programs.push(e)}else e&&!e.recvd&&s.a.hacking>=40?d(e):f&&!f.recvd&&s.a.hacking>=50?d(f):n&&!n.recvd&&s.a.hacking>=175?d(n):u&&!u.recvd&&s.a.hacking>=200?d(u):a&&!a.recvd&&s.a.hacking>=350?d(a):c&&!c.recvd&&s.a.hacking>=490?d(c):m&&!m.recvd&&s.a.hacking>=500&&d(m)}function y(t){b[t.filename]=t}let b={};function E(t){b=JSON.parse(t,m.c)}const v={Jumper0:"j0.msg",Jumper1:"j1.msg",Jumper2:"j2.msg",Jumper3:"j3.msg",Jumper4:"j4.msg",CyberSecTest:"csec-test.msg",NiteSecTest:"nitesec-test.msg",BitRunnersTest:"19dfj3l1nd.msg",RedPill:"icarus.msg"};function k(){b={},y(new a.a(v.Jumper0,"I know you can sense it. I know you're searching for it. It's why you spend night after night at your computer.

It's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.

Use this program to track your progress

The fl1ght.exe program was added to your home computer

-jump3R")),y(new a.a(v.Jumper1,`Soon you will be contacted by a hacking group known as ${h.a.NiteSec}. They can help you with your search.

You should join them, garner their favor, and exploit them for their Augmentations. But do not trust them. They are not what they seem. No one is.

-jump3R`)),y(new a.a(v.Jumper2,`Do not try to save the world. There is no world to save. If you want to find the truth, worry only about yourself. Ethics and morals will get you killed.

Watch out for a hacking group known as ${h.a.NiteSec}.

-jump3R`)),y(new a.a(v.Jumper3,`You must learn to walk before you can run. And you must run before you can fly. Look for ${h.a.TheBlackHand}.

I.I.I.I

-jump3R`)),y(new a.a(v.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.

-jump3R")),y(new a.a(v.CyberSecTest,"We've been watching you. Your skills are very impressive. But you're wasting your talents. If you join us, you can put your skills to good use and change the world for the better. If you join us, we can unlock your full potential.

But first, you must pass our test. Find and install the backdoor on our server.

-"+h.a.CyberSec)),y(new a.a(v.NiteSecTest,"People say that the corrupted governments and corporations rule the world. Yes, maybe they do. But do you know who everyone really fears? People like us. Because they can't hide from us. Because they can't fight shadows and ideas with bullets.

Join us, and people will fear you, too.

Find and install the backdoor on our server. Then, we will contact you again.

-"+h.a.NiteSec)),y(new a.a(v.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for.

We can help you find the answers.

run4theh111z")),y(new a.a(v.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%
)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)
@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB
DFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(138),r=n(59);const i={};i[r.a.OperationTyphoon]=new a.a({name:r.a.OperationTyphoon,baseDifficulty:2e3,reqdRank:2500,rankGain:50,rankLoss:10,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationZero]=new a.a({name:r.a.OperationZero,baseDifficulty:2500,reqdRank:5e3,rankGain:60,rankLoss:15,hpLoss:50,weights:{hack:.2,str:.15,def:.15,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationX]=new a.a({name:r.a.OperationX,baseDifficulty:3e3,reqdRank:7500,rankGain:75,rankLoss:15,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationTitan]=new a.a({name:r.a.OperationTitan,baseDifficulty:4e3,reqdRank:1e4,rankGain:100,rankLoss:20,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationAres]=new a.a({name:r.a.OperationAres,baseDifficulty:5e3,reqdRank:12500,rankGain:125,rankLoss:20,hpLoss:200,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationArchangel]=new a.a({name:r.a.OperationArchangel,baseDifficulty:7500,reqdRank:15e3,rankGain:200,rankLoss:20,hpLoss:25,weights:{hack:0,str:.2,def:.2,dex:.3,agi:.3,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationJuggernaut]=new a.a({name:r.a.OperationJuggernaut,baseDifficulty:1e4,reqdRank:2e4,rankGain:300,rankLoss:40,hpLoss:300,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationRedDragon]=new a.a({name:r.a.OperationRedDragon,baseDifficulty:12500,reqdRank:25e3,rankGain:500,rankLoss:50,hpLoss:500,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationK]=new a.a({name:r.a.OperationK,baseDifficulty:15e3,reqdRank:3e4,rankGain:750,rankLoss:60,hpLoss:1e3,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationDeckard]=new a.a({name:r.a.OperationDeckard,baseDifficulty:2e4,reqdRank:4e4,rankGain:1e3,rankLoss:75,hpLoss:200,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationTyrell]=new a.a({name:r.a.OperationTyrell,baseDifficulty:25e3,reqdRank:5e4,rankGain:1500,rankLoss:100,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationWallace]=new a.a({name:r.a.OperationWallace,baseDifficulty:3e4,reqdRank:75e3,rankGain:2e3,rankLoss:150,hpLoss:1500,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationShoulderOfOrion]=new a.a({name:r.a.OperationShoulderOfOrion,baseDifficulty:35e3,reqdRank:1e5,rankGain:2500,rankLoss:500,hpLoss:1500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationHyron]=new a.a({name:r.a.OperationHyron,baseDifficulty:4e4,reqdRank:125e3,rankGain:3e3,rankLoss:1e3,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationMorpheus]=new a.a({name:r.a.OperationMorpheus,baseDifficulty:45e3,reqdRank:15e4,rankGain:4e3,rankLoss:1e3,hpLoss:100,weights:{hack:.05,str:.15,def:.15,dex:.3,agi:.3,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationIonStorm]=new a.a({name:r.a.OperationIonStorm,baseDifficulty:5e4,reqdRank:175e3,rankGain:5e3,rankLoss:1e3,hpLoss:5e3,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationAnnihilus]=new a.a({name:r.a.OperationAnnihilus,baseDifficulty:55e3,reqdRank:2e5,rankGain:7500,rankLoss:1e3,hpLoss:1e4,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationUltron]=new a.a({name:r.a.OperationUltron,baseDifficulty:6e4,reqdRank:25e4,rankGain:1e4,rankLoss:2e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationCenturion]=new a.a({name:r.a.OperationCenturion,baseDifficulty:7e4,reqdRank:3e5,rankGain:15e3,rankLoss:5e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),i[r.a.OperationVindictus]=new a.a({name:r.a.OperationVindictus,baseDifficulty:75e3,reqdRank:35e4,rankGain:2e4,rankLoss:2e4,hpLoss:2e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),i[r.a.OperationDaedalus]=new a.a({name:r.a.OperationDaedalus,baseDifficulty:8e4,reqdRank:4e5,rankGain:4e4,rankLoss:1e4,hpLoss:1e5,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}})},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(9);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t="",e="",n=0,a=0,i=0,o=0,s={}){r(this,"difficulty",0),r(this,"karma",0),r(this,"kills",0),r(this,"money",0),r(this,"name",""),r(this,"time",0),r(this,"type",""),r(this,"hacking_success_weight",0),r(this,"strength_success_weight",0),r(this,"defense_success_weight",0),r(this,"dexterity_success_weight",0),r(this,"agility_success_weight",0),r(this,"charisma_success_weight",0),r(this,"hacking_exp",0),r(this,"strength_exp",0),r(this,"defense_exp",0),r(this,"dexterity_exp",0),r(this,"agility_exp",0),r(this,"charisma_exp",0),r(this,"intelligence_exp",0),this.name=t,this.type=e,this.time=n,this.money=a,this.difficulty=i,this.karma=o,this.hacking_success_weight=s.hacking_success_weight?s.hacking_success_weight:0,this.strength_success_weight=s.strength_success_weight?s.strength_success_weight:0,this.defense_success_weight=s.defense_success_weight?s.defense_success_weight:0,this.dexterity_success_weight=s.dexterity_success_weight?s.dexterity_success_weight:0,this.agility_success_weight=s.agility_success_weight?s.agility_success_weight:0,this.charisma_success_weight=s.charisma_success_weight?s.charisma_success_weight:0,this.hacking_exp=s.hacking_exp?s.hacking_exp:0,this.strength_exp=s.strength_exp?s.strength_exp:0,this.defense_exp=s.defense_exp?s.defense_exp:0,this.dexterity_exp=s.dexterity_exp?s.dexterity_exp:0,this.agility_exp=s.agility_exp?s.agility_exp:0,this.charisma_exp=s.charisma_exp?s.charisma_exp:0,this.intelligence_exp=s.intelligence_exp?s.intelligence_exp:0,this.kills=s.kills?s.kills:0}commit(t,e,n=1,a=null){return n<=0&&(n=1),e.startCrime(t,this.type,this.hacking_exp/n,this.strength_exp/n,this.defense_exp/n,this.dexterity_exp/n,this.agility_exp/n,this.charisma_exp/n,this.money/n,this.time,a),this.time}successRate(t){let e=this.hacking_success_weight*t.hacking+this.strength_success_weight*t.strength+this.defense_success_weight*t.defense+this.dexterity_success_weight*t.dexterity+this.agility_success_weight*t.agility+this.charisma_success_weight*t.charisma+a.a.IntelligenceCrimeWeight*t.intelligence;return e/=a.a.MaxSkillLevel,e/=this.difficulty,e*=t.crime_success_mult,e*=t.getIntelligenceBonus(1),Math.min(e,1)}}},,,,,,,,function(t,e,n){"use strict";function a(t,e=1){return 1+e*Math.pow(t,.8)/600}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1012),r=n(1013);const i={};for(const t of r.a)null!=i[(o=t).name]&&console.warn("Duplicate Research being defined: "+o.name),i[o.name]=new a.a(o);var o},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(522),i=n(29),o=n(10),s=n(20);function l(t){const e=i.b.Player();return a.createElement(a.Fragment,null,a.createElement(s.a,{title:a.createElement("span",{dangerouslySetInnerHTML:{__html:function(){const n=e.getNextCompanyPosition(t.company,t.entryPosType);return null==n?"":t.company.hasPosition(n)?Object(r.a)(t.company,n,!0):""}()}})},a.createElement(o.a,{onClick:t.onClick},t.text)))}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new(n(126).a)},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return d})),n.d(e,"d",(function(){return p})),n.d(e,"c",(function(){return g})),n.d(e,"e",(function(){return y})),n.d(e,"b",(function(){return b}));var a=n(2),r=n(95),i=n(81),o=n(88),s=n(143),l=n(25),c=n(110),f=n(8),u=n(590),m=n(9),h=n(249);function d(){navigator.userAgent.toLowerCase().indexOf(" electron/")>-1&&(document.achievements=[],function(){function e(t){return t=t.replace(/\/\/+/g,"/"),(t=Object(i.k)(t)).includes("/")&&(t="/"+Object(i.k)(t)),t}document.getFiles=function(){const t=Object(l.d)("home");return null===t?{res:!1,msg:"Home server does not exist."}:{res:!0,data:{files:t.scripts.map(t=>({filename:t.filename,code:t.code,ramUsage:t.ramUsage}))}}},document.deleteFile=function(t){t=e(t);const n=Object(l.d)("home");return null===n?{res:!1,msg:"Home server does not exist."}:n.removeFile(t)},document.saveFile=function(n,r){var i;n=e(n),r=t.from(r,"base64").toString();const o=Object(l.d)("home");if(null===o)return{res:!1,msg:"Home server does not exist."};const{success:s,overwritten:c}=o.writeToScriptFile(a.a,n,r);let f;return s&&(f=o.getScript(n)),{res:s,data:{overwritten:c,ramUsage:null===(i=f)||void 0===i?void 0:i.ramUsage}}}}(),function(){const t={terminal:(t,e)=>{const n={info:o.a.info,warn:o.a.warn,error:o.a.error,success:o.a.success};let a;e&&(a=n[e]),a||(a=o.a.print),a.bind(o.a)(t)},toast:(t,e,n=2e3)=>s.b.emit(t,e,n)};window.appNotifier=t}(),function(){const t={triggerSave:()=>c.c.saveGame(!0),triggerGameExport:()=>{try{c.c.exportGame()}catch(t){console.log(t),s.b.emit("Could not export game.","error",2e3)}},triggerScriptsExport:()=>Object(u.b)("*",a.a.getHomeComputer()),getSaveData:()=>({save:c.c.getSaveString(f.a.ExcludeRunningScriptsFromSave),fileName:c.c.getSaveFileName()}),getSaveInfo:async t=>{try{return(await c.c.getImportDataFromString(t)).playerData}catch(t){return void console.error(t)}},pushSaveData:(t,e=!1)=>r.b.toImportSave(t,e)};window.appSaveFns=t}(),function(){const t=window.electronBridge;if(!t)return;t.receive("get-save-data-request",()=>{const e=window.appSaveFns.getSaveData();t.send("get-save-data-response",e)}),t.receive("get-save-info-request",async e=>{const n=await window.appSaveFns.getSaveInfo(e);t.send("get-save-info-response",n)}),t.receive("push-save-request",({save:t,automatic:e=!1})=>{window.appSaveFns.pushSaveData(t,e)}),t.receive("trigger-save",()=>window.appSaveFns.triggerSave().then(()=>{t.send("save-completed")}).catch(t=>{console.log(t),s.b.emit("Could not save game.","error",2e3)})),t.receive("trigger-game-export",()=>{try{window.appSaveFns.triggerGameExport()}catch(t){console.log(t),s.b.emit("Could not export game.","error",2e3)}}),t.receive("trigger-scripts-export",()=>{try{window.appSaveFns.triggerScriptsExport()}catch(t){console.log(t),s.b.emit("Could not export scripts.","error",2e3)}})}())}function p(t){const e=window.electronBridge;e&&e.send("push-game-saved",t)}function g(){const t=window.electronBridge;t&&t.send("push-game-ready",{player:{identifier:a.a.identifier,playtime:a.a.totalPlaytime,lastSave:a.a.lastSave},game:{version:m.a.VersionString,hash:Object(h.a)()}})}function y(t){const e=window.electronBridge;e&&(e.send("push-import-result",{wasImported:t}),b())}function b(){const t=window.electronBridge;t&&t.send("push-disable-restore",{duration:6e4})}}).call(this,n(161).Buffer)},,function(t,e,n){"use strict";n.d(e,"a",(function(){return A})),n.d(e,"b",(function(){return R}));var a=n(14),r=n(136),i=n(222),o=n(9),s=n(50),l=n(107),c=n(28),f=n(82),u=n(250),m=n(39),h=n(54),d=n(219),p=n(92),g=n(16),y=n(2),b=n(65),E=n(25),v=n(103),k=n(46),_=n(95),w=n(26),S=n(1107),C=n(4),x=n(59);const L=S.a;function O(){const t=Object(E.d)(v.a.WorldDaemon);return t instanceof k.a&&(!!t.backdoorInstalled||null!==y.a.bladeburner&&y.a.bladeburner.blackops.hasOwnProperty(x.a.OperationDaedalus))}function M(t,e){return t.bitNodeN===e||t.sourceFiles.some(t=>t.n===e)}function T(t){return t.sourceFiles.some(t=>1===t.n)}const A={[C.a.CyberSec.toUpperCase()]:{...L[C.a.CyberSec.toUpperCase()],Icon:"CSEC",Condition:()=>y.a.factions.includes(C.a.CyberSec)},[C.a.NiteSec.toUpperCase()]:{...L[C.a.NiteSec.toUpperCase()],Icon:C.a.NiteSec,Condition:()=>y.a.factions.includes(C.a.NiteSec)},THE_BLACK_HAND:{...L.THE_BLACK_HAND,Icon:"TBH",Condition:()=>y.a.factions.includes(C.a.TheBlackHand)},[C.a.BitRunners.toUpperCase()]:{...L[C.a.BitRunners.toUpperCase()],Icon:C.a.BitRunners.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.BitRunners)},[C.a.Daedalus.toUpperCase()]:{...L[C.a.Daedalus.toUpperCase()],Icon:C.a.Daedalus.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.Daedalus)},THE_COVENANT:{...L.THE_COVENANT,Icon:C.a.TheCovenant.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.TheCovenant)},[C.a.Illuminati.toUpperCase()]:{...L[C.a.Illuminati.toUpperCase()],Icon:C.a.Illuminati.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.Illuminati)},"BRUTESSH.EXE":{...L["BRUTESSH.EXE"],Icon:"p0",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.BruteSSHProgram.name)},"FTPCRACK.EXE":{...L["FTPCRACK.EXE"],Icon:"p1",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.FTPCrackProgram.name)},"RELAYSMTP.EXE":{...L["RELAYSMTP.EXE"],Icon:"p2",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.RelaySMTPProgram.name)},"HTTPWORM.EXE":{...L["HTTPWORM.EXE"],Icon:"p3",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.HTTPWormProgram.name)},"SQLINJECT.EXE":{...L["SQLINJECT.EXE"],Icon:"p4",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.SQLInjectProgram.name)},"FORMULAS.EXE":{...L["FORMULAS.EXE"],Icon:"formulas",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.Formulas.name)},"SF1.1":{...L["SF1.1"],Icon:"SF1.1",Visible:()=>M(y.a,1),Condition:()=>y.a.sourceFileLvl(1)>=1},"SF2.1":{...L["SF2.1"],Icon:"SF2.1",Visible:()=>M(y.a,2),Condition:()=>y.a.sourceFileLvl(2)>=1},"SF3.1":{...L["SF3.1"],Icon:"SF3.1",Visible:()=>M(y.a,3),Condition:()=>y.a.sourceFileLvl(3)>=1},"SF4.1":{...L["SF4.1"],Icon:"SF4.1",Visible:()=>M(y.a,4),Condition:()=>y.a.sourceFileLvl(4)>=1},"SF5.1":{...L["SF5.1"],Icon:"SF5.1",Visible:()=>M(y.a,5),Condition:()=>y.a.sourceFileLvl(5)>=1},"SF6.1":{...L["SF6.1"],Icon:"SF6.1",Visible:()=>M(y.a,6),Condition:()=>y.a.sourceFileLvl(6)>=1},"SF7.1":{...L["SF7.1"],Icon:"SF7.1",Visible:()=>M(y.a,7),Condition:()=>y.a.sourceFileLvl(7)>=1},"SF8.1":{...L["SF8.1"],Icon:"SF8.1",Visible:()=>M(y.a,8),Condition:()=>y.a.sourceFileLvl(8)>=1},"SF9.1":{...L["SF9.1"],Icon:"SF9.1",Visible:()=>M(y.a,9),Condition:()=>y.a.sourceFileLvl(9)>=1},"SF10.1":{...L["SF10.1"],Icon:"SF10.1",Visible:()=>M(y.a,10),Condition:()=>y.a.sourceFileLvl(10)>=1},"SF11.1":{...L["SF11.1"],Icon:"SF11.1",Visible:()=>M(y.a,11),Condition:()=>y.a.sourceFileLvl(11)>=1},"SF12.1":{...L["SF12.1"],Icon:"SF12.1",Visible:()=>M(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=1},MONEY_1Q:{...L.MONEY_1Q,Icon:"$1Q",Condition:()=>y.a.money>=1e18},MONEY_M1B:{...L.MONEY_M1B,Icon:"-1b",Secret:!0,Condition:()=>y.a.money<=-1e9},INSTALL_1:{...L.INSTALL_1,Icon:"install",Condition:()=>y.a.augmentations.length>=1},INSTALL_100:{...L.INSTALL_100,Icon:"install_100",Condition:()=>y.a.augmentations.length>=100},QUEUE_40:{...L.QUEUE_40,Icon:"queue40",Condition:()=>y.a.queuedAugmentations.length>=40},HACKING_100000:{...L.HACKING_100000,Icon:"hack100000",Condition:()=>y.a.hacking>=1e5},COMBAT_3000:{...L.COMBAT_3000,Icon:"combat3000",Condition:()=>y.a.strength>=3e3&&y.a.defense>=3e3&&y.a.dexterity>=3e3&&y.a.agility>=3e3},NEUROFLUX_255:{...L.NEUROFLUX_255,Icon:"nf255",Condition:()=>y.a.augmentations.some(t=>t.name===a.a.NeuroFluxGovernor&&t.level>=255)},NS2:{...L.NS2,Icon:"ns2",Condition:()=>y.a.getHomeComputer().scripts.some(t=>t.filename.endsWith(".js")||t.filename.endsWith(".ns"))},FROZE:{...L.FROZE,Icon:"forze",Condition:()=>location.href.includes("noScripts")},RUNNING_SCRIPTS_1000:{...L.RUNNING_SCRIPTS_1000,Icon:"run1000",Condition:()=>{let t=0;for(const e of Object(E.c)())t+=e.runningScripts.length;return t>=1e3}},DRAIN_SERVER:{...L.DRAIN_SERVER,Icon:"drain",Condition:()=>{for(const t of Object(E.c)())if(t instanceof k.a&&t.moneyMax>0&&0===t.moneyAvailable)return!0;return!1}},MAX_RAM:{...L.MAX_RAM,Icon:"maxram",Condition:()=>y.a.getHomeComputer().maxRam===o.a.HomeComputerMaxRam},MAX_CORES:{...L.MAX_CORES,Icon:"maxcores",Condition:()=>8===y.a.getHomeComputer().cpuCores},SCRIPTS_30:{...L.SCRIPTS_30,Icon:"folders",Condition:()=>y.a.getHomeComputer().scripts.length>=30},KARMA_1000000:{...L.KARMA_1000000,Icon:"karma",Secret:!0,Condition:()=>y.a.karma<=-1e6},STOCK_1q:{...L.STOCK_1q,Icon:"$1Q",Condition:()=>y.a.moneySourceB.stock>=1e15},DISCOUNT:{...L.DISCOUNT,Icon:"discount",Condition:()=>{const t=Object(E.d)("powerhouse-fitness");return t instanceof k.a&&t.backdoorInstalled}},SCRIPT_32GB:{...L.SCRIPT_32GB,Icon:"bigcost",Condition:()=>y.a.getHomeComputer().scripts.some(t=>t.ramUsage>=32)},FIRST_HACKNET_NODE:{...L.FIRST_HACKNET_NODE,Icon:"node",Condition:()=>!Object(h.g)(y.a)&&y.a.hacknetNodes.length>0},"30_HACKNET_NODE":{...L["30_HACKNET_NODE"],Icon:"hacknet-all",Condition:()=>!Object(h.g)(y.a)&&y.a.hacknetNodes.length>=30},MAX_HACKNET_NODE:{...L.MAX_HACKNET_NODE,Icon:"hacknet-max",Condition:()=>{if(Object(h.g)(y.a))return!1;for(const t of y.a.hacknetNodes){if(!(t instanceof d.a))return!1;if(t.ram===m.a.MaxRam&&t.cores===m.a.MaxCores&&t.level===m.a.MaxLevel)return!0}return!1}},HACKNET_NODE_10M:{...L.HACKNET_NODE_10M,Icon:"hacknet-10m",Condition:()=>!Object(h.g)(y.a)&&y.a.moneySourceB.hacknet>=1e7},REPUTATION_10M:{...L.REPUTATION_10M,Icon:"reputation",Condition:()=>Object.values(c.a).some(t=>t.playerReputation>=1e7)},DONATION:{...L.DONATION,Icon:"donation",Condition:()=>Object.values(c.a).some(t=>t.favor>=150)},TRAVEL:{...L.TRAVEL,Icon:"TRAVEL",Condition:()=>y.a.city!==g.a.Sector12},WORKOUT:{...L.WORKOUT,Icon:"WORKOUT",Condition:()=>[o.a.ClassGymStrength,o.a.ClassGymDefense,o.a.ClassGymDexterity,o.a.ClassGymAgility].includes(y.a.className)},TOR:{...L.TOR,Icon:"TOR",Condition:()=>y.a.hasTorRouter()},HOSPITALIZED:{...L.HOSPITALIZED,Icon:"OUCH",Condition:()=>0!==y.a.moneySourceB.hospitalization},GANG:{...L.GANG,Icon:"GANG",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang},FULL_GANG:{...L.FULL_GANG,Icon:"GANGMAX",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.length===u.a.MaximumGangMembers},GANG_TERRITORY:{...L.GANG_TERRITORY,Icon:"GANG100%",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&f.a[y.a.gang.facName].territory>=.999},GANG_MEMBER_POWER:{...L.GANG_MEMBER_POWER,Icon:"GANG10000",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.some(t=>t.hack>=1e4||t.str>=1e4||t.def>=1e4||t.dex>=1e4||t.agi>=1e4||t.cha>=1e4)},CORPORATION:{...L.CORPORATION,Icon:"CORP",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation},CORPORATION_BRIBE:{...L.CORPORATION_BRIBE,Icon:"CORPLOBBY",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&1===y.a.corporation.unlockUpgrades[6]},CORPORATION_PROD_1000:{...L.CORPORATION_PROD_1000,Icon:"CORP1000",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(t=>t.prodMult>=1e3)},CORPORATION_EMPLOYEE_3000:{...L.CORPORATION_EMPLOYEE_3000,Icon:"CORPCITY",Visible:()=>M(y.a,3),Condition:()=>{if(null===y.a.corporation)return!1;for(const t of y.a.corporation.divisions)for(const e of Object.values(t.offices))if(0!==e&&e.employees.length>=3e3)return!0;return!1}},CORPORATION_REAL_ESTATE:{...L.CORPORATION_REAL_ESTATE,Icon:"CORPRE",Name:"Own the land",Description:"Expand to the Real Estate division.",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(t=>t.type===s.a.RealEstate)},INTELLIGENCE_255:{...L.INTELLIGENCE_255,Icon:"INT255",Visible:()=>M(y.a,5),Condition:()=>y.a.intelligence>=255},BLADEBURNER_DIVISION:{...L.BLADEBURNER_DIVISION,Icon:"BLADE",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner},BLADEBURNER_OVERCLOCK:{...L.BLADEBURNER_OVERCLOCK,Icon:"BLADEOVERCLOCK",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skills[r.a.Overclock]===i.a[r.a.Overclock].maxLvl},BLADEBURNER_UNSPENT_100000:{...L.BLADEBURNER_UNSPENT_100000,Icon:"BLADE100K",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skillPoints>=1e5},"4S":{...L["4S"],Icon:"4S",Condition:()=>y.a.has4SData},FIRST_HACKNET_SERVER:{...L.FIRST_HACKNET_SERVER,Icon:"HASHNET",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hacknetNodes.length>0,AdditionalUnlock:[L.FIRST_HACKNET_NODE.ID]},ALL_HACKNET_SERVER:{...L.ALL_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hacknetNodes.length===m.b.MaxServers,AdditionalUnlock:[L["30_HACKNET_NODE"].ID]},MAX_HACKNET_SERVER:{...L.MAX_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>M(y.a,9),Condition:()=>{if(!Object(h.g)(y.a))return!1;for(const t of y.a.hacknetNodes){if("string"!=typeof t)return!1;const e=Object(E.d)(t);if(!(e instanceof p.a))return!1;if(e.maxRam===m.b.MaxRam&&e.cores===m.b.MaxCores&&e.level===m.b.MaxLevel&&e.cache===m.b.MaxCache)return!0}return!1},AdditionalUnlock:[L.MAX_HACKNET_NODE.ID]},HACKNET_SERVER_1B:{...L.HACKNET_SERVER_1B,Icon:"HASHNETMONEY",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.moneySourceB.hacknet>=1e9,AdditionalUnlock:[L.HACKNET_NODE_10M.ID]},MAX_CACHE:{...L.MAX_CACHE,Icon:"HASHNETCAP",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hashManager.hashes===y.a.hashManager.capacity&&y.a.hashManager.capacity>0},SLEEVE_8:{...L.SLEEVE_8,Icon:"SLEEVE8",Visible:()=>M(y.a,10),Condition:()=>8===y.a.sleeves.length&&3===y.a.sourceFileLvl(10)},INDECISIVE:{...L.INDECISIVE,Icon:"1H",Visible:()=>T(y.a),Condition:function(){let t=0;return setInterval(()=>{_.b.page()===w.a.BitVerse?t++:t=0},6e4),()=>t>60}()},FAST_BN:{...L.FAST_BN,Icon:"2DAYS",Visible:()=>T(y.a),Condition:()=>O()&&y.a.playtimeSinceLastBitnode<1728e5},CHALLENGE_BN1:{...L.CHALLENGE_BN1,Icon:"BN1+",Visible:()=>T(y.a),Condition:()=>1===y.a.bitNodeN&&O()&&y.a.getHomeComputer().maxRam<=128&&1===y.a.getHomeComputer().cpuCores},CHALLENGE_BN2:{...L.CHALLENGE_BN2,Icon:"BN2+",Visible:()=>M(y.a,2),Condition:()=>2===y.a.bitNodeN&&O()&&null===y.a.gang},CHALLENGE_BN3:{...L.CHALLENGE_BN3,Icon:"BN3+",Visible:()=>M(y.a,3),Condition:()=>3===y.a.bitNodeN&&O()&&null===y.a.corporation},CHALLENGE_BN6:{...L.CHALLENGE_BN6,Icon:"BN6+",Visible:()=>M(y.a,6),Condition:()=>6===y.a.bitNodeN&&O()&&null===y.a.bladeburner},CHALLENGE_BN7:{...L.CHALLENGE_BN7,Icon:"BN7+",Visible:()=>M(y.a,7),Condition:()=>7===y.a.bitNodeN&&O()&&null===y.a.bladeburner},CHALLENGE_BN8:{...L.CHALLENGE_BN8,Icon:"BN8+",Visible:()=>M(y.a,8),Condition:()=>8===y.a.bitNodeN&&O()&&!y.a.has4SData&&!y.a.has4SDataTixApi},CHALLENGE_BN9:{...L.CHALLENGE_BN9,Icon:"BN9+",Visible:()=>M(y.a,9),Condition:()=>9===y.a.bitNodeN&&O()&&0===y.a.moneySourceB.hacknet&&0===y.a.moneySourceB.hacknet_expenses},CHALLENGE_BN10:{...L.CHALLENGE_BN10,Icon:"BN10+",Visible:()=>M(y.a,10),Condition:()=>10===y.a.bitNodeN&&O()&&!y.a.sleeves.some(t=>t.augmentations.length>0||t.hacking_exp>0||t.strength_exp>0||t.defense_exp>0||t.agility_exp>0||t.dexterity_exp>0||t.charisma_exp>0)},CHALLENGE_BN12:{...L.CHALLENGE_BN12,Icon:"BN12+",Visible:()=>M(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=50},BYPASS:{...L.BYPASS,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Bypass)},PROTOTYPETAMPERING:{...L.PROTOTYPETAMPERING,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.PrototypeTampering)},UNCLICKABLE:{...L.UNCLICKABLE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Unclickable)},UNDOCUMENTEDFUNCTIONCALL:{...L.UNDOCUMENTEDFUNCTIONCALL,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.UndocumentedFunctionCall)},TIMECOMPRESSION:{...L.TIMECOMPRESSION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.TimeCompression)},REALITYALTERATION:{...L.REALITYALTERATION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.RealityAlteration)},N00DLES:{...L.N00DLES,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.N00dles)},EDITSAVEFILE:{...L.EDITSAVEFILE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.EditSaveFile)},UNACHIEVABLE:{...L.UNACHIEVABLE,Icon:"SF-1",Secret:!0,Condition:()=>!1},CHALLENGE_BN13:{...L.CHALLENGE_BN13,Icon:"BN13+",Visible:()=>M(y.a,13),Condition:()=>13===y.a.bitNodeN&&O()&&!y.a.augmentations.some(t=>t.name===a.a.StaneksGift1)},DEVMENU:{...L.DEVMENU,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.YoureNotMeantToAccessThis)},RAINBOW:{...L.RAINBOW,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.INeedARainbow)},TRUE_RECURSION:{...L.TRUE_RECURSION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.TrueRecursion)}};function R(){const t=y.a.achievements.map(t=>t.ID),e=Object.values(A).filter(e=>!t.includes(e.ID)&&e.Condition()).flatMap(t=>[t.ID,...t.AdditionalUnlock||[]]);for(const t of e)y.a.giveAchievement(t);document.achievements=[...y.a.achievements.map(t=>t.ID)]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return P})),n.d(e,"a",(function(){return I}));var a=n(0),r=n.n(a),i=n(127),o=n(115),s=n(139),l=n(5),c=n(118),f=n(1150),u=n(23),m=n(151),h=n(140),d=n(30),p=n(47),g=n(1),y=n(10),b=n(111),E=n(455),v=n.n(E),k=n(1152),_=n.n(k),w=n(8),S=n(29),C=n(382),x=n(7),L=n(20),O=n(21),M=n(9);function T(){const t=Object(i.a)(),e=S.b.Player(),n=P();if(0===e.intelligence)return r.a.createElement(r.a.Fragment,null);const a=e.calculateSkillProgress(e.intelligence_exp);return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:n.cell}},r.a.createElement(g.a,{classes:{root:n.int}},"Int ")),r.a.createElement(d.a,{align:"right",classes:{root:n.cell}},r.a.createElement(g.a,{classes:{root:n.int}},l.a.formatSkill(e.intelligence))),r.a.createElement(d.a,{align:"right",classes:{root:n.cell}},r.a.createElement(g.a,{id:"overview-int-hook",classes:{root:n.int}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:a,color:t.colors.int})))}function A(){const t=S.b.Player(),e=P(),n=t.bladeburner;if(null===n)return r.a.createElement(r.a.Fragment,null);const a=n.getTypeAndNameFromActionId(n.action);return"Idle"===a.type?r.a.createElement(r.a.Fragment,null):r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:e.cellNone}},r.a.createElement(g.a,null,"Bladeburner:"))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:e.cellNone}},r.a.createElement(g.a,null,a.type,": ",a.name))))}function R({tooltip:t,children:e,onClickFocus:n,header:a}){const i=P();return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(L.a,{title:r.a.createElement(r.a.Fragment,null,t)},r.a.createElement(g.a,{className:i.workHeader,sx:{pt:1,pb:.5}},a)))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(g.a,{className:i.workSubtitles},e))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",align:"center",colSpan:2,classes:{root:i.cellNone}},r.a.createElement(y.a,{sx:{mt:1},onClick:n},"Focus"))))}function N(){const t=S.b.Player(),e=S.b.Router();if(!t.isWorking||t.focus)return r.a.createElement(r.a.Fragment,null);let n=r.a.createElement(r.a.Fragment,null),a=r.a.createElement(r.a.Fragment,null),i=r.a.createElement(r.a.Fragment,null);switch(t.workType){case M.a.WorkTypeCompanyPartTime:case M.a.WorkTypeCompany:n=r.a.createElement(r.a.Fragment,null,t.jobs[t.companyName]," at ",r.a.createElement("strong",null,t.companyName)),a=r.a.createElement(r.a.Fragment,null,"Working at ",r.a.createElement("strong",null,t.companyName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:t.workRepGained})," rep");break;case M.a.WorkTypeFaction:n=r.a.createElement(r.a.Fragment,null,t.factionWorkType," for ",r.a.createElement("strong",null,t.currentWorkFactionName)),a=r.a.createElement(r.a.Fragment,null,"Working for ",r.a.createElement("strong",null,t.currentWorkFactionName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:t.workRepGained})," rep");break;case M.a.WorkTypeStudyClass:n=r.a.createElement(r.a.Fragment,null,t.workType),a=r.a.createElement(r.a.Fragment,null,"You are ",t.className),i=r.a.createElement(r.a.Fragment,null,Object(u.b)(t.timeWorked));break;case M.a.WorkTypeCreateProgram:n=r.a.createElement(r.a.Fragment,null,"Coding ",t.createProgramName),a=r.a.createElement(r.a.Fragment,null,"Creating a program"),i=r.a.createElement(r.a.Fragment,null,t.createProgramName," ",(t.timeWorkedCreateProgram/t.timeNeededToCompleteWork*100).toFixed(2),"%");break;case M.a.WorkTypeGraftAugmentation:n=r.a.createElement(r.a.Fragment,null,"Grafting ",t.graftAugmentationName),a=r.a.createElement(r.a.Fragment,null,"Grafting an Augmentation"),i=r.a.createElement(r.a.Fragment,null,r.a.createElement("strong",null,(t.timeWorkedGraftAugmentation/t.timeNeededToCompleteWork*100).toFixed(2),"%")," ","done")}return r.a.createElement(R,{tooltip:n,header:a,onClickFocus:()=>{t.startFocusing(),e.toWork()}},i)}const P=Object(o.a)(t=>Object(s.a)({workCell:{textAlign:"center",maxWidth:"200px",borderBottom:"none",padding:0,margin:0},workHeader:{fontSize:"0.9rem"},workSubtitles:{fontSize:"0.8rem"},cellNone:{borderBottom:"none",padding:0,margin:0},cell:{padding:0,margin:0},hp:{color:t.colors.hp},money:{color:t.colors.money},hack:{color:t.colors.hack},combat:{color:t.colors.combat},cha:{color:t.colors.cha},int:{color:t.colors.int}}));function I({save:t,killScripts:e}){const[n,o]=Object(a.useState)(!1),s=S.b.Player(),c=Object(a.useState)(!1)[1];Object(a.useEffect)(()=>{const t=setInterval(()=>c(t=>!t),600);return()=>clearInterval(t)},[]);const u=P(),y=Object(i.a)(),E=s.calculateSkillProgress(s.hacking_exp,s.hacking_mult*x.a.HackingLevelMultiplier),k=s.calculateSkillProgress(s.strength_exp,s.strength_mult*x.a.StrengthLevelMultiplier),M=s.calculateSkillProgress(s.defense_exp,s.defense_mult*x.a.DefenseLevelMultiplier),R=s.calculateSkillProgress(s.dexterity_exp,s.dexterity_mult*x.a.DexterityLevelMultiplier),I=s.calculateSkillProgress(s.agility_exp,s.agility_mult*x.a.AgilityLevelMultiplier),F=s.calculateSkillProgress(s.charisma_exp,s.charisma_mult*x.a.CharismaLevelMultiplier);return r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{sx:{display:"block",m:1}},r.a.createElement(h.a,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hp}},"HP ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hp}},l.a.formatHp(s.hp)," / ",l.a.formatHp(s.max_hp))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-hp-hook",classes:{root:u.hp}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.money}},"Money ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.money}},l.a.formatMoney(s.money))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-money-hook",classes:{root:u.money}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hack}},"Hack ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hack}},l.a.formatSkill(s.hacking)))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:E,color:y.colors.hack})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.hack}})),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-hack-hook",classes:{root:u.hack}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Str ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.strength))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-str-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:k,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Def ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.defense))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-def-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:M,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Dex ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.dexterity))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-dex-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:R,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.combat}},"Agi ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.agility))),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-agi-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:I,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.cha}},"Cha ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.cha}},l.a.formatSkill(s.charisma))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-cha-hook",classes:{root:u.cha}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:F,color:y.colors.cha})),r.a.createElement(T,null),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-0",classes:{root:u.hack}})),r.a.createElement(d.a,{component:"th",scope:"row",align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-1",classes:{root:u.hack}})),r.a.createElement(d.a,{component:"th",scope:"row",align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-2",classes:{root:u.hack}}))),r.a.createElement(N,null),r.a.createElement(A,null))),r.a.createElement(O.a,{sx:{display:"flex",borderTop:"1px solid "+w.a.theme.welllight}},r.a.createElement(O.a,{sx:{display:"flex",flex:1,justifyContent:"flex-start",alignItems:"center"}},r.a.createElement(b.a,{"aria-label":"save game",onClick:t},r.a.createElement(L.a,{title:0!==w.a.AutosaveInterval?"Save game":"Save game (auto-saves are disabled!)"},r.a.createElement(v.a,{color:0!==w.a.AutosaveInterval?"primary":"error"})))),r.a.createElement(O.a,{sx:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center"}},r.a.createElement(b.a,{"aria-label":"kill all scripts",onClick:()=>o(!0)},r.a.createElement(L.a,{title:"Kill all running scripts"},r.a.createElement(_.a,{color:"error"}))))),r.a.createElement(f.a,{open:n,onClose:()=>o(!1),killScripts:e}))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={0:[0,2e10,"Export","Develop infrastructure to export your materials to your other facilities. This allows you to move materials around between different divisions and cities."],1:[1,25e9,"Smart Supply","Use advanced AI to anticipate your supply needs. This allows you to purchase exactly however many materials you need for production."],2:[2,5e9,"Market Research - Demand","Mine and analyze market data to determine the demand of all resources. The demand attribute, which affects sales, will be displayed for every material and product."],3:[3,5e9,"Market Data - Competition","Mine and analyze market data to determine how much competition there is on the market for all resources. The competition attribute, which affects sales, will be displayed for every material and product."],4:[4,1e10,"VeChain","Use AI and blockchain technology to identify where you can improve your supply chain systems. This upgrade will allow you to view a wide array of useful statistics about your Corporation."],5:[5,5e14,"Shady Accounting","Utilize unscrupulous accounting practices and pay off government officials to save money on taxes. This reduces the dividend tax rate by 5%."],6:[6,2e15,"Government Partnership","Help national governments further their agendas in exchange for lowered taxes. This reduces the dividend tax rate by 10%"],7:[7,5e10,"Warehouse API","Enables the warehouse API."],8:[8,5e10,"Office API","Enables the office API."]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"a",(function(){return h}));var a=n(0),r=n.n(a),i=n(2),o=n(450),s=n(583),l=n(79),c=n(360),f=n(15);let u=!1;function m(t){u=t}function h(t,e,n,a){e?0===l.a[5]&&5!==a&&(i.a.intelligence=0,i.a.intelligence_exp=0):function(t){const e="SourceFile"+t.toString(),n=c.a[e];if(null==n)return void console.error("Could not find source file for Bit node: "+t);let a=!1,o=null;for(let e=0;e=3&&12!==o.n?Object(f.a)(`The Source-File for the BitNode you just destroyed, ${n.name}, is already at max level!`):(++o.lvl,Object(f.a)(n.name+" was upgraded to level "+o.lvl+" for destroying its corresponding BitNode!"));else{const e=new s.a(t,1);i.a.sourceFiles.push(e),5===t&&0===i.a.intelligence&&(i.a.intelligence=1),Object(f.a)(r.a.createElement(r.a.Fragment,null,"You received a Source-File for destroying a BitNode!",r.a.createElement("br",null),r.a.createElement("br",null),n.name,r.a.createElement("br",null),r.a.createElement("br",null),n.info))}}(n),5===a&&0===i.a.intelligence&&(i.a.intelligence=1),u=!1,i.a.bitNodeN=a,6===a?t.toBladeburnerCinematic():t.toTerminal(),Object(o.b)(e)}},,function(t,e,n){"use strict";function a(t,e){if(e<0||e>100)return t;const n=t*(e/100);return t+(Math.random()*(2*n)-n)}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.program=t,this.price=e,this.description=n}}},,,,,,,function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return o}));const r=new class{constructor(){a(this,"m",1024),a(this,"a",341),a(this,"c",1),this.x=0,this.reset()}step(){this.x=(this.a*this.x+this.c)%this.m}random(){return this.step(),this.x/this.m}reset(){this.x=(new Date).getTime()%this.m}};class i{constructor(t){a(this,"s1",0),a(this,"s2",0),a(this,"s3",0);const e=t/1e3%3e4;this.s1=e,this.s2=e,this.s3=e}step(){this.s1=171*this.s1%30269,this.s2=172*this.s2%30307,this.s3=170*this.s3%30323}random(){return this.step(),(this.s1/30269+this.s2/30307+this.s3/30323)%1}}function o(t){let e=1779033703^t.length;for(let n=0;n>>19;const n=()=>(e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0);let a=n(),r=n(),i=n(),o=n();return()=>{a>>>=0,r>>>=0,i>>>=0,o>>>=0;let t=a+r|0;return a=r^r>>>9,r=i+(i<<3)|0,i=i<<21|i>>>11,o=o+1|0,t=t+o|0,i=i+t|0,(t>>>0)/4294967296}}},,,,,,,function(t,e,n){"use strict";function a(t,e){if(t.length!==e.length)return!1;for(let n=0;nObject(o.a)({favor:{color:t.colors.rep}}));function l({favor:t}){const e=s();return a.createElement("span",{className:e.favor},"number"==typeof t?r.a.formatFavor(t):t)}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return b}));var a=n(77),r=n(259),i=n(7),o=n(85),s=n(66),l=n(234),c=n(94),f=n(9),u=n(204),m=n(28),h=n(184),d=n(16),p=n(11),g=n(24);function y(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class b extends r.a{constructor(t=null){super(),y(this,"className",""),y(this,"crimeType",""),y(this,"currentTask",a.a.Idle),y(this,"currentTaskLocation",""),y(this,"currentTaskMaxTime",0),y(this,"currentTaskTime",0),y(this,"earningsForSleeves",Object(r.b)()),y(this,"earningsForPlayer",Object(r.b)()),y(this,"earningsForTask",Object(r.b)()),y(this,"factionWorkType",h.a.None),y(this,"gainRatesForTask",Object(r.b)()),y(this,"gymStatType",""),y(this,"logs",[]),y(this,"memory",1),y(this,"shock",1),y(this,"storedCycles",0),y(this,"sync",1),null!=t&&this.shockRecovery(t)}commitCrime(t,e){const n=o.a[e]||Object.values(o.a).find(t=>t.name===e);return!!n&&(this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.gainRatesForTask.hack=n.hacking_exp*this.hacking_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.str=n.strength_exp*this.strength_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.def=n.defense_exp*this.defense_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.dex=n.dexterity_exp*this.dexterity_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.agi=n.agility_exp*this.agility_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.cha=n.charisma_exp*this.charisma_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.money=n.money*this.crime_money_mult*i.a.CrimeMoney,this.currentTaskLocation=String(this.gainRatesForTask.money),this.crimeType=n.name,this.currentTaskMaxTime=n.time,this.currentTask=a.a.Crime,!0)}finishTask(t){let e=Object(r.b)();if(this.currentTask===a.a.Crime&&this.currentTaskTime>=this.currentTaskMaxTime){const n=Object.values(o.a).find(t=>t.name===this.crimeType);if(!n)return console.error("Invalid data stored in sleeve.crimeType: "+this.crimeType),this.resetTaskStatus(),e;if(Math.random()0&&(this.hacking_exp+=e.hack),e.str>0&&(this.strength_exp+=e.str),e.def>0&&(this.defense_exp+=e.def),e.dex>0&&(this.dexterity_exp+=e.dex),e.agi>0&&(this.agility_exp+=e.agi),e.cha>0&&(this.charisma_exp+=e.cha),Object(r.b)();const i=this.shock/100*(this.sync/100)*n,o=e.hack*i,s=e.str*i,l=e.def*i,c=e.dex*i,f=e.agi*i,u=e.cha*i;return o>0&&(this.hacking_exp+=o,t.gainHackingExp(o),this.earningsForPlayer.hack+=o,this.earningsForTask.hack+=o),s>0&&(this.strength_exp+=s,t.gainStrengthExp(s),this.earningsForPlayer.str+=s,this.earningsForTask.str+=s),l>0&&(this.defense_exp+=l,t.gainDefenseExp(l),this.earningsForPlayer.def+=l,this.earningsForTask.def+=l),c>0&&(this.dexterity_exp+=c,t.gainDexterityExp(c),this.earningsForPlayer.dex+=c,this.earningsForTask.dex+=c),f>0&&(this.agility_exp+=f,t.gainAgilityExp(f),this.earningsForPlayer.agi+=f,this.earningsForTask.agi+=f),u>0&&(this.charisma_exp+=u,t.gainCharismaExp(u),this.earningsForPlayer.cha+=u,this.earningsForTask.cha+=u),this.earningsForSleeves.hack+=o*(this.sync/100),this.earningsForSleeves.str+=s*(this.sync/100),this.earningsForSleeves.def+=l*(this.sync/100),this.earningsForSleeves.dex+=c*(this.sync/100),this.earningsForSleeves.agi+=f*(this.sync/100),this.earningsForSleeves.cha+=u*(this.sync/100),{hack:o*(this.sync/100),str:s*(this.sync/100),def:l*(this.sync/100),dex:c*(this.sync/100),agi:f*(this.sync/100),cha:u*(this.sync/100),money:0}}gainMoney(t,e,n=1){const a=e.money*n;this.earningsForTask.money+=a,this.earningsForPlayer.money+=a,t.gainMoney(a,"sleeves")}getMemoryUpgradeCost(t){const e=Math.round(t);if(e<0)return 0;if(this.memory+e>100)return this.getMemoryUpgradeCost(100-this.memory);let n=0,a=this.memory-1;for(let e=0;e50&&this.logs.shift()}prestige(t){this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.resetTaskStatus(),this.earningsForSleeves=Object(r.b)(),this.earningsForPlayer=Object(r.b)(),this.shockRecovery(t),this.augmentations=[],this.resetMultipliers(),this.city=d.a.Sector12,this.shock=1,this.storedCycles=0,this.sync=Math.max(this.memory,1),this.logs=[]}process(t,e=1){const n=1e3/f.a.MilliPerCycle;if(this.storedCycles+=e,this.storedCyclesthis.currentTaskMaxTime&&(o=this.currentTaskMaxTime-this.currentTaskTime,i=Math.floor(o/f.a.MilliPerCycle),(o<0||i<0)&&(console.warn("Sleeve.process() calculated negative cycle usage"),o=0,i=0)),this.currentTaskTime+=o,this.shock=Math.min(100,this.shock+1e-4*i);let c=Object(r.b)();switch(this.currentTask){case a.a.Idle:break;case a.a.Class:case a.a.Gym:this.updateTaskGainRates(t),c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);break;case a.a.Faction:{c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);const e=m.a[this.currentTaskLocation];if(!(e instanceof u.a)){console.error("Invalid faction for Sleeve task: "+this.currentTaskLocation);break}e.playerReputation+=this.getRepGain(t)*i;break}case a.a.Company:{c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);const e=s.a[this.currentTaskLocation];if(!(e instanceof l.a)){console.error("Invalid company for Sleeve task: "+this.currentTaskLocation);break}e.playerReputation+=this.getRepGain(t)*i;break}case a.a.Recovery:this.shock=Math.min(100,this.shock+2e-4*i),this.shock>=100&&this.resetTaskStatus();break;case a.a.Synchro:this.sync=Math.min(100,this.sync+2e-4*t.getIntelligenceBonus(.5)*i),this.sync>=100&&this.resetTaskStatus()}return 0!==this.currentTaskMaxTime&&this.currentTaskTime>=this.currentTaskMaxTime&&(this.currentTask===a.a.Crime?c=this.finishTask(t):this.finishTask(t)),this.updateStatLevels(),this.storedCycles-=i,c}resetTaskStatus(){this.earningsForTask=Object(r.b)(),this.gainRatesForTask=Object(r.b)(),this.currentTask=a.a.Idle,this.currentTaskTime=0,this.currentTaskMaxTime=0,this.factionWorkType=h.a.None,this.crimeType="",this.currentTaskLocation="",this.gymStatType="",this.className=""}shockRecovery(t){return this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.currentTask=a.a.Recovery,!0}synchronize(t){return this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.currentTask=a.a.Synchro,!0}takeUniversityCourse(t,e,n){this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();let r=1;switch(e.toLowerCase()){case p.a.AevumSummitUniversity.toLowerCase():if(this.city!==d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumSummitUniversity,r=4;break;case p.a.Sector12RothmanUniversity.toLowerCase():if(this.city!==d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12RothmanUniversity,r=3;break;case p.a.VolhavenZBInstituteOfTechnology.toLowerCase():if(this.city!==d.a.Volhaven)return!1;this.currentTaskLocation=p.a.VolhavenZBInstituteOfTechnology,r=5;break;default:return!1}switch(n.toLowerCase()){case"study computer science":break;case"data structures":this.gainRatesForTask.money=f.a.ClassDataStructuresBaseCost*r*-1;break;case"networks":this.gainRatesForTask.money=f.a.ClassNetworksBaseCost*r*-1;break;case"algorithms":this.gainRatesForTask.money=f.a.ClassAlgorithmsBaseCost*r*-1;break;case"management":this.gainRatesForTask.money=f.a.ClassManagementBaseCost*r*-1;break;case"leadership":this.gainRatesForTask.money=f.a.ClassLeadershipBaseCost*r*-1;break;default:return!1}return this.className=n,this.currentTask=a.a.Class,!0}travel(t,e){return t.loseMoney(f.a.TravelCost,"sleeves"),this.city=e,!0}tryBuyAugmentation(t,e){return!!t.canAfford(e.startingCost)&&(!this.augmentations.some(t=>t.name===e.name)&&(t.loseMoney(e.startingCost,"sleeves"),this.installAugmentation(e),!0))}updateTaskGainRates(t){if(this.currentTask!==a.a.Class)if(this.currentTask!==a.a.Gym)console.warn("Sleeve.updateTaskGainRates() called for unexpected task type "+this.currentTask);else{let e=1;switch(this.currentTaskLocation.toLowerCase()){case p.a.AevumCrushFitnessGym.toLowerCase():e=2;break;case p.a.AevumSnapFitnessGym.toLowerCase():e=5;break;case p.a.Sector12IronGym.toLowerCase():e=1;break;case p.a.Sector12PowerhouseGym.toLowerCase():e=10;break;case p.a.VolhavenMilleniumFitnessGym.toLowerCase():e=4;break;default:return}const n=1,a=t.hashManager.getTrainingMult()*e,r=this.gymStatType.toLowerCase();r.includes("str")?this.gainRatesForTask.str=n*a*this.strength_exp_mult:r.includes("def")?this.gainRatesForTask.def=n*a*this.defense_exp_mult:r.includes("dex")?this.gainRatesForTask.dex=n*a*this.dexterity_exp_mult:r.includes("agi")&&(this.gainRatesForTask.agi=n*a*this.agility_exp_mult)}else{let e=1;switch(this.currentTaskLocation.toLowerCase()){case p.a.AevumSummitUniversity.toLowerCase():e=3;break;case p.a.Sector12RothmanUniversity.toLowerCase():e=2;break;case p.a.VolhavenZBInstituteOfTechnology.toLowerCase():e=4;break;default:return}const n=e*t.hashManager.getStudyMult();switch(this.className.toLowerCase()){case"study computer science":this.gainRatesForTask.hack=f.a.ClassStudyComputerScienceBaseExp*n*this.hacking_exp_mult;break;case"data structures":this.gainRatesForTask.hack=f.a.ClassDataStructuresBaseExp*n*this.hacking_exp_mult;break;case"networks":this.gainRatesForTask.hack=f.a.ClassNetworksBaseExp*n*this.hacking_exp_mult;break;case"algorithms":this.gainRatesForTask.hack=f.a.ClassAlgorithmsBaseExp*n*this.hacking_exp_mult;break;case"management":this.gainRatesForTask.cha=f.a.ClassManagementBaseExp*n*this.charisma_exp_mult;break;case"leadership":this.gainRatesForTask.cha=f.a.ClassLeadershipBaseExp*n*this.charisma_exp_mult}}}upgradeMemory(t){t<0?console.warn("Sleeve.upgradeMemory() called with negative value: "+t):this.memory=Math.min(100,Math.round(this.memory+t))}workForCompany(t,e){if(!(s.a[e]instanceof l.a)||null==t.jobs[e])return!1;this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();const n=s.a[e],r=c.a[t.jobs[e]];return null!=n&&(null!=r&&(this.gainRatesForTask.money=r.baseSalary*n.salaryMultiplier*this.work_money_mult*i.a.CompanyWorkMoney,this.gainRatesForTask.hack=r.hackingExpGain*n.expMultiplier*this.hacking_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.str=r.strengthExpGain*n.expMultiplier*this.strength_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.def=r.defenseExpGain*n.expMultiplier*this.defense_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.dex=r.dexterityExpGain*n.expMultiplier*this.dexterity_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.agi=r.agilityExpGain*n.expMultiplier*this.agility_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.cha=r.charismaExpGain*n.expMultiplier*this.charisma_exp_mult*i.a.CompanyWorkExpGain,this.currentTaskLocation=e,this.currentTask=a.a.Company,!0))}workForFaction(t,e,n){const r=m.a[e];if(!(""!==e&&r&&r instanceof u.a&&t.factions.includes(e)))return!1;this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();const o=r.getInfo(),s=n.toLowerCase();if(s.includes("hack")){if(!o.offerHackingWork)return!1;this.factionWorkType=h.a.Hacking,this.gainRatesForTask.hack=.15*this.hacking_exp_mult*i.a.FactionWorkExpGain}else if(s.includes("field")){if(!o.offerFieldWork)return!1;this.factionWorkType=h.a.Field,this.gainRatesForTask.hack=.1*this.hacking_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.str=.1*this.strength_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.def=.1*this.defense_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.dex=.1*this.dexterity_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.agi=.1*this.agility_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.cha=.1*this.charisma_exp_mult*i.a.FactionWorkExpGain}else{if(!s.includes("security"))return!1;if(!o.offerSecurityWork)return!1;this.factionWorkType=h.a.Security,this.gainRatesForTask.hack=.1*this.hacking_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.str=.15*this.strength_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.def=.15*this.defense_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.dex=.15*this.dexterity_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.agi=.15*this.agility_exp_mult*i.a.FactionWorkExpGain}return this.currentTaskLocation=e,this.currentTask=a.a.Faction,!0}workoutAtGym(t,e,n){this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();let r=1;switch(e.toLowerCase()){case p.a.AevumCrushFitnessGym.toLowerCase():if(this.city!=d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumCrushFitnessGym,r=3;break;case p.a.AevumSnapFitnessGym.toLowerCase():if(this.city!=d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumSnapFitnessGym,r=10;break;case p.a.Sector12IronGym.toLowerCase():if(this.city!=d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12IronGym,r=1;break;case p.a.Sector12PowerhouseGym.toLowerCase():if(this.city!=d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12PowerhouseGym,r=20;break;case p.a.VolhavenMilleniumFitnessGym.toLowerCase():if(this.city!=d.a.Volhaven)return!1;this.currentTaskLocation=p.a.VolhavenMilleniumFitnessGym,r=7;break;default:return!1}const i=n.toLowerCase();return this.gainRatesForTask.money=f.a.ClassGymBaseCost*r*-1,!!(i.includes("str")||i.includes("def")||i.includes("dex")||i.includes("agi"))&&(this.gymStatType=n,this.currentTask=a.a.Gym,!0)}toJSON(){return Object(g.b)("Sleeve",this)}static fromJSON(t){return Object(g.a)(b,t.data)}}g.c.constructors.Sleeve=b},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.SyntaxError=-1]="SyntaxError",t[t.ImportError=-2]="ImportError",t[t.URLImportError=-3]="URLImportError"}(a||(a={}))},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(126);const r=new a.a,i=new a.a},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t="",e=""){r(this,"filename",""),r(this,"msg",""),r(this,"recvd",!1),this.filename=t,this.msg=e,this.recvd=!1}toJSON(){return Object(a.b)("Message",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.Message=i},function(t,e,n){"use strict";n.d(e,"a",(function(){return m}));var a=n(242),r=n(148),i=n(114),o=n(76),s=n(5),l=n(19),c=n(15),f=n(8),u=n(0);function m(t,e,n,a){const s=a.stockMarket.Orders;if(null==s){const t={};for(const e of Object.keys(a.stockMarket)){const n=a.stockMarket[e];n instanceof r.a&&(t[n.symbol]=[])}return void(a.stockMarket.Orders=t)}let l=s[t.symbol];if(null==l||l.constructor!==Array)return console.error(`Invalid Order book for ${t.symbol} in processOrders(): ${l}`),void(l=[]);for(const r of l)if(r.type===e&&r.pos===n)switch(r.type){case i.a.LimitBuy:(r.pos===o.a.Long&&t.price<=r.price||r.pos===o.a.Short&&t.price>=r.price)&&h(r,a);break;case i.a.LimitSell:case i.a.StopBuy:(r.pos===o.a.Long&&t.price>=r.price||r.pos===o.a.Short&&t.price<=r.price)&&h(r,a);break;case i.a.StopSell:(r.pos===o.a.Long&&t.price<=r.price||r.pos===o.a.Short&&t.price>=r.price)&&h(r,a);break;default:return void console.warn("Invalid order type: "+r.type)}}function h(t,e){const n=e.symbolToStockMap[t.stockSymbol];if(!(n instanceof r.a))return void console.error("Could not find stock for this order: "+t.stockSymbol);const m=e.stockMarket.Orders[n.symbol],h={suppressDialog:!0};let d=!0,p=!1;switch(t.type){case i.a.LimitBuy:case i.a.StopBuy:p=!0,t.pos===o.a.Long?d=Object(a.a)(n,t.shares,null,h)&&d:t.pos===o.a.Short&&(d=Object(a.d)(n,t.shares,null,h)&&d);break;case i.a.LimitSell:case i.a.StopSell:t.pos===o.a.Long?d=Object(a.c)(n,t.shares,null,h)&&d:t.pos===o.a.Short&&(d=Object(a.b)(n,t.shares,null,h)&&d);break;default:return void console.warn("Invalid order type: "+t.type)}const g=t.pos===o.a.Long?"Long":"Short";if(d){for(let e=0;e({...a})},,function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return m}));var a=n(0),r=n.n(a),i=n(126),o=n(41),s=n(1),l=n(21),c=n(746);const f=new i.a;let u=0;function m(){const[t,e]=Object(a.useState)([]);return Object(a.useEffect)(()=>f.subscribe(t=>{const n=u+"";u++,e(e=>{const a=function(t){return"string"==typeof t?Object(c.sha256)(t):Object(c.sha256)(JSON.stringify(t.props))}(t);return e.some(t=>t.hash===a)?(console.log("Duplicate message"),e):[...e,{id:n,text:t,hash:a}]})}),[]),Object(a.useEffect)(()=>{function t(t){"Escape"===t.code&&e([])}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[]),r.a.createElement(r.a.Fragment,null,t.length>0&&r.a.createElement(o.a,{open:!0,onClose:function(){e(t=>t.slice(1,1e99))}},r.a.createElement(l.a,{overflow:"scroll",sx:{overflowWrap:"break-word",whiteSpace:"pre-line"}},r.a.createElement(s.a,{component:"span"},t[0].text))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(530);function r(){return Object(a.a)(99)+"."+Object(a.a)(9)+"."+Object(a.a)(9)+"."+Object(a.a)(9)}},function(t,e,n){"use strict";function a(){return new Promise((t,e)=>{window.indexedDB||e("Indexed DB does not exists");const n=window.indexedDB.open("bitburnerSave",1);n.onupgradeneeded=function(){this.result.createObjectStore("savestring")},n.onerror=function(t){e("Failed to get IDB "+t)},n.onsuccess=function(){const n=this.result;n?t(n.transaction(["savestring"],"readwrite").objectStore("savestring")):e("database loading result was undefined")}})}function r(){return new Promise((t,e)=>{a().then(e=>new Promise((t,n)=>{const a=e.get("save");a.onerror=function(t){n("Error in Database request to get savestring: "+t)},a.onsuccess=function(){t(this.result)}}).then(e=>t(e))).catch(t=>e(t))})}function i(t){return a().then(e=>new Promise((n,a)=>{const r=e.put(t,"save");r.onerror=function(t){a("Error saving game to IndexedDB: "+t)},r.onsuccess=()=>n()}))}function o(){return a().then(t=>{t.delete("save")})}n.d(e,"b",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){return o}))},,,function(t,e,n){"use strict";function a(t){const e=25e3*(Math.pow(1.02,t)-1);return Math.round(1e4*e)/1e4}function r(t){const e=Math.log(t/25e3+1)/Math.log(1.02);return Math.round(1e4*e)/1e4}n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return s}));var a=n(28);let r=0;function i(){return(new Date).getTime()-r>864e5}function o(t){if(i()){for(const e of t.factions)a.a[e].favor++;r=(new Date).getTime()}}function s(t){r=t}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(62),r=n(449),i=n(24);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class s extends r.a{constructor(t=null){super(t),o(this,"reqdRank",100),o(this,"teamCount",0),t&&t.reqdRank&&(this.reqdRank=t.reqdRank),t&&t.teamCount&&(this.teamCount=t.teamCount)}getTeamSuccessBonus(t){if(this.teamCount&&this.teamCount>0){this.teamCount=Math.min(this.teamCount,t.teamSize);return Math.pow(this.teamCount,.05)}return 1}getActionTypeSkillSuccessBonus(t){return t.skillMultipliers.successChanceOperation}getChaosDifficultyBonus(t){const e=t.getCurrentCity();if(e.chaos>a.a.ChaosThreshold){const t=e.chaos-a.a.ChaosThreshold+1;return Math.pow(t,.5)}return 1}toJSON(){return Object(i.b)("Operation",this)}static fromJSON(t){return Object(i.a)(s,t.data)}}i.c.constructors.Operation=s},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(4),r=n(11),i=n(64),o=n(103);const s=[{hackDifficulty:99,hostname:r.a.AevumECorp.toLowerCase(),moneyAvailable:{max:7e10,min:3e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.AevumECorp,requiredHackingSkill:{max:1400,min:1050},serverGrowth:99,specialName:r.a.AevumECorp},{hackDifficulty:99,hostname:r.a.Sector12MegaCorp.toLowerCase(),moneyAvailable:{max:6e10,min:4e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.Sector12MegaCorp,requiredHackingSkill:{max:1350,min:1100},serverGrowth:99,specialName:r.a.Sector12MegaCorp},{hackDifficulty:{max:88,min:72},hostname:"b-and-a",moneyAvailable:{max:3e10,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.AevumBachmanAndAssociates,requiredHackingSkill:{max:1150,min:900},serverGrowth:{max:80,min:60},specialName:r.a.AevumBachmanAndAssociates},{hackDifficulty:{max:97,min:88},hostname:"blade",literature:[i.a.BeyondMan],maxRamExponent:{max:9,min:5},moneyAvailable:{max:4e10,min:1e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.Sector12BladeIndustries,requiredHackingSkill:{max:1200,min:900},serverGrowth:{max:85,min:55},specialName:r.a.Sector12BladeIndustries},{hackDifficulty:99,hostname:r.a.VolhavenNWO.toLowerCase(),literature:[i.a.TheHiddenWorld],moneyAvailable:{max:4e10,min:2e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.VolhavenNWO,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:95,min:65},specialName:r.a.VolhavenNWO},{hackDifficulty:{max:65,min:45},hostname:"clarkinc",literature:[i.a.BeyondMan,i.a.CostOfImmortality],moneyAvailable:{max:25e9,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.AevumClarkeIncorporated,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:75,min:45},specialName:r.a.AevumClarkeIncorporated},{hackDifficulty:{max:99,min:90},hostname:"omnitek",literature:[i.a.CodedIntelligence,i.a.HistoryOfSynthoids],maxRamExponent:{max:9,min:7},moneyAvailable:{max:22e9,min:13e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.VolhavenOmniTekIncorporated,requiredHackingSkill:{max:1100,min:900},serverGrowth:{max:99,min:95},specialName:r.a.VolhavenOmniTekIncorporated},{hackDifficulty:{max:75,min:55},hostname:"4sigma",moneyAvailable:{max:25e9,min:15e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.Sector12FourSigma,requiredHackingSkill:{max:1250,min:900},serverGrowth:{max:99,min:75},specialName:r.a.Sector12FourSigma},{hackDifficulty:{max:99,min:95},hostname:"kuai-gong",moneyAvailable:{max:3e10,min:2e10},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.ChongqingKuaiGongInternational,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:99,min:90},specialName:r.a.ChongqingKuaiGongInternational},{hackDifficulty:{max:97,min:83},hostname:"fulcrumtech",literature:[i.a.SimulatedReality],maxRamExponent:{max:11,min:7},moneyAvailable:{max:18e8,min:14e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:99,min:80},specialName:r.a.AevumFulcrumTechnologies},{hackDifficulty:99,hostname:"fulcrumassets",moneyAvailable:1e6,networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1600,min:1100},serverGrowth:1,specialName:o.a.FulcrumSecretTechnologies},{hackDifficulty:{max:92,min:78},hostname:"stormtech",moneyAvailable:{max:12e8,min:1e9},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.IshimaStormTechnologies,requiredHackingSkill:{max:1075,min:875},serverGrowth:{max:92,min:68},specialName:r.a.IshimaStormTechnologies},{hackDifficulty:{max:96,min:84},hostname:"defcomm",moneyAvailable:{max:95e7,min:8e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.NewTokyoDefComm,requiredHackingSkill:{max:1050,min:850},serverGrowth:{max:73,min:47},specialName:r.a.NewTokyoDefComm},{hackDifficulty:{max:90,min:70},hostname:"infocomm",moneyAvailable:{max:9e8,min:6e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"InfoComm",requiredHackingSkill:{max:950,min:875},serverGrowth:{max:75,min:35}},{hackDifficulty:{max:95,min:85},hostname:"helios",literature:[i.a.BeyondMan],maxRamExponent:{max:8,min:5},moneyAvailable:{max:75e7,min:55e7},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.VolhavenHeliosLabs,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:80,min:70},specialName:r.a.VolhavenHeliosLabs},{hackDifficulty:{max:90,min:80},hostname:r.a.NewTokyoVitaLife.toLowerCase(),literature:[i.a.AGreenTomorrow],maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.NewTokyoVitaLife,requiredHackingSkill:{max:900,min:775},serverGrowth:{max:80,min:60},specialName:r.a.NewTokyoVitaLife},{hackDifficulty:{max:95,min:85},hostname:"icarus",moneyAvailable:{max:1e9,min:9e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.Sector12IcarusMicrosystems,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:95,min:85},specialName:r.a.Sector12IcarusMicrosystems},{hackDifficulty:{max:90,min:80},hostname:"univ-energy",maxRamExponent:{max:7,min:4},moneyAvailable:{max:12e8,min:11e8},networkLayer:9,numOpenPortsRequired:4,organizationName:r.a.Sector12UniversalEnergy,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:90,min:80},specialName:r.a.Sector12UniversalEnergy},{hackDifficulty:{max:80,min:70},hostname:"titan-labs",literature:[i.a.CodedIntelligence],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:75e7},networkLayer:11,numOpenPortsRequired:5,organizationName:"Titan Laboratories",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:80,min:60}},{hackDifficulty:{max:75,min:65},hostname:"microdyne",literature:[i.a.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:11,numOpenPortsRequired:5,organizationName:"Microdyne Technologies",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:90,min:70}},{hackDifficulty:{max:80,min:70},hostname:"taiyang-digital",literature:[i.a.AGreenTomorrow,i.a.BrighterThanTheSun],moneyAvailable:{max:9e8,min:8e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"Taiyang Digital",requiredHackingSkill:{max:950,min:850},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:65,min:55},hostname:"galactic-cyber",moneyAvailable:{max:85e7,min:75e7},networkLayer:7,numOpenPortsRequired:5,organizationName:r.a.AevumGalacticCybersystems,requiredHackingSkill:{max:875,min:825},serverGrowth:{max:90,min:70},specialName:r.a.AevumGalacticCybersystems},{hackDifficulty:{max:90,min:80},hostname:r.a.AevumAeroCorp.toLowerCase(),literature:[i.a.ManAndMachine],moneyAvailable:{max:12e8,min:1e9},networkLayer:7,numOpenPortsRequired:5,organizationName:r.a.AevumAeroCorp,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:65,min:55},specialName:r.a.AevumAeroCorp},{hackDifficulty:{max:95,min:85},hostname:"omnia",literature:[i.a.HistoryOfSynthoids],maxRamExponent:{max:6,min:4},moneyAvailable:{max:1e9,min:9e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.a.VolhavenOmniaCybersystems,requiredHackingSkill:{max:950,min:850},serverGrowth:{max:70,min:60},specialName:r.a.VolhavenOmniaCybersystems},{hackDifficulty:{max:65,min:55},hostname:"zb-def",literature:[i.a.SyntheticMuscles],moneyAvailable:{max:11e8,min:9e8},networkLayer:10,numOpenPortsRequired:4,organizationName:"ZB Defense Industries",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:75,min:65}},{hackDifficulty:{max:80,min:60},hostname:"applied-energetics",moneyAvailable:{max:1e9,min:7e8},networkLayer:11,numOpenPortsRequired:4,organizationName:"Applied Energetics",requiredHackingSkill:{max:850,min:775},serverGrowth:{max:75,min:70}},{hackDifficulty:{max:80,min:70},hostname:"solaris",literature:[i.a.AGreenTomorrow,i.a.TheFailedFrontier],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:7e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.ChongqingSolarisSpaceSystems,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:80,min:70},specialName:r.a.ChongqingSolarisSpaceSystems},{hackDifficulty:{max:85,min:75},hostname:r.a.Sector12DeltaOne.toLowerCase(),moneyAvailable:{max:17e8,min:13e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.a.Sector12DeltaOne,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:70,min:50},specialName:r.a.Sector12DeltaOne},{hackDifficulty:{max:85,min:75},hostname:"global-pharm",literature:[i.a.AGreenTomorrow],maxRamExponent:{max:6,min:3},moneyAvailable:{max:175e7,min:15e8},networkLayer:7,numOpenPortsRequired:4,organizationName:r.a.NewTokyoGlobalPharmaceuticals,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:90,min:80},specialName:r.a.NewTokyoGlobalPharmaceuticals},{hackDifficulty:{max:80,min:60},hostname:"nova-med",moneyAvailable:{max:125e7,min:11e8},networkLayer:10,numOpenPortsRequired:4,organizationName:r.a.IshimaNovaMedical,requiredHackingSkill:{max:850,min:775},serverGrowth:{max:85,min:65},specialName:r.a.IshimaNovaMedical},{hackDifficulty:{max:90,min:70},hostname:"zeus-med",moneyAvailable:{max:15e8,min:13e8},networkLayer:9,numOpenPortsRequired:5,organizationName:"Zeus Medical",requiredHackingSkill:{max:850,min:800},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:70},hostname:"unitalife",maxRamExponent:{max:6,min:4},moneyAvailable:{max:11e8,min:1e9},networkLayer:8,numOpenPortsRequired:4,organizationName:"UnitaLife Group",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:60},hostname:"lexo-corp",maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.VolhavenLexoCorp,requiredHackingSkill:{max:750,min:650},serverGrowth:{max:65,min:55},specialName:r.a.VolhavenLexoCorp},{hackDifficulty:{max:60,min:40},hostname:"rho-construction",maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:6,numOpenPortsRequired:3,organizationName:r.a.AevumRhoConstruction,requiredHackingSkill:{max:525,min:475},serverGrowth:{max:60,min:40},specialName:r.a.AevumRhoConstruction},{hackDifficulty:{max:70,min:50},hostname:"alpha-ent",literature:[i.a.Sector12Crime],maxRamExponent:{max:7,min:4},moneyAvailable:{max:75e7,min:6e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.Sector12AlphaEnterprises,requiredHackingSkill:{max:600,min:500},serverGrowth:{max:60,min:50},specialName:r.a.Sector12AlphaEnterprises},{hackDifficulty:{max:80,min:70},hostname:"aevum-police",maxRamExponent:{max:6,min:4},moneyAvailable:{max:4e8,min:2e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.AevumPolice,requiredHackingSkill:{max:450,min:400},serverGrowth:{max:50,min:30},specialName:r.a.AevumPolice},{hackDifficulty:{max:55,min:45},hostname:"rothman-uni",literature:[i.a.SecretSocieties,i.a.TheFailedFrontier,i.a.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:25e7,min:175e6},networkLayer:5,numOpenPortsRequired:3,organizationName:r.a.Sector12RothmanUniversity,requiredHackingSkill:{max:430,min:370},serverGrowth:{max:45,min:35},specialName:r.a.Sector12RothmanUniversity},{hackDifficulty:{max:85,min:65},hostname:"zb-institute",maxRamExponent:{max:7,min:4},moneyAvailable:{max:11e8,min:8e8},networkLayer:5,numOpenPortsRequired:5,organizationName:r.a.VolhavenZBInstituteOfTechnology,requiredHackingSkill:{max:775,min:725},serverGrowth:{max:85,min:75},specialName:r.a.VolhavenZBInstituteOfTechnology},{hackDifficulty:{max:65,min:45},hostname:"summit-uni",literature:[i.a.SecretSocieties,i.a.TheFailedFrontier,i.a.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:35e7,min:2e8},networkLayer:5,numOpenPortsRequired:3,organizationName:r.a.AevumSummitUniversity,requiredHackingSkill:{max:475,min:425},serverGrowth:{max:60,min:40},specialName:r.a.AevumSummitUniversity},{hackDifficulty:{max:80,min:60},hostname:"syscore",moneyAvailable:{max:6e8,min:4e8},networkLayer:5,numOpenPortsRequired:4,organizationName:r.a.VolhavenSysCoreSecurities,requiredHackingSkill:{max:650,min:550},serverGrowth:{max:70,min:60},specialName:r.a.VolhavenSysCoreSecurities},{hackDifficulty:{max:70,min:60},hostname:"catalyst",literature:[i.a.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:55e7,min:3e8},networkLayer:5,numOpenPortsRequired:3,organizationName:"Catalyst Ventures",requiredHackingSkill:{max:450,min:400},serverGrowth:{max:55,min:25}},{hackDifficulty:{max:45,min:35},hostname:"the-hub",maxRamExponent:{max:6,min:3},moneyAvailable:{max:2e8,min:15e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"The Hub",requiredHackingSkill:{max:325,min:275},serverGrowth:{max:55,min:45}},{hackDifficulty:{max:65,min:55},hostname:r.a.VolhavenCompuTek.toLowerCase(),literature:[i.a.ManAndMachine],moneyAvailable:{max:25e7,min:22e7},networkLayer:4,numOpenPortsRequired:3,organizationName:r.a.VolhavenCompuTek,requiredHackingSkill:{max:400,min:300},serverGrowth:{max:65,min:45},specialName:r.a.VolhavenCompuTek},{hackDifficulty:{max:80,min:60},hostname:"netlink",literature:[i.a.SimulatedReality],maxRamExponent:{max:7,min:4},moneyAvailable:275e6,networkLayer:4,numOpenPortsRequired:3,organizationName:r.a.AevumNetLinkTechnologies,requiredHackingSkill:{max:425,min:375},serverGrowth:{max:75,min:45},specialName:r.a.AevumNetLinkTechnologies},{hackDifficulty:{max:65,min:35},hostname:"johnson-ortho",moneyAvailable:{max:85e6,min:7e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Johnson Orthopedics",requiredHackingSkill:{max:300,min:250},serverGrowth:{max:65,min:35}},{hackDifficulty:1,hostname:"n00dles",literature:[],maxRamExponent:2,moneyAvailable:7e4,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.NewTokyoNoodleBar,requiredHackingSkill:1,serverGrowth:3e3,specialName:r.a.NewTokyoNoodleBar},{hackDifficulty:10,hostname:r.a.Sector12FoodNStuff.toLowerCase(),literature:[i.a.Sector12Crime],maxRamExponent:4,moneyAvailable:2e6,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.Sector12FoodNStuff,requiredHackingSkill:1,serverGrowth:5,specialName:r.a.Sector12FoodNStuff},{hackDifficulty:10,hostname:"sigma-cosmetics",maxRamExponent:4,moneyAvailable:23e5,networkLayer:1,numOpenPortsRequired:0,organizationName:"Sigma Cosmetics",requiredHackingSkill:5,serverGrowth:10},{hackDifficulty:15,hostname:"joesguns",maxRamExponent:4,moneyAvailable:25e5,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.Sector12JoesGuns,requiredHackingSkill:10,serverGrowth:20,specialName:r.a.Sector12JoesGuns},{hackDifficulty:25,hostname:"zer0",maxRamExponent:5,moneyAvailable:75e5,networkLayer:2,numOpenPortsRequired:1,organizationName:"ZER0 Nightclub",requiredHackingSkill:75,serverGrowth:40},{hackDifficulty:20,hostname:"nectar-net",maxRamExponent:4,moneyAvailable:275e4,networkLayer:2,numOpenPortsRequired:0,organizationName:"Nectar Nightclub Network",requiredHackingSkill:20,serverGrowth:25},{hackDifficulty:25,hostname:"neo-net",literature:[i.a.TheHiddenWorld],maxRamExponent:5,moneyAvailable:5e6,networkLayer:3,numOpenPortsRequired:1,organizationName:"Neo Nightclub Network",requiredHackingSkill:50,serverGrowth:25},{hackDifficulty:30,hostname:"silver-helix",literature:[i.a.NewTriads],maxRamExponent:6,moneyAvailable:45e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Silver Helix",requiredHackingSkill:150,serverGrowth:30},{hackDifficulty:15,hostname:"hong-fang-tea",literature:[i.a.BrighterThanTheSun],maxRamExponent:4,moneyAvailable:3e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HongFang Teahouse",requiredHackingSkill:30,serverGrowth:20},{hackDifficulty:15,hostname:"harakiri-sushi",maxRamExponent:4,moneyAvailable:4e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HaraKiri Sushi Bar Network",requiredHackingSkill:40,serverGrowth:40},{hackDifficulty:20,hostname:"phantasy",maxRamExponent:5,moneyAvailable:24e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Phantasy Club",requiredHackingSkill:100,serverGrowth:35},{hackDifficulty:15,hostname:"max-hardware",maxRamExponent:5,moneyAvailable:1e7,networkLayer:2,numOpenPortsRequired:1,organizationName:"Max Hardware Store",requiredHackingSkill:80,serverGrowth:30},{hackDifficulty:{max:35,min:25},hostname:"omega-net",literature:[i.a.TheNewGod],maxRamExponent:5,moneyAvailable:{max:7e7,min:6e7},networkLayer:3,numOpenPortsRequired:2,organizationName:r.a.IshimaOmegaSoftware,requiredHackingSkill:{max:220,min:180},serverGrowth:{max:40,min:30},specialName:r.a.IshimaOmegaSoftware},{hackDifficulty:{max:45,min:35},hostname:"crush-fitness",moneyAvailable:{max:6e7,min:4e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Crush Fitness",requiredHackingSkill:{max:275,min:225},serverGrowth:{max:33,min:27},specialName:r.a.AevumCrushFitnessGym},{hackDifficulty:30,hostname:"iron-gym",maxRamExponent:5,moneyAvailable:2e7,networkLayer:1,numOpenPortsRequired:1,organizationName:r.a.Sector12IronGym+" Network",requiredHackingSkill:100,serverGrowth:20,specialName:r.a.Sector12IronGym},{hackDifficulty:{max:55,min:45},hostname:"millenium-fitness",maxRamExponent:{max:8,min:4},moneyAvailable:25e7,networkLayer:6,numOpenPortsRequired:3,organizationName:"Millenium Fitness Network",requiredHackingSkill:{max:525,min:475},serverGrowth:{max:45,min:25},specialName:r.a.VolhavenMilleniumFitnessGym},{hackDifficulty:{max:65,min:55},hostname:"powerhouse-fitness",maxRamExponent:{max:6,min:4},moneyAvailable:9e8,networkLayer:14,numOpenPortsRequired:5,organizationName:"Powerhouse Fitness",requiredHackingSkill:{max:1100,min:950},serverGrowth:{max:60,min:50},specialName:r.a.Sector12PowerhouseGym},{hackDifficulty:{max:60,min:40},hostname:"snap-fitness",moneyAvailable:45e7,networkLayer:7,numOpenPortsRequired:4,organizationName:"Snap Fitness",requiredHackingSkill:{max:800,min:675},serverGrowth:{max:60,min:40},specialName:r.a.AevumSnapFitnessGym},{hackDifficulty:0,hostname:"run4theh111z",literature:[i.a.SimulatedReality,i.a.TheNewGod],maxRamExponent:{max:9,min:5},moneyAvailable:0,networkLayer:11,numOpenPortsRequired:4,organizationName:"The Runners",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:o.a.BitRunnersServer},{hackDifficulty:0,hostname:"I.I.I.I",literature:[i.a.DemocracyIsDead],maxRamExponent:{max:8,min:4},moneyAvailable:0,networkLayer:5,numOpenPortsRequired:3,organizationName:"I.I.I.I",requiredHackingSkill:{max:365,min:340},serverGrowth:0,specialName:o.a.TheBlackHandServer},{hackDifficulty:0,hostname:"avmnite-02h",literature:[i.a.DemocracyIsDead],maxRamExponent:{max:7,min:4},moneyAvailable:0,networkLayer:4,numOpenPortsRequired:2,organizationName:a.a.NiteSec,requiredHackingSkill:{max:220,min:202},serverGrowth:0,specialName:o.a.NiteSecServer},{hackDifficulty:0,hostname:".",maxRamExponent:4,moneyAvailable:0,networkLayer:13,numOpenPortsRequired:4,organizationName:".",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:o.a.TheDarkArmyServer},{hackDifficulty:0,hostname:"CSEC",literature:[i.a.DemocracyIsDead],maxRamExponent:3,moneyAvailable:0,networkLayer:2,numOpenPortsRequired:1,organizationName:a.a.CyberSec,requiredHackingSkill:{max:60,min:51},serverGrowth:0,specialName:o.a.CyberSecServer},{hackDifficulty:0,hostname:"The-Cave",literature:[i.a.AlphaOmega],moneyAvailable:0,networkLayer:15,numOpenPortsRequired:5,organizationName:"Helios",requiredHackingSkill:925,serverGrowth:0,specialName:o.a.DaedalusServer},{hackDifficulty:0,hostname:"w0r1d_d43m0n",moneyAvailable:0,numOpenPortsRequired:5,organizationName:"w0r1d_d43m0n",requiredHackingSkill:3e3,serverGrowth:0,specialName:o.a.WorldDaemon}]},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}));class r{constructor(t=""){a(this,"level",1),a(this,"name",""),this.name=t}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(9),r=n(31);class i{constructor(t){this.name=t.name,this.nextPosition=t.nextPosition,this.baseSalary=t.baseSalary,this.repMultiplier=t.repMultiplier,this.requiredHacking=null!=t.reqdHacking?t.reqdHacking:0,this.requiredStrength=null!=t.reqdStrength?t.reqdStrength:0,this.requiredDefense=null!=t.reqdDefense?t.reqdDefense:0,this.requiredDexterity=null!=t.reqdDexterity?t.reqdDexterity:0,this.requiredAgility=null!=t.reqdAgility?t.reqdAgility:0,this.requiredCharisma=null!=t.reqdCharisma?t.reqdCharisma:0,this.requiredReputation=null!=t.reqdReputation?t.reqdReputation:0,this.hackingEffectiveness=null!=t.hackingEffectiveness?t.hackingEffectiveness:0,this.strengthEffectiveness=null!=t.strengthEffectiveness?t.strengthEffectiveness:0,this.defenseEffectiveness=null!=t.defenseEffectiveness?t.defenseEffectiveness:0,this.dexterityEffectiveness=null!=t.dexterityEffectiveness?t.dexterityEffectiveness:0,this.agilityEffectiveness=null!=t.agilityEffectiveness?t.agilityEffectiveness:0,this.charismaEffectiveness=null!=t.charismaEffectiveness?t.charismaEffectiveness:0,100!==Math.round(this.hackingEffectiveness+this.strengthEffectiveness+this.defenseEffectiveness+this.dexterityEffectiveness+this.agilityEffectiveness+this.charismaEffectiveness)&&console.error(`CompanyPosition ${this.name} parameters do not sum to 100`),this.hackingExpGain=null!=t.hackingExpGain?t.hackingExpGain:0,this.strengthExpGain=null!=t.strengthExpGain?t.strengthExpGain:0,this.defenseExpGain=null!=t.defenseExpGain?t.defenseExpGain:0,this.dexterityExpGain=null!=t.dexterityExpGain?t.dexterityExpGain:0,this.agilityExpGain=null!=t.agilityExpGain?t.agilityExpGain:0,this.charismaExpGain=null!=t.charismaExpGain?t.charismaExpGain:0}calculateJobPerformance(t,e,n,r,i,o){const s=this.hackingEffectiveness*t/a.a.MaxSkillLevel,l=this.strengthEffectiveness*e/a.a.MaxSkillLevel,c=this.defenseEffectiveness*n/a.a.MaxSkillLevel,f=this.dexterityEffectiveness*r/a.a.MaxSkillLevel,u=this.agilityEffectiveness*i/a.a.MaxSkillLevel,m=this.charismaEffectiveness*o/a.a.MaxSkillLevel;let h=this.repMultiplier*(s+l+c+f+u+m)/100;return isNaN(h)&&(console.error("Company reputation gain calculated to be NaN"),h=0),h}isSoftwareJob(){return r.j.includes(this.name)}isITJob(){return r.d.includes(this.name)}isSecurityEngineerJob(){return r.i.includes(this.name)}isNetworkEngineerJob(){return r.f.includes(this.name)}isBusinessJob(){return r.b.includes(this.name)}isSecurityJob(){return r.h.includes(this.name)}isAgentJob(){return r.a.includes(this.name)}isSoftwareConsultantJob(){return r.k.includes(this.name)}isBusinessConsultantJob(){return r.c.includes(this.name)}isPartTimeJob(){return r.g.includes(this.name)}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(258);const o={};o.SourceFile1=new i.a(1,r.a.createElement(r.a.Fragment,null,"This Source-File lets the player start with 32GB of RAM on his/her home computer. It also increases all of the player's multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 16%",r.a.createElement("br",null),"Level 2: 24%",r.a.createElement("br",null),"Level 3: 28%")),o.SourceFile2=new i.a(2,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 24%",r.a.createElement("br",null),"Level 2: 36%",r.a.createElement("br",null),"Level 3: 42%")),o.SourceFile3=new i.a(3,r.a.createElement(r.a.Fragment,null,"This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:",r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile4=new i.a(4,r.a.createElement(r.a.Fragment,null,"This Source-File lets you access and use the Singularity Functions in every BitNode. Every level of this Source-File reduces the RAM cost of Singularity functions.")),o.SourceFile5=new i.a(5,r.a.createElement(r.a.Fragment,null,"This Source-File grants a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with Formulas.exe, and will raise all of your hacking-related multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile6=new i.a(6,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to access the NSA's Bladeburner Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile7=new i.a(7,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to access the Bladeburner Netscript API in other BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile8=new i.a(8,r.a.createElement(r.a.Fragment,null,"This Source-File grants the following benefits:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",r.a.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",r.a.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",r.a.createElement("br",null),r.a.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",r.a.createElement("br",null),"Level 1: 12%",r.a.createElement("br",null),"Level 2: 18%",r.a.createElement("br",null),"Level 3: 21%")),o.SourceFile9=new i.a(9,r.a.createElement(r.a.Fragment,null,"This Source-File grants the following benefits:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",r.a.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",r.a.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",r.a.createElement("br",null),r.a.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",r.a.createElement("br",null),r.a.createElement("br",null),"This Source-File also increases your hacknet multipliers by:",r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile10=new i.a(10,r.a.createElement(r.a.Fragment,null,"This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),o.SourceFile11=new i.a(11,r.a.createElement(r.a.Fragment,null,"This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 32%",r.a.createElement("br",null),"Level 2: 48%",r.a.createElement("br",null),"Level 3: 56%",r.a.createElement("br",null),r.a.createElement("br",null),"It also reduces the price increase for every aug bought by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 4%",r.a.createElement("br",null),"Level 2: 6%",r.a.createElement("br",null),"Level 3: 7%")),o.SourceFile12=new i.a(12,r.a.createElement(r.a.Fragment,null,"This Source-File lets the player start with Neuroflux Governor equal to the level of this Source-File.")),o.SourceFile13=new i.a(13,r.a.createElement(r.a.Fragment,null,"Each level of this Source-File increases the size of Stanek's Gift."))},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(8),r=n(88),i=n(24),o=n(365);function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class l{constructor(t=null,e=[]){s(this,"args",[]),s(this,"dataMap",{}),s(this,"filename",""),s(this,"logs",[]),s(this,"logUpd",!1),s(this,"offlineExpGained",0),s(this,"offlineMoneyMade",0),s(this,"offlineRunningTime",.01),s(this,"onlineExpGained",0),s(this,"onlineMoneyMade",0),s(this,"onlineRunningTime",.01),s(this,"pid",-1),s(this,"ramUsage",0),s(this,"server",""),s(this,"threads",1),s(this,"dependencies",[]),null!=t&&(this.filename=t.filename,this.args=e,this.server=t.server,this.ramUsage=t.ramUsage,this.dependencies=t.dependencies)}log(t){this.logs.length>a.a.MaxLogCapacity&&this.logs.shift();let e=t;a.a.TimestampsFormat&&(e="["+Object(o.a)(a.a.TimestampsFormat)+"] "+e),this.logs.push(e),this.logUpd=!0}displayLog(){for(let t=0;tH4CK||3T 8URN3R5**>?>\\~~"),offerHackingWork:!0}),[i.a.TianDiHui]:new o({infoText:r.a.createElement(r.a.Fragment,null,"Obey Heaven and work righteously."),offerHackingWork:!0,offerSecurityWork:!0}),[i.a.CyberSec]:new o({infoText:r.a.createElement(r.a.Fragment,null,"The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse."),offerHackingWork:!0}),[i.a.Bladeburners]:new o({infoText:r.a.createElement(r.a.Fragment,null,"It's too bad they won't live. But then again, who does?",r.a.createElement("br",null),r.a.createElement("br",null),"Note that for this faction, reputation can only be gained through ",i.a.Bladeburners," actions."," ","Completing ",i.a.Bladeburners," contracts/operations will increase your reputation."),special:!0}),[i.a.ChurchOfTheMachineGod]:new o({infoText:r.a.createElement(r.a.Fragment,null," `` ",r.a.createElement("br",null)," -odmmNmds: ",r.a.createElement("br",null)," `hNmo:..-omNh. ",r.a.createElement("br",null)," yMd` `hNh ",r.a.createElement("br",null)," mMd oNm ",r.a.createElement("br",null)," oMNo .mM/ ",r.a.createElement("br",null)," `dMN+ -mM+ ",r.a.createElement("br",null)," -mMNo -mN+ ",r.a.createElement("br",null)," .+- :mMNo/mN/ ",r.a.createElement("br",null),":yNMd. :NMNNN/ ",r.a.createElement("br",null),"-mMMMh. /NMMh` ",r.a.createElement("br",null)," .dMMMd. /NMMMy` ",r.a.createElement("br",null)," `yMMMd. /NNyNMMh` ",r.a.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",r.a.createElement("br",null)," oMMMm- oNm: /NMMd. ",r.a.createElement("br",null)," +NMMmsMm- :mMMd. ",r.a.createElement("br",null)," /NMMMm- -mMMd. ",r.a.createElement("br",null)," /MMMm- -mMMd. ",r.a.createElement("br",null)," `sMNMMm- .mMmo ",r.a.createElement("br",null)," `sMd:hMMm. ./. ",r.a.createElement("br",null)," `yMy` `yNMd` ",r.a.createElement("br",null)," `hMs` oMMy ",r.a.createElement("br",null)," `hMh sMN- ",r.a.createElement("br",null)," /MM- .NMo ",r.a.createElement("br",null)," +MM: :MM+ ",r.a.createElement("br",null)," sNNo-.`.-omNy` ",r.a.createElement("br",null)," -smNNNNmdo- ",r.a.createElement("br",null)," `..` ",r.a.createElement("br",null),r.a.createElement("br",null),"Many cultures predict an end to humanity in the near future, a final Armageddon that will end the world; but we disagree.",r.a.createElement("br",null),r.a.createElement("br",null),"Note that for this faction, reputation can only be gained by charging Stanek's gift."),offerHackingWork:!1,offerFieldWork:!1,offerSecurityWork:!1,special:!0,keepOnInstall:!0})}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={0:[0,2e9,1.06,.03,"Smart Factories","Advanced AI automatically optimizes the operation and productivity of factories. Each level of this upgrade increases your global production by 3% (additive)."],1:[1,2e9,1.06,.1,"Smart Storage","Advanced AI automatically optimizes your warehouse storage methods. Each level of this upgrade increases your global warehouse storage size by 10% (additive)."],2:[2,4e9,1.1,.001,"DreamSense","Use DreamSense LCC Technologies to advertise your corporation to consumers through their dreams. Each level of this upgrade provides a passive increase in awareness of all of your companies (divisions) by 0.004 / market cycle,and in popularity by 0.001 / market cycle. A market cycle is approximately 15 seconds."],3:[3,4e9,1.5,.005,"Wilson Analytics","Purchase data and analysis from Wilson, a marketing research firm. Each level of this upgrades increases the effectiveness of your advertising by 0.5% (additive)."],4:[4,1e9,1.06,.1,"Nuoptimal Nootropic Injector Implants","Purchase the Nuoptimal Nootropic Injector augmentation for your employees. Each level of this upgrade globally increases the creativity of your employees by 10% (additive)."],5:[5,1e9,1.06,.1,"Speech Processor Implants","Purchase the Speech Processor augmentation for your employees. Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."],6:[6,1e9,1.06,.1,"Neural Accelerators","Purchase the Neural Accelerator augmentation for your employees. Each level of this upgrade globally increases the intelligence of your employees by 10% (additive)."],7:[7,1e9,1.06,.1,"FocusWires","Purchase the FocusWire augmentation for your employees. Each level of this upgrade globally increases the efficiency of your employees by 10% (additive)."],8:[8,1e9,1.07,.01,"ABC SalesBots","Always Be Closing. Purchase these robotic salesmen to increase the amount of materials and products you sell. Each level of this upgrade globally increases your sales by 1% (additive)."],9:[9,5e9,1.07,.05,"Project Insight","Purchase 'Project Insight', a R&D service provided by the secretive Fulcrum Technologies. Each level of this upgrade globally increases the amount of Scientific Research you produce by 5% (additive)."]}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(239),r=n(24);function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class o{constructor(){i(this,"capacity",0),i(this,"hashes",0),i(this,"upgrades",{});for(const t of Object.keys(a.a))this.upgrades[t]=0}getMult(t){const e=a.a[t],n=this.upgrades[t];return null==e||null==n?(console.error("Could not find Hash Study upgrade"),1):1+e.value*n/100}getStudyMult(){return this.getMult("Improve Studying")}getTrainingMult(){return this.getMult("Improve Gym Training")}getUpgrade(t){const e=a.a[t];return e||(console.error("Invalid Upgrade Name given to HashManager.getUpgrade(): "+t),null)}getUpgradeCost(t){const e=this.getUpgrade(t),n=this.upgrades[t];return null==e||null==n?(console.error("Invalid Upgrade Name given to HashManager.getUpgradeCost(): "+t),1/0):e.getCost(n)}prestige(){for(const t of Object.keys(a.a))this.upgrades[t]=0;this.hashes=0,this.updateCapacity(0)}refundUpgrade(t){const e=a.a[t];--this.upgrades[t];const n=this.upgrades[t];if(null==e||null==n||n<0)return void console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+t);const r=e.getCost(n);this.hashes+=r}storeHashes(t){this.hashes+=t;let e=this.hashes;return this.hashes=Math.min(this.hashes,this.capacity),e-=this.hashes,e}updateCapacity(t){t<0&&(this.capacity=0),this.capacity=Math.max(t,0)}upgrade(t){if(null==a.a[t])return console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+t),!1;const e=this.getUpgradeCost(t);return!(this.hashes{try{return r.a[t].getInfo().offerHackingWork}catch(t){return console.error("Error when trying to filter Hacking Factions for Coding Contract Generation: "+t),!1}});return e===a.c.FactionReputation&&0===n.length&&(e=a.c.CompanyReputation),e===a.c.FactionReputationAll&&0===n.length&&(e=a.c.CompanyReputation),e===a.c.CompanyReputation&&0===Object.keys(i.a.jobs).length&&(e=a.c.Money),e}(t.type);const e=i.a.factions.filter(t=>r.a[t].getInfo().offerHackingWork);switch(t.type){case a.c.FactionReputation:{const n=e.length,a=e[Object(c.a)(0,n-1)];t.name=a;break}case a.c.CompanyReputation:{const e=Object.keys(i.a.jobs);e.length>0?t.name=e[Object(c.a)(0,e.length-1)]:t.type=a.c.Money;break}}return t}function p(){const t=Object(o.c)();let e=Object(c.a)(0,t.length-1),n=t[e];for(let a=0;a<200&&(!(n instanceof l.a)||n.purchasedByPlayer||n.hostname===s.a.WorldDaemon);++a)e=Object(c.a)(0,t.length-1),n=t[e];return n}function g(t,e){let n="contract-"+Object(c.a)(0,1e6);for(let e=0;e<1e3&&!(t.contracts.filter(t=>t.fn===n).length<=0);++e)n="contract-"+Object(c.a)(0,1e6);return e.name&&(n+="-"+e.name.replace(/\s/g,"")),n}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new(n(126).a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var a=n(85),r=n(15);function i(t,e){let n=0,i=!1;for(const r of Object.keys(a.a)){const o=a.a[r];if(o.type==e){n=o.successRate(t),i=!0;break}}return i?Math.random()<=n:(Object(r.a)(`ERR: Unrecognized crime type: ${e} This is probably a bug please contact the developer`),!1)}function o(t){return(t=t.toLowerCase()).includes("shoplift")?a.a.Shoplift:t.includes("rob")&&t.includes("store")?a.a.RobStore:t.includes("mug")?a.a.Mug:t.includes("larceny")?a.a.Larceny:t.includes("drugs")?a.a.DealDrugs:t.includes("bond")&&t.includes("forge")?a.a.BondForgery:(t.includes("traffic")||t.includes("illegal"))&&t.includes("arms")?a.a.TraffickArms:t.includes("homicide")?a.a.Homicide:t.includes("grand")&&t.includes("auto")?a.a.GrandTheftAuto:t.includes("kidnap")?a.a.Kidnap:t.includes("assassin")?a.a.Assassination:t.includes("heist")?a.a.Heist:null}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(44),r=n(38),i=n(33),o=n(23),s=n(24),l=n(1034);function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class f{constructor(t={}){c(this,"minEne",0),c(this,"maxEne",100),c(this,"minHap",0),c(this,"maxHap",100),c(this,"maxMor",100),c(this,"employees",[]),c(this,"employeeProd",{[a.a.Operations]:0,[a.a.Engineer]:0,[a.a.Business]:0,[a.a.Management]:0,[a.a.RandD]:0,total:0}),c(this,"employeeJobs",{[a.a.Operations]:0,[a.a.Engineer]:0,[a.a.Business]:0,[a.a.Management]:0,[a.a.RandD]:0,[a.a.Training]:0,[a.a.Unassigned]:0,total:0}),this.loc=t.loc?t.loc:"",this.size=t.size?t.size:1}atCapacity(){return this.employees.length>=this.size}process(t=1,e,n){if(n.hasResearch("HRBuddy-Recruitment")&&!this.atCapacity()){const t=this.hireRandomEmployee();n.hasResearch("HRBuddy-Training")&&void 0!==t&&(t.pos=a.a.Training)}this.calculateTotalEmployees(),this.maxEne=100,this.maxHap=100,this.maxMor=100,n.hasResearch("Go-Juice")&&(this.maxEne+=10),n.hasResearch("JoyWire")&&(this.maxHap+=10),n.hasResearch("Sti.mu")&&(this.maxMor+=10);let r=1;e.funds<0&&n.lastCycleRevenue<0?r=Math.pow(.99,t):e.funds>0&&n.lastCycleRevenue>0&&(r=Math.pow(1.01,t));const i=n.hasResearch("AutoBrew"),o=n.hasResearch("AutoPartyManager");let s=0;for(let e=0;en.pos===t?e+1:e,0);for(const r of this.employees){if(n==e)return!0;r.pos===a.a.Unassigned&&n<=e?(r.pos=t,n++):r.pos===t&&n>=e&&(r.pos=a.a.Unassigned,n--)}return n===e}toJSON(){return Object(s.b)("OfficeSpace",this)}static fromJSON(t){return Object(s.a)(f,t.data)}}s.c.constructors.OfficeSpace=f},,function(t,e,n){"use strict";function a(t,e){for(const n of Object.keys(e)){const a=e[n];void 0!==a&&("function"==typeof a?a(t,n):void 0!==a.func?a.func(t,e,n):(typeof t[n]!=typeof a.default&&(t[n]=a.default),"number"==typeof t[n]&&void 0!==a.min&&t[n]a.max&&(t[n]=a.max)))}}function r(t,e,n){return(a,r)=>{"number"==typeof a[r]?(a[r]n&&(a[r]=n)):a[r]=t}}n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(){r(this,"bladeburner",0),r(this,"casino",0),r(this,"class",0),r(this,"codingcontract",0),r(this,"corporation",0),r(this,"crime",0),r(this,"gang",0),r(this,"hacking",0),r(this,"hacknet",0),r(this,"hacknet_expenses",0),r(this,"hospitalization",0),r(this,"infiltration",0),r(this,"sleeves",0),r(this,"stock",0),r(this,"total",0),r(this,"work",0),r(this,"servers",0),r(this,"other",0),r(this,"augmentations",0)}record(t,e){const n=e.toLowerCase();"number"==typeof this[n]?(this[n]+=t,this.total+=t):console.warn("MoneySourceTracker.record() called with invalid source: "+e)}reset(){for(const t in this)"number"==typeof this[t]&&(this[t]=0)}toJSON(){return Object(a.b)("MoneySourceTracker",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.MoneySourceTracker=i},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(0),r=n(1457),i=n(1),o=n(20),s=n(30),l=n(296),c=n(5);function f({min:t,max:e,current:n,remaining:s,progress:l,color:f}){const u=a.createElement(i.a,{sx:{textAlign:"right"}},a.createElement("strong",null,"Progress:")," ",c.a.formatExp(n)," / ",c.a.formatExp(e-t),a.createElement("br",null),a.createElement("strong",null,"Remaining:")," ",c.a.formatExp(s)," (",l.toFixed(2),"%)");return a.createElement(o.a,{title:u},a.createElement(r.a,{variant:"determinate",value:l,sx:{backgroundColor:"#111111","& .MuiLinearProgress-bar1Determinate":{backgroundColor:f}}}))}function u({progress:t,color:e}){const n=Object(l.b)();return a.createElement(s.a,{component:"th",scope:"row",colSpan:2,classes:{root:n.cellNone},style:{paddingBottom:"2px",position:"relative",top:"-3px"}},a.createElement(f,{min:t.baseExperience,max:t.nextExperience,current:t.currentExperience,remaining:t.remainingExperience,progress:t.progress,color:e}))}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={lineHeight:1.5,fontFamily:"Lucida Console, Lucida Sans Unicode, Fira Mono, Consolas, Courier New, Courier, monospace, Times New Roman"}},,,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(9);function r(t){return t.money<0?0:Math.min(.1*t.money,(t.max_hp-t.hp)*a.a.HospitalCostPerHp)}function i(t,e){const n=t.hp;t.hp-=e;const a=r(t);return t.hp=n,a}},function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return d}));var a=n(0),r=n.n(a),i=n(126),o=n(41),s=n(1),l=n(10),c=n(130),f=n(80),u=n(78),m=n(27);const h=new i.a;function d(){var t,e,n;const[i,l]=Object(a.useState)(null);if(Object(a.useEffect)(()=>h.subscribe(t=>{l(t)}),[]),null===i)return r.a.createElement(r.a.Fragment,null);const c={text:g,select:y};let f=p;null!=i&&null!==(t=i.options)&&void 0!==t&&t.type&&["text","select"].includes(null==i||null===(e=i.options)||void 0===e?void 0:e.type)&&(f=c[null==i||null===(n=i.options)||void 0===n?void 0:n.type]);return r.a.createElement(o.a,{open:!0,onClose:function(){var t,e;null!==i&&(["text","select"].includes(null!==(t=null==i||null===(e=i.options)||void 0===e?void 0:e.type)&&void 0!==t?t:"")?i.resolve(""):i.resolve(!1),l(null))}},r.a.createElement("pre",null,r.a.createElement(s.a,null,i.txt)),r.a.createElement(f,{prompt:i,resolve:t=>{i.resolve(t),l(null)}}))}function p({resolve:t}){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",paddingTop:"10px"}},r.a.createElement(l.a,{style:{marginRight:"auto"},onClick:()=>t(!0)},"Yes"),r.a.createElement(l.a,{onClick:()=>t(!1)},"No")))}function g({resolve:t}){const[e,n]=Object(a.useState)(""),i=()=>t(e);return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.a.createElement(f.a,{autoFocus:!0,value:e,onInput:t=>{n(t.target.value)},onKeyDown:t=>{t.stopPropagation(),t.key===m.a.ENTER&&(t.preventDefault(),i())},style:{flex:"1 0 auto"},InputProps:{endAdornment:r.a.createElement(l.a,{onClick:i},"Confirm")}})))}function y({prompt:t,resolve:e}){var n;const[i,o]=Object(a.useState)("");return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.a.createElement(c.a,{onChange:t=>{o(t.target.value)},value:i,style:{flex:"1 0 auto"}},(t=>{const e=[];for(const n of t)e.push(r.a.createElement(u.a,{key:n,value:n},n));return e})((null==t||null===(n=t.options)||void 0===n?void 0:n.choices)||[])),r.a.createElement(l.a,{onClick:()=>e(i),disabled:""===i},"Confirm")))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(44),r=n(175),i=n(1035),o=n(532),s=n(24),l=n(33);function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class f{constructor(t={}){c(this,"name",""),c(this,"dmd",0),c(this,"cmp",0),c(this,"mku",0),c(this,"pCost",0),c(this,"sCost",0),c(this,"fin",!1),c(this,"prog",0),c(this,"createCity",""),c(this,"designCost",0),c(this,"advCost",0),c(this,"rat",0),c(this,"qlt",0),c(this,"per",0),c(this,"dur",0),c(this,"rel",0),c(this,"aes",0),c(this,"fea",0),c(this,"data",Object(o.a)([0,0,0])),c(this,"loc",""),c(this,"siz",0),c(this,"reqMats",{}),c(this,"prdman",Object(o.a)([!1,0])),c(this,"sllman",Object(o.a)([!1,0])),c(this,"marketTa1",!1),c(this,"marketTa2",!1),c(this,"marketTa2Price",Object(o.a)(0)),c(this,"maxsll",0),this.name=t.name?t.name:"",this.dmd=t.demand?t.demand:0,this.cmp=t.competition?t.competition:0,this.mku=t.markup?t.markup:0,this.createCity=t.createCity?t.createCity:"",this.designCost=t.designCost?t.designCost:0,this.advCost=t.advCost?t.advCost:0,this.qlt=t.quality?t.quality:0,this.per=t.performance?t.performance:0,this.dur=t.durability?t.durability:0,this.rel=t.reliability?t.reliability:0,this.aes=t.aesthetics?t.aesthetics:0,this.fea=t.features?t.features:0,this.loc=t.loc?t.loc:"",this.siz=t.size?t.size:0,this.reqMats=t.req?t.req:{}}createProduct(t=1,e=1){this.fin||(this.prog+=.01*t*e)}finishProduct(t,e){this.fin=!0;const n=this.prog/100,i=t[a.a.Engineer]/t.total,o=t[a.a.Management]/t.total,s=t[a.a.RandD]/t.total,c=t[a.a.Operations]/t.total,f=t[a.a.Business]/t.total,u=n*(1.2*i+.9*o+1.3*s+1.5*c+f)*(1+Math.pow(this.designCost,.1)/100)*(1+Math.pow(e.sciResearch.qty,e.sciFac)/800);this.qlt=u*(.1*t[a.a.Engineer]+.05*t[a.a.Management]+.05*t[a.a.RandD]+.02*t[a.a.Operations]+.02*t[a.a.Business]),this.per=u*(.15*t[a.a.Engineer]+.02*t[a.a.Management]+.02*t[a.a.RandD]+.02*t[a.a.Operations]+.02*t[a.a.Business]),this.dur=u*(.05*t[a.a.Engineer]+.02*t[a.a.Management]+.08*t[a.a.RandD]+.05*t[a.a.Operations]+.05*t[a.a.Business]),this.rel=u*(.02*t[a.a.Engineer]+.08*t[a.a.Management]+.02*t[a.a.RandD]+.05*t[a.a.Operations]+.08*t[a.a.Business]),this.aes=u*(0*t[a.a.Engineer]+.08*t[a.a.Management]+.05*t[a.a.RandD]+.02*t[a.a.Operations]+.1*t[a.a.Business]),this.fea=u*(.08*t[a.a.Engineer]+.05*t[a.a.Management]+.02*t[a.a.RandD]+.05*t[a.a.Operations]+.05*t[a.a.Business]),this.calculateRating(e);const m=1+Math.pow(this.advCost,.1)/100,h=Math.max(f+o,1/t.total);this.mku=100/(m*Math.pow(this.qlt+.001,.65)*h),0!==this.mku&&isFinite(this.mku)||(this.mku=1),this.dmd=0===e.awareness?20:Math.min(100,m*(e.popularity/e.awareness*100)),this.cmp=Object(l.a)(0,70);for(const t of Object.keys(e.reqMats))if(e.reqMats.hasOwnProperty(t)){const n=e.reqMats[t];if(void 0===n)continue;this.reqMats[t]=n}this.siz=0;for(const t of Object.keys(e.reqMats)){const n=e.reqMats[t];void 0!==n&&(this.siz+=r.a[t]*n)}}calculateRating(t){const e=i.a[t.type];null!=e?(this.rat=0,this.rat+=e.Quality?this.qlt*e.Quality:0,this.rat+=e.Performance?this.per*e.Performance:0,this.rat+=e.Durability?this.dur*e.Durability:0,this.rat+=e.Reliability?this.rel*e.Reliability:0,this.rat+=e.Aesthetics?this.aes*e.Aesthetics:0,this.rat+=e.Features?this.fea*e.Features:0):console.error("Could not find product rating weights for: "+t)}toJSON(){return Object(s.b)("Product",this)}static fromJSON(t){return Object(s.a)(f,t.data)}}s.c.constructors.Product=f},function(t,e,n){"use strict";function a(t,e){return!!Object.keys(e.reqMats).includes(t)||(!!e.prodMats.includes(t)||!!["Hardware","Robots","AICores","RealEstate","AI Cores","Real Estate"].includes(t))}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"b",(function(){return y})),n.d(e,"a",(function(){return b}));var a=n(0),r=n.n(a),i=n(173),o=n(428),s=n(1),l=n(21),c=n(55),f=n(10),u=n(1750),m=n(1751),h=n(1752),d=n(29),p=n(8),g=n(65);const y=[];function b(){const t=d.b.Player(),e=d.b.Router(),n=Object(a.useState)(!1)[1];function b(){n(t=>!t)}const E=[...Object.values(g.a)].filter(e=>{const n=e.create;return null!==n&&("b1t_flum3.exe"!==e.name||n.req(t))}).sort((e,n)=>{var a,r,i,o;return t.hasProgram(e.name)?1:t.hasProgram(n.name)?-1:(null!==(a=null===(r=e.create)||void 0===r?void 0:r.level)&&void 0!==a?a:0)-(null!==(i=null===(o=n.create)||void 0===o?void 0:o.level)&&void 0!==i?i:0)});Object(a.useEffect)(()=>{E.forEach(t=>{y.includes(t.name)||y.push(t.name)})},[]),Object(a.useEffect)(()=>{const t=setInterval(b,200);return()=>clearInterval(t)},[]);const v=e=>Math.ceil(Math.max(e-(t.hacking+t.intelligence/2),0));return r.a.createElement(o.a,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},r.a.createElement(s.a,{variant:"h4"},"Create program"),r.a.createElement(s.a,null,"This page displays any programs that you are able to create. Writing the code for a program takes time, which can vary based on how complex the program is. If you are working on creating a program you can cancel at any time. Your progress will be saved and you can continue later."),r.a.createElement(l.a,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",my:1}},E.map(n=>{const a=n.create;if(null===a)return r.a.createElement(r.a.Fragment,null);const o=(e=>{const n=Object(i.find)(t.getHomeComputer().programs,t=>t.startsWith(e)&&t.endsWith("%-INC"));if(!n)return-1;const a=n.split("-");if(3!=a.length)return-1;const r=Number(a[1].slice(0,-1));return isNaN(r)||r<0||r>=100?-1:r})(n.name);return r.a.createElement(l.a,{component:c.a,sx:{p:1,opacity:t.hasProgram(n.name)?.75:1},key:n.name},r.a.createElement(s.a,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},t.hasProgram(n.name)&&r.a.createElement(u.a,{sx:{mr:1}})||a.req(t)&&r.a.createElement(m.a,{sx:{mr:1}})||r.a.createElement(h.a,{sx:{mr:1}}),n.name),!t.hasProgram(n.name)&&a.req(t)&&r.a.createElement(f.a,{sx:{my:1,width:"100%"},onClick:r=>{r.isTrusted&&(t.startCreateProgramWork(n.name,a.time,a.level),t.startFocusing(),e.toWork())}},"Create program"),t.hasProgram(n.name)||0===v(a.level)||r.a.createElement(s.a,{color:p.a.theme.hack},r.a.createElement("b",null,"Unlocks in:")," ",v(a.level)," hacking levels"),-1!==o&&r.a.createElement(s.a,{color:p.a.theme.infolight},r.a.createElement("b",null,"Current completion:")," ",o,"%"),r.a.createElement(s.a,null,a.tooltip))})))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return g})),n.d(e,"a",(function(){return y}));var a=n(0),r=n.n(a),i=n(428),o=n(1),s=n(55),l=n(140),c=n(47),f=n(21),u=n(10),m=n(61),h=n(106),d=n(28),p=n(4);const g=[];function y(t){const e=Object(a.useState)(!1)[1];function n(){e(t=>!t)}Object(a.useEffect)(()=>{const t=setInterval(n,200);return()=>clearInterval(t)},[]),Object(a.useEffect)(()=>{t.player.factionInvitations.forEach(t=>{g.includes(t)||g.push(t)})},[]);const y=Object.values(p.a).map(t=>t),b=t.player.factions.slice(0);return b.sort((t,e)=>y.indexOf(t)-y.indexOf(e)),r.a.createElement(i.a,{disableGutters:!0,maxWidth:"md",sx:{mx:0,mb:10}},r.a.createElement(o.a,{variant:"h4"},"Factions"),r.a.createElement(o.a,{mb:4},"Throughout the game you may receive invitations from factions. There are many different factions, and each faction has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content."),r.a.createElement(o.a,{variant:"h5",color:"primary",mt:2,mb:1},"Factions you have joined:"),b.length>0&&r.a.createElement(s.a,{sx:{my:1,p:1,pb:0,display:"inline-block"}},r.a.createElement(m.a,{padding:"none",style:{width:"fit-content"}},r.a.createElement(l.a,null,b.map(e=>r.a.createElement(c.a,{key:e},r.a.createElement(m.b,null,r.a.createElement(o.a,{noWrap:!0,mb:1},e)),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{onClick:()=>function(e){t.router.toFaction(e)}(d.a[e])},"Details"))),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{sx:{width:"100%"},onClick:()=>function(e){t.router.toFaction(e,!0)}(d.a[e])},"Augmentations Left: ",((t,e)=>Object(h.a)(e,t).filter(t=>!e.hasAugmentation(t)).length)(d.a[e],t.player)))))))))||r.a.createElement(o.a,null,"You haven't joined any factions."),r.a.createElement(o.a,{variant:"h5",color:"primary",mt:4,mb:1},"Outstanding Faction Invitations"),r.a.createElement(o.a,{mb:1},"Factions you have been invited to. You can accept these faction invitations at any time:"),t.player.factionInvitations.length>0&&r.a.createElement(s.a,{sx:{my:1,mb:4,p:1,pb:0,display:"inline-block"}},r.a.createElement(m.a,{padding:"none"},r.a.createElement(l.a,null,t.player.factionInvitations.map(t=>r.a.createElement(c.a,{key:t},r.a.createElement(m.b,null,r.a.createElement(o.a,{noWrap:!0,mb:1},t)),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{onClick:n=>function(t,n){t.isTrusted&&(Object(h.e)(d.a[n]),e(t=>!t))}(n,t)},"Join!"))))))))||r.a.createElement(o.a,null,"You have no outstanding faction invites."))}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return w})),n.d(e,"a",(function(){return S})),n.d(e,"c",(function(){return C}));var a=n(0),r=n.n(a),i=n(21),o=n(1),s=n(122),l=n(346),c=n(20),f=n(10),u=n(55),m=n(80),h=n(8),d=n(337),p=n(110),g=n(525),y=n(606),b=n(608),E=n(631),v=n.n(E),k=n(1371),_=n.n(k);let w=!1;function S(){w=!0}function C({router:t,softReset:e,errorData:n,resetError:E}){var k,S;return h.a.AutosaveInterval=0,Object(a.useEffect)(()=>{Object(d.b)().then(t=>{const e=`RECOVERY_BITBURNER_${Math.round(Date.now()/1e3)}.json`;Object(p.a)(e,t)})},[]),r.a.createElement(i.a,{sx:{padding:"8px 16px",minHeight:"100vh",maxWidth:"1200px",boxSizing:"border-box"}},r.a.createElement(o.a,{variant:"h3"},"RECOVERY MODE ACTIVATED"),r.a.createElement(o.a,null,"There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and the game will automatically export your save file (to prevent corruption)."),r.a.createElement(o.a,null,"At this point it is recommended to alert a developer."),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:null!==(k=null==n?void 0:n.issueUrl)&&void 0!==k?k:g.b,target:"_blank"},"File an issue on github")),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:"https://www.reddit.com/r/Bitburner/",target:"_blank"},"Make a reddit post")),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:"https://discord.gg/TFc3hKD",target:"_blank"},"Post in the #bug-report channel on Discord.")),r.a.createElement(o.a,null,"Please include your save file."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"You can disable recovery mode now. But chances are the game will not work correctly."),r.a.createElement(l.a,{sx:{my:2}},r.a.createElement(c.a,{title:"Disables the recovery mode & attempt to head back to the terminal page. This may or may not work. Ensure you have saved the recovery file."},r.a.createElement(f.a,{onClick:function(){E&&E(),w=!1,t.toTerminal()},startIcon:r.a.createElement(v.a,null)},"Disable Recovery Mode")),r.a.createElement(b.a,{color:"warning",onTriggered:e}),r.a.createElement(y.a,{color:"error"})),n&&r.a.createElement(u.a,{sx:{px:2,pt:1,pb:2,mt:2}},r.a.createElement(o.a,{variant:"h5"},n.title),r.a.createElement(i.a,{sx:{my:2}},r.a.createElement(m.a,{label:"Bug Report Text",value:n.body,variant:"outlined",color:"secondary",multiline:!0,fullWidth:!0,rows:12,sx:{"& .MuiOutlinedInput-root":{color:h.a.theme.secondary}}})),r.a.createElement(c.a,{title:"Submitting an issue to GitHub really help us improve the game!"},r.a.createElement(f.a,{component:s.a,startIcon:r.a.createElement(_.a,null),color:"info",sx:{px:2},href:null!==(S=n.issueUrl)&&void 0!==S?S:g.b,target:"_blank"},"Submit Issue to GitHub"))))}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(1004);let r=1;function i(t){return r+=t,()=>r-=t}function o(){return Object(a.a)(r)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n(1005),r=n(298),i=n(367),o=n(237),s=n(38),l=n(7),c=n(581),f=n(64),u=n(15),m=n(24),h=n(147);function d(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class p{constructor(t={}){d(this,"name","The Corporation"),d(this,"divisions",[]),d(this,"funds",15e10),d(this,"revenue",0),d(this,"expenses",0),d(this,"fundingRound",0),d(this,"public",!1),d(this,"totalShares",s.a.INITIALSHARES),d(this,"numShares",s.a.INITIALSHARES),d(this,"shareSalesUntilPriceUpdate",s.a.SHARESPERPRICEUPDATE),d(this,"shareSaleCooldown",0),d(this,"issueNewSharesCooldown",0),d(this,"dividendPercentage",0),d(this,"dividendTaxPercentage",50),d(this,"issuedShares",0),d(this,"sharePrice",0),d(this,"storedCycles",0),d(this,"state",new a.a),this.name=t.name?t.name:"The Corporation";const e=Object.keys(r.a).length,n=Object.keys(i.a).length;this.unlockUpgrades=Array(e).fill(0),this.upgrades=Array(n).fill(0),this.upgradeMultipliers=Array(n).fill(1)}addFunds(t){isFinite(t)?this.funds=this.funds+t:console.error("Trying to add invalid amount of funds. Report to a developper.")}getState(){return this.state.getState()}storeCycles(t=1){this.storedCycles+=t}process(t){if(this.storedCycles>=s.a.CyclesPerIndustryStateCycle){const e=this.getState(),n=1,a=n*s.a.CyclesPerIndustryStateCycle;if(this.storedCycles-=a,this.divisions.forEach(t=>{t.process(n,e,this)}),this.shareSaleCooldown>0&&(this.shareSaleCooldown-=a),this.issueNewSharesCooldown>0&&(this.issueNewSharesCooldown-=a),"START"===e){this.revenue=0,this.expenses=0,this.divisions.forEach(t=>{t.lastCycleRevenue!==-1/0&&t.lastCycleRevenue!==1/0&&t.lastCycleExpenses!==-1/0&&t.lastCycleExpenses!==1/0&&(this.revenue=this.revenue+t.lastCycleRevenue,this.expenses=this.expenses+t.lastCycleExpenses)});const e=(this.revenue-this.expenses)*(n*s.a.SecsPerMarketCycle);if((isNaN(this.funds)||this.funds===1/0||this.funds===-1/0)&&(Object(u.a)("There was an error calculating your Corporations funds and they got reset to 0. This is a bug. Please report to game developer.

(Your funds have been set to $150b for the inconvenience)"),this.funds=15e10),this.dividendPercentage>0&&e>0)if(isNaN(this.dividendPercentage)||this.dividendPercentage<0||this.dividendPercentage>100*s.a.DividendMaxPercentage)console.error("Invalid Corporation dividend percentage: "+this.dividendPercentage);else{const n=e-this.dividendPercentage/100*e;t.gainMoney(this.getDividends(),"corporation"),this.addFunds(n)}else this.addFunds(e);this.updateSharePrice()}this.state.nextState()}}getDividends(){const t=(this.revenue-this.expenses)*s.a.SecsPerMarketCycle,e=this.dividendPercentage/100*t/this.totalShares,n=this.numShares*e;let a=-.15;return 1===this.unlockUpgrades[5]&&(a+=.05),1===this.unlockUpgrades[6]&&(a+=.1),Math.pow(n,l.a.CorporationSoftCap+a)}determineValuation(){let t,e=this.revenue-this.expenses;return this.public?(this.dividendPercentage>0&&(e*=(100-this.dividendPercentage)/100),t=this.funds+85e3*e,t*=Math.pow(1.1,this.divisions.length),t=Math.max(t,0)):(t=1e10+Math.max(this.funds,0)/3,e>0?(t+=315e3*e,t*=Math.pow(1.1,this.divisions.length)):t=1e10*Math.pow(1.1,this.divisions.length),t-=t%1e6),t*l.a.CorporationValuation}getTargetSharePrice(){return this.determineValuation()/(2*(this.totalShares-this.numShares)+1)}updateSharePrice(){const t=this.getTargetSharePrice();this.sharePrice<=t?this.sharePrice*=1+.01*Math.random():this.sharePrice*=1-.01*Math.random(),this.sharePrice<=.01&&(this.sharePrice=.01)}immediatelyUpdateSharePrice(){this.sharePrice=this.getTargetSharePrice()}calculateShareSale(t){let e=t,n=this.shareSalesUntilPriceUpdate,a=this.sharePrice,r=0,i=0;const o=Math.ceil(t/s.a.SHARESPERPRICEUPDATE);if(isNaN(o)||o>1e7)return console.error("Something went wrong or unexpected when calculating share sale. Maxiterations calculated to be "+o),[0,0,0];for(let t=0;t3600?Math.floor(e/3600)+" hour(s)":e>60?Math.floor(e/60)+" minute(s)":Math.floor(e)+" second(s)"}unlock(t){const e=t[0],n=t[1];for(;this.unlockUpgrades.length<=e;)this.unlockUpgrades.push(0);this.fundsthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst-=t,this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst*=1-t/100,this.popEst0?1:-1),this.pop+=n,e.changeEstEqually&&(this.popEst+=n,this.popEst<0&&(this.popEst=0)),n}changeChaosByCount(t){if(isNaN(t))throw new Error("NaN passed into City.changeChaosByCount()");0!==t&&(this.chaos+=t,this.chaos<0&&(this.chaos=0))}toJSON(){return Object(i.b)("City",this)}static fromJSON(t){return Object(i.a)(l,t.data)}}i.c.constructors.City=l},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return c})),n.d(e,"e",(function(){return f})),n.d(e,"f",(function(){return u}));var a=n(28),r=n(515),i=n(79);function o(){return 2===this.bitNodeN||!(i.a[2]<=0)&&this.karma<=-54e3}function s(){const t=this.gang;if(null===t)throw new Error("Cannot get gang faction because player is not in a gang.");const e=a.a[t.facName];if(null==e)throw new Error("Gang has invalid faction name: "+t.facName);return e}function l(){if(!this.inGang())return"";const t=this.gang;if(null===t)throw new Error("Cannot get gang faction because player is not in a gang.");return t.facName}function c(t){if(!this.inGang())return!1;const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");return e.facName===t}function f(){return null!=this.gang&&null!=this.gang&&this.gang instanceof r.a}function u(t,e){this.gang=new r.a(t,e);const n=a.a[t];if(null==n)throw new Error("Invalid faction name when creating gang: "+t);n.playerReputation=0}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e=[],n=""){this.name=t,this.locations=e,this.asciiArt=n}addLocation(t){this.locations.push(t)}}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(1),i=n(10),o=n(55),s=n(21);function l(t){return a.createElement(s.a,null,a.createElement(o.a,{sx:{my:1,p:1}},a.createElement(i.a,{onClick:t.onClick},t.buttonText),a.createElement(r.a,null,t.infoText)))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return f}));var a=n(0),r=n(1),i=n(20),o=n(10),s=n(80);let l;function c(t){let e="",n="";return t.tickerDisplayMode===l.Portfolio?(e="Switch to 'All Stocks' Mode",n="Displays all stocks on the WSE"):(e="Switch to 'Portfolio' Mode",n="Displays only the stocks for which you have shares or orders"),a.createElement(i.a,{title:a.createElement(r.a,null,n)},a.createElement(o.a,{onClick:t.changeDisplayMode},e))}function f(t){return a.createElement(a.Fragment,null,a.createElement(c,t),a.createElement("br",null),a.createElement(s.a,{sx:{width:"100%"},onChange:t.changeWatchlistFilter,placeholder:"Filter Stocks by symbol (comma-separated list)",type:"text"}))}!function(t){t[t.AllStocks=0]="AllStocks",t[t.Portfolio=1]="Portfolio"}(l||(l={}))},function(t,e,n){"use strict";n.d(e,"f",(function(){return c})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return u})),n.d(e,"e",(function(){return m})),n.d(e,"d",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(9),r=n(7),i=n(46),o=n(92),s=n(25),l=n(103);function c(){return!!Object(s.d)(l.a.DarkWeb)}function f(){const t=Object(s.d)(this.currentServer);if(null===t)throw new Error("somehow connected to a server that does not exist. "+this.currentServer);return t}function u(){const t=Object(s.d)("home");if(t instanceof i.a)return t;throw new Error("home computer was not a normal server")}function m(){const t=this.getHomeComputer().maxRam,e=Math.log2(t),n=Math.pow(1.58,e);return t*a.a.BaseCostFor1GBOfRamHome*n*r.a.HomeComputerRamCost}function h(){return 1e9*Math.pow(7.5,this.getHomeComputer().cpuCores)}function d(){const t="hacknet-node-"+this.hacknetNodes.length,e=new o.a({adminRights:!0,hostname:t,ip:Object(s.e)()});this.hacknetNodes.push(e.hostname),Object(s.a)(e);return this.getHomeComputer().serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(l.a.Home),e}},,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(2),r=n(33),i=n(301),o=n(24),s=n(62);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class c{constructor(t=null){l(this,"name",""),l(this,"level",1),l(this,"maxLevel",1),l(this,"autoLevel",!0),l(this,"baseDifficulty",100),l(this,"difficultyFac",1.01),l(this,"rewardFac",1.02),l(this,"successes",0),l(this,"failures",0),l(this,"rankGain",0),l(this,"rankLoss",0),l(this,"hpLoss",0),l(this,"hpLost",0),l(this,"isStealth",!1),l(this,"isKill",!1),l(this,"count",Object(r.a)(1e3,25e3)),l(this,"weights",{hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7}),l(this,"decays",{hack:.9,str:.9,def:.9,dex:.9,agi:.9,cha:.9,int:.9}),l(this,"teamCount",0),t&&t.name&&(this.name=t.name),t&&t.baseDifficulty&&(this.baseDifficulty=Object(i.a)(t.baseDifficulty,10)),t&&t.difficultyFac&&(this.difficultyFac=t.difficultyFac),t&&t.rewardFac&&(this.rewardFac=t.rewardFac),t&&t.rankGain&&(this.rankGain=t.rankGain),t&&t.rankLoss&&(this.rankLoss=t.rankLoss),t&&t.hpLoss&&(this.hpLoss=t.hpLoss),t&&t.isStealth&&(this.isStealth=t.isStealth),t&&t.isKill&&(this.isKill=t.isKill),t&&t.count&&(this.count=t.count),t&&t.weights&&(this.weights=t.weights),t&&t.decays&&(this.decays=t.decays);let e=0;for(const t of Object.keys(this.weights))this.weights.hasOwnProperty(t)&&(e+=this.weights[t]);if(e-1>=10*Number.EPSILON)throw new Error("Invalid weights when constructing Action "+this.name+". The weights should sum up to 1. They sum up to :1");for(const t of Object.keys(this.decays))if(this.decays.hasOwnProperty(t)&&this.decays[t]>1)throw new Error(`Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`)}getDifficulty(){const t=this.baseDifficulty*Math.pow(this.difficultyFac,this.level-1);if(isNaN(t))throw new Error("Calculated NaN in Action.getDifficulty()");return t}attempt(t){return Math.random()s.a.ChaosThreshold){const t=e.chaos-s.a.ChaosThreshold+1;return Math.pow(t,.5)}return 1}getEstSuccessChance(t){function e(t){return Math.max(0,Math.min(t,1))}const n=this.getSuccessChance(t,{est:!0}),a=this.getSuccessChance(t),r=Math.abs(a-n);let i=a-r,o=a+r;const s=t.getCurrentCity(),l=s.pop/s.popEst;return l<1?i*=l:o*=l,[e(i),e(o)]}getSuccessChance(t,e={est:!1}){if(null==t)throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");let n=this.getDifficulty(),r=0;for(const e of Object.keys(this.weights))if(this.weights.hasOwnProperty(e)){const n=a.a.queryStatFromString(e),i="eff"+e.charAt(0).toUpperCase()+e.slice(1);let o=t.skillMultipliers[i];null==o&&(console.error("Failed to find Bladeburner Skill multiplier for: "+e),o=1),r+=this.weights[e]*Math.pow(o*n,this.decays[e])}if(r*=a.a.getIntelligenceBonus(.75),r*=t.calculateStaminaPenalty(),r*=this.getTeamSuccessBonus(t),r*=this.getChaosCompetencePenalty(t,e),n*=this.getChaosDifficultyBonus(t),"Raid"==this.name&&t.getCurrentCity().comms<=0)return 0;if(r*=t.skillMultipliers.successChanceAll,r*=this.getActionTypeSkillSuccessBonus(t),this.isStealth&&(r*=t.skillMultipliers.successChanceStealth),this.isKill&&(r*=t.skillMultipliers.successChanceKill),r*=a.a.bladeburner_success_chance_mult,isNaN(r))throw new Error("Competence calculated as NaN in Action.getSuccessChance()");return Math.min(1,r/n)}getSuccessesNeededForNextLevel(t){return Math.ceil(.5*this.maxLevel*(2*t+(this.maxLevel-1)))}setMaxLevel(t){this.successes>=this.getSuccessesNeededForNextLevel(t)&&++this.maxLevel}toJSON(){return Object(o.b)("Action",this)}static fromJSON(t){return Object(o.a)(c,t.data)}}o.c.constructors.Action=c},function(t,e,n){"use strict";n.d(e,"a",(function(){return I})),n.d(e,"b",(function(){return F}));var a=n(4),r=n(16),i=n(56),o=n(134),s=n(14),l=n(217),c=n(233),f=n(66),u=n(50),m=n(65),h=n(204),d=n(28),p=n(106),g=n(54),y=n(268),b=n(193),E=n(2),v=n(95),k=n(516),_=n(64),w=n(25),S=n(133),C=n(79),x=n(103),L=n(101),O=n(88),M=n(15),T=n(121),A=n(399),R=n(400),N=n(9),P=n(181);function I(){Object(l.b)(E.a);const t=E.a.factions.concat(E.a.factionInvitations).filter((function(t){return d.a[t].getInfo().keep}));E.a.prestigeAugmentation(),Object(b.c)();const e=E.a.getHomeComputer();Object(w.i)(),Object(w.a)(e),Object(S.d)(E.a,e),Object(o.b)(s.a.Neurolink)&&i.a[s.a.Neurolink].owned&&(e.programs.push(m.a.FTPCrackProgram.name),e.programs.push(m.a.RelaySMTPProgram.name)),Object(o.b)(s.a.CashRoot)&&i.a[s.a.CashRoot].owned&&(E.a.setMoney(1e6),e.programs.push(m.a.BruteSSHProgram.name)),Object(o.b)(s.a.PCMatrix)&&i.a[s.a.PCMatrix].owned&&(e.programs.push(m.a.DeepscanV1.name),e.programs.push(m.a.AutoLink.name)),(E.a.sourceFileLvl(5)>0||5===E.a.bitNodeN)&&e.programs.push(m.a.Formulas.name),Object(w.f)(E.a.getHomeComputer());for(const t of Object.keys(f.a))f.a.hasOwnProperty(t)&&f.a[t].gainFavor();for(const t of Object.keys(d.a))d.a.hasOwnProperty(t)&&d.a[t].gainFavor();null!==O.a.action&&O.a.finishAction(v.b,E.a,!0),O.a.clear(),P.a.emit(),Object(d.c)(),E.a.factionInvitations=E.a.factionInvitations.concat(t),Object(o.d)(),E.a.reapplyAllSourceFiles(),Object(f.b)(),Object(y.c)(),E.a.applyEntropy(E.a.entropy);const n=E.a.gang;if(E.a.inGang()&&null!==n){const t=d.a[n.facName];t instanceof h.a&&Object(p.e)(t);const e=.95;for(const t of n.members)t.hack_asc_points*=e,t.str_asc_points*=e,t.def_asc_points*=e,t.dex_asc_points*=e,t.agi_asc_points*=e,t.cha_asc_points*=e}if(3===E.a.bitNodeN&&e.messages.push(_.a.CorporationManagementHandbook),E.a.bladeburner instanceof c.a&&E.a.bladeburner.prestige(),8===E.a.bitNodeN&&(E.a.money=25e7),(8===E.a.bitNodeN||C.a[8]>0)&&(E.a.hasWseAccount=!0,E.a.hasTixApiAccess=!0),E.a.hasWseAccount&&(Object(L.f)(),Object(L.h)()),Object(o.b)(s.a.TheRedPill)&&i.a[s.a.TheRedPill].owned){const t=Object(w.d)(x.a.WorldDaemon),e=Object(w.d)(x.a.DaedalusServer);t&&e&&(t.serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(t.hostname))}Object(o.b)(s.a.StaneksGift1)&&i.a[s.a.StaneksGift1].owned&&Object(p.e)(d.a[a.a.ChurchOfTheMachineGod]),T.b.prestigeAugmentation(),Object(k.b)(),A.b.splice(0,A.b.length),R.b.splice(0,R.b.length)}function F(t){Object(l.b)(E.a),Object(C.b)(E.a),E.a.prestigeSourceFile(),Object(b.c)();const e=E.a.getHomeComputer();null!==O.a.action&&O.a.finishAction(v.b,E.a,!0),O.a.clear(),P.a.emit(),Object(w.i)(),Object(w.a)(e),Object(S.d)(E.a,e),Object(w.f)(E.a.getHomeComputer()),C.a[9]>=2?e.setMaxRam(128):C.a[1]>0?e.setMaxRam(32):e.setMaxRam(8),e.cpuCores=1;for(const t of Object.keys(f.a))f.a.hasOwnProperty(t)&&(f.a[t].favor=0);for(const t of Object.keys(d.a))d.a.hasOwnProperty(t)&&(d.a[t].favor=0);null!==O.a.action&&O.a.finishAction(v.b,E.a,!0);for(const t of Object.keys(i.a))i.a.hasOwnProperty(t)&&delete i.a[t];if(C.a[12]>0&&E.a.augmentations.push({name:s.a.NeuroFluxGovernor,level:C.a[12]}),Object(d.c)(),Object(o.d)(),E.a.reapplyAllSourceFiles(),Object(f.b)(),Object(y.c)(),(E.a.sourceFileLvl(5)>0||5===E.a.bitNodeN)&&e.programs.push(m.a.Formulas.name),3===E.a.bitNodeN&&(e.messages.push(_.a.CorporationManagementHandbook),Object(M.a)("You received a copy of the Corporation Management Handbook on your home computer. Read it if you need help getting started with Corporations!")),8===E.a.bitNodeN&&(E.a.money=25e7),(8===E.a.bitNodeN||C.a[8]>0)&&(E.a.hasWseAccount=!0,E.a.hasTixApiAccess=!0),10===E.a.bitNodeN&&Object(M.a)("Visit VitaLife in New Tokyo if you'd like to purchase a new sleeve!"),13===E.a.bitNodeN&&Object(M.a)("Trouble is brewing in "+r.a.Chongqing),E.a.hasWseAccount?(Object(L.f)(),Object(L.h)()):Object(L.d)(),E.a.gang=null,E.a.corporation=null,Object(u.e)(),E.a.bladeburner=null,C.a[9]>=3){const t=E.a.createHacknetServer();t.level=100,t.cores=10,t.cache=5,t.updateHashRate(E.a.hacknet_node_money_mult),t.updateHashCapacity(),Object(g.p)(E.a)}13===E.a.bitNodeN&&(E.a.money=N.a.TravelCost),T.b.prestigeSourceFile(),0===C.a[5]||t||E.a.gainIntelligenceExp(300),Object(k.b)()}},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(8);const r=[];function i(t){if(r.find(e=>e.runningScript.pid===t.pid))return;const e=new Date;for(r.unshift({timeOfDeath:e,runningScript:t.scriptRef});r.length>a.a.MaxRecentScriptsCapacity;)r.pop()}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return m}));var a=n(0),r=n.n(a),i=n(16),o=n(1),s=n(20),l=n(115),c=n(139);const f=Object(l.a)(t=>Object(c.a)({travel:{color:t.colors.white,lineHeight:"1em",whiteSpace:"pre",cursor:"pointer"}}));function u(t){const e=f();return t.city!==t.currentCity?r.a.createElement(s.a,{title:r.a.createElement(o.a,null,t.city)},r.a.createElement("span",{onClick:()=>t.onTravel(t.city),className:e.travel},t.city[0])):r.a.createElement("span",null,t.city[0])}function m(t){return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,_ . ._. _. ."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,/'-/~ '\\ ,' _ , '",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Volhaven}),",'|~ ._/-, /~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},".-~ '| '',\\~|\\ _\\~ ,_ , ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Chongqing})," /,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\ ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Sector12})," /'~ |_/~\\\\,-,~ \\ \" ,_,/ |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | / ._-~'\\_ _~| \\ ) ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.NewTokyo})),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ __-\\ '/ ~ |\\ \\_ / ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~-_' _; '\\ '-, \\,' /\\/ |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\_,~'\\_ \\_ _, /' ' |, /|'"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\_ ~ | / \\ ~'; -,_."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ~\\ | | , '-_, ,; ~ ~\\"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\, ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Aevum})," / \\ / /| ,-, , -,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,/ | |' |/ ,- ~ \\ '."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,| ,/ \\ ,/ \\ ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Ishima})," |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / | ~ -~~-, / _"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,-' ~ /"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,' ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ',| ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~'"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(23),o=n(1124),s=n(1125);function l(t){const e=t.action.getEstSuccessChance(t.bladeburner);let n=r.a.createElement(r.a.Fragment,null);return n=e[0]===e[1]?r.a.createElement(r.a.Fragment,null,Object(i.d)(100*e[0],1),"%"):r.a.createElement(r.a.Fragment,null,Object(i.d)(100*e[0],1),"% ~ ",Object(i.d)(100*e[1],1),"%"),r.a.createElement(r.a.Fragment,null,"Estimated success chance: ",n," ",t.action.isStealth?r.a.createElement(o.a,null):r.a.createElement(r.a.Fragment,null),t.action.isKill?r.a.createElement(s.a,null):r.a.createElement(r.a.Fragment,null))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(41);function o(t){return r.a.createElement(i.a,{open:t.open,onClose:t.onClose},t.children)}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a);function i(t,e,n){return t.substring(0,e)+n+t.substring(e+1)}function o(t){const[e,n]=Object(a.useState)(t.content);return Object(a.useEffect)(()=>{let t=5;const a=[],r=setInterval(()=>{if(t--,t>0)return;t=5*Math.random();const r=Math.random()*e.length,o=e.charAt(r);n(t=>i(t,r,function(t){const e=t=>t[Math.floor(Math.random()*t.length)],n=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567890"," _","()[]{}<>"];for(const a of n)if(a.includes(t))return e(a);return e("!@#$%^&*()_+|\\';\"/.,?`~")}(o))),a.push(window.setTimeout(()=>{n(t=>i(t,r,o))},500))},20);return()=>{clearInterval(r),a.forEach(t=>clearTimeout(t))}},[]),r.a.createElement("span",null,e)}},,,,,,,,,function(t,e,n){"use strict";n.d(e,"c",(function(){return u})),n.d(e,"d",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(0),r=n.n(a),i=n(254),o=n(2),s=n(88),l=n(103),c=n(5),f=n(19);function u(){const t=o.a.getCurrentServer();null!==t&&l.a.DarkWeb==t.hostname&&s.a.print("You are now connected to the dark web. From the dark web you can purchase illegal items. Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name]' to purchase an item. Use 'buy -a' to purchase all unowned items.")}function m(){for(const t of Object.keys(i.a)){const e=i.a[t],n=o.a.getHomeComputer().programs.includes(e.program)?r.a.createElement("span",{style:{color:"green"}},"[OWNED]"):r.a.createElement(f.a,{money:e.price});s.a.printRaw(r.a.createElement(r.a.Fragment,null,r.a.createElement("span",null,e.program)," - ",r.a.createElement("span",null,n)," - ",r.a.createElement("span",null,e.description)))}}function h(t){t=t.toLowerCase();let e=null;for(const n of Object.keys(i.a)){const a=i.a[n];a.program.toLowerCase()==t&&(e=a)}if(null===e)return void s.a.error("Unrecognized item: "+t);if(o.a.hasProgram(e.program))return void s.a.print("You already have the "+e.program+" program");if(o.a.money{var n,a;return(null===(n=e)||void 0===n?void 0:n.program)&&t.startsWith(null===(a=e)||void 0===a?void 0:a.program)});a>-1&&n.splice(a,1),o.a.getHomeComputer().programs.push(e.program),s.a.print("You have purchased the "+e.program+" program. The new program can be found on your home computer.")}function d(){const t=[];let e=0;for(const n of Object.keys(i.a)){const a=i.a[n];o.a.hasProgram(a.program)||(t.push(a),e+=a.price)}if(0!==t.length)if(e>o.a.money)s.a.error("Not enough money to purchase remaining programs, "+c.a.formatMoney(e)+" required");else for(const e of t)h(e.program);else s.a.print("All available programs have been purchased already.")}},function(t,e,n){"use strict";function a(t,e){const n=t.hostname;return"requiredHackingSkill"in t?!1===t.hasAdminRights?{res:!1,msg:`Cannot ${e} ${n} server because you do not have root access`}:{res:!0}:{res:!1,msg:`Cannot ${e} ${n} server because it is a Hacknet Node`}}function r(t,e){const n=a(t,"hack");if(!n.res)return n;return t.requiredHackingSkill>e.hacking?{res:!1,msg:`Cannot hack ${t.hostname} server because your hacking skill is not high enough`}:{res:!0}}function i(t){return a(t,"grow")}function o(t){return a(t,"weaken")}n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"c",(function(){return o}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(173),r=n(9);class i{constructor(t){this.augmentation=t}get cost(){return this.augmentation.startingCost*r.a.AugmentationGraftingCostMult}get time(){const t=Math.max(Object(a.sum)(Object.values(this.augmentation.mults)),1),e=Math.log2(t);return(r.a.AugmentationGraftingTimeBase*e+r.a.MillisecondsPerHalfHour)/2}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(5),o=n(118);function s({reputation:t}){return r.a.createElement(o.a,{reputation:i.a.formatReputation(t)+" / sec"})}},function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return s}));var a=n(27),r=n(152);function i(t){return"string"==typeof t&&(!isNaN(t)&&!isNaN(parseFloat(t)))}function o(t){const e=(t=(t=t.trim()).replace(/\s\s+/g," ")).match(/(?:'[^']*'|"[^"]*"|[^;"])*/g);if(!e)return[];const n=e.map(r.h).map(t=>t.match(/(?:'[^']*'|"[^"]*"|[^;"])*/g)).flat(),a=[];for(const t of n)null!==t&&(t.match(/^\s*$/)||a.push(t.trim()));return a}function s(t){let e="";const n=[];let r=0,o=0,s="";for(;o=1&&(s=t.charAt(o-1),"\\"===s&&(l=!0));const c=t.charAt(o);if(c===a.a.DOUBLE_QUOTE)if(l||s!==a.a.SPACE)""===e?e=a.a.DOUBLE_QUOTE:e===a.a.DOUBLE_QUOTE&&(e="");else{const e=t.indexOf(a.a.DOUBLE_QUOTE,o+1);if(-1!==e&&(e===t.length-1||t.charAt(e+1)===a.a.SPACE)){n.push(t.substr(o+1,e-o-1)),r=o=e===t.length-1?e+1:e+2;continue}}else if(c===a.a.QUOTE)if(l||s!==a.a.SPACE)""===e?e=a.a.QUOTE:e===a.a.QUOTE&&(e="");else{const e=t.indexOf(a.a.QUOTE,o+1);if(-1!==e&&(e===t.length-1||t.charAt(e+1)===a.a.SPACE)){n.push(t.substr(o+1,e-o-1)),r=o=e===t.length-1?e+1:e+2;continue}}else if(c===a.a.SPACE&&""===e){const e=t.substr(r,o-r);i(e)?n.push(parseFloat(e)):"true"===e?n.push(!0):"false"===e?n.push(!1):n.push(e),r=o+1}++o}if(r!==o){const e=t.substr(r,o-r);i(e)?n.push(parseFloat(e)):"true"===e?n.push(!0):"false"===e?n.push(!1):n.push(e)}return n}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(1363),o=n(1),s=n(10);function l(t){const[e,n]=Object(a.useState)(0),[l,c]=Object(a.useState)(!1);return r.a.createElement(r.a.Fragment,null,t.lines.slice(0,e).map((t,e)=>r.a.createElement(o.a,{key:e},t)),t.lines.length>e&&r.a.createElement(i.a,{key:e,text:t.lines[e],onDone:function(){const a=e+1;n(a),a>=t.lines.length&&(t.onDone&&t.auto&&t.onDone(),c(!0))}}),!t.auto&&t.onDone&&l&&r.a.createElement(s.a,{onClick:t.onDone},"Continue ..."))}},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}));const a=5,r=1e13},function(t,e,n){"use strict";n.d(e,"c",(function(){return u})),n.d(e,"a",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return p}));var a=n(40),r=n(14),i=n(2),o=n(65),s=n(310),l=n(0),c=n.n(l),f=n(4);const u=()=>[new a.a({name:r.a.HemoRecirculator,moneyCost:45e6,repCost:1e4,info:"A heart implant that greatly increases the body's ability to effectively use and pump blood.",strength_mult:1.08,defense_mult:1.08,agility_mult:1.08,dexterity_mult:1.08,factions:[f.a.Tetrads,f.a.TheDarkArmy,f.a.TheSyndicate]}),new a.a({name:r.a.Targeting1,moneyCost:15e6,repCost:5e3,info:"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates and enhances balance and hand-eye coordination.",dexterity_mult:1.1,factions:[f.a.SlumSnakes,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Sector12,f.a.Ishima,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.Targeting2,moneyCost:425e5,repCost:8750,info:"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting reality by digitally displaying weaknesses and vital signs of threats.",prereqs:[r.a.Targeting1],dexterity_mult:1.2,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Sector12,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.Targeting3,moneyCost:115e6,repCost:27500,info:"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.",prereqs:[r.a.Targeting2],dexterity_mult:1.3,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries,f.a.TheCovenant]}),new a.a({name:r.a.SyntheticHeart,moneyCost:2875e6,repCost:75e4,info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood more efficiently than an organic heart.",agility_mult:1.5,strength_mult:1.5,factions:[f.a.KuaiGongInternational,f.a.FulcrumSecretTechnologies,f.a.SpeakersForTheDead,f.a.NWO,f.a.TheCovenant,f.a.Daedalus,f.a.Illuminati]}),new a.a({name:r.a.SynfibrilMuscle,repCost:437500,moneyCost:1125e6,info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. Scientists have named these artificially enhanced units 'synfibrils'.",strength_mult:1.3,defense_mult:1.3,factions:[f.a.KuaiGongInternational,f.a.FulcrumSecretTechnologies,f.a.SpeakersForTheDead,f.a.NWO,f.a.TheCovenant,f.a.Daedalus,f.a.Illuminati,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib1,repCost:7500,moneyCost:2375e4,info:"The rib cage is augmented to continuously release boosters into the bloodstream which increase the oxygen-carrying capacity of blood.",strength_mult:1.1,defense_mult:1.1,factions:[f.a.SlumSnakes,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Volhaven,f.a.Ishima,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib2,repCost:18750,moneyCost:65e6,info:"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which improve focus and endurance while decreasing reaction time and fatigue.",prereqs:[r.a.CombatRib1],strength_mult:1.14,defense_mult:1.14,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Volhaven,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib3,repCost:35e3,moneyCost:12e7,info:"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that improve muscle mass and physical performance while being safe and free of side effects.",prereqs:[r.a.CombatRib2],strength_mult:1.18,defense_mult:1.18,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries,f.a.TheCovenant]}),new a.a({name:r.a.NanofiberWeave,repCost:37500,moneyCost:125e6,info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, which improves its regenerative and extracellular homeostasis abilities.",strength_mult:1.2,defense_mult:1.2,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.BladeIndustries,f.a.TianDiHui,f.a.SpeakersForTheDead,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.SubdermalArmor,repCost:875e3,moneyCost:325e7,info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. The material is implanted underneath the skin, and is the most advanced form of defensive enhancement that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to mitigate damage from any fire or electrical traumas.",defense_mult:2.2,factions:[f.a.TheSyndicate,f.a.FulcrumSecretTechnologies,f.a.Illuminati,f.a.Daedalus,f.a.TheCovenant]}),new a.a({name:r.a.WiredReflexes,repCost:1250,moneyCost:25e5,info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, supercharging the spread of neural signals and increasing reflex speed.",agility_mult:1.05,dexterity_mult:1.05,factions:[f.a.TianDiHui,f.a.SlumSnakes,f.a.Sector12,f.a.Volhaven,f.a.Aevum,f.a.Ishima,f.a.TheSyndicate,f.a.TheDarkArmy,f.a.SpeakersForTheDead]}),new a.a({name:r.a.GrapheneBoneLacings,repCost:1125e3,moneyCost:425e7,info:"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",strength_mult:1.7,defense_mult:1.7,factions:[f.a.FulcrumSecretTechnologies,f.a.TheCovenant]}),new a.a({name:r.a.BionicSpine,repCost:45e3,moneyCost:125e6,info:"The spine is reconstructed using plasteel and carbon fibers. It is now capable of stimulating and regulating neural signals passing through the spinal cord, improving senses and reaction speed. The 'Bionic Spine' also interfaces with all other 'Bionic' implants.",strength_mult:1.15,defense_mult:1.15,agility_mult:1.15,dexterity_mult:1.15,factions:[f.a.SpeakersForTheDead,f.a.TheSyndicate,f.a.KuaiGongInternational,f.a.OmniTekIncorporated,f.a.BladeIndustries]}),new a.a({name:r.a.GrapheneBionicSpine,repCost:1625e3,moneyCost:6e9,info:"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene which enhances durability and supercharges all body functions.",prereqs:[r.a.BionicSpine],strength_mult:1.6,defense_mult:1.6,agility_mult:1.6,dexterity_mult:1.6,factions:[f.a.FulcrumSecretTechnologies,f.a.ECorp]}),new a.a({name:r.a.BionicLegs,repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility_mult:1.6,factions:[f.a.SpeakersForTheDead,f.a.TheSyndicate,f.a.KuaiGongInternational,f.a.OmniTekIncorporated,f.a.BladeIndustries]}),new a.a({name:r.a.GrapheneBionicLegs,repCost:75e4,moneyCost:45e8,info:"An upgrade to the 'Bionic Legs' augmentation. The legs are fused with graphene, greatly enhancing jumping ability.",prereqs:[r.a.BionicLegs],agility_mult:2.5,factions:[f.a.MegaCorp,f.a.ECorp,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.SpeechProcessor,repCost:7500,moneyCost:5e7,info:"A cochlear implant with an embedded computer that analyzes incoming speech. The embedded computer processes characteristics of incoming speech, such as tone and inflection, to pick up on subtle cues and aid in social interactions.",charisma_mult:1.2,factions:[f.a.TianDiHui,f.a.Chongqing,f.a.Sector12,f.a.NewTokyo,f.a.Aevum,f.a.Ishima,f.a.Volhaven,f.a.Silhouette]}),new a.a({name:r.a.TITN41Injection,repCost:25e3,moneyCost:19e7,info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that control personality. The TITN-41 strain alters these genes so that the subject becomes more outgoing and socialable.",charisma_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.Silhouette]}),new a.a({name:r.a.EnhancedSocialInteractionImplant,repCost:375e3,moneyCost:1375e6,info:"A cranial implant that greatly assists in the user's ability to analyze social situations and interactions. The system uses a wide variety of factors such as facial expressions, body language, and the voice tone, and inflection to determine the best course of action during socialsituations. The implant also uses deep learning software to continuously learn new behaviorpatterns and how to best respond.",charisma_mult:1.6,charisma_exp_mult:1.6,factions:[f.a.BachmanAssociates,f.a.NWO,f.a.ClarkeIncorporated,f.a.OmniTekIncorporated,f.a.FourSigma]}),new a.a({name:r.a.BitWire,repCost:3750,moneyCost:1e7,info:"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing capabilities.",hacking_mult:1.05,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.ArtificialBioNeuralNetwork,repCost:275e3,moneyCost:3e9,info:"A network consisting of millions of nanoprocessors is embedded into the brain. The network is meant to mimic the way a biological brain solves a problem, with each nanoprocessor acting similar to the way a neuron would in a neural network. However, these nanoprocessors are programmed to perform computations much faster than organic neurons, allowing the user to solve much more complex problems at a much faster rate.",hacking_speed_mult:1.03,hacking_money_mult:1.15,hacking_mult:1.12,factions:[f.a.BitRunners,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.ArtificialSynapticPotentiation,repCost:6250,moneyCost:8e7,info:"The body is injected with a chemical that artificially induces synaptic potentiation, otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.",hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_exp_mult:1.05,factions:[f.a.TheBlackHand,f.a.NiteSec]}),new a.a({name:r.a.EnhancedMyelinSheathing,repCost:1e5,moneyCost:1375e6,info:"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. This process results in the proliferation of new, synthetic myelin sheaths in the nervous system. These myelin sheaths can propogate neuro-signals much faster than their organic counterparts, leading to greater processing speeds and better brain function.",hacking_speed_mult:1.03,hacking_exp_mult:1.1,hacking_mult:1.08,factions:[f.a.FulcrumSecretTechnologies,f.a.BitRunners,f.a.TheBlackHand]}),new a.a({name:r.a.SynapticEnhancement,repCost:2e3,moneyCost:75e5,info:"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and induce stronger synaptic activity. This improves the user's cognitive abilities.",hacking_speed_mult:1.03,factions:[f.a.CyberSec,f.a.Aevum]}),new a.a({name:r.a.NeuralRetentionEnhancement,repCost:2e4,moneyCost:25e7,info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal circuits, strengthening the ability to retain information.",hacking_exp_mult:1.25,factions:[f.a.NiteSec]}),new a.a({name:r.a.DataJack,repCost:112500,moneyCost:45e7,info:"A brain implant that provides an interface for direct, wireless communication between a computer's main memory and the mind. This implant allows the user to not only access a computer's memory, but also alter and delete it.",hacking_money_mult:1.25,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.NiteSec,f.a.Chongqing,f.a.NewTokyo]}),new a.a({name:r.a.ENM,repCost:15e3,moneyCost:25e7,info:"A thin device embedded inside the arm containing a wireless module capable of connecting to nearby networks. Once connected, the Netburner Module is capable of capturing and processing all of the traffic on that network. By itself, the Embedded Netburner Module does not do much, but a variety of very powerful upgrades can be installed that allow you to fully control the traffic on a network.",hacking_mult:1.08,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.NiteSec,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries]}),new a.a({name:r.a.ENMCore,repCost:175e3,moneyCost:25e8,info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgrade allows the Embedded Netburner Module to generate its own data on a network.",prereqs:[r.a.ENM],hacking_speed_mult:1.03,hacking_money_mult:1.1,hacking_chance_mult:1.03,hacking_exp_mult:1.07,hacking_mult:1.07,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries]}),new a.a({name:r.a.ENMCoreV2,repCost:1e6,moneyCost:45e8,info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to control information on a network by re-routing traffic, spoofing IP addresses, and altering the data inside network packets.",prereqs:[r.a.ENMCore],hacking_speed_mult:1.05,hacking_money_mult:1.3,hacking_chance_mult:1.05,hacking_exp_mult:1.15,hacking_mult:1.08,factions:[f.a.BitRunners,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries,f.a.OmniTekIncorporated,f.a.KuaiGongInternational]}),new a.a({name:r.a.ENMCoreV3,repCost:175e4,moneyCost:75e8,info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into any device on a network.",prereqs:[r.a.ENMCoreV2],hacking_speed_mult:1.05,hacking_money_mult:1.4,hacking_chance_mult:1.1,hacking_exp_mult:1.25,hacking_mult:1.1,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.ENMAnalyzeEngine,repCost:625e3,moneyCost:6e9,info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster that vastly outperforms the Netburner Module's native single-core processor.",prereqs:[r.a.ENM],hacking_speed_mult:1.1,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.ENMDMA,repCost:1e6,moneyCost:7e9,info:"This implant installs a Direct Memory Access (DMA) controller into the Embedded Netburner Module. This allows the Module to send and receive data directly to and from the main memory of devices on a network.",prereqs:[r.a.ENM],hacking_money_mult:1.4,hacking_chance_mult:1.2,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.Neuralstimulator,repCost:5e4,moneyCost:3e9,info:"A cranial implant that intelligently stimulates certain areas of the brain in order to improve cognitive functions.",hacking_speed_mult:1.02,hacking_chance_mult:1.1,hacking_exp_mult:1.12,factions:[f.a.TheBlackHand,f.a.Chongqing,f.a.Sector12,f.a.NewTokyo,f.a.Aevum,f.a.Ishima,f.a.Volhaven,f.a.BachmanAssociates,f.a.ClarkeIncorporated,f.a.FourSigma]}),new a.a({name:r.a.NeuralAccelerator,repCost:2e5,moneyCost:175e7,info:"A microprocessor that accelerates the processing speed of biological neural networks. This is a cranial implant that is embedded inside the brain.",hacking_mult:1.1,hacking_exp_mult:1.15,hacking_money_mult:1.2,factions:[f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG1,repCost:1e4,moneyCost:7e7,info:"The first generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",hacking_speed_mult:1.01,hacking_mult:1.05,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.CranialSignalProcessorsG2,repCost:18750,moneyCost:125e6,info:"The second generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG1],hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_mult:1.07,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.CranialSignalProcessorsG3,repCost:5e4,moneyCost:55e7,info:"The third generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG2],hacking_speed_mult:1.02,hacking_money_mult:1.15,hacking_mult:1.09,factions:[f.a.NiteSec,f.a.TheBlackHand,f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG4,repCost:125e3,moneyCost:11e8,info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG3],hacking_speed_mult:1.02,hacking_money_mult:1.2,hacking_grow_mult:1.25,factions:[f.a.TheBlackHand,f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG5,repCost:25e4,moneyCost:225e7,info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG4],hacking_mult:1.3,hacking_money_mult:1.25,hacking_grow_mult:1.75,factions:[f.a.BitRunners]}),new a.a({name:r.a.NeuronalDensification,repCost:187500,moneyCost:1375e6,info:"The brain is surgically re-engineered to have increased neuronal density by decreasing the neuron gap junction. Then, the body is genetically modified to enhance the production and capabilities of its neural stem cells.",hacking_mult:1.15,hacking_exp_mult:1.1,hacking_speed_mult:1.03,factions:[f.a.ClarkeIncorporated]}),new a.a({name:r.a.NuoptimalInjectorImplant,repCost:5e3,moneyCost:2e7,info:"This torso implant automatically injects nootropic supplements into the bloodstream to improve memory, increase focus, and provide other cognitive enhancements.",company_rep_mult:1.2,factions:[f.a.TianDiHui,f.a.Volhaven,f.a.NewTokyo,f.a.Chongqing,f.a.ClarkeIncorporated,f.a.FourSigma,f.a.BachmanAssociates]}),new a.a({name:r.a.SpeechEnhancement,repCost:2500,moneyCost:125e5,info:"An advanced neural implant that improves your speaking abilities, making you more convincing and likable in conversations and overall improving your social interactions.",company_rep_mult:1.1,charisma_mult:1.1,factions:[f.a.TianDiHui,f.a.SpeakersForTheDead,f.a.FourSigma,f.a.KuaiGongInternational,f.a.ClarkeIncorporated,f.a.BachmanAssociates]}),new a.a({name:r.a.FocusWire,repCost:75e3,moneyCost:9e8,info:"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",hacking_exp_mult:1.05,strength_exp_mult:1.05,defense_exp_mult:1.05,dexterity_exp_mult:1.05,agility_exp_mult:1.05,charisma_exp_mult:1.05,company_rep_mult:1.1,work_money_mult:1.2,factions:[f.a.BachmanAssociates,f.a.ClarkeIncorporated,f.a.FourSigma,f.a.KuaiGongInternational]}),new a.a({name:r.a.PCDNI,repCost:375e3,moneyCost:375e7,info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most computers. Connecting to a computer through this jack allows you to interface with it using the brain's electrochemical signals.",company_rep_mult:1.3,hacking_mult:1.08,factions:[f.a.FourSigma,f.a.OmniTekIncorporated,f.a.ECorp,f.a.BladeIndustries]}),new a.a({name:r.a.PCDNIOptimizer,repCost:5e5,moneyCost:45e8,info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It improves the performance of the interface and gives the user more control options to a connected computer.",prereqs:[r.a.PCDNI],company_rep_mult:1.75,hacking_mult:1.1,factions:[f.a.FulcrumSecretTechnologies,f.a.ECorp,f.a.BladeIndustries]}),new a.a({name:r.a.PCDNINeuralNetwork,repCost:15e5,moneyCost:75e8,info:"This is an additional installation that upgrades the functionality of the PC Direct-Neural Interface augmentation. When connected to a computer, The Neural Network upgrade allows the user to use their own brain's processing power to aid the computer in computational tasks.",prereqs:[r.a.PCDNI],company_rep_mult:2,hacking_mult:1.1,hacking_speed_mult:1.05,factions:[f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.ADRPheromone1,repCost:3750,moneyCost:175e5,info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, triggers feelings of admiration and approval in other people.",company_rep_mult:1.1,faction_rep_mult:1.1,factions:[f.a.TianDiHui,f.a.TheSyndicate,f.a.NWO,f.a.MegaCorp,f.a.FourSigma]}),new a.a({name:r.a.ADRPheromone2,repCost:62500,moneyCost:55e7,info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, which is similar to but more potent than ADR-V1. This pheromone, when excreted, triggers feelings of admiration, approval, and respect in others.",company_rep_mult:1.2,faction_rep_mult:1.2,factions:[f.a.Silhouette,f.a.FourSigma,f.a.BachmanAssociates,f.a.ClarkeIncorporated]}),new a.a({name:r.a.ShadowsSimulacrum,repCost:37500,moneyCost:4e8,info:"A crude but functional matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation was developed by criminal organizations and allows the user to project and control holographic simulacrums within a large radius. These simulacrums are commonly used for espionage and surveillance work.",company_rep_mult:1.15,faction_rep_mult:1.15,factions:[f.a.TheSyndicate,f.a.TheDarkArmy,f.a.SpeakersForTheDead]}),new a.a({name:r.a.HacknetNodeCPUUpload,repCost:3750,moneyCost:11e6,info:"Uploads the architecture and design details of a Hacknet Node's CPU into the brain. This allows the user to engineer custom hardware and software for the Hacknet Node that provides better performance.",hacknet_node_money_mult:1.15,hacknet_node_purchase_cost_mult:.85,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeCacheUpload,repCost:2500,moneyCost:55e5,info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache into the brain. This allows the user to engineer custom cache hardware for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_level_cost_mult:.85,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeNICUpload,repCost:1875,moneyCost:45e5,info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_purchase_cost_mult:.9,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeKernelDNI,repCost:7500,moneyCost:4e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's kernel using electrochemical signals.",hacknet_node_money_mult:1.25,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeCoreDNI,repCost:12500,moneyCost:6e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using electrochemical signals.",hacknet_node_money_mult:1.45,factions:[f.a.Netburners]}),new a.a({name:r.a.Neurotrainer1,repCost:1e3,moneyCost:4e6,info:"A decentralized cranial implant that improves the brain's ability to learn. It is installed by releasing millions of nanobots into the human brain, each of which attaches to a different neural pathway to enhance the brain's ability to retain and retrieve information.",hacking_exp_mult:1.1,strength_exp_mult:1.1,defense_exp_mult:1.1,dexterity_exp_mult:1.1,agility_exp_mult:1.1,charisma_exp_mult:1.1,factions:[f.a.CyberSec,f.a.Aevum]}),new a.a({name:r.a.Neurotrainer2,repCost:1e4,moneyCost:45e6,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I augmentation, but it does not require Neurotrainer I to be installed as a prerequisite.",hacking_exp_mult:1.15,strength_exp_mult:1.15,defense_exp_mult:1.15,dexterity_exp_mult:1.15,agility_exp_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.BitRunners,f.a.NiteSec]}),new a.a({name:r.a.Neurotrainer3,repCost:25e3,moneyCost:13e7,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, but it does not require either of them to be installed as a prerequisite.",hacking_exp_mult:1.2,strength_exp_mult:1.2,defense_exp_mult:1.2,dexterity_exp_mult:1.2,agility_exp_mult:1.2,charisma_exp_mult:1.2,factions:[f.a.NWO,f.a.FourSigma]}),new a.a({name:r.a.Hypersight,repCost:15e4,moneyCost:275e7,info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. Embedded circuitry within the implant provides the ability to detect heat and movement through solid objects such as walls, thus providing 'x-ray vision'-like capabilities.",dexterity_mult:1.4,hacking_speed_mult:1.03,hacking_money_mult:1.1,factions:[f.a.BladeIndustries,f.a.KuaiGongInternational]}),new a.a({name:r.a.LuminCloaking1,repCost:1500,moneyCost:5e6,info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These cells, when powered, have a negative refractive index. As a result, they bend light around the skin, making the user much harder to see to the naked eye.",agility_mult:1.05,crime_money_mult:1.1,factions:[f.a.SlumSnakes,f.a.Tetrads]}),new a.a({name:r.a.LuminCloaking2,repCost:5e3,moneyCost:3e7,info:"This is a more advanced version of the LuminCloaking-V1 augmentation. This skin implant reinforces the skin with highly-advanced synthetic cells. These cells, when powered, are capable of not only bending light but also of bending heat, making the user more resilient as well as stealthy.",prereqs:[r.a.LuminCloaking1],agility_mult:1.1,defense_mult:1.1,crime_money_mult:1.25,factions:[f.a.SlumSnakes,f.a.Tetrads]}),new a.a({name:r.a.SmartSonar,repCost:22500,moneyCost:75e6,info:"A cochlear implant that helps the player detect and locate enemies using sound propagation.",dexterity_mult:1.1,dexterity_exp_mult:1.15,crime_money_mult:1.25,factions:[f.a.SlumSnakes]}),new a.a({name:r.a.PowerRecirculator,repCost:25e3,moneyCost:18e7,info:"The body's nerves are attached with polypyrrole nanocircuits that are capable of capturing wasted energy, in the form of heat, and converting it back into usable power.",hacking_mult:1.05,strength_mult:1.05,defense_mult:1.05,dexterity_mult:1.05,agility_mult:1.05,charisma_mult:1.05,hacking_exp_mult:1.1,strength_exp_mult:1.1,defense_exp_mult:1.1,dexterity_exp_mult:1.1,agility_exp_mult:1.1,charisma_exp_mult:1.1,factions:[f.a.Tetrads,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.NWO]}),new a.a({name:r.a.QLink,repCost:1875e3,moneyCost:25e12,info:`A brain implant that wirelessly connects you to the ${f.a.Illuminati}'s quantum supercomputer, allowing you to access and use its incredible computing power.`,hacking_mult:1.75,hacking_speed_mult:2,hacking_chance_mult:2.5,hacking_money_mult:4,factions:[f.a.Illuminati]}),new a.a({name:r.a.SPTN97,repCost:125e4,moneyCost:4875e6,info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an artificially-synthesized gene that was developed by DARPA to create super-soldiers through genetic modification. The gene was outlawed in 2056.",strength_mult:1.75,defense_mult:1.75,dexterity_mult:1.75,agility_mult:1.75,hacking_mult:1.15,factions:[f.a.TheCovenant]}),new a.a({name:r.a.HiveMind,repCost:15e5,moneyCost:55e8,info:`A brain implant developed by ${f.a.ECorp}. They do not reveal what exactly the implant does, but they promise that it will greatly enhance your abilities.`,hacking_grow_mult:3,stats:null,factions:[f.a.ECorp]}),new a.a({name:r.a.TheRedPill,repCost:25e5,moneyCost:0,info:"It's time to leave the cave.",stats:null,factions:[f.a.Daedalus]}),new a.a({name:r.a.CordiARCReactor,repCost:1125e3,moneyCost:5e9,info:"The thoracic cavity is equipped with a small chamber designed to hold and sustain hydrogen plasma. The plasma is used to generate fusion power through nuclear fusion, providing limitless amounts of clean energy for the body.",strength_mult:1.35,defense_mult:1.35,dexterity_mult:1.35,agility_mult:1.35,strength_exp_mult:1.35,defense_exp_mult:1.35,dexterity_exp_mult:1.35,agility_exp_mult:1.35,factions:[f.a.MegaCorp]}),new a.a({name:r.a.SmartJaw,repCost:375e3,moneyCost:275e7,info:"A bionic jaw that contains advanced hardware and software capable of psychoanalyzing and profiling the personality of others using optical imaging software.",charisma_mult:1.5,charisma_exp_mult:1.5,company_rep_mult:1.25,faction_rep_mult:1.25,factions:[f.a.BachmanAssociates]}),new a.a({name:r.a.Neotra,repCost:562500,moneyCost:2875e6,info:"A highly-advanced techno-organic drug that is injected into the skeletal and integumentary system. The drug permanently modifies the DNA of the body's skin and bone cells, granting them the ability to repair and restructure themselves.",strength_mult:1.55,defense_mult:1.55,factions:[f.a.BladeIndustries]}),new a.a({name:r.a.Xanipher,repCost:875e3,moneyCost:425e7,info:"A concoction of advanced nanobots that is orally ingested into the body. These nanobots induce physiological changes and significantly improve the body's functioning in all aspects.",hacking_mult:1.2,strength_mult:1.2,defense_mult:1.2,dexterity_mult:1.2,agility_mult:1.2,charisma_mult:1.2,hacking_exp_mult:1.15,strength_exp_mult:1.15,defense_exp_mult:1.15,dexterity_exp_mult:1.15,agility_exp_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.NWO]}),new a.a({name:r.a.HydroflameLeftArm,repCost:125e4,moneyCost:25e11,info:"The left arm of a legendary BitRunner who ascended beyond this world. It projects a light blue energy shield that protects the exposed inner parts. Even though it contains no weapons, the advanced tungsten titanium alloy increases the user's strength to unbelievable levels. The augmentation gets more powerful over time for seemingly no reason.",strength_mult:2.7,factions:[f.a.NWO]}),new a.a({name:r.a.nextSENS,repCost:437500,moneyCost:1925e6,info:"The body is genetically re-engineered to maintain a state of negligible senescence, preventing the body from deteriorating with age.",hacking_mult:1.2,strength_mult:1.2,defense_mult:1.2,dexterity_mult:1.2,agility_mult:1.2,charisma_mult:1.2,factions:[f.a.ClarkeIncorporated]}),new a.a({name:r.a.OmniTekInfoLoad,repCost:625e3,moneyCost:2875e6,info:"OmniTek's data and information repository is uploaded into your brain, enhancing your programming and hacking abilities.",hacking_mult:1.2,hacking_exp_mult:1.25,factions:[f.a.OmniTekIncorporated]}),new a.a({name:r.a.PhotosyntheticCells,repCost:562500,moneyCost:275e7,info:"Chloroplasts are added to epidermal stem cells and are applied to the body using a skin graft. The result is photosynthetic skin cells, allowing users to generate their own energy and nutrition using solar power.",strength_mult:1.4,defense_mult:1.4,agility_mult:1.4,factions:[f.a.KuaiGongInternational]}),new a.a({name:r.a.Neurolink,repCost:875e3,moneyCost:4375e6,info:`A brain implant that provides a high-bandwidth, direct neural link between your mind and the ${f.a.BitRunners}' data servers, which reportedly contain the largest database of hacking tools and information in the world.`,hacking_mult:1.15,hacking_exp_mult:1.2,hacking_chance_mult:1.1,hacking_speed_mult:1.05,programs:[o.a.FTPCrackProgram.name,o.a.RelaySMTPProgram.name],factions:[f.a.BitRunners]}),new a.a({name:r.a.TheBlackHand,repCost:1e5,moneyCost:55e7,info:"A highly advanced bionic hand. This prosthetic not only enhances strength and dexterity but it is also embedded with hardware and firmware that lets the user connect to, access, and hack devices and machines by just touching them.",strength_mult:1.15,dexterity_mult:1.15,hacking_mult:1.1,hacking_speed_mult:1.02,hacking_money_mult:1.1,factions:[f.a.TheBlackHand]}),new a.a({name:r.a.CRTX42AA,repCost:45e3,moneyCost:225e6,info:"The CRTX42-AA gene is injected into the genome. The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal cortex and improves cognitive abilities.",hacking_mult:1.08,hacking_exp_mult:1.15,factions:[f.a.NiteSec]}),new a.a({name:r.a.Neuregen,repCost:37500,moneyCost:375e6,info:"A drug that genetically modifies the neurons in the brain resulting in neurons that never die, continuously regenerate, and strengthen themselves.",hacking_exp_mult:1.4,factions:[f.a.Chongqing]}),new a.a({name:r.a.CashRoot,repCost:12500,moneyCost:125e6,info:c.a.createElement(c.a.Fragment,null,"A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the chip allows you to connect it to a computer and upload the assets."),startingMoney:1e6,programs:[o.a.BruteSSHProgram.name],factions:[f.a.Sector12]}),new a.a({name:r.a.NutriGen,repCost:6250,moneyCost:25e5,info:"A thermo-powered artificial nutrition generator. Endogenously synthesizes glucose, amino acids, and vitamins and redistributes them across the body. The device is powered by the body's naturally wasted energy in the form of heat.",strength_exp_mult:1.2,defense_exp_mult:1.2,dexterity_exp_mult:1.2,agility_exp_mult:1.2,factions:[f.a.NewTokyo]}),new a.a({name:r.a.PCMatrix,repCost:1e5,moneyCost:2e9,info:"A 'Probability Computation Matrix' is installed in the frontal cortex. This implant uses advanced mathematical algorithims to rapidly identify and compute statistical outcomes of nearly every situation.",charisma_mult:1.0777,charisma_exp_mult:1.0777,work_money_mult:1.777,faction_rep_mult:1.0777,company_rep_mult:1.0777,crime_success_mult:1.0777,crime_money_mult:1.0777,programs:[o.a.DeepscanV1.name,o.a.AutoLink.name],factions:[f.a.Aevum]}),new a.a({name:r.a.INFRARet,repCost:7500,moneyCost:3e7,info:"A tiny chip that sits behind the retinae. This implant lets the user visually detect infrared radiation.",crime_success_mult:1.25,crime_money_mult:1.1,dexterity_mult:1.1,factions:[f.a.Ishima]}),new a.a({name:r.a.DermaForce,repCost:15e3,moneyCost:5e7,info:"Synthetic skin that is grafted onto the body. This skin consists of millions of nanobots capable of projecting high-density muon beams, creating an energy barrier around the user.",defense_mult:1.4,factions:[f.a.Volhaven]}),new a.a({name:r.a.GrapheneBrachiBlades,repCost:225e3,moneyCost:25e8,info:"An upgrade to the BrachiBlades augmentation. It infuses the retractable blades with an advanced graphene material making them stronger and lighter.",prereqs:[r.a.BrachiBlades],strength_mult:1.4,defense_mult:1.4,crime_success_mult:1.1,crime_money_mult:1.3,factions:[f.a.SpeakersForTheDead]}),new a.a({name:r.a.GrapheneBionicArms,repCost:5e5,moneyCost:375e7,info:"An upgrade to the Bionic Arms augmentation. It infuses the prosthetic arms with an advanced graphene material to make them stronger and lighter.",prereqs:[r.a.BionicArms],strength_mult:1.85,dexterity_mult:1.85,factions:[f.a.TheDarkArmy]}),new a.a({name:r.a.BrachiBlades,repCost:12500,moneyCost:9e7,info:"A set of retractable plasteel blades that are implanted in the arm, underneath the skin.",strength_mult:1.15,defense_mult:1.15,crime_success_mult:1.1,crime_money_mult:1.15,factions:[f.a.TheSyndicate]}),new a.a({name:r.a.BionicArms,repCost:62500,moneyCost:275e6,info:"Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.",strength_mult:1.3,dexterity_mult:1.3,factions:[f.a.Tetrads]}),new a.a({name:r.a.SNA,repCost:6250,moneyCost:3e7,info:"A cranial implant that affects the user's personality, making them better at negotiation in social situations.",work_money_mult:1.1,company_rep_mult:1.15,faction_rep_mult:1.15,factions:[f.a.TianDiHui]}),new a.a({name:r.a.NeuroreceptorManager,repCost:75e3,moneyCost:55e7,info:"A brain implant carefully assembled around the synapses, which micromanages the activity and levels of various neuroreceptor chemicals and modulates electrical activity to optimize concentration, allowing the user to multitask much more effectively.",stats:c.a.createElement(c.a.Fragment,null,"This augmentation removes the penalty for not focusing on actions such as working in a job or working for a faction."),factions:[f.a.TianDiHui]}),new a.a({name:r.a.CongruityImplant,repCost:1/0,moneyCost:5e13,info:c.a.createElement(c.a.Fragment,null,"Developed by a pioneer in Grafting research, this implant generates pulses of stability which seem to have a nullifying effect versus the Entropy virus.",c.a.createElement("br",null),c.a.createElement("br",null),c.a.createElement("b",null,"Note:")," For unknown reasons, the lowercase ",c.a.createElement("code",null,"n")," appears to be an integral component to its functionality."),stats:c.a.createElement(c.a.Fragment,null,"This Augmentation removes the Entropy virus, and prevents it from affecting you again."),factions:[]})],m=()=>[new a.a({name:r.a.EsperEyewear,repCost:1250,moneyCost:165e6,info:"Ballistic-grade protective and retractable eyewear that was designed specifically for Bladeburner units. This is implanted by installing a mechanical frame in the skull's orbit. This frame interfaces with the brain and allows the user to automatically extrude and extract the eyewear. The eyewear protects against debris, shrapnel, lasers, blinding flashes, and gas. It is also embedded with a data processing chip that can be programmed to display an AR HUD to assist the user in field missions.",bladeburner_success_chance_mult:1.03,dexterity_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.EMS4Recombination,repCost:2500,moneyCost:275e6,info:"A DNA recombination of the EMS-4 Gene. This genetic engineering technique was originally used on Bladeburners during the Synthoid uprising to induce wakefulness and concentration, suppress fear, reduce empathy, improve reflexes, and improve memory among other things.",bladeburner_success_chance_mult:1.03,bladeburner_analysis_mult:1.05,bladeburner_stamina_gain_mult:1.02,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.OrionShoulder,repCost:6250,moneyCost:55e7,info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, the ORION-MKIV shoulder enhances the strength and dexterity of the user's right arm. It also provides protection due to its crystallized graphene plating.",defense_mult:1.05,strength_mult:1.05,dexterity_mult:1.05,bladeburner_success_chance_mult:1.04,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.HyperionV1,repCost:12500,moneyCost:275e7,info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable of rapidly firing bolts of high-density plasma. The weapon is meant to be used against augmented enemies as the ionized nature of the plasma disrupts the electrical systems of Augmentations. However, it can also be effective against non-augmented enemies due to its high temperature and concussive force.",bladeburner_success_chance_mult:1.06,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.HyperionV2,repCost:25e3,moneyCost:55e8,info:"A pair of mini plasma cannons embedded into the hands. This augmentation is more advanced and powerful than the original V1 model. This V2 model is more power-efficient, more accurate, and can fire plasma bolts at a much higher velocity than the V1 model.",prereqs:[r.a.HyperionV1],bladeburner_success_chance_mult:1.08,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.GolemSerum,repCost:31250,moneyCost:11e9,info:"A serum that permanently enhances many aspects of human capabilities, including strength, speed, immune system enhancements, and mitochondrial efficiency. The serum was originally developed by the Chinese military in an attempt to create super soldiers.",strength_mult:1.07,defense_mult:1.07,dexterity_mult:1.07,agility_mult:1.07,bladeburner_stamina_gain_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.VangelisVirus,repCost:18750,moneyCost:275e7,info:"A synthetic symbiotic virus that is injected into human brain tissue. The Vangelis virus heightens the senses and focus of its host, and also enhances its intuition.",dexterity_exp_mult:1.1,bladeburner_analysis_mult:1.1,bladeburner_success_chance_mult:1.04,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.VangelisVirus3,repCost:37500,moneyCost:11e9,info:"An improved version of Vangelis, a synthetic symbiotic virus that is injected into human brain tissue. On top of the benefits of the original virus, this also grants an accelerated healing factor and enhanced reflexes.",prereqs:[r.a.VangelisVirus],defense_exp_mult:1.1,dexterity_exp_mult:1.1,bladeburner_analysis_mult:1.15,bladeburner_success_chance_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.INTERLINKED,repCost:25e3,moneyCost:55e8,info:"The DNA is genetically modified to enhance the human's body extracellular matrix (ECM). This improves the ECM's ability to structurally support the body and grants heightened strength and durability.",strength_exp_mult:1.05,defense_exp_mult:1.05,dexterity_exp_mult:1.05,agility_exp_mult:1.05,bladeburner_max_stamina_mult:1.1,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeRunner,repCost:2e4,moneyCost:825e7,info:`A cybernetic foot augmentation that was specifically created for ${f.a.Bladeburners} during the Synthoid Uprising. The organic musculature of the human foot is enhanced with flexible carbon nanotube matrices that are controlled by intelligent servo-motors.`,agility_mult:1.05,bladeburner_max_stamina_mult:1.05,bladeburner_stamina_gain_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmor,repCost:12500,moneyCost:1375e6,info:`A powered exoskeleton suit designed as armor for ${f.a.Bladeburners} units. This exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, concussive, thermal, chemical, and electric trauma. It also enhances the user's physical abilities.`,strength_mult:1.04,defense_mult:1.04,dexterity_mult:1.04,agility_mult:1.04,bladeburner_stamina_gain_mult:1.02,bladeburner_success_chance_mult:1.03,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorPowerCells,repCost:18750,moneyCost:275e7,info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of more efficiently storing and using power.",prereqs:[r.a.BladeArmor],bladeburner_success_chance_mult:1.05,bladeburner_stamina_gain_mult:1.02,bladeburner_max_stamina_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorEnergyShielding,repCost:21250,moneyCost:55e8,info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system that is capable of projecting an energy shielding force field.",prereqs:[r.a.BladeArmor],defense_mult:1.05,bladeburner_success_chance_mult:1.06,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorUnibeam,repCost:31250,moneyCost:165e8,info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser weapon. It's precision and accuracy makes it useful for quickly neutralizing threats while keeping casualties to a minimum.",prereqs:[r.a.BladeArmor],bladeburner_success_chance_mult:1.08,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorOmnibeam,repCost:62500,moneyCost:275e8,info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use a multiple-fiber system. This upgraded weapon uses multiple fiber laser modules that combine together to form a single, more powerful beam of up to 2000MW.",prereqs:[r.a.BladeArmorUnibeam],bladeburner_success_chance_mult:1.1,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorIPU,repCost:15e3,moneyCost:11e8,info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing Unit that was specially designed to analyze Synthoid related data and information.",prereqs:[r.a.BladeArmor],bladeburner_analysis_mult:1.15,bladeburner_success_chance_mult:1.02,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladesSimulacrum,repCost:1250,moneyCost:15e10,info:"A highly-advanced matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation allows the user to project and control a holographic simulacrum within an extremely large radius. These specially-modified holograms were specifically weaponized by Bladeburner units to be used against Synthoids.",stats:c.a.createElement(c.a.Fragment,null,"This augmentation allows you to perform Bladeburner actions and other actions (such as working, commiting crimes, etc.) at the same time."),isSpecial:!0,factions:[f.a.Bladeburners]})],h=()=>[new a.a({name:r.a.StaneksGift1,repCost:0,moneyCost:0,info:'Allison "Mother" Stanek imparts you with her gift. An experimental Augmentation implanted at the base of the neck. It allows you to overclock your entire system by carefully changing the configuration.',isSpecial:!0,hacking_chance_mult:.9,hacking_speed_mult:.9,hacking_money_mult:.9,hacking_grow_mult:.9,hacking_mult:.9,strength_mult:.9,defense_mult:.9,dexterity_mult:.9,agility_mult:.9,charisma_mult:.9,hacking_exp_mult:.9,strength_exp_mult:.9,defense_exp_mult:.9,dexterity_exp_mult:.9,agility_exp_mult:.9,charisma_exp_mult:.9,company_rep_mult:.9,faction_rep_mult:.9,crime_money_mult:.9,crime_success_mult:.9,hacknet_node_money_mult:.9,hacknet_node_purchase_cost_mult:1.1,hacknet_node_ram_cost_mult:1.1,hacknet_node_core_cost_mult:1.1,hacknet_node_level_cost_mult:1.1,work_money_mult:.9,stats:c.a.createElement(c.a.Fragment,null,"Its unstable nature decreases all your stats by 10%"),factions:[f.a.ChurchOfTheMachineGod]}),new a.a({name:r.a.StaneksGift2,repCost:1e6,moneyCost:0,info:"The next evolution is near, a coming together of man and machine. A synthesis greater than the birth of the human organism. Time spent with the gift has allowed for acclimatization of the invasive augment and the toll it takes upon your frame granting lesser penalty of 5% to all stats.",prereqs:[r.a.StaneksGift1],isSpecial:!0,hacking_chance_mult:.95/.9,hacking_speed_mult:.95/.9,hacking_money_mult:.95/.9,hacking_grow_mult:.95/.9,hacking_mult:.95/.9,strength_mult:.95/.9,defense_mult:.95/.9,dexterity_mult:.95/.9,agility_mult:.95/.9,charisma_mult:.95/.9,hacking_exp_mult:.95/.9,strength_exp_mult:.95/.9,defense_exp_mult:.95/.9,dexterity_exp_mult:.95/.9,agility_exp_mult:.95/.9,charisma_exp_mult:.95/.9,company_rep_mult:.95/.9,faction_rep_mult:.95/.9,crime_money_mult:.95/.9,crime_success_mult:.95/.9,hacknet_node_money_mult:.95/.9,hacknet_node_purchase_cost_mult:1.05/1.1,hacknet_node_ram_cost_mult:1.05/1.1,hacknet_node_core_cost_mult:1.05/1.1,hacknet_node_level_cost_mult:1.05/1.1,work_money_mult:.95/.9,stats:c.a.createElement(c.a.Fragment,null,"The penalty for the gift is reduced to 5%"),factions:[f.a.ChurchOfTheMachineGod]}),new a.a({name:r.a.StaneksGift3,repCost:1e8,moneyCost:0,info:"The synthesis of human and machine is nothing to fear. It is our destiny. You will become greater than the sum of our parts. As One. Embrace your gift fully and wholly free of it's accursed toll. Serenity brings tranquility the form of no longer suffering a stat penalty. ",prereqs:[r.a.StaneksGift2],isSpecial:!0,hacking_chance_mult:1/.95,hacking_speed_mult:1/.95,hacking_money_mult:1/.95,hacking_grow_mult:1/.95,hacking_mult:1/.95,strength_mult:1/.95,defense_mult:1/.95,dexterity_mult:1/.95,agility_mult:1/.95,charisma_mult:1/.95,hacking_exp_mult:1/.95,strength_exp_mult:1/.95,defense_exp_mult:1/.95,dexterity_exp_mult:1/.95,agility_exp_mult:1/.95,charisma_exp_mult:1/.95,company_rep_mult:1/.95,faction_rep_mult:1/.95,crime_money_mult:1/.95,crime_success_mult:1/.95,hacknet_node_money_mult:1/.95,hacknet_node_purchase_cost_mult:1/1.05,hacknet_node_ram_cost_mult:1/1.05,hacknet_node_core_cost_mult:1/1.05,hacknet_node_level_cost_mult:1/1.05,work_money_mult:1/.95,stats:c.a.createElement(c.a.Fragment,null,"Stanek's Gift has no penalty."),factions:[f.a.ChurchOfTheMachineGod]})];function d(){return new a.a({name:r.a.NeuroFluxGovernor,repCost:500,moneyCost:75e4,info:"A device that is embedded in the back of the neck. The NeuroFlux Governor monitors and regulates nervous impulses coming to and from the spinal column, essentially 'governing' the body. By doing so, it improves the functionality of the body's nervous system.",stats:c.a.createElement(c.a.Fragment,null,"This special augmentation can be leveled up infinitely. Each level of this augmentation increases MOST multipliers by 1%, stacking multiplicatively."),hacking_chance_mult:1.01,hacking_speed_mult:1.01,hacking_money_mult:1.01,hacking_grow_mult:1.01,hacking_mult:1.01,strength_mult:1.01,defense_mult:1.01,dexterity_mult:1.01,agility_mult:1.01,charisma_mult:1.01,hacking_exp_mult:1.01,strength_exp_mult:1.01,defense_exp_mult:1.01,dexterity_exp_mult:1.01,agility_exp_mult:1.01,charisma_exp_mult:1.01,company_rep_mult:1.01,faction_rep_mult:1.01,crime_money_mult:1.01,crime_success_mult:1.01,hacknet_node_money_mult:1.01,hacknet_node_purchase_cost_mult:.99,hacknet_node_ram_cost_mult:.99,hacknet_node_core_cost_mult:.99,hacknet_node_level_cost_mult:.99,work_money_mult:1.01,factions:Object.values(f.a)})}function p(){const t=function(){const t=[{bonuses:{hacking_chance_mult:1.25,hacking_speed_mult:1.1,hacking_money_mult:1.25,hacking_grow_mult:1.1},description:"Increases the player's hacking chance by 25%.
Increases the player's hacking speed by 10%.
Increases the amount of money the player's gains from hacking by 25%.
Improves grow() by 10%."},{bonuses:{hacking_mult:1.15,hacking_exp_mult:2},description:"Increases the player's hacking skill by 15%.
Increases the player's hacking experience gain rate by 100%."},{bonuses:{strength_mult:1.25,strength_exp_mult:2,defense_mult:1.25,defense_exp_mult:2,dexterity_mult:1.25,dexterity_exp_mult:2,agility_mult:1.25,agility_exp_mult:2},description:"Increases all of the player's combat stats by 25%.
Increases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma_mult:1.5,charisma_exp_mult:2},description:"This augmentation increases the player's charisma by 50%.
Increases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money_mult:1.2,hacknet_node_purchase_cost_mult:.85,hacknet_node_ram_cost_mult:.85,hacknet_node_core_cost_mult:.85,hacknet_node_level_cost_mult:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%.
Decreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep_mult:1.25,faction_rep_mult:1.15,work_money_mult:1.7},description:"Increases the amount of money the player gains from working by 70%.
Increases the amount of reputation the player gains when working for a company by 25%.
Increases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success_mult:2,crime_money_mult:2},description:"Increases the player's crime success rate by 100%.
Increases the amount of money the player gains from crimes by 100%."}],e=new s.c(Math.floor(i.a.lastUpdate/36e5));for(let t=0;t<5;t++)e.step();return t[Math.floor(t.length*e.random())]}(),e={name:r.a.UnstableCircadianModulator,moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm.",factions:[f.a.SpeakersForTheDead]};return Object.keys(t.bonuses).forEach(n=>e[n]=t.bonuses[n]),new a.a(e)}},,,,,,,,,,,,,,,,,,,,,,,,,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return checkInfiniteLoop})),__webpack_require__.d(__webpack_exports__,"a",(function(){return calculateRamUsage}));var acorn_walk__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(300),acorn__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(252),_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(323),_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(34),_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(81);const specialReferenceIF="__SPECIAL_referenceIf",specialReferenceFOR="__SPECIAL_referenceFor",specialReferenceWHILE="__SPECIAL_referenceWhile",memCheckGlobalKey=".__GLOBAL__";async function parseOnlyRamCalculate(player,otherScripts,code,workerScript){try{let dependencyMap={};const completedParses=new Set,parseQueue=[];function parseCode(t,e){const n=parseOnlyCalculateDeps(t,e);completedParses.add(e);for(let t=0;t0;){const nextModule=parseQueue.shift();if(void 0===nextModule)throw new Error("nextModule should not be undefined");let code;if(nextModule.startsWith("https://")||nextModule.startsWith("http://"))try{const module=await eval("import(nextModule)");code="";for(const t in module)"function"==typeof module[t]&&(code+=module[t].toString()+";\n")}catch(t){return console.error(`Error dynamically importing module from ${nextModule} for RAM calculations: ${t}`),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.URLImportError}}else{if(!Array.isArray(otherScripts))return console.warn("parseOnlyRamCalculate() not called with array of scripts"),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.ImportError};let t=null;const e=nextModule.startsWith("./")?nextModule.slice(2):nextModule;for(const n of otherScripts)if(Object(_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__.b)(n.filename,e)){t=n;break}if(null==t)return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.ImportError};code=t.code}parseCode(code,nextModule)}let ram=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptBaseRamCost;const detailedCosts=[{type:"misc",name:"baseCost",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptBaseRamCost}],unresolvedRefs=Object.keys(dependencyMap).filter(t=>t.startsWith(initialModule)),resolvedRefs=new Set;for(;unresolvedRefs.length>0;){const t=unresolvedRefs.shift();if(void 0===t)throw new Error("ref should not be undefined");if("hacknet"!==t||resolvedRefs.has("hacknet")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptHacknetNodesRamCost,detailedCosts.push({type:"ns",name:"hacknet",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptHacknetNodesRamCost})),"document"!==t||resolvedRefs.has("document")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost,detailedCosts.push({type:"dom",name:"document",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost})),"window"!==t||resolvedRefs.has("window")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost,detailedCosts.push({type:"dom",name:"window",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost})),"corporation"!==t||resolvedRefs.has("corporation")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptCorporationRamCost,detailedCosts.push({type:"ns",name:"corporation",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptCorporationRamCost})),resolvedRefs.add(t),t.endsWith(".*")){const e=t.slice(0,t.length-2);for(const t of Object.keys(dependencyMap).filter(t=>t.startsWith(e)))for(const e of dependencyMap[t]||[])resolvedRefs.has(e)||unresolvedRefs.push(e)}else for(const e of dependencyMap[t]||[])resolvedRefs.has(e)||unresolvedRefs.push(e);try{function applyFuncRam(t){return"number"==typeof t?t:"function"==typeof t?t(player):0}if(workerScript.loadedFns[t])continue;let e;workerScript.loadedFns[t]=!0;let n="n/a";t in workerScript.env.vars.bladeburner?(e=workerScript.env.vars.bladeburner[t],n="bladeburner."+t):t in workerScript.env.vars.codingcontract?(e=workerScript.env.vars.codingcontract[t],n="codingcontract."+t):t in workerScript.env.vars.stanek?(e=workerScript.env.vars.stanek[t],n="stanek."+t):t in workerScript.env.vars.gang?(e=workerScript.env.vars.gang[t],n="gang."+t):t in workerScript.env.vars.sleeve?(e=workerScript.env.vars.sleeve[t],n="sleeve."+t):t in workerScript.env.vars.stock?(e=workerScript.env.vars.stock[t],n="stock."+t):t in workerScript.env.vars.ui?(e=workerScript.env.vars.ui[t],n="ui."+t):t in workerScript.env.vars.grafting?(e=workerScript.env.vars.grafting[t],n="grafting."+t):(e=workerScript.env.vars[t],n=""+t);const a=applyFuncRam(e);ram+=a,detailedCosts.push({type:"fn",name:n,cost:a})}catch(t){continue}}return{cost:ram,entries:detailedCosts.filter(t=>t.cost>0)}}catch(t){return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}}function checkInfiniteLoop(t){const e=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(t,{sourceType:"module",ecmaVersion:"latest"});let n=-1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(e,{},{WhileStatement:(e,a,r)=>{!function(t){return"Literal"===t.type&&"true"===t.raw}(e.test)||function(t){let e=!1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(t,{},{AwaitExpression:()=>{e=!0}}),e}(e)?e.body&&r(e.body,a):n=(t.slice(0,e.start).match(/\n/g)||[]).length+1}}),n}function parseOnlyCalculateDeps(t,e){const n=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(t,{sourceType:"module",ecmaVersion:"latest"}),a=e+memCheckGlobalKey,r={};r[a]=new Set;const i={},o=[];function s(t,n){const a=r[t]||(r[t]=new Set),o=i[n];void 0!==o&&a.add(o),a.add(e+"."+n),a.add(n)}const l=Object.getOwnPropertyNames(Object.prototype);function c(){return{Identifier:(t,e)=>{l.includes(t.name)||s(e.key,t.name)},WhileStatement:(t,e,n)=>{s(e.key,specialReferenceWHILE),t.test&&n(t.test,e),t.body&&n(t.body,e)},DoWhileStatement:(t,e,n)=>{s(e.key,specialReferenceWHILE),t.test&&n(t.test,e),t.body&&n(t.body,e)},ForStatement:(t,e,n)=>{s(e.key,specialReferenceFOR),t.init&&n(t.init,e),t.test&&n(t.test,e),t.update&&n(t.update,e),t.body&&n(t.body,e)},IfStatement:(t,e,n)=>{s(e.key,specialReferenceIF),t.test&&n(t.test,e),t.consequent&&n(t.consequent,e),t.alternate&&n(t.alternate,e)},MemberExpression:(t,e,n)=>{t.object&&n(t.object,e),t.property&&n(t.property,e)}}}return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(n,{key:a},Object.assign({ImportDeclaration:(t,e)=>{const n=t.source.value;o.push(n);const a=r[e.key];if(void 0===a)throw new Error("set should not be undefined");a.add(n+memCheckGlobalKey);for(let a=0;a{const n=e+"."+(null===t.id?"__SPECIAL_DEFAULT_EXPORT__":t.id.name);acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(t,{key:n},c())}},c())),{dependencyMap:r,additionalModules:o}}async function calculateRamUsage(t,e,n){const a={loadedFns:{},env:{vars:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.b}};try{return await parseOnlyRamCalculate(t,n,e,a)}catch(t){return console.error("Failed to parse script for RAM calculations:"),console.error(t),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}}},function(t,e,n){"use strict";function a(t){return+(Math.round(parseFloat(t+"e+2"))+"e-2")}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n(204),r=n(28),i=n(15),o=n(24),s=n(267),l=n(33),c=n(250),f=n(9),u=n(238),m=n(82),h=n(1008),d=n(1010);class p{constructor(t="",e=!1){this.facName=t,this.members=[],this.wanted=1,this.respect=1,this.isHackingGang=e,this.respectGainRate=0,this.wantedGainRate=0,this.moneyGainRate=0,this.storedCycles=0,this.storedTerritoryAndPowerCycles=0,this.territoryClashChance=0,this.territoryWarfareEngaged=!1,this.notifyMemberDeath=!0}getPower(){return m.a[this.facName].power}getTerritory(){return m.a[this.facName].territory}process(t=1,e){const n=1e3/f.a._idleSpeed;if(isNaN(t)&&console.error("NaN passed into Gang.process(): "+t),this.storedCycles+=t,this.storedCycles<2*n)return;const a=Math.min(this.storedCycles,5*n);try{this.processGains(a,e),this.processExperienceGains(a),this.processTerritoryAndPowerGains(a),this.storedCycles-=a}catch(t){console.error("Exception caught when processing Gang: "+t)}}processGains(t=1,e){let n=0,o=0,s=0,l=0;for(let t=0;te&&(n=1),this.wanted=n,this.wanted<1&&(this.wanted=1)}e.gainMoney(n*t,"gang")}processTerritoryAndPowerGains(t=1){if(this.storedTerritoryAndPowerCycles+=t,this.storedTerritoryAndPowerCycles0&&(this.territoryClashChance=Math.max(0,this.territoryClashChance-.01));const n=c.a.Names.filter(t=>m.a[t].territory>0||t===e);if(n.length>1)for(let t=0;te!==n[t]),i=Object(l.a)(0,r.length-1),o=n[t],s=r[i];if(!(o!==e&&s!==e||Math.random()t.territory).reduce((t,e)=>t+e,0);Object.values(m.a).forEach(t=>t.territory/=u)}}processExperienceGains(t=1){for(let e=0;e=0;--t){const n=this.members[t];if("Territory Warfare"!==n.task)continue;const a=e/Math.pow(n.def,.6);Math.random()=c.a.MaximumGangMembers)&&this.respect>=this.getRespectNeededToRecruitMember()}getRespectNeededToRecruitMember(){if(this.members.length<3)return 0;const t=this.members.length-2;return Math.pow(5,t)}recruitMember(t){if(""===(t=String(t))||!this.canRecruitMember())return!1;if(this.members.filter(e=>e.name===t).length>=1)return!1;const e=new h.a(t);return this.members.push(e),!0}getWantedPenalty(){return this.respect/(this.respect+this.wanted)}calculatePower(){let t=0;for(let e=0;e"Ascended Gang member "+t.name),n}catch(t){throw null==e&&Object(s.a)(t),t}}getDiscount(){const t=this.getPower(),e=this.respect,n=Math.pow(e,.01)+e/5e6+Math.pow(t,.01)+t/1e6-1;return Math.max(1,n)}getAllTaskNames(){return Object.keys(u.a).filter(t=>{const e=u.a[t];return null!=e&&("Unassigned"!==e.name&&(this.isHackingGang===e.isHacking||!this.isHackingGang===e.isCombat))})}getUpgradeCost(t){return null==t?1/0:t.cost/this.getDiscount()}toJSON(){return Object(o.b)("Gang",this)}static fromJSON(t){return Object(o.a)(p,t.data)}}o.c.constructors.Gang=p},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var a=n(182);let r=1;function i(){let t=r,e=!1;for(let n=0;n<1e6;){if(!a.a.has(t+n)){e=!0,t+=n;break}n===Number.MAX_SAFE_INTEGER-1?n=1:++n}return e?(r=t+1,r>=Number.MAX_SAFE_INTEGER&&(r=1),t):-1}function o(){r=1}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return at}));var a=n(409),r=n(34),i=n(292),o=n(7),s=n(9),l=n(100),c=n(469),f=n(92),u=n(88),m=n(2),h=n(65),d=n(251),p=n(229),g=n(99),y=n(395),b=n(25),E=n(133),v=n(220),k=n(46),_=n(79),w=n(518),S=n(81),C=n(221),x=n(193),L=n(144),O=n(182),M=n(108),T=n(5),A=n(23),R=n(181),N=n(253),P=n(147),I=n(1020),F=n(1021),D=n(1022),j=n(1024),B=n(1025),G=n(1027),W=n(1028),H=n(1029),U=n(1031),q=n(1036),$=n(1037),K=n(1038),z=n(1389),V=n(628),Y=n(15),J=n(143),X=n(627),Q=n(281),Z=n(406),tt=n(451),et=n(16),nt=n(1390);function at(e){const n=function(t,n){if(e.dynamicLoadedFns[t])return;e.dynamicLoadedFns[t]=!0;let a=e.scriptRef.threads;if("number"!=typeof a&&(console.warn(`WorkerScript detected NaN for threadcount for ${e.name} on ${e.hostname}`),a=1),e.dynamicRamUsage+=n,e.dynamicRamUsage>1.01*e.ramUsage)throw Object(M.b)(e,`Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${t}.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${a}\n Dynamic RAM Usage: ${T.a.formatRAM(e.dynamicRamUsage)}\n Static RAM Usage: ${T.a.formatRAM(e.ramUsage)}\n\n One of these could be the reason:\n * Using eval() to get a reference to a ns function\n   const myScan = eval('ns.scan');\n\n * Using map access to do the same\n   const myScan = ns['scan'];\n\n Sorry :(`)},rt=function(t,e){const n=Object(b.d)(t);if(null==n)throw ft(e,"Invalid hostname: "+t);return n},it=function(t,n,a,r){if("string"==typeof a&&""!==a||(a="getRunningScript"),!Array.isArray(r))throw Object(M.b)(e,`Invalid scriptArgs argument passed into getRunningScript() from ${a}(). This is probably a bug. Please report to game developer`);if(null!=t&&"string"==typeof t){null==n&&(n=e.hostname);const i=rt(n,a);return Object(p.a)(t,r,i)}return e.scriptRef},ot=function(t,e){"string"==typeof e&&""!==e||(e="getRunningScriptgetRunningScriptByPid");for(const e of Object(b.c)()){const n=Object(p.b)(t,e);if(n)return n}return null},st=function(t){return{args:t.args.slice(),filename:t.filename,logs:t.logs.slice(),offlineExpGained:t.offlineExpGained,offlineMoneyMade:t.offlineMoneyMade,offlineRunningTime:t.offlineRunningTime,onlineExpGained:t.onlineExpGained,onlineMoneyMade:t.onlineMoneyMade,onlineRunningTime:t.onlineRunningTime,pid:t.pid,ramUsage:t.ramUsage,server:t.server,threads:t.threads}},lt=function(t,e,n){return Array.isArray(n)||(n=[]),`Cannot find running script ${t} on server ${e} with args: ${Object(N.a)(n)}`},ct=function(t,n=""){return t instanceof f.a&&(e.log(n,()=>"Does not work on Hacknet Servers"),!0)},ft=function(t,n){const a=(new Error).stack;if(void 0===a)throw new Error("how did we not throw an error?");const r=a.split("\n").slice(1),i=e.getServer().scripts,o=[];for(const t of r){let e;for(const n of i){n.url&&t.includes(n.url)&&(e=n.filename);for(const a of n.dependencies)t.includes(a.url)&&(e=a.filename)}if(!e)continue;function s(t){const e=t.match(/.*:(\d+):\d+.*/),n=t.match(/.*at (.+) \(.*/);return e&&n?{line:e[1],func:n[1]}:null}let n={line:"-1",func:"unknown"};const a=s(t);function l(t){const e=t.match(/.*:(\d+):\d+$/),n=t.lastIndexOf("@");return e&&-1!==n?{line:e[1],func:t.slice(0,n)}:null}a&&(n=a);const r=l(t);r&&(n=r),o.push(`${e}:L${n.line}@${n.func}`)}e.log(t,()=>n);let c=`${t}: ${n}`;return 0!==o.length&&(c+="

Stack:
"+o.join("
")),Object(M.b)(e,c)},ut=function(t,n,{threads:a,stock:r}={}){if(void 0===t)throw ft("hack","Takes 1 argument.");const i=Object(M.d)(e,"hack",a),f=rt(t,"hack");if(!(f instanceof k.a))throw ft("hack","Cannot be executed on this server.");const u=Object(l.d)(f,m.a),h=Object(c.b)(f,m.a);if(!h.res)throw ft("hack",h.msg||"");return e.log("hack",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*u,!0)} (t=${T.a.formatThreads(i)})`),Object(M.c)(1e3*u,e).then((function(){const t=Object(l.b)(f,m.a),a=Math.random();let c=Object(l.c)(f,m.a)*i;const u=c/4;if(af.moneyAvailable&&(h=f.moneyAvailable),f.moneyAvailable-=h,f.moneyAvailable<0&&(f.moneyAvailable=0);const d=h*o.a.ScriptHackMoneyGain;return m.a.gainMoney(d,"hacking"),e.scriptRef.onlineMoneyMade+=d,m.a.scriptProdSinceLastAug+=d,e.scriptRef.recordHack(f.hostname,d,i),m.a.gainHackingExp(c),n&&m.a.gainIntelligenceExp(.005),e.scriptRef.onlineExpGained+=c,e.log("hack",()=>`Successfully hacked '${f.hostname}' for ${T.a.formatMoney(d)} and ${T.a.formatExp(c)} exp (t=${T.a.formatThreads(i)})`),f.fortify(s.a.ServerFortifyAmount*Math.min(i,a)),r&&Object(w.c)(f,h),n&&(f.backdoorInstalled=!0),Promise.resolve(d)}return m.a.gainHackingExp(u),e.scriptRef.onlineExpGained+=u,e.log("hack",()=>`Failed to hack '${f.hostname}'. Gained ${T.a.formatExp(u)} exp (t=${T.a.formatThreads(i)})`),Promise.resolve(0)}))},mt=function(t){let e="";for(let n of t)n=Object(V.a)(n),e+="object"==typeof n?JSON.stringify(n):""+n;return e},ht={updateDynamicRam:n,makeRuntimeErrorMsg:ft,string:(t,e,n)=>{if("string"==typeof n)return n;if("number"==typeof n)return n+"";throw ft(t,e+" should be a string.")},number:(t,e,n)=>{if("string"==typeof n){const t=parseFloat(n);if(!isNaN(t))return t}else if("number"==typeof n){if(isNaN(n))throw ft(t,e+" is NaN.");return n}throw ft(t,e+" should be a number.")},boolean:t=>!!t,city:(t,e,n)=>{if("string"!=typeof n)throw ft(t,e+" should be a city name.");const a=n;if(!Object.values(et.a).includes(a))throw ft(t,e+" should be a city name.");return a},getServer:rt,checkSingularityAccess:function(t){if(4!==m.a.bitNodeN&&0===m.a.sourceFileLvl(4))throw ft(t,"This singularity function requires Source-File 4 to run. A power up you obtain later in the game. It will be very obvious when and how you can obtain it.")},hack:ut,getValidPort:(t,e)=>{if(isNaN(e))throw ft(t,`Invalid argument. Must be a port number between 1 and ${s.a.NumNetscriptPorts}, is ${e}`);if((e=Math.round(e))<1||e>s.a.NumNetscriptPorts)throw ft(t,`Trying to use an invalid port: ${e}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const n=x.a[e-1];if(null==n||!(n instanceof Object))throw ft(t,`Could not find port: ${e}. This is a bug. Report to dev.`);return n}},dt=Object(I.a)(m.a,e,ht),pt=Object(F.a)(m.a,e,ht),gt=Object(D.a)(m.a,e,ht),yt=Object(j.a)(m.a,e,ht),bt=Object(nt.a)(ht,{},e,Object(B.a)(m.a,e,ht),"stanek").stanek,Et=Object(W.a)(m.a,e,ht),vt=Object(H.a)(m.a,e,ht),kt=Object(U.a)(m.a,e,ht),_t=Object(q.a)(m.a,e,ht),wt=Object(z.a)(m.a,e,ht),St=Object($.a)(m.a,e,ht),Ct=Object(G.a)(m.a,e,ht),xt=Object(K.a)(m.a,e,ht),Lt={...{...wt,singularity:wt,gang:dt,bladeburner:Et,codingcontract:vt,sleeve:pt,corporation:kt,stanek:bt,ui:Ct,formulas:_t,stock:St,grafting:xt,args:e.args,hacknet:yt,sprintf:a.sprintf,vsprintf:a.vsprintf,scan:function(t=e.hostname){n("scan",Object(r.c)(m.a,"scan"));const a=ht.string("scan","hostname",t),i=rt(a,"scan"),o=[];for(let t=0;t`returned ${i.serversOnNetwork.length} connections for ${i.hostname}`),o},hack:function(t,{threads:e,stock:a}={}){n("hack",Object(r.c)(m.a,"hack"));const i=ht.string("hack","hostname",t);return ut(i,!1,{threads:e,stock:a})},hackAnalyzeThreads:function(t,a){n("hackAnalyzeThreads",Object(r.c)(m.a,"hackAnalyzeThreads"));const i=ht.string("hackAnalyzeThreads","hostname",t),o=ht.number("hackAnalyzeThreads","hackAmount",a),s=rt(i,"hackAnalyzeThreads");if(!(s instanceof k.a))return e.log("hackAnalyzeThreads",()=>"Cannot be executed on this server."),-1;if(isNaN(o))throw ft("hackAnalyzeThreads",`Invalid hackAmount argument passed into hackAnalyzeThreads: ${o}. Must be numeric.`);if(o<0||o>s.moneyAvailable)return-1;if(0===o)return 0;const c=Object(l.e)(s,m.a);return 0===c||0===s.moneyAvailable?0:o/Math.floor(s.moneyAvailable*c)},hackAnalyze:function(t){n("hackAnalyze",Object(r.c)(m.a,"hackAnalyze"));const a=ht.string("hackAnalyze","hostname",t),i=rt(a,"hackAnalyze");return i instanceof k.a?Object(l.e)(i,m.a):(e.log("hackAnalyze",()=>"Cannot be executed on this server."),0)},hackAnalyzeSecurity:function(t,a){n("hackAnalyzeSecurity",Object(r.c)(m.a,"hackAnalyzeSecurity"));let i=ht.number("hackAnalyzeSecurity","threads",t);if(a){const t=ht.string("hackAnalyzeSecurity","hostname",a),n=rt(t,"hackAnalyze");if(!(n instanceof k.a))return e.log("hackAnalyzeSecurity",()=>"Cannot be executed on this server."),0;const r=Object(l.e)(n,m.a);r>0&&(i=Math.ceil(1/r))}return s.a.ServerFortifyAmount*i},hackAnalyzeChance:function(t){n("hackAnalyzeChance",Object(r.c)(m.a,"hackAnalyzeChance"));const a=ht.string("hackAnalyzeChance","hostname",t),i=rt(a,"hackAnalyzeChance");return i instanceof k.a?Object(l.b)(i,m.a):(e.log("hackAnalyzeChance",()=>"Cannot be executed on this server."),0)},sleep:async function(t=0){n("sleep",Object(r.c)(m.a,"sleep"));const a=ht.number("sleep","time",t);if(void 0===a)throw ft("sleep","Takes 1 argument.");return e.log("sleep",()=>`Sleeping for ${a} milliseconds`),Object(M.c)(a,e).then((function(){return Promise.resolve(!0)}))},asleep:function(t=0){n("asleep",Object(r.c)(m.a,"asleep"));const a=ht.number("asleep","time",t);if(void 0===a)throw ft("asleep","Takes 1 argument.");return e.log("asleep",()=>`Sleeping for ${a} milliseconds`),new Promise(t=>setTimeout(()=>t(!0),a))},grow:async function(t,{threads:a,stock:i}={}){n("grow",Object(r.c)(m.a,"grow"));const o=ht.string("grow","hostname",t),s=Object(M.d)(e,"grow",null!=a?a:e.scriptRef.threads);if(void 0===o)throw ft("grow","Takes 1 argument.");const f=rt(o,"grow");if(!(f instanceof k.a))return e.log("grow",()=>"Cannot be executed on this server."),Promise.resolve(0);const u=Object(b.d)(e.hostname);if(null===u)throw new Error("Workerscript host is null");const h=Object(c.a)(f);if(!h.res)throw ft("grow",h.msg||"");const d=Object(l.a)(f,m.a);return e.log("grow",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*d,!0)} (t=${T.a.formatThreads(s)}).`),Object(M.c)(1e3*d,e).then((function(){const t=f.moneyAvailable<=0?1:f.moneyAvailable;Object(E.e)(f,s,m.a,u.cpuCores);const n=f.moneyAvailable;e.scriptRef.recordGrow(f.hostname,s);const a=Object(l.c)(f,m.a)*s,r=n/t-1;return e.log("grow",()=>`Available money on '${f.hostname}' grown by ${T.a.formatPercentage(r,6)}. Gained ${T.a.formatExp(a)} hacking exp (t=${T.a.formatThreads(s)}).`),e.scriptRef.onlineExpGained+=a,m.a.gainHackingExp(a),i&&Object(w.b)(f,n-t),Promise.resolve(n/t)}))},growthAnalyze:function(t,a,i=1){n("growthAnalyze",Object(r.c)(m.a,"growthAnalyze"));const o=ht.string("growthAnalyze","hostname",t),s=ht.number("growthAnalyze","growth",a),l=ht.number("growthAnalyze","cores",i),c=rt(o,"growthAnalyze");if(!(c instanceof k.a))return e.log("growthAnalyze",()=>"Cannot be executed on this server."),0;if("number"!=typeof s||isNaN(s)||s<1||!isFinite(s))throw ft("growthAnalyze",`Invalid argument: growth must be numeric and >= 1, is ${s}.`);return Object(E.c)(c,Number(s),m.a,l)},growthAnalyzeSecurity:function(t){n("growthAnalyzeSecurity",Object(r.c)(m.a,"growthAnalyzeSecurity"));const e=ht.number("growthAnalyzeSecurity","threads",t);return 2*s.a.ServerFortifyAmount*e},weaken:async function(t,{threads:a}={}){n("weaken",Object(r.c)(m.a,"weaken"));const i=ht.string("weaken","hostname",t),o=Object(M.d)(e,"weaken",null!=a?a:e.scriptRef.threads);if(void 0===i)throw ft("weaken","Takes 1 argument.");const f=rt(i,"weaken");if(!(f instanceof k.a))return e.log("weaken",()=>"Cannot be executed on this server."),Promise.resolve(0);const u=Object(c.c)(f);if(!u.res)throw ft("weaken",u.msg||"");const h=Object(l.f)(f,m.a);return e.log("weaken",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*h,!0)} (t=${T.a.formatThreads(o)})`),Object(M.c)(1e3*h,e).then((function(){const t=Object(b.d)(e.hostname);if(null===t)return e.log("weaken",()=>"Server is null, did it die?"),Promise.resolve(0);const n=1+(t.cpuCores-1)/16;f.weaken(s.a.ServerWeakenAmount*o*n),e.scriptRef.recordWeaken(f.hostname,o);const a=Object(l.c)(f,m.a)*o;return e.log("weaken",()=>`'${f.hostname}' security level weakened to ${f.hackDifficulty}. Gained ${T.a.formatExp(a)} hacking exp (t=${T.a.formatThreads(o)})`),e.scriptRef.onlineExpGained+=a,m.a.gainHackingExp(a),Promise.resolve(s.a.ServerWeakenAmount*o*n)}))},weakenAnalyze:function(t,e=1){n("weakenAnalyze",Object(r.c)(m.a,"weakenAnalyze"));const a=ht.number("weakenAnalyze","threads",t),i=1+(ht.number("weakenAnalyze","cores",e)-1)/16;return s.a.ServerWeakenAmount*a*i*o.a.ServerWeakenRate},share:async function(){n("share",Object(r.c)(m.a,"share")),e.log("share",()=>"Sharing this computer.");const t=Object(Z.b)(e.scriptRef.threads*Object(Q.a)(m.a.intelligence,2));return Object(M.c)(1e4,e).finally((function(){e.log("share",()=>"Finished sharing this computer."),t()}))},getSharePower:function(){return n("getSharePower",Object(r.c)(m.a,"getSharePower")),Object(Z.a)()},print:function(...t){if(n("print",Object(r.c)(m.a,"print")),0===t.length)throw ft("print","Takes at least 1 argument.");e.print(mt(t))},printf:function(t,...i){n("printf",Object(r.c)(m.a,"printf"));const o=ht.string("printf","format",t);if("string"!=typeof o)throw ft("printf","First argument must be string for the format.");e.print(Object(a.vsprintf)(o,i))},tprint:function(...t){if(n("tprint",Object(r.c)(m.a,"tprint")),0===t.length)throw ft("tprint","Takes at least 1 argument.");const a=mt(t);a.startsWith("ERROR")||a.startsWith("FAIL")?u.a.error(`${e.scriptRef.filename}: ${a}`):a.startsWith("SUCCESS")?u.a.success(`${e.scriptRef.filename}: ${a}`):a.startsWith("WARN")?u.a.warn(`${e.scriptRef.filename}: ${a}`):a.startsWith("INFO")?u.a.info(`${e.scriptRef.filename}: ${a}`):u.a.print(`${e.scriptRef.filename}: ${a}`)},tprintf:function(t,...e){n("tprintf",Object(r.c)(m.a,"tprintf"));const i=ht.string("printf","format",t);if("string"!=typeof i)throw ft("tprintf","First argument must be string for the format.");const o=Object(a.vsprintf)(i,e);o.startsWith("ERROR")||o.startsWith("FAIL")?u.a.error(""+o):o.startsWith("SUCCESS")?u.a.success(""+o):o.startsWith("WARN")?u.a.warn(""+o):o.startsWith("INFO")?u.a.info(""+o):u.a.print(""+o)},clearLog:function(){n("clearLog",Object(r.c)(m.a,"clearLog")),e.scriptRef.clearLog()},disableLog:function(t){n("disableLog",Object(r.c)(m.a,"disableLog"));const a=ht.string("disableLog","fn",t);if("ALL"===a){for(const t of Object.keys(Ot))e.disableLogs[t]=!0;e.log("disableLog",()=>"Disabled logging for all functions")}else{if(void 0===Ot[a])throw ft("disableLog",`Invalid argument: ${a}.`);e.disableLogs[a]=!0,e.log("disableLog",()=>"Disabled logging for "+a)}},enableLog:function(t){n("enableLog",Object(r.c)(m.a,"enableLog"));const a=ht.string("enableLog","fn",t);if("ALL"===a){for(const t of Object.keys(Ot))delete e.disableLogs[t];e.log("enableLog",()=>"Enabled logging for all functions")}else if(void 0===Ot[a])throw ft("enableLog",`Invalid argument: ${a}.`);delete e.disableLogs[a],e.log("enableLog",()=>"Enabled logging for "+a)},isLogEnabled:function(t){n("isLogEnabled",Object(r.c)(m.a,"isLogEnabled"));const a=ht.string("isLogEnabled","fn",t);if(void 0===Ot[a])throw ft("isLogEnabled",`Invalid argument: ${a}.`);return!e.disableLogs[a]},getScriptLogs:function(t,a,...i){n("getScriptLogs",Object(r.c)(m.a,"getScriptLogs"));const o=it(t,a,"getScriptLogs",i);return null==o?(e.log("getScriptLogs",()=>lt(t,a,i)),[]):o.logs.slice()},tail:function(t,a=e.hostname,...i){let o;n("tail",Object(r.c)(m.a,"tail")),o=0===arguments.length?e.scriptRef:"number"==typeof t?ot(t,"tail"):it(t,a,"tail",i),null!=o?R.b.emit(o):e.log("tail",()=>lt(t,a,i))},nuke:function(t){n("nuke",Object(r.c)(m.a,"nuke"));const a=ht.string("tail","hostname",t);if(void 0===a)throw ft("nuke","Takes 1 argument.");const i=rt(a,"nuke");if(!(i instanceof k.a))return e.log("nuke",()=>"Cannot be executed on this server."),!1;if(i.hasAdminRights)return e.log("nuke",()=>`Already have root access to '${i.hostname}'.`),!0;if(!m.a.hasProgram(h.a.NukeProgram.name))throw ft("nuke","You do not have the NUKE.exe virus!");if(i.openPortCount`Executed NUKE.exe virus on '${i.hostname}' to gain root access.`),!0},brutessh:function(t){n("brutessh",Object(r.c)(m.a,"brutessh"));const a=ht.string("brutessh","hostname",t);if(void 0===a)throw ft("brutessh","Takes 1 argument.");const i=rt(a,"brutessh");if(!(i instanceof k.a))return e.log("brutessh",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.BruteSSHProgram.name))throw ft("brutessh","You do not have the BruteSSH.exe program!");return i.sshPortOpen?e.log("brutessh",()=>`SSH Port (22) already opened on '${i.hostname}'.`):(e.log("brutessh",()=>`Executed BruteSSH.exe on '${i.hostname}' to open SSH port (22).`),i.sshPortOpen=!0,++i.openPortCount),!0},ftpcrack:function(t){n("ftpcrack",Object(r.c)(m.a,"ftpcrack"));const a=ht.string("ftpcrack","hostname",t);if(void 0===a)throw ft("ftpcrack","Takes 1 argument.");const i=rt(a,"ftpcrack");if(!(i instanceof k.a))return e.log("ftpcrack",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.FTPCrackProgram.name))throw ft("ftpcrack","You do not have the FTPCrack.exe program!");return i.ftpPortOpen?e.log("ftpcrack",()=>`FTP Port (21) already opened on '${i.hostname}'.`):(e.log("ftpcrack",()=>`Executed FTPCrack.exe on '${i.hostname}' to open FTP port (21).`),i.ftpPortOpen=!0,++i.openPortCount),!0},relaysmtp:function(t){n("relaysmtp",Object(r.c)(m.a,"relaysmtp"));const a=ht.string("relaysmtp","hostname",t);if(void 0===a)throw ft("relaysmtp","Takes 1 argument.");const i=rt(a,"relaysmtp");if(!(i instanceof k.a))return e.log("relaysmtp",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.RelaySMTPProgram.name))throw ft("relaysmtp","You do not have the relaySMTP.exe program!");return i.smtpPortOpen?e.log("relaysmtp",()=>`SMTP Port (25) already opened on '${i.hostname}'.`):(e.log("relaysmtp",()=>`Executed relaySMTP.exe on '${i.hostname}' to open SMTP port (25).`),i.smtpPortOpen=!0,++i.openPortCount),!0},httpworm:function(t){n("httpworm",Object(r.c)(m.a,"httpworm"));const a=ht.string("httpworm","hostname",t);if(void 0===a)throw ft("httpworm","Takes 1 argument");const i=rt(a,"httpworm");if(!(i instanceof k.a))return e.log("httpworm",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.HTTPWormProgram.name))throw ft("httpworm","You do not have the HTTPWorm.exe program!");return i.httpPortOpen?e.log("httpworm",()=>`HTTP Port (80) already opened on '${i.hostname}'.`):(e.log("httpworm",()=>`Executed HTTPWorm.exe on '${i.hostname}' to open HTTP port (80).`),i.httpPortOpen=!0,++i.openPortCount),!0},sqlinject:function(t){n("sqlinject",Object(r.c)(m.a,"sqlinject"));const a=ht.string("sqlinject","hostname",t);if(void 0===a)throw ft("sqlinject","Takes 1 argument.");const i=rt(a,"sqlinject");if(!(i instanceof k.a))return e.log("sqlinject",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.SQLInjectProgram.name))throw ft("sqlinject","You do not have the SQLInject.exe program!");return i.sqlPortOpen?e.log("sqlinject",()=>`SQL Port (1433) already opened on '${i.hostname}'.`):(e.log("sqlinject",()=>`Executed SQLInject.exe on '${i.hostname}' to open SQL port (1433).`),i.sqlPortOpen=!0,++i.openPortCount),!0},run:function(t,a=1,...i){n("run",Object(r.c)(m.a,"run"));const o=ht.string("run","scriptname",t),s=ht.number("run","threads",a);if(void 0===o)throw ft("run","Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");if(isNaN(s)||s<=0)throw ft("run","Invalid thread count. Must be numeric and > 0, is "+s);const l=Object(b.d)(e.hostname);if(null==l)throw ft("run","Could not find server. This is a bug. Report to dev.");return Object(x.d)(m.a,"run",l,o,i,e,s)},exec:function(t,a,i=1,...o){n("exec",Object(r.c)(m.a,"exec"));const s=ht.string("exec","scriptname",t),l=ht.string("exec","hostname",a),c=ht.number("exec","threads",i);if(void 0===s||void 0===l)throw ft("exec","Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");if(isNaN(c)||c<=0)throw ft("exec","Invalid thread count. Must be numeric and > 0, is "+c);const f=rt(l,"exec");return Object(x.d)(m.a,"exec",f,s,o,e,c)},spawn:function(t,a=1,...i){n("spawn",Object(r.c)(m.a,"spawn"));const o=ht.string("spawn","scriptname",t),s=ht.number("spawn","threads",a);if(!o||!s)throw ft("spawn","Usage: spawn(scriptname, threads)");setTimeout(()=>{if(isNaN(s)||s<=0)throw ft("spawn","Invalid thread count. Must be numeric and > 0, is "+s);const t=Object(b.d)(e.hostname);if(null==t)throw ft("spawn","Could not find server. This is a bug. Report to dev");return Object(x.d)(m.a,"spawn",t,o,i,e,s)},1e4),e.log("spawn",()=>`Will execute '${o}' in 10 seconds`),e.running=!1,Object(L.a)(e)&&e.log("spawn",()=>"Exiting...")},kill:function(t,a,...i){let o;n("kill",Object(r.c)(m.a,"kill"));const s="number"==typeof t;if(s)o=Object(L.a)(t);else{if(void 0===t||void 0===a)throw ft("kill","Usage: kill(scriptname, server, [arg1], [arg2]...)");const n=rt(a,"kill"),r=it(t,a,"kill",i);if(null==r)return e.log("kill",()=>lt(t,a,i)),!1;o=Object(L.a)(r,n.hostname)}return o?(s?e.log("kill",()=>"Killing script with PID "+t):e.log("kill",()=>`Killing '${t}' on '${a}' with args: ${Object(N.a)(i)}.`),!0):(s?e.log("kill",()=>"No script with PID "+t):e.log("kill",()=>`No such script '${t}' on '${a}' with args: ${Object(N.a)(i)}`),!1)},killall:function(t=e.hostname){n("killall",Object(r.c)(m.a,"killall"));const a=ht.string("killall","hostname",t);if(void 0===a)throw ft("killall","Takes 1 argument");const o=rt(a,"killall"),s=o.runningScripts.length>0;for(let t=o.runningScripts.length-1;t>=0;--t)Object(L.a)(o.runningScripts[t],o.hostname,!1);return i.a.emit(),e.log("killall",()=>`Killing all scripts on '${o.hostname}'. May take a few minutes for the scripts to die.`),s},exit:function(){n("exit",Object(r.c)(m.a,"exit")),e.running=!1,Object(L.a)(e)?e.log("exit",()=>"Exiting..."):e.log("exit",()=>"Failed. This is a bug. Report to dev.")},scp:async function(t,a,i){n("scp",Object(r.c)(m.a,"scp"));const o=ht.string("scp","hostname1",a);if(2!==arguments.length&&3!==arguments.length)throw ft("scp","Takes 2 or 3 arguments");if(t&&t.constructor===Array){const n=t;if(0===n.length)throw ft("scp","No scripts to copy");let a=!0;return await Promise.all(n.map((async function(t){await at(e).scp(t,o,i)||(a=!1)}))),Promise.resolve(a)}if(!Object(S.j)(t))throw ft("scp",`Invalid filename: '${t}'`);if(!t.endsWith(".lit")&&!Object(g.a)(t)&&!t.endsWith("txt"))throw ft("scp","Only works for scripts, .lit and .txt files");let s,l;if(null!=i){if(void 0===t||void 0===o||void 0===i)throw ft("scp","Takes 2 or 3 arguments");s=rt(i,"scp"),l=rt(o,"scp")}else{if(null==o)throw ft("scp","Takes 2 or 3 arguments");if(void 0===t||void 0===o)throw ft("scp","Takes 2 or 3 arguments");if(s=rt(o,"scp"),l=Object(b.d)(e.hostname),null==l)throw ft("scp","Could not find server hostname for this script. This is a bug. Report to dev.")}if(t.endsWith(".lit")){let n=!1;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let n=0;n{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0);return s.messages.push(t),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0)}if(t.endsWith(".txt")){let n;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let a=0;a{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0);const a=new C.a(n.fn,n.text);return s.textFiles.push(a),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0)}let c=null;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let n=0;n{var e;return`WARNING: File '${t}' overwritten on '${null===(e=s)||void 0===e?void 0:e.hostname}'`});const a=s.scripts[n];return a.code===c.code||(a.code=c.code,a.ramUsage=c.ramUsage,a.markUpdated()),Promise.resolve(!0)}const f=new d.a(m.a,t);return f.code=c.code,f.ramUsage=c.ramUsage,f.server=s.hostname,s.scripts.push(f),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),new Promise(t=>{null!==s?f.updateRamUsage(m.a,s.scripts).then(()=>t(!0)):t(!1)})},ls:function(t,e=""){n("ls",Object(r.c)(m.a,"ls"));const a=ht.string("ls","hostname",t),i=ht.string("ls","grep",e);if(void 0===a)throw ft("ls","Usage: ls(hostname/ip, [grep filter])");const o=rt(a,"ls");let s="";arguments.length>=2&&(s=i.toString());const l=[];for(let t=0;t({timeOfDeath:t.timeOfDeath,...st(t.runningScript)}))},ps:function(t=e.hostname){n("ps",Object(r.c)(m.a,"ps"));const a=ht.string("ps","hostname",t),i=rt(a,"ps"),o=[];for(const t of i.runningScripts)o.push({filename:t.filename,threads:t.threads,args:t.args.slice(),pid:t.pid});return o},hasRootAccess:function(t){n("hasRootAccess",Object(r.c)(m.a,"hasRootAccess"));const e=ht.string("hasRootAccess","hostname",t);if(void 0===e)throw ft("hasRootAccess","Takes 1 argument");return rt(e,"hasRootAccess").hasAdminRights},getHostname:function(){n("getHostname",Object(r.c)(m.a,"getHostname"));const t=Object(b.d)(e.hostname);if(null==t)throw ft("getHostname","Could not find server. This is a bug. Report to dev.");return t.hostname},getHackingLevel:function(){return n("getHackingLevel",Object(r.c)(m.a,"getHackingLevel")),m.a.updateSkillLevels(),e.log("getHackingLevel",()=>"returned "+m.a.hacking),m.a.hacking},getHackingMultipliers:function(){return n("getHackingMultipliers",Object(r.c)(m.a,"getHackingMultipliers")),{chance:m.a.hacking_chance_mult,speed:m.a.hacking_speed_mult,money:m.a.hacking_money_mult,growth:m.a.hacking_grow_mult}},getHacknetMultipliers:function(){return n("getHacknetMultipliers",Object(r.c)(m.a,"getHacknetMultipliers")),{production:m.a.hacknet_node_money_mult,purchaseCost:m.a.hacknet_node_purchase_cost_mult,ramCost:m.a.hacknet_node_ram_cost_mult,coreCost:m.a.hacknet_node_core_cost_mult,levelCost:m.a.hacknet_node_level_cost_mult}},getBitNodeMultipliers:function(){if(n("getBitNodeMultipliers",Object(r.c)(m.a,"getBitNodeMultipliers")),_.a[5]<=0&&5!==m.a.bitNodeN)throw ft("getBitNodeMultipliers","Requires Source-File 5 to run.");return Object.assign({},o.a)},getServer:function(t=e.hostname){n("getServer",Object(r.c)(m.a,"getServer"));const a=ht.string("getServer","hostname",t),i=rt(a,"getServer"),o=Object.assign({},i);return o.contracts=void 0,o.messages=void 0,o.runningScripts=void 0,o.scripts=void 0,o.textFiles=void 0,o.programs=void 0,o.serversOnNetwork=void 0,o.baseDifficulty||(o.baseDifficulty=0),o.hackDifficulty||(o.hackDifficulty=0),o.minDifficulty||(o.minDifficulty=0),o.moneyAvailable||(o.moneyAvailable=0),o.moneyMax||(o.moneyMax=0),o.numOpenPortsRequired||(o.numOpenPortsRequired=0),o.openPortCount||(o.openPortCount=0),o.requiredHackingSkill||(o.requiredHackingSkill=0),o.serverGrowth||(o.serverGrowth=0),o},getServerMoneyAvailable:function(t){n("getServerMoneyAvailable",Object(r.c)(m.a,"getServerMoneyAvailable"));const a=ht.string("getServerMoneyAvailable","hostname",t),i=rt(a,"getServerMoneyAvailable");return i instanceof k.a?ct(i,"getServerMoneyAvailable")?0:"home"==i.hostname?(e.log("getServerMoneyAvailable",()=>"returned player's money: "+T.a.formatMoney(m.a.money)),m.a.money):(e.log("getServerMoneyAvailable",()=>`returned ${T.a.formatMoney(i.moneyAvailable)} for '${i.hostname}'`),i.moneyAvailable):(e.log("getServerMoneyAvailable",()=>"Cannot be executed on this server."),0)},getServerSecurityLevel:function(t){n("getServerSecurityLevel",Object(r.c)(m.a,"getServerSecurityLevel"));const a=ht.string("getServerSecurityLevel","hostname",t),i=rt(a,"getServerSecurityLevel");return i instanceof k.a?ct(i,"getServerSecurityLevel")?1:(e.log("getServerSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.hackDifficulty)} for '${i.hostname}'`),i.hackDifficulty):(e.log("getServerSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerBaseSecurityLevel:function(t){n("getServerBaseSecurityLevel",Object(r.c)(m.a,"getServerBaseSecurityLevel"));const a=ht.string("getServerBaseSecurityLevel","hostname",t);e.log("getServerBaseSecurityLevel",()=>"getServerBaseSecurityLevel is deprecated because it's not useful.");const i=rt(a,"getServerBaseSecurityLevel");return i instanceof k.a?ct(i,"getServerBaseSecurityLevel")?1:(e.log("getServerBaseSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.baseDifficulty)} for '${i.hostname}'`),i.baseDifficulty):(e.log("getServerBaseSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerMinSecurityLevel:function(t){n("getServerMinSecurityLevel",Object(r.c)(m.a,"getServerMinSecurityLevel"));const a=ht.string("getServerMinSecurityLevel","hostname",t),i=rt(a,"getServerMinSecurityLevel");return i instanceof k.a?ct(i,"getServerMinSecurityLevel")?1:(e.log("getServerMinSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.minDifficulty)} for ${i.hostname}`),i.minDifficulty):(e.log("getServerMinSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerRequiredHackingLevel:function(t){n("getServerRequiredHackingLevel",Object(r.c)(m.a,"getServerRequiredHackingLevel"));const a=ht.string("getServerRequiredHackingLevel","hostname",t),i=rt(a,"getServerRequiredHackingLevel");return i instanceof k.a?ct(i,"getServerRequiredHackingLevel")?1:(e.log("getServerRequiredHackingLevel",()=>`returned ${T.a.formatSkill(i.requiredHackingSkill)} for '${i.hostname}'`),i.requiredHackingSkill):(e.log("getServerRequiredHackingLevel",()=>"Cannot be executed on this server."),1)},getServerMaxMoney:function(t){n("getServerMaxMoney",Object(r.c)(m.a,"getServerMaxMoney"));const a=ht.string("getServerMaxMoney","hostname",t),i=rt(a,"getServerMaxMoney");return i instanceof k.a?ct(i,"getServerMaxMoney")?0:(e.log("getServerMaxMoney",()=>`returned ${T.a.formatMoney(i.moneyMax)} for '${i.hostname}'`),i.moneyMax):(e.log("getServerMaxMoney",()=>"Cannot be executed on this server."),0)},getServerGrowth:function(t){n("getServerGrowth",Object(r.c)(m.a,"getServerGrowth"));const a=ht.string("getServerGrowth","hostname",t),i=rt(a,"getServerGrowth");return i instanceof k.a?ct(i,"getServerGrowth")?1:(e.log("getServerGrowth",()=>`returned ${i.serverGrowth} for '${i.hostname}'`),i.serverGrowth):(e.log("getServerGrowth",()=>"Cannot be executed on this server."),1)},getServerNumPortsRequired:function(t){n("getServerNumPortsRequired",Object(r.c)(m.a,"getServerNumPortsRequired"));const a=ht.string("getServerNumPortsRequired","hostname",t),i=rt(a,"getServerNumPortsRequired");return i instanceof k.a?ct(i,"getServerNumPortsRequired")?5:(e.log("getServerNumPortsRequired",()=>`returned ${i.numOpenPortsRequired} for '${i.hostname}'`),i.numOpenPortsRequired):(e.log("getServerNumPortsRequired",()=>"Cannot be executed on this server."),5)},getServerRam:function(t){n("getServerRam",Object(r.c)(m.a,"getServerRam"));const a=ht.string("getServerRam","hostname",t);e.log("getServerRam",()=>"getServerRam is deprecated in favor of getServerMaxRam / getServerUsedRam");const i=rt(a,"getServerRam");return e.log("getServerRam",()=>`returned [${T.a.formatRAM(i.maxRam)}, ${T.a.formatRAM(i.ramUsed)}]`),[i.maxRam,i.ramUsed]},getServerMaxRam:function(t){n("getServerMaxRam",Object(r.c)(m.a,"getServerMaxRam"));const a=ht.string("getServerMaxRam","hostname",t),i=rt(a,"getServerMaxRam");return e.log("getServerMaxRam",()=>"returned "+T.a.formatRAM(i.maxRam)),i.maxRam},getServerUsedRam:function(t){n("getServerUsedRam",Object(r.c)(m.a,"getServerUsedRam"));const a=ht.string("getServerUsedRam","hostname",t),i=rt(a,"getServerUsedRam");return e.log("getServerUsedRam",()=>"returned "+T.a.formatRAM(i.ramUsed)),i.ramUsed},serverExists:function(t){n("serverExists",Object(r.c)(m.a,"serverExists"));const e=ht.string("serverExists","hostname",t);return null!==Object(b.d)(e)},fileExists:function(t,a=e.hostname){n("fileExists",Object(r.c)(m.a,"fileExists"));const i=ht.string("fileExists","filename",t),o=ht.string("fileExists","hostname",a);if(void 0===i)throw ft("fileExists","Usage: fileExists(scriptname, [server])");const s=rt(o,"fileExists");for(let t=0;t`Invalid argument: ram='${a}'`),1/0):i},purchaseServer:function(t,a){n("purchaseServer",Object(r.c)(m.a,"purchaseServer"));const i=ht.string("purchaseServer","name",t),o=ht.number("purchaseServer","ram",a);if(2!==arguments.length)throw ft("purchaseServer","Takes 2 arguments");let s=String(i);if(s=s.replace(/\s+/g,""),""==s)return e.log("purchaseServer",()=>`Invalid argument: hostname='${s}'`),"";if(m.a.purchasedServers.length>=Object(v.b)())return e.log("purchaseServer",()=>`You have reached the maximum limit of ${Object(v.b)()} servers. You cannot purchase any more.`),"";const l=Object(v.a)(o);if(l===1/0)return o>Object(v.c)()?e.log("purchaseServer",()=>`Invalid argument: ram='${o}' must not be greater than getPurchaseServerMaxRam`):e.log("purchaseServer",()=>`Invalid argument: ram='${o}' must be a positive power of 2`),"";if(m.a.money"Not enough money to purchase server. Need "+T.a.formatMoney(l)),"";const c=Object(E.f)({ip:Object(b.e)(),hostname:s,organizationName:"",isConnectedTo:!1,adminRights:!0,purchasedByPlayer:!0,maxRam:o});Object(b.a)(c),m.a.purchasedServers.push(c.hostname);const f=m.a.getHomeComputer();return f.serversOnNetwork.push(c.hostname),c.serversOnNetwork.push(f.hostname),m.a.loseMoney(l,"servers"),e.log("purchaseServer",()=>`Purchased new server with hostname '${c.hostname}' for ${T.a.formatMoney(l)}`),c.hostname},deleteServer:function(t){n("deleteServer",Object(r.c)(m.a,"deleteServer"));const a=ht.string("purchaseServer","name",t);let i=String(a);i=i.replace(/\s\s+/g,"");const o=Object(b.d)(i);if(!(o instanceof k.a))return e.log("deleteServer",()=>`Invalid argument: hostname='${i}'`),!1;if(!o.purchasedByPlayer||"home"===o.hostname)return e.log("deleteServer",()=>"Cannot delete non-purchased server."),!1;const s=o.hostname;if(o.isConnectedTo)return e.log("deleteServer",()=>"You are currently connected to the server you are trying to delete."),!1;if(s===e.hostname)return e.log("deleteServer",()=>"Cannot delete the server this script is running on."),!1;if(o.runningScripts.length>0)return e.log("deleteServer",()=>`Cannot delete server '${s}' because it still has scripts running.`),!1;let l=!1;for(let t=0;t`Could not identify server ${s} as a purchased server. This is a bug. Report to dev.`),!1;Object(b.b)(s),l=!1;const c=m.a.getHomeComputer();for(let t=0;t"Deleted server '"+i),!0;return e.log("deleteServer",()=>`Could not find server ${s} as a purchased server. This is a bug. Report to dev.`),!1},getPurchasedServers:function(){n("getPurchasedServers",Object(r.c)(m.a,"getPurchasedServers"));const t=[];return m.a.purchasedServers.forEach((function(e){t.push(e)})),t},writePort:function(t,e=""){n("writePort",Object(r.c)(m.a,"writePort"));const a=ht.number("writePort","port",t);if("string"!=typeof e&&"number"!=typeof e)throw ft("writePort","Trying to write invalid data to a port: only strings and numbers are valid.");const i=ht.getValidPort("writePort",a);return Promise.resolve(i.write(e))},write:function(t,a="",i="a"){n("write",Object(r.c)(m.a,"write"));const o=ht.string("write","port",t),s=ht.string("write","mode",i);if(Object(P.a)(o)){let t=o;if(!Object(S.j)(t))throw ft("write","Invalid filepath: "+t);0===t.lastIndexOf("/")&&(t=Object(S.k)(t));try{a=String(a)}catch(t){throw ft("write",`Invalid data (${t}). Data being written must be convertible to a string`)}const n=e.getServer();if(null==n)throw ft("write","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(t)){let r=e.getScriptOnServer(t,n);return null==r?(r=new d.a(m.a,t,a,n.hostname,n.scripts),n.scripts.push(r),r.updateRamUsage(m.a,n.scripts)):("w"===s?r.code=a:r.code+=a,r.updateRamUsage(m.a,n.scripts))}{const e=Object(C.c)(t,n);if(null==e)return Object(C.b)(t,a,n),Promise.resolve();"w"===s?e.write(a):e.append(a)}return Promise.resolve()}throw ft("write","Invalid argument: "+o)},tryWritePort:function(t,e=""){n("tryWritePort",Object(r.c)(m.a,"tryWritePort"));let a=ht.number("tryWritePort","port",t);if("string"!=typeof e&&"number"!=typeof e)throw ft("tryWritePort","Trying to write invalid data to a port: only strings and numbers are valid.");if(isNaN(a))throw ft("tryWritePort","Invalid argument: "+a);{if(a=Math.round(a),a<1||a>s.a.NumNetscriptPorts)throw ft("tryWritePort",`Invalid port: ${a}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const t=x.a[a-1];if(null==t||!(t instanceof Object))throw ft("tryWritePort",`Could not find port: ${a}. This is a bug. Report to dev.`);return Promise.resolve(t.tryWrite(e))}},readPort:function(t){n("readPort",Object(r.c)(m.a,"readPort"));const e=ht.number("readPort","port",t);return ht.getValidPort("readPort",e).read()},read:function(t){n("read",Object(r.c)(m.a,"read"));const a=ht.string("read","port",t);if(Object(P.a)(a)){const t=a,n=Object(b.d)(e.hostname);if(null==n)throw ft("read","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(t)){const a=e.getScriptOnServer(t,n);return null==a?"":a.code}{const e=Object(C.c)(t,n);return null!==e?e.text:""}}throw ft("read","Invalid argument: "+a)},peek:function(t){n("peek",Object(r.c)(m.a,"peek"));const e=ht.number("peek","port",t);return ht.getValidPort("peek",e).peek()},clear:function(t){n("clear",Object(r.c)(m.a,"clear"));const a=ht.string("peek","file",t);if(!Object(P.a)(a))throw ft("clear","Invalid argument: "+a);{const t=a,n=Object(b.d)(e.hostname);if(null==n)throw ft("clear","Error getting Server. This is a bug. Report to dev.");const r=Object(C.c)(t,n);null!=r&&r.write("")}},clearPort:function(t){n("clearPort",Object(r.c)(m.a,"clearPort"));const e=ht.number("clearPort","port",t);ht.getValidPort("clearPort",e).clear()},getPortHandle:function(t){n("getPortHandle",Object(r.c)(m.a,"getPortHandle"));const e=ht.number("getPortHandle","port",t);return ht.getValidPort("getPortHandle",e)},rm:function(t,a){n("rm",Object(r.c)(m.a,"rm"));const i=ht.string("rm","fn",t);null!=a&&""!==a||(a=e.hostname);const o=rt(a,"rm").removeFile(i);return o.res||e.log("rm",()=>o.msg+""),o.res},scriptRunning:function(t,e){n("scriptRunning",Object(r.c)(m.a,"scriptRunning"));const a=ht.string("scriptRunning","scriptname",t),i=ht.string("scriptRunning","hostname",e),o=rt(i,"scriptRunning");for(let t=0;t"invalid for this kind of server"),1/0)},getGrowTime:function(t=e.hostname){n("getGrowTime",Object(r.c)(m.a,"getGrowTime"));const a=ht.string("getGrowTime","hostname",t),i=rt(a,"getGrowTime");return i instanceof k.a?ct(i,"getGrowTime")?1/0:1e3*Object(l.a)(i,m.a):(e.log("getGrowTime",()=>"invalid for this kind of server"),1/0)},getWeakenTime:function(t=e.hostname){n("getWeakenTime",Object(r.c)(m.a,"getWeakenTime"));const a=ht.string("getWeakenTime","hostname",t),i=rt(a,"getWeakenTime");return i instanceof k.a?ct(i,"getWeakenTime")?1/0:1e3*Object(l.f)(i,m.a):(e.log("getWeakenTime",()=>"invalid for this kind of server"),1/0)},getScriptIncome:function(t,a,...i){if(n("getScriptIncome",Object(r.c)(m.a,"getScriptIncome")),0===arguments.length){const t=[];let e=0;for(const t of O.a.values())e+=t.scriptRef.onlineMoneyMade/t.scriptRef.onlineRunningTime;return t.push(e),t.push(m.a.scriptProdSinceLastAug/(m.a.playtimeSinceLastAug/1e3)),t}{const n=rt(a,"getScriptIncome"),r=Object(p.a)(t,i,n);return null==r?(e.log("getScriptIncome",()=>`No such script '${t}' on '${n.hostname}' with args: ${Object(N.a)(i)}`),-1):r.onlineMoneyMade/r.onlineRunningTime}},getScriptExpGain:function(t,a,...i){if(n("getScriptExpGain",Object(r.c)(m.a,"getScriptExpGain")),0===arguments.length){let t=0;for(const e of O.a.values())t+=e.scriptRef.onlineExpGained/e.scriptRef.onlineRunningTime;return t}{const n=rt(a,"getScriptExpGain"),r=Object(p.a)(t,i,n);return null==r?(e.log("getScriptExpGain",()=>`No such script '${t}' on '${n.hostname}' with args: ${Object(N.a)(i)}`),-1):r.onlineExpGained/r.onlineRunningTime}},nFormat:function(t,e){n("nFormat",Object(r.c)(m.a,"nFormat"));const a=ht.number("nFormat","n",t),i=ht.string("nFormat","format",e);return isNaN(a)?"":T.a.format(a,i)},tFormat:function(t,e=!1){n("tFormat",Object(r.c)(m.a,"tFormat"));const a=ht.number("tFormat","milliseconds",t),i=ht.boolean(e);return Object(A.b)(a,i)},getTimeSinceLastAug:function(){return n("getTimeSinceLastAug",Object(r.c)(m.a,"getTimeSinceLastAug")),m.a.playtimeSinceLastAug},alert:function(t){n("alert",Object(r.c)(m.a,"alert"));const e=ht.string("alert","message",t);Object(Y.a)(e)},toast:function(t,e="success",a=2e3){n("toast",Object(r.c)(m.a,"toast"));const i=ht.string("toast","message",t),o=ht.string("toast","variant",e);if(!["success","info","warning","error"].includes(o))throw new Error('variant must be one of "success", "info", "warning", or "error"');J.b.emit(i,o,a)},prompt:function(t,e){n("prompt",Object(r.c)(m.a,"prompt"));const a=ht.string("toast","txt",t);return new Promise((function(t){y.a.emit({txt:a,options:e,resolve:t})}))},wget:async function(a,i,o=e.hostname){n("wget",Object(r.c)(m.a,"wget"));const s=ht.string("wget","url",a),l=ht.string("wget","target",i),c=ht.string("wget","hostname",o);if(!Object(g.a)(l)&&!l.endsWith(".txt"))return e.log("wget",()=>`Invalid target file: '${l}'. Must be a script or text file.`),Promise.resolve(!1);const f=rt(c,"wget");return new Promise((function(n){t.get(s,(function(t){let a;return a=Object(g.a)(l)?f.writeToScriptFile(m.a,l,t):f.writeToTextFile(l,t),a.success?a.overwritten?(e.log("wget",()=>`Successfully retrieved content and overwrote '${l}' on '${c}'`),n(!0)):(e.log("wget",()=>`Successfully retrieved content to new file '${l}' on '${c}'`),n(!0)):(e.log("wget",()=>"Failed."),n(!1))}),"text").fail((function(t){return e.log("wget",()=>JSON.stringify(t)),n(!1)}))}))},getFavorToDonate:function(){return n("getFavorToDonate",Object(r.c)(m.a,"getFavorToDonate")),Math.floor(s.a.BaseFavorToDonate*o.a.RepToDonateToFaction)},getOwnedSourceFiles:function(){n("getOwnedSourceFiles",Object(r.c)(m.a,"getOwnedSourceFiles"));const t=[];for(let e=0;e{t()}},mv:function(t,e,a){n("mv",Object(r.c)(m.a,"mv"));const i=ht.string("mv","host",t),o=ht.string("mv","source",e),s=ht.string("mv","destination",a);if(!Object(S.j)(o))throw ft("mv",`Invalid filename: '${o}'`);if(!Object(S.j)(s))throw ft("mv",`Invalid filename: '${s}'`);const l=o.endsWith(".txt"),c=s.endsWith(".txt");if(!Object(g.a)(o)&&!l)throw ft("mv","'mv' can only be used on scripts and text files (.txt)");if(l!=c)throw ft("mv","Source and destination files must have the same type");if(o===s)return;const f=rt(i,"mv");if(!l&&f.isRunning(o))throw ft("mv","Cannot use 'mv' on a script that is running");const u=l?f.textFiles:f.scripts;let h=null,p=null;for(let t=0;t[t,!0]));return Lt}}).call(this,n(811))},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return s}));var a=n(148),r=n(101);function i(t,e){const n=t.organizationName;let i=null;if("string"==typeof n&&""!==n&&(i=r.a[n]),!(i instanceof a.a))return;const o=e/t.moneyMax;Math.random()0?e.requiredHacking+r:0,o=e.requiredStrength>0?e.requiredStrength+r:0,s=e.requiredDefense>0?e.requiredDefense+r:0,l=e.requiredDexterity>0?e.requiredDexterity+r:0,c=e.requiredDexterity>0?e.requiredDexterity+r:0,f=e.requiredCharisma>0?e.requiredCharisma+r:0,u=e.requiredReputation;return n?(a="Requires:
",a+=i.toString()+" hacking
",a+=o.toString()+" strength
",a+=s.toString()+" defense
",a+=l.toString()+" dexterity
",a+=c.toString()+" agility
",a+=f.toString()+" charisma
",a+=u.toString()+" reputation"):(a="(Requires ",i>0&&(a+=i+" hacking, "),o>0&&(a+=o+" strength, "),s>0&&(a+=s+" defense, "),l>0&&(a+=l+" dexterity, "),c>0&&(a+=c+" agility, "),f>0&&(a+=f+" charisma, "),u>1&&(a+=u+" reputation, "),a=a.substring(0,a.length-2),a+=")"),a}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return i}));const a=["Type 'help name' to learn more about the command "," ",' alias [-g] [name="value"] Create or display Terminal aliases'," analyze Get information about the current machine "," backdoor Install a backdoor on the current machine "," buy [-l/-a/program] Purchase a program through the Dark Web"," cat [file] Display a .msg, .lit, or .txt file"," cd [dir] Change to a new directory"," check [script] [args...] Print a script's logs to Terminal"," clear Clear all text on the terminal "," cls See 'clear' command "," connect [hostname] Connects to a remote server"," cp [src] [dst] Copy a file"," download [script/text file] Downloads scripts or text files to your computer"," expr [math expression] Evaluate a mathematical expression"," free Check the machine's memory (RAM) usage"," grow Spoof money in a servers bank account, increasing the amount available."," hack Hack the current machine"," help [command] Display this help text, or the help text for a command"," history [-c] Display the terminal history"," home Connect to home computer"," hostname Displays the hostname of the machine"," kill [script/pid] [args...] Stops the specified script on the current server "," killall Stops all running scripts on the current machine"," ls [dir] [--grep pattern] Displays all files on the machine"," lscpu Displays the number of CPU cores on the machine"," mem [script] [-t n] Displays the amount of RAM required to run the script"," mv [src] [dest] Move/rename a text or script file"," nano [file ...] Text editor - Open up and edit one or more scripts or text files"," ps Display all scripts that are currently running"," rm [file] Delete a file from the server"," run [name] [-t n] [--tail] [args...] Execute a program or script"," scan Prints all immediately-available network connections"," scan-analyze [d] [-a] Prints info for all servers up to d nodes away"," scp [file ...] [server] Copies a file to a destination server"," sudov Shows whether you have root access on this computer"," tail [script] [args...] Displays dynamic logs for the specified script"," top Displays all running scripts and their RAM usage"," unalias [alias name] Deletes the specified alias"," vim [file ...] Text editor - Open up and edit one or more scripts or text files in vim mode"," weaken Reduce the security of the current machine"," wget [url] [target file] Retrieves code/text from a web server"," "],r=t=>[`Usage: ${t} [file ...] | [glob]`," ","Opens up the specified file(s) in the Script Editor. Only scripts (.js, .ns, .script) or text files (.txt) ","can be edited using the Script Editor. If a file does not exist a new one will be created"," ",`If provided a glob as the only argument, ${t} can spider directories and open all matching `,`files at once. ${t} cannot create files using globs, so your scripts must already exist.`," ","Examples:"," ",` ${t} test.js`,` ${t} test.js test2.js`," ",` ${t} test.*`,` ${t} /my-dir/*.js`," "],i={alias:['Usage: alias [-g] [name="value"] '," ","Create or display aliases. An alias enables a replacement of a word with another string. ","It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME ","of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, ","you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following: "," ",' alias nuke="run NUKE.exe"'," ","Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. ","It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For ","example, if the following alias was set: "," ",' alias worm="HTTPWorm.exe"'," ","and then you tried to run the following terminal command: "," "," run worm"," ","This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted ","anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag: "," ",' alias -g worm="HTTPWorm.exe"'," ","Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command. "," ","Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form ","'alias NAME=VALUE' on the Terminal. "," ","The 'unalias' command can be used to remove aliases."," "],analyze:["Usage: analyze"," ","Prints details and statistics about the current server. The information that is printed includes basic ","server details such as the hostname, whether the player has root access, what ports are opened/closed, and also ","hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is ","available on the server, etc."," "],backdoor:["Usage: backdoor"," ","Install a backdoor on the current machine, grants a secret bonus depending on the machine."," ","Requires root access to run."," "],buy:["Usage: buy [-l / -a / program]"," ","Purchase a program through the Dark Web. Requires a TOR router to use."," ","If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the ","dark web to the Terminal, as well as their costs."," ","If this command is ran with the '-a' flag, it will attempt to purchase all unowned programs."," ","Otherwise, the name of the program must be passed in as a parameter. This name is NOT case-sensitive."," "],cat:["Usage: cat [file]"," ","Display message (.msg), literature (.lit), or text (.txt) files. Examples:"," "," cat j1.msg"," "," cat foo.lit"," "," cat servers.txt"," "],cd:["Usage: cd [dir]"," ","Change to the specified directory. Note that this works even for directories that don't exist. If you ","change to a directory that does not exist, it will not be 'created'. Examples:"," "," cd scripts/hacking"," "," cd /logs"," "," cd ../"," "],check:["Usage: check [script name] [args...]"," ","Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by ","a space. Remember that a running script is uniquely ","identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments: "," "," run foo.script 1 2 foodnstuff"," ","Then to run the 'check' command on this script you would have to pass the same arguments in: "," "," check foo.script 1 2 foodnstuff"," "],clear:["Usage: clear"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command"," "],cls:["Usage: cls"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command"," "],connect:["Usage: connect [hostname]"," ","Connect to a remote server. The hostname of the remote server must be given as the argument ","to this command. Note that only servers that are immediately adjacent to the current server in the network and the ones that have","a backdoor installed can be connected to. To see which servers can be connected to, use the 'scan' command."," "],cp:["Usage: cp [src] [dst]"," ","Copy a file on this server. To copy a file to another server use scp."," "],download:["Usage: download [script/text file]"," ","Downloads a script or text file to your computer (like your real life computer)."," ","You can also download all of your scripts/text files as a zip file using the following Terminal commands:"," ","Download all scripts and text files: download *"," ","Download all scripts: download *.script"," ","Download all text files: download *.txt"," "],expr:["Usage: expr [mathematical expression]"," ","Evaluate a simple mathematical expression. Supports native JavaScript operators:"," ","+, -, /, *, **, %"," ","Example:"," "," expr 25 * 2 ** 10"," ","Note that letters (non-digits) are not allowed and will be removed from the input."," "],free:["Usage: free"," ","Displays the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as ","how much of it is being used."," "],grow:["Usage: grow"," ","Spoof transactions in the current server. Increasing the money available by hacking. Requires root access.","See the wiki page for hacking mechanics."," "],hack:["Usage: hack"," ","Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics"," "],help:["Usage: help [command]"," ","Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief ","description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print ","more detailed information about the Terminal command. Examples: "," "," help alias"," "," help scan-analyze"," "],history:["Usage: history [-c]"," ","Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument."," "],home:["Usage: home"," ","Connect to your home computer. This will work no matter what server you are currently connected to."," "],hostname:["Usage: hostname"," ","Prints the hostname of the current server"," "],kill:["Usage: kill [script name] [args...] or kill [pid"," ","Kill the script specified by the script name and arguments OR by its PID."," ","If you are killing the script using its filename and arguments, then each ","argument must be separated by a space. Remember that a running script is ","uniquely identified by both its name and the arguments that are used to start ","it. So, if a script was ran with the following arguments:"," "," run foo.script 1 sigma-cosmetics"," ","Then to kill this script the same arguments would have to be used:"," "," kill foo.script 1 sigma-cosmetics"," ","If you are killing the script using its PID, then the PID argument must be numeric"," "],killall:["Usage: killall"," ","Kills all scripts on the current server. ","Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. ","This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. ","The script will not be stopped/killed until after that time has elapsed."," "],ls:["Usage: ls [dir] [-l] [--grep pattern]"," ","The ls command, with no arguments, prints all files and directories on the current server's directory to the Terminal screen. ","The files will be displayed in alphabetical order. "," ","The 'dir' optional parameter can be used to display files/directories in another directory."," ","The '-l' optional parameter allows you to force each item onto a single line."," ","The '--grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern."," ","Examples:"," ","List all files with the '.script' extension in the current directory:"," "," ls -l --grep .script"," ","List all files with the '.js' extension in the root directory:"," "," ls / -l --grep .js"," ","List all files with the word 'purchase' in the filename, in the 'scripts' directory:"," "," ls scripts -l --grep purchase"," "],lscpu:["Usage: lscpu"," ","Prints the number of CPU Cores the current server has"," "],mem:["Usage: mem [script name] [-t num_threads]"," ","Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print ","the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then ","an argument for the number of threads must be passed in afterwards. Examples:"," "," mem foo.script"," "," mem foo.script -t 50"," ","The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example ","above will print the amount of RAM needed to run 'foo.script' with 50 threads."," "],mv:["Usage: mv [src] [dest]"," ","Move the source file to the specified destination. This can also be used to rename files. ","This command only works for scripts and text files (.txt). This command CANNOT be used to ","convert to different file types"," ","Note that, unlike the Linux 'mv' command, the destination argument must be the ","full filepath. ","Examples: "," "," mv hacking-controller.script scripts/hacking-controller.script"," "," mv myScript.js myOldScript.js"," "],nano:r("nano"),ps:["Usage: ps"," ","Prints all scripts that are running on the current server"," "],rm:["Usage: rm [file]"," ","Removes the specified file from the current server. A file can be a script, a program, or a message file. "," ","WARNING: This is permanent and cannot be undone"," "],run:["Usage: run [file name] [-t] [num threads] [args...]"," ","Execute a program, script or coding contract."," ","The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used ","to indicate that the script should be run with the specified number of threads. If the flag is omitted, ","then the script will be run with a single thread by default. ","If the '-t' flag is used, then it MUST come immediately ","after the script name, and the [num threads] argument MUST come immediately afterwards. "," ","[args...] represents a variable number of arguments that will be passed into the script. See the documentation ","about script arguments. Each specified argument must be separated by a space. "," "],scan:["Usage: scan"," ","Prints all immediately-available network connection. This will print a list of all servers that you can currently connect ","to using the 'connect' Terminal command."," "],"scan-analyze":["Usage: scan-analyze [depth] [-a]"," ","Prints detailed information about all servers up to [depth] nodes away on the network. Calling ","'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal ","command. This command also shows the relative paths to reach each server."," ","By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have ","the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to ","5 and 10, respectively."," ","The information 'scan-analyze' displays about each server includes whether or not you have root access to it, ","its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM ","it has."," ","By default, this command will not display servers that you have purchased. However, you can pass in the ","-a flag at the end of the command if you would like to enable that."," "],scp:["Usage: scp [filename ...] [target server]"," ","Copies the specified file(s) from the current server to the target server. ","This command only works for script files (.script or .js extension), literature files (.lit extension), ","and text files (.txt extension). ","The second argument passed in must be the hostname or IP of the target server. Examples:"," "," scp foo.script n00dles"," "," scp foo.script bar.script n00dles"," "],sudov:["Usage: sudov"," ","Prints whether or not you have root access to the current machine"," "],tail:["Usage: tail [script name] [args...]"," ","Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated ","by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used ","to run it. So, if a script was ran with the following arguments: "," "," run foo.script 10 50000"," ","Then in order to check its logs with 'tail' the same arguments must be used: "," "," tail foo.script 10 50000"," "],top:["Usage: top"," ","Prints a list of all scripts running on the current server as well as their thread count and how much ","RAM they are using in total."," "],unalias:["Usage: unalias [alias name]"," ","Deletes the specified alias. Note that the double quotation marks are required. "," ","As an example, if an alias was declared using:"," ",' alias r="run"'," ","Then it could be removed using:"," "," unalias r"," ","It is not necessary to differentiate between global and non-global aliases when using 'unalias'"," "],vim:r("vim"),weaken:["Usage: weaken"," ","Reduces the security level of the current server. Decreasing the time it takes for all operations on this server.","Requires root access. See the wiki page for hacking mechanics."," "],wget:["Usage: wget [url] [target file]"," ","Retrieves data from a URL and downloads it to a file on the current server. The data can only ","be downloaded to a script (.script, .ns, .js) or a text file (.txt). If the file already exists, ","it will be overwritten by this command."," ","Note that it will not be possible to download data from many websites because they do not allow ","cross-origin resource sharing (CORS). Example:"," "," wget https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md game_readme.txt"," "]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c}));var a,r,i=n(26),o=n(249),s=n(9);!function(t){t[t.Production=0]="Production",t[t.Development=1]="Development"}(a||(a={})),function(t){t[t.Browser=0]="Browser",t[t.Steam=1]="Steam"}(r||(r={}));const l="https://github.com/danielyxie/bitburner/issues/new";function c(t,e,n){var c,f,u;const m=function(t,e,n){const i=navigator.userAgent.toLowerCase().indexOf(" electron/")>-1,l=a.Production,c={version:s.a.VersionString,hash:Object(o.a)(),toDisplay:()=>`v${s.a.VersionString} (${Object(o.a)()})`},f={userAgent:navigator.userAgent,language:navigator.language,cookiesEnabled:navigator.cookieEnabled,doNotTrack:navigator.doNotTrack,indexedDb:!!window.indexedDB};return{platform:i?r.Steam:r.Browser,environment:l,version:c,features:f,error:t,errorInfo:e,page:n}}(t,e,n),h=m.error.fileName,d=`lang=${m.features.language} cookiesEnabled=${m.features.cookiesEnabled.toString()} doNotTrack=${m.features.doNotTrack} indexedDb=${m.features.indexedDb.toString()}`,p=`${m.error.name}: ${m.error.message}${m.page&&` (at "${i.a[m.page]}")`}`,g=`\n## ${p}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${null!==(c=null===(f=m.error)||void 0===f?void 0:f.toString())&&void 0!==c?c:"n/a"}\n* Page: ${m.page?i.a[m.page]:"n/a"}\n* Version: ${m.version.toDisplay()}\n* Environment: ${a[m.environment]}\n* Platform: ${r[m.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${d}\n* Source: ${null!=h?h:"n/a"}\n\n${m.environment===a.Development?`\n### Stack Trace\n\`\`\`\n${null===(u=m.errorInfo)||void 0===u?void 0:u.componentStack.toString().trim()}\n\`\`\`\n`:""}\n### Save\n\`\`\`\nCopy your save here if possible\n\`\`\`\n`.trim();return{metadata:m,fileName:h,features:d,title:p,body:g,issueUrl:`${l}?title=${encodeURIComponent(p)}&body=${encodeURIComponent(g)}`}}},,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(33);function r(t){const e=Math.max(Math.min(t,255),0);return Object(a.a)(0,e)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(33);const r={Tracking:()=>Object(a.a)(5,75)/10,"Bounty Hunter":()=>Object(a.a)(5,75)/10,Retirement:()=>Object(a.a)(5,75)/10,Investigation:()=>Object(a.a)(10,40)/10,"Undercover Operation":()=>Object(a.a)(10,40)/10,"Sting Operation":()=>Object(a.a)(3,40)/10,Raid:()=>Object(a.a)(2,40)/10,"Stealth Retirement Operation":()=>Object(a.a)(1,20)/10,Assassination:()=>Object(a.a)(1,20)/10}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(149);function r(t){const e={},n=Object.keys(a.a);for(let a=0;a=this.cards.length)throw new Error("Tried to remove invalid card from Hand by index: "+t);return new a([...this.cards.slice().splice(t,1)])}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n(1),i=n(20),o=n(10);function s(t){return a.createElement(i.a,{title:null!=t.tooltip?a.createElement(r.a,null,t.tooltip):""},a.createElement(o.a,{onClick:t.onClick},t.text))}},,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(113),r=n(251),i=n(81),o=n(221),s=n(99),l=n(336),c=n(317);function f(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class u{constructor(t={hostname:"",ip:Object(l.a)()}){f(this,"contracts",[]),f(this,"cpuCores",1),f(this,"ftpPortOpen",!1),f(this,"hasAdminRights",!1),f(this,"hostname",""),f(this,"httpPortOpen",!1),f(this,"ip",""),f(this,"isConnectedTo",!1),f(this,"maxRam",0),f(this,"messages",[]),f(this,"organizationName",""),f(this,"programs",[]),f(this,"ramUsed",0),f(this,"runningScripts",[]),f(this,"scripts",[]),f(this,"serversOnNetwork",[]),f(this,"smtpPortOpen",!1),f(this,"sqlPortOpen",!1),f(this,"sshPortOpen",!1),f(this,"textFiles",[]),f(this,"purchasedByPlayer",!1),this.ip=t.ip?t.ip:Object(l.a)(),this.hostname=t.hostname,this.organizationName=null!=t.organizationName?t.organizationName:"",this.isConnectedTo=null!=t.isConnectedTo&&t.isConnectedTo,this.hasAdminRights=null!=t.adminRights&&t.adminRights}addContract(t){this.contracts.push(t)}getContract(t){for(const e of this.contracts)if(e.fn===t)return e;return null}getRunningScript(t,e){for(const n of this.runningScripts)if(n.filename===t&&Object(c.a)(n.args,e))return n;return null}getScript(t){for(let e=0;ee.fn!==t.fn):this.contracts=this.contracts.filter(e=>e.fn!==t)}removeFile(t){if(t.endsWith(".exe")||null!=t.match(/^.+\.exe-\d+(?:\.\d*)?%-INC$/)){for(let e=0;e{h.subscribe(t=>e(t))}),null===t)return r.a.createElement(r.a.Fragment,null);function d(){null!==t&&(t.onClose(),e(null))}const p=o.d[t.c.type],g=[];for(const[e,n]of p.desc(t.c.data).split("\n").entries())g.push(r.a.createElement("span",{key:e,dangerouslySetInnerHTML:{__html:n+"
"}}));return r.a.createElement(l.a,{open:null!==t,onClose:d},r.a.createElement(s.a,{variant:"h4",value:t.c.type}),r.a.createElement(f.a,null,"You are attempting to solve a Coding Contract. You have ",t.c.getMaxNumTries()-t.c.tries," tries remaining, after which the contract will self-destruct."),r.a.createElement("br",null),r.a.createElement(f.a,null,g),r.a.createElement("br",null),r.a.createElement(u.a,{autoFocus:!0,placeholder:"Enter Solution here",value:n,onChange:function(t){c(t.target.value)},onKeyDown:function(e){if(null===t)return;const a=e.target.value;e.key===i.a.ENTER&&""!==a&&(e.preventDefault(),t.onAttempt(n),c(""),d())},InputProps:{endAdornment:r.a.createElement(m.a,{onClick:()=>{t.onAttempt(n),c(""),d()}},"Solve")}}))}},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return u}));var a=n(0),r=n.n(a),i=n(41),o=n(29),s=n(126),l=n(1),c=n(10);const f=new s.a;function u(){const t=o.b.Router(),[e,n]=Object(a.useState)(!1);return Object(a.useEffect)(()=>f.subscribe(()=>n(!0)),[]),r.a.createElement(i.a,{open:e,onClose:()=>n(!1)},r.a.createElement(l.a,null,"WARNING: USING THIS PROGRAM WILL CAUSE YOU TO LOSE ALL OF YOUR PROGRESS ON THE CURRENT BITNODE.",r.a.createElement("br",null),r.a.createElement("br",null),"Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode and select a new one."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{onClick:function(){t.toBitVerse(!0,!1),n(!1)}},"Travel to the BitVerse"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n(747),r=n(641),i=n(644),o=n(420),s=n(45),l=n(427),c=n(11),f=n(368),u=n(16),m=n(375),h=n(24),d=n(23),p=n(33);class g{constructor(){this.hacking=1,this.hp=10,this.max_hp=10,this.strength=1,this.defense=1,this.dexterity=1,this.agility=1,this.charisma=1,this.intelligence=0,this.hacking_chance_mult=1,this.hacking_speed_mult=1,this.hacking_money_mult=1,this.hacking_grow_mult=1,this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.intelligence_exp=0,this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.money=1e3,this.city=u.a.Sector12,this.location=c.a.TravelAgency,this.jobs={},this.companyName="",this.currentServer="",this.purchasedServers=[],this.hacknetNodes=[],this.hashManager=new f.a,this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[],this.augmentations=[],this.sourceFiles=[],this.numPeopleKilled=0,this.karma=0,this.crime_money_mult=1,this.crime_success_mult=1,this.isWorking=!1,this.focus=!1,this.workType="",this.workCostMult=1,this.workExpMult=1,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workMoneyLossRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.createProgramName="",this.createProgramReqLvl=0,this.graftAugmentationName="",this.timeWorkedGraftAugmentation=0,this.className="",this.crimeType="",this.timeWorked=0,this.timeWorkedCreateProgram=0,this.timeNeededToCompleteWork=0,this.work_money_mult=1,this.hacknet_node_money_mult=1,this.hacknet_node_purchase_cost_mult=1,this.hacknet_node_ram_cost_mult=1,this.hacknet_node_core_cost_mult=1,this.hacknet_node_level_cost_mult=1,this.hasWseAccount=!1,this.hasTixApiAccess=!1,this.has4SData=!1,this.has4SDataTixApi=!1,this.gang=null,this.corporation=null,this.bladeburner=null,this.bladeburner_max_stamina_mult=1,this.bladeburner_stamina_gain_mult=1,this.bladeburner_analysis_mult=1,this.bladeburner_success_chance_mult=1,this.sleeves=[],this.sleevesFromCovenant=0,this.bitNodeN=1,this.entropy=0,this.lastUpdate=0,this.lastSave=0,this.totalPlaytime=0,this.playtimeSinceLastAug=0,this.playtimeSinceLastBitnode=0,this.moneySourceA=new m.a,this.moneySourceB=new m.a,this.scriptProdSinceLastAug=0,this.exploits=[],this.achievements=[],this.terminalCommandHistory=[],this.identifier=Object(d.c)("I-"+(new Date).getTime()+navigator.userAgent+window.innerWidth+window.innerHeight+Object(p.a)(100,999)),this.init=s.gb,this.prestigeAugmentation=s.jb,this.prestigeSourceFile=s.kb,this.receiveInvite=s.sb,this.calculateSkill=s.o,this.calculateSkillProgress=s.p,this.updateSkillLevels=s.Rb,this.resetMultipliers=s.vb,this.hasProgram=s.eb,this.setMoney=s.yb,this.gainMoney=s.M,this.loseMoney=s.ib,this.canAfford=s.s,this.recordMoneySource=s.tb,this.gainHackingExp=s.K,this.gainStrengthExp=s.N,this.gainDefenseExp=s.I,this.gainDexterityExp=s.J,this.gainAgilityExp=s.F,this.gainCharismaExp=s.G,this.gainIntelligenceExp=s.L,this.queryStatFromString=s.nb,this.resetWorkStatus=s.wb,this.processWorkEarnings=s.mb,this.startWork=s.Lb,this.cancelationPenalty=s.t,this.work=s.Sb,this.finishWork=s.D,this.startWorkPartTime=s.Mb,this.workPartTime=s.Ub,this.finishWorkPartTime=s.E,this.startFocusing=s.Jb,this.stopFocusing=s.Nb,this.startFactionWork=s.Ib,this.startFactionHackWork=s.Gb,this.startFactionFieldWork=s.Fb,this.startFactionSecurityWork=s.Hb,this.workForFaction=s.Tb,this.finishFactionWork=s.B,this.getWorkMoneyGain=s.X,this.getWorkHackExpGain=s.W,this.getWorkStrExpGain=s.Z,this.getWorkDefExpGain=s.U,this.getWorkDexExpGain=s.V,this.getWorkAgiExpGain=s.S,this.getWorkChaExpGain=s.T,this.getWorkRepGain=s.Y,this.process=s.lb,this.startCreateProgramWork=s.Db,this.createProgramWork=s.x,this.finishCreateProgramWork=s.z,this.startGraftAugmentationWork=s.Kb,this.graftAugmentationWork=s.w,this.finishGraftAugmentationWork=s.C,this.startClass=s.Cb,this.takeClass=s.Ob,this.finishClass=s.y,this.startCrime=s.Eb,this.commitCrime=s.v,this.finishCrime=s.A,this.singularityStopWork=s.Ab,this.takeDamage=s.Pb,this.regenerateHp=s.ub,this.hospitalize=s.fb,this.applyForJob=s.f,this.getNextCompanyPosition=s.R,this.quitJob=s.pb,this.hasJob=s.db,this.applyForSoftwareJob=s.m,this.applyForSoftwareConsultantJob=s.l,this.applyForItJob=s.e,this.applyForSecurityEngineerJob=s.j,this.applyForNetworkEngineerJob=s.g,this.applyForBusinessJob=s.c,this.applyForBusinessConsultantJob=s.b,this.applyForSecurityJob=s.k,this.applyForAgentJob=s.a,this.applyForEmployeeJob=s.d,this.applyForPartTimeEmployeeJob=s.h,this.applyForWaiterJob=s.n,this.applyForPartTimeWaiterJob=s.i,this.isQualified=s.hb,this.reapplyAllAugmentations=s.qb,this.reapplyAllSourceFiles=s.rb,this.checkForFactionInvitations=s.u,this.setBitNodeNumber=s.xb,this.queueAugmentation=s.ob,this.gainCodingContractReward=s.H,this.travel=s.Qb,this.gotoLocation=s.cb,this.canAccessGrafting=s.r,this.giveExploit=s.bb,this.giveAchievement=s.ab,this.getIntelligenceBonus=s.P,this.getCasinoWinnings=s.O,this.hasAugmentation=a.b,this.canAccessBladeburner=r.a,this.inBladeburner=r.b,this.startBladeburner=r.c,this.canAccessCorporation=i.a,this.hasCorporation=i.b,this.startCorporation=i.c,this.canAccessGang=o.a,this.getGangFaction=o.b,this.getGangName=o.c,this.hasGangWith=o.d,this.inGang=o.e,this.startGang=o.f,this.hasTorRouter=l.f,this.getCurrentServer=l.b,this.getHomeComputer=l.c,this.getUpgradeHomeRamCost=l.e,this.getUpgradeHomeCoresCost=l.d,this.createHacknetServer=l.a,this.factionWorkType="",this.committingCrimeThruSingFn=!1,this.singFnCrimeWorkerScript=null,this.getMult=s.Q,this.setMult=s.zb,this.canAccessCotMG=s.q,this.sourceFileLvl=s.Bb,this.applyEntropy=a.a}toJSON(){return Object(h.b)("PlayerObject",this)}static fromJSON(t){return Object(h.a)(g,t.data)}}h.c.constructors.PlayerObject=g},function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return m}));var a=n(0),r=n.n(a),i=n(106),o=n(41),s=n(29),l=n(126),c=n(1),f=n(10);const u=new l.a;function m(){const[t,e]=Object(a.useState)(null),n=s.b.Player();return Object(a.useEffect)(()=>u.subscribe(t=>e(t)),[]),r.a.createElement(o.a,{open:null!==t,onClose:()=>e(null)},r.a.createElement(c.a,{variant:"h4"},"You have received a faction invitation."),r.a.createElement(c.a,null,"Would you like to join ",(t||{name:""}).name,"? ",r.a.createElement("br",null),r.a.createElement("br",null),"Warning: Joining this faction may prevent you from joining other factions during this run!"),r.a.createElement(f.a,{onClick:function(){if(null===t)return;-1===n.factionInvitations.findIndex(e=>e===t.name)&&console.error("Could not find faction in Player.factionInvitations"),Object(i.e)(t),e(null)}},"Join!"),r.a.createElement(f.a,{onClick:()=>e(null)},"Decide later"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1006),r=n(15);function i(t){const e=a.a[t];if(null==e)return;const n=`${e.title}

${e.txt}`;Object(r.a)(n)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a,r){this.name=t,this.desc=e,this.isHacking=n,this.isCombat=a,this.baseRespect=r.baseRespect?r.baseRespect:0,this.baseWanted=r.baseWanted?r.baseWanted:0,this.baseMoney=r.baseMoney?r.baseMoney:0,this.hackWeight=r.hackWeight?r.hackWeight:0,this.strWeight=r.strWeight?r.strWeight:0,this.defWeight=r.defWeight?r.defWeight:0,this.dexWeight=r.dexWeight?r.dexWeight:0,this.agiWeight=r.agiWeight?r.agiWeight:0,this.chaWeight=r.chaWeight?r.chaWeight:0,100!=Math.round(this.hackWeight+this.strWeight+this.defWeight+this.dexWeight+this.agiWeight+this.chaWeight)&&console.error(`GangMemberTask ${this.name} weights do not add up to 100`),this.difficulty=r.difficulty?r.difficulty:1,this.territory=r.territory?r.territory:{money:1,respect:1,wanted:1}}}},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}));class r{constructor(t,e){a(this,"lvl",1),a(this,"n",1),this.n=t,this.lvl=e}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(252),r=function(t,e,n=0){this.sourceCode=t,this.sourceCodeLineOffset=n,"string"==typeof t&&(t=a.a(t,r.PARSE_OPTIONS)),this.ast=t,this.initFunc_=e,this.paused_=!1,this.polyfills_=[],this.functionCounter_=0,this.stepFunctions_=Object.create(null);var i,o,s=/^step([A-Z]\w*)$/;for(var l in this)"function"==typeof this[l]&&(i=l.match(s))&&(this.stepFunctions_[i[1]]=this[l].bind(this));this.global=this.createScope(this.ast,null),this.ast=a.a(this.polyfills_.join("\n"),r.PARSE_OPTIONS),this.polyfills_=void 0,this.stripLocations_(this.ast,void 0,void 0),(o=new r.State(this.ast,this.global)).done=!1,this.stateStack=[o],this.run(),this.value=void 0,this.ast=t,(o=new r.State(this.ast,this.global)).done=!1,this.stateStack.length=0,this.stateStack[0]=o,this.nodeConstructor=o.node.constructor,this.stateStack=this.stateStack}; +!function(t){function e(e){for(var a,o,s=e[0],l=e[1],c=e[2],u=0,m=[];uObject(o.a)({unbuyable:{color:t.palette.action.disabled},money:{color:t.colors.money}}));function l(t){const e=s();if(void 0!==t.player){if("number"!=typeof t.money)throw new Error("if player if provided, money should be number, contact dev");if(!t.player.canAfford(t.money))return a.createElement("span",{className:e.unbuyable},r.a.formatMoney(t.money))}return a.createElement("span",{className:e.money},"number"==typeof t.money?r.a.formatMoney(t.money):t.money)}},,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"f",(function(){return i})),n.d(e,"a",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return l})),n.d(e,"c",(function(){return c}));var a=n(147);function r(t,e=!1){t=Math.floor(t);const n=Math.floor(t/1e3),a=Math.floor(n/86400),r=n%86400,i=Math.floor(r/3600),o=r%3600,s=Math.floor(o/60),l=o%60,c=(()=>{let e=""+t%1e3;for(;e.length<3;)e="0"+e;return e})();let f="";return a>0&&(f+=a+" days "),i>0&&(f+=i+" hours "),s>0&&(f+=s+" minutes "),f+=(e?`${l}.${c}`:""+l)+" seconds",f}function i(t){if(!o(t))return"";if(0===t.length)return"";const e=t.concat().sort(),n=e[0],a=e[e.length-1],r=n.length;let i=0;for(;i>>16,2246822507)^Math.imul(a^a>>>13,3266489909),a=Math.imul(a^a>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),(4294967296*(2097151&a)+(n>>>0)).toString(16)}},function(t,e,n){"use strict";n.d(e,"c",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(374);function r(t,e){if(null==e)return null;if("object"==typeof e&&"string"==typeof e.ctor&&void 0!==e.data){if("AllServersMap"===e.ctor)return console.warn("Converting AllServersMap for v0.43.1"),e.data;const t=r.constructors[e.ctor];if("function"==typeof t&&"function"==typeof t.fromJSON){const n=t.fromJSON(e);return void 0!==t.validationData&&Object(a.b)(n,t.validationData),n}}return e}function i(t,e,n){n||(n=Object.keys(e));const a={};for(let t=0;t{switch(typeof t){case"number":return t;case"object":return Object(o.a)(t.min,t.max);default:throw Error(`Do not know how to convert the type '${typeof t}' to a number`)}};for(const t of r.a){const r={hostname:t.hostname,ip:g(),numOpenPortsRequired:t.numOpenPortsRequired,organizationName:t.organizationName};void 0!==t.maxRamExponent&&(r.maxRam=Math.pow(2,i(t.maxRamExponent)));for(const e of n)void 0!==t[e]&&(r[e]=i(t[e]));const o=new a.a(r);for(const e of t.literature||[])o.messages.push(e);o.hostname===c.a.WorldDaemon&&(o.requiredHackingSkill*=f.a.WorldDaemonDifficulty),y(o),void 0!==t.networkLayer&&e[i(t.networkLayer)-1].push(o)}const s=(t,e)=>{for(const r of t)n=r,a=e(),n.serversOnNetwork.push(a.hostname),a.serversOnNetwork.push(n.hostname);var n,a};s(e[0],()=>t);for(let t=1;t{return(n=e[t-1])[Math.floor(Math.random()*n.length)];var n})}function E(){for(const t of Object.keys(u))delete u[t];u={}}function v(t){u=JSON.parse(t,s.c)}function k(t=!1){const e=JSON.parse(JSON.stringify(u),s.c);for(const n of Object.keys(e)){const a=e[n];if(t)a.runningScripts=[];else for(let t=0;tObject(a.useContext)(i.Player),Router:()=>Object(a.useContext)(i.Router)}},,function(t,e,n){"use strict";n.d(e,"j",(function(){return a})),n.d(e,"d",(function(){return r})),n.d(e,"i",(function(){return i})),n.d(e,"f",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"h",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"g",(function(){return h}));const a=["Software Engineering Intern","Junior Software Engineer","Senior Software Engineer","Lead Software Developer","Head of Software","Head of Engineering","Vice President of Technology","Chief Technology Officer"],r=["IT Intern","IT Analyst","IT Manager","Systems Administrator"],i=["Security Engineer"],o=["Network Engineer","Network Administrator"],s=["Business Intern","Business Analyst","Business Manager","Operations Manager","Chief Financial Officer","Chief Executive Officer"],l=["Police Officer","Police Chief","Security Guard","Security Officer","Security Supervisor","Head of Security"],c=["Field Agent","Secret Agent","Special Operative"],f=["Waiter","Employee"],u=["Software Consultant","Senior Software Consultant"],m=["Business Consultant","Senior Business Consultant"],h=["Part-time Waiter","Part-time Employee"]},,function(t,e,n){"use strict";function a(t,e){const n=Math.min(t,e),a=Math.max(t,e);return Math.floor(Math.random()*(a-n+1))+n}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o}));const a={ScriptBaseRamCost:1.6,ScriptDomRamCost:25,ScriptCorporationRamCost:1022.4,ScriptHackRamCost:.1,ScriptHackAnalyzeRamCost:1,ScriptGrowRamCost:.15,ScriptGrowthAnalyzeRamCost:1,ScriptWeakenRamCost:.15,ScriptWeakenAnalyzeRamCost:1,ScriptScanRamCost:.2,ScriptRecentScriptsRamCost:.2,ScriptPortProgramRamCost:.05,ScriptRunRamCost:1,ScriptExecRamCost:1.3,ScriptSpawnRamCost:2,ScriptScpRamCost:.6,ScriptKillRamCost:.5,ScriptHasRootAccessRamCost:.05,ScriptGetHostnameRamCost:.05,ScriptGetHackingLevelRamCost:.05,ScriptGetMultipliersRamCost:4,ScriptGetServerRamCost:.1,ScriptGetServerMaxRam:.05,ScriptGetServerUsedRam:.05,ScriptFileExistsRamCost:.1,ScriptIsRunningRamCost:.1,ScriptHacknetNodesRamCost:4,ScriptHNUpgLevelRamCost:.4,ScriptHNUpgRamRamCost:.6,ScriptHNUpgCoreRamCost:.8,ScriptGetStockRamCost:2,ScriptBuySellStockRamCost:2.5,ScriptGetPurchaseServerRamCost:.25,ScriptPurchaseServerRamCost:2.25,ScriptGetPurchasedServerLimit:.05,ScriptGetPurchasedServerMaxRam:.05,ScriptRoundRamCost:.05,ScriptReadWriteRamCost:1,ScriptArbScriptRamCost:1,ScriptGetScriptRamCost:.1,ScriptGetRunningScriptRamCost:.3,ScriptGetHackTimeRamCost:.05,ScriptGetFavorToDonate:.1,ScriptCodingContractBaseRamCost:10,ScriptSleeveBaseRamCost:4,ScriptGetOwnedSourceFiles:5,ScriptSingularityFn1RamCost:2,ScriptSingularityFn2RamCost:3,ScriptSingularityFn3RamCost:5,ScriptGangApiBaseRamCost:4,ScriptBladeburnerApiBaseRamCost:4,ScriptStanekWidth:.4,ScriptStanekHeight:.4,ScriptStanekCharge:.4,ScriptStanekFragmentDefinitions:0,ScriptStanekPlacedFragments:5,ScriptStanekClear:0,ScriptStanekCanPlace:.5,ScriptStanekPlace:5,ScriptStanekFragmentAt:2,ScriptStanekDeleteAt:.15};function r(t){return e=>{if(4===e.bitNodeN)return t;const n=e.sourceFileLvl(4);return n<=1?16*t:2===n?4*t:t}}const i={hacknet:{numNodes:0,purchaseNode:0,getPurchaseNodeCost:0,getNodeStats:0,upgradeLevel:0,upgradeRam:0,upgradeCore:0,upgradeCache:0,getLevelUpgradeCost:0,getRamUpgradeCost:0,getCoreUpgradeCost:0,getCacheUpgradeCost:0,numHashes:0,hashCost:0,spendHashes:0},sprintf:0,vsprintf:0,scan:a.ScriptScanRamCost,hack:a.ScriptHackRamCost,hackAnalyzeThreads:a.ScriptHackAnalyzeRamCost,hackAnalyze:a.ScriptHackAnalyzeRamCost,hackAnalyzeSecurity:a.ScriptHackAnalyzeRamCost,hackAnalyzeChance:a.ScriptHackAnalyzeRamCost,sleep:0,asleep:0,share:2.4,getSharePower:.2,grow:a.ScriptGrowRamCost,growthAnalyze:a.ScriptGrowthAnalyzeRamCost,growthAnalyzeSecurity:a.ScriptGrowthAnalyzeRamCost,weaken:a.ScriptWeakenRamCost,weakenAnalyze:a.ScriptWeakenAnalyzeRamCost,print:0,printf:0,tprint:0,clearLog:0,disableLog:0,enableLog:0,isLogEnabled:0,getScriptLogs:0,nuke:a.ScriptPortProgramRamCost,brutessh:a.ScriptPortProgramRamCost,ftpcrack:a.ScriptPortProgramRamCost,relaysmtp:a.ScriptPortProgramRamCost,httpworm:a.ScriptPortProgramRamCost,sqlinject:a.ScriptPortProgramRamCost,run:a.ScriptRunRamCost,exec:a.ScriptExecRamCost,spawn:a.ScriptSpawnRamCost,kill:a.ScriptKillRamCost,killall:a.ScriptKillRamCost,exit:0,atExit:0,scp:a.ScriptScpRamCost,ls:a.ScriptScanRamCost,ps:a.ScriptScanRamCost,getRecentScripts:a.ScriptRecentScriptsRamCost,hasRootAccess:a.ScriptHasRootAccessRamCost,getIp:a.ScriptGetHostnameRamCost,getHostname:a.ScriptGetHostnameRamCost,getHackingLevel:a.ScriptGetHackingLevelRamCost,getHackingMultipliers:a.ScriptGetMultipliersRamCost,getHacknetMultipliers:a.ScriptGetMultipliersRamCost,getBitNodeMultipliers:a.ScriptGetMultipliersRamCost,getServer:a.ScriptGetMultipliersRamCost/2,getServerMoneyAvailable:a.ScriptGetServerRamCost,getServerSecurityLevel:a.ScriptGetServerRamCost,getServerBaseSecurityLevel:a.ScriptGetServerRamCost,getServerMinSecurityLevel:a.ScriptGetServerRamCost,getServerRequiredHackingLevel:a.ScriptGetServerRamCost,getServerMaxMoney:a.ScriptGetServerRamCost,getServerGrowth:a.ScriptGetServerRamCost,getServerNumPortsRequired:a.ScriptGetServerRamCost,getServerRam:a.ScriptGetServerRamCost,getServerMaxRam:a.ScriptGetServerMaxRam,getServerUsedRam:a.ScriptGetServerUsedRam,serverExists:a.ScriptGetServerRamCost,fileExists:a.ScriptFileExistsRamCost,isRunning:a.ScriptIsRunningRamCost,stock:{getSymbols:a.ScriptGetStockRamCost,getPrice:a.ScriptGetStockRamCost,getAskPrice:a.ScriptGetStockRamCost,getBidPrice:a.ScriptGetStockRamCost,getPosition:a.ScriptGetStockRamCost,getMaxShares:a.ScriptGetStockRamCost,getPurchaseCost:a.ScriptGetStockRamCost,getSaleGain:a.ScriptGetStockRamCost,buy:a.ScriptBuySellStockRamCost,sell:a.ScriptBuySellStockRamCost,short:a.ScriptBuySellStockRamCost,sellShort:a.ScriptBuySellStockRamCost,placeOrder:a.ScriptBuySellStockRamCost,cancelOrder:a.ScriptBuySellStockRamCost,getOrders:a.ScriptBuySellStockRamCost,getVolatility:a.ScriptBuySellStockRamCost,getForecast:a.ScriptBuySellStockRamCost,purchase4SMarketData:a.ScriptBuySellStockRamCost,purchase4SMarketDataTixApi:a.ScriptBuySellStockRamCost,purchaseWseAccount:a.ScriptBuySellStockRamCost,purchaseTixApi:a.ScriptBuySellStockRamCost},getPurchasedServerLimit:a.ScriptGetPurchasedServerLimit,getPurchasedServerMaxRam:a.ScriptGetPurchasedServerMaxRam,getPurchasedServerCost:a.ScriptGetPurchaseServerRamCost,purchaseServer:a.ScriptPurchaseServerRamCost,deleteServer:a.ScriptPurchaseServerRamCost,getPurchasedServers:a.ScriptPurchaseServerRamCost,write:0,tryWritePort:0,read:0,peek:0,clear:0,writePort:0,readPort:0,getPortHandle:0,rm:a.ScriptReadWriteRamCost,scriptRunning:a.ScriptArbScriptRamCost,scriptKill:a.ScriptArbScriptRamCost,getScriptName:0,getScriptRam:a.ScriptGetScriptRamCost,getHackTime:a.ScriptGetHackTimeRamCost,getGrowTime:a.ScriptGetHackTimeRamCost,getWeakenTime:a.ScriptGetHackTimeRamCost,getScriptIncome:a.ScriptGetScriptRamCost,getScriptExpGain:a.ScriptGetScriptRamCost,getRunningScript:a.ScriptGetRunningScriptRamCost,nFormat:0,tFormat:0,getTimeSinceLastAug:a.ScriptGetHackTimeRamCost,prompt:0,wget:0,getFavorToDonate:a.ScriptGetFavorToDonate,getPlayer:a.ScriptSingularityFn1RamCost/4,mv:0,getOwnedSourceFiles:a.ScriptGetOwnedSourceFiles,tail:0,toast:0,universityCourse:r(a.ScriptSingularityFn1RamCost),gymWorkout:r(a.ScriptSingularityFn1RamCost),travelToCity:r(a.ScriptSingularityFn1RamCost),goToLocation:r(a.ScriptSingularityFn3RamCost),purchaseTor:r(a.ScriptSingularityFn1RamCost),purchaseProgram:r(a.ScriptSingularityFn1RamCost),getCurrentServer:r(a.ScriptSingularityFn1RamCost),connect:r(a.ScriptSingularityFn1RamCost),manualHack:r(a.ScriptSingularityFn1RamCost),installBackdoor:r(a.ScriptSingularityFn1RamCost),getDarkwebProgramCost:r(a.ScriptSingularityFn1RamCost/4),getDarkwebPrograms:r(a.ScriptSingularityFn1RamCost/4),getStats:r(a.ScriptSingularityFn1RamCost/4),getCharacterInformation:r(a.ScriptSingularityFn1RamCost/4),hospitalize:r(a.ScriptSingularityFn1RamCost/4),isBusy:r(a.ScriptSingularityFn1RamCost/4),stopAction:r(a.ScriptSingularityFn1RamCost/2),upgradeHomeRam:r(a.ScriptSingularityFn2RamCost),upgradeHomeCores:r(a.ScriptSingularityFn2RamCost),getUpgradeHomeRamCost:r(a.ScriptSingularityFn2RamCost/2),getUpgradeHomeCoresCost:r(a.ScriptSingularityFn2RamCost/2),workForCompany:r(a.ScriptSingularityFn2RamCost),applyToCompany:r(a.ScriptSingularityFn2RamCost),getCompanyRep:r(a.ScriptSingularityFn2RamCost/3),getCompanyFavor:r(a.ScriptSingularityFn2RamCost/3),getCompanyFavorGain:r(a.ScriptSingularityFn2RamCost/4),checkFactionInvitations:r(a.ScriptSingularityFn2RamCost),joinFaction:r(a.ScriptSingularityFn2RamCost),workForFaction:r(a.ScriptSingularityFn2RamCost),getFactionRep:r(a.ScriptSingularityFn2RamCost/3),getFactionFavor:r(a.ScriptSingularityFn2RamCost/3),getFactionFavorGain:r(a.ScriptSingularityFn2RamCost/4),donateToFaction:r(a.ScriptSingularityFn3RamCost),createProgram:r(a.ScriptSingularityFn3RamCost),commitCrime:r(a.ScriptSingularityFn3RamCost),getCrimeChance:r(a.ScriptSingularityFn3RamCost),getCrimeStats:r(a.ScriptSingularityFn3RamCost),getOwnedAugmentations:r(a.ScriptSingularityFn3RamCost),getAugmentationsFromFaction:r(a.ScriptSingularityFn3RamCost),getAugmentationCost:r(a.ScriptSingularityFn3RamCost),getAugmentationPrereq:r(a.ScriptSingularityFn3RamCost),getAugmentationPrice:r(a.ScriptSingularityFn3RamCost/2),getAugmentationRepReq:r(a.ScriptSingularityFn3RamCost/2),getAugmentationStats:r(a.ScriptSingularityFn3RamCost),purchaseAugmentation:r(a.ScriptSingularityFn3RamCost),softReset:r(a.ScriptSingularityFn3RamCost),installAugmentations:r(a.ScriptSingularityFn3RamCost),isFocused:r(.1),setFocus:r(.1),gang:{createGang:a.ScriptGangApiBaseRamCost/4,inGang:a.ScriptGangApiBaseRamCost/4,getMemberNames:a.ScriptGangApiBaseRamCost/4,getGangInformation:a.ScriptGangApiBaseRamCost/2,getOtherGangInformation:a.ScriptGangApiBaseRamCost/2,getMemberInformation:a.ScriptGangApiBaseRamCost/2,canRecruitMember:a.ScriptGangApiBaseRamCost/4,recruitMember:a.ScriptGangApiBaseRamCost/2,getTaskNames:a.ScriptGangApiBaseRamCost/4,getTaskStats:a.ScriptGangApiBaseRamCost/4,setMemberTask:a.ScriptGangApiBaseRamCost/2,getEquipmentNames:a.ScriptGangApiBaseRamCost/4,getEquipmentCost:a.ScriptGangApiBaseRamCost/2,getEquipmentType:a.ScriptGangApiBaseRamCost/2,getEquipmentStats:a.ScriptGangApiBaseRamCost/2,purchaseEquipment:a.ScriptGangApiBaseRamCost,ascendMember:a.ScriptGangApiBaseRamCost,getAscensionResult:a.ScriptGangApiBaseRamCost/2,setTerritoryWarfare:a.ScriptGangApiBaseRamCost/2,getChanceToWinClash:a.ScriptGangApiBaseRamCost,getBonusTime:0},bladeburner:{getContractNames:a.ScriptBladeburnerApiBaseRamCost/10,getOperationNames:a.ScriptBladeburnerApiBaseRamCost/10,getBlackOpNames:a.ScriptBladeburnerApiBaseRamCost/10,getBlackOpRank:a.ScriptBladeburnerApiBaseRamCost/2,getGeneralActionNames:a.ScriptBladeburnerApiBaseRamCost/10,getSkillNames:a.ScriptBladeburnerApiBaseRamCost/10,startAction:a.ScriptBladeburnerApiBaseRamCost,stopBladeburnerAction:a.ScriptBladeburnerApiBaseRamCost/2,getCurrentAction:a.ScriptBladeburnerApiBaseRamCost/4,getActionTime:a.ScriptBladeburnerApiBaseRamCost,getActionEstimatedSuccessChance:a.ScriptBladeburnerApiBaseRamCost,getActionRepGain:a.ScriptBladeburnerApiBaseRamCost,getActionCountRemaining:a.ScriptBladeburnerApiBaseRamCost,getActionMaxLevel:a.ScriptBladeburnerApiBaseRamCost,getActionCurrentLevel:a.ScriptBladeburnerApiBaseRamCost,getActionAutolevel:a.ScriptBladeburnerApiBaseRamCost,setActionAutolevel:a.ScriptBladeburnerApiBaseRamCost,setActionLevel:a.ScriptBladeburnerApiBaseRamCost,getRank:a.ScriptBladeburnerApiBaseRamCost,getSkillPoints:a.ScriptBladeburnerApiBaseRamCost,getSkillLevel:a.ScriptBladeburnerApiBaseRamCost,getSkillUpgradeCost:a.ScriptBladeburnerApiBaseRamCost,upgradeSkill:a.ScriptBladeburnerApiBaseRamCost,getTeamSize:a.ScriptBladeburnerApiBaseRamCost,setTeamSize:a.ScriptBladeburnerApiBaseRamCost,getCityEstimatedPopulation:a.ScriptBladeburnerApiBaseRamCost,getCityCommunities:a.ScriptBladeburnerApiBaseRamCost,getCityChaos:a.ScriptBladeburnerApiBaseRamCost,getCity:a.ScriptBladeburnerApiBaseRamCost,switchCity:a.ScriptBladeburnerApiBaseRamCost,getStamina:a.ScriptBladeburnerApiBaseRamCost,joinBladeburnerFaction:a.ScriptBladeburnerApiBaseRamCost,joinBladeburnerDivision:a.ScriptBladeburnerApiBaseRamCost,getBonusTime:0},codingcontract:{attempt:a.ScriptCodingContractBaseRamCost,getContractType:a.ScriptCodingContractBaseRamCost/2,getData:a.ScriptCodingContractBaseRamCost/2,getDescription:a.ScriptCodingContractBaseRamCost/2,getNumTriesRemaining:a.ScriptCodingContractBaseRamCost/5},sleeve:{getNumSleeves:a.ScriptSleeveBaseRamCost,setToShockRecovery:a.ScriptSleeveBaseRamCost,setToSynchronize:a.ScriptSleeveBaseRamCost,setToCommitCrime:a.ScriptSleeveBaseRamCost,setToUniversityCourse:a.ScriptSleeveBaseRamCost,travel:a.ScriptSleeveBaseRamCost,setToCompanyWork:a.ScriptSleeveBaseRamCost,setToFactionWork:a.ScriptSleeveBaseRamCost,setToGymWorkout:a.ScriptSleeveBaseRamCost,getSleeveStats:a.ScriptSleeveBaseRamCost,getTask:a.ScriptSleeveBaseRamCost,getInformation:a.ScriptSleeveBaseRamCost,getSleeveAugmentations:a.ScriptSleeveBaseRamCost,getSleevePurchasableAugs:a.ScriptSleeveBaseRamCost,purchaseSleeveAug:a.ScriptSleeveBaseRamCost},stanek:{giftWidth:a.ScriptStanekWidth,giftHeight:a.ScriptStanekHeight,chargeFragment:a.ScriptStanekCharge,fragmentDefinitions:a.ScriptStanekFragmentDefinitions,activeFragments:a.ScriptStanekPlacedFragments,clearGift:a.ScriptStanekClear,canPlaceFragment:a.ScriptStanekCanPlace,placeFragment:a.ScriptStanekPlace,getFragment:a.ScriptStanekFragmentAt,removeFragment:a.ScriptStanekDeleteAt},ui:{getTheme:0,setTheme:0,resetTheme:0,getStyles:0,setStyles:0,resetStyles:0,getGameInfo:0},grafting:{getAugmentationGraftPrice:3.75,getAugmentationGraftTime:3.75,graftAugmentation:7.5},heart:{break:0}};function o(t,...e){if(0===e.length)return console.warn("No arguments passed to getRamCost()"),0;let n=i[e[0]];for(let t=1;tt===1.0777-1?"7.77%":t===1.777-1?"77.7%":i.a.formatPercentage(t,e);let s=a.createElement(a.Fragment,null,"Effects:");return t.hacking_mult&&t.hacking_mult==t.strength_mult&&t.hacking_mult==t.defense_mult&&t.hacking_mult==t.dexterity_mult&&t.hacking_mult==t.agility_mult&&t.hacking_mult==t.charisma_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_mult-1)," all skills"):(t.hacking_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_mult-1)," hacking skill")),t.strength_mult&&t.strength_mult==t.defense_mult&&t.strength_mult==t.dexterity_mult&&t.strength_mult==t.agility_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_mult-1)," combat skills"):(t.strength_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_mult-1)," strength skill")),t.defense_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.defense_mult-1)," defense skill")),t.dexterity_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.dexterity_mult-1)," dexterity skill")),t.agility_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.agility_mult-1)," agility skill"))),t.charisma_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.charisma_mult-1)," charisma skill"))),t.hacking_exp_mult&&t.hacking_exp_mult===t.strength_exp_mult&&t.hacking_exp_mult===t.defense_exp_mult&&t.hacking_exp_mult===t.dexterity_exp_mult&&t.hacking_exp_mult===t.agility_exp_mult&&t.hacking_exp_mult===t.charisma_exp_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_exp_mult-1)," exp for all skills"):(t.hacking_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_exp_mult-1)," hacking exp")),t.strength_exp_mult&&t.strength_exp_mult===t.defense_exp_mult&&t.strength_exp_mult===t.dexterity_exp_mult&&t.strength_exp_mult===t.agility_exp_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_exp_mult-1)," combat exp"):(t.strength_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.strength_exp_mult-1)," strength exp")),t.defense_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.defense_exp_mult-1)," defense exp")),t.dexterity_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.dexterity_exp_mult-1)," dexterity exp")),t.agility_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.agility_exp_mult-1)," agility exp"))),t.charisma_exp_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.charisma_exp_mult-1)," charisma exp"))),t.hacking_speed_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_speed_mult-1)," faster hack(), grow(), and weaken()")),t.hacking_chance_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_chance_mult-1)," hack() success chance")),t.hacking_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_money_mult-1)," hack() power")),t.hacking_grow_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacking_grow_mult-1)," grow() power")),t.faction_rep_mult&&t.faction_rep_mult===t.company_rep_mult?s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.faction_rep_mult-1)," reputation from factions and companies"):(t.faction_rep_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.faction_rep_mult-1)," reputation from factions")),t.company_rep_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.company_rep_mult-1)," reputation from companies"))),t.crime_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.crime_money_mult-1)," crime money")),t.crime_success_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.crime_success_mult-1)," crime success rate")),t.work_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.work_money_mult-1)," work money")),t.hacknet_node_money_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.hacknet_node_money_mult-1)," hacknet production")),t.hacknet_node_purchase_cost_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"-",r(-(t.hacknet_node_purchase_cost_mult-1))," hacknet nodes cost")),t.hacknet_node_level_cost_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"-",r(-(t.hacknet_node_level_cost_mult-1))," hacknet nodes upgrade cost")),t.bladeburner_max_stamina_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_max_stamina_mult-1)," Bladeburner Max Stamina")),t.bladeburner_stamina_gain_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_stamina_gain_mult-1)," Bladeburner Stamina gain")),t.bladeburner_analysis_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_analysis_mult-1)," Bladeburner Field Analysis effectiveness")),t.bladeburner_success_chance_mult&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"+",r(t.bladeburner_success_chance_mult-1)," Bladeburner Contracts and Operations success chance")),n&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"Start with ",a.createElement(o.a,{money:n})," after installing Augmentations.")),e&&(s=a.createElement(a.Fragment,null,s,a.createElement("br",null),"Start with ",e.join(" and ")," after installing Augmentations.")),s}(this.mults,t.programs,t.startingMoney):this.stats=t.stats}addToFactions(t){for(let e=0;eObject(o.a)({modal:{display:"flex",alignItems:"center",justifyContent:"center"},paper:{backgroundColor:t.palette.background.default,border:"2px solid "+t.palette.primary.main,boxShadow:`0px 3px 5px -1px ${t.palette.primary.dark},0px 5px 8px 0px ${t.palette.primary.dark},0px 1px 14px 0px ${t.palette.primary.dark}`,padding:2,maxWidth:"80%",maxHeight:"80%",overflow:"auto","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}})),u=t=>{const e=f();return r.a.createElement(s.a,{disableRestoreFocus:!0,disableScrollLock:!0,disableEnforceFocus:!0,disableAutoFocus:!0,open:t.open,onClose:t.onClose,closeAfterTransition:!0,className:e.modal},r.a.createElement(l.a,{in:t.open},r.a.createElement("div",{className:e.paper},r.a.createElement(c.a,{sx:{m:2}},t.children))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Idle:1,Contract:2,Operation:3,BlackOp:4,BlackOperation:4,Training:5,Recruitment:6,FieldAnalysis:7,"Field Analysis":7,Diplomacy:8,"Hyperbolic Regeneration Chamber":9,"Incite Violence":10}},function(t,e,n){"use strict";n.d(e,"f",(function(){return a})),n.d(e,"b",(function(){return u})),n.d(e,"e",(function(){return l})),n.d(e,"c",(function(){return c})),n.d(e,"a",(function(){return s})),n.d(e,"d",(function(){return f}));var a,r=n(2),i=n(64),o=n(370);!function(t){t[t.Start=0]="Start",t[t.GoToCharacterPage=1]="GoToCharacterPage",t[t.CharacterPage=2]="CharacterPage",t[t.CharacterGoToTerminalPage=3]="CharacterGoToTerminalPage",t[t.TerminalIntro=4]="TerminalIntro",t[t.TerminalHelp=5]="TerminalHelp",t[t.TerminalLs=6]="TerminalLs",t[t.TerminalScan=7]="TerminalScan",t[t.TerminalScanAnalyze1=8]="TerminalScanAnalyze1",t[t.TerminalScanAnalyze2=9]="TerminalScanAnalyze2",t[t.TerminalConnect=10]="TerminalConnect",t[t.TerminalAnalyze=11]="TerminalAnalyze",t[t.TerminalNuke=12]="TerminalNuke",t[t.TerminalManualHack=13]="TerminalManualHack",t[t.TerminalHackingMechanics=14]="TerminalHackingMechanics",t[t.TerminalGoHome=15]="TerminalGoHome",t[t.TerminalCreateScript=16]="TerminalCreateScript",t[t.TerminalTypeScript=17]="TerminalTypeScript",t[t.TerminalFree=18]="TerminalFree",t[t.TerminalRunScript=19]="TerminalRunScript",t[t.TerminalGoToActiveScriptsPage=20]="TerminalGoToActiveScriptsPage",t[t.ActiveScriptsPage=21]="ActiveScriptsPage",t[t.ActiveScriptsToTerminal=22]="ActiveScriptsToTerminal",t[t.TerminalTailScript=23]="TerminalTailScript",t[t.GoToHacknetNodesPage=24]="GoToHacknetNodesPage",t[t.HacknetNodesIntroduction=25]="HacknetNodesIntroduction",t[t.HacknetNodesGoToWorldPage=26]="HacknetNodesGoToWorldPage",t[t.WorldDescription=27]="WorldDescription",t[t.TutorialPageInfo=28]="TutorialPageInfo",t[t.End=29]="End"}(a||(a={}));const s={currStep:a.Start,isRunning:!1,stepIsDone:{[a.Start]:!1,[a.GoToCharacterPage]:!1,[a.CharacterPage]:!1,[a.CharacterGoToTerminalPage]:!1,[a.TerminalIntro]:!1,[a.TerminalHelp]:!1,[a.TerminalLs]:!1,[a.TerminalScan]:!1,[a.TerminalScanAnalyze1]:!1,[a.TerminalScanAnalyze2]:!1,[a.TerminalConnect]:!1,[a.TerminalAnalyze]:!1,[a.TerminalNuke]:!1,[a.TerminalManualHack]:!1,[a.TerminalHackingMechanics]:!1,[a.TerminalGoHome]:!1,[a.TerminalCreateScript]:!1,[a.TerminalTypeScript]:!1,[a.TerminalFree]:!1,[a.TerminalRunScript]:!1,[a.TerminalGoToActiveScriptsPage]:!1,[a.ActiveScriptsPage]:!1,[a.ActiveScriptsToTerminal]:!1,[a.TerminalTailScript]:!1,[a.GoToHacknetNodesPage]:!1,[a.HacknetNodesIntroduction]:!1,[a.HacknetNodesGoToWorldPage]:!1,[a.WorldDescription]:!1,[a.TutorialPageInfo]:!1,[a.End]:!1}};function l(){s.isRunning=!0,s.currStep=a.Start}function c(){s.stepIsDone[s.currStep]=!0,s.currStepa.Start&&(s.currStep-=1),o.a.emit()}function u(){s.isRunning=!1,s.currStep=a.Start,r.a.getHomeComputer().messages.push(i.a.HackersStartingHandbook),o.a.emit()}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Operations:"Operations",Engineer:"Engineer",Business:"Business",Management:"Management",RandD:"Research & Development",Training:"Training",Unassigned:"Unassigned"}},function(t,e,n){"use strict";n.d(e,"gb",(function(){return tt})),n.d(e,"jb",(function(){return et})),n.d(e,"kb",(function(){return nt})),n.d(e,"sb",(function(){return at})),n.d(e,"o",(function(){return rt})),n.d(e,"p",(function(){return it})),n.d(e,"Rb",(function(){return ot})),n.d(e,"vb",(function(){return st})),n.d(e,"eb",(function(){return lt})),n.d(e,"yb",(function(){return ct})),n.d(e,"M",(function(){return ft})),n.d(e,"ib",(function(){return ut})),n.d(e,"s",(function(){return mt})),n.d(e,"tb",(function(){return ht})),n.d(e,"K",(function(){return dt})),n.d(e,"N",(function(){return pt})),n.d(e,"I",(function(){return gt})),n.d(e,"J",(function(){return yt})),n.d(e,"F",(function(){return bt})),n.d(e,"G",(function(){return Et})),n.d(e,"L",(function(){return vt})),n.d(e,"nb",(function(){return kt})),n.d(e,"wb",(function(){return _t})),n.d(e,"mb",(function(){return wt})),n.d(e,"Lb",(function(){return St})),n.d(e,"lb",(function(){return Ct})),n.d(e,"t",(function(){return xt})),n.d(e,"Sb",(function(){return Lt})),n.d(e,"D",(function(){return Ot})),n.d(e,"Mb",(function(){return Mt})),n.d(e,"Ub",(function(){return Tt})),n.d(e,"E",(function(){return At})),n.d(e,"Jb",(function(){return Rt})),n.d(e,"Nb",(function(){return Nt})),n.d(e,"Ib",(function(){return Pt})),n.d(e,"Gb",(function(){return It})),n.d(e,"Fb",(function(){return Ft})),n.d(e,"Hb",(function(){return Dt})),n.d(e,"Tb",(function(){return jt})),n.d(e,"B",(function(){return Bt})),n.d(e,"X",(function(){return Gt})),n.d(e,"W",(function(){return Wt})),n.d(e,"Z",(function(){return Ht})),n.d(e,"U",(function(){return Ut})),n.d(e,"V",(function(){return qt})),n.d(e,"S",(function(){return $t})),n.d(e,"T",(function(){return Kt})),n.d(e,"Y",(function(){return zt})),n.d(e,"Db",(function(){return Vt})),n.d(e,"x",(function(){return Yt})),n.d(e,"z",(function(){return Jt})),n.d(e,"Kb",(function(){return Xt})),n.d(e,"w",(function(){return Qt})),n.d(e,"C",(function(){return Zt})),n.d(e,"Cb",(function(){return te})),n.d(e,"Ob",(function(){return ee})),n.d(e,"y",(function(){return ne})),n.d(e,"Eb",(function(){return ae})),n.d(e,"v",(function(){return re})),n.d(e,"A",(function(){return ie})),n.d(e,"Ab",(function(){return oe})),n.d(e,"Pb",(function(){return se})),n.d(e,"ub",(function(){return le})),n.d(e,"fb",(function(){return ce})),n.d(e,"f",(function(){return fe})),n.d(e,"R",(function(){return ue})),n.d(e,"pb",(function(){return me})),n.d(e,"db",(function(){return he})),n.d(e,"m",(function(){return de})),n.d(e,"l",(function(){return pe})),n.d(e,"e",(function(){return ge})),n.d(e,"j",(function(){return ye})),n.d(e,"g",(function(){return be})),n.d(e,"c",(function(){return Ee})),n.d(e,"b",(function(){return ve})),n.d(e,"k",(function(){return ke})),n.d(e,"a",(function(){return _e})),n.d(e,"d",(function(){return we})),n.d(e,"h",(function(){return Se})),n.d(e,"n",(function(){return Ce})),n.d(e,"i",(function(){return xe})),n.d(e,"hb",(function(){return Le})),n.d(e,"qb",(function(){return Oe})),n.d(e,"rb",(function(){return Me})),n.d(e,"u",(function(){return Te})),n.d(e,"xb",(function(){return Ae})),n.d(e,"ob",(function(){return Re})),n.d(e,"H",(function(){return Ne})),n.d(e,"Qb",(function(){return Pe})),n.d(e,"cb",(function(){return Ie})),n.d(e,"r",(function(){return Fe})),n.d(e,"bb",(function(){return De})),n.d(e,"ab",(function(){return je})),n.d(e,"P",(function(){return Be})),n.d(e,"O",(function(){return Ge})),n.d(e,"Q",(function(){return We})),n.d(e,"zb",(function(){return He})),n.d(e,"q",(function(){return Ue})),n.d(e,"Bb",(function(){return qe}));var a=n(56),r=n(134),i=n(358),o=n(14),s=n(7),l=n(113),c=n(234),f=n(66),u=n(668),m=n(522),h=n(94),d=n(31),p=n(9),g=n(65),y=n(371),b=n(85),E=n(204),v=n(28),k=n(82),_=n(149),w=n(216),S=n(16),C=n(11),x=n(322),L=n(177),O=n(281),M=n(241),T=n(25),A=n(46),R=n(133),N=n(103),P=n(1393),I=n(1394),F=n(360),D=n(79),j=n(518),B=n(394),G=n(92),W=n(5),H=n(375),U=n(15),q=n(23),$=n(118),K=n(19),z=n(0),V=n.n(z),Y=n(357),J=n(143),X=n(778),Q=n(295),Z=n(4);function tt(){const t=Object(R.f)({adminRights:!0,hostname:"home",ip:Object(T.e)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=N.a.Home,Object(T.a)(t),this.getHomeComputer().programs.push(g.a.NukeProgram.name)}function et(){this.currentServer=N.a.Home,this.numPeopleKilled=0,this.hacking=1,this.strength=1,this.defense=1,this.dexterity=1,this.agility=1,this.charisma=1,this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.money=1e3,this.city=S.a.Sector12,this.location=C.a.TravelAgency,this.companyName="",this.jobs={},this.purchasedServers=[],this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[];const t=Math.min(3,D.a[10]+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>t&&(this.sleeves.length=t);for(let e=this.sleeves.length;e=100?this.sleeves[t].synchronize(this):this.sleeves[t].shockRecovery(this));this.isWorking=!1,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.createProgramName="",this.className="",this.crimeType="",this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.timeWorked=0,this.lastUpdate=(new Date).getTime(),this.playtimeSinceLastAug=0,this.scriptProdSinceLastAug=0,this.moneySourceA.reset(),this.hacknetNodes.length=0,this.hashManager.prestige(),this.reapplyAllAugmentations(!0),this.hp=this.max_hp}function nt(){this.entropy=0,this.prestigeAugmentation(),this.karma=0;for(let t=0;t0?this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)):this.intelligence=0;const t=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*t)}function st(){this.hacking_chance_mult=1,this.hacking_speed_mult=1,this.hacking_money_mult=1,this.hacking_grow_mult=1,this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.crime_money_mult=1,this.crime_success_mult=1,this.hacknet_node_money_mult=1,this.hacknet_node_purchase_cost_mult=1,this.hacknet_node_ram_cost_mult=1,this.hacknet_node_core_cost_mult=1,this.hacknet_node_level_cost_mult=1,this.work_money_mult=1,this.bladeburner_max_stamina_mult=1,this.bladeburner_stamina_gain_mult=1,this.bladeburner_analysis_mult=1,this.bladeburner_success_chance_mult=1}function lt(t){const e=this.getHomeComputer();if(null==e)return!1;for(let n=0;n=t}function ht(t,e){this.moneySourceA instanceof H.a||(console.warn("Player.moneySourceA was not properly initialized. Resetting"),this.moneySourceA=new H.a),this.moneySourceB instanceof H.a||(console.warn("Player.moneySourceB was not properly initialized. Resetting"),this.moneySourceB=new H.a),this.moneySourceA.record(t,e),this.moneySourceB.record(t,e)}function dt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainHackingExp()"):(this.hacking_exp+=t,this.hacking_exp<0&&(this.hacking_exp=0),this.hacking=Object(L.b)(this.hacking_exp,this.hacking_mult*s.a.HackingLevelMultiplier))}function pt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainStrengthExp()"):(this.strength_exp+=t,this.strength_exp<0&&(this.strength_exp=0),this.strength=Object(L.b)(this.strength_exp,this.strength_mult*s.a.StrengthLevelMultiplier))}function gt(t){if(isNaN(t))return void console.error("ERR: NaN passed into player.gainDefenseExp()");this.defense_exp+=t,this.defense_exp<0&&(this.defense_exp=0),this.defense=Object(L.b)(this.defense_exp,this.defense_mult*s.a.DefenseLevelMultiplier);const e=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*e)}function yt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainDexterityExp()"):(this.dexterity_exp+=t,this.dexterity_exp<0&&(this.dexterity_exp=0),this.dexterity=Object(L.b)(this.dexterity_exp,this.dexterity_mult*s.a.DexterityLevelMultiplier))}function bt(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainAgilityExp()"):(this.agility_exp+=t,this.agility_exp<0&&(this.agility_exp=0),this.agility=Object(L.b)(this.agility_exp,this.agility_mult*s.a.AgilityLevelMultiplier))}function Et(t){isNaN(t)?console.error("ERR: NaN passed into Player.gainCharismaExp()"):(this.charisma_exp+=t,this.charisma_exp<0&&(this.charisma_exp=0),this.charisma=Object(L.b)(this.charisma_exp,this.charisma_mult*s.a.CharismaLevelMultiplier))}function vt(t){isNaN(t)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(D.a[5]>0||this.intelligence>0)&&(this.intelligence_exp+=t,this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)))}function kt(t){const e=t.toLowerCase();return e.includes("hack")?this.hacking:e.includes("str")?this.strength:e.includes("def")?this.defense:e.includes("dex")?this.dexterity:e.includes("agi")?this.agility:e.includes("cha")?this.charisma:e.includes("int")?this.intelligence:0}function _t(t,e,n){this.workType!==p.a.WorkTypeFaction&&t===this.workType&&e===this.companyName||t===this.workType&&e===this.currentWorkFactionName&&n===this.factionWorkType||(this.isWorking&&this.singularityStopWork(),this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workMoneyLossRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.timeWorked=0,this.timeWorkedCreateProgram=0,this.timeWorkedGraftAugmentation=0,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.createProgramName="",this.graftAugmentationName="",this.className="",this.workType="")}function wt(t=1){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);const n=e*this.workHackExpGainRate*t,a=e*this.workStrExpGainRate*t,r=e*this.workDefExpGainRate*t,i=e*this.workDexExpGainRate*t,s=e*this.workAgiExpGainRate*t,l=e*this.workChaExpGainRate*t,c=(this.workMoneyGainRate-this.workMoneyLossRate)*t;this.gainHackingExp(n),this.gainStrengthExp(a),this.gainDefenseExp(r),this.gainDexterityExp(i),this.gainAgilityExp(s),this.gainCharismaExp(l),this.gainMoney(c,this.className?"class":"work"),this.workHackExpGained+=n,this.workStrExpGained+=a,this.workDefExpGained+=r,this.workDexExpGained+=i,this.workAgiExpGained+=s,this.workChaExpGained+=l,this.workRepGained+=e*this.workRepGainRate*t,this.workMoneyGained+=e*this.workMoneyGainRate*t,this.workMoneyGained-=e*this.workMoneyLossRate*t}function St(t){this.resetWorkStatus(p.a.WorkTypeCompany,t),this.isWorking=!0,this.companyName=t,this.workType=p.a.WorkTypeCompany,this.workHackExpGainRate=this.getWorkHackExpGain(),this.workStrExpGainRate=this.getWorkStrExpGain(),this.workDefExpGainRate=this.getWorkDefExpGain(),this.workDexExpGainRate=this.getWorkDexExpGain(),this.workAgiExpGainRate=this.getWorkAgiExpGain(),this.workChaExpGainRate=this.getWorkChaExpGain(),this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.timeNeededToCompleteWork=p.a.MillisecondsPer8Hours}function Ct(t,e=1){this.isWorking&&(this.workType==p.a.WorkTypeFaction?this.workForFaction(e)&&t.toFaction(v.a[this.currentWorkFactionName]):this.workType==p.a.WorkTypeCreateProgram?this.createProgramWork(e)&&t.toTerminal():this.workType==p.a.WorkTypeStudyClass?this.takeClass(e)&&t.toCity():this.workType==p.a.WorkTypeCrime?this.commitCrime(e)&&t.toLocation(w.a[C.a.Slums]):this.workType==p.a.WorkTypeCompanyPartTime?this.workPartTime(e)&&t.toCity():this.workType===p.a.WorkTypeGraftAugmentation?this.graftAugmentationWork(e)&&t.toGrafting():this.work(e)&&t.toCity())}function xt(){const t=Y.a.find(t=>t.specialName===this.companyName);if(!t)return.5;const e=Object(T.d)(t.hostname);return e instanceof A.a&&e&&e.backdoorInstalled?.75:.5}function Lt(t){let e=!1;this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer8Hours&&(e=!0,t=Math.round((p.a.MillisecondsPer8Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.processWorkEarnings(t);const n=f.a[this.companyName];return Object(j.a)(n,this.workRepGainRate,t),!!(e||this.timeWorked>=p.a.MillisecondsPer8Hours)&&(this.finishWork(!1),!0)}function Ot(t,e=!1){t&&(this.workRepGained*=this.cancelationPenalty());const n=.5===this.cancelationPenalty()?"half":"three-quarters";f.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();let a=V.a.createElement(V.a.Fragment,null,"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the company ",V.a.createElement("br",null),this.workHackExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null)),this.workStrExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null)),this.workDefExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null)),this.workDexExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null)),this.workAgiExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null)),this.workChaExpGained>0&&V.a.createElement(V.a.Fragment,null,W.a.formatExp(this.workChaExpGained)," charisma exp ",V.a.createElement("br",null)),V.a.createElement("br",null));if(a=t?V.a.createElement(V.a.Fragment,null,"You worked a short shift of ",Object(q.b)(this.timeWorked)," ",V.a.createElement("br",null),V.a.createElement("br",null),"Since you cancelled your work early, you only gained ",n," of the reputation you earned. ",V.a.createElement("br",null),V.a.createElement("br",null),a):V.a.createElement(V.a.Fragment,null,"You worked a full shift of 8 hours! ",V.a.createElement("br",null),V.a.createElement("br",null),a),e||Object(U.a)(a),this.isWorking=!1,this.focus=!1,this.resetWorkStatus(),e){return"You worked a short shift of "+Object(q.b)(this.timeWorked)+" and earned $"+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatReputation(this.workRepGained)+" reputation, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp."}return""}function Mt(t){this.resetWorkStatus(p.a.WorkTypeCompanyPartTime,t),this.isWorking=!0,this.companyName=t,this.workType=p.a.WorkTypeCompanyPartTime,this.workHackExpGainRate=this.getWorkHackExpGain(),this.workStrExpGainRate=this.getWorkStrExpGain(),this.workDefExpGainRate=this.getWorkDefExpGain(),this.workDexExpGainRate=this.getWorkDexExpGain(),this.workAgiExpGainRate=this.getWorkAgiExpGain(),this.workChaExpGainRate=this.getWorkChaExpGain(),this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.timeNeededToCompleteWork=p.a.MillisecondsPer8Hours}function Tt(t){let e=!1;return this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer8Hours&&(e=!0,t=Math.round((p.a.MillisecondsPer8Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.workRepGainRate=this.getWorkRepGain(),this.processWorkEarnings(t),!!(e||this.timeWorked>=p.a.MillisecondsPer8Hours)&&(this.finishWorkPartTime(),!0)}function At(t=!1){f.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();const e=V.a.createElement(V.a.Fragment,null,"You worked for ",Object(q.b)(this.timeWorked),V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the company ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null));if(t||Object(U.a)(e),this.isWorking=!1,this.resetWorkStatus(),t){return"You worked for "+Object(q.b)(this.timeWorked)+" and earned a total of $"+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatReputation(this.workRepGained)+" reputation, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp"}return""}function Rt(){this.focus=!0}function Nt(){this.focus=!1}function Pt(t){let e=1+t.favor/100;isNaN(e)&&(e=1),this.workRepGainRate*=e,this.workRepGainRate*=s.a.FactionWorkRepGain,this.isWorking=!0,this.workType=p.a.WorkTypeFaction,this.currentWorkFactionName=t.name,this.timeNeededToCompleteWork=p.a.MillisecondsPer20Hours}function It(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkHacking),this.workHackExpGainRate=.15*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.c)(this,t),this.factionWorkType=p.a.FactionWorkHacking,this.currentWorkFactionDescription="carrying out hacking contracts",this.startFactionWork(t)}function Ft(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkField),this.workHackExpGainRate=.1*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workStrExpGainRate=.1*this.strength_exp_mult*s.a.FactionWorkExpGain,this.workDefExpGainRate=.1*this.defense_exp_mult*s.a.FactionWorkExpGain,this.workDexExpGainRate=.1*this.dexterity_exp_mult*s.a.FactionWorkExpGain,this.workAgiExpGainRate=.1*this.agility_exp_mult*s.a.FactionWorkExpGain,this.workChaExpGainRate=.1*this.charisma_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.a)(this,t),this.factionWorkType=p.a.FactionWorkField,this.currentWorkFactionDescription="carrying out field missions",this.startFactionWork(t)}function Dt(t){this.resetWorkStatus(p.a.WorkTypeFaction,t.name,p.a.FactionWorkSecurity),this.workHackExpGainRate=.05*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workStrExpGainRate=.15*this.strength_exp_mult*s.a.FactionWorkExpGain,this.workDefExpGainRate=.15*this.defense_exp_mult*s.a.FactionWorkExpGain,this.workDexExpGainRate=.15*this.dexterity_exp_mult*s.a.FactionWorkExpGain,this.workAgiExpGainRate=.15*this.agility_exp_mult*s.a.FactionWorkExpGain,this.workChaExpGainRate=0*this.charisma_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(M.b)(this,t),this.factionWorkType=p.a.FactionWorkSecurity,this.currentWorkFactionDescription="performing security detail",this.startFactionWork(t)}function jt(t){const e=v.a[this.currentWorkFactionName];if(!e)return!1;switch(this.factionWorkType){case p.a.FactionWorkHacking:this.workRepGainRate=Object(M.c)(this,e);break;case p.a.FactionWorkField:this.workRepGainRate=Object(M.a)(this,e);break;case p.a.FactionWorkSecurity:this.workRepGainRate=Object(M.b)(this,e)}this.workRepGainRate*=s.a.FactionWorkRepGain;let n=!1;return this.timeWorked+p.a._idleSpeed*t>=p.a.MillisecondsPer20Hours&&(n=!0,t=Math.round((p.a.MillisecondsPer20Hours-this.timeWorked)/p.a._idleSpeed)),this.timeWorked+=p.a._idleSpeed*t,this.processWorkEarnings(t),!!(n||this.timeWorked>=p.a.MillisecondsPer20Hours)&&(this.finishFactionWork(!1),!0)}function Bt(t,e=!1){const n=v.a[this.currentWorkFactionName];if(n.playerReputation+=this.workRepGained,this.updateSkillLevels(),e||Object(U.a)(V.a.createElement(V.a.Fragment,null,"You worked for your faction ",n.name," for a total of ",Object(q.b)(this.timeWorked)," ",V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement($.a,{reputation:this.workRepGained})," reputation for the faction ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null))),this.isWorking=!1,this.resetWorkStatus(),e){return"You worked for your faction "+n.name+" for a total of "+Object(q.b)(this.timeWorked)+". You earned "+W.a.formatReputation(this.workRepGained)+" rep, "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, and "+W.a.formatExp(this.workChaExpGained)+" cha exp."}return""}function Gt(){let t=1;const e=f.a[this.companyName];D.a[11]>0&&(t=1+e.favor/100);const n=this.jobs[this.companyName],a=h.a[n];return null==a?(console.error(`Could not find CompanyPosition object for ${n}. Work salary will be 0`),0):a.baseSalary*e.salaryMultiplier*this.work_money_mult*s.a.CompanyWorkMoney*t}function Wt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work hack exp gain will be 0"].join(" ")),0):n.hackingExpGain*t.expMultiplier*this.hacking_exp_mult*s.a.CompanyWorkExpGain}function Ht(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work str exp gain will be 0"].join(" ")),0):n.strengthExpGain*t.expMultiplier*this.strength_exp_mult*s.a.CompanyWorkExpGain}function Ut(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work def exp gain will be 0"].join(" ")),0):n.defenseExpGain*t.expMultiplier*this.defense_exp_mult*s.a.CompanyWorkExpGain}function qt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work dex exp gain will be 0"].join(" ")),0):n.dexterityExpGain*t.expMultiplier*this.dexterity_exp_mult*s.a.CompanyWorkExpGain}function $t(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work agi exp gain will be 0"].join(" ")),0):n.agilityExpGain*t.expMultiplier*this.agility_exp_mult*s.a.CompanyWorkExpGain}function Kt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];return null==t||null==n?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work cha exp gain will be 0"].join(" ")),0):n.charismaExpGain*t.expMultiplier*this.charisma_exp_mult*s.a.CompanyWorkExpGain}function zt(){const t=f.a[this.companyName],e=this.jobs[this.companyName],n=h.a[e];if(null==t||null==n)return console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${e}.`,"Work rep gain will be 0"].join(" ")),0;let a=n.calculateJobPerformance(this.hacking,this.strength,this.defense,this.dexterity,this.agility,this.charisma);a+=this.intelligence/p.a.MaxSkillLevel;let r=1+t.favor/100;return isNaN(r)&&(r=1),a*this.company_rep_mult*r}function Vt(t,e,n){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeCreateProgram,this.createProgramReqLvl=n,this.timeNeededToCompleteWork=e;for(let e=0;e=100)break;this.timeWorkedCreateProgram=a/100*this.timeNeededToCompleteWork,this.getHomeComputer().programs.splice(e,1)}}this.createProgramName=t}function Yt(t){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);const n=this.createProgramReqLvl;let a=this.hacking/n*this.getIntelligenceBonus(3);return a=1+(a-1)/5,a*=e,this.timeWorked+=p.a._idleSpeed*t,this.timeWorkedCreateProgram+=p.a._idleSpeed*t*a,this.timeWorkedCreateProgram>=this.timeNeededToCompleteWork&&(this.finishCreateProgramWork(!1),!0)}function Jt(t){const e=this.createProgramName;if(!1===t)Object(U.a)(`You've finished creating ${e}!
The new program can be found on your home computer.`),this.getHomeComputer().programs.push(e);else{const t=e+"-"+(Math.floor(this.timeWorkedCreateProgram/this.timeNeededToCompleteWork*1e4)/100).toString()+"%-INC";this.getHomeComputer().programs.push(t)}return t||this.gainIntelligenceExp(p.a.IntelligenceProgramBaseExpGain*this.timeWorked/1e3),this.isWorking=!1,this.resetWorkStatus(),"You've finished creating "+e+"! The new program can be found on your home computer."}function Xt(t,e){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeGraftAugmentation,this.timeNeededToCompleteWork=e,this.graftAugmentationName=t}function Qt(t){let e=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(e=this.focus?1:p.a.BaseFocusBonus);let n=1+(this.getIntelligenceBonus(3)-1)/3;return n*=e,this.timeWorked+=p.a._idleSpeed*t,this.timeWorkedGraftAugmentation+=p.a._idleSpeed*t*n,this.timeWorkedGraftAugmentation>=this.timeNeededToCompleteWork&&(this.finishGraftAugmentationWork(!1),!0)}function Zt(t){const e=this.graftAugmentationName;return!1===t?(Object(r.a)(a.a[e]),this.hasAugmentation(o.a.CongruityImplant)||(this.entropy+=1,this.applyEntropy(this.entropy)),Object(U.a)(`You've finished grafting ${e}.
The augmentation has been applied to your body`+(this.hasAugmentation(o.a.CongruityImplant)?".":", but you feel a bit off."))):Object(U.a)(`You cancelled the grafting of ${e}.
Your money was not returned to you.`),t||this.gainIntelligenceExp(p.a.IntelligenceGraftBaseExpGain*this.timeWorked/1e4),this.isWorking=!1,this.resetWorkStatus(),`Grafting of ${e} has ended.`}function te(t,e,n){this.resetWorkStatus(),this.isWorking=!0,this.workType=p.a.WorkTypeStudyClass,this.workCostMult=t,this.workExpMult=e,this.className=n;const a=Object(X.a)(this);this.workMoneyLossRate=a.workMoneyLossRate,this.workHackExpGainRate=a.workHackExpGainRate,this.workStrExpGainRate=a.workStrExpGainRate,this.workDefExpGainRate=a.workDefExpGainRate,this.workDexExpGainRate=a.workDexExpGainRate,this.workAgiExpGainRate=a.workAgiExpGainRate,this.workChaExpGainRate=a.workChaExpGainRate}function ee(t){this.timeWorked+=p.a._idleSpeed*t;const e=Object(X.a)(this);return this.workMoneyLossRate=e.workMoneyLossRate,this.workHackExpGainRate=e.workHackExpGainRate,this.workStrExpGainRate=e.workStrExpGainRate,this.workDefExpGainRate=e.workDefExpGainRate,this.workDexExpGainRate=e.workDexExpGainRate,this.workAgiExpGainRate=e.workAgiExpGainRate,this.workChaExpGainRate=e.workChaExpGainRate,this.processWorkEarnings(t),!1}function ne(t=!1){if(this.gainIntelligenceExp(p.a.IntelligenceClassBaseExpGain*Math.round(this.timeWorked/1e3)),this.workMoneyGained>0)throw new Error("ERR: Somehow gained money while taking class");if(this.updateSkillLevels(),t||Object(U.a)(V.a.createElement(V.a.Fragment,null,"After ",this.className," for ",Object(q.b)(this.timeWorked),", ",V.a.createElement("br",null),"you spent a total of ",V.a.createElement(K.a,{money:-this.workMoneyGained}),". ",V.a.createElement("br",null),V.a.createElement("br",null),"You earned a total of: ",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking exp ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength exp ",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense exp ",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity exp ",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility exp ",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma exp",V.a.createElement("br",null))),this.isWorking=!1,t){const t="After "+this.className+" for "+Object(q.b)(this.timeWorked)+", you spent a total of "+W.a.formatMoney(-1*this.workMoneyGained)+". You earned a total of: "+W.a.formatExp(this.workHackExpGained)+" hacking exp, "+W.a.formatExp(this.workStrExpGained)+" strength exp, "+W.a.formatExp(this.workDefExpGained)+" defense exp, "+W.a.formatExp(this.workDexExpGained)+" dexterity exp, "+W.a.formatExp(this.workAgiExpGained)+" agility exp, and "+W.a.formatExp(this.workChaExpGained)+" charisma exp";return this.resetWorkStatus(),t}return this.resetWorkStatus(),""}function ae(t,e,n,a,r,i,o,l,c,f,u=null){this.crimeType=e,this.resetWorkStatus(),this.isWorking=!0,this.focus=!0,this.workType=p.a.WorkTypeCrime,null!==u&&(this.committingCrimeThruSingFn=!0,this.singFnCrimeWorkerScript=u),this.workHackExpGained=n*this.hacking_exp_mult*s.a.CrimeExpGain,this.workStrExpGained=a*this.strength_exp_mult*s.a.CrimeExpGain,this.workDefExpGained=r*this.defense_exp_mult*s.a.CrimeExpGain,this.workDexExpGained=i*this.dexterity_exp_mult*s.a.CrimeExpGain,this.workAgiExpGained=o*this.agility_exp_mult*s.a.CrimeExpGain,this.workChaExpGained=l*this.charisma_exp_mult*s.a.CrimeExpGain,this.workMoneyGained=c*this.crime_money_mult*s.a.CrimeMoney,this.timeNeededToCompleteWork=f,t.toWork()}function re(t){return this.timeWorked+=p.a._idleSpeed*t,this.timeWorked>=this.timeNeededToCompleteWork&&(this.finishCrime(!1),!0)}function ie(t){if(!t){if(Object(y.a)(this,this.crimeType)){let t=null;for(const e of Object.keys(b.a))if(b.a[e].type==this.crimeType){t=b.a[e];break}if(null==t)return Object(U.a)(`ERR: Unrecognized crime type (${this.crimeType}). This is probably a bug please contact the developer`),"";this.gainMoney(this.workMoneyGained,"crime"),this.karma-=t.karma,this.numPeopleKilled+=t.kills,t.intelligence_exp>0&&this.gainIntelligenceExp(t.intelligence_exp),this.workHackExpGained*=2,this.workStrExpGained*=2,this.workDefExpGained*=2,this.workDexExpGained*=2,this.workAgiExpGained*=2,this.workChaExpGained*=2;const e=this.singFnCrimeWorkerScript;this.committingCrimeThruSingFn&&null!==e?null==e.disableLogs.ALL&&null==e.disableLogs.commitCrime&&e.scriptRef.log("SUCCESS: Crime successful! Gained "+W.a.formatMoney(this.workMoneyGained)+", "+W.a.formatExp(this.workHackExpGained)+" hack exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, "+W.a.formatExp(this.workChaExpGained)+" cha exp."):Object(U.a)(V.a.createElement(V.a.Fragment,null,"Crime successful!",V.a.createElement("br",null),V.a.createElement("br",null),"You gained:",V.a.createElement("br",null),V.a.createElement(K.a,{money:this.workMoneyGained}),V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking experience ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength experience",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense experience",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity experience",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility experience",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma experience"))}else{this.workHackExpGained/=2,this.workStrExpGained/=2,this.workDefExpGained/=2,this.workDexExpGained/=2,this.workAgiExpGained/=2,this.workChaExpGained/=2;const t=this.singFnCrimeWorkerScript;this.committingCrimeThruSingFn&&null!==t?null==t.disableLogs.ALL&&null==t.disableLogs.commitCrime&&t.scriptRef.log("FAIL: Crime failed! Gained "+W.a.formatExp(this.workHackExpGained)+" hack exp, "+W.a.formatExp(this.workStrExpGained)+" str exp, "+W.a.formatExp(this.workDefExpGained)+" def exp, "+W.a.formatExp(this.workDexExpGained)+" dex exp, "+W.a.formatExp(this.workAgiExpGained)+" agi exp, "+W.a.formatExp(this.workChaExpGained)+" cha exp."):Object(U.a)(V.a.createElement(V.a.Fragment,null,"Crime failed!",V.a.createElement("br",null),V.a.createElement("br",null),"You gained:",V.a.createElement("br",null),W.a.formatExp(this.workHackExpGained)," hacking experience ",V.a.createElement("br",null),W.a.formatExp(this.workStrExpGained)," strength experience",V.a.createElement("br",null),W.a.formatExp(this.workDefExpGained)," defense experience",V.a.createElement("br",null),W.a.formatExp(this.workDexExpGained)," dexterity experience",V.a.createElement("br",null),W.a.formatExp(this.workAgiExpGained)," agility experience",V.a.createElement("br",null),W.a.formatExp(this.workChaExpGained)," charisma experience"))}this.gainHackingExp(this.workHackExpGained),this.gainStrengthExp(this.workStrExpGained),this.gainDefenseExp(this.workDefExpGained),this.gainDexterityExp(this.workDexExpGained),this.gainAgilityExp(this.workAgiExpGained),this.gainCharismaExp(this.workChaExpGained)}return this.committingCrimeThruSingFn=!1,this.singFnCrimeWorkerScript=null,this.isWorking=!1,this.crimeType="",this.resetWorkStatus(),""}function oe(){if(!this.isWorking)return"";let t="";switch(this.workType){case p.a.WorkTypeStudyClass:t=this.finishClass(!0);break;case p.a.WorkTypeCompany:t=this.finishWork(!0,!0);break;case p.a.WorkTypeCompanyPartTime:t=this.finishWorkPartTime(!0);break;case p.a.WorkTypeFaction:t=this.finishFactionWork(!0,!0);break;case p.a.WorkTypeCreateProgram:t=this.finishCreateProgramWork(!0);break;case p.a.WorkTypeCrime:t=this.finishCrime(!0);break;default:return console.error(`Unrecognized work type (${this.workType})`),""}return t}function se(t){return"number"!=typeof t?(console.warn("Player.takeDamage() called without a numeric argument: "+t),!1):(this.hp-=t,this.hp<=0&&(this.hospitalize(),!0))}function le(t){"number"==typeof t?(this.hp+=t,this.hp>this.max_hp&&(this.hp=this.max_hp)):console.warn("Player.regenerateHp() called without a numeric argument: "+t)}function ce(){const t=Object(B.b)(this);return J.b.emit("You've been Hospitalized for "+W.a.formatMoney(t),"warning",2e3),this.loseMoney(t,"hospitalization"),this.hp=this.max_hp,t}function fe(t,e=!1){let n=null;""!==this.companyName&&(n=f.a[this.companyName]);const a=this.jobs[this.companyName],r=f.a[this.location];if(!(r instanceof c.a))return console.error(`Could not find company that matches the location: ${this.location}. Player.applyToCompany() failed`),!1;let i=t;if(!this.isQualified(r,i)){const t=Object(m.a)(r,i);return e||Object(U.a)("Unfortunately, you do not qualify for this position
"+t),!1}if(!r.hasPosition(i))return!1;for(;;){const t=Object(u.a)(i);if(null==t)break;if(!r.hasPosition(t))break;if(!this.isQualified(r,t))break;i=t}if(null!=n&&n.name==r.name&&i.name==a){const t=Object(u.a)(i);if(null==t)return e||Object(U.a)("You are already at the highest position for your field! No promotion available"),!1;if(r.hasPosition(t)){if(!e){const e=Object(m.a)(r,t);Object(U.a)("Unfortunately, you do not qualify for a promotion
"+e)}return!1}return e||Object(U.a)("You are already at the highest position for your field! No promotion available"),!1}return this.jobs[r.name]=i.name,!this.focus&&this.isWorking&&this.companyName!==this.location&&this.resetWorkStatus(),this.companyName=this.location,e||Object(U.a)("Congratulations! You were offered a new job at "+this.companyName+" as a "+i.name+"!"),!0}function ue(t,e){let n=null;if(""!==this.companyName&&(n=f.a[this.companyName]),null==n||n.name!=t.name)return e;const a=this.jobs[this.companyName];if(!a)return e;const r=h.a[a];return r.isSoftwareJob()&&e.isSoftwareJob()||r.isITJob()&&e.isITJob()||r.isBusinessJob()&&e.isBusinessJob()||r.isSecurityEngineerJob()&&e.isSecurityEngineerJob()||r.isNetworkEngineerJob()&&e.isNetworkEngineerJob()||r.isSecurityJob()&&e.isSecurityJob()||r.isAgentJob()&&e.isAgentJob()||r.isSoftwareConsultantJob()&&e.isSoftwareConsultantJob()||r.isBusinessConsultantJob()&&e.isBusinessConsultantJob()||r.isPartTimeJob()&&e.isPartTimeJob()?Object(u.a)(r):e}function me(t){1==this.isWorking&&this.workType.includes("Working for Company")&&this.companyName==t&&(this.isWorking=!1,this.companyName=""),this.companyName===t&&(this.companyName=""),delete this.jobs[t]}function he(){return Boolean(Object.keys(this.jobs).length)}function de(t=!1){return this.applyForJob(h.a[d.j[0]],t)}function pe(t=!1){return this.applyForJob(h.a[d.k[0]],t)}function ge(t=!1){return this.applyForJob(h.a[d.d[0]],t)}function ye(t=!1){const e=f.a[this.location];return this.isQualified(e,h.a[d.i[0]])?this.applyForJob(h.a[d.i[0]],t):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1)}function be(t=!1){const e=f.a[this.location];if(this.isQualified(e,h.a[d.f[0]])){const e=h.a[d.f[0]];return this.applyForJob(e,t)}return t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1}function Ee(t=!1){return this.applyForJob(h.a[d.b[0]],t)}function ve(t=!1){return this.applyForJob(h.a[d.c[0]],t)}function ke(t=!1){return this.applyForJob(h.a[d.h[2]],t)}function _e(t=!1){const e=f.a[this.location];if(this.isQualified(e,h.a[d.a[0]])){const e=h.a[d.a[0]];return this.applyForJob(e,t)}return t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1}function we(t=!1){const e=f.a[this.location],n=d.e[1];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Se(t=!1){const e=f.a[this.location],n=d.g[1];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed part-time at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Ce(t=!1){const e=f.a[this.location],n=d.e[0];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed as a waiter at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function xe(t=!1){const e=f.a[this.location],n=d.g[0];return!!e.hasPosition(n)&&(this.isQualified(e,h.a[n])?(this.jobs[e.name]=n,!this.focus&&this.isWorking&&this.companyName!==e.name&&this.resetWorkStatus(),this.companyName=e.name,t||Object(U.a)("Congratulations, you are now employed as a part-time waiter at "+this.location),!0):(t||Object(U.a)("Unfortunately, you do not qualify for this position"),!1))}function Le(t,e){const n=t.jobStatReqOffset,a=e.requiredHacking>0?e.requiredHacking+n:0,r=e.requiredStrength>0?e.requiredStrength+n:0,i=e.requiredDefense>0?e.requiredDefense+n:0,o=e.requiredDexterity>0?e.requiredDexterity+n:0,s=e.requiredDexterity>0?e.requiredDexterity+n:0,l=e.requiredCharisma>0?e.requiredCharisma+n:0;return this.hacking>=a&&this.strength>=r&&this.defense>=i&&this.dexterity>=o&&this.agility>=s&&this.charisma>=l&&t.playerReputation>=e.requiredReputation}function Oe(t=!0){t&&this.resetMultipliers();for(let t=0;te}const i=v.a[Z.a.Illuminati];!i.isBanned&&!i.isMember&&!i.alreadyInvited&&e>=30&&this.money>=15e10&&this.hacking>=1500&&this.strength>=1200&&this.defense>=1200&&this.dexterity>=1200&&this.agility>=1200&&t.push(i);const o=v.a[Z.a.Daedalus];!o.isBanned&&!o.isMember&&!o.alreadyInvited&&e>=Math.round(30*s.a.DaedalusAugsRequirement)&&this.money>=1e11&&(this.hacking>=2500||this.strength>=1500&&this.defense>=1500&&this.dexterity>=1500&&this.agility>=1500)&&t.push(o);const l=v.a[Z.a.TheCovenant];!l.isBanned&&!l.isMember&&!l.alreadyInvited&&e>=20&&this.money>=75e9&&this.hacking>=850&&this.strength>=850&&this.defense>=850&&this.dexterity>=850&&this.agility>=850&&t.push(l);const c=v.a[Z.a.ECorp];c.isBanned||c.isMember||c.alreadyInvited||!r(C.a.AevumECorp)||t.push(c);const u=v.a[Z.a.MegaCorp];u.isBanned||u.isMember||u.alreadyInvited||!r(C.a.Sector12MegaCorp)||t.push(u);const m=v.a[Z.a.BachmanAssociates];m.isBanned||m.isMember||m.alreadyInvited||!r(C.a.AevumBachmanAndAssociates)||t.push(m);const h=v.a[Z.a.BladeIndustries];h.isBanned||h.isMember||h.alreadyInvited||!r(C.a.Sector12BladeIndustries)||t.push(h);const d=v.a[Z.a.NWO];d.isBanned||d.isMember||d.alreadyInvited||!r(C.a.VolhavenNWO)||t.push(d);const g=v.a[Z.a.ClarkeIncorporated];g.isBanned||g.isMember||g.alreadyInvited||!r(C.a.AevumClarkeIncorporated)||t.push(g);const y=v.a[Z.a.OmniTekIncorporated];y.isBanned||y.isMember||y.alreadyInvited||!r(C.a.VolhavenOmniTekIncorporated)||t.push(y);const b=v.a[Z.a.FourSigma];b.isBanned||b.isMember||b.alreadyInvited||!r(C.a.Sector12FourSigma)||t.push(b);const E=v.a[Z.a.KuaiGongInternational];E.isBanned||E.isMember||E.alreadyInvited||!r(C.a.ChongqingKuaiGongInternational)||t.push(E);const k=v.a[Z.a.FulcrumSecretTechnologies],_=Object(T.d)(N.a.FulcrumSecretTechnologies);if(!(_ instanceof A.a))throw new Error(Z.a.FulcrumSecretTechnologies+" should be normal server");null==_?console.error(`Could not find ${Z.a.FulcrumSecretTechnologies} Server`):k.isBanned||k.isMember||k.alreadyInvited||!_.backdoorInstalled||!r(C.a.AevumFulcrumTechnologies,25e4)||t.push(k);const w=v.a[Z.a.BitRunners],x=Object(T.d)(N.a.BitRunnersServer);if(!(x instanceof A.a))throw new Error(Z.a.BitRunners+" should be normal server");null==x?console.error(`Could not find ${Z.a.BitRunners} Server`):w.isBanned||w.isMember||!x.backdoorInstalled||w.alreadyInvited||t.push(w);const L=v.a[Z.a.TheBlackHand],O=Object(T.d)(N.a.TheBlackHandServer);if(!(O instanceof A.a))throw new Error(Z.a.TheBlackHand+" should be normal server");null==O?console.error(`Could not find ${Z.a.TheBlackHand} Server`):L.isBanned||L.isMember||!O.backdoorInstalled||L.alreadyInvited||t.push(L);const M=v.a[Z.a.NiteSec],R=Object(T.d)(N.a.NiteSecServer);if(!(R instanceof A.a))throw new Error(Z.a.NiteSec+" should be normal server");null==R?console.error(`Could not find ${Z.a.NiteSec} Server`):M.isBanned||M.isMember||!R.backdoorInstalled||M.alreadyInvited||t.push(M);const P=v.a[Z.a.Chongqing];!P.isBanned&&!P.isMember&&!P.alreadyInvited&&this.money>=2e7&&this.city==S.a.Chongqing&&t.push(P);const I=v.a[Z.a.Sector12];!I.isBanned&&!I.isMember&&!I.alreadyInvited&&this.money>=15e6&&this.city==S.a.Sector12&&t.push(I);const F=v.a[Z.a.NewTokyo];!F.isBanned&&!F.isMember&&!F.alreadyInvited&&this.money>=2e7&&this.city==S.a.NewTokyo&&t.push(F);const D=v.a[Z.a.Aevum];!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=4e7&&this.city==S.a.Aevum&&t.push(D);const j=v.a[Z.a.Ishima];!j.isBanned&&!j.isMember&&!j.alreadyInvited&&this.money>=3e7&&this.city==S.a.Ishima&&t.push(j);const B=v.a[Z.a.Volhaven];!B.isBanned&&!B.isMember&&!B.alreadyInvited&&this.money>=5e7&&this.city==S.a.Volhaven&&t.push(B);const W=v.a[Z.a.SpeakersForTheDead];!W.isBanned&&!W.isMember&&!W.alreadyInvited&&this.hacking>=100&&this.strength>=300&&this.defense>=300&&this.dexterity>=300&&this.agility>=300&&this.numPeopleKilled>=30&&this.karma<=-45&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(W);const H=v.a[Z.a.TheDarkArmy];!H.isBanned&&!H.isMember&&!H.alreadyInvited&&this.hacking>=300&&this.strength>=300&&this.defense>=300&&this.dexterity>=300&&this.agility>=300&&this.city==S.a.Chongqing&&this.numPeopleKilled>=5&&this.karma<=-45&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(H);const U=v.a[Z.a.TheSyndicate];!U.isBanned&&!U.isMember&&!U.alreadyInvited&&this.hacking>=200&&this.strength>=200&&this.defense>=200&&this.dexterity>=200&&this.agility>=200&&(this.city==S.a.Aevum||this.city==S.a.Sector12)&&this.money>=1e7&&this.karma<=-90&&!n.includes(C.a.Sector12CIA)&&!n.includes(C.a.Sector12NSA)&&t.push(U);const q=v.a[Z.a.Silhouette];!q.isBanned&&!q.isMember&&!q.alreadyInvited&&(a.includes("Chief Technology Officer")||a.includes("Chief Financial Officer")||a.includes("Chief Executive Officer"))&&this.money>=15e6&&this.karma<=-22&&t.push(q);const $=v.a[Z.a.Tetrads];!$.isBanned&&!$.isMember&&!$.alreadyInvited&&(this.city==S.a.Chongqing||this.city==S.a.NewTokyo||this.city==S.a.Ishima)&&this.strength>=75&&this.defense>=75&&this.dexterity>=75&&this.agility>=75&&this.karma<=-18&&t.push($);const K=v.a[Z.a.SlumSnakes];!K.isBanned&&!K.isMember&&!K.alreadyInvited&&this.strength>=30&&this.defense>=30&&this.dexterity>=30&&this.agility>=30&&this.karma<=-9&&this.money>=1e6&&t.push(K);const z=v.a[Z.a.Netburners];let V=0,Y=0,J=0;for(let t=0;t=80&&V>=8&&Y>=4&&J>=100&&t.push(z);const X=v.a[Z.a.TianDiHui];!X.isBanned&&!X.isMember&&!X.alreadyInvited&&this.money>=1e6&&this.hacking>=50&&(this.city==S.a.Chongqing||this.city==S.a.NewTokyo||this.city==S.a.Ishima)&&t.push(X);const Q=v.a[Z.a.CyberSec],tt=Object(T.d)(N.a.CyberSecServer);if(!(tt instanceof A.a))throw new Error(Z.a.CyberSec+" should be normal server");return null==tt?console.error(`Could not find ${Z.a.CyberSec} Server`):Q.isBanned||Q.isMember||!tt.backdoorInstalled||Q.alreadyInvited||t.push(Q),t}function Ae(t){this.bitNodeN=t}function Re(t){for(const e of this.queuedAugmentations)if(e.name==t)return void console.warn(`tried to queue ${t} twice, this may be a bug`);for(const e of this.augmentations)if(e.name==t)return void console.warn(`tried to queue ${t} twice, this may be a bug`);this.queuedAugmentations.push(new i.a(t))}function Ne(t,e=1){if(null==t||null==t.type)return"No reward for this contract";switch(t.type){case l.c.FactionReputation:if(null==t.name||!(v.a[t.name]instanceof E.a))return t.type=l.c.FactionReputationAll,this.gainCodingContractReward(t);const n=p.a.CodingContractBaseFactionRepGain*e;return v.a[t.name].playerReputation+=n,`Gained ${n} faction reputation for ${t.name}`;case l.c.FactionReputationAll:const a=p.a.CodingContractBaseFactionRepGain*e,r=[Z.a.Bladeburners],i=this.factions.slice().filter(t=>!r.includes(t));if(0==i.length)return t.type=l.c.Money,this.gainCodingContractReward(t,e);const o=Math.floor(a/i.length);for(const t of i)v.a[t]instanceof E.a&&(v.a[t].playerReputation+=o);return`Gained ${o} reputation for each of the following factions: ${i.toString()}`;case l.c.CompanyReputation:{if(null==t.name||!(f.a[t.name]instanceof c.a))return t.type=l.c.FactionReputationAll,this.gainCodingContractReward(t);const n=p.a.CodingContractBaseCompanyRepGain*e;return f.a[t.name].playerReputation+=n,`Gained ${n} company reputation for ${t.name}`}case l.c.Money:default:{const t=p.a.CodingContractBaseMoneyGain*e*s.a.CodingContractMoney;return this.gainMoney(t,"codingcontract"),"Gained "+W.a.formatMoney(t)}}}function Pe(t){return null==_.a[t]?(console.warn("Player.travel() called with invalid city: "+t),!1):(this.city=t,!0)}function Ie(t){return null==w.a[t]?(console.warn("Player.gotoLocation() called with invalid location: "+t),!1):(this.location=t,!0)}function Fe(){return 10===this.bitNodeN||D.a[10]>0}function De(t){this.exploits.includes(t)||(this.exploits.push(t),J.b.emit("SF -1 acquired!","success",2e3))}function je(t){const e=Q.a[t];e&&(this.achievements.map(t=>t.ID).includes(t)||(this.achievements.push({ID:t,unlockedOn:(new Date).getTime()}),J.b.emit(`Unlocked Achievement: "${e.Name}"`,"success",2e3)))}function Be(t){return Object(O.a)(this.intelligence,t)}function Ge(){return this.moneySourceA.casino}function We(t){return this.hasOwnProperty(t)?this[t]:1}function He(t,e){this.hasOwnProperty(t)&&(this[t]=e)}function Ue(){return 13===this.bitNodeN||D.a[13]>0}function qe(t){const e=this.sourceFiles.find(e=>e.n===t);return e?e.lvl:0}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(563),r=n(7),i=n(998),o=n(336),s=n(24);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class c extends a.a{constructor(t={hostname:"",ip:Object(o.a)()}){super(t),l(this,"backdoorInstalled",!1),l(this,"baseDifficulty",1),l(this,"hackDifficulty",1),l(this,"minDifficulty",1),l(this,"moneyAvailable",0),l(this,"moneyMax",0),l(this,"numOpenPortsRequired",5),l(this,"openPortCount",0),l(this,"requiredHackingSkill",1),l(this,"serverGrowth",1),this.hostname.startsWith("hacknet-node-")&&(this.hostname=Object(i.a)(10)),this.purchasedByPlayer=null!=t.purchasedByPlayer&&t.purchasedByPlayer,this.maxRam=null!=t.maxRam?t.maxRam:0,this.requiredHackingSkill=null!=t.requiredHackingSkill?t.requiredHackingSkill:1,this.moneyAvailable=null!=t.moneyAvailable?t.moneyAvailable*r.a.ServerStartingMoney:0,this.moneyMax=25*this.moneyAvailable*r.a.ServerMaxMoney,this.hackDifficulty=null!=t.hackDifficulty?t.hackDifficulty*r.a.ServerStartingSecurity:1,this.baseDifficulty=this.hackDifficulty,this.minDifficulty=Math.max(1,Math.round(this.hackDifficulty/3)),this.serverGrowth=null!=t.serverGrowth?t.serverGrowth:1,this.numOpenPortsRequired=null!=t.numOpenPortsRequired?t.numOpenPortsRequired:5}capDifficulty(){this.hackDifficulty100&&(this.hackDifficulty=100)}changeMinimumSecurity(t,e=!1){e?this.minDifficulty*=t:this.minDifficulty+=t,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(t){if(this.moneyMax>1e13){const e=this.moneyMax-1e13;t=1+(t-1)/Math.log(e)/Math.log(8)}this.moneyMax*=t}fortify(t){this.hackDifficulty+=t,this.capDifficulty()}weaken(t){this.hackDifficulty-=t*r.a.ServerWeakenRate,this.capDifficulty()}toJSON(){return Object(s.b)("Server",this)}static fromJSON(t){return Object(s.a)(c,t.data)}}s.c.constructors.Server=c},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s}));var a=n(0),r=n.n(a);const i={Corporation:r.a.createContext({}),Division:r.a.createContext({})},o=()=>Object(a.useContext)(i.Corporation),s=()=>Object(a.useContext)(i.Division)},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"b",(function(){return c})),n.d(e,"c",(function(){return f})),n.d(e,"e",(function(){return u}));var a=n(0),r=n.n(a),i=n(131),o=n(145);const s={Energy:"Energy",Utilities:"Water Utilities",Agriculture:"Agriculture",Fishing:"Fishing",Mining:"Mining",Food:"Food",Tobacco:"Tobacco",Chemical:"Chemical",Pharmaceutical:"Pharmaceutical",Computer:"Computer Hardware",Robotics:"Robotics",Software:"Software",Healthcare:"Healthcare",RealEstate:"RealEstate"},l={Energy:225e9,Utilities:15e10,Agriculture:4e10,Fishing:8e10,Mining:3e11,Food:1e10,Tobacco:2e10,Chemical:7e10,Pharmaceutical:2e11,Computer:5e11,Robotics:1e12,Software:25e9,Healthcare:75e10,RealEstate:6e11},c={Energy:t=>r.a.createElement(r.a.Fragment,null,"Engage in the production and distribution of energy.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Energy,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Utilities:t=>r.a.createElement(r.a.Fragment,null,"Distribute water and provide wastewater services.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Utilities,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Agriculture:t=>r.a.createElement(r.a.Fragment,null,"Cultivate crops and breed livestock to produce food.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Agriculture,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Fishing:t=>r.a.createElement(r.a.Fragment,null,"Produce food through the breeding and processing of fish and fish products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Fishing,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Mining:t=>r.a.createElement(r.a.Fragment,null,"Extract and process metals from the earth.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Mining,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Food:t=>r.a.createElement(r.a.Fragment,null,"Create your own restaurants all around the world.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Food,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Tobacco:t=>r.a.createElement(r.a.Fragment,null,"Create and distribute tobacco and tobacco-related products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Tobacco,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Chemical:t=>r.a.createElement(r.a.Fragment,null,"Produce industrial chemicals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Chemical,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Pharmaceutical:t=>r.a.createElement(r.a.Fragment,null,"Discover, develop, and create new pharmaceutical drugs.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Pharmaceutical,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Computer:t=>r.a.createElement(r.a.Fragment,null,"Develop and manufacture new computer hardware and networking infrastructures.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Computer,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Robotics:t=>r.a.createElement(r.a.Fragment,null,"Develop and create robots.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Robotics,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Software:t=>r.a.createElement(r.a.Fragment,null,"Develop computer software and create AI Cores.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Software,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Healthcare:t=>r.a.createElement(r.a.Fragment,null,"Create and manage hospitals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Healthcare,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO"),RealEstate:t=>r.a.createElement(r.a.Fragment,null,"Develop and manage real estate properties.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.RealEstate,corp:t}),r.a.createElement("br",null),"Recommended starting Industry: NO")},f={Energy:Object(i.a)(),Utilities:Object(i.a)(),Agriculture:Object(i.a)(),Fishing:Object(i.a)(),Mining:Object(i.a)(),Food:Object(i.b)(),Tobacco:Object(i.b)(),Chemical:Object(i.a)(),Pharmaceutical:Object(i.b)(),Computer:Object(i.b)(),Robotics:Object(i.b)(),Software:Object(i.b)(),Healthcare:Object(i.b)(),RealEstate:Object(i.b)()};function u(){f.Energy=Object(i.a)(),f.Utilities=Object(i.a)(),f.Agriculture=Object(i.a)(),f.Fishing=Object(i.a)(),f.Mining=Object(i.a)(),f.Food=Object(i.b)(),f.Tobacco=Object(i.b)(),f.Chemical=Object(i.a)(),f.Pharmaceutical=Object(i.b)(),f.Computer=Object(i.b)(),f.Robotics=Object(i.b)(),f.Software=Object(i.b)(),f.Healthcare=Object(i.b)(),f.RealEstate=Object(i.b)()}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.Company=0]="Company",t[t.Gym=1]="Gym",t[t.Hospital=2]="Hospital",t[t.Slums=3]="Slums",t[t.Special=4]="Special",t[t.StockMarket=5]="StockMarket",t[t.TechVendor=6]="TechVendor",t[t.TravelAgency=7]="TravelAgency",t[t.University=8]="University",t[t.Casino=9]="Casino"}(a||(a={}))},,,function(t,e,n){"use strict";n.d(e,"g",(function(){return p})),n.d(e,"l",(function(){return g})),n.d(e,"h",(function(){return y})),n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return E})),n.d(e,"e",(function(){return v})),n.d(e,"f",(function(){return k})),n.d(e,"d",(function(){return _})),n.d(e,"c",(function(){return w})),n.d(e,"n",(function(){return S})),n.d(e,"o",(function(){return C})),n.d(e,"k",(function(){return x})),n.d(e,"j",(function(){return L})),n.d(e,"i",(function(){return O})),n.d(e,"p",(function(){return T})),n.d(e,"m",(function(){return A}));var a=n(219),r=n(206),i=n(183),o=n(39),s=n(92),l=n(368),c=n(239),f=n(369),u=n(43),m=n(25),h=n(46),d=n(79);function p(t){return 9===t.bitNodeN||d.a[9]>0}function g(t){if(u.a.isRunning){if(u.a.currStep!==u.f.HacknetNodesIntroduction)return-1;Object(u.c)()}const e=t.hacknetNodes.length;if(p(t)){const n=E(t);if(isNaN(n))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return!t.canAfford(n)||e>=o.b.MaxServers?-1:(t.loseMoney(n,"hacknet_expenses"),t.createHacknetServer(),T(t),e)}{const n=b(t);if(isNaN(n))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!t.canAfford(n))return-1;const r="hacknet-node-"+e,i=new a.a(r,t.hacknet_node_money_mult);return t.loseMoney(n,"hacknet_expenses"),t.hacknetNodes.push(i),e}}function y(t){return p(t)&&t.hacknetNodes.length>=o.b.MaxServers}function b(t){return Object(r.d)(t.hacknetNodes.length+1,t.hacknet_node_purchase_cost_mult)}function E(t){return Object(i.f)(t.hacknetNodes.length+1,t.hacknet_node_purchase_cost_mult)}function v(t,e,n){if(null==n)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(t.moneye.calculateLevelUpgradeCost(i,t.hacknet_node_level_cost_mult))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!==n&&t.money>e.calculateLevelUpgradeCost(o,t.hacknet_node_level_cost_mult)&&t.moneye.calculateLevelUpgradeCost(o,t.hacknet_node_level_cost_mult)))return Math.min(i,o);a=o+1}}return 0}function k(t,e,n){if(null==n)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(t.moneye.calculateRamUpgradeCost(a,t.hacknet_node_ram_cost_mult))return a;for(let n=a-1;n>=0;--n)if(t.money>e.calculateRamUpgradeCost(n,t.hacknet_node_ram_cost_mult))return n;return 0}function _(t,e,n){if(null==n)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(t.moneye.calculateCoreUpgradeCost(i,t.hacknet_node_core_cost_mult))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!=n&&t.money>e.calculateCoreUpgradeCost(o,t.hacknet_node_core_cost_mult)&&t.moneye.calculateCoreUpgradeCost(o,t.hacknet_node_core_cost_mult)))return Math.min(i,o);a=o+1}}return 0}function w(t,e,n){if(null==n)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!t.canAfford(e.calculateCacheUpgradeCost(1)))return 0;let a=1,r=n-1;const i=n-e.cache;if(t.canAfford(e.calculateCacheUpgradeCost(i)))return i;for(;a<=r;){const o=(a+r)/2|0;if(o!=n&&t.canAfford(e.calculateCacheUpgradeCost(o))&&!t.canAfford(e.calculateCacheUpgradeCost(o+1)))return Math.min(i,o);if(t.canAfford(e.calculateCacheUpgradeCost(o))){if(!t.canAfford(e.calculateCacheUpgradeCost(o)))return Math.min(i,o);a=o+1}else r=o-1}return 0}function S(t,e,n=1){const a=Math.round(n),r=e.calculateLevelUpgradeCost(a,t.hacknet_node_level_cost_mult);if(isNaN(r)||r<=0||a<0)return!1;const i=e instanceof s.a;if(e.level>=(i?o.b.MaxLevel:o.a.MaxLevel))return!1;if(e.level+a>(i?o.b.MaxLevel:o.a.MaxLevel)){return S(t,e,Math.max(0,(i?o.b.MaxLevel:o.a.MaxLevel)-e.level))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeLevel(a,t.hacknet_node_money_mult),!0)}function C(t,e,n=1){const r=Math.round(n),i=e.calculateRamUpgradeCost(r,t.hacknet_node_ram_cost_mult);if(isNaN(i)||i<=0||r<0)return!1;if(e instanceof s.a&&e.maxRam>=o.b.MaxRam)return!1;if(e instanceof a.a&&e.ram>=o.a.MaxRam)return!1;if(e instanceof s.a){if(e.maxRam*Math.pow(2,r)>o.b.MaxRam){return C(t,e,Math.max(0,Math.log2(Math.round(o.b.MaxRam/e.maxRam))))}}else if(e instanceof a.a&&e.ram*Math.pow(2,r)>o.a.MaxRam){return C(t,e,Math.max(0,Math.log2(Math.round(o.a.MaxRam/e.ram))))}return!!t.canAfford(i)&&(t.loseMoney(i,"hacknet_expenses"),e.upgradeRam(r,t.hacknet_node_money_mult),!0)}function x(t,e,n=1){const a=Math.round(n),r=e.calculateCoreUpgradeCost(a,t.hacknet_node_core_cost_mult);if(isNaN(r)||r<=0||a<0)return!1;const i=e instanceof s.a;if(e.cores>=(i?o.b.MaxCores:o.a.MaxCores))return!1;if(e.cores+a>(i?o.b.MaxCores:o.a.MaxCores)){return x(t,e,Math.max(0,(i?o.b.MaxCores:o.a.MaxCores)-e.cores))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeCore(a,t.hacknet_node_money_mult),!0)}function L(t,e,n=1){const a=Math.round(n),r=e.calculateCacheUpgradeCost(a);if(isNaN(r)||r<=0||a<0)return!1;if(!(e instanceof s.a))return console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1;if(e.cache+a>o.b.MaxCache){return L(t,e,Math.max(0,o.b.MaxCache-e.cache))}return!!t.canAfford(r)&&(t.loseMoney(r,"hacknet_expenses"),e.upgradeCache(a),!0)}function O(t,e){return 0===t.hacknetNodes.length?0:p(t)?function(t,e){if(!(t.hashManager instanceof l.a))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let n=0;for(let r=0;r0){const e=c.a["Sell for Money"];if(null===e)throw new Error("Could not get the hash upgrade");if(!e.cost)throw new Error("Upgrade is not properly configured");const n=Math.floor(r/e.cost);n>0&&t.gainMoney(e.value*n,"hacknet")}return n}(t,e):t.hacknetNodes[0]instanceof a.a?function(t,e){let n=0;for(let a=0;ar.a.createElement(i.a,l({},t,{classes:{root:c().root,...t.classes}})),u=t=>r.a.createElement(o.a,l({},t,{classes:{root:c().small,...t.classes}}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(16);const r={CityNames:[a.a.Aevum,a.a.Chongqing,a.a.Sector12,a.a.NewTokyo,a.a.Ishima,a.a.Volhaven],CyclesPerSecond:5,StaminaGainPerSecond:.0085,BaseStaminaLoss:.285,MaxStaminaToGainFactor:7e4,DifficultyToTimeFactor:10,DiffMultExponentialFactor:.28,DiffMultLinearFactor:650,EffAgiLinearFactor:1e4,EffDexLinearFactor:1e4,EffAgiExponentialFactor:.04,EffDexExponentialFactor:.035,BaseRecruitmentTimeNeeded:300,PopulationThreshold:1e9,PopulationExponent:.7,ChaosThreshold:50,BaseStatGain:1,BaseIntGain:.003,ActionCountGrowthPeriod:480,RankToFactionRepFactor:2,RankNeededForFaction:25,ContractSuccessesPerLevel:3,OperationSuccessesPerLevel:2.5,RanksPerSkillPoint:3,ContractBaseMoneyGain:25e4,HrcHpGain:2,HrcStaminaGain:1}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={HackersStartingHandbook:"hackers-starting-handbook.lit",CorporationManagementHandbook:"corporation-management-handbook.lit",HistoryOfSynthoids:"history-of-synthoids.lit",AGreenTomorrow:"A-Green-Tomorrow.lit",AlphaOmega:"alpha-omega.lit",SimulatedReality:"simulated-reality.lit",BeyondMan:"beyond-man.lit",BrighterThanTheSun:"brighter-than-the-sun.lit",DemocracyIsDead:"democracy-is-dead.lit",Sector12Crime:"sector-12-crime.lit",ManAndMachine:"man-and-machine.lit",SecretSocieties:"secret-societies.lit",TheFailedFrontier:"the-failed-frontier.lit",CodedIntelligence:"coded-intelligence.lit",SyntheticMuscles:"synthetic-muscles.lit",TensionsInTechRace:"tensions-in-tech-race.lit",CostOfImmortality:"cost-of-immortality.lit",TheHiddenWorld:"the-hidden-world.lit",TheNewGod:"the-new-god.lit",NewTriads:"new-triads.lit",TheSecretWar:"the-secret-war.lit"}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(999),r=n(1e3);const i={};for(const t of r.a)i[t.key]=new a.a(t.name,t.create,t.run)},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l}));var a=n(1011),r=n(234),i=n(24);let o={};function s(){const t=o;o={},a.a.forEach(t=>{var e;null!=o[(e=t).name]&&console.warn("Duplicate Company Position being defined: "+e.name),o[e.name]=new r.a(e)});for(const e of Object.keys(o)){const n=o[e];t[e]instanceof r.a?(n.favor=t[e].favor,isNaN(n.favor)&&(n.favor=0)):n.favor=0}}function l(t){o=JSON.parse(t,i.c)}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"n",(function(){return NewIndustry})),__webpack_require__.d(__webpack_exports__,"m",(function(){return NewCity})),__webpack_require__.d(__webpack_exports__,"A",(function(){return UnlockUpgrade})),__webpack_require__.d(__webpack_exports__,"j",(function(){return LevelUpgrade})),__webpack_require__.d(__webpack_exports__,"i",(function(){return IssueDividends})),__webpack_require__.d(__webpack_exports__,"q",(function(){return SellMaterial})),__webpack_require__.d(__webpack_exports__,"r",(function(){return SellProduct})),__webpack_require__.d(__webpack_exports__,"x",(function(){return SetSmartSupply})),__webpack_require__.d(__webpack_exports__,"y",(function(){return SetSmartSupplyUseLeftovers})),__webpack_require__.d(__webpack_exports__,"e",(function(){return BuyMaterial})),__webpack_require__.d(__webpack_exports__,"b",(function(){return BulkPurchase})),__webpack_require__.d(__webpack_exports__,"s",(function(){return SellShares})),__webpack_require__.d(__webpack_exports__,"c",(function(){return BuyBackShares})),__webpack_require__.d(__webpack_exports__,"a",(function(){return AssignJob})),__webpack_require__.d(__webpack_exports__,"B",(function(){return UpgradeOfficeSize})),__webpack_require__.d(__webpack_exports__,"z",(function(){return ThrowParty})),__webpack_require__.d(__webpack_exports__,"o",(function(){return PurchaseWarehouse})),__webpack_require__.d(__webpack_exports__,"C",(function(){return UpgradeWarehouse})),__webpack_require__.d(__webpack_exports__,"d",(function(){return BuyCoffee})),__webpack_require__.d(__webpack_exports__,"h",(function(){return HireAdVert})),__webpack_require__.d(__webpack_exports__,"l",(function(){return MakeProduct})),__webpack_require__.d(__webpack_exports__,"p",(function(){return Research})),__webpack_require__.d(__webpack_exports__,"g",(function(){return ExportMaterial})),__webpack_require__.d(__webpack_exports__,"f",(function(){return CancelExportMaterial})),__webpack_require__.d(__webpack_exports__,"k",(function(){return LimitProductProduction})),__webpack_require__.d(__webpack_exports__,"t",(function(){return SetMaterialMarketTA1})),__webpack_require__.d(__webpack_exports__,"u",(function(){return SetMaterialMarketTA2})),__webpack_require__.d(__webpack_exports__,"v",(function(){return SetProductMarketTA1})),__webpack_require__.d(__webpack_exports__,"w",(function(){return SetProductMarketTA2}));var _MaterialSizes__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(175),_IndustryData__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(50),_Industry__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(1032),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(38),_OfficeSpace__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(372),_Product__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(396),_Warehouse__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(237),_Locations_Cities__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(149),_EmployeePositions__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(44),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(318),_ResearchMap__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(282),_ui_Helpers__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(397);function NewIndustry(t,e,n){if(t.divisions.find(({type:t})=>e==t))throw new Error(`You have already expanded into the ${e} industry!`);for(let e=0;e_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.DividendMaxPercentage)throw new Error("Invalid value. Must be an integer between 0 and "+_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.DividendMaxPercentage);t.dividendPercentage=100*e}function SellMaterial(mat,amt,price){""===price&&(price="0"),""===amt&&(amt="0");let cost=price.replace(/\s+/g,"");cost=cost.replace(/[^-()\d/*+.MPe]/g,"");let temp=cost.replace(/MP/g,mat.bCost+"");try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell price field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell price field");if(cost.includes("MP")?mat.sCost=cost:mat.sCost=temp,amt=amt.toUpperCase(),amt.includes("MAX")||amt.includes("PROD")){let q=amt.replace(/\s+/g,"");q=q.replace(/[^-()\d/*+.MAXPROD]/g,"");let tempQty=q.replace(/MAX/g,mat.maxsll.toString());tempQty=tempQty.replace(/PROD/g,mat.prd.toString());try{tempQty=eval(tempQty)}catch(t){throw new Error("Invalid value or expression for sell quantity field: "+t)}if(null==tempQty||isNaN(parseFloat(tempQty))||parseFloat(tempQty)<0)throw new Error("Invalid value or expression for sell quantity field");mat.sllman[0]=!0,mat.sllman[1]=q}else{if(isNaN(parseFloat(amt))||parseFloat(amt)<0)throw new Error("Invalid value for sell quantity field! Must be numeric or 'PROD' or 'MAX'");{let t=parseFloat(amt);isNaN(t)&&(t=0),0===t?(mat.sllman[0]=!1,mat.sllman[1]=0):(mat.sllman[0]=!0,mat.sllman[1]=t)}}}function SellProduct(product,city,amt,price,all){if(price.includes("MP")){price=price.replace(/\s+/g,""),price=price.replace(/[^-()\d/*+.MP]/g,"");let temp=price.replace(/MP/g,"1");try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell price field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell price field.");product.sCost=price}else{const t=parseFloat(price);if(isNaN(t))throw new Error("Invalid value for sell price field");product.sCost=t}const cities=Object.keys(_Locations_Cities__WEBPACK_IMPORTED_MODULE_7__.a);if(amt=amt.toUpperCase(),amt.includes("MAX")||amt.includes("PROD")){let qty=amt.replace(/\s+/g,"");qty=qty.replace(/[^-()\d/*+.MAXPROD]/g,"");let temp=qty.replace(/MAX/g,product.maxsll.toString());temp=temp.replace(/PROD/g,product.data[city][1].toString());try{temp=eval(temp)}catch(t){throw new Error("Invalid value or expression for sell quantity field: "+t)}if(null==temp||isNaN(parseFloat(temp))||parseFloat(temp)<0)throw new Error("Invalid value or expression for sell quantity field");if(all)for(let t=0;ti)throw new Error("You do not have enough warehouse size to fit this purchase");const o=a*n.bCost;if(!(t.funds>=o))throw new Error("You cannot afford this purchase.");t.funds=t.funds-o,n.qty+=a}function SellShares(t,e,n){if(isNaN(n))throw new Error("Invalid value for number of shares");if(n<0)throw new Error("Invalid value for number of shares");if(n>t.numShares)throw new Error("You don't have that many shares to sell!");if(!t.public)throw new Error("You haven't gone public!");if(t.shareSaleCooldown)throw new Error("Share sale on cooldown!");const a=t.calculateShareSale(n),r=a[0],i=a[1],o=a[2];return t.numShares-=n,t.issuedShares+=n,t.sharePrice=i,t.shareSalesUntilPriceUpdate=o,t.shareSaleCooldown=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SellSharesCooldown,e.gainMoney(r,"corporation"),r}function BuyBackShares(t,e,n){if(isNaN(n))throw new Error("Invalid value for number of shares");if(n<0)throw new Error("Invalid value for number of shares");if(n>t.issuedShares)throw new Error("You don't have that many shares to buy!");if(!t.public)throw new Error("You haven't gone public!");const a=1.1*t.sharePrice;if(e.money=o)throw new Error(`You are already at the max products (${o}) for division: ${e.name}!`);const l=new _Product__WEBPACK_IMPORTED_MODULE_5__.a({name:a.replace(/[<>]/g,""),createCity:n,designCost:r,advCost:i});if(s[l.name]instanceof _Product__WEBPACK_IMPORTED_MODULE_5__.a)throw new Error("You already have a product with this name!");t.funds=t.funds-(r+i),s[l.name]=l}function Research(t,e){const n=_IndustryData__WEBPACK_IMPORTED_MODULE_1__.c[t.type];if(void 0===n)throw new Error(`No research tree for industry '${t.type}'`);if(!n.getAllNodes().includes(e))throw new Error(`No research named '${e}'`);const a=_ResearchMap__WEBPACK_IMPORTED_MODULE_10__.a[e];if(t.sciResearch.qty{var e;null!=i[(e=t).name]&&console.warn("Duplicate Company Position being defined: "+e.name),i[e.name]=new r.a(e)})},function(t,e,n){"use strict";n.d(e,"b",(function(){return xt})),n.d(e,"a",(function(){return Lt}));var a=n(0),r=n.n(a),i=n(134),o=n(110),s=n(341),l=n(11),c=n(216),f=n(43),u=n(1050),m=n(370),h=n(450),d=n(15),p=n(25),g=n(28),y=n(242),b=n(101),E=n(115),v=n(139),k=n(21),_=n(1),w=n(26),S=n(1053),C=n(1057),x=n(1080),L=n(1085),O=n(1111),M=n(1142),T=n(1161),A=n(1196),R=n(589),N=n(1209),P=n(1210),I=n(1254),F=n(1262),D=n(1271),j=n(1296),B=n(399),G=n(621),W=n(1322),H=n(1323),U=n(1329),q=n(1330),$=n(400),K=n(1341),z=n(1351),V=n(620),Y=n(1352),J=n(1361),X=n(1364),Q=n(121),Z=n(296),tt=n(1369),et=n(182),nt=n(1370),at=n(143),rt=n(181),it=n(335),ot=n(395),st=n(580),lt=n(295),ct=n(299),ft=n(29),ut=n(403),mt=n(1372),ht=n(1375),dt=n(8),pt=n(1376),gt=n(1381),yt=n(1386),bt=n(1387),Et=n.n(bt),vt=n(1388),kt=n.n(vt),_t=n(632);const wt=location,St=Object(E.a)(t=>Object(v.a)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:t.spacing(0),flexGrow:1,display:"block",padding:"8px",minHeight:"100vh",boxSizing:"border-box"}})),Ct=()=>{throw new Error("Router called before initialization")};let xt={isInitialized:!1,page:Ct,allowRouting:Ct,toActiveScripts:Ct,toAugmentations:Ct,toBitVerse:Ct,toBladeburner:Ct,toStats:Ct,toCity:Ct,toCorporation:Ct,toCreateProgram:Ct,toDevMenu:Ct,toFaction:Ct,toFactions:Ct,toGameOptions:Ct,toGang:Ct,toHacknetNodes:Ct,toInfiltration:Ct,toJob:Ct,toMilestones:Ct,toGrafting:Ct,toScriptEditor:Ct,toSleeves:Ct,toStockMarket:Ct,toTerminal:Ct,toTravel:Ct,toTutorial:Ct,toWork:Ct,toBladeburnerCinematic:Ct,toLocation:Ct,toStaneksGift:Ct,toAchievements:Ct,toThemeBrowser:Ct,toImportSave:Ct};function Lt({player:t,engine:e,terminal:n}){const E=St(),[{files:v,vim:bt},vt]=Object(a.useState)({files:{},vim:!1}),[Ct,Lt]=Object(a.useState)(function(t){return ut.b?w.a.Recovery:t.isWorking?w.a.Work:w.a.Terminal}(t)),Ot=Object(a.useState)(0)[1],[Mt,Tt]=Object(a.useState)(!1),[At,Rt]=Object(a.useState)(t.currentWorkFactionName?g.a[t.currentWorkFactionName]:void 0);if(void 0===At&&Ct===w.a.Faction)throw new Error("Trying to go to a page without the proper setup");const[Nt,Pt]=Object(a.useState)(!1),[It,Ft]=Object(a.useState)(!1),[Dt,jt]=Object(a.useState)(void 0);if(void 0===Dt&&(Ct===w.a.Infiltration||Ct===w.a.Location||Ct===w.a.Job))throw new Error("Trying to go to a page without the proper setup");const[Bt,Gt]=Object(a.useState)(""),[Wt,Ht]=Object(a.useState)(0),[Ut,qt]=Object(a.useState)(dt.a.IsSidebarOpened),[$t,Kt]=Object(a.useState)(void 0),[zt,Vt]=Object(a.useState)(!1);if(void 0===$t&&Ct===w.a.ImportSave)throw new Error("Trying to go to a page without the proper setup");const[Yt,Jt]=Object(a.useState)(!0);function Xt(){Ot(t=>t+1)}function Qt(){for(const t of Object(p.c)())t.runningScripts=[];o.c.saveGame(),setTimeout(()=>wt.reload(),2e3)}function Zt(){Object(d.a)("Soft Reset!"),Object(i.e)(!0),Ht(Wt+1),xt.toTerminal()}Object(a.useEffect)(()=>m.a.subscribe(Xt),[]),xt={isInitialized:!0,page:()=>Ct,allowRouting:t=>Jt(t),toActiveScripts:()=>Lt(w.a.ActiveScripts),toAugmentations:()=>Lt(w.a.Augmentations),toBladeburner:()=>Lt(w.a.Bladeburner),toStats:()=>Lt(w.a.Stats),toCorporation:()=>Lt(w.a.Corporation),toCreateProgram:()=>Lt(w.a.CreateProgram),toDevMenu:()=>Lt(w.a.DevMenu),toFaction:(t,e=!1)=>{Tt(e),Lt(w.a.Faction),t&&Rt(t)},toFactions:()=>Lt(w.a.Factions),toGameOptions:()=>Lt(w.a.Options),toGang:()=>Lt(w.a.Gang),toHacknetNodes:()=>Lt(w.a.Hacknet),toMilestones:()=>Lt(w.a.Milestones),toGrafting:()=>Lt(w.a.Grafting),toScriptEditor:(t,e)=>{vt({files:t,vim:!(null==e||!e.vim)}),Lt(w.a.ScriptEditor)},toSleeves:()=>Lt(w.a.Sleeves),toStockMarket:()=>Lt(w.a.StockMarket),toTerminal:()=>Lt(w.a.Terminal),toTutorial:()=>Lt(w.a.Tutorial),toJob:()=>{jt(c.a[t.companyName]),Lt(w.a.Job)},toCity:()=>{Lt(w.a.City)},toTravel:()=>{t.gotoLocation(l.a.TravelAgency),Lt(w.a.Travel)},toBitVerse:(t,e)=>{Pt(t),Ft(e),Object(lt.b)(),Lt(w.a.BitVerse)},toInfiltration:t=>{jt(t),Lt(w.a.Infiltration)},toWork:()=>Lt(w.a.Work),toBladeburnerCinematic:()=>{Lt(w.a.BladeburnerCinematic),Gt(Bt)},toLocation:t=>{jt(t),Lt(w.a.Location)},toStaneksGift:()=>{Lt(w.a.StaneksGift)},toAchievements:()=>{Lt(w.a.Achievements)},toThemeBrowser:()=>{Lt(w.a.ThemeBrowser)},toImportSave:(t,e=!1)=>{Kt(t),Vt(e),Lt(w.a.ImportSave)}},Object(a.useEffect)(()=>{kt()(xt).filter(t=>t.startsWith("to")).forEach(t=>{xt[t]=Et()(xt[t],(e,...n)=>{if(Yt)return e(...n);console.log(`Routing is currently disabled - Attempted router.${t}()`)})})}),Object(a.useEffect)(()=>{Ct!==w.a.Terminal&&window.scrollTo(0,0)});let te=r.a.createElement(_.a,null,"Cannot load"),ee=!0,ne=!0,ae=!1;switch(Ct){case w.a.Recovery:te=r.a.createElement(ut.c,{router:xt,softReset:Zt}),ee=!1,ne=!1,ae=!0;break;case w.a.BitVerse:te=r.a.createElement(J.a,{flume:Nt,enter:ct.a,quick:It}),ee=!1,ne=!1;break;case w.a.Infiltration:te=r.a.createElement(A.a,{location:Dt}),ee=!1,ne=!1;break;case w.a.BladeburnerCinematic:te=r.a.createElement(tt.a,null),ee=!1,ne=!1;break;case w.a.Work:te=r.a.createElement(N.a,null),ee=!1;break;case w.a.Terminal:te=r.a.createElement(H.a,{terminal:n,router:xt,player:t});break;case w.a.Sleeves:te=r.a.createElement(I.a,null);break;case w.a.StaneksGift:te=r.a.createElement(X.a,{staneksGift:Q.b});break;case w.a.Stats:te=r.a.createElement(z.a,null);break;case w.a.ScriptEditor:te=r.a.createElement(G.a,{files:v,hostname:t.getCurrentServer().hostname,player:t,router:xt,vim:bt});break;case w.a.ActiveScripts:te=r.a.createElement(q.a,{workerScripts:et.a});break;case w.a.Hacknet:te=r.a.createElement(F.a,{player:t});break;case w.a.CreateProgram:te=r.a.createElement(B.a,null);break;case w.a.Factions:te=r.a.createElement($.a,{player:t,router:xt});break;case w.a.Faction:te=r.a.createElement(K.a,{faction:At,augPage:Mt});break;case w.a.Milestones:te=r.a.createElement(W.a,{player:t});break;case w.a.Tutorial:te=r.a.createElement(U.a,{reactivateTutorial:()=>{Object(h.a)(),xt.toTerminal(),Object(f.e)()}});break;case w.a.DevMenu:te=r.a.createElement(L.a,{player:t,engine:e,router:xt});break;case w.a.Gang:te=r.a.createElement(M.a,null);break;case w.a.Corporation:te=r.a.createElement(T.a,null);break;case w.a.Bladeburner:te=r.a.createElement(O.a,null);break;case w.a.Grafting:te=r.a.createElement(R.a,null);break;case w.a.Travel:te=r.a.createElement(V.a,{p:t,router:xt});break;case w.a.StockMarket:te=r.a.createElement(Y.a,{buyStockLong:y.a,buyStockShort:y.d,cancelOrder:b.c,eventEmitterForReset:b.e,initStockMarket:b.g,p:t,placeOrder:b.j,sellStockLong:y.c,sellStockShort:y.b,stockMarket:b.a});break;case w.a.City:te=r.a.createElement(j.a,null);break;case w.a.Job:case w.a.Location:te=r.a.createElement(D.a,{loc:Dt});break;case w.a.Options:te=r.a.createElement(P.a,{player:t,router:xt,save:()=>o.c.saveGame(),export:()=>{Object(s.c)(t),o.c.exportGame()},forceKill:Qt,softReset:Zt});break;case w.a.Augmentations:te=r.a.createElement(x.a,{exportGameFn:()=>{Object(s.c)(t),o.c.exportGame()},installAugmentationsFn:()=>{Object(i.e)()}});break;case w.a.Achievements:te=r.a.createElement(mt.a,null);break;case w.a.ThemeBrowser:te=r.a.createElement(pt.a,{router:xt});break;case w.a.ImportSave:te=r.a.createElement(gt.a,{importString:$t,automatic:zt,router:xt}),ee=!1,ne=!1,ae=!0}return r.a.createElement(ft.a.Player.Provider,{value:t},r.a.createElement(ft.a.Router.Provider,{value:xt},r.a.createElement(ht.a,{key:Wt,router:xt,softReset:Zt},r.a.createElement(yt.a,{content:ae?te:null},r.a.createElement(at.c,null,r.a.createElement(S.a,{mode:f.a.isRunning?"tutorial":"overview"},f.a.isRunning?r.a.createElement(u.a,null):r.a.createElement(Z.a,{save:()=>o.c.saveGame(),killScripts:Qt})),ee?r.a.createElement(k.a,{display:"flex",flexDirection:"row",width:"100%"},r.a.createElement(C.a,{player:t,router:xt,page:Ct,opened:Ut,onToggled:t=>{qt(t),dt.a.IsSidebarOpened=t}}),r.a.createElement(k.a,{className:E.root},te)):r.a.createElement(k.a,{className:E.root},te),r.a.createElement(nt.a,null),ne&&r.a.createElement(r.a.Fragment,null,r.a.createElement(rt.c,null),r.a.createElement(it.b,null),r.a.createElement(ot.b,null),r.a.createElement(st.b,null),r.a.createElement(at.a,null)),r.a.createElement(_t.a,null))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(0),r=n.n(a),i=n(47),o=n(30),s=n(1),l=n(5),c=n(23),f=n(296);const u=({name:t,color:e,classes:n=Object(f.b)(),children:a,data:u})=>{let m;return void 0!==u.content?m=u.content:void 0!==u.level&&void 0!==u.exp?m=`${Object(c.d)(u.level,0)} (${l.a.formatExp(u.exp)} exp)`:void 0!==u.level&&void 0===u.exp&&(m=""+Object(c.d)(u.level,0)),r.a.createElement(i.a,null,r.a.createElement(o.a,{classes:{root:n.cellNone}},r.a.createElement(s.a,{style:{color:e}},t)),r.a.createElement(o.a,{align:"right",classes:{root:n.cellNone}},m?r.a.createElement(s.a,{style:{color:e}},m):r.a.createElement(r.a.Fragment,null),a))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(11);const r={};r[a.a.AevumECorp]="ECP",r[a.a.Sector12MegaCorp]="MGCP",r[a.a.Sector12BladeIndustries]="BLD",r[a.a.AevumClarkeIncorporated]="CLRK",r[a.a.VolhavenOmniTekIncorporated]="OMTK",r[a.a.Sector12FourSigma]="FSIG",r[a.a.ChongqingKuaiGongInternational]="KGI",r[a.a.AevumFulcrumTechnologies]="FLCM",r[a.a.IshimaStormTechnologies]="STM",r[a.a.NewTokyoDefComm]="DCOMM",r[a.a.VolhavenHeliosLabs]="HLS",r[a.a.NewTokyoVitaLife]="VITA",r[a.a.Sector12IcarusMicrosystems]="ICRS",r[a.a.Sector12UniversalEnergy]="UNV",r[a.a.AevumAeroCorp]="AERO",r[a.a.VolhavenOmniaCybersystems]="OMN",r[a.a.ChongqingSolarisSpaceSystems]="SLRS",r[a.a.NewTokyoGlobalPharmaceuticals]="GPH",r[a.a.IshimaNovaMedical]="NVMD",r[a.a.AevumWatchdogSecurity]="WDS",r[a.a.VolhavenLexoCorp]="LXO",r[a.a.AevumRhoConstruction]="RHOC",r[a.a.Sector12AlphaEnterprises]="APHE",r[a.a.VolhavenSysCoreSecurities]="SYSC",r[a.a.VolhavenCompuTek]="CTK",r[a.a.AevumNetLinkTechnologies]="NTLK",r[a.a.IshimaOmegaSoftware]="OMGA",r[a.a.Sector12FoodNStuff]="FNS",r[a.a.Sector12JoesGuns]="JGN",r["Sigma Cosmetics"]="SGC",r["Catalyst Ventures"]="CTYS",r["Microdyne Technologies"]="MDYN",r["Titan Laboratories"]="TITN"},function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}));const a=[".js",".script",".ns"];function r(t){return a.some(e=>t.endsWith(e))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"e",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"f",(function(){return f}));var a=n(7),r=n(281);function i(t,e){const n=(100-t.hackDifficulty)/100,a=1.75*e.hacking,i=(a-t.requiredHackingSkill)/a*n*e.hacking_chance_mult*Object(r.a)(e.intelligence,1);return i>1?1:i<0?0:i}function o(t,e){null==t.baseDifficulty&&(t.baseDifficulty=t.hackDifficulty);let n=3;return n+=.3*t.baseDifficulty,n*e.hacking_exp_mult*a.a.HackExpGain}function s(t,e){const n=(100-t.hackDifficulty)/100*((e.hacking-(t.requiredHackingSkill-1))/e.hacking)*e.hacking_money_mult*a.a.ScriptHackMoney/240;return n<0?0:n>1?1:n}function l(t,e){let n=2.5*(t.requiredHackingSkill*t.hackDifficulty)+500;n/=e.hacking+50;return 5*n/(e.hacking_speed_mult*Object(r.a)(e.intelligence,1))}function c(t,e){return 3.2*l(t,e)}function f(t,e){return 4*l(t,e)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return y})),n.d(e,"j",(function(){return b})),n.d(e,"c",(function(){return E})),n.d(e,"i",(function(){return v})),n.d(e,"d",(function(){return k})),n.d(e,"f",(function(){return _})),n.d(e,"h",(function(){return w})),n.d(e,"k",(function(){return C})),n.d(e,"g",(function(){return x})),n.d(e,"e",(function(){return L}));var a=n(749),r=n(328),i=n(148),o=n(648),s=n(1018),l=n(114),c=n(76),f=n(98),u=n(9),m=n(126),h=n(5),d=n(15),p=n(24);let g={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0};const y={};function b(t,e,n,o,s,l=null){if(!(t instanceof i.a))return l?l.log("stock.placeOrder",()=>`Invalid stock: '${t}'`):Object(d.a)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof e||"number"!=typeof n)return l?l.log("stock.placeOrder",()=>`Invalid arguments: shares='${e}' price='${n}'`):Object(d.a)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new a.a(t.symbol,e,n,o,s);if(null==g.Orders){const t={};for(const e of Object.keys(g)){const n=g[e];n instanceof i.a&&(t[n.symbol]=[])}g.Orders=t}g.Orders[t.symbol].push(c);const f={stockMarket:g,symbolToStockMap:y};return Object(r.a)(t,c.type,c.pos,f),!0}function E(t,e=null){if(null==g.Orders)return!1;if(t.order&&t.order instanceof a.a){const e=t.order,n=g.Orders[e.stockSymbol];for(let t=0;t=e.cap&&(o=.1,e.b=!1),isNaN(o)&&(o=.5);const s=Math.random(),f={stockMarket:g,symbolToStockMap:y};st);f.a.factions.sort((t,n)=>e.indexOf(t)-e.indexOf(n));const n=t.getInfo();for(const t of n.enemies)c.a[t]instanceof l.a&&(c.a[t].isBanned=!0);for(let e=0;e0)for(let n=0;n=t.baseCost){const e=new r.a(t.name);if(t.name==i.a.NeuroFluxGovernor&&(e.level=_()),f.a.queuedAugmentations.push(e),f.a.loseMoney(t.baseCost,"augmentations"),t.name==i.a.NeuroFluxGovernor){let e=_();--e;const n=Math.pow(s.a.NeuroFluxGovernorLevelMult,e);t.baseRepRequirement=500*n*o.a.AugmentationRepCost,t.baseCost=75e4*n*o.a.AugmentationMoneyCost;for(let e=0;e{if(t.hasGangWith(e.name)){let n=Object.values(a.a);n=n.filter(t=>!t.isSpecial);const r=[i.a.NeuroFluxGovernor,i.a.CongruityImplant];2!==t.bitNodeN&&r.push(i.a.TheRedPill);const s=Object(y.b)(`BN${t.bitNodeN}.${t.sourceFileLvl(t.bitNodeN)}`),l=t=>t.factions.length>1||(!!e.augmentations.includes(t.name)||s()>=1-o.a.GangUniqueAugs);return n=n.filter(l),n=n.filter(t=>!r.includes(t.name)),n.map(t=>t.name)}return e.augmentations.slice()}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),function(t){t.Bypass="Bypass",t.PrototypeTampering="PrototypeTampering",t.Unclickable="Unclickable",t.UndocumentedFunctionCall="UndocumentedFunctionCall",t.TimeCompression="TimeCompression",t.RealityAlteration="RealityAlteration",t.N00dles="N00dles",t.YoureNotMeantToAccessThis="YoureNotMeantToAccessThis",t.TrueRecursion="TrueRecursion",t.INeedARainbow="INeedARainbow",t.EditSaveFile="EditSaveFile"}(a||(a={}));const r={Bypass:"by circumventing the ram cost of document.",EditSaveFile:"by editing your save file.",PrototypeTampering:"by tampering with Numbers prototype.",TimeCompression:"by compressing time.",Unclickable:"by clicking the unclickable.",UndocumentedFunctionCall:"by looking beyond the documentation.",RealityAlteration:"by altering reality to suit your whims.",N00dles:"by harnessing the power of the n00dles.",YoureNotMeantToAccessThis:"by accessing the dev menu.",TrueRecursion:"by truly recursing.",INeedARainbow:"by using the power of the rainbow."};function i(t){return r[t]}function o(t){return t=t.filter(t=>Object.keys(a).includes(t)),[...new Set(t)]}},function(t,e,n){"use strict";n.d(e,"c",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(147),r=n(25),i=n(176);function o(t,e){return e.delayReject&&e.delayReject(),new Promise((function(n,a){e.delay=window.setTimeout(()=>{e.delay=null,e.delayReject=void 0,e.env.stopFlag?a(new i.a(e)):n()},t),e.delayReject=a}))}function s(t,e){const n=Object(r.d)(t.hostname);if(null==n)throw new Error("WorkerScript constructed with invalid server ip: "+t.hostname);for(const n of t.scriptRef.dependencies){var a,i;e=null!==(a=null===(i=e)||void 0===i?void 0:i.replace(new RegExp(n.url,"g"),n.filename))&&void 0!==a?a:e}return"|DELIMITER|"+n.hostname+"|DELIMITER|"+t.name+"|DELIMITER|"+e}function l(t,e,n){const a=t.scriptRef.threads;if(!n)return isNaN(a)||a<1?1:a;const r=0|n;if(isNaN(n)||r<1)throw s(t,`Invalid thread count passed to ${e}: ${n}. Threads must be a positive number.`);if(r>a)throw s(t,`Too many threads requested by ${e}. Requested: ${n}. Has: ${a}.`);return r}function c(t){if(!Object(a.a)(t))return!1;return 4==t.split("|DELIMITER|").length}},,function(t,e,n){"use strict";n.d(e,"c",(function(){return R})),n.d(e,"b",(function(){return O})),n.d(e,"a",(function(){return A}));var a=n(152),r=n(66),i=n(9),o=n(28),s=n(82),l=n(268),c=n(2),f=n(25),u=n(8),m=n(79),h=n(101),d=n(121),p=n(143),g=n(341),y=n(15),b=n(24),E=n(337),v=n(1047),k=n(14),_=n(358),w=n(11),S=n(579),C=n(293);function x(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class L{constructor(){x(this,"PlayerSave",""),x(this,"AllServersSave",""),x(this,"CompaniesSave",""),x(this,"FactionsSave",""),x(this,"AliasesSave",""),x(this,"GlobalAliasesSave",""),x(this,"MessagesSave",""),x(this,"StockMarketSave",""),x(this,"SettingsSave",""),x(this,"VersionSave",""),x(this,"AllGangsSave",""),x(this,"LastExportBonus",""),x(this,"StaneksGiftSave","")}getSaveString(t=!1){this.PlayerSave=JSON.stringify(c.a),this.AllServersSave=Object(f.j)(t),this.CompaniesSave=JSON.stringify(r.a),this.FactionsSave=JSON.stringify(o.a),this.AliasesSave=JSON.stringify(a.a),this.GlobalAliasesSave=JSON.stringify(a.b),this.MessagesSave=JSON.stringify(l.a),this.StockMarketSave=JSON.stringify(h.a),this.SettingsSave=JSON.stringify(u.a),this.VersionSave=JSON.stringify(i.a.VersionNumber),this.LastExportBonus=JSON.stringify(g.a),this.StaneksGiftSave=JSON.stringify(d.b),c.a.inGang()&&(this.AllGangsSave=JSON.stringify(s.a));return btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(t=!0){const e=(new Date).getTime();c.a.lastSave=e;const n=this.getSaveString(u.a.ExcludeRunningScriptsFromSave);return new Promise((a,r)=>{Object(E.c)(n).then(()=>{const r={playerIdentifier:c.a.identifier,fileName:this.getSaveFileName(),save:n,savedOn:e};return Object(C.d)(r),t&&p.b.emit("Game Saved!","info",2e3),a()}).catch(t=>(console.error(t),r()))})}getSaveFileName(t=!1){const e=Math.round(Date.now()/1e3),n=c.a.bitNodeN;let a=`bitburnerSave_${e}_BN${n}x${m.a[n]}.json`;return t&&(a="RECOVERY"+a),a}exportGame(){const t=this.getSaveString(u.a.ExcludeRunningScriptsFromSave);A(this.getSaveFileName(),t)}importGame(t,e=!0){if(!t||""===t)throw new Error("Invalid import string");return Object(E.c)(t).then(()=>(e&&setTimeout(()=>location.reload(),1e3),Promise.resolve()))}getImportStringFromFile(t){if(null===t)return Promise.reject(new Error("No file selected"));const e=t[0];if(!e)return Promise.reject(new Error("Invalid file selected"));const n=new FileReader,a=new Promise((t,e)=>{n.onload=function(n){const a=n.target;if(null===a)return e(new Error("Error importing file"));const r=a.result;if("string"!=typeof r)return e(new Error("FileReader event was not type string"));t(r)}});return n.readAsText(e),a}async getImportDataFromString(t){var e,n,a,r,i,o,s,l;if(!t||""===t)throw new Error("Invalid import string");let f,u;try{f=window.atob(t),f=f.trim()}catch(t){console.error(t)}if(!f||""===f)return Promise.reject(new Error("Save game had not content or was not base64 encoded"));try{u=JSON.parse(f)}catch(t){console.log(t)}if(!u||"BitburnerSaveObject"!==u.ctor||!u.data)return Promise.reject(new Error("Save game did not seem valid"));const m={base64:t,parsed:u},h=S.a.fromJSON(JSON.parse(u.data.PlayerSave)),d={identifier:h.identifier,lastSave:h.lastSave,totalPlaytime:h.totalPlaytime,money:h.money,hacking:h.hacking,augmentations:null!==(e=null===(n=h.augmentations)||void 0===n?void 0:n.reduce((t,e)=>t+e.level,0))&&void 0!==e?e:0,factions:null!==(a=null===(r=h.factions)||void 0===r?void 0:r.length)&&void 0!==a?a:0,achievements:null!==(i=null===(o=h.achievements)||void 0===o?void 0:o.length)&&void 0!==i?i:0,bitNode:h.bitNodeN,bitNodeLevel:h.sourceFileLvl(c.a.bitNodeN)+1,sourceFiles:null!==(s=null===(l=h.sourceFiles)||void 0===l?void 0:l.reduce((t,e)=>t+e.lvl,0))&&void 0!==s?s:0};return m.playerData=d,Promise.resolve(m)}toJSON(){return Object(b.b)("BitburnerSaveObject",this)}static fromJSON(t){return Object(b.a)(L,t.data)}}function O(t){if(-1!==navigator.userAgent.indexOf("wv")&&-1!==navigator.userAgent.indexOf("Chrome/")&&setInterval(()=>{Object(y.a)("SCAM ALERT. This app is not official and you should uninstall it.")},1e3),!t)return!1;t=decodeURIComponent(escape(atob(t)));const e=JSON.parse(t,b.c);if(Object(c.b)(e.PlayerSave),Object(f.h)(e.AllServersSave),Object(r.c)(e.CompaniesSave),Object(o.d)(e.FactionsSave),e.hasOwnProperty("StaneksGiftSave")?Object(d.a)(e.StaneksGiftSave):(console.warn("Could not load Staneks Gift from save"),Object(d.a)("")),e.hasOwnProperty("AliasesSave"))try{Object(a.c)(e.AliasesSave)}catch(t){console.warn("Could not load Aliases from save"),Object(a.c)("")}else console.warn("Save file did not contain an Aliases property"),Object(a.c)("");if(e.hasOwnProperty("GlobalAliasesSave"))try{Object(a.d)(e.GlobalAliasesSave)}catch(t){console.warn("Could not load GlobalAliases from save"),Object(a.d)("")}else console.warn("Save file did not contain a GlobalAliases property"),Object(a.d)("");if(e.hasOwnProperty("MessagesSave"))try{Object(l.d)(e.MessagesSave)}catch(t){console.warn("Could not load Messages from save"),Object(l.c)()}else console.warn("Save file did not contain a Messages property"),Object(l.c)();if(e.hasOwnProperty("StockMarketSave"))try{Object(h.i)(e.StockMarketSave)}catch(t){Object(h.i)("")}else Object(h.i)("");if(e.hasOwnProperty("SettingsSave"))try{u.a.load(e.SettingsSave)}catch(t){console.error("ERROR: Failed to parse Settings. Re-initing default values"),u.a.init()}else u.a.init();if(e.hasOwnProperty("LastExportBonus"))try{g.d(JSON.parse(e.LastExportBonus))}catch(t){g.d((new Date).getTime()),console.error("ERROR: Failed to parse last export bonus Settings "+t)}if(c.a.inGang()&&e.hasOwnProperty("AllGangsSave"))try{Object(s.b)(e.AllGangsSave)}catch(t){console.error("ERROR: Failed to parse AllGangsSave: "+t)}if(e.hasOwnProperty("VersionSave"))try{const t=JSON.parse(e.VersionSave,b.c);!function(t){const e=c.a;if("string"==typeof t){if(t<="0.41.2"){null!=e.companyPosition&&"string"!=typeof e.companyPosition&&(e.companyPosition=e.companyPosition.data.positionName,null==e.companyPosition&&(e.companyPosition=""));for(const t of Object.keys(r.a)){const e=r.a[t];if(0==e.name&&null!=e.companyName&&(e.name=e.companyName),e.companyPositions instanceof Array){const t={};for(let n=0;nt.name===k.a.NeuroFluxGovernor);if(t)t.level+=10;else{const t=new _.a(k.a.NeuroFluxGovernor);t.level=10,c.a.augmentations.push(t)}c.a.reapplyAllAugmentations(!0),c.a.reapplyAllSourceFiles()}if(t<3&&(e.money=parseFloat(e.money),e.corporation)){e.corporation.funds=parseFloat(e.corporation.funds),e.corporation.revenue=parseFloat(e.corporation.revenue),e.corporation.expenses=parseFloat(e.corporation.expenses);for(let t=0;t0)for(const t of e.sleeves)if(t.augmentations&&0!==t.augmentations.length)for(const e of t.augmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade");t<12&&void 0!==e.resleeves&&delete e.resleeves}}(t),window.location.href.toLowerCase().includes("bitburner-beta")?Object(y.a)("You are playing on the beta environment! This branch of the game features the latest developments in the game. This version may be unstable.
Please report any bugs/issues through the github repository (https://github.com/danielyxie/bitburner/issues) or the Bitburner subreddit (reddit.com/r/bitburner).

"+i.a.LatestUpdate,M):t!==i.a.VersionNumber&&T()}catch(t){T()}else T();return!0}const M={"& h1, & h2, & h3, & h4, & p, & a, & ul":{margin:0,color:u.a.theme.primary,whiteSpace:"initial"},"& ul":{paddingLeft:"1.5em",lineHeight:1.5}};function T(){setTimeout(()=>Object(y.a)("New update!
Please report any bugs/issues through the github repository or the Bitburner subreddit (reddit.com/r/bitburner).

"+i.a.LatestUpdate,M),1e3)}function A(t,e){const n=new Blob([e],{type:"text/plain"}),a=window.navigator;if(a.msSaveOrOpenBlob)a.msSaveOrOpenBlob(n,t);else{const e=document.createElement("a"),a=URL.createObjectURL(n);e.href=a,e.download=t,document.body.appendChild(e),e.click(),setTimeout((function(){document.body.removeChild(e),window.URL.revokeObjectURL(a)}),0)}}b.c.constructors.BitburnerSaveObject=L;const R=new L},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(5),o=n(19);function s({money:t}){return r.a.createElement(o.a,{money:i.a.formatMoney(t)+" / sec"})}},function(t,e,n){"use strict";n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return f}));var a=n(949),r=n(24),i=n(564);class o{constructor(t,e,n,a,r,i){this.name=t,this.desc=e,this.generate=n,this.solver=a,this.difficulty=r,this.numTries=i}}const s={};for(const t of a.a)s[t.name]=new o(t.name,t.desc,t.gen,t.solver,t.difficulty,t.numTries);let l,c;!function(t){t[t.FactionReputation=0]="FactionReputation",t[t.FactionReputationAll=1]="FactionReputationAll",t[t.CompanyReputation=2]="CompanyReputation",t[t.Money=3]="Money"}(l||(l={})),function(t){t[t.Success=0]="Success",t[t.Failure=1]="Failure",t[t.Cancelled=2]="Cancelled"}(c||(c={}));class f{constructor(t="",e="Find Largest Prime Factor",n=null){var a,r,i;if(i=0,(r="tries")in(a=this)?Object.defineProperty(a,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[r]=i,this.fn=t,this.fn.endsWith(".cct")||(this.fn+=".cct"),null==s[e])throw new Error(`Error: invalid contract type: ${e} please contact developer`);this.type=e,this.data=s[e].generate(),this.reward=n}getData(){return this.data}getDescription(){return s[this.type].desc(this.data)}getDifficulty(){return s[this.type].difficulty}getMaxNumTries(){return s[this.type].numTries}getType(){return s[this.type].name}isSolution(t){return s[this.type].solver(this.data,t)}async prompt(){return new Promise(t=>{const e={c:this,onClose:()=>{t(c.Cancelled)},onAttempt:e=>{this.isSolution(e)?t(c.Success):t(c.Failure)}};i.a.emit(e)})}toJSON(){return Object(r.b)("CodingContract",this)}static fromJSON(t){return Object(r.a)(f,t.data)}}r.c.constructors.CodingContract=f},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t.LimitBuy="Limit Buy Order",t.LimitSell="Limit Sell Order",t.StopBuy="Stop Buy Order",t.StopSell="Stop Sell Order"}(a||(a={}))},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(5),i=n(115),o=n(139);const s=Object(i.a)(t=>Object(o.a)({reputation:{color:t.colors.rep}}));function l({reputation:t}){const e=s();return a.createElement("span",{className:e.reputation},"number"==typeof t?r.a.formatReputation(t):t)}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(24),r=n(750);let i=new r.a;function o(t){i=t?JSON.parse(t,a.c):new r.a}},,,,,function(t,e,n){"use strict";function a(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))}n.d(e,"a",(function(){return r}));class r{constructor(){var t,e,n;n={},(e="subscribers")in(t=this)?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n}subscribe(t){let e=a();for(;void 0!==this.subscribers[e];)e=a();return this.subscribers[e]=t,()=>{delete this.subscribers[e]}}emit(...t){for(const e in this.subscribers){const n=this.subscribers[e];void 0!==n&&n(...t)}}}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n(0),r=n.n(a),i=n(598),o=n.n(i),s=n(1089),l=n.n(s),c=n(111),f=n(1090),u=n.n(f),m=n(595),h=n.n(m),d=n(80),p=n(20);function g(t){const[e,n]=Object(a.useState)("");const{label:i,placeholder:s,add:f,subtract:m,reset:g,tons:y}=t;return r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{label:i,value:e,onChange:function(t){""===t.target.value?n(""):n(parseFloat(t.target.value))},placeholder:s,type:"number",InputProps:{startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:"Add a lot"},r.a.createElement(c.a,{onClick:y,size:"large"},r.a.createElement(h.a,{style:{transform:"rotate(-90deg)"}}))),r.a.createElement(p.a,{title:"Add"},r.a.createElement(c.a,{onClick:()=>f("string"!=typeof e?e:0),size:"large"},r.a.createElement(o.a,null)))),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:"Remove"},r.a.createElement(c.a,{onClick:()=>m("string"!=typeof e?e:0),size:"large"},r.a.createElement(l.a,null))),r.a.createElement(p.a,{title:"Reset"},r.a.createElement(c.a,{onClick:g,size:"large"},r.a.createElement(u.a,null))))}}))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n(282),r=n(645);function i(t){const e=a.a[t];if(null==e)throw new Error("Invalid research name: "+t);return new r.a({text:e.name,cost:e.cost})}function o(){const t=i("Hi-Tech R&D Laboratory"),e=i("AutoBrew"),n=i("AutoPartyManager"),a=i("Automatic Drug Administration"),r=i("Bulk Purchasing"),o=i("CPH4 Injections"),s=i("Drones"),l=i("Drones - Assembly"),c=i("Drones - Transport"),f=i("Go-Juice"),u=i("HRBuddy-Recruitment"),m=i("HRBuddy-Training"),h=i("JoyWire"),d=i("Market-TA.I"),p=i("Market-TA.II"),g=i("Overclock"),y=i("Self-Correcting Assemblers"),b=i("Sti.mu");return a.addChild(f),a.addChild(o),s.addChild(l),s.addChild(c),u.addChild(m),d.addChild(p),g.addChild(b),t.addChild(e),t.addChild(n),t.addChild(a),t.addChild(r),t.addChild(s),t.addChild(u),t.addChild(h),t.addChild(d),t.addChild(g),t.addChild(y),t}function s(){const t=new r.b;return t.setRoot(o()),t}function l(){const t=new r.b,e=o(),n=i("uPgrade: Fulcrum"),a=i("uPgrade: Capacity.I"),s=i("uPgrade: Capacity.II"),l=i("uPgrade: Dashboard");return a.addChild(s),n.addChild(a),n.addChild(l),e.addChild(n),t.setRoot(e),t}},,function(t,e,n){"use strict";n.d(e,"f",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"e",(function(){return d})),n.d(e,"d",(function(){return p})),n.d(e,"a",(function(){return g})),n.d(e,"b",(function(){return y}));var a=n(25),r=n(46),i=n(585),o=n(7),s=n(9),l=n(65),c=n(64),f=n(748);function u(t){let e=t.hostname.replace(/ /g,"-");if(null!=t.ip&&Object(a.g)(t.ip)&&(t.ip=Object(a.e)()),null!=Object(a.d)(e)){e+="-0";for(let t=0;t<200&&(e=e.replace(/-[0-9]+$/,"-"+t),null!=Object(a.d)(e));++t);}return t.hostname=e,new r.a(t)}function m(t,e,n,a=1){let r=1+(s.a.ServerBaseGrowthRate-1)/t.hackDifficulty;r>s.a.ServerMaxGrowthRate&&(r=s.a.ServerMaxGrowthRate);const i=t.serverGrowth/100,l=1+(a-1)/16;return Math.log(e)/(Math.log(r)*n.hacking_grow_mult*i*o.a.ServerGrowthRate*l)}function h(t,e,n,a,r=1){if(n<0&&(n=0),e>t.moneyMax&&(e=t.moneyMax),e<=n)return 0;const i=1+(s.a.ServerBaseGrowthRate-1)/t.hackDifficulty,l=Math.min(i,s.a.ServerMaxGrowthRate),c=1+(r-1)/16,f=t.serverGrowth/100*a.hacking_grow_mult*c*o.a.ServerGrowthRate,u=f*Math.log(l),m=n*u+Math.log(e*u);let h;if(m0&&(h-=Math.log(m));let d=h/u-n;const p=l**f;let g=1/0;do{const t=p**d,a=n+d;g=(a*t-e)/(a*u+1)/t,d-=g}while(Math.abs(g)>=1);const y=Math.floor(d);if(e<=(n+y)*Math.pow(l,y*f))return y;const b=Math.ceil(d);return e<=(n+b)*Math.pow(l,b*f)?b:b+1}function d(t,e,n,a=1){let r=Object(i.a)(t,e,n,a);r<1&&(console.warn("serverGrowth calculated to be less than 1"),r=1);const o=t.moneyAvailable;if(t.moneyAvailable+=1*e,t.moneyAvailable*=r,Object(f.a)(t.moneyMax)&&isNaN(t.moneyAvailable)&&(t.moneyAvailable=t.moneyMax),Object(f.a)(t.moneyMax)&&t.moneyAvailable>t.moneyMax&&(t.moneyAvailable=t.moneyMax),o!==t.moneyAvailable){let r=h(t,t.moneyAvailable,o,n,a);r=Math.min(Math.max(0,Math.ceil(r)),e),t.fortify(2*s.a.ServerFortifyAmount*r)}return t.moneyAvailable/o}function p(t,e){const n=e.programs.includes(l.a.BitFlume.name);e.programs.length=0,e.runningScripts=[],e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(l.a.NukeProgram.name),n&&e.programs.push(l.a.BitFlume.name),e.scripts.forEach((function(n){n.updateRamUsage(t,e.scripts)})),e.messages.length=0,e.messages.push(c.a.HackersStartingHandbook)}function g(t,e){return e>t.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):Object(a.d)(t.serversOnNetwork[e])}function y(t){return t instanceof r.a&&t.backdoorInstalled}},function(t,e,n){"use strict";n.d(e,"c",(function(){return v})),n.d(e,"f",(function(){return x})),n.d(e,"e",(function(){return S})),n.d(e,"d",(function(){return b})),n.d(e,"a",(function(){return w})),n.d(e,"b",(function(){return C}));var a=n(40),r=n(56),i=n(358),o=n(14),s=n(7),l=n(9),c=n(28),f=n(2),u=n(450),m=n(79),h=n(15),d=n(1392),p=n(4),g=n(488),y=n(95);function b(){!function(){for(const t of Object.keys(c.a))c.a.hasOwnProperty(t)&&(c.a[t].augmentations=[])}(),Object(d.a)(r.a),[Object(g.d)(),Object(g.e)(),...Object(g.c)(),...Object(c.b)(p.a.Bladeburners)?Object(g.a)():[],...Object(c.b)(p.a.ChurchOfTheMachineGod)?Object(g.b)():[]].map(_),function(){for(const t of Object.keys(r.a))if(r.a.hasOwnProperty(t)){const e=r.a[t];e.name===o.a.NeuroFluxGovernor?k(e):e.baseCost=e.startingCost*v()*s.a.AugmentationMoneyCost}}(),f.a.reapplyAllAugmentations()}function E(){return l.a.MultipleAugMultiplier*[1,.96,.94,.93][m.a[11]]}function v(){return Math.pow(E(),f.a.queuedAugmentations.length)}function k(t){let e=function(){let t=0;for(let e=0;e=0;t--)if(f.a.queuedAugmentations[t].name===o.a.NeuroFluxGovernor){n=t;break}for(let t=0;t"}return f.a.queuedAugmentations=[],t||Object(h.a)("You slowly drift to sleep as scientists put you under in order to install the following Augmentations:
"+e+"
You wake up in your home...you feel different..."),Object(u.a)(),y.b.toTerminal(),!0}function C(t){return r.a.hasOwnProperty(t)}function x(t){return(t instanceof a.a?t.name:t)===o.a.NeuroFluxGovernor}},function(t,e,n){"use strict";n.d(e,"d",(function(){return r})),n.d(e,"f",(function(){return i})),n.d(e,"a",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"e",(function(){return l})),n.d(e,"b",(function(){return c}));var a=n(27);function r(t,e){return Math.random()*(e-t)+t}const i="↑",o="↓",s="←",l="→";function c(t){switch(t.key){case a.a.UP_ARROW:case a.a.W:return i;case a.a.LEFT_ARROW:case a.a.A:return s;case a.a.DOWN_ARROW:case a.a.S:return o;case a.a.RIGHT_ARROW:case a.a.D:return l}return""}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={BladesIntuition:"Blade's Intuition",Cloak:"Cloak",Marksman:"Marksman",WeaponProficiency:"Weapon Proficiency",ShortCircuit:"Short-Circuit",DigitalObserver:"Digital Observer",Tracer:"Tracer",Overclock:"Overclock",Reaper:"Reaper",EvasiveSystem:"Evasive System",Datamancer:"Datamancer",CybersEdge:"Cyber's Edge",HandsOfMidas:"Hands of Midas",Hyperdrive:"Hyperdrive"}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(343),r=n(24);class i extends a.a{constructor(t=null){super(t),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return Object(r.b)("BlackOperation",this)}static fromJSON(t){return Object(r.a)(i,t.data)}}r.c.constructors.BlackOperation=i},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i}));var a=n(0);const r={Gang:n.n(a).a.createContext({})},i=()=>Object(a.useContext)(r.Gang)},function(t,e,n){"use strict";n.d(e,"c",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(0),r=n.n(a),i=n(753),o=n(115),s=n(126),l=n(1748),c=n(55),f=n(181);const u=Object(o.a)(()=>({snackbar:{zIndex:f.d+1e3+" !important","& .MuiAlert-icon":{alignSelf:"center"}}}));function m(t){const e=u();return r.a.createElement(i.a,{dense:!0,maxSnack:9,anchorOrigin:{horizontal:"right",vertical:"bottom"},autoHideDuration:2e3,classes:{containerRoot:e.snackbar}},t.children)}const h=new s.a;function d(){const{enqueueSnackbar:t,closeSnackbar:e}=Object(i.b)();return Object(a.useEffect)(()=>h.subscribe((n,a,i)=>{const o=t(r.a.createElement(l.a,{severity:a},n),{content:(t,e)=>r.a.createElement(c.a,{key:t},e),variant:a,autoHideDuration:i,onClick:()=>e(o)})})),r.a.createElement(r.a.Fragment,null)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return h}));var a=n(176),r=n(408),i=n(182),o=n(292),s=n(361),l=n(25),c=n(317),f=n(15),u=n(451),m=n(2);function h(t,e,n){if(null!=n&&"boolean"==typeof n||(n=!0),t instanceof r.a)return p(t),!0;if(t instanceof s.a&&"string"==typeof e){const a=d(t.pid,n);if(a)return a;for(const a of i.a.values())if(a.name==t.filename&&a.hostname==e&&Object(c.a)(a.args,t.args))return p(a,n),!0;return!1}return"number"==typeof t?d(t,n):(console.error("killWorkerScript() called with invalid argument:"),console.error(t),!1)}function d(t,e=!0){const n=i.a.get(t);return n instanceof r.a&&(p(n,e),!0)}function p(t,e=!0){if("function"==typeof t.atExit){try{t.atExit()}catch(e){Object(f.a)(`Error trying to call atExit for script ${t.name} on ${t.hostname} ${t.scriptRef.args} ${e}`)}t.atExit=void 0}t.env.stopFlag=!0,function(t){t instanceof r.a&&t.delay&&(clearTimeout(t.delay),t.delayReject&&t.delayReject(new a.a(t)))}(t),function(t,e=!0){const n=t.hostname,a=t.name,r=Object(l.d)(n);if(null==r)return void console.error("Could not find server on which this script is running: "+n);for(let e=0;eObject(o.a)({unbuyable:{color:t.palette.action.disabled},money:{color:t.colors.money}}));function l(t){const e=s();return t.corp.funds>t.money?a.createElement("span",{className:e.money},r.a.formatMoney(t.money)):a.createElement("span",{className:e.unbuyable},r.a.formatMoney(t.money))}},,function(t,e,n){"use strict";function a(t){return"string"==typeof t||t instanceof String}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(24),r=n(33);const i={b:!0,initPrice:1e4,marketCap:1e12,mv:1,name:"",otlkMag:0,spreadPerc:0,shareTxForMovement:1e6,symbol:""};function o(t){let e;switch(typeof t){case"number":return t;case"object":{const n=t;e=Object(r.a)(n.min,n.max);break}default:throw Error(`Do not know how to convert the type '${typeof t}' to a number`)}return"object"==typeof t&&"number"==typeof t.divisor?e/t.divisor:e}class s{constructor(t=i){this.name=t.name,this.symbol=t.symbol,this.price=o(t.initPrice),this.lastPrice=this.price,this.playerShares=0,this.playerAvgPx=0,this.playerShortShares=0,this.playerAvgShortPx=0,this.mv=o(t.mv),this.b=t.b,this.otlkMag=t.otlkMag,this.otlkMagForecast=this.getAbsoluteForecast(),this.cap=Object(r.a)(1e3*this.price,25e3*this.price),this.spreadPerc=o(t.spreadPerc),this.shareTxForMovement=o(t.shareTxForMovement),this.shareTxUntilMovement=this.shareTxForMovement;const e=t.marketCap/this.price;this.totalShares=1e5*Math.round(e/1e5);this.maxShares=1e5*Math.round(.2*this.totalShares/1e5)}changeForecastForecast(t){this.otlkMagForecast=t,this.otlkMagForecast>100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(t){this.lastPrice=this.price,this.price=t}cycleForecast(t=.1){const e=this.getForecastIncreaseChance();Math.random()5&&(this.otlkMag=Math.max(5,this.otlkMag-t))}influenceForecastForecast(t){this.otlkMagForecast>50?(this.otlkMagForecast-=t,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=t,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return Object(a.b)("Stock",this)}static fromJSON(t){return Object(a.a)(s,t.data)}}a.c.constructors.Stock=s},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"f",(function(){return l})),n.d(e,"e",(function(){return c})),n.d(e,"g",(function(){return m})),n.d(e,"h",(function(){return h}));var a=n(88);let r={},i={};function o(t){r=""===t?{}:JSON.parse(t)}function s(t){i=""===t?{}:JSON.parse(t)}function l(){for(const t of Object.keys(r))r.hasOwnProperty(t)&&a.a.print("alias "+t+"="+r[t]);for(const t of Object.keys(i))i.hasOwnProperty(t)&&a.a.print("global alias "+t+"="+i[t])}function c(t,e=!1){const n=t.match(/^([\w|!%,@-]+)=(("(.+)")|('(.+)'))$/);return null!=n&&7==n.length&&(e?function(t,e){t in r&&delete r[t];i[t]=e.trim()}(n[1],n[4]||n[6]):function(t,e){t in i&&delete i[t];r[t]=e.trim()}(n[1],n[4]||n[6]),!0)}function f(t){return r.hasOwnProperty(t)?r[t]:null}function u(t){return i.hasOwnProperty(t)?i[t]:null}function m(t){return r.hasOwnProperty(t)?(delete r[t],!0):!!i.hasOwnProperty(t)&&(delete i[t],!0)}function h(t){const e=t.split(" ");if(e.length>0){if("unalias"===e[0]||"alias"===e[0])return e.join(" ");let t=!0,r=0;for(;t&&r<10;){var n;r++,t=!1;const i=null===(n=f(e[0]))||void 0===n?void 0:n.split(" ");null!=i&&(t=!0,e.splice(0,1,...i));for(let n=0;nr.a.createElement(o.a,{injectFirst:!0},r.a.createElement(s.a,{theme:u},t))},,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(1),o=n(20);function s(t){const[e,n]=Object(a.useState)(!1);return r.a.createElement(o.a,{open:e,title:r.a.createElement(i.a,null,"Copied!")},r.a.createElement(i.a,{variant:t.variant,color:t.color,onClick:function(){const e=document.createElement("textarea");e.value=t.value,document.body.appendChild(e),e.select(),e.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(e),n(!0),setTimeout(()=>n(!1),1e3)}},t.value))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={Water:.05,Energy:.01,Food:.03,Plants:.05,Metal:.1,Hardware:.06,Chemicals:.05,Drugs:.02,Robots:.5,AICores:.1,RealEstate:.005,"Real Estate":.005,"AI Cores":.1}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t){var e,n,a;a="",(n="errorMessage")in(e=this)?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,this.pid=t.pid,this.name=t.name,this.hostname=t.hostname,this.errorMessage=t.errorMessage,Object.freeze(this)}}Object.freeze(a),Object.freeze(a.prototype)},function(t,e,n){"use strict";function a(t,e=1){return Math.max(Math.floor(e*(32*Math.log(t+534.5)-200)),1)}function r(t,e=1){return Math.exp((t/e+200)/32)-534.6}function i(t,e=1){const n=a(t,e),i=n+1;let o=r(n,e);o<0&&(o=0);let s=r(i,e);s<0&&(s=0);let l=s-o!=0?100*(t-o)/(s-o):99.99;l<0&&(l=0),l>100&&(l=100);let c=t-o,f=s-t;return c<0&&(c=0),f<0&&(f=0),{currentSkill:n,nextSkill:i,baseExperience:o,experience:t,nextExperience:s,currentExperience:c,remainingExperience:f,progress:l}}n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return i}))},,function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r})),function(t){t.Weapon="w",t.Armor="a",t.Vehicle="v",t.Rootkit="r",t.Augmentation="g"}(a||(a={}));const r=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:a.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:a.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:a.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:a.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:a.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:a.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:a.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:a.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:a.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:a.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:a.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:a.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:a.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:a.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:a.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:a.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:a.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:a.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:a.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:a.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:a.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:a.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:a.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:a.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:a.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:a.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:a.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:a.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:a.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:a.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:a.Augmentation}]},,function(t,e,n){"use strict";n.d(e,"b",(function(){return C})),n.d(e,"a",(function(){return x})),n.d(e,"c",(function(){return O})),n.d(e,"d",(function(){return T}));var a=n(0),r=n.n(a),i=n(126),o=n(144),s=n(1),l=n(21),c=n(10),f=n(55),u=n(442),m=n.n(u),h=n(1019),d=n(115),p=n(139),g=n(586),y=n.n(g),b=n(182),E=n(193),v=n(25),k=n(229),_=n(2),w=n(173);let S=0;const C=new i.a,x=new i.a;let L=[];function O(){const t=Object(a.useState)(!0)[1];function e(){t(t=>!t)}return Object(a.useEffect)(()=>C.subscribe(t=>{const n=t.server+"-"+t.filename+t.args.map(t=>""+t).join("-");L.find(t=>t.id===n)||(L.push({id:n,script:t}),e())}),[]),Object(a.useEffect)(()=>x.subscribe(()=>{L=[],e()})),r.a.createElement(r.a.Fragment,null,L.map(t=>r.a.createElement(A,{key:t.id,script:t.script,id:t.id,onClose:()=>{return n=t.id,L=L.filter(t=>t.id!==n),void e();var n}})))}const M=Object(d.a)(t=>Object(p.a)({title:{"&.is-minimized + *":{border:"none",margin:0,"max-height":0,padding:0,"pointer-events":"none",visibility:"hidden"}},logs:{overflowY:"scroll",overflowX:"hidden",scrollbarWidth:"auto",display:"flex",flexDirection:"column-reverse"},success:{color:t.colors.success},error:{color:t.palette.error.main},primary:{color:t.palette.primary.main},info:{color:t.palette.info.main},warning:{color:t.palette.warning.main}})),T=1500;function A(t){const e=Object(a.useRef)(null),n=Object(a.useRef)(null),[i,u]=Object(a.useState)(t.script),d=M(),p=Object(a.useRef)(null),g=Object(a.useState)(!1)[1],[C,x]=Object(a.useState)(!1);function L(){g(t=>!t)}function O(){const t=p.current;null!==t&&(t.style.zIndex=T+S+"",S++,L())}function A(t=!1){const e=`${i.filename} ${i.args.map(t=>""+t).join(" ")}`;return t||e.length<=30?e:e.slice(0,27)+"..."}Object(a.useEffect)(()=>{O();const t=setInterval(L,1e3);return()=>clearInterval(t)},[]),Object(a.useEffect)(()=>(window.addEventListener("resize",R),()=>{window.removeEventListener("resize",R)}),[]);const R=Object(w.debounce)(()=>{const t=null==e?void 0:e.current;t&&(N(t)||P())},100),N=t=>{const e=t.getBoundingClientRect();return!(e.right<0||e.bottom<0||e.left>innerWidth||e.top>outerWidth)},P=()=>{const t=null==n?void 0:n.current;if(!t)return;const e=t.state;e.x=0,e.y=0,t.setState(e)};return r.a.createElement(m.a,{handle:".drag",onDrag:t=>{if(t.clientX<0||t.clientY<0||t.clientX>innerWidth||t.clientY>innerHeight)return!1},ref:n},r.a.createElement(f.a,{style:{display:"flex",flexFlow:"column",position:"fixed",left:"40%",top:"30%",zIndex:1400},ref:p},r.a.createElement("div",{onMouseDown:O},r.a.createElement(f.a,{className:d.title+" "+(C?"is-minimized":""),style:{cursor:"grab"}},r.a.createElement(l.a,{className:"drag",display:"flex",alignItems:"center",ref:e},r.a.createElement(s.a,{color:"primary",variant:"h6",title:A(!0)},A()),r.a.createElement(l.a,{position:"absolute",right:0},!b.a.has(i.pid)&&r.a.createElement(c.a,{onClick:function(){const t=Object(v.d)(i.server);if(null===t)return;const e=Object(k.a)(i.filename,i.args,t);null===e?Object(E.e)(_.a,i,t):u(e)}},"Run"),b.a.has(i.pid)&&r.a.createElement(c.a,{onClick:function(){Object(o.a)(i,i.server,!0)}},"Kill"),r.a.createElement(c.a,{onClick:function(){x(!C)}},C?"🗖":"🗕"),r.a.createElement(c.a,{onClick:t.onClose},"Close")))),r.a.createElement(f.a,{sx:{overflow:"scroll",overflowWrap:"break-word",whiteSpace:"pre-wrap"}},r.a.createElement(h.ResizableBox,{className:d.logs,height:500,width:500,handle:r.a.createElement("span",{style:{position:"absolute",right:"-10px",bottom:"-13px",cursor:"nw-resize"}},r.a.createElement(y.a,{color:"primary",style:{transform:"rotate(45deg)"}}))},r.a.createElement(l.a,null,i.logs.map((t,e)=>{return r.a.createElement(s.a,{key:e,className:(n=t,n.match(/(^\[[^\]]+\] )?ERROR/)||n.match(/(^\[[^\]]+\] )?FAIL/)?d.error:n.match(/(^\[[^\]]+\] )?SUCCESS/)?d.success:n.match(/(^\[[^\]]+\] )?WARN/)?d.warning:n.match(/(^\[[^\]]+\] )?INFO/)?d.info:d.primary)},t,r.a.createElement("br",null));var n})))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new Map},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"d",(function(){return o})),n.d(e,"e",(function(){return s})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"f",(function(){return f}));var a=n(7),r=n(39);function i(t,e,n,i,o){return r.b.HashesPerLevel*t*Math.pow(1.07,Math.log2(n))*(1+(i-1)/5)*(1-e/n)*o*a.a.HacknetNodeMoney}function o(t,e=1,n=1){const a=Math.round(e);if(isNaN(a)||a<1)return 0;if(t>=r.b.MaxLevel)return 1/0;const i=r.b.UpgradeLevelMult;let o=0,s=t;for(let t=0;t=r.b.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(t)),s=t;for(let t=0;t=r.b.MaxCores)return 1/0;const i=r.b.UpgradeCoreMult;let o=0,s=t;for(let t=0;t=r.b.MaxCache)return 1/0;const a=r.b.UpgradeCacheMult;let i=0,o=t;for(let t=0;t=r.b.MaxServers?1/0:r.b.BaseCost*Math.pow(r.b.PurchaseMult,t-1)*e}},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.Field=0]="Field",t[t.Hacking=1]="Hacking",t[t.None=2]="None",t[t.Security=3]="Security"}(a||(a={}))},,function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(330),r=n(275),i=n(20),o=n(1),s=n(0),l=n.n(s);function c({checked:t,onChange:e,text:n,tooltip:c}){const[f,u]=Object(s.useState)(t);return Object(s.useEffect)(()=>e(f),[f]),l.a.createElement(a.a,{control:l.a.createElement(r.a,{checked:f,onChange:function(t){u(t.target.checked)}}),label:l.a.createElement(i.a,{title:l.a.createElement(o.a,null,c)},l.a.createElement(o.a,null,n))})}},,function(t,e,n){"use strict";function a(t){const e=Object.assign({},{progress:0,totalTicks:20},t);e.progress=Math.max(Math.min(e.progress,1),0);const n=Math.max(Math.floor(e.progress/(1/e.totalTicks)),1),a=Math.max(e.totalTicks-n,0);return`[${"|".repeat(n)}${"-".repeat(a)}]`}n.d(e,"a",(function(){return a}))},,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return A})),n.d(e,"c",(function(){return R})),n.d(e,"e",(function(){return P})),n.d(e,"f",(function(){return F})),n.d(e,"b",(function(){return D})),n.d(e,"d",(function(){return j}));var a=n(144),r=n(176),i=n(408),o=n(182),s=n(292),l=n(516),c=n(9),f=n(584),u=n(108),m=n(517),h=n(626),d=n(1391),p=n(361),g=n(633),y=n(229),b=n(25),E=n(8),v=n(667),k=n(15),_=n(253),w=n(514),S=n(147),C=n(409),x=n(252),L=n(300),O=n(81),M=n(2),T=n(88);const A=[];for(let t=0;t{i=!0;let e=t.source.value;e.startsWith("./")&&(e=e.slice(2));const n=function(t){for(let e=0;e{n.push(t.id.name),a.push(t)}}),r+=`var ${e};\n(function (namespace) {\n`,a.forEach(t=>{r+=Object(v.generate)(t),r+="\n"}),n.forEach(t=>{r+="namespace."+t+" = "+t,r+="\n"}),r+=`})(${e} || (" + namespace + " = {}));\n`}else{const e=[];t.specifiers.forEach(t=>{e.push(t.local.name)});const n=[];Object(L.b)(o,{FunctionDeclaration:t=>{e.includes(t.id.name)&&n.push(t)}}),n.forEach(t=>{r+=Object(v.generate)(t),r+="\n"})}}}),!i)return{code:t,lineOffset:0};let o=0;if("Program"!==n.type||null==n.body)throw new Error("Code could not be properly parsed");for(let t=n.body.length-1;t>=0;--t)"ImportDeclaration"===n.body[t].type&&(n.body.splice(t,1),++o);const s=(r.match(/\n/g)||[]).length-o;t=Object(v.generate)(n);return{code:t=r+t,lineOffset:s}}(e,t);n=a.code,i=a.lineOffset}catch(e){return Object(k.a)("Error processing Imports in "+t.name+":
"+e),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}const o=function(e,n){const i=Object(m.a)(t);for(const o of Object.keys(i)){const s=i[o];if("function"==typeof s)if(["hack","grow","weaken","sleep","prompt","manualHack","scp","write","share","wget"].includes(o)){const i=function(...n){const i=[];for(let t=0;t`;return s+="
",s+=o,Object(k.a)(s),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}}))};e.setProperty(n,o,e.createAsyncFunction(i))}else if("sprintf"===o||"vsprintf"===o||"scp"===o||"write"==o||"tryWrite"===o||"run"===o||"exec"===o){const t=function(...t){const n=[];for(let a=0;a"+e),t.env.stopFlag=!0,t.running=!1,Object(a.a)(t),Promise.resolve()}return new Promise((function(e,n){try{!function a(){try{if(t.env.stopFlag)return n(new r.a(t));let i=!0,o=0;for(;o<3&&i;)i=i&&s.step(),o++;i?setTimeout(a,E.a.CodeInstructionRunTime):e()}catch(e){return e=e.toString(),Object(u.a)(e)||(e=Object(u.b)(t,e)),t.errorMessage=e,n(new r.a(t))}}()}catch(e){return Object(S.a)(e)?(t.errorMessage=e,n(new r.a(t))):e instanceof r.a?n(e):(console.error(e),n(new r.a(t)))}}))}function P(t,e,n,a){return I(t,e,n,a)?(n.runScript(e),e.pid):0}function I(t,e,n,c){let f=1;e.threads&&!isNaN(e.threads)?f=e.threads:e.threads=1;const d=Object(g.a)(e),p=Object(w.a)(d*f);if(p>n.maxRam-n.ramUsed)return Object(k.a)(`Not enough RAM to run script ${e.filename} with args `+Object(_.a)(e.args)+". This likely occurred because you re-loaded the game and the script's RAM usage increased (either because of an update to the game or your changes to the script.)"),!1;n.updateRamUsed(Object(w.a)(n.ramUsed+p),M.a);const y=Object(l.a)();if(-1===y)throw new Error("Failed to start script because could not find available PID. This is most because you have too many scripts running.");const b=new i.a(e,y,m.a);b.ramUsage=d,o.a.set(y,b),s.a.emit();let E=null;if(b.name.endsWith(".js")||b.name.endsWith(".ns"))E=function(t,e){e.running=!0;let n=null;function a(t,a){return function(...i){if(e.env.stopFlag)throw new r.a(e);if("asleep"===t)return a(...i);if(n)throw e.errorMessage=Object(u.b)(e,Object(C.sprintf)("Concurrent calls to Netscript functions are not allowed! Did you forget to await hack(), grow(), or some other promise-returning function? (Currently running: %s tried to run: %s)",n,t)),new r.a(e);let o;n=t;try{o=a(...i)}catch(t){throw n=null,t}return o&&void 0!==o.finally?o.finally((function(){n=null})):(n=null,o)}}return function t(e,...n){for(const r of Object.keys(e))switch(typeof e[r]){case"function":e[r]=a([...n,r].join("."),e[r]);break;case"object":if(Array.isArray(e[r]))continue;t(e[r],...n,r)}}(e.env.vars),new Promise((n,a)=>{Object(h.b)(t,e.getServer().scripts,e).then(()=>{n()}).catch(t=>a(t))}).catch(t=>{if(t instanceof Error)throw t instanceof SyntaxError?e.errorMessage=Object(u.b)(e,t.message+" (sorry we can't be more helpful)"):e.errorMessage=Object(u.b)(e,t.message+(t.stack&&"\nstack:\n"+t.stack.toString()||"")),new r.a(e);if(Object(u.a)(t))throw e.errorMessage=t,new r.a(e);if(t instanceof r.a)throw t;throw e.errorMessage=Object(u.b)(e,""+t),new r.a(e)})}(t,b);else if(E=N(b),!(E instanceof Promise))return!1;return E.then((function(){b.running=!1,b.env.stopFlag=!0,void 0!==c&&c.running&&(c.scriptRef.onlineExpGained+=e.onlineExpGained,c.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),Object(a.a)(b),b.log("",()=>"Script finished running")})).catch((function(t){if(t instanceof Error)return Object(k.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("Evaluating workerscript returns an Error. THIS SHOULDN'T HAPPEN: "+t.toString());if(t instanceof r.a){if(!Object(u.a)(b.errorMessage))return void b.log("",()=>"Script killed");{const t=b.errorMessage.split("|DELIMITER|");if(4!=t.length)return console.error("ERROR: Something wrong with Error text in evaluator..."),void console.error("Error text: "+b.errorMessage);const e=t[1],n=t[2],a=t[3];let r=`RUNTIME ERROR
${n}@${e} (PID - ${b.pid})
`;b.args.length>0&&(r+=`Args: ${Object(_.a)(b.args)}
`),r+="
",r+=a,Object(k.a)(r),b.log("",()=>"Script crashed with runtime error")}}else{if(Object(u.a)(t))return Object(k.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("ERROR: Evaluating workerscript returns only error message rather than WorkerScript object. THIS SHOULDN'T HAPPEN: "+t.toString());Object(k.a)("An unknown script died for an unknown reason. This is a bug please contact game dev"),console.error(t)}Object(a.a)(b)})),!0}function F(t=1){const e=t*c.a._idleSpeed/1e3;for(const t of o.a.values())t.scriptRef.onlineRunningTime+=e}function D(t){const e=-1!==window.location.href.toLowerCase().indexOf("?noscripts");e&&(T.a.warn("Skipped loading player scripts during startup"),console.info("Skipping the load of any scripts during startup"));for(const n of Object(b.c)()){n.ramUsed=0;for(let t=0;t`Invalid arguments: scriptname='${a} args='${r}'`),console.error("runScriptFromScript() failed due to invalid arguments"),0;r.forEach((t,e)=>{if("string"!=typeof t&&"number"!=typeof t&&"boolean"!=typeof t)throw new Error(`Only strings, numbers, and booleans can be passed as arguments to other scripts.\n${a} argument index ${e} is of type ${typeof t} and value ${JSON.stringify(t)}`)});if(null!=n.getRunningScript(a,r))return o.log(e,()=>`'${a}' is already running on '${n.hostname}'`),0;for(let t=0;t"Cannot execute a script with null/undefined as an argument"),0;for(let i=0;i`You do not have root access on '${n.hostname}'`),0;if(c>f)return o.log(e,()=>`Cannot run script '${a}' (t=${s}) on '${n.hostname}' because there is not enough available RAM!`),0;o.log(e,()=>`'${a}' on '${n.hostname}' with ${s} threads and args: ${Object(_.a)(r)}.`);const u=new p.a(l,r);return u.threads=s,u.server=n.hostname,P(t,u,n,o)}return o.log(e,()=>`Could not find script '${a}' on '${n.hostname}'`),0}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(0),r=n.n(a),i=n(61),o=n(140),s=n(151),l=n(47),c=n(1);function f({rows:t,title:e,wide:n}){const a=n?s.a:i.a;return r.a.createElement(r.a.Fragment,null,e&&r.a.createElement(c.a,null,e),r.a.createElement(a,{size:"small",padding:"none"},r.a.createElement(o.a,null,t.map((t,e)=>r.a.createElement(l.a,{key:e},t.map((t,e)=>r.a.createElement(i.b,{key:e,align:0!==e?"right":"left"},r.a.createElement(c.a,{noWrap:!0},t))))))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={}){r(this,"name","InitName"),r(this,"qty",0),r(this,"qlt",0),r(this,"dmd",0),r(this,"dmdR",[0,0]),r(this,"cmp",0),r(this,"cmpR",[0,0]),r(this,"mv",0),r(this,"mku",0),r(this,"buy",0),r(this,"sll",0),r(this,"prd",0),r(this,"imp",0),r(this,"exp",[]),r(this,"totalExp",0),r(this,"bCost",0),r(this,"sCost",0),r(this,"prdman",[!1,0]),r(this,"sllman",[!1,0]),r(this,"marketTa1",!1),r(this,"marketTa2",!1),r(this,"marketTa2Price",0),r(this,"maxsll",0),t.name&&(this.name=t.name),this.init()}getMarkupLimit(){return this.qlt/this.mku}init(){switch(this.name){case"Water":this.dmd=75,this.dmdR=[65,85],this.cmp=50,this.cmpR=[40,60],this.bCost=1500,this.mv=.2,this.mku=6;break;case"Energy":this.dmd=90,this.dmdR=[80,99],this.cmp=80,this.cmpR=[65,95],this.bCost=2e3,this.mv=.2,this.mku=6;break;case"Food":this.dmd=80,this.dmdR=[70,90],this.cmp=60,this.cmpR=[35,85],this.bCost=5e3,this.mv=1,this.mku=3;break;case"Plants":this.dmd=70,this.dmdR=[20,90],this.cmp=50,this.cmpR=[30,70],this.bCost=3e3,this.mv=.6,this.mku=3.75;break;case"Metal":this.dmd=80,this.dmdR=[75,85],this.cmp=70,this.cmpR=[60,80],this.bCost=2650,this.mv=1,this.mku=6;break;case"Hardware":this.dmd=85,this.dmdR=[80,90],this.cmp=80,this.cmpR=[65,95],this.bCost=8e3,this.mv=.5,this.mku=1;break;case"Chemicals":this.dmd=55,this.dmdR=[40,70],this.cmp=60,this.cmpR=[40,80],this.bCost=9e3,this.mv=1.2,this.mku=2;break;case"Real Estate":this.dmd=50,this.dmdR=[5,99],this.cmp=50,this.cmpR=[25,75],this.bCost=8e4,this.mv=1.5,this.mku=1.5;break;case"Drugs":this.dmd=60,this.dmdR=[45,75],this.cmp=70,this.cmpR=[40,99],this.bCost=4e4,this.mv=1.6,this.mku=1;break;case"Robots":this.dmd=90,this.dmdR=[80,9],this.cmp=90,this.cmpR=[80,9],this.bCost=75e3,this.mv=.5,this.mku=1;break;case"AI Cores":this.dmd=90,this.dmdR=[80,99],this.cmp=90,this.cmpR=[80,9],this.bCost=15e3,this.mv=.8,this.mku=.5;break;case"Scientific Research":case"InitName":break;default:console.error("Invalid material type in init(): "+this.name)}}processMarket(){const t=1+Math.random()*this.mv/300,e=1+Math.random()*this.mv/100;Math.random()<.5?(this.cmp*=e,this.cmp>this.cmpR[1]&&(this.cmp=this.cmpR[1]),this.bCost*=1/t):(this.cmp*=1/e,this.cmpthis.dmdR[1]&&(this.dmd=this.dmdR[1]),this.bCost*=t):(this.dmd*=1/n,this.dmd=r.a.MaxLevel)return 1/0;const i=r.a.UpgradeLevelMult;let o=0,s=t;for(let t=0;t=r.a.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(t)),s=t;for(let t=0;t=r.a.MaxCores)return 1/0;const i=r.a.CoreBaseCost,o=r.a.UpgradeCoreMult;let s=0,l=t;for(let t=0;t1e10;return e&&Object(r.a)(a.createElement(a.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),e}class s extends a.Component{win(t,e){t.gainMoney(e,"casino")}reachedLimit(t){const e=t.getCasinoWinnings()>1e10;return e&&Object(r.a)(a.createElement(a.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),e}}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));const a=!1,r=!0,i={O:[[r,r],[r,r]],I:[[r,r,r,r]],L:[[a,a,r],[r,r,r]],J:[[r,a,a],[r,r,r]],S:[[a,r,r],[r,r,a]],Z:[[r,r,a],[a,r,r]],T:[[r,r,r],[a,r,a]]}},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(0),r=n.n(a);function i(t){return Object(a.useEffect)(()=>{function e(e){if(!e.isTrusted)return;t.onKeyDown.bind(this)(e)}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}),r.a.createElement(r.a.Fragment,null)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(1457),r=n(0),i=n.n(r),o=n(1762),s=n(60);const l=Object(o.a)(t=>({root:{backgroundColor:t.palette.background.paper},bar:{transition:"none",backgroundColor:t.palette.primary.main}}))(a.a);function c(t){const[e,n]=Object(r.useState)(100);return Object(r.useEffect)(()=>{const e=setInterval(()=>{n(e=>(e<=0&&t.onExpire(),e-200/t.millis*100))},200);return()=>{clearInterval(e)}},[]),i.a.createElement(s.a,{item:!0,xs:12},i.a.createElement(l,{variant:"determinate",value:e,color:"primary"}))}},function(t,e,n){"use strict";function a(t,e,n){function a(t,e,a){function r(t,e,n){return(1-n)*t+n*e}for(const i of Object.keys(t))n[i]=r(t[i],e[i],a);return t}return e<0?a(t.Trivial,t.Trivial,0):e>=0&&e<1?a(t.Trivial,t.Normal,e):e>=1&&e<2?a(t.Normal,t.Hard,e-1):e>=2&&e<3?a(t.Hard,t.Impossible,e-2):a(t.Impossible,t.Impossible,0)}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(422),r=n(149),i=n(752),o=n(16),s=n(1039);const l={};function c(t){if(!t.name)throw new Error("Invalid constructor parameters for Location. No 'name' property");return l[t.name]instanceof i.a&&console.warn(`Property with name ${t.name} already exists and is being overwritten`),l[t.name]=new i.a(t),l[t.name]}r.a[o.a.Aevum]=new a.a(o.a.Aevum),r.a[o.a.Chongqing]=new a.a(o.a.Chongqing),r.a[o.a.Ishima]=new a.a(o.a.Ishima),r.a[o.a.NewTokyo]=new a.a(o.a.NewTokyo),r.a[o.a.Sector12]=new a.a(o.a.Sector12),r.a[o.a.Volhaven]=new a.a(o.a.Volhaven),r.a[o.a.Aevum].asciiArt="\n [aevum police headquarters] 26 \n o \n I \\ [bachman & associates] \n \\ 56 B \n x \\ [summit university] \n \\ \\ 28 \n \\ [snap fitness gym] x o--L-----------N \n K \\ / \n \\ \\ Q [casino] \n x 58 \\ / [travel agency] \n \\ 94 95 o \n 90 x 59 o------o | \n \\ / \\ | 98 102 103 \n o--------O------x----o 93 96 o-----+------------o o----o \n \\ | \\ / \n [hospital] \\ 61 [ecorp] x 31 99 o-F-o 101 \n o | \n | o---E-- | [fulcrum tech.] \n x 62 / A [aerocorp] \n [crush fitness gym] | / | \n | / | \n o--------D------+--o o \n | |\\ [rho construction] \n H [netlink tech.] | J \n | | \\ \n | 34 x \\ \n [clarke inc.] C | \\ [world stock exchange] \n | | \\ \n | | o-M-------R--------o \n[galactic cybersystems] G 35 x \n | [watchdog security] \n | \n 67 o \n \n [the slums] P ",r.a[o.a.Chongqing].asciiArt="\n | \n 75 o \n \\ \n o 76 \n 7 | | \n | + 77 \n [world stock exchange] F | \n \\ o 78 [kuaigong international] \n \\ / \n 38 o----x--x------x------A------G-- \n / 39 | 41 [church] \n 37 o + 79 o--x--x-C-0 \n / | / \n / x-----+-----x-----0 [hospital] \n[solaris space system] B | \n | + 80 \n | | \n 34 o E [travel agency] \n | \n | \n x 82 \n [the slums] D ",r.a[o.a.Ishima].asciiArt="\n o 59 \n o o | \n [storm tech.] | | G [world stock exchange] \n | | 28 | \n 23 o--C------o--------+----x----o | \n / / 25 | 27 \\ x 57 \n / / | \\ | \n / / | \\ | \n o 22 o | \\| 29/56 \n | | o \n | [hospital] D / \\ 3 2 1 \n o | / \\ o-------x------o \n / o / \\ / \n 48 o / 55 x \\ / \n \\ / / x [glitch] \n \\ / [nova medical] / 4/30 \\ \n 49 x A \\ H \n / \\ / \\ \n / \\ [travel agency] F o 31 \n / \\ 51 / \n / o----B------x-----o \n o 50 52 \n [omega soft.] \n [the slums] E ",r.a[o.a.NewTokyo].asciiArt="\n \n \n o \n \\ \n [arcade] E [defcomm] \n \\ \n o--x---A--x--o [travel agency] \n 7 8 10 H \n [vitalife] o 12 [global pharmaceuticals] \n | \n o--D-x----x-------x-C-+--------x--x-B-x---x-o \n 21 22 23 \\ 24 25 26 27 \n \\ \n [noodle bar] x 14 \n \\ \n \\ \n [hospital] o 15 [world stock exchange] \n | \n o--x--F--x-----x-----x---+---x----x--I--x-o \n | \n | \n o 17 \n \n \n \n G [the slums] \n ",r.a[o.a.Sector12].asciiArt="\n 78 o 97 \n o [icarus microsystems] / \n N [powerhouse gym] o I \n 1 | | / \n o-----+---x----o 4 A [alpha ent.] o-------o / \n | 3 \\ | \\ / \n | \\ | [iron gym] x 95 \n (79) x \\ | / \\ \n | o-E----+----x----J--o 10 / o----T--o \n | | 8 \\ 94 x \n 80 x [city hall] | x 11 / [world stock exchange]\n | | \\ / \n | C [cia] \\ / \n Q [hospital] | F P [universal energy] \n | o [deltaone] \\ / \n | 35 o---------x 13/92/36 \n L [megacorp] 33 / / \\ \n | o------------o 34 / \\ \n (29) | / [carmichael sec.] D \\ \n o-----+-----x------o / O [rothman university] \n | 31 32 [nsa] M \n | / \n B [blade industries] H \n | / [four sigma] \n | [joe's guns] / \n | / \n 85 o--G--------K--------S-------o 88 [the slums] R \n \n [foodnstuff] [travel agency] ",r.a[o.a.Volhaven].asciiArt="\n [omnia cybersystems] \n 17 66 68 \n o o------G-------o \n \\ / \\ \n \\ o 65 o 69 \n [syscore sec.] H | | \n \\ | | [millenium fitness gym] \n \\ | 21 22 23 24 | 26 \n o----+--x--x----x---x---+-----x-------D-----o \n 19 | | 28 \n | F [omnitek inc.] \n [hospital] J 63 o \n | / 72 \n 3 | 5 6 / 9 \n o--------+----x-----x----+----------M-------o \n / | | \n / 61 x [helios labs] B [world stock exchange] \n [travel agency] L | | \n / | o \n / E [nwo] / 75 \n / [computek] | / \n / A-------o------I-----o \n 1 o | | \n | [zb] o 77 \n [lexocorp] C \n | \n o \n 57 \n \n \n [the slums] K ";for(const t of s.a){const e=c(t),n=e.city;if(null===n)for(const t of Object.keys(r.a))r.a[t].addLocation(e.name);else r.a[n].addLocation(e.name)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return c})),n.d(e,"b",(function(){return f}));var a=n(0),r=n.n(a),i=n(7),o=n(4),s=n(16);class l{constructor(t,e,n,a="",i=r.a.createElement(r.a.Fragment,null)){this.number=t,this.difficulty=e,this.name=n,this.desc=a,this.info=i}}const c={};function f(t){null==t.bitNodeN&&(t.bitNodeN=1);for(const t of Object.keys(i.a))i.a.hasOwnProperty(t)&&(i.a[t]=1);switch(i.a.StaneksGiftExtraSize=0,t.bitNodeN){case 1:break;case 2:i.a.HackingLevelMultiplier=.8,i.a.ServerGrowthRate=.8,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.4,i.a.CrimeMoney=3,i.a.InfiltrationMoney=3,i.a.FactionWorkRepGain=.5,i.a.FactionPassiveRepGain=0,i.a.StaneksGiftPowerMultiplier=2,i.a.StaneksGiftExtraSize=-6,i.a.PurchasedServerSoftcap=1.3,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=5;break;case 3:i.a.HackingLevelMultiplier=.8,i.a.RepToDonateToFaction=.5,i.a.AugmentationRepCost=3,i.a.AugmentationMoneyCost=3,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.2,i.a.ServerGrowthRate=.2,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.25,i.a.CrimeMoney=.25,i.a.HacknetNodeMoney=.25,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=2,i.a.StaneksGiftPowerMultiplier=.75,i.a.StaneksGiftExtraSize=-2,i.a.PurchasedServerSoftcap=1.3,i.a.GangSoftcap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.5;break;case 4:i.a.ServerMaxMoney=.15,i.a.ServerStartingMoney=.75,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.1,i.a.CrimeMoney=.2,i.a.HacknetNodeMoney=.05,i.a.CompanyWorkExpGain=.5,i.a.ClassGymExpGain=.5,i.a.FactionWorkExpGain=.5,i.a.HackExpGain=.4,i.a.CrimeExpGain=.5,i.a.FactionWorkRepGain=.75,i.a.StaneksGiftPowerMultiplier=1.5,i.a.StaneksGiftExtraSize=0,i.a.PurchasedServerSoftcap=1.2,i.a.WorldDaemonDifficulty=3,i.a.GangUniqueAugs=.5;break;case 5:i.a.ServerMaxMoney=2,i.a.ServerStartingSecurity=2,i.a.ServerStartingMoney=.5,i.a.ScriptHackMoney=.15,i.a.HacknetNodeMoney=.2,i.a.CrimeMoney=.5,i.a.InfiltrationRep=1.5,i.a.InfiltrationMoney=1.5,i.a.AugmentationMoneyCost=2,i.a.HackExpGain=.5,i.a.CorporationValuation=.5,i.a.StaneksGiftPowerMultiplier=1.3,i.a.StaneksGiftExtraSize=0,i.a.PurchasedServerSoftcap=1.2,i.a.WorldDaemonDifficulty=1.5,i.a.GangUniqueAugs=.5;break;case 6:i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.75,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.HackExpGain=.25,i.a.DaedalusAugsRequirement=1.166,i.a.PurchasedServerSoftcap=2,i.a.StaneksGiftPowerMultiplier=.5,i.a.StaneksGiftExtraSize=2,i.a.GangSoftcap=.7,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.2;break;case 7:i.a.BladeburnerRank=.6,i.a.BladeburnerSkillCost=2,i.a.AugmentationMoneyCost=3,i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.5,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.HackExpGain=.25,i.a.FourSigmaMarketDataCost=2,i.a.FourSigmaMarketDataApiCost=2,i.a.DaedalusAugsRequirement=1.166,i.a.PurchasedServerSoftcap=2,i.a.StaneksGiftPowerMultiplier=.9,i.a.StaneksGiftExtraSize=-1,i.a.GangSoftcap=.7,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.2;break;case 8:i.a.ScriptHackMoney=.3,i.a.ScriptHackMoneyGain=0,i.a.ManualHackMoney=0,i.a.CompanyWorkMoney=0,i.a.CrimeMoney=0,i.a.HacknetNodeMoney=0,i.a.InfiltrationMoney=0,i.a.RepToDonateToFaction=0,i.a.CorporationValuation=0,i.a.CodingContractMoney=0,i.a.StaneksGiftExtraSize=-7,i.a.PurchasedServerSoftcap=4,i.a.GangSoftcap=0,i.a.CorporationSoftCap=0,i.a.GangUniqueAugs=0;break;case 9:i.a.HackingLevelMultiplier=.5,i.a.StrengthLevelMultiplier=.45,i.a.DefenseLevelMultiplier=.45,i.a.DexterityLevelMultiplier=.45,i.a.AgilityLevelMultiplier=.45,i.a.CharismaLevelMultiplier=.45,i.a.PurchasedServerLimit=0,i.a.HomeComputerRamCost=5,i.a.CrimeMoney=.5,i.a.ScriptHackMoney=.1,i.a.HackExpGain=.05,i.a.ServerStartingMoney=.1,i.a.ServerMaxMoney=.1,i.a.ServerStartingSecurity=2.5,i.a.CorporationValuation=.5,i.a.FourSigmaMarketDataCost=5,i.a.FourSigmaMarketDataApiCost=4,i.a.BladeburnerRank=.9,i.a.BladeburnerSkillCost=1.2,i.a.StaneksGiftPowerMultiplier=.5,i.a.StaneksGiftExtraSize=2,i.a.GangSoftcap=.8,i.a.CorporationSoftCap=.7,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.25;break;case 10:i.a.HackingLevelMultiplier=.35,i.a.StrengthLevelMultiplier=.4,i.a.DefenseLevelMultiplier=.4,i.a.DexterityLevelMultiplier=.4,i.a.AgilityLevelMultiplier=.4,i.a.CharismaLevelMultiplier=.4,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.5,i.a.HacknetNodeMoney=.5,i.a.ManualHackMoney=.5,i.a.ScriptHackMoney=.5,i.a.CodingContractMoney=.5,i.a.InfiltrationMoney=.5,i.a.CorporationValuation=.5,i.a.AugmentationMoneyCost=5,i.a.AugmentationRepCost=2,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=5,i.a.PurchasedServerLimit=.6,i.a.PurchasedServerMaxRam=.5,i.a.BladeburnerRank=.8,i.a.StaneksGiftPowerMultiplier=.75,i.a.StaneksGiftExtraSize=-3,i.a.PurchasedServerSoftcap=1.1,i.a.GangSoftcap=.9,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=2,i.a.GangUniqueAugs=.25;break;case 11:i.a.HackingLevelMultiplier=.6,i.a.HackExpGain=.5,i.a.ServerMaxMoney=.1,i.a.ServerStartingMoney=.1,i.a.ServerGrowthRate=.2,i.a.ServerWeakenRate=2,i.a.CrimeMoney=3,i.a.CompanyWorkMoney=.5,i.a.HacknetNodeMoney=.1,i.a.AugmentationMoneyCost=2,i.a.InfiltrationMoney=2.5,i.a.InfiltrationRep=2.5,i.a.CorporationValuation=.1,i.a.CodingContractMoney=.25,i.a.FourSigmaMarketDataCost=4,i.a.FourSigmaMarketDataApiCost=4,i.a.PurchasedServerSoftcap=2,i.a.CorporationSoftCap=.9,i.a.WorldDaemonDifficulty=1.5,i.a.GangUniqueAugs=.75;break;case 12:{let e=0;for(let n=0;nu())return 1/0;const n=Math.max(0,Math.log(e)/Math.log(2)-6);return e*o.a.BaseCostFor1GBOfRamServer*i.a.PurchasedServerCost*Math.pow(i.a.PurchasedServerSoftcap,n)}function f(){return Math.round(o.a.PurchasedServerLimit*i.a.PurchasedServerLimit)}function u(){const t=Math.round(o.a.PurchasedServerMaxRam*i.a.PurchasedServerMaxRam);return 1<<31-Math.clz32(t)}function m(t,e,n,i){if(!i.canAfford(n))return void Object(s.a)("You don't have enough money to purchase this server!");if(i.purchasedServers.length>=f())return void Object(s.a)("You have reached the maximum limit of "+f()+" servers. You cannot purchase any more. You can delete some of your purchased servers using the deleteServer() Netscript function in a script");if(""==t)return void Object(s.a)("You must enter a hostname for your new server!");const o=Object(r.f)({adminRights:!0,hostname:t,ip:Object(a.e)(),isConnectedTo:!1,maxRam:e,organizationName:"",purchasedByPlayer:!0});Object(a.a)(o),i.purchasedServers.push(o.hostname);const l=i.getHomeComputer();l.serversOnNetwork.push(o.hostname),o.serversOnNetwork.push(l.hostname),i.loseMoney(n,"servers"),Object(s.a)("Server successfully purchased with hostname "+o.hostname)}function h(t){const e=t.getUpgradeHomeRamCost();if(!t.canAfford(e))return void Object(s.a)("You do not have enough money to purchase additional RAM for your home computer");const n=t.getHomeComputer();n.maxRam>=o.a.HomeComputerMaxRam?Object(s.a)("You cannot upgrade your home computer RAM because it is at its maximum possible value"):(n.maxRam*=2,t.loseMoney(e,"servers"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return l}));var a=n(15),r=n(24),i=n(81);class o{get filename(){return this.fn}set filename(t){this.fn=t}constructor(t="",e=""){this.fn=(t.endsWith(".txt")?t:t+".txt").replace(/\s+/g,""),this.text=e}append(t){this.text+=t}download(){const t=this.fn,e=new Blob([this.text],{type:"text/plain"}),n=window.navigator;if(n.msSaveOrOpenBlob)n.msSaveOrOpenBlob(e,t);else{const t=document.createElement("a"),n=URL.createObjectURL(e);t.href=n,t.download=this.fn,document.body.appendChild(t),t.click(),setTimeout(()=>{document.body.removeChild(t),window.URL.revokeObjectURL(n)},0)}}read(){return this.text}show(){Object(a.a)(`${this.fn}

${this.text}`)}toJSON(){return Object(r.b)("TextFile",this)}write(t){this.text=t}static fromJSON(t){return Object(r.a)(o,t.data)}}function s(t,e){let n=t.endsWith(".txt")?t:t+".txt";Object(i.h)(n)&&(n=Object(i.k)(n));for(const t of e.textFiles)if(t.fn===n)return t;return null}function l(t,e,n){if(null!==s(t,n))return void console.error(`A file named "${t}" already exists on server ${n.hostname}.`);const a=new o(t,e);return n.textFiles.push(a),a}r.c.constructors.TextFile=o},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(244),r=n(136);const i={};i[r.a.BladesIntuition]=new a.a({name:r.a.BladesIntuition,desc:"Each level of this skill increases your success chance for all Contracts, Operations, and BlackOps by 3%",baseCost:3,costInc:2.1,successChanceAll:3}),i[r.a.Cloak]=new a.a({name:r.a.Cloak,desc:"Each level of this skill increases your success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",baseCost:2,costInc:1.1,successChanceStealth:5.5}),i[r.a.ShortCircuit]=new a.a({name:r.a.ShortCircuit,desc:"Each level of this skill increases your success chance in Contracts, Operations, and BlackOps that involve retirement by 5.5%",baseCost:2,costInc:2.1,successChanceKill:5.5}),i[r.a.DigitalObserver]=new a.a({name:r.a.DigitalObserver,desc:"Each level of this skill increases your success chance in all Operations and BlackOps by 4%",baseCost:2,costInc:2.1,successChanceOperation:4}),i[r.a.Tracer]=new a.a({name:r.a.Tracer,desc:"Each level of this skill increases your success chance in all Contracts by 4%",baseCost:2,costInc:2.1,successChanceContract:4}),i[r.a.Overclock]=new a.a({name:r.a.Overclock,desc:"Each level of this skill decreases the time it takes to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 90)",baseCost:3,costInc:1.4,maxLvl:90,actionTime:1}),i[r.a.Reaper]=new a.a({name:r.a.Reaper,desc:"Each level of this skill increases your effective combat stats for Bladeburner actions by 2%",baseCost:2,costInc:2.1,effStr:2,effDef:2,effDex:2,effAgi:2}),i[r.a.EvasiveSystem]=new a.a({name:r.a.EvasiveSystem,desc:"Each level of this skill increases your effective dexterity and agility for Bladeburner actions by 4%",baseCost:2,costInc:2.1,effDex:4,effAgi:4}),i[r.a.Datamancer]=new a.a({name:r.a.Datamancer,desc:"Each level of this skill increases your effectiveness in synthoid population analysis and investigation by 5%. This affects all actions that can potentially increase the accuracy of your synthoid population/community estimates.",baseCost:3,costInc:1,successChanceEstimate:5}),i[r.a.CybersEdge]=new a.a({name:r.a.CybersEdge,desc:"Each level of this skill increases your max stamina by 2%",baseCost:1,costInc:3,stamina:2}),i[r.a.HandsOfMidas]=new a.a({name:r.a.HandsOfMidas,desc:"Each level of this skill increases the amount of money you receive from Contracts by 10%",baseCost:2,costInc:2.5,money:10}),i[r.a.Hyperdrive]=new a.a({name:r.a.Hyperdrive,desc:"Each level of this skill increases the experience earned from Contracts, Operations, and BlackOps by 10%",baseCost:1,costInc:2.5,expGain:10})},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(179),r=n(1009);const i={};a.b.forEach(t=>{i[t.name]=new r.a(t.name,t.cost,t.upgType,t.mults)})},function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(148),r=n(76),i=n(9);function o(t,e,n){if(isNaN(e)||e<=0||!(t instanceof a.a))return null;e=Math.min(e,t.maxShares);return n===r.a.Long?e*t.getAskPrice()+i.a.StockMarketCommission:e*t.getBidPrice()+i.a.StockMarketCommission}function s(t,e,n){if(isNaN(e)||e<=0||!(t instanceof a.a))return null;e=Math.min(e,t.maxShares);if(n===r.a.Long)return e*t.getBidPrice()-i.a.StockMarketCommission;return e*t.playerAvgShortPx+((t.playerAvgShortPx-t.getAskPrice())*e-i.a.StockMarketCommission)}function l(t,e){if(isNaN(e)||e<=0||!(t instanceof a.a))return;e=Math.min(e,t.maxShares);const n=t.shareTxUntilMovement;if(e<=n)return t.shareTxUntilMovement-=e,void(t.shareTxUntilMovement<=0&&(t.shareTxUntilMovement=t.shareTxForMovement,t.influenceForecast(.006),t.influenceForecastForecast(t.mv/100*.006)));const r=e-n;let i=1+Math.ceil(r/t.shareTxForMovement);t.shareTxUntilMovement=t.shareTxForMovement-(e-t.shareTxUntilMovement)%t.shareTxForMovement,(t.shareTxUntilMovement===t.shareTxForMovement||t.shareTxUntilMovement<=0)&&(++i,t.shareTxUntilMovement=t.shareTxForMovement);const o=.006*(i-1),s=o*(t.mv/100);t.influenceForecast(o),t.influenceForecastForecast(s)}function c(t,e,n){if(!(t instanceof a.a))return 0;const o=e===r.a.Long,s=n-i.a.StockMarketCommission,l=o?t.getAskPrice():t.getBidPrice();return Math.floor(s/l)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return l}));var a=n(7),r=n(9);function i(){return r.a.MarketData4SCost*a.a.FourSigmaMarketDataCost}function o(){return r.a.MarketDataTixApi4SCost*a.a.FourSigmaMarketDataApiCost}function s(){return r.a.WSEAccountCost}function l(){return r.a.TIXAPICost}},,,,function(t,e,n){"use strict";n.d(e,"c",(function(){return f})),n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return m}));var a=n(9),r=n(2),i=n(46),o=n(133),s=n(25),l=n(5),c=n(317);function f(t){const e=((new Date).getTime()-r.a.lastUpdate)/1e3;let n=t.onlineRunningTime/14400;n>=1&&(n=1);for(const n of Object.keys(t.dataMap))if(t.dataMap.hasOwnProperty(n)){if(0==t.dataMap[n][2]||null==t.dataMap[n][2])continue;const a=Object(s.d)(n);if(null==a)continue;const c=Math.round(.5*t.dataMap[n][2]/t.onlineRunningTime*e);t.log(`Called on ${a.hostname} ${c} times while offline`);const f=Object(s.d)(t.server);if(null===f)throw new Error("getServer of null key?");if(!(a instanceof i.a))throw new Error("trying to grow a non-normal server");const u=Object(o.e)(a,c,r.a,f.cpuCores);t.log(`'${a.hostname}' grown by ${l.a.format(100*u-100,"0.000000%")} while offline`)}const c=n*(t.onlineExpGained/t.onlineRunningTime)*e;r.a.gainHackingExp(c),t.offlineRunningTime+=e,t.offlineExpGained+=c;for(const n of Object.keys(t.dataMap))if(t.dataMap.hasOwnProperty(n)){if(0==t.dataMap[n][3]||null==t.dataMap[n][3])continue;const r=Object(s.d)(n);if(null==r)continue;if(!(r instanceof i.a))throw new Error("trying to weaken a non-normal server");const o=Object(s.d)(t.server);if(null===o)throw new Error("getServer of null key?");const l=Math.round(.5*t.dataMap[n][3]/t.onlineRunningTime*e);t.log(`Called weaken() on ${r.hostname} ${l} times while offline`);const c=1+(o.cpuCores-1)/16;r.weaken(a.a.ServerWeakenAmount*l*c)}}function u(t,e,n){for(let a=0;aObject(o.a)({money:{color:t.colors.money}}));function l({hashes:t}){const e=s();return a.createElement("span",{className:e.money},"number"==typeof t?r.a.formatHashes(t):t)}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return D}));var a=n(24),r=n(257),i=n(42),o=n(531),s=n(269),l=n(138),c=n(343),f=n(642),u=n(255),m=n(23),h=n(222),d=n(244),p=n(419),g=n(26),y=n(643),b=n(267),E=n(33),v=n(62),k=n(5),_=n(7),w=n(301),S=n(204),C=n(28),x=n(394),L=n(15),O=n(8),M=n(56),T=n(14),A=n(1003),R=n(106),N=n(4),P=n(59),I=n(27);function F(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class D{constructor(t){F(this,"numHosp",0),F(this,"moneyLost",0),F(this,"rank",0),F(this,"maxRank",0),F(this,"skillPoints",0),F(this,"totalSkillPoints",0),F(this,"teamSize",0),F(this,"teamLost",0),F(this,"hpLost",0),F(this,"storedCycles",0),F(this,"randomEventCounter",Object(E.a)(240,600)),F(this,"actionTimeToComplete",0),F(this,"actionTimeCurrent",0),F(this,"actionTimeOverflow",0),F(this,"action",new r.a({type:i.a.Idle})),F(this,"cities",{}),F(this,"city",v.a.CityNames[2]),F(this,"skills",{}),F(this,"skillMultipliers",{}),F(this,"staminaBonus",0),F(this,"maxStamina",0),F(this,"stamina",0),F(this,"contracts",{}),F(this,"operations",{}),F(this,"blackops",{}),F(this,"logging",{general:!0,contracts:!0,ops:!0,blackops:!0,events:!0}),F(this,"automateEnabled",!1),F(this,"automateActionHigh",new r.a({type:i.a.Idle})),F(this,"automateThreshHigh",0),F(this,"automateActionLow",new r.a({type:i.a.Idle})),F(this,"automateThreshLow",0),F(this,"consoleHistory",[]),F(this,"consoleLogs",["Bladeburner Console","Type 'help' to see console commands"]);for(let t=0;tthis.rank)return{error:"Tried to start a Black Operation without the rank requirement"};const n=[];for(const t of Object.keys(s.a))s.a.hasOwnProperty(t)&&n.push(t);n.sort((function(t,e){return s.a[t].reqdRank-s.a[e].reqdRank}));const a=n.indexOf(t.name);return-1===a?{error:`Invalid Black Op: '${name}'`}:a>0&&null==this.blackops[n[a-1]]?{error:`Preceding Black Op must be completed before starting '${t.name}'.`}:{isAvailable:!0,action:e}}startAction(t,e){if(null!=e)switch(this.action=e,this.actionTimeCurrent=0,e.type){case i.a.Idle:this.actionTimeToComplete=0;break;case i.a.Contract:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Contract Object for: "+e.name);if(t.count<1)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.Operation:try{const t=this.getActionObject(e);if(null==t)throw new Error("Failed to get Operation Object for: "+e.name);if(t.count<1)return this.resetAction();if("Raid"===e.name&&0===this.getCurrentCity().comms)return this.resetAction();this.actionTimeToComplete=t.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const t=this.canAttemptBlackOp(e);if(!t.isAvailable){this.resetAction(),this.log("Error: "+t.error);break}if(void 0===t.action)throw new Error("action should not be null");this.actionTimeToComplete=t.action.getActionTime(this)}catch(t){Object(b.a)(t)}break;case i.a.Recruitment:this.actionTimeToComplete=this.getRecruitmentTime(t);break;case i.a.Training:case i.a.FieldAnalysis:case i.a["Field Analysis"]:this.actionTimeToComplete=30;break;case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:this.actionTimeToComplete=60;break;default:throw new Error("Invalid Action Type in startAction(Bladeburner,player, ): "+e.type)}}upgradeSkill(t){const e=t.name;if(this.skills[e]?++this.skills[e]:this.skills[e]=1,isNaN(this.skills[e])||this.skills[e]<0)throw new Error("Level of Skill "+e+" is invalid: "+this.skills[e]);this.updateSkillMultipliers()}executeConsoleCommands(t,e){try{this.consoleHistory[this.consoleHistory.length-1]!=e&&(this.consoleHistory.push(e),this.consoleHistory.length>50&&this.consoleHistory.splice(0,1));const n=e.split(";");for(let e=0;e100&&this.consoleLogs.shift())}log(t){this.postToConsole(`[${Object(A.a)()}] ${t}`)}resetAction(){this.action=new r.a({type:i.a.Idle})}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const t=C.a[N.a.Bladeburners];this.rank>=v.a.RankNeededForFaction&&Object(R.e)(t)}storeCycles(t=0){this.storedCycles+=t}getActionIdFromTypeAndName(t="",e=""){if(""===t||""===e)return null;const n=new r.a,a=t.toLowerCase().trim(),o=e.toLowerCase().trim();switch(a){case"contract":case"contracts":case"contr":return n.type=i.a.Contract,this.contracts.hasOwnProperty(e)?(n.name=e,n):null;case"operation":case"operations":case"op":case"ops":return n.type=i.a.Operation,this.operations.hasOwnProperty(e)?(n.name=e,n):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return n.type=i.a.BlackOp,s.a.hasOwnProperty(e)?(n.name=e,n):null;case"general":case"general action":case"gen":break;default:return null}if(a.startsWith("gen")){switch(o){case"training":n.type=i.a.Training,n.name="Training";break;case"recruitment":case"recruit":n.type=i.a.Recruitment,n.name="Recruitment";break;case"field analysis":case"fieldanalysis":n.type=i.a["Field Analysis"],n.name="Field Analysis";break;case"diplomacy":n.type=i.a.Diplomacy,n.name="Diplomacy";break;case"hyperbolic regeneration chamber":n.type=i.a["Hyperbolic Regeneration Chamber"],n.name="Hyperbolic Regeneration Chamber";break;case"incite violence":n.type=i.a["Incite Violence"],n.name="Incite Violence";break;default:return null}return n}return null}executeStartConsoleCommand(t,e){if(3!==e.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const n=e[2];switch(e[1].toLowerCase()){case"general":case"gen":null!=u.a[n]?(this.action.type=i.a[n],this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid action name specified: "+e[2]);break;case"contract":case"contracts":null!=this.contracts[n]?(this.action.type=i.a.Contract,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid contract name specified: "+e[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[n]?(this.action.type=i.a.Operation,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid Operation name specified: "+e[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=s.a[n]?(this.action.type=i.a.BlackOperation,this.action.name=n,this.startAction(t,this.action)):this.postToConsole("Invalid BlackOp name specified: "+e[2]);break;default:this.postToConsole("Invalid action/event type specified: "+e[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(t){switch(t.length){case 1:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 2:if("list"===t[1].toLowerCase()){this.postToConsole("Skills: ");const t=Object.keys(h.a);for(let e=0;e=n.maxLvl?this.postToConsole(`This skill ${n.name} is already at max level (${t}/${n.maxLvl}).`):this.skillPoints>=a?(this.skillPoints-=a,this.upgradeSkill(n),this.log(n.name+" upgraded to Level "+this.skills[e])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+Object(m.d)(a,0))}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break}default:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info")}}executeLogConsoleCommand(t){if(t.length<3)return this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]"),void this.postToConsole("Use 'help log' for more details and examples");let e=!0;switch(t[1].toLowerCase().includes("d")&&(e=!1),t[2].toLowerCase()){case"general":case"gen":this.logging.general=e,this.log("Logging "+(e?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=e,this.log("Logging "+(e?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=e,this.log("Logging "+(e?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=e,this.log("Logging "+(e?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=e,this.log("Logging "+(e?"enabled":"disabled")+" for events");break;case"all":this.logging.general=e,this.logging.contracts=e,this.logging.ops=e,this.logging.blackops=e,this.logging.events=e,this.log("Logging "+(e?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+t[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(t){if(1===t.length)for(const t of y.a.helpList)this.postToConsole(t);else for(let e=1;e0&&(i*=Object(E.a)(2,4),--a.comms,++n.comms);const o=Math.round(a.pop*i);a.pop-=o,n.pop+=o}triggerPotentialMigration(t,e){(null==e||isNaN(e))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),e>1&&(e/=100),Math.random()=1){let a;a=t?Math.ceil(n/2):Math.floor(n);const r=Object(E.a)(0,a);this.teamSize-=r,this.teamLost+=r,this.logging.ops&&r>0&&this.log("Lost "+Object(m.d)(r,0)+" team members during this "+e.name)}const a=this.getCurrentCity();switch(e.name){case"Investigation":t?a.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":t?a.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":t&&a.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByCount(.1);break;case"Raid":if(t)a.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--a.comms;else{const t=Object(E.a)(-10,-5)/10;a.changePopulationByPercentage(t,{nonZero:!0,changeEstEqually:!1})}a.changeChaosByPercentage(Object(E.a)(1,5));break;case"Stealth Retirement Operation":t&&a.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),a.changeChaosByPercentage(Object(E.a)(-3,-1));break;case"Assassination":t&&a.changePopulationByCount(-1,{estChange:-1,estOffset:0}),a.changeChaosByPercentage(Object(E.a)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(t){switch(t.type){case i.a.Contract:return this.contracts[t.name];case i.a.Operation:return this.operations[t.name];case i.a.BlackOp:case i.a.BlackOperation:return s.a[t.name];case i.a.Training:return u.a.Training;case i.a["Field Analysis"]:return u.a["Field Analysis"];case i.a.Recruitment:return u.a.Recruitment;case i.a.Diplomacy:return u.a.Diplomacy;case i.a["Hyperbolic Regeneration Chamber"]:return u.a["Hyperbolic Regeneration Chamber"];case i.a["Incite Violence"]:return u.a["Incite Violence"];default:return null}}completeContract(t){if(this.action.type!==i.a.Contract)throw new Error("completeContract() called even though current action is not a Contract");const e=this.getCurrentCity();if(t)switch(this.action.name){case"Tracking":e.improvePopulationEstimateByCount(Object(E.a)(100,1e3));break;case"Bounty Hunter":e.changePopulationByCount(-1,{estChange:-1,estOffset:0}),e.changeChaosByCount(.02);break;case"Retirement":e.changePopulationByCount(-1,{estChange:-1,estOffset:0}),e.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+this.action.name)}}completeAction(t,e){switch(this.action.type){case i.a.Contract:case i.a.Operation:try{const t=this.action.type===i.a.Operation,n=this.getActionObject(this.action);if(null==n)throw new Error("Failed to get Contract/Operation Object for: "+this.action.name);const a=n.getDifficulty(),r=Math.pow(a,v.a.DiffMultExponentialFactor)+a/v.a.DiffMultLinearFactor,o=Math.pow(n.rewardFac,n.level-1);if(this.stamina-=v.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0),n.attempt(this)){this.gainActionStats(e,n,!0),++n.successes,--n.count;let a=0;if(t||(a=v.a.ContractBaseMoneyGain*o*this.skillMultipliers.money,e.gainMoney(a,"bladeburner")),t?n.setMaxLevel(v.a.OperationSuccessesPerLevel):n.setMaxLevel(v.a.ContractSuccessesPerLevel),n.rankGain){const r=Object(w.a)(n.rankGain*o*_.a.BladeburnerRank,10);this.changeRank(e,r),t&&this.logging.ops?this.log(n.name+" successfully completed! Gained "+Object(m.d)(r,3)+" rank"):!t&&this.logging.contracts&&this.log(n.name+" contract successfully completed! Gained "+Object(m.d)(r,3)+" rank and "+k.a.formatMoney(a))}t?this.completeOperation(!0):this.completeContract(!0)}else{this.gainActionStats(e,n,!1),++n.failures;let a=0,i=0;if(n.rankLoss&&(a=Object(w.a)(n.rankLoss*o,10),this.changeRank(e,-1*a)),n.hpLoss){i=n.hpLoss*r,i=Math.ceil(Object(w.a)(i,10)),this.hpLost+=i;const t=Object(x.a)(e,i);e.takeDamage(i)&&(++this.numHosp,this.moneyLost+=t)}let s="";a>0&&(s+="Lost "+Object(m.d)(a,3)+" rank. "),i>0&&(s+="Took "+Object(m.d)(i,0)+" damage."),t&&this.logging.ops?this.log(n.name+" failed! "+s):!t&&this.logging.contracts&&this.log(n.name+" contract failed! "+s),t?this.completeOperation(!1):this.completeContract(!1)}n.autoLevel&&(n.level=n.maxLevel),this.startAction(e,this.action)}catch(t){Object(b.a)(t)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const n=this.getActionObject(this.action);if(null==n||!(n instanceof l.a))throw new Error("Failed to get BlackOperation Object for: "+this.action.name);const a=n.getDifficulty(),r=Math.pow(a,v.a.DiffMultExponentialFactor)+a/v.a.DiffMultLinearFactor;this.stamina-=v.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0);const i=n.teamCount;let o;if(n.attempt(this)){this.gainActionStats(e,n,!0),n.count=0,this.blackops[n.name]=!0;let a=0;if(n.rankGain&&(a=Object(w.a)(n.rankGain*_.a.BladeburnerRank,10),this.changeRank(e,a)),o=Math.ceil(i/2),n.name===P.a.OperationDaedalus)return this.resetAction(),t.toBitVerse(!1,!1);this.logging.blackops&&this.log(n.name+" successful! Gained "+Object(m.d)(a,1)+" rank")}else{this.gainActionStats(e,n,!1);let t=0,a=0;if(n.rankLoss&&(t=Object(w.a)(n.rankLoss,10),this.changeRank(e,-1*t)),n.hpLoss){a=n.hpLoss*r,a=Math.ceil(Object(w.a)(a,10));const t=Object(x.a)(e,a);e.takeDamage(a)&&(++this.numHosp,this.moneyLost+=t)}o=Math.floor(i),this.logging.blackops&&this.log(n.name+" failed! Lost "+Object(m.d)(t,1)+" rank and took "+Object(m.d)(a,0)+" damage")}if(this.resetAction(),i>=1){const t=Object(E.a)(1,o);this.teamSize-=t,this.teamLost+=t,this.logging.blackops&&this.log("You lost "+Object(m.d)(t,0)+" team members during "+n.name)}}catch(t){Object(b.a)(t)}break;case i.a.Training:{this.stamina-=.5*v.a.BaseStaminaLoss;const t=30*e.strength_exp_mult,n=30*e.defense_exp_mult,a=30*e.dexterity_exp_mult,r=30*e.agility_exp_mult,i=.04*this.skillMultipliers.stamina;e.gainStrengthExp(t),e.gainDefenseExp(n),e.gainDexterityExp(a),e.gainAgilityExp(r),this.staminaBonus+=i,this.logging.general&&this.log("Training completed. Gained: "+Object(m.d)(t,1)+" str exp, "+Object(m.d)(n,1)+" def exp, "+Object(m.d)(a,1)+" dex exp, "+Object(m.d)(r,1)+" agi exp, "+Object(m.d)(i,3)+" max stamina"),this.startAction(e,this.action);break}case i.a.FieldAnalysis:case i.a["Field Analysis"]:{let t=.04*Math.pow(e.hacking,.3)+.04*Math.pow(e.intelligence,.9)+.02*Math.pow(e.charisma,.3);if(t*=e.bladeburner_analysis_mult,isNaN(t)||t<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const n=20*e.hacking_exp_mult,a=20*e.charisma_exp_mult,r=.1*_.a.BladeburnerRank;e.gainHackingExp(n),e.gainIntelligenceExp(v.a.BaseIntGain),e.gainCharismaExp(a),this.changeRank(e,r),this.getCurrentCity().improvePopulationEstimateByPercentage(t*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log(`Field analysis completed. Gained ${Object(m.d)(r,2)} rank, `+Object(m.d)(n,1)+" hacking exp, and "+Object(m.d)(a,1)+" charisma exp"),this.startAction(e,this.action);break}case i.a.Recruitment:{const t=this.getRecruitmentSuccessChance(e);if(Math.random()=a){const t=Math.floor((this.maxRank-a)/v.a.RanksPerSkillPoint+1);this.skillPoints+=t,this.totalSkillPoints+=t}}processAction(t,e,n){if(this.action.type!==i.a.Idle){if(this.actionTimeToComplete<=0)throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);if(!(this.action instanceof r.a))throw new Error("Bladeburner.action is not an ActionIdentifier Object");return this.actionTimeCurrent+=n+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete?(this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete,this.completeAction(t,e)):void 0}}calculateStaminaGainPerSecond(t){const e=t.agility*this.skillMultipliers.effAgi,n=this.maxStamina/v.a.MaxStaminaToGainFactor;return(v.a.StaminaGainPerSecond+n)*Math.pow(e,.17)*(this.skillMultipliers.stamina*t.bladeburner_stamina_gain_mult)}calculateMaxStamina(t){const e=t.agility*this.skillMultipliers.effAgi,n=(Math.pow(e,.8)+this.staminaBonus)*this.skillMultipliers.stamina*t.bladeburner_max_stamina_mult;if(this.maxStamina!==n){const t=this.maxStamina;this.maxStamina=n,this.stamina=this.maxStamina*this.stamina/t}if(isNaN(n))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new f.a({name:"Tracking",baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,rankGain:.3,hpLoss:.5,count:Object(E.a)(25,150),weights:{hack:0,str:.05,def:.05,dex:.35,agi:.35,cha:.1,int:.05},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.9,int:1},isStealth:!0}),this.contracts["Bounty Hunter"]=new f.a({name:"Bounty Hunter",baseDifficulty:250,difficultyFac:1.04,rewardFac:1.085,rankGain:.9,hpLoss:1,count:Object(E.a)(5,150),weights:{hack:0,str:.15,def:.15,dex:.25,agi:.25,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.contracts.Retirement=new f.a({name:"Retirement",baseDifficulty:200,difficultyFac:1.03,rewardFac:1.065,rankGain:.6,hpLoss:1,count:Object(E.a)(5,150),weights:{hack:0,str:.2,def:.2,dex:.2,agi:.2,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.operations.Investigation=new c.a({name:"Investigation",baseDifficulty:400,difficultyFac:1.03,rewardFac:1.07,reqdRank:25,rankGain:2.2,rankLoss:.2,count:Object(E.a)(1,100),weights:{hack:.25,str:.05,def:.05,dex:.2,agi:.1,cha:.25,int:.1},decays:{hack:.85,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Undercover Operation"]=new c.a({name:"Undercover Operation",baseDifficulty:500,difficultyFac:1.04,rewardFac:1.09,reqdRank:100,rankGain:4.4,rankLoss:.4,hpLoss:2,count:Object(E.a)(1,100),weights:{hack:.2,str:.05,def:.05,dex:.2,agi:.2,cha:.2,int:.1},decays:{hack:.8,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Sting Operation"]=new c.a({name:"Sting Operation",baseDifficulty:650,difficultyFac:1.04,rewardFac:1.095,reqdRank:500,rankGain:5.5,rankLoss:.5,hpLoss:2.5,count:Object(E.a)(1,150),weights:{hack:.25,str:.05,def:.05,dex:.25,agi:.1,cha:.2,int:.1},decays:{hack:.8,str:.85,def:.85,dex:.85,agi:.85,cha:.7,int:.9},isStealth:!0}),this.operations.Raid=new c.a({name:"Raid",baseDifficulty:800,difficultyFac:1.045,rewardFac:1.1,reqdRank:3e3,rankGain:55,rankLoss:2.5,hpLoss:50,count:Object(E.a)(1,150),weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isKill:!0}),this.operations["Stealth Retirement Operation"]=new c.a({name:"Stealth Retirement Operation",baseDifficulty:1e3,difficultyFac:1.05,rewardFac:1.11,reqdRank:2e4,rankGain:22,rankLoss:2,hpLoss:10,count:Object(E.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isStealth:!0,isKill:!0}),this.operations.Assassination=new c.a({name:"Assassination",baseDifficulty:1500,difficultyFac:1.06,rewardFac:1.14,reqdRank:5e4,rankGain:44,rankLoss:4,hpLoss:5,count:Object(E.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.8},isStealth:!0,isKill:!0})}process(t,e){if(t.isInitialized){if(t.page()!==g.a.BitVerse&&this.blackops.hasOwnProperty(P.a.OperationDaedalus))return t.toBitVerse(!1,!1);if(!1===M.a[T.a.BladesSimulacrum].owned&&e.isWorking){if(this.action.type!==i.a.Idle){let t="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(t+="

Your automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),O.a.SuppressBladeburnerPopup||Object(L.a)(t)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=v.a.CyclesPerSecond){let n=Math.floor(this.storedCycles/v.a.CyclesPerSecond);n=Math.min(n,5),this.storedCycles-=n*v.a.CyclesPerSecond,this.calculateMaxStamina(e),this.stamina+=this.calculateStaminaGainPerSecond(e)*n,this.stamina=Math.min(this.maxStamina,this.stamina);for(const t of Object.values(this.contracts)){const e=o.a[t.name];if(void 0===e)throw new Error(`growth formula for action '${t.name}' is undefined`);t.count+=n*e()/v.a.ActionCountGrowthPeriod}for(const t of Object.values(this.operations)){const e=o.a[t.name];if(void 0===e)throw new Error(`growth formula for action '${t.name}' is undefined`);void 0!==e&&(t.count+=n*e()/v.a.ActionCountGrowthPeriod)}for(const t of v.a.CityNames){const e=this.cities[t];if(!(e instanceof p.a))throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");e.chaos-=1e-4*n,e.chaos=Math.max(0,e.chaos)}this.randomEventCounter-=n,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=Object(E.a)(240,600)),this.processAction(t,e,n),this.automateEnabled&&(this.stamina<=this.automateThreshLow?this.action.name===this.automateActionLow.name&&this.action.type===this.automateActionLow.type||(this.action=new r.a({type:this.automateActionLow.type,name:this.automateActionLow.name}),this.startAction(e,this.action)):this.stamina>=this.automateThreshHigh&&(this.action.name===this.automateActionHigh.name&&this.action.type===this.automateActionHigh.type||(this.action=new r.a({type:this.automateActionHigh.type,name:this.automateActionHigh.name}),this.startAction(e,this.action))))}}}getTypeAndNameFromActionId(t){const e={type:"",name:""},n=Object.keys(i.a);for(let a=0;ar),!1;if(o.type===i.a.BlackOp){const t=this.canAttemptBlackOp(o);if(!t.isAvailable)return a.log("bladeburner.startAction",()=>t.error+""),!1}try{return this.startAction(t,o),a.log("bladeburner.startAction",()=>`Starting bladeburner action with type '${e}' and name '${n}'`),!0}catch(t){return this.resetAction(),a.log("bladeburner.startAction",()=>r),!1}}getActionTimeNetscriptFn(t,e,n,a){const r=`Invalid action: type='${e}' name='${n}'`,o=this.getActionIdFromTypeAndName(e,n);if(null==o)return a.log("bladeburner.getActionTime",()=>r),-1;const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.getActionTime",()=>r),-1;switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return 1e3*s.getActionTime(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:return 3e4;case i.a.Recruitment:return 1e3*this.getRecruitmentTime(t);case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return 6e4;default:return a.log("bladeburner.getActionTime",()=>r),-1}}getActionEstimatedSuccessChanceNetscriptFn(t,e,n,a){const r=`Invalid action: type='${e}' name='${n}'`,o=this.getActionIdFromTypeAndName(e,n);if(null==o)return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1];const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1];switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return s.getEstSuccessChance(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return[1,1];case i.a.Recruitment:{const e=this.getRecruitmentSuccessChance(t);return[e,e]}default:return a.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1]}}getActionCountRemainingNetscriptFn(t,e,n){const a=`Invalid action: type='${t}' name='${e}'`,r=this.getActionIdFromTypeAndName(t,e);if(null==r)return n.log("bladeburner.getActionCountRemaining",()=>a),-1;const o=this.getActionObject(r);if(null==o)return n.log("bladeburner.getActionCountRemaining",()=>a),-1;switch(r.type){case i.a.Contract:case i.a.Operation:return Math.floor(o.count);case i.a.BlackOp:case i.a.BlackOperation:return null!=this.blackops[e]?0:1;case i.a.Training:case i.a.Recruitment:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return 1/0;default:return n.log("bladeburner.getActionCountRemaining",()=>a),-1}}getSkillLevelNetscriptFn(t,e){return""!==t&&h.a.hasOwnProperty(t)?null==this.skills[t]?0:this.skills[t]:(e.log("bladeburner.getSkillLevel",()=>`Invalid skill: '${t}'`),-1)}getSkillUpgradeCostNetscriptFn(t,e){if(""===t||!h.a.hasOwnProperty(t))return e.log("bladeburner.getSkillUpgradeCost",()=>`Invalid skill: '${t}'`),-1;const n=h.a[t];return null==this.skills[t]?n.calculateCost(0):n.calculateCost(this.skills[t])}upgradeSkillNetscriptFn(t,e){const n=`Invalid skill: '${t}'`;if(!h.a.hasOwnProperty(t))return e.log("bladeburner.upgradeSkill",()=>n),!1;const a=h.a[t];let r=0;this.skills[t]&&!isNaN(this.skills[t])&&(r=this.skills[t]);const i=a.calculateCost(r);return a.maxLvl&&r>=a.maxLvl?(e.log("bladeburner.upgradeSkill",()=>`Skill '${t}' is already maxed.`),!1):this.skillPoints`You do not have enough skill points to upgrade ${t} (You have ${this.skillPoints}, you need ${i})`),!1):(this.skillPoints-=i,this.upgradeSkill(a),e.log("bladeburner.upgradeSkill",()=>`'${t}' upgraded to level ${this.skills[t]}`),!0)}getTeamSizeNetscriptFn(t,e,n){if(""===t&&""===e)return this.teamSize;const a=`Invalid action: type='${t}' name='${e}'`,r=this.getActionIdFromTypeAndName(t,e);if(null==r)return n.log("bladeburner.getTeamSize",()=>a),-1;const o=this.getActionObject(r);return null==o?(n.log("bladeburner.getTeamSize",()=>a),-1):r.type===i.a.Operation||r.type===i.a.BlackOp||r.type===i.a.BlackOperation?o.teamCount:0}setTeamSizeNetscriptFn(t,e,n,a){const r=`Invalid action: type='${t}' name='${e}'`,o=this.getActionIdFromTypeAndName(t,e);if(null==o)return a.log("bladeburner.setTeamSize",()=>r),-1;if(o.type!==i.a.Operation&&o.type!==i.a.BlackOp&&o.type!==i.a.BlackOperation)return a.log("bladeburner.setTeamSize",()=>"Only valid for 'Operations' and 'BlackOps'"),-1;const s=this.getActionObject(o);if(null==s)return a.log("bladeburner.setTeamSize",()=>r),-1;let l=Math.round(n);return isNaN(l)||l<0?(a.log("bladeburner.setTeamSize",()=>"Invalid size: "+n),-1):(this.teamSize`Team size for '${e}' set to ${l}.`),l)}joinBladeburnerFactionNetscriptFn(t){const e=C.a[N.a.Bladeburners];return!!e.isMember||(this.rank>=v.a.RankNeededForFaction?(Object(R.e)(e),t.log("bladeburner.joinBladeburnerFaction",()=>`Joined ${N.a.Bladeburners} faction.`),!0):(t.log("bladeburner.joinBladeburnerFaction",()=>`You do not have the required rank (${this.rank}/${v.a.RankNeededForFaction}).`),!1))}toJSON(){return Object(a.b)("Bladeburner",this)}static fromJSON(t){return Object(a.a)(D,t.data)}}a.c.constructors.Bladeburner=D},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(359),r=n(31),i=n(340),o=n(24);const s={name:"",info:"",companyPositions:{},expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0};class l{constructor(t=s){this.name=t.name,this.info=t.info,this.companyPositions=t.companyPositions,this.expMultiplier=t.expMultiplier,this.salaryMultiplier=t.salaryMultiplier,this.jobStatReqOffset=t.jobStatReqOffset,this.isPlayerEmployed=!1,this.playerReputation=1,this.favor=0,this.isMegacorp=!1,t.isMegacorp&&(this.isMegacorp=!0)}hasPosition(t){return t instanceof a.a?null!=this.companyPositions[t.name]:null!=this.companyPositions[t]}hasAgentPositions(){return null!=this.companyPositions[r.a[0]]}hasBusinessConsultantPositions(){return null!=this.companyPositions[r.c[0]]}hasBusinessPositions(){return null!=this.companyPositions[r.b[0]]}hasEmployeePositions(){return null!=this.companyPositions[r.e[1]]}hasITPositions(){return null!=this.companyPositions[r.d[0]]}hasSecurityPositions(){return null!=this.companyPositions[r.h[2]]}hasSoftwareConsultantPositions(){return null!=this.companyPositions[r.k[0]]}hasSoftwarePositions(){return null!=this.companyPositions[r.j[0]]}hasWaiterPositions(){return null!=this.companyPositions[r.e[0]]}gainFavor(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain()}getFavorGain(){null==this.favor&&(this.favor=0);const t=Math.max(0,Object(i.a)(this.favor))+this.playerReputation;return Object(i.b)(t)-this.favor}toJSON(){return Object(o.b)("Company",this)}static fromJSON(t){return Object(o.a)(l,t.data)}}o.c.constructors.Company=l},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(195),r=n(175),i=n(24),o=n(267);function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class l{constructor(t={}){var e;s(this,"level",1),s(this,"sizeUsed",0),s(this,"smartSupplyEnabled",!1),s(this,"smartSupplyUseLeftovers",{}),s(this,"smartSupplyStore",0),this.loc=t.loc?t.loc:"",this.size=t.size?t.size:0,this.materials={Water:new a.a({name:"Water"}),Energy:new a.a({name:"Energy"}),Food:new a.a({name:"Food"}),Plants:new a.a({name:"Plants"}),Metal:new a.a({name:"Metal"}),Hardware:new a.a({name:"Hardware"}),Chemicals:new a.a({name:"Chemicals"}),Drugs:new a.a({name:"Drugs"}),Robots:new a.a({name:"Robots"}),AICores:new a.a({name:"AI Cores"}),RealEstate:new a.a({name:"Real Estate"})},this.smartSupplyUseLeftovers={Water:!0,Energy:!0,Food:!0,Plants:!0,Metal:!0,Hardware:!0,Chemicals:!0,Drugs:!0,Robots:!0,AICores:!0,RealEstate:!0},t.corp&&t.industry&&this.updateSize(t.corp,t.industry),null!==(e=t.corp)&&void 0!==e&&e.unlockUpgrades[1]&&(this.smartSupplyEnabled=!0)}updateMaterialSizeUsed(){this.sizeUsed=0;for(const t of Object.keys(this.materials)){const e=this.materials[t];r.a.hasOwnProperty(t)&&(this.sizeUsed+=e.qty*r.a[t])}this.sizeUsed>this.size&&console.warn("Warehouse size used greater than capacity, something went wrong")}updateSize(t,e){try{this.size=100*this.level*t.getStorageMultiplier()*e.getStorageMultiplier()}catch(t){Object(o.a)(t)}}toJSON(){return Object(i.b)("Warehouse",this)}static fromJSON(t){return Object(i.a)(l,t.data)}}i.c.constructors.Warehouse=l},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1007),r=n(582);const i={};a.a.forEach(t=>{i[t.name]=new r.a(t.name,t.desc,t.isHacking,t.isCombat,t.params)})},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1014),r=n(1015);const i={};for(const t of r.a)i[(o=t).name]=new a.a(o);var o},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return s})),n.d(e,"d",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(74),r=n(209);const i=[];class o{constructor(t,e,n,a,r){this.id=t,this.shape=e,this.type=n,this.power=a,this.limit=r}fullAt(t,e,n){if(e<0)return!1;if(e>=this.height(n))return!1;if(t<0)return!1;if(t>=this.width(n))return!1;let[a,r,i,o]=[0,0,1,1];1===n?[a,r,i,o]=[this.width(n)-1,0,-1,1]:2===n?[a,r,i,o]=[this.width(n)-1,this.height(n)-1,-1,-1]:3===n&&([a,r,i,o]=[0,this.height(n)-1,1,-1]);let[s,l]=[a+i*t,r+o*e];return n%2==1&&([s,l]=[l,s]),this.shape[l][s]}width(t){return t%2==0?this.shape[0].length:this.shape.length}height(t){return t%2==0?this.shape.length:this.shape[0].length}neighboors(t){const e=[],n=(n,a)=>{this.fullAt(n,a,t)||e.some(t=>t[0]===n&&t[1]===a)||e.push([n,a])};for(let e=0;ee[0]===t[0]&&e[1]===t[1])||a.push(t);return a}copy(){return new o(this.id,this.shape.map(t=>t.slice()),this.type,this.power,this.limit)}}function s(t){for(const e of i)if(e.id===t)return e;return null}!function(){const t=!1,e=!0;i.push(new o(0,r.a.S,a.b.Hacking,1,1)),i.push(new o(1,r.a.Z,a.b.Hacking,1,1)),i.push(new o(5,r.a.T,a.b.HackingSpeed,1.3,1)),i.push(new o(6,r.a.I,a.b.HackingMoney,2,1)),i.push(new o(7,r.a.J,a.b.HackingGrow,.5,1)),i.push(new o(10,r.a.T,a.b.Strength,2,1)),i.push(new o(12,r.a.L,a.b.Defense,2,1)),i.push(new o(14,r.a.L,a.b.Dexterity,2,1)),i.push(new o(16,r.a.S,a.b.Agility,2,1)),i.push(new o(18,r.a.S,a.b.Charisma,3,1)),i.push(new o(20,r.a.I,a.b.HacknetMoney,1,1)),i.push(new o(21,r.a.O,a.b.HacknetCost,2,1)),i.push(new o(25,r.a.J,a.b.Rep,.5,1)),i.push(new o(27,r.a.J,a.b.WorkMoney,10,1)),i.push(new o(28,r.a.L,a.b.Crime,2,1)),i.push(new o(30,r.a.S,a.b.Bladeburner,.4,1)),i.push(new o(100,[[t,e,e],[e,e,t],[t,e,t]],a.b.Booster,1.1,99)),i.push(new o(101,[[e,e,e,e],[e,t,t,t]],a.b.Booster,1.1,99)),i.push(new o(102,[[t,e,e,e],[e,e,t,t]],a.b.Booster,1.1,99)),i.push(new o(103,[[e,e,e,t],[t,t,e,e]],a.b.Booster,1.1,99)),i.push(new o(104,[[t,e,e],[t,e,t],[e,e,t]],a.b.Booster,1.1,99)),i.push(new o(105,[[t,t,e],[t,e,e],[e,e,t]],a.b.Booster,1.1,99)),i.push(new o(106,[[e,t,t],[e,e,e],[e,t,t]],a.b.Booster,1.1,99)),i.push(new o(107,[[t,e,t],[e,e,e],[t,e,t]],a.b.Booster,1.1,99))}();const l=new o(-2,[],a.b.None,0,1/0),c=new o(-2,[],a.b.Delete,0,1/0)},function(t,e,n){"use strict";n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c}));var a=n(9),r=n(7),i=n(406);function o(t){let e=1+t.favor/100;return isNaN(e)&&(e=1),e*r.a.FactionWorkRepGain}function s(t,e){return(t.hacking+t.intelligence/3)/a.a.MaxSkillLevel*t.faction_rep_mult*t.getIntelligenceBonus(1)*o(e)*Object(i.a)()}function l(t,e){return.9*(t.strength+t.defense+t.dexterity+t.agility+(t.hacking+t.intelligence)*Object(i.a)())/a.a.MaxSkillLevel/4.5*t.faction_rep_mult*o(e)*t.getIntelligenceBonus(1)}function c(t,e){return.9*(t.strength+t.defense+t.dexterity+t.agility+t.charisma+(t.hacking+t.intelligence)*Object(i.a)())/a.a.MaxSkillLevel/5.5*t.faction_rep_mult*o(e)*t.getIntelligenceBonus(1)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"d",(function(){return h})),n.d(e,"b",(function(){return d}));var a=n(224),r=n(76),i=n(9),o=n(2),s=n(5),l=n(19),c=n(15),f=n(0);function u(t,e,n=null,u={}){if((e=Math.round(e))<=0)return!1;if(null==t||isNaN(e))return n?n.log("stock.buy",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==u.suppressDialog&&Object(c.a)("Failed to buy stock. This may be a bug, contact developer"),!1;const m=Object(a.b)(t,e,r.a.Long);if(null==m)return!1;if(o.a.money`You do not have enough money to purchase this position. You need ${s.a.formatMoney(m)}.`):!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"You do not have enough money to purchase this. You need ",f.createElement(l.a,{money:m}))),!1;if(e+t.playerShares+t.playerShortShares>t.maxShares)return n?n.log("stock.buy",()=>`Purchasing '${e+t.playerShares+t.playerShortShares}' shares would exceed ${t.symbol}'s maximum (${t.maxShares}) number of shares`):!0!==u.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${t.symbol} has a maximum of ${s.a.formatShares(t.maxShares)} shares.`),!1;const h=t.playerShares*t.playerAvgPx;o.a.loseMoney(m,"stock");const d=h+m-i.a.StockMarketCommission;if(t.playerShares=Math.round(t.playerShares+e),t.playerAvgPx=d/t.playerShares,Object(a.d)(t,e),null!=u.rerenderFn&&"function"==typeof u.rerenderFn&&u.rerenderFn(),n){const a=`Bought ${s.a.formatShares(e)} shares of ${t.symbol} for ${s.a.formatMoney(m)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;n.log("stock.buy",()=>a)}else!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"Bought ",s.a.formatShares(e)," shares of ",t.symbol," for ",f.createElement(l.a,{money:m}),". Paid"," ",f.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function m(t,e,n=null,i={}){if(null==t||e<0||isNaN(e))return n?n.log("stock.sell",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==i.suppressDialog&&Object(c.a)("Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer"),!1;if((e=Math.round(e))>t.playerShares&&(e=t.playerShares),0===e)return!1;const u=Object(a.c)(t,e,r.a.Long);if(null==u)return!1;let m=u-t.playerAvgPx*e;if(isNaN(m)&&(m=0),o.a.gainMoney(u,"stock"),n&&(n.scriptRef.onlineMoneyMade+=m,o.a.scriptProdSinceLastAug+=m),t.playerShares=Math.round(t.playerShares-e),0===t.playerShares&&(t.playerAvgPx=0),Object(a.d)(t,e),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),n){const a=`Sold ${s.a.formatShares(e)} shares of ${t.symbol}. After commissions, you gained a total of ${s.a.formatMoney(u)}.`;n.log("stock.sell",()=>a)}else!0!==i.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"Sold ",s.a.formatShares(e)," shares of ",t.symbol,". After commissions, you gained a total of"," ",f.createElement(l.a,{money:u}),"."));return!0}function h(t,e,n=null,u={}){if((e=Math.round(e))<=0)return!1;if(null==t||isNaN(e))return n?n.log("stock.short",()=>`Invalid arguments: stock='${t}' shares='${e}'`):!0!==u.suppressDialog&&Object(c.a)("Failed to initiate a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;const m=Object(a.b)(t,e,r.a.Short);if(null==m)return!1;if(o.a.money"You do not have enough money to purchase this short position. You need "+s.a.formatMoney(m)):!0!==u.suppressDialog&&Object(c.a)(f.createElement(f.Fragment,null,"You do not have enough money to purchase this short position. You need ",f.createElement(l.a,{money:m}))),!1;if(e+t.playerShares+t.playerShortShares>t.maxShares)return n?n.log("stock.short",()=>`This '${e+t.playerShares+t.playerShortShares}' short shares would exceed ${t.symbol}'s maximum (${t.maxShares}) number of shares.`):!0!==u.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${t.symbol} has a maximum of ${t.maxShares} shares.`),!1;const h=t.playerShortShares*t.playerAvgShortPx;o.a.loseMoney(m,"stock");const d=h+m-i.a.StockMarketCommission;if(t.playerShortShares=Math.round(t.playerShortShares+e),t.playerAvgShortPx=d/t.playerShortShares,Object(a.d)(t,e),null!=u.rerenderFn&&"function"==typeof u.rerenderFn&&u.rerenderFn(),n){const a=`Bought a short position of ${s.a.formatShares(e)} shares of ${t.symbol} for ${s.a.formatMoney(m)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;n.log("stock.short",()=>a)}else u.suppressDialog||Object(c.a)(f.createElement(f.Fragment,null,"Bought a short position of ",s.a.formatShares(e)," shares of ",t.symbol," for"," ",f.createElement(l.a,{money:m}),". Paid ",f.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function d(t,e,n=null,i={}){if(null==t||isNaN(e)||e<0)return n?n.log("stock.sellShort",()=>`Invalid arguments: stock='${t}' shares='${e}'`):i.suppressDialog||Object(c.a)("Failed to sell a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;if((e=Math.round(e))>t.playerShortShares&&(e=t.playerShortShares),0===e)return!1;const u=e*t.playerAvgShortPx,m=Object(a.c)(t,e,r.a.Short);if(null==m||isNaN(m)||null==u)return n?n.log("stock.sellShort",()=>"Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"):i.suppressDialog||Object(c.a)("Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"),!1;let h=m-u;if(isNaN(h)&&(h=0),o.a.gainMoney(m,"stock"),n&&(n.scriptRef.onlineMoneyMade+=h,o.a.scriptProdSinceLastAug+=h),t.playerShortShares=Math.round(t.playerShortShares-e),0===t.playerShortShares&&(t.playerAvgShortPx=0),Object(a.d)(t,e),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),n){const a=`Sold your short position of ${s.a.formatShares(e)} shares of ${t.symbol}. After commissions, you gained a total of `+s.a.formatMoney(m);n.log("stock.sellShort",()=>a)}else i.suppressDialog||Object(c.a)(f.createElement(f.Fragment,null,"Sold your short position of ",s.a.formatShares(e)," shares of ",t.symbol,". After commissions, you gained a total of ",f.createElement(l.a,{money:m})));return!0}},function(t,e,n){"use strict";n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return c})),n.d(e,"d",(function(){return f}));var a=n(0),r=n.n(a),i=n(8),o=n(365);class s{constructor(t,e){i.a.TimestampsFormat&&(t="["+Object(o.a)(i.a.TimestampsFormat)+"] "+t),this.text=t,this.color=e}}class l{constructor(t){i.a.TimestampsFormat&&(t=r.a.createElement(r.a.Fragment,null,"[",Object(o.a)(i.a.TimestampsFormat),"] ",t)),this.raw=t}}class c{constructor(t,e){i.a.TimestampsFormat&&(t="["+Object(o.a)(i.a.TimestampsFormat)+"] "+t),this.hostname=e,this.dashes=t}}class f{constructor(t,e,n){this.time=t,this.timeLeft=t,this.action=e,this.server=n}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(7);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={name:"foo",desc:"foo"}){if(r(this,"baseCost",1),r(this,"costInc",1),r(this,"maxLvl",0),r(this,"successChanceAll",0),r(this,"successChanceStealth",0),r(this,"successChanceKill",0),r(this,"successChanceContract",0),r(this,"successChanceOperation",0),r(this,"successChanceEstimate",0),r(this,"actionTime",0),r(this,"effHack",0),r(this,"effStr",0),r(this,"effDef",0),r(this,"effDex",0),r(this,"effAgi",0),r(this,"effCha",0),r(this,"stamina",0),r(this,"money",0),r(this,"expGain",0),!t.name)throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");if(!t.desc)throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");this.name=t.name,this.desc=t.desc,this.baseCost=t.baseCost?t.baseCost:1,this.costInc=t.costInc?t.costInc:1,t.maxLvl&&(this.maxLvl=t.maxLvl),t.successChanceAll&&(this.successChanceAll=t.successChanceAll),t.successChanceStealth&&(this.successChanceStealth=t.successChanceStealth),t.successChanceKill&&(this.successChanceKill=t.successChanceKill),t.successChanceContract&&(this.successChanceContract=t.successChanceContract),t.successChanceOperation&&(this.successChanceOperation=t.successChanceOperation),t.successChanceEstimate&&(this.successChanceEstimate=t.successChanceEstimate),t.actionTime&&(this.actionTime=t.actionTime),t.effHack&&(this.effHack=t.effHack),t.effStr&&(this.effStr=t.effStr),t.effDef&&(this.effDef=t.effDef),t.effDex&&(this.effDex=t.effDex),t.effAgi&&(this.effAgi=t.effAgi),t.effCha&&(this.effCha=t.effCha),t.stamina&&(this.stamina=t.stamina),t.money&&(this.money=t.money),t.expGain&&(this.expGain=t.expGain)}calculateCost(t){return Math.floor((this.baseCost+t*this.costInc)*a.a.BladeburnerSkillCost)}getMultiplier(t){return"successChanceAll"===t?this.successChanceAll:"successChanceStealth"===t?this.successChanceStealth:"successChanceKill"===t?this.successChanceKill:"successChanceContract"===t?this.successChanceContract:"successChanceOperation"===t?this.successChanceOperation:"successChanceEstimate"===t?this.successChanceEstimate:"actionTime"===t?this.actionTime:"effHack"===t?this.effHack:"effStr"===t?this.effStr:"effDef"===t?this.effDef:"effDex"===t?this.effDex:"effAgi"===t?this.effAgi:"effCha"===t?this.effCha:"stamina"===t?this.stamina:"money"===t?this.money:"expGain"===t?this.expGain:0}}},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(41),o=n(10),s=n(1);function l(t){return r.a.createElement(i.a,{open:t.open,onClose:t.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,null,t.confirmationText),r.a.createElement(o.a,{onClick:()=>{t.onConfirm()}},"Confirm"),t.additionalButton&&r.a.createElement(r.a.Fragment,null,t.additionalButton)))}},function(t,e,n){"use strict";function a(){try{return"12c54023"}catch(t){}return"DEV"}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(4);const r={GangRespectToReputationRatio:75,MaximumGangMembers:12,CyclesPerTerritoryAndPowerUpdate:100,AscensionMultiplierRatio:.15,Names:[a.a.SlumSnakes,a.a.Tetrads,a.a.TheSyndicate,a.a.TheDarkArmy,a.a.SpeakersForTheDead,a.a.NiteSec,a.a.TheBlackHand]}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(513),r=n(24),i=n(514);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}let s=0;class l{constructor(t=null,e="",n="",a="",r=[]){o(this,"code",""),o(this,"filename",""),o(this,"url",""),o(this,"module",""),o(this,"dependencies",[]),o(this,"dependents",[]),o(this,"ramUsage",0),o(this,"server",""),this.filename=e,this.code=n,this.ramUsage=0,this.server=a,this.module="",this.moduleSequenceNumber=++s,""!==this.code&&null!==t&&this.updateRamUsage(t,r)}download(){const t=this.filename,e=new Blob([this.code],{type:"text/plain"}),n=window.navigator;if(n.msSaveOrOpenBlob)n.msSaveOrOpenBlob(e,t);else{const n=document.createElement("a"),a=URL.createObjectURL(e);n.href=a,n.download=t,document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(a)}),0)}}markUpdated(){this.module="",this.moduleSequenceNumber=++s}saveScript(t,e,n,a,r){this.code=l.formatCode(n),this.filename=e,this.server=a,this.updateRamUsage(t,r),this.markUpdated();for(const t of this.dependents){const[e]=r.filter(e=>e.filename===t.filename&&e.server==t.server);null!==e&&e.markUpdated()}}async updateRamUsage(t,e){const n=await Object(a.a)(t,this.code,e);n.cost>0&&(this.ramUsage=Object(i.a)(n.cost),this.ramUsageEntries=n.entries),this.markUpdated()}imports(){return[]}toJSON(){return Object(r.b)("Script",this)}static fromJSON(t){const e=Object(r.a)(l,t.data);return e.url="",e.dependents=[],e}static formatCode(t){return t.replace(/^\s+|\s+$/g,"")}}r.c.constructors.Script=l},,function(t,e,n){"use strict";function a(t){const e=[];for(let n=0;n13)throw new Error("Card instantiated with improper value: "+t)}formatValue(){switch(this.value){case 1:return"A";case 11:return"J";case 12:return"Q";case 13:return"K";default:return""+this.value}}isRedSuit(){return this.suit===a.Hearts||this.suit===a.Diamonds}getStringRepresentation(){return`${this.formatValue()} of ${this.suit}`}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t={}){r(this,"name",""),r(this,"type",-1),t.name&&(this.name=t.name),t.type&&(this.type=t.type)}toJSON(){return Object(a.b)("ActionIdentifier",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.ActionIdentifier=i},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(217);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t,e){r(this,"lvl",1),r(this,"owned",!1);const n="BitNode"+t,i=a.a[n];if(null==i)throw new Error("Invalid Bit Node for this Source File");this.n=t,this.name=`Source-File ${t}: ${i.name}`,this.info=e}}},function(t,e,n){"use strict";n.d(e,"b",(function(){return c})),n.d(e,"a",(function(){return f}));var a=n(7),r=n(16),i=n(9),o=n(177),s=n(281);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(){return{hack:0,str:0,def:0,dex:0,agi:0,cha:0,money:0}}class f{constructor(){l(this,"hacking",1),l(this,"strength",1),l(this,"defense",1),l(this,"dexterity",1),l(this,"agility",1),l(this,"charisma",1),l(this,"intelligence",1),l(this,"hp",10),l(this,"max_hp",10),l(this,"hacking_exp",0),l(this,"strength_exp",0),l(this,"defense_exp",0),l(this,"dexterity_exp",0),l(this,"agility_exp",0),l(this,"charisma_exp",0),l(this,"intelligence_exp",0),l(this,"hacking_mult",1),l(this,"strength_mult",1),l(this,"defense_mult",1),l(this,"dexterity_mult",1),l(this,"agility_mult",1),l(this,"charisma_mult",1),l(this,"hacking_exp_mult",1),l(this,"strength_exp_mult",1),l(this,"defense_exp_mult",1),l(this,"dexterity_exp_mult",1),l(this,"agility_exp_mult",1),l(this,"charisma_exp_mult",1),l(this,"hacking_chance_mult",1),l(this,"hacking_speed_mult",1),l(this,"hacking_money_mult",1),l(this,"hacking_grow_mult",1),l(this,"company_rep_mult",1),l(this,"faction_rep_mult",1),l(this,"crime_money_mult",1),l(this,"crime_success_mult",1),l(this,"work_money_mult",1),l(this,"hacknet_node_money_mult",1),l(this,"hacknet_node_purchase_cost_mult",1),l(this,"hacknet_node_ram_cost_mult",1),l(this,"hacknet_node_core_cost_mult",1),l(this,"hacknet_node_level_cost_mult",1),l(this,"bladeburner_max_stamina_mult",1),l(this,"bladeburner_stamina_gain_mult",1),l(this,"bladeburner_analysis_mult",1),l(this,"bladeburner_success_chance_mult",1),l(this,"augmentations",[]),l(this,"queuedAugmentations",[]),l(this,"city",r.a.Sector12)}applyAugmentation(t){for(const e of Object.keys(t.mults))null==this[e]?console.warn("Augmentation has unrecognized multiplier property: "+e):this[e]*=t.mults[e]}calculateStat(t,e=1){return Object(o.b)(t,e)}getFactionFieldWorkRepGain(){return.9*(this.hacking/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel+this.charisma/i.a.MaxSkillLevel)/5.5*this.faction_rep_mult}getFactionHackingWorkRepGain(){return this.hacking/i.a.MaxSkillLevel*this.faction_rep_mult}getFactionSecurityWorkRepGain(){return.9*(this.hacking/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel)/4.5*this.faction_rep_mult}resetMultipliers(){this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.crime_money_mult=1,this.crime_success_mult=1,this.work_money_mult=1}updateStatLevels(){this.hacking=Math.max(1,Math.floor(this.calculateStat(this.hacking_exp,this.hacking_mult*a.a.HackingLevelMultiplier))),this.strength=Math.max(1,Math.floor(this.calculateStat(this.strength_exp,this.strength_mult*a.a.StrengthLevelMultiplier))),this.defense=Math.max(1,Math.floor(this.calculateStat(this.defense_exp,this.defense_mult*a.a.DefenseLevelMultiplier))),this.dexterity=Math.max(1,Math.floor(this.calculateStat(this.dexterity_exp,this.dexterity_mult*a.a.DexterityLevelMultiplier))),this.agility=Math.max(1,Math.floor(this.calculateStat(this.agility_exp,this.agility_mult*a.a.AgilityLevelMultiplier))),this.charisma=Math.max(1,Math.floor(this.calculateStat(this.charisma_exp,this.charisma_mult*a.a.CharismaLevelMultiplier)));const t=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*t)}getIntelligenceBonus(t){return Object(s.a)(this.intelligence,t)}}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(757);function o({children:t}){return r.a.createElement(i.MathJaxContext,{version:3,src:"dist/ext/MathJax-3.2.0/es5/tex-chtml.js"},r.a.createElement(i.MathJax,null,t))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(15);function r(t){console.error(t),Object(a.a)("Caught an exception: "+t+"

Filename: "+(t.fileName||"UNKNOWN FILE NAME")+"

Line Number: "+(t.lineNumber||"UNKNOWN LINE NUMBER")+"

This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.

If you want to be safe, I suggest refreshing the game WITHOUT saving so that your safe doesn't get corrupted")}},function(t,e,n){"use strict";n.d(e,"a",(function(){return b})),n.d(e,"b",(function(){return g})),n.d(e,"e",(function(){return p})),n.d(e,"d",(function(){return E})),n.d(e,"c",(function(){return k}));var a=n(327),r=n(56),i=n(14),o=n(65),s=n(2),l=n(299),c=n(25),f=n(8),u=n(15),m=n(24),h=n(4);function d(t,e=!1){t.recvd=!0,!e&&f.a.SuppressMessages||p(t.filename),function(t,e){const n=Object(c.d)(e);if(null==n)return void console.warn("Could not find server "+e);for(let e=0;e

This message was saved as "+e.filename+" onto your home computer.";Object(u.a)(n)}function g(){if(l.b)return;const t=b[v.Jumper0],e=b[v.Jumper1],n=b[v.Jumper2],a=b[v.Jumper3],c=b[v.Jumper4],f=b[v.CyberSecTest],u=b[v.NiteSecTest],m=b[v.BitRunnersTest],h=b[v.RedPill];let p=!1;if(r.a[i.a.TheRedPill].owned&&(p=!0),h&&p&&0===s.a.sourceFiles.length&&!l.b)d(h,!0);else if(h&&p)l.b||d(h);else if(t&&!t.recvd&&s.a.hacking>=25){d(t);const e=o.a.Flight.name,n=s.a.getHomeComputer();n.programs.includes(e)||n.programs.push(e)}else e&&!e.recvd&&s.a.hacking>=40?d(e):f&&!f.recvd&&s.a.hacking>=50?d(f):n&&!n.recvd&&s.a.hacking>=175?d(n):u&&!u.recvd&&s.a.hacking>=200?d(u):a&&!a.recvd&&s.a.hacking>=350?d(a):c&&!c.recvd&&s.a.hacking>=490?d(c):m&&!m.recvd&&s.a.hacking>=500&&d(m)}function y(t){b[t.filename]=t}let b={};function E(t){b=JSON.parse(t,m.c)}const v={Jumper0:"j0.msg",Jumper1:"j1.msg",Jumper2:"j2.msg",Jumper3:"j3.msg",Jumper4:"j4.msg",CyberSecTest:"csec-test.msg",NiteSecTest:"nitesec-test.msg",BitRunnersTest:"19dfj3l1nd.msg",RedPill:"icarus.msg"};function k(){b={},y(new a.a(v.Jumper0,"I know you can sense it. I know you're searching for it. It's why you spend night after night at your computer.

It's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.

Use this program to track your progress

The fl1ght.exe program was added to your home computer

-jump3R")),y(new a.a(v.Jumper1,`Soon you will be contacted by a hacking group known as ${h.a.NiteSec}. They can help you with your search.

You should join them, garner their favor, and exploit them for their Augmentations. But do not trust them. They are not what they seem. No one is.

-jump3R`)),y(new a.a(v.Jumper2,`Do not try to save the world. There is no world to save. If you want to find the truth, worry only about yourself. Ethics and morals will get you killed.

Watch out for a hacking group known as ${h.a.NiteSec}.

-jump3R`)),y(new a.a(v.Jumper3,`You must learn to walk before you can run. And you must run before you can fly. Look for ${h.a.TheBlackHand}.

I.I.I.I

-jump3R`)),y(new a.a(v.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.

-jump3R")),y(new a.a(v.CyberSecTest,"We've been watching you. Your skills are very impressive. But you're wasting your talents. If you join us, you can put your skills to good use and change the world for the better. If you join us, we can unlock your full potential.

But first, you must pass our test. Find and install the backdoor on our server.

-"+h.a.CyberSec)),y(new a.a(v.NiteSecTest,"People say that the corrupted governments and corporations rule the world. Yes, maybe they do. But do you know who everyone really fears? People like us. Because they can't hide from us. Because they can't fight shadows and ideas with bullets.

Join us, and people will fear you, too.

Find and install the backdoor on our server. Then, we will contact you again.

-"+h.a.NiteSec)),y(new a.a(v.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for.

We can help you find the answers.

run4theh111z")),y(new a.a(v.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%
)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)
@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB
DFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(138),r=n(59);const i={};i[r.a.OperationTyphoon]=new a.a({name:r.a.OperationTyphoon,baseDifficulty:2e3,reqdRank:2500,rankGain:50,rankLoss:10,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationZero]=new a.a({name:r.a.OperationZero,baseDifficulty:2500,reqdRank:5e3,rankGain:60,rankLoss:15,hpLoss:50,weights:{hack:.2,str:.15,def:.15,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationX]=new a.a({name:r.a.OperationX,baseDifficulty:3e3,reqdRank:7500,rankGain:75,rankLoss:15,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationTitan]=new a.a({name:r.a.OperationTitan,baseDifficulty:4e3,reqdRank:1e4,rankGain:100,rankLoss:20,hpLoss:100,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationAres]=new a.a({name:r.a.OperationAres,baseDifficulty:5e3,reqdRank:12500,rankGain:125,rankLoss:20,hpLoss:200,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationArchangel]=new a.a({name:r.a.OperationArchangel,baseDifficulty:7500,reqdRank:15e3,rankGain:200,rankLoss:20,hpLoss:25,weights:{hack:0,str:.2,def:.2,dex:.3,agi:.3,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationJuggernaut]=new a.a({name:r.a.OperationJuggernaut,baseDifficulty:1e4,reqdRank:2e4,rankGain:300,rankLoss:40,hpLoss:300,weights:{hack:0,str:.25,def:.25,dex:.25,agi:.25,cha:0,int:0},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationRedDragon]=new a.a({name:r.a.OperationRedDragon,baseDifficulty:12500,reqdRank:25e3,rankGain:500,rankLoss:50,hpLoss:500,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationK]=new a.a({name:r.a.OperationK,baseDifficulty:15e3,reqdRank:3e4,rankGain:750,rankLoss:60,hpLoss:1e3,weights:{hack:.05,str:.2,def:.2,dex:.25,agi:.25,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationDeckard]=new a.a({name:r.a.OperationDeckard,baseDifficulty:2e4,reqdRank:4e4,rankGain:1e3,rankLoss:75,hpLoss:200,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:0,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationTyrell]=new a.a({name:r.a.OperationTyrell,baseDifficulty:25e3,reqdRank:5e4,rankGain:1500,rankLoss:100,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationWallace]=new a.a({name:r.a.OperationWallace,baseDifficulty:3e4,reqdRank:75e3,rankGain:2e3,rankLoss:150,hpLoss:1500,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationShoulderOfOrion]=new a.a({name:r.a.OperationShoulderOfOrion,baseDifficulty:35e3,reqdRank:1e5,rankGain:2500,rankLoss:500,hpLoss:1500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationHyron]=new a.a({name:r.a.OperationHyron,baseDifficulty:4e4,reqdRank:125e3,rankGain:3e3,rankLoss:1e3,hpLoss:500,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationMorpheus]=new a.a({name:r.a.OperationMorpheus,baseDifficulty:45e3,reqdRank:15e4,rankGain:4e3,rankLoss:1e3,hpLoss:100,weights:{hack:.05,str:.15,def:.15,dex:.3,agi:.3,cha:0,int:.05},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isStealth:!0}),i[r.a.OperationIonStorm]=new a.a({name:r.a.OperationIonStorm,baseDifficulty:5e4,reqdRank:175e3,rankGain:5e3,rankLoss:1e3,hpLoss:5e3,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationAnnihilus]=new a.a({name:r.a.OperationAnnihilus,baseDifficulty:55e3,reqdRank:2e5,rankGain:7500,rankLoss:1e3,hpLoss:1e4,weights:{hack:0,str:.24,def:.24,dex:.24,agi:.24,cha:0,int:.04},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationUltron]=new a.a({name:r.a.OperationUltron,baseDifficulty:6e4,reqdRank:25e4,rankGain:1e4,rankLoss:2e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75},isKill:!0}),i[r.a.OperationCenturion]=new a.a({name:r.a.OperationCenturion,baseDifficulty:7e4,reqdRank:3e5,rankGain:15e3,rankLoss:5e3,hpLoss:1e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),i[r.a.OperationVindictus]=new a.a({name:r.a.OperationVindictus,baseDifficulty:75e3,reqdRank:35e4,rankGain:2e4,rankLoss:2e4,hpLoss:2e4,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}}),i[r.a.OperationDaedalus]=new a.a({name:r.a.OperationDaedalus,baseDifficulty:8e4,reqdRank:4e5,rankGain:4e4,rankLoss:1e4,hpLoss:1e5,weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.75}})},,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(9);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t="",e="",n=0,a=0,i=0,o=0,s={}){r(this,"difficulty",0),r(this,"karma",0),r(this,"kills",0),r(this,"money",0),r(this,"name",""),r(this,"time",0),r(this,"type",""),r(this,"hacking_success_weight",0),r(this,"strength_success_weight",0),r(this,"defense_success_weight",0),r(this,"dexterity_success_weight",0),r(this,"agility_success_weight",0),r(this,"charisma_success_weight",0),r(this,"hacking_exp",0),r(this,"strength_exp",0),r(this,"defense_exp",0),r(this,"dexterity_exp",0),r(this,"agility_exp",0),r(this,"charisma_exp",0),r(this,"intelligence_exp",0),this.name=t,this.type=e,this.time=n,this.money=a,this.difficulty=i,this.karma=o,this.hacking_success_weight=s.hacking_success_weight?s.hacking_success_weight:0,this.strength_success_weight=s.strength_success_weight?s.strength_success_weight:0,this.defense_success_weight=s.defense_success_weight?s.defense_success_weight:0,this.dexterity_success_weight=s.dexterity_success_weight?s.dexterity_success_weight:0,this.agility_success_weight=s.agility_success_weight?s.agility_success_weight:0,this.charisma_success_weight=s.charisma_success_weight?s.charisma_success_weight:0,this.hacking_exp=s.hacking_exp?s.hacking_exp:0,this.strength_exp=s.strength_exp?s.strength_exp:0,this.defense_exp=s.defense_exp?s.defense_exp:0,this.dexterity_exp=s.dexterity_exp?s.dexterity_exp:0,this.agility_exp=s.agility_exp?s.agility_exp:0,this.charisma_exp=s.charisma_exp?s.charisma_exp:0,this.intelligence_exp=s.intelligence_exp?s.intelligence_exp:0,this.kills=s.kills?s.kills:0}commit(t,e,n=1,a=null){return n<=0&&(n=1),e.startCrime(t,this.type,this.hacking_exp/n,this.strength_exp/n,this.defense_exp/n,this.dexterity_exp/n,this.agility_exp/n,this.charisma_exp/n,this.money/n,this.time,a),this.time}successRate(t){let e=this.hacking_success_weight*t.hacking+this.strength_success_weight*t.strength+this.defense_success_weight*t.defense+this.dexterity_success_weight*t.dexterity+this.agility_success_weight*t.agility+this.charisma_success_weight*t.charisma+a.a.IntelligenceCrimeWeight*t.intelligence;return e/=a.a.MaxSkillLevel,e/=this.difficulty,e*=t.crime_success_mult,e*=t.getIntelligenceBonus(1),Math.min(e,1)}}},,,,,,,,function(t,e,n){"use strict";function a(t,e=1){return 1+e*Math.pow(t,.8)/600}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1012),r=n(1013);const i={};for(const t of r.a)null!=i[(o=t).name]&&console.warn("Duplicate Research being defined: "+o.name),i[o.name]=new a.a(o);var o},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(522),i=n(29),o=n(10),s=n(20);function l(t){const e=i.b.Player();return a.createElement(a.Fragment,null,a.createElement(s.a,{title:a.createElement("span",{dangerouslySetInnerHTML:{__html:function(){const n=e.getNextCompanyPosition(t.company,t.entryPosType);return null==n?"":t.company.hasPosition(n)?Object(r.a)(t.company,n,!0):""}()}})},a.createElement(o.a,{onClick:t.onClick},t.text)))}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new(n(126).a)},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return d})),n.d(e,"d",(function(){return p})),n.d(e,"c",(function(){return g})),n.d(e,"e",(function(){return y})),n.d(e,"b",(function(){return b}));var a=n(2),r=n(95),i=n(81),o=n(88),s=n(143),l=n(25),c=n(110),f=n(8),u=n(590),m=n(9),h=n(249);function d(){navigator.userAgent.toLowerCase().indexOf(" electron/")>-1&&(document.achievements=[],function(){function e(t){return t=t.replace(/\/\/+/g,"/"),(t=Object(i.k)(t)).includes("/")&&(t="/"+Object(i.k)(t)),t}document.getFiles=function(){const t=Object(l.d)("home");return null===t?{res:!1,msg:"Home server does not exist."}:{res:!0,data:{files:t.scripts.map(t=>({filename:t.filename,code:t.code,ramUsage:t.ramUsage}))}}},document.deleteFile=function(t){t=e(t);const n=Object(l.d)("home");return null===n?{res:!1,msg:"Home server does not exist."}:n.removeFile(t)},document.saveFile=function(n,r){var i;n=e(n),r=t.from(r,"base64").toString();const o=Object(l.d)("home");if(null===o)return{res:!1,msg:"Home server does not exist."};const{success:s,overwritten:c}=o.writeToScriptFile(a.a,n,r);let f;return s&&(f=o.getScript(n)),{res:s,data:{overwritten:c,ramUsage:null===(i=f)||void 0===i?void 0:i.ramUsage}}}}(),function(){const t={terminal:(t,e)=>{const n={info:o.a.info,warn:o.a.warn,error:o.a.error,success:o.a.success};let a;e&&(a=n[e]),a||(a=o.a.print),a.bind(o.a)(t)},toast:(t,e,n=2e3)=>s.b.emit(t,e,n)};window.appNotifier=t}(),function(){const t={triggerSave:()=>c.c.saveGame(!0),triggerGameExport:()=>{try{c.c.exportGame()}catch(t){console.log(t),s.b.emit("Could not export game.","error",2e3)}},triggerScriptsExport:()=>Object(u.b)("*",a.a.getHomeComputer()),getSaveData:()=>({save:c.c.getSaveString(f.a.ExcludeRunningScriptsFromSave),fileName:c.c.getSaveFileName()}),getSaveInfo:async t=>{try{return(await c.c.getImportDataFromString(t)).playerData}catch(t){return void console.error(t)}},pushSaveData:(t,e=!1)=>r.b.toImportSave(t,e)};window.appSaveFns=t}(),function(){const t=window.electronBridge;if(!t)return;t.receive("get-save-data-request",()=>{const e=window.appSaveFns.getSaveData();t.send("get-save-data-response",e)}),t.receive("get-save-info-request",async e=>{const n=await window.appSaveFns.getSaveInfo(e);t.send("get-save-info-response",n)}),t.receive("push-save-request",({save:t,automatic:e=!1})=>{window.appSaveFns.pushSaveData(t,e)}),t.receive("trigger-save",()=>window.appSaveFns.triggerSave().then(()=>{t.send("save-completed")}).catch(t=>{console.log(t),s.b.emit("Could not save game.","error",2e3)})),t.receive("trigger-game-export",()=>{try{window.appSaveFns.triggerGameExport()}catch(t){console.log(t),s.b.emit("Could not export game.","error",2e3)}}),t.receive("trigger-scripts-export",()=>{try{window.appSaveFns.triggerScriptsExport()}catch(t){console.log(t),s.b.emit("Could not export scripts.","error",2e3)}})}())}function p(t){const e=window.electronBridge;e&&e.send("push-game-saved",t)}function g(){const t=window.electronBridge;t&&t.send("push-game-ready",{player:{identifier:a.a.identifier,playtime:a.a.totalPlaytime,lastSave:a.a.lastSave},game:{version:m.a.VersionString,hash:Object(h.a)()}})}function y(t){const e=window.electronBridge;e&&(e.send("push-import-result",{wasImported:t}),b())}function b(){const t=window.electronBridge;t&&t.send("push-disable-restore",{duration:6e4})}}).call(this,n(161).Buffer)},,function(t,e,n){"use strict";n.d(e,"a",(function(){return A})),n.d(e,"b",(function(){return R}));var a=n(14),r=n(136),i=n(222),o=n(9),s=n(50),l=n(107),c=n(28),f=n(82),u=n(250),m=n(39),h=n(54),d=n(219),p=n(92),g=n(16),y=n(2),b=n(65),E=n(25),v=n(103),k=n(46),_=n(95),w=n(26),S=n(1107),C=n(4),x=n(59);const L=S.a;function O(){const t=Object(E.d)(v.a.WorldDaemon);return t instanceof k.a&&(!!t.backdoorInstalled||null!==y.a.bladeburner&&y.a.bladeburner.blackops.hasOwnProperty(x.a.OperationDaedalus))}function M(t,e){return t.bitNodeN===e||t.sourceFiles.some(t=>t.n===e)}function T(t){return t.sourceFiles.some(t=>1===t.n)}const A={[C.a.CyberSec.toUpperCase()]:{...L[C.a.CyberSec.toUpperCase()],Icon:"CSEC",Condition:()=>y.a.factions.includes(C.a.CyberSec)},[C.a.NiteSec.toUpperCase()]:{...L[C.a.NiteSec.toUpperCase()],Icon:C.a.NiteSec,Condition:()=>y.a.factions.includes(C.a.NiteSec)},THE_BLACK_HAND:{...L.THE_BLACK_HAND,Icon:"TBH",Condition:()=>y.a.factions.includes(C.a.TheBlackHand)},[C.a.BitRunners.toUpperCase()]:{...L[C.a.BitRunners.toUpperCase()],Icon:C.a.BitRunners.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.BitRunners)},[C.a.Daedalus.toUpperCase()]:{...L[C.a.Daedalus.toUpperCase()],Icon:C.a.Daedalus.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.Daedalus)},THE_COVENANT:{...L.THE_COVENANT,Icon:C.a.TheCovenant.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.TheCovenant)},[C.a.Illuminati.toUpperCase()]:{...L[C.a.Illuminati.toUpperCase()],Icon:C.a.Illuminati.toLowerCase(),Condition:()=>y.a.factions.includes(C.a.Illuminati)},"BRUTESSH.EXE":{...L["BRUTESSH.EXE"],Icon:"p0",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.BruteSSHProgram.name)},"FTPCRACK.EXE":{...L["FTPCRACK.EXE"],Icon:"p1",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.FTPCrackProgram.name)},"RELAYSMTP.EXE":{...L["RELAYSMTP.EXE"],Icon:"p2",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.RelaySMTPProgram.name)},"HTTPWORM.EXE":{...L["HTTPWORM.EXE"],Icon:"p3",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.HTTPWormProgram.name)},"SQLINJECT.EXE":{...L["SQLINJECT.EXE"],Icon:"p4",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.SQLInjectProgram.name)},"FORMULAS.EXE":{...L["FORMULAS.EXE"],Icon:"formulas",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.Formulas.name)},"SF1.1":{...L["SF1.1"],Icon:"SF1.1",Visible:()=>M(y.a,1),Condition:()=>y.a.sourceFileLvl(1)>=1},"SF2.1":{...L["SF2.1"],Icon:"SF2.1",Visible:()=>M(y.a,2),Condition:()=>y.a.sourceFileLvl(2)>=1},"SF3.1":{...L["SF3.1"],Icon:"SF3.1",Visible:()=>M(y.a,3),Condition:()=>y.a.sourceFileLvl(3)>=1},"SF4.1":{...L["SF4.1"],Icon:"SF4.1",Visible:()=>M(y.a,4),Condition:()=>y.a.sourceFileLvl(4)>=1},"SF5.1":{...L["SF5.1"],Icon:"SF5.1",Visible:()=>M(y.a,5),Condition:()=>y.a.sourceFileLvl(5)>=1},"SF6.1":{...L["SF6.1"],Icon:"SF6.1",Visible:()=>M(y.a,6),Condition:()=>y.a.sourceFileLvl(6)>=1},"SF7.1":{...L["SF7.1"],Icon:"SF7.1",Visible:()=>M(y.a,7),Condition:()=>y.a.sourceFileLvl(7)>=1},"SF8.1":{...L["SF8.1"],Icon:"SF8.1",Visible:()=>M(y.a,8),Condition:()=>y.a.sourceFileLvl(8)>=1},"SF9.1":{...L["SF9.1"],Icon:"SF9.1",Visible:()=>M(y.a,9),Condition:()=>y.a.sourceFileLvl(9)>=1},"SF10.1":{...L["SF10.1"],Icon:"SF10.1",Visible:()=>M(y.a,10),Condition:()=>y.a.sourceFileLvl(10)>=1},"SF11.1":{...L["SF11.1"],Icon:"SF11.1",Visible:()=>M(y.a,11),Condition:()=>y.a.sourceFileLvl(11)>=1},"SF12.1":{...L["SF12.1"],Icon:"SF12.1",Visible:()=>M(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=1},MONEY_1Q:{...L.MONEY_1Q,Icon:"$1Q",Condition:()=>y.a.money>=1e18},MONEY_M1B:{...L.MONEY_M1B,Icon:"-1b",Secret:!0,Condition:()=>y.a.money<=-1e9},INSTALL_1:{...L.INSTALL_1,Icon:"install",Condition:()=>y.a.augmentations.length>=1},INSTALL_100:{...L.INSTALL_100,Icon:"install_100",Condition:()=>y.a.augmentations.length>=100},QUEUE_40:{...L.QUEUE_40,Icon:"queue40",Condition:()=>y.a.queuedAugmentations.length>=40},HACKING_100000:{...L.HACKING_100000,Icon:"hack100000",Condition:()=>y.a.hacking>=1e5},COMBAT_3000:{...L.COMBAT_3000,Icon:"combat3000",Condition:()=>y.a.strength>=3e3&&y.a.defense>=3e3&&y.a.dexterity>=3e3&&y.a.agility>=3e3},NEUROFLUX_255:{...L.NEUROFLUX_255,Icon:"nf255",Condition:()=>y.a.augmentations.some(t=>t.name===a.a.NeuroFluxGovernor&&t.level>=255)},NS2:{...L.NS2,Icon:"ns2",Condition:()=>y.a.getHomeComputer().scripts.some(t=>t.filename.endsWith(".js")||t.filename.endsWith(".ns"))},FROZE:{...L.FROZE,Icon:"forze",Condition:()=>location.href.includes("noScripts")},RUNNING_SCRIPTS_1000:{...L.RUNNING_SCRIPTS_1000,Icon:"run1000",Condition:()=>{let t=0;for(const e of Object(E.c)())t+=e.runningScripts.length;return t>=1e3}},DRAIN_SERVER:{...L.DRAIN_SERVER,Icon:"drain",Condition:()=>{for(const t of Object(E.c)())if(t instanceof k.a&&t.moneyMax>0&&0===t.moneyAvailable)return!0;return!1}},MAX_RAM:{...L.MAX_RAM,Icon:"maxram",Condition:()=>y.a.getHomeComputer().maxRam===o.a.HomeComputerMaxRam},MAX_CORES:{...L.MAX_CORES,Icon:"maxcores",Condition:()=>8===y.a.getHomeComputer().cpuCores},SCRIPTS_30:{...L.SCRIPTS_30,Icon:"folders",Condition:()=>y.a.getHomeComputer().scripts.length>=30},KARMA_1000000:{...L.KARMA_1000000,Icon:"karma",Secret:!0,Condition:()=>y.a.karma<=-1e6},STOCK_1q:{...L.STOCK_1q,Icon:"$1Q",Condition:()=>y.a.moneySourceB.stock>=1e15},DISCOUNT:{...L.DISCOUNT,Icon:"discount",Condition:()=>{const t=Object(E.d)("powerhouse-fitness");return t instanceof k.a&&t.backdoorInstalled}},SCRIPT_32GB:{...L.SCRIPT_32GB,Icon:"bigcost",Condition:()=>y.a.getHomeComputer().scripts.some(t=>t.ramUsage>=32)},FIRST_HACKNET_NODE:{...L.FIRST_HACKNET_NODE,Icon:"node",Condition:()=>!Object(h.g)(y.a)&&y.a.hacknetNodes.length>0},"30_HACKNET_NODE":{...L["30_HACKNET_NODE"],Icon:"hacknet-all",Condition:()=>!Object(h.g)(y.a)&&y.a.hacknetNodes.length>=30},MAX_HACKNET_NODE:{...L.MAX_HACKNET_NODE,Icon:"hacknet-max",Condition:()=>{if(Object(h.g)(y.a))return!1;for(const t of y.a.hacknetNodes){if(!(t instanceof d.a))return!1;if(t.ram===m.a.MaxRam&&t.cores===m.a.MaxCores&&t.level===m.a.MaxLevel)return!0}return!1}},HACKNET_NODE_10M:{...L.HACKNET_NODE_10M,Icon:"hacknet-10m",Condition:()=>!Object(h.g)(y.a)&&y.a.moneySourceB.hacknet>=1e7},REPUTATION_10M:{...L.REPUTATION_10M,Icon:"reputation",Condition:()=>Object.values(c.a).some(t=>t.playerReputation>=1e7)},DONATION:{...L.DONATION,Icon:"donation",Condition:()=>Object.values(c.a).some(t=>t.favor>=150)},TRAVEL:{...L.TRAVEL,Icon:"TRAVEL",Condition:()=>y.a.city!==g.a.Sector12},WORKOUT:{...L.WORKOUT,Icon:"WORKOUT",Condition:()=>[o.a.ClassGymStrength,o.a.ClassGymDefense,o.a.ClassGymDexterity,o.a.ClassGymAgility].includes(y.a.className)},TOR:{...L.TOR,Icon:"TOR",Condition:()=>y.a.hasTorRouter()},HOSPITALIZED:{...L.HOSPITALIZED,Icon:"OUCH",Condition:()=>0!==y.a.moneySourceB.hospitalization},GANG:{...L.GANG,Icon:"GANG",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang},FULL_GANG:{...L.FULL_GANG,Icon:"GANGMAX",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.length===u.a.MaximumGangMembers},GANG_TERRITORY:{...L.GANG_TERRITORY,Icon:"GANG100%",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&f.a[y.a.gang.facName].territory>=.999},GANG_MEMBER_POWER:{...L.GANG_MEMBER_POWER,Icon:"GANG10000",Visible:()=>M(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.some(t=>t.hack>=1e4||t.str>=1e4||t.def>=1e4||t.dex>=1e4||t.agi>=1e4||t.cha>=1e4)},CORPORATION:{...L.CORPORATION,Icon:"CORP",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation},CORPORATION_BRIBE:{...L.CORPORATION_BRIBE,Icon:"CORPLOBBY",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&1===y.a.corporation.unlockUpgrades[6]},CORPORATION_PROD_1000:{...L.CORPORATION_PROD_1000,Icon:"CORP1000",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(t=>t.prodMult>=1e3)},CORPORATION_EMPLOYEE_3000:{...L.CORPORATION_EMPLOYEE_3000,Icon:"CORPCITY",Visible:()=>M(y.a,3),Condition:()=>{if(null===y.a.corporation)return!1;for(const t of y.a.corporation.divisions)for(const e of Object.values(t.offices))if(0!==e&&e.employees.length>=3e3)return!0;return!1}},CORPORATION_REAL_ESTATE:{...L.CORPORATION_REAL_ESTATE,Icon:"CORPRE",Name:"Own the land",Description:"Expand to the Real Estate division.",Visible:()=>M(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(t=>t.type===s.a.RealEstate)},INTELLIGENCE_255:{...L.INTELLIGENCE_255,Icon:"INT255",Visible:()=>M(y.a,5),Condition:()=>y.a.intelligence>=255},BLADEBURNER_DIVISION:{...L.BLADEBURNER_DIVISION,Icon:"BLADE",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner},BLADEBURNER_OVERCLOCK:{...L.BLADEBURNER_OVERCLOCK,Icon:"BLADEOVERCLOCK",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skills[r.a.Overclock]===i.a[r.a.Overclock].maxLvl},BLADEBURNER_UNSPENT_100000:{...L.BLADEBURNER_UNSPENT_100000,Icon:"BLADE100K",Visible:()=>M(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skillPoints>=1e5},"4S":{...L["4S"],Icon:"4S",Condition:()=>y.a.has4SData},FIRST_HACKNET_SERVER:{...L.FIRST_HACKNET_SERVER,Icon:"HASHNET",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hacknetNodes.length>0,AdditionalUnlock:[L.FIRST_HACKNET_NODE.ID]},ALL_HACKNET_SERVER:{...L.ALL_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hacknetNodes.length===m.b.MaxServers,AdditionalUnlock:[L["30_HACKNET_NODE"].ID]},MAX_HACKNET_SERVER:{...L.MAX_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>M(y.a,9),Condition:()=>{if(!Object(h.g)(y.a))return!1;for(const t of y.a.hacknetNodes){if("string"!=typeof t)return!1;const e=Object(E.d)(t);if(!(e instanceof p.a))return!1;if(e.maxRam===m.b.MaxRam&&e.cores===m.b.MaxCores&&e.level===m.b.MaxLevel&&e.cache===m.b.MaxCache)return!0}return!1},AdditionalUnlock:[L.MAX_HACKNET_NODE.ID]},HACKNET_SERVER_1B:{...L.HACKNET_SERVER_1B,Icon:"HASHNETMONEY",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.moneySourceB.hacknet>=1e9,AdditionalUnlock:[L.HACKNET_NODE_10M.ID]},MAX_CACHE:{...L.MAX_CACHE,Icon:"HASHNETCAP",Visible:()=>M(y.a,9),Condition:()=>Object(h.g)(y.a)&&y.a.hashManager.hashes===y.a.hashManager.capacity&&y.a.hashManager.capacity>0},SLEEVE_8:{...L.SLEEVE_8,Icon:"SLEEVE8",Visible:()=>M(y.a,10),Condition:()=>8===y.a.sleeves.length&&3===y.a.sourceFileLvl(10)},INDECISIVE:{...L.INDECISIVE,Icon:"1H",Visible:()=>T(y.a),Condition:function(){let t=0;return setInterval(()=>{_.b.page()===w.a.BitVerse?t++:t=0},6e4),()=>t>60}()},FAST_BN:{...L.FAST_BN,Icon:"2DAYS",Visible:()=>T(y.a),Condition:()=>O()&&y.a.playtimeSinceLastBitnode<1728e5},CHALLENGE_BN1:{...L.CHALLENGE_BN1,Icon:"BN1+",Visible:()=>T(y.a),Condition:()=>1===y.a.bitNodeN&&O()&&y.a.getHomeComputer().maxRam<=128&&1===y.a.getHomeComputer().cpuCores},CHALLENGE_BN2:{...L.CHALLENGE_BN2,Icon:"BN2+",Visible:()=>M(y.a,2),Condition:()=>2===y.a.bitNodeN&&O()&&null===y.a.gang},CHALLENGE_BN3:{...L.CHALLENGE_BN3,Icon:"BN3+",Visible:()=>M(y.a,3),Condition:()=>3===y.a.bitNodeN&&O()&&null===y.a.corporation},CHALLENGE_BN6:{...L.CHALLENGE_BN6,Icon:"BN6+",Visible:()=>M(y.a,6),Condition:()=>6===y.a.bitNodeN&&O()&&null===y.a.bladeburner},CHALLENGE_BN7:{...L.CHALLENGE_BN7,Icon:"BN7+",Visible:()=>M(y.a,7),Condition:()=>7===y.a.bitNodeN&&O()&&null===y.a.bladeburner},CHALLENGE_BN8:{...L.CHALLENGE_BN8,Icon:"BN8+",Visible:()=>M(y.a,8),Condition:()=>8===y.a.bitNodeN&&O()&&!y.a.has4SData&&!y.a.has4SDataTixApi},CHALLENGE_BN9:{...L.CHALLENGE_BN9,Icon:"BN9+",Visible:()=>M(y.a,9),Condition:()=>9===y.a.bitNodeN&&O()&&0===y.a.moneySourceB.hacknet&&0===y.a.moneySourceB.hacknet_expenses},CHALLENGE_BN10:{...L.CHALLENGE_BN10,Icon:"BN10+",Visible:()=>M(y.a,10),Condition:()=>10===y.a.bitNodeN&&O()&&!y.a.sleeves.some(t=>t.augmentations.length>0||t.hacking_exp>0||t.strength_exp>0||t.defense_exp>0||t.agility_exp>0||t.dexterity_exp>0||t.charisma_exp>0)},CHALLENGE_BN12:{...L.CHALLENGE_BN12,Icon:"BN12+",Visible:()=>M(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=50},BYPASS:{...L.BYPASS,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Bypass)},PROTOTYPETAMPERING:{...L.PROTOTYPETAMPERING,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.PrototypeTampering)},UNCLICKABLE:{...L.UNCLICKABLE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Unclickable)},UNDOCUMENTEDFUNCTIONCALL:{...L.UNDOCUMENTEDFUNCTIONCALL,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.UndocumentedFunctionCall)},TIMECOMPRESSION:{...L.TIMECOMPRESSION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.TimeCompression)},REALITYALTERATION:{...L.REALITYALTERATION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.RealityAlteration)},N00DLES:{...L.N00DLES,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.N00dles)},EDITSAVEFILE:{...L.EDITSAVEFILE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.EditSaveFile)},UNACHIEVABLE:{...L.UNACHIEVABLE,Icon:"SF-1",Secret:!0,Condition:()=>!1},CHALLENGE_BN13:{...L.CHALLENGE_BN13,Icon:"BN13+",Visible:()=>M(y.a,13),Condition:()=>13===y.a.bitNodeN&&O()&&!y.a.augmentations.some(t=>t.name===a.a.StaneksGift1)},DEVMENU:{...L.DEVMENU,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.YoureNotMeantToAccessThis)},RAINBOW:{...L.RAINBOW,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.INeedARainbow)},TRUE_RECURSION:{...L.TRUE_RECURSION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.TrueRecursion)}};function R(){const t=y.a.achievements.map(t=>t.ID),e=Object.values(A).filter(e=>!t.includes(e.ID)&&e.Condition()).flatMap(t=>[t.ID,...t.AdditionalUnlock||[]]);for(const t of e)y.a.giveAchievement(t);document.achievements=[...y.a.achievements.map(t=>t.ID)]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return P})),n.d(e,"a",(function(){return I}));var a=n(0),r=n.n(a),i=n(127),o=n(115),s=n(139),l=n(5),c=n(118),f=n(1150),u=n(23),m=n(151),h=n(140),d=n(30),p=n(47),g=n(1),y=n(10),b=n(111),E=n(455),v=n.n(E),k=n(1152),_=n.n(k),w=n(8),S=n(29),C=n(382),x=n(7),L=n(20),O=n(21),M=n(9);function T(){const t=Object(i.a)(),e=S.b.Player(),n=P();if(0===e.intelligence)return r.a.createElement(r.a.Fragment,null);const a=e.calculateSkillProgress(e.intelligence_exp);return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:n.cell}},r.a.createElement(g.a,{classes:{root:n.int}},"Int ")),r.a.createElement(d.a,{align:"right",classes:{root:n.cell}},r.a.createElement(g.a,{classes:{root:n.int}},l.a.formatSkill(e.intelligence))),r.a.createElement(d.a,{align:"right",classes:{root:n.cell}},r.a.createElement(g.a,{id:"overview-int-hook",classes:{root:n.int}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:a,color:t.colors.int})))}function A(){const t=S.b.Player(),e=P(),n=t.bladeburner;if(null===n)return r.a.createElement(r.a.Fragment,null);const a=n.getTypeAndNameFromActionId(n.action);return"Idle"===a.type?r.a.createElement(r.a.Fragment,null):r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:e.cellNone}},r.a.createElement(g.a,null,"Bladeburner:"))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:e.cellNone}},r.a.createElement(g.a,null,a.type,": ",a.name))))}function R({tooltip:t,children:e,onClickFocus:n,header:a}){const i=P();return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(L.a,{title:r.a.createElement(r.a.Fragment,null,t)},r.a.createElement(g.a,{className:i.workHeader,sx:{pt:1,pb:.5}},a)))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(g.a,{className:i.workSubtitles},e))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",align:"center",colSpan:2,classes:{root:i.cellNone}},r.a.createElement(y.a,{sx:{mt:1},onClick:n},"Focus"))))}function N(){const t=S.b.Player(),e=S.b.Router();if(!t.isWorking||t.focus)return r.a.createElement(r.a.Fragment,null);let n=r.a.createElement(r.a.Fragment,null),a=r.a.createElement(r.a.Fragment,null),i=r.a.createElement(r.a.Fragment,null);switch(t.workType){case M.a.WorkTypeCompanyPartTime:case M.a.WorkTypeCompany:n=r.a.createElement(r.a.Fragment,null,t.jobs[t.companyName]," at ",r.a.createElement("strong",null,t.companyName)),a=r.a.createElement(r.a.Fragment,null,"Working at ",r.a.createElement("strong",null,t.companyName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:t.workRepGained})," rep");break;case M.a.WorkTypeFaction:n=r.a.createElement(r.a.Fragment,null,t.factionWorkType," for ",r.a.createElement("strong",null,t.currentWorkFactionName)),a=r.a.createElement(r.a.Fragment,null,"Working for ",r.a.createElement("strong",null,t.currentWorkFactionName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:t.workRepGained})," rep");break;case M.a.WorkTypeStudyClass:n=r.a.createElement(r.a.Fragment,null,t.workType),a=r.a.createElement(r.a.Fragment,null,"You are ",t.className),i=r.a.createElement(r.a.Fragment,null,Object(u.b)(t.timeWorked));break;case M.a.WorkTypeCreateProgram:n=r.a.createElement(r.a.Fragment,null,"Coding ",t.createProgramName),a=r.a.createElement(r.a.Fragment,null,"Creating a program"),i=r.a.createElement(r.a.Fragment,null,t.createProgramName," ",(t.timeWorkedCreateProgram/t.timeNeededToCompleteWork*100).toFixed(2),"%");break;case M.a.WorkTypeGraftAugmentation:n=r.a.createElement(r.a.Fragment,null,"Grafting ",t.graftAugmentationName),a=r.a.createElement(r.a.Fragment,null,"Grafting an Augmentation"),i=r.a.createElement(r.a.Fragment,null,r.a.createElement("strong",null,(t.timeWorkedGraftAugmentation/t.timeNeededToCompleteWork*100).toFixed(2),"%")," ","done")}return r.a.createElement(R,{tooltip:n,header:a,onClickFocus:()=>{t.startFocusing(),e.toWork()}},i)}const P=Object(o.a)(t=>Object(s.a)({workCell:{textAlign:"center",maxWidth:"200px",borderBottom:"none",padding:0,margin:0},workHeader:{fontSize:"0.9rem"},workSubtitles:{fontSize:"0.8rem"},cellNone:{borderBottom:"none",padding:0,margin:0},cell:{padding:0,margin:0},hp:{color:t.colors.hp},money:{color:t.colors.money},hack:{color:t.colors.hack},combat:{color:t.colors.combat},cha:{color:t.colors.cha},int:{color:t.colors.int}}));function I({save:t,killScripts:e}){const[n,o]=Object(a.useState)(!1),s=S.b.Player(),c=Object(a.useState)(!1)[1];Object(a.useEffect)(()=>{const t=setInterval(()=>c(t=>!t),600);return()=>clearInterval(t)},[]);const u=P(),y=Object(i.a)(),E=s.calculateSkillProgress(s.hacking_exp,s.hacking_mult*x.a.HackingLevelMultiplier),k=s.calculateSkillProgress(s.strength_exp,s.strength_mult*x.a.StrengthLevelMultiplier),M=s.calculateSkillProgress(s.defense_exp,s.defense_mult*x.a.DefenseLevelMultiplier),R=s.calculateSkillProgress(s.dexterity_exp,s.dexterity_mult*x.a.DexterityLevelMultiplier),I=s.calculateSkillProgress(s.agility_exp,s.agility_mult*x.a.AgilityLevelMultiplier),F=s.calculateSkillProgress(s.charisma_exp,s.charisma_mult*x.a.CharismaLevelMultiplier);return r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{sx:{display:"block",m:1}},r.a.createElement(h.a,null,r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hp}},"HP ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hp}},l.a.formatHp(s.hp)," / ",l.a.formatHp(s.max_hp))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-hp-hook",classes:{root:u.hp}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.money}},"Money ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.money}},l.a.formatMoney(s.money))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-money-hook",classes:{root:u.money}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hack}},"Hack ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.hack}},l.a.formatSkill(s.hacking)))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:E,color:y.colors.hack})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.hack}})),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-hack-hook",classes:{root:u.hack}}))),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Str ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.strength))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-str-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:k,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Def ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.defense))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-def-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:M,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},"Dex ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.dexterity))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-dex-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:R,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.combat}},"Agi ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{classes:{root:u.combat}},l.a.formatSkill(s.agility))),r.a.createElement(d.a,{align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-agi-hook",classes:{root:u.combat}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:I,color:y.colors.combat})),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.cha}},"Cha ")),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{classes:{root:u.cha}},l.a.formatSkill(s.charisma))),r.a.createElement(d.a,{align:"right",classes:{root:u.cellNone}},r.a.createElement(g.a,{id:"overview-cha-hook",classes:{root:u.cha}}))),r.a.createElement(p.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:F,color:y.colors.cha})),r.a.createElement(T,null),r.a.createElement(p.a,null,r.a.createElement(d.a,{component:"th",scope:"row",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-0",classes:{root:u.hack}})),r.a.createElement(d.a,{component:"th",scope:"row",align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-1",classes:{root:u.hack}})),r.a.createElement(d.a,{component:"th",scope:"row",align:"right",classes:{root:u.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-2",classes:{root:u.hack}}))),r.a.createElement(N,null),r.a.createElement(A,null))),r.a.createElement(O.a,{sx:{display:"flex",borderTop:"1px solid "+w.a.theme.welllight}},r.a.createElement(O.a,{sx:{display:"flex",flex:1,justifyContent:"flex-start",alignItems:"center"}},r.a.createElement(b.a,{"aria-label":"save game",onClick:t},r.a.createElement(L.a,{title:0!==w.a.AutosaveInterval?"Save game":"Save game (auto-saves are disabled!)"},r.a.createElement(v.a,{color:0!==w.a.AutosaveInterval?"primary":"error"})))),r.a.createElement(O.a,{sx:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center"}},r.a.createElement(b.a,{"aria-label":"kill all scripts",onClick:()=>o(!0)},r.a.createElement(L.a,{title:"Kill all running scripts"},r.a.createElement(_.a,{color:"error"}))))),r.a.createElement(f.a,{open:n,onClose:()=>o(!1),killScripts:e}))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={0:[0,2e10,"Export","Develop infrastructure to export your materials to your other facilities. This allows you to move materials around between different divisions and cities."],1:[1,25e9,"Smart Supply","Use advanced AI to anticipate your supply needs. This allows you to purchase exactly however many materials you need for production."],2:[2,5e9,"Market Research - Demand","Mine and analyze market data to determine the demand of all resources. The demand attribute, which affects sales, will be displayed for every material and product."],3:[3,5e9,"Market Data - Competition","Mine and analyze market data to determine how much competition there is on the market for all resources. The competition attribute, which affects sales, will be displayed for every material and product."],4:[4,1e10,"VeChain","Use AI and blockchain technology to identify where you can improve your supply chain systems. This upgrade will allow you to view a wide array of useful statistics about your Corporation."],5:[5,5e14,"Shady Accounting","Utilize unscrupulous accounting practices and pay off government officials to save money on taxes. This reduces the dividend tax rate by 5%."],6:[6,2e15,"Government Partnership","Help national governments further their agendas in exchange for lowered taxes. This reduces the dividend tax rate by 10%"],7:[7,5e10,"Warehouse API","Enables the warehouse API."],8:[8,5e10,"Office API","Enables the office API."]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return m})),n.d(e,"a",(function(){return h}));var a=n(0),r=n.n(a),i=n(2),o=n(450),s=n(583),l=n(79),c=n(360),f=n(15);let u=!1;function m(t){u=t}function h(t,e,n,a){e?0===l.a[5]&&5!==a&&(i.a.intelligence=0,i.a.intelligence_exp=0):function(t){const e="SourceFile"+t.toString(),n=c.a[e];if(null==n)return void console.error("Could not find source file for Bit node: "+t);let a=!1,o=null;for(let e=0;e=3&&12!==o.n?Object(f.a)(`The Source-File for the BitNode you just destroyed, ${n.name}, is already at max level!`):(++o.lvl,Object(f.a)(n.name+" was upgraded to level "+o.lvl+" for destroying its corresponding BitNode!"));else{const e=new s.a(t,1);i.a.sourceFiles.push(e),5===t&&0===i.a.intelligence&&(i.a.intelligence=1),Object(f.a)(r.a.createElement(r.a.Fragment,null,"You received a Source-File for destroying a BitNode!",r.a.createElement("br",null),r.a.createElement("br",null),n.name,r.a.createElement("br",null),r.a.createElement("br",null),n.info))}}(n),5===a&&0===i.a.intelligence&&(i.a.intelligence=1),u=!1,i.a.bitNodeN=a,6===a?t.toBladeburnerCinematic():t.toTerminal(),Object(o.b)(e)}},,function(t,e,n){"use strict";function a(t,e){if(e<0||e>100)return t;const n=t*(e/100);return t+(Math.random()*(2*n)-n)}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n){this.program=t,this.price=e,this.description=n}}},,,,,,,function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return o}));const r=new class{constructor(){a(this,"m",1024),a(this,"a",341),a(this,"c",1),this.x=0,this.reset()}step(){this.x=(this.a*this.x+this.c)%this.m}random(){return this.step(),this.x/this.m}reset(){this.x=(new Date).getTime()%this.m}};class i{constructor(t){a(this,"s1",0),a(this,"s2",0),a(this,"s3",0);const e=t/1e3%3e4;this.s1=e,this.s2=e,this.s3=e}step(){this.s1=171*this.s1%30269,this.s2=172*this.s2%30307,this.s3=170*this.s3%30323}random(){return this.step(),(this.s1/30269+this.s2/30307+this.s3/30323)%1}}function o(t){let e=1779033703^t.length;for(let n=0;n>>19;const n=()=>(e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0);let a=n(),r=n(),i=n(),o=n();return()=>{a>>>=0,r>>>=0,i>>>=0,o>>>=0;let t=a+r|0;return a=r^r>>>9,r=i+(i<<3)|0,i=i<<21|i>>>11,o=o+1|0,t=t+o|0,i=i+t|0,(t>>>0)/4294967296}}},,,,,,,function(t,e,n){"use strict";function a(t,e){if(t.length!==e.length)return!1;for(let n=0;nObject(o.a)({favor:{color:t.colors.rep}}));function l({favor:t}){const e=s();return a.createElement("span",{className:e.favor},"number"==typeof t?r.a.formatFavor(t):t)}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return b}));var a=n(77),r=n(259),i=n(7),o=n(85),s=n(66),l=n(234),c=n(94),f=n(9),u=n(204),m=n(28),h=n(184),d=n(16),p=n(11),g=n(24);function y(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class b extends r.a{constructor(t=null){super(),y(this,"className",""),y(this,"crimeType",""),y(this,"currentTask",a.a.Idle),y(this,"currentTaskLocation",""),y(this,"currentTaskMaxTime",0),y(this,"currentTaskTime",0),y(this,"earningsForSleeves",Object(r.b)()),y(this,"earningsForPlayer",Object(r.b)()),y(this,"earningsForTask",Object(r.b)()),y(this,"factionWorkType",h.a.None),y(this,"gainRatesForTask",Object(r.b)()),y(this,"gymStatType",""),y(this,"logs",[]),y(this,"memory",1),y(this,"shock",1),y(this,"storedCycles",0),y(this,"sync",1),null!=t&&this.shockRecovery(t)}commitCrime(t,e){const n=o.a[e]||Object.values(o.a).find(t=>t.name===e);return!!n&&(this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.gainRatesForTask.hack=n.hacking_exp*this.hacking_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.str=n.strength_exp*this.strength_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.def=n.defense_exp*this.defense_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.dex=n.dexterity_exp*this.dexterity_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.agi=n.agility_exp*this.agility_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.cha=n.charisma_exp*this.charisma_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.money=n.money*this.crime_money_mult*i.a.CrimeMoney,this.currentTaskLocation=String(this.gainRatesForTask.money),this.crimeType=n.name,this.currentTaskMaxTime=n.time,this.currentTask=a.a.Crime,!0)}finishTask(t){let e=Object(r.b)();if(this.currentTask===a.a.Crime&&this.currentTaskTime>=this.currentTaskMaxTime){const n=Object.values(o.a).find(t=>t.name===this.crimeType);if(!n)return console.error("Invalid data stored in sleeve.crimeType: "+this.crimeType),this.resetTaskStatus(),e;if(Math.random()0&&(this.hacking_exp+=e.hack),e.str>0&&(this.strength_exp+=e.str),e.def>0&&(this.defense_exp+=e.def),e.dex>0&&(this.dexterity_exp+=e.dex),e.agi>0&&(this.agility_exp+=e.agi),e.cha>0&&(this.charisma_exp+=e.cha),Object(r.b)();const i=this.shock/100*(this.sync/100)*n,o=e.hack*i,s=e.str*i,l=e.def*i,c=e.dex*i,f=e.agi*i,u=e.cha*i;return o>0&&(this.hacking_exp+=o,t.gainHackingExp(o),this.earningsForPlayer.hack+=o,this.earningsForTask.hack+=o),s>0&&(this.strength_exp+=s,t.gainStrengthExp(s),this.earningsForPlayer.str+=s,this.earningsForTask.str+=s),l>0&&(this.defense_exp+=l,t.gainDefenseExp(l),this.earningsForPlayer.def+=l,this.earningsForTask.def+=l),c>0&&(this.dexterity_exp+=c,t.gainDexterityExp(c),this.earningsForPlayer.dex+=c,this.earningsForTask.dex+=c),f>0&&(this.agility_exp+=f,t.gainAgilityExp(f),this.earningsForPlayer.agi+=f,this.earningsForTask.agi+=f),u>0&&(this.charisma_exp+=u,t.gainCharismaExp(u),this.earningsForPlayer.cha+=u,this.earningsForTask.cha+=u),this.earningsForSleeves.hack+=o*(this.sync/100),this.earningsForSleeves.str+=s*(this.sync/100),this.earningsForSleeves.def+=l*(this.sync/100),this.earningsForSleeves.dex+=c*(this.sync/100),this.earningsForSleeves.agi+=f*(this.sync/100),this.earningsForSleeves.cha+=u*(this.sync/100),{hack:o*(this.sync/100),str:s*(this.sync/100),def:l*(this.sync/100),dex:c*(this.sync/100),agi:f*(this.sync/100),cha:u*(this.sync/100),money:0}}gainMoney(t,e,n=1){const a=e.money*n;this.earningsForTask.money+=a,this.earningsForPlayer.money+=a,t.gainMoney(a,"sleeves")}getMemoryUpgradeCost(t){const e=Math.round(t);if(e<0)return 0;if(this.memory+e>100)return this.getMemoryUpgradeCost(100-this.memory);let n=0,a=this.memory-1;for(let e=0;e50&&this.logs.shift()}prestige(t){this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.resetTaskStatus(),this.earningsForSleeves=Object(r.b)(),this.earningsForPlayer=Object(r.b)(),this.shockRecovery(t),this.augmentations=[],this.resetMultipliers(),this.city=d.a.Sector12,this.shock=1,this.storedCycles=0,this.sync=Math.max(this.memory,1),this.logs=[]}process(t,e=1){const n=1e3/f.a.MilliPerCycle;if(this.storedCycles+=e,this.storedCyclesthis.currentTaskMaxTime&&(o=this.currentTaskMaxTime-this.currentTaskTime,i=Math.floor(o/f.a.MilliPerCycle),(o<0||i<0)&&(console.warn("Sleeve.process() calculated negative cycle usage"),o=0,i=0)),this.currentTaskTime+=o,this.shock=Math.min(100,this.shock+1e-4*i);let c=Object(r.b)();switch(this.currentTask){case a.a.Idle:break;case a.a.Class:case a.a.Gym:this.updateTaskGainRates(t),c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);break;case a.a.Faction:{c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);const e=m.a[this.currentTaskLocation];if(!(e instanceof u.a)){console.error("Invalid faction for Sleeve task: "+this.currentTaskLocation);break}e.playerReputation+=this.getRepGain(t)*i;break}case a.a.Company:{c=this.gainExperience(t,this.gainRatesForTask,i),this.gainMoney(t,this.gainRatesForTask,i);const e=s.a[this.currentTaskLocation];if(!(e instanceof l.a)){console.error("Invalid company for Sleeve task: "+this.currentTaskLocation);break}e.playerReputation+=this.getRepGain(t)*i;break}case a.a.Recovery:this.shock=Math.min(100,this.shock+2e-4*i),this.shock>=100&&this.resetTaskStatus();break;case a.a.Synchro:this.sync=Math.min(100,this.sync+2e-4*t.getIntelligenceBonus(.5)*i),this.sync>=100&&this.resetTaskStatus()}return 0!==this.currentTaskMaxTime&&this.currentTaskTime>=this.currentTaskMaxTime&&(this.currentTask===a.a.Crime?c=this.finishTask(t):this.finishTask(t)),this.updateStatLevels(),this.storedCycles-=i,c}resetTaskStatus(){this.earningsForTask=Object(r.b)(),this.gainRatesForTask=Object(r.b)(),this.currentTask=a.a.Idle,this.currentTaskTime=0,this.currentTaskMaxTime=0,this.factionWorkType=h.a.None,this.crimeType="",this.currentTaskLocation="",this.gymStatType="",this.className=""}shockRecovery(t){return this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.currentTask=a.a.Recovery,!0}synchronize(t){return this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus(),this.currentTask=a.a.Synchro,!0}takeUniversityCourse(t,e,n){this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();let r=1;switch(e.toLowerCase()){case p.a.AevumSummitUniversity.toLowerCase():if(this.city!==d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumSummitUniversity,r=4;break;case p.a.Sector12RothmanUniversity.toLowerCase():if(this.city!==d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12RothmanUniversity,r=3;break;case p.a.VolhavenZBInstituteOfTechnology.toLowerCase():if(this.city!==d.a.Volhaven)return!1;this.currentTaskLocation=p.a.VolhavenZBInstituteOfTechnology,r=5;break;default:return!1}switch(n.toLowerCase()){case"study computer science":break;case"data structures":this.gainRatesForTask.money=f.a.ClassDataStructuresBaseCost*r*-1;break;case"networks":this.gainRatesForTask.money=f.a.ClassNetworksBaseCost*r*-1;break;case"algorithms":this.gainRatesForTask.money=f.a.ClassAlgorithmsBaseCost*r*-1;break;case"management":this.gainRatesForTask.money=f.a.ClassManagementBaseCost*r*-1;break;case"leadership":this.gainRatesForTask.money=f.a.ClassLeadershipBaseCost*r*-1;break;default:return!1}return this.className=n,this.currentTask=a.a.Class,!0}travel(t,e){return t.loseMoney(f.a.TravelCost,"sleeves"),this.city=e,!0}tryBuyAugmentation(t,e){return!!t.canAfford(e.startingCost)&&(!this.augmentations.some(t=>t.name===e.name)&&(t.loseMoney(e.startingCost,"sleeves"),this.installAugmentation(e),!0))}updateTaskGainRates(t){if(this.currentTask!==a.a.Class)if(this.currentTask!==a.a.Gym)console.warn("Sleeve.updateTaskGainRates() called for unexpected task type "+this.currentTask);else{let e=1;switch(this.currentTaskLocation.toLowerCase()){case p.a.AevumCrushFitnessGym.toLowerCase():e=2;break;case p.a.AevumSnapFitnessGym.toLowerCase():e=5;break;case p.a.Sector12IronGym.toLowerCase():e=1;break;case p.a.Sector12PowerhouseGym.toLowerCase():e=10;break;case p.a.VolhavenMilleniumFitnessGym.toLowerCase():e=4;break;default:return}const n=1,a=t.hashManager.getTrainingMult()*e,r=this.gymStatType.toLowerCase();r.includes("str")?this.gainRatesForTask.str=n*a*this.strength_exp_mult:r.includes("def")?this.gainRatesForTask.def=n*a*this.defense_exp_mult:r.includes("dex")?this.gainRatesForTask.dex=n*a*this.dexterity_exp_mult:r.includes("agi")&&(this.gainRatesForTask.agi=n*a*this.agility_exp_mult)}else{let e=1;switch(this.currentTaskLocation.toLowerCase()){case p.a.AevumSummitUniversity.toLowerCase():e=3;break;case p.a.Sector12RothmanUniversity.toLowerCase():e=2;break;case p.a.VolhavenZBInstituteOfTechnology.toLowerCase():e=4;break;default:return}const n=e*t.hashManager.getStudyMult();switch(this.className.toLowerCase()){case"study computer science":this.gainRatesForTask.hack=f.a.ClassStudyComputerScienceBaseExp*n*this.hacking_exp_mult;break;case"data structures":this.gainRatesForTask.hack=f.a.ClassDataStructuresBaseExp*n*this.hacking_exp_mult;break;case"networks":this.gainRatesForTask.hack=f.a.ClassNetworksBaseExp*n*this.hacking_exp_mult;break;case"algorithms":this.gainRatesForTask.hack=f.a.ClassAlgorithmsBaseExp*n*this.hacking_exp_mult;break;case"management":this.gainRatesForTask.cha=f.a.ClassManagementBaseExp*n*this.charisma_exp_mult;break;case"leadership":this.gainRatesForTask.cha=f.a.ClassLeadershipBaseExp*n*this.charisma_exp_mult}}}upgradeMemory(t){t<0?console.warn("Sleeve.upgradeMemory() called with negative value: "+t):this.memory=Math.min(100,Math.round(this.memory+t))}workForCompany(t,e){if(!(s.a[e]instanceof l.a)||null==t.jobs[e])return!1;this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();const n=s.a[e],r=c.a[t.jobs[e]];return null!=n&&(null!=r&&(this.gainRatesForTask.money=r.baseSalary*n.salaryMultiplier*this.work_money_mult*i.a.CompanyWorkMoney,this.gainRatesForTask.hack=r.hackingExpGain*n.expMultiplier*this.hacking_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.str=r.strengthExpGain*n.expMultiplier*this.strength_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.def=r.defenseExpGain*n.expMultiplier*this.defense_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.dex=r.dexterityExpGain*n.expMultiplier*this.dexterity_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.agi=r.agilityExpGain*n.expMultiplier*this.agility_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.cha=r.charismaExpGain*n.expMultiplier*this.charisma_exp_mult*i.a.CompanyWorkExpGain,this.currentTaskLocation=e,this.currentTask=a.a.Company,!0))}workForFaction(t,e,n){const r=m.a[e];if(!(""!==e&&r&&r instanceof u.a&&t.factions.includes(e)))return!1;this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();const o=r.getInfo(),s=n.toLowerCase();if(s.includes("hack")){if(!o.offerHackingWork)return!1;this.factionWorkType=h.a.Hacking,this.gainRatesForTask.hack=.15*this.hacking_exp_mult*i.a.FactionWorkExpGain}else if(s.includes("field")){if(!o.offerFieldWork)return!1;this.factionWorkType=h.a.Field,this.gainRatesForTask.hack=.1*this.hacking_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.str=.1*this.strength_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.def=.1*this.defense_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.dex=.1*this.dexterity_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.agi=.1*this.agility_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.cha=.1*this.charisma_exp_mult*i.a.FactionWorkExpGain}else{if(!s.includes("security"))return!1;if(!o.offerSecurityWork)return!1;this.factionWorkType=h.a.Security,this.gainRatesForTask.hack=.1*this.hacking_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.str=.15*this.strength_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.def=.15*this.defense_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.dex=.15*this.dexterity_exp_mult*i.a.FactionWorkExpGain,this.gainRatesForTask.agi=.15*this.agility_exp_mult*i.a.FactionWorkExpGain}return this.currentTaskLocation=e,this.currentTask=a.a.Faction,!0}workoutAtGym(t,e,n){this.currentTask!==a.a.Idle?this.finishTask(t):this.resetTaskStatus();let r=1;switch(e.toLowerCase()){case p.a.AevumCrushFitnessGym.toLowerCase():if(this.city!=d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumCrushFitnessGym,r=3;break;case p.a.AevumSnapFitnessGym.toLowerCase():if(this.city!=d.a.Aevum)return!1;this.currentTaskLocation=p.a.AevumSnapFitnessGym,r=10;break;case p.a.Sector12IronGym.toLowerCase():if(this.city!=d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12IronGym,r=1;break;case p.a.Sector12PowerhouseGym.toLowerCase():if(this.city!=d.a.Sector12)return!1;this.currentTaskLocation=p.a.Sector12PowerhouseGym,r=20;break;case p.a.VolhavenMilleniumFitnessGym.toLowerCase():if(this.city!=d.a.Volhaven)return!1;this.currentTaskLocation=p.a.VolhavenMilleniumFitnessGym,r=7;break;default:return!1}const i=n.toLowerCase();return this.gainRatesForTask.money=f.a.ClassGymBaseCost*r*-1,!!(i.includes("str")||i.includes("def")||i.includes("dex")||i.includes("agi"))&&(this.gymStatType=n,this.currentTask=a.a.Gym,!0)}toJSON(){return Object(g.b)("Sleeve",this)}static fromJSON(t){return Object(g.a)(b,t.data)}}g.c.constructors.Sleeve=b},function(t,e,n){"use strict";let a;n.d(e,"a",(function(){return a})),function(t){t[t.SyntaxError=-1]="SyntaxError",t[t.ImportError=-2]="ImportError",t[t.URLImportError=-3]="URLImportError"}(a||(a={}))},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(126);const r=new a.a,i=new a.a},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(t="",e=""){r(this,"filename",""),r(this,"msg",""),r(this,"recvd",!1),this.filename=t,this.msg=e,this.recvd=!1}toJSON(){return Object(a.b)("Message",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.Message=i},function(t,e,n){"use strict";n.d(e,"a",(function(){return m}));var a=n(242),r=n(148),i=n(114),o=n(76),s=n(5),l=n(19),c=n(15),f=n(8),u=n(0);function m(t,e,n,a){const s=a.stockMarket.Orders;if(null==s){const t={};for(const e of Object.keys(a.stockMarket)){const n=a.stockMarket[e];n instanceof r.a&&(t[n.symbol]=[])}return void(a.stockMarket.Orders=t)}let l=s[t.symbol];if(null==l||l.constructor!==Array)return console.error(`Invalid Order book for ${t.symbol} in processOrders(): ${l}`),void(l=[]);for(const r of l)if(r.type===e&&r.pos===n)switch(r.type){case i.a.LimitBuy:(r.pos===o.a.Long&&t.price<=r.price||r.pos===o.a.Short&&t.price>=r.price)&&h(r,a);break;case i.a.LimitSell:case i.a.StopBuy:(r.pos===o.a.Long&&t.price>=r.price||r.pos===o.a.Short&&t.price<=r.price)&&h(r,a);break;case i.a.StopSell:(r.pos===o.a.Long&&t.price<=r.price||r.pos===o.a.Short&&t.price>=r.price)&&h(r,a);break;default:return void console.warn("Invalid order type: "+r.type)}}function h(t,e){const n=e.symbolToStockMap[t.stockSymbol];if(!(n instanceof r.a))return void console.error("Could not find stock for this order: "+t.stockSymbol);const m=e.stockMarket.Orders[n.symbol],h={suppressDialog:!0};let d=!0,p=!1;switch(t.type){case i.a.LimitBuy:case i.a.StopBuy:p=!0,t.pos===o.a.Long?d=Object(a.a)(n,t.shares,null,h)&&d:t.pos===o.a.Short&&(d=Object(a.d)(n,t.shares,null,h)&&d);break;case i.a.LimitSell:case i.a.StopSell:t.pos===o.a.Long?d=Object(a.c)(n,t.shares,null,h)&&d:t.pos===o.a.Short&&(d=Object(a.b)(n,t.shares,null,h)&&d);break;default:return void console.warn("Invalid order type: "+t.type)}const g=t.pos===o.a.Long?"Long":"Short";if(d){for(let e=0;e({...a})},,function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return m}));var a=n(0),r=n.n(a),i=n(126),o=n(41),s=n(1),l=n(21),c=n(746);const f=new i.a;let u=0;function m(){const[t,e]=Object(a.useState)([]);return Object(a.useEffect)(()=>f.subscribe(t=>{const n=u+"";u++,e(e=>{const a=function(t){return"string"==typeof t?Object(c.sha256)(t):Object(c.sha256)(JSON.stringify(t.props))}(t);return e.some(t=>t.hash===a)?(console.log("Duplicate message"),e):[...e,{id:n,text:t,hash:a}]})}),[]),Object(a.useEffect)(()=>{function t(t){"Escape"===t.code&&e([])}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[]),r.a.createElement(r.a.Fragment,null,t.length>0&&r.a.createElement(o.a,{open:!0,onClose:function(){e(t=>t.slice(1,1e99))}},r.a.createElement(l.a,{overflow:"scroll",sx:{overflowWrap:"break-word",whiteSpace:"pre-line"}},r.a.createElement(s.a,{component:"span"},t[0].text))))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(530);function r(){return Object(a.a)(99)+"."+Object(a.a)(9)+"."+Object(a.a)(9)+"."+Object(a.a)(9)}},function(t,e,n){"use strict";function a(){return new Promise((t,e)=>{window.indexedDB||e("Indexed DB does not exists");const n=window.indexedDB.open("bitburnerSave",1);n.onupgradeneeded=function(){this.result.createObjectStore("savestring")},n.onerror=function(t){e("Failed to get IDB "+t)},n.onsuccess=function(){const n=this.result;n?t(n.transaction(["savestring"],"readwrite").objectStore("savestring")):e("database loading result was undefined")}})}function r(){return new Promise((t,e)=>{a().then(e=>new Promise((t,n)=>{const a=e.get("save");a.onerror=function(t){n("Error in Database request to get savestring: "+t)},a.onsuccess=function(){t(this.result)}}).then(e=>t(e))).catch(t=>e(t))})}function i(t){return a().then(e=>new Promise((n,a)=>{const r=e.put(t,"save");r.onerror=function(t){a("Error saving game to IndexedDB: "+t)},r.onsuccess=()=>n()}))}function o(){return a().then(t=>{t.delete("save")})}n.d(e,"b",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){return o}))},,,function(t,e,n){"use strict";function a(t){const e=25e3*(Math.pow(1.02,t)-1);return Math.round(1e4*e)/1e4}function r(t){const e=Math.log(t/25e3+1)/Math.log(1.02);return Math.round(1e4*e)/1e4}n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return r}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return o})),n.d(e,"d",(function(){return s}));var a=n(28);let r=0;function i(){return(new Date).getTime()-r>864e5}function o(t){if(i()){for(const e of t.factions)a.a[e].favor++;r=(new Date).getTime()}}function s(t){r=t}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(62),r=n(449),i=n(24);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class s extends r.a{constructor(t=null){super(t),o(this,"reqdRank",100),o(this,"teamCount",0),t&&t.reqdRank&&(this.reqdRank=t.reqdRank),t&&t.teamCount&&(this.teamCount=t.teamCount)}getTeamSuccessBonus(t){if(this.teamCount&&this.teamCount>0){this.teamCount=Math.min(this.teamCount,t.teamSize);return Math.pow(this.teamCount,.05)}return 1}getActionTypeSkillSuccessBonus(t){return t.skillMultipliers.successChanceOperation}getChaosDifficultyBonus(t){const e=t.getCurrentCity();if(e.chaos>a.a.ChaosThreshold){const t=e.chaos-a.a.ChaosThreshold+1;return Math.pow(t,.5)}return 1}toJSON(){return Object(i.b)("Operation",this)}static fromJSON(t){return Object(i.a)(s,t.data)}}i.c.constructors.Operation=s},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(4),r=n(11),i=n(64),o=n(103);const s=[{hackDifficulty:99,hostname:r.a.AevumECorp.toLowerCase(),moneyAvailable:{max:7e10,min:3e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.AevumECorp,requiredHackingSkill:{max:1400,min:1050},serverGrowth:99,specialName:r.a.AevumECorp},{hackDifficulty:99,hostname:r.a.Sector12MegaCorp.toLowerCase(),moneyAvailable:{max:6e10,min:4e10},networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.Sector12MegaCorp,requiredHackingSkill:{max:1350,min:1100},serverGrowth:99,specialName:r.a.Sector12MegaCorp},{hackDifficulty:{max:88,min:72},hostname:"b-and-a",moneyAvailable:{max:3e10,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.AevumBachmanAndAssociates,requiredHackingSkill:{max:1150,min:900},serverGrowth:{max:80,min:60},specialName:r.a.AevumBachmanAndAssociates},{hackDifficulty:{max:97,min:88},hostname:"blade",literature:[i.a.BeyondMan],maxRamExponent:{max:9,min:5},moneyAvailable:{max:4e10,min:1e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.Sector12BladeIndustries,requiredHackingSkill:{max:1200,min:900},serverGrowth:{max:85,min:55},specialName:r.a.Sector12BladeIndustries},{hackDifficulty:99,hostname:r.a.VolhavenNWO.toLowerCase(),literature:[i.a.TheHiddenWorld],moneyAvailable:{max:4e10,min:2e10},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.VolhavenNWO,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:95,min:65},specialName:r.a.VolhavenNWO},{hackDifficulty:{max:65,min:45},hostname:"clarkinc",literature:[i.a.BeyondMan,i.a.CostOfImmortality],moneyAvailable:{max:25e9,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:r.a.AevumClarkeIncorporated,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:75,min:45},specialName:r.a.AevumClarkeIncorporated},{hackDifficulty:{max:99,min:90},hostname:"omnitek",literature:[i.a.CodedIntelligence,i.a.HistoryOfSynthoids],maxRamExponent:{max:9,min:7},moneyAvailable:{max:22e9,min:13e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.VolhavenOmniTekIncorporated,requiredHackingSkill:{max:1100,min:900},serverGrowth:{max:99,min:95},specialName:r.a.VolhavenOmniTekIncorporated},{hackDifficulty:{max:75,min:55},hostname:"4sigma",moneyAvailable:{max:25e9,min:15e9},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.Sector12FourSigma,requiredHackingSkill:{max:1250,min:900},serverGrowth:{max:99,min:75},specialName:r.a.Sector12FourSigma},{hackDifficulty:{max:99,min:95},hostname:"kuai-gong",moneyAvailable:{max:3e10,min:2e10},networkLayer:13,numOpenPortsRequired:5,organizationName:r.a.ChongqingKuaiGongInternational,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:99,min:90},specialName:r.a.ChongqingKuaiGongInternational},{hackDifficulty:{max:97,min:83},hostname:"fulcrumtech",literature:[i.a.SimulatedReality],maxRamExponent:{max:11,min:7},moneyAvailable:{max:18e8,min:14e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:99,min:80},specialName:r.a.AevumFulcrumTechnologies},{hackDifficulty:99,hostname:"fulcrumassets",moneyAvailable:1e6,networkLayer:15,numOpenPortsRequired:5,organizationName:r.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1600,min:1100},serverGrowth:1,specialName:o.a.FulcrumSecretTechnologies},{hackDifficulty:{max:92,min:78},hostname:"stormtech",moneyAvailable:{max:12e8,min:1e9},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.IshimaStormTechnologies,requiredHackingSkill:{max:1075,min:875},serverGrowth:{max:92,min:68},specialName:r.a.IshimaStormTechnologies},{hackDifficulty:{max:96,min:84},hostname:"defcomm",moneyAvailable:{max:95e7,min:8e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.NewTokyoDefComm,requiredHackingSkill:{max:1050,min:850},serverGrowth:{max:73,min:47},specialName:r.a.NewTokyoDefComm},{hackDifficulty:{max:90,min:70},hostname:"infocomm",moneyAvailable:{max:9e8,min:6e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"InfoComm",requiredHackingSkill:{max:950,min:875},serverGrowth:{max:75,min:35}},{hackDifficulty:{max:95,min:85},hostname:"helios",literature:[i.a.BeyondMan],maxRamExponent:{max:8,min:5},moneyAvailable:{max:75e7,min:55e7},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.VolhavenHeliosLabs,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:80,min:70},specialName:r.a.VolhavenHeliosLabs},{hackDifficulty:{max:90,min:80},hostname:r.a.NewTokyoVitaLife.toLowerCase(),literature:[i.a.AGreenTomorrow],maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:12,numOpenPortsRequired:5,organizationName:r.a.NewTokyoVitaLife,requiredHackingSkill:{max:900,min:775},serverGrowth:{max:80,min:60},specialName:r.a.NewTokyoVitaLife},{hackDifficulty:{max:95,min:85},hostname:"icarus",moneyAvailable:{max:1e9,min:9e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.Sector12IcarusMicrosystems,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:95,min:85},specialName:r.a.Sector12IcarusMicrosystems},{hackDifficulty:{max:90,min:80},hostname:"univ-energy",maxRamExponent:{max:7,min:4},moneyAvailable:{max:12e8,min:11e8},networkLayer:9,numOpenPortsRequired:4,organizationName:r.a.Sector12UniversalEnergy,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:90,min:80},specialName:r.a.Sector12UniversalEnergy},{hackDifficulty:{max:80,min:70},hostname:"titan-labs",literature:[i.a.CodedIntelligence],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:75e7},networkLayer:11,numOpenPortsRequired:5,organizationName:"Titan Laboratories",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:80,min:60}},{hackDifficulty:{max:75,min:65},hostname:"microdyne",literature:[i.a.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:11,numOpenPortsRequired:5,organizationName:"Microdyne Technologies",requiredHackingSkill:{max:875,min:800},serverGrowth:{max:90,min:70}},{hackDifficulty:{max:80,min:70},hostname:"taiyang-digital",literature:[i.a.AGreenTomorrow,i.a.BrighterThanTheSun],moneyAvailable:{max:9e8,min:8e8},networkLayer:10,numOpenPortsRequired:5,organizationName:"Taiyang Digital",requiredHackingSkill:{max:950,min:850},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:65,min:55},hostname:"galactic-cyber",moneyAvailable:{max:85e7,min:75e7},networkLayer:7,numOpenPortsRequired:5,organizationName:r.a.AevumGalacticCybersystems,requiredHackingSkill:{max:875,min:825},serverGrowth:{max:90,min:70},specialName:r.a.AevumGalacticCybersystems},{hackDifficulty:{max:90,min:80},hostname:r.a.AevumAeroCorp.toLowerCase(),literature:[i.a.ManAndMachine],moneyAvailable:{max:12e8,min:1e9},networkLayer:7,numOpenPortsRequired:5,organizationName:r.a.AevumAeroCorp,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:65,min:55},specialName:r.a.AevumAeroCorp},{hackDifficulty:{max:95,min:85},hostname:"omnia",literature:[i.a.HistoryOfSynthoids],maxRamExponent:{max:6,min:4},moneyAvailable:{max:1e9,min:9e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.a.VolhavenOmniaCybersystems,requiredHackingSkill:{max:950,min:850},serverGrowth:{max:70,min:60},specialName:r.a.VolhavenOmniaCybersystems},{hackDifficulty:{max:65,min:55},hostname:"zb-def",literature:[i.a.SyntheticMuscles],moneyAvailable:{max:11e8,min:9e8},networkLayer:10,numOpenPortsRequired:4,organizationName:"ZB Defense Industries",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:75,min:65}},{hackDifficulty:{max:80,min:60},hostname:"applied-energetics",moneyAvailable:{max:1e9,min:7e8},networkLayer:11,numOpenPortsRequired:4,organizationName:"Applied Energetics",requiredHackingSkill:{max:850,min:775},serverGrowth:{max:75,min:70}},{hackDifficulty:{max:80,min:70},hostname:"solaris",literature:[i.a.AGreenTomorrow,i.a.TheFailedFrontier],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:7e8},networkLayer:9,numOpenPortsRequired:5,organizationName:r.a.ChongqingSolarisSpaceSystems,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:80,min:70},specialName:r.a.ChongqingSolarisSpaceSystems},{hackDifficulty:{max:85,min:75},hostname:r.a.Sector12DeltaOne.toLowerCase(),moneyAvailable:{max:17e8,min:13e8},networkLayer:8,numOpenPortsRequired:5,organizationName:r.a.Sector12DeltaOne,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:70,min:50},specialName:r.a.Sector12DeltaOne},{hackDifficulty:{max:85,min:75},hostname:"global-pharm",literature:[i.a.AGreenTomorrow],maxRamExponent:{max:6,min:3},moneyAvailable:{max:175e7,min:15e8},networkLayer:7,numOpenPortsRequired:4,organizationName:r.a.NewTokyoGlobalPharmaceuticals,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:90,min:80},specialName:r.a.NewTokyoGlobalPharmaceuticals},{hackDifficulty:{max:80,min:60},hostname:"nova-med",moneyAvailable:{max:125e7,min:11e8},networkLayer:10,numOpenPortsRequired:4,organizationName:r.a.IshimaNovaMedical,requiredHackingSkill:{max:850,min:775},serverGrowth:{max:85,min:65},specialName:r.a.IshimaNovaMedical},{hackDifficulty:{max:90,min:70},hostname:"zeus-med",moneyAvailable:{max:15e8,min:13e8},networkLayer:9,numOpenPortsRequired:5,organizationName:"Zeus Medical",requiredHackingSkill:{max:850,min:800},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:70},hostname:"unitalife",maxRamExponent:{max:6,min:4},moneyAvailable:{max:11e8,min:1e9},networkLayer:8,numOpenPortsRequired:4,organizationName:"UnitaLife Group",requiredHackingSkill:{max:825,min:775},serverGrowth:{max:80,min:70}},{hackDifficulty:{max:80,min:60},hostname:"lexo-corp",maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.VolhavenLexoCorp,requiredHackingSkill:{max:750,min:650},serverGrowth:{max:65,min:55},specialName:r.a.VolhavenLexoCorp},{hackDifficulty:{max:60,min:40},hostname:"rho-construction",maxRamExponent:{max:6,min:4},moneyAvailable:{max:7e8,min:5e8},networkLayer:6,numOpenPortsRequired:3,organizationName:r.a.AevumRhoConstruction,requiredHackingSkill:{max:525,min:475},serverGrowth:{max:60,min:40},specialName:r.a.AevumRhoConstruction},{hackDifficulty:{max:70,min:50},hostname:"alpha-ent",literature:[i.a.Sector12Crime],maxRamExponent:{max:7,min:4},moneyAvailable:{max:75e7,min:6e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.Sector12AlphaEnterprises,requiredHackingSkill:{max:600,min:500},serverGrowth:{max:60,min:50},specialName:r.a.Sector12AlphaEnterprises},{hackDifficulty:{max:80,min:70},hostname:"aevum-police",maxRamExponent:{max:6,min:4},moneyAvailable:{max:4e8,min:2e8},networkLayer:6,numOpenPortsRequired:4,organizationName:r.a.AevumPolice,requiredHackingSkill:{max:450,min:400},serverGrowth:{max:50,min:30},specialName:r.a.AevumPolice},{hackDifficulty:{max:55,min:45},hostname:"rothman-uni",literature:[i.a.SecretSocieties,i.a.TheFailedFrontier,i.a.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:25e7,min:175e6},networkLayer:5,numOpenPortsRequired:3,organizationName:r.a.Sector12RothmanUniversity,requiredHackingSkill:{max:430,min:370},serverGrowth:{max:45,min:35},specialName:r.a.Sector12RothmanUniversity},{hackDifficulty:{max:85,min:65},hostname:"zb-institute",maxRamExponent:{max:7,min:4},moneyAvailable:{max:11e8,min:8e8},networkLayer:5,numOpenPortsRequired:5,organizationName:r.a.VolhavenZBInstituteOfTechnology,requiredHackingSkill:{max:775,min:725},serverGrowth:{max:85,min:75},specialName:r.a.VolhavenZBInstituteOfTechnology},{hackDifficulty:{max:65,min:45},hostname:"summit-uni",literature:[i.a.SecretSocieties,i.a.TheFailedFrontier,i.a.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:35e7,min:2e8},networkLayer:5,numOpenPortsRequired:3,organizationName:r.a.AevumSummitUniversity,requiredHackingSkill:{max:475,min:425},serverGrowth:{max:60,min:40},specialName:r.a.AevumSummitUniversity},{hackDifficulty:{max:80,min:60},hostname:"syscore",moneyAvailable:{max:6e8,min:4e8},networkLayer:5,numOpenPortsRequired:4,organizationName:r.a.VolhavenSysCoreSecurities,requiredHackingSkill:{max:650,min:550},serverGrowth:{max:70,min:60},specialName:r.a.VolhavenSysCoreSecurities},{hackDifficulty:{max:70,min:60},hostname:"catalyst",literature:[i.a.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:55e7,min:3e8},networkLayer:5,numOpenPortsRequired:3,organizationName:"Catalyst Ventures",requiredHackingSkill:{max:450,min:400},serverGrowth:{max:55,min:25}},{hackDifficulty:{max:45,min:35},hostname:"the-hub",maxRamExponent:{max:6,min:3},moneyAvailable:{max:2e8,min:15e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"The Hub",requiredHackingSkill:{max:325,min:275},serverGrowth:{max:55,min:45}},{hackDifficulty:{max:65,min:55},hostname:r.a.VolhavenCompuTek.toLowerCase(),literature:[i.a.ManAndMachine],moneyAvailable:{max:25e7,min:22e7},networkLayer:4,numOpenPortsRequired:3,organizationName:r.a.VolhavenCompuTek,requiredHackingSkill:{max:400,min:300},serverGrowth:{max:65,min:45},specialName:r.a.VolhavenCompuTek},{hackDifficulty:{max:80,min:60},hostname:"netlink",literature:[i.a.SimulatedReality],maxRamExponent:{max:7,min:4},moneyAvailable:275e6,networkLayer:4,numOpenPortsRequired:3,organizationName:r.a.AevumNetLinkTechnologies,requiredHackingSkill:{max:425,min:375},serverGrowth:{max:75,min:45},specialName:r.a.AevumNetLinkTechnologies},{hackDifficulty:{max:65,min:35},hostname:"johnson-ortho",moneyAvailable:{max:85e6,min:7e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Johnson Orthopedics",requiredHackingSkill:{max:300,min:250},serverGrowth:{max:65,min:35}},{hackDifficulty:1,hostname:"n00dles",literature:[],maxRamExponent:2,moneyAvailable:7e4,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.NewTokyoNoodleBar,requiredHackingSkill:1,serverGrowth:3e3,specialName:r.a.NewTokyoNoodleBar},{hackDifficulty:10,hostname:r.a.Sector12FoodNStuff.toLowerCase(),literature:[i.a.Sector12Crime],maxRamExponent:4,moneyAvailable:2e6,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.Sector12FoodNStuff,requiredHackingSkill:1,serverGrowth:5,specialName:r.a.Sector12FoodNStuff},{hackDifficulty:10,hostname:"sigma-cosmetics",maxRamExponent:4,moneyAvailable:23e5,networkLayer:1,numOpenPortsRequired:0,organizationName:"Sigma Cosmetics",requiredHackingSkill:5,serverGrowth:10},{hackDifficulty:15,hostname:"joesguns",maxRamExponent:4,moneyAvailable:25e5,networkLayer:1,numOpenPortsRequired:0,organizationName:r.a.Sector12JoesGuns,requiredHackingSkill:10,serverGrowth:20,specialName:r.a.Sector12JoesGuns},{hackDifficulty:25,hostname:"zer0",maxRamExponent:5,moneyAvailable:75e5,networkLayer:2,numOpenPortsRequired:1,organizationName:"ZER0 Nightclub",requiredHackingSkill:75,serverGrowth:40},{hackDifficulty:20,hostname:"nectar-net",maxRamExponent:4,moneyAvailable:275e4,networkLayer:2,numOpenPortsRequired:0,organizationName:"Nectar Nightclub Network",requiredHackingSkill:20,serverGrowth:25},{hackDifficulty:25,hostname:"neo-net",literature:[i.a.TheHiddenWorld],maxRamExponent:5,moneyAvailable:5e6,networkLayer:3,numOpenPortsRequired:1,organizationName:"Neo Nightclub Network",requiredHackingSkill:50,serverGrowth:25},{hackDifficulty:30,hostname:"silver-helix",literature:[i.a.NewTriads],maxRamExponent:6,moneyAvailable:45e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Silver Helix",requiredHackingSkill:150,serverGrowth:30},{hackDifficulty:15,hostname:"hong-fang-tea",literature:[i.a.BrighterThanTheSun],maxRamExponent:4,moneyAvailable:3e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HongFang Teahouse",requiredHackingSkill:30,serverGrowth:20},{hackDifficulty:15,hostname:"harakiri-sushi",maxRamExponent:4,moneyAvailable:4e6,networkLayer:1,numOpenPortsRequired:0,organizationName:"HaraKiri Sushi Bar Network",requiredHackingSkill:40,serverGrowth:40},{hackDifficulty:20,hostname:"phantasy",maxRamExponent:5,moneyAvailable:24e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Phantasy Club",requiredHackingSkill:100,serverGrowth:35},{hackDifficulty:15,hostname:"max-hardware",maxRamExponent:5,moneyAvailable:1e7,networkLayer:2,numOpenPortsRequired:1,organizationName:"Max Hardware Store",requiredHackingSkill:80,serverGrowth:30},{hackDifficulty:{max:35,min:25},hostname:"omega-net",literature:[i.a.TheNewGod],maxRamExponent:5,moneyAvailable:{max:7e7,min:6e7},networkLayer:3,numOpenPortsRequired:2,organizationName:r.a.IshimaOmegaSoftware,requiredHackingSkill:{max:220,min:180},serverGrowth:{max:40,min:30},specialName:r.a.IshimaOmegaSoftware},{hackDifficulty:{max:45,min:35},hostname:"crush-fitness",moneyAvailable:{max:6e7,min:4e7},networkLayer:4,numOpenPortsRequired:2,organizationName:"Crush Fitness",requiredHackingSkill:{max:275,min:225},serverGrowth:{max:33,min:27},specialName:r.a.AevumCrushFitnessGym},{hackDifficulty:30,hostname:"iron-gym",maxRamExponent:5,moneyAvailable:2e7,networkLayer:1,numOpenPortsRequired:1,organizationName:r.a.Sector12IronGym+" Network",requiredHackingSkill:100,serverGrowth:20,specialName:r.a.Sector12IronGym},{hackDifficulty:{max:55,min:45},hostname:"millenium-fitness",maxRamExponent:{max:8,min:4},moneyAvailable:25e7,networkLayer:6,numOpenPortsRequired:3,organizationName:"Millenium Fitness Network",requiredHackingSkill:{max:525,min:475},serverGrowth:{max:45,min:25},specialName:r.a.VolhavenMilleniumFitnessGym},{hackDifficulty:{max:65,min:55},hostname:"powerhouse-fitness",maxRamExponent:{max:6,min:4},moneyAvailable:9e8,networkLayer:14,numOpenPortsRequired:5,organizationName:"Powerhouse Fitness",requiredHackingSkill:{max:1100,min:950},serverGrowth:{max:60,min:50},specialName:r.a.Sector12PowerhouseGym},{hackDifficulty:{max:60,min:40},hostname:"snap-fitness",moneyAvailable:45e7,networkLayer:7,numOpenPortsRequired:4,organizationName:"Snap Fitness",requiredHackingSkill:{max:800,min:675},serverGrowth:{max:60,min:40},specialName:r.a.AevumSnapFitnessGym},{hackDifficulty:0,hostname:"run4theh111z",literature:[i.a.SimulatedReality,i.a.TheNewGod],maxRamExponent:{max:9,min:5},moneyAvailable:0,networkLayer:11,numOpenPortsRequired:4,organizationName:"The Runners",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:o.a.BitRunnersServer},{hackDifficulty:0,hostname:"I.I.I.I",literature:[i.a.DemocracyIsDead],maxRamExponent:{max:8,min:4},moneyAvailable:0,networkLayer:5,numOpenPortsRequired:3,organizationName:"I.I.I.I",requiredHackingSkill:{max:365,min:340},serverGrowth:0,specialName:o.a.TheBlackHandServer},{hackDifficulty:0,hostname:"avmnite-02h",literature:[i.a.DemocracyIsDead],maxRamExponent:{max:7,min:4},moneyAvailable:0,networkLayer:4,numOpenPortsRequired:2,organizationName:a.a.NiteSec,requiredHackingSkill:{max:220,min:202},serverGrowth:0,specialName:o.a.NiteSecServer},{hackDifficulty:0,hostname:".",maxRamExponent:4,moneyAvailable:0,networkLayer:13,numOpenPortsRequired:4,organizationName:".",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:o.a.TheDarkArmyServer},{hackDifficulty:0,hostname:"CSEC",literature:[i.a.DemocracyIsDead],maxRamExponent:3,moneyAvailable:0,networkLayer:2,numOpenPortsRequired:1,organizationName:a.a.CyberSec,requiredHackingSkill:{max:60,min:51},serverGrowth:0,specialName:o.a.CyberSecServer},{hackDifficulty:0,hostname:"The-Cave",literature:[i.a.AlphaOmega],moneyAvailable:0,networkLayer:15,numOpenPortsRequired:5,organizationName:"Helios",requiredHackingSkill:925,serverGrowth:0,specialName:o.a.DaedalusServer},{hackDifficulty:0,hostname:"w0r1d_d43m0n",moneyAvailable:0,numOpenPortsRequired:5,organizationName:"w0r1d_d43m0n",requiredHackingSkill:3e3,serverGrowth:0,specialName:o.a.WorldDaemon}]},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}));class r{constructor(t=""){a(this,"level",1),a(this,"name",""),this.name=t}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(9),r=n(31);class i{constructor(t){this.name=t.name,this.nextPosition=t.nextPosition,this.baseSalary=t.baseSalary,this.repMultiplier=t.repMultiplier,this.requiredHacking=null!=t.reqdHacking?t.reqdHacking:0,this.requiredStrength=null!=t.reqdStrength?t.reqdStrength:0,this.requiredDefense=null!=t.reqdDefense?t.reqdDefense:0,this.requiredDexterity=null!=t.reqdDexterity?t.reqdDexterity:0,this.requiredAgility=null!=t.reqdAgility?t.reqdAgility:0,this.requiredCharisma=null!=t.reqdCharisma?t.reqdCharisma:0,this.requiredReputation=null!=t.reqdReputation?t.reqdReputation:0,this.hackingEffectiveness=null!=t.hackingEffectiveness?t.hackingEffectiveness:0,this.strengthEffectiveness=null!=t.strengthEffectiveness?t.strengthEffectiveness:0,this.defenseEffectiveness=null!=t.defenseEffectiveness?t.defenseEffectiveness:0,this.dexterityEffectiveness=null!=t.dexterityEffectiveness?t.dexterityEffectiveness:0,this.agilityEffectiveness=null!=t.agilityEffectiveness?t.agilityEffectiveness:0,this.charismaEffectiveness=null!=t.charismaEffectiveness?t.charismaEffectiveness:0,100!==Math.round(this.hackingEffectiveness+this.strengthEffectiveness+this.defenseEffectiveness+this.dexterityEffectiveness+this.agilityEffectiveness+this.charismaEffectiveness)&&console.error(`CompanyPosition ${this.name} parameters do not sum to 100`),this.hackingExpGain=null!=t.hackingExpGain?t.hackingExpGain:0,this.strengthExpGain=null!=t.strengthExpGain?t.strengthExpGain:0,this.defenseExpGain=null!=t.defenseExpGain?t.defenseExpGain:0,this.dexterityExpGain=null!=t.dexterityExpGain?t.dexterityExpGain:0,this.agilityExpGain=null!=t.agilityExpGain?t.agilityExpGain:0,this.charismaExpGain=null!=t.charismaExpGain?t.charismaExpGain:0}calculateJobPerformance(t,e,n,r,i,o){const s=this.hackingEffectiveness*t/a.a.MaxSkillLevel,l=this.strengthEffectiveness*e/a.a.MaxSkillLevel,c=this.defenseEffectiveness*n/a.a.MaxSkillLevel,f=this.dexterityEffectiveness*r/a.a.MaxSkillLevel,u=this.agilityEffectiveness*i/a.a.MaxSkillLevel,m=this.charismaEffectiveness*o/a.a.MaxSkillLevel;let h=this.repMultiplier*(s+l+c+f+u+m)/100;return isNaN(h)&&(console.error("Company reputation gain calculated to be NaN"),h=0),h}isSoftwareJob(){return r.j.includes(this.name)}isITJob(){return r.d.includes(this.name)}isSecurityEngineerJob(){return r.i.includes(this.name)}isNetworkEngineerJob(){return r.f.includes(this.name)}isBusinessJob(){return r.b.includes(this.name)}isSecurityJob(){return r.h.includes(this.name)}isAgentJob(){return r.a.includes(this.name)}isSoftwareConsultantJob(){return r.k.includes(this.name)}isBusinessConsultantJob(){return r.c.includes(this.name)}isPartTimeJob(){return r.g.includes(this.name)}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(258);const o={};o.SourceFile1=new i.a(1,r.a.createElement(r.a.Fragment,null,"This Source-File lets the player start with 32GB of RAM on his/her home computer. It also increases all of the player's multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 16%",r.a.createElement("br",null),"Level 2: 24%",r.a.createElement("br",null),"Level 3: 28%")),o.SourceFile2=new i.a(2,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value. It also increases the player's crime success rate, crime money, and charisma multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 24%",r.a.createElement("br",null),"Level 2: 36%",r.a.createElement("br",null),"Level 3: 42%")),o.SourceFile3=new i.a(3,r.a.createElement(r.a.Fragment,null,"This Source-File lets you create corporations on other BitNodes (although some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:",r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile4=new i.a(4,r.a.createElement(r.a.Fragment,null,"This Source-File lets you access and use the Singularity Functions in every BitNode. Every level of this Source-File reduces the RAM cost of Singularity functions.")),o.SourceFile5=new i.a(5,r.a.createElement(r.a.Fragment,null,"This Source-File grants a special new stat called Intelligence. Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However, gaining Intelligence experience is much slower than other stats. Higher Intelligence levels will boost your production for many actions in the game. In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with Formulas.exe, and will raise all of your hacking-related multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile6=new i.a(6,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to access the NSA's Bladeburner Division in other BitNodes. In addition, this Source-File will raise both the level and experience gain rate of all your combat stats by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile7=new i.a(7,r.a.createElement(r.a.Fragment,null,"This Source-File allows you to access the Bladeburner Netscript API in other BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile8=new i.a(8,r.a.createElement(r.a.Fragment,null,"This Source-File grants the following benefits:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: Permanent access to WSE and TIX API",r.a.createElement("br",null),"Level 2: Ability to short stocks in other BitNodes",r.a.createElement("br",null),"Level 3: Ability to use limit/stop orders in other BitNodes",r.a.createElement("br",null),r.a.createElement("br",null),"This Source-File also increases your hacking growth multipliers by:",r.a.createElement("br",null),"Level 1: 12%",r.a.createElement("br",null),"Level 2: 18%",r.a.createElement("br",null),"Level 3: 21%")),o.SourceFile9=new i.a(9,r.a.createElement(r.a.Fragment,null,"This Source-File grants the following benefits:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: Permanently unlocks the Hacknet Server in other BitNodes",r.a.createElement("br",null),"Level 2: You start with 128GB of RAM on your home computer when entering a new BitNode",r.a.createElement("br",null),"Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode",r.a.createElement("br",null),r.a.createElement("br",null),"(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT when installing Augmentations)",r.a.createElement("br",null),r.a.createElement("br",null),"This Source-File also increases your hacknet multipliers by:",r.a.createElement("br",null),"Level 1: 8%",r.a.createElement("br",null),"Level 2: 12%",r.a.createElement("br",null),"Level 3: 14%")),o.SourceFile10=new i.a(10,r.a.createElement(r.a.Fragment,null,"This Source-File unlocks Sleeve technology, and the Grafting API in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),o.SourceFile11=new i.a(11,r.a.createElement(r.a.Fragment,null,"This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). This Source-File also increases the player's company salary and reputation gain multipliers by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 32%",r.a.createElement("br",null),"Level 2: 48%",r.a.createElement("br",null),"Level 3: 56%",r.a.createElement("br",null),r.a.createElement("br",null),"It also reduces the price increase for every aug bought by:",r.a.createElement("br",null),r.a.createElement("br",null),"Level 1: 4%",r.a.createElement("br",null),"Level 2: 6%",r.a.createElement("br",null),"Level 3: 7%")),o.SourceFile12=new i.a(12,r.a.createElement(r.a.Fragment,null,"This Source-File lets the player start with Neuroflux Governor equal to the level of this Source-File.")),o.SourceFile13=new i.a(13,r.a.createElement(r.a.Fragment,null,"Each level of this Source-File increases the size of Stanek's Gift."))},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(8),r=n(88),i=n(24),o=n(365);function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class l{constructor(t=null,e=[]){s(this,"args",[]),s(this,"dataMap",{}),s(this,"filename",""),s(this,"logs",[]),s(this,"logUpd",!1),s(this,"offlineExpGained",0),s(this,"offlineMoneyMade",0),s(this,"offlineRunningTime",.01),s(this,"onlineExpGained",0),s(this,"onlineMoneyMade",0),s(this,"onlineRunningTime",.01),s(this,"pid",-1),s(this,"ramUsage",0),s(this,"server",""),s(this,"threads",1),s(this,"dependencies",[]),null!=t&&(this.filename=t.filename,this.args=e,this.server=t.server,this.ramUsage=t.ramUsage,this.dependencies=t.dependencies)}log(t){this.logs.length>a.a.MaxLogCapacity&&this.logs.shift();let e=t;a.a.TimestampsFormat&&(e="["+Object(o.a)(a.a.TimestampsFormat)+"] "+e),this.logs.push(e),this.logUpd=!0}displayLog(){for(let t=0;tH4CK||3T 8URN3R5**>?>\\~~"),offerHackingWork:!0}),[i.a.TianDiHui]:new o({infoText:r.a.createElement(r.a.Fragment,null,"Obey Heaven and work righteously."),offerHackingWork:!0,offerSecurityWork:!0}),[i.a.CyberSec]:new o({infoText:r.a.createElement(r.a.Fragment,null,"The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse."),offerHackingWork:!0}),[i.a.Bladeburners]:new o({infoText:r.a.createElement(r.a.Fragment,null,"It's too bad they won't live. But then again, who does?",r.a.createElement("br",null),r.a.createElement("br",null),"Note that for this faction, reputation can only be gained through ",i.a.Bladeburners," actions."," ","Completing ",i.a.Bladeburners," contracts/operations will increase your reputation."),special:!0}),[i.a.ChurchOfTheMachineGod]:new o({infoText:r.a.createElement(r.a.Fragment,null," `` ",r.a.createElement("br",null)," -odmmNmds: ",r.a.createElement("br",null)," `hNmo:..-omNh. ",r.a.createElement("br",null)," yMd` `hNh ",r.a.createElement("br",null)," mMd oNm ",r.a.createElement("br",null)," oMNo .mM/ ",r.a.createElement("br",null)," `dMN+ -mM+ ",r.a.createElement("br",null)," -mMNo -mN+ ",r.a.createElement("br",null)," .+- :mMNo/mN/ ",r.a.createElement("br",null),":yNMd. :NMNNN/ ",r.a.createElement("br",null),"-mMMMh. /NMMh` ",r.a.createElement("br",null)," .dMMMd. /NMMMy` ",r.a.createElement("br",null)," `yMMMd. /NNyNMMh` ",r.a.createElement("br",null)," `sMMMd. +Nm: +NMMh. ",r.a.createElement("br",null)," oMMMm- oNm: /NMMd. ",r.a.createElement("br",null)," +NMMmsMm- :mMMd. ",r.a.createElement("br",null)," /NMMMm- -mMMd. ",r.a.createElement("br",null)," /MMMm- -mMMd. ",r.a.createElement("br",null)," `sMNMMm- .mMmo ",r.a.createElement("br",null)," `sMd:hMMm. ./. ",r.a.createElement("br",null)," `yMy` `yNMd` ",r.a.createElement("br",null)," `hMs` oMMy ",r.a.createElement("br",null)," `hMh sMN- ",r.a.createElement("br",null)," /MM- .NMo ",r.a.createElement("br",null)," +MM: :MM+ ",r.a.createElement("br",null)," sNNo-.`.-omNy` ",r.a.createElement("br",null)," -smNNNNmdo- ",r.a.createElement("br",null)," `..` ",r.a.createElement("br",null),r.a.createElement("br",null),"Many cultures predict an end to humanity in the near future, a final Armageddon that will end the world; but we disagree.",r.a.createElement("br",null),r.a.createElement("br",null),"Note that for this faction, reputation can only be gained by charging Stanek's gift."),offerHackingWork:!1,offerFieldWork:!1,offerSecurityWork:!1,special:!0,keepOnInstall:!0})}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={0:[0,2e9,1.06,.03,"Smart Factories","Advanced AI automatically optimizes the operation and productivity of factories. Each level of this upgrade increases your global production by 3% (additive)."],1:[1,2e9,1.06,.1,"Smart Storage","Advanced AI automatically optimizes your warehouse storage methods. Each level of this upgrade increases your global warehouse storage size by 10% (additive)."],2:[2,4e9,1.1,.001,"DreamSense","Use DreamSense LCC Technologies to advertise your corporation to consumers through their dreams. Each level of this upgrade provides a passive increase in awareness of all of your companies (divisions) by 0.004 / market cycle,and in popularity by 0.001 / market cycle. A market cycle is approximately 15 seconds."],3:[3,4e9,1.5,.005,"Wilson Analytics","Purchase data and analysis from Wilson, a marketing research firm. Each level of this upgrades increases the effectiveness of your advertising by 0.5% (additive)."],4:[4,1e9,1.06,.1,"Nuoptimal Nootropic Injector Implants","Purchase the Nuoptimal Nootropic Injector augmentation for your employees. Each level of this upgrade globally increases the creativity of your employees by 10% (additive)."],5:[5,1e9,1.06,.1,"Speech Processor Implants","Purchase the Speech Processor augmentation for your employees. Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."],6:[6,1e9,1.06,.1,"Neural Accelerators","Purchase the Neural Accelerator augmentation for your employees. Each level of this upgrade globally increases the intelligence of your employees by 10% (additive)."],7:[7,1e9,1.06,.1,"FocusWires","Purchase the FocusWire augmentation for your employees. Each level of this upgrade globally increases the efficiency of your employees by 10% (additive)."],8:[8,1e9,1.07,.01,"ABC SalesBots","Always Be Closing. Purchase these robotic salesmen to increase the amount of materials and products you sell. Each level of this upgrade globally increases your sales by 1% (additive)."],9:[9,5e9,1.07,.05,"Project Insight","Purchase 'Project Insight', a R&D service provided by the secretive Fulcrum Technologies. Each level of this upgrade globally increases the amount of Scientific Research you produce by 5% (additive)."]}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(239),r=n(24);function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class o{constructor(){i(this,"capacity",0),i(this,"hashes",0),i(this,"upgrades",{});for(const t of Object.keys(a.a))this.upgrades[t]=0}getMult(t){const e=a.a[t],n=this.upgrades[t];return null==e||null==n?(console.error("Could not find Hash Study upgrade"),1):1+e.value*n/100}getStudyMult(){return this.getMult("Improve Studying")}getTrainingMult(){return this.getMult("Improve Gym Training")}getUpgrade(t){const e=a.a[t];return e||(console.error("Invalid Upgrade Name given to HashManager.getUpgrade(): "+t),null)}getUpgradeCost(t){const e=this.getUpgrade(t),n=this.upgrades[t];return null==e||null==n?(console.error("Invalid Upgrade Name given to HashManager.getUpgradeCost(): "+t),1/0):e.getCost(n)}prestige(){for(const t of Object.keys(a.a))this.upgrades[t]=0;this.hashes=0,this.updateCapacity(0)}refundUpgrade(t){const e=a.a[t];--this.upgrades[t];const n=this.upgrades[t];if(null==e||null==n||n<0)return void console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+t);const r=e.getCost(n);this.hashes+=r}storeHashes(t){this.hashes+=t;let e=this.hashes;return this.hashes=Math.min(this.hashes,this.capacity),e-=this.hashes,e}updateCapacity(t){t<0&&(this.capacity=0),this.capacity=Math.max(t,0)}upgrade(t){if(null==a.a[t])return console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+t),!1;const e=this.getUpgradeCost(t);return!(this.hashes{try{return r.a[t].getInfo().offerHackingWork}catch(t){return console.error("Error when trying to filter Hacking Factions for Coding Contract Generation: "+t),!1}});return e===a.c.FactionReputation&&0===n.length&&(e=a.c.CompanyReputation),e===a.c.FactionReputationAll&&0===n.length&&(e=a.c.CompanyReputation),e===a.c.CompanyReputation&&0===Object.keys(i.a.jobs).length&&(e=a.c.Money),e}(t.type);const e=i.a.factions.filter(t=>r.a[t].getInfo().offerHackingWork);switch(t.type){case a.c.FactionReputation:{const n=e.length,a=e[Object(c.a)(0,n-1)];t.name=a;break}case a.c.CompanyReputation:{const e=Object.keys(i.a.jobs);e.length>0?t.name=e[Object(c.a)(0,e.length-1)]:t.type=a.c.Money;break}}return t}function p(){const t=Object(o.c)();let e=Object(c.a)(0,t.length-1),n=t[e];for(let a=0;a<200&&(!(n instanceof l.a)||n.purchasedByPlayer||n.hostname===s.a.WorldDaemon);++a)e=Object(c.a)(0,t.length-1),n=t[e];return n}function g(t,e){let n="contract-"+Object(c.a)(0,1e6);for(let e=0;e<1e3&&!(t.contracts.filter(t=>t.fn===n).length<=0);++e)n="contract-"+Object(c.a)(0,1e6);return e.name&&(n+="-"+e.name.replace(/\s/g,"")),n}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a=new(n(126).a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var a=n(85),r=n(15);function i(t,e){let n=0,i=!1;for(const r of Object.keys(a.a)){const o=a.a[r];if(o.type==e){n=o.successRate(t),i=!0;break}}return i?Math.random()<=n:(Object(r.a)(`ERR: Unrecognized crime type: ${e} This is probably a bug please contact the developer`),!1)}function o(t){return(t=t.toLowerCase()).includes("shoplift")?a.a.Shoplift:t.includes("rob")&&t.includes("store")?a.a.RobStore:t.includes("mug")?a.a.Mug:t.includes("larceny")?a.a.Larceny:t.includes("drugs")?a.a.DealDrugs:t.includes("bond")&&t.includes("forge")?a.a.BondForgery:(t.includes("traffic")||t.includes("illegal"))&&t.includes("arms")?a.a.TraffickArms:t.includes("homicide")?a.a.Homicide:t.includes("grand")&&t.includes("auto")?a.a.GrandTheftAuto:t.includes("kidnap")?a.a.Kidnap:t.includes("assassin")?a.a.Assassination:t.includes("heist")?a.a.Heist:null}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(44),r=n(38),i=n(33),o=n(23),s=n(24),l=n(1034);function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class f{constructor(t={}){c(this,"minEne",0),c(this,"maxEne",100),c(this,"minHap",0),c(this,"maxHap",100),c(this,"maxMor",100),c(this,"employees",[]),c(this,"employeeProd",{[a.a.Operations]:0,[a.a.Engineer]:0,[a.a.Business]:0,[a.a.Management]:0,[a.a.RandD]:0,total:0}),c(this,"employeeJobs",{[a.a.Operations]:0,[a.a.Engineer]:0,[a.a.Business]:0,[a.a.Management]:0,[a.a.RandD]:0,[a.a.Training]:0,[a.a.Unassigned]:0,total:0}),this.loc=t.loc?t.loc:"",this.size=t.size?t.size:1}atCapacity(){return this.employees.length>=this.size}process(t=1,e,n){if(n.hasResearch("HRBuddy-Recruitment")&&!this.atCapacity()){const t=this.hireRandomEmployee();n.hasResearch("HRBuddy-Training")&&void 0!==t&&(t.pos=a.a.Training)}this.calculateTotalEmployees(),this.maxEne=100,this.maxHap=100,this.maxMor=100,n.hasResearch("Go-Juice")&&(this.maxEne+=10),n.hasResearch("JoyWire")&&(this.maxHap+=10),n.hasResearch("Sti.mu")&&(this.maxMor+=10);let r=1;e.funds<0&&n.lastCycleRevenue<0?r=Math.pow(.99,t):e.funds>0&&n.lastCycleRevenue>0&&(r=Math.pow(1.01,t));const i=n.hasResearch("AutoBrew"),o=n.hasResearch("AutoPartyManager");let s=0;for(let e=0;en.pos===t?e+1:e,0);for(const r of this.employees){if(n==e)return!0;r.pos===a.a.Unassigned&&n<=e?(r.pos=t,n++):r.pos===t&&n>=e&&(r.pos=a.a.Unassigned,n--)}return n===e}toJSON(){return Object(s.b)("OfficeSpace",this)}static fromJSON(t){return Object(s.a)(f,t.data)}}s.c.constructors.OfficeSpace=f},,function(t,e,n){"use strict";function a(t,e){for(const n of Object.keys(e)){const a=e[n];void 0!==a&&("function"==typeof a?a(t,n):void 0!==a.func?a.func(t,e,n):(typeof t[n]!=typeof a.default&&(t[n]=a.default),"number"==typeof t[n]&&void 0!==a.min&&t[n]a.max&&(t[n]=a.max)))}}function r(t,e,n){return(a,r)=>{"number"==typeof a[r]?(a[r]n&&(a[r]=n)):a[r]=t}}n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(24);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class i{constructor(){r(this,"bladeburner",0),r(this,"casino",0),r(this,"class",0),r(this,"codingcontract",0),r(this,"corporation",0),r(this,"crime",0),r(this,"gang",0),r(this,"hacking",0),r(this,"hacknet",0),r(this,"hacknet_expenses",0),r(this,"hospitalization",0),r(this,"infiltration",0),r(this,"sleeves",0),r(this,"stock",0),r(this,"total",0),r(this,"work",0),r(this,"servers",0),r(this,"other",0),r(this,"augmentations",0)}record(t,e){const n=e.toLowerCase();"number"==typeof this[n]?(this[n]+=t,this.total+=t):console.warn("MoneySourceTracker.record() called with invalid source: "+e)}reset(){for(const t in this)"number"==typeof this[t]&&(this[t]=0)}toJSON(){return Object(a.b)("MoneySourceTracker",this)}static fromJSON(t){return Object(a.a)(i,t.data)}}a.c.constructors.MoneySourceTracker=i},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(0),r=n(1457),i=n(1),o=n(20),s=n(30),l=n(296),c=n(5);function f({min:t,max:e,current:n,remaining:s,progress:l,color:f}){const u=a.createElement(i.a,{sx:{textAlign:"right"}},a.createElement("strong",null,"Progress:")," ",c.a.formatExp(n)," / ",c.a.formatExp(e-t),a.createElement("br",null),a.createElement("strong",null,"Remaining:")," ",c.a.formatExp(s)," (",l.toFixed(2),"%)");return a.createElement(o.a,{title:u},a.createElement(r.a,{variant:"determinate",value:l,sx:{backgroundColor:"#111111","& .MuiLinearProgress-bar1Determinate":{backgroundColor:f}}}))}function u({progress:t,color:e}){const n=Object(l.b)();return a.createElement(s.a,{component:"th",scope:"row",colSpan:2,classes:{root:n.cellNone},style:{paddingBottom:"2px",position:"relative",top:"-3px"}},a.createElement(f,{min:t.baseExperience,max:t.nextExperience,current:t.currentExperience,remaining:t.remainingExperience,progress:t.progress,color:e}))}},,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));const a={lineHeight:1.5,fontFamily:"Lucida Console, Lucida Sans Unicode, Fira Mono, Consolas, Courier New, Courier, monospace, Times New Roman"}},,,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(9);function r(t){return t.money<0?0:Math.min(.1*t.money,(t.max_hp-t.hp)*a.a.HospitalCostPerHp)}function i(t,e){const n=t.hp;t.hp-=e;const a=r(t);return t.hp=n,a}},function(t,e,n){"use strict";n.d(e,"a",(function(){return h})),n.d(e,"b",(function(){return d}));var a=n(0),r=n.n(a),i=n(126),o=n(41),s=n(1),l=n(10),c=n(130),f=n(80),u=n(78),m=n(27);const h=new i.a;function d(){var t,e,n;const[i,l]=Object(a.useState)(null);if(Object(a.useEffect)(()=>h.subscribe(t=>{l(t)}),[]),null===i)return r.a.createElement(r.a.Fragment,null);const c={text:g,select:y};let f=p;null!=i&&null!==(t=i.options)&&void 0!==t&&t.type&&["text","select"].includes(null==i||null===(e=i.options)||void 0===e?void 0:e.type)&&(f=c[null==i||null===(n=i.options)||void 0===n?void 0:n.type]);return r.a.createElement(o.a,{open:!0,onClose:function(){var t,e;null!==i&&(["text","select"].includes(null!==(t=null==i||null===(e=i.options)||void 0===e?void 0:e.type)&&void 0!==t?t:"")?i.resolve(""):i.resolve(!1),l(null))}},r.a.createElement("pre",null,r.a.createElement(s.a,null,i.txt)),r.a.createElement(f,{prompt:i,resolve:t=>{i.resolve(t),l(null)}}))}function p({resolve:t}){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",paddingTop:"10px"}},r.a.createElement(l.a,{style:{marginRight:"auto"},onClick:()=>t(!0)},"Yes"),r.a.createElement(l.a,{onClick:()=>t(!1)},"No")))}function g({resolve:t}){const[e,n]=Object(a.useState)(""),i=()=>t(e);return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.a.createElement(f.a,{autoFocus:!0,value:e,onInput:t=>{n(t.target.value)},onKeyDown:t=>{t.stopPropagation(),t.key===m.a.ENTER&&(t.preventDefault(),i())},style:{flex:"1 0 auto"},InputProps:{endAdornment:r.a.createElement(l.a,{onClick:i},"Confirm")}})))}function y({prompt:t,resolve:e}){var n;const[i,o]=Object(a.useState)("");return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:"flex",alignItems:"center",paddingTop:"10px"}},r.a.createElement(c.a,{onChange:t=>{o(t.target.value)},value:i,style:{flex:"1 0 auto"}},(t=>{const e=[];for(const n of t)e.push(r.a.createElement(u.a,{key:n,value:n},n));return e})((null==t||null===(n=t.options)||void 0===n?void 0:n.choices)||[])),r.a.createElement(l.a,{onClick:()=>e(i),disabled:""===i},"Confirm")))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var a=n(44),r=n(175),i=n(1035),o=n(532),s=n(24),l=n(33);function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class f{constructor(t={}){c(this,"name",""),c(this,"dmd",0),c(this,"cmp",0),c(this,"mku",0),c(this,"pCost",0),c(this,"sCost",0),c(this,"fin",!1),c(this,"prog",0),c(this,"createCity",""),c(this,"designCost",0),c(this,"advCost",0),c(this,"rat",0),c(this,"qlt",0),c(this,"per",0),c(this,"dur",0),c(this,"rel",0),c(this,"aes",0),c(this,"fea",0),c(this,"data",Object(o.a)([0,0,0])),c(this,"loc",""),c(this,"siz",0),c(this,"reqMats",{}),c(this,"prdman",Object(o.a)([!1,0])),c(this,"sllman",Object(o.a)([!1,0])),c(this,"marketTa1",!1),c(this,"marketTa2",!1),c(this,"marketTa2Price",Object(o.a)(0)),c(this,"maxsll",0),this.name=t.name?t.name:"",this.dmd=t.demand?t.demand:0,this.cmp=t.competition?t.competition:0,this.mku=t.markup?t.markup:0,this.createCity=t.createCity?t.createCity:"",this.designCost=t.designCost?t.designCost:0,this.advCost=t.advCost?t.advCost:0,this.qlt=t.quality?t.quality:0,this.per=t.performance?t.performance:0,this.dur=t.durability?t.durability:0,this.rel=t.reliability?t.reliability:0,this.aes=t.aesthetics?t.aesthetics:0,this.fea=t.features?t.features:0,this.loc=t.loc?t.loc:"",this.siz=t.size?t.size:0,this.reqMats=t.req?t.req:{}}createProduct(t=1,e=1){this.fin||(this.prog+=.01*t*e)}finishProduct(t,e){this.fin=!0;const n=this.prog/100,i=t[a.a.Engineer]/t.total,o=t[a.a.Management]/t.total,s=t[a.a.RandD]/t.total,c=t[a.a.Operations]/t.total,f=t[a.a.Business]/t.total,u=n*(1.2*i+.9*o+1.3*s+1.5*c+f)*(1+Math.pow(this.designCost,.1)/100)*(1+Math.pow(e.sciResearch.qty,e.sciFac)/800);this.qlt=u*(.1*t[a.a.Engineer]+.05*t[a.a.Management]+.05*t[a.a.RandD]+.02*t[a.a.Operations]+.02*t[a.a.Business]),this.per=u*(.15*t[a.a.Engineer]+.02*t[a.a.Management]+.02*t[a.a.RandD]+.02*t[a.a.Operations]+.02*t[a.a.Business]),this.dur=u*(.05*t[a.a.Engineer]+.02*t[a.a.Management]+.08*t[a.a.RandD]+.05*t[a.a.Operations]+.05*t[a.a.Business]),this.rel=u*(.02*t[a.a.Engineer]+.08*t[a.a.Management]+.02*t[a.a.RandD]+.05*t[a.a.Operations]+.08*t[a.a.Business]),this.aes=u*(0*t[a.a.Engineer]+.08*t[a.a.Management]+.05*t[a.a.RandD]+.02*t[a.a.Operations]+.1*t[a.a.Business]),this.fea=u*(.08*t[a.a.Engineer]+.05*t[a.a.Management]+.02*t[a.a.RandD]+.05*t[a.a.Operations]+.05*t[a.a.Business]),this.calculateRating(e);const m=1+Math.pow(this.advCost,.1)/100,h=Math.max(f+o,1/t.total);this.mku=100/(m*Math.pow(this.qlt+.001,.65)*h),0!==this.mku&&isFinite(this.mku)||(this.mku=1),this.dmd=0===e.awareness?20:Math.min(100,m*(e.popularity/e.awareness*100)),this.cmp=Object(l.a)(0,70);for(const t of Object.keys(e.reqMats))if(e.reqMats.hasOwnProperty(t)){const n=e.reqMats[t];if(void 0===n)continue;this.reqMats[t]=n}this.siz=0;for(const t of Object.keys(e.reqMats)){const n=e.reqMats[t];void 0!==n&&(this.siz+=r.a[t]*n)}}calculateRating(t){const e=i.a[t.type];null!=e?(this.rat=0,this.rat+=e.Quality?this.qlt*e.Quality:0,this.rat+=e.Performance?this.per*e.Performance:0,this.rat+=e.Durability?this.dur*e.Durability:0,this.rat+=e.Reliability?this.rel*e.Reliability:0,this.rat+=e.Aesthetics?this.aes*e.Aesthetics:0,this.rat+=e.Features?this.fea*e.Features:0):console.error("Could not find product rating weights for: "+t)}toJSON(){return Object(s.b)("Product",this)}static fromJSON(t){return Object(s.a)(f,t.data)}}s.c.constructors.Product=f},function(t,e,n){"use strict";function a(t,e){return!!Object.keys(e.reqMats).includes(t)||(!!e.prodMats.includes(t)||!!["Hardware","Robots","AICores","RealEstate","AI Cores","Real Estate"].includes(t))}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"b",(function(){return y})),n.d(e,"a",(function(){return b}));var a=n(0),r=n.n(a),i=n(173),o=n(428),s=n(1),l=n(21),c=n(55),f=n(10),u=n(1750),m=n(1751),h=n(1752),d=n(29),p=n(8),g=n(65);const y=[];function b(){const t=d.b.Player(),e=d.b.Router(),n=Object(a.useState)(!1)[1];function b(){n(t=>!t)}const E=[...Object.values(g.a)].filter(e=>{const n=e.create;return null!==n&&("b1t_flum3.exe"!==e.name||n.req(t))}).sort((e,n)=>{var a,r,i,o;return t.hasProgram(e.name)?1:t.hasProgram(n.name)?-1:(null!==(a=null===(r=e.create)||void 0===r?void 0:r.level)&&void 0!==a?a:0)-(null!==(i=null===(o=n.create)||void 0===o?void 0:o.level)&&void 0!==i?i:0)});Object(a.useEffect)(()=>{E.forEach(t=>{y.includes(t.name)||y.push(t.name)})},[]),Object(a.useEffect)(()=>{const t=setInterval(b,200);return()=>clearInterval(t)},[]);const v=e=>Math.ceil(Math.max(e-(t.hacking+t.intelligence/2),0));return r.a.createElement(o.a,{disableGutters:!0,maxWidth:"lg",sx:{mx:0,mb:10}},r.a.createElement(s.a,{variant:"h4"},"Create program"),r.a.createElement(s.a,null,"This page displays any programs that you are able to create. Writing the code for a program takes time, which can vary based on how complex the program is. If you are working on creating a program you can cancel at any time. Your progress will be saved and you can continue later."),r.a.createElement(l.a,{sx:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",my:1}},E.map(n=>{const a=n.create;if(null===a)return r.a.createElement(r.a.Fragment,null);const o=(e=>{const n=Object(i.find)(t.getHomeComputer().programs,t=>t.startsWith(e)&&t.endsWith("%-INC"));if(!n)return-1;const a=n.split("-");if(3!=a.length)return-1;const r=Number(a[1].slice(0,-1));return isNaN(r)||r<0||r>=100?-1:r})(n.name);return r.a.createElement(l.a,{component:c.a,sx:{p:1,opacity:t.hasProgram(n.name)?.75:1},key:n.name},r.a.createElement(s.a,{variant:"h6",sx:{display:"flex",alignItems:"center",flexWrap:"wrap"}},t.hasProgram(n.name)&&r.a.createElement(u.a,{sx:{mr:1}})||a.req(t)&&r.a.createElement(m.a,{sx:{mr:1}})||r.a.createElement(h.a,{sx:{mr:1}}),n.name),!t.hasProgram(n.name)&&a.req(t)&&r.a.createElement(f.a,{sx:{my:1,width:"100%"},onClick:r=>{r.isTrusted&&(t.startCreateProgramWork(n.name,a.time,a.level),t.startFocusing(),e.toWork())}},"Create program"),t.hasProgram(n.name)||0===v(a.level)||r.a.createElement(s.a,{color:p.a.theme.hack},r.a.createElement("b",null,"Unlocks in:")," ",v(a.level)," hacking levels"),-1!==o&&r.a.createElement(s.a,{color:p.a.theme.infolight},r.a.createElement("b",null,"Current completion:")," ",o,"%"),r.a.createElement(s.a,null,a.tooltip))})))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return g})),n.d(e,"a",(function(){return y}));var a=n(0),r=n.n(a),i=n(428),o=n(1),s=n(55),l=n(140),c=n(47),f=n(21),u=n(10),m=n(61),h=n(106),d=n(28),p=n(4);const g=[];function y(t){const e=Object(a.useState)(!1)[1];function n(){e(t=>!t)}Object(a.useEffect)(()=>{const t=setInterval(n,200);return()=>clearInterval(t)},[]),Object(a.useEffect)(()=>{t.player.factionInvitations.forEach(t=>{g.includes(t)||g.push(t)})},[]);const y=Object.values(p.a).map(t=>t),b=t.player.factions.slice(0);return b.sort((t,e)=>y.indexOf(t)-y.indexOf(e)),r.a.createElement(i.a,{disableGutters:!0,maxWidth:"md",sx:{mx:0,mb:10}},r.a.createElement(o.a,{variant:"h4"},"Factions"),r.a.createElement(o.a,{mb:4},"Throughout the game you may receive invitations from factions. There are many different factions, and each faction has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial to progressing in the game and unlocking endgame content."),r.a.createElement(o.a,{variant:"h5",color:"primary",mt:2,mb:1},"Factions you have joined:"),b.length>0&&r.a.createElement(s.a,{sx:{my:1,p:1,pb:0,display:"inline-block"}},r.a.createElement(m.a,{padding:"none",style:{width:"fit-content"}},r.a.createElement(l.a,null,b.map(e=>r.a.createElement(c.a,{key:e},r.a.createElement(m.b,null,r.a.createElement(o.a,{noWrap:!0,mb:1},e)),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{onClick:()=>function(e){t.router.toFaction(e)}(d.a[e])},"Details"))),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{sx:{width:"100%"},onClick:()=>function(e){t.router.toFaction(e,!0)}(d.a[e])},"Augmentations Left: ",((t,e)=>Object(h.a)(e,t).filter(t=>!e.hasAugmentation(t)).length)(d.a[e],t.player)))))))))||r.a.createElement(o.a,null,"You haven't joined any factions."),r.a.createElement(o.a,{variant:"h5",color:"primary",mt:4,mb:1},"Outstanding Faction Invitations"),r.a.createElement(o.a,{mb:1},"Factions you have been invited to. You can accept these faction invitations at any time:"),t.player.factionInvitations.length>0&&r.a.createElement(s.a,{sx:{my:1,mb:4,p:1,pb:0,display:"inline-block"}},r.a.createElement(m.a,{padding:"none"},r.a.createElement(l.a,null,t.player.factionInvitations.map(t=>r.a.createElement(c.a,{key:t},r.a.createElement(m.b,null,r.a.createElement(o.a,{noWrap:!0,mb:1},t)),r.a.createElement(m.b,{align:"right"},r.a.createElement(f.a,{ml:1,mb:1},r.a.createElement(u.a,{onClick:n=>function(t,n){t.isTrusted&&(Object(h.e)(d.a[n]),e(t=>!t))}(n,t)},"Join!"))))))))||r.a.createElement(o.a,null,"You have no outstanding faction invites."))}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return w})),n.d(e,"a",(function(){return S})),n.d(e,"c",(function(){return C}));var a=n(0),r=n.n(a),i=n(21),o=n(1),s=n(122),l=n(346),c=n(20),f=n(10),u=n(55),m=n(80),h=n(8),d=n(337),p=n(110),g=n(525),y=n(606),b=n(608),E=n(631),v=n.n(E),k=n(1371),_=n.n(k);let w=!1;function S(){w=!0}function C({router:t,softReset:e,errorData:n,resetError:E}){var k,S;return h.a.AutosaveInterval=0,Object(a.useEffect)(()=>{Object(d.b)().then(t=>{const e=`RECOVERY_BITBURNER_${Math.round(Date.now()/1e3)}.json`;Object(p.a)(e,t)})},[]),r.a.createElement(i.a,{sx:{padding:"8px 16px",minHeight:"100vh",maxWidth:"1200px",boxSizing:"border-box"}},r.a.createElement(o.a,{variant:"h3"},"RECOVERY MODE ACTIVATED"),r.a.createElement(o.a,null,"There was an error with your save file and the game went into recovery mode. In this mode saving is disabled and the game will automatically export your save file (to prevent corruption)."),r.a.createElement(o.a,null,"At this point it is recommended to alert a developer."),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:null!==(k=null==n?void 0:n.issueUrl)&&void 0!==k?k:g.b,target:"_blank"},"File an issue on github")),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:"https://www.reddit.com/r/Bitburner/",target:"_blank"},"Make a reddit post")),r.a.createElement(o.a,null,r.a.createElement(s.a,{href:"https://discord.gg/TFc3hKD",target:"_blank"},"Post in the #bug-report channel on Discord.")),r.a.createElement(o.a,null,"Please include your save file."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"You can disable recovery mode now. But chances are the game will not work correctly."),r.a.createElement(l.a,{sx:{my:2}},r.a.createElement(c.a,{title:"Disables the recovery mode & attempt to head back to the terminal page. This may or may not work. Ensure you have saved the recovery file."},r.a.createElement(f.a,{onClick:function(){E&&E(),w=!1,t.toTerminal()},startIcon:r.a.createElement(v.a,null)},"Disable Recovery Mode")),r.a.createElement(b.a,{color:"warning",onTriggered:e}),r.a.createElement(y.a,{color:"error"})),n&&r.a.createElement(u.a,{sx:{px:2,pt:1,pb:2,mt:2}},r.a.createElement(o.a,{variant:"h5"},n.title),r.a.createElement(i.a,{sx:{my:2}},r.a.createElement(m.a,{label:"Bug Report Text",value:n.body,variant:"outlined",color:"secondary",multiline:!0,fullWidth:!0,rows:12,sx:{"& .MuiOutlinedInput-root":{color:h.a.theme.secondary}}})),r.a.createElement(c.a,{title:"Submitting an issue to GitHub really help us improve the game!"},r.a.createElement(f.a,{component:s.a,startIcon:r.a.createElement(_.a,null),color:"info",sx:{px:2},href:null!==(S=n.issueUrl)&&void 0!==S?S:g.b,target:"_blank"},"Submit Issue to GitHub"))))}},,,function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o}));var a=n(1004);let r=1;function i(t){return r+=t,()=>r-=t}function o(){return Object(a.a)(r)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n(1005),r=n(298),i=n(367),o=n(237),s=n(38),l=n(7),c=n(581),f=n(64),u=n(15),m=n(24),h=n(147);function d(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class p{constructor(t={}){d(this,"name","The Corporation"),d(this,"divisions",[]),d(this,"funds",15e10),d(this,"revenue",0),d(this,"expenses",0),d(this,"fundingRound",0),d(this,"public",!1),d(this,"totalShares",s.a.INITIALSHARES),d(this,"numShares",s.a.INITIALSHARES),d(this,"shareSalesUntilPriceUpdate",s.a.SHARESPERPRICEUPDATE),d(this,"shareSaleCooldown",0),d(this,"issueNewSharesCooldown",0),d(this,"dividendPercentage",0),d(this,"dividendTaxPercentage",50),d(this,"issuedShares",0),d(this,"sharePrice",0),d(this,"storedCycles",0),d(this,"state",new a.a),this.name=t.name?t.name:"The Corporation";const e=Object.keys(r.a).length,n=Object.keys(i.a).length;this.unlockUpgrades=Array(e).fill(0),this.upgrades=Array(n).fill(0),this.upgradeMultipliers=Array(n).fill(1)}addFunds(t){isFinite(t)?this.funds=this.funds+t:console.error("Trying to add invalid amount of funds. Report to a developper.")}getState(){return this.state.getState()}storeCycles(t=1){this.storedCycles+=t}process(t){if(this.storedCycles>=s.a.CyclesPerIndustryStateCycle){const e=this.getState(),n=1,a=n*s.a.CyclesPerIndustryStateCycle;if(this.storedCycles-=a,this.divisions.forEach(t=>{t.process(n,e,this)}),this.shareSaleCooldown>0&&(this.shareSaleCooldown-=a),this.issueNewSharesCooldown>0&&(this.issueNewSharesCooldown-=a),"START"===e){this.revenue=0,this.expenses=0,this.divisions.forEach(t=>{t.lastCycleRevenue!==-1/0&&t.lastCycleRevenue!==1/0&&t.lastCycleExpenses!==-1/0&&t.lastCycleExpenses!==1/0&&(this.revenue=this.revenue+t.lastCycleRevenue,this.expenses=this.expenses+t.lastCycleExpenses)});const e=(this.revenue-this.expenses)*(n*s.a.SecsPerMarketCycle);if((isNaN(this.funds)||this.funds===1/0||this.funds===-1/0)&&(Object(u.a)("There was an error calculating your Corporations funds and they got reset to 0. This is a bug. Please report to game developer.

(Your funds have been set to $150b for the inconvenience)"),this.funds=15e10),this.dividendPercentage>0&&e>0)if(isNaN(this.dividendPercentage)||this.dividendPercentage<0||this.dividendPercentage>100*s.a.DividendMaxPercentage)console.error("Invalid Corporation dividend percentage: "+this.dividendPercentage);else{const n=e-this.dividendPercentage/100*e;t.gainMoney(this.getDividends(),"corporation"),this.addFunds(n)}else this.addFunds(e);this.updateSharePrice()}this.state.nextState()}}getDividends(){const t=(this.revenue-this.expenses)*s.a.SecsPerMarketCycle,e=this.dividendPercentage/100*t/this.totalShares,n=this.numShares*e;let a=-.15;return 1===this.unlockUpgrades[5]&&(a+=.05),1===this.unlockUpgrades[6]&&(a+=.1),Math.pow(n,l.a.CorporationSoftCap+a)}determineValuation(){let t,e=this.revenue-this.expenses;return this.public?(this.dividendPercentage>0&&(e*=(100-this.dividendPercentage)/100),t=this.funds+85e3*e,t*=Math.pow(1.1,this.divisions.length),t=Math.max(t,0)):(t=1e10+Math.max(this.funds,0)/3,e>0?(t+=315e3*e,t*=Math.pow(1.1,this.divisions.length)):t=1e10*Math.pow(1.1,this.divisions.length),t-=t%1e6),t*l.a.CorporationValuation}getTargetSharePrice(){return this.determineValuation()/(2*(this.totalShares-this.numShares)+1)}updateSharePrice(){const t=this.getTargetSharePrice();this.sharePrice<=t?this.sharePrice*=1+.01*Math.random():this.sharePrice*=1-.01*Math.random(),this.sharePrice<=.01&&(this.sharePrice=.01)}immediatelyUpdateSharePrice(){this.sharePrice=this.getTargetSharePrice()}calculateShareSale(t){let e=t,n=this.shareSalesUntilPriceUpdate,a=this.sharePrice,r=0,i=0;const o=Math.ceil(t/s.a.SHARESPERPRICEUPDATE);if(isNaN(o)||o>1e7)return console.error("Something went wrong or unexpected when calculating share sale. Maxiterations calculated to be "+o),[0,0,0];for(let t=0;t3600?Math.floor(e/3600)+" hour(s)":e>60?Math.floor(e/60)+" minute(s)":Math.floor(e)+" second(s)"}unlock(t){const e=t[0],n=t[1];for(;this.unlockUpgrades.length<=e;)this.unlockUpgrades.push(0);this.fundsthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst-=t,this.popEstthis.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst*=1-t/100,this.popEst0?1:-1),this.pop+=n,e.changeEstEqually&&(this.popEst+=n,this.popEst<0&&(this.popEst=0)),n}changeChaosByCount(t){if(isNaN(t))throw new Error("NaN passed into City.changeChaosByCount()");0!==t&&(this.chaos+=t,this.chaos<0&&(this.chaos=0))}toJSON(){return Object(i.b)("City",this)}static fromJSON(t){return Object(i.a)(l,t.data)}}i.c.constructors.City=l},function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s})),n.d(e,"c",(function(){return l})),n.d(e,"d",(function(){return c})),n.d(e,"e",(function(){return f})),n.d(e,"f",(function(){return u}));var a=n(28),r=n(515),i=n(79);function o(){return 2===this.bitNodeN||!(i.a[2]<=0)&&this.karma<=-54e3}function s(){const t=this.gang;if(null===t)throw new Error("Cannot get gang faction because player is not in a gang.");const e=a.a[t.facName];if(null==e)throw new Error("Gang has invalid faction name: "+t.facName);return e}function l(){if(!this.inGang())return"";const t=this.gang;if(null===t)throw new Error("Cannot get gang faction because player is not in a gang.");return t.facName}function c(t){if(!this.inGang())return!1;const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");return e.facName===t}function f(){return null!=this.gang&&null!=this.gang&&this.gang instanceof r.a}function u(t,e){this.gang=new r.a(t,e);const n=a.a[t];if(null==n)throw new Error("Invalid faction name when creating gang: "+t);n.playerReputation=0}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e=[],n=""){this.name=t,this.locations=e,this.asciiArt=n}addLocation(t){this.locations.push(t)}}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n(1),i=n(10),o=n(55),s=n(21);function l(t){return a.createElement(s.a,null,a.createElement(o.a,{sx:{my:1,p:1}},a.createElement(i.a,{onClick:t.onClick},t.buttonText),a.createElement(r.a,null,t.infoText)))}},function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return f}));var a=n(0),r=n(1),i=n(20),o=n(10),s=n(80);let l;function c(t){let e="",n="";return t.tickerDisplayMode===l.Portfolio?(e="Switch to 'All Stocks' Mode",n="Displays all stocks on the WSE"):(e="Switch to 'Portfolio' Mode",n="Displays only the stocks for which you have shares or orders"),a.createElement(i.a,{title:a.createElement(r.a,null,n)},a.createElement(o.a,{onClick:t.changeDisplayMode},e))}function f(t){return a.createElement(a.Fragment,null,a.createElement(c,t),a.createElement("br",null),a.createElement(s.a,{sx:{width:"100%"},onChange:t.changeWatchlistFilter,placeholder:"Filter Stocks by symbol (comma-separated list)",type:"text"}))}!function(t){t[t.AllStocks=0]="AllStocks",t[t.Portfolio=1]="Portfolio"}(l||(l={}))},function(t,e,n){"use strict";n.d(e,"f",(function(){return c})),n.d(e,"b",(function(){return f})),n.d(e,"c",(function(){return u})),n.d(e,"e",(function(){return m})),n.d(e,"d",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(9),r=n(7),i=n(46),o=n(92),s=n(25),l=n(103);function c(){return!!Object(s.d)(l.a.DarkWeb)}function f(){const t=Object(s.d)(this.currentServer);if(null===t)throw new Error("somehow connected to a server that does not exist. "+this.currentServer);return t}function u(){const t=Object(s.d)("home");if(t instanceof i.a)return t;throw new Error("home computer was not a normal server")}function m(){const t=this.getHomeComputer().maxRam,e=Math.log2(t),n=Math.pow(1.58,e);return t*a.a.BaseCostFor1GBOfRamHome*n*r.a.HomeComputerRamCost}function h(){return 1e9*Math.pow(7.5,this.getHomeComputer().cpuCores)}function d(){const t="hacknet-node-"+this.hacknetNodes.length,e=new o.a({adminRights:!0,hostname:t,ip:Object(s.e)()});this.hacknetNodes.push(e.hostname),Object(s.a)(e);return this.getHomeComputer().serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(l.a.Home),e}},,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var a=n(2),r=n(33),i=n(301),o=n(24),s=n(62);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class c{constructor(t=null){l(this,"name",""),l(this,"level",1),l(this,"maxLevel",1),l(this,"autoLevel",!0),l(this,"baseDifficulty",100),l(this,"difficultyFac",1.01),l(this,"rewardFac",1.02),l(this,"successes",0),l(this,"failures",0),l(this,"rankGain",0),l(this,"rankLoss",0),l(this,"hpLoss",0),l(this,"hpLost",0),l(this,"isStealth",!1),l(this,"isKill",!1),l(this,"count",Object(r.a)(1e3,25e3)),l(this,"weights",{hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7}),l(this,"decays",{hack:.9,str:.9,def:.9,dex:.9,agi:.9,cha:.9,int:.9}),l(this,"teamCount",0),t&&t.name&&(this.name=t.name),t&&t.baseDifficulty&&(this.baseDifficulty=Object(i.a)(t.baseDifficulty,10)),t&&t.difficultyFac&&(this.difficultyFac=t.difficultyFac),t&&t.rewardFac&&(this.rewardFac=t.rewardFac),t&&t.rankGain&&(this.rankGain=t.rankGain),t&&t.rankLoss&&(this.rankLoss=t.rankLoss),t&&t.hpLoss&&(this.hpLoss=t.hpLoss),t&&t.isStealth&&(this.isStealth=t.isStealth),t&&t.isKill&&(this.isKill=t.isKill),t&&t.count&&(this.count=t.count),t&&t.weights&&(this.weights=t.weights),t&&t.decays&&(this.decays=t.decays);let e=0;for(const t of Object.keys(this.weights))this.weights.hasOwnProperty(t)&&(e+=this.weights[t]);if(e-1>=10*Number.EPSILON)throw new Error("Invalid weights when constructing Action "+this.name+". The weights should sum up to 1. They sum up to :1");for(const t of Object.keys(this.decays))if(this.decays.hasOwnProperty(t)&&this.decays[t]>1)throw new Error(`Invalid decays when constructing Action ${this.name}. Decay value cannot be greater than 1`)}getDifficulty(){const t=this.baseDifficulty*Math.pow(this.difficultyFac,this.level-1);if(isNaN(t))throw new Error("Calculated NaN in Action.getDifficulty()");return t}attempt(t){return Math.random()s.a.ChaosThreshold){const t=e.chaos-s.a.ChaosThreshold+1;return Math.pow(t,.5)}return 1}getEstSuccessChance(t){function e(t){return Math.max(0,Math.min(t,1))}const n=this.getSuccessChance(t,{est:!0}),a=this.getSuccessChance(t),r=Math.abs(a-n);let i=a-r,o=a+r;const s=t.getCurrentCity(),l=s.pop/s.popEst;return l<1?i*=l:o*=l,[e(i),e(o)]}getSuccessChance(t,e={est:!1}){if(null==t)throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");let n=this.getDifficulty(),r=0;for(const e of Object.keys(this.weights))if(this.weights.hasOwnProperty(e)){const n=a.a.queryStatFromString(e),i="eff"+e.charAt(0).toUpperCase()+e.slice(1);let o=t.skillMultipliers[i];null==o&&(console.error("Failed to find Bladeburner Skill multiplier for: "+e),o=1),r+=this.weights[e]*Math.pow(o*n,this.decays[e])}if(r*=a.a.getIntelligenceBonus(.75),r*=t.calculateStaminaPenalty(),r*=this.getTeamSuccessBonus(t),r*=this.getChaosCompetencePenalty(t,e),n*=this.getChaosDifficultyBonus(t),"Raid"==this.name&&t.getCurrentCity().comms<=0)return 0;if(r*=t.skillMultipliers.successChanceAll,r*=this.getActionTypeSkillSuccessBonus(t),this.isStealth&&(r*=t.skillMultipliers.successChanceStealth),this.isKill&&(r*=t.skillMultipliers.successChanceKill),r*=a.a.bladeburner_success_chance_mult,isNaN(r))throw new Error("Competence calculated as NaN in Action.getSuccessChance()");return Math.min(1,r/n)}getSuccessesNeededForNextLevel(t){return Math.ceil(.5*this.maxLevel*(2*t+(this.maxLevel-1)))}setMaxLevel(t){this.successes>=this.getSuccessesNeededForNextLevel(t)&&++this.maxLevel}toJSON(){return Object(o.b)("Action",this)}static fromJSON(t){return Object(o.a)(c,t.data)}}o.c.constructors.Action=c},function(t,e,n){"use strict";n.d(e,"a",(function(){return I})),n.d(e,"b",(function(){return F}));var a=n(4),r=n(16),i=n(56),o=n(134),s=n(14),l=n(217),c=n(233),f=n(66),u=n(50),m=n(65),h=n(204),d=n(28),p=n(106),g=n(54),y=n(268),b=n(193),E=n(2),v=n(95),k=n(516),_=n(64),w=n(25),S=n(133),C=n(79),x=n(103),L=n(101),O=n(88),M=n(15),T=n(121),A=n(399),R=n(400),N=n(9),P=n(181);function I(){Object(l.b)(E.a);const t=E.a.factions.concat(E.a.factionInvitations).filter((function(t){return d.a[t].getInfo().keep}));E.a.prestigeAugmentation(),Object(b.c)();const e=E.a.getHomeComputer();Object(w.i)(),Object(w.a)(e),Object(S.d)(E.a,e),Object(o.b)(s.a.Neurolink)&&i.a[s.a.Neurolink].owned&&(e.programs.push(m.a.FTPCrackProgram.name),e.programs.push(m.a.RelaySMTPProgram.name)),Object(o.b)(s.a.CashRoot)&&i.a[s.a.CashRoot].owned&&(E.a.setMoney(1e6),e.programs.push(m.a.BruteSSHProgram.name)),Object(o.b)(s.a.PCMatrix)&&i.a[s.a.PCMatrix].owned&&(e.programs.push(m.a.DeepscanV1.name),e.programs.push(m.a.AutoLink.name)),(E.a.sourceFileLvl(5)>0||5===E.a.bitNodeN)&&e.programs.push(m.a.Formulas.name),Object(w.f)(E.a.getHomeComputer());for(const t of Object.keys(f.a))f.a.hasOwnProperty(t)&&f.a[t].gainFavor();for(const t of Object.keys(d.a))d.a.hasOwnProperty(t)&&d.a[t].gainFavor();null!==O.a.action&&O.a.finishAction(v.b,E.a,!0),O.a.clear(),P.a.emit(),Object(d.c)(),E.a.factionInvitations=E.a.factionInvitations.concat(t),Object(o.d)(),E.a.reapplyAllSourceFiles(),Object(f.b)(),Object(y.c)(),E.a.applyEntropy(E.a.entropy);const n=E.a.gang;if(E.a.inGang()&&null!==n){const t=d.a[n.facName];t instanceof h.a&&Object(p.e)(t);const e=.95;for(const t of n.members)t.hack_asc_points*=e,t.str_asc_points*=e,t.def_asc_points*=e,t.dex_asc_points*=e,t.agi_asc_points*=e,t.cha_asc_points*=e}if(3===E.a.bitNodeN&&e.messages.push(_.a.CorporationManagementHandbook),E.a.bladeburner instanceof c.a&&E.a.bladeburner.prestige(),8===E.a.bitNodeN&&(E.a.money=25e7),(8===E.a.bitNodeN||C.a[8]>0)&&(E.a.hasWseAccount=!0,E.a.hasTixApiAccess=!0),E.a.hasWseAccount&&(Object(L.f)(),Object(L.h)()),Object(o.b)(s.a.TheRedPill)&&i.a[s.a.TheRedPill].owned){const t=Object(w.d)(x.a.WorldDaemon),e=Object(w.d)(x.a.DaedalusServer);t&&e&&(t.serversOnNetwork.push(e.hostname),e.serversOnNetwork.push(t.hostname))}Object(o.b)(s.a.StaneksGift1)&&i.a[s.a.StaneksGift1].owned&&Object(p.e)(d.a[a.a.ChurchOfTheMachineGod]),T.b.prestigeAugmentation(),Object(k.b)(),A.b.splice(0,A.b.length),R.b.splice(0,R.b.length)}function F(t){Object(l.b)(E.a),Object(C.b)(E.a),E.a.prestigeSourceFile(),Object(b.c)();const e=E.a.getHomeComputer();null!==O.a.action&&O.a.finishAction(v.b,E.a,!0),O.a.clear(),P.a.emit(),Object(w.i)(),Object(w.a)(e),Object(S.d)(E.a,e),Object(w.f)(E.a.getHomeComputer()),C.a[9]>=2?e.setMaxRam(128):C.a[1]>0?e.setMaxRam(32):e.setMaxRam(8),e.cpuCores=1;for(const t of Object.keys(f.a))f.a.hasOwnProperty(t)&&(f.a[t].favor=0);for(const t of Object.keys(d.a))d.a.hasOwnProperty(t)&&(d.a[t].favor=0);null!==O.a.action&&O.a.finishAction(v.b,E.a,!0);for(const t of Object.keys(i.a))i.a.hasOwnProperty(t)&&delete i.a[t];if(C.a[12]>0&&E.a.augmentations.push({name:s.a.NeuroFluxGovernor,level:C.a[12]}),Object(d.c)(),Object(o.d)(),E.a.reapplyAllSourceFiles(),Object(f.b)(),Object(y.c)(),(E.a.sourceFileLvl(5)>0||5===E.a.bitNodeN)&&e.programs.push(m.a.Formulas.name),3===E.a.bitNodeN&&(e.messages.push(_.a.CorporationManagementHandbook),Object(M.a)("You received a copy of the Corporation Management Handbook on your home computer. Read it if you need help getting started with Corporations!")),8===E.a.bitNodeN&&(E.a.money=25e7),(8===E.a.bitNodeN||C.a[8]>0)&&(E.a.hasWseAccount=!0,E.a.hasTixApiAccess=!0),10===E.a.bitNodeN&&Object(M.a)("Visit VitaLife in New Tokyo if you'd like to purchase a new sleeve!"),13===E.a.bitNodeN&&Object(M.a)("Trouble is brewing in "+r.a.Chongqing),E.a.hasWseAccount?(Object(L.f)(),Object(L.h)()):Object(L.d)(),E.a.gang=null,E.a.corporation=null,Object(u.e)(),E.a.bladeburner=null,C.a[9]>=3){const t=E.a.createHacknetServer();t.level=100,t.cores=10,t.cache=5,t.updateHashRate(E.a.hacknet_node_money_mult),t.updateHashCapacity(),Object(g.p)(E.a)}13===E.a.bitNodeN&&(E.a.money=N.a.TravelCost),T.b.prestigeSourceFile(),0===C.a[5]||t||E.a.gainIntelligenceExp(300),Object(k.b)()}},function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i}));var a=n(8);const r=[];function i(t){if(r.find(e=>e.runningScript.pid===t.pid))return;const e=new Date;for(r.unshift({timeOfDeath:e,runningScript:t.scriptRef});r.length>a.a.MaxRecentScriptsCapacity;)r.pop()}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return m}));var a=n(0),r=n.n(a),i=n(16),o=n(1),s=n(20),l=n(115),c=n(139);const f=Object(l.a)(t=>Object(c.a)({travel:{color:t.colors.white,lineHeight:"1em",whiteSpace:"pre",cursor:"pointer"}}));function u(t){const e=f();return t.city!==t.currentCity?r.a.createElement(s.a,{title:r.a.createElement(o.a,null,t.city)},r.a.createElement("span",{onClick:()=>t.onTravel(t.city),className:e.travel},t.city[0])):r.a.createElement("span",null,t.city[0])}function m(t){return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,_ . ._. _. ."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," , _-\\','|~\\~ ~/ ;-'_ _-' ,;_;_, ~~-"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," /~~-\\_/-'~'--' \\~~| ', ,' / / ~|-_\\_/~/~ ~~--~~~~'--_"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,/'-/~ '\\ ,' _ , '",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Volhaven}),",'|~ ._/-, /~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~/-'~\\_, '-,| '|. ' ~ ,\\ /'~ / /_ /~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},".-~ '| '',\\~|\\ _\\~ ,_ , ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Chongqing})," /,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\ ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Sector12})," /'~ |_/~\\\\,-,~ \\ \" ,_,/ |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | / ._-~'\\_ _~| \\ ) ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.NewTokyo})),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ __-\\ '/ ~ |\\ \\_ / ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ., '\\ |, ~-_ - | \\\\_' ~| /\\ \\~ ,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~-_' _; '\\ '-, \\,' /\\/ |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\_,~'\\_ \\_ _, /' ' |, /|'"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / \\_ ~ | / \\ ~'; -,_."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ~\\ | | , '-_, ,; ~ ~\\"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\, ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Aevum})," / \\ / /| ,-, , -,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,/ | |' |/ ,- ~ \\ '."),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ,| ,/ \\ ,/ \\ ",r.a.createElement(u,{onTravel:t.onTravel,currentCity:t.currentCity,city:i.a.Ishima})," |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / | ~ -~~-, / _"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ,-' ~ /"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," / ,' ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ',| ~"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ~'"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(23),o=n(1124),s=n(1125);function l(t){const e=t.action.getEstSuccessChance(t.bladeburner);let n=r.a.createElement(r.a.Fragment,null);return n=e[0]===e[1]?r.a.createElement(r.a.Fragment,null,Object(i.d)(100*e[0],1),"%"):r.a.createElement(r.a.Fragment,null,Object(i.d)(100*e[0],1),"% ~ ",Object(i.d)(100*e[1],1),"%"),r.a.createElement(r.a.Fragment,null,"Estimated success chance: ",n," ",t.action.isStealth?r.a.createElement(o.a,null):r.a.createElement(r.a.Fragment,null),t.action.isKill?r.a.createElement(s.a,null):r.a.createElement(r.a.Fragment,null))}},,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a),i=n(41);function o(t){return r.a.createElement(i.a,{open:t.open,onClose:t.onClose},t.children)}},,,function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var a=n(0),r=n.n(a);function i(t,e,n){return t.substring(0,e)+n+t.substring(e+1)}function o(t){const[e,n]=Object(a.useState)(t.content);return Object(a.useEffect)(()=>{let t=5;const a=[],r=setInterval(()=>{if(t--,t>0)return;t=5*Math.random();const r=Math.random()*e.length,o=e.charAt(r);n(t=>i(t,r,function(t){const e=t=>t[Math.floor(Math.random()*t.length)],n=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567890"," _","()[]{}<>"];for(const a of n)if(a.includes(t))return e(a);return e("!@#$%^&*()_+|\\';\"/.,?`~")}(o))),a.push(window.setTimeout(()=>{n(t=>i(t,r,o))},500))},20);return()=>{clearInterval(r),a.forEach(t=>clearTimeout(t))}},[]),r.a.createElement("span",null,e)}},,,,,,,,,function(t,e,n){"use strict";n.d(e,"c",(function(){return u})),n.d(e,"d",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return d}));var a=n(0),r=n.n(a),i=n(254),o=n(2),s=n(88),l=n(103),c=n(5),f=n(19);function u(){const t=o.a.getCurrentServer();null!==t&&l.a.DarkWeb==t.hostname&&s.a.print("You are now connected to the dark web. From the dark web you can purchase illegal items. Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name]' to purchase an item. Use 'buy -a' to purchase all unowned items.")}function m(){for(const t of Object.keys(i.a)){const e=i.a[t],n=o.a.getHomeComputer().programs.includes(e.program)?r.a.createElement("span",{style:{color:"green"}},"[OWNED]"):r.a.createElement(f.a,{money:e.price});s.a.printRaw(r.a.createElement(r.a.Fragment,null,r.a.createElement("span",null,e.program)," - ",r.a.createElement("span",null,n)," - ",r.a.createElement("span",null,e.description)))}}function h(t){t=t.toLowerCase();let e=null;for(const n of Object.keys(i.a)){const a=i.a[n];a.program.toLowerCase()==t&&(e=a)}if(null===e)return void s.a.error("Unrecognized item: "+t);if(o.a.hasProgram(e.program))return void s.a.print("You already have the "+e.program+" program");if(o.a.money{var n,a;return(null===(n=e)||void 0===n?void 0:n.program)&&t.startsWith(null===(a=e)||void 0===a?void 0:a.program)});a>-1&&n.splice(a,1),o.a.getHomeComputer().programs.push(e.program),s.a.print("You have purchased the "+e.program+" program. The new program can be found on your home computer.")}function d(){const t=[];let e=0;for(const n of Object.keys(i.a)){const a=i.a[n];o.a.hasProgram(a.program)||(t.push(a),e+=a.price)}if(0!==t.length)if(e>o.a.money)s.a.error("Not enough money to purchase remaining programs, "+c.a.formatMoney(e)+" required");else for(const e of t)h(e.program);else s.a.print("All available programs have been purchased already.")}},function(t,e,n){"use strict";function a(t,e){const n=t.hostname;return"requiredHackingSkill"in t?!1===t.hasAdminRights?{res:!1,msg:`Cannot ${e} ${n} server because you do not have root access`}:{res:!0}:{res:!1,msg:`Cannot ${e} ${n} server because it is a Hacknet Node`}}function r(t,e){const n=a(t,"hack");if(!n.res)return n;return t.requiredHackingSkill>e.hacking?{res:!1,msg:`Cannot hack ${t.hostname} server because your hacking skill is not high enough`}:{res:!0}}function i(t){return a(t,"grow")}function o(t){return a(t,"weaken")}n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return i})),n.d(e,"c",(function(){return o}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(173),r=n(9);class i{constructor(t){this.augmentation=t}get cost(){return this.augmentation.startingCost*r.a.AugmentationGraftingCostMult}get time(){const t=Math.max(Object(a.sum)(Object.values(this.augmentation.mults)),1),e=Math.log2(t);return(r.a.AugmentationGraftingTimeBase*e+r.a.MillisecondsPerHalfHour)/2}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n.n(a),i=n(5),o=n(118);function s({reputation:t}){return r.a.createElement(o.a,{reputation:i.a.formatReputation(t)+" / sec"})}},function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return s}));var a=n(27),r=n(152);function i(t){return"string"==typeof t&&(!isNaN(t)&&!isNaN(parseFloat(t)))}function o(t){const e=(t=(t=t.trim()).replace(/\s\s+/g," ")).match(/(?:'[^']*'|"[^"]*"|[^;"])*/g);if(!e)return[];const n=e.map(r.h).map(t=>t.match(/(?:'[^']*'|"[^"]*"|[^;"])*/g)).flat(),a=[];for(const t of n)null!==t&&(t.match(/^\s*$/)||a.push(t.trim()));return a}function s(t){let e="";const n=[];let r=0,o=0,s="";for(;o=1&&(s=t.charAt(o-1),"\\"===s&&(l=!0));const c=t.charAt(o);if(c===a.a.DOUBLE_QUOTE)if(l||s!==a.a.SPACE)""===e?e=a.a.DOUBLE_QUOTE:e===a.a.DOUBLE_QUOTE&&(e="");else{const e=t.indexOf(a.a.DOUBLE_QUOTE,o+1);if(-1!==e&&(e===t.length-1||t.charAt(e+1)===a.a.SPACE)){n.push(t.substr(o+1,e-o-1)),r=o=e===t.length-1?e+1:e+2;continue}}else if(c===a.a.QUOTE)if(l||s!==a.a.SPACE)""===e?e=a.a.QUOTE:e===a.a.QUOTE&&(e="");else{const e=t.indexOf(a.a.QUOTE,o+1);if(-1!==e&&(e===t.length-1||t.charAt(e+1)===a.a.SPACE)){n.push(t.substr(o+1,e-o-1)),r=o=e===t.length-1?e+1:e+2;continue}}else if(c===a.a.SPACE&&""===e){const e=t.substr(r,o-r);i(e)?n.push(parseFloat(e)):"true"===e?n.push(!0):"false"===e?n.push(!1):n.push(e),r=o+1}++o}if(r!==o){const e=t.substr(r,o-r);i(e)?n.push(parseFloat(e)):"true"===e?n.push(!0):"false"===e?n.push(!1):n.push(e)}return n}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var a=n(0),r=n.n(a),i=n(1363),o=n(1),s=n(10);function l(t){const[e,n]=Object(a.useState)(0),[l,c]=Object(a.useState)(!1);return r.a.createElement(r.a.Fragment,null,t.lines.slice(0,e).map((t,e)=>r.a.createElement(o.a,{key:e},t)),t.lines.length>e&&r.a.createElement(i.a,{key:e,text:t.lines[e],onDone:function(){const a=e+1;n(a),a>=t.lines.length&&(t.onDone&&t.auto&&t.onDone(),c(!0))}}),!t.auto&&t.onDone&&l&&r.a.createElement(s.a,{onClick:t.onDone},"Continue ..."))}},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return r}));const a=5,r=1e13},function(t,e,n){"use strict";n.d(e,"c",(function(){return u})),n.d(e,"a",(function(){return m})),n.d(e,"b",(function(){return h})),n.d(e,"d",(function(){return d})),n.d(e,"e",(function(){return p}));var a=n(40),r=n(14),i=n(2),o=n(65),s=n(310),l=n(0),c=n.n(l),f=n(4);const u=()=>[new a.a({name:r.a.HemoRecirculator,moneyCost:45e6,repCost:1e4,info:"A heart implant that greatly increases the body's ability to effectively use and pump blood.",strength_mult:1.08,defense_mult:1.08,agility_mult:1.08,dexterity_mult:1.08,factions:[f.a.Tetrads,f.a.TheDarkArmy,f.a.TheSyndicate]}),new a.a({name:r.a.Targeting1,moneyCost:15e6,repCost:5e3,info:"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates and enhances balance and hand-eye coordination.",dexterity_mult:1.1,factions:[f.a.SlumSnakes,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Sector12,f.a.Ishima,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.Targeting2,moneyCost:425e5,repCost:8750,info:"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting reality by digitally displaying weaknesses and vital signs of threats.",prereqs:[r.a.Targeting1],dexterity_mult:1.2,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Sector12,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.Targeting3,moneyCost:115e6,repCost:27500,info:"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.",prereqs:[r.a.Targeting2],dexterity_mult:1.3,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries,f.a.TheCovenant]}),new a.a({name:r.a.SyntheticHeart,moneyCost:2875e6,repCost:75e4,info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood more efficiently than an organic heart.",agility_mult:1.5,strength_mult:1.5,factions:[f.a.KuaiGongInternational,f.a.FulcrumSecretTechnologies,f.a.SpeakersForTheDead,f.a.NWO,f.a.TheCovenant,f.a.Daedalus,f.a.Illuminati]}),new a.a({name:r.a.SynfibrilMuscle,repCost:437500,moneyCost:1125e6,info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. Scientists have named these artificially enhanced units 'synfibrils'.",strength_mult:1.3,defense_mult:1.3,factions:[f.a.KuaiGongInternational,f.a.FulcrumSecretTechnologies,f.a.SpeakersForTheDead,f.a.NWO,f.a.TheCovenant,f.a.Daedalus,f.a.Illuminati,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib1,repCost:7500,moneyCost:2375e4,info:"The rib cage is augmented to continuously release boosters into the bloodstream which increase the oxygen-carrying capacity of blood.",strength_mult:1.1,defense_mult:1.1,factions:[f.a.SlumSnakes,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Volhaven,f.a.Ishima,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib2,repCost:18750,moneyCost:65e6,info:"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which improve focus and endurance while decreasing reaction time and fatigue.",prereqs:[r.a.CombatRib1],strength_mult:1.14,defense_mult:1.14,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.Volhaven,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries]}),new a.a({name:r.a.CombatRib3,repCost:35e3,moneyCost:12e7,info:"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that improve muscle mass and physical performance while being safe and free of side effects.",prereqs:[r.a.CombatRib2],strength_mult:1.18,defense_mult:1.18,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.KuaiGongInternational,f.a.BladeIndustries,f.a.TheCovenant]}),new a.a({name:r.a.NanofiberWeave,repCost:37500,moneyCost:125e6,info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, which improves its regenerative and extracellular homeostasis abilities.",strength_mult:1.2,defense_mult:1.2,factions:[f.a.TheDarkArmy,f.a.TheSyndicate,f.a.OmniTekIncorporated,f.a.BladeIndustries,f.a.TianDiHui,f.a.SpeakersForTheDead,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.SubdermalArmor,repCost:875e3,moneyCost:325e7,info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. The material is implanted underneath the skin, and is the most advanced form of defensive enhancement that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to mitigate damage from any fire or electrical traumas.",defense_mult:2.2,factions:[f.a.TheSyndicate,f.a.FulcrumSecretTechnologies,f.a.Illuminati,f.a.Daedalus,f.a.TheCovenant]}),new a.a({name:r.a.WiredReflexes,repCost:1250,moneyCost:25e5,info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, supercharging the spread of neural signals and increasing reflex speed.",agility_mult:1.05,dexterity_mult:1.05,factions:[f.a.TianDiHui,f.a.SlumSnakes,f.a.Sector12,f.a.Volhaven,f.a.Aevum,f.a.Ishima,f.a.TheSyndicate,f.a.TheDarkArmy,f.a.SpeakersForTheDead]}),new a.a({name:r.a.GrapheneBoneLacings,repCost:1125e3,moneyCost:425e7,info:"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",strength_mult:1.7,defense_mult:1.7,factions:[f.a.FulcrumSecretTechnologies,f.a.TheCovenant]}),new a.a({name:r.a.BionicSpine,repCost:45e3,moneyCost:125e6,info:"The spine is reconstructed using plasteel and carbon fibers. It is now capable of stimulating and regulating neural signals passing through the spinal cord, improving senses and reaction speed. The 'Bionic Spine' also interfaces with all other 'Bionic' implants.",strength_mult:1.15,defense_mult:1.15,agility_mult:1.15,dexterity_mult:1.15,factions:[f.a.SpeakersForTheDead,f.a.TheSyndicate,f.a.KuaiGongInternational,f.a.OmniTekIncorporated,f.a.BladeIndustries]}),new a.a({name:r.a.GrapheneBionicSpine,repCost:1625e3,moneyCost:6e9,info:"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene which enhances durability and supercharges all body functions.",prereqs:[r.a.BionicSpine],strength_mult:1.6,defense_mult:1.6,agility_mult:1.6,dexterity_mult:1.6,factions:[f.a.FulcrumSecretTechnologies,f.a.ECorp]}),new a.a({name:r.a.BionicLegs,repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility_mult:1.6,factions:[f.a.SpeakersForTheDead,f.a.TheSyndicate,f.a.KuaiGongInternational,f.a.OmniTekIncorporated,f.a.BladeIndustries]}),new a.a({name:r.a.GrapheneBionicLegs,repCost:75e4,moneyCost:45e8,info:"An upgrade to the 'Bionic Legs' augmentation. The legs are fused with graphene, greatly enhancing jumping ability.",prereqs:[r.a.BionicLegs],agility_mult:2.5,factions:[f.a.MegaCorp,f.a.ECorp,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.SpeechProcessor,repCost:7500,moneyCost:5e7,info:"A cochlear implant with an embedded computer that analyzes incoming speech. The embedded computer processes characteristics of incoming speech, such as tone and inflection, to pick up on subtle cues and aid in social interactions.",charisma_mult:1.2,factions:[f.a.TianDiHui,f.a.Chongqing,f.a.Sector12,f.a.NewTokyo,f.a.Aevum,f.a.Ishima,f.a.Volhaven,f.a.Silhouette]}),new a.a({name:r.a.TITN41Injection,repCost:25e3,moneyCost:19e7,info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that control personality. The TITN-41 strain alters these genes so that the subject becomes more outgoing and socialable.",charisma_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.Silhouette]}),new a.a({name:r.a.EnhancedSocialInteractionImplant,repCost:375e3,moneyCost:1375e6,info:"A cranial implant that greatly assists in the user's ability to analyze social situations and interactions. The system uses a wide variety of factors such as facial expressions, body language, and the voice tone, and inflection to determine the best course of action during socialsituations. The implant also uses deep learning software to continuously learn new behaviorpatterns and how to best respond.",charisma_mult:1.6,charisma_exp_mult:1.6,factions:[f.a.BachmanAssociates,f.a.NWO,f.a.ClarkeIncorporated,f.a.OmniTekIncorporated,f.a.FourSigma]}),new a.a({name:r.a.BitWire,repCost:3750,moneyCost:1e7,info:"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing capabilities.",hacking_mult:1.05,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.ArtificialBioNeuralNetwork,repCost:275e3,moneyCost:3e9,info:"A network consisting of millions of nanoprocessors is embedded into the brain. The network is meant to mimic the way a biological brain solves a problem, with each nanoprocessor acting similar to the way a neuron would in a neural network. However, these nanoprocessors are programmed to perform computations much faster than organic neurons, allowing the user to solve much more complex problems at a much faster rate.",hacking_speed_mult:1.03,hacking_money_mult:1.15,hacking_mult:1.12,factions:[f.a.BitRunners,f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.ArtificialSynapticPotentiation,repCost:6250,moneyCost:8e7,info:"The body is injected with a chemical that artificially induces synaptic potentiation, otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.",hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_exp_mult:1.05,factions:[f.a.TheBlackHand,f.a.NiteSec]}),new a.a({name:r.a.EnhancedMyelinSheathing,repCost:1e5,moneyCost:1375e6,info:"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. This process results in the proliferation of new, synthetic myelin sheaths in the nervous system. These myelin sheaths can propogate neuro-signals much faster than their organic counterparts, leading to greater processing speeds and better brain function.",hacking_speed_mult:1.03,hacking_exp_mult:1.1,hacking_mult:1.08,factions:[f.a.FulcrumSecretTechnologies,f.a.BitRunners,f.a.TheBlackHand]}),new a.a({name:r.a.SynapticEnhancement,repCost:2e3,moneyCost:75e5,info:"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and induce stronger synaptic activity. This improves the user's cognitive abilities.",hacking_speed_mult:1.03,factions:[f.a.CyberSec,f.a.Aevum]}),new a.a({name:r.a.NeuralRetentionEnhancement,repCost:2e4,moneyCost:25e7,info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal circuits, strengthening the ability to retain information.",hacking_exp_mult:1.25,factions:[f.a.NiteSec]}),new a.a({name:r.a.DataJack,repCost:112500,moneyCost:45e7,info:"A brain implant that provides an interface for direct, wireless communication between a computer's main memory and the mind. This implant allows the user to not only access a computer's memory, but also alter and delete it.",hacking_money_mult:1.25,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.NiteSec,f.a.Chongqing,f.a.NewTokyo]}),new a.a({name:r.a.ENM,repCost:15e3,moneyCost:25e7,info:"A thin device embedded inside the arm containing a wireless module capable of connecting to nearby networks. Once connected, the Netburner Module is capable of capturing and processing all of the traffic on that network. By itself, the Embedded Netburner Module does not do much, but a variety of very powerful upgrades can be installed that allow you to fully control the traffic on a network.",hacking_mult:1.08,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.NiteSec,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries]}),new a.a({name:r.a.ENMCore,repCost:175e3,moneyCost:25e8,info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgrade allows the Embedded Netburner Module to generate its own data on a network.",prereqs:[r.a.ENM],hacking_speed_mult:1.03,hacking_money_mult:1.1,hacking_chance_mult:1.03,hacking_exp_mult:1.07,hacking_mult:1.07,factions:[f.a.BitRunners,f.a.TheBlackHand,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries]}),new a.a({name:r.a.ENMCoreV2,repCost:1e6,moneyCost:45e8,info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to control information on a network by re-routing traffic, spoofing IP addresses, and altering the data inside network packets.",prereqs:[r.a.ENMCore],hacking_speed_mult:1.05,hacking_money_mult:1.3,hacking_chance_mult:1.05,hacking_exp_mult:1.15,hacking_mult:1.08,factions:[f.a.BitRunners,f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.BladeIndustries,f.a.OmniTekIncorporated,f.a.KuaiGongInternational]}),new a.a({name:r.a.ENMCoreV3,repCost:175e4,moneyCost:75e8,info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into any device on a network.",prereqs:[r.a.ENMCoreV2],hacking_speed_mult:1.05,hacking_money_mult:1.4,hacking_chance_mult:1.1,hacking_exp_mult:1.25,hacking_mult:1.1,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.ENMAnalyzeEngine,repCost:625e3,moneyCost:6e9,info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster that vastly outperforms the Netburner Module's native single-core processor.",prereqs:[r.a.ENM],hacking_speed_mult:1.1,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.ENMDMA,repCost:1e6,moneyCost:7e9,info:"This implant installs a Direct Memory Access (DMA) controller into the Embedded Netburner Module. This allows the Module to send and receive data directly to and from the main memory of devices on a network.",prereqs:[r.a.ENM],hacking_money_mult:1.4,hacking_chance_mult:1.2,factions:[f.a.ECorp,f.a.MegaCorp,f.a.FulcrumSecretTechnologies,f.a.NWO,f.a.Daedalus,f.a.TheCovenant,f.a.Illuminati]}),new a.a({name:r.a.Neuralstimulator,repCost:5e4,moneyCost:3e9,info:"A cranial implant that intelligently stimulates certain areas of the brain in order to improve cognitive functions.",hacking_speed_mult:1.02,hacking_chance_mult:1.1,hacking_exp_mult:1.12,factions:[f.a.TheBlackHand,f.a.Chongqing,f.a.Sector12,f.a.NewTokyo,f.a.Aevum,f.a.Ishima,f.a.Volhaven,f.a.BachmanAssociates,f.a.ClarkeIncorporated,f.a.FourSigma]}),new a.a({name:r.a.NeuralAccelerator,repCost:2e5,moneyCost:175e7,info:"A microprocessor that accelerates the processing speed of biological neural networks. This is a cranial implant that is embedded inside the brain.",hacking_mult:1.1,hacking_exp_mult:1.15,hacking_money_mult:1.2,factions:[f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG1,repCost:1e4,moneyCost:7e7,info:"The first generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",hacking_speed_mult:1.01,hacking_mult:1.05,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.CranialSignalProcessorsG2,repCost:18750,moneyCost:125e6,info:"The second generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG1],hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_mult:1.07,factions:[f.a.CyberSec,f.a.NiteSec]}),new a.a({name:r.a.CranialSignalProcessorsG3,repCost:5e4,moneyCost:55e7,info:"The third generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG2],hacking_speed_mult:1.02,hacking_money_mult:1.15,hacking_mult:1.09,factions:[f.a.NiteSec,f.a.TheBlackHand,f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG4,repCost:125e3,moneyCost:11e8,info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG3],hacking_speed_mult:1.02,hacking_money_mult:1.2,hacking_grow_mult:1.25,factions:[f.a.TheBlackHand,f.a.BitRunners]}),new a.a({name:r.a.CranialSignalProcessorsG5,repCost:25e4,moneyCost:225e7,info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[r.a.CranialSignalProcessorsG4],hacking_mult:1.3,hacking_money_mult:1.25,hacking_grow_mult:1.75,factions:[f.a.BitRunners]}),new a.a({name:r.a.NeuronalDensification,repCost:187500,moneyCost:1375e6,info:"The brain is surgically re-engineered to have increased neuronal density by decreasing the neuron gap junction. Then, the body is genetically modified to enhance the production and capabilities of its neural stem cells.",hacking_mult:1.15,hacking_exp_mult:1.1,hacking_speed_mult:1.03,factions:[f.a.ClarkeIncorporated]}),new a.a({name:r.a.NuoptimalInjectorImplant,repCost:5e3,moneyCost:2e7,info:"This torso implant automatically injects nootropic supplements into the bloodstream to improve memory, increase focus, and provide other cognitive enhancements.",company_rep_mult:1.2,factions:[f.a.TianDiHui,f.a.Volhaven,f.a.NewTokyo,f.a.Chongqing,f.a.ClarkeIncorporated,f.a.FourSigma,f.a.BachmanAssociates]}),new a.a({name:r.a.SpeechEnhancement,repCost:2500,moneyCost:125e5,info:"An advanced neural implant that improves your speaking abilities, making you more convincing and likable in conversations and overall improving your social interactions.",company_rep_mult:1.1,charisma_mult:1.1,factions:[f.a.TianDiHui,f.a.SpeakersForTheDead,f.a.FourSigma,f.a.KuaiGongInternational,f.a.ClarkeIncorporated,f.a.BachmanAssociates]}),new a.a({name:r.a.FocusWire,repCost:75e3,moneyCost:9e8,info:"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",hacking_exp_mult:1.05,strength_exp_mult:1.05,defense_exp_mult:1.05,dexterity_exp_mult:1.05,agility_exp_mult:1.05,charisma_exp_mult:1.05,company_rep_mult:1.1,work_money_mult:1.2,factions:[f.a.BachmanAssociates,f.a.ClarkeIncorporated,f.a.FourSigma,f.a.KuaiGongInternational]}),new a.a({name:r.a.PCDNI,repCost:375e3,moneyCost:375e7,info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most computers. Connecting to a computer through this jack allows you to interface with it using the brain's electrochemical signals.",company_rep_mult:1.3,hacking_mult:1.08,factions:[f.a.FourSigma,f.a.OmniTekIncorporated,f.a.ECorp,f.a.BladeIndustries]}),new a.a({name:r.a.PCDNIOptimizer,repCost:5e5,moneyCost:45e8,info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It improves the performance of the interface and gives the user more control options to a connected computer.",prereqs:[r.a.PCDNI],company_rep_mult:1.75,hacking_mult:1.1,factions:[f.a.FulcrumSecretTechnologies,f.a.ECorp,f.a.BladeIndustries]}),new a.a({name:r.a.PCDNINeuralNetwork,repCost:15e5,moneyCost:75e8,info:"This is an additional installation that upgrades the functionality of the PC Direct-Neural Interface augmentation. When connected to a computer, The Neural Network upgrade allows the user to use their own brain's processing power to aid the computer in computational tasks.",prereqs:[r.a.PCDNI],company_rep_mult:2,hacking_mult:1.1,hacking_speed_mult:1.05,factions:[f.a.FulcrumSecretTechnologies]}),new a.a({name:r.a.ADRPheromone1,repCost:3750,moneyCost:175e5,info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, triggers feelings of admiration and approval in other people.",company_rep_mult:1.1,faction_rep_mult:1.1,factions:[f.a.TianDiHui,f.a.TheSyndicate,f.a.NWO,f.a.MegaCorp,f.a.FourSigma]}),new a.a({name:r.a.ADRPheromone2,repCost:62500,moneyCost:55e7,info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, which is similar to but more potent than ADR-V1. This pheromone, when excreted, triggers feelings of admiration, approval, and respect in others.",company_rep_mult:1.2,faction_rep_mult:1.2,factions:[f.a.Silhouette,f.a.FourSigma,f.a.BachmanAssociates,f.a.ClarkeIncorporated]}),new a.a({name:r.a.ShadowsSimulacrum,repCost:37500,moneyCost:4e8,info:"A crude but functional matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation was developed by criminal organizations and allows the user to project and control holographic simulacrums within a large radius. These simulacrums are commonly used for espionage and surveillance work.",company_rep_mult:1.15,faction_rep_mult:1.15,factions:[f.a.TheSyndicate,f.a.TheDarkArmy,f.a.SpeakersForTheDead]}),new a.a({name:r.a.HacknetNodeCPUUpload,repCost:3750,moneyCost:11e6,info:"Uploads the architecture and design details of a Hacknet Node's CPU into the brain. This allows the user to engineer custom hardware and software for the Hacknet Node that provides better performance.",hacknet_node_money_mult:1.15,hacknet_node_purchase_cost_mult:.85,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeCacheUpload,repCost:2500,moneyCost:55e5,info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache into the brain. This allows the user to engineer custom cache hardware for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_level_cost_mult:.85,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeNICUpload,repCost:1875,moneyCost:45e5,info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_purchase_cost_mult:.9,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeKernelDNI,repCost:7500,moneyCost:4e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's kernel using electrochemical signals.",hacknet_node_money_mult:1.25,factions:[f.a.Netburners]}),new a.a({name:r.a.HacknetNodeCoreDNI,repCost:12500,moneyCost:6e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using electrochemical signals.",hacknet_node_money_mult:1.45,factions:[f.a.Netburners]}),new a.a({name:r.a.Neurotrainer1,repCost:1e3,moneyCost:4e6,info:"A decentralized cranial implant that improves the brain's ability to learn. It is installed by releasing millions of nanobots into the human brain, each of which attaches to a different neural pathway to enhance the brain's ability to retain and retrieve information.",hacking_exp_mult:1.1,strength_exp_mult:1.1,defense_exp_mult:1.1,dexterity_exp_mult:1.1,agility_exp_mult:1.1,charisma_exp_mult:1.1,factions:[f.a.CyberSec,f.a.Aevum]}),new a.a({name:r.a.Neurotrainer2,repCost:1e4,moneyCost:45e6,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I augmentation, but it does not require Neurotrainer I to be installed as a prerequisite.",hacking_exp_mult:1.15,strength_exp_mult:1.15,defense_exp_mult:1.15,dexterity_exp_mult:1.15,agility_exp_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.BitRunners,f.a.NiteSec]}),new a.a({name:r.a.Neurotrainer3,repCost:25e3,moneyCost:13e7,info:"A decentralized cranial implant that improves the brain's ability to learn. This is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, but it does not require either of them to be installed as a prerequisite.",hacking_exp_mult:1.2,strength_exp_mult:1.2,defense_exp_mult:1.2,dexterity_exp_mult:1.2,agility_exp_mult:1.2,charisma_exp_mult:1.2,factions:[f.a.NWO,f.a.FourSigma]}),new a.a({name:r.a.Hypersight,repCost:15e4,moneyCost:275e7,info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. Embedded circuitry within the implant provides the ability to detect heat and movement through solid objects such as walls, thus providing 'x-ray vision'-like capabilities.",dexterity_mult:1.4,hacking_speed_mult:1.03,hacking_money_mult:1.1,factions:[f.a.BladeIndustries,f.a.KuaiGongInternational]}),new a.a({name:r.a.LuminCloaking1,repCost:1500,moneyCost:5e6,info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These cells, when powered, have a negative refractive index. As a result, they bend light around the skin, making the user much harder to see to the naked eye.",agility_mult:1.05,crime_money_mult:1.1,factions:[f.a.SlumSnakes,f.a.Tetrads]}),new a.a({name:r.a.LuminCloaking2,repCost:5e3,moneyCost:3e7,info:"This is a more advanced version of the LuminCloaking-V1 augmentation. This skin implant reinforces the skin with highly-advanced synthetic cells. These cells, when powered, are capable of not only bending light but also of bending heat, making the user more resilient as well as stealthy.",prereqs:[r.a.LuminCloaking1],agility_mult:1.1,defense_mult:1.1,crime_money_mult:1.25,factions:[f.a.SlumSnakes,f.a.Tetrads]}),new a.a({name:r.a.SmartSonar,repCost:22500,moneyCost:75e6,info:"A cochlear implant that helps the player detect and locate enemies using sound propagation.",dexterity_mult:1.1,dexterity_exp_mult:1.15,crime_money_mult:1.25,factions:[f.a.SlumSnakes]}),new a.a({name:r.a.PowerRecirculator,repCost:25e3,moneyCost:18e7,info:"The body's nerves are attached with polypyrrole nanocircuits that are capable of capturing wasted energy, in the form of heat, and converting it back into usable power.",hacking_mult:1.05,strength_mult:1.05,defense_mult:1.05,dexterity_mult:1.05,agility_mult:1.05,charisma_mult:1.05,hacking_exp_mult:1.1,strength_exp_mult:1.1,defense_exp_mult:1.1,dexterity_exp_mult:1.1,agility_exp_mult:1.1,charisma_exp_mult:1.1,factions:[f.a.Tetrads,f.a.TheDarkArmy,f.a.TheSyndicate,f.a.NWO]}),new a.a({name:r.a.QLink,repCost:1875e3,moneyCost:25e12,info:`A brain implant that wirelessly connects you to the ${f.a.Illuminati}'s quantum supercomputer, allowing you to access and use its incredible computing power.`,hacking_mult:1.75,hacking_speed_mult:2,hacking_chance_mult:2.5,hacking_money_mult:4,factions:[f.a.Illuminati]}),new a.a({name:r.a.SPTN97,repCost:125e4,moneyCost:4875e6,info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an artificially-synthesized gene that was developed by DARPA to create super-soldiers through genetic modification. The gene was outlawed in 2056.",strength_mult:1.75,defense_mult:1.75,dexterity_mult:1.75,agility_mult:1.75,hacking_mult:1.15,factions:[f.a.TheCovenant]}),new a.a({name:r.a.HiveMind,repCost:15e5,moneyCost:55e8,info:`A brain implant developed by ${f.a.ECorp}. They do not reveal what exactly the implant does, but they promise that it will greatly enhance your abilities.`,hacking_grow_mult:3,stats:null,factions:[f.a.ECorp]}),new a.a({name:r.a.TheRedPill,repCost:25e5,moneyCost:0,info:"It's time to leave the cave.",stats:null,factions:[f.a.Daedalus]}),new a.a({name:r.a.CordiARCReactor,repCost:1125e3,moneyCost:5e9,info:"The thoracic cavity is equipped with a small chamber designed to hold and sustain hydrogen plasma. The plasma is used to generate fusion power through nuclear fusion, providing limitless amounts of clean energy for the body.",strength_mult:1.35,defense_mult:1.35,dexterity_mult:1.35,agility_mult:1.35,strength_exp_mult:1.35,defense_exp_mult:1.35,dexterity_exp_mult:1.35,agility_exp_mult:1.35,factions:[f.a.MegaCorp]}),new a.a({name:r.a.SmartJaw,repCost:375e3,moneyCost:275e7,info:"A bionic jaw that contains advanced hardware and software capable of psychoanalyzing and profiling the personality of others using optical imaging software.",charisma_mult:1.5,charisma_exp_mult:1.5,company_rep_mult:1.25,faction_rep_mult:1.25,factions:[f.a.BachmanAssociates]}),new a.a({name:r.a.Neotra,repCost:562500,moneyCost:2875e6,info:"A highly-advanced techno-organic drug that is injected into the skeletal and integumentary system. The drug permanently modifies the DNA of the body's skin and bone cells, granting them the ability to repair and restructure themselves.",strength_mult:1.55,defense_mult:1.55,factions:[f.a.BladeIndustries]}),new a.a({name:r.a.Xanipher,repCost:875e3,moneyCost:425e7,info:"A concoction of advanced nanobots that is orally ingested into the body. These nanobots induce physiological changes and significantly improve the body's functioning in all aspects.",hacking_mult:1.2,strength_mult:1.2,defense_mult:1.2,dexterity_mult:1.2,agility_mult:1.2,charisma_mult:1.2,hacking_exp_mult:1.15,strength_exp_mult:1.15,defense_exp_mult:1.15,dexterity_exp_mult:1.15,agility_exp_mult:1.15,charisma_exp_mult:1.15,factions:[f.a.NWO]}),new a.a({name:r.a.HydroflameLeftArm,repCost:125e4,moneyCost:25e11,info:"The left arm of a legendary BitRunner who ascended beyond this world. It projects a light blue energy shield that protects the exposed inner parts. Even though it contains no weapons, the advanced tungsten titanium alloy increases the user's strength to unbelievable levels. The augmentation gets more powerful over time for seemingly no reason.",strength_mult:2.7,factions:[f.a.NWO]}),new a.a({name:r.a.nextSENS,repCost:437500,moneyCost:1925e6,info:"The body is genetically re-engineered to maintain a state of negligible senescence, preventing the body from deteriorating with age.",hacking_mult:1.2,strength_mult:1.2,defense_mult:1.2,dexterity_mult:1.2,agility_mult:1.2,charisma_mult:1.2,factions:[f.a.ClarkeIncorporated]}),new a.a({name:r.a.OmniTekInfoLoad,repCost:625e3,moneyCost:2875e6,info:"OmniTek's data and information repository is uploaded into your brain, enhancing your programming and hacking abilities.",hacking_mult:1.2,hacking_exp_mult:1.25,factions:[f.a.OmniTekIncorporated]}),new a.a({name:r.a.PhotosyntheticCells,repCost:562500,moneyCost:275e7,info:"Chloroplasts are added to epidermal stem cells and are applied to the body using a skin graft. The result is photosynthetic skin cells, allowing users to generate their own energy and nutrition using solar power.",strength_mult:1.4,defense_mult:1.4,agility_mult:1.4,factions:[f.a.KuaiGongInternational]}),new a.a({name:r.a.Neurolink,repCost:875e3,moneyCost:4375e6,info:`A brain implant that provides a high-bandwidth, direct neural link between your mind and the ${f.a.BitRunners}' data servers, which reportedly contain the largest database of hacking tools and information in the world.`,hacking_mult:1.15,hacking_exp_mult:1.2,hacking_chance_mult:1.1,hacking_speed_mult:1.05,programs:[o.a.FTPCrackProgram.name,o.a.RelaySMTPProgram.name],factions:[f.a.BitRunners]}),new a.a({name:r.a.TheBlackHand,repCost:1e5,moneyCost:55e7,info:"A highly advanced bionic hand. This prosthetic not only enhances strength and dexterity but it is also embedded with hardware and firmware that lets the user connect to, access, and hack devices and machines by just touching them.",strength_mult:1.15,dexterity_mult:1.15,hacking_mult:1.1,hacking_speed_mult:1.02,hacking_money_mult:1.1,factions:[f.a.TheBlackHand]}),new a.a({name:r.a.CRTX42AA,repCost:45e3,moneyCost:225e6,info:"The CRTX42-AA gene is injected into the genome. The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal cortex and improves cognitive abilities.",hacking_mult:1.08,hacking_exp_mult:1.15,factions:[f.a.NiteSec]}),new a.a({name:r.a.Neuregen,repCost:37500,moneyCost:375e6,info:"A drug that genetically modifies the neurons in the brain resulting in neurons that never die, continuously regenerate, and strengthen themselves.",hacking_exp_mult:1.4,factions:[f.a.Chongqing]}),new a.a({name:r.a.CashRoot,repCost:12500,moneyCost:125e6,info:c.a.createElement(c.a.Fragment,null,"A collection of digital assets saved on a small chip. The chip is implanted into your wrist. A small jack in the chip allows you to connect it to a computer and upload the assets."),startingMoney:1e6,programs:[o.a.BruteSSHProgram.name],factions:[f.a.Sector12]}),new a.a({name:r.a.NutriGen,repCost:6250,moneyCost:25e5,info:"A thermo-powered artificial nutrition generator. Endogenously synthesizes glucose, amino acids, and vitamins and redistributes them across the body. The device is powered by the body's naturally wasted energy in the form of heat.",strength_exp_mult:1.2,defense_exp_mult:1.2,dexterity_exp_mult:1.2,agility_exp_mult:1.2,factions:[f.a.NewTokyo]}),new a.a({name:r.a.PCMatrix,repCost:1e5,moneyCost:2e9,info:"A 'Probability Computation Matrix' is installed in the frontal cortex. This implant uses advanced mathematical algorithims to rapidly identify and compute statistical outcomes of nearly every situation.",charisma_mult:1.0777,charisma_exp_mult:1.0777,work_money_mult:1.777,faction_rep_mult:1.0777,company_rep_mult:1.0777,crime_success_mult:1.0777,crime_money_mult:1.0777,programs:[o.a.DeepscanV1.name,o.a.AutoLink.name],factions:[f.a.Aevum]}),new a.a({name:r.a.INFRARet,repCost:7500,moneyCost:3e7,info:"A tiny chip that sits behind the retinae. This implant lets the user visually detect infrared radiation.",crime_success_mult:1.25,crime_money_mult:1.1,dexterity_mult:1.1,factions:[f.a.Ishima]}),new a.a({name:r.a.DermaForce,repCost:15e3,moneyCost:5e7,info:"Synthetic skin that is grafted onto the body. This skin consists of millions of nanobots capable of projecting high-density muon beams, creating an energy barrier around the user.",defense_mult:1.4,factions:[f.a.Volhaven]}),new a.a({name:r.a.GrapheneBrachiBlades,repCost:225e3,moneyCost:25e8,info:"An upgrade to the BrachiBlades augmentation. It infuses the retractable blades with an advanced graphene material making them stronger and lighter.",prereqs:[r.a.BrachiBlades],strength_mult:1.4,defense_mult:1.4,crime_success_mult:1.1,crime_money_mult:1.3,factions:[f.a.SpeakersForTheDead]}),new a.a({name:r.a.GrapheneBionicArms,repCost:5e5,moneyCost:375e7,info:"An upgrade to the Bionic Arms augmentation. It infuses the prosthetic arms with an advanced graphene material to make them stronger and lighter.",prereqs:[r.a.BionicArms],strength_mult:1.85,dexterity_mult:1.85,factions:[f.a.TheDarkArmy]}),new a.a({name:r.a.BrachiBlades,repCost:12500,moneyCost:9e7,info:"A set of retractable plasteel blades that are implanted in the arm, underneath the skin.",strength_mult:1.15,defense_mult:1.15,crime_success_mult:1.1,crime_money_mult:1.15,factions:[f.a.TheSyndicate]}),new a.a({name:r.a.BionicArms,repCost:62500,moneyCost:275e6,info:"Cybernetic arms created from plasteel and carbon fibers that completely replace the user's organic arms.",strength_mult:1.3,dexterity_mult:1.3,factions:[f.a.Tetrads]}),new a.a({name:r.a.SNA,repCost:6250,moneyCost:3e7,info:"A cranial implant that affects the user's personality, making them better at negotiation in social situations.",work_money_mult:1.1,company_rep_mult:1.15,faction_rep_mult:1.15,factions:[f.a.TianDiHui]}),new a.a({name:r.a.NeuroreceptorManager,repCost:75e3,moneyCost:55e7,info:"A brain implant carefully assembled around the synapses, which micromanages the activity and levels of various neuroreceptor chemicals and modulates electrical activity to optimize concentration, allowing the user to multitask much more effectively.",stats:c.a.createElement(c.a.Fragment,null,"This augmentation removes the penalty for not focusing on actions such as working in a job or working for a faction."),factions:[f.a.TianDiHui]}),new a.a({name:r.a.CongruityImplant,repCost:1/0,moneyCost:5e13,info:c.a.createElement(c.a.Fragment,null,"Developed by a pioneer in Grafting research, this implant generates pulses of stability which seem to have a nullifying effect versus the Entropy virus.",c.a.createElement("br",null),c.a.createElement("br",null),c.a.createElement("b",null,"Note:")," For unknown reasons, the lowercase ",c.a.createElement("code",null,"n")," appears to be an integral component to its functionality."),stats:c.a.createElement(c.a.Fragment,null,"This Augmentation removes the Entropy virus, and prevents it from affecting you again."),factions:[]})],m=()=>[new a.a({name:r.a.EsperEyewear,repCost:1250,moneyCost:165e6,info:"Ballistic-grade protective and retractable eyewear that was designed specifically for Bladeburner units. This is implanted by installing a mechanical frame in the skull's orbit. This frame interfaces with the brain and allows the user to automatically extrude and extract the eyewear. The eyewear protects against debris, shrapnel, lasers, blinding flashes, and gas. It is also embedded with a data processing chip that can be programmed to display an AR HUD to assist the user in field missions.",bladeburner_success_chance_mult:1.03,dexterity_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.EMS4Recombination,repCost:2500,moneyCost:275e6,info:"A DNA recombination of the EMS-4 Gene. This genetic engineering technique was originally used on Bladeburners during the Synthoid uprising to induce wakefulness and concentration, suppress fear, reduce empathy, improve reflexes, and improve memory among other things.",bladeburner_success_chance_mult:1.03,bladeburner_analysis_mult:1.05,bladeburner_stamina_gain_mult:1.02,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.OrionShoulder,repCost:6250,moneyCost:55e7,info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, the ORION-MKIV shoulder enhances the strength and dexterity of the user's right arm. It also provides protection due to its crystallized graphene plating.",defense_mult:1.05,strength_mult:1.05,dexterity_mult:1.05,bladeburner_success_chance_mult:1.04,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.HyperionV1,repCost:12500,moneyCost:275e7,info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable of rapidly firing bolts of high-density plasma. The weapon is meant to be used against augmented enemies as the ionized nature of the plasma disrupts the electrical systems of Augmentations. However, it can also be effective against non-augmented enemies due to its high temperature and concussive force.",bladeburner_success_chance_mult:1.06,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.HyperionV2,repCost:25e3,moneyCost:55e8,info:"A pair of mini plasma cannons embedded into the hands. This augmentation is more advanced and powerful than the original V1 model. This V2 model is more power-efficient, more accurate, and can fire plasma bolts at a much higher velocity than the V1 model.",prereqs:[r.a.HyperionV1],bladeburner_success_chance_mult:1.08,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.GolemSerum,repCost:31250,moneyCost:11e9,info:"A serum that permanently enhances many aspects of human capabilities, including strength, speed, immune system enhancements, and mitochondrial efficiency. The serum was originally developed by the Chinese military in an attempt to create super soldiers.",strength_mult:1.07,defense_mult:1.07,dexterity_mult:1.07,agility_mult:1.07,bladeburner_stamina_gain_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.VangelisVirus,repCost:18750,moneyCost:275e7,info:"A synthetic symbiotic virus that is injected into human brain tissue. The Vangelis virus heightens the senses and focus of its host, and also enhances its intuition.",dexterity_exp_mult:1.1,bladeburner_analysis_mult:1.1,bladeburner_success_chance_mult:1.04,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.VangelisVirus3,repCost:37500,moneyCost:11e9,info:"An improved version of Vangelis, a synthetic symbiotic virus that is injected into human brain tissue. On top of the benefits of the original virus, this also grants an accelerated healing factor and enhanced reflexes.",prereqs:[r.a.VangelisVirus],defense_exp_mult:1.1,dexterity_exp_mult:1.1,bladeburner_analysis_mult:1.15,bladeburner_success_chance_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.INTERLINKED,repCost:25e3,moneyCost:55e8,info:"The DNA is genetically modified to enhance the human's body extracellular matrix (ECM). This improves the ECM's ability to structurally support the body and grants heightened strength and durability.",strength_exp_mult:1.05,defense_exp_mult:1.05,dexterity_exp_mult:1.05,agility_exp_mult:1.05,bladeburner_max_stamina_mult:1.1,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeRunner,repCost:2e4,moneyCost:825e7,info:`A cybernetic foot augmentation that was specifically created for ${f.a.Bladeburners} during the Synthoid Uprising. The organic musculature of the human foot is enhanced with flexible carbon nanotube matrices that are controlled by intelligent servo-motors.`,agility_mult:1.05,bladeburner_max_stamina_mult:1.05,bladeburner_stamina_gain_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmor,repCost:12500,moneyCost:1375e6,info:`A powered exoskeleton suit designed as armor for ${f.a.Bladeburners} units. This exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, concussive, thermal, chemical, and electric trauma. It also enhances the user's physical abilities.`,strength_mult:1.04,defense_mult:1.04,dexterity_mult:1.04,agility_mult:1.04,bladeburner_stamina_gain_mult:1.02,bladeburner_success_chance_mult:1.03,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorPowerCells,repCost:18750,moneyCost:275e7,info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of more efficiently storing and using power.",prereqs:[r.a.BladeArmor],bladeburner_success_chance_mult:1.05,bladeburner_stamina_gain_mult:1.02,bladeburner_max_stamina_mult:1.05,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorEnergyShielding,repCost:21250,moneyCost:55e8,info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system that is capable of projecting an energy shielding force field.",prereqs:[r.a.BladeArmor],defense_mult:1.05,bladeburner_success_chance_mult:1.06,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorUnibeam,repCost:31250,moneyCost:165e8,info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser weapon. It's precision and accuracy makes it useful for quickly neutralizing threats while keeping casualties to a minimum.",prereqs:[r.a.BladeArmor],bladeburner_success_chance_mult:1.08,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorOmnibeam,repCost:62500,moneyCost:275e8,info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use a multiple-fiber system. This upgraded weapon uses multiple fiber laser modules that combine together to form a single, more powerful beam of up to 2000MW.",prereqs:[r.a.BladeArmorUnibeam],bladeburner_success_chance_mult:1.1,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladeArmorIPU,repCost:15e3,moneyCost:11e8,info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing Unit that was specially designed to analyze Synthoid related data and information.",prereqs:[r.a.BladeArmor],bladeburner_analysis_mult:1.15,bladeburner_success_chance_mult:1.02,isSpecial:!0,factions:[f.a.Bladeburners]}),new a.a({name:r.a.BladesSimulacrum,repCost:1250,moneyCost:15e10,info:"A highly-advanced matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation allows the user to project and control a holographic simulacrum within an extremely large radius. These specially-modified holograms were specifically weaponized by Bladeburner units to be used against Synthoids.",stats:c.a.createElement(c.a.Fragment,null,"This augmentation allows you to perform Bladeburner actions and other actions (such as working, commiting crimes, etc.) at the same time."),isSpecial:!0,factions:[f.a.Bladeburners]})],h=()=>[new a.a({name:r.a.StaneksGift1,repCost:0,moneyCost:0,info:'Allison "Mother" Stanek imparts you with her gift. An experimental Augmentation implanted at the base of the neck. It allows you to overclock your entire system by carefully changing the configuration.',isSpecial:!0,hacking_chance_mult:.9,hacking_speed_mult:.9,hacking_money_mult:.9,hacking_grow_mult:.9,hacking_mult:.9,strength_mult:.9,defense_mult:.9,dexterity_mult:.9,agility_mult:.9,charisma_mult:.9,hacking_exp_mult:.9,strength_exp_mult:.9,defense_exp_mult:.9,dexterity_exp_mult:.9,agility_exp_mult:.9,charisma_exp_mult:.9,company_rep_mult:.9,faction_rep_mult:.9,crime_money_mult:.9,crime_success_mult:.9,hacknet_node_money_mult:.9,hacknet_node_purchase_cost_mult:1.1,hacknet_node_ram_cost_mult:1.1,hacknet_node_core_cost_mult:1.1,hacknet_node_level_cost_mult:1.1,work_money_mult:.9,stats:c.a.createElement(c.a.Fragment,null,"Its unstable nature decreases all your stats by 10%"),factions:[f.a.ChurchOfTheMachineGod]}),new a.a({name:r.a.StaneksGift2,repCost:1e6,moneyCost:0,info:"The next evolution is near, a coming together of man and machine. A synthesis greater than the birth of the human organism. Time spent with the gift has allowed for acclimatization of the invasive augment and the toll it takes upon your frame granting lesser penalty of 5% to all stats.",prereqs:[r.a.StaneksGift1],isSpecial:!0,hacking_chance_mult:.95/.9,hacking_speed_mult:.95/.9,hacking_money_mult:.95/.9,hacking_grow_mult:.95/.9,hacking_mult:.95/.9,strength_mult:.95/.9,defense_mult:.95/.9,dexterity_mult:.95/.9,agility_mult:.95/.9,charisma_mult:.95/.9,hacking_exp_mult:.95/.9,strength_exp_mult:.95/.9,defense_exp_mult:.95/.9,dexterity_exp_mult:.95/.9,agility_exp_mult:.95/.9,charisma_exp_mult:.95/.9,company_rep_mult:.95/.9,faction_rep_mult:.95/.9,crime_money_mult:.95/.9,crime_success_mult:.95/.9,hacknet_node_money_mult:.95/.9,hacknet_node_purchase_cost_mult:1.05/1.1,hacknet_node_ram_cost_mult:1.05/1.1,hacknet_node_core_cost_mult:1.05/1.1,hacknet_node_level_cost_mult:1.05/1.1,work_money_mult:.95/.9,stats:c.a.createElement(c.a.Fragment,null,"The penalty for the gift is reduced to 5%"),factions:[f.a.ChurchOfTheMachineGod]}),new a.a({name:r.a.StaneksGift3,repCost:1e8,moneyCost:0,info:"The synthesis of human and machine is nothing to fear. It is our destiny. You will become greater than the sum of our parts. As One. Embrace your gift fully and wholly free of it's accursed toll. Serenity brings tranquility the form of no longer suffering a stat penalty. ",prereqs:[r.a.StaneksGift2],isSpecial:!0,hacking_chance_mult:1/.95,hacking_speed_mult:1/.95,hacking_money_mult:1/.95,hacking_grow_mult:1/.95,hacking_mult:1/.95,strength_mult:1/.95,defense_mult:1/.95,dexterity_mult:1/.95,agility_mult:1/.95,charisma_mult:1/.95,hacking_exp_mult:1/.95,strength_exp_mult:1/.95,defense_exp_mult:1/.95,dexterity_exp_mult:1/.95,agility_exp_mult:1/.95,charisma_exp_mult:1/.95,company_rep_mult:1/.95,faction_rep_mult:1/.95,crime_money_mult:1/.95,crime_success_mult:1/.95,hacknet_node_money_mult:1/.95,hacknet_node_purchase_cost_mult:1/1.05,hacknet_node_ram_cost_mult:1/1.05,hacknet_node_core_cost_mult:1/1.05,hacknet_node_level_cost_mult:1/1.05,work_money_mult:1/.95,stats:c.a.createElement(c.a.Fragment,null,"Stanek's Gift has no penalty."),factions:[f.a.ChurchOfTheMachineGod]})];function d(){return new a.a({name:r.a.NeuroFluxGovernor,repCost:500,moneyCost:75e4,info:"A device that is embedded in the back of the neck. The NeuroFlux Governor monitors and regulates nervous impulses coming to and from the spinal column, essentially 'governing' the body. By doing so, it improves the functionality of the body's nervous system.",stats:c.a.createElement(c.a.Fragment,null,"This special augmentation can be leveled up infinitely. Each level of this augmentation increases MOST multipliers by 1%, stacking multiplicatively."),hacking_chance_mult:1.01,hacking_speed_mult:1.01,hacking_money_mult:1.01,hacking_grow_mult:1.01,hacking_mult:1.01,strength_mult:1.01,defense_mult:1.01,dexterity_mult:1.01,agility_mult:1.01,charisma_mult:1.01,hacking_exp_mult:1.01,strength_exp_mult:1.01,defense_exp_mult:1.01,dexterity_exp_mult:1.01,agility_exp_mult:1.01,charisma_exp_mult:1.01,company_rep_mult:1.01,faction_rep_mult:1.01,crime_money_mult:1.01,crime_success_mult:1.01,hacknet_node_money_mult:1.01,hacknet_node_purchase_cost_mult:.99,hacknet_node_ram_cost_mult:.99,hacknet_node_core_cost_mult:.99,hacknet_node_level_cost_mult:.99,work_money_mult:1.01,factions:Object.values(f.a)})}function p(){const t=function(){const t=[{bonuses:{hacking_chance_mult:1.25,hacking_speed_mult:1.1,hacking_money_mult:1.25,hacking_grow_mult:1.1},description:"Increases the player's hacking chance by 25%.
Increases the player's hacking speed by 10%.
Increases the amount of money the player's gains from hacking by 25%.
Improves grow() by 10%."},{bonuses:{hacking_mult:1.15,hacking_exp_mult:2},description:"Increases the player's hacking skill by 15%.
Increases the player's hacking experience gain rate by 100%."},{bonuses:{strength_mult:1.25,strength_exp_mult:2,defense_mult:1.25,defense_exp_mult:2,dexterity_mult:1.25,dexterity_exp_mult:2,agility_mult:1.25,agility_exp_mult:2},description:"Increases all of the player's combat stats by 25%.
Increases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma_mult:1.5,charisma_exp_mult:2},description:"This augmentation increases the player's charisma by 50%.
Increases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money_mult:1.2,hacknet_node_purchase_cost_mult:.85,hacknet_node_ram_cost_mult:.85,hacknet_node_core_cost_mult:.85,hacknet_node_level_cost_mult:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%.
Decreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep_mult:1.25,faction_rep_mult:1.15,work_money_mult:1.7},description:"Increases the amount of money the player gains from working by 70%.
Increases the amount of reputation the player gains when working for a company by 25%.
Increases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success_mult:2,crime_money_mult:2},description:"Increases the player's crime success rate by 100%.
Increases the amount of money the player gains from crimes by 100%."}],e=new s.c(Math.floor(i.a.lastUpdate/36e5));for(let t=0;t<5;t++)e.step();return t[Math.floor(t.length*e.random())]}(),e={name:r.a.UnstableCircadianModulator,moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm.",factions:[f.a.SpeakersForTheDead]};return Object.keys(t.bonuses).forEach(n=>e[n]=t.bonuses[n]),new a.a(e)}},,,,,,,,,,,,,,,,,,,,,,,,,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return checkInfiniteLoop})),__webpack_require__.d(__webpack_exports__,"a",(function(){return calculateRamUsage}));var acorn_walk__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(300),acorn__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(252),_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(323),_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(34),_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(81);const specialReferenceIF="__SPECIAL_referenceIf",specialReferenceFOR="__SPECIAL_referenceFor",specialReferenceWHILE="__SPECIAL_referenceWhile",memCheckGlobalKey=".__GLOBAL__";async function parseOnlyRamCalculate(player,otherScripts,code,workerScript){try{let dependencyMap={};const completedParses=new Set,parseQueue=[];function parseCode(t,e){const n=parseOnlyCalculateDeps(t,e);completedParses.add(e);for(let t=0;t0;){const nextModule=parseQueue.shift();if(void 0===nextModule)throw new Error("nextModule should not be undefined");let code;if(nextModule.startsWith("https://")||nextModule.startsWith("http://"))try{const module=await eval("import(nextModule)");code="";for(const t in module)"function"==typeof module[t]&&(code+=module[t].toString()+";\n")}catch(t){return console.error(`Error dynamically importing module from ${nextModule} for RAM calculations: ${t}`),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.URLImportError}}else{if(!Array.isArray(otherScripts))return console.warn("parseOnlyRamCalculate() not called with array of scripts"),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.ImportError};let t=null;const e=nextModule.startsWith("./")?nextModule.slice(2):nextModule;for(const n of otherScripts)if(Object(_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__.b)(n.filename,e)){t=n;break}if(null==t)return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.ImportError};code=t.code}parseCode(code,nextModule)}let ram=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptBaseRamCost;const detailedCosts=[{type:"misc",name:"baseCost",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptBaseRamCost}],unresolvedRefs=Object.keys(dependencyMap).filter(t=>t.startsWith(initialModule)),resolvedRefs=new Set;for(;unresolvedRefs.length>0;){const t=unresolvedRefs.shift();if(void 0===t)throw new Error("ref should not be undefined");if("hacknet"!==t||resolvedRefs.has("hacknet")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptHacknetNodesRamCost,detailedCosts.push({type:"ns",name:"hacknet",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptHacknetNodesRamCost})),"document"!==t||resolvedRefs.has("document")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost,detailedCosts.push({type:"dom",name:"document",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost})),"window"!==t||resolvedRefs.has("window")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost,detailedCosts.push({type:"dom",name:"window",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptDomRamCost})),"corporation"!==t||resolvedRefs.has("corporation")||(ram+=_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptCorporationRamCost,detailedCosts.push({type:"ns",name:"corporation",cost:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.a.ScriptCorporationRamCost})),resolvedRefs.add(t),t.endsWith(".*")){const e=t.slice(0,t.length-2);for(const t of Object.keys(dependencyMap).filter(t=>t.startsWith(e)))for(const e of dependencyMap[t]||[])resolvedRefs.has(e)||unresolvedRefs.push(e)}else for(const e of dependencyMap[t]||[])resolvedRefs.has(e)||unresolvedRefs.push(e);try{function applyFuncRam(t){return"number"==typeof t?t:"function"==typeof t?t(player):0}if(workerScript.loadedFns[t])continue;let e;workerScript.loadedFns[t]=!0;let n="n/a";t in workerScript.env.vars.bladeburner?(e=workerScript.env.vars.bladeburner[t],n="bladeburner."+t):t in workerScript.env.vars.codingcontract?(e=workerScript.env.vars.codingcontract[t],n="codingcontract."+t):t in workerScript.env.vars.stanek?(e=workerScript.env.vars.stanek[t],n="stanek."+t):t in workerScript.env.vars.gang?(e=workerScript.env.vars.gang[t],n="gang."+t):t in workerScript.env.vars.sleeve?(e=workerScript.env.vars.sleeve[t],n="sleeve."+t):t in workerScript.env.vars.stock?(e=workerScript.env.vars.stock[t],n="stock."+t):t in workerScript.env.vars.ui?(e=workerScript.env.vars.ui[t],n="ui."+t):t in workerScript.env.vars.grafting?(e=workerScript.env.vars.grafting[t],n="grafting."+t):(e=workerScript.env.vars[t],n=""+t);const a=applyFuncRam(e);ram+=a,detailedCosts.push({type:"fn",name:n,cost:a})}catch(t){continue}}return{cost:ram,entries:detailedCosts.filter(t=>t.cost>0)}}catch(t){return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}}function checkInfiniteLoop(t){const e=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(t,{sourceType:"module",ecmaVersion:"latest"});let n=-1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(e,{},{WhileStatement:(e,a,r)=>{!function(t){return"Literal"===t.type&&"true"===t.raw}(e.test)||function(t){let e=!1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(t,{},{AwaitExpression:()=>{e=!0}}),e}(e)?e.body&&r(e.body,a):n=(t.slice(0,e.start).match(/\n/g)||[]).length+1}}),n}function parseOnlyCalculateDeps(t,e){const n=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(t,{sourceType:"module",ecmaVersion:"latest"}),a=e+memCheckGlobalKey,r={};r[a]=new Set;const i={},o=[];function s(t,n){const a=r[t]||(r[t]=new Set),o=i[n];void 0!==o&&a.add(o),a.add(e+"."+n),a.add(n)}const l=Object.getOwnPropertyNames(Object.prototype);function c(){return{Identifier:(t,e)=>{l.includes(t.name)||s(e.key,t.name)},WhileStatement:(t,e,n)=>{s(e.key,specialReferenceWHILE),t.test&&n(t.test,e),t.body&&n(t.body,e)},DoWhileStatement:(t,e,n)=>{s(e.key,specialReferenceWHILE),t.test&&n(t.test,e),t.body&&n(t.body,e)},ForStatement:(t,e,n)=>{s(e.key,specialReferenceFOR),t.init&&n(t.init,e),t.test&&n(t.test,e),t.update&&n(t.update,e),t.body&&n(t.body,e)},IfStatement:(t,e,n)=>{s(e.key,specialReferenceIF),t.test&&n(t.test,e),t.consequent&&n(t.consequent,e),t.alternate&&n(t.alternate,e)},MemberExpression:(t,e,n)=>{t.object&&n(t.object,e),t.property&&n(t.property,e)}}}return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(n,{key:a},Object.assign({ImportDeclaration:(t,e)=>{const n=t.source.value;o.push(n);const a=r[e.key];if(void 0===a)throw new Error("set should not be undefined");a.add(n+memCheckGlobalKey);for(let a=0;a{const n=e+"."+(null===t.id?"__SPECIAL_DEFAULT_EXPORT__":t.id.name);acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(t,{key:n},c())}},c())),{dependencyMap:r,additionalModules:o}}async function calculateRamUsage(t,e,n){const a={loadedFns:{},env:{vars:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.b}};try{return await parseOnlyRamCalculate(t,n,e,a)}catch(t){return console.error("Failed to parse script for RAM calculations:"),console.error(t),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}}},function(t,e,n){"use strict";function a(t){return+(Math.round(parseFloat(t+"e+2"))+"e-2")}n.d(e,"a",(function(){return a}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return p}));var a=n(204),r=n(28),i=n(15),o=n(24),s=n(267),l=n(33),c=n(250),f=n(9),u=n(238),m=n(82),h=n(1008),d=n(1010);class p{constructor(t="",e=!1){this.facName=t,this.members=[],this.wanted=1,this.respect=1,this.isHackingGang=e,this.respectGainRate=0,this.wantedGainRate=0,this.moneyGainRate=0,this.storedCycles=0,this.storedTerritoryAndPowerCycles=0,this.territoryClashChance=0,this.territoryWarfareEngaged=!1,this.notifyMemberDeath=!0}getPower(){return m.a[this.facName].power}getTerritory(){return m.a[this.facName].territory}process(t=1,e){const n=1e3/f.a._idleSpeed;if(isNaN(t)&&console.error("NaN passed into Gang.process(): "+t),this.storedCycles+=t,this.storedCycles<2*n)return;const a=Math.min(this.storedCycles,5*n);try{this.processGains(a,e),this.processExperienceGains(a),this.processTerritoryAndPowerGains(a),this.storedCycles-=a}catch(t){console.error("Exception caught when processing Gang: "+t)}}processGains(t=1,e){let n=0,o=0,s=0,l=0;for(let t=0;te&&(n=1),this.wanted=n,this.wanted<1&&(this.wanted=1)}e.gainMoney(n*t,"gang")}processTerritoryAndPowerGains(t=1){if(this.storedTerritoryAndPowerCycles+=t,this.storedTerritoryAndPowerCycles0&&(this.territoryClashChance=Math.max(0,this.territoryClashChance-.01));const n=c.a.Names.filter(t=>m.a[t].territory>0||t===e);if(n.length>1)for(let t=0;te!==n[t]),i=Object(l.a)(0,r.length-1),o=n[t],s=r[i];if(!(o!==e&&s!==e||Math.random()t.territory).reduce((t,e)=>t+e,0);Object.values(m.a).forEach(t=>t.territory/=u)}}processExperienceGains(t=1){for(let e=0;e=0;--t){const n=this.members[t];if("Territory Warfare"!==n.task)continue;const a=e/Math.pow(n.def,.6);Math.random()=c.a.MaximumGangMembers)&&this.respect>=this.getRespectNeededToRecruitMember()}getRespectNeededToRecruitMember(){if(this.members.length<3)return 0;const t=this.members.length-2;return Math.pow(5,t)}recruitMember(t){if(""===(t=String(t))||!this.canRecruitMember())return!1;if(this.members.filter(e=>e.name===t).length>=1)return!1;const e=new h.a(t);return this.members.push(e),!0}getWantedPenalty(){return this.respect/(this.respect+this.wanted)}calculatePower(){let t=0;for(let e=0;e"Ascended Gang member "+t.name),n}catch(t){throw null==e&&Object(s.a)(t),t}}getDiscount(){const t=this.getPower(),e=this.respect,n=Math.pow(e,.01)+e/5e6+Math.pow(t,.01)+t/1e6-1;return Math.max(1,n)}getAllTaskNames(){return Object.keys(u.a).filter(t=>{const e=u.a[t];return null!=e&&("Unassigned"!==e.name&&(this.isHackingGang===e.isHacking||!this.isHackingGang===e.isCombat))})}getUpgradeCost(t){return null==t?1/0:t.cost/this.getDiscount()}toJSON(){return Object(o.b)("Gang",this)}static fromJSON(t){return Object(o.a)(p,t.data)}}o.c.constructors.Gang=p},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var a=n(182);let r=1;function i(){let t=r,e=!1;for(let n=0;n<1e6;){if(!a.a.has(t+n)){e=!0,t+=n;break}n===Number.MAX_SAFE_INTEGER-1?n=1:++n}return e?(r=t+1,r>=Number.MAX_SAFE_INTEGER&&(r=1),t):-1}function o(){r=1}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return at}));var a=n(409),r=n(34),i=n(292),o=n(7),s=n(9),l=n(100),c=n(469),f=n(92),u=n(88),m=n(2),h=n(65),d=n(251),p=n(229),g=n(99),y=n(395),b=n(25),E=n(133),v=n(220),k=n(46),_=n(79),w=n(518),S=n(81),C=n(221),x=n(193),L=n(144),O=n(182),M=n(108),T=n(5),A=n(23),R=n(181),N=n(253),P=n(147),I=n(1020),F=n(1021),D=n(1022),j=n(1024),B=n(1025),G=n(1027),W=n(1028),H=n(1029),U=n(1031),q=n(1036),$=n(1037),K=n(1038),z=n(1389),V=n(628),Y=n(15),J=n(143),X=n(627),Q=n(281),Z=n(406),tt=n(451),et=n(16),nt=n(1390);function at(e){const n=function(t,n){if(e.dynamicLoadedFns[t])return;e.dynamicLoadedFns[t]=!0;let a=e.scriptRef.threads;if("number"!=typeof a&&(console.warn(`WorkerScript detected NaN for threadcount for ${e.name} on ${e.hostname}`),a=1),e.dynamicRamUsage+=n,e.dynamicRamUsage>1.01*e.ramUsage)throw Object(M.b)(e,`Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${t}.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${a}\n Dynamic RAM Usage: ${T.a.formatRAM(e.dynamicRamUsage)}\n Static RAM Usage: ${T.a.formatRAM(e.ramUsage)}\n\n One of these could be the reason:\n * Using eval() to get a reference to a ns function\n   const myScan = eval('ns.scan');\n\n * Using map access to do the same\n   const myScan = ns['scan'];\n\n Sorry :(`)},rt=function(t,e){const n=Object(b.d)(t);if(null==n)throw ft(e,"Invalid hostname: "+t);return n},it=function(t,n,a,r){if("string"==typeof a&&""!==a||(a="getRunningScript"),!Array.isArray(r))throw Object(M.b)(e,`Invalid scriptArgs argument passed into getRunningScript() from ${a}(). This is probably a bug. Please report to game developer`);if(null!=t&&"string"==typeof t){null==n&&(n=e.hostname);const i=rt(n,a);return Object(p.a)(t,r,i)}return e.scriptRef},ot=function(t,e){"string"==typeof e&&""!==e||(e="getRunningScriptgetRunningScriptByPid");for(const e of Object(b.c)()){const n=Object(p.b)(t,e);if(n)return n}return null},st=function(t){return{args:t.args.slice(),filename:t.filename,logs:t.logs.slice(),offlineExpGained:t.offlineExpGained,offlineMoneyMade:t.offlineMoneyMade,offlineRunningTime:t.offlineRunningTime,onlineExpGained:t.onlineExpGained,onlineMoneyMade:t.onlineMoneyMade,onlineRunningTime:t.onlineRunningTime,pid:t.pid,ramUsage:t.ramUsage,server:t.server,threads:t.threads}},lt=function(t,e,n){return Array.isArray(n)||(n=[]),`Cannot find running script ${t} on server ${e} with args: ${Object(N.a)(n)}`},ct=function(t,n=""){return t instanceof f.a&&(e.log(n,()=>"Does not work on Hacknet Servers"),!0)},ft=function(t,n){const a=(new Error).stack;if(void 0===a)throw new Error("how did we not throw an error?");const r=a.split("\n").slice(1),i=e.getServer().scripts,o=[];for(const t of r){let e;for(const n of i){n.url&&t.includes(n.url)&&(e=n.filename);for(const a of n.dependencies)t.includes(a.url)&&(e=a.filename)}if(!e)continue;function s(t){const e=t.match(/.*:(\d+):\d+.*/),n=t.match(/.*at (.+) \(.*/);return e&&n?{line:e[1],func:n[1]}:null}let n={line:"-1",func:"unknown"};const a=s(t);function l(t){const e=t.match(/.*:(\d+):\d+$/),n=t.lastIndexOf("@");return e&&-1!==n?{line:e[1],func:t.slice(0,n)}:null}a&&(n=a);const r=l(t);r&&(n=r),o.push(`${e}:L${n.line}@${n.func}`)}e.log(t,()=>n);let c=`${t}: ${n}`;return 0!==o.length&&(c+="

Stack:
"+o.join("
")),Object(M.b)(e,c)},ut=function(t,n,{threads:a,stock:r}={}){if(void 0===t)throw ft("hack","Takes 1 argument.");const i=Object(M.d)(e,"hack",a),f=rt(t,"hack");if(!(f instanceof k.a))throw ft("hack","Cannot be executed on this server.");const u=Object(l.d)(f,m.a),h=Object(c.b)(f,m.a);if(!h.res)throw ft("hack",h.msg||"");return e.log("hack",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*u,!0)} (t=${T.a.formatThreads(i)})`),Object(M.c)(1e3*u,e).then((function(){const t=Object(l.b)(f,m.a),a=Math.random();let c=Object(l.c)(f,m.a)*i;const u=c/4;if(af.moneyAvailable&&(h=f.moneyAvailable),f.moneyAvailable-=h,f.moneyAvailable<0&&(f.moneyAvailable=0);const d=h*o.a.ScriptHackMoneyGain;return m.a.gainMoney(d,"hacking"),e.scriptRef.onlineMoneyMade+=d,m.a.scriptProdSinceLastAug+=d,e.scriptRef.recordHack(f.hostname,d,i),m.a.gainHackingExp(c),n&&m.a.gainIntelligenceExp(.005),e.scriptRef.onlineExpGained+=c,e.log("hack",()=>`Successfully hacked '${f.hostname}' for ${T.a.formatMoney(d)} and ${T.a.formatExp(c)} exp (t=${T.a.formatThreads(i)})`),f.fortify(s.a.ServerFortifyAmount*Math.min(i,a)),r&&Object(w.c)(f,h),n&&(f.backdoorInstalled=!0),Promise.resolve(d)}return m.a.gainHackingExp(u),e.scriptRef.onlineExpGained+=u,e.log("hack",()=>`Failed to hack '${f.hostname}'. Gained ${T.a.formatExp(u)} exp (t=${T.a.formatThreads(i)})`),Promise.resolve(0)}))},mt=function(t){let e="";for(let n of t)n=Object(V.a)(n),e+="object"==typeof n?JSON.stringify(n):""+n;return e},ht={updateDynamicRam:n,makeRuntimeErrorMsg:ft,string:(t,e,n)=>{if("string"==typeof n)return n;if("number"==typeof n)return n+"";throw ft(t,e+" should be a string.")},number:(t,e,n)=>{if("string"==typeof n){const t=parseFloat(n);if(!isNaN(t))return t}else if("number"==typeof n){if(isNaN(n))throw ft(t,e+" is NaN.");return n}throw ft(t,e+" should be a number.")},boolean:t=>!!t,city:(t,e,n)=>{if("string"!=typeof n)throw ft(t,e+" should be a city name.");const a=n;if(!Object.values(et.a).includes(a))throw ft(t,e+" should be a city name.");return a},getServer:rt,checkSingularityAccess:function(t){if(4!==m.a.bitNodeN&&0===m.a.sourceFileLvl(4))throw ft(t,"This singularity function requires Source-File 4 to run. A power up you obtain later in the game. It will be very obvious when and how you can obtain it.")},hack:ut,getValidPort:(t,e)=>{if(isNaN(e))throw ft(t,`Invalid argument. Must be a port number between 1 and ${s.a.NumNetscriptPorts}, is ${e}`);if((e=Math.round(e))<1||e>s.a.NumNetscriptPorts)throw ft(t,`Trying to use an invalid port: ${e}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const n=x.a[e-1];if(null==n||!(n instanceof Object))throw ft(t,`Could not find port: ${e}. This is a bug. Report to dev.`);return n}},dt=Object(I.a)(m.a,e,ht),pt=Object(F.a)(m.a,e,ht),gt=Object(D.a)(m.a,e,ht),yt=Object(j.a)(m.a,e,ht),bt=Object(nt.a)(ht,{},e,Object(B.a)(m.a,e,ht),"stanek").stanek,Et=Object(W.a)(m.a,e,ht),vt=Object(H.a)(m.a,e,ht),kt=Object(U.a)(m.a,e,ht),_t=Object(q.a)(m.a,e,ht),wt=Object(z.a)(m.a,e,ht),St=Object($.a)(m.a,e,ht),Ct=Object(G.a)(m.a,e,ht),xt=Object(K.a)(m.a,e,ht),Lt={...{...wt,singularity:wt,gang:dt,bladeburner:Et,codingcontract:vt,sleeve:pt,corporation:kt,stanek:bt,ui:Ct,formulas:_t,stock:St,grafting:xt,args:e.args,hacknet:yt,sprintf:a.sprintf,vsprintf:a.vsprintf,scan:function(t=e.hostname){n("scan",Object(r.c)(m.a,"scan"));const a=ht.string("scan","hostname",t),i=rt(a,"scan"),o=[];for(let t=0;t`returned ${i.serversOnNetwork.length} connections for ${i.hostname}`),o},hack:function(t,{threads:e,stock:a}={}){n("hack",Object(r.c)(m.a,"hack"));const i=ht.string("hack","hostname",t);return ut(i,!1,{threads:e,stock:a})},hackAnalyzeThreads:function(t,a){n("hackAnalyzeThreads",Object(r.c)(m.a,"hackAnalyzeThreads"));const i=ht.string("hackAnalyzeThreads","hostname",t),o=ht.number("hackAnalyzeThreads","hackAmount",a),s=rt(i,"hackAnalyzeThreads");if(!(s instanceof k.a))return e.log("hackAnalyzeThreads",()=>"Cannot be executed on this server."),-1;if(isNaN(o))throw ft("hackAnalyzeThreads",`Invalid hackAmount argument passed into hackAnalyzeThreads: ${o}. Must be numeric.`);if(o<0||o>s.moneyAvailable)return-1;if(0===o)return 0;const c=Object(l.e)(s,m.a);return 0===c||0===s.moneyAvailable?0:o/Math.floor(s.moneyAvailable*c)},hackAnalyze:function(t){n("hackAnalyze",Object(r.c)(m.a,"hackAnalyze"));const a=ht.string("hackAnalyze","hostname",t),i=rt(a,"hackAnalyze");return i instanceof k.a?Object(l.e)(i,m.a):(e.log("hackAnalyze",()=>"Cannot be executed on this server."),0)},hackAnalyzeSecurity:function(t,a){n("hackAnalyzeSecurity",Object(r.c)(m.a,"hackAnalyzeSecurity"));let i=ht.number("hackAnalyzeSecurity","threads",t);if(a){const t=ht.string("hackAnalyzeSecurity","hostname",a),n=rt(t,"hackAnalyze");if(!(n instanceof k.a))return e.log("hackAnalyzeSecurity",()=>"Cannot be executed on this server."),0;const r=Object(l.e)(n,m.a);r>0&&(i=Math.ceil(1/r))}return s.a.ServerFortifyAmount*i},hackAnalyzeChance:function(t){n("hackAnalyzeChance",Object(r.c)(m.a,"hackAnalyzeChance"));const a=ht.string("hackAnalyzeChance","hostname",t),i=rt(a,"hackAnalyzeChance");return i instanceof k.a?Object(l.b)(i,m.a):(e.log("hackAnalyzeChance",()=>"Cannot be executed on this server."),0)},sleep:async function(t=0){n("sleep",Object(r.c)(m.a,"sleep"));const a=ht.number("sleep","time",t);if(void 0===a)throw ft("sleep","Takes 1 argument.");return e.log("sleep",()=>`Sleeping for ${a} milliseconds`),Object(M.c)(a,e).then((function(){return Promise.resolve(!0)}))},asleep:function(t=0){n("asleep",Object(r.c)(m.a,"asleep"));const a=ht.number("asleep","time",t);if(void 0===a)throw ft("asleep","Takes 1 argument.");return e.log("asleep",()=>`Sleeping for ${a} milliseconds`),new Promise(t=>setTimeout(()=>t(!0),a))},grow:async function(t,{threads:a,stock:i}={}){n("grow",Object(r.c)(m.a,"grow"));const o=ht.string("grow","hostname",t),s=Object(M.d)(e,"grow",null!=a?a:e.scriptRef.threads);if(void 0===o)throw ft("grow","Takes 1 argument.");const f=rt(o,"grow");if(!(f instanceof k.a))return e.log("grow",()=>"Cannot be executed on this server."),Promise.resolve(0);const u=Object(b.d)(e.hostname);if(null===u)throw new Error("Workerscript host is null");const h=Object(c.a)(f);if(!h.res)throw ft("grow",h.msg||"");const d=Object(l.a)(f,m.a);return e.log("grow",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*d,!0)} (t=${T.a.formatThreads(s)}).`),Object(M.c)(1e3*d,e).then((function(){const t=f.moneyAvailable<=0?1:f.moneyAvailable;Object(E.e)(f,s,m.a,u.cpuCores);const n=f.moneyAvailable;e.scriptRef.recordGrow(f.hostname,s);const a=Object(l.c)(f,m.a)*s,r=n/t-1;return e.log("grow",()=>`Available money on '${f.hostname}' grown by ${T.a.formatPercentage(r,6)}. Gained ${T.a.formatExp(a)} hacking exp (t=${T.a.formatThreads(s)}).`),e.scriptRef.onlineExpGained+=a,m.a.gainHackingExp(a),i&&Object(w.b)(f,n-t),Promise.resolve(n/t)}))},growthAnalyze:function(t,a,i=1){n("growthAnalyze",Object(r.c)(m.a,"growthAnalyze"));const o=ht.string("growthAnalyze","hostname",t),s=ht.number("growthAnalyze","growth",a),l=ht.number("growthAnalyze","cores",i),c=rt(o,"growthAnalyze");if(!(c instanceof k.a))return e.log("growthAnalyze",()=>"Cannot be executed on this server."),0;if("number"!=typeof s||isNaN(s)||s<1||!isFinite(s))throw ft("growthAnalyze",`Invalid argument: growth must be numeric and >= 1, is ${s}.`);return Object(E.c)(c,Number(s),m.a,l)},growthAnalyzeSecurity:function(t){n("growthAnalyzeSecurity",Object(r.c)(m.a,"growthAnalyzeSecurity"));const e=ht.number("growthAnalyzeSecurity","threads",t);return 2*s.a.ServerFortifyAmount*e},weaken:async function(t,{threads:a}={}){n("weaken",Object(r.c)(m.a,"weaken"));const i=ht.string("weaken","hostname",t),o=Object(M.d)(e,"weaken",null!=a?a:e.scriptRef.threads);if(void 0===i)throw ft("weaken","Takes 1 argument.");const f=rt(i,"weaken");if(!(f instanceof k.a))return e.log("weaken",()=>"Cannot be executed on this server."),Promise.resolve(0);const u=Object(c.c)(f);if(!u.res)throw ft("weaken",u.msg||"");const h=Object(l.f)(f,m.a);return e.log("weaken",()=>`Executing on '${f.hostname}' in ${Object(A.b)(1e3*h,!0)} (t=${T.a.formatThreads(o)})`),Object(M.c)(1e3*h,e).then((function(){const t=Object(b.d)(e.hostname);if(null===t)return e.log("weaken",()=>"Server is null, did it die?"),Promise.resolve(0);const n=1+(t.cpuCores-1)/16;f.weaken(s.a.ServerWeakenAmount*o*n),e.scriptRef.recordWeaken(f.hostname,o);const a=Object(l.c)(f,m.a)*o;return e.log("weaken",()=>`'${f.hostname}' security level weakened to ${f.hackDifficulty}. Gained ${T.a.formatExp(a)} hacking exp (t=${T.a.formatThreads(o)})`),e.scriptRef.onlineExpGained+=a,m.a.gainHackingExp(a),Promise.resolve(s.a.ServerWeakenAmount*o*n)}))},weakenAnalyze:function(t,e=1){n("weakenAnalyze",Object(r.c)(m.a,"weakenAnalyze"));const a=ht.number("weakenAnalyze","threads",t),i=1+(ht.number("weakenAnalyze","cores",e)-1)/16;return s.a.ServerWeakenAmount*a*i*o.a.ServerWeakenRate},share:async function(){n("share",Object(r.c)(m.a,"share")),e.log("share",()=>"Sharing this computer.");const t=Object(Z.b)(e.scriptRef.threads*Object(Q.a)(m.a.intelligence,2));return Object(M.c)(1e4,e).finally((function(){e.log("share",()=>"Finished sharing this computer."),t()}))},getSharePower:function(){return n("getSharePower",Object(r.c)(m.a,"getSharePower")),Object(Z.a)()},print:function(...t){if(n("print",Object(r.c)(m.a,"print")),0===t.length)throw ft("print","Takes at least 1 argument.");e.print(mt(t))},printf:function(t,...i){n("printf",Object(r.c)(m.a,"printf"));const o=ht.string("printf","format",t);if("string"!=typeof o)throw ft("printf","First argument must be string for the format.");e.print(Object(a.vsprintf)(o,i))},tprint:function(...t){if(n("tprint",Object(r.c)(m.a,"tprint")),0===t.length)throw ft("tprint","Takes at least 1 argument.");const a=mt(t);a.startsWith("ERROR")||a.startsWith("FAIL")?u.a.error(`${e.scriptRef.filename}: ${a}`):a.startsWith("SUCCESS")?u.a.success(`${e.scriptRef.filename}: ${a}`):a.startsWith("WARN")?u.a.warn(`${e.scriptRef.filename}: ${a}`):a.startsWith("INFO")?u.a.info(`${e.scriptRef.filename}: ${a}`):u.a.print(`${e.scriptRef.filename}: ${a}`)},tprintf:function(t,...e){n("tprintf",Object(r.c)(m.a,"tprintf"));const i=ht.string("printf","format",t);if("string"!=typeof i)throw ft("tprintf","First argument must be string for the format.");const o=Object(a.vsprintf)(i,e);o.startsWith("ERROR")||o.startsWith("FAIL")?u.a.error(""+o):o.startsWith("SUCCESS")?u.a.success(""+o):o.startsWith("WARN")?u.a.warn(""+o):o.startsWith("INFO")?u.a.info(""+o):u.a.print(""+o)},clearLog:function(){n("clearLog",Object(r.c)(m.a,"clearLog")),e.scriptRef.clearLog()},disableLog:function(t){n("disableLog",Object(r.c)(m.a,"disableLog"));const a=ht.string("disableLog","fn",t);if("ALL"===a){for(const t of Object.keys(Ot))e.disableLogs[t]=!0;e.log("disableLog",()=>"Disabled logging for all functions")}else{if(void 0===Ot[a])throw ft("disableLog",`Invalid argument: ${a}.`);e.disableLogs[a]=!0,e.log("disableLog",()=>"Disabled logging for "+a)}},enableLog:function(t){n("enableLog",Object(r.c)(m.a,"enableLog"));const a=ht.string("enableLog","fn",t);if("ALL"===a){for(const t of Object.keys(Ot))delete e.disableLogs[t];e.log("enableLog",()=>"Enabled logging for all functions")}else if(void 0===Ot[a])throw ft("enableLog",`Invalid argument: ${a}.`);delete e.disableLogs[a],e.log("enableLog",()=>"Enabled logging for "+a)},isLogEnabled:function(t){n("isLogEnabled",Object(r.c)(m.a,"isLogEnabled"));const a=ht.string("isLogEnabled","fn",t);if(void 0===Ot[a])throw ft("isLogEnabled",`Invalid argument: ${a}.`);return!e.disableLogs[a]},getScriptLogs:function(t,a,...i){n("getScriptLogs",Object(r.c)(m.a,"getScriptLogs"));const o=it(t,a,"getScriptLogs",i);return null==o?(e.log("getScriptLogs",()=>lt(t,a,i)),[]):o.logs.slice()},tail:function(t,a=e.hostname,...i){let o;n("tail",Object(r.c)(m.a,"tail")),o=0===arguments.length?e.scriptRef:"number"==typeof t?ot(t,"tail"):it(t,a,"tail",i),null!=o?R.b.emit(o):e.log("tail",()=>lt(t,a,i))},nuke:function(t){n("nuke",Object(r.c)(m.a,"nuke"));const a=ht.string("tail","hostname",t);if(void 0===a)throw ft("nuke","Takes 1 argument.");const i=rt(a,"nuke");if(!(i instanceof k.a))return e.log("nuke",()=>"Cannot be executed on this server."),!1;if(i.hasAdminRights)return e.log("nuke",()=>`Already have root access to '${i.hostname}'.`),!0;if(!m.a.hasProgram(h.a.NukeProgram.name))throw ft("nuke","You do not have the NUKE.exe virus!");if(i.openPortCount`Executed NUKE.exe virus on '${i.hostname}' to gain root access.`),!0},brutessh:function(t){n("brutessh",Object(r.c)(m.a,"brutessh"));const a=ht.string("brutessh","hostname",t);if(void 0===a)throw ft("brutessh","Takes 1 argument.");const i=rt(a,"brutessh");if(!(i instanceof k.a))return e.log("brutessh",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.BruteSSHProgram.name))throw ft("brutessh","You do not have the BruteSSH.exe program!");return i.sshPortOpen?e.log("brutessh",()=>`SSH Port (22) already opened on '${i.hostname}'.`):(e.log("brutessh",()=>`Executed BruteSSH.exe on '${i.hostname}' to open SSH port (22).`),i.sshPortOpen=!0,++i.openPortCount),!0},ftpcrack:function(t){n("ftpcrack",Object(r.c)(m.a,"ftpcrack"));const a=ht.string("ftpcrack","hostname",t);if(void 0===a)throw ft("ftpcrack","Takes 1 argument.");const i=rt(a,"ftpcrack");if(!(i instanceof k.a))return e.log("ftpcrack",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.FTPCrackProgram.name))throw ft("ftpcrack","You do not have the FTPCrack.exe program!");return i.ftpPortOpen?e.log("ftpcrack",()=>`FTP Port (21) already opened on '${i.hostname}'.`):(e.log("ftpcrack",()=>`Executed FTPCrack.exe on '${i.hostname}' to open FTP port (21).`),i.ftpPortOpen=!0,++i.openPortCount),!0},relaysmtp:function(t){n("relaysmtp",Object(r.c)(m.a,"relaysmtp"));const a=ht.string("relaysmtp","hostname",t);if(void 0===a)throw ft("relaysmtp","Takes 1 argument.");const i=rt(a,"relaysmtp");if(!(i instanceof k.a))return e.log("relaysmtp",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.RelaySMTPProgram.name))throw ft("relaysmtp","You do not have the relaySMTP.exe program!");return i.smtpPortOpen?e.log("relaysmtp",()=>`SMTP Port (25) already opened on '${i.hostname}'.`):(e.log("relaysmtp",()=>`Executed relaySMTP.exe on '${i.hostname}' to open SMTP port (25).`),i.smtpPortOpen=!0,++i.openPortCount),!0},httpworm:function(t){n("httpworm",Object(r.c)(m.a,"httpworm"));const a=ht.string("httpworm","hostname",t);if(void 0===a)throw ft("httpworm","Takes 1 argument");const i=rt(a,"httpworm");if(!(i instanceof k.a))return e.log("httpworm",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.HTTPWormProgram.name))throw ft("httpworm","You do not have the HTTPWorm.exe program!");return i.httpPortOpen?e.log("httpworm",()=>`HTTP Port (80) already opened on '${i.hostname}'.`):(e.log("httpworm",()=>`Executed HTTPWorm.exe on '${i.hostname}' to open HTTP port (80).`),i.httpPortOpen=!0,++i.openPortCount),!0},sqlinject:function(t){n("sqlinject",Object(r.c)(m.a,"sqlinject"));const a=ht.string("sqlinject","hostname",t);if(void 0===a)throw ft("sqlinject","Takes 1 argument.");const i=rt(a,"sqlinject");if(!(i instanceof k.a))return e.log("sqlinject",()=>"Cannot be executed on this server."),!1;if(!m.a.hasProgram(h.a.SQLInjectProgram.name))throw ft("sqlinject","You do not have the SQLInject.exe program!");return i.sqlPortOpen?e.log("sqlinject",()=>`SQL Port (1433) already opened on '${i.hostname}'.`):(e.log("sqlinject",()=>`Executed SQLInject.exe on '${i.hostname}' to open SQL port (1433).`),i.sqlPortOpen=!0,++i.openPortCount),!0},run:function(t,a=1,...i){n("run",Object(r.c)(m.a,"run"));const o=ht.string("run","scriptname",t),s=ht.number("run","threads",a);if(void 0===o)throw ft("run","Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");if(isNaN(s)||s<=0)throw ft("run","Invalid thread count. Must be numeric and > 0, is "+s);const l=Object(b.d)(e.hostname);if(null==l)throw ft("run","Could not find server. This is a bug. Report to dev.");return Object(x.d)(m.a,"run",l,o,i,e,s)},exec:function(t,a,i=1,...o){n("exec",Object(r.c)(m.a,"exec"));const s=ht.string("exec","scriptname",t),l=ht.string("exec","hostname",a),c=ht.number("exec","threads",i);if(void 0===s||void 0===l)throw ft("exec","Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");if(isNaN(c)||c<=0)throw ft("exec","Invalid thread count. Must be numeric and > 0, is "+c);const f=rt(l,"exec");return Object(x.d)(m.a,"exec",f,s,o,e,c)},spawn:function(t,a=1,...i){n("spawn",Object(r.c)(m.a,"spawn"));const o=ht.string("spawn","scriptname",t),s=ht.number("spawn","threads",a);if(!o||!s)throw ft("spawn","Usage: spawn(scriptname, threads)");setTimeout(()=>{if(isNaN(s)||s<=0)throw ft("spawn","Invalid thread count. Must be numeric and > 0, is "+s);const t=Object(b.d)(e.hostname);if(null==t)throw ft("spawn","Could not find server. This is a bug. Report to dev");return Object(x.d)(m.a,"spawn",t,o,i,e,s)},1e4),e.log("spawn",()=>`Will execute '${o}' in 10 seconds`),e.running=!1,Object(L.a)(e)&&e.log("spawn",()=>"Exiting...")},kill:function(t,a,...i){let o;n("kill",Object(r.c)(m.a,"kill"));const s="number"==typeof t;if(s)o=Object(L.a)(t);else{if(void 0===t||void 0===a)throw ft("kill","Usage: kill(scriptname, server, [arg1], [arg2]...)");const n=rt(a,"kill"),r=it(t,a,"kill",i);if(null==r)return e.log("kill",()=>lt(t,a,i)),!1;o=Object(L.a)(r,n.hostname)}return o?(s?e.log("kill",()=>"Killing script with PID "+t):e.log("kill",()=>`Killing '${t}' on '${a}' with args: ${Object(N.a)(i)}.`),!0):(s?e.log("kill",()=>"No script with PID "+t):e.log("kill",()=>`No such script '${t}' on '${a}' with args: ${Object(N.a)(i)}`),!1)},killall:function(t=e.hostname){n("killall",Object(r.c)(m.a,"killall"));const a=ht.string("killall","hostname",t);if(void 0===a)throw ft("killall","Takes 1 argument");const o=rt(a,"killall"),s=o.runningScripts.length>0;for(let t=o.runningScripts.length-1;t>=0;--t)Object(L.a)(o.runningScripts[t],o.hostname,!1);return i.a.emit(),e.log("killall",()=>`Killing all scripts on '${o.hostname}'. May take a few minutes for the scripts to die.`),s},exit:function(){n("exit",Object(r.c)(m.a,"exit")),e.running=!1,Object(L.a)(e)?e.log("exit",()=>"Exiting..."):e.log("exit",()=>"Failed. This is a bug. Report to dev.")},scp:async function(t,a,i){n("scp",Object(r.c)(m.a,"scp"));const o=ht.string("scp","hostname1",a);if(2!==arguments.length&&3!==arguments.length)throw ft("scp","Takes 2 or 3 arguments");if(t&&t.constructor===Array){const n=t;if(0===n.length)throw ft("scp","No scripts to copy");let a=!0;return await Promise.all(n.map((async function(t){await at(e).scp(t,o,i)||(a=!1)}))),Promise.resolve(a)}if(!Object(S.j)(t))throw ft("scp",`Invalid filename: '${t}'`);if(!t.endsWith(".lit")&&!Object(g.a)(t)&&!t.endsWith("txt"))throw ft("scp","Only works for scripts, .lit and .txt files");let s,l;if(null!=i){if(void 0===t||void 0===o||void 0===i)throw ft("scp","Takes 2 or 3 arguments");s=rt(i,"scp"),l=rt(o,"scp")}else{if(null==o)throw ft("scp","Takes 2 or 3 arguments");if(void 0===t||void 0===o)throw ft("scp","Takes 2 or 3 arguments");if(s=rt(o,"scp"),l=Object(b.d)(e.hostname),null==l)throw ft("scp","Could not find server hostname for this script. This is a bug. Report to dev.")}if(t.endsWith(".lit")){let n=!1;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let n=0;n{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0);return s.messages.push(t),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0)}if(t.endsWith(".txt")){let n;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let a=0;a{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0);const a=new C.a(n.fn,n.text);return s.textFiles.push(a),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),Promise.resolve(!0)}let c=null;for(let e=0;e`File '${t}' does not exist.`),Promise.resolve(!1);for(let n=0;n{var e;return`WARNING: File '${t}' overwritten on '${null===(e=s)||void 0===e?void 0:e.hostname}'`});const a=s.scripts[n];return a.code===c.code||(a.code=c.code,a.ramUsage=c.ramUsage,a.markUpdated()),Promise.resolve(!0)}const f=new d.a(m.a,t);return f.code=c.code,f.ramUsage=c.ramUsage,f.server=s.hostname,s.scripts.push(f),e.log("scp",()=>{var e;return`File '${t}' copied over to '${null===(e=s)||void 0===e?void 0:e.hostname}'.`}),new Promise(t=>{null!==s?f.updateRamUsage(m.a,s.scripts).then(()=>t(!0)):t(!1)})},ls:function(t,e=""){n("ls",Object(r.c)(m.a,"ls"));const a=ht.string("ls","hostname",t),i=ht.string("ls","grep",e);if(void 0===a)throw ft("ls","Usage: ls(hostname/ip, [grep filter])");const o=rt(a,"ls");let s="";arguments.length>=2&&(s=i.toString());const l=[];for(let t=0;t({timeOfDeath:t.timeOfDeath,...st(t.runningScript)}))},ps:function(t=e.hostname){n("ps",Object(r.c)(m.a,"ps"));const a=ht.string("ps","hostname",t),i=rt(a,"ps"),o=[];for(const t of i.runningScripts)o.push({filename:t.filename,threads:t.threads,args:t.args.slice(),pid:t.pid});return o},hasRootAccess:function(t){n("hasRootAccess",Object(r.c)(m.a,"hasRootAccess"));const e=ht.string("hasRootAccess","hostname",t);if(void 0===e)throw ft("hasRootAccess","Takes 1 argument");return rt(e,"hasRootAccess").hasAdminRights},getHostname:function(){n("getHostname",Object(r.c)(m.a,"getHostname"));const t=Object(b.d)(e.hostname);if(null==t)throw ft("getHostname","Could not find server. This is a bug. Report to dev.");return t.hostname},getHackingLevel:function(){return n("getHackingLevel",Object(r.c)(m.a,"getHackingLevel")),m.a.updateSkillLevels(),e.log("getHackingLevel",()=>"returned "+m.a.hacking),m.a.hacking},getHackingMultipliers:function(){return n("getHackingMultipliers",Object(r.c)(m.a,"getHackingMultipliers")),{chance:m.a.hacking_chance_mult,speed:m.a.hacking_speed_mult,money:m.a.hacking_money_mult,growth:m.a.hacking_grow_mult}},getHacknetMultipliers:function(){return n("getHacknetMultipliers",Object(r.c)(m.a,"getHacknetMultipliers")),{production:m.a.hacknet_node_money_mult,purchaseCost:m.a.hacknet_node_purchase_cost_mult,ramCost:m.a.hacknet_node_ram_cost_mult,coreCost:m.a.hacknet_node_core_cost_mult,levelCost:m.a.hacknet_node_level_cost_mult}},getBitNodeMultipliers:function(){if(n("getBitNodeMultipliers",Object(r.c)(m.a,"getBitNodeMultipliers")),_.a[5]<=0&&5!==m.a.bitNodeN)throw ft("getBitNodeMultipliers","Requires Source-File 5 to run.");return Object.assign({},o.a)},getServer:function(t=e.hostname){n("getServer",Object(r.c)(m.a,"getServer"));const a=ht.string("getServer","hostname",t),i=rt(a,"getServer"),o=Object.assign({},i);return o.contracts=void 0,o.messages=void 0,o.runningScripts=void 0,o.scripts=void 0,o.textFiles=void 0,o.programs=void 0,o.serversOnNetwork=void 0,o.baseDifficulty||(o.baseDifficulty=0),o.hackDifficulty||(o.hackDifficulty=0),o.minDifficulty||(o.minDifficulty=0),o.moneyAvailable||(o.moneyAvailable=0),o.moneyMax||(o.moneyMax=0),o.numOpenPortsRequired||(o.numOpenPortsRequired=0),o.openPortCount||(o.openPortCount=0),o.requiredHackingSkill||(o.requiredHackingSkill=0),o.serverGrowth||(o.serverGrowth=0),o},getServerMoneyAvailable:function(t){n("getServerMoneyAvailable",Object(r.c)(m.a,"getServerMoneyAvailable"));const a=ht.string("getServerMoneyAvailable","hostname",t),i=rt(a,"getServerMoneyAvailable");return i instanceof k.a?ct(i,"getServerMoneyAvailable")?0:"home"==i.hostname?(e.log("getServerMoneyAvailable",()=>"returned player's money: "+T.a.formatMoney(m.a.money)),m.a.money):(e.log("getServerMoneyAvailable",()=>`returned ${T.a.formatMoney(i.moneyAvailable)} for '${i.hostname}'`),i.moneyAvailable):(e.log("getServerMoneyAvailable",()=>"Cannot be executed on this server."),0)},getServerSecurityLevel:function(t){n("getServerSecurityLevel",Object(r.c)(m.a,"getServerSecurityLevel"));const a=ht.string("getServerSecurityLevel","hostname",t),i=rt(a,"getServerSecurityLevel");return i instanceof k.a?ct(i,"getServerSecurityLevel")?1:(e.log("getServerSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.hackDifficulty)} for '${i.hostname}'`),i.hackDifficulty):(e.log("getServerSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerBaseSecurityLevel:function(t){n("getServerBaseSecurityLevel",Object(r.c)(m.a,"getServerBaseSecurityLevel"));const a=ht.string("getServerBaseSecurityLevel","hostname",t);e.log("getServerBaseSecurityLevel",()=>"getServerBaseSecurityLevel is deprecated because it's not useful.");const i=rt(a,"getServerBaseSecurityLevel");return i instanceof k.a?ct(i,"getServerBaseSecurityLevel")?1:(e.log("getServerBaseSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.baseDifficulty)} for '${i.hostname}'`),i.baseDifficulty):(e.log("getServerBaseSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerMinSecurityLevel:function(t){n("getServerMinSecurityLevel",Object(r.c)(m.a,"getServerMinSecurityLevel"));const a=ht.string("getServerMinSecurityLevel","hostname",t),i=rt(a,"getServerMinSecurityLevel");return i instanceof k.a?ct(i,"getServerMinSecurityLevel")?1:(e.log("getServerMinSecurityLevel",()=>`returned ${T.a.formatServerSecurity(i.minDifficulty)} for ${i.hostname}`),i.minDifficulty):(e.log("getServerMinSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerRequiredHackingLevel:function(t){n("getServerRequiredHackingLevel",Object(r.c)(m.a,"getServerRequiredHackingLevel"));const a=ht.string("getServerRequiredHackingLevel","hostname",t),i=rt(a,"getServerRequiredHackingLevel");return i instanceof k.a?ct(i,"getServerRequiredHackingLevel")?1:(e.log("getServerRequiredHackingLevel",()=>`returned ${T.a.formatSkill(i.requiredHackingSkill)} for '${i.hostname}'`),i.requiredHackingSkill):(e.log("getServerRequiredHackingLevel",()=>"Cannot be executed on this server."),1)},getServerMaxMoney:function(t){n("getServerMaxMoney",Object(r.c)(m.a,"getServerMaxMoney"));const a=ht.string("getServerMaxMoney","hostname",t),i=rt(a,"getServerMaxMoney");return i instanceof k.a?ct(i,"getServerMaxMoney")?0:(e.log("getServerMaxMoney",()=>`returned ${T.a.formatMoney(i.moneyMax)} for '${i.hostname}'`),i.moneyMax):(e.log("getServerMaxMoney",()=>"Cannot be executed on this server."),0)},getServerGrowth:function(t){n("getServerGrowth",Object(r.c)(m.a,"getServerGrowth"));const a=ht.string("getServerGrowth","hostname",t),i=rt(a,"getServerGrowth");return i instanceof k.a?ct(i,"getServerGrowth")?1:(e.log("getServerGrowth",()=>`returned ${i.serverGrowth} for '${i.hostname}'`),i.serverGrowth):(e.log("getServerGrowth",()=>"Cannot be executed on this server."),1)},getServerNumPortsRequired:function(t){n("getServerNumPortsRequired",Object(r.c)(m.a,"getServerNumPortsRequired"));const a=ht.string("getServerNumPortsRequired","hostname",t),i=rt(a,"getServerNumPortsRequired");return i instanceof k.a?ct(i,"getServerNumPortsRequired")?5:(e.log("getServerNumPortsRequired",()=>`returned ${i.numOpenPortsRequired} for '${i.hostname}'`),i.numOpenPortsRequired):(e.log("getServerNumPortsRequired",()=>"Cannot be executed on this server."),5)},getServerRam:function(t){n("getServerRam",Object(r.c)(m.a,"getServerRam"));const a=ht.string("getServerRam","hostname",t);e.log("getServerRam",()=>"getServerRam is deprecated in favor of getServerMaxRam / getServerUsedRam");const i=rt(a,"getServerRam");return e.log("getServerRam",()=>`returned [${T.a.formatRAM(i.maxRam)}, ${T.a.formatRAM(i.ramUsed)}]`),[i.maxRam,i.ramUsed]},getServerMaxRam:function(t){n("getServerMaxRam",Object(r.c)(m.a,"getServerMaxRam"));const a=ht.string("getServerMaxRam","hostname",t),i=rt(a,"getServerMaxRam");return e.log("getServerMaxRam",()=>"returned "+T.a.formatRAM(i.maxRam)),i.maxRam},getServerUsedRam:function(t){n("getServerUsedRam",Object(r.c)(m.a,"getServerUsedRam"));const a=ht.string("getServerUsedRam","hostname",t),i=rt(a,"getServerUsedRam");return e.log("getServerUsedRam",()=>"returned "+T.a.formatRAM(i.ramUsed)),i.ramUsed},serverExists:function(t){n("serverExists",Object(r.c)(m.a,"serverExists"));const e=ht.string("serverExists","hostname",t);return null!==Object(b.d)(e)},fileExists:function(t,a=e.hostname){n("fileExists",Object(r.c)(m.a,"fileExists"));const i=ht.string("fileExists","filename",t),o=ht.string("fileExists","hostname",a);if(void 0===i)throw ft("fileExists","Usage: fileExists(scriptname, [server])");const s=rt(o,"fileExists");for(let t=0;t`Invalid argument: ram='${a}'`),1/0):i},purchaseServer:function(t,a){n("purchaseServer",Object(r.c)(m.a,"purchaseServer"));const i=ht.string("purchaseServer","name",t),o=ht.number("purchaseServer","ram",a);if(2!==arguments.length)throw ft("purchaseServer","Takes 2 arguments");let s=String(i);if(s=s.replace(/\s+/g,""),""==s)return e.log("purchaseServer",()=>`Invalid argument: hostname='${s}'`),"";if(m.a.purchasedServers.length>=Object(v.b)())return e.log("purchaseServer",()=>`You have reached the maximum limit of ${Object(v.b)()} servers. You cannot purchase any more.`),"";const l=Object(v.a)(o);if(l===1/0)return o>Object(v.c)()?e.log("purchaseServer",()=>`Invalid argument: ram='${o}' must not be greater than getPurchaseServerMaxRam`):e.log("purchaseServer",()=>`Invalid argument: ram='${o}' must be a positive power of 2`),"";if(m.a.money"Not enough money to purchase server. Need "+T.a.formatMoney(l)),"";const c=Object(E.f)({ip:Object(b.e)(),hostname:s,organizationName:"",isConnectedTo:!1,adminRights:!0,purchasedByPlayer:!0,maxRam:o});Object(b.a)(c),m.a.purchasedServers.push(c.hostname);const f=m.a.getHomeComputer();return f.serversOnNetwork.push(c.hostname),c.serversOnNetwork.push(f.hostname),m.a.loseMoney(l,"servers"),e.log("purchaseServer",()=>`Purchased new server with hostname '${c.hostname}' for ${T.a.formatMoney(l)}`),c.hostname},deleteServer:function(t){n("deleteServer",Object(r.c)(m.a,"deleteServer"));const a=ht.string("purchaseServer","name",t);let i=String(a);i=i.replace(/\s\s+/g,"");const o=Object(b.d)(i);if(!(o instanceof k.a))return e.log("deleteServer",()=>`Invalid argument: hostname='${i}'`),!1;if(!o.purchasedByPlayer||"home"===o.hostname)return e.log("deleteServer",()=>"Cannot delete non-purchased server."),!1;const s=o.hostname;if(o.isConnectedTo)return e.log("deleteServer",()=>"You are currently connected to the server you are trying to delete."),!1;if(s===e.hostname)return e.log("deleteServer",()=>"Cannot delete the server this script is running on."),!1;if(o.runningScripts.length>0)return e.log("deleteServer",()=>`Cannot delete server '${s}' because it still has scripts running.`),!1;let l=!1;for(let t=0;t`Could not identify server ${s} as a purchased server. This is a bug. Report to dev.`),!1;Object(b.b)(s),l=!1;const c=m.a.getHomeComputer();for(let t=0;t"Deleted server '"+i),!0;return e.log("deleteServer",()=>`Could not find server ${s} as a purchased server. This is a bug. Report to dev.`),!1},getPurchasedServers:function(){n("getPurchasedServers",Object(r.c)(m.a,"getPurchasedServers"));const t=[];return m.a.purchasedServers.forEach((function(e){t.push(e)})),t},writePort:function(t,e=""){n("writePort",Object(r.c)(m.a,"writePort"));const a=ht.number("writePort","port",t);if("string"!=typeof e&&"number"!=typeof e)throw ft("writePort","Trying to write invalid data to a port: only strings and numbers are valid.");const i=ht.getValidPort("writePort",a);return Promise.resolve(i.write(e))},write:function(t,a="",i="a"){n("write",Object(r.c)(m.a,"write"));const o=ht.string("write","port",t),s=ht.string("write","mode",i);if(Object(P.a)(o)){let t=o;if(!Object(S.j)(t))throw ft("write","Invalid filepath: "+t);0===t.lastIndexOf("/")&&(t=Object(S.k)(t));try{a=String(a)}catch(t){throw ft("write",`Invalid data (${t}). Data being written must be convertible to a string`)}const n=e.getServer();if(null==n)throw ft("write","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(t)){let r=e.getScriptOnServer(t,n);return null==r?(r=new d.a(m.a,t,a,n.hostname,n.scripts),n.scripts.push(r),r.updateRamUsage(m.a,n.scripts)):("w"===s?r.code=a:r.code+=a,r.updateRamUsage(m.a,n.scripts))}{const e=Object(C.c)(t,n);if(null==e)return Object(C.b)(t,a,n),Promise.resolve();"w"===s?e.write(a):e.append(a)}return Promise.resolve()}throw ft("write","Invalid argument: "+o)},tryWritePort:function(t,e=""){n("tryWritePort",Object(r.c)(m.a,"tryWritePort"));let a=ht.number("tryWritePort","port",t);if("string"!=typeof e&&"number"!=typeof e)throw ft("tryWritePort","Trying to write invalid data to a port: only strings and numbers are valid.");if(isNaN(a))throw ft("tryWritePort","Invalid argument: "+a);{if(a=Math.round(a),a<1||a>s.a.NumNetscriptPorts)throw ft("tryWritePort",`Invalid port: ${a}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const t=x.a[a-1];if(null==t||!(t instanceof Object))throw ft("tryWritePort",`Could not find port: ${a}. This is a bug. Report to dev.`);return Promise.resolve(t.tryWrite(e))}},readPort:function(t){n("readPort",Object(r.c)(m.a,"readPort"));const e=ht.number("readPort","port",t);return ht.getValidPort("readPort",e).read()},read:function(t){n("read",Object(r.c)(m.a,"read"));const a=ht.string("read","port",t);if(Object(P.a)(a)){const t=a,n=Object(b.d)(e.hostname);if(null==n)throw ft("read","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(t)){const a=e.getScriptOnServer(t,n);return null==a?"":a.code}{const e=Object(C.c)(t,n);return null!==e?e.text:""}}throw ft("read","Invalid argument: "+a)},peek:function(t){n("peek",Object(r.c)(m.a,"peek"));const e=ht.number("peek","port",t);return ht.getValidPort("peek",e).peek()},clear:function(t){n("clear",Object(r.c)(m.a,"clear"));const a=ht.string("peek","file",t);if(!Object(P.a)(a))throw ft("clear","Invalid argument: "+a);{const t=a,n=Object(b.d)(e.hostname);if(null==n)throw ft("clear","Error getting Server. This is a bug. Report to dev.");const r=Object(C.c)(t,n);null!=r&&r.write("")}},clearPort:function(t){n("clearPort",Object(r.c)(m.a,"clearPort"));const e=ht.number("clearPort","port",t);ht.getValidPort("clearPort",e).clear()},getPortHandle:function(t){n("getPortHandle",Object(r.c)(m.a,"getPortHandle"));const e=ht.number("getPortHandle","port",t);return ht.getValidPort("getPortHandle",e)},rm:function(t,a){n("rm",Object(r.c)(m.a,"rm"));const i=ht.string("rm","fn",t);null!=a&&""!==a||(a=e.hostname);const o=rt(a,"rm").removeFile(i);return o.res||e.log("rm",()=>o.msg+""),o.res},scriptRunning:function(t,e){n("scriptRunning",Object(r.c)(m.a,"scriptRunning"));const a=ht.string("scriptRunning","scriptname",t),i=ht.string("scriptRunning","hostname",e),o=rt(i,"scriptRunning");for(let t=0;t"invalid for this kind of server"),1/0)},getGrowTime:function(t=e.hostname){n("getGrowTime",Object(r.c)(m.a,"getGrowTime"));const a=ht.string("getGrowTime","hostname",t),i=rt(a,"getGrowTime");return i instanceof k.a?ct(i,"getGrowTime")?1/0:1e3*Object(l.a)(i,m.a):(e.log("getGrowTime",()=>"invalid for this kind of server"),1/0)},getWeakenTime:function(t=e.hostname){n("getWeakenTime",Object(r.c)(m.a,"getWeakenTime"));const a=ht.string("getWeakenTime","hostname",t),i=rt(a,"getWeakenTime");return i instanceof k.a?ct(i,"getWeakenTime")?1/0:1e3*Object(l.f)(i,m.a):(e.log("getWeakenTime",()=>"invalid for this kind of server"),1/0)},getScriptIncome:function(t,a,...i){if(n("getScriptIncome",Object(r.c)(m.a,"getScriptIncome")),0===arguments.length){const t=[];let e=0;for(const t of O.a.values())e+=t.scriptRef.onlineMoneyMade/t.scriptRef.onlineRunningTime;return t.push(e),t.push(m.a.scriptProdSinceLastAug/(m.a.playtimeSinceLastAug/1e3)),t}{const n=rt(a,"getScriptIncome"),r=Object(p.a)(t,i,n);return null==r?(e.log("getScriptIncome",()=>`No such script '${t}' on '${n.hostname}' with args: ${Object(N.a)(i)}`),-1):r.onlineMoneyMade/r.onlineRunningTime}},getScriptExpGain:function(t,a,...i){if(n("getScriptExpGain",Object(r.c)(m.a,"getScriptExpGain")),0===arguments.length){let t=0;for(const e of O.a.values())t+=e.scriptRef.onlineExpGained/e.scriptRef.onlineRunningTime;return t}{const n=rt(a,"getScriptExpGain"),r=Object(p.a)(t,i,n);return null==r?(e.log("getScriptExpGain",()=>`No such script '${t}' on '${n.hostname}' with args: ${Object(N.a)(i)}`),-1):r.onlineExpGained/r.onlineRunningTime}},nFormat:function(t,e){n("nFormat",Object(r.c)(m.a,"nFormat"));const a=ht.number("nFormat","n",t),i=ht.string("nFormat","format",e);return isNaN(a)?"":T.a.format(a,i)},tFormat:function(t,e=!1){n("tFormat",Object(r.c)(m.a,"tFormat"));const a=ht.number("tFormat","milliseconds",t),i=ht.boolean(e);return Object(A.b)(a,i)},getTimeSinceLastAug:function(){return n("getTimeSinceLastAug",Object(r.c)(m.a,"getTimeSinceLastAug")),m.a.playtimeSinceLastAug},alert:function(t){n("alert",Object(r.c)(m.a,"alert"));const e=ht.string("alert","message",t);Object(Y.a)(e)},toast:function(t,e="success",a=2e3){n("toast",Object(r.c)(m.a,"toast"));const i=ht.string("toast","message",t),o=ht.string("toast","variant",e);if(!["success","info","warning","error"].includes(o))throw new Error('variant must be one of "success", "info", "warning", or "error"');J.b.emit(i,o,a)},prompt:function(t,e){n("prompt",Object(r.c)(m.a,"prompt"));const a=ht.string("toast","txt",t);return new Promise((function(t){y.a.emit({txt:a,options:e,resolve:t})}))},wget:async function(a,i,o=e.hostname){n("wget",Object(r.c)(m.a,"wget"));const s=ht.string("wget","url",a),l=ht.string("wget","target",i),c=ht.string("wget","hostname",o);if(!Object(g.a)(l)&&!l.endsWith(".txt"))return e.log("wget",()=>`Invalid target file: '${l}'. Must be a script or text file.`),Promise.resolve(!1);const f=rt(c,"wget");return new Promise((function(n){t.get(s,(function(t){let a;return a=Object(g.a)(l)?f.writeToScriptFile(m.a,l,t):f.writeToTextFile(l,t),a.success?a.overwritten?(e.log("wget",()=>`Successfully retrieved content and overwrote '${l}' on '${c}'`),n(!0)):(e.log("wget",()=>`Successfully retrieved content to new file '${l}' on '${c}'`),n(!0)):(e.log("wget",()=>"Failed."),n(!1))}),"text").fail((function(t){return e.log("wget",()=>JSON.stringify(t)),n(!1)}))}))},getFavorToDonate:function(){return n("getFavorToDonate",Object(r.c)(m.a,"getFavorToDonate")),Math.floor(s.a.BaseFavorToDonate*o.a.RepToDonateToFaction)},getOwnedSourceFiles:function(){n("getOwnedSourceFiles",Object(r.c)(m.a,"getOwnedSourceFiles"));const t=[];for(let e=0;e{t()}},mv:function(t,e,a){n("mv",Object(r.c)(m.a,"mv"));const i=ht.string("mv","host",t),o=ht.string("mv","source",e),s=ht.string("mv","destination",a);if(!Object(S.j)(o))throw ft("mv",`Invalid filename: '${o}'`);if(!Object(S.j)(s))throw ft("mv",`Invalid filename: '${s}'`);const l=o.endsWith(".txt"),c=s.endsWith(".txt");if(!Object(g.a)(o)&&!l)throw ft("mv","'mv' can only be used on scripts and text files (.txt)");if(l!=c)throw ft("mv","Source and destination files must have the same type");if(o===s)return;const f=rt(i,"mv");if(!l&&f.isRunning(o))throw ft("mv","Cannot use 'mv' on a script that is running");const u=l?f.textFiles:f.scripts;let h=null,p=null;for(let t=0;t[t,!0]));return Lt}}).call(this,n(811))},function(t,e,n){"use strict";n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return s}));var a=n(148),r=n(101);function i(t,e){const n=t.organizationName;let i=null;if("string"==typeof n&&""!==n&&(i=r.a[n]),!(i instanceof a.a))return;const o=e/t.moneyMax;Math.random()0?e.requiredHacking+r:0,o=e.requiredStrength>0?e.requiredStrength+r:0,s=e.requiredDefense>0?e.requiredDefense+r:0,l=e.requiredDexterity>0?e.requiredDexterity+r:0,c=e.requiredDexterity>0?e.requiredDexterity+r:0,f=e.requiredCharisma>0?e.requiredCharisma+r:0,u=e.requiredReputation;return n?(a="Requires:
",a+=i.toString()+" hacking
",a+=o.toString()+" strength
",a+=s.toString()+" defense
",a+=l.toString()+" dexterity
",a+=c.toString()+" agility
",a+=f.toString()+" charisma
",a+=u.toString()+" reputation"):(a="(Requires ",i>0&&(a+=i+" hacking, "),o>0&&(a+=o+" strength, "),s>0&&(a+=s+" defense, "),l>0&&(a+=l+" dexterity, "),c>0&&(a+=c+" agility, "),f>0&&(a+=f+" charisma, "),u>1&&(a+=u+" reputation, "),a=a.substring(0,a.length-2),a+=")"),a}n.d(e,"a",(function(){return a}))},,function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return i}));const a=["Type 'help name' to learn more about the command "," ",' alias [-g] [name="value"] Create or display Terminal aliases'," analyze Get information about the current machine "," backdoor Install a backdoor on the current machine "," buy [-l/-a/program] Purchase a program through the Dark Web"," cat [file] Display a .msg, .lit, or .txt file"," cd [dir] Change to a new directory"," check [script] [args...] Print a script's logs to Terminal"," clear Clear all text on the terminal "," cls See 'clear' command "," connect [hostname] Connects to a remote server"," cp [src] [dst] Copy a file"," download [script/text file] Downloads scripts or text files to your computer"," expr [math expression] Evaluate a mathematical expression"," free Check the machine's memory (RAM) usage"," grow Spoof money in a servers bank account, increasing the amount available."," hack Hack the current machine"," help [command] Display this help text, or the help text for a command"," history [-c] Display the terminal history"," home Connect to home computer"," hostname Displays the hostname of the machine"," kill [script/pid] [args...] Stops the specified script on the current server "," killall Stops all running scripts on the current machine"," ls [dir] [--grep pattern] Displays all files on the machine"," lscpu Displays the number of CPU cores on the machine"," mem [script] [-t n] Displays the amount of RAM required to run the script"," mv [src] [dest] Move/rename a text or script file"," nano [file ...] Text editor - Open up and edit one or more scripts or text files"," ps Display all scripts that are currently running"," rm [file] Delete a file from the server"," run [name] [-t n] [--tail] [args...] Execute a program or script"," scan Prints all immediately-available network connections"," scan-analyze [d] [-a] Prints info for all servers up to d nodes away"," scp [file ...] [server] Copies a file to a destination server"," sudov Shows whether you have root access on this computer"," tail [script] [args...] Displays dynamic logs for the specified script"," top Displays all running scripts and their RAM usage"," unalias [alias name] Deletes the specified alias"," vim [file ...] Text editor - Open up and edit one or more scripts or text files in vim mode"," weaken Reduce the security of the current machine"," wget [url] [target file] Retrieves code/text from a web server"," "],r=t=>[`Usage: ${t} [file ...] | [glob]`," ","Opens up the specified file(s) in the Script Editor. Only scripts (.js, .ns, .script) or text files (.txt) ","can be edited using the Script Editor. If a file does not exist a new one will be created"," ",`If provided a glob as the only argument, ${t} can spider directories and open all matching `,`files at once. ${t} cannot create files using globs, so your scripts must already exist.`," ","Examples:"," ",` ${t} test.js`,` ${t} test.js test2.js`," ",` ${t} test.*`,` ${t} /my-dir/*.js`," "],i={alias:['Usage: alias [-g] [name="value"] '," ","Create or display aliases. An alias enables a replacement of a word with another string. ","It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME ","of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, ","you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following: "," ",' alias nuke="run NUKE.exe"'," ","Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. ","It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For ","example, if the following alias was set: "," ",' alias worm="HTTPWorm.exe"'," ","and then you tried to run the following terminal command: "," "," run worm"," ","This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted ","anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag: "," ",' alias -g worm="HTTPWorm.exe"'," ","Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command. "," ","Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form ","'alias NAME=VALUE' on the Terminal. "," ","The 'unalias' command can be used to remove aliases."," "],analyze:["Usage: analyze"," ","Prints details and statistics about the current server. The information that is printed includes basic ","server details such as the hostname, whether the player has root access, what ports are opened/closed, and also ","hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is ","available on the server, etc."," "],backdoor:["Usage: backdoor"," ","Install a backdoor on the current machine, grants a secret bonus depending on the machine."," ","Requires root access to run."," "],buy:["Usage: buy [-l / -a / program]"," ","Purchase a program through the Dark Web. Requires a TOR router to use."," ","If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the ","dark web to the Terminal, as well as their costs."," ","If this command is ran with the '-a' flag, it will attempt to purchase all unowned programs."," ","Otherwise, the name of the program must be passed in as a parameter. This name is NOT case-sensitive."," "],cat:["Usage: cat [file]"," ","Display message (.msg), literature (.lit), or text (.txt) files. Examples:"," "," cat j1.msg"," "," cat foo.lit"," "," cat servers.txt"," "],cd:["Usage: cd [dir]"," ","Change to the specified directory. Note that this works even for directories that don't exist. If you ","change to a directory that does not exist, it will not be 'created'. Examples:"," "," cd scripts/hacking"," "," cd /logs"," "," cd ../"," "],check:["Usage: check [script name] [args...]"," ","Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by ","a space. Remember that a running script is uniquely ","identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments: "," "," run foo.script 1 2 foodnstuff"," ","Then to run the 'check' command on this script you would have to pass the same arguments in: "," "," check foo.script 1 2 foodnstuff"," "],clear:["Usage: clear"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command"," "],cls:["Usage: cls"," ","Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up ","and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command"," "],connect:["Usage: connect [hostname]"," ","Connect to a remote server. The hostname of the remote server must be given as the argument ","to this command. Note that only servers that are immediately adjacent to the current server in the network and the ones that have","a backdoor installed can be connected to. To see which servers can be connected to, use the 'scan' command."," "],cp:["Usage: cp [src] [dst]"," ","Copy a file on this server. To copy a file to another server use scp."," "],download:["Usage: download [script/text file]"," ","Downloads a script or text file to your computer (like your real life computer)."," ","You can also download all of your scripts/text files as a zip file using the following Terminal commands:"," ","Download all scripts and text files: download *"," ","Download all scripts: download *.script"," ","Download all text files: download *.txt"," "],expr:["Usage: expr [mathematical expression]"," ","Evaluate a simple mathematical expression. Supports native JavaScript operators:"," ","+, -, /, *, **, %"," ","Example:"," "," expr 25 * 2 ** 10"," ","Note that letters (non-digits) are not allowed and will be removed from the input."," "],free:["Usage: free"," ","Displays the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as ","how much of it is being used."," "],grow:["Usage: grow"," ","Spoof transactions in the current server. Increasing the money available by hacking. Requires root access.","See the wiki page for hacking mechanics."," "],hack:["Usage: hack"," ","Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics"," "],help:["Usage: help [command]"," ","Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief ","description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print ","more detailed information about the Terminal command. Examples: "," "," help alias"," "," help scan-analyze"," "],history:["Usage: history [-c]"," ","Without arguments, displays the terminal command history. To clear the history, pass in the '-c' argument."," "],home:["Usage: home"," ","Connect to your home computer. This will work no matter what server you are currently connected to."," "],hostname:["Usage: hostname"," ","Prints the hostname of the current server"," "],kill:["Usage: kill [script name] [args...] or kill [pid"," ","Kill the script specified by the script name and arguments OR by its PID."," ","If you are killing the script using its filename and arguments, then each ","argument must be separated by a space. Remember that a running script is ","uniquely identified by both its name and the arguments that are used to start ","it. So, if a script was ran with the following arguments:"," "," run foo.script 1 sigma-cosmetics"," ","Then to kill this script the same arguments would have to be used:"," "," kill foo.script 1 sigma-cosmetics"," ","If you are killing the script using its PID, then the PID argument must be numeric"," "],killall:["Usage: killall"," ","Kills all scripts on the current server. ","Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. ","This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. ","The script will not be stopped/killed until after that time has elapsed."," "],ls:["Usage: ls [dir] [-l] [--grep pattern]"," ","The ls command, with no arguments, prints all files and directories on the current server's directory to the Terminal screen. ","The files will be displayed in alphabetical order. "," ","The 'dir' optional parameter can be used to display files/directories in another directory."," ","The '-l' optional parameter allows you to force each item onto a single line."," ","The '--grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern."," ","Examples:"," ","List all files with the '.script' extension in the current directory:"," "," ls -l --grep .script"," ","List all files with the '.js' extension in the root directory:"," "," ls / -l --grep .js"," ","List all files with the word 'purchase' in the filename, in the 'scripts' directory:"," "," ls scripts -l --grep purchase"," "],lscpu:["Usage: lscpu"," ","Prints the number of CPU Cores the current server has"," "],mem:["Usage: mem [script name] [-t num_threads]"," ","Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print ","the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then ","an argument for the number of threads must be passed in afterwards. Examples:"," "," mem foo.script"," "," mem foo.script -t 50"," ","The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example ","above will print the amount of RAM needed to run 'foo.script' with 50 threads."," "],mv:["Usage: mv [src] [dest]"," ","Move the source file to the specified destination. This can also be used to rename files. ","This command only works for scripts and text files (.txt). This command CANNOT be used to ","convert to different file types"," ","Note that, unlike the Linux 'mv' command, the destination argument must be the ","full filepath. ","Examples: "," "," mv hacking-controller.script scripts/hacking-controller.script"," "," mv myScript.js myOldScript.js"," "],nano:r("nano"),ps:["Usage: ps"," ","Prints all scripts that are running on the current server"," "],rm:["Usage: rm [file]"," ","Removes the specified file from the current server. A file can be a script, a program, or a message file. "," ","WARNING: This is permanent and cannot be undone"," "],run:["Usage: run [file name] [-t] [num threads] [args...]"," ","Execute a program, script or coding contract."," ","The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used ","to indicate that the script should be run with the specified number of threads. If the flag is omitted, ","then the script will be run with a single thread by default. ","If the '-t' flag is used, then it MUST come immediately ","after the script name, and the [num threads] argument MUST come immediately afterwards. "," ","[args...] represents a variable number of arguments that will be passed into the script. See the documentation ","about script arguments. Each specified argument must be separated by a space. "," "],scan:["Usage: scan"," ","Prints all immediately-available network connection. This will print a list of all servers that you can currently connect ","to using the 'connect' Terminal command."," "],"scan-analyze":["Usage: scan-analyze [depth] [-a]"," ","Prints detailed information about all servers up to [depth] nodes away on the network. Calling ","'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal ","command. This command also shows the relative paths to reach each server."," ","By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have ","the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to ","5 and 10, respectively."," ","The information 'scan-analyze' displays about each server includes whether or not you have root access to it, ","its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM ","it has."," ","By default, this command will not display servers that you have purchased. However, you can pass in the ","-a flag at the end of the command if you would like to enable that."," "],scp:["Usage: scp [filename ...] [target server]"," ","Copies the specified file(s) from the current server to the target server. ","This command only works for script files (.script or .js extension), literature files (.lit extension), ","and text files (.txt extension). ","The second argument passed in must be the hostname or IP of the target server. Examples:"," "," scp foo.script n00dles"," "," scp foo.script bar.script n00dles"," "],sudov:["Usage: sudov"," ","Prints whether or not you have root access to the current machine"," "],tail:["Usage: tail [script name] [args...]"," ","Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated ","by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used ","to run it. So, if a script was ran with the following arguments: "," "," run foo.script 10 50000"," ","Then in order to check its logs with 'tail' the same arguments must be used: "," "," tail foo.script 10 50000"," "],top:["Usage: top"," ","Prints a list of all scripts running on the current server as well as their thread count and how much ","RAM they are using in total."," "],unalias:["Usage: unalias [alias name]"," ","Deletes the specified alias. Note that the double quotation marks are required. "," ","As an example, if an alias was declared using:"," ",' alias r="run"'," ","Then it could be removed using:"," "," unalias r"," ","It is not necessary to differentiate between global and non-global aliases when using 'unalias'"," "],vim:r("vim"),weaken:["Usage: weaken"," ","Reduces the security level of the current server. Decreasing the time it takes for all operations on this server.","Requires root access. See the wiki page for hacking mechanics."," "],wget:["Usage: wget [url] [target file]"," ","Retrieves data from a URL and downloads it to a file on the current server. The data can only ","be downloaded to a script (.script, .ns, .js) or a text file (.txt). If the file already exists, ","it will be overwritten by this command."," ","Note that it will not be possible to download data from many websites because they do not allow ","cross-origin resource sharing (CORS). Example:"," "," wget https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md game_readme.txt"," "]}},function(t,e,n){"use strict";n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return c}));var a,r,i=n(26),o=n(249),s=n(9);!function(t){t[t.Production=0]="Production",t[t.Development=1]="Development"}(a||(a={})),function(t){t[t.Browser=0]="Browser",t[t.Steam=1]="Steam"}(r||(r={}));const l="https://github.com/danielyxie/bitburner/issues/new";function c(t,e,n){var c,f,u;const m=function(t,e,n){const i=navigator.userAgent.toLowerCase().indexOf(" electron/")>-1,l=a.Production,c={version:s.a.VersionString,hash:Object(o.a)(),toDisplay:()=>`v${s.a.VersionString} (${Object(o.a)()})`},f={userAgent:navigator.userAgent,language:navigator.language,cookiesEnabled:navigator.cookieEnabled,doNotTrack:navigator.doNotTrack,indexedDb:!!window.indexedDB};return{platform:i?r.Steam:r.Browser,environment:l,version:c,features:f,error:t,errorInfo:e,page:n}}(t,e,n),h=m.error.fileName,d=`lang=${m.features.language} cookiesEnabled=${m.features.cookiesEnabled.toString()} doNotTrack=${m.features.doNotTrack} indexedDb=${m.features.indexedDb.toString()}`,p=`${m.error.name}: ${m.error.message}${m.page&&` (at "${i.a[m.page]}")`}`,g=`\n## ${p}\n\n### How did this happen?\n\nPlease fill this information with details if relevant.\n\n- [ ] Save file\n- [ ] Minimal scripts to reproduce the issue\n- [ ] Steps to reproduce\n\n### Environment\n\n* Error: ${null!==(c=null===(f=m.error)||void 0===f?void 0:f.toString())&&void 0!==c?c:"n/a"}\n* Page: ${m.page?i.a[m.page]:"n/a"}\n* Version: ${m.version.toDisplay()}\n* Environment: ${a[m.environment]}\n* Platform: ${r[m.platform]}\n* UserAgent: ${navigator.userAgent}\n* Features: ${d}\n* Source: ${null!=h?h:"n/a"}\n\n${m.environment===a.Development?`\n### Stack Trace\n\`\`\`\n${null===(u=m.errorInfo)||void 0===u?void 0:u.componentStack.toString().trim()}\n\`\`\`\n`:""}\n### Save\n\`\`\`\nCopy your save here if possible\n\`\`\`\n`.trim();return{metadata:m,fileName:h,features:d,title:p,body:g,issueUrl:`${l}?title=${encodeURIComponent(p)}&body=${encodeURIComponent(g)}`}}},,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(33);function r(t){const e=Math.max(Math.min(t,255),0);return Object(a.a)(0,e)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(33);const r={Tracking:()=>Object(a.a)(5,75)/10,"Bounty Hunter":()=>Object(a.a)(5,75)/10,Retirement:()=>Object(a.a)(5,75)/10,Investigation:()=>Object(a.a)(10,40)/10,"Undercover Operation":()=>Object(a.a)(10,40)/10,"Sting Operation":()=>Object(a.a)(3,40)/10,Raid:()=>Object(a.a)(2,40)/10,"Stealth Retirement Operation":()=>Object(a.a)(1,20)/10,Assassination:()=>Object(a.a)(1,20)/10}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(149);function r(t){const e={},n=Object.keys(a.a);for(let a=0;a=this.cards.length)throw new Error("Tried to remove invalid card from Hand by index: "+t);return new a([...this.cards.slice().splice(t,1)])}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(0),r=n(1),i=n(20),o=n(10);function s(t){return a.createElement(i.a,{title:null!=t.tooltip?a.createElement(r.a,null,t.tooltip):""},a.createElement(o.a,{onClick:t.onClick},t.text))}},,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var a=n(113),r=n(251),i=n(81),o=n(221),s=n(99),l=n(336),c=n(317);function f(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class u{constructor(t={hostname:"",ip:Object(l.a)()}){f(this,"contracts",[]),f(this,"cpuCores",1),f(this,"ftpPortOpen",!1),f(this,"hasAdminRights",!1),f(this,"hostname",""),f(this,"httpPortOpen",!1),f(this,"ip",""),f(this,"isConnectedTo",!1),f(this,"maxRam",0),f(this,"messages",[]),f(this,"organizationName",""),f(this,"programs",[]),f(this,"ramUsed",0),f(this,"runningScripts",[]),f(this,"scripts",[]),f(this,"serversOnNetwork",[]),f(this,"smtpPortOpen",!1),f(this,"sqlPortOpen",!1),f(this,"sshPortOpen",!1),f(this,"textFiles",[]),f(this,"purchasedByPlayer",!1),this.ip=t.ip?t.ip:Object(l.a)(),this.hostname=t.hostname,this.organizationName=null!=t.organizationName?t.organizationName:"",this.isConnectedTo=null!=t.isConnectedTo&&t.isConnectedTo,this.hasAdminRights=null!=t.adminRights&&t.adminRights}addContract(t){this.contracts.push(t)}getContract(t){for(const e of this.contracts)if(e.fn===t)return e;return null}getRunningScript(t,e){for(const n of this.runningScripts)if(n.filename===t&&Object(c.a)(n.args,e))return n;return null}getScript(t){for(let e=0;ee.fn!==t.fn):this.contracts=this.contracts.filter(e=>e.fn!==t)}removeFile(t){if(t.endsWith(".exe")||null!=t.match(/^.+\.exe-\d+(?:\.\d*)?%-INC$/)){for(let e=0;e{h.subscribe(t=>e(t))}),null===t)return r.a.createElement(r.a.Fragment,null);function d(){null!==t&&(t.onClose(),e(null))}const p=o.d[t.c.type],g=[];for(const[e,n]of p.desc(t.c.data).split("\n").entries())g.push(r.a.createElement("span",{key:e,dangerouslySetInnerHTML:{__html:n+"
"}}));return r.a.createElement(l.a,{open:null!==t,onClose:d},r.a.createElement(s.a,{variant:"h4",value:t.c.type}),r.a.createElement(f.a,null,"You are attempting to solve a Coding Contract. You have ",t.c.getMaxNumTries()-t.c.tries," tries remaining, after which the contract will self-destruct."),r.a.createElement("br",null),r.a.createElement(f.a,null,g),r.a.createElement("br",null),r.a.createElement(u.a,{autoFocus:!0,placeholder:"Enter Solution here",value:n,onChange:function(t){c(t.target.value)},onKeyDown:function(e){if(null===t)return;const a=e.target.value;e.key===i.a.ENTER&&""!==a&&(e.preventDefault(),t.onAttempt(n),c(""),d())},InputProps:{endAdornment:r.a.createElement(m.a,{onClick:()=>{t.onAttempt(n),c(""),d()}},"Solve")}}))}},,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return f})),n.d(e,"b",(function(){return u}));var a=n(0),r=n.n(a),i=n(41),o=n(29),s=n(126),l=n(1),c=n(10);const f=new s.a;function u(){const t=o.b.Router(),[e,n]=Object(a.useState)(!1);return Object(a.useEffect)(()=>f.subscribe(()=>n(!0)),[]),r.a.createElement(i.a,{open:e,onClose:()=>n(!1)},r.a.createElement(l.a,null,"WARNING: USING THIS PROGRAM WILL CAUSE YOU TO LOSE ALL OF YOUR PROGRESS ON THE CURRENT BITNODE.",r.a.createElement("br",null),r.a.createElement("br",null),"Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode and select a new one."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{onClick:function(){t.toBitVerse(!0,!1),n(!1)}},"Travel to the BitVerse"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return g}));var a=n(747),r=n(641),i=n(644),o=n(420),s=n(45),l=n(427),c=n(11),f=n(368),u=n(16),m=n(375),h=n(24),d=n(23),p=n(33);class g{constructor(){this.hacking=1,this.hp=10,this.max_hp=10,this.strength=1,this.defense=1,this.dexterity=1,this.agility=1,this.charisma=1,this.intelligence=0,this.hacking_chance_mult=1,this.hacking_speed_mult=1,this.hacking_money_mult=1,this.hacking_grow_mult=1,this.hacking_exp=0,this.strength_exp=0,this.defense_exp=0,this.dexterity_exp=0,this.agility_exp=0,this.charisma_exp=0,this.intelligence_exp=0,this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.money=1e3,this.city=u.a.Sector12,this.location=c.a.TravelAgency,this.jobs={},this.companyName="",this.currentServer="",this.purchasedServers=[],this.hacknetNodes=[],this.hashManager=new f.a,this.factions=[],this.factionInvitations=[],this.queuedAugmentations=[],this.augmentations=[],this.sourceFiles=[],this.numPeopleKilled=0,this.karma=0,this.crime_money_mult=1,this.crime_success_mult=1,this.isWorking=!1,this.focus=!1,this.workType="",this.workCostMult=1,this.workExpMult=1,this.currentWorkFactionName="",this.currentWorkFactionDescription="",this.workHackExpGainRate=0,this.workStrExpGainRate=0,this.workDefExpGainRate=0,this.workDexExpGainRate=0,this.workAgiExpGainRate=0,this.workChaExpGainRate=0,this.workRepGainRate=0,this.workMoneyGainRate=0,this.workMoneyLossRate=0,this.workHackExpGained=0,this.workStrExpGained=0,this.workDefExpGained=0,this.workDexExpGained=0,this.workAgiExpGained=0,this.workChaExpGained=0,this.workRepGained=0,this.workMoneyGained=0,this.createProgramName="",this.createProgramReqLvl=0,this.graftAugmentationName="",this.timeWorkedGraftAugmentation=0,this.className="",this.crimeType="",this.timeWorked=0,this.timeWorkedCreateProgram=0,this.timeNeededToCompleteWork=0,this.work_money_mult=1,this.hacknet_node_money_mult=1,this.hacknet_node_purchase_cost_mult=1,this.hacknet_node_ram_cost_mult=1,this.hacknet_node_core_cost_mult=1,this.hacknet_node_level_cost_mult=1,this.hasWseAccount=!1,this.hasTixApiAccess=!1,this.has4SData=!1,this.has4SDataTixApi=!1,this.gang=null,this.corporation=null,this.bladeburner=null,this.bladeburner_max_stamina_mult=1,this.bladeburner_stamina_gain_mult=1,this.bladeburner_analysis_mult=1,this.bladeburner_success_chance_mult=1,this.sleeves=[],this.sleevesFromCovenant=0,this.bitNodeN=1,this.entropy=0,this.lastUpdate=0,this.lastSave=0,this.totalPlaytime=0,this.playtimeSinceLastAug=0,this.playtimeSinceLastBitnode=0,this.moneySourceA=new m.a,this.moneySourceB=new m.a,this.scriptProdSinceLastAug=0,this.exploits=[],this.achievements=[],this.terminalCommandHistory=[],this.identifier=Object(d.c)("I-"+(new Date).getTime()+navigator.userAgent+window.innerWidth+window.innerHeight+Object(p.a)(100,999)),this.init=s.gb,this.prestigeAugmentation=s.jb,this.prestigeSourceFile=s.kb,this.receiveInvite=s.sb,this.calculateSkill=s.o,this.calculateSkillProgress=s.p,this.updateSkillLevels=s.Rb,this.resetMultipliers=s.vb,this.hasProgram=s.eb,this.setMoney=s.yb,this.gainMoney=s.M,this.loseMoney=s.ib,this.canAfford=s.s,this.recordMoneySource=s.tb,this.gainHackingExp=s.K,this.gainStrengthExp=s.N,this.gainDefenseExp=s.I,this.gainDexterityExp=s.J,this.gainAgilityExp=s.F,this.gainCharismaExp=s.G,this.gainIntelligenceExp=s.L,this.queryStatFromString=s.nb,this.resetWorkStatus=s.wb,this.processWorkEarnings=s.mb,this.startWork=s.Lb,this.cancelationPenalty=s.t,this.work=s.Sb,this.finishWork=s.D,this.startWorkPartTime=s.Mb,this.workPartTime=s.Ub,this.finishWorkPartTime=s.E,this.startFocusing=s.Jb,this.stopFocusing=s.Nb,this.startFactionWork=s.Ib,this.startFactionHackWork=s.Gb,this.startFactionFieldWork=s.Fb,this.startFactionSecurityWork=s.Hb,this.workForFaction=s.Tb,this.finishFactionWork=s.B,this.getWorkMoneyGain=s.X,this.getWorkHackExpGain=s.W,this.getWorkStrExpGain=s.Z,this.getWorkDefExpGain=s.U,this.getWorkDexExpGain=s.V,this.getWorkAgiExpGain=s.S,this.getWorkChaExpGain=s.T,this.getWorkRepGain=s.Y,this.process=s.lb,this.startCreateProgramWork=s.Db,this.createProgramWork=s.x,this.finishCreateProgramWork=s.z,this.startGraftAugmentationWork=s.Kb,this.graftAugmentationWork=s.w,this.finishGraftAugmentationWork=s.C,this.startClass=s.Cb,this.takeClass=s.Ob,this.finishClass=s.y,this.startCrime=s.Eb,this.commitCrime=s.v,this.finishCrime=s.A,this.singularityStopWork=s.Ab,this.takeDamage=s.Pb,this.regenerateHp=s.ub,this.hospitalize=s.fb,this.applyForJob=s.f,this.getNextCompanyPosition=s.R,this.quitJob=s.pb,this.hasJob=s.db,this.applyForSoftwareJob=s.m,this.applyForSoftwareConsultantJob=s.l,this.applyForItJob=s.e,this.applyForSecurityEngineerJob=s.j,this.applyForNetworkEngineerJob=s.g,this.applyForBusinessJob=s.c,this.applyForBusinessConsultantJob=s.b,this.applyForSecurityJob=s.k,this.applyForAgentJob=s.a,this.applyForEmployeeJob=s.d,this.applyForPartTimeEmployeeJob=s.h,this.applyForWaiterJob=s.n,this.applyForPartTimeWaiterJob=s.i,this.isQualified=s.hb,this.reapplyAllAugmentations=s.qb,this.reapplyAllSourceFiles=s.rb,this.checkForFactionInvitations=s.u,this.setBitNodeNumber=s.xb,this.queueAugmentation=s.ob,this.gainCodingContractReward=s.H,this.travel=s.Qb,this.gotoLocation=s.cb,this.canAccessGrafting=s.r,this.giveExploit=s.bb,this.giveAchievement=s.ab,this.getIntelligenceBonus=s.P,this.getCasinoWinnings=s.O,this.hasAugmentation=a.b,this.canAccessBladeburner=r.a,this.inBladeburner=r.b,this.startBladeburner=r.c,this.canAccessCorporation=i.a,this.hasCorporation=i.b,this.startCorporation=i.c,this.canAccessGang=o.a,this.getGangFaction=o.b,this.getGangName=o.c,this.hasGangWith=o.d,this.inGang=o.e,this.startGang=o.f,this.hasTorRouter=l.f,this.getCurrentServer=l.b,this.getHomeComputer=l.c,this.getUpgradeHomeRamCost=l.e,this.getUpgradeHomeCoresCost=l.d,this.createHacknetServer=l.a,this.factionWorkType="",this.committingCrimeThruSingFn=!1,this.singFnCrimeWorkerScript=null,this.getMult=s.Q,this.setMult=s.zb,this.canAccessCotMG=s.q,this.sourceFileLvl=s.Bb,this.applyEntropy=a.a}toJSON(){return Object(h.b)("PlayerObject",this)}static fromJSON(t){return Object(h.a)(g,t.data)}}h.c.constructors.PlayerObject=g},function(t,e,n){"use strict";n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return m}));var a=n(0),r=n.n(a),i=n(106),o=n(41),s=n(29),l=n(126),c=n(1),f=n(10);const u=new l.a;function m(){const[t,e]=Object(a.useState)(null),n=s.b.Player();return Object(a.useEffect)(()=>u.subscribe(t=>e(t)),[]),r.a.createElement(o.a,{open:null!==t,onClose:()=>e(null)},r.a.createElement(c.a,{variant:"h4"},"You have received a faction invitation."),r.a.createElement(c.a,null,"Would you like to join ",(t||{name:""}).name,"? ",r.a.createElement("br",null),r.a.createElement("br",null),"Warning: Joining this faction may prevent you from joining other factions during this run!"),r.a.createElement(f.a,{onClick:function(){if(null===t)return;-1===n.factionInvitations.findIndex(e=>e===t.name)&&console.error("Could not find faction in Player.factionInvitations"),Object(i.e)(t),e(null)}},"Join!"),r.a.createElement(f.a,{onClick:()=>e(null)},"Decide later"))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var a=n(1006),r=n(15);function i(t){const e=a.a[t];if(null==e)return;const n=`${e.title}

${e.txt}`;Object(r.a)(n)}},function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));class a{constructor(t,e,n,a,r){this.name=t,this.desc=e,this.isHacking=n,this.isCombat=a,this.baseRespect=r.baseRespect?r.baseRespect:0,this.baseWanted=r.baseWanted?r.baseWanted:0,this.baseMoney=r.baseMoney?r.baseMoney:0,this.hackWeight=r.hackWeight?r.hackWeight:0,this.strWeight=r.strWeight?r.strWeight:0,this.defWeight=r.defWeight?r.defWeight:0,this.dexWeight=r.dexWeight?r.dexWeight:0,this.agiWeight=r.agiWeight?r.agiWeight:0,this.chaWeight=r.chaWeight?r.chaWeight:0,100!=Math.round(this.hackWeight+this.strWeight+this.defWeight+this.dexWeight+this.agiWeight+this.chaWeight)&&console.error(`GangMemberTask ${this.name} weights do not add up to 100`),this.difficulty=r.difficulty?r.difficulty:1,this.territory=r.territory?r.territory:{money:1,respect:1,wanted:1}}}},function(t,e,n){"use strict";function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}));class r{constructor(t,e){a(this,"lvl",1),a(this,"n",1),this.n=t,this.lvl=e}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var a=n(252),r=function(t,e,n=0){this.sourceCode=t,this.sourceCodeLineOffset=n,"string"==typeof t&&(t=a.a(t,r.PARSE_OPTIONS)),this.ast=t,this.initFunc_=e,this.paused_=!1,this.polyfills_=[],this.functionCounter_=0,this.stepFunctions_=Object.create(null);var i,o,s=/^step([A-Z]\w*)$/;for(var l in this)"function"==typeof this[l]&&(i=l.match(s))&&(this.stepFunctions_[i[1]]=this[l].bind(this));this.global=this.createScope(this.ast,null),this.ast=a.a(this.polyfills_.join("\n"),r.PARSE_OPTIONS),this.polyfills_=void 0,this.stripLocations_(this.ast,void 0,void 0),(o=new r.State(this.ast,this.global)).done=!1,this.stateStack=[o],this.run(),this.value=void 0,this.ast=t,(o=new r.State(this.ast,this.global)).done=!1,this.stateStack.length=0,this.stateStack[0]=o,this.nodeConstructor=o.node.constructor,this.stateStack=this.stateStack}; /** * @license * JavaScript Interpreter