mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-22 22:22:26 +01:00
f1c2dc2693
Fix `constants()` function typing for hacknet nodes/servers
20 lines
1.8 MiB
20 lines
1.8 MiB
!function(e){function t(t){for(var n,o,s=t[0],l=t[1],c=t[2],m=0,h=[];m<s.length;m++)o=s[m],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&h.push(r[o][0]),r[o]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(u&&u(t);h.length;)h.shift()();return i.push.apply(i,c||[]),a()}function a(){for(var e,t=0;t<i.length;t++){for(var a=i[t],n=!0,s=1;s<a.length;s++){var l=a[s];0!==r[l]&&(n=!1)}n&&(i.splice(t--,1),e=o(o.s=a[0]))}return e}var n={},r={1:0},i=[];function o(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,o),a.l=!0,a.exports}o.m=e,o.c=n,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="";var s=window.webpackJsonp=window.webpackJsonp||[],l=s.push.bind(s);s.push=t,s=s.slice();for(var c=0;c<s.length;c++)t(s[c]);var u=l;i.push([1297,0]),a()}([,,function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"b",(function(){return s}));var n=a(811),r=a(109),i=a(21);let o=new n.a;function s(e){o=JSON.parse(e,i.c),o.money=parseFloat(o.money),o.exploits=Object(r.c)(o.exploits)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(166),r=a.n(n),i=(a(1306),a(1307),a(1308),a(1309),a(1310),a(1311),a(1312),a(1313),a(1314),a(1315),a(1316),a(1317),a(1318),a(1319),a(11));const o=[1e15,1e18,1e21,1e24,1e27,1e30],s=["q","Q","s","S","o","n"],l=1e9,c=2**30;const u=new class{constructor(){var e,t,a;a="en",(t="defaultLocale")in(e=this)?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,this.defaultLocale="en"}updateLocale(e){return null!=r.a.locale(e)||(console.warn("Invalid locale for numeral: "+e),r.a.locale(this.defaultLocale),!1)}format(e,t){Math.abs(e)<1e-6&&(e=0);const a=r()(e).format(t);return"NaN"===a?""+e:a}formatBigNumber(e){return this.format(e,"0.000a")}formatReallyBigNumber(e,t=3){if(e===1/0)return"∞";for(let a=0;a<o.length;a++)if(o[a]<e&&e<=1e3*o[a])return this.format(e/o[a],"0."+"0".repeat(t))+s[a];if(Math.abs(e)<1e3)return this.format(e,"0."+"0".repeat(t));const a=this.format(e,"0."+"0".repeat(t)+"a");return"NaNt"===a?this.format(e,"0."+" ".repeat(t)+"e+0"):a}formatHp(e){return e<1e6?this.format(e,"0,0"):this.formatReallyBigNumber(e)}formatMoney(e){return"$"+this.formatReallyBigNumber(e)}formatSkill(e){return e<1e15?this.format(e,"0,0"):this.formatReallyBigNumber(e)}formatExp(e){return this.formatReallyBigNumber(e)}formatHashes(e){return this.formatReallyBigNumber(e)}formatReputation(e){return this.formatReallyBigNumber(e)}formatFavor(e){return this.format(e,"0,0")}formatSecurity(e){return e.toFixed(3)}formatRAM(e){return i.a.UseIEC60027_2?this.format(e*c,"0.00ib"):this.format(e*l,"0.00b")}formatPercentage(e,t=2){const a="0."+"0".repeat(t)+"%";return this.format(e,a)}formatServerSecurity(e){return this.format(e,"0,0.000")}formatRespect(e){return this.formatReallyBigNumber(e,5)}formatWanted(e){return this.formatReallyBigNumber(e,5)}formatMultiplier(e){return this.format(e,"0,0.00")}formatSleeveShock(e){return this.format(e,"0,0.000")}formatSleeveSynchro(e){return this.format(e,"0,0.000")}formatSleeveMemory(e){return this.format(e,"0")}formatPopulation(e){return this.format(e,"0.000a")}formatStamina(e){return this.format(e,"0.0")}formatShares(e){return e<1e3?this.format(e,"0"):this.formatReallyBigNumber(e)}formatInfiltrationSecurity(e){return this.formatReallyBigNumber(e)}formatThreads(e){return this.format(e,"0,0")}formatStaneksGiftHeat(e){return this.format(e,"0.000a")}formatStaneksGiftCharge(e){return this.format(e,"0.000a")}formatStaneksGiftPower(e){return this.format(e,"0.00")}parseMoney(e){const t=r()(e).value(),a=parseFloat(e);return isNaN(a)&&null===t?NaN:isNaN(a)?t:null===t?a:Math.max(t,a)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={HackingLevelMultiplier:1,StrengthLevelMultiplier:1,DefenseLevelMultiplier:1,DexterityLevelMultiplier:1,AgilityLevelMultiplier:1,CharismaLevelMultiplier:1,ServerGrowthRate:1,ServerMaxMoney:1,ServerStartingMoney:1,ServerStartingSecurity:1,ServerWeakenRate:1,HomeComputerRamCost:1,PurchasedServerCost:1,PurchasedServerSoftcap:1,PurchasedServerLimit:1,PurchasedServerMaxRam:1,CompanyWorkMoney:1,CrimeMoney:1,HacknetNodeMoney:1,ManualHackMoney:1,ScriptHackMoney:1,ScriptHackMoneyGain:1,CodingContractMoney:1,ClassGymExpGain:1,CompanyWorkExpGain:1,CrimeExpGain:1,FactionWorkExpGain:1,HackExpGain:1,FactionPassiveRepGain:1,FactionWorkRepGain:1,RepToDonateToFaction:1,AugmentationMoneyCost:1,AugmentationRepCost:1,InfiltrationMoney:1,InfiltrationRep:1,FourSigmaMarketDataCost:1,FourSigmaMarketDataApiCost:1,CorporationValuation:1,CorporationSoftCap:1,BladeburnerRank:1,BladeburnerSkillCost:1,GangSoftcap:1,DaedalusAugsRequirement:1,StaneksGiftPowerMultiplier:1,StaneksGiftExtraSize:0,WorldDaemonDifficulty:1}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Targeting1:"Augmented Targeting I",Targeting2:"Augmented Targeting II",Targeting3:"Augmented Targeting III",SyntheticHeart:"Synthetic Heart",SynfibrilMuscle:"Synfibril Muscle",CombatRib1:"Combat Rib I",CombatRib2:"Combat Rib II",CombatRib3:"Combat Rib III",NanofiberWeave:"Nanofiber Weave",SubdermalArmor:"NEMEAN Subdermal Weave",WiredReflexes:"Wired Reflexes",GrapheneBoneLacings:"Graphene Bone Lacings",BionicSpine:"Bionic Spine",GrapheneBionicSpine:"Graphene Bionic Spine Upgrade",BionicLegs:"Bionic Legs",GrapheneBionicLegs:"Graphene Bionic Legs Upgrade",SpeechProcessor:"Speech Processor Implant",TITN41Injection:"TITN-41 Gene-Modification Injection",EnhancedSocialInteractionImplant:"Enhanced Social Interaction Implant",BitWire:"BitWire",ArtificialBioNeuralNetwork:"Artificial Bio-neural Network Implant",ArtificialSynapticPotentiation:"Artificial Synaptic Potentiation",EnhancedMyelinSheathing:"Enhanced Myelin Sheathing",SynapticEnhancement:"Synaptic Enhancement Implant",NeuralRetentionEnhancement:"Neural-Retention Enhancement",DataJack:"DataJack",ENM:"Embedded Netburner Module",ENMCore:"Embedded Netburner Module Core Implant",ENMCoreV2:"Embedded Netburner Module Core V2 Upgrade",ENMCoreV3:"Embedded Netburner Module Core V3 Upgrade",ENMAnalyzeEngine:"Embedded Netburner Module Analyze Engine",ENMDMA:"Embedded Netburner Module Direct Memory Access Upgrade",Neuralstimulator:"Neuralstimulator",NeuralAccelerator:"Neural Accelerator",CranialSignalProcessorsG1:"Cranial Signal Processors - Gen I",CranialSignalProcessorsG2:"Cranial Signal Processors - Gen II",CranialSignalProcessorsG3:"Cranial Signal Processors - Gen III",CranialSignalProcessorsG4:"Cranial Signal Processors - Gen IV",CranialSignalProcessorsG5:"Cranial Signal Processors - Gen V",NeuronalDensification:"Neuronal Densification",NeuroreceptorManager:"Neuroreceptor Management Implant",NuoptimalInjectorImplant:"Nuoptimal Nootropic Injector Implant",SpeechEnhancement:"Speech Enhancement",FocusWire:"FocusWire",PCDNI:"PC Direct-Neural Interface",PCDNIOptimizer:"PC Direct-Neural Interface Optimization Submodule",PCDNINeuralNetwork:"PC Direct-Neural Interface NeuroNet Injector",PCMatrix:"PCMatrix",ADRPheromone1:"ADR-V1 Pheromone Gene",ADRPheromone2:"ADR-V2 Pheromone Gene",ShadowsSimulacrum:"The Shadow's Simulacrum",HacknetNodeCPUUpload:"Hacknet Node CPU Architecture Neural-Upload",HacknetNodeCacheUpload:"Hacknet Node Cache Architecture Neural-Upload",HacknetNodeNICUpload:"Hacknet Node NIC Architecture Neural-Upload",HacknetNodeKernelDNI:"Hacknet Node Kernel Direct-Neural Interface",HacknetNodeCoreDNI:"Hacknet Node Core Direct-Neural Interface",NeuroFluxGovernor:"NeuroFlux Governor",Neurotrainer1:"Neurotrainer I",Neurotrainer2:"Neurotrainer II",Neurotrainer3:"Neurotrainer III",Hypersight:"HyperSight Corneal Implant",LuminCloaking1:"LuminCloaking-V1 Skin Implant",LuminCloaking2:"LuminCloaking-V2 Skin Implant",HemoRecirculator:"HemoRecirculator",SmartSonar:"SmartSonar Implant",PowerRecirculator:"Power Recirculation Core",QLink:"QLink",TheRedPill:"The Red Pill",SPTN97:"SPTN-97 Gene Modification",HiveMind:"ECorp HVMind Implant",CordiARCReactor:"CordiARC Fusion Reactor",SmartJaw:"SmartJaw",Neotra:"Neotra",Xanipher:"Xanipher",nextSENS:"nextSENS Gene Modification",OmniTekInfoLoad:"OmniTek InfoLoad",PhotosyntheticCells:"Photosynthetic Cells",Neurolink:"BitRunners Neurolink",TheBlackHand:"The Black Hand",UnstableCircadianModulator:"Unstable Circadian Modulator",CRTX42AA:"CRTX42-AA Gene Modification",Neuregen:"Neuregen Gene Modification",CashRoot:"CashRoot Starter Kit",NutriGen:"NutriGen Implant",INFRARet:"INFRARET Enhancement",DermaForce:"DermaForce Particle Barrier",GrapheneBrachiBlades:"Graphene BrachiBlades Upgrade",GrapheneBionicArms:"Graphene Bionic Arms Upgrade",BrachiBlades:"BrachiBlades",BionicArms:"Bionic Arms",SNA:"Social Negotiation Assistant (S.N.A)",HydroflameLeftArm:"Hydroflame Left Arm",EsperEyewear:"EsperTech Bladeburner Eyewear",EMS4Recombination:"EMS-4 Recombination",OrionShoulder:"ORION-MKIV Shoulder",HyperionV1:"Hyperion Plasma Cannon V1",HyperionV2:"Hyperion Plasma Cannon V2",GolemSerum:"GOLEM Serum",VangelisVirus:"Vangelis Virus",VangelisVirus3:"Vangelis Virus 3.0",INTERLINKED:"I.N.T.E.R.L.I.N.K.E.D",BladeRunner:"Blade's Runners",BladeArmor:"BLADE-51b Tesla Armor",BladeArmorPowerCells:"BLADE-51b Tesla Armor: Power Cells Upgrade",BladeArmorEnergyShielding:"BLADE-51b Tesla Armor: Energy Shielding Upgrade",BladeArmorUnibeam:"BLADE-51b Tesla Armor: Unibeam Upgrade",BladeArmorOmnibeam:"BLADE-51b Tesla Armor: Omnibeam Upgrade",BladeArmorIPU:"BLADE-51b Tesla Armor: IPU Upgrade",BladesSimulacrum:"The Blade's Simulacrum",StaneksGift1:"Stanek's Gift - Genesis",StaneksGift2:"Stanek's Gift - Awakening",StaneksGift3:"Stanek's Gift - Serenity"}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={VersionString:"1.3.0",VersionNumber:9,_idleSpeed:200,MaxSkillLevel:975,MilliPerCycle:200,CorpFactionRepRequirement:2e5,BaseCostFor1GBOfRamHome:32e3,BaseCostFor1GBOfRamServer:55e3,TravelCost:2e5,BaseFavorToDonate:150,DonateMoneyToRepDivisor:1e6,FactionReputationToFavorBase:500,FactionReputationToFavorMult:1.02,CompanyReputationToFavorBase:500,CompanyReputationToFavorMult:1.02,NeuroFluxGovernorLevelMult:1.14,NumNetscriptPorts:20,HomeComputerMaxRam:1073741824,ServerBaseGrowthRate:1.03,ServerMaxGrowthRate:1.0035,ServerFortifyAmount:.002,ServerWeakenAmount:.05,PurchasedServerLimit:25,PurchasedServerMaxRam:1048576,MultipleAugMultiplier:1.9,TorRouterCost:2e5,WSEAccountCost:2e8,TIXAPICost:5e9,MarketData4SCost:1e9,MarketDataTixApi4SCost:25e9,StockMarketCommission:1e5,HospitalCostPerHp:1e5,IntelligenceCrimeWeight:.025,IntelligenceInfiltrationWeight:.1,IntelligenceCrimeBaseExpGain:.05,IntelligenceProgramBaseExpGain:.1,IntelligenceTerminalHackBaseExpGain:200,IntelligenceSingFnBaseExpGain:1.5,IntelligenceClassBaseExpGain:.01,MillisecondsPer20Hours:72e6,GameCyclesPer20Hours:36e4,MillisecondsPer10Hours:36e6,GameCyclesPer10Hours:18e4,MillisecondsPer8Hours:288e5,GameCyclesPer8Hours:144e3,MillisecondsPer4Hours:144e5,GameCyclesPer4Hours:72e3,MillisecondsPer2Hours:72e5,GameCyclesPer2Hours:36e3,MillisecondsPerHour:36e5,GameCyclesPerHour:18e3,MillisecondsPerHalfHour:18e5,GameCyclesPerHalfHour:9e3,MillisecondsPerQuarterHour:9e5,GameCyclesPerQuarterHour:4500,MillisecondsPerFiveMinutes:3e5,GameCyclesPerFiveMinutes:1500,BaseFocusBonus:.8,FactionWorkHacking:"Faction Hacking Work",FactionWorkField:"Faction Field Work",FactionWorkSecurity:"Faction Security Work",WorkTypeCompany:"Working for Company",WorkTypeCompanyPartTime:"Working for Company part-time",WorkTypeFaction:"Working for Faction",WorkTypeCreateProgram:"Working on Create a Program",WorkTypeStudyClass:"Studying or Taking a class at university",WorkTypeCrime:"Committing a crime",ClassStudyComputerScience:"studying Computer Science",ClassDataStructures:"taking a Data Structures course",ClassNetworks:"taking a Networks course",ClassAlgorithms:"taking an Algorithms course",ClassManagement:"taking a Management course",ClassLeadership:"taking a Leadership course",ClassGymStrength:"training your strength at a gym",ClassGymDefense:"training your defense at a gym",ClassGymDexterity:"training your dexterity at a gym",ClassGymAgility:"training your agility at a gym",ClassDataStructuresBaseCost:40,ClassNetworksBaseCost:80,ClassAlgorithmsBaseCost:320,ClassManagementBaseCost:160,ClassLeadershipBaseCost:320,ClassGymBaseCost:120,ClassStudyComputerScienceBaseExp:.5,ClassDataStructuresBaseExp:1,ClassNetworksBaseExp:2,ClassAlgorithmsBaseExp:4,ClassManagementBaseExp:2,ClassLeadershipBaseExp:4,CrimeShoplift:"shoplift",CrimeRobStore:"rob a store",CrimeMug:"mug someone",CrimeLarceny:"commit larceny",CrimeDrugs:"deal drugs",CrimeBondForgery:"forge corporate bonds",CrimeTraffickArms:"traffick illegal arms",CrimeHomicide:"commit homicide",CrimeGrandTheftAuto:"commit grand theft auto",CrimeKidnap:"kidnap someone for ransom",CrimeAssassination:"assassinate a high-profile target",CrimeHeist:"pull off the ultimate heist",CodingContractBaseFactionRepGain:2500,CodingContractBaseCompanyRepGain:4e3,CodingContractBaseMoneyGain:75e6,TotalNumBitNodes:24,LatestUpdate:"\n v1.3.0 - 2022-01-04 Cleaning up\n -------------------------------\n\n ** External IDE integration **\n\n * The Steam version has a webserver that allows integration with external IDEs.\n A VSCode extension is available on the market place. (The documentation for the ext. isn't\n written yet)\n\n ** Source-Files **\n \n * SF4 has been reworked.\n * New SF -1.\n\n ** UI **\n\n * Fix some edge case with skill bat tooltips (@MartinFournier)\n * Made some background match theme color (@Kejikus)\n * Fix problem with script editor height not adjusting correctly (@billyvg)\n * Fix some formatting issues with Bladeburner (@MartinFournier, @nickofolas)\n * Fix some functions like 'alert' format messages better (@MageKing17)\n * Many community themes added.\n * New script editor theme (@Hedrauta, @Dexalt142)\n * Improvements to tail windows (@theit8514)\n * Training is more consise (@mikomyazaki)\n * Fix Investopedia not displaying properly (@JotaroS)\n * Remove alpha from theme editor (@MartinFournier)\n * Fix corporation tooltip not displaying properly (@MartinFournier)\n * Add tooltip on backdoored location names (@MartinFournier)\n * Allow toasts to be dismissed by clicking them (@nickofolas)\n * Darkweb item listing now shows what you own. (@hexnaught)\n\n ** Bug fix **\n\n * Fix unit tests (@MartinFournier)\n * Fixed issue with 'cat' and 'read' not finding foldered files (@Nick-Colclasure)\n * Buying on the dark web will remove incomplete exe (@hexnaught)\n * Fix bug that would cause the game to crash trying to go to a job without a job (@hexnaught)\n * purchaseServer validation (@nickofolas)\n * Script Editor focuses code when changing tab (@MartinFournier)\n * Fix script editor for .txt files (@65-7a)\n * Fix 'buy' command not displaying correctly. (@hexnaught)\n * Fix hackAnalyzeThread returning NaN (@mikomyazaki)\n * Electron handles exceptions better (@MageKing17)\n * Electron will handle 'unresponsive' event and present the opportunity to reload the game with no scripts (@MartinFournier)\n * Fix 'cp' between folders (@theit8514)\n * Fix throwing null/undefined errors (@nickofolas)\n * Allow shortcuts to work when unfocused (@MageKing17)\n * Fix some dependency issue (@locriacyber)\n * Fix corporation state returning an object instead of a string (@antonvmironov)\n * Fix 'mv' overwriting files (@theit8514)\n * Fix joesguns not being influenced by hack/grow (@dou867, @MartinFournier)\n * Added warning when opening external links. (@MartinFournier)\n * Prevent applying for positions that aren't offered (@TheMas3212)\n * Import has validation (@MartinFournier)\n\n ** Misc. **\n\n * Added vim mode to script editor (@billyvg)\n * Clean up script editor code (@Rez855)\n * 'cat' works on scripts (@65-7a)\n * Add wordWrap for Monaco (@MartinFournier)\n * Include map bundles in electron for easier debugging (@MartinFournier)\n * Fix importing very large files (@MartinFournier)\n * Cache program blob, reducing ram usage of the game (@theit8514)\n * Dev menu can set server to $0 (@mikomyazaki)\n * 'backdoor' allows direct connect (@mikomyazaki)\n * Github workflow work (@MartinFournier)\n * workForFaction / workForCompany have a new parameter (@theit8514)\n * Alias accept single quotes (@sporkwitch, @FaintSpeaker)\n * Add grep options to 'ps' (@maxtimum)\n * Added buy all option to 'buy' (@anthonydroberts)\n * Added more shortcuts to terminal input (@Frank-py)\n * Refactor some port code (@ErzengelLichtes)\n * Settings to control GiB vs GB (@ErzengelLichtes)\n * Add electron option to export save game (@MartinFournier)\n * Electron improvements (@MartinFournier)\n * Expose some notifications functions to electron (@MartinFournier)\n * Documentation (@MartinFournier, @cyn, @millennIumAMbiguity, @2PacIsAlive,\n @TheCoderJT, @hexnaught, @sschmidTU, @FOLLGAD, @Hedrauta, @Xynrati,\n @mikomyazaki, @Icehawk78, @aaronransley, @TheMas3212, @Hedrauta, @alkemann,\n @ReeseJones, @amclark42, @thadguidry, @jasonhaxstuff, @pan-kuleczka, @jhollowe,\n @ApatheticsAnonymous, @erplsf, @daanflore, @nickofolas, @Kebap, @smolgumball,\n @woody-lam-cwl)\n"}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven",e.AevumAeroCorp="AeroCorp",e.AevumBachmanAndAssociates="Bachman & Associates",e.AevumClarkeIncorporated="Clarke Incorporated",e.AevumCrushFitnessGym="Crush Fitness Gym",e.AevumECorp="ECorp",e.AevumFulcrumTechnologies="Fulcrum Technologies",e.AevumGalacticCybersystems="Galactic Cybersystems",e.AevumNetLinkTechnologies="NetLink Technologies",e.AevumPolice="Aevum Police Headquarters",e.AevumRhoConstruction="Rho Construction",e.AevumSnapFitnessGym="Snap Fitness Gym",e.AevumSummitUniversity="Summit University",e.AevumWatchdogSecurity="Watchdog Security",e.AevumCasino="Iker Molina Casino",e.ChongqingKuaiGongInternational="KuaiGong International",e.ChongqingSolarisSpaceSystems="Solaris Space Systems",e.ChongqingChurchOfTheMachineGod="Church of the Machine God",e.Sector12AlphaEnterprises="Alpha Enterprises",e.Sector12BladeIndustries="Blade Industries",e.Sector12CIA="Central Intelligence Agency",e.Sector12CarmichaelSecurity="Carmichael Security",e.Sector12CityHall="Sector-12 City Hall",e.Sector12DeltaOne="DeltaOne",e.Sector12FoodNStuff="FoodNStuff",e.Sector12FourSigma="Four Sigma",e.Sector12IcarusMicrosystems="Icarus Microsystems",e.Sector12IronGym="Iron Gym",e.Sector12JoesGuns="Joe's Guns",e.Sector12MegaCorp="MegaCorp",e.Sector12NSA="National Security Agency",e.Sector12PowerhouseGym="Powerhouse Gym",e.Sector12RothmanUniversity="Rothman University",e.Sector12UniversalEnergy="Universal Energy",e.NewTokyoDefComm="DefComm",e.NewTokyoGlobalPharmaceuticals="Global Pharmaceuticals",e.NewTokyoNoodleBar="Noodle Bar",e.NewTokyoVitaLife="VitaLife",e.IshimaNovaMedical="Nova Medical",e.IshimaOmegaSoftware="Omega Software",e.IshimaStormTechnologies="Storm Technologies",e.IshimaGlitch="0x6C1",e.VolhavenCompuTek="CompuTek",e.VolhavenHeliosLabs="Helios Labs",e.VolhavenLexoCorp="LexoCorp",e.VolhavenMilleniumFitnessGym="Millenium Fitness Gym",e.VolhavenNWO="NWO",e.VolhavenOmniTekIncorporated="OmniTek Incorporated",e.VolhavenOmniaCybersystems="Omnia Cybersystems",e.VolhavenSysCoreSecurities="SysCore Securities",e.VolhavenZBInstituteOfTechnology="ZB Institute of Technology",e.Hospital="Hospital",e.Slums="The Slums",e.TravelAgency="Travel Agency",e.WorldStockExchange="World Stock Exchange",e.Void="The Void"}(n||(n={}))},,function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return s}));var n=a(194),r=a(363),i=a(364);const o={ActiveScriptsServerPageSize:10,ActiveScriptsScriptPageSize:10,AutosaveInterval:60,CodeInstructionRunTime:50,DisableASCIIArt:!1,DisableHotkeys:!1,DisableTextEffects:!1,DisableOverviewProgressBars:!1,EnableBashHotkeys:!1,TimestampsFormat:"",Locale:"en",MaxLogCapacity:50,MaxPortCapacity:50,MaxTerminalCapacity:500,SaveGameOnFileSave:!0,SuppressBuyAugmentationConfirmation:!1,SuppressFactionInvites:!1,SuppressMessages:!1,SuppressTravelConfirmation:!1,SuppressBladeburnerPopup:!1,SuppressTIXPopup:!1,SuppressSavedGameToast:!1,UseIEC60027_2:!1,ExcludeRunningScriptsFromSave:!1,theme:r.a,styles:i.a,overview:{x:0,y:0,opened:!0}},s={ActiveScriptsServerPageSize:o.ActiveScriptsServerPageSize,ActiveScriptsScriptPageSize:o.ActiveScriptsScriptPageSize,AutosaveInterval:o.AutosaveInterval,CodeInstructionRunTime:25,DisableASCIIArt:o.DisableASCIIArt,DisableHotkeys:o.DisableHotkeys,DisableTextEffects:o.DisableTextEffects,DisableOverviewProgressBars:o.DisableOverviewProgressBars,EnableBashHotkeys:o.EnableBashHotkeys,TimestampsFormat:o.TimestampsFormat,Locale:"en",MaxLogCapacity:o.MaxLogCapacity,MaxPortCapacity:o.MaxPortCapacity,MaxTerminalCapacity:o.MaxTerminalCapacity,OwnedAugmentationsOrder:n.a.AcquirementTime,PurchaseAugmentationsOrder:n.b.Default,SaveGameOnFileSave:o.SaveGameOnFileSave,SuppressBuyAugmentationConfirmation:o.SuppressBuyAugmentationConfirmation,SuppressFactionInvites:o.SuppressFactionInvites,SuppressMessages:o.SuppressMessages,SuppressTravelConfirmation:o.SuppressTravelConfirmation,SuppressBladeburnerPopup:o.SuppressBladeburnerPopup,SuppressTIXPopup:o.SuppressTIXPopup,SuppressSavedGameToast:o.SuppressSavedGameToast,UseIEC60027_2:o.UseIEC60027_2,ExcludeRunningScriptsFromSave:o.ExcludeRunningScriptsFromSave,MonacoTheme:"monokai",MonacoInsertSpaces:!1,MonacoFontSize:20,MonacoVim:!1,MonacoWordWrap:"off",theme:{...r.a},styles:{...i.a},overview:o.overview,init(){Object.assign(s,o)},load(e){const t=JSON.parse(e);Object.assign(s.theme,t.theme),delete t.theme,Object.assign(s.styles,t.styles),delete t.styles,Object.assign(s.overview,t.overview),delete t.overview,Object.assign(s,t)}}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o}));const n={ScriptBaseRamCost:1.6,ScriptDomRamCost:25,ScriptCorporationRamCost:1022.4,ScriptHackRamCost:.1,ScriptHackAnalyzeRamCost:1,ScriptGrowRamCost:.15,ScriptGrowthAnalyzeRamCost:1,ScriptWeakenRamCost:.15,ScriptWeakenAnalyzeRamCost:1,ScriptScanRamCost:.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,ScriptStanekCharge:.4,ScriptStanekFragmentDefinitions:0,ScriptStanekPlacedFragments:5,ScriptStanekClear:0,ScriptStanekCanPlace:.5,ScriptStanekPlace:5,ScriptStanekFragmentAt:2,ScriptStanekDeleteAt:.15};function r(e){return t=>{if(4===t.bitNodeN)return e;const a=t.sourceFileLvl(4);return a<=1?16*e:2===a?4*e:e}}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:n.ScriptScanRamCost,hack:n.ScriptHackRamCost,hackAnalyzeThreads:n.ScriptHackAnalyzeRamCost,hackAnalyze:n.ScriptHackAnalyzeRamCost,hackAnalyzeSecurity:n.ScriptHackAnalyzeRamCost,hackAnalyzeChance:n.ScriptHackAnalyzeRamCost,sleep:0,grow:n.ScriptGrowRamCost,growthAnalyze:n.ScriptGrowthAnalyzeRamCost,growthAnalyzeSecurity:n.ScriptGrowthAnalyzeRamCost,weaken:n.ScriptWeakenRamCost,weakenAnalyze:n.ScriptWeakenAnalyzeRamCost,print:0,tprint:0,clearLog:0,disableLog:0,enableLog:0,isLogEnabled:0,getScriptLogs:0,nuke:n.ScriptPortProgramRamCost,brutessh:n.ScriptPortProgramRamCost,ftpcrack:n.ScriptPortProgramRamCost,relaysmtp:n.ScriptPortProgramRamCost,httpworm:n.ScriptPortProgramRamCost,sqlinject:n.ScriptPortProgramRamCost,run:n.ScriptRunRamCost,exec:n.ScriptExecRamCost,spawn:n.ScriptSpawnRamCost,kill:n.ScriptKillRamCost,killall:n.ScriptKillRamCost,exit:0,scp:n.ScriptScpRamCost,ls:n.ScriptScanRamCost,ps:n.ScriptScanRamCost,hasRootAccess:n.ScriptHasRootAccessRamCost,getIp:n.ScriptGetHostnameRamCost,getHostname:n.ScriptGetHostnameRamCost,getHackingLevel:n.ScriptGetHackingLevelRamCost,getHackingMultipliers:n.ScriptGetMultipliersRamCost,getHacknetMultipliers:n.ScriptGetMultipliersRamCost,getBitNodeMultipliers:n.ScriptGetMultipliersRamCost,getServer:n.ScriptGetMultipliersRamCost/2,getServerMoneyAvailable:n.ScriptGetServerRamCost,getServerSecurityLevel:n.ScriptGetServerRamCost,getServerBaseSecurityLevel:n.ScriptGetServerRamCost,getServerMinSecurityLevel:n.ScriptGetServerRamCost,getServerRequiredHackingLevel:n.ScriptGetServerRamCost,getServerMaxMoney:n.ScriptGetServerRamCost,getServerGrowth:n.ScriptGetServerRamCost,getServerNumPortsRequired:n.ScriptGetServerRamCost,getServerRam:n.ScriptGetServerRamCost,getServerMaxRam:n.ScriptGetServerMaxRam,getServerUsedRam:n.ScriptGetServerUsedRam,serverExists:n.ScriptGetServerRamCost,fileExists:n.ScriptFileExistsRamCost,isRunning:n.ScriptIsRunningRamCost,stock:{getSymbols:n.ScriptGetStockRamCost,getPrice:n.ScriptGetStockRamCost,getAskPrice:n.ScriptGetStockRamCost,getBidPrice:n.ScriptGetStockRamCost,getPosition:n.ScriptGetStockRamCost,getMaxShares:n.ScriptGetStockRamCost,getPurchaseCost:n.ScriptGetStockRamCost,getSaleGain:n.ScriptGetStockRamCost,buy:n.ScriptBuySellStockRamCost,sell:n.ScriptBuySellStockRamCost,short:n.ScriptBuySellStockRamCost,sellShort:n.ScriptBuySellStockRamCost,placeOrder:n.ScriptBuySellStockRamCost,cancelOrder:n.ScriptBuySellStockRamCost,getOrders:n.ScriptBuySellStockRamCost,getVolatility:n.ScriptBuySellStockRamCost,getForecast:n.ScriptBuySellStockRamCost,purchase4SMarketData:n.ScriptBuySellStockRamCost,purchase4SMarketDataTixApi:n.ScriptBuySellStockRamCost},getPurchasedServerLimit:n.ScriptGetPurchasedServerLimit,getPurchasedServerMaxRam:n.ScriptGetPurchasedServerMaxRam,getPurchasedServerCost:n.ScriptGetPurchaseServerRamCost,purchaseServer:n.ScriptPurchaseServerRamCost,deleteServer:n.ScriptPurchaseServerRamCost,getPurchasedServers:n.ScriptPurchaseServerRamCost,write:0,tryWritePort:0,read:0,peek:0,clear:0,writePort:0,readPort:0,getPortHandle:0,rm:n.ScriptReadWriteRamCost,scriptRunning:n.ScriptArbScriptRamCost,scriptKill:n.ScriptArbScriptRamCost,getScriptName:0,getScriptRam:n.ScriptGetScriptRamCost,getHackTime:n.ScriptGetHackTimeRamCost,getGrowTime:n.ScriptGetHackTimeRamCost,getWeakenTime:n.ScriptGetHackTimeRamCost,getScriptIncome:n.ScriptGetScriptRamCost,getScriptExpGain:n.ScriptGetScriptRamCost,getRunningScript:n.ScriptGetRunningScriptRamCost,nFormat:0,getTimeSinceLastAug:n.ScriptGetHackTimeRamCost,prompt:0,wget:0,getFavorToDonate:n.ScriptGetFavorToDonate,getPlayer:n.ScriptSingularityFn1RamCost/4,mv:0,getOwnedSourceFiles:n.ScriptGetOwnedSourceFiles,universityCourse:r(n.ScriptSingularityFn1RamCost),gymWorkout:r(n.ScriptSingularityFn1RamCost),travelToCity:r(n.ScriptSingularityFn1RamCost),goToLocation:r(n.ScriptSingularityFn1RamCost),purchaseTor:r(n.ScriptSingularityFn1RamCost),purchaseProgram:r(n.ScriptSingularityFn1RamCost),getCurrentServer:r(n.ScriptSingularityFn1RamCost),connect:r(n.ScriptSingularityFn1RamCost),manualHack:r(n.ScriptSingularityFn1RamCost),installBackdoor:r(n.ScriptSingularityFn1RamCost),getStats:r(n.ScriptSingularityFn1RamCost/4),getCharacterInformation:r(n.ScriptSingularityFn1RamCost/4),hospitalize:r(n.ScriptSingularityFn1RamCost/4),isBusy:r(n.ScriptSingularityFn1RamCost/4),stopAction:r(n.ScriptSingularityFn1RamCost/2),upgradeHomeRam:r(n.ScriptSingularityFn2RamCost),upgradeHomeCores:r(n.ScriptSingularityFn2RamCost),getUpgradeHomeRamCost:r(n.ScriptSingularityFn2RamCost/2),getUpgradeHomeCoresCost:r(n.ScriptSingularityFn2RamCost/2),workForCompany:r(n.ScriptSingularityFn2RamCost),applyToCompany:r(n.ScriptSingularityFn2RamCost),getCompanyRep:r(n.ScriptSingularityFn2RamCost/3),getCompanyFavor:r(n.ScriptSingularityFn2RamCost/3),getCompanyFavorGain:r(n.ScriptSingularityFn2RamCost/4),checkFactionInvitations:r(n.ScriptSingularityFn2RamCost),joinFaction:r(n.ScriptSingularityFn2RamCost),workForFaction:r(n.ScriptSingularityFn2RamCost),getFactionRep:r(n.ScriptSingularityFn2RamCost/3),getFactionFavor:r(n.ScriptSingularityFn2RamCost/3),getFactionFavorGain:r(n.ScriptSingularityFn2RamCost/4),donateToFaction:r(n.ScriptSingularityFn3RamCost),createProgram:r(n.ScriptSingularityFn3RamCost),commitCrime:r(n.ScriptSingularityFn3RamCost),getCrimeChance:r(n.ScriptSingularityFn3RamCost),getCrimeStats:r(n.ScriptSingularityFn3RamCost),getOwnedAugmentations:r(n.ScriptSingularityFn3RamCost),getAugmentationsFromFaction:r(n.ScriptSingularityFn3RamCost),getAugmentationCost:r(n.ScriptSingularityFn3RamCost),getAugmentationPrereq:r(n.ScriptSingularityFn3RamCost),getAugmentationPrice:r(n.ScriptSingularityFn3RamCost/2),getAugmentationRepReq:r(n.ScriptSingularityFn3RamCost/2),getAugmentationStats:r(n.ScriptSingularityFn3RamCost),purchaseAugmentation:r(n.ScriptSingularityFn3RamCost),softReset:r(n.ScriptSingularityFn3RamCost),installAugmentations:r(n.ScriptSingularityFn3RamCost),isFocused:r(.1),setFocus:r(.1),gang:{createGang:n.ScriptGangApiBaseRamCost/4,inGang:n.ScriptGangApiBaseRamCost/4,getMemberNames:n.ScriptGangApiBaseRamCost/4,getGangInformation:n.ScriptGangApiBaseRamCost/2,getOtherGangInformation:n.ScriptGangApiBaseRamCost/2,getMemberInformation:n.ScriptGangApiBaseRamCost/2,canRecruitMember:n.ScriptGangApiBaseRamCost/4,recruitMember:n.ScriptGangApiBaseRamCost/2,getTaskNames:n.ScriptGangApiBaseRamCost/4,getTaskStats:n.ScriptGangApiBaseRamCost/4,setMemberTask:n.ScriptGangApiBaseRamCost/2,getEquipmentNames:n.ScriptGangApiBaseRamCost/4,getEquipmentCost:n.ScriptGangApiBaseRamCost/2,getEquipmentType:n.ScriptGangApiBaseRamCost/2,getEquipmentStats:n.ScriptGangApiBaseRamCost/2,purchaseEquipment:n.ScriptGangApiBaseRamCost,ascendMember:n.ScriptGangApiBaseRamCost,getAscensionResult:n.ScriptGangApiBaseRamCost/2,setTerritoryWarfare:n.ScriptGangApiBaseRamCost/2,getChanceToWinClash:n.ScriptGangApiBaseRamCost,getBonusTime:0},bladeburner:{getContractNames:n.ScriptBladeburnerApiBaseRamCost/10,getOperationNames:n.ScriptBladeburnerApiBaseRamCost/10,getBlackOpNames:n.ScriptBladeburnerApiBaseRamCost/10,getBlackOpRank:n.ScriptBladeburnerApiBaseRamCost/2,getGeneralActionNames:n.ScriptBladeburnerApiBaseRamCost/10,getSkillNames:n.ScriptBladeburnerApiBaseRamCost/10,startAction:n.ScriptBladeburnerApiBaseRamCost,stopBladeburnerAction:n.ScriptBladeburnerApiBaseRamCost/2,getCurrentAction:n.ScriptBladeburnerApiBaseRamCost/4,getActionTime:n.ScriptBladeburnerApiBaseRamCost,getActionEstimatedSuccessChance:n.ScriptBladeburnerApiBaseRamCost,getActionRepGain:n.ScriptBladeburnerApiBaseRamCost,getActionCountRemaining:n.ScriptBladeburnerApiBaseRamCost,getActionMaxLevel:n.ScriptBladeburnerApiBaseRamCost,getActionCurrentLevel:n.ScriptBladeburnerApiBaseRamCost,getActionAutolevel:n.ScriptBladeburnerApiBaseRamCost,setActionAutolevel:n.ScriptBladeburnerApiBaseRamCost,setActionLevel:n.ScriptBladeburnerApiBaseRamCost,getRank:n.ScriptBladeburnerApiBaseRamCost,getSkillPoints:n.ScriptBladeburnerApiBaseRamCost,getSkillLevel:n.ScriptBladeburnerApiBaseRamCost,getSkillUpgradeCost:n.ScriptBladeburnerApiBaseRamCost,upgradeSkill:n.ScriptBladeburnerApiBaseRamCost,getTeamSize:n.ScriptBladeburnerApiBaseRamCost,setTeamSize:n.ScriptBladeburnerApiBaseRamCost,getCityEstimatedPopulation:n.ScriptBladeburnerApiBaseRamCost,getCityCommunities:n.ScriptBladeburnerApiBaseRamCost,getCityChaos:n.ScriptBladeburnerApiBaseRamCost,getCity:n.ScriptBladeburnerApiBaseRamCost,switchCity:n.ScriptBladeburnerApiBaseRamCost,getStamina:n.ScriptBladeburnerApiBaseRamCost,joinBladeburnerFaction:n.ScriptBladeburnerApiBaseRamCost,joinBladeburnerDivision:n.ScriptBladeburnerApiBaseRamCost,getBonusTime:0},codingcontract:{attempt:n.ScriptCodingContractBaseRamCost,getContractType:n.ScriptCodingContractBaseRamCost/2,getData:n.ScriptCodingContractBaseRamCost/2,getDescription:n.ScriptCodingContractBaseRamCost/2,getNumTriesRemaining:n.ScriptCodingContractBaseRamCost/5},sleeve:{getNumSleeves:n.ScriptSleeveBaseRamCost,setToShockRecovery:n.ScriptSleeveBaseRamCost,setToSynchronize:n.ScriptSleeveBaseRamCost,setToCommitCrime:n.ScriptSleeveBaseRamCost,setToUniversityCourse:n.ScriptSleeveBaseRamCost,travel:n.ScriptSleeveBaseRamCost,setToCompanyWork:n.ScriptSleeveBaseRamCost,setToFactionWork:n.ScriptSleeveBaseRamCost,setToGymWorkout:n.ScriptSleeveBaseRamCost,getSleeveStats:n.ScriptSleeveBaseRamCost,getTask:n.ScriptSleeveBaseRamCost,getInformation:n.ScriptSleeveBaseRamCost,getSleeveAugmentations:n.ScriptSleeveBaseRamCost,getSleevePurchasableAugs:n.ScriptSleeveBaseRamCost,purchaseSleeveAug:n.ScriptSleeveBaseRamCost},stanek:{charge:n.ScriptStanekCharge,fragmentDefinitions:n.ScriptStanekFragmentDefinitions,activeFragments:n.ScriptStanekPlacedFragments,clear:n.ScriptStanekClear,canPlace:n.ScriptStanekCanPlace,place:n.ScriptStanekPlace,get:n.ScriptStanekFragmentAt,remove:n.ScriptStanekDeleteAt},ui:{getTheme:0,setTheme:0,resetTheme:0,getStyles:0,setStyles:0,resetStyles:0},heart:{break:0}};function o(e,...t){if(0===t.length)return console.warn("No arguments passed to getRamCost()"),0;let a=i[t[0]];for(let e=1;e<t.length;++e){if(null==a)return console.warn("Invalid function passed to getRamCost: "+t),0;const n=typeof a;if("function"===n||"number"===n)break;a=a[t[e]]}return"number"==typeof a?a:"function"==typeof a?a(e):(console.warn(`Unexpected type (${a}) for value [${t}]`),0)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(369),r=a(0),i=a.n(r);function o(e){"string"!=typeof e?n.a.emit(e):n.a.emit(i.a.createElement("span",{dangerouslySetInnerHTML:{__html:e}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(4),i=a(111),o=a(134);const s=Object(i.a)(e=>Object(o.a)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}}));function l(e){const t=s();if(void 0!==e.player){if("number"!=typeof e.money)throw new Error("if player if provided, money should be number, contact dev");if(!e.player.canAfford(e.money))return n.createElement("span",{className:t.unbuyable},r.a.formatMoney(e.money))}return n.createElement("span",{className:t.money},"number"==typeof e.money?r.a.formatMoney(e.money):e.money)}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={}},function(e,t,a){"use strict";a.d(t,"c",(function(){return r})),a.d(t,"b",(function(){return i})),a.d(t,"a",(function(){return o}));var n=a(352);function r(e,t){if(null==t)return null;if("object"==typeof t&&"string"==typeof t.ctor&&void 0!==t.data){if("AllServersMap"===t.ctor)return console.warn("Converting AllServersMap for v0.43.1"),t.data;const e=r.constructors[t.ctor];if("function"==typeof e&&"function"==typeof e.fromJSON){const a=e.fromJSON(t);return void 0!==e.validationData&&Object(n.b)(a,e.validationData),a}}return t}function i(e,t,a){a||(a=Object.keys(t));const n={};for(let e=0;e<a.length;++e){const r=a[e];n[r]=t[r]}return{ctor:e,data:n}}function o(e,t){const a=new e;for(const e in t)a[e]=t[e];return a}(r||(r={})).constructors={}},function(e,t,a){"use strict";a.d(t,"b",(function(){return r})),a.d(t,"e",(function(){return i})),a.d(t,"a",(function(){return o})),a.d(t,"c",(function(){return s})),a.d(t,"d",(function(){return l}));var n=a(126);function r(e,t=!1){e=Math.floor(e);const a=Math.floor(e/1e3),n=Math.floor(a/86400),r=a%86400,i=Math.floor(r/3600),o=r%3600,s=Math.floor(o/60),l=o%60,c=(()=>{let t=""+e%1e3;for(;t.length<3;)t="0"+t;return t})();let u="";return n>0&&(u+=n+" days "),i>0&&(u+=i+" hours "),s>0&&(u+=s+" minutes "),u+=(t?`${l}.${c}`:""+l)+" seconds",u}function i(e){if(!o(e))return"";if(0===e.length)return"";const t=e.concat().sort(),a=t[0],n=t[t.length-1],r=a.length;let i=0;for(;i<r&&(s=a.charAt(i),l=n.charAt(i),s.toUpperCase()===l.toUpperCase());)i++;var s,l;return a.substring(0,i)}function o(e){return e.every(n.a)}function s(e,t=0){return e.toLocaleString(void 0,{maximumFractionDigits:t,minimumFractionDigits:t})}function l(e){let t="";const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let n=0;n<e;n++)t+=a.charAt(Math.floor(Math.random()*a.length));return t}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"d",(function(){return h})),a.d(t,"c",(function(){return d})),a.d(t,"b",(function(){return p})),a.d(t,"g",(function(){return f})),a.d(t,"e",(function(){return g})),a.d(t,"a",(function(){return y})),a.d(t,"f",(function(){return b})),a.d(t,"i",(function(){return E})),a.d(t,"h",(function(){return k})),a.d(t,"j",(function(){return v}));var n=a(44),r=a(333),i=a(296),o=a(32),s=a(21),l=a(810),c=a(98),u=a(5);let m={};function h(e){const t=m[e];if(t)return t;if(!Object(l.a)(e))return function(e){for(const t in m){const a=m[t];if(a.hostname==e)return a}return null}(e);const a=function(e){for(const t in m){const a=m[t];if(a.ip===e)return a}}(e);return void 0!==a?a:null}function d(){const e=[];for(const t in m)e.push(m[t]);return e}function p(e){for(const t in m){const a=m[t];if(a.ip===e||a.hostname===e){delete m[t];break}}}function f(e){return null!=m[e]}function g(){const e=Object(i.a)();return f(e)?Object(i.a)():e}function y(e){if(h(e.hostname))throw console.warn("Hostname of the server thats being added: "+e.hostname),console.warn("The server that already has this IP is: "+m[e.hostname].hostname),new Error("Error: Trying to add a server with an existing IP");m[e.hostname]=e}function b(e){const t=[];for(let e=0;e<15;e++)t.push([]);const a=["hackDifficulty","moneyAvailable","requiredHackingSkill","serverGrowth"],i=e=>{switch(typeof e){case"number":return e;case"object":return Object(o.a)(e.min,e.max);default:throw Error(`Do not know how to convert the type '${typeof e}' to a number`)}};for(const e of r.a){const r={hostname:e.hostname,ip:g(),numOpenPortsRequired:e.numOpenPortsRequired,organizationName:e.organizationName};void 0!==e.maxRamExponent&&(r.maxRam=Math.pow(2,i(e.maxRamExponent)));for(const t of a)void 0!==e[t]&&(r[t]=i(e[t]));const o=new n.a(r);for(const t of e.literature||[])o.messages.push(t);o.hostname===c.a.WorldDaemon&&(o.requiredHackingSkill*=u.a.WorldDaemonDifficulty),y(o),void 0!==e.networkLayer&&t[i(e.networkLayer)-1].push(o)}const s=(e,t)=>{for(const r of e)a=r,n=t(),a.serversOnNetwork.push(n.hostname),n.serversOnNetwork.push(a.hostname);var a,n};s(t[0],()=>e);for(let e=1;e<t.length;e++)s(t[e],()=>{return(a=t[e-1])[Math.floor(Math.random()*a.length)];var a})}function E(){for(const e in m)delete m[e];m={}}function k(e){m=JSON.parse(e,s.c)}function v(e=!1){const t=JSON.parse(JSON.stringify(m),s.c);for(const a in t){const n=t[a];if(e)n.runningScripts=[];else for(let e=0;e<n.runningScripts.length;++e){const t=n.runningScripts[e];t.logs.length=0,t.logs=[]}}return JSON.stringify(t)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"d",(function(){return s})),a.d(t,"b",(function(){return l})),a.d(t,"c",(function(){return c}));var n=a(193),r=a(529),i=a(21);let o={};function s(e){o=JSON.parse(e,i.c);for(const e of Object.keys(o))try{o[e].getInfo()}catch(t){console.error("deleting "+e),delete o[e]}}function l(e){return o.hasOwnProperty(e)}function c(){for(const e in r.a)u(new n.a(e))}function u(e){if(!(e instanceof n.a))throw new Error("Invalid argument 'newFactionObject' passed into resetFaction()");const t=e.name;l(t)&&(e.favor=o[t].favor,delete o[t]),function(e){const t=e.name;o[t]=e}(e)}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.ActiveScripts=0]="ActiveScripts",e[e.Augmentations=1]="Augmentations",e[e.BitVerse=2]="BitVerse",e[e.Bladeburner=3]="Bladeburner",e[e.City=4]="City",e[e.Corporation=5]="Corporation",e[e.CreateProgram=6]="CreateProgram",e[e.ScriptEditor=7]="ScriptEditor",e[e.DevMenu=8]="DevMenu",e[e.Faction=9]="Faction",e[e.Factions=10]="Factions",e[e.Gang=11]="Gang",e[e.Hacknet=12]="Hacknet",e[e.Infiltration=13]="Infiltration",e[e.Job=14]="Job",e[e.Milestones=15]="Milestones",e[e.Options=16]="Options",e[e.Resleeves=17]="Resleeves",e[e.Sleeves=18]="Sleeves",e[e.Stats=19]="Stats",e[e.StockMarket=20]="StockMarket",e[e.Terminal=21]="Terminal",e[e.Travel=22]="Travel",e[e.Tutorial=23]="Tutorial",e[e.Work=24]="Work",e[e.BladeburnerCinematic=25]="BladeburnerCinematic",e[e.Location=26]="Location",e[e.Loading=27]="Loading",e[e.StaneksGift=28]="StaneksGift",e[e.Recovery=29]="Recovery",e[e.Achievements=30]="Achievements"}(n||(n={}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o}));var n=a(0),r=a.n(n);const i={Player:r.a.createContext({}),Router:r.a.createContext({})},o={Player:()=>Object(n.useContext)(i.Player),Router:()=>Object(n.useContext)(i.Router)}},function(e,t,a){"use strict";a.d(t,"j",(function(){return n})),a.d(t,"d",(function(){return r})),a.d(t,"i",(function(){return i})),a.d(t,"f",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"h",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"e",(function(){return u})),a.d(t,"k",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"g",(function(){return d}));const n=["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"],u=["Waiter","Employee"],m=["Software Consultant","Senior Software Consultant"],h=["Business Consultant","Senior Business Consultant"],d=["Part-time Waiter","Part-time Employee"]},,function(e,t,a){"use strict";function n(e,t){const a=Math.min(e,t),n=Math.max(e,t);return Math.floor(Math.random()*(n-a+1))+a}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"c",(function(){return r})),a.d(t,"b",(function(){return i}));const n={MoneyGainPerLevel:1.5,BaseCost:1e3,LevelBaseCost:1,RamBaseCost:3e4,CoreBaseCost:5e5,PurchaseNextMult:1.85,UpgradeLevelMult:1.04,UpgradeRamMult:1.28,UpgradeCoreMult:1.48,MaxLevel:200,MaxRam:64,MaxCores:16},r={x1:1,x5:5,x10:10,MAX:"MAX"},i={HashesPerLevel:.001,BaseCost:5e4,RamBaseCost:2e5,CoreBaseCost:1e6,CacheBaseCost:1e7,PurchaseMult:3.2,UpgradeLevelMult:1.1,UpgradeRamMult:1.4,UpgradeCoreMult:1.55,UpgradeCacheMult:1.85,MaxServers:20,MaxLevel:300,MaxRam:8192,MaxCores:128,MaxCache:15}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a(5),i=a(26),o=a(4),s=a(16),l=a(21);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u{constructor(e={info:"",moneyCost:0,name:"",repCost:0}){c(this,"baseCost",0),c(this,"baseRepRequirement",0),c(this,"isSpecial",!1),c(this,"level",0),c(this,"name",""),c(this,"owned",!1),c(this,"prereqs",[]),c(this,"mults",{}),c(this,"startingCost",0),this.name=e.name,this.info=e.info,this.prereqs=e.prereqs?e.prereqs:[],this.baseRepRequirement=e.repCost*r.a.AugmentationRepCost,this.baseCost=e.moneyCost*r.a.AugmentationMoneyCost,this.startingCost=this.baseCost,e.isSpecial&&(this.isSpecial=!0),this.level=0,e.hacking_mult&&(this.mults.hacking_mult=e.hacking_mult),e.strength_mult&&(this.mults.strength_mult=e.strength_mult),e.defense_mult&&(this.mults.defense_mult=e.defense_mult),e.dexterity_mult&&(this.mults.dexterity_mult=e.dexterity_mult),e.agility_mult&&(this.mults.agility_mult=e.agility_mult),e.charisma_mult&&(this.mults.charisma_mult=e.charisma_mult),e.hacking_exp_mult&&(this.mults.hacking_exp_mult=e.hacking_exp_mult),e.strength_exp_mult&&(this.mults.strength_exp_mult=e.strength_exp_mult),e.defense_exp_mult&&(this.mults.defense_exp_mult=e.defense_exp_mult),e.dexterity_exp_mult&&(this.mults.dexterity_exp_mult=e.dexterity_exp_mult),e.agility_exp_mult&&(this.mults.agility_exp_mult=e.agility_exp_mult),e.charisma_exp_mult&&(this.mults.charisma_exp_mult=e.charisma_exp_mult),e.hacking_chance_mult&&(this.mults.hacking_chance_mult=e.hacking_chance_mult),e.hacking_speed_mult&&(this.mults.hacking_speed_mult=e.hacking_speed_mult),e.hacking_money_mult&&(this.mults.hacking_money_mult=e.hacking_money_mult),e.hacking_grow_mult&&(this.mults.hacking_grow_mult=e.hacking_grow_mult),e.company_rep_mult&&(this.mults.company_rep_mult=e.company_rep_mult),e.faction_rep_mult&&(this.mults.faction_rep_mult=e.faction_rep_mult),e.crime_money_mult&&(this.mults.crime_money_mult=e.crime_money_mult),e.crime_success_mult&&(this.mults.crime_success_mult=e.crime_success_mult),e.work_money_mult&&(this.mults.work_money_mult=e.work_money_mult),e.hacknet_node_money_mult&&(this.mults.hacknet_node_money_mult=e.hacknet_node_money_mult),e.hacknet_node_purchase_cost_mult&&(this.mults.hacknet_node_purchase_cost_mult=e.hacknet_node_purchase_cost_mult),e.hacknet_node_ram_cost_mult&&(this.mults.hacknet_node_ram_cost_mult=e.hacknet_node_ram_cost_mult),e.hacknet_node_core_cost_mult&&(this.mults.hacknet_node_core_cost_mult=e.hacknet_node_core_cost_mult),e.hacknet_node_level_cost_mult&&(this.mults.hacknet_node_level_cost_mult=e.hacknet_node_level_cost_mult),e.bladeburner_max_stamina_mult&&(this.mults.bladeburner_max_stamina_mult=e.bladeburner_max_stamina_mult),e.bladeburner_stamina_gain_mult&&(this.mults.bladeburner_stamina_gain_mult=e.bladeburner_stamina_gain_mult),e.bladeburner_analysis_mult&&(this.mults.bladeburner_analysis_mult=e.bladeburner_analysis_mult),e.bladeburner_success_chance_mult&&(this.mults.bladeburner_success_chance_mult=e.bladeburner_success_chance_mult),void 0===e.stats?this.stats=function(e,t,a){const r=(e,t=0)=>e===1.0777-1?"7.77%":e===1.777-1?"77.7%":o.a.formatPercentage(e,t);let i=n.createElement(n.Fragment,null,"Effects:");return e.hacking_mult&&e.hacking_mult==e.strength_mult&&e.hacking_mult==e.defense_mult&&e.hacking_mult==e.dexterity_mult&&e.hacking_mult==e.agility_mult&&e.hacking_mult==e.charisma_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_mult-1)," all skills"):(e.hacking_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_mult-1)," hacking skill")),e.strength_mult&&e.strength_mult==e.defense_mult&&e.strength_mult==e.dexterity_mult&&e.strength_mult==e.agility_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_mult-1)," combat skills"):(e.strength_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_mult-1)," strength skill")),e.defense_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.defense_mult-1)," defense skill")),e.dexterity_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.dexterity_mult-1)," dexterity skill")),e.agility_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.agility_mult-1)," agility skill"))),e.charisma_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.charisma_mult-1)," Charisma skill"))),e.hacking_exp_mult&&e.hacking_exp_mult===e.strength_exp_mult&&e.hacking_exp_mult===e.defense_exp_mult&&e.hacking_exp_mult===e.dexterity_exp_mult&&e.hacking_exp_mult===e.agility_exp_mult&&e.hacking_exp_mult===e.charisma_exp_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_exp_mult-1)," exp for all skills"):(e.hacking_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_exp_mult-1)," hacking exp")),e.strength_exp_mult&&e.strength_exp_mult===e.defense_exp_mult&&e.strength_exp_mult===e.dexterity_exp_mult&&e.strength_exp_mult===e.agility_exp_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_exp_mult-1)," combat exp"):(e.strength_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_exp_mult-1)," strength exp")),e.defense_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.defense_exp_mult-1)," defense exp")),e.dexterity_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.dexterity_exp_mult-1)," dexterity exp")),e.agility_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.agility_exp_mult-1)," agility exp"))),e.charisma_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.charisma_exp_mult-1)," charisma exp"))),e.hacking_speed_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_speed_mult-1)," faster hack(), grow(), and weaken()")),e.hacking_chance_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_chance_mult-1)," hack() success chance")),e.hacking_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_money_mult-1)," hack() power")),e.hacking_grow_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_grow_mult-1)," grow() power")),e.faction_rep_mult&&e.faction_rep_mult===e.company_rep_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.faction_rep_mult-1)," reputation from factions and companies"):(e.faction_rep_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.faction_rep_mult-1)," reputation from factions")),e.company_rep_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.company_rep_mult-1)," reputation from companies"))),e.crime_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.crime_money_mult-1)," crime money")),e.crime_success_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.crime_success_mult-1)," crime success rate")),e.work_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.work_money_mult-1)," work money")),e.hacknet_node_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacknet_node_money_mult-1)," hacknet production")),e.hacknet_node_purchase_cost_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"-",r(-(e.hacknet_node_purchase_cost_mult-1))," hacknet nodes cost")),e.hacknet_node_level_cost_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"-",r(-(e.hacknet_node_level_cost_mult-1))," hacknet nodes upgrade cost")),e.bladeburner_max_stamina_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_max_stamina_mult-1)," Bladeburner Max Stamina")),e.bladeburner_stamina_gain_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_stamina_gain_mult-1)," Bladeburner Stamina gain")),e.bladeburner_analysis_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_analysis_mult-1)," Bladeburner Field Analysis effectiveness")),e.bladeburner_success_chance_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_success_chance_mult-1)," Bladeburner Contracts and Operations success chance")),a&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"Start with ",n.createElement(s.a,{money:a})," after installing Augmentations.")),t&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"Start with ",t.join(" and ")," after installing Augmentations.")),i}(this.mults,e.programs,e.startingMoney):this.stats=e.stats}addToFactions(e){for(let t=0;t<e.length;++t){const a=i.a[e[t]];null!=a?a.augmentations.push(this.name):console.warn("In Augmentation.addToFactions(), could not find faction with this name: "+e[t])}}addToAllFactions(){for(const e in i.a)if(i.a.hasOwnProperty(e)){const t=i.a[e];if(null==t){console.warn("Invalid Faction object in addToAllFactions(). Key value: "+e);continue}if(t.getInfo().special)continue;t.augmentations.push(this.name)}}toJSON(){return Object(l.b)("Augmentation",this)}static fromJSON(e){return Object(l.a)(u,e.data)}}l.c.constructors.Augmentation=u},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";a.d(t,"f",(function(){return n})),a.d(t,"b",(function(){return m})),a.d(t,"e",(function(){return l})),a.d(t,"c",(function(){return c})),a.d(t,"a",(function(){return s})),a.d(t,"d",(function(){return u}));var n,r=a(2),i=a(60),o=a(346);!function(e){e[e.Start=0]="Start",e[e.GoToCharacterPage=1]="GoToCharacterPage",e[e.CharacterPage=2]="CharacterPage",e[e.CharacterGoToTerminalPage=3]="CharacterGoToTerminalPage",e[e.TerminalIntro=4]="TerminalIntro",e[e.TerminalHelp=5]="TerminalHelp",e[e.TerminalLs=6]="TerminalLs",e[e.TerminalScan=7]="TerminalScan",e[e.TerminalScanAnalyze1=8]="TerminalScanAnalyze1",e[e.TerminalScanAnalyze2=9]="TerminalScanAnalyze2",e[e.TerminalConnect=10]="TerminalConnect",e[e.TerminalAnalyze=11]="TerminalAnalyze",e[e.TerminalNuke=12]="TerminalNuke",e[e.TerminalManualHack=13]="TerminalManualHack",e[e.TerminalHackingMechanics=14]="TerminalHackingMechanics",e[e.TerminalGoHome=15]="TerminalGoHome",e[e.TerminalCreateScript=16]="TerminalCreateScript",e[e.TerminalTypeScript=17]="TerminalTypeScript",e[e.TerminalFree=18]="TerminalFree",e[e.TerminalRunScript=19]="TerminalRunScript",e[e.TerminalGoToActiveScriptsPage=20]="TerminalGoToActiveScriptsPage",e[e.ActiveScriptsPage=21]="ActiveScriptsPage",e[e.ActiveScriptsToTerminal=22]="ActiveScriptsToTerminal",e[e.TerminalTailScript=23]="TerminalTailScript",e[e.GoToHacknetNodesPage=24]="GoToHacknetNodesPage",e[e.HacknetNodesIntroduction=25]="HacknetNodesIntroduction",e[e.HacknetNodesGoToWorldPage=26]="HacknetNodesGoToWorldPage",e[e.WorldDescription=27]="WorldDescription",e[e.TutorialPageInfo=28]="TutorialPageInfo",e[e.End=29]="End"}(n||(n={}));const s={currStep:n.Start,isRunning:!1,stepIsDone:{[n.Start]:!1,[n.GoToCharacterPage]:!1,[n.CharacterPage]:!1,[n.CharacterGoToTerminalPage]:!1,[n.TerminalIntro]:!1,[n.TerminalHelp]:!1,[n.TerminalLs]:!1,[n.TerminalScan]:!1,[n.TerminalScanAnalyze1]:!1,[n.TerminalScanAnalyze2]:!1,[n.TerminalConnect]:!1,[n.TerminalAnalyze]:!1,[n.TerminalNuke]:!1,[n.TerminalManualHack]:!1,[n.TerminalHackingMechanics]:!1,[n.TerminalGoHome]:!1,[n.TerminalCreateScript]:!1,[n.TerminalTypeScript]:!1,[n.TerminalFree]:!1,[n.TerminalRunScript]:!1,[n.TerminalGoToActiveScriptsPage]:!1,[n.ActiveScriptsPage]:!1,[n.ActiveScriptsToTerminal]:!1,[n.TerminalTailScript]:!1,[n.GoToHacknetNodesPage]:!1,[n.HacknetNodesIntroduction]:!1,[n.HacknetNodesGoToWorldPage]:!1,[n.WorldDescription]:!1,[n.TutorialPageInfo]:!1,[n.End]:!1}};function l(){s.isRunning=!0,s.currStep=n.Start}function c(){s.stepIsDone[s.currStep]=!0,s.currStep<n.End&&(s.currStep+=1),s.currStep===n.End&&m(),o.a.emit()}function u(){s.currStep>n.Start&&(s.currStep-=1),o.a.emit()}function m(){s.isRunning=!1,s.currStep=n.Start,r.a.getHomeComputer().messages.push(i.a.HackersStartingHandbook),o.a.emit()}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(111),o=a(134),s=a(690),l=a(1239),c=a(25);const u=Object(i.a)(e=>Object(o.a)({modal:{display:"flex",alignItems:"center",justifyContent:"center"},paper:{backgroundColor:e.palette.background.default,border:"2px solid "+e.palette.primary.main,boxShadow:`0px 3px 5px -1px ${e.palette.primary.dark},0px 5px 8px 0px ${e.palette.primary.dark},0px 1px 14px 0px ${e.palette.primary.dark}`,padding:2,maxWidth:"80%",maxHeight:"80%",overflow:"auto","&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"}})),m=e=>{const t=u();return r.a.createElement(s.a,{disableRestoreFocus:!0,disableScrollLock:!0,disableEnforceFocus:!0,disableAutoFocus:!0,open:e.open,onClose:e.onClose,closeAfterTransition:!0,className:t.modal},r.a.createElement(l.a,{in:e.open},r.a.createElement("div",{className:t.paper},r.a.createElement(c.a,{sx:{m:2}},e.children))))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return u})),a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(49),o=a(249),s=a(111);function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}const c=Object(s.a)({root:{borderBottom:"none"},small:{width:"1px"}}),u=e=>r.a.createElement(i.a,l({},e,{classes:{root:c().root,...e.classes}})),m=e=>r.a.createElement(o.a,l({},e,{classes:{root:c().small,...e.classes}}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n=["START","PURCHASE","PRODUCTION","SALE","EXPORT"],r={INITIALSHARES:1e9,SHARESPERPRICEUPDATE:1e6,IssueNewSharesCooldown:216e3,SellSharesCooldown:18e3,CyclesPerMarketCycle:50,CyclesPerIndustryStateCycle:50/n.length,SecsPerMarketCycle:10,Cities:["Aevum","Chongqing","Sector-12","New Tokyo","Ishima","Volhaven"],WarehouseInitialCost:5e9,WarehouseInitialSize:100,WarehouseUpgradeBaseCost:1e9,OfficeInitialCost:4e9,OfficeInitialSize:3,OfficeUpgradeBaseCost:1e9,BribeThreshold:1e14,BribeToRepRatio:1e9,ProductProductionCostRatio:5,DividendMaxPercentage:1,EmployeeSalaryMultiplier:3,CyclesPerEmployeeRaise:400,EmployeeRaiseAmount:50,BaseMaxProducts:3,AllCorporationStates:n,AllMaterials:["Water","Energy","Food","Plants","Metal","Hardware","Chemicals","Drugs","Robots","AI Cores","Real Estate"]}},function(e,t,a){"use strict";a.d(t,"eb",(function(){return Z})),a.d(t,"hb",(function(){return ee})),a.d(t,"ib",(function(){return te})),a.d(t,"qb",(function(){return ae})),a.d(t,"o",(function(){return ne})),a.d(t,"p",(function(){return re})),a.d(t,"Ob",(function(){return ie})),a.d(t,"tb",(function(){return oe})),a.d(t,"cb",(function(){return se})),a.d(t,"wb",(function(){return le})),a.d(t,"K",(function(){return ce})),a.d(t,"gb",(function(){return ue})),a.d(t,"s",(function(){return me})),a.d(t,"rb",(function(){return he})),a.d(t,"I",(function(){return de})),a.d(t,"L",(function(){return pe})),a.d(t,"G",(function(){return fe})),a.d(t,"H",(function(){return ge})),a.d(t,"D",(function(){return ye})),a.d(t,"E",(function(){return be})),a.d(t,"J",(function(){return Ee})),a.d(t,"lb",(function(){return ke})),a.d(t,"ub",(function(){return ve})),a.d(t,"kb",(function(){return _e})),a.d(t,"Ib",(function(){return we})),a.d(t,"jb",(function(){return Se})),a.d(t,"t",(function(){return Ce})),a.d(t,"Pb",(function(){return xe})),a.d(t,"B",(function(){return Oe})),a.d(t,"Jb",(function(){return Me})),a.d(t,"Rb",(function(){return Te})),a.d(t,"C",(function(){return Re})),a.d(t,"Hb",(function(){return Ae})),a.d(t,"Kb",(function(){return Ne})),a.d(t,"Gb",(function(){return Pe})),a.d(t,"Eb",(function(){return Ie})),a.d(t,"Db",(function(){return Fe})),a.d(t,"Fb",(function(){return De})),a.d(t,"Qb",(function(){return je})),a.d(t,"A",(function(){return Be})),a.d(t,"V",(function(){return Ge})),a.d(t,"U",(function(){return Le})),a.d(t,"X",(function(){return We})),a.d(t,"S",(function(){return He})),a.d(t,"T",(function(){return Ue})),a.d(t,"Q",(function(){return qe})),a.d(t,"R",(function(){return Ke})),a.d(t,"W",(function(){return ze})),a.d(t,"Bb",(function(){return $e})),a.d(t,"w",(function(){return Ve})),a.d(t,"y",(function(){return Ye})),a.d(t,"Ab",(function(){return Je})),a.d(t,"Lb",(function(){return Xe})),a.d(t,"x",(function(){return Qe})),a.d(t,"Cb",(function(){return Ze})),a.d(t,"v",(function(){return et})),a.d(t,"z",(function(){return tt})),a.d(t,"yb",(function(){return at})),a.d(t,"Mb",(function(){return nt})),a.d(t,"sb",(function(){return rt})),a.d(t,"db",(function(){return it})),a.d(t,"f",(function(){return ot})),a.d(t,"P",(function(){return st})),a.d(t,"nb",(function(){return lt})),a.d(t,"bb",(function(){return ct})),a.d(t,"m",(function(){return ut})),a.d(t,"l",(function(){return mt})),a.d(t,"e",(function(){return ht})),a.d(t,"j",(function(){return dt})),a.d(t,"g",(function(){return pt})),a.d(t,"c",(function(){return ft})),a.d(t,"b",(function(){return gt})),a.d(t,"k",(function(){return yt})),a.d(t,"a",(function(){return bt})),a.d(t,"d",(function(){return Et})),a.d(t,"h",(function(){return kt})),a.d(t,"n",(function(){return vt})),a.d(t,"i",(function(){return _t})),a.d(t,"fb",(function(){return wt})),a.d(t,"ob",(function(){return St})),a.d(t,"pb",(function(){return Ct})),a.d(t,"u",(function(){return xt})),a.d(t,"vb",(function(){return Ot})),a.d(t,"mb",(function(){return Mt})),a.d(t,"F",(function(){return Tt})),a.d(t,"Nb",(function(){return Rt})),a.d(t,"ab",(function(){return At})),a.d(t,"r",(function(){return Nt})),a.d(t,"Z",(function(){return Pt})),a.d(t,"Y",(function(){return It})),a.d(t,"N",(function(){return Ft})),a.d(t,"M",(function(){return Dt})),a.d(t,"O",(function(){return jt})),a.d(t,"xb",(function(){return Bt})),a.d(t,"q",(function(){return Gt})),a.d(t,"zb",(function(){return Lt}));var n=a(20),r=a(143),i=a(290),o=a(6),s=a(5),l=a(104),c=a(225),u=a(62),m=a(611),h=a(478),d=a(90),p=a(30),f=a(8),g=a(61),y=a(347),b=a(81),E=a(193),k=a(26),v=a(68),_=a(140),w=a(240),S=a(23),C=a(9),x=a(303),O=a(163),M=a(298),T=a(234),R=a(24),A=a(44),N=a(123),P=a(98),I=a(1184),F=a(1185),D=a(335),j=a(80),B=a(474),G=a(370),L=a(87),W=a(4),H=a(353),U=a(15),q=a(22),K=a(106),z=a(16),$=a(0),V=a.n($),Y=a(333),J=a(179),X=a(685),Q=a(319);function Z(){const e=Object(N.f)({adminRights:!0,hostname:"home",ip:Object(R.e)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=P.a.Home,Object(R.a)(e),this.getHomeComputer().programs.push(g.a.NukeProgram.name)}function ee(){this.currentServer=P.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=[],this.resleeves=[];const e=Math.min(3,j.a[10]+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>e&&(this.sleeves.length=e);for(let t=this.sleeves.length;t<e;t++)this.sleeves.push(new x.a(this));for(let e=0;e<this.sleeves.length;++e)this.sleeves[e]instanceof x.a&&(this.sleeves[e].shock>=100?this.sleeves[e].synchronize(this):this.sleeves[e].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 te(){this.prestigeAugmentation(),this.karma=0;for(let e=0;e<this.sleeves.length;++e)this.sleeves[e]instanceof x.a?this.sleeves[e].prestige(this):this.sleeves[e]=new x.a(this);if(10===this.bitNodeN)for(let e=0;e<this.sleeves.length;e++)this.sleeves[e].shock=Math.max(25,this.sleeves[e].shock),this.sleeves[e].sync=Math.max(25,this.sleeves[e].sync);this.timeWorked=0,this.gang=null,Object(v.c)(),this.hasWseAccount=!1,this.hasTixApiAccess=!1,this.has4SData=!1,this.has4SDataTixApi=!1,this.corporation=null,this.moneySourceB.reset(),this.playtimeSinceLastBitnode=0,this.augmentations=[]}function ae(e){this.factionInvitations.includes(e)||this.factions.includes(e)||this.factionInvitations.push(e)}function ne(e,t=1){return Object(O.b)(e,t)}function re(e,t=1){return Object(O.c)(e,t)}function ie(){this.hacking=Math.max(1,Math.floor(this.calculateSkill(this.hacking_exp,this.hacking_mult*s.a.HackingLevelMultiplier))),this.strength=Math.max(1,Math.floor(this.calculateSkill(this.strength_exp,this.strength_mult*s.a.StrengthLevelMultiplier))),this.defense=Math.max(1,Math.floor(this.calculateSkill(this.defense_exp,this.defense_mult*s.a.DefenseLevelMultiplier))),this.dexterity=Math.max(1,Math.floor(this.calculateSkill(this.dexterity_exp,this.dexterity_mult*s.a.DexterityLevelMultiplier))),this.agility=Math.max(1,Math.floor(this.calculateSkill(this.agility_exp,this.agility_mult*s.a.AgilityLevelMultiplier))),this.charisma=Math.max(1,Math.floor(this.calculateSkill(this.charisma_exp,this.charisma_mult*s.a.CharismaLevelMultiplier))),this.intelligence>0?this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)):this.intelligence=0;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 oe(){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 se(e){const t=this.getHomeComputer();if(null==t)return!1;for(let a=0;a<t.programs.length;++a)if(e.toLowerCase()==t.programs[a].toLowerCase())return!0;return!1}function le(e){isNaN(e)?console.error("NaN passed into Player.setMoney()"):this.money=e}function ce(e,t){isNaN(e)?console.error("NaN passed into Player.gainMoney()"):(this.money=this.money+e,this.recordMoneySource(e,t))}function ue(e,t){isNaN(e)?console.error("NaN passed into Player.loseMoney()"):this.money===1/0&&e===1/0||(this.money=this.money-e,this.recordMoneySource(-1*e,t))}function me(e){return isNaN(e)?(console.error("NaN passed into Player.canAfford()"),!1):this.money>=e}function he(e,t){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(e,t),this.moneySourceB.record(e,t)}function de(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainHackingExp()"):(this.hacking_exp+=e,this.hacking_exp<0&&(this.hacking_exp=0),this.hacking=Object(O.b)(this.hacking_exp,this.hacking_mult*s.a.HackingLevelMultiplier))}function pe(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainStrengthExp()"):(this.strength_exp+=e,this.strength_exp<0&&(this.strength_exp=0),this.strength=Object(O.b)(this.strength_exp,this.strength_mult*s.a.StrengthLevelMultiplier))}function fe(e){if(isNaN(e))return void console.error("ERR: NaN passed into player.gainDefenseExp()");this.defense_exp+=e,this.defense_exp<0&&(this.defense_exp=0),this.defense=Object(O.b)(this.defense_exp,this.defense_mult*s.a.DefenseLevelMultiplier);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 ge(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainDexterityExp()"):(this.dexterity_exp+=e,this.dexterity_exp<0&&(this.dexterity_exp=0),this.dexterity=Object(O.b)(this.dexterity_exp,this.dexterity_mult*s.a.DexterityLevelMultiplier))}function ye(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainAgilityExp()"):(this.agility_exp+=e,this.agility_exp<0&&(this.agility_exp=0),this.agility=Object(O.b)(this.agility_exp,this.agility_mult*s.a.AgilityLevelMultiplier))}function be(e){isNaN(e)?console.error("ERR: NaN passed into Player.gainCharismaExp()"):(this.charisma_exp+=e,this.charisma_exp<0&&(this.charisma_exp=0),this.charisma=Object(O.b)(this.charisma_exp,this.charisma_mult*s.a.CharismaLevelMultiplier))}function Ee(e){isNaN(e)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(j.a[5]>0||this.intelligence>0)&&(this.intelligence_exp+=e,this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)))}function ke(e){const t=e.toLowerCase();return t.includes("hack")?this.hacking:t.includes("str")?this.strength:t.includes("def")?this.defense:t.includes("dex")?this.dexterity:t.includes("agi")?this.agility:t.includes("cha")?this.charisma:t.includes("int")?this.intelligence:0}function ve(e,t,a){this.workType!==f.a.WorkTypeFaction&&e===this.workType&&t===this.companyName||e===this.workType&&t===this.currentWorkFactionName&&a===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.currentWorkFactionName="",this.currentWorkFactionDescription="",this.createProgramName="",this.className="",this.workType="")}function _e(e=1){let t=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(t=this.focus?1:f.a.BaseFocusBonus);const a=t*this.workHackExpGainRate*e,n=t*this.workStrExpGainRate*e,r=t*this.workDefExpGainRate*e,i=t*this.workDexExpGainRate*e,s=t*this.workAgiExpGainRate*e,l=t*this.workChaExpGainRate*e,c=(this.workMoneyGainRate-this.workMoneyLossRate)*e;this.gainHackingExp(a),this.gainStrengthExp(n),this.gainDefenseExp(r),this.gainDexterityExp(i),this.gainAgilityExp(s),this.gainCharismaExp(l),this.gainMoney(c,this.className?"class":"work"),this.workHackExpGained+=a,this.workStrExpGained+=n,this.workDefExpGained+=r,this.workDexExpGained+=i,this.workAgiExpGained+=s,this.workChaExpGained+=l,this.workRepGained+=t*this.workRepGainRate*e,this.workMoneyGained+=t*this.workMoneyGainRate*e,this.workMoneyGained-=t*this.workMoneyLossRate*e}function we(e){this.resetWorkStatus(f.a.WorkTypeCompany,e),this.isWorking=!0,this.companyName=e,this.workType=f.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=f.a.MillisecondsPer8Hours}function Se(e,t=1){this.isWorking&&(this.workType==f.a.WorkTypeFaction?this.workForFaction(t)&&e.toFaction():this.workType==f.a.WorkTypeCreateProgram?this.createProgramWork(t)&&e.toTerminal():this.workType==f.a.WorkTypeStudyClass?this.takeClass(t)&&e.toCity():this.workType==f.a.WorkTypeCrime?this.commitCrime(t)&&e.toLocation(w.a[C.a.Slums]):this.workType==f.a.WorkTypeCompanyPartTime?this.workPartTime(t)&&e.toCity():this.work(t)&&e.toCity())}function Ce(){const e=Y.a.find(e=>e.specialName===this.companyName);if(!e)return.5;const t=Object(R.d)(e.hostname);return t instanceof A.a&&t&&t.backdoorInstalled?.75:.5}function xe(e){let t=!1;this.timeWorked+f.a._idleSpeed*e>=f.a.MillisecondsPer8Hours&&(t=!0,e=Math.round((f.a.MillisecondsPer8Hours-this.timeWorked)/f.a._idleSpeed)),this.timeWorked+=f.a._idleSpeed*e,this.workRepGainRate=this.getWorkRepGain(),this.workMoneyGainRate=this.getWorkMoneyGain(),this.processWorkEarnings(e);const a=u.a[this.companyName];return Object(B.a)(a,this.workRepGainRate,e),!!(t||this.timeWorked>=f.a.MillisecondsPer8Hours)&&(this.finishWork(!1),!0)}function Oe(e,t=!1){e&&(this.workRepGained*=this.cancelationPenalty());const a=.5===this.cancelationPenalty()?"half":"three-quarters";u.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();let n=V.a.createElement(V.a.Fragment,null,"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(z.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement(K.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(n=e?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 ",a," of the reputation you earned. ",V.a.createElement("br",null),V.a.createElement("br",null),n):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),n),t||Object(U.a)(n),this.isWorking=!1,this.focus=!1,this.resetWorkStatus(),t){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 Me(e){this.resetWorkStatus(f.a.WorkTypeCompanyPartTime,e),this.isWorking=!0,this.companyName=e,this.workType=f.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=f.a.MillisecondsPer8Hours}function Te(e){let t=!1;return this.timeWorked+f.a._idleSpeed*e>=f.a.MillisecondsPer8Hours&&(t=!0,e=Math.round((f.a.MillisecondsPer8Hours-this.timeWorked)/f.a._idleSpeed)),this.timeWorked+=f.a._idleSpeed*e,this.workRepGainRate=this.getWorkRepGain(),this.processWorkEarnings(e),!!(t||this.timeWorked>=f.a.MillisecondsPer8Hours)&&(this.finishWorkPartTime(),!0)}function Re(e=!1){u.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();const t=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(z.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement(K.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(e||Object(U.a)(t),this.isWorking=!1,this.resetWorkStatus(),e){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 Ae(){this.focus=!0}function Ne(){this.focus=!1}function Pe(e){let t=1+e.favor/100;isNaN(t)&&(t=1),this.workRepGainRate*=t,this.workRepGainRate*=s.a.FactionWorkRepGain,this.isWorking=!0,this.workType=f.a.WorkTypeFaction,this.currentWorkFactionName=e.name,this.timeNeededToCompleteWork=f.a.MillisecondsPer20Hours}function Ie(e){this.resetWorkStatus(f.a.WorkTypeFaction,e.name,f.a.FactionWorkHacking),this.workHackExpGainRate=.15*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(T.c)(this,e),this.factionWorkType=f.a.FactionWorkHacking,this.currentWorkFactionDescription="carrying out hacking contracts",this.startFactionWork(e)}function Fe(e){this.resetWorkStatus(f.a.WorkTypeFaction,e.name,f.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(T.a)(this,e),this.factionWorkType=f.a.FactionWorkField,this.currentWorkFactionDescription="carrying out field missions",this.startFactionWork(e)}function De(e){this.resetWorkStatus(f.a.WorkTypeFaction,e.name,f.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(T.b)(this,e),this.factionWorkType=f.a.FactionWorkSecurity,this.currentWorkFactionDescription="performing security detail",this.startFactionWork(e)}function je(e){const t=k.a[this.currentWorkFactionName];switch(this.factionWorkType){case f.a.FactionWorkHacking:this.workRepGainRate=Object(T.c)(this,t);break;case f.a.FactionWorkField:this.workRepGainRate=Object(T.a)(this,t);break;case f.a.FactionWorkSecurity:this.workRepGainRate=Object(T.b)(this,t)}this.workRepGainRate*=s.a.FactionWorkRepGain;let a=!1;return this.timeWorked+f.a._idleSpeed*e>=f.a.MillisecondsPer20Hours&&(a=!0,e=Math.round((f.a.MillisecondsPer20Hours-this.timeWorked)/f.a._idleSpeed)),this.timeWorked+=f.a._idleSpeed*e,this.processWorkEarnings(e),!!(a||this.timeWorked>=f.a.MillisecondsPer20Hours)&&(this.finishFactionWork(!1),!0)}function Be(e,t=!1){const a=k.a[this.currentWorkFactionName];if(a.playerReputation+=this.workRepGained,this.updateSkillLevels(),t||Object(U.a)(V.a.createElement(V.a.Fragment,null,"You worked for your faction ",a.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(z.a,{money:this.workMoneyGained}),V.a.createElement("br",null),V.a.createElement(K.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(),t){return"You worked for your faction "+a.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 Ge(){let e=1;const t=u.a[this.companyName];j.a[11]>0&&(e=1+t.favor/100);const a=this.jobs[this.companyName],n=d.a[a];return null==n?(console.error(`Could not find CompanyPosition object for ${a}. Work salary will be 0`),0):n.baseSalary*t.salaryMultiplier*this.work_money_mult*s.a.CompanyWorkMoney*e}function Le(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work hack exp gain will be 0"].join(" ")),0):a.hackingExpGain*e.expMultiplier*this.hacking_exp_mult*s.a.CompanyWorkExpGain}function We(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work str exp gain will be 0"].join(" ")),0):a.strengthExpGain*e.expMultiplier*this.strength_exp_mult*s.a.CompanyWorkExpGain}function He(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work def exp gain will be 0"].join(" ")),0):a.defenseExpGain*e.expMultiplier*this.defense_exp_mult*s.a.CompanyWorkExpGain}function Ue(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work dex exp gain will be 0"].join(" ")),0):a.dexterityExpGain*e.expMultiplier*this.dexterity_exp_mult*s.a.CompanyWorkExpGain}function qe(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work agi exp gain will be 0"].join(" ")),0):a.agilityExpGain*e.expMultiplier*this.agility_exp_mult*s.a.CompanyWorkExpGain}function Ke(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];return null==e||null==a?(console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work cha exp gain will be 0"].join(" ")),0):a.charismaExpGain*e.expMultiplier*this.charisma_exp_mult*s.a.CompanyWorkExpGain}function ze(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=d.a[t];if(null==e||null==a)return console.error(["Could not find Company object for "+this.companyName,`or CompanyPosition object for ${t}.`,"Work rep gain will be 0"].join(" ")),0;let n=a.calculateJobPerformance(this.hacking,this.strength,this.defense,this.dexterity,this.agility,this.charisma);n+=this.intelligence/f.a.MaxSkillLevel;let r=1+e.favor/100;return isNaN(r)&&(r=1),n*this.company_rep_mult*r}function $e(e,t,a,n){this.resetWorkStatus(),this.isWorking=!0,this.focus=!0,this.workType=f.a.WorkTypeCreateProgram,this.createProgramReqLvl=n,this.timeNeededToCompleteWork=a;for(let e=0;e<this.getHomeComputer().programs.length;++e){const a=this.getHomeComputer().programs[e];if(a.startsWith(t)&&a.endsWith("%-INC")){const t=a.split("-");if(3!=t.length)break;const n=Number(t[1].slice(0,-1));if(isNaN(n)||n<0||n>=100)break;this.timeWorkedCreateProgram=n/100*this.timeNeededToCompleteWork,this.getHomeComputer().programs.splice(e,1)}}this.createProgramName=t,e.toWork()}function Ve(e){let t=1;this.hasAugmentation(o.a.NeuroreceptorManager)||(t=this.focus?1:f.a.BaseFocusBonus);const a=this.createProgramReqLvl;let n=this.hacking/a*this.getIntelligenceBonus(3);return n=1+(n-1)/5,n*=t,this.timeWorked+=f.a._idleSpeed*e,this.timeWorkedCreateProgram+=f.a._idleSpeed*e*n,this.timeWorkedCreateProgram>=this.timeNeededToCompleteWork&&(this.finishCreateProgramWork(!1),!0)}function Ye(e){const t=this.createProgramName;if(!1===e)Object(U.a)("You've finished creating "+t+"!<br>The new program can be found on your home computer."),this.getHomeComputer().programs.push(t);else{const e=t+"-"+(Math.floor(this.timeWorkedCreateProgram/this.timeNeededToCompleteWork*1e4)/100).toString()+"%-INC";this.getHomeComputer().programs.push(e)}return e||this.gainIntelligenceExp(f.a.IntelligenceProgramBaseExpGain*this.timeWorked/1e3),this.isWorking=!1,this.resetWorkStatus(),"You've finished creating "+t+"! The new program can be found on your home computer."}function Je(e,t,a,n){this.resetWorkStatus(),this.isWorking=!0,this.focus=!0,this.workType=f.a.WorkTypeStudyClass,this.workCostMult=t,this.workExpMult=a,this.className=n;const r=Object(X.a)(this);this.workMoneyLossRate=r.workMoneyLossRate,this.workHackExpGainRate=r.workHackExpGainRate,this.workStrExpGainRate=r.workStrExpGainRate,this.workDefExpGainRate=r.workDefExpGainRate,this.workDexExpGainRate=r.workDexExpGainRate,this.workAgiExpGainRate=r.workAgiExpGainRate,this.workChaExpGainRate=r.workChaExpGainRate,e.toWork()}function Xe(e){this.timeWorked+=f.a._idleSpeed*e;const t=Object(X.a)(this);return this.workMoneyLossRate=t.workMoneyLossRate,this.workHackExpGainRate=t.workHackExpGainRate,this.workStrExpGainRate=t.workStrExpGainRate,this.workDefExpGainRate=t.workDefExpGainRate,this.workDexExpGainRate=t.workDexExpGainRate,this.workAgiExpGainRate=t.workAgiExpGainRate,this.workChaExpGainRate=t.workChaExpGainRate,this.processWorkEarnings(e),!1}function Qe(e=!1){if(this.gainIntelligenceExp(f.a.IntelligenceClassBaseExpGain*Math.round(this.timeWorked/1e3)),this.workMoneyGained>0)throw new Error("ERR: Somehow gained money while taking class");if(this.updateSkillLevels(),e||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(z.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,e){const e="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(),e}return this.resetWorkStatus(),""}function Ze(e,t,a,n,r,i,o,l,c,u,m=null){this.crimeType=t,this.resetWorkStatus(),this.isWorking=!0,this.focus=!0,this.workType=f.a.WorkTypeCrime,null!==m&&(this.committingCrimeThruSingFn=!0,this.singFnCrimeWorkerScript=m),this.workHackExpGained=a*this.hacking_exp_mult*s.a.CrimeExpGain,this.workStrExpGained=n*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=u,e.toWork()}function et(e){return this.timeWorked+=f.a._idleSpeed*e,this.timeWorked>=this.timeNeededToCompleteWork&&(this.finishCrime(!1),!0)}function tt(e){if(!e){if(Object(y.a)(this,this.crimeType)){let e=null;for(const t in b.a)if(b.a[t].type==this.crimeType){e=b.a[t];break}if(null==e)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-=e.karma,this.numPeopleKilled+=e.kills,e.intelligence_exp>0&&this.gainIntelligenceExp(e.intelligence_exp),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("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(z.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 e=this.singFnCrimeWorkerScript;this.committingCrimeThruSingFn&&null!==e?null==e.disableLogs.ALL&&null==e.disableLogs.commitCrime&&e.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 at(){if(!this.isWorking)return"";let e="";switch(this.workType){case f.a.WorkTypeStudyClass:e=this.finishClass(!0);break;case f.a.WorkTypeCompany:e=this.finishWork(!0,!0);break;case f.a.WorkTypeCompanyPartTime:e=this.finishWorkPartTime(!0);break;case f.a.WorkTypeFaction:e=this.finishFactionWork(!0,!0);break;case f.a.WorkTypeCreateProgram:e=this.finishCreateProgramWork(!0);break;case f.a.WorkTypeCrime:e=this.finishCrime(!0);break;default:return console.error(`Unrecognized work type (${this.workType})`),""}return e}function nt(e){return"number"!=typeof e?(console.warn("Player.takeDamage() called without a numeric argument: "+e),!1):(this.hp-=e,this.hp<=0&&(this.hospitalize(),!0))}function rt(e){"number"==typeof e?(this.hp+=e,this.hp>this.max_hp&&(this.hp=this.max_hp)):console.warn("Player.regenerateHp() called without a numeric argument: "+e)}function it(){const e=Object(G.b)(this);return J.b.emit("You've been Hospitalized for "+W.a.formatMoney(e),"warning",2e3),this.loseMoney(e,"hospitalization"),this.hp=this.max_hp,e}function ot(e,t=!1){let a=null;""!==this.companyName&&(a=u.a[this.companyName]);const n=this.jobs[this.companyName],r=u.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=e;if(!this.isQualified(r,i)){const e=Object(h.a)(r,i);return t||Object(U.a)("Unforunately, you do not qualify for this position<br>"+e),!1}if(!r.hasPosition(i))return!1;for(;;){const e=Object(m.a)(i);if(null==e)break;if(!r.hasPosition(e))break;if(!this.isQualified(r,e))break;i=e}if(null!=a&&a.name==r.name&&i.name==n){const e=Object(m.a)(i);if(null==e)return t||Object(U.a)("You are already at the highest position for your field! No promotion available"),!1;if(r.hasPosition(e)){if(!t){const t=Object(h.a)(r,e);Object(U.a)("Unfortunately, you do not qualify for a promotion<br>"+t)}return!1}return t||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,t||Object(U.a)("Congratulations! You were offered a new job at "+this.companyName+" as a "+i.name+"!"),!0}function st(e,t){let a=null;if(""!==this.companyName&&(a=u.a[this.companyName]),null==a||a.name!=e.name)return t;const n=this.jobs[this.companyName];if(!n)return t;const r=d.a[n];return r.isSoftwareJob()&&t.isSoftwareJob()||r.isITJob()&&t.isITJob()||r.isBusinessJob()&&t.isBusinessJob()||r.isSecurityEngineerJob()&&t.isSecurityEngineerJob()||r.isNetworkEngineerJob()&&t.isNetworkEngineerJob()||r.isSecurityJob()&&t.isSecurityJob()||r.isAgentJob()&&t.isAgentJob()||r.isSoftwareConsultantJob()&&t.isSoftwareConsultantJob()||r.isBusinessConsultantJob()&&t.isBusinessConsultantJob()||r.isPartTimeJob()&&t.isPartTimeJob()?Object(m.a)(r):t}function lt(e){1==this.isWorking&&this.workType.includes("Working for Company")&&this.companyName==e&&(this.isWorking=!1,this.companyName=""),this.companyName===e&&(this.companyName=""),delete this.jobs[e]}function ct(){return Boolean(Object.keys(this.jobs).length)}function ut(e=!1){return this.applyForJob(d.a[p.j[0]],e)}function mt(e=!1){return this.applyForJob(d.a[p.k[0]],e)}function ht(e=!1){return this.applyForJob(d.a[p.d[0]],e)}function dt(e=!1){const t=u.a[this.location];return this.isQualified(t,d.a[p.i[0]])?this.applyForJob(d.a[p.i[0]],e):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function pt(e=!1){const t=u.a[this.location];if(this.isQualified(t,d.a[p.f[0]])){const t=d.a[p.f[0]];return this.applyForJob(t,e)}return e||Object(U.a)("Unforunately, you do not qualify for this position"),!1}function ft(e=!1){return this.applyForJob(d.a[p.b[0]],e)}function gt(e=!1){return this.applyForJob(d.a[p.c[0]],e)}function yt(e=!1){return this.applyForJob(d.a[p.h[2]],e)}function bt(e=!1){const t=u.a[this.location];if(this.isQualified(t,d.a[p.a[0]])){const t=d.a[p.a[0]];return this.applyForJob(t,e)}return e||Object(U.a)("Unforunately, you do not qualify for this position"),!1}function Et(e=!1){const t=u.a[this.location],a=p.e[1];return!!t.hasPosition(a)&&(this.isQualified(t,d.a[a])?(this.jobs[t.name]=a,!this.focus&&this.isWorking&&this.companyName!==t.name&&this.resetWorkStatus(),this.companyName=t.name,e||Object(U.a)("Congratulations, you are now employed at "+this.location),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1))}function kt(e=!1){const t=u.a[this.location],a=p.g[1];return!!t.hasPosition(a)&&(this.isQualified(t,d.a[a])?(this.jobs[t.name]=a,!this.focus&&this.isWorking&&this.companyName!==t.name&&this.resetWorkStatus(),this.companyName=t.name,e||Object(U.a)("Congratulations, you are now employed part-time at "+this.location),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1))}function vt(e=!1){const t=u.a[this.location],a=p.e[0];return!!t.hasPosition(a)&&(this.isQualified(t,d.a[a])?(this.jobs[t.name]=a,!this.focus&&this.isWorking&&this.companyName!==t.name&&this.resetWorkStatus(),this.companyName=t.name,e||Object(U.a)("Congratulations, you are now employed as a waiter at "+this.location),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1))}function _t(e=!1){const t=u.a[this.location],a=p.g[0];return!!t.hasPosition(a)&&(this.isQualified(t,d.a[a])?(this.jobs[t.name]=a,!this.focus&&this.isWorking&&this.companyName!==t.name&&this.resetWorkStatus(),this.companyName=t.name,e||Object(U.a)("Congratulations, you are now employed as a part-time waiter at "+this.location),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1))}function wt(e,t){const a=e.jobStatReqOffset,n=t.requiredHacking>0?t.requiredHacking+a:0,r=t.requiredStrength>0?t.requiredStrength+a:0,i=t.requiredDefense>0?t.requiredDefense+a:0,o=t.requiredDexterity>0?t.requiredDexterity+a:0,s=t.requiredDexterity>0?t.requiredDexterity+a:0,l=t.requiredCharisma>0?t.requiredCharisma+a:0;return this.hacking>=n&&this.strength>=r&&this.defense>=i&&this.dexterity>=o&&this.agility>=s&&this.charisma>=l&&e.playerReputation>=t.requiredReputation}function St(e=!0){e&&this.resetMultipliers();for(let e=0;e<this.augmentations.length;++e){"HacknetNode NIC Architecture Neural-Upload"===this.augmentations[e].name&&(this.augmentations[e].name="Hacknet Node NIC Architecture Neural-Upload");const t=this.augmentations[e].name,a=n.a[t];if(null!=a)if(a.owned=!0,a.name!=o.a.NeuroFluxGovernor)Object(r.a)(this.augmentations[e],!0);else for(let t=0;t<a.level;++t)Object(r.a)(this.augmentations[e],!0);else console.warn(`Invalid augmentation name in Player.reapplyAllAugmentations(). Aug ${t} will be skipped`)}this.updateSkillLevels()}function Ct(){for(let e=0;e<this.sourceFiles.length;++e){const t="SourceFile"+this.sourceFiles[e].n;null!=D.a[t]?Object(I.a)(this.sourceFiles[e]):console.error("Invalid source file number: "+this.sourceFiles[e].n)}Object(F.a)(),this.updateSkillLevels()}function xt(){const e=[],t=this.augmentations.length,a=Object.keys(this.jobs),n=Object.values(this.jobs);function r(e,t=f.a.CorpFactionRepRequirement){return a.includes(e)&&function(e){const t=u.a[e];return null==t?0:t.playerReputation}(e)>t}const i=k.a.Illuminati;!i.isBanned&&!i.isMember&&!i.alreadyInvited&&t>=30&&this.money>=15e10&&this.hacking>=1500&&this.strength>=1200&&this.defense>=1200&&this.dexterity>=1200&&this.agility>=1200&&e.push(i);const o=k.a.Daedalus;!o.isBanned&&!o.isMember&&!o.alreadyInvited&&t>=Math.round(30*s.a.DaedalusAugsRequirement)&&this.money>=1e11&&(this.hacking>=2500||this.strength>=1500&&this.defense>=1500&&this.dexterity>=1500&&this.agility>=1500)&&e.push(o);const l=k.a["The Covenant"];!l.isBanned&&!l.isMember&&!l.alreadyInvited&&t>=20&&this.money>=75e9&&this.hacking>=850&&this.strength>=850&&this.defense>=850&&this.dexterity>=850&&this.agility>=850&&e.push(l);const c=k.a.ECorp;c.isBanned||c.isMember||c.alreadyInvited||!r(C.a.AevumECorp)||e.push(c);const m=k.a.MegaCorp;m.isBanned||m.isMember||m.alreadyInvited||!r(C.a.Sector12MegaCorp)||e.push(m);const h=k.a["Bachman & Associates"];h.isBanned||h.isMember||h.alreadyInvited||!r(C.a.AevumBachmanAndAssociates)||e.push(h);const d=k.a["Blade Industries"];d.isBanned||d.isMember||d.alreadyInvited||!r(C.a.Sector12BladeIndustries)||e.push(d);const p=k.a.NWO;p.isBanned||p.isMember||p.alreadyInvited||!r(C.a.VolhavenNWO)||e.push(p);const g=k.a["Clarke Incorporated"];g.isBanned||g.isMember||g.alreadyInvited||!r(C.a.AevumClarkeIncorporated)||e.push(g);const y=k.a["OmniTek Incorporated"];y.isBanned||y.isMember||y.alreadyInvited||!r(C.a.VolhavenOmniTekIncorporated)||e.push(y);const b=k.a["Four Sigma"];b.isBanned||b.isMember||b.alreadyInvited||!r(C.a.Sector12FourSigma)||e.push(b);const E=k.a["KuaiGong International"];E.isBanned||E.isMember||E.alreadyInvited||!r(C.a.ChongqingKuaiGongInternational)||e.push(E);const v=k.a["Fulcrum Secret Technologies"],_=Object(R.d)(P.a.FulcrumSecretTechnologies);if(!(_ instanceof A.a))throw new Error("Fulcrum Secret Technologies should be normal server");null==_?console.error("Could not find Fulcrum Secret Technologies Server"):v.isBanned||v.isMember||v.alreadyInvited||!_.backdoorInstalled||!r(C.a.AevumFulcrumTechnologies,25e4)||e.push(v);const w=k.a.BitRunners,x=Object(R.d)(P.a.BitRunnersServer);if(!(x instanceof A.a))throw new Error("BitRunners should be normal server");null==x?console.error("Could not find BitRunners Server"):w.isBanned||w.isMember||!x.backdoorInstalled||w.alreadyInvited||e.push(w);const O=k.a["The Black Hand"],M=Object(R.d)(P.a.TheBlackHandServer);if(!(M instanceof A.a))throw new Error("TheBlackHand should be normal server");null==M?console.error("Could not find The Black Hand Server"):O.isBanned||O.isMember||!M.backdoorInstalled||O.alreadyInvited||e.push(O);const T=k.a.NiteSec,N=Object(R.d)(P.a.NiteSecServer);if(!(N instanceof A.a))throw new Error("NiteSec should be normal server");null==N?console.error("Could not find NiteSec Server"):T.isBanned||T.isMember||!N.backdoorInstalled||T.alreadyInvited||e.push(T);const I=k.a.Chongqing;!I.isBanned&&!I.isMember&&!I.alreadyInvited&&this.money>=2e7&&this.city==S.a.Chongqing&&e.push(I);const F=k.a["Sector-12"];!F.isBanned&&!F.isMember&&!F.alreadyInvited&&this.money>=15e6&&this.city==S.a.Sector12&&e.push(F);const D=k.a["New Tokyo"];!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=2e7&&this.city==S.a.NewTokyo&&e.push(D);const j=k.a.Aevum;!j.isBanned&&!j.isMember&&!j.alreadyInvited&&this.money>=4e7&&this.city==S.a.Aevum&&e.push(j);const B=k.a.Ishima;!B.isBanned&&!B.isMember&&!B.alreadyInvited&&this.money>=3e7&&this.city==S.a.Ishima&&e.push(B);const G=k.a.Volhaven;!G.isBanned&&!G.isMember&&!G.alreadyInvited&&this.money>=5e7&&this.city==S.a.Volhaven&&e.push(G);const W=k.a["Speakers for the Dead"];!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&&!a.includes(C.a.Sector12CIA)&&!a.includes(C.a.Sector12NSA)&&e.push(W);const H=k.a["The Dark Army"];!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&&!a.includes(C.a.Sector12CIA)&&!a.includes(C.a.Sector12NSA)&&e.push(H);const U=k.a["The Syndicate"];!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&&!a.includes(C.a.Sector12CIA)&&!a.includes(C.a.Sector12NSA)&&e.push(U);const q=k.a.Silhouette;!q.isBanned&&!q.isMember&&!q.alreadyInvited&&(n.includes("Chief Technology Officer")||n.includes("Chief Financial Officer")||n.includes("Chief Executive Officer"))&&this.money>=15e6&&this.karma<=-22&&e.push(q);const K=k.a.Tetrads;!K.isBanned&&!K.isMember&&!K.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&&e.push(K);const z=k.a["Slum Snakes"];!z.isBanned&&!z.isMember&&!z.alreadyInvited&&this.strength>=30&&this.defense>=30&&this.dexterity>=30&&this.agility>=30&&this.karma<=-9&&this.money>=1e6&&e.push(z);const $=k.a.Netburners;let V=0,Y=0,J=0;for(let e=0;e<this.hacknetNodes.length;++e){const t=this.hacknetNodes[e];if("string"==typeof t){const e=Object(R.d)(t);if(null===e||!(e instanceof L.a))throw new Error("player hacknet server was not HacknetServer");J+=e.level,V+=e.maxRam,Y+=e.cores}else J+=t.level,V+=t.ram,Y+=t.cores}!$.isBanned&&!$.isMember&&!$.alreadyInvited&&this.hacking>=80&&V>=8&&Y>=4&&J>=100&&e.push($);const X=k.a["Tian Di Hui"];!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)&&e.push(X);const Q=k.a.CyberSec,Z=Object(R.d)(P.a.CyberSecServer);if(!(Z instanceof A.a))throw new Error("cybersec should be normal server");return null==Z?console.error("Could not find CyberSec Server"):Q.isBanned||Q.isMember||!Z.backdoorInstalled||Q.alreadyInvited||e.push(Q),e}function Ot(e){this.bitNodeN=e}function Mt(e){for(const t in this.queuedAugmentations)if(this.queuedAugmentations[t].name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);for(const t in this.augmentations)if(this.augmentations[t].name==e)return void console.warn(`tried to queue ${e} twice, this may be a bug`);this.queuedAugmentations.push(new i.a(e))}function Tt(e,t=1){if(null==e||null==e.type||null==e)return"No reward for this contract";switch(e.type){case l.c.FactionReputation:if(null==e.name||!(k.a[e.name]instanceof E.a))return e.type=l.c.FactionReputationAll,this.gainCodingContractReward(e);const a=f.a.CodingContractBaseFactionRepGain*t;return k.a[e.name].playerReputation+=a,`Gained ${a} faction reputation for ${e.name}`;case l.c.FactionReputationAll:const n=f.a.CodingContractBaseFactionRepGain*t,r=["Bladeburners"],i=this.factions.slice().filter(e=>!r.includes(e));if(0==i.length)return e.type=l.c.Money,this.gainCodingContractReward(e,t);const o=Math.floor(n/i.length);for(const e of i)k.a[e]instanceof E.a&&(k.a[e].playerReputation+=o);return`Gained ${o} reputation for each of the following factions: ${i.toString()}`;case l.c.CompanyReputation:{if(null==e.name||!(u.a[e.name]instanceof c.a))return e.type=l.c.FactionReputationAll,this.gainCodingContractReward(e);const a=f.a.CodingContractBaseCompanyRepGain*t;return u.a[e.name].playerReputation+=a,`Gained ${a} company reputation for ${e.name}`}case l.c.Money:default:{const e=f.a.CodingContractBaseMoneyGain*t*s.a.CodingContractMoney;return this.gainMoney(e,"codingcontract"),"Gained "+W.a.formatMoney(e)}}}function Rt(e){return null==_.a[e]?(console.warn("Player.travel() called with invalid city: "+e),!1):(this.city=e,!0)}function At(e){return null==w.a[e]?(console.warn("Player.gotoLocation() called with invalid location: "+e),!1):(this.location=e,!0)}function Nt(){return 10===this.bitNodeN||j.a[10]>0}function Pt(e){this.exploits.includes(e)||(this.exploits.push(e),J.b.emit("SF -1 acquired!","success",2e3))}function It(e){const t=Q.a[e];t&&(this.achievements.map(e=>e.ID).includes(e)||(this.achievements.push({ID:e,unlockedOn:(new Date).getTime()}),J.b.emit(`Unlocked Achievement: "${t.Name}"`,"success",2e3)))}function Ft(e){return Object(M.a)(this.intelligence,e)}function Dt(){return this.moneySourceA.casino}function jt(e){return this.hasOwnProperty(e)?this[e]:1}function Bt(e,t){this.hasOwnProperty(e)&&(this[e]=t)}function Gt(){return 13===this.bitNodeN||j.a[13]>0}function Lt(e){const t=this.sourceFiles.find(t=>t.n===e);return t?t.lvl:0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(512),r=a(5),i=a(807),o=a(296),s=a(21);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class c extends n.a{constructor(e={hostname:"",ip:Object(o.a)()}){super(e),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!=e.purchasedByPlayer&&e.purchasedByPlayer,this.maxRam=null!=e.maxRam?e.maxRam:0,this.requiredHackingSkill=null!=e.requiredHackingSkill?e.requiredHackingSkill:1,this.moneyAvailable=null!=e.moneyAvailable?e.moneyAvailable*r.a.ServerStartingMoney:0,this.moneyMax=25*this.moneyAvailable*r.a.ServerMaxMoney,this.hackDifficulty=null!=e.hackDifficulty?e.hackDifficulty*r.a.ServerStartingSecurity:1,this.baseDifficulty=this.hackDifficulty,this.minDifficulty=Math.max(1,Math.round(this.hackDifficulty/3)),this.serverGrowth=null!=e.serverGrowth?e.serverGrowth:1,this.numOpenPortsRequired=null!=e.numOpenPortsRequired?e.numOpenPortsRequired:5}capDifficulty(){this.hackDifficulty<this.minDifficulty&&(this.hackDifficulty=this.minDifficulty),this.hackDifficulty<1&&(this.hackDifficulty=1),this.hackDifficulty>100&&(this.hackDifficulty=100)}changeMinimumSecurity(e,t=!1){t?this.minDifficulty*=e:this.minDifficulty+=e,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(e){if(this.moneyMax>1e13){const t=this.moneyMax-1e13;e=1+(e-1)/Math.log(t)/Math.log(8)}this.moneyMax*=e}fortify(e){this.hackDifficulty+=e,this.capDifficulty()}weaken(e){this.hackDifficulty-=e*r.a.ServerWeakenRate,this.capDifficulty()}toJSON(){return Object(s.b)("Server",this)}static fromJSON(e){return Object(s.a)(c,e.data)}}s.c.constructors.Server=c},function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"c",(function(){return s}));var n=a(0),r=a.n(n);const i={Corporation:r.a.createContext({}),Division:r.a.createContext({})},o=()=>Object(n.useContext)(i.Corporation),s=()=>Object(n.useContext)(i.Division)},,,function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.Company=0]="Company",e[e.Gym=1]="Gym",e[e.Hospital=2]="Hospital",e[e.Slums=3]="Slums",e[e.Special=4]="Special",e[e.StockMarket=5]="StockMarket",e[e.TechVendor=6]="TechVendor",e[e.TravelAgency=7]="TravelAgency",e[e.University=8]="University",e[e.Casino=9]="Casino"}(n||(n={}))},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"b",(function(){return c})),a.d(t,"c",(function(){return u})),a.d(t,"e",(function(){return m}));var n=a(0),r=a.n(n),i=a(121),o=a(129);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:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Utilities:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Agriculture:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Fishing:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Mining:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Food:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Tobacco:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Chemical:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Pharmaceutical:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Computer:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Robotics:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Software:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Healthcare:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),RealEstate:e=>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:e}),r.a.createElement("br",null),"Recommended starting Industry: NO")},u={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 m(){u.Energy=Object(i.a)(),u.Utilities=Object(i.a)(),u.Agriculture=Object(i.a)(),u.Fishing=Object(i.a)(),u.Mining=Object(i.a)(),u.Food=Object(i.a)(),u.Tobacco=Object(i.a)(),u.Chemical=Object(i.a)(),u.Pharmaceutical=Object(i.a)(),u.Computer=Object(i.a)(),u.Robotics=Object(i.a)(),u.Software=Object(i.a)(),u.Healthcare=Object(i.a)(),u.RealEstate=Object(i.a)()}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Operations:"Operations",Engineer:"Engineer",Business:"Business",Management:"Management",RandD:"Research & Development",Training:"Training",Unassigned:"Unassigned"}},,function(e,t,a){"use strict";a.d(t,"g",(function(){return f})),a.d(t,"l",(function(){return g})),a.d(t,"h",(function(){return y})),a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return E})),a.d(t,"e",(function(){return k})),a.d(t,"f",(function(){return v})),a.d(t,"d",(function(){return _})),a.d(t,"c",(function(){return w})),a.d(t,"n",(function(){return S})),a.d(t,"o",(function(){return C})),a.d(t,"k",(function(){return x})),a.d(t,"j",(function(){return O})),a.d(t,"i",(function(){return M})),a.d(t,"p",(function(){return R})),a.d(t,"m",(function(){return A}));var n=a(208),r=a(195),i=a(170),o=a(34),s=a(87),l=a(344),c=a(231),u=a(345),m=a(39),h=a(24),d=a(44),p=a(80);function f(e){return 9===e.bitNodeN||p.a[9]>0}function g(e){if(m.a.isRunning){if(m.a.currStep!==m.f.HacknetNodesIntroduction)return-1;Object(m.c)()}const t=e.hacknetNodes.length;if(f(e)){const a=E(e);if(isNaN(a))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return!e.canAfford(a)||t>=o.b.MaxServers?-1:(e.loseMoney(a,"hacknet_expenses"),e.createHacknetServer(),R(e),t)}{const a=b(e);if(isNaN(a))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!e.canAfford(a))return-1;const r="hacknet-node-"+t,i=new n.a(r,e.hacknet_node_money_mult);return e.loseMoney(a,"hacknet_expenses"),e.hacknetNodes.push(i),t}}function y(e){return f(e)&&e.hacknetNodes.length>=o.b.MaxServers}function b(e){return Object(r.d)(e.hacknetNodes.length+1,e.hacknet_node_purchase_cost_mult)}function E(e){return Object(i.f)(e.hacknetNodes.length+1,e.hacknet_node_purchase_cost_mult)}function k(e,t,a){if(null==a)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(e.money<t.calculateLevelUpgradeCost(1,e.hacknet_node_level_cost_mult))return 0;let n=1,r=a-1;const i=a-t.level;if(e.money>t.calculateLevelUpgradeCost(i,e.hacknet_node_level_cost_mult))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!==a&&e.money>t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult)&&e.money<t.calculateLevelUpgradeCost(o+1,e.hacknet_node_level_cost_mult))return Math.min(i,o);if(e.money<t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult))r=o-1;else{if(!(e.money>t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult)))return Math.min(i,o);n=o+1}}return 0}function v(e,t,a){if(null==a)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(e.money<t.calculateRamUpgradeCost(1,e.hacknet_node_ram_cost_mult))return 0;let n;if(n=t instanceof s.a?Math.round(Math.log2(a/t.maxRam)):Math.round(Math.log2(a/t.ram)),e.money>t.calculateRamUpgradeCost(n,e.hacknet_node_ram_cost_mult))return n;for(let a=n-1;a>=0;--a)if(e.money>t.calculateRamUpgradeCost(a,e.hacknet_node_ram_cost_mult))return a;return 0}function _(e,t,a){if(null==a)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(e.money<t.calculateCoreUpgradeCost(1,e.hacknet_node_core_cost_mult))return 0;let n=1,r=a-1;const i=a-t.cores;if(e.money>t.calculateCoreUpgradeCost(i,e.hacknet_node_core_cost_mult))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!=a&&e.money>t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult)&&e.money<t.calculateCoreUpgradeCost(o+1,e.hacknet_node_core_cost_mult))return Math.min(i,o);if(e.money<t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult))r=o-1;else{if(!(e.money>t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult)))return Math.min(i,o);n=o+1}}return 0}function w(e,t,a){if(null==a)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!e.canAfford(t.calculateCacheUpgradeCost(1)))return 0;let n=1,r=a-1;const i=a-t.cache;if(e.canAfford(t.calculateCacheUpgradeCost(i)))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!=a&&e.canAfford(t.calculateCacheUpgradeCost(o))&&!e.canAfford(t.calculateCacheUpgradeCost(o+1)))return Math.min(i,o);if(e.canAfford(t.calculateCacheUpgradeCost(o))){if(!e.canAfford(t.calculateCacheUpgradeCost(o)))return Math.min(i,o);n=o+1}else r=o-1}return 0}function S(e,t,a=1){const n=Math.round(a),r=t.calculateLevelUpgradeCost(n,e.hacknet_node_level_cost_mult);if(isNaN(r)||r<=0||n<0)return!1;const i=t instanceof s.a;if(t.level>=(i?o.b.MaxLevel:o.a.MaxLevel))return!1;if(t.level+n>(i?o.b.MaxLevel:o.a.MaxLevel)){return S(e,t,Math.max(0,(i?o.b.MaxLevel:o.a.MaxLevel)-t.level))}return!!e.canAfford(r)&&(e.loseMoney(r,"hacknet_expenses"),t.upgradeLevel(n,e.hacknet_node_money_mult),!0)}function C(e,t,a=1){const r=Math.round(a),i=t.calculateRamUpgradeCost(r,e.hacknet_node_ram_cost_mult);if(isNaN(i)||i<=0||r<0)return!1;if(t instanceof s.a&&t.maxRam>=o.b.MaxRam)return!1;if(t instanceof n.a&&t.ram>=o.a.MaxRam)return!1;if(t instanceof s.a){if(t.maxRam*Math.pow(2,r)>o.b.MaxRam){return C(e,t,Math.max(0,Math.log2(Math.round(o.b.MaxRam/t.maxRam))))}}else if(t instanceof n.a&&t.ram*Math.pow(2,r)>o.a.MaxRam){return C(e,t,Math.max(0,Math.log2(Math.round(o.a.MaxRam/t.ram))))}return!!e.canAfford(i)&&(e.loseMoney(i,"hacknet_expenses"),t.upgradeRam(r,e.hacknet_node_money_mult),!0)}function x(e,t,a=1){const n=Math.round(a),r=t.calculateCoreUpgradeCost(n,e.hacknet_node_core_cost_mult);if(isNaN(r)||r<=0||n<0)return!1;const i=t instanceof s.a;if(t.cores>=(i?o.b.MaxCores:o.a.MaxCores))return!1;if(t.cores+n>(i?o.b.MaxCores:o.a.MaxCores)){return x(e,t,Math.max(0,(i?o.b.MaxCores:o.a.MaxCores)-t.cores))}return!!e.canAfford(r)&&(e.loseMoney(r,"hacknet_expenses"),t.upgradeCore(n,e.hacknet_node_money_mult),!0)}function O(e,t,a=1){const n=Math.round(a),r=t.calculateCacheUpgradeCost(n);if(isNaN(r)||r<=0||n<0)return!1;if(!(t instanceof s.a))return console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1;if(t.cache+n>o.b.MaxCache){return O(e,t,Math.max(0,o.b.MaxCache-t.cache))}return!!e.canAfford(r)&&(e.loseMoney(r,"hacknet_expenses"),t.upgradeCache(n),!0)}function M(e,t){return 0===e.hacknetNodes.length?0:f(e)?function(e,t){if(!(e.hashManager instanceof l.a))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let a=0;for(let r=0;r<e.hacknetNodes.length;++r){const i=e.hacknetNodes[r];if(i instanceof n.a)throw new Error("player nodes should not be HacketNode");const o=Object(h.d)(i);if(!(o instanceof s.a))throw new Error("player nodes shoud not be Server");o.updateHashRate(e.hacknet_node_money_mult);const l=o.process(t);a+=l}const r=e.hashManager.storeHashes(a);if(r>0){const t=c.a["Sell for Money"];if(null===t)throw new Error("Could not get the hash upgrade");if(!t.cost)throw new Error("Upgrade is not properly configured");const a=Math.floor(r/t.cost);a>0&&e.gainMoney(t.value*a,"hacknet")}return a}(e,t):e.hacknetNodes[0]instanceof n.a?function(e,t){let a=0;for(let n=0;n<e.hacknetNodes.length;++n){const r=e.hacknetNodes[n];if("string"==typeof r)throw new Error("player node should not be ip string");a+=T(e,t,r)}return a}(e,t):0}function T(e,t,a){const n=a.process(t);return e.gainMoney(n,"hacknet"),n}function R(e){if(!(e.hashManager instanceof l.a))return void console.error("Player does not have a HashManager");const t=e.hacknetNodes;if(0===t.length)return void e.hashManager.updateCapacity(0);let a=0;for(let r=0;r<t.length;++r){if("string"!=typeof t[r])return void e.hashManager.updateCapacity(0);const i=t[r];if(i instanceof n.a)throw new Error("player nodes should be string but isn't");const o=Object(h.d)(i);if(!(o instanceof s.a))return void e.hashManager.updateCapacity(0);a+=o.hashCapacity}e.hashManager.updateCapacity(a)}function A(e,t,a){if(!(e.hashManager instanceof l.a))return console.error("Player does not have a HashManager"),!1;if(e.hashManager.upgrade(t)){const n=c.a[t];switch(t){case"Sell for Money":e.gainMoney(n.value,"hacknet");break;case"Sell for Corporation Funds":{const a=e.corporation;if(null===a)return e.hashManager.refundUpgrade(t),!1;a.funds=a.funds+n.value;break}case"Reduce Minimum Security":try{const e=Object(h.d)(a);if(null==e)return console.error("Invalid target specified in purchaseHashUpgrade(): "+a),!1;if(!(e instanceof d.a))throw new Error(`'${a}' is not a normal server.`);e.changeMinimumSecurity(n.value,!0)}catch(a){return e.hashManager.refundUpgrade(t),!1}break;case"Increase Maximum Money":try{const e=Object(h.d)(a);if(null==e)return console.error("Invalid target specified in purchaseHashUpgrade(): "+a),!1;if(!(e instanceof d.a))throw new Error(`'${a}' is not a normal server.`);e.changeMaximumMoney(n.value)}catch(a){return e.hashManager.refundUpgrade(t),!1}break;case"Improve Studying":case"Improve Gym Training":break;case"Exchange for Corporation Research":{const a=e.corporation;if(null===a)return e.hashManager.refundUpgrade(t),!1;for(const e of a.divisions)e.sciResearch.qty+=n.value;break}case"Exchange for Bladeburner Rank":{const a=e.bladeburner;if(null===a)return e.hashManager.refundUpgrade(t),!1;a.changeRank(e,n.value);break}case"Exchange for Bladeburner SP":{const a=e.bladeburner;if(null===a)return e.hashManager.refundUpgrade(t),!1;a.skillPoints+=n.value;break}case"Generate Coding Contract":Object(u.b)();break;default:return console.warn(`Unrecognized upgrade name ${t}. Upgrade has no effect`),e.hashManager.refundUpgrade(t),!1}return!0}return!1}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={CityNames:["Aevum","Chongqing","Sector-12","New Tokyo","Ishima","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(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(808),r=a(809);const i={};for(const e of r.a)i[e.key]=new n.a(e.name,e.create,e.run)},function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"c",(function(){return l}));var n=a(820),r=a(225),i=a(21);let o={};function s(){const e=o;o={},n.a.forEach(e=>{var t;null!=o[(t=e).name]&&console.warn("Duplicate Company Position being defined: "+t.name),o[t.name]=new r.a(t)});for(const t in o){const a=o[t];e[t]instanceof r.a?(a.favor=e[t].favor,isNaN(a.favor)&&(a.favor=0)):a.favor=0}}function l(e){o=JSON.parse(e,i.c)}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o}));var n=a(21);let r={"Slum Snakes":{power:1,territory:1/7},Tetrads:{power:1,territory:1/7},"The Syndicate":{power:1,territory:1/7},"The Dark Army":{power:1,territory:1/7},"Speakers for the Dead":{power:1,territory:1/7},NiteSec:{power:1,territory:1/7},"The Black Hand":{power:1,territory:1/7}};function i(){r={"Slum Snakes":{power:1,territory:1/7},Tetrads:{power:1,territory:1/7},"The Syndicate":{power:1,territory:1/7},"The Dark Army":{power:1,territory:1/7},"Speakers for the Dead":{power:1,territory:1/7},NiteSec:{power:1,territory:1/7},"The Black Hand":{power:1,territory:1/7}}}function o(e){r=JSON.parse(e,n.c)}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.Long="L",e.Short="S"}(n||(n={}))},function(e,t,a){"use strict";let n;function r(e){switch(e){case n.HackingChance:return"+x% hack() success chance";case n.HackingSpeed:return"+x% faster hack(), grow(), and weaken()";case n.HackingMoney:return"+x% hack() power";case n.HackingGrow:return"+x% grow() power";case n.Hacking:return"+x% hacking skill";case n.Strength:return"+x% strength skill";case n.Defense:return"+x% defense skill";case n.Dexterity:return"+x% dexterity skill";case n.Agility:return"+x% agility skill";case n.Charisma:return"+x% charisma skill";case n.HacknetMoney:return"+x% hacknet production";case n.HacknetCost:return"x% cheaper hacknet cost";case n.Rep:return"+x% reputation from factions and companies";case n.WorkMoney:return"+x% work money";case n.Crime:return"+x% crime money";case n.Bladeburner:return"+x% all bladeburner stats"}throw new Error("Calling effect for fragment type that doesn't have an effect "+e)}a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r})),function(e){e[e.None=0]="None",e[e.Delete=1]="Delete",e[e.HackingChance=2]="HackingChance",e[e.HackingSpeed=3]="HackingSpeed",e[e.HackingMoney=4]="HackingMoney",e[e.HackingGrow=5]="HackingGrow",e[e.Hacking=6]="Hacking",e[e.Strength=7]="Strength",e[e.Defense=8]="Defense",e[e.Dexterity=9]="Dexterity",e[e.Agility=10]="Agility",e[e.Charisma=11]="Charisma",e[e.HacknetMoney=12]="HacknetMoney",e[e.HacknetCost=13]="HacknetCost",e[e.Rep=14]="Rep",e[e.WorkMoney=15]="WorkMoney",e[e.Crime=16]="Crime",e[e.Bladeburner=17]="Bladeburner",e[e.Booster=18]="Booster"}(n||(n={}))},,,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"l",(function(){return NewIndustry})),__webpack_require__.d(__webpack_exports__,"k",(function(){return NewCity})),__webpack_require__.d(__webpack_exports__,"x",(function(){return UnlockUpgrade})),__webpack_require__.d(__webpack_exports__,"h",(function(){return LevelUpgrade})),__webpack_require__.d(__webpack_exports__,"g",(function(){return IssueDividends})),__webpack_require__.d(__webpack_exports__,"o",(function(){return SellMaterial})),__webpack_require__.d(__webpack_exports__,"p",(function(){return SellProduct})),__webpack_require__.d(__webpack_exports__,"u",(function(){return SetSmartSupply})),__webpack_require__.d(__webpack_exports__,"v",(function(){return SetSmartSupplyUseLeftovers})),__webpack_require__.d(__webpack_exports__,"c",(function(){return BuyMaterial})),__webpack_require__.d(__webpack_exports__,"a",(function(){return AssignJob})),__webpack_require__.d(__webpack_exports__,"y",(function(){return UpgradeOfficeSize})),__webpack_require__.d(__webpack_exports__,"w",(function(){return ThrowParty})),__webpack_require__.d(__webpack_exports__,"m",(function(){return PurchaseWarehouse})),__webpack_require__.d(__webpack_exports__,"z",(function(){return UpgradeWarehouse})),__webpack_require__.d(__webpack_exports__,"b",(function(){return BuyCoffee})),__webpack_require__.d(__webpack_exports__,"f",(function(){return HireAdVert})),__webpack_require__.d(__webpack_exports__,"j",(function(){return MakeProduct})),__webpack_require__.d(__webpack_exports__,"n",(function(){return Research})),__webpack_require__.d(__webpack_exports__,"e",(function(){return ExportMaterial})),__webpack_require__.d(__webpack_exports__,"d",(function(){return CancelExportMaterial})),__webpack_require__.d(__webpack_exports__,"i",(function(){return LimitProductProduction})),__webpack_require__.d(__webpack_exports__,"q",(function(){return SetMaterialMarketTA1})),__webpack_require__.d(__webpack_exports__,"r",(function(){return SetMaterialMarketTA2})),__webpack_require__.d(__webpack_exports__,"s",(function(){return SetProductMarketTA1})),__webpack_require__.d(__webpack_exports__,"t",(function(){return SetProductMarketTA2}));var _IndustryData__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(51),_Industry__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(841),_data_Constants__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(42),_OfficeSpace__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(348),_Product__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(371),_Warehouse__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(229),_Locations_Cities__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(140),_EmployeePositions__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(53),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(349),_ResearchMap__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(299);function NewIndustry(e,t,a){for(let t=0;t<e.divisions.length;++t)if(e.divisions[t].name===a)throw new Error("This division name is already in use!");const n=_IndustryData__WEBPACK_IMPORTED_MODULE_0__.d[t];if(void 0===n)throw new Error(`Invalid industry: '${t}'`);if(e.funds<n)throw new Error("Not enough money to create a new division in this industry");if(""===a)throw new Error("New division must have a name!");e.funds=e.funds-n,e.divisions.push(new _Industry__WEBPACK_IMPORTED_MODULE_1__.a({corp:e,name:a,type:t}))}function NewCity(e,t,a){if(e.funds<_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialCost)throw new Error("You don't have enough company funds to open a new office!");e.funds=e.funds-_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialCost,t.offices[a]=new _OfficeSpace__WEBPACK_IMPORTED_MODULE_3__.a({loc:a,size:_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialSize})}function UnlockUpgrade(e,t){if(e.funds<t[1])throw new Error("Insufficient funds");e.unlock(t)}function LevelUpgrade(e,t){const a=t[1],n=t[2],r=e.upgrades[t[0]],i=a*Math.pow(n,r);if(e.funds<i)throw new Error("Insufficient funds");e.upgrade(t)}function IssueDividends(e,t){if(isNaN(t)||t<0||t>_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.DividendMaxPercentage)throw new Error("Invalid value. Must be an integer between 0 and "+_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.DividendMaxPercentage);e.dividendPercentage=100*t}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(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))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,"1");tempQty=tempQty.replace(/PROD/g,"1");try{tempQty=eval(tempQty)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==tempQty||isNaN(parseFloat(tempQty)))throw new Error("Invalid value or expression for sell price field");mat.sllman[0]=!0,mat.sllman[1]=q}else{if(isNaN(parseFloat(amt)))throw new Error("Invalid value for sell quantity field! Must be numeric or 'MAX'");{let e=parseFloat(amt);isNaN(e)&&(e=0),0===e?(mat.sllman[0]=!1,mat.sllman[1]=0):(mat.sllman[0]=!0,mat.sllman[1]=e)}}}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(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell quantity field.");product.sCost=price}else{const e=parseFloat(price);if(isNaN(e))throw new Error("Invalid value for sell price field");product.sCost=e}const cities=Object.keys(_Locations_Cities__WEBPACK_IMPORTED_MODULE_6__.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,"1");temp=temp.replace(/PROD/g,"1");try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field");if(all)for(let e=0;e<cities.length;++e){const t=cities[e];product.sllman[t][0]=!0,product.sllman[t][1]=qty}else product.sllman[city][0]=!0,product.sllman[city][1]=qty}else{if(isNaN(parseFloat(amt)))throw new Error("Invalid value for sell quantity field! Must be numeric");{let e=parseFloat(amt);if(isNaN(e)&&(e=0),0===e)if(all)for(let e=0;e<cities.length;++e){const t=cities[e];product.sllman[t][0]=!1,product.sllman[t][1]=""}else product.sllman[city][0]=!1,product.sllman[city][1]="";else if(all)for(let t=0;t<cities.length;++t){const a=cities[t];product.sllman[a][0]=!0,product.sllman[a][1]=e}else product.sllman[city][0]=!0,product.sllman[city][1]=e}}}function SetSmartSupply(e,t){e.smartSupplyEnabled=t}function SetSmartSupplyUseLeftovers(e,t,a){if(!Object.keys(e.smartSupplyUseLeftovers).includes(t.name))throw new Error(`Invalid material '${t.name}'`);e.smartSupplyUseLeftovers[t.name]=a}function BuyMaterial(e,t){if(isNaN(t))throw new Error(`Invalid amount '${t}' to buy material '${e.name}'`);e.buy=t}function AssignJob(e,t){if(!Object.values(_EmployeePositions__WEBPACK_IMPORTED_MODULE_7__.a).includes(t))throw new Error(`'${t}' is not a valid job.`);e.pos=t}function UpgradeOfficeSize(e,t,a){const n=Math.round(t.size/_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialSize);let r=0;for(let e=0;e<a/_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialSize;++e)r+=Math.pow(1.09,n+e);const i=_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.OfficeInitialCost*r;e.funds<i||(t.size+=a,e.funds=e.funds-i)}function ThrowParty(e,t,a){const n=a*t.employees.length;if(e.funds<n)return 0;e.funds=e.funds-n;let r=0;for(let e=0;e<t.employees.length;++e)r=t.employees[e].throwParty(a);return r}function PurchaseWarehouse(e,t,a){e.funds<_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.WarehouseInitialCost||t.warehouses[a]instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_5__.a||(t.warehouses[a]=new _Warehouse__WEBPACK_IMPORTED_MODULE_5__.a({corp:e,industry:t,loc:a,size:_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.WarehouseInitialSize}),e.funds=e.funds-_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.WarehouseInitialCost)}function UpgradeWarehouse(e,t,a){const n=_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.WarehouseUpgradeBaseCost*Math.pow(1.07,a.level+1);++a.level,a.updateSize(e,t),e.funds=e.funds-n}function BuyCoffee(e,t,a){const n=_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_8__.a[0],r=a.employees.length*n[1];e.funds<r||(e.funds=e.funds-r,t.upgrade(n,{corporation:e,office:a}))}function HireAdVert(e,t,a){const n=_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_8__.a[1],r=n[1]*Math.pow(n[2],t.upgrades[1]);e.funds<r||(e.funds=e.funds-r,t.upgrade(n,{corporation:e,office:a}))}function MakeProduct(e,t,a,n,r,i){if(r<0&&(r=0),i<0&&(i=0),null==n||""===n)throw new Error("You must specify a name for your product!");if(isNaN(r))throw new Error("Invalid value for design investment");if(isNaN(i))throw new Error("Invalid value for marketing investment");if(e.funds<r+i)throw new Error("You don't have enough company funds to make this large of an investment");const o=new _Product__WEBPACK_IMPORTED_MODULE_4__.a({name:n.replace(/[<>]/g,""),createCity:a,designCost:r,advCost:i});if(t.products[o.name]instanceof _Product__WEBPACK_IMPORTED_MODULE_4__.a)throw new Error("You already have a product with this name!");e.funds=e.funds-(r+i),t.products[o.name]=o}function Research(e,t){const a=_IndustryData__WEBPACK_IMPORTED_MODULE_0__.c[e.type];if(void 0===a)throw new Error(`No research tree for industry '${e.type}'`);if(!a.getAllNodes().includes(t))throw new Error(`No research named '${t}'`);const n=_ResearchMap__WEBPACK_IMPORTED_MODULE_9__.a[t];if(e.sciResearch.qty<n.cost)throw new Error("You do not have enough Scientific Research for "+n.name);e.sciResearch.qty-=n.cost,a.research(t),e.researched[t]=!0}function ExportMaterial(divisionName,cityName,material,amt){let sanitizedAmt=amt.replace(/\s+/g,"").toUpperCase();sanitizedAmt=sanitizedAmt.replace(/[^-()\d/*+.MAX]/g,"");let temp=sanitizedAmt.replace(/MAX/g,"1");try{temp=eval(temp)}catch(e){throw new Error("Invalid expression entered for export amount: "+e)}const n=parseFloat(temp);if(null==n||isNaN(n)||n<0)throw new Error("Invalid amount entered for export");const exportObj={ind:divisionName,city:cityName,amt:sanitizedAmt};material.exp.push(exportObj)}function CancelExportMaterial(e,t,a,n){for(let r=0;r<a.exp.length;++r)if(a.exp[r].ind===e&&a.exp[r].city===t&&a.exp[r].amt===n){a.exp.splice(r,1);break}}function LimitProductProduction(e,t,a){a<0||isNaN(a)?e.prdman[t][0]=!1:(e.prdman[t][0]=!0,e.prdman[t][1]=a)}function SetMaterialMarketTA1(e,t){e.marketTa1=t}function SetMaterialMarketTA2(e,t){e.marketTa2=t}function SetProductMarketTA1(e,t){e.marketTa1=t}function SetProductMarketTA2(e,t){e.marketTa2=t}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.Idle=0]="Idle",e[e.Company=1]="Company",e[e.Faction=2]="Faction",e[e.Crime=3]="Crime",e[e.Class=4]="Class",e[e.Gym=5]="Gym",e[e.Recovery=6]="Recovery",e[e.Synchro=7]="Synchro"}(n||(n={}))},,,,function(e,t,a){"use strict";function n(e){return e.startsWith("/")?e.slice(1):e}function r(e){return e.endsWith("/")?e.slice(0,-1):e}function i(e){return null!=e.match(/^[.a-zA-Z0-9_-]+[.][a-zA-Z0-9]+(?:-\d+(?:\.\d*)?%-INC)?$/)}function o(e){return null!=e.match(/^.?[a-zA-Z0-9_-]+$/)}function s(e){let t=e;if(0===t.length)return!1;if(1===t.length)return"/"===t;if(!t.startsWith("/"))return!1;t=t.slice(1),t=r(t);const a=t.split("/");for(const e of a)if("."!==e&&".."!==e&&!o(e))return!1;return!0}function l(e){if(null==e||"string"!=typeof e)return!1;const t=e;if(t.length<3)return!1;if(t.endsWith("/"))return!1;const a=t.lastIndexOf("/");if(-1===a)return i(t);const n=t.slice(a+1);return s(t.slice(0,a+1))&&i(n)}function c(e){let t=e;if(t=n(t),t=r(t),-1===t.lastIndexOf("/"))return"/";const a=t.split("/");return 0===a.length?"/":a[0]+"/"}function u(e){const t=e,a=t.lastIndexOf("/");return-1===a?"":t.slice(0,a+1)}function m(e,t,a){const n=d(e,a);if(null===n)return e;{const e=r(n),a=function(e){const t=e,a=t.lastIndexOf("/");if(-1===a)return t;return t.slice(a+1)}(t);return e+"/"+a}}function h(e){return!!l(e)&&(null!=e&&0!==e.length&&e.lastIndexOf("/")<=0)}function d(e,t){let a=e;if(a.startsWith("/")||null==t||(a=t+(t.endsWith("/")?"":"/")+a),!s(a))return null;a=n(a),a=r(a);const i=a.split("/"),o=[];for(const e of i)if("."!==e)if(".."===e){if(null==o.pop())return null}else o.push(e);return"/"+o.join("/")}function p(e,t){let a=e;if(a.startsWith("/")||null==t||(a=t+(t.endsWith("/")?"":"/")+a),!l(a))return null;a=n(a);const r=a.split("/"),i=[];for(const e of r)if("."!==e)if(".."===e){if(null==i.pop())return null}else i.push(e);return"/"+i.join("/")}function f(e,t){return e.startsWith("/")||(e="/"+e),t.startsWith("/")||(t="/"+t),e===t}function g(e,t){return e.endsWith(".ns")||e.endsWith(".js")||(e+=".js"),t.endsWith(".ns")||t.endsWith(".js")||(t+=".js"),f(e,t)}a.d(t,"k",(function(){return n})),a.d(t,"l",(function(){return r})),a.d(t,"i",(function(){return s})),a.d(t,"j",(function(){return l})),a.d(t,"g",(function(){return c})),a.d(t,"e",(function(){return u})),a.d(t,"f",(function(){return m})),a.d(t,"h",(function(){return h})),a.d(t,"c",(function(){return d})),a.d(t,"d",(function(){return p})),a.d(t,"a",(function(){return f})),a.d(t,"b",(function(){return g}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i}));var n=a(8);const r=Array(n.a.TotalNumBitNodes+1);function i(e){for(let e=0;e<r.length;++e)r[e]=0;for(let t=0;t<e.sourceFiles.length;++t){const a=e.sourceFiles[t];r[a.n]=a.lvl}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(260),r=a(8);const i={Shoplift:new n.a("Shoplift",r.a.CrimeShoplift,2e3,15e3,.05,.1,{dexterity_success_weight:1,agility_success_weight:1,dexterity_exp:2,agility_exp:2}),RobStore:new n.a("Rob Store",r.a.CrimeRobStore,6e4,4e5,.2,.5,{hacking_exp:30,dexterity_exp:45,agility_exp:45,hacking_success_weight:.5,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:7.5*r.a.IntelligenceCrimeBaseExpGain}),Mug:new n.a("Mug",r.a.CrimeMug,4e3,36e3,.2,.25,{strength_exp:3,defense_exp:3,dexterity_exp:3,agility_exp:3,strength_success_weight:1.5,defense_success_weight:.5,dexterity_success_weight:1.5,agility_success_weight:.5}),Larceny:new n.a("Larceny",r.a.CrimeLarceny,9e4,8e5,1/3,1.5,{hacking_exp:45,dexterity_exp:60,agility_exp:60,hacking_success_weight:.5,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:15*r.a.IntelligenceCrimeBaseExpGain}),DealDrugs:new n.a("Deal Drugs",r.a.CrimeDrugs,1e4,12e4,1,.5,{dexterity_exp:5,agility_exp:5,charisma_exp:10,charisma_success_weight:3,dexterity_success_weight:2,agility_success_weight:1}),BondForgery:new n.a("Bond Forgery",r.a.CrimeBondForgery,3e5,45e5,.5,.1,{hacking_exp:100,dexterity_exp:150,charisma_exp:15,hacking_success_weight:.05,dexterity_success_weight:1.25,intelligence_exp:60*r.a.IntelligenceCrimeBaseExpGain}),TraffickArms:new n.a("Traffick Arms",r.a.CrimeTraffickArms,4e4,6e5,2,1,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:20,charisma_exp:40,charisma_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1}),Homicide:new n.a("Homicide",r.a.CrimeHomicide,3e3,45e3,1,3,{strength_exp:2,defense_exp:2,dexterity_exp:2,agility_exp:2,strength_success_weight:2,defense_success_weight:2,dexterity_success_weight:.5,agility_success_weight:.5,kills:1}),GrandTheftAuto:new n.a("Grand Theft Auto",r.a.CrimeGrandTheftAuto,8e4,16e5,8,5,{strength_exp:20,defense_exp:20,dexterity_exp:20,agility_exp:80,charisma_exp:40,hacking_success_weight:1,strength_success_weight:1,dexterity_success_weight:4,agility_success_weight:2,charisma_success_weight:2,intelligence_exp:16*r.a.IntelligenceCrimeBaseExpGain}),Kidnap:new n.a("Kidnap",r.a.CrimeKidnap,12e4,36e5,5,6,{strength_exp:80,defense_exp:80,dexterity_exp:80,agility_exp:80,charisma_exp:80,charisma_success_weight:1,strength_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,intelligence_exp:26*r.a.IntelligenceCrimeBaseExpGain}),Assassination:new n.a("Assassination",r.a.CrimeAssassination,3e5,12e6,8,10,{strength_exp:300,defense_exp:300,dexterity_exp:300,agility_exp:300,strength_success_weight:1,dexterity_success_weight:2,agility_success_weight:1,intelligence_exp:65*r.a.IntelligenceCrimeBaseExpGain,kills:1}),Heist:new n.a("Heist",r.a.CrimeHeist,6e5,12e7,18,15,{hacking_exp:450,strength_exp:450,defense_exp:450,dexterity_exp:450,agility_exp:450,charisma_exp:450,hacking_success_weight:1,strength_success_weight:1,defense_success_weight:1,dexterity_success_weight:1,agility_success_weight:1,charisma_success_weight:1,intelligence_exp:130*r.a.IntelligenceCrimeBaseExpGain})}},function(e,t,a){"use strict";function n(e){return function(t){t.isTrusted&&e()}}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new(a(739).a)},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(8),r=a(512),i=a(34),o=a(170),s=a(296),l=a(21);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u extends r.a{constructor(e={hostname:"",ip:Object(s.a)()}){super(e),c(this,"cache",1),c(this,"cores",1),c(this,"hashCapacity",0),c(this,"hashRate",0),c(this,"level",1),c(this,"onlineTimeSeconds",0),c(this,"totalHashesGenerated",0),c(this,"purchasedByPlayer",!0),this.maxRam=1,this.updateHashCapacity()}calculateCacheUpgradeCost(e){return Object(o.a)(this.cache,e)}calculateCoreUpgradeCost(e,t){return Object(o.b)(this.cores,e,t)}calculateLevelUpgradeCost(e,t){return Object(o.d)(this.level,e,t)}calculateRamUpgradeCost(e,t){return Object(o.e)(this.maxRam,e,t)}process(e=1){const t=e*n.a.MilliPerCycle/1e3;this.onlineTimeSeconds+=t;const a=this.hashRate*t;return this.totalHashesGenerated+=a,a}upgradeCache(e){this.cache=Math.min(i.b.MaxCache,Math.round(this.cache+e)),this.updateHashCapacity()}upgradeCore(e,t){this.cores=Math.min(i.b.MaxCores,Math.round(this.cores+e)),this.updateHashRate(t),this.cpuCores=this.cores}upgradeLevel(e,t){this.level=Math.min(i.b.MaxLevel,Math.round(this.level+e)),this.updateHashRate(t)}upgradeRam(e,t){for(let t=0;t<e;++t)this.maxRam*=2;return this.maxRam=Math.min(i.b.MaxRam,Math.round(this.maxRam)),this.updateHashRate(t),!0}runScript(e,t){super.runScript(e),null!=t&&"number"==typeof t&&this.updateHashRate(t)}updateRamUsed(e,t){super.updateRamUsed(e,t),this.updateHashRate(t.hacknet_node_money_mult)}updateHashCapacity(){this.hashCapacity=32*Math.pow(2,this.cache)}updateHashRate(e){this.hashRate=Object(o.c)(this.level,this.ramUsed,this.maxRam,this.cores,e),isNaN(this.hashRate)&&(this.hashRate=0,console.error("Error calculating Hacknet Server hash production. This is a bug. Please report to game dev",!1))}toJSON(){return Object(l.b)("HacknetServer",this)}static fromJSON(e){return Object(l.a)(u,e.data)}}l.c.constructors.HacknetServer=u},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(848),r=a(334);const i={};n.a.forEach(e=>{var t;null!=i[(t=e).name]&&console.warn("Duplicate Company Position being defined: "+t.name),i[t.name]=new r.a(t)})},function(e,t,a){"use strict";a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r}));const n=[".js",".script",".ns"];function r(e){return n.some(t=>e.endsWith(t))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return fe})),a.d(t,"a",(function(){return ge}));var n=a(0),r=a.n(n),i=a(143),o=a(162),s=a(321),l=a(9),c=a(240),u=a(39),m=a(857),h=a(346),d=a(317),p=a(15),f=a(24),g=a(26),y=a(235),b=a(95),E=a(111),k=a(134),v=a(25),_=a(1),w=a(27),S=a(860),C=a(864),x=a(886),O=a(894),M=a(917),T=a(949),R=a(964),A=a(1e3),N=a(1014),P=a(1017),I=a(1018),F=a(1058),D=a(1067),j=a(1076),B=a(1099),G=a(373),L=a(568),W=a(1124),H=a(1125),U=a(1131),q=a(1132),K=a(374),z=a(1145),$=a(1155),V=a(567),Y=a(1157),J=a(1166),X=a(1169),Q=a(110),Z=a(578),ee=a(1176),te=a(168),ae=a(1177),ne=a(179),re=a(167),ie=a(369),oe=a(417),se=a(530),le=a(278),ce=a(29),ue=a(378),me=a(1178),he=a(1181);const de=location,pe=Object(E.a)(e=>Object(k.a)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:e.spacing(0),flexGrow:1,display:"block",padding:"8px",minHeight:"100vh",boxSizing:"border-box"}}));let fe={page:()=>{throw new Error("Router called before initialization")},toActiveScripts:()=>{throw new Error("Router called before initialization")},toAugmentations:()=>{throw new Error("Router called before initialization")},toBitVerse:()=>{throw new Error("Router called before initialization")},toBladeburner:()=>{throw new Error("Router called before initialization")},toStats:()=>{throw new Error("Router called before initialization")},toCity:()=>{throw new Error("Router called before initialization")},toCorporation:()=>{throw new Error("Router called before initialization")},toCreateProgram:()=>{throw new Error("Router called before initialization")},toDevMenu:()=>{throw new Error("Router called before initialization")},toFaction:()=>{throw new Error("Router called before initialization")},toFactions:()=>{throw new Error("Router called before initialization")},toGameOptions:()=>{throw new Error("Router called before initialization")},toGang:()=>{throw new Error("Router called before initialization")},toHacknetNodes:()=>{throw new Error("Router called before initialization")},toInfiltration:()=>{throw new Error("Router called before initialization")},toJob:()=>{throw new Error("Router called before initialization")},toMilestones:()=>{throw new Error("Router called before initialization")},toResleeves:()=>{throw new Error("Router called before initialization")},toScriptEditor:()=>{throw new Error("Router called before initialization")},toSleeves:()=>{throw new Error("Router called before initialization")},toStockMarket:()=>{throw new Error("Router called before initialization")},toTerminal:()=>{throw new Error("Router called before initialization")},toTravel:()=>{throw new Error("Router called before initialization")},toTutorial:()=>{throw new Error("Router called before initialization")},toWork:()=>{throw new Error("Router called before initialization")},toBladeburnerCinematic:()=>{throw new Error("Router called before initialization")},toLocation:()=>{throw new Error("Router called before initialization")},toStaneksGift:()=>{throw new Error("Router called before initialization")},toAchievements:()=>{throw new Error("Router called before initialization")}};function ge({player:e,engine:t,terminal:a}){const E=pe(),[{files:k,vim:ge},ye]=Object(n.useState)({files:{},vim:!1}),[be,Ee]=Object(n.useState)(function(e){return ue.b?w.a.Recovery:e.isWorking?w.a.Work:w.a.Terminal}(e)),ke=Object(n.useState)(0)[1],[ve,_e]=Object(n.useState)(e.currentWorkFactionName?g.a[e.currentWorkFactionName]:void 0);if(void 0===ve&&be===w.a.Faction)throw new Error("Trying to go to a page without the proper setup");const[we,Se]=Object(n.useState)(!1),[Ce,xe]=Object(n.useState)(!1),[Oe,Me]=Object(n.useState)(void 0);if(void 0===Oe&&(be===w.a.Infiltration||be===w.a.Location||be===w.a.Job))throw new Error("Trying to go to a page without the proper setup");const[Te,Re]=Object(n.useState)(""),[Ae,Ne]=Object(n.useState)(0);function Pe(){ke(e=>e+1)}function Ie(){for(const e of Object(f.c)())e.runningScripts=[];o.c.saveGame(),setTimeout(()=>de.reload(),2e3)}function Fe(){Object(p.a)("Soft Reset!"),Object(d.a)(),Ne(Ae+1),fe.toTerminal()}Object(n.useEffect)(()=>h.a.subscribe(Pe),[]),fe={page:()=>be,toActiveScripts:()=>Ee(w.a.ActiveScripts),toAugmentations:()=>Ee(w.a.Augmentations),toBladeburner:()=>Ee(w.a.Bladeburner),toStats:()=>Ee(w.a.Stats),toCorporation:()=>Ee(w.a.Corporation),toCreateProgram:()=>Ee(w.a.CreateProgram),toDevMenu:()=>Ee(w.a.DevMenu),toFaction:e=>{Ee(w.a.Faction),e&&_e(e)},toFactions:()=>Ee(w.a.Factions),toGameOptions:()=>Ee(w.a.Options),toGang:()=>Ee(w.a.Gang),toHacknetNodes:()=>Ee(w.a.Hacknet),toMilestones:()=>Ee(w.a.Milestones),toResleeves:()=>Ee(w.a.Resleeves),toScriptEditor:(e,t)=>{ye({files:e,vim:!(null==t||!t.vim)}),Ee(w.a.ScriptEditor)},toSleeves:()=>Ee(w.a.Sleeves),toStockMarket:()=>Ee(w.a.StockMarket),toTerminal:()=>Ee(w.a.Terminal),toTutorial:()=>Ee(w.a.Tutorial),toJob:()=>{Me(c.a[e.companyName]),Ee(w.a.Job)},toCity:()=>{Ee(w.a.City)},toTravel:()=>{e.gotoLocation(l.a.TravelAgency),Ee(w.a.Travel)},toBitVerse:(e,t)=>{Se(e),xe(t),Ee(w.a.BitVerse)},toInfiltration:e=>{Me(e),Ee(w.a.Infiltration)},toWork:()=>Ee(w.a.Work),toBladeburnerCinematic:()=>{Ee(w.a.BladeburnerCinematic),Re(Te)},toLocation:e=>{Me(e),Ee(w.a.Location)},toStaneksGift:()=>{Ee(w.a.StaneksGift)},toAchievements:()=>{Ee(w.a.Achievements)}},Object(n.useEffect)(()=>{be!==w.a.Terminal&&window.scrollTo(0,0)});let De=r.a.createElement(_.a,null,"Cannot load"),je=!0,Be=!0;switch(be){case w.a.Recovery:De=r.a.createElement(ue.c,{router:fe,softReset:Fe}),je=!1,Be=!1;break;case w.a.BitVerse:De=r.a.createElement(J.a,{flume:we,enter:le.a,quick:Ce}),je=!1,Be=!1;break;case w.a.Infiltration:De=r.a.createElement(A.a,{location:Oe}),je=!1,Be=!1;break;case w.a.BladeburnerCinematic:De=r.a.createElement(ee.a,null),je=!1,Be=!1;break;case w.a.Work:De=r.a.createElement(P.a,null),je=!1;break;case w.a.Terminal:De=r.a.createElement(H.a,{terminal:a,router:fe,player:e});break;case w.a.Sleeves:De=r.a.createElement(F.a,null);break;case w.a.StaneksGift:De=r.a.createElement(X.a,{staneksGift:Q.b});break;case w.a.Stats:De=r.a.createElement($.a,null);break;case w.a.ScriptEditor:De=r.a.createElement(L.a,{files:k,hostname:e.getCurrentServer().hostname,player:e,router:fe,vim:ge});break;case w.a.ActiveScripts:De=r.a.createElement(q.a,{workerScripts:te.a});break;case w.a.Hacknet:De=r.a.createElement(D.a,{player:e});break;case w.a.CreateProgram:De=r.a.createElement(G.a,null);break;case w.a.Factions:De=r.a.createElement(K.a,{player:e,router:fe});break;case w.a.Faction:De=r.a.createElement(z.a,{faction:ve});break;case w.a.Milestones:De=r.a.createElement(W.a,{player:e});break;case w.a.Tutorial:De=r.a.createElement(U.a,{reactivateTutorial:()=>{Object(d.a)(),fe.toTerminal(),Object(u.e)()}});break;case w.a.DevMenu:De=r.a.createElement(O.a,{player:e,engine:t,router:fe});break;case w.a.Gang:De=r.a.createElement(T.a,null);break;case w.a.Corporation:De=r.a.createElement(R.a,null);break;case w.a.Bladeburner:De=r.a.createElement(M.a,null);break;case w.a.Resleeves:De=r.a.createElement(N.a,null);break;case w.a.Travel:De=r.a.createElement(V.a,{p:e,router:fe});break;case w.a.StockMarket:De=r.a.createElement(Y.a,{buyStockLong:y.a,buyStockShort:y.d,cancelOrder:b.c,eventEmitterForReset:b.e,initStockMarket:b.g,p:e,placeOrder:b.j,sellStockLong:y.c,sellStockShort:y.b,stockMarket:b.a});break;case w.a.City:De=r.a.createElement(B.a,null);break;case w.a.Job:case w.a.Location:De=r.a.createElement(j.a,{loc:Oe});break;case w.a.Options:De=r.a.createElement(I.a,{player:e,save:()=>o.c.saveGame(),export:()=>{Object(s.c)(e),o.c.exportGame()},forceKill:Ie,softReset:Fe});break;case w.a.Augmentations:De=r.a.createElement(x.a,{exportGameFn:()=>{Object(s.c)(e),o.c.exportGame()},installAugmentationsFn:()=>{Object(i.d)(),fe.toTerminal()}});break;case w.a.Achievements:De=r.a.createElement(me.a,null)}return r.a.createElement(ce.a.Player.Provider,{value:e},r.a.createElement(ce.a.Router.Provider,{value:fe},r.a.createElement(he.a,{key:Ae,router:fe,softReset:Fe},r.a.createElement(ne.c,null,r.a.createElement(S.a,{mode:u.a.isRunning?"tutorial":"overview"},u.a.isRunning?r.a.createElement(m.a,null):r.a.createElement(Z.a,{save:()=>o.c.saveGame(),killScripts:Ie})),je?r.a.createElement(v.a,{display:"flex",flexDirection:"row",width:"100%"},r.a.createElement(C.a,{player:e,router:fe,page:be}),r.a.createElement(v.a,{className:E.root},De)):r.a.createElement(v.a,{className:E.root},De),r.a.createElement(ae.a,null),Be&&r.a.createElement(r.a.Fragment,null,r.a.createElement(re.c,null),r.a.createElement(ie.b,null),r.a.createElement(oe.b,null),r.a.createElement(se.b,null),r.a.createElement(ne.a,null))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(9);const r={};r[n.a.AevumECorp]="ECP",r[n.a.Sector12MegaCorp]="MGCP",r[n.a.Sector12BladeIndustries]="BLD",r[n.a.AevumClarkeIncorporated]="CLRK",r[n.a.VolhavenOmniTekIncorporated]="OMTK",r[n.a.Sector12FourSigma]="FSIG",r[n.a.ChongqingKuaiGongInternational]="KGI",r[n.a.AevumFulcrumTechnologies]="FLCM",r[n.a.IshimaStormTechnologies]="STM",r[n.a.NewTokyoDefComm]="DCOMM",r[n.a.VolhavenHeliosLabs]="HLS",r[n.a.NewTokyoVitaLife]="VITA",r[n.a.Sector12IcarusMicrosystems]="ICRS",r[n.a.Sector12UniversalEnergy]="UNV",r[n.a.AevumAeroCorp]="AERO",r[n.a.VolhavenOmniaCybersystems]="OMN",r[n.a.ChongqingSolarisSpaceSystems]="SLRS",r[n.a.NewTokyoGlobalPharmaceuticals]="GPH",r[n.a.IshimaNovaMedical]="NVMD",r[n.a.AevumWatchdogSecurity]="WDS",r[n.a.VolhavenLexoCorp]="LXO",r[n.a.AevumRhoConstruction]="RHOC",r[n.a.Sector12AlphaEnterprises]="APHE",r[n.a.VolhavenSysCoreSecurities]="SYSC",r[n.a.VolhavenCompuTek]="CTK",r[n.a.AevumNetLinkTechnologies]="NTLK",r[n.a.IshimaOmegaSoftware]="OMGA",r[n.a.Sector12FoodNStuff]="FNS",r[n.a.Sector12JoesGuns]="JGN",r["Sigma Cosmetics"]="SGC",r["Catalyst Ventures"]="CTYS",r["Microdyne Technologies"]="MDYN",r["Titan Laboratories"]="TITN"},function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o})),a.d(t,"e",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"f",(function(){return u}));var n=a(5),r=a(298);function i(e,t){const a=(100-e.hackDifficulty)/100,n=1.75*t.hacking,i=(n-e.requiredHackingSkill)/n*a*t.hacking_chance_mult*Object(r.a)(t.intelligence,1);return i>1?1:i<0?0:i}function o(e,t){null==e.baseDifficulty&&(e.baseDifficulty=e.hackDifficulty);let a=3;return a+=e.baseDifficulty*t.hacking_exp_mult*.3,a*n.a.HackExpGain}function s(e,t){const a=(100-e.hackDifficulty)/100*((t.hacking-(e.requiredHackingSkill-1))/t.hacking)*t.hacking_money_mult*n.a.ScriptHackMoney/240;return a<0?0:a>1?1:a}function l(e,t){let a=2.5*(e.requiredHackingSkill*e.hackDifficulty)+500;a/=t.hacking+50;return 5*a/(t.hacking_speed_mult*Object(r.a)(t.intelligence,1))}function c(e,t){return 3.2*l(e,t)}function u(e,t){return 4*l(e,t)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g})),a.d(t,"b",(function(){return y})),a.d(t,"j",(function(){return b})),a.d(t,"c",(function(){return E})),a.d(t,"i",(function(){return k})),a.d(t,"d",(function(){return v})),a.d(t,"f",(function(){return _})),a.d(t,"h",(function(){return w})),a.d(t,"k",(function(){return C})),a.d(t,"g",(function(){return x})),a.d(t,"e",(function(){return O}));var n=a(656),r=a(308),i=a(139),o=a(591),s=a(827),l=a(105),c=a(69),u=a(93),m=a(8),h=a(122),d=a(4),p=a(15),f=a(21);let g={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0};const y={};function b(e,t,a,o,s,l=null){if(!(e instanceof i.a))return l?l.log("stock.placeOrder",()=>`Invalid stock: '${e}'`):Object(p.a)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof t||"number"!=typeof a)return l?l.log("stock.placeOrder",()=>`Invalid arguments: shares='${t}' price='${a}'`):Object(p.a)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new n.a(e.symbol,t,a,o,s);if(null==g.Orders){const e={};for(const t in g){const a=g[t];a instanceof i.a&&(e[a.symbol]=[])}g.Orders=e}g.Orders[e.symbol].push(c);const u={stockMarket:g,symbolToStockMap:y};return Object(r.a)(e,c.type,c.pos,u),!0}function E(e,t=null){if(null==g.Orders)return!1;if(e.order&&e.order instanceof n.a){const t=e.order,a=g.Orders[t.stockSymbol];for(let e=0;e<a.length;++e)if(t==a[e])return a.splice(e,1),!0;return!1}if(e.stock&&e.shares&&e.price&&e.type&&e.pos&&e.stock instanceof i.a){const a=g.Orders[e.stock.symbol],n=e.stock.symbol+" - "+e.shares+" @ "+d.a.formatMoney(e.price);for(let r=0;r<a.length;++r){const i=a[r];if(e.shares===i.shares&&e.price===i.price&&e.type===i.type&&e.pos===i.pos)return a.splice(r,1),t&&t.scriptRef.log("Successfully cancelled order: "+n),!0}return t&&t.scriptRef.log("Failed to cancel order: "+n),!1}return!1}function k(e){g=""===e?{lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}:JSON.parse(e,f.c)}function v(){g={lastUpdate:0,Orders:{},storedCycles:0,ticksUntilCycle:0}}function _(){for(const e in g)g.hasOwnProperty(e)&&delete g[e];for(const e of s.a){const t=e.name;g[t]=new i.a(e)}const e={};for(const t in g){const a=g[t];a instanceof i.a&&(e[a.symbol]=[])}g.Orders=e,g.storedCycles=0,g.lastUpdate=0,g.ticksUntilCycle=o.a}function w(){for(const e in u.a)if(u.a.hasOwnProperty(e)){const t=g[e];if(null==t){console.error("Could not find Stock for "+e);continue}const a=u.a[e];y[a]=t}}const S=6e3/m.a.MilliPerCycle;function C(e=1){if((null==g.storedCycles||isNaN(g.storedCycles))&&(g.storedCycles=0),g.storedCycles+=e,g.storedCycles<S)return;const t=(new Date).getTime();if(t-g.lastUpdate<4e3)return;g.lastUpdate=t,g.storedCycles-=S,null!=g.ticksUntilCycle&&"number"==typeof g.ticksUntilCycle||(g.ticksUntilCycle=o.a),--g.ticksUntilCycle,g.ticksUntilCycle<=0&&function(){for(const e in g){const t=g[e];if(!(t instanceof i.a))continue;Math.random()<.45&&(t.b=!t.b,t.flipForecastForecast()),g.ticksUntilCycle=o.a}}();const a=Math.random();for(const e in g){const t=g[e];if(!(t instanceof i.a))continue;let n=a*t.mv/100;isNaN(n)&&(n=.02);let o=50;o=t.b?(o+t.otlkMag)/100:(o-t.otlkMag)/100,t.price>=t.cap&&(o=.1,t.b=!1),isNaN(o)&&(o=.5);const s=Math.random(),u={stockMarket:g,symbolToStockMap:y};s<o?(t.changePrice(t.price*(1+n)),Object(r.a)(t,l.a.LimitBuy,c.a.Short,u),Object(r.a)(t,l.a.LimitSell,c.a.Long,u),Object(r.a)(t,l.a.StopBuy,c.a.Long,u),Object(r.a)(t,l.a.StopSell,c.a.Short,u)):(t.changePrice(t.price/(1+n)),Object(r.a)(t,l.a.LimitBuy,c.a.Long,u),Object(r.a)(t,l.a.LimitSell,c.a.Short,u),Object(r.a)(t,l.a.StopBuy,c.a.Short,u),Object(r.a)(t,l.a.StopSell,c.a.Long,u));let m=t.otlkMag*n;t.otlkMag<5&&(t.otlkMag<=1?m=1:m*=10),t.cycleForecast(m),t.cycleForecastForecast(m/2),t.shareTxUntilMovement=Math.min(t.shareTxUntilMovement+10,t.shareTxForMovement)}}function x(){_(),w()}const O=new h.a},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={CTRL:17,DOWNARROW:40,ENTER:13,ESC:27,TAB:9,UPARROW:38,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Home:"home",FulcrumSecretTechnologies:"fulcrumassets",CyberSecServer:"CSEC",NiteSecServer:"avmnite-02h",TheBlackHandServer:"I.I.I.I",BitRunnersServer:"run4theh111z",TheDarkArmyServer:".",DaedalusServer:"The-Cave",WorldDaemon:"w0r1d_d43m0n",DarkWeb:"darkweb"}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(4),o=a(16);function s({money:e}){return r.a.createElement(o.a,{money:i.a.formatMoney(e)+" / sec"})}},function(e,t,a){"use strict";a.d(t,"c",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(126),r=a(24),i=a(232);function o(e,t){return new Promise((function(a,n){t.delay=window.setTimeout(()=>{t.delay=null,t.delayReject=void 0,t.env.stopFlag?n(t):a()},e),t.delayReject=n}))}function s(e,t){t instanceof i.a&&console.error("HERE");const a=Object(r.d)(e.hostname);if(null==a)throw new Error("WorkerScript constructed with invalid server ip: "+e.hostname);for(const a of e.scriptRef.dependencies){var n,o;t=null!==(n=null===(o=t)||void 0===o?void 0:o.replace(new RegExp(a.url,"g"),a.filename))&&void 0!==n?n:t}return"|DELIMITER|"+a.hostname+"|DELIMITER|"+e.name+"|DELIMITER|"+t}function l(e,t,a){const n=e.scriptRef.threads;if(!a)return isNaN(n)||n<1?1:n;const r=0|a;if(isNaN(a)||r<1)throw s(e,`Invalid thread count passed to ${t}: ${a}. Threads must be a positive number.`);if(r>n)throw s(e,`Too many threads requested by ${t}. Requested: ${a}. Has: ${n}.`);return r}function c(e){if(!Object(n.a)(e))return!1;return 4==e.split("|DELIMITER|").length}},function(e,t,a){"use strict";a.d(t,"d",(function(){return s})),a.d(t,"c",(function(){return l})),a.d(t,"b",(function(){return c})),a.d(t,"a",(function(){return u}));var n=a(759),r=a(21),i=a(513);class o{constructor(e,t,a,n,r,i){this.name=e,this.desc=t,this.generate=a,this.solver=n,this.difficulty=r,this.numTries=i}}const s={};for(const e of n.a)s[e.name]=new o(e.name,e.desc,e.gen,e.solver,e.difficulty,e.numTries);let l,c;!function(e){e[e.FactionReputation=0]="FactionReputation",e[e.FactionReputationAll=1]="FactionReputationAll",e[e.CompanyReputation=2]="CompanyReputation",e[e.Money=3]="Money"}(l||(l={})),function(e){e[e.Success=0]="Success",e[e.Failure=1]="Failure",e[e.Cancelled=2]="Cancelled"}(c||(c={}));class u{constructor(e="",t="Find Largest Prime Factor",a=null){var n,r,i;if(i=0,(r="tries")in(n=this)?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,this.fn=e,this.fn.endsWith(".cct")||(this.fn+=".cct"),null==s[t])throw new Error(`Error: invalid contract type: ${t} please contact developer`);this.type=t,this.data=s[t].generate(),this.reward=a}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(e){return s[this.type].solver(this.data,e)}async prompt(){return new Promise(e=>{const t={c:this,onClose:()=>{e(c.Cancelled)},onAttempt:t=>{this.isSolution(t)?e(c.Success):e(c.Failure)}};i.a.emit(t)})}toJSON(){return Object(r.b)("CodingContract",this)}static fromJSON(e){return Object(r.a)(u,e.data)}}r.c.constructors.CodingContract=u},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.LimitBuy="Limit Buy Order",e.LimitSell="Limit Sell Order",e.StopBuy="Stop Buy Order",e.StopSell="Stop Sell Order"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(4),i=a(111),o=a(134);const s=Object(i.a)(e=>Object(o.a)({reputation:{color:e.colors.rep}}));function l({reputation:e}){const t=s();return n.createElement("span",{className:t.reputation},"number"==typeof e?r.a.formatReputation(e):e)}},,,function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o})),function(e){e.Bypass="Bypass",e.PrototypeTampering="PrototypeTampering",e.Unclickable="Unclickable",e.UndocumentedFunctionCall="UndocumentedFunctionCall",e.TimeCompression="TimeCompression",e.RealityAlteration="RealityAlteration",e.N00dles="N00dles",e.YoureNotMeantToAccessThis="YoureNotMeantToAccessThis",e.EditSaveFile="EditSaveFile"}(n||(n={}));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."};function i(e){return r[e]}function o(e){return e=e.filter(e=>Object.keys(n).includes(e)),[...new Set(e)]}},function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"a",(function(){return o}));var n=a(21),r=a(657);let i=new r.a;function o(e){i=e?JSON.parse(e,n.c):new r.a}},,,,,,,,,,function(e,t,a){"use strict";a.d(t,"c",(function(){return g})),a.d(t,"d",(function(){return y})),a.d(t,"b",(function(){return b})),a.d(t,"f",(function(){return E})),a.d(t,"a",(function(){return k})),a.d(t,"e",(function(){return v}));var n=a(20),r=a(290),i=a(6),o=a(5),s=a(8),l=a(193),c=a(26),u=a(2),m=a(11),h=a(234),d=a(80),p=a(15),f=a(530);function g(e){u.a.receiveInvite(e.name),e.alreadyInvited=!0,m.a.SuppressFactionInvites||f.a.emit(e)}function y(e){if(e.isMember)return;e.isMember=!0,u.a.factions.push(e.name);const t=e.getInfo();for(const e in t.enemies){const a=t.enemies[e];c.a[a]instanceof l.a&&(c.a[a].isBanned=!0)}for(let t=0;t<u.a.factionInvitations.length;++t)(u.a.factionInvitations[t]==e.name||c.a[u.a.factionInvitations[t]].isBanned)&&(u.a.factionInvitations.splice(t,1),t--)}function b(e){let t=!0;if(e.prereqs&&e.prereqs.length>0)for(let a=0;a<e.prereqs.length;++a){const r=n.a[e.prereqs[a]];if(null!=r){if(!1===r.owned){t=!1;for(let e=0;e<u.a.queuedAugmentations.length;++e)if(u.a.queuedAugmentations[e].name===r.name){t=!0;break}}}else console.error("Invalid prereq Augmentation "+e.prereqs[a])}return t}function E(e,t,a=!1){const l=t.getInfo();if(b(e))if(0!==e.baseCost&&u.a.money<e.baseCost*l.augmentationPriceMult){const t="You don't have enough money to purchase "+e.name;if(a)return t;Object(p.a)(t)}else if(t.playerReputation<e.baseRepRequirement){const t="You don't have enough faction reputation to purchase "+e.name;if(a)return t;Object(p.a)(t)}else if(0===e.baseCost||u.a.money>=e.baseCost*l.augmentationPriceMult){const t=new r.a(e.name);if(e.name==i.a.NeuroFluxGovernor&&(t.level=k()),u.a.queuedAugmentations.push(t),u.a.loseMoney(e.baseCost*l.augmentationPriceMult,"augmentations"),e.name==i.a.NeuroFluxGovernor){let t=k();--t;const a=Math.pow(s.a.NeuroFluxGovernorLevelMult,t);e.baseRepRequirement=500*a*o.a.AugmentationRepCost,e.baseCost=75e4*a*o.a.AugmentationMoneyCost;for(let t=0;t<u.a.queuedAugmentations.length-1;++t)e.baseCost*=s.a.MultipleAugMultiplier*[1,.96,.94,.93][d.a[11]]}for(const e in n.a)n.a.hasOwnProperty(e)&&(n.a[e].baseCost*=s.a.MultipleAugMultiplier*[1,.96,.94,.93][d.a[11]]);if(a)return"You purchased "+e.name;m.a.SuppressBuyAugmentationConfirmation||Object(p.a)("You purchased "+e.name+". Its enhancements will not take effect until they are installed. To install your augmentations, go to the 'Augmentations' tab on the left-hand navigation menu. Purchasing additional augmentations will now be more expensive.")}else Object(p.a)("Hmm, something went wrong when trying to purchase an Augmentation. Please report this to the game developer with an explanation of how to reproduce this.");else{const t="You must first purchase or install "+e.prereqs.join(",")+" before you can purchase this one.";if(a)return t;Object(p.a)(t)}return""}function k(){let e=0;for(let t=0;t<u.a.augmentations.length;++t)u.a.augmentations[t].name===i.a.NeuroFluxGovernor&&(e=u.a.augmentations[t].level);for(let t=0;t<u.a.queuedAugmentations.length;++t)u.a.queuedAugmentations[t].name==i.a.NeuroFluxGovernor&&++e;return e+1}function v(e){for(const t in c.a){if(t===u.a.currentWorkFactionName)continue;if(!c.a.hasOwnProperty(t))continue;const a=c.a[t];if(!a.isMember)continue;if(!a.getInfo().offersWork())continue;if(u.a.getGangName()===t)continue;const n=Math.min(.1,a.favor/1e3+.01),r=Object(h.c)(u.a,a),i=Object(h.b)(u.a,a),s=Object(h.a)(u.a,a),l=Math.max(r*n,i*n,s*n,1/120);a.playerReputation+=l*e*u.a.faction_rep_mult*o.a.FactionPassiveRepGain}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return l}));var n=a(299),r=a(590);function i(e){const t=n.a[e];if(null==t)throw new Error("Invalid research name: "+e);return new r.a({text:t.name,cost:t.cost})}function o(){const e=i("Hi-Tech R&D Laboratory"),t=i("AutoBrew"),a=i("AutoPartyManager"),n=i("Automatic Drug Administration"),r=i("Bulk Purchasing"),o=i("CPH4 Injections"),s=i("Drones"),l=i("Drones - Assembly"),c=i("Drones - Transport"),u=i("Go-Juice"),m=i("HRBuddy-Recruitment"),h=i("HRBuddy-Training"),d=i("JoyWire"),p=i("Market-TA.I"),f=i("Market-TA.II"),g=i("Overclock"),y=i("Self-Correcting Assemblers"),b=i("Sti.mu");return n.addChild(u),n.addChild(o),s.addChild(l),s.addChild(c),m.addChild(h),p.addChild(f),g.addChild(b),e.addChild(t),e.addChild(a),e.addChild(n),e.addChild(r),e.addChild(s),e.addChild(m),e.addChild(d),e.addChild(p),e.addChild(g),e.addChild(y),e}function s(){const e=new r.b;return e.setRoot(o()),e}function l(){const e=new r.b,t=o(),a=i("uPgrade: Fulcrum"),n=i("uPgrade: Capacity.I"),s=i("uPgrade: Capacity.II"),l=i("uPgrade: Dashboard");return n.addChild(s),a.addChild(n),a.addChild(l),t.addChild(a),e.setRoot(t),e}},function(e,t,a){"use strict";function n(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}a.d(t,"a",(function(){return r}));class r{constructor(){var e,t,a;a={},(t="subscribers")in(e=this)?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}subscribe(e){let t=n();for(;void 0!==this.subscribers[t];)t=n();return this.subscribers[t]=e,()=>{delete this.subscribers[t]}}emit(...e){for(const t in this.subscribers){const a=this.subscribers[t];void 0!==a&&a(...e)}}}},function(e,t,a){"use strict";a.d(t,"f",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"e",(function(){return d})),a.d(t,"d",(function(){return p})),a.d(t,"a",(function(){return f})),a.d(t,"b",(function(){return g}));var n=a(24),r=a(44),i=a(536),o=a(5),s=a(8),l=a(61),c=a(60),u=a(655);function m(e){let t=e.hostname.replace(/ /g,"-");if(null!=e.ip&&Object(n.g)(e.ip)&&(e.ip=Object(n.e)()),null!=Object(n.d)(t)){t+="-0";for(let e=0;e<200&&(t=t.replace(/-[0-9]+$/,"-"+e),null!=Object(n.d)(t));++e);}return e.hostname=t,new r.a(e)}function h(e,t,a,n=1){let r=1+(s.a.ServerBaseGrowthRate-1)/e.hackDifficulty;r>s.a.ServerMaxGrowthRate&&(r=s.a.ServerMaxGrowthRate);const i=e.serverGrowth/100,l=1+(n-1)/16;return Math.log(t)/(Math.log(r)*a.hacking_grow_mult*i*o.a.ServerGrowthRate*l)}function d(e,t,a,n=1){let r=Object(i.a)(e,t,a,n);r<1&&(console.warn("serverGrowth calculated to be less than 1"),r=1);const o=e.moneyAvailable;if(e.moneyAvailable+=1*t,e.moneyAvailable*=r,Object(u.a)(e.moneyMax)&&isNaN(e.moneyAvailable)&&(e.moneyAvailable=e.moneyMax),Object(u.a)(e.moneyMax)&&e.moneyAvailable>e.moneyMax&&(e.moneyAvailable=e.moneyMax),o!==e.moneyAvailable){let r=h(e,e.moneyAvailable/o,a,n);r=Math.min(Math.max(0,Math.ceil(r)),t),e.fortify(2*s.a.ServerFortifyAmount*r)}return e.moneyAvailable/o}function p(e,t){const a=t.programs.includes(l.a.BitFlume.name);t.programs.length=0,t.runningScripts=[],t.serversOnNetwork=[],t.isConnectedTo=!0,t.ramUsed=0,t.programs.push(l.a.NukeProgram.name),a&&t.programs.push(l.a.BitFlume.name),t.scripts.forEach((function(a){a.updateRamUsage(e,t.scripts)})),t.messages.length=0,t.messages.push(c.a.HackersStartingHandbook)}function f(e,t){return t>e.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):Object(n.d)(e.serversOnNetwork[t])}function g(e){return e instanceof r.a&&e.backdoorInstalled}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";function n(e){return"string"==typeof e||e instanceof String}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(323),r=a(21);class i extends n.a{constructor(e=null){super(e),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return Object(r.b)("BlackOperation",this)}static fromJSON(e){return Object(r.a)(i,e.data)}}r.c.constructors.BlackOperation=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(4),i=a(111),o=a(134);const s=Object(i.a)(e=>Object(o.a)({unbuyable:{color:e.palette.action.disabled},money:{color:e.colors.money}}));function l(e){const t=s();return e.corp.funds>e.money?n.createElement("span",{className:t.money},r.a.formatMoney(e.money)):n.createElement("span",{className:t.unbuyable},r.a.formatMoney(e.money))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(41),o=a(174),s=a(249),l=a(54),c=a(1);function u({rows:e,title:t,wide:a}){const n=a?s.a:i.a;return r.a.createElement(r.a.Fragment,null,t&&r.a.createElement(c.a,null,t),r.a.createElement(n,{size:"small",padding:"none"},r.a.createElement(o.a,null,e.map((e,t)=>r.a.createElement(l.a,{key:t},e.map((e,t)=>r.a.createElement(i.b,{key:t,align:0!==t?"right":"left"},r.a.createElement(c.a,{noWrap:!0},e))))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(232),r=a(168),i=a(275),o=a(336),s=a(24),l=a(297),c=a(15),u=a(534),m=a(2);function h(e,t,a){if(null!=a&&"boolean"==typeof a||(a=!0),e instanceof n.a)return p(e),!0;if(e instanceof o.a&&"string"==typeof t){const n=d(e.pid,a);if(n)return n;for(const n of r.a.values())if(n.name==e.filename&&n.hostname==t&&Object(l.a)(n.args,e.args))return p(n,a),!0;return!1}return"number"==typeof e?d(e,a):(console.error("killWorkerScript() called with invalid argument:"),console.error(e),!1)}function d(e,t=!0){const a=r.a.get(e);return a instanceof n.a&&(p(a,t),!0)}function p(e,t=!0){if("function"==typeof e.atExit){try{e.atExit()}catch(t){Object(c.a)(`Error trying to call atExit for script ${e.name} on ${e.hostname} ${e.scriptRef.args} ${t}`)}e.atExit=void 0}e.env.stopFlag=!0,function(e){e instanceof n.a&&e.delay&&(clearTimeout(e.delay),e.delayReject&&e.delayReject(e))}(e),function(e,t=!0){const a=e.hostname,n=e.name,o=Object(s.d)(a);if(null==o)return void console.error("Could not find server on which this script is running: "+a);for(let t=0;t<o.runningScripts.length;++t){const a=o.runningScripts[t];if(a.filename===n&&Object(l.a)(a.args,e.args)){o.runningScripts.splice(t,1);break}}o.updateRamUsed(0,m.a);for(const e of o.runningScripts)o.updateRamUsed(o.ramUsed+e.ramUsage*e.threads,m.a);r.a.delete(e.pid),Object(u.a)(e),t&&i.a.emit()}(e,t)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(548),o=a.n(i),s=a(898),l=a.n(s),c=a(101),u=a(549),m=a.n(u),h=a(544),d=a.n(h),p=a(85),f=a(28);function g(e){const[t,a]=Object(n.useState)("");const{label:i,placeholder:s,add:u,subtract:h,reset:g,tons:y}=e;return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{label:i,value:t,onChange:function(e){""===e.target.value?a(""):a(parseFloat(e.target.value))},placeholder:s,type:"number",InputProps:{startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{title:"Add a lot"},r.a.createElement(c.a,{onClick:y,size:"large"},r.a.createElement(d.a,{style:{transform:"rotate(-90deg)"}}))),r.a.createElement(f.a,{title:"Add"},r.a.createElement(c.a,{onClick:()=>u("string"!=typeof t?t:0),size:"large"},r.a.createElement(o.a,null)))),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{title:"Remove"},r.a.createElement(c.a,{onClick:()=>h("string"!=typeof t?t:0),size:"large"},r.a.createElement(l.a,null))),r.a.createElement(f.a,{title:"Reset"},r.a.createElement(c.a,{onClick:g,size:"large"},r.a.createElement(m.a,null))))}}))}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i}));var n=a(0);const r={Gang:a.n(n).a.createContext({})},i=()=>Object(n.useContext)(r.Gang)},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(21),r=a(32);const i={b:!0,initPrice:1e4,marketCap:1e12,mv:1,name:"",otlkMag:0,spreadPerc:0,shareTxForMovement:1e6,symbol:""};function o(e){let t;switch(typeof e){case"number":return e;case"object":{const a=e;t=Object(r.a)(a.min,a.max);break}default:throw Error(`Do not know how to convert the type '${typeof e}' to a number`)}return"object"==typeof e&&"number"==typeof e.divisor?t/e.divisor:t}class s{constructor(e=i){this.name=e.name,this.symbol=e.symbol,this.price=o(e.initPrice),this.lastPrice=this.price,this.playerShares=0,this.playerAvgPx=0,this.playerShortShares=0,this.playerAvgShortPx=0,this.mv=o(e.mv),this.b=e.b,this.otlkMag=e.otlkMag,this.otlkMagForecast=this.getAbsoluteForecast(),this.cap=Object(r.a)(1e3*this.price,25e3*this.price),this.spreadPerc=o(e.spreadPerc),this.shareTxForMovement=o(e.shareTxForMovement),this.shareTxUntilMovement=this.shareTxForMovement;const t=e.marketCap/this.price;this.totalShares=1e5*Math.round(t/1e5);this.maxShares=1e5*Math.round(.2*this.totalShares/1e5)}changeForecastForecast(e){this.otlkMagForecast=e,this.otlkMagForecast>100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(e){this.lastPrice=this.price,this.price=e}cycleForecast(e=.1){const t=this.getForecastIncreaseChance();Math.random()<t?this.b?this.otlkMag+=e:this.otlkMag-=e:this.b?this.otlkMag-=e:this.otlkMag+=e,this.otlkMag=Math.min(this.otlkMag,50),this.otlkMag<0&&(this.otlkMag*=-1,this.b=!this.b)}cycleForecastForecast(e=.1){Math.random()<.5?this.changeForecastForecast(this.otlkMagForecast+e):this.changeForecastForecast(this.otlkMagForecast-e)}flipForecastForecast(){const e=this.otlkMagForecast-50;this.otlkMagForecast=50+-1*e}getAbsoluteForecast(){return this.b?50+this.otlkMag:50-this.otlkMag}getAskPrice(){return this.price*(1+this.spreadPerc/100)}getBidPrice(){return this.price*(1-this.spreadPerc/100)}getForecastIncreaseChance(){const e=this.otlkMagForecast-this.getAbsoluteForecast();return(50+Math.min(Math.max(e,-45),45))/100}influenceForecast(e){this.otlkMag>5&&(this.otlkMag=Math.max(5,this.otlkMag-e))}influenceForecastForecast(e){this.otlkMagForecast>50?(this.otlkMagForecast-=e,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=e,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return Object(n.b)("Stock",this)}static fromJSON(e){return Object(n.a)(s,e.data)}}n.c.constructors.Stock=s},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={}},,,function(e,t,a){"use strict";a.d(t,"e",(function(){return C})),a.d(t,"d",(function(){return w})),a.d(t,"c",(function(){return k})),a.d(t,"a",(function(){return _})),a.d(t,"b",(function(){return S}));var n=a(35),r=a(20),i=a(290),o=a(6),s=a(5),l=a(8),c=a(26),u=a(2),m=a(317),h=a(61),d=a(80),p=a(15),f=a(1183),g=a(341),y=a(0),b=a.n(y);function E(e){const t=e.name;r.a[t]=e}function k(){for(const e in c.a)c.a.hasOwnProperty(e)&&(c.a[e].augmentations=[]);Object(f.a)(r.a);const e=function(){const e=[{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%.<br>Increases the player's hacking speed by 10%.<br>Increases the amount of money the player's gains from hacking by 25%.<br>Improves grow() by 10%."},{bonuses:{hacking_mult:1.15,hacking_exp_mult:2},description:"Increases the player's hacking skill by 15%.<br>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%.<br>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%.<br>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%.<br>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%.<br>Increases the amount of reputation the player gains when working for a company by 25%.<br>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%.<br>Increases the amount of money the player gains from crimes by 100%."}],t=new g.b(Math.floor(u.a.lastUpdate/36e5));for(let e=0;e<5;e++)t.step();return e[Math.floor(e.length*t.random())]}(),t={name:o.a.UnstableCircadianModulator,moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm."};Object.keys(e.bonuses).forEach(a=>t[a]=e.bonuses[a]);const a=new n.a(t);a.addToFactions(["Speakers for the Dead"]),S(o.a.UnstableCircadianModulator)&&delete r.a[o.a.UnstableCircadianModulator],E(a);const i=new n.a({name:o.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});i.addToFactions(["Tetrads","The Dark Army","The Syndicate"]),S(o.a.HemoRecirculator)&&delete r.a[o.a.HemoRecirculator],E(i);const m=new n.a({name:o.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});m.addToFactions(["Slum Snakes","The Dark Army","The Syndicate","Sector-12","Ishima","OmniTek Incorporated","KuaiGong International","Blade Industries"]),S(o.a.Targeting1)&&delete r.a[o.a.Targeting1],E(m);const p=new n.a({name:o.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:[o.a.Targeting1],dexterity_mult:1.2});p.addToFactions(["The Dark Army","The Syndicate","Sector-12","OmniTek Incorporated","KuaiGong International","Blade Industries"]),S(o.a.Targeting2)&&delete r.a[o.a.Targeting2],E(p);const y=new n.a({name:o.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:[o.a.Targeting2],dexterity_mult:1.3});y.addToFactions(["The Dark Army","The Syndicate","OmniTek Incorporated","KuaiGong International","Blade Industries","The Covenant"]),S(o.a.Targeting3)&&delete r.a[o.a.Targeting3],E(y);const k=new n.a({name:o.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});k.addToFactions(["KuaiGong International","Fulcrum Secret Technologies","Speakers for the Dead","NWO","The Covenant","Daedalus","Illuminati"]),S(o.a.SyntheticHeart)&&delete r.a[o.a.SyntheticHeart],E(k);const _=new n.a({name:o.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});_.addToFactions(["KuaiGong International","Fulcrum Secret Technologies","Speakers for the Dead","NWO","The Covenant","Daedalus","Illuminati","Blade Industries"]),S(o.a.SynfibrilMuscle)&&delete r.a[o.a.SynfibrilMuscle],E(_);const w=new n.a({name:o.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});w.addToFactions(["Slum Snakes","The Dark Army","The Syndicate","Volhaven","Ishima","OmniTek Incorporated","KuaiGong International","Blade Industries"]),S(o.a.CombatRib1)&&delete r.a[o.a.CombatRib1],E(w);const C=new n.a({name:o.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:[o.a.CombatRib1],strength_mult:1.14,defense_mult:1.14});C.addToFactions(["The Dark Army","The Syndicate","Volhaven","OmniTek Incorporated","KuaiGong International","Blade Industries"]),S(o.a.CombatRib2)&&delete r.a[o.a.CombatRib2],E(C);const x=new n.a({name:o.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:[o.a.CombatRib2],strength_mult:1.18,defense_mult:1.18});x.addToFactions(["The Dark Army","The Syndicate","OmniTek Incorporated","KuaiGong International","Blade Industries","The Covenant"]),S(o.a.CombatRib3)&&delete r.a[o.a.CombatRib3],E(x);const O=new n.a({name:o.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});O.addToFactions(["Tian Di Hui","The Syndicate","The Dark Army","Speakers for the Dead","Blade Industries","Fulcrum Secret Technologies","OmniTek Incorporated"]),S(o.a.NanofiberWeave)&&delete r.a[o.a.NanofiberWeave],E(O);const M=new n.a({name:o.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});M.addToFactions(["The Syndicate","Fulcrum Secret Technologies","Illuminati","Daedalus","The Covenant"]),S(o.a.SubdermalArmor)&&delete r.a[o.a.SubdermalArmor],E(M);const T=new n.a({name:o.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});T.addToFactions(["Tian Di Hui","Slum Snakes","Sector-12","Volhaven","Aevum","Ishima","The Syndicate","The Dark Army","Speakers for the Dead"]),S(o.a.WiredReflexes)&&delete r.a[o.a.WiredReflexes],E(T);const R=new n.a({name:o.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});R.addToFactions(["Fulcrum Secret Technologies","The Covenant"]),S(o.a.GrapheneBoneLacings)&&delete r.a[o.a.GrapheneBoneLacings],E(R);const A=new n.a({name:o.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});A.addToFactions(["Speakers for the Dead","The Syndicate","KuaiGong International","OmniTek Incorporated","Blade Industries"]),S(o.a.BionicSpine)&&delete r.a[o.a.BionicSpine],E(A);const N=new n.a({name:o.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:[o.a.BionicSpine],strength_mult:1.6,defense_mult:1.6,agility_mult:1.6,dexterity_mult:1.6});N.addToFactions(["Fulcrum Secret Technologies","ECorp"]),S(o.a.GrapheneBionicSpine)&&delete r.a[o.a.GrapheneBionicSpine],E(N);const P=new n.a({name:o.a.BionicLegs,repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility_mult:1.6});P.addToFactions(["Speakers for the Dead","The Syndicate","KuaiGong International","OmniTek Incorporated","Blade Industries"]),S(o.a.BionicLegs)&&delete r.a[o.a.BionicLegs],E(P);const I=new n.a({name:o.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:[o.a.BionicLegs],agility_mult:2.5});I.addToFactions(["MegaCorp","ECorp","Fulcrum Secret Technologies"]),S(o.a.GrapheneBionicLegs)&&delete r.a[o.a.GrapheneBionicLegs],E(I);const F=new n.a({name:o.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});F.addToFactions(["Tian Di Hui","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Silhouette"]),S(o.a.SpeechProcessor)&&delete r.a[o.a.SpeechProcessor],E(F);const D=new n.a({name:o.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});D.addToFactions(["Silhouette"]),S(o.a.TITN41Injection)&&delete r.a[o.a.TITN41Injection],E(D);const j=new n.a({name:o.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});j.addToFactions(["Bachman & Associates","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma"]),S(o.a.EnhancedSocialInteractionImplant)&&delete r.a[o.a.EnhancedSocialInteractionImplant],E(j);const B=new n.a({name:o.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});B.addToFactions(["CyberSec","NiteSec"]),S(o.a.BitWire)&&delete r.a[o.a.BitWire],E(B);const G=new n.a({name:o.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});G.addToFactions(["BitRunners","Fulcrum Secret Technologies"]),S(o.a.ArtificialBioNeuralNetwork)&&delete r.a[o.a.ArtificialBioNeuralNetwork],E(G);const L=new n.a({name:o.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});L.addToFactions(["The Black Hand","NiteSec"]),S(o.a.ArtificialSynapticPotentiation)&&delete r.a[o.a.ArtificialSynapticPotentiation],E(L);const W=new n.a({name:o.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});W.addToFactions(["Fulcrum Secret Technologies","BitRunners","The Black Hand"]),S(o.a.EnhancedMyelinSheathing)&&delete r.a[o.a.EnhancedMyelinSheathing],E(W);const H=new n.a({name:o.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});H.addToFactions(["CyberSec","Aevum"]),S(o.a.SynapticEnhancement)&&delete r.a[o.a.SynapticEnhancement],E(H);const U=new n.a({name:o.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});U.addToFactions(["NiteSec"]),S(o.a.NeuralRetentionEnhancement)&&delete r.a[o.a.NeuralRetentionEnhancement],E(U);const q=new n.a({name:o.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});q.addToFactions(["BitRunners","The Black Hand","NiteSec","Chongqing","New Tokyo"]),S(o.a.DataJack)&&delete r.a[o.a.DataJack],E(q);const K=new n.a({name:o.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});K.addToFactions(["BitRunners","The Black Hand","NiteSec","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries"]),S(o.a.ENM)&&delete r.a[o.a.ENM],E(K);const z=new n.a({name:o.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:[o.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});z.addToFactions(["BitRunners","The Black Hand","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries"]),S(o.a.ENMCore)&&delete r.a[o.a.ENMCore],E(z);const $=new n.a({name:o.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:[o.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});$.addToFactions(["BitRunners","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries","OmniTek Incorporated","KuaiGong International"]),S(o.a.ENMCoreV2)&&delete r.a[o.a.ENMCoreV2],E($);const V=new n.a({name:o.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:[o.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});V.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),S(o.a.ENMCoreV3)&&delete r.a[o.a.ENMCoreV3],E(V);const Y=new n.a({name:o.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:[o.a.ENM],hacking_speed_mult:1.1});Y.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),S(o.a.ENMAnalyzeEngine)&&delete r.a[o.a.ENMAnalyzeEngine],E(Y);const J=new n.a({name:o.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:[o.a.ENM],hacking_money_mult:1.4,hacking_chance_mult:1.2});J.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),S(o.a.ENMDMA)&&delete r.a[o.a.ENMDMA],E(J);const X=new n.a({name:o.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});X.addToFactions(["The Black Hand","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Bachman & Associates","Clarke Incorporated","Four Sigma"]),S(o.a.Neuralstimulator)&&delete r.a[o.a.Neuralstimulator],E(X);const Q=new n.a({name:o.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});Q.addToFactions(["BitRunners"]),S(o.a.NeuralAccelerator)&&delete r.a[o.a.NeuralAccelerator],E(Q);const Z=new n.a({name:o.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});Z.addToFactions(["CyberSec"]),S(o.a.CranialSignalProcessorsG1)&&delete r.a[o.a.CranialSignalProcessorsG1],E(Z);const ee=new n.a({name:o.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:[o.a.CranialSignalProcessorsG1],hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_mult:1.07});ee.addToFactions(["CyberSec","NiteSec"]),S(o.a.CranialSignalProcessorsG2)&&delete r.a[o.a.CranialSignalProcessorsG2],E(ee);const te=new n.a({name:o.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:[o.a.CranialSignalProcessorsG2],hacking_speed_mult:1.02,hacking_money_mult:1.15,hacking_mult:1.09});te.addToFactions(["NiteSec","The Black Hand","BitRunners"]),S(o.a.CranialSignalProcessorsG3)&&delete r.a[o.a.CranialSignalProcessorsG3],E(te);const ae=new n.a({name:o.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:[o.a.CranialSignalProcessorsG3],hacking_speed_mult:1.02,hacking_money_mult:1.2,hacking_grow_mult:1.25});ae.addToFactions(["The Black Hand","BitRunners"]),S(o.a.CranialSignalProcessorsG4)&&delete r.a[o.a.CranialSignalProcessorsG4],E(ae);const ne=new n.a({name:o.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:[o.a.CranialSignalProcessorsG4],hacking_mult:1.3,hacking_money_mult:1.25,hacking_grow_mult:1.75});ne.addToFactions(["BitRunners"]),S(o.a.CranialSignalProcessorsG5)&&delete r.a[o.a.CranialSignalProcessorsG5],E(ne);const re=new n.a({name:o.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});re.addToFactions(["Clarke Incorporated"]),S(o.a.NeuronalDensification)&&delete r.a[o.a.NeuronalDensification],E(re);const ie=new n.a({name:o.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});ie.addToFactions(["Tian Di Hui","Volhaven","New Tokyo","Chongqing","Clarke Incorporated","Four Sigma","Bachman & Associates"]),S(o.a.NuoptimalInjectorImplant)&&delete r.a[o.a.NuoptimalInjectorImplant],E(ie);const oe=new n.a({name:o.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});oe.addToFactions(["Tian Di Hui","Speakers for the Dead","Four Sigma","KuaiGong International","Clarke Incorporated","Bachman & Associates"]),S(o.a.SpeechEnhancement)&&delete r.a[o.a.SpeechEnhancement],E(oe);const se=new n.a({name:o.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});se.addToFactions(["Bachman & Associates","Clarke Incorporated","Four Sigma","KuaiGong International"]),S(o.a.FocusWire)&&delete r.a[o.a.FocusWire],E(se);const le=new n.a({name:o.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});le.addToFactions(["Four Sigma","OmniTek Incorporated","ECorp","Blade Industries"]),S(o.a.PCDNI)&&delete r.a[o.a.PCDNI],E(le);const ce=new n.a({name:o.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:[o.a.PCDNI],company_rep_mult:1.75,hacking_mult:1.1});ce.addToFactions(["Fulcrum Secret Technologies","ECorp","Blade Industries"]),S(o.a.PCDNIOptimizer)&&delete r.a[o.a.PCDNIOptimizer],E(ce);const ue=new n.a({name:o.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:[o.a.PCDNI],company_rep_mult:2,hacking_mult:1.1,hacking_speed_mult:1.05});ue.addToFactions(["Fulcrum Secret Technologies"]),S(o.a.PCDNINeuralNetwork)&&delete r.a[o.a.PCDNINeuralNetwork],E(ue);const me=new n.a({name:o.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});me.addToFactions(["Tian Di Hui","The Syndicate","NWO","MegaCorp","Four Sigma"]),S(o.a.ADRPheromone1)&&delete r.a[o.a.ADRPheromone1],E(me);const he=new n.a({name:o.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});he.addToFactions(["Silhouette","Four Sigma","Bachman & Associates","Clarke Incorporated"]),S(o.a.ADRPheromone2)&&delete r.a[o.a.ADRPheromone2],E(he);const de=new n.a({name:o.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});de.addToFactions(["The Syndicate","The Dark Army","Speakers for the Dead"]),S(o.a.ShadowsSimulacrum)&&delete r.a[o.a.ShadowsSimulacrum],E(de);const pe=new n.a({name:o.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});pe.addToFactions(["Netburners"]),S(o.a.HacknetNodeCPUUpload)&&delete r.a[o.a.HacknetNodeCPUUpload],E(pe);const fe=new n.a({name:o.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});fe.addToFactions(["Netburners"]),S(o.a.HacknetNodeCacheUpload)&&delete r.a[o.a.HacknetNodeCacheUpload],E(fe);const ge=new n.a({name:o.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});ge.addToFactions(["Netburners"]),S(o.a.HacknetNodeNICUpload)&&delete r.a[o.a.HacknetNodeNICUpload],E(ge);const ye=new n.a({name:o.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});ye.addToFactions(["Netburners"]),S(o.a.HacknetNodeKernelDNI)&&delete r.a[o.a.HacknetNodeKernelDNI],E(ye);const be=new n.a({name:o.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});be.addToFactions(["Netburners"]),S(o.a.HacknetNodeCoreDNI)&&delete r.a[o.a.HacknetNodeCoreDNI],E(be);const Ee=new n.a({name:o.a.NeuroFluxGovernor,repCost:1250,moneyCost:375e4,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:b.a.createElement(b.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});let ke=0;for(let e=0;e<u.a.augmentations.length;++e)u.a.augmentations[e].name===o.a.NeuroFluxGovernor&&(ke=u.a.augmentations[e].level);Ee.level=ke;let ve=ke;for(let e=0;e<u.a.queuedAugmentations.length;++e)u.a.queuedAugmentations[e].name===o.a.NeuroFluxGovernor&&++ve;let _e=Math.pow(l.a.NeuroFluxGovernorLevelMult,ve);Ee.baseRepRequirement=500*_e*s.a.AugmentationRepCost,Ee.baseCost=75e4*_e*s.a.AugmentationMoneyCost,S(o.a.NeuroFluxGovernor)&&delete r.a[o.a.NeuroFluxGovernor],Ee.addToAllFactions(),E(Ee);const we=new n.a({name:o.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});we.addToFactions(["CyberSec","Aevum"]),S(o.a.Neurotrainer1)&&delete r.a[o.a.Neurotrainer1],E(we);const Se=new n.a({name:o.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});Se.addToFactions(["BitRunners","NiteSec"]),S(o.a.Neurotrainer2)&&delete r.a[o.a.Neurotrainer2],E(Se);const Ce=new n.a({name:o.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});Ce.addToFactions(["NWO","Four Sigma"]),S(o.a.Neurotrainer3)&&delete r.a[o.a.Neurotrainer3],E(Ce);const xe=new n.a({name:o.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});xe.addToFactions(["Blade Industries","KuaiGong International"]),S(o.a.Hypersight)&&delete r.a[o.a.Hypersight],E(xe);const Oe=new n.a({name:o.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});Oe.addToFactions(["Slum Snakes","Tetrads"]),S(o.a.LuminCloaking1)&&delete r.a[o.a.LuminCloaking1],E(Oe);const Me=new n.a({name:o.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:[o.a.LuminCloaking1],agility_mult:1.1,defense_mult:1.1,crime_money_mult:1.25});Me.addToFactions(["Slum Snakes","Tetrads"]),S(o.a.LuminCloaking2)&&delete r.a[o.a.LuminCloaking2],E(Me);const Te=new n.a({name:o.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});Te.addToFactions(["Slum Snakes"]),S(o.a.SmartSonar)&&delete r.a[o.a.SmartSonar],E(Te);const Re=new n.a({name:o.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});Re.addToFactions(["Tetrads","The Dark Army","The Syndicate","NWO"]),S(o.a.PowerRecirculator)&&delete r.a[o.a.PowerRecirculator],E(Re);const Ae=new n.a({name:o.a.QLink,repCost:1875e3,moneyCost:25e12,info:"A brain implant that wirelessly connects you to the 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});Ae.addToFactions(["Illuminati"]),S(o.a.QLink)&&delete r.a[o.a.QLink],E(Ae);const Ne=new n.a({name:o.a.TheRedPill,repCost:25e5,moneyCost:0,info:"It's time to leave the cave.",stats:null});Ne.addToFactions(["Daedalus"]),S(o.a.TheRedPill)&&delete r.a[o.a.TheRedPill],E(Ne);const Pe=new n.a({name:o.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});Pe.addToFactions(["The Covenant"]),S(o.a.SPTN97)&&delete r.a[o.a.SPTN97],E(Pe);const Ie=new n.a({name:o.a.HiveMind,repCost:15e5,moneyCost:55e8,info:"A brain implant developed by 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});Ie.addToFactions(["ECorp"]),S(o.a.HiveMind)&&delete r.a[o.a.HiveMind],E(Ie);const Fe=new n.a({name:o.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});Fe.addToFactions(["MegaCorp"]),S(o.a.CordiARCReactor)&&delete r.a[o.a.CordiARCReactor],E(Fe);const De=new n.a({name:o.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});De.addToFactions(["Bachman & Associates"]),S(o.a.SmartJaw)&&delete r.a[o.a.SmartJaw],E(De);const je=new n.a({name:o.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});je.addToFactions(["Blade Industries"]),S(o.a.Neotra)&&delete r.a[o.a.Neotra],E(je);const Be=new n.a({name:o.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});Be.addToFactions(["NWO"]),S(o.a.Xanipher)&&delete r.a[o.a.Xanipher],E(Be);const Ge=new n.a({name:o.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 users strength to unbelievable levels. The augmentation gets more powerful over time for seemingly no reason.",strength_mult:2.7});Ge.addToFactions(["NWO"]),S(o.a.HydroflameLeftArm)&&delete r.a[o.a.HydroflameLeftArm],E(Ge);const Le=new n.a({name:o.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});Le.addToFactions(["Clarke Incorporated"]),S(o.a.nextSENS)&&delete r.a[o.a.nextSENS],E(Le);const We=new n.a({name:o.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});We.addToFactions(["OmniTek Incorporated"]),S(o.a.OmniTekInfoLoad)&&delete r.a[o.a.OmniTekInfoLoad],E(We);const He=new n.a({name:o.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});He.addToFactions(["KuaiGong International"]),S(o.a.PhotosyntheticCells)&&delete r.a[o.a.PhotosyntheticCells],E(He);const Ue=new n.a({name:o.a.Neurolink,repCost:875e3,moneyCost:4375e6,info:"A brain implant that provides a high-bandwidth, direct neural link between your mind and the 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:[h.a.FTPCrackProgram.name,h.a.RelaySMTPProgram.name]});Ue.addToFactions(["BitRunners"]),S(o.a.Neurolink)&&delete r.a[o.a.Neurolink],E(Ue);const qe=new n.a({name:o.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});qe.addToFactions(["The Black Hand"]),S(o.a.TheBlackHand)&&delete r.a[o.a.TheBlackHand],E(qe);const Ke=new n.a({name:o.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});Ke.addToFactions(["NiteSec"]),S(o.a.CRTX42AA)&&delete r.a[o.a.CRTX42AA],E(Ke);const ze=new n.a({name:o.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});ze.addToFactions(["Chongqing"]),S(o.a.Neuregen)&&delete r.a[o.a.Neuregen],E(ze);const $e=new n.a({name:o.a.CashRoot,repCost:12500,moneyCost:125e6,info:b.a.createElement(b.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:[h.a.BruteSSHProgram.name]});$e.addToFactions(["Sector-12"]),S(o.a.CashRoot)&&delete r.a[o.a.CashRoot],E($e);const Ve=new n.a({name:o.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});Ve.addToFactions(["New Tokyo"]),S(o.a.NutriGen)&&delete r.a[o.a.NutriGen],E(Ve);const Ye=new n.a({name:o.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:[h.a.DeepscanV1.name,h.a.AutoLink.name]});Ye.addToFactions(["Aevum"]),S(o.a.PCMatrix)&&delete r.a[o.a.PCMatrix],E(Ye);const Je=new n.a({name:o.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});Je.addToFactions(["Ishima"]),S(o.a.INFRARet)&&delete r.a[o.a.INFRARet],E(Je);const Xe=new n.a({name:o.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});Xe.addToFactions(["Volhaven"]),S(o.a.DermaForce)&&delete r.a[o.a.DermaForce],E(Xe);const Qe=new n.a({name:o.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:[o.a.BrachiBlades],strength_mult:1.4,defense_mult:1.4,crime_success_mult:1.1,crime_money_mult:1.3});Qe.addToFactions(["Speakers for the Dead"]),S(o.a.GrapheneBrachiBlades)&&delete r.a[o.a.GrapheneBrachiBlades],E(Qe);const Ze=new n.a({name:o.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:[o.a.BionicArms],strength_mult:1.85,dexterity_mult:1.85});Ze.addToFactions(["The Dark Army"]),S(o.a.GrapheneBionicArms)&&delete r.a[o.a.GrapheneBionicArms],E(Ze);const et=new n.a({name:o.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});et.addToFactions(["The Syndicate"]),S(o.a.BrachiBlades)&&delete r.a[o.a.BrachiBlades],E(et);const tt=new n.a({name:o.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});tt.addToFactions(["Tetrads"]),S(o.a.BionicArms)&&delete r.a[o.a.BionicArms],E(tt);const at=new n.a({name:o.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});at.addToFactions(["Tian Di Hui"]),S(o.a.SNA)&&delete r.a[o.a.SNA],E(at);const nt=new n.a({name:o.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 acvitiy to optimize concentration, allowing the user to multitask much more effectively.",stats:b.a.createElement(b.a.Fragment,null,"This augmentation removes the penalty for not focusing on actions such as working in a job or working for a faction.")});nt.addToFactions(["Tian Di Hui"]),S(o.a.NeuroreceptorManager)&&delete r.a[o.a.NeuroreceptorManager],E(nt);if(Object(c.b)("Bladeburners")){const e=new n.a({name:o.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});e.addToFactions(["Bladeburners"]),v(e);const t=new n.a({name:o.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});t.addToFactions(["Bladeburners"]),v(t);const a=new n.a({name:o.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});a.addToFactions(["Bladeburners"]),v(a);const r=new n.a({name:o.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});r.addToFactions(["Bladeburners"]),v(r);const i=new n.a({name:o.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:[o.a.HyperionV1],bladeburner_success_chance_mult:1.08,isSpecial:!0});i.addToFactions(["Bladeburners"]),v(i);const s=new n.a({name:o.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});s.addToFactions(["Bladeburners"]),v(s);const l=new n.a({name:o.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});l.addToFactions(["Bladeburners"]),v(l);const c=new n.a({name:o.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:[o.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});c.addToFactions(["Bladeburners"]),v(c);const u=new n.a({name:o.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});u.addToFactions(["Bladeburners"]),v(u);const m=new n.a({name:o.a.BladeRunner,repCost:2e4,moneyCost:825e7,info:"A cybernetic foot augmentation that was specifically created for 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});m.addToFactions(["Bladeburners"]),v(m);const h=new n.a({name:o.a.BladeArmor,repCost:12500,moneyCost:1375e6,info:"A powered exoskeleton suit designed as armor for Bladeburner 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});h.addToFactions(["Bladeburners"]),v(h);const d=new n.a({name:o.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:[o.a.BladeArmor],bladeburner_success_chance_mult:1.05,bladeburner_stamina_gain_mult:1.02,bladeburner_max_stamina_mult:1.05,isSpecial:!0});d.addToFactions(["Bladeburners"]),v(d);const p=new n.a({name:o.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:[o.a.BladeArmor],defense_mult:1.05,bladeburner_success_chance_mult:1.06,isSpecial:!0});p.addToFactions(["Bladeburners"]),v(p);const f=new n.a({name:o.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:[o.a.BladeArmor],bladeburner_success_chance_mult:1.08,isSpecial:!0});f.addToFactions(["Bladeburners"]),v(f);const g=new n.a({name:o.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:[o.a.BladeArmorUnibeam],bladeburner_success_chance_mult:1.1,isSpecial:!0});g.addToFactions(["Bladeburners"]),v(g);const y=new n.a({name:o.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:[o.a.BladeArmor],bladeburner_analysis_mult:1.15,bladeburner_success_chance_mult:1.02,isSpecial:!0});y.addToFactions(["Bladeburners"]),v(y);const E=new n.a({name:o.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:b.a.createElement(b.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});E.addToFactions(["Bladeburners"]),v(E)}if(Object(c.b)("Church of the Machine God")){const e=new n.a({name:o.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:b.a.createElement(b.a.Fragment,null,"Its unstable nature decreases all your stats by 10%")});e.addToFactions(["Church of the Machine God"]),v(e);const t=new n.a({name:o.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:[o.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:b.a.createElement(b.a.Fragment,null,"The penalty for the gift is reduced to 5%")});t.addToFactions(["Church of the Machine God"]),v(t);const a=new n.a({name:o.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:[o.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:b.a.createElement(b.a.Fragment,null,"Staneks Gift has no penalty.")});a.addToFactions(["Church of the Machine God"]),v(a)}_e=Math.pow(l.a.MultipleAugMultiplier*[1,.96,.94,.93][d.a[11]],u.a.queuedAugmentations.length);for(const e in r.a)r.a.hasOwnProperty(e)&&(r.a[e].baseCost*=_e);u.a.reapplyAllAugmentations()}function v(e){if(!(e instanceof n.a))throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");const t=e.name;S(t)&&delete r.a[t],E(e)}function _(e,t=!1){r.a[e.name].owned=!0;const a=r.a[e.name];for(const e in a.mults){const t=u.a.getMult(e)*a.mults[e];u.a.setMult(e,t)}if(e.name===o.a.NeuroFluxGovernor&&!t){r.a[e.name].level=e.level;for(let t=0;t<u.a.augmentations.length;++t)if(u.a.augmentations[t].name==o.a.NeuroFluxGovernor)return void(u.a.augmentations[t].level=e.level)}if(!t){const t=new i.a(e.name);u.a.augmentations.push(t)}}function w(){if(0==u.a.queuedAugmentations.length)return Object(p.a)("You have not purchased any Augmentations to install!"),!1;let e="",t=-1;for(let e=u.a.queuedAugmentations.length-1;e>=0;e--)if(u.a.queuedAugmentations[e].name===o.a.NeuroFluxGovernor){t=e;break}for(let a=0;a<u.a.queuedAugmentations.length;++a){const n=u.a.queuedAugmentations[a],i=r.a[n.name];if(null==i){console.error("Invalid augmentation: "+n.name);continue}if(_(u.a.queuedAugmentations[a]),n.name===o.a.NeuroFluxGovernor&&a!==t)continue;let s="";n.name===o.a.NeuroFluxGovernor&&(s=" - "+n.level),e+=i.name+s+"<br>"}return u.a.queuedAugmentations=[],Object(p.a)("You slowly drift to sleep as scientists put you under in order to install the following Augmentations:<br>"+e+"<br>You wake up in your home...you feel different..."),Object(m.a)(),!0}function S(e){return r.a.hasOwnProperty(e)}function C(e){return(e instanceof n.a?e.name:e)===o.a.NeuroFluxGovernor}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o})),a.d(t,"d",(function(){return s})),a.d(t,"f",(function(){return l})),a.d(t,"e",(function(){return c})),a.d(t,"g",(function(){return h})),a.d(t,"h",(function(){return d}));var n=a(83);let r={},i={};function o(e){r=""===e?{}:JSON.parse(e)}function s(e){i=""===e?{}:JSON.parse(e)}function l(){for(const e in r)r.hasOwnProperty(e)&&n.a.print("alias "+e+"="+r[e]);for(const e in i)i.hasOwnProperty(e)&&n.a.print("global alias "+e+"="+i[e])}function c(e,t=!1){const a=e.match(/^([\w|!|%|,|@|-]+)=(("(.+)")|('(.+)'))$/);return null!=a&&7==a.length&&(t?function(e,t){e in r&&delete r[e];i[e]=t.trim()}(a[1],a[4]||a[6]):function(e,t){e in i&&delete i[e];r[e]=t.trim()}(a[1],a[4]||a[6]),!0)}function u(e){return r.hasOwnProperty(e)?r[e]:null}function m(e){return i.hasOwnProperty(e)?i[e]:null}function h(e){return r.hasOwnProperty(e)?(delete r[e],!0):!!i.hasOwnProperty(e)&&(delete i[e],!0)}function d(e){const t=e.split(" ");if(t.length>0){if("unalias"===t[0]||"alias"===t[0])return t.join(" ");let e=!0,r=0;for(;e&&r<10;){var a;r++,e=!1;const i=null===(a=u(t[0]))||void 0===a?void 0:a.split(" ");null!=i&&(e=!0,t.splice(0,1,...i));for(let a=0;a<t.length;++a){var n;const r=null===(n=m(t[a]))||void 0===n?void 0:n.split(" ");null!=r&&(e=!0,t.splice(a,1,...r),a+=r.length-1)}}}return t.join(" ")}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t,a){this.title=e,this.fn=t,this.txt=a}}},,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(1),o=a(28);function s(e){const[t,a]=Object(n.useState)(!1);return r.a.createElement(o.a,{open:t,title:r.a.createElement(i.a,null,"Copied!")},r.a.createElement(i.a,{variant:e.variant,color:e.color,onClick:function(){const t=document.createElement("textarea");t.value=e.value,document.body.appendChild(t),t.select(),t.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(t),a(!0),setTimeout(()=>a(!1),1e3)}},e.value))}},function(e,t,a){"use strict";a.d(t,"c",(function(){return T})),a.d(t,"b",(function(){return x})),a.d(t,"a",(function(){return M}));var n=a(144),r=a(62),i=a(8),o=a(26),s=a(68),l=a(255),c=a(2),u=a(24),m=a(11),h=a(80),d=a(95),p=a(110),f=a(179),g=a(321),y=a(15),b=a(21),E=a(318),k=a(855),v=a(6),_=a(290),w=a(9);function S(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class C{constructor(){S(this,"PlayerSave",""),S(this,"AllServersSave",""),S(this,"CompaniesSave",""),S(this,"FactionsSave",""),S(this,"AliasesSave",""),S(this,"GlobalAliasesSave",""),S(this,"MessagesSave",""),S(this,"StockMarketSave",""),S(this,"SettingsSave",""),S(this,"VersionSave",""),S(this,"AllGangsSave",""),S(this,"LastExportBonus",""),S(this,"StaneksGiftSave",""),S(this,"SaveTimestamp","")}getSaveString(e=!1){this.PlayerSave=JSON.stringify(c.a),this.AllServersSave=Object(u.j)(e),this.CompaniesSave=JSON.stringify(r.a),this.FactionsSave=JSON.stringify(o.a),this.AliasesSave=JSON.stringify(n.a),this.GlobalAliasesSave=JSON.stringify(n.b),this.MessagesSave=JSON.stringify(l.a),this.StockMarketSave=JSON.stringify(d.a),this.SettingsSave=JSON.stringify(m.a),this.VersionSave=JSON.stringify(i.a.VersionNumber),this.LastExportBonus=JSON.stringify(g.a),this.StaneksGiftSave=JSON.stringify(p.b),this.SaveTimestamp=(new Date).getTime().toString(),c.a.inGang()&&(this.AllGangsSave=JSON.stringify(s.a));return btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(e=!0){const t=this.getSaveString(m.a.ExcludeRunningScriptsFromSave);Object(E.c)(t).then(()=>{e&&f.b.emit("Game Saved!","info",2e3)}).catch(e=>console.error(e))}exportGame(){const e=this.getSaveString(m.a.ExcludeRunningScriptsFromSave),t=Math.round(Date.now()/1e3),a=c.a.bitNodeN;M(`bitburnerSave_${t}_BN${a}x${h.a[a]}.json`,e)}toJSON(){return Object(b.b)("BitburnerSaveObject",this)}static fromJSON(e){return Object(b.a)(C,e.data)}}function x(e){if(!e)return!1;e=decodeURIComponent(escape(atob(e)));const t=JSON.parse(e,b.c);if(Object(c.b)(t.PlayerSave),Object(u.h)(t.AllServersSave),Object(r.c)(t.CompaniesSave),Object(o.d)(t.FactionsSave),t.hasOwnProperty("StaneksGiftSave")?Object(p.a)(t.StaneksGiftSave):(console.warn("Could not load Staneks Gift from save"),Object(p.a)("")),t.hasOwnProperty("AliasesSave"))try{Object(n.c)(t.AliasesSave)}catch(e){console.warn("Could not load Aliases from save"),Object(n.c)("")}else console.warn("Save file did not contain an Aliases property"),Object(n.c)("");if(t.hasOwnProperty("GlobalAliasesSave"))try{Object(n.d)(t.GlobalAliasesSave)}catch(e){console.warn("Could not load GlobalAliases from save"),Object(n.d)("")}else console.warn("Save file did not contain a GlobalAliases property"),Object(n.d)("");if(t.hasOwnProperty("MessagesSave"))try{Object(l.d)(t.MessagesSave)}catch(e){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(t.hasOwnProperty("StockMarketSave"))try{Object(d.i)(t.StockMarketSave)}catch(e){Object(d.i)("")}else Object(d.i)("");if(t.hasOwnProperty("SettingsSave"))try{m.a.load(t.SettingsSave)}catch(e){console.error("ERROR: Failed to parse Settings. Re-initing default values"),m.a.init()}else m.a.init();if(t.hasOwnProperty("LastExportBonus"))try{g.d(JSON.parse(t.LastExportBonus))}catch(e){g.d((new Date).getTime()),console.error("ERROR: Failed to parse last export bonus Settings "+e)}if(c.a.inGang()&&t.hasOwnProperty("AllGangsSave"))try{Object(s.b)(t.AllGangsSave)}catch(e){console.error("ERROR: Failed to parse AllGangsSave: "+e)}if(t.hasOwnProperty("VersionSave"))try{const e=JSON.parse(t.VersionSave,b.c);!function(e){const t=c.a;if("string"==typeof e){if(e<="0.41.2"){null!=t.companyPosition&&"string"!=typeof t.companyPosition&&(t.companyPosition=t.companyPosition.data.positionName,null==t.companyPosition&&(t.companyPosition=""));for(const e in r.a){const t=r.a[e];if(0==t.name&&null!=t.companyName&&(t.name=t.companyName),t.companyPositions instanceof Array){const e={};for(let a=0;a<t.companyPositions.length;++a)e[t.companyPositions[a]]=!0;t.companyPositions=e}}}if(e<"0.43.0"&&(""!==t.companyName&&null!=t.companyPosition&&""!==t.companyPosition&&(t.jobs[t.companyName]=t.companyPosition),delete t.companyPosition),e<"0.56.0"){for(const e of t.queuedAugmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade");for(const e of t.augmentations)"Graphene BranchiBlades Upgrade"===e.name&&(e.name="Graphene BrachiBlades Upgrade")}if(e<"0.56.1"){0===t.bladeburner&&(t.bladeburner=null),0===t.gang&&(t.gang=null),0===t.corporation&&(t.corporation=null);const e=t.getHomeComputer();for(let t=0;t<e.messages.length;t++)e.messages[t].filename&&(e.messages[t]=e.messages[t].filename)}if(e<"0.58.0"){const e=[[/getStockSymbols/g,"stock.getSymbols"],[/getStockPrice/g,"stock.getPrice"],[/getStockAskPrice/g,"stock.getAskPrice"],[/getStockBidPrice/g,"stock.getBidPrice"],[/getStockPosition/g,"stock.getPosition"],[/getStockMaxShares/g,"stock.getMaxShares"],[/getStockPurchaseCost/g,"stock.getPurchaseCost"],[/getStockSaleGain/g,"stock.getSaleGain"],[/buyStock/g,"stock.buy"],[/sellStock/g,"stock.sell"],[/shortStock/g,"stock.short"],[/sellShort/g,"stock.sellShort"],[/placeOrder/g,"stock.placeOrder"],[/cancelOrder/g,"stock.cancelOrder"],[/getOrders/g,"stock.getOrders"],[/getStockVolatility/g,"stock.getVolatility"],[/getStockForecast/g,"stock.getForecast"],[/purchase4SMarketData/g,"stock.purchase4SMarketData"],[/purchase4SMarketDataTixApi/g,"stock.purchase4SMarketDataTixApi"]];function a(t){for(const a of e)t=t.replace(a[0],a[1]);return t}for(const e of Object(u.c)())for(const t of e.scripts)t.code=a(t.code)}Object(k.a)(),e=1}if("number"==typeof e){if(e<2){const e=c.a.augmentations.find(e=>e.name===v.a.NeuroFluxGovernor);if(e)e.level+=10;else{const e=new _.a(v.a.NeuroFluxGovernor);e.level=10,c.a.augmentations.push(e)}c.a.reapplyAllAugmentations(!0),c.a.reapplyAllSourceFiles()}if(e<3&&(t.money=parseFloat(t.money),t.corporation)){t.corporation.funds=parseFloat(t.corporation.funds),t.corporation.revenue=parseFloat(t.corporation.revenue),t.corporation.expenses=parseFloat(t.corporation.expenses);for(let e=0;e<t.corporation.divisions.length;++e){const a=t.corporation.divisions[e];a.lastCycleRevenue=parseFloat(a.lastCycleRevenue),a.lastCycleExpenses=parseFloat(a.lastCycleExpenses),a.thisCycleRevenue=parseFloat(a.thisCycleRevenue),a.thisCycleExpenses=parseFloat(a.thisCycleExpenses)}}if(e<9&&d.a.hasOwnProperty("Joes Guns")){const e=d.a["Joes Guns"];delete d.a["Joes Guns"],d.a[w.a.Sector12JoesGuns]=e}if(e<10&&t.sleeves&&t.sleeves.length>0)for(const e of t.sleeves)if(e.augmentations&&0!==e.augmentations.length)for(const t of e.augmentations)"Graphene BranchiBlades Upgrade"===t.name&&(t.name="Graphene BrachiBlades Upgrade")}}(e),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.<br>Please report any bugs/issues through the github repository (https://github.com/danielyxie/bitburner/issues) or the Bitburner subreddit (reddit.com/r/bitburner).<br><br>"+i.a.LatestUpdate):e!==i.a.VersionNumber&&O()}catch(e){O()}else O();return!0}function O(){setTimeout(()=>Object(y.a)("New update!<br>Please report any bugs/issues through the github repository or the Bitburner subreddit (reddit.com/r/bitburner).<br><br>"+i.a.LatestUpdate),1e3)}function M(e,t){const a=new Blob([t],{type:"text/plain"}),n=window.navigator;if(n.msSaveOrOpenBlob)n.msSaveOrOpenBlob(a,e);else{const t=document.createElement("a"),n=URL.createObjectURL(a);t.href=n,t.download=e,document.body.appendChild(t),t.click(),setTimeout((function(){document.body.removeChild(t),window.URL.revokeObjectURL(n)}),0)}}b.c.constructors.BitburnerSaveObject=C;const T=new C},function(e,t,a){"use strict";function n(e,t=1){return Math.max(Math.floor(t*(32*Math.log(e+534.5)-200)),1)}function r(e,t=1){return Math.exp((e/t+200)/32)-534.6}function i(e,t=1){const a=n(e,t),i=a+1;let o=r(a,t);o<0&&(o=0);let s=r(i,t);s<0&&(s=0);let l=s-o!=0?100*(e-o)/(s-o):99.99;l<0&&(l=0),l>100&&(l=100);let c=e-o,u=s-e;return c<0&&(c=0),u<0&&(u=0),{currentSkill:a,nextSkill:i,baseExperience:o,experience:e,nextExperience:s,currentExperience:c,remainingExperience:u,progress:l}}a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r})),a.d(t,"c",(function(){return i}))},,function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return r})),function(e){e.Weapon="w",e.Armor="a",e.Vehicle="v",e.Rootkit="r",e.Augmentation="g"}(n||(n={}));const r=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:n.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:n.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:n.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:n.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:n.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:n.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:n.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:n.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:n.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:n.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:n.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:n.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:n.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:n.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:n.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:n.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:n.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:n.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:n.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:n.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:n.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:n.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:n.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:n.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:n.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:n.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:n.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:n.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:n.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:n.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:n.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:n.Augmentation}]},,function(e,t,a){"use strict";a.d(t,"b",(function(){return S})),a.d(t,"a",(function(){return C})),a.d(t,"c",(function(){return O})),a.d(t,"d",(function(){return T}));var n=a(0),r=a.n(n),i=a(122),o=a(132),s=a(1),l=a(25),c=a(10),u=a(75),m=a(407),h=a.n(m),d=a(828),p=a(111),f=a(134),g=a(537),y=a.n(g),b=a(168),E=a(181),k=a(24),v=a(221),_=a(2);let w=0;const S=new i.a,C=new i.a;let x=[];function O(){const e=Object(n.useState)(!0)[1];function t(){e(e=>!e)}function a(e){x=x.filter(t=>t.id!==e),t()}return Object(n.useEffect)(()=>S.subscribe(e=>{const n=e.server+"-"+e.filename+e.args.map(e=>""+e).join("-");x.find(e=>e.id===n)&&a(n),Promise.resolve().then(()=>{x.push({id:n,script:e}),t()})}),[]),Object(n.useEffect)(()=>C.subscribe(()=>{x=[],t()})),r.a.createElement(r.a.Fragment,null,x.map(e=>r.a.createElement(R,{key:e.id,script:e.script,id:e.id,onClose:()=>a(e.id)})))}const M=Object(p.a)(e=>Object(f.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:e.colors.success},error:{color:e.palette.error.main},primary:{color:e.palette.primary.main},info:{color:e.palette.info.main},warning:{color:e.palette.warning.main}})),T=1500;function R(e){const[t,a]=Object(n.useState)(e.script),i=M(),m=Object(n.useRef)(null),p=Object(n.useState)(!1)[1],[f,g]=Object(n.useState)(!1);function S(){p(e=>!e)}function C(){const e=m.current;null!==e&&(e.style.zIndex=T+w+"",w++,S())}function x(e=!1){const a=`${t.filename} ${t.args.map(e=>""+e).join(" ")}`;return e||a.length<=30?a:a.slice(0,27)+"..."}return Object(n.useEffect)(()=>{C();const e=setInterval(S,1e3);return()=>clearInterval(e)},[]),r.a.createElement(h.a,{handle:".drag"},r.a.createElement(u.a,{style:{display:"flex",flexFlow:"column",position:"fixed",left:"40%",top:"30%",zIndex:1400},ref:m},r.a.createElement("div",{onMouseDown:C},r.a.createElement(u.a,{className:i.title+" "+(f?"is-minimized":""),style:{cursor:"grab"}},r.a.createElement(l.a,{className:"drag",display:"flex",alignItems:"center"},r.a.createElement(s.a,{color:"primary",variant:"h6",title:x(!0)},x()),r.a.createElement(l.a,{position:"absolute",right:0},!b.a.has(t.pid)&&r.a.createElement(c.a,{onClick:function(){const e=Object(k.d)(t.server);if(null===e)return;const n=Object(v.a)(t.filename,t.args,e);null===n?Object(E.e)(_.a,t,e):a(n)}},"Run"),b.a.has(t.pid)&&r.a.createElement(c.a,{onClick:function(){Object(o.a)(t,t.server,!0)}},"Kill"),r.a.createElement(c.a,{onClick:function(){g(!f)}},f?"🗖":"🗕"),r.a.createElement(c.a,{onClick:e.onClose},"Close")))),r.a.createElement(u.a,{sx:{overflow:"scroll",overflowWrap:"break-word",whiteSpace:"pre-wrap"}},r.a.createElement(d.ResizableBox,{className:i.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,t.logs.map((e,t)=>{return r.a.createElement(s.a,{key:t,className:(a=e,a.match(/(^\[[^\]]+\] )?ERROR/)||a.match(/(^\[[^\]]+\] )?FAIL/)?i.error:a.match(/(^\[[^\]]+\] )?SUCCESS/)?i.success:a.match(/(^\[[^\]]+\] )?WARN/)?i.warning:a.match(/(^\[[^\]]+\] )?INFO/)?i.info:i.primary)},e,r.a.createElement("br",null));var a})))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new Map},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";a.d(t,"c",(function(){return i})),a.d(t,"d",(function(){return o})),a.d(t,"e",(function(){return s})),a.d(t,"b",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"f",(function(){return u}));var n=a(5),r=a(34);function i(e,t,a,i,o){return r.b.HashesPerLevel*e*Math.pow(1.07,Math.log2(a))*(1+(i-1)/5)*(1-t/a)*o*n.a.HacknetNodeMoney}function o(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.b.MaxLevel)return 1/0;const i=r.b.UpgradeLevelMult;let o=0,s=e;for(let e=0;e<n;++e)o+=Math.pow(i,s),++s;return 10*r.b.BaseCost*o*a}function s(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.b.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(e)),s=e;for(let e=0;e<n;++e){i+=s*r.b.RamBaseCost*Math.pow(r.b.UpgradeRamMult,o),s*=2,++o}return i*=a,i}function l(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.b.MaxCores)return 1/0;const i=r.b.UpgradeCoreMult;let o=0,s=e;for(let e=0;e<n;++e)o+=Math.pow(i,s-1),++s;return o*=r.b.CoreBaseCost,o*=a,o}function c(e,t=1){const a=Math.round(t);if(isNaN(a)||a<1)return 0;if(e>=r.b.MaxCache)return 1/0;const n=r.b.UpgradeCacheMult;let i=0,o=e;for(let e=0;e<a;++e)i+=Math.pow(n,o-1),++o;return i*=r.b.CacheBaseCost,i}function u(e,t=1){return e-1>=r.b.MaxServers?1/0:r.b.BaseCost*Math.pow(r.b.PurchaseMult,e-1)*t}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.Field=0]="Field",e[e.Hacking=1]="Hacking",e[e.None=2]="None",e[e.Security=3]="Security"}(n||(n={}))},,,,function(e,t,a){"use strict";function n(e){const t=Object.assign({},{progress:0,totalTicks:20},e);t.progress=Math.max(Math.min(t.progress,1),0);const a=Math.max(Math.floor(t.progress/(1/t.totalTicks)),1),n=Math.max(t.totalTicks-a,0);return`[${"|".repeat(a)}${"-".repeat(n)}]`}a.d(t,"a",(function(){return n}))},,,,function(e,t,a){"use strict";a.d(t,"c",(function(){return h})),a.d(t,"b",(function(){return d})),a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(659),o=a(111),s=a(122),l=a(1376),c=a(75),u=a(167);const m=Object(o.a)(()=>({snackbar:{zIndex:u.d+1e3+" !important"}}));function h(e){const t=m();return r.a.createElement(i.a,{dense:!0,maxSnack:9,anchorOrigin:{horizontal:"right",vertical:"bottom"},autoHideDuration:2e3,classes:{containerRoot:t.snackbar}},e.children)}const d=new s.a;function p(){const{enqueueSnackbar:e,closeSnackbar:t}=Object(i.b)();return Object(n.useEffect)(()=>d.subscribe((a,n,i)=>{const o=e(r.a.createElement(l.a,{severity:n},a),{content:(e,t)=>r.a.createElement(c.a,{key:e},t),variant:n,autoHideDuration:i,onClick:()=>t(o)})})),r.a.createElement(r.a.Fragment,null)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return R})),a.d(t,"c",(function(){return A})),a.d(t,"e",(function(){return P})),a.d(t,"f",(function(){return F})),a.d(t,"b",(function(){return D})),a.d(t,"d",(function(){return j}));var n=a(132),r=a(232),i=a(168),o=a(275),s=a(472),l=a(8),c=a(535),u=a(103),m=a(473),h=a(573),d=a(1182),p=a(336),f=a(579),g=a(221),y=a(24),b=a(11),E=a(610),k=a(15),v=a(243),_=a(469),w=a(126),S=a(434),C=a(242),x=a(279),O=a(78),M=a(2),T=a(83);const R=[];for(let e=0;e<l.a.NumNetscriptPorts;++e)R.push(Object(d.a)());function A(){for(const e of i.a.values())e.env.stopFlag=!0,Object(n.a)(e);for(const e of R)e.clear();o.a.emit(),i.a.clear()}function N(e){const t=e.code;let a,i;e.running=!0;try{const n=function(e,t){const a=Object(C.a)(e,{ecmaVersion:9,allowReserved:!0,sourceType:"module"}),n=t.getServer();if(null==n)throw new Error("Failed to find underlying Server object for script");let r="",i=!1;if(Object(x.b)(a,{ImportDeclaration:e=>{i=!0;let t=e.source.value;t.startsWith("./")&&(t=t.slice(2));const a=function(e){for(let t=0;t<n.scripts.length;++t)if(n.scripts[t].filename===e)return n.scripts[t];return null}(t);if(null==a)throw new Error("'Import' failed due to invalid script: "+t);const o=Object(C.a)(a.code,{ecmaVersion:9,allowReserved:!0,sourceType:"module"});if(1===e.specifiers.length&&"ImportNamespaceSpecifier"===e.specifiers[0].type){const t=e.specifiers[0].local.name,a=[],n=[];Object(x.b)(o,{FunctionDeclaration:e=>{a.push(e.id.name),n.push(e)}}),r+="var "+t+";\n(function (namespace) {\n",n.forEach(e=>{r+=Object(E.generate)(e),r+="\n"}),a.forEach(e=>{r+="namespace."+e+" = "+e,r+="\n"}),r+="})("+t+" || ("+t+" = {}));\n"}else{const t=[];e.specifiers.forEach(e=>{t.push(e.local.name)});const a=[];Object(x.b)(o,{FunctionDeclaration:e=>{t.includes(e.id.name)&&a.push(e)}}),a.forEach(e=>{r+=Object(E.generate)(e),r+="\n"})}}}),!i)return{code:e,lineOffset:0};let o=0;if("Program"!==a.type||null==a.body)throw new Error("Code could not be properly parsed");for(let e=a.body.length-1;e>=0;--e)"ImportDeclaration"===a.body[e].type&&(a.body.splice(e,1),++o);const s=(r.match(/\n/g)||[]).length-o;e=Object(E.generate)(a);return{code:e=r+e,lineOffset:s}}(t,e);a=n.code,i=n.lineOffset}catch(t){return Object(k.a)("Error processing Imports in "+e.name+":<br>"+t),e.env.stopFlag=!0,e.running=!1,Object(n.a)(e),Promise.resolve(e)}const o=function(t,a){const n=Object(m.a)(e);for(const e in n){const i=n[e];if("function"==typeof i)if(["hack","grow","weaken","sleep","prompt","manualHack","scp","write"].includes(e)){const n=function(...e){const a=[];for(let n=0;n<e.length-1;++n)"object"==typeof e[n]||e[n].constructor===Array?a.push(t.pseudoToNative(e[n])):a.push(e[n]);const n=e[e.length-1];i(...a).then((function(e){n(e)})).catch((function(e){e instanceof r.a||console.error(e)}))};t.setProperty(a,e,t.createAsyncFunction(n))}else if("sprintf"===e||"vsprintf"===e||"scp"===e||"write"==e||"tryWrite"===e||"run"===e||"exec"===e){const n=function(...e){const a=[];for(let n=0;n<e.length;++n)"object"==typeof e[n]||e[n].constructor===Array?a.push(t.pseudoToNative(e[n])):a.push(e[n]);return i(...a)};t.setProperty(a,e,t.createNativeFunction(n))}else{const n=function(...e){const a=i(...e);return null==a?a:a.constructor===Array||a===Object(a)?t.nativeToPseudo(a):a};t.setProperty(a,e,t.createNativeFunction(n))}else t.setProperty(a,e,t.nativeToPseudo(i))}t.setProperty(a,"args",t.nativeToPseudo(e.args))};let s;try{s=new c.a(a,o,i)}catch(t){return Object(k.a)("Syntax ERROR in "+e.name+":<br>"+t),e.env.stopFlag=!0,e.running=!1,Object(n.a)(e),Promise.resolve(e)}return new Promise((function(t,a){try{!function n(){try{if(e.env.stopFlag)return a(e);let r=!0,i=0;for(;i<3&&r;)r=r&&s.step(),i++;r?setTimeout(n,b.a.CodeInstructionRunTime):t(e)}catch(t){return t=t.toString(),Object(u.a)(t)||(t=Object(u.b)(e,t)),e.errorMessage=t,a(e)}}()}catch(t){return Object(w.a)(t)?(e.errorMessage=t,a(e)):t instanceof r.a?a(t):a(e)}}))}function P(e,t,a,n){return I(e,t,a,n)?(a.runScript(t),t.pid):0}function I(e,t,a,l){let c=1;t.threads&&!isNaN(t.threads)?c=t.threads:t.threads=1;const d=Object(f.a)(t),p=Object(_.a)(d*c);if(p>a.maxRam-a.ramUsed)return Object(k.a)(`Not enough RAM to run script ${t.filename} with args `+Object(v.a)(t.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;a.updateRamUsed(Object(_.a)(a.ramUsed+p),M.a);const g=Object(s.a)();if(-1===g)throw new Error("Failed to start script because could not find available PID. This is most because you have too many scripts running.");const y=new r.a(t,g,m.a);y.ramUsage=d,i.a.set(g,y),o.a.emit();let b=null;if(y.name.endsWith(".js")||y.name.endsWith(".ns"))b=function(e,t){t.running=!0;let a=null;function n(e,n){return function(...r){if(t.env.stopFlag)throw t;if("asleep"===e)return n(...r);if(a)throw t.errorMessage=Object(u.b)(t,Object(S.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)",a,e)),t;let i;a=e;try{i=n(...r)}catch(e){throw a=null,e}return i&&void 0!==i.finally?i.finally((function(){a=null})):(a=null,i)}}for(const e in t.env.vars)"function"==typeof t.env.vars[e]&&(t.env.vars[e]=n(e,t.env.vars[e]));return t.env.vars.stanek.charge=n("stanek.prop",t.env.vars.stanek.charge),new Promise((a,n)=>{Object(h.b)(e,t.getServer().scripts,t).then(()=>{a(t)}).catch(e=>n(e))}).catch(e=>{if(console.log(e),e instanceof Error)throw e instanceof SyntaxError?t.errorMessage=Object(u.b)(t,e.message+" (sorry we can't be more helpful)"):t.errorMessage=Object(u.b)(t,e.message+(e.stack&&"\nstack:\n"+e.stack.toString()||"")),t;if(Object(u.a)(e))throw t.errorMessage=e,t;if(e instanceof r.a)throw e;throw t.errorMessage=Object(u.b)(t,e),t})}(e,y);else if(b=N(y),!(b instanceof Promise))return!1;return b.then((function(e){e.running=!1,e.env.stopFlag=!0,void 0!==l&&l.running&&(l.scriptRef.onlineExpGained+=t.onlineExpGained,l.scriptRef.onlineMoneyMade+=t.onlineMoneyMade),Object(n.a)(y),e.log("",()=>"Script finished running")})).catch((function(e){if(e 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: "+e.toString());if(e instanceof r.a){if(!Object(u.a)(e.errorMessage))return void e.log("",()=>"Script killed");{const t=e.errorMessage.split("|DELIMITER|");if(4!=t.length)return console.error("ERROR: Something wrong with Error text in evaluator..."),void console.error("Error text: "+e.errorMessage);const a=t[1],n=t[2],r=t[3];let i=`RUNTIME ERROR<br>${n}@${a}<br>`;e.args.length>0&&(i+=`Args: ${Object(v.a)(e.args)}<br>`),i+="<br>",i+=r,Object(k.a)(i),e.log("",()=>"Script crashed with runtime error")}}else{if(Object(u.a)(e))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: "+e.toString());Object(k.a)("An unknown script died for an unknown reason. This is a bug please contact game dev"),console.error(e)}Object(n.a)(y)})),!0}function F(e=1){const t=e*l.a._idleSpeed/1e3;for(const e of i.a.values())e.scriptRef.onlineRunningTime+=t}function D(e){const t=-1!==window.location.href.toLowerCase().indexOf("?noscripts");t&&(T.a.warn("Skipped loading player scripts during startup"),console.info("Skipping the load of any scripts during startup"));for(const a of Object(y.c)()){a.ramUsed=0;for(let e=0;e<a.scripts.length;++e)a.scripts[e].markUpdated();if(t)a.runningScripts.length=0;else for(let t=0;t<a.runningScripts.length;++t){const n=a.runningScripts[t].filename;I(e,a.runningScripts[t],a),a.runningScripts[t]?Object(g.c)(a.runningScripts[t]):console.error(`createAndAddWorkerScript removed ${n} from ${a}`)}}}function j(e,t,a,n,i,o,s=1){if(!(o instanceof r.a))return 0;if("string"!=typeof n||!Array.isArray(i))return o.log(t,()=>`Invalid arguments: scriptname='${n} args='${i}'`),console.error("runScriptFromScript() failed due to invalid arguments"),0;i.forEach((e,t)=>{if("string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e)throw new Error(`Only strings, numbers, and booleans can be passed as arguments to other scripts.\n${n} argument index ${t} is of type ${typeof e} and value ${JSON.stringify(e)}`)});if(null!=a.getRunningScript(n,i))return o.log(t,()=>`'${n}' is already running on '${a.hostname}'`),0;for(let e=0;e<i.length;++e)if(null==i[e])return o.log(t,()=>"Cannot execute a script with null/undefined as an argument"),0;for(let r=0;r<a.scripts.length;++r){if(!Object(O.a)(a.scripts[r].filename,n))continue;const l=a.scripts[r];let c=l.ramUsage;if(0===(s=Math.floor(Number(s))))return 0;c*=s;const u=a.maxRam-a.ramUsed;if(0==a.hasAdminRights)return o.log(t,()=>`You do not have root access on '${a.hostname}'`),0;if(c>u)return o.log(t,()=>`Cannot run script '${n}' (t=${s}) on '${a.hostname}' because there is not enough available RAM!`),0;{o.log(t,()=>`'${n}' on '${a.hostname}' with ${s} threads and args: ${Object(v.a)(i)}.`);const r=new p.a(l,i);return r.threads=s,r.server=a.hostname,P(e,r,a,o)}}return o.log(t,()=>`Could not find script '${n}' on '${a.hostname}'`),0}},function(e,t,a){"use strict";a.d(t,"b",(function(){return u})),a.d(t,"c",(function(){return h})),a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(581),o=a(736),s=a(1349),l=a(122),c=a(11);const u=new l.a;let m;function h(){var e,t;m=Object(i.a)({colors:{hp:c.a.theme.hp,money:c.a.theme.money,hack:c.a.theme.hack,combat:c.a.theme.combat,cha:c.a.theme.cha,int:c.a.theme.int,rep:c.a.theme.rep,backgroundprimary:c.a.theme.backgroundprimary,backgroundsecondary:c.a.theme.backgroundsecondary,button:c.a.theme.button,successlight:c.a.theme.successlight,success:c.a.theme.success,successdark:c.a.theme.successdark,white:c.a.theme.white,black:c.a.theme.black},palette:{primary:{light:c.a.theme.primarylight,main:c.a.theme.primary,dark:c.a.theme.primarydark},secondary:{light:c.a.theme.secondarylight,main:c.a.theme.secondary,dark:c.a.theme.secondarydark},error:{light:c.a.theme.errorlight,main:c.a.theme.error,dark:c.a.theme.errordark},info:{light:c.a.theme.infolight,main:c.a.theme.info,dark:c.a.theme.infodark},warning:{light:c.a.theme.warninglight,main:c.a.theme.warning,dark:c.a.theme.warningdark},success:{light:c.a.theme.successlight,main:c.a.theme.success,dark:c.a.theme.successdark},background:{default:c.a.theme.backgroundprimary,paper:c.a.theme.well},action:{disabled:c.a.theme.disabled}},typography:{fontFamily:c.a.styles.fontFamily,button:{textTransform:"none"}},components:{MuiInputBase:{styleOverrides:{root:{backgroundColor:c.a.theme.well,color:c.a.theme.primary},input:{"&::placeholder":{userSelect:"none",color:c.a.theme.primarydark}}}},MuiInput:{styleOverrides:{root:{backgroundColor:c.a.theme.well,borderBottomColor:"#fff"},underline:{"&:hover":{borderBottomColor:c.a.theme.primarydark},"&:before":{borderBottomColor:c.a.theme.primary},"&:after":{borderBottomColor:c.a.theme.primarylight}}}},MuiInputLabel:{styleOverrides:{root:{color:c.a.theme.primarydark,userSelect:"none","&:before":{color:c.a.theme.primarylight}}}},MuiButtonGroup:{styleOverrides:{root:{"& .MuiButton-root:not(:last-of-type)":{marginRight:"1px"}}}},MuiButton:{styleOverrides:{root:{backgroundColor:c.a.theme.button,border:"1px solid "+c.a.theme.well,"&:hover":{backgroundColor:c.a.theme.backgroundsecondary},borderRadius:0}}},MuiSelect:{styleOverrides:{icon:{color:c.a.theme.primary}},defaultProps:{variant:"standard"}},MuiTextField:{defaultProps:{variant:"standard"}},MuiTypography:{defaultProps:{color:"primary"},styleOverrides:{root:{lineHeight:c.a.styles.lineHeight}}},MuiMenu:{styleOverrides:{list:{backgroundColor:c.a.theme.well}}},MuiMenuItem:{styleOverrides:{root:{color:c.a.theme.primary}}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:"#111"}}},MuiAccordionDetails:{styleOverrides:{root:{backgroundColor:c.a.theme.backgroundsecondary}}},MuiIconButton:{styleOverrides:{root:{color:c.a.theme.primary}}},MuiTooltip:{styleOverrides:{tooltip:{fontSize:"1em",color:c.a.theme.primary,backgroundColor:c.a.theme.well,borderRadius:0,border:"2px solid white",maxWidth:"100vh"}},defaultProps:{disableInteractive:!0}},MuiSlider:{styleOverrides:{valueLabel:{color:c.a.theme.primary,backgroundColor:c.a.theme.well}}},MuiDrawer:{styleOverrides:{paper:{"&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none",backgroundColor:c.a.theme.backgroundsecondary},paperAnchorDockedLeft:{borderRight:"1px solid "+c.a.theme.welllight}}},MuiDivider:{styleOverrides:{root:{backgroundColor:c.a.theme.welllight}}},MuiFormControlLabel:{styleOverrides:{root:{color:c.a.theme.primary}}},MuiSwitch:{styleOverrides:{switchBase:{color:c.a.theme.primarydark},track:{backgroundColor:c.a.theme.welllight}}},MuiPaper:{styleOverrides:{root:{borderRadius:0,backgroundColor:c.a.theme.backgroundsecondary,border:"1px solid "+c.a.theme.welllight}}},MuiTablePagination:{styleOverrides:{select:{color:c.a.theme.primary},selectLabel:{color:c.a.theme.primary},displayedRows:{color:c.a.theme.primary}}},MuiTab:{styleOverrides:{textColorPrimary:{color:c.a.theme.secondary,"&.Mui-selected":{color:c.a.theme.primary}}}},MuiAlert:{styleOverrides:{root:{backgroundColor:c.a.theme.black,borderRadius:0,border:"1px solid "+c.a.theme.well},standardSuccess:{color:c.a.theme.successlight},standardError:{color:c.a.theme.errorlight},standardWarning:{color:c.a.theme.warninglight},standardInfo:{color:c.a.theme.infolight}}}}}),document.body.style.backgroundColor=null!==(e=null===(t=m.colors.black)||void 0===t?void 0:t.toString())&&void 0!==e?e:"black"}h();const d=({children:e})=>r.a.createElement(o.a,{injectFirst:!0},r.a.createElement(s.a,{theme:m},e))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(21);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e={}){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),e.name&&(this.name=e.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 e=1+Math.random()*this.mv/300,t=1+Math.random()*this.mv/100;Math.random()<.5?(this.cmp*=t,this.cmp>this.cmpR[1]&&(this.cmp=this.cmpR[1]),this.bCost*=1/e):(this.cmp*=1/t,this.cmp<this.cmpR[0]&&(this.cmp=this.cmpR[0]),this.bCost*=e);const a=1+Math.random()*this.mv/100;Math.random()<.5?(this.dmd*=a,this.dmd>this.dmdR[1]&&(this.dmd=this.dmdR[1]),this.bCost*=e):(this.dmd*=1/a,this.dmd<this.dmdR[0]&&(this.dmd=this.dmdR[0]),this.bCost*=1/e)}toJSON(){return Object(n.b)("Material",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.Material=i},function(e,t,a){"use strict";a.d(t,"f",(function(){return r})),a.d(t,"d",(function(){return i})),a.d(t,"e",(function(){return o})),a.d(t,"c",(function(){return s})),a.d(t,"b",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(5);function r(e){return e.respect/(e.respect+e.wantedLevel)}function i(e,t,a){if(0===a.baseRespect)return 0;let i=a.hackWeight/100*t.hack+a.strWeight/100*t.str+a.defWeight/100*t.def+a.dexWeight/100*t.dex+a.agiWeight/100*t.agi+a.chaWeight/100*t.cha;if(i-=4*a.difficulty,i<=0)return 0;const o=Math.max(.005,Math.pow(100*e.territory,a.territory.respect)/100),s=(.2*e.territory+.8)*n.a.GangSoftcap;if(isNaN(o)||o<=0)return 0;const l=r(e);return Math.pow(11*a.baseRespect*i*o*l,s)}function o(e,t,a){if(0===a.baseWanted)return 0;let n=a.hackWeight/100*t.hack+a.strWeight/100*t.str+a.defWeight/100*t.def+a.dexWeight/100*t.dex+a.agiWeight/100*t.agi+a.chaWeight/100*t.cha;if(n-=3.5*a.difficulty,n<=0)return 0;const r=Math.max(.005,Math.pow(100*e.territory,a.territory.wanted)/100);if(isNaN(r)||r<=0)return 0;if(a.baseWanted<0)return.4*a.baseWanted*n*r;const i=7*a.baseWanted/Math.pow(3*n*r,.8);return Math.min(100,i)}function s(e,t,a){if(0===a.baseMoney)return 0;let i=a.hackWeight/100*t.hack+a.strWeight/100*t.str+a.defWeight/100*t.def+a.dexWeight/100*t.dex+a.agiWeight/100*t.agi+a.chaWeight/100*t.cha;if(i-=3.2*a.difficulty,i<=0)return 0;const o=Math.max(.005,Math.pow(100*e.territory,a.territory.money)/100);if(isNaN(o)||o<=0)return 0;const s=r(e),l=(.2*e.territory+.8)*n.a.GangSoftcap;return Math.pow(5*a.baseMoney*i*o*s,l)}function l(e){return Math.max(e-1e3,0)}function c(e){return Math.max(Math.pow(e/2e3,.5),1)}},,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(529),r=a(433),i=a(21);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class s{constructor(e=""){o(this,"alreadyInvited",!1),o(this,"augmentations",[]),o(this,"favor",0),o(this,"isBanned",!1),o(this,"isMember",!1),o(this,"name",""),o(this,"playerReputation",0),this.name=e}getInfo(){const e=n.a[this.name];if(null==e)throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);return e}gainFavor(){null==this.favor&&(this.favor=0),this.favor+=this.getFavorGain()}getFavorGain(){null==this.favor&&(this.favor=0);const e=Math.max(0,Object(r.a)(this.favor))+this.playerReputation;return Object(r.b)(e)-this.favor}toJSON(){return Object(i.b)("Faction",this)}static fromJSON(e){return Object(i.a)(s,e.data)}}i.c.constructors.Faction=s},function(e,t,a){"use strict";let n,r;a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r})),function(e){e[e.Cost=0]="Cost",e[e.Default=1]="Default",e[e.Reputation=2]="Reputation",e[e.Purchasable=3]="Purchasable"}(n||(n={})),function(e){e[e.Alphabetically=0]="Alphabetically",e[e.AcquirementTime=1]="AcquirementTime"}(r||(r={}))},function(e,t,a){"use strict";a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"e",(function(){return s})),a.d(t,"a",(function(){return l})),a.d(t,"d",(function(){return c}));var n=a(5),r=a(34);function i(e,t,a,i){return e*r.a.MoneyGainPerLevel*Math.pow(1.035,t-1)*((a+5)/6)*i*n.a.HacknetNodeMoney}function o(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.a.MaxLevel)return 1/0;const i=r.a.UpgradeLevelMult;let o=0,s=e;for(let e=0;e<n;++e)o+=r.a.LevelBaseCost*Math.pow(i,s),++s;return r.a.BaseCost/2*o*a}function s(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.a.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(e)),s=e;for(let e=0;e<n;++e){i+=s*r.a.RamBaseCost*Math.pow(r.a.UpgradeRamMult,o),s*=2,++o}return i*=a,i}function l(e,t=1,a=1){const n=Math.round(t);if(isNaN(n)||n<1)return 0;if(e>=r.a.MaxCores)return 1/0;const i=r.a.CoreBaseCost,o=r.a.UpgradeCoreMult;let s=0,l=e;for(let e=0;e<n;++e)s+=i*Math.pow(o,l-1),++l;return s*=a,s}function c(e,t=1){return e<=0?0:r.a.BaseCost*Math.pow(r.a.PurchaseNextMult,e-1)*t}},function(e,t,a){"use strict";a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return s}));var n=a(0),r=a(15);function i(e,t){e.gainMoney(t,"casino")}function o(e){const t=e.getCasinoWinnings()>1e10;return t&&Object(r.a)(n.createElement(n.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),t}class s extends n.Component{win(e,t){e.gainMoney(t,"casino")}reachedLimit(e){const t=e.getCasinoWinnings()>1e10;return t&&Object(r.a)(n.createElement(n.Fragment,null,"Alright cheater get out of here. You're not allowed here anymore.")),t}}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));const n=!1,r=!0,i={O:[[r,r],[r,r]],I:[[r,r,r,r]],L:[[n,n,r],[r,r,r]],J:[[r,n,n],[r,r,r]],S:[[n,r,r],[r,r,n]],Z:[[r,r,n],[n,r,r]],T:[[r,r,r],[n,r,n]]}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);function i(e){return Object(n.useEffect)(()=>{function t(t){if(!t.isTrusted)return;e.onKeyDown.bind(this)(t)}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}),r.a.createElement(r.a.Fragment,null)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(1249),r=a(0),i=a.n(r),o=a(1381),s=a(52);const l=Object(o.a)(e=>({root:{backgroundColor:e.palette.background.paper},bar:{transition:"none",backgroundColor:e.palette.primary.main}}))(n.a);function c(e){const[t,a]=Object(r.useState)(100);return Object(r.useEffect)(()=>{const t=setInterval(()=>{a(t=>(t<=0&&e.onExpire(),t-200/e.millis*100))},200);return()=>{clearInterval(t)}},[]),i.a.createElement(s.a,{item:!0,xs:12},i.a.createElement(l,{variant:"determinate",value:t,color:"primary"}))}},function(e,t,a){"use strict";function n(e,t,a){function n(e,t,n){function r(e,t,a){return(1-a)*e+a*t}for(const i of Object.keys(e))a[i]=r(e[i],t[i],n);return e}return t<0?n(e.Trivial,e.Trivial,0):t>=0&&t<1?n(e.Trivial,e.Normal,t):t>=1&&t<2?n(e.Normal,e.Hard,t-1):t>=2&&t<3?n(e.Hard,e.Impossible,t-2):n(e.Impossible,e.Impossible,0)}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(468),r=a(21),i=a(469),o=a(527);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}let l=0;class c{constructor(e=null,t="",a="",n="",r=[]){s(this,"code",""),s(this,"filename",""),s(this,"url",""),s(this,"module",""),s(this,"dependencies",[]),s(this,"ramUsage",0),s(this,"server",""),s(this,"_hash",""),this.filename=t,this.code=a,this.ramUsage=0,this.server=n,this.module="",this.moduleSequenceNumber=++l,this._hash="",""!==this.code&&null!==e&&(this.updateRamUsage(e,r),this.rehash())}download(){const e=this.filename,t=new Blob([this.code],{type:"text/plain"}),a=window.navigator;if(a.msSaveOrOpenBlob)a.msSaveOrOpenBlob(t,e);else{const a=document.createElement("a"),n=URL.createObjectURL(t);a.href=n,a.download=e,document.body.appendChild(a),a.click(),setTimeout((function(){document.body.removeChild(a),window.URL.revokeObjectURL(n)}),0)}}markUpdated(){this.module="",this.moduleSequenceNumber=++l,this.rehash()}rehash(){this._hash=Object(o.a)(this.code)}hash(){return this._hash||this.rehash(),this._hash}saveScript(e,t,a,n,r){this.code=c.formatCode(a),this.filename=t,this.server=n,this.updateRamUsage(e,r),this.markUpdated()}async updateRamUsage(e,t){const a=await Object(n.a)(e,this.code,t);a.cost>0&&(this.ramUsage=Object(i.a)(a.cost),this.ramUsageEntries=a.entries),this.markUpdated()}imports(){return[]}toJSON(){return Object(r.b)("Script",this)}static fromJSON(e){const t=Object(r.a)(c,e.data);return t.url="",t.rehash(),t}static formatCode(e){return e.replace(/^\s+|\s+$/g,"")}}r.c.constructors.Script=c},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(8),r=a(195),i=a(34),o=a(15),s=a(21),l=a(352);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u{constructor(e="",t=1){c(this,"cores",1),c(this,"level",1),c(this,"moneyGainRatePerSecond",0),c(this,"onlineTimeSeconds",0),c(this,"ram",1),c(this,"totalMoneyGenerated",0),this.name=e,this.updateMoneyGainRate(t)}calculateCoreUpgradeCost(e=1,t){return Object(r.a)(this.cores,e,t)}calculateLevelUpgradeCost(e=1,t){return Object(r.b)(this.level,e,t)}calculateRamUpgradeCost(e=1,t){return Object(r.e)(this.ram,e,t)}process(e=1){const t=e*n.a.MilliPerCycle/1e3;let a=this.moneyGainRatePerSecond*t;return isNaN(a)&&(console.error(`Hacknet Node ${this.name} calculated earnings of NaN`),a=0),this.totalMoneyGenerated+=a,this.onlineTimeSeconds+=t,a}upgradeCore(e=1,t){this.cores=Math.min(i.a.MaxCores,Math.round(this.cores+e)),this.updateMoneyGainRate(t)}upgradeLevel(e=1,t){this.level=Math.min(i.a.MaxLevel,Math.round(this.level+e)),this.updateMoneyGainRate(t)}upgradeRam(e=1,t){for(let t=0;t<e;++t)this.ram*=2;this.ram=Math.round(this.ram),this.updateMoneyGainRate(t)}updateMoneyGainRate(e){this.moneyGainRatePerSecond=Object(r.c)(this.level,this.ram,this.cores,e),isNaN(this.moneyGainRatePerSecond)&&(this.moneyGainRatePerSecond=0,Object(o.a)("Error in calculating Hacknet Node production. Please report to game developer"))}toJSON(){return Object(s.b)("HacknetNode",this)}static fromJSON(e){return Object(s.a)(u,e.data)}}c(u,"validationData",{cores:Object(l.a)(1,1,i.a.MaxCores),level:Object(l.a)(1,1,i.a.MaxLevel),ram:Object(l.a)(1,1,i.a.MaxRam),onlineTimeSeconds:Object(l.a)(0,0,1/0),totalMoneyGenerated:Object(l.a)(0,0,1/0)}),s.c.constructors.HacknetNode=u},function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"c",(function(){return s})),a.d(t,"b",(function(){return l}));var n=a(15),r=a(21),i=a(78);class o{get filename(){return this.fn}set filename(e){this.fn=e}constructor(e="",t=""){this.fn=(e.endsWith(".txt")?e:e+".txt").replace(/\s+/g,""),this.text=t}append(e){this.text+=e}download(){const e=this.fn,t=new Blob([this.text],{type:"text/plain"}),a=window.navigator;if(a.msSaveOrOpenBlob)a.msSaveOrOpenBlob(t,e);else{const e=document.createElement("a"),a=URL.createObjectURL(t);e.href=a,e.download=this.fn,document.body.appendChild(e),e.click(),setTimeout(()=>{document.body.removeChild(e),window.URL.revokeObjectURL(a)},0)}}read(){return this.text}show(){Object(n.a)(`${this.fn}<br /><br />${this.text}`)}toJSON(){return Object(r.b)("TextFile",this)}write(e){this.text=e}static fromJSON(e){return Object(r.a)(o,e.data)}}function s(e,t){let a=e.endsWith(".txt")?e:e+".txt";Object(i.h)(a)&&(a=Object(i.k)(a));for(const e of t.textFiles)if(e.fn===a)return e;return null}function l(e,t,a){if(null!==s(e,a))return void console.error(`A file named "${e}" already exists on server ${a.hostname}.`);const n=new o(e,t);return a.textFiles.push(n),n}r.c.constructors.TextFile=o},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(237),r=a(124);const i={};i[r.a.BladesIntuition]=new n.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 n.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 n.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 n.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 n.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 n.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 n.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 n.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 n.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 n.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 n.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 n.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(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(165),r=a(818);const i={};n.b.forEach(e=>{i[e.name]=new r.a(e.name,e.cost,e.upgType,e.mults)})},function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"c",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(139),r=a(69),i=a(8);function o(e,t,a){if(isNaN(t)||t<=0||!(e instanceof n.a))return null;t=Math.min(t,e.maxShares);return a===r.a.Long?t*e.getAskPrice()+i.a.StockMarketCommission:t*e.getBidPrice()+i.a.StockMarketCommission}function s(e,t,a){if(isNaN(t)||t<=0||!(e instanceof n.a))return null;t=Math.min(t,e.maxShares);if(a===r.a.Long)return t*e.getBidPrice()-i.a.StockMarketCommission;return t*e.playerAvgShortPx+((e.playerAvgShortPx-e.getAskPrice())*t-i.a.StockMarketCommission)}function l(e,t){if(isNaN(t)||t<=0||!(e instanceof n.a))return;t=Math.min(t,e.maxShares);const a=e.shareTxUntilMovement;if(t<=a)return e.shareTxUntilMovement-=t,void(e.shareTxUntilMovement<=0&&(e.shareTxUntilMovement=e.shareTxForMovement,e.influenceForecast(.006),e.influenceForecastForecast(e.mv/100*.006)));const r=t-a;let i=1+Math.ceil(r/e.shareTxForMovement);e.shareTxUntilMovement=e.shareTxForMovement-(t-e.shareTxUntilMovement)%e.shareTxForMovement,(e.shareTxUntilMovement===e.shareTxForMovement||e.shareTxUntilMovement<=0)&&(++i,e.shareTxUntilMovement=e.shareTxForMovement);const o=.006*(i-1),s=o*(e.mv/100);e.influenceForecast(o),e.influenceForecastForecast(s)}function c(e,t,a){if(!(e instanceof n.a))return 0;const o=t===r.a.Long,s=a-i.a.StockMarketCommission,l=o?e.getAskPrice():e.getBidPrice();return Math.floor(s/l)}},function(e,t,a){"use strict";a.d(t,"b",(function(){return c})),a.d(t,"a",(function(){return u}));var n=a(5),r=a(23),i=a(8),o=a(163),s=a(298);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(){return{hack:0,str:0,def:0,dex:0,agi:0,cha:0,money:0}}class u{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(e){for(const t in e.mults)null==this[t]?console.warn("Augmentation has unrecognized multiplier property: "+t):this[t]*=e.mults[t]}calculateStat(e,t=1){return Object(o.b)(e,t)}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*n.a.HackingLevelMultiplier))),this.strength=Math.max(1,Math.floor(this.calculateStat(this.strength_exp,this.strength_mult*n.a.StrengthLevelMultiplier))),this.defense=Math.max(1,Math.floor(this.calculateStat(this.defense_exp,this.defense_mult*n.a.DefenseLevelMultiplier))),this.dexterity=Math.max(1,Math.floor(this.calculateStat(this.dexterity_exp,this.dexterity_mult*n.a.DexterityLevelMultiplier))),this.agility=Math.max(1,Math.floor(this.calculateStat(this.agility_exp,this.agility_mult*n.a.AgilityLevelMultiplier))),this.charisma=Math.max(1,Math.floor(this.calculateStat(this.charisma_exp,this.charisma_mult*n.a.CharismaLevelMultiplier)));const e=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*e)}getIntelligenceBonus(e){return Object(s.a)(this.intelligence,e)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(311),r=a(261),i=a(28),o=a(1),s=a(0),l=a.n(s);function c({checked:e,onChange:t,text:a,tooltip:c}){const[u,m]=Object(s.useState)(e);return Object(s.useEffect)(()=>t(u),[u]),l.a.createElement(n.a,{control:l.a.createElement(r.a,{checked:u,onChange:function(e){m(e.target.checked)}}),label:l.a.createElement(i.a,{title:l.a.createElement(o.a,null,c)},l.a.createElement(o.a,null,a))})}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return l}));var n=a(0),r=a.n(n),i=a(5);class o{constructor(e,t,a,n="",i=r.a.createElement(r.a.Fragment,null)){this.number=e,this.difficulty=t,this.name=a,this.desc=n,this.info=i}}const s={};function l(e){null==e.bitNodeN&&(e.bitNodeN=1);for(const e in i.a)i.a.hasOwnProperty(e)&&(i.a[e]=1);switch(i.a.StaneksGiftExtraSize=0,e.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;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;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;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.FactionPassiveRepGain=0,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;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.FactionPassiveRepGain=0,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;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;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;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;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;break;case 12:{let t=0;for(let a=0;a<e.sourceFiles.length;a++)12===e.sourceFiles[a].n&&(t=e.sourceFiles[a].lvl);const a=Math.pow(1.02,t),n=1/a;i.a.DaedalusAugsRequirement=Math.min(a,1.34),i.a.HackingLevelMultiplier=n,i.a.StrengthLevelMultiplier=n,i.a.DefenseLevelMultiplier=n,i.a.DexterityLevelMultiplier=n,i.a.AgilityLevelMultiplier=n,i.a.CharismaLevelMultiplier=n,i.a.ServerMaxMoney=n,i.a.ServerStartingMoney=n,i.a.ServerGrowthRate=n,i.a.ServerWeakenRate=n,i.a.ServerStartingSecurity=1.5,i.a.HomeComputerRamCost=a,i.a.PurchasedServerCost=a,i.a.PurchasedServerLimit=n,i.a.PurchasedServerMaxRam=n,i.a.PurchasedServerSoftcap=a,i.a.ManualHackMoney=n,i.a.ScriptHackMoney=n,i.a.CompanyWorkMoney=n,i.a.CrimeMoney=n,i.a.HacknetNodeMoney=n,i.a.CodingContractMoney=n,i.a.CompanyWorkExpGain=n,i.a.ClassGymExpGain=n,i.a.FactionWorkExpGain=n,i.a.HackExpGain=n,i.a.CrimeExpGain=n,i.a.FactionWorkRepGain=n,i.a.FactionPassiveRepGain=n,i.a.RepToDonateToFaction=a,i.a.AugmentationRepCost=a,i.a.AugmentationMoneyCost=a,i.a.InfiltrationMoney=n,i.a.InfiltrationRep=n,i.a.FourSigmaMarketDataCost=a,i.a.FourSigmaMarketDataApiCost=a,i.a.CorporationValuation=n,i.a.BladeburnerRank=n,i.a.BladeburnerSkillCost=a,i.a.StaneksGiftPowerMultiplier=a,i.a.StaneksGiftExtraSize=a,i.a.GangSoftcap=.8,i.a.CorporationSoftCap=.8,i.a.WorldDaemonDifficulty=a;break}case 13:i.a.PurchasedServerSoftcap=1.6,i.a.HackingLevelMultiplier=.25,i.a.StrengthLevelMultiplier=.7,i.a.DefenseLevelMultiplier=.7,i.a.DexterityLevelMultiplier=.7,i.a.AgilityLevelMultiplier=.7,i.a.ServerMaxMoney=.45,i.a.ServerStartingMoney=.75,i.a.ServerStartingSecurity=3,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.4,i.a.CrimeMoney=.4,i.a.HacknetNodeMoney=.4,i.a.CodingContractMoney=.4,i.a.CompanyWorkExpGain=.5,i.a.ClassGymExpGain=.5,i.a.FactionWorkExpGain=.5,i.a.HackExpGain=.1,i.a.CrimeExpGain=.5,i.a.FactionWorkRepGain=.6,i.a.FourSigmaMarketDataCost=10,i.a.FourSigmaMarketDataApiCost=10,i.a.CorporationValuation=.001,i.a.BladeburnerRank=.45,i.a.BladeburnerSkillCost=2,i.a.StaneksGiftPowerMultiplier=2,i.a.StaneksGiftExtraSize=1,i.a.GangSoftcap=.3,i.a.CorporationSoftCap=.3,i.a.WorldDaemonDifficulty=3;break;default:console.warn("Player.bitNodeN invalid")}}s.BitNode1=new o(1,0,"Source Genesis","The original BitNode",r.a.createElement(r.a.Fragment,null,"The first BitNode created by the Enders to imprison the minds of humans. It became the prototype and testing-grounds for all of the BitNodes that followed.",r.a.createElement("br",null),r.a.createElement("br",null),"This is the first BitNode that you play through. It has no special modifications or mechanics.",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 1, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the player start with 32GB of RAM on his/her home computer when entering a new BitNode, and 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%")),s.BitNode2=new o(2,0,"Rise of the Underworld","From the shadows, they rose",r.a.createElement(r.a.Fragment,null,"From the shadows, they rose.",r.a.createElement("br",null),r.a.createElement("br",null),"Organized crime groups quickly filled the void of power left behind from the collapse of Western government in the 2050s. As society and civilization broke down, people quickly succumbed to the innate human impulse of evil and savagery. The organized crime factions quickly rose to the top of the modern world.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"Your hacking level is reduced by 20%",r.a.createElement("br",null),"The growth rate and maximum amount of money available on servers are significantly decreased",r.a.createElement("br",null),"The amount of money gained from crimes and Infiltration is tripled",r.a.createElement("br",null),"Certain Factions (Slum Snakes, Tetrads, The Syndicate, The Dark Army, Speakers for the Dead, NiteSec, The Black Hand) give the player the ability to form and manage their own gangs. These gangs will earn the player money and reputation with the corresponding Faction",r.a.createElement("br",null),"Every Augmentation in the game will be available through the Factions listed above",r.a.createElement("br",null),"For every Faction NOT listed above, reputation gains are halved",r.a.createElement("br",null),"You will no longer gain passive reputation with Factions",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 2, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode3=new o(3,0,"Corporatocracy","The Price of Civilization",r.a.createElement(r.a.Fragment,null,"Our greatest illusion is that a healthy society can revolve around a single-minded pursuit of wealth.",r.a.createElement("br",null),r.a.createElement("br",null),"Sometime in the early 21st century economic and political globalization turned the world into a corporatocracy, and it never looked back. Now, the privileged elite will happily bankrupt their own countrymen, decimate their own community, and evict their neighbors from houses in their desperate bid to increase their wealth.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode you can create and manage your own corporation. Running a successful corporation has the potential of generating massive profits. All other forms of income are reduced by 75%. Furthermore: ",r.a.createElement("br",null),r.a.createElement("br",null),"The price and reputation cost of all Augmentations is tripled",r.a.createElement("br",null),"The starting and maximum amount of money on servers is reduced by 75%",r.a.createElement("br",null),"Server growth rate is reduced by 80%",r.a.createElement("br",null),"You now only need 75 favour with a faction in order to donate to it, rather than 150",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode4=new o(4,1,"The Singularity","The Man and the Machine",r.a.createElement(r.a.Fragment,null,"The Singularity has arrived. The human race is gone, replaced by artificially superintelligent beings that are more machine than man. ",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode, progressing is significantly harder. Experience gain rates for all stats are reduced. Most methods of earning money will now give significantly less.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions. These functions allow you to control most aspects of the game through scripts, including working for factions/companies, purchasing/installing Augmentations, and creating programs.",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 4, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets you access and use the Singularity Functions in other BitNodes. Each level of this Source-File reduces the RAM cost of singularity functions.")),s.BitNode5=new o(5,1,"Artificial Intelligence","Posthuman",r.a.createElement(r.a.Fragment,null,"They said it couldn't be done. They said the human brain, along with its consciousness and intelligence, couldn't be replicated. They said the complexity of the brain results from unpredictable, nonlinear interactions that couldn't be modeled by 1's and 0's. They were wrong.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"The base security level of servers is doubled",r.a.createElement("br",null),"The starting money on servers is halved, but the maximum money remains the same",r.a.createElement("br",null),"Most methods of earning money now give significantly less",r.a.createElement("br",null),"Infiltration gives 50% more reputation and money",r.a.createElement("br",null),"Corporations have 50% lower valuations and are therefore less profitable",r.a.createElement("br",null),"Augmentations are more expensive",r.a.createElement("br",null),"Hacking experience gain rates are reduced",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 5, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File grants you 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, and it is also hidden (you won't know when you gain experience and how much). Higher Intelligence levels will boost your production for many actions in the game. ",r.a.createElement("br",null),r.a.createElement("br",null),"In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function and let you start with Formulas.exe, and will also 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%")),s.BitNode6=new o(6,1,"Bladeburners","Like Tears in Rain",r.a.createElement(r.a.Fragment,null,"In the middle of the 21st century, OmniTek Incorporated began designing and manufacturing advanced synthetic androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode you will be able to access the Bladeburner Division at the NSA, which provides a new mechanic for progression. Furthermore:",r.a.createElement("br",null),r.a.createElement("br",null),"Hacking and Hacknet Nodes will be less profitable",r.a.createElement("br",null),"Your hacking level is reduced by 65%",r.a.createElement("br",null),"Hacking experience gain from scripts is reduced by 75%",r.a.createElement("br",null),"Corporations have 80% lower valuations and are therefore less profitable",r.a.createElement("br",null),"Working for companies is 50% less profitable",r.a.createElement("br",null),"Crimes and Infiltration are 25% less profitable",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode7=new o(7,2,"Bladeburners 2079","More human than humans",r.a.createElement(r.a.Fragment,null,"In the middle of the 21st century, you were doing cutting-edge work at OmniTek Incorporated as part of the AI design team for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent than the humans that had created them.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode you will be able to access the Bladeburner API, which allows you to access Bladeburner functionality through Netscript. Furthermore: ",r.a.createElement("br",null),r.a.createElement("br",null),"The rank you gain from Bladeburner contracts/operations is reduced by 40%",r.a.createElement("br",null),"Bladeburner skills cost twice as many skill points",r.a.createElement("br",null),"Augmentations are 3x more expensive",r.a.createElement("br",null),"Hacking and Hacknet Nodes will be significantly less profitable",r.a.createElement("br",null),"Your hacking level is reduced by 65%",r.a.createElement("br",null),"Hacking experience gain from scripts is reduced by 75%",r.a.createElement("br",null),"Corporations have 80% lower valuations and are therefore less profitable",r.a.createElement("br",null),"Working for companies is 50% less profitable",r.a.createElement("br",null),"Crimes and Infiltration are 25% less profitable",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 7, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode8=new o(8,2,"Ghost of Wall Street","Money never sleeps",r.a.createElement(r.a.Fragment,null,"You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"You start with $250 million",r.a.createElement("br",null),"The only way to earn money is by trading on the stock market",r.a.createElement("br",null),"You start with a WSE membership and access to the TIX API",r.a.createElement("br",null),"You are able to short stocks and place different types of orders (limit/stop)",r.a.createElement("br",null),"You can immediately donate to factions to gain reputation",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 8, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode9=new o(9,2,"Hacktocracy","Hacknet Unleashed",r.a.createElement(r.a.Fragment,null,"When Fulcrum Technologies released their open-source Linux distro Chapeau, it quickly became the OS of choice for the underground hacking community. Chapeau became especially notorious for powering the Hacknet, a global, decentralized network used for nefarious purposes. Fulcrum quickly abandoned the project and dissociated themselves from it.",r.a.createElement("br",null),r.a.createElement("br",null),"This BitNode unlocks the Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers generate hashes, which can be spent on a variety of different upgrades.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"Your stats are significantly decreased",r.a.createElement("br",null),"You cannnot purchase additional servers",r.a.createElement("br",null),"Hacking is significantly less profitable",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 9, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode10=new o(10,2,"Digital Carbon","Your body is not who you are",r.a.createElement(r.a.Fragment,null,"In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people to digitize their consciousness. Their consciousness could then be transferred into Synthoids or other bodies by trasmitting the digitized data. Human bodies became nothing more than 'sleeves' for the human consciousness. Mankind had finally achieved immortality - at least for those that could afford it.",r.a.createElement("br",null),r.a.createElement("br",null),"This BitNode unlocks Sleeve technology. Sleeve technology allows you to:",r.a.createElement("br",null),r.a.createElement("br",null),"1. Re-sleeve: Purchase and transfer your consciousness into a new body",r.a.createElement("br",null),"2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"Your stats are significantly decreased",r.a.createElement("br",null),"All methods of gaining money are half as profitable (except Stock Market)",r.a.createElement("br",null),"Purchased servers are more expensive, have less max RAM, and a lower maximum limit",r.a.createElement("br",null),"Augmentations are 5x as expensive and require twice as much reputation",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 10, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File unlocks Sleeve technology in other BitNodes. Each level of this Source-File also grants you a Duplicate Sleeve")),s.BitNode11=new o(11,1,"The Big Crash","Okay. Sell it all.",r.a.createElement(r.a.Fragment,null,"The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period of disorder that eventually lead to the governmental reformation of many global superpowers, most notably the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophe hit.",r.a.createElement("br",null),r.a.createElement("br",null),"In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.",r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"Your hacking stat and experience gain are halved",r.a.createElement("br",null),"The starting and maximum amount of money available on servers is significantly decreased",r.a.createElement("br",null),"The growth rate of servers is significantly reduced",r.a.createElement("br",null),"Weakening a server is twice as effective",r.a.createElement("br",null),"Company wages are decreased by 50%",r.a.createElement("br",null),"Corporation valuations are 90% lower and are therefore significantly less profitable",r.a.createElement("br",null),"Hacknet Node production is significantly decreased",r.a.createElement("br",null),"Crime and Infiltration are more lucrative",r.a.createElement("br",null),"Augmentations are twice as expensive",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will upgrade its level up to a maximum of 3. 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%")),s.BitNode12=new o(12,0,"The Recursion","Repeat.",r.a.createElement(r.a.Fragment,null,"To iterate is human, to recurse divine.",r.a.createElement("br",null),r.a.createElement("br",null),"Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give you Source-File 12, or if you already have this Source-File it will upgrade its level. There is no maximum level for Source-File 12. Each level of Source-File 12 lets you start any BitNodes with NeuroFlux Governor equal to the level of this source file.")),s.BitNode13=new o(13,2,"They're lunatics","1 step back, 2 steps forward",r.a.createElement(r.a.Fragment,null,"With the invention of Augmentations in the 2040s a religious group known as the Church of the Machine God has rallied far more support than anyone would have hoped.",r.a.createElement("br",null),r.a.createElement("br",null),'Their leader, Allison "Mother" Stanek is said to have created her own Augmentation whose power goes beyond any other. Find her in Chongqing and gain her trust.',r.a.createElement("br",null),r.a.createElement("br",null),"In this BitNode:",r.a.createElement("br",null),r.a.createElement("br",null),"Every stat is significantly reduced",r.a.createElement("br",null),"Stanek's Gift power is significantly increased.",r.a.createElement("br",null),r.a.createElement("br",null),"Destroying this BitNode will give you Source-File 13, or if you already have this Source-File it will upgrade its level up to a maximum of 3. This Source-File lets the Church of the Machine God appear in other BitNodes.",r.a.createElement("br",null),r.a.createElement("br",null),"Each level of this Source-File increases the size of Stanek's Gift.")),s.BitNode14=new o(14,2,"","COMING SOON"),s.BitNode15=new o(15,2,"","COMING SOON"),s.BitNode16=new o(16,2,"","COMING SOON"),s.BitNode17=new o(17,2,"","COMING SOON"),s.BitNode18=new o(18,2,"","COMING SOON"),s.BitNode19=new o(19,2,"","COMING SOON"),s.BitNode20=new o(20,2,"","COMING SOON"),s.BitNode21=new o(21,2,"","COMING SOON"),s.BitNode22=new o(22,2,"","COMING SOON"),s.BitNode23=new o(23,2,"","COMING SOON"),s.BitNode24=new o(24,2,"","COMING SOON")},function(e,t,a){"use strict";a.d(t,"c",(function(){return u})),a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return h}));var n=a(8),r=a(2),i=a(44),o=a(123),s=a(24),l=a(4),c=a(297);function u(e){const t=((new Date).getTime()-r.a.lastUpdate)/1e3;let a=e.onlineRunningTime/14400;a>=1&&(a=1);for(const a in e.dataMap)if(e.dataMap.hasOwnProperty(a)){if(0==e.dataMap[a][2]||null==e.dataMap[a][2])continue;const n=Object(s.d)(a);if(null==n)continue;const c=Math.round(.5*e.dataMap[a][2]/e.onlineRunningTime*t);e.log(`Called on ${n.hostname} ${c} times while offline`);const u=Object(s.d)(e.server);if(null===u)throw new Error("getServer of null key?");if(!(n instanceof i.a))throw new Error("trying to grow a non-normal server");const m=Object(o.e)(n,c,r.a,u.cpuCores);e.log(`'${n.hostname}' grown by ${l.a.format(100*m-100,"0.000000%")} while offline`)}const c=a*(e.onlineExpGained/e.onlineRunningTime)*t;r.a.gainHackingExp(c),e.offlineRunningTime+=t,e.offlineExpGained+=c;for(const a in e.dataMap)if(e.dataMap.hasOwnProperty(a)){if(0==e.dataMap[a][3]||null==e.dataMap[a][3])continue;const r=Object(s.d)(a);if(null==r)continue;if(!(r instanceof i.a))throw new Error("trying to weaken a non-normal server");const o=Object(s.d)(e.server);if(null===o)throw new Error("getServer of null key?");const l=Math.round(.5*e.dataMap[a][3]/e.onlineRunningTime*t);e.log(`Called weaken() on ${r.hostname} ${l} times while offline`);const c=1+(o.cpuCores-1)/16;r.weaken(n.a.ServerWeakenAmount*l*c)}}function m(e,t,a){for(let n=0;n<a.runningScripts.length;++n)if(a.runningScripts[n].filename===e&&Object(c.a)(a.runningScripts[n].args,t))return a.runningScripts[n];return null}function h(e,t){for(let a=0;a<t.runningScripts.length;++a)if(t.runningScripts[a].pid===e)return t.runningScripts[a];return null}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(4),i=a(111),o=a(134);const s=Object(i.a)(e=>Object(o.a)({money:{color:e.colors.money}}));function l({hashes:e}){const t=s();return n.createElement("span",{className:t.money},"number"==typeof e?r.a.formatHashes(e):e)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return I}));var n=a(21),r=a(246),i=a(38),o=a(487),s=a(256),l=a(128),c=a(323),u=a(587),m=a(244),h=a(22),d=a(210),p=a(237),f=a(392),g=a(27),y=a(588),b=a(254),E=a(32),k=a(58),v=a(4),_=a(5),w=a(280),S=a(193),C=a(26),x=a(370),O=a(15),M=a(11),T=a(20),R=a(6),A=a(813),N=a(120);function P(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class I{constructor(e){P(this,"numHosp",0),P(this,"moneyLost",0),P(this,"rank",0),P(this,"maxRank",0),P(this,"skillPoints",0),P(this,"totalSkillPoints",0),P(this,"teamSize",0),P(this,"teamLost",0),P(this,"hpLost",0),P(this,"storedCycles",0),P(this,"randomEventCounter",Object(E.a)(240,600)),P(this,"actionTimeToComplete",0),P(this,"actionTimeCurrent",0),P(this,"actionTimeOverflow",0),P(this,"action",new r.a({type:i.a.Idle})),P(this,"cities",{}),P(this,"city",k.a.CityNames[2]),P(this,"skills",{}),P(this,"skillMultipliers",{}),P(this,"staminaBonus",0),P(this,"maxStamina",0),P(this,"stamina",0),P(this,"contracts",{}),P(this,"operations",{}),P(this,"blackops",{}),P(this,"logging",{general:!0,contracts:!0,ops:!0,blackops:!0,events:!0}),P(this,"automateEnabled",!1),P(this,"automateActionHigh",new r.a({type:i.a.Idle})),P(this,"automateThreshHigh",0),P(this,"automateActionLow",new r.a({type:i.a.Idle})),P(this,"automateThreshLow",0),P(this,"consoleHistory",[]),P(this,"consoleLogs",["Bladeburner Console","Type 'help' to see console commands"]);for(let e=0;e<k.a.CityNames.length;++e)this.cities[k.a.CityNames[e]]=new f.a(k.a.CityNames[e]);this.updateSkillMultipliers(),e&&this.calculateMaxStamina(e),this.stamina=this.maxStamina,this.create()}getCurrentCity(){const e=this.cities[this.city];if(!(e instanceof f.a))throw new Error("Bladeburner.getCurrentCity() did not properly return a City object");return e}calculateStaminaPenalty(){return Math.min(1,this.stamina/(.5*this.maxStamina))}canAttemptBlackOp(e){if(null!=this.blackops[e.name])return{error:"Tried to start a Black Operation that had already been completed"};const t=this.getActionObject(e);if(!(t instanceof l.a))throw new Error("Action should be BlackOperation but isn't");if(null==t)throw new Error("Failed to get BlackOperation object for: "+e.name);if(t.reqdRank>this.rank)return{error:"Tried to start a Black Operation without the rank requirement"};const a=[];for(const e in s.a)s.a.hasOwnProperty(e)&&a.push(e);a.sort((function(e,t){return s.a[e].reqdRank-s.a[t].reqdRank}));const n=a.indexOf(e.name);return-1===n?{error:`Invalid Black Op: '${name}'`}:n>0&&null==this.blackops[a[n-1]]?{error:`Preceding Black Op must be completed before starting '${e.name}'.`}:{isAvailable:!0,action:t}}startAction(e,t){if(null!=t)switch(this.action=t,this.actionTimeCurrent=0,t.type){case i.a.Idle:this.actionTimeToComplete=0;break;case i.a.Contract:try{const e=this.getActionObject(t);if(null==e)throw new Error("Failed to get Contract Object for: "+t.name);if(e.count<1)return this.resetAction();this.actionTimeToComplete=e.getActionTime(this)}catch(e){Object(b.a)(e)}break;case i.a.Operation:try{const e=this.getActionObject(t);if(null==e)throw new Error("Failed to get Operation Object for: "+t.name);if(e.count<1)return this.resetAction();if("Raid"===t.name&&0===this.getCurrentCity().comms)return this.resetAction();this.actionTimeToComplete=e.getActionTime(this)}catch(e){Object(b.a)(e)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const e=this.canAttemptBlackOp(t);if(!e.isAvailable){this.resetAction(),this.log("Error: "+e.error);break}if(void 0===e.action)throw new Error("action should not be null");this.actionTimeToComplete=e.action.getActionTime(this)}catch(e){Object(b.a)(e)}break;case i.a.Recruitment:this.actionTimeToComplete=this.getRecruitmentTime(e);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, ): "+t.type)}}upgradeSkill(e){const t=e.name;if(this.skills[t]?++this.skills[t]:this.skills[t]=1,isNaN(this.skills[t])||this.skills[t]<0)throw new Error("Level of Skill "+t+" is invalid: "+this.skills[t]);this.updateSkillMultipliers()}executeConsoleCommands(e,t){try{this.consoleHistory[this.consoleHistory.length-1]!=t&&(this.consoleHistory.push(t),this.consoleHistory.length>50&&this.consoleHistory.splice(0,1));const a=t.split(";");for(let t=0;t<a.length;++t)this.executeConsoleCommand(e,a[t])}catch(e){Object(b.a)(e)}}postToConsole(e,t=!0){t&&(this.consoleLogs.push(e),this.consoleLogs.length>100&&this.consoleLogs.shift())}log(e){this.postToConsole(`[${Object(A.a)()}] ${e}`)}resetAction(){this.action=new r.a({type:i.a.Idle})}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const e=C.a.Bladeburners;this.rank>=k.a.RankNeededForFaction&&Object(N.d)(e)}storeCycles(e=0){this.storedCycles+=e}getActionIdFromTypeAndName(e="",t=""){if(""===e||""===t)return null;const a=new r.a,n=e.toLowerCase().trim(),o=t.toLowerCase().trim();switch(n){case"contract":case"contracts":case"contr":return a.type=i.a.Contract,this.contracts.hasOwnProperty(t)?(a.name=t,a):null;case"operation":case"operations":case"op":case"ops":return a.type=i.a.Operation,this.operations.hasOwnProperty(t)?(a.name=t,a):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return a.type=i.a.BlackOp,s.a.hasOwnProperty(t)?(a.name=t,a):null;case"general":case"general action":case"gen":break;default:return null}if(n.startsWith("gen")){switch(o){case"training":a.type=i.a.Training,a.name="Training";break;case"recruitment":case"recruit":a.type=i.a.Recruitment,a.name="Recruitment";break;case"field analysis":case"fieldanalysis":a.type=i.a["Field Analysis"],a.name="Field Analysis";break;case"diplomacy":a.type=i.a.Diplomacy,a.name="Diplomacy";break;case"hyperbolic regeneration chamber":a.type=i.a["Hyperbolic Regeneration Chamber"],a.name="Hyperbolic Regeneration Chamber";break;case"incite violence":a.type=i.a["Incite Violence"],a.name="Incite Violence";break;default:return null}return a}return null}executeStartConsoleCommand(e,t){if(3!==t.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const a=t[2];switch(t[1].toLowerCase()){case"general":case"gen":null!=m.a[a]?(this.action.type=i.a[a],this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid action name specified: "+t[2]);break;case"contract":case"contracts":null!=this.contracts[a]?(this.action.type=i.a.Contract,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid contract name specified: "+t[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[a]?(this.action.type=i.a.Operation,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid Operation name specified: "+t[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=s.a[a]?(this.action.type=i.a.BlackOperation,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid BlackOp name specified: "+t[2]);break;default:this.postToConsole("Invalid action/event type specified: "+t[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(e){switch(e.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"===e[1].toLowerCase()){this.postToConsole("Skills: ");const e=Object.keys(d.a);for(let t=0;t<e.length;++t){const a=d.a[e[t]];let n=0;null!=this.skills[a.name]&&(n=this.skills[a.name]),this.postToConsole(a.name+": Level "+Object(h.c)(n,0))}this.postToConsole(" "),this.postToConsole("Effects: ");const t=Object.keys(this.skillMultipliers);for(let e=0;e<t.length;++e){let a=this.skillMultipliers[t[e]];if(a&&1!==a)switch(a=Object(h.c)(a,3),t[e]){case"successChanceAll":this.postToConsole("Total Success Chance: x"+a);break;case"successChanceStealth":this.postToConsole("Stealth Success Chance: x"+a);break;case"successChanceKill":this.postToConsole("Retirement Success Chance: x"+a);break;case"successChanceContract":this.postToConsole("Contract Success Chance: x"+a);break;case"successChanceOperation":this.postToConsole("Operation Success Chance: x"+a);break;case"successChanceEstimate":this.postToConsole("Synthoid Data Estimate: x"+a);break;case"actionTime":this.postToConsole("Action Time: x"+a);break;case"effHack":this.postToConsole("Hacking Skill: x"+a);break;case"effStr":this.postToConsole("Strength: x"+a);break;case"effDef":this.postToConsole("Defense: x"+a);break;case"effDex":this.postToConsole("Dexterity: x"+a);break;case"effAgi":this.postToConsole("Agility: x"+a);break;case"effCha":this.postToConsole("Charisma: x"+a);break;case"effInt":this.postToConsole("Intelligence: x"+a);break;case"stamina":this.postToConsole("Stamina: x"+a);break;default:console.warn("Unrecognized SkillMult Key: "+t[e])}}}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 3:{const t=e[2],a=d.a[t];if(null==a||!(a instanceof p.a)){this.postToConsole("Invalid skill name (Note that it is case-sensitive): "+t);break}if("list"===e[1].toLowerCase()){let e=0;void 0!==this.skills[a.name]&&(e=this.skills[a.name]),this.postToConsole(a.name+": Level "+Object(h.c)(e))}else if("level"===e[1].toLowerCase()){let e=0;this.skills[t]&&!isNaN(this.skills[t])&&(e=this.skills[t]);const n=a.calculateCost(e);0!==a.maxLvl&&e>=a.maxLvl?this.postToConsole(`This skill ${a.name} is already at max level (${e}/${a.maxLvl}).`):this.skillPoints>=n?(this.skillPoints-=n,this.upgradeSkill(a),this.log(a.name+" upgraded to Level "+this.skills[t])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+Object(h.c)(n,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(e){if(e.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 t=!0;switch(e[1].toLowerCase().includes("d")&&(t=!1),e[2].toLowerCase()){case"general":case"gen":this.logging.general=t,this.log("Logging "+(t?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=t,this.log("Logging "+(t?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=t,this.log("Logging "+(t?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=t,this.log("Logging "+(t?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for events");break;case"all":this.logging.general=t,this.logging.contracts=t,this.logging.ops=t,this.logging.blackops=t,this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+e[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(e){if(1===e.length)for(const e of y.a.helpList)this.postToConsole(e);else for(let t=1;t<e.length;++t){if(!(e[t]in y.a))continue;const a=y.a[e[t]];for(const e of a)this.postToConsole(e)}}executeAutomateConsoleCommand(e){if(2===e.length||4===e.length)if(2!==e.length)if(4!==e.length);else{const t=e[1],a=e[2];let n=!1;switch(e[3].toLowerCase().includes("hi")&&(n=!0),t){case"general":case"gen":if(null!=m.a[a]){const e=new r.a({type:i.a[a],name:a});n?this.automateActionHigh=e:this.automateActionLow=e,this.log("Automate ("+(n?"HIGH":"LOW")+") action set to "+a)}else this.postToConsole("Invalid action name specified: "+a);break;case"contract":case"contracts":if(null!=this.contracts[a]){const e=new r.a({type:i.a.Contract,name:a});n?this.automateActionHigh=e:this.automateActionLow=e,this.log("Automate ("+(n?"HIGH":"LOW")+") action set to "+a)}else this.postToConsole("Invalid contract name specified: "+a);break;case"ops":case"op":case"operations":case"operation":if(null!=this.operations[a]){const e=new r.a({type:i.a.Operation,name:a});n?this.automateActionHigh=e:this.automateActionLow=e,this.log("Automate ("+(n?"HIGH":"LOW")+") action set to "+a)}else this.postToConsole("Invalid Operation name specified: "+a);break;case"stamina":isNaN(parseFloat(a))?this.postToConsole("Invalid value specified for stamina threshold (must be numeric): "+a):(n?this.automateThreshHigh=Number(a):this.automateThreshLow=Number(a),this.log("Automate ("+(n?"HIGH":"LOW")+") stamina threshold set to "+a))}}else{const t=e[1];if("status"===t.toLowerCase())this.postToConsole("Automation: "+(this.automateEnabled?"enabled":"disabled")),this.postToConsole("When your stamina drops to "+Object(h.c)(this.automateThreshLow,0)+", you will automatically switch to "+this.automateActionLow.name+". When your stamina recovers to "+Object(h.c)(this.automateThreshHigh,0)+", you will automatically switch to "+this.automateActionHigh.name+".");else if(t.toLowerCase().includes("en")){if(!(this.automateActionLow instanceof r.a&&this.automateActionHigh instanceof r.a))return this.log("Failed to enable automation. Actions were not set");this.automateEnabled=!0,this.log("Bladeburner automation enabled")}else t.toLowerCase().includes("d")?(this.automateEnabled=!1,this.log("Bladeburner automation disabled")):this.log("Invalid argument for 'automate' console command: "+e[1])}else this.postToConsole("Invalid use of 'automate' command: automate [var] [val] [hi/low]. Use 'help automate' for more info")}parseCommandArguments(e){const t=[];let a=0,n=0;for(;n<e.length;){const r=e.charAt(n);if('"'===r){const r=e.indexOf('"',n+1);if(-1!==r&&(r===e.length-1||" "===e.charAt(r+1))){t.push(e.substr(n+1,r-n-1)),a=n=r===e.length-1?r+1:r+2;continue}}else if("'"===r){const r=e.indexOf("'",n+1);if(-1!==r&&(r===e.length-1||" "===e.charAt(r+1))){t.push(e.substr(n+1,r-n-1)),a=n=r===e.length-1?r+1:r+2;continue}}else" "===r&&(t.push(e.substr(a,n-a)),a=n+1);++n}return a!==n&&t.push(e.substr(a,n-a)),t}executeConsoleCommand(e,t){t=(t=t.trim()).replace(/\s\s+/g," ");const a=this.parseCommandArguments(t);if(!(a.length<=0))switch(a[0].toLowerCase()){case"automate":this.executeAutomateConsoleCommand(a);break;case"clear":case"cls":this.clearConsole();break;case"help":this.executeHelpConsoleCommand(a);break;case"log":this.executeLogConsoleCommand(a);break;case"skill":this.executeSkillConsoleCommand(a);break;case"start":this.executeStartConsoleCommand(e,a);break;case"stop":this.resetAction();break;default:this.postToConsole("Invalid console command")}}triggerMigration(e){let t=k.a.CityNames[Object(E.a)(0,5)];for(;t===e;)t=k.a.CityNames[Object(E.a)(0,5)];const a=this.cities[t],n=this.cities[e];if(null==a||null==n)throw new Error("Failed to find City with name: "+t);const r=Math.random();let i=Object(E.a)(3,15)/100;r<.05&&n.comms>0&&(i*=Object(E.a)(2,4),--n.comms,++a.comms);const o=Math.round(n.pop*i);n.pop-=o,a.pop+=o}triggerPotentialMigration(e,t){(null==t||isNaN(t))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),t>1&&(t/=100),Math.random()<t&&this.triggerMigration(e)}randomEvent(){const e=Math.random(),t=k.a.CityNames[Object(E.a)(0,5)],a=this.cities[t];if(!(a instanceof f.a))throw new Error("sourceCity was not a City object in Bladeburner.randomEvent()");let n=k.a.CityNames[Object(E.a)(0,5)];for(;n===t;)n=k.a.CityNames[Object(E.a)(0,5)];const r=this.cities[n];if(!(a instanceof f.a&&r instanceof f.a))throw new Error("sourceCity/destCity was not a City object in Bladeburner.randomEvent()");if(e<=.05){++a.comms;const e=Object(E.a)(10,20)/100,t=Math.round(a.pop*e);a.pop+=t,this.logging.events&&this.log("Intelligence indicates that a new Synthoid community was formed in a city")}else if(e<=.1)if(a.comms<=0){++a.comms;const e=Object(E.a)(10,20)/100,t=Math.round(a.pop*e);a.pop+=t,this.logging.events&&this.log("Intelligence indicates that a new Synthoid community was formed in a city")}else{--a.comms,++r.comms;const e=Object(E.a)(10,20)/100,n=Math.round(a.pop*e);a.pop-=n,r.pop+=n,this.logging.events&&this.log("Intelligence indicates that a Synthoid community migrated from "+t+" to some other city")}else if(e<=.3){const e=Object(E.a)(8,24)/100,n=Math.round(a.pop*e);a.pop+=n,this.logging.events&&this.log("Intelligence indicates that the Synthoid population of "+t+" just changed significantly")}else if(e<=.5)this.triggerMigration(t),this.logging.events&&this.log("Intelligence indicates that a large number of Synthoids migrated from "+t+" to some other city");else if(e<=.7)a.chaos+=1,a.chaos*=1+Object(E.a)(5,20)/100,this.logging.events&&this.log("Tensions between Synthoids and humans lead to riots in "+t+"! Chaos increased");else if(e<=.9){const e=Object(E.a)(8,20)/100,n=Math.round(a.pop*e);a.pop-=n,this.logging.events&&this.log("Intelligence indicates that the Synthoid population of "+t+" just changed significantly")}}gainActionStats(e,t,a){const n=t.getDifficulty(),r=Math.pow(n,k.a.DiffMultExponentialFactor)+n/k.a.DiffMultLinearFactor,i=this.actionTimeToComplete,o=a?1:.5,s=i*k.a.BaseStatGain*o*r,l=i*k.a.BaseIntGain*o*r,c=this.skillMultipliers.expGain;e.gainHackingExp(s*t.weights.hack*e.hacking_exp_mult*c),e.gainStrengthExp(s*t.weights.str*e.strength_exp_mult*c),e.gainDefenseExp(s*t.weights.def*e.defense_exp_mult*c),e.gainDexterityExp(s*t.weights.dex*e.dexterity_exp_mult*c),e.gainAgilityExp(s*t.weights.agi*e.agility_exp_mult*c),e.gainCharismaExp(s*t.weights.cha*e.charisma_exp_mult*c),e.gainIntelligenceExp(l*t.weights.int*c)}getDiplomacyEffectiveness(e){return(100-(Math.pow(e.charisma,.045)+e.charisma/1e3))/100}getRecruitmentSuccessChance(e){return Math.pow(e.charisma,.45)/(this.teamSize+1)}getRecruitmentTime(e){const t=e.charisma*this.skillMultipliers.effCha,a=Math.pow(t,.81)+t/90;return Math.max(10,Math.round(k.a.BaseRecruitmentTimeNeeded-a))}resetSkillMultipliers(){this.skillMultipliers={successChanceAll:1,successChanceStealth:1,successChanceKill:1,successChanceContract:1,successChanceOperation:1,successChanceEstimate:1,actionTime:1,effHack:1,effStr:1,effDef:1,effDex:1,effAgi:1,effCha:1,effInt:1,stamina:1,money:1,expGain:1}}updateSkillMultipliers(){this.resetSkillMultipliers();for(const e in this.skills)if(this.skills.hasOwnProperty(e)){const t=d.a[e];if(null==t)throw new Error("Could not find Skill Object for: "+e);const a=this.skills[e];if(null==a||a<=0)continue;const n=Object.keys(this.skillMultipliers);for(let e=0;e<n.length;++e){const r=n[e];if(null!=t.getMultiplier(r)&&!isNaN(t.getMultiplier(r))){const e=t.getMultiplier(r)*a;let n=1+e/100;"actionTime"===r&&(n=1-e/100),this.skillMultipliers[r]*=n}}}}completeOperation(e){if(this.action.type!==i.a.Operation)throw new Error("completeOperation() called even though current action is not an Operation");const t=this.getActionObject(this.action);if(null==t)throw new Error("Failed to get Contract/Operation Object for: "+this.action.name);const a=t.teamCount;if(a>=1){let n;n=e?Math.ceil(a/2):Math.floor(a);const r=Object(E.a)(0,n);this.teamSize-=r,this.teamLost+=r,this.logging.ops&&r>0&&this.log("Lost "+Object(h.c)(r,0)+" team members during this "+t.name)}const n=this.getCurrentCity();switch(t.name){case"Investigation":e?n.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":e?n.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":e&&n.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),n.changeChaosByCount(.1);break;case"Raid":if(e)n.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--n.comms;else{const e=Object(E.a)(-10,-5)/10;n.changePopulationByPercentage(e,{nonZero:!0,changeEstEqually:!1})}n.changeChaosByPercentage(Object(E.a)(1,5));break;case"Stealth Retirement Operation":e&&n.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),n.changeChaosByPercentage(Object(E.a)(-3,-1));break;case"Assassination":e&&n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByPercentage(Object(E.a)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(e){switch(e.type){case i.a.Contract:return this.contracts[e.name];case i.a.Operation:return this.operations[e.name];case i.a.BlackOp:case i.a.BlackOperation:return s.a[e.name];case i.a.Training:return m.a.Training;case i.a["Field Analysis"]:return m.a["Field Analysis"];case i.a.Recruitment:return m.a.Recruitment;case i.a.Diplomacy:return m.a.Diplomacy;case i.a["Hyperbolic Regeneration Chamber"]:return m.a["Hyperbolic Regeneration Chamber"];case i.a["Incite Violence"]:return m.a["Incite Violence"];default:return null}}completeContract(e){if(this.action.type!==i.a.Contract)throw new Error("completeContract() called even though current action is not a Contract");const t=this.getCurrentCity();if(e)switch(this.action.name){case"Tracking":t.improvePopulationEstimateByCount(Object(E.a)(100,1e3));break;case"Bounty Hunter":t.changePopulationByCount(-1,{estChange:-1,estOffset:0}),t.changeChaosByCount(.02);break;case"Retirement":t.changePopulationByCount(-1,{estChange:-1,estOffset:0}),t.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+this.action.name)}}completeAction(e,t){switch(this.action.type){case i.a.Contract:case i.a.Operation:try{const e=this.action.type===i.a.Operation,a=this.getActionObject(this.action);if(null==a)throw new Error("Failed to get Contract/Operation Object for: "+this.action.name);const n=a.getDifficulty(),r=Math.pow(n,k.a.DiffMultExponentialFactor)+n/k.a.DiffMultLinearFactor,o=Math.pow(a.rewardFac,a.level-1);if(this.stamina-=k.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0),a.attempt(this)){this.gainActionStats(t,a,!0),++a.successes,--a.count;let n=0;if(e||(n=k.a.ContractBaseMoneyGain*o*this.skillMultipliers.money,t.gainMoney(n,"bladeburner")),e?a.setMaxLevel(k.a.OperationSuccessesPerLevel):a.setMaxLevel(k.a.ContractSuccessesPerLevel),a.rankGain){const r=Object(w.a)(a.rankGain*o*_.a.BladeburnerRank,10);this.changeRank(t,r),e&&this.logging.ops?this.log(a.name+" successfully completed! Gained "+Object(h.c)(r,3)+" rank"):!e&&this.logging.contracts&&this.log(a.name+" contract successfully completed! Gained "+Object(h.c)(r,3)+" rank and "+v.a.formatMoney(n))}e?this.completeOperation(!0):this.completeContract(!0)}else{this.gainActionStats(t,a,!1),++a.failures;let n=0,i=0;if(a.rankLoss&&(n=Object(w.a)(a.rankLoss*o,10),this.changeRank(t,-1*n)),a.hpLoss){i=a.hpLoss*r,i=Math.ceil(Object(w.a)(i,10)),this.hpLost+=i;const e=Object(x.a)(t,i);t.takeDamage(i)&&(++this.numHosp,this.moneyLost+=e)}let s="";n>0&&(s+="Lost "+Object(h.c)(n,3)+" rank. "),i>0&&(s+="Took "+Object(h.c)(i,0)+" damage."),e&&this.logging.ops?this.log(a.name+" failed! "+s):!e&&this.logging.contracts&&this.log(a.name+" contract failed! "+s),e?this.completeOperation(!1):this.completeContract(!1)}a.autoLevel&&(a.level=a.maxLevel),this.startAction(t,this.action)}catch(e){Object(b.a)(e)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const a=this.getActionObject(this.action);if(null==a||!(a instanceof l.a))throw new Error("Failed to get BlackOperation Object for: "+this.action.name);const n=a.getDifficulty(),r=Math.pow(n,k.a.DiffMultExponentialFactor)+n/k.a.DiffMultLinearFactor;this.stamina-=k.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0);const i=a.teamCount;let o;if(a.attempt(this)){this.gainActionStats(t,a,!0),a.count=0,this.blackops[a.name]=!0;let n=0;if(a.rankGain&&(n=Object(w.a)(a.rankGain*_.a.BladeburnerRank,10),this.changeRank(t,n)),o=Math.ceil(i/2),"Operation Daedalus"===a.name)return this.resetAction(),e.toBitVerse(!1,!1);this.logging.blackops&&this.log(a.name+" successful! Gained "+Object(h.c)(n,1)+" rank")}else{this.gainActionStats(t,a,!1);let e=0,n=0;if(a.rankLoss&&(e=Object(w.a)(a.rankLoss,10),this.changeRank(t,-1*e)),a.hpLoss){n=a.hpLoss*r,n=Math.ceil(Object(w.a)(n,10));const e=Object(x.a)(t,n);t.takeDamage(n)&&(++this.numHosp,this.moneyLost+=e)}o=Math.floor(i),this.logging.blackops&&this.log(a.name+" failed! Lost "+Object(h.c)(e,1)+" rank and took "+Object(h.c)(n,0)+" damage")}if(this.resetAction(),i>=1){const e=Object(E.a)(1,o);this.teamSize-=e,this.teamLost+=e,this.logging.blackops&&this.log("You lost "+Object(h.c)(e,0)+" team members during "+a.name)}}catch(e){Object(b.a)(e)}break;case i.a.Training:{this.stamina-=.5*k.a.BaseStaminaLoss;const e=30*t.strength_exp_mult,a=30*t.defense_exp_mult,n=30*t.dexterity_exp_mult,r=30*t.agility_exp_mult,i=.04*this.skillMultipliers.stamina;t.gainStrengthExp(e),t.gainDefenseExp(a),t.gainDexterityExp(n),t.gainAgilityExp(r),this.staminaBonus+=i,this.logging.general&&this.log("Training completed. Gained: "+Object(h.c)(e,1)+" str exp, "+Object(h.c)(a,1)+" def exp, "+Object(h.c)(n,1)+" dex exp, "+Object(h.c)(r,1)+" agi exp, "+Object(h.c)(i,3)+" max stamina"),this.startAction(t,this.action);break}case i.a.FieldAnalysis:case i.a["Field Analysis"]:{let e=.04*Math.pow(t.hacking,.3)+.04*Math.pow(t.intelligence,.9)+.02*Math.pow(t.charisma,.3);if(e*=t.bladeburner_analysis_mult,isNaN(e)||e<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const a=20*t.hacking_exp_mult,n=20*t.charisma_exp_mult;t.gainHackingExp(a),t.gainIntelligenceExp(k.a.BaseIntGain),t.gainCharismaExp(n),this.changeRank(t,.1*_.a.BladeburnerRank),this.getCurrentCity().improvePopulationEstimateByPercentage(e*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log("Field analysis completed. Gained 0.1 rank, "+Object(h.c)(a,1)+" hacking exp, and "+Object(h.c)(n,1)+" charisma exp"),this.startAction(t,this.action);break}case i.a.Recruitment:{const e=this.getRecruitmentSuccessChance(t);if(Math.random()<e){const e=2*k.a.BaseStatGain*this.actionTimeToComplete;t.gainCharismaExp(e),++this.teamSize,this.logging.general&&this.log("Successfully recruited a team member! Gained "+Object(h.c)(e,1)+" charisma exp")}else{const e=k.a.BaseStatGain*this.actionTimeToComplete;t.gainCharismaExp(e),this.logging.general&&this.log("Failed to recruit a team member. Gained "+Object(h.c)(e,1)+" charisma exp")}this.startAction(t,this.action);break}case i.a.Diplomacy:{const e=this.getDiplomacyEffectiveness(t);this.getCurrentCity().chaos*=e,this.getCurrentCity().chaos<0&&(this.getCurrentCity().chaos=0),this.logging.general&&this.log("Diplomacy completed. Chaos levels in the current city fell by "+v.a.formatPercentage(1-e)),this.startAction(t,this.action);break}case i.a["Hyperbolic Regeneration Chamber"]:{t.regenerateHp(k.a.HrcHpGain);const e=this.maxStamina*(k.a.HrcStaminaGain/100);this.stamina=Math.min(this.maxStamina,this.stamina+e),this.startAction(t,this.action),this.logging.general&&this.log(`Rested in Hyperbolic Regeneration Chamber. Restored ${k.a.HrcHpGain} HP and gained ${v.a.formatStamina(e)} stamina`);break}case i.a["Incite Violence"]:for(const e of Object.keys(this.contracts)){const t=o.a[e];if(!t)throw new Error("trying to generate count for action that doesn't exist? "+e);this.contracts[e].count+=180*t()/k.a.ActionCountGrowthPeriod}for(const e of Object.keys(this.operations)){const t=o.a[e];if(!t)throw new Error("trying to generate count for action that doesn't exist? "+e);this.operations[e].count+=180*t()/k.a.ActionCountGrowthPeriod}this.logging.general&&this.log("Incited violence in the synthoid communities.");for(const e of Object.keys(this.cities)){const t=this.cities[e];t.chaos+=10,t.chaos+=t.chaos/(Math.log(t.chaos)/Math.log(10))}this.startAction(t,this.action);break;default:console.error("Bladeburner.completeAction() called for invalid action: "+this.action.type)}}changeRank(e,t){if(isNaN(t))throw new Error("NaN passed into Bladeburner.changeRank()");this.rank+=t,this.rank<0&&(this.rank=0),this.maxRank=Math.max(this.rank,this.maxRank);if(Object(C.b)("Bladeburners")){const a=C.a.Bladeburners;if(!(a instanceof S.a))throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");if(a.isMember){const n=1+a.favor/100;a.playerReputation+=k.a.RankToFactionRepFactor*t*e.faction_rep_mult*n}}const a=(this.totalSkillPoints+1)*k.a.RanksPerSkillPoint;if(this.maxRank>=a){const e=Math.floor((this.maxRank-a)/k.a.RanksPerSkillPoint+1);this.skillPoints+=e,this.totalSkillPoints+=e}}processAction(e,t,a){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+=a+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete?(this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete,this.completeAction(e,t)):void 0}}calculateStaminaGainPerSecond(e){const t=e.agility*this.skillMultipliers.effAgi,a=this.maxStamina/k.a.MaxStaminaToGainFactor;return(k.a.StaminaGainPerSecond+a)*Math.pow(t,.17)*(this.skillMultipliers.stamina*e.bladeburner_stamina_gain_mult)}calculateMaxStamina(e){const t=e.agility*this.skillMultipliers.effAgi,a=(Math.pow(t,.8)+this.staminaBonus)*this.skillMultipliers.stamina*e.bladeburner_max_stamina_mult;if(this.maxStamina!==a){const e=this.maxStamina;this.maxStamina=a,this.stamina=this.maxStamina*this.stamina/e}if(isNaN(a))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new u.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 u.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 u.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(e,t){if(e.page()!==g.a.BitVerse&&this.blackops.hasOwnProperty("Operation Daedalus"))return e.toBitVerse(!1,!1);if(!1===T.a[R.a.BladesSimulacrum].owned&&t.isWorking){if(this.action.type!==i.a.Idle){let e="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(e+="<br /><br />Your automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),M.a.SuppressBladeburnerPopup||Object(O.a)(e)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=k.a.CyclesPerSecond){let a=Math.floor(this.storedCycles/k.a.CyclesPerSecond);a=Math.min(a,5),this.storedCycles-=a*k.a.CyclesPerSecond,this.calculateMaxStamina(t),this.stamina+=this.calculateStaminaGainPerSecond(t)*a,this.stamina=Math.min(this.maxStamina,this.stamina);for(const e of Object.values(this.contracts)){const t=o.a[e.name];if(void 0===t)throw new Error(`growth formula for action '${e.name}' is undefined`);e.count+=a*t()/k.a.ActionCountGrowthPeriod}for(const e of Object.values(this.operations)){const t=o.a[e.name];if(void 0===t)throw new Error(`growth formula for action '${e.name}' is undefined`);void 0!==t&&(e.count+=a*t()/k.a.ActionCountGrowthPeriod)}for(const e of k.a.CityNames){const t=this.cities[e];if(!(t instanceof f.a))throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");t.chaos-=1e-4*a,t.chaos=Math.max(0,t.chaos)}this.randomEventCounter-=a,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=Object(E.a)(240,600)),this.processAction(e,t,a),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(t,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(t,this.action))))}}getTypeAndNameFromActionId(e){const t={type:"",name:""},a=Object.keys(i.a);for(let n=0;n<a.length;++n)if(e.type===i.a[a[n]]){t.type=a[n];break}return["Training","Recruitment","FieldAnalysis","Field Analysis","Diplomacy","Hyperbolic Regeneration Chamber","Incite Violence"].includes(t.type)&&(t.type="General"),null==t.type&&(t.type="Idle"),t.name=null!=e.name?e.name:"Idle",t}getContractNamesNetscriptFn(){return Object.keys(this.contracts)}getOperationNamesNetscriptFn(){return Object.keys(this.operations)}getBlackOpNamesNetscriptFn(){return Object.keys(s.a)}getGeneralActionNamesNetscriptFn(){return Object.keys(m.a)}getSkillNamesNetscriptFn(){return Object.keys(d.a)}startActionNetscriptFn(e,t,a,n){const r=`Invalid action: type='${t}' name='${a}'`,o=this.getActionIdFromTypeAndName(t,a);if(null==o)return n.log("bladeburner.startAction",()=>r),!1;if(o.type===i.a.BlackOp){const e=this.canAttemptBlackOp(o);if(!e.isAvailable)return n.log("bladeburner.startAction",()=>e.error+""),!1}try{return this.startAction(e,o),n.log("bladeburner.startAction",()=>`Starting bladeburner action with type '${t}' and name ${a}"`),!0}catch(e){return this.resetAction(),n.log("bladeburner.startAction",()=>r),!1}}getActionTimeNetscriptFn(e,t,a,n){const r=`Invalid action: type='${t}' name='${a}'`,o=this.getActionIdFromTypeAndName(t,a);if(null==o)return n.log("bladeburner.getActionTime",()=>r),-1;const s=this.getActionObject(o);if(null==s)return n.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(e);case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:case i.a["Incite Violence"]:return 6e4;default:return n.log("bladeburner.getActionTime",()=>r),-1}}getActionEstimatedSuccessChanceNetscriptFn(e,t,a,n){const r=`Invalid action: type='${t}' name='${a}'`,o=this.getActionIdFromTypeAndName(t,a);if(null==o)return n.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1];const s=this.getActionObject(o);if(null==s)return n.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 t=this.getRecruitmentSuccessChance(e);return[t,t]}default:return n.log("bladeburner.getActionEstimatedSuccessChance",()=>r),[-1,-1]}}getActionCountRemainingNetscriptFn(e,t,a){const n=`Invalid action: type='${e}' name='${t}'`,r=this.getActionIdFromTypeAndName(e,t);if(null==r)return a.log("bladeburner.getActionCountRemaining",()=>n),-1;const o=this.getActionObject(r);if(null==o)return a.log("bladeburner.getActionCountRemaining",()=>n),-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[t]?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 a.log("bladeburner.getActionCountRemaining",()=>n),-1}}getSkillLevelNetscriptFn(e,t){return""!==e&&d.a.hasOwnProperty(e)?null==this.skills[e]?0:this.skills[e]:(t.log("bladeburner.getSkillLevel",()=>`Invalid skill: '${e}'`),-1)}getSkillUpgradeCostNetscriptFn(e,t){if(""===e||!d.a.hasOwnProperty(e))return t.log("bladeburner.getSkillUpgradeCost",()=>`Invalid skill: '${e}'`),-1;const a=d.a[e];return null==this.skills[e]?a.calculateCost(0):a.calculateCost(this.skills[e])}upgradeSkillNetscriptFn(e,t){const a=`Invalid skill: '${e}'`;if(!d.a.hasOwnProperty(e))return t.log("bladeburner.upgradeSkill",()=>a),!1;const n=d.a[e];let r=0;this.skills[e]&&!isNaN(this.skills[e])&&(r=this.skills[e]);const i=n.calculateCost(r);return n.maxLvl&&r>=n.maxLvl?(t.log("bladeburner.upgradeSkill",()=>`Skill '${e}' is already maxed.`),!1):this.skillPoints<i?(t.log("bladeburner.upgradeSkill",()=>`You do not have enough skill points to upgrade ${e} (You have ${this.skillPoints}, you need ${i})`),!1):(this.skillPoints-=i,this.upgradeSkill(n),t.log("bladeburner.upgradeSkill",()=>`'${e}' upgraded to level ${this.skills[e]}`),!0)}getTeamSizeNetscriptFn(e,t,a){if(""===e&&""===t)return this.teamSize;const n=`Invalid action: type='${e}' name='${t}'`,r=this.getActionIdFromTypeAndName(e,t);if(null==r)return a.log("bladeburner.getTeamSize",()=>n),-1;const o=this.getActionObject(r);return null==o?(a.log("bladeburner.getTeamSize",()=>n),-1):r.type===i.a.Operation||r.type===i.a.BlackOp||r.type===i.a.BlackOperation?o.teamCount:0}setTeamSizeNetscriptFn(e,t,a,n){const r=`Invalid action: type='${e}' name='${t}'`,o=this.getActionIdFromTypeAndName(e,t);if(null==o)return n.log("bladeburner.setTeamSize",()=>r),-1;if(o.type!==i.a.Operation&&o.type!==i.a.BlackOp&&o.type!==i.a.BlackOperation)return n.log("bladeburner.setTeamSize",()=>"Only valid for 'Operations' and 'BlackOps'"),-1;const s=this.getActionObject(o);if(null==s)return n.log("bladeburner.setTeamSize",()=>r),-1;let l=Math.round(a);return isNaN(l)||l<0?(n.log("bladeburner.setTeamSize",()=>"Invalid size: "+a),-1):(this.teamSize<l&&(l=this.teamSize),s.teamCount=l,n.log("bladeburner.setTeamSize",()=>`Team size for '${t}' set to ${l}.`),l)}joinBladeburnerFactionNetscriptFn(e){const t=C.a.Bladeburners;return!!t.isMember||(this.rank>=k.a.RankNeededForFaction?(Object(N.d)(t),e.log("bladeburner.joinBladeburnerFaction",()=>"Joined Bladeburners faction."),!0):(e.log("bladeburner.joinBladeburnerFaction",()=>`You do not have the required rank (${this.rank}/${k.a.RankNeededForFaction}).`),!1))}toJSON(){return Object(n.b)("Bladeburner",this)}static fromJSON(e){return Object(n.a)(I,e.data)}}n.c.constructors.Bladeburner=I},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(334),r=a(30),i=a(433),o=a(21);const s={name:"",info:"",companyPositions:{},expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0};class l{constructor(e=s){this.name=e.name,this.info=e.info,this.companyPositions=e.companyPositions,this.expMultiplier=e.expMultiplier,this.salaryMultiplier=e.salaryMultiplier,this.jobStatReqOffset=e.jobStatReqOffset,this.isPlayerEmployed=!1,this.playerReputation=1,this.favor=0,this.isMegacorp=!1,e.isMegacorp&&(this.isMegacorp=!0)}hasPosition(e){return e instanceof n.a?null!=this.companyPositions[e.name]:null!=this.companyPositions[e]}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 e=Math.max(0,Object(i.a)(this.favor))+this.playerReputation;return Object(i.b)(e)-this.favor}toJSON(){return Object(o.b)("Company",this)}static fromJSON(e){return Object(o.a)(l,e.data)}}o.c.constructors.Company=l},function(e,t,a){"use strict";a.d(t,"a",(function(){return c})),a.d(t,"b",(function(){return u})),a.d(t,"c",(function(){return m})),a.d(t,"e",(function(){return h})),a.d(t,"d",(function(){return d}));var n=a(24),r=a(123),i=a(5),o=a(8),s=a(15),l=a(826);function c(e){const t=Math.round(e);if(isNaN(t)||!Object(l.a)(t)||1!==Math.sign(t))return 1/0;if(t>m())return 1/0;const a=Math.max(0,Math.log(t)/Math.log(2)-6);return t*o.a.BaseCostFor1GBOfRamServer*i.a.PurchasedServerCost*Math.pow(i.a.PurchasedServerSoftcap,a)}function u(){return Math.round(o.a.PurchasedServerLimit*i.a.PurchasedServerLimit)}function m(){const e=Math.round(o.a.PurchasedServerMaxRam*i.a.PurchasedServerMaxRam);return 1<<31-Math.clz32(e)}function h(e,t,a,i){if(!i.canAfford(a))return void Object(s.a)("You don't have enough money to purchase this server!");if(i.purchasedServers.length>=u())return void Object(s.a)("You have reached the maximum limit of "+u()+" servers. You cannot purchase any more. You can delete some of your purchased servers using the deleteServer() Netscript function in a script");if(""==e)return void Object(s.a)("You must enter a hostname for your new server!");const o=Object(r.f)({adminRights:!0,hostname:e,ip:Object(n.e)(),isConnectedTo:!1,maxRam:t,organizationName:"",purchasedByPlayer:!0});Object(n.a)(o),i.purchasedServers.push(o.hostname);const l=i.getHomeComputer();l.serversOnNetwork.push(o.hostname),o.serversOnNetwork.push(l.hostname),i.loseMoney(a,"servers"),Object(s.a)("Server successfully purchased with hostname "+o.hostname)}function d(e){const t=e.getUpgradeHomeRamCost();if(!e.canAfford(t))return void Object(s.a)("You do not have enough money to purchase additional RAM for your home computer");const a=e.getHomeComputer();a.maxRam>=o.a.HomeComputerMaxRam?Object(s.a)("You cannot upgrade your home computer RAM because it is at its maximum possible value"):(a.maxRam*=2,e.loseMoney(t,"servers"))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(183),r=a(169),i=a(21),o=a(254);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class l{constructor(e={}){var t;s(this,"level",1),s(this,"sizeUsed",0),s(this,"smartSupplyEnabled",!1),s(this,"smartSupplyUseLeftovers",{}),s(this,"smartSupplyStore",0),this.loc=e.loc?e.loc:"",this.size=e.size?e.size:0,this.materials={Water:new n.a({name:"Water"}),Energy:new n.a({name:"Energy"}),Food:new n.a({name:"Food"}),Plants:new n.a({name:"Plants"}),Metal:new n.a({name:"Metal"}),Hardware:new n.a({name:"Hardware"}),Chemicals:new n.a({name:"Chemicals"}),Drugs:new n.a({name:"Drugs"}),Robots:new n.a({name:"Robots"}),AICores:new n.a({name:"AI Cores"}),RealEstate:new n.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},e.corp&&e.industry&&this.updateSize(e.corp,e.industry),null!==(t=e.corp)&&void 0!==t&&t.unlockUpgrades[1]&&(this.smartSupplyEnabled=!0)}updateMaterialSizeUsed(){this.sizeUsed=0;for(const e in this.materials){const t=this.materials[e];r.a.hasOwnProperty(e)&&(this.sizeUsed+=t.qty*r.a[e])}this.sizeUsed>this.size&&console.warn("Warehouse size used greater than capacity, something went wrong")}updateSize(e,t){try{this.size=100*this.level*e.getStorageMultiplier()*t.getStorageMultiplier()}catch(e){Object(o.a)(e)}}toJSON(){return Object(i.b)("Warehouse",this)}static fromJSON(e){return Object(i.a)(l,e.data)}}i.c.constructors.Warehouse=l},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(816),r=a(532);const i={};n.a.forEach(e=>{i[e.name]=new r.a(e.name,e.desc,e.isHacking,e.isCombat,e.params)})},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(823),r=a(824);const i={};for(const e of r.a)i[(o=e).name]=new n.a(o);var o},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(825),r=a(14),i=a(24);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class s{constructor(e,t,a){o(this,"code",""),o(this,"delay",null),o(this,"disableLogs",{}),o(this,"dynamicLoadedFns",{}),o(this,"dynamicRamUsage",r.a.ScriptBaseRamCost),o(this,"errorMessage",""),o(this,"loadedFns",{}),o(this,"output",""),o(this,"ramUsage",0),o(this,"running",!1),this.name=e.filename,this.hostname=e.server;const s=Math.round(t);if("number"!=typeof s||isNaN(s))throw new Error("Invalid PID when constructing WorkerScript: "+t);this.pid=s,e.pid=s;const l=Object(i.d)(this.hostname);if(null==l)throw new Error("WorkerScript constructed with invalid server ip: "+this.hostname);let c=!1;for(let e=0;e<l.scripts.length;++e)l.scripts[e].filename===this.name&&(c=!0,this.code=l.scripts[e].code);if(!c)throw new Error("WorkerScript constructed with invalid script filename: "+this.name);this.scriptRef=e,this.args=e.args.slice(),this.env=new n.a(null),"function"==typeof a&&(this.env.vars=a(this)),this.env.set("args",e.args.slice())}getServer(){const e=Object(i.d)(this.hostname);if(null==e)throw new Error(`Script ${this.name} pid ${this.pid} is running on non-existent server?`);return e}getScript(){const e=this.getServer();for(let t=0;t<e.scripts.length;++t)if(e.scripts[t].filename===this.name)return e.scripts[t];return console.error("Failed to find underlying Script object in WorkerScript.getScript(). This probably means somethings wrong"),null}getScriptOnServer(e,t){null==t&&(t=this.getServer());for(let a=0;a<t.scripts.length;++a)if(t.scripts[a].filename===e)return t.scripts[a];return null}shouldLog(e){return null==this.disableLogs[e]}log(e,t){this.shouldLog(e)&&(e&&t?this.scriptRef.log(`${e}: ${t()}`):e?this.scriptRef.log(e):this.scriptRef.log(t()))}print(e){this.scriptRef.log(e)}}},function(e,t,a){"use strict";a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(70),r=a(198);const i=[];class o{constructor(e,t,a,n,r){this.id=e,this.shape=t,this.type=a,this.power=n,this.limit=r}fullAt(e,t,a){if(t<0)return!1;if(t>=this.height(a))return!1;if(e<0)return!1;if(e>=this.width(a))return!1;let[n,r,i,o]=[0,0,1,1];1===a?[n,r,i,o]=[this.width(a)-1,0,-1,1]:2===a?[n,r,i,o]=[this.width(a)-1,this.height(a)-1,-1,-1]:3===a&&([n,r,i,o]=[0,this.height(a)-1,1,-1]);let[s,l]=[n+i*e,r+o*t];return a%2==1&&([s,l]=[l,s]),this.shape[l][s]}width(e){return e%2==0?this.shape[0].length:this.shape.length}height(e){return e%2==0?this.shape.length:this.shape[0].length}neighboors(e){const t=[],a=(a,n)=>{this.fullAt(a,n,e)||t.some(e=>e[0]===a&&e[1]===n)||t.push([a,n])};for(let t=0;t<this.height(e);t++)for(let n=0;n<this.width(e);n++)this.fullAt(n,t,e)&&(a(n-1,t),a(n+1,t),a(n,t-1),a(n,t+1));const n=[];for(const e of t)n.some(t=>t[0]===e[0]&&t[1]===e[1])||n.push(e);return n}copy(){return new o(this.id,this.shape.map(e=>e.slice()),this.type,this.power,this.limit)}}function s(e){for(const t of i)if(t.id===e)return t;return null}!function(){const e=!1,t=!0;i.push(new o(0,r.a.S,n.b.Hacking,1,1)),i.push(new o(1,r.a.Z,n.b.Hacking,1,1)),i.push(new o(5,r.a.T,n.b.HackingSpeed,1.3,1)),i.push(new o(6,r.a.I,n.b.HackingMoney,2,1)),i.push(new o(7,r.a.J,n.b.HackingGrow,.5,1)),i.push(new o(10,r.a.T,n.b.Strength,2,1)),i.push(new o(12,r.a.L,n.b.Defense,2,1)),i.push(new o(14,r.a.L,n.b.Dexterity,2,1)),i.push(new o(16,r.a.S,n.b.Agility,2,1)),i.push(new o(18,r.a.S,n.b.Charisma,3,1)),i.push(new o(20,r.a.I,n.b.HacknetMoney,1,1)),i.push(new o(21,r.a.O,n.b.HacknetCost,2,1)),i.push(new o(25,r.a.J,n.b.Rep,.5,1)),i.push(new o(27,r.a.J,n.b.WorkMoney,10,1)),i.push(new o(28,r.a.L,n.b.Crime,2,1)),i.push(new o(30,r.a.S,n.b.Bladeburner,.4,1)),i.push(new o(100,[[e,t,t],[t,t,e],[e,t,e]],n.b.Booster,1.1,99)),i.push(new o(101,[[t,t,t,t],[t,e,e,e]],n.b.Booster,1.1,99)),i.push(new o(102,[[e,t,t,t],[t,t,e,e]],n.b.Booster,1.1,99)),i.push(new o(103,[[t,t,t,e],[e,e,t,t]],n.b.Booster,1.1,99)),i.push(new o(104,[[e,t,t],[e,t,e],[t,t,e]],n.b.Booster,1.1,99)),i.push(new o(105,[[e,e,t],[e,t,t],[t,t,e]],n.b.Booster,1.1,99)),i.push(new o(106,[[t,e,e],[t,t,t],[t,e,e]],n.b.Booster,1.1,99)),i.push(new o(107,[[e,t,e],[t,t,t],[e,t,e]],n.b.Booster,1.1,99))}();const l=new o(-2,[],n.b.None,0,1/0),c=new o(-2,[],n.b.Delete,0,1/0)},function(e,t,a){"use strict";a.d(t,"c",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"a",(function(){return l}));var n=a(8),r=a(5);function i(e){let t=1+e.favor/100;return isNaN(t)&&(t=1),t*r.a.FactionWorkRepGain}function o(e,t){return(e.hacking+e.intelligence/3)/n.a.MaxSkillLevel*e.faction_rep_mult*e.getIntelligenceBonus(1)*i(t)}function s(e,t){return.9*(e.hacking/n.a.MaxSkillLevel+e.strength/n.a.MaxSkillLevel+e.defense/n.a.MaxSkillLevel+e.dexterity/n.a.MaxSkillLevel+e.agility/n.a.MaxSkillLevel+e.intelligence/n.a.MaxSkillLevel)/4.5*e.faction_rep_mult*i(t)*e.getIntelligenceBonus(1)}function l(e,t){return.9*(e.hacking/n.a.MaxSkillLevel+e.strength/n.a.MaxSkillLevel+e.defense/n.a.MaxSkillLevel+e.dexterity/n.a.MaxSkillLevel+e.agility/n.a.MaxSkillLevel+e.charisma/n.a.MaxSkillLevel+e.intelligence/n.a.MaxSkillLevel)/5.5*e.faction_rep_mult*i(t)*e.getIntelligenceBonus(1)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"d",(function(){return d})),a.d(t,"b",(function(){return p}));var n=a(212),r=a(69),i=a(8),o=a(2),s=a(4),l=a(16),c=a(15),u=a(0);function m(e,t,a=null,m={}){if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return a?a.log("stock.buy",()=>`Invalid arguments: stock='${e}' shares='${t}'`):!0!==m.suppressDialog&&Object(c.a)("Failed to buy stock. This may be a bug, contact developer"),!1;const h=Object(n.b)(e,t,r.a.Long);if(null==h)return!1;if(o.a.money<h)return a?a.log("stock.buy",()=>`You do not have enough money to purchase this position. You need ${s.a.formatMoney(h)}.`):!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this. You need ",u.createElement(l.a,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return a?a.log("stock.buy",()=>`Purchasing '${t+e.playerShares+e.playerShortShares}' shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares`):!0!==m.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${s.a.formatShares(e.maxShares)} shares.`),!1;const d=e.playerShares*e.playerAvgPx;o.a.loseMoney(h,"stock");const p=d+h-i.a.StockMarketCommission;if(e.playerShares=Math.round(e.playerShares+t),e.playerAvgPx=p/e.playerShares,Object(n.d)(e,t),null!=m.rerenderFn&&"function"==typeof m.rerenderFn&&m.rerenderFn(),a){const n=`Bought ${s.a.formatShares(t)} shares of ${e.symbol} for ${s.a.formatMoney(h)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;a.log("stock.buy",()=>n)}else!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"Bought ",s.a.formatShares(t)," shares of ",e.symbol," for ",u.createElement(l.a,{money:h}),". Paid"," ",u.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function h(e,t,a=null,i={}){if(null==e||t<0||isNaN(t))return a?a.log("stock.sell",()=>`Invalid arguments: stock='${e}' shares='${t}'`):!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((t=Math.round(t))>e.playerShares&&(t=e.playerShares),0===t)return!1;const m=Object(n.c)(e,t,r.a.Long);if(null==m)return!1;let h=m-e.playerAvgPx*t;if(isNaN(h)&&(h=0),o.a.gainMoney(m,"stock"),a&&(a.scriptRef.onlineMoneyMade+=h,o.a.scriptProdSinceLastAug+=h),e.playerShares=Math.round(e.playerShares-t),0===e.playerShares&&(e.playerAvgPx=0),Object(n.d)(e,t),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),a){const n=`Sold ${s.a.formatShares(t)} shares of ${e.symbol}. After commissions, you gained a total of ${s.a.formatMoney(m)}.`;a.log("stock.sell",()=>n)}else!0!==i.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"Sold ",s.a.formatShares(t)," shares of ",e.symbol,". After commissions, you gained a total of"," ",u.createElement(l.a,{money:m}),"."));return!0}function d(e,t,a=null,m={}){if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return a?a.log("stock.short",()=>`Invalid arguments: stock='${e}' shares='${t}'`):!0!==m.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 h=Object(n.b)(e,t,r.a.Short);if(null==h)return!1;if(o.a.money<h)return a?a.log("stock.short",()=>"You do not have enough money to purchase this short position. You need "+s.a.formatMoney(h)):!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this short position. You need ",u.createElement(l.a,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return a?a.log("stock.short",()=>`This '${t+e.playerShares+e.playerShortShares}' short shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares.`):!0!==m.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${e.maxShares} shares.`),!1;const d=e.playerShortShares*e.playerAvgShortPx;o.a.loseMoney(h,"stock");const p=d+h-i.a.StockMarketCommission;if(e.playerShortShares=Math.round(e.playerShortShares+t),e.playerAvgShortPx=p/e.playerShortShares,Object(n.d)(e,t),null!=m.rerenderFn&&"function"==typeof m.rerenderFn&&m.rerenderFn(),a){const n=`Bought a short position of ${s.a.formatShares(t)} shares of ${e.symbol} for ${s.a.formatMoney(h)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;a.log("stock.short",()=>n)}else m.suppressDialog||Object(c.a)(u.createElement(u.Fragment,null,"Bought a short position of ",s.a.formatShares(t)," shares of ",e.symbol," for"," ",u.createElement(l.a,{money:h}),". Paid ",u.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function p(e,t,a=null,i={}){if(null==e||isNaN(t)||t<0)return a?a.log("stock.sellShort",()=>`Invalid arguments: stock='${e}' shares='${t}'`):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((t=Math.round(t))>e.playerShortShares&&(t=e.playerShortShares),0===t)return!1;const m=t*e.playerAvgShortPx,h=Object(n.c)(e,t,r.a.Short);if(null==h||isNaN(h)||null==m)return a?a.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 d=h-m;if(isNaN(d)&&(d=0),o.a.gainMoney(h,"stock"),a&&(a.scriptRef.onlineMoneyMade+=d,o.a.scriptProdSinceLastAug+=d),e.playerShortShares=Math.round(e.playerShortShares-t),0===e.playerShortShares&&(e.playerAvgShortPx=0),Object(n.d)(e,t),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),a){const n=`Sold your short position of ${s.a.formatShares(t)} shares of ${e.symbol}. After commissions, you gained a total of `+s.a.formatMoney(h);a.log("stock.sellShort",()=>n)}else i.suppressDialog||Object(c.a)(u.createElement(u.Fragment,null,"Sold your short position of ",s.a.formatShares(t)," shares of ",e.symbol,". After commissions, you gained a total of ",u.createElement(l.a,{money:h})));return!0}},function(e,t,a){"use strict";a.d(t,"b",(function(){return s})),a.d(t,"c",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"d",(function(){return u}));var n=a(0),r=a.n(n),i=a(11),o=a(343);class s{constructor(e,t){i.a.TimestampsFormat&&(e="["+Object(o.a)(i.a.TimestampsFormat)+"] "+e),this.text=e,this.color=t}}class l{constructor(e){i.a.TimestampsFormat&&(e=r.a.createElement(r.a.Fragment,null,"[",Object(o.a)(i.a.TimestampsFormat),"] ",e)),this.raw=e}}class c{constructor(e,t){i.a.TimestampsFormat&&(e="["+Object(o.a)(i.a.TimestampsFormat)+"] "+e),this.hostname=t,this.dashes=e}}class u{constructor(e,t,a){this.time=e,this.timeLeft=e,this.action=t,this.server=a}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(5);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e={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),!e.name)throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");if(!e.desc)throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");this.name=e.name,this.desc=e.desc,this.baseCost=e.baseCost?e.baseCost:1,this.costInc=e.costInc?e.costInc:1,e.maxLvl&&(this.maxLvl=e.maxLvl),e.successChanceAll&&(this.successChanceAll=e.successChanceAll),e.successChanceStealth&&(this.successChanceStealth=e.successChanceStealth),e.successChanceKill&&(this.successChanceKill=e.successChanceKill),e.successChanceContract&&(this.successChanceContract=e.successChanceContract),e.successChanceOperation&&(this.successChanceOperation=e.successChanceOperation),e.successChanceEstimate&&(this.successChanceEstimate=e.successChanceEstimate),e.actionTime&&(this.actionTime=e.actionTime),e.effHack&&(this.effHack=e.effHack),e.effStr&&(this.effStr=e.effStr),e.effDef&&(this.effDef=e.effDef),e.effDex&&(this.effDex=e.effDex),e.effAgi&&(this.effAgi=e.effAgi),e.effCha&&(this.effCha=e.effCha),e.stamina&&(this.stamina=e.stamina),e.money&&(this.money=e.money),e.expGain&&(this.expGain=e.expGain)}calculateCost(e){return Math.floor((this.baseCost+e*this.costInc)*n.a.BladeburnerSkillCost)}getMultiplier(e){return"successChanceAll"===e?this.successChanceAll:"successChanceStealth"===e?this.successChanceStealth:"successChanceKill"===e?this.successChanceKill:"successChanceContract"===e?this.successChanceContract:"successChanceOperation"===e?this.successChanceOperation:"successChanceEstimate"===e?this.successChanceEstimate:"actionTime"===e?this.actionTime:"effHack"===e?this.effHack:"effStr"===e?this.effStr:"effDef"===e?this.effDef:"effDex"===e?this.effDex:"effAgi"===e?this.effAgi:"effCha"===e?this.effCha:"stamina"===e?this.stamina:"money"===e?this.money:"expGain"===e?this.expGain:0}}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(394),r=a(140),i=a(661),o=a(23),s=a(856);const l={};function c(e){if(!e.name)throw new Error("Invalid constructor parameters for Location. No 'name' property");return l[e.name]instanceof i.a&&console.warn(`Property with name ${e.name} already exists and is being overwritten`),l[e.name]=new i.a(e),l[e.name]}r.a[o.a.Aevum]=new n.a(o.a.Aevum),r.a[o.a.Chongqing]=new n.a(o.a.Chongqing),r.a[o.a.Ishima]=new n.a(o.a.Ishima),r.a[o.a.NewTokyo]=new n.a(o.a.NewTokyo),r.a[o.a.Sector12]=new n.a(o.a.Sector12),r.a[o.a.Volhaven]=new n.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 \\ [defcomm] \n \\ \n o--x---A--x--o [travel agency] \n 7 8 10 G \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--E--x-----x-----x---+---x----x--H--x-o \n | \n | \n o 17 \n \n \n \n F [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 e of s.a){const t=c(e),a=t.city;if(null===a)for(const e in r.a)r.a[e].addLocation(t.name);else r.a[a].addLocation(t.name)}},,,function(e,t,a){"use strict";function n(e){const t=[];for(let a=0;a<e.length;++a){let r=e[a];Array.isArray(r)?r=n(r):"string"==typeof r&&(r=`"${r}"`),t.push(r)}return`[${t.join(", ")}]`}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(414);const r={},i=["Training","Field Analysis","Recruitment","Diplomacy","Hyperbolic Regeneration Chamber","Incite Violence"];for(const e of i)r[e]=new n.a({name:e})},function(e,t,a){"use strict";let n;a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r})),function(e){e.Clubs="clubs",e.Diamonds="diamonds",e.Hearts="hearts",e.Spades="spades"}(n||(n={}));class r{constructor(e,t){if(this.value=e,this.suit=t,e<1||e>13)throw new Error("Card instantiated with improper value: "+e)}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===n.Hearts||this.suit===n.Diamonds}getStringRepresentation(){return`${this.formatValue()} of ${this.suit}`}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(21);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e={}){r(this,"name",""),r(this,"type",-1),e.name&&(this.name=e.name),e.type&&(this.type=e.type)}toJSON(){return Object(n.b)("ActionIdentifier",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.ActionIdentifier=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(220);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e,t){r(this,"lvl",1),r(this,"owned",!1);const a="BitNode"+e,i=n.a[a];if(null==i)throw new Error("Invalid Bit Node for this Source File");this.n=e,this.name=`Source-File ${e}: ${i.name}`,this.info=t}}},,,,function(e,t,a){"use strict";function n(e,t){return Math.random()*(t-e)+e}function r(e){switch(e.key){case"ArrowUp":case"w":return"↑";case"ArrowLeft":case"a":return"←";case"ArrowDown":case"s":return"↓";case"ArrowRight":case"d":return"→"}return""}a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(666);function o({children:e}){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,e))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(15);function r(e){console.error(e),Object(n.a)("Caught an exception: "+e+"<br><br>Filename: "+(e.fileName||"UNKNOWN FILE NAME")+"<br><br>Line Number: "+(e.lineNumber||"UNKNOWN LINE NUMBER")+"<br><br>This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.<br><br>If you want to be safe, I suggest refreshing the game WITHOUT saving so that your safe doesn't get corrupted")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y})),a.d(t,"b",(function(){return f})),a.d(t,"e",(function(){return p})),a.d(t,"d",(function(){return b})),a.d(t,"c",(function(){return k}));var n=a(307),r=a(20),i=a(6),o=a(61),s=a(2),l=a(278),c=a(24),u=a(11),m=a(15),h=a(21);function d(e,t=!1){e.recvd=!0,!t&&u.a.SuppressMessages||p(e.filename),function(e,t){const a=Object(c.d)(t);if(null==a)return void console.warn("Could not find server "+t);for(let t=0;t<a.messages.length;++t){const n=a.messages[t];if(e.filename===n)return}a.messages.push(e.filename)}(e,"home")}function p(e){const t=y[e];if(!t)throw new Error("trying to display unexistent message");const a="Message received from unknown sender: <br><br><i>"+t.msg+"</i><br><br>This message was saved as "+t.filename+" onto your home computer.";Object(m.a)(a)}function f(){if(l.b)return;const e=y[E.Jumper0],t=y[E.Jumper1],a=y[E.Jumper2],n=y[E.Jumper3],c=y[E.Jumper4],u=y[E.CyberSecTest],m=y[E.NiteSecTest],h=y[E.BitRunnersTest],p=y[E.RedPill];let f=!1;if(r.a[i.a.TheRedPill].owned&&(f=!0),p&&f&&0===s.a.sourceFiles.length&&!l.b)d(p,!0);else if(p&&f)l.b||d(p);else if(e&&!e.recvd&&s.a.hacking>=25){d(e);const t=o.a.Flight.name,a=s.a.getHomeComputer();a.programs.includes(t)||a.programs.push(t)}else t&&!t.recvd&&s.a.hacking>=40?d(t):u&&!u.recvd&&s.a.hacking>=50?d(u):a&&!a.recvd&&s.a.hacking>=175?d(a):m&&!m.recvd&&s.a.hacking>=200?d(m):n&&!n.recvd&&s.a.hacking>=350?d(n):c&&!c.recvd&&s.a.hacking>=490?d(c):h&&!h.recvd&&s.a.hacking>=500&&d(h)}function g(e){y[e.filename]=e}let y={};function b(e){y=JSON.parse(e,h.c)}const E={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(){y={},g(new n.a(E.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. <br><br>It's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.<br><br>Use this program to track your progress<br><br>The fl1ght.exe program was added to your home computer<br><br>-jump3R")),g(new n.a(E.Jumper1,"Soon you will be contacted by a hacking group known as CyberSec. They can help you with your search. <br><br>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.<br><br>-jump3R")),g(new n.a(E.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. <br><br>Watch out for a hacking group known as NiteSec.<br><br>-jump3R")),g(new n.a(E.Jumper3,"You must learn to walk before you can run. And you must run before you can fly. Look for the black hand. <br><br>I.I.I.I <br><br>-jump3R")),g(new n.a(E.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.<br><br>-jump3R")),g(new n.a(E.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. <br><br>But first, you must pass our test. Find and install the backdoor on our server. <br><br>-CyberSec")),g(new n.a(E.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. <br><br>Join us, and people will fear you, too. <br><br>Find and install the backdoor on our server. Then, we will contact you again.<br><br>-NiteSec")),g(new n.a(E.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for. <br><br> We can help you find the answers.<br><br>run4theh111z")),g(new n.a(E.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%<br>)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)<br>@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB<br>DFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(128);const r={};r["Operation Typhoon"]=new n.a({name:"Operation Typhoon",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}),r["Operation Zero"]=new n.a({name:"Operation Zero",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}),r["Operation X"]=new n.a({name:"Operation X",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}),r["Operation Titan"]=new n.a({name:"Operation Titan",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}),r["Operation Ares"]=new n.a({name:"Operation Ares",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}),r["Operation Archangel"]=new n.a({name:"Operation Archangel",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}),r["Operation Juggernaut"]=new n.a({name:"Operation Juggernaut",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}),r["Operation Red Dragon"]=new n.a({name:"Operation Red Dragon",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}),r["Operation K"]=new n.a({name:"Operation K",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}),r["Operation Deckard"]=new n.a({name:"Operation Deckard",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}),r["Operation Tyrell"]=new n.a({name:"Operation Tyrell",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}),r["Operation Wallace"]=new n.a({name:"Operation Wallace",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}),r["Operation Shoulder of Orion"]=new n.a({name:"Operation Shoulder of Orion",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}),r["Operation Hyron"]=new n.a({name:"Operation Hyron",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}),r["Operation Morpheus"]=new n.a({name:"Operation Morpheus",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}),r["Operation Ion Storm"]=new n.a({name:"Operation Ion Storm",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}),r["Operation Annihilus"]=new n.a({name:"Operation Annihilus",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}),r["Operation Ultron"]=new n.a({name:"Operation Ultron",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}),r["Operation Centurion"]=new n.a({name:"Operation Centurion",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}}),r["Operation Vindictus"]=new n.a({name:"Operation Vindictus",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}}),r["Operation Daedalus"]=new n.a({name:"Operation Daedalus",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(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(8);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e="",t="",a=0,n=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=e,this.type=t,this.time=a,this.money=n,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(e,t,a=1,n=null){return a<=0&&(a=1),t.startCrime(e,this.type,this.hacking_exp/a,this.strength_exp/a,this.defense_exp/a,this.dexterity_exp/a,this.agility_exp/a,this.charisma_exp/a,this.money/a,this.time,n),this.time}successRate(e){let t=this.hacking_success_weight*e.hacking+this.strength_success_weight*e.strength+this.defense_success_weight*e.defense+this.dexterity_success_weight*e.dexterity+this.agility_success_weight*e.agility+this.charisma_success_weight*e.charisma+n.a.IntelligenceCrimeWeight*e.intelligence;return t/=n.a.MaxSkillLevel,t/=this.difficulty,t*=e.crime_success_mult,t*=e.getIntelligenceBonus(1),Math.min(t,1)}}},,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(283),r=a(61);const i={BruteSSHProgram:new n.a(r.a.BruteSSHProgram.name,5e5,"Opens up SSH Ports."),FTPCrackProgram:new n.a(r.a.FTPCrackProgram.name,15e5,"Opens up FTP Ports."),RelaySMTPProgram:new n.a(r.a.RelaySMTPProgram.name,5e6,"Opens up SMTP Ports."),HTTPWormProgram:new n.a(r.a.HTTPWormProgram.name,3e7,"Opens up HTTP Ports."),SQLInjectProgram:new n.a(r.a.SQLInjectProgram.name,25e7,"Opens up SQL Ports."),ServerProfiler:new n.a(r.a.ServerProfiler.name,5e5,"Displays detailed information about a server."),DeepscanV1:new n.a(r.a.DeepscanV1.name,5e5,"Enables 'scan-analyze' with a depth up to 5."),DeepscanV2:new n.a(r.a.DeepscanV2.name,25e6,"Enables 'scan-analyze' with a depth up to 10."),AutolinkProgram:new n.a(r.a.AutoLink.name,1e6,"Enables direct connect via 'scan-analyze'."),FormulasProgram:new n.a(r.a.Formulas.name,5e9,"Unlock access to the formulas API.")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o}));var n=a(5),r=a(8);function i(){return r.a.MarketData4SCost*n.a.FourSigmaMarketDataCost}function o(){return r.a.MarketDataTixApi4SCost*n.a.FourSigmaMarketDataApiCost}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(478),i=a(29),o=a(10),s=a(28);function l(e){const t=i.b.Player();return n.createElement(n.Fragment,null,n.createElement(s.a,{title:n.createElement("span",{dangerouslySetInnerHTML:{__html:function(){const a=t.getNextCompanyPosition(e.company,e.entryPosType);return null==a?"":e.company.hasPosition(a)?Object(r.a)(e.company,a,!0):""}()}})},n.createElement(o.a,{onClick:e.onClick},e.text)),n.createElement("br",null))}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new(a(122).a)},,,function(e,t,a){"use strict";a.d(t,"b",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(2),o=a(317),s=a(533),l=a(80),c=a(335),u=a(15);let m=!1;function h(e){m=e}function d(e,t,a,n){t?0===l.a[5]&&5!==n&&(i.a.intelligence=0,i.a.intelligence_exp=0):function(e){const t="SourceFile"+e.toString(),a=c.a[t];if(null==a)return void console.error("Could not find source file for Bit node: "+e);let n=!1,o=null;for(let t=0;t<i.a.sourceFiles.length;++t)if(i.a.sourceFiles[t].n===e){n=!0,o=i.a.sourceFiles[t];break}if(n&&o)o.lvl>=3&&12!==o.n?Object(u.a)("The Source-File for the BitNode you just destroyed, "+a.name+", is already at max level!"):(++o.lvl,Object(u.a)(a.name+" was upgraded to level "+o.lvl+" for destroying its corresponding BitNode!"));else{const t=new s.a(e,1);i.a.sourceFiles.push(t),5===e&&0===i.a.intelligence&&(i.a.intelligence=1),Object(u.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),a.name,r.a.createElement("br",null),r.a.createElement("br",null),a.info))}}(a),5===n&&0===i.a.intelligence&&(i.a.intelligence=1),m=!1,i.a.bitNodeN=n,6===n?e.toBladeburnerCinematic():e.toTerminal(),Object(o.b)(t)}},,function(e,t,a){"use strict";function n(e,t){if(t<0||t>100)return e;const a=e*(t/100);return e+(Math.random()*(2*a)-a)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.SyntaxError=-1]="SyntaxError",e[e.ImportError=-2]="ImportError",e[e.URLImportError=-3]="URLImportError"}(n||(n={}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t,a){this.program=e,this.price=t,this.description=a}}},,,,,,,function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r}));class r{constructor(e=""){n(this,"level",1),n(this,"name",""),this.name=e}}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(486);function r(){return Object(n.a)(99)+"."+Object(n.a)(9)+"."+Object(n.a)(9)+"."+Object(n.a)(9)}},function(e,t,a){"use strict";function n(e,t){if(e.length!==t.length)return!1;for(let a=0;a<e.length;++a)if(Array.isArray(e[a])){if(!Array.isArray(t[a]))return!1;if(!n(e[a],t[a]))return!1}else if(e[a]!==t[a])return!1;return!0}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";function n(e,t=1){return 1+t*Math.pow(e,.8)/600}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(821),r=a(822);const i={};for(const e of r.a)null!=i[(o=e).name]&&console.warn("Duplicate Research being defined: "+o.name),i[o.name]=new n.a(o);var o},,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(4),i=a(111),o=a(134);const s=Object(i.a)(e=>Object(o.a)({favor:{color:e.colors.rep}}));function l({favor:e}){const t=s();return n.createElement("span",{className:t.favor},"number"==typeof e?r.a.formatFavor(e):e)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={GangRespectToReputationRatio:75,MaximumGangMembers:12,CyclesPerTerritoryAndPowerUpdate:100,AscensionMultiplierRatio:.15,Names:["Slum Snakes","Tetrads","The Syndicate","The Dark Army","Speakers for the Dead","NiteSec","The Black Hand"]}},function(e,t,a){"use strict";a.d(t,"a",(function(){return b}));var n=a(74),r=a(213),i=a(5),o=a(81),s=a(62),l=a(225),c=a(90),u=a(8),m=a(193),h=a(26),d=a(171),p=a(23),f=a(9),g=a(21);function y(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class b extends r.a{constructor(e=null){super(),y(this,"className",""),y(this,"crimeType",""),y(this,"currentTask",n.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",d.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!=e&&this.shockRecovery(e)}commitCrime(e,t){const a=o.a[t]||Object.values(o.a).find(e=>e.name===t);return!!a&&(this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus(),this.gainRatesForTask.hack=a.hacking_exp*this.hacking_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.str=a.strength_exp*this.strength_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.def=a.defense_exp*this.defense_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.dex=a.dexterity_exp*this.dexterity_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.agi=a.agility_exp*this.agility_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.cha=a.charisma_exp*this.charisma_exp_mult*i.a.CrimeExpGain,this.gainRatesForTask.money=a.money*this.crime_money_mult*i.a.CrimeMoney,this.currentTaskLocation=String(this.gainRatesForTask.money),this.crimeType=a.name,this.currentTaskMaxTime=a.time,this.currentTask=n.a.Crime,!0)}finishTask(e){let t=Object(r.b)();if(this.currentTask===n.a.Crime&&this.currentTaskTime>=this.currentTaskMaxTime){const a=Object.values(o.a).find(e=>e.name===this.crimeType);if(!a)return console.error("Invalid data stored in sleeve.crimeType: "+this.crimeType),this.resetTaskStatus(),t;if(Math.random()<a.successRate(this)){const n=Object(r.b)(),i=Object.keys(n);for(let e=0;e<i.length;++e){const t=i[e];n[t]=2*this.gainRatesForTask[t]}t=this.gainExperience(e,n),this.gainMoney(e,this.gainRatesForTask),e.karma-=a.karma*(this.sync/100)}else t=this.gainExperience(e,this.gainRatesForTask);return this.currentTaskTime=0,t}return this.resetTaskStatus(),t}gainExperience(e,t,a=1,n=!1){if(n)return t.hack>0&&(this.hacking_exp+=t.hack),t.str>0&&(this.strength_exp+=t.str),t.def>0&&(this.defense_exp+=t.def),t.dex>0&&(this.dexterity_exp+=t.dex),t.agi>0&&(this.agility_exp+=t.agi),t.cha>0&&(this.charisma_exp+=t.cha),Object(r.b)();const i=this.shock/100*(this.sync/100)*a,o=t.hack*i,s=t.str*i,l=t.def*i,c=t.dex*i,u=t.agi*i,m=t.cha*i;return o>0&&(this.hacking_exp+=o,e.gainHackingExp(o),this.earningsForPlayer.hack+=o,this.earningsForTask.hack+=o),s>0&&(this.strength_exp+=s,e.gainStrengthExp(s),this.earningsForPlayer.str+=s,this.earningsForTask.str+=s),l>0&&(this.defense_exp+=l,e.gainDefenseExp(l),this.earningsForPlayer.def+=l,this.earningsForTask.def+=l),c>0&&(this.dexterity_exp+=c,e.gainDexterityExp(c),this.earningsForPlayer.dex+=c,this.earningsForTask.dex+=c),u>0&&(this.agility_exp+=u,e.gainAgilityExp(u),this.earningsForPlayer.agi+=u,this.earningsForTask.agi+=u),m>0&&(this.charisma_exp+=m,e.gainCharismaExp(m),this.earningsForPlayer.cha+=m,this.earningsForTask.cha+=m),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+=u*(this.sync/100),this.earningsForSleeves.cha+=m*(this.sync/100),{hack:o*(this.sync/100),str:s*(this.sync/100),def:l*(this.sync/100),dex:c*(this.sync/100),agi:u*(this.sync/100),cha:m*(this.sync/100),money:0}}gainMoney(e,t,a=1){const n=t.money*a;this.earningsForTask.money+=n,this.earningsForPlayer.money+=n,e.gainMoney(n,"sleeves")}getMemoryUpgradeCost(e){const t=Math.round(e);if(t<0)return 0;if(this.memory+t>100)return this.getMemoryUpgradeCost(100-this.memory);let a=0,n=this.memory-1;for(let t=0;t<e;++t)a+=Math.pow(1.02,n),++n;return 1e12*a}getRepGain(e){if(this.currentTask!==n.a.Faction){if(this.currentTask===n.a.Company){const t=this.currentTaskLocation,a=s.a[t];if(null==a)return console.error("Invalid company found when trying to calculate rep gain: "+t),0;const n=c.a[e.jobs[t]];if(null==n)return console.error("Invalid company position name found when trying to calculate rep gain: "+e.jobs[t]),0;const r=n.calculateJobPerformance(this.hacking,this.strength,this.defense,this.dexterity,this.agility,this.charisma),i=1+a.favor/100;return r*this.company_rep_mult*i}return 0}{let e=1;const t=h.a[this.currentTaskLocation];switch(null!=t&&(e=1+t.favor/100),this.factionWorkType){case d.a.Hacking:return this.getFactionHackingWorkRepGain()*(this.shock/100)*e;case d.a.Field:return this.getFactionFieldWorkRepGain()*(this.shock/100)*e;case d.a.Security:return this.getFactionSecurityWorkRepGain()*(this.shock/100)*e;default:return console.warn("Invalid Sleeve.factionWorkType property in Sleeve.getRepGain(): "+this.factionWorkType),0}}}installAugmentation(e){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.applyAugmentation(e),this.augmentations.push({name:e.name,level:1}),this.updateStatLevels()}log(e){this.logs.push(e),this.logs.length>50&&this.logs.shift()}prestige(e){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(e),this.augmentations=[],this.resetMultipliers(),this.shock=1,this.storedCycles=0,this.sync=Math.max(this.memory,1),this.logs=[]}process(e,t=1){const a=1e3/u.a.MilliPerCycle;if(this.storedCycles+=t,this.storedCycles<a)return null;let i=this.storedCycles;i=Math.min(i,15);let o=i*u.a.MilliPerCycle;0!==this.currentTaskMaxTime&&this.currentTaskTime+o>this.currentTaskMaxTime&&(o=this.currentTaskMaxTime-this.currentTaskTime,i=Math.floor(o/u.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 n.a.Idle:break;case n.a.Class:case n.a.Gym:this.updateTaskGainRates(e),c=this.gainExperience(e,this.gainRatesForTask,i),this.gainMoney(e,this.gainRatesForTask,i);break;case n.a.Faction:{c=this.gainExperience(e,this.gainRatesForTask,i),this.gainMoney(e,this.gainRatesForTask,i);const t=h.a[this.currentTaskLocation];if(!(t instanceof m.a)){console.error("Invalid faction for Sleeve task: "+this.currentTaskLocation);break}t.playerReputation+=this.getRepGain(e)*i;break}case n.a.Company:{c=this.gainExperience(e,this.gainRatesForTask,i),this.gainMoney(e,this.gainRatesForTask,i);const t=s.a[this.currentTaskLocation];if(!(t instanceof l.a)){console.error("Invalid company for Sleeve task: "+this.currentTaskLocation);break}t.playerReputation+=this.getRepGain(e)*i;break}case n.a.Recovery:this.shock=Math.min(100,this.shock+2e-4*i),this.shock>=100&&this.resetTaskStatus();break;case n.a.Synchro:this.sync=Math.min(100,this.sync+2e-4*e.getIntelligenceBonus(.5)*i),this.sync>=100&&this.resetTaskStatus()}return 0!==this.currentTaskMaxTime&&this.currentTaskTime>=this.currentTaskMaxTime&&(this.currentTask===n.a.Crime?c=this.finishTask(e):this.finishTask(e)),this.updateStatLevels(),this.storedCycles-=i,c}resetTaskStatus(){this.earningsForTask=Object(r.b)(),this.gainRatesForTask=Object(r.b)(),this.currentTask=n.a.Idle,this.currentTaskTime=0,this.currentTaskMaxTime=0,this.factionWorkType=d.a.None,this.crimeType="",this.currentTaskLocation="",this.gymStatType="",this.className=""}shockRecovery(e){return this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus(),this.currentTask=n.a.Recovery,!0}synchronize(e){return this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus(),this.currentTask=n.a.Synchro,!0}takeUniversityCourse(e,t,a){this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus();let r=1;switch(t.toLowerCase()){case f.a.AevumSummitUniversity.toLowerCase():if(this.city!==p.a.Aevum)return!1;this.currentTaskLocation=f.a.AevumSummitUniversity,r=4;break;case f.a.Sector12RothmanUniversity.toLowerCase():if(this.city!==p.a.Sector12)return!1;this.currentTaskLocation=f.a.Sector12RothmanUniversity,r=3;break;case f.a.VolhavenZBInstituteOfTechnology.toLowerCase():if(this.city!==p.a.Volhaven)return!1;this.currentTaskLocation=f.a.VolhavenZBInstituteOfTechnology,r=5;break;default:return!1}switch(a.toLowerCase()){case"study computer science":break;case"data structures":this.gainRatesForTask.money=u.a.ClassDataStructuresBaseCost*r*-1;break;case"networks":this.gainRatesForTask.money=u.a.ClassNetworksBaseCost*r*-1;break;case"algorithms":this.gainRatesForTask.money=u.a.ClassAlgorithmsBaseCost*r*-1;break;case"management":this.gainRatesForTask.money=u.a.ClassManagementBaseCost*r*-1;break;case"leadership":this.gainRatesForTask.money=u.a.ClassLeadershipBaseCost*r*-1;break;default:return!1}return this.className=a,this.currentTask=n.a.Class,!0}travel(e,t){return e.loseMoney(u.a.TravelCost,"sleeves"),this.city=t,!0}tryBuyAugmentation(e,t){return!!e.canAfford(t.startingCost)&&(!this.augmentations.some(e=>e.name===t.name)&&(e.loseMoney(t.startingCost,"sleeves"),this.installAugmentation(t),!0))}updateTaskGainRates(e){if(this.currentTask!==n.a.Class)if(this.currentTask!==n.a.Gym)console.warn("Sleeve.updateTaskGainRates() called for unexpected task type "+this.currentTask);else{let t=1;switch(this.currentTaskLocation.toLowerCase()){case f.a.AevumCrushFitnessGym.toLowerCase():t=2;break;case f.a.AevumSnapFitnessGym.toLowerCase():t=5;break;case f.a.Sector12IronGym.toLowerCase():t=1;break;case f.a.Sector12PowerhouseGym.toLowerCase():t=10;break;case f.a.VolhavenMilleniumFitnessGym.toLowerCase():t=4;break;default:return}const a=1,n=e.hashManager.getTrainingMult()*t,r=this.gymStatType.toLowerCase();r.includes("str")?this.gainRatesForTask.str=a*n*this.strength_exp_mult:r.includes("def")?this.gainRatesForTask.def=a*n*this.defense_exp_mult:r.includes("dex")?this.gainRatesForTask.dex=a*n*this.dexterity_exp_mult:r.includes("agi")&&(this.gainRatesForTask.agi=a*n*this.agility_exp_mult)}else{let t=1;switch(this.currentTaskLocation.toLowerCase()){case f.a.AevumSummitUniversity.toLowerCase():t=3;break;case f.a.Sector12RothmanUniversity.toLowerCase():t=2;break;case f.a.VolhavenZBInstituteOfTechnology.toLowerCase():t=4;break;default:return}const a=t*e.hashManager.getStudyMult();switch(this.className.toLowerCase()){case"study computer science":this.gainRatesForTask.hack=u.a.ClassStudyComputerScienceBaseExp*a*this.hacking_exp_mult;break;case"data structures":this.gainRatesForTask.hack=u.a.ClassDataStructuresBaseExp*a*this.hacking_exp_mult;break;case"networks":this.gainRatesForTask.hack=u.a.ClassNetworksBaseExp*a*this.hacking_exp_mult;break;case"algorithms":this.gainRatesForTask.hack=u.a.ClassAlgorithmsBaseExp*a*this.hacking_exp_mult;break;case"management":this.gainRatesForTask.cha=u.a.ClassManagementBaseExp*a*this.charisma_exp_mult;break;case"leadership":this.gainRatesForTask.cha=u.a.ClassLeadershipBaseExp*a*this.charisma_exp_mult}}}upgradeMemory(e){e<0?console.warn("Sleeve.upgradeMemory() called with negative value: "+e):this.memory=Math.min(100,Math.round(this.memory+e))}workForCompany(e,t){if(!(s.a[t]instanceof l.a)||null==e.jobs[t])return!1;this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus();const a=s.a[t],r=c.a[e.jobs[t]];return null!=a&&(null!=r&&(this.gainRatesForTask.money=r.baseSalary*a.salaryMultiplier*this.work_money_mult*i.a.CompanyWorkMoney,this.gainRatesForTask.hack=r.hackingExpGain*a.expMultiplier*this.hacking_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.str=r.strengthExpGain*a.expMultiplier*this.strength_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.def=r.defenseExpGain*a.expMultiplier*this.defense_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.dex=r.dexterityExpGain*a.expMultiplier*this.dexterity_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.agi=r.agilityExpGain*a.expMultiplier*this.agility_exp_mult*i.a.CompanyWorkExpGain,this.gainRatesForTask.cha=r.charismaExpGain*a.expMultiplier*this.charisma_exp_mult*i.a.CompanyWorkExpGain,this.currentTaskLocation=t,this.currentTask=n.a.Company,!0))}workForFaction(e,t,a){if(""===t)return!1;if(!(h.a[t]instanceof m.a&&e.factions.includes(t)))return!1;this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus();const r=h.a[t].getInfo(),o=a.toLowerCase();if(o.includes("hack")){if(!r.offerHackingWork)return!1;this.factionWorkType=d.a.Hacking,this.gainRatesForTask.hack=.15*this.hacking_exp_mult*i.a.FactionWorkExpGain}else if(o.includes("field")){if(!r.offerFieldWork)return!1;this.factionWorkType=d.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(!o.includes("security"))return!1;if(!r.offerSecurityWork)return!1;this.factionWorkType=d.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=t,this.currentTask=n.a.Faction,!0}workoutAtGym(e,t,a){this.currentTask!==n.a.Idle?this.finishTask(e):this.resetTaskStatus();let r=1;switch(t.toLowerCase()){case f.a.AevumCrushFitnessGym.toLowerCase():if(this.city!=p.a.Aevum)return!1;this.currentTaskLocation=f.a.AevumCrushFitnessGym,r=3;break;case f.a.AevumSnapFitnessGym.toLowerCase():if(this.city!=p.a.Aevum)return!1;this.currentTaskLocation=f.a.AevumSnapFitnessGym,r=10;break;case f.a.Sector12IronGym.toLowerCase():if(this.city!=p.a.Sector12)return!1;this.currentTaskLocation=f.a.Sector12IronGym,r=1;break;case f.a.Sector12PowerhouseGym.toLowerCase():if(this.city!=p.a.Sector12)return!1;this.currentTaskLocation=f.a.Sector12PowerhouseGym,r=20;break;case f.a.VolhavenMilleniumFitnessGym.toLowerCase():if(this.city!=p.a.Volhaven)return!1;this.currentTaskLocation=f.a.VolhavenMilleniumFitnessGym,r=7;break;default:return!1}const i=a.toLowerCase();return this.gainRatesForTask.money=u.a.ClassGymBaseCost*r*-1,!!(i.includes("str")||i.includes("def")||i.includes("dex")||i.includes("agi"))&&(this.gymStatType=a,this.currentTask=n.a.Gym,!0)}toJSON(){return Object(g.b)("Sleeve",this)}static fromJSON(e){return Object(g.a)(b,e.data)}}g.c.constructors.Sleeve=b},function(e,t,a){"use strict";a.d(t,"b",(function(){return r})),a.d(t,"a",(function(){return i}));var n=a(122);const r=new n.a,i=new n.a},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(21);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e="",t=""){r(this,"filename",""),r(this,"msg",""),r(this,"recvd",!1),this.filename=e,this.msg=t,this.recvd=!1}toJSON(){return Object(n.b)("Message",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.Message=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(235),r=a(139),i=a(105),o=a(69),s=a(4),l=a(16),c=a(15),u=a(11),m=a(0);function h(e,t,a,n){const s=n.stockMarket.Orders;if(null==s){const e={};for(const t in n.stockMarket){const a=n.stockMarket[t];a instanceof r.a&&(e[a.symbol]=[])}return void(n.stockMarket.Orders=e)}let l=s[e.symbol];if(null==l||l.constructor!==Array)return console.error(`Invalid Order book for ${e.symbol} in processOrders(): ${l}`),void(l=[]);for(const r of l)if(r.type===t&&r.pos===a)switch(r.type){case i.a.LimitBuy:(r.pos===o.a.Long&&e.price<=r.price||r.pos===o.a.Short&&e.price>=r.price)&&d(r,n);break;case i.a.LimitSell:case i.a.StopBuy:(r.pos===o.a.Long&&e.price>=r.price||r.pos===o.a.Short&&e.price<=r.price)&&d(r,n);break;case i.a.StopSell:(r.pos===o.a.Long&&e.price<=r.price||r.pos===o.a.Short&&e.price>=r.price)&&d(r,n);break;default:return void console.warn("Invalid order type: "+r.type)}}function d(e,t){const a=t.symbolToStockMap[e.stockSymbol];if(!(a instanceof r.a))return void console.error("Could not find stock for this order: "+e.stockSymbol);const h=t.stockMarket.Orders[a.symbol],d={suppressDialog:!0};let p=!0,f=!1;switch(e.type){case i.a.LimitBuy:case i.a.StopBuy:f=!0,e.pos===o.a.Long?p=Object(n.a)(a,e.shares,null,d)&&p:e.pos===o.a.Short&&(p=Object(n.d)(a,e.shares,null,d)&&p);break;case i.a.LimitSell:case i.a.StopSell:e.pos===o.a.Long?p=Object(n.c)(a,e.shares,null,d)&&p:e.pos===o.a.Short&&(p=Object(n.b)(a,e.shares,null,d)&&p);break;default:return void console.warn("Invalid order type: "+e.type)}const g=e.pos===o.a.Long?"Long":"Short";if(p){for(let t=0;t<h.length;++t)if(e==h[t])return h.splice(t,1),void(u.a.SuppressTIXPopup||Object(c.a)(m.createElement(m.Fragment,null,e.type," for ",a.symbol," @ ",m.createElement(l.a,{money:e.price})," (",g,") was filled (",s.a.formatShares(Math.round(e.shares))," shares)")));console.error("Could not find the following Order in Order Book: "),console.error(e)}else f&&Object(c.a)(m.createElement(m.Fragment,null,"Failed to execute ",e.type," for ",a.symbol," @ ",m.createElement(l.a,{money:e.price})," (",g,"). This is most likely because you do not have enough money or the order would exceed the stock's maximum number of shares"))}},,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return P})),a.d(t,"b",(function(){return I}));var n=a(20),r=a(143),i=a(6),o=a(220),s=a(224),l=a(62),c=a(51),u=a(61),m=a(193),h=a(26),d=a(120),p=a(55),f=a(255),g=a(181),y=a(2),b=a(92),E=a(472),k=a(60),v=a(24),_=a(123),w=a(80),S=a(98),C=a(95),x=a(83),O=a(15),M=a(110),T=a(373),R=a(374),A=a(8),N=a(167);function P(){Object(o.b)(y.a);const e=y.a.factions.concat(y.a.factionInvitations).filter((function(e){return h.a[e].getInfo().keep}));y.a.prestigeAugmentation(),Object(g.c)();const t=y.a.getHomeComputer();Object(v.i)(),Object(v.a)(t),Object(_.d)(y.a,t),Object(r.b)(i.a.Neurolink)&&n.a[i.a.Neurolink].owned&&(t.programs.push(u.a.FTPCrackProgram.name),t.programs.push(u.a.RelaySMTPProgram.name)),Object(r.b)(i.a.CashRoot)&&n.a[i.a.CashRoot].owned&&(y.a.setMoney(1e6),t.programs.push(u.a.BruteSSHProgram.name)),Object(r.b)(i.a.PCMatrix)&&n.a[i.a.PCMatrix].owned&&(t.programs.push(u.a.DeepscanV1.name),t.programs.push(u.a.AutoLink.name)),(y.a.sourceFileLvl(5)>0||5===y.a.bitNodeN)&&t.programs.push(u.a.Formulas.name),Object(v.f)(y.a.getHomeComputer());for(const e in l.a)l.a.hasOwnProperty(e)&&l.a[e].gainFavor();for(const e in h.a)h.a.hasOwnProperty(e)&&h.a[e].gainFavor();null!==x.a.action&&x.a.finishAction(b.b,y.a,!0),x.a.clear(),N.a.emit(),Object(h.c)(),y.a.factionInvitations=y.a.factionInvitations.concat(e),Object(r.c)(),y.a.reapplyAllSourceFiles(),Object(l.b)(),Object(f.c)();const a=y.a.gang;if(y.a.inGang()&&null!==a){const e=h.a[a.facName];e instanceof m.a&&Object(d.d)(e)}if(3===y.a.bitNodeN&&t.messages.push(k.a.CorporationManagementHandbook),y.a.bladeburner instanceof s.a&&y.a.bladeburner.prestige(),8===y.a.bitNodeN&&(y.a.money=25e7),(8===y.a.bitNodeN||w.a[8]>0)&&(y.a.hasWseAccount=!0,y.a.hasTixApiAccess=!0),y.a.hasWseAccount&&(Object(C.f)(),Object(C.h)()),Object(r.b)(i.a.TheRedPill)&&n.a[i.a.TheRedPill].owned){const e=Object(v.d)(S.a.WorldDaemon),t=Object(v.d)(S.a.DaedalusServer);e&&t&&(e.serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(e.hostname))}Object(r.b)(i.a.StaneksGift1)&&n.a[i.a.StaneksGift1].owned&&Object(d.d)(h.a["Church of the Machine God"]),M.b.prestigeAugmentation(),Object(E.b)(),T.b.splice(0,T.b.length),R.b.splice(0,R.b.length)}function I(e){Object(o.b)(y.a),Object(w.b)(y.a),y.a.prestigeSourceFile(),Object(g.c)();const t=y.a.getHomeComputer();null!==x.a.action&&x.a.finishAction(b.b,y.a,!0),x.a.clear(),N.a.emit(),Object(v.i)(),Object(v.a)(t),Object(_.d)(y.a,t),Object(v.f)(y.a.getHomeComputer()),w.a[9]>=2?t.setMaxRam(128):w.a[1]>0?t.setMaxRam(32):t.setMaxRam(8),t.cpuCores=1;for(const e in l.a)l.a.hasOwnProperty(e)&&(l.a[e].favor=0);for(const e in h.a)h.a.hasOwnProperty(e)&&(h.a[e].favor=0);null!==x.a.action&&x.a.finishAction(b.b,y.a,!0);for(const e in n.a)n.a.hasOwnProperty(e)&&delete n.a[e];if(w.a[12]>0&&y.a.augmentations.push({name:i.a.NeuroFluxGovernor,level:w.a[12]}),Object(h.c)(),Object(r.c)(),y.a.reapplyAllSourceFiles(),Object(l.b)(),Object(f.c)(),y.a.sourceFileLvl(5)>0&&t.programs.push(u.a.Formulas.name),3===y.a.bitNodeN&&(t.messages.push(k.a.CorporationManagementHandbook),Object(O.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===y.a.bitNodeN&&(y.a.money=25e7),(8===y.a.bitNodeN||w.a[8]>0)&&(y.a.hasWseAccount=!0,y.a.hasTixApiAccess=!0),10===y.a.bitNodeN&&Object(O.a)("Visit VitaLife in New Tokyo if you'd like to purchase a new sleeve!"),13===y.a.bitNodeN&&Object(O.a)("Trouble is brewing in Chongqing"),y.a.hasWseAccount?(Object(C.f)(),Object(C.h)()):Object(C.d)(),y.a.gang=null,y.a.corporation=null,Object(c.e)(),y.a.bladeburner=null,w.a[9]>=3){const e=y.a.createHacknetServer();e.level=100,e.cores=10,e.cache=5,e.updateHashRate(y.a.hacknet_node_money_mult),e.updateHashCapacity(),Object(p.p)(y.a)}13===y.a.bitNodeN&&(y.a.money=A.a.TravelCost),M.b.prestigeSourceFile(),0===w.a[5]||e||y.a.gainIntelligenceExp(300),Object(E.b)()}},function(e,t,a){"use strict";function n(){return new Promise((e,t)=>{window.indexedDB||t("Indexed DB does not exists");const a=window.indexedDB.open("bitburnerSave",1);a.onupgradeneeded=function(){this.result.createObjectStore("savestring")},a.onerror=function(e){t("Failed to get IDB "+e)},a.onsuccess=function(){const a=this.result;a?e(a.transaction(["savestring"],"readwrite").objectStore("savestring")):t("database loading result was undefined")}})}function r(){return new Promise((e,t)=>{n().then(t=>new Promise((e,a)=>{const n=t.get("save");n.onerror=function(e){a("Error in Database request to get savestring: "+e)},n.onsuccess=function(){e(this.result)}}).then(t=>e(t))).catch(e=>t(e))})}function i(e){return n().then(t=>new Promise((a,n)=>{const r=t.put(e,"save");r.onerror=function(e){n("Error saving game to IndexedDB: "+e)},r.onsuccess=()=>a()}))}function o(){return n().then(e=>{e.delete("save")})}a.d(t,"b",(function(){return r})),a.d(t,"c",(function(){return i})),a.d(t,"a",(function(){return o}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return T})),a.d(t,"b",(function(){return R}));var n=a(6),r=a(124),i=a(210),o=a(8),s=a(51),l=a(109),c=a(26),u=a(68),m=a(302),h=a(34),d=a(55),p=a(208),f=a(87),g=a(23),y=a(2),b=a(61),E=a(24),k=a(98),v=a(44),_=a(92),w=a(27),S=a(914);const C=S.a;function x(){const e=Object(E.d)(k.a.WorldDaemon);return e instanceof v.a&&(!!e.backdoorInstalled||null!==y.a.bladeburner&&y.a.bladeburner.blackops.hasOwnProperty("Operation Daedalus"))}function O(e,t){return e.bitNodeN===t||e.sourceFiles.some(e=>e.n===t)}function M(e){return e.sourceFiles.some(e=>1===e.n)}const T={CYBERSEC:{...C.CYBERSEC,Icon:"CSEC",Condition:()=>y.a.factions.includes("CyberSec")},NITESEC:{...C.NITESEC,Icon:"NiteSec",Condition:()=>y.a.factions.includes("NiteSec")},THE_BLACK_HAND:{...C.THE_BLACK_HAND,Icon:"TBH",Condition:()=>y.a.factions.includes("The Black Hand")},BITRUNNERS:{...C.BITRUNNERS,Icon:"bitrunners",Condition:()=>y.a.factions.includes("BitRunners")},DAEDALUS:{...C.DAEDALUS,Icon:"daedalus",Condition:()=>y.a.factions.includes("Daedalus")},THE_COVENANT:{...C.THE_COVENANT,Icon:"thecovenant",Condition:()=>y.a.factions.includes("The Covenant")},ILLUMINATI:{...C.ILLUMINATI,Icon:"illuminati",Condition:()=>y.a.factions.includes("Illuminati")},"BRUTESSH.EXE":{...C["BRUTESSH.EXE"],Icon:"p0",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.BruteSSHProgram.name)},"FTPCRACK.EXE":{...C["FTPCRACK.EXE"],Icon:"p1",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.FTPCrackProgram.name)},"RELAYSMTP.EXE":{...C["RELAYSMTP.EXE"],Icon:"p2",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.RelaySMTPProgram.name)},"HTTPWORM.EXE":{...C["HTTPWORM.EXE"],Icon:"p3",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.HTTPWormProgram.name)},"SQLINJECT.EXE":{...C["SQLINJECT.EXE"],Icon:"p4",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.SQLInjectProgram.name)},"FORMULAS.EXE":{...C["FORMULAS.EXE"],Icon:"formulas",Condition:()=>y.a.getHomeComputer().programs.includes(b.a.Formulas.name)},"SF1.1":{...C["SF1.1"],Icon:"SF1.1",Visible:()=>O(y.a,1),Condition:()=>y.a.sourceFileLvl(1)>=1},"SF2.1":{...C["SF2.1"],Icon:"SF2.1",Visible:()=>O(y.a,2),Condition:()=>y.a.sourceFileLvl(2)>=1},"SF3.1":{...C["SF3.1"],Icon:"SF3.1",Visible:()=>O(y.a,3),Condition:()=>y.a.sourceFileLvl(3)>=1},"SF4.1":{...C["SF4.1"],Icon:"SF4.1",Visible:()=>O(y.a,4),Condition:()=>y.a.sourceFileLvl(4)>=1},"SF5.1":{...C["SF5.1"],Icon:"SF5.1",Visible:()=>O(y.a,5),Condition:()=>y.a.sourceFileLvl(5)>=1},"SF6.1":{...C["SF6.1"],Icon:"SF6.1",Visible:()=>O(y.a,6),Condition:()=>y.a.sourceFileLvl(6)>=1},"SF7.1":{...C["SF7.1"],Icon:"SF7.1",Visible:()=>O(y.a,7),Condition:()=>y.a.sourceFileLvl(7)>=1},"SF8.1":{...C["SF8.1"],Icon:"SF8.1",Visible:()=>O(y.a,8),Condition:()=>y.a.sourceFileLvl(8)>=1},"SF9.1":{...C["SF9.1"],Icon:"SF9.1",Visible:()=>O(y.a,9),Condition:()=>y.a.sourceFileLvl(9)>=1},"SF10.1":{...C["SF10.1"],Icon:"SF10.1",Visible:()=>O(y.a,10),Condition:()=>y.a.sourceFileLvl(10)>=1},"SF11.1":{...C["SF11.1"],Icon:"SF11.1",Visible:()=>O(y.a,11),Condition:()=>y.a.sourceFileLvl(11)>=1},"SF12.1":{...C["SF12.1"],Icon:"SF12.1",Visible:()=>O(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=1},MONEY_1Q:{...C.MONEY_1Q,Icon:"$1Q",Condition:()=>y.a.money>=1e18},MONEY_M1B:{...C.MONEY_M1B,Icon:"-1b",Secret:!0,Condition:()=>y.a.money<=-1e9},INSTALL_1:{...C.INSTALL_1,Icon:"install",Condition:()=>y.a.augmentations.length>=1},INSTALL_100:{...C.INSTALL_100,Icon:"install_100",Condition:()=>y.a.augmentations.length>=100},QUEUE_40:{...C.QUEUE_40,Icon:"queue40",Condition:()=>y.a.queuedAugmentations.length>=40},HACKING_100000:{...C.HACKING_100000,Icon:"hack100000",Condition:()=>y.a.hacking>=1e5},COMBAT_3000:{...C.COMBAT_3000,Icon:"combat3000",Condition:()=>y.a.strength>=3e3&&y.a.defense>=3e3&&y.a.dexterity>=3e3&&y.a.agility>=3e3},NEUROFLUX_255:{...C.NEUROFLUX_255,Icon:"nf255",Condition:()=>y.a.augmentations.some(e=>e.name===n.a.NeuroFluxGovernor&&e.level>=255)},NS2:{...C.NS2,Icon:"ns2",Condition:()=>y.a.getHomeComputer().scripts.some(e=>e.filename.endsWith(".js")||e.filename.endsWith(".ns"))},FROZE:{...C.FROZE,Icon:"forze",Condition:()=>location.href.includes("noScripts")},RUNNING_SCRIPTS_1000:{...C.RUNNING_SCRIPTS_1000,Icon:"run1000",Condition:()=>{let e=0;for(const t of Object(E.c)())e+=t.runningScripts.length;return e>=1e3}},DRAIN_SERVER:{...C.DRAIN_SERVER,Icon:"drain",Condition:()=>{for(const e of Object(E.c)())if(e instanceof v.a&&e.moneyMax>0&&0===e.moneyAvailable)return!0;return!1}},MAX_RAM:{...C.MAX_RAM,Icon:"maxram",Condition:()=>y.a.getHomeComputer().maxRam===o.a.HomeComputerMaxRam},MAX_CORES:{...C.MAX_CORES,Icon:"maxcores",Condition:()=>8===y.a.getHomeComputer().cpuCores},SCRIPTS_30:{...C.SCRIPTS_30,Icon:"folders",Condition:()=>y.a.getHomeComputer().scripts.length>=30},KARMA_1000000:{...C.KARMA_1000000,Icon:"karma",Secret:!0,Condition:()=>y.a.karma<=-1e6},STOCK_1q:{...C.STOCK_1q,Icon:"$1Q",Condition:()=>y.a.moneySourceB.stock>=1e15},DISCOUNT:{...C.DISCOUNT,Icon:"discount",Condition:()=>{const e=Object(E.d)("powerhouse-fitness");return e instanceof v.a&&e.backdoorInstalled}},SCRIPT_32GB:{...C.SCRIPT_32GB,Icon:"bigcost",Condition:()=>y.a.getHomeComputer().scripts.some(e=>e.ramUsage>=32)},FIRST_HACKNET_NODE:{...C.FIRST_HACKNET_NODE,Icon:"node",Condition:()=>!Object(d.g)(y.a)&&y.a.hacknetNodes.length>0},"30_HACKNET_NODE":{...C["30_HACKNET_NODE"],Icon:"hacknet-all",Condition:()=>!Object(d.g)(y.a)&&y.a.hacknetNodes.length>=30},MAX_HACKNET_NODE:{...C.MAX_HACKNET_NODE,Icon:"hacknet-max",Condition:()=>{if(Object(d.g)(y.a))return!1;for(const e of y.a.hacknetNodes){if(!(e instanceof p.a))return!1;if(e.ram===h.a.MaxRam&&e.cores===h.a.MaxCores&&e.level===h.a.MaxLevel)return!0}return!1}},HACKNET_NODE_10M:{...C.HACKNET_NODE_10M,Icon:"hacknet-10m",Condition:()=>!Object(d.g)(y.a)&&y.a.moneySourceB.hacknet>=1e7},REPUTATION_10M:{...C.REPUTATION_10M,Icon:"reputation",Condition:()=>Object.values(c.a).some(e=>e.playerReputation>=1e7)},DONATION:{...C.DONATION,Icon:"donation",Condition:()=>Object.values(c.a).some(e=>e.favor>=150)},TRAVEL:{...C.TRAVEL,Icon:"travel",Condition:()=>y.a.city!==g.a.Sector12},WORKOUT:{...C.WORKOUT,Icon:"WORKOUT",Condition:()=>[o.a.ClassGymStrength,o.a.ClassGymDefense,o.a.ClassGymDexterity,o.a.ClassGymAgility].includes(y.a.className)},TOR:{...C.TOR,Icon:"TOR",Condition:()=>y.a.hasTorRouter()},HOSPITALIZED:{...C.HOSPITALIZED,Icon:"OUCH",Condition:()=>0!==y.a.moneySourceB.hospitalization},GANG:{...C.GANG,Icon:"GANG",Visible:()=>O(y.a,2),Condition:()=>null!==y.a.gang},FULL_GANG:{...C.FULL_GANG,Icon:"GANGMAX",Visible:()=>O(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.length===m.a.MaximumGangMembers},GANG_TERRITORY:{...C.GANG_TERRITORY,Icon:"GANG100%",Visible:()=>O(y.a,2),Condition:()=>null!==y.a.gang&&u.a[y.a.gang.facName].territory>=.999},GANG_MEMBER_POWER:{...C.GANG_MEMBER_POWER,Icon:"GANG10000",Visible:()=>O(y.a,2),Condition:()=>null!==y.a.gang&&y.a.gang.members.some(e=>e.hack>=1e4||e.str>=1e4||e.def>=1e4||e.dex>=1e4||e.agi>=1e4||e.cha>=1e4)},CORPORATION:{...C.CORPORATION,Icon:"CORP",Visible:()=>O(y.a,3),Condition:()=>null!==y.a.corporation},CORPORATION_BRIBE:{...C.CORPORATION_BRIBE,Icon:"CORPLOBBY",Visible:()=>O(y.a,3),Condition:()=>null!==y.a.corporation&&1===y.a.corporation.unlockUpgrades[6]},CORPORATION_PROD_1000:{...C.CORPORATION_PROD_1000,Icon:"CORP1000",Visible:()=>O(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(e=>e.prodMult>=1e3)},CORPORATION_EMPLOYEE_3000:{...C.CORPORATION_EMPLOYEE_3000,Icon:"CORPCITY",Visible:()=>O(y.a,3),Condition:()=>{if(null===y.a.corporation)return!1;for(const e of y.a.corporation.divisions)for(const t of Object.values(e.offices))if(0!==t&&t.employees.length>=3e3)return!0;return!1}},CORPORATION_REAL_ESTATE:{...C.CORPORATION_REAL_ESTATE,Icon:"CORPRE",Name:"Own the land",Description:"Expand to the Real Estate division.",Visible:()=>O(y.a,3),Condition:()=>null!==y.a.corporation&&y.a.corporation.divisions.some(e=>e.type===s.a.RealEstate)},INTELLIGENCE_255:{...C.INTELLIGENCE_255,Icon:"INT255",Visible:()=>O(y.a,5),Condition:()=>y.a.intelligence>=255},BLADEBURNER_DIVISION:{...C.BLADEBURNER_DIVISION,Icon:"BLADE",Visible:()=>O(y.a,6),Condition:()=>null!==y.a.bladeburner},BLADEBURNER_OVERCLOCK:{...C.BLADEBURNER_OVERCLOCK,Icon:"BLADEOVERCLOCK",Visible:()=>O(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skills[r.a.Overclock]===i.a[r.a.Overclock].maxLvl},BLADEBURNER_UNSPENT_100000:{...C.BLADEBURNER_UNSPENT_100000,Icon:"BLADE100K",Visible:()=>O(y.a,6),Condition:()=>null!==y.a.bladeburner&&y.a.bladeburner.skillPoints>=1e5},"4S":{...C["4S"],Icon:"4S",Condition:()=>y.a.has4SData},FIRST_HACKNET_SERVER:{...C.FIRST_HACKNET_SERVER,Icon:"HASHNET",Visible:()=>O(y.a,9),Condition:()=>Object(d.g)(y.a)&&y.a.hacknetNodes.length>0,AdditionalUnlock:[C.FIRST_HACKNET_NODE.ID]},ALL_HACKNET_SERVER:{...C.ALL_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>O(y.a,9),Condition:()=>Object(d.g)(y.a)&&y.a.hacknetNodes.length===h.b.MaxServers,AdditionalUnlock:[C["30_HACKNET_NODE"].ID]},MAX_HACKNET_SERVER:{...C.MAX_HACKNET_SERVER,Icon:"HASHNETALL",Visible:()=>O(y.a,9),Condition:()=>{if(!Object(d.g)(y.a))return!1;for(const e of y.a.hacknetNodes){if("string"!=typeof e)return!1;const t=Object(E.d)(e);if(!(t instanceof f.a))return!1;if(t.maxRam===h.b.MaxRam&&t.cores===h.b.MaxCores&&t.level===h.b.MaxLevel&&t.cache===h.b.MaxCache)return!0}return!1},AdditionalUnlock:[C.MAX_HACKNET_NODE.ID]},HACKNET_SERVER_1B:{...C.HACKNET_SERVER_1B,Icon:"HASHNETMONEY",Visible:()=>O(y.a,9),Condition:()=>Object(d.g)(y.a)&&y.a.moneySourceB.hacknet>=1e9,AdditionalUnlock:[C.HACKNET_NODE_10M.ID]},MAX_CACHE:{...C.MAX_CACHE,Icon:"HASHNETCAP",Visible:()=>O(y.a,9),Condition:()=>Object(d.g)(y.a)&&y.a.hashManager.hashes===y.a.hashManager.capacity},SLEEVE_8:{...C.SLEEVE_8,Icon:"SLEEVE8",Visible:()=>O(y.a,10),Condition:()=>8===y.a.sleeves.length},INDECISIVE:{...C.INDECISIVE,Icon:"1H",Visible:()=>M(y.a),Condition:function(){let e=0;return setInterval(()=>{_.b.page()===w.a.BitVerse?e++:e=0},6e4),()=>e>60}()},FAST_BN:{...C.FAST_BN,Icon:"2DAYS",Visible:()=>M(y.a),Condition:()=>x()&&y.a.playtimeSinceLastBitnode<1728e5},CHALLENGE_BN1:{...C.CHALLENGE_BN1,Icon:"BN1+",Visible:()=>M(y.a),Condition:()=>1===y.a.bitNodeN&&x()&&y.a.getHomeComputer().maxRam<=128&&1===y.a.getHomeComputer().cpuCores},CHALLENGE_BN2:{...C.CHALLENGE_BN2,Icon:"BN2+",Visible:()=>O(y.a,2),Condition:()=>2===y.a.bitNodeN&&x()&&null===y.a.gang},CHALLENGE_BN3:{...C.CHALLENGE_BN3,Icon:"BN3+",Visible:()=>O(y.a,3),Condition:()=>3===y.a.bitNodeN&&x()&&null===y.a.corporation},CHALLENGE_BN6:{...C.CHALLENGE_BN6,Icon:"BN6+",Visible:()=>O(y.a,6),Condition:()=>6===y.a.bitNodeN&&x()&&null===y.a.bladeburner},CHALLENGE_BN7:{...C.CHALLENGE_BN7,Icon:"BN7+",Visible:()=>O(y.a,7),Condition:()=>7===y.a.bitNodeN&&x()&&null===y.a.bladeburner},CHALLENGE_BN8:{...C.CHALLENGE_BN8,Icon:"BN8+",Visible:()=>O(y.a,8),Condition:()=>8===y.a.bitNodeN&&x()&&!y.a.has4SData&&!y.a.has4SDataTixApi},CHALLENGE_BN9:{...C.CHALLENGE_BN9,Icon:"BN9+",Visible:()=>O(y.a,9),Condition:()=>9===y.a.bitNodeN&&x()&&0===y.a.moneySourceB.hacknet&&0===y.a.moneySourceB.hacknet_expenses},CHALLENGE_BN10:{...C.CHALLENGE_BN10,Icon:"BN10+",Visible:()=>O(y.a,10),Condition:()=>10===y.a.bitNodeN&&x()&&!y.a.sleeves.some(e=>e.augmentations.length>0||e.hacking_exp>0||e.strength_exp>0||e.defense_exp>0||e.agility_exp>0||e.dexterity_exp>0||e.charisma_exp>0)},CHALLENGE_BN12:{...C.CHALLENGE_BN12,Icon:"BN12+",Visible:()=>O(y.a,12),Condition:()=>y.a.sourceFileLvl(12)>=50},BYPASS:{...C.BYPASS,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Bypass)},PROTOTYPETAMPERING:{...C.PROTOTYPETAMPERING,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.PrototypeTampering)},UNCLICKABLE:{...C.UNCLICKABLE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.Unclickable)},UNDOCUMENTEDFUNCTIONCALL:{...C.UNDOCUMENTEDFUNCTIONCALL,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.UndocumentedFunctionCall)},TIMECOMPRESSION:{...C.TIMECOMPRESSION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.TimeCompression)},REALITYALTERATION:{...C.REALITYALTERATION,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.RealityAlteration)},N00DLES:{...C.N00DLES,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.N00dles)},EDITSAVEFILE:{...C.EDITSAVEFILE,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.EditSaveFile)},UNACHIEVABLE:{...C.UNACHIEVABLE,Icon:"SF-1",Secret:!0,Condition:()=>!1},CHALLENGE_BN13:{...C.CHALLENGE_BN13,Icon:"BN13+",Visible:()=>O(y.a,13),Condition:()=>13===y.a.bitNodeN&&x()&&!y.a.augmentations.some(e=>e.name===n.a.StaneksGift1)},DEVMENU:{...C.DEVMENU,Icon:"SF-1",Secret:!0,Condition:()=>y.a.exploits.includes(l.a.YoureNotMeantToAccessThis)}};function R(){const e=y.a.achievements.map(e=>e.ID),t=Object.values(T).filter(t=>!e.includes(t.ID)&&t.Condition()).flatMap(e=>[e.ID,...e.AdditionalUnlock||[]]);for(const e of t)y.a.giveAchievement(e);document.achievements=[...y.a.achievements.map(e=>e.ID)]}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o})),a.d(t,"d",(function(){return s}));var n=a(26);let r=0;function i(){return(new Date).getTime()-r>864e5}function o(e){if(i()){for(const t of e.factions)n.a[t].favor++;r=(new Date).getTime()}}function s(e){r=e}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(58),r=a(414),i=a(21);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class s extends r.a{constructor(e=null){super(e),o(this,"reqdRank",100),o(this,"teamCount",0),e&&e.reqdRank&&(this.reqdRank=e.reqdRank),e&&e.teamCount&&(this.teamCount=e.teamCount)}getTeamSuccessBonus(e){if(this.teamCount&&this.teamCount>0){this.teamCount=Math.min(this.teamCount,e.teamSize);return Math.pow(this.teamCount,.05)}return 1}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceOperation}getChaosDifficultyBonus(e){const t=e.getCurrentCity();if(t.chaos>n.a.ChaosThreshold){const e=t.chaos-n.a.ChaosThreshold+1;return Math.pow(e,.5)}return 1}toJSON(){return Object(i.b)("Operation",this)}static fromJSON(e){return Object(i.a)(s,e.data)}}i.c.constructors.Operation=s},,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(9),r=a(60),i=a(98);const o=[{hackDifficulty:99,hostname:"ecorp",moneyAvailable:{max:7e10,min:3e10},networkLayer:15,numOpenPortsRequired:5,organizationName:n.a.AevumECorp,requiredHackingSkill:{max:1400,min:1050},serverGrowth:99,specialName:n.a.AevumECorp},{hackDifficulty:99,hostname:"megacorp",moneyAvailable:{max:6e10,min:4e10},networkLayer:15,numOpenPortsRequired:5,organizationName:n.a.Sector12MegaCorp,requiredHackingSkill:{max:1350,min:1100},serverGrowth:99,specialName:n.a.Sector12MegaCorp},{hackDifficulty:{max:88,min:72},hostname:"b-and-a",moneyAvailable:{max:3e10,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:n.a.AevumBachmanAndAssociates,requiredHackingSkill:{max:1150,min:900},serverGrowth:{max:80,min:60},specialName:n.a.AevumBachmanAndAssociates},{hackDifficulty:{max:97,min:88},hostname:"blade",literature:[r.a.BeyondMan],maxRamExponent:{max:9,min:5},moneyAvailable:{max:4e10,min:1e10},networkLayer:14,numOpenPortsRequired:5,organizationName:n.a.Sector12BladeIndustries,requiredHackingSkill:{max:1200,min:900},serverGrowth:{max:85,min:55},specialName:n.a.Sector12BladeIndustries},{hackDifficulty:99,hostname:"nwo",literature:[r.a.TheHiddenWorld],moneyAvailable:{max:4e10,min:2e10},networkLayer:14,numOpenPortsRequired:5,organizationName:n.a.VolhavenNWO,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:95,min:65},specialName:n.a.VolhavenNWO},{hackDifficulty:{max:65,min:45},hostname:"clarkinc",literature:[r.a.BeyondMan,r.a.CostOfImmortality],moneyAvailable:{max:25e9,min:15e9},networkLayer:14,numOpenPortsRequired:5,organizationName:n.a.AevumClarkeIncorporated,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:75,min:45},specialName:n.a.AevumClarkeIncorporated},{hackDifficulty:{max:99,min:90},hostname:"omnitek",literature:[r.a.CodedIntelligence,r.a.HistoryOfSynthoids],maxRamExponent:{max:9,min:7},moneyAvailable:{max:22e9,min:13e9},networkLayer:13,numOpenPortsRequired:5,organizationName:n.a.VolhavenOmniTekIncorporated,requiredHackingSkill:{max:1100,min:900},serverGrowth:{max:99,min:95},specialName:n.a.VolhavenOmniTekIncorporated},{hackDifficulty:{max:75,min:55},hostname:"4sigma",moneyAvailable:{max:25e9,min:15e9},networkLayer:13,numOpenPortsRequired:5,organizationName:n.a.Sector12FourSigma,requiredHackingSkill:{max:1250,min:900},serverGrowth:{max:99,min:75},specialName:n.a.Sector12FourSigma},{hackDifficulty:{max:99,min:95},hostname:"kuai-gong",moneyAvailable:{max:3e10,min:2e10},networkLayer:13,numOpenPortsRequired:5,organizationName:n.a.ChongqingKuaiGongInternational,requiredHackingSkill:{max:1300,min:950},serverGrowth:{max:99,min:90},specialName:n.a.ChongqingKuaiGongInternational},{hackDifficulty:{max:97,min:83},hostname:"fulcrumtech",literature:[r.a.SimulatedReality],maxRamExponent:{max:11,min:7},moneyAvailable:{max:18e8,min:14e8},networkLayer:12,numOpenPortsRequired:5,organizationName:n.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1250,min:950},serverGrowth:{max:99,min:80},specialName:n.a.AevumFulcrumTechnologies},{hackDifficulty:99,hostname:"fulcrumassets",moneyAvailable:1e6,networkLayer:15,numOpenPortsRequired:5,organizationName:n.a.AevumFulcrumTechnologies,requiredHackingSkill:{max:1600,min:1100},serverGrowth:1,specialName:i.a.FulcrumSecretTechnologies},{hackDifficulty:{max:92,min:78},hostname:"stormtech",moneyAvailable:{max:12e8,min:1e9},networkLayer:12,numOpenPortsRequired:5,organizationName:n.a.IshimaStormTechnologies,requiredHackingSkill:{max:1075,min:875},serverGrowth:{max:92,min:68},specialName:n.a.IshimaStormTechnologies},{hackDifficulty:{max:96,min:84},hostname:"defcomm",moneyAvailable:{max:95e7,min:8e8},networkLayer:9,numOpenPortsRequired:5,organizationName:n.a.NewTokyoDefComm,requiredHackingSkill:{max:1050,min:850},serverGrowth:{max:73,min:47},specialName:n.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:[r.a.BeyondMan],maxRamExponent:{max:8,min:5},moneyAvailable:{max:75e7,min:55e7},networkLayer:12,numOpenPortsRequired:5,organizationName:n.a.VolhavenHeliosLabs,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:80,min:70},specialName:n.a.VolhavenHeliosLabs},{hackDifficulty:{max:90,min:80},hostname:"vitalife",literature:[r.a.AGreenTomorrow],maxRamExponent:{max:7,min:4},moneyAvailable:{max:8e8,min:7e8},networkLayer:12,numOpenPortsRequired:5,organizationName:n.a.NewTokyoVitaLife,requiredHackingSkill:{max:900,min:775},serverGrowth:{max:80,min:60},specialName:n.a.NewTokyoVitaLife},{hackDifficulty:{max:95,min:85},hostname:"icarus",moneyAvailable:{max:1e9,min:9e8},networkLayer:9,numOpenPortsRequired:5,organizationName:n.a.Sector12IcarusMicrosystems,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:95,min:85},specialName:n.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:n.a.Sector12UniversalEnergy,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:90,min:80},specialName:n.a.Sector12UniversalEnergy},{hackDifficulty:{max:80,min:70},hostname:"titan-labs",literature:[r.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:[r.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:[r.a.AGreenTomorrow,r.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:n.a.AevumGalacticCybersystems,requiredHackingSkill:{max:875,min:825},serverGrowth:{max:90,min:70},specialName:n.a.AevumGalacticCybersystems},{hackDifficulty:{max:90,min:80},hostname:"aerocorp",literature:[r.a.ManAndMachine],moneyAvailable:{max:12e8,min:1e9},networkLayer:7,numOpenPortsRequired:5,organizationName:n.a.AevumAeroCorp,requiredHackingSkill:{max:925,min:850},serverGrowth:{max:65,min:55},specialName:n.a.AevumAeroCorp},{hackDifficulty:{max:95,min:85},hostname:"omnia",literature:[r.a.HistoryOfSynthoids],maxRamExponent:{max:6,min:4},moneyAvailable:{max:1e9,min:9e8},networkLayer:8,numOpenPortsRequired:5,organizationName:n.a.VolhavenOmniaCybersystems,requiredHackingSkill:{max:950,min:850},serverGrowth:{max:70,min:60},specialName:n.a.VolhavenOmniaCybersystems},{hackDifficulty:{max:65,min:55},hostname:"zb-def",literature:[r.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:[r.a.AGreenTomorrow,r.a.TheFailedFrontier],maxRamExponent:{max:7,min:4},moneyAvailable:{max:9e8,min:7e8},networkLayer:9,numOpenPortsRequired:5,organizationName:n.a.ChongqingSolarisSpaceSystems,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:80,min:70},specialName:n.a.ChongqingSolarisSpaceSystems},{hackDifficulty:{max:85,min:75},hostname:"deltaone",moneyAvailable:{max:17e8,min:13e8},networkLayer:8,numOpenPortsRequired:5,organizationName:n.a.Sector12DeltaOne,requiredHackingSkill:{max:900,min:800},serverGrowth:{max:70,min:50},specialName:n.a.Sector12DeltaOne},{hackDifficulty:{max:85,min:75},hostname:"global-pharm",literature:[r.a.AGreenTomorrow],maxRamExponent:{max:6,min:3},moneyAvailable:{max:175e7,min:15e8},networkLayer:7,numOpenPortsRequired:4,organizationName:n.a.NewTokyoGlobalPharmaceuticals,requiredHackingSkill:{max:850,min:750},serverGrowth:{max:90,min:80},specialName:n.a.NewTokyoGlobalPharmaceuticals},{hackDifficulty:{max:80,min:60},hostname:"nova-med",moneyAvailable:{max:125e7,min:11e8},networkLayer:10,numOpenPortsRequired:4,organizationName:n.a.IshimaNovaMedical,requiredHackingSkill:{max:850,min:775},serverGrowth:{max:85,min:65},specialName:n.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:n.a.VolhavenLexoCorp,requiredHackingSkill:{max:750,min:650},serverGrowth:{max:65,min:55},specialName:n.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:n.a.AevumRhoConstruction,requiredHackingSkill:{max:525,min:475},serverGrowth:{max:60,min:40},specialName:n.a.AevumRhoConstruction},{hackDifficulty:{max:70,min:50},hostname:"alpha-ent",literature:[r.a.Sector12Crime],maxRamExponent:{max:7,min:4},moneyAvailable:{max:75e7,min:6e8},networkLayer:6,numOpenPortsRequired:4,organizationName:n.a.Sector12AlphaEnterprises,requiredHackingSkill:{max:600,min:500},serverGrowth:{max:60,min:50},specialName:n.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:n.a.AevumPolice,requiredHackingSkill:{max:450,min:400},serverGrowth:{max:50,min:30},specialName:n.a.AevumPolice},{hackDifficulty:{max:55,min:45},hostname:"rothman-uni",literature:[r.a.SecretSocieties,r.a.TheFailedFrontier,r.a.TensionsInTechRace],maxRamExponent:{max:7,min:4},moneyAvailable:{max:25e7,min:175e6},networkLayer:5,numOpenPortsRequired:3,organizationName:n.a.Sector12RothmanUniversity,requiredHackingSkill:{max:430,min:370},serverGrowth:{max:45,min:35},specialName:n.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:n.a.VolhavenZBInstituteOfTechnology,requiredHackingSkill:{max:775,min:725},serverGrowth:{max:85,min:75},specialName:n.a.VolhavenZBInstituteOfTechnology},{hackDifficulty:{max:65,min:45},hostname:"summit-uni",literature:[r.a.SecretSocieties,r.a.TheFailedFrontier,r.a.SyntheticMuscles],maxRamExponent:{max:6,min:4},moneyAvailable:{max:35e7,min:2e8},networkLayer:5,numOpenPortsRequired:3,organizationName:n.a.AevumSummitUniversity,requiredHackingSkill:{max:475,min:425},serverGrowth:{max:60,min:40},specialName:n.a.AevumSummitUniversity},{hackDifficulty:{max:80,min:60},hostname:"syscore",moneyAvailable:{max:6e8,min:4e8},networkLayer:5,numOpenPortsRequired:4,organizationName:n.a.VolhavenSysCoreSecurities,requiredHackingSkill:{max:650,min:550},serverGrowth:{max:70,min:60},specialName:n.a.VolhavenSysCoreSecurities},{hackDifficulty:{max:70,min:60},hostname:"catalyst",literature:[r.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:"comptek",literature:[r.a.ManAndMachine],moneyAvailable:{max:25e7,min:22e7},networkLayer:4,numOpenPortsRequired:3,organizationName:n.a.VolhavenCompuTek,requiredHackingSkill:{max:400,min:300},serverGrowth:{max:65,min:45},specialName:n.a.VolhavenCompuTek},{hackDifficulty:{max:80,min:60},hostname:"netlink",literature:[r.a.SimulatedReality],maxRamExponent:{max:7,min:4},moneyAvailable:275e6,networkLayer:4,numOpenPortsRequired:3,organizationName:n.a.AevumNetLinkTechnologies,requiredHackingSkill:{max:425,min:375},serverGrowth:{max:75,min:45},specialName:n.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:n.a.NewTokyoNoodleBar,requiredHackingSkill:1,serverGrowth:3e3,specialName:n.a.NewTokyoNoodleBar},{hackDifficulty:10,hostname:"foodnstuff",literature:[r.a.Sector12Crime],maxRamExponent:4,moneyAvailable:2e6,networkLayer:1,numOpenPortsRequired:0,organizationName:n.a.Sector12FoodNStuff,requiredHackingSkill:1,serverGrowth:5,specialName:n.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:n.a.Sector12JoesGuns,requiredHackingSkill:10,serverGrowth:20,specialName:n.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:[r.a.TheHiddenWorld],maxRamExponent:5,moneyAvailable:5e6,networkLayer:3,numOpenPortsRequired:1,organizationName:"Neo Nightclub Network",requiredHackingSkill:50,serverGrowth:25},{hackDifficulty:30,hostname:"silver-helix",literature:[r.a.NewTriads],maxRamExponent:6,moneyAvailable:45e6,networkLayer:3,numOpenPortsRequired:2,organizationName:"Silver Helix",requiredHackingSkill:150,serverGrowth:30},{hackDifficulty:15,hostname:"hong-fang-tea",literature:[r.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:[r.a.TheNewGod],maxRamExponent:5,moneyAvailable:{max:7e7,min:6e7},networkLayer:3,numOpenPortsRequired:2,organizationName:n.a.IshimaOmegaSoftware,requiredHackingSkill:{max:220,min:180},serverGrowth:{max:40,min:30},specialName:n.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:n.a.AevumCrushFitnessGym},{hackDifficulty:30,hostname:"iron-gym",maxRamExponent:5,moneyAvailable:2e7,networkLayer:1,numOpenPortsRequired:1,organizationName:"Iron Gym Network",requiredHackingSkill:100,serverGrowth:20,specialName:n.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:n.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:n.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:n.a.AevumSnapFitnessGym},{hackDifficulty:0,hostname:"run4theh111z",literature:[r.a.SimulatedReality,r.a.TheNewGod],maxRamExponent:{max:9,min:5},moneyAvailable:0,networkLayer:11,numOpenPortsRequired:4,organizationName:"The Runners",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:i.a.BitRunnersServer},{hackDifficulty:0,hostname:"I.I.I.I",literature:[r.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:i.a.TheBlackHandServer},{hackDifficulty:0,hostname:"avmnite-02h",literature:[r.a.DemocracyIsDead],maxRamExponent:{max:7,min:4},moneyAvailable:0,networkLayer:4,numOpenPortsRequired:2,organizationName:"NiteSec",requiredHackingSkill:{max:220,min:202},serverGrowth:0,specialName:i.a.NiteSecServer},{hackDifficulty:0,hostname:".",maxRamExponent:4,moneyAvailable:0,networkLayer:13,numOpenPortsRequired:4,organizationName:".",requiredHackingSkill:{max:550,min:505},serverGrowth:0,specialName:i.a.TheDarkArmyServer},{hackDifficulty:0,hostname:"CSEC",literature:[r.a.DemocracyIsDead],maxRamExponent:3,moneyAvailable:0,networkLayer:2,numOpenPortsRequired:1,organizationName:"CyberSec",requiredHackingSkill:{max:60,min:51},serverGrowth:0,specialName:i.a.CyberSecServer},{hackDifficulty:0,hostname:"The-Cave",literature:[r.a.AlphaOmega],moneyAvailable:0,networkLayer:15,numOpenPortsRequired:5,organizationName:"Helios",requiredHackingSkill:925,serverGrowth:0,specialName:i.a.DaedalusServer},{hackDifficulty:0,hostname:"w0r1d_d43m0n",moneyAvailable:0,numOpenPortsRequired:5,organizationName:"w0r1d_d43m0n",requiredHackingSkill:3e3,serverGrowth:0,specialName:i.a.WorldDaemon}]},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(8),r=a(30);class i{constructor(e){this.name=e.name,this.nextPosition=e.nextPosition,this.baseSalary=e.baseSalary,this.repMultiplier=e.repMultiplier,this.requiredHacking=null!=e.reqdHacking?e.reqdHacking:0,this.requiredStrength=null!=e.reqdStrength?e.reqdStrength:0,this.requiredDefense=null!=e.reqdDefense?e.reqdDefense:0,this.requiredDexterity=null!=e.reqdDexterity?e.reqdDexterity:0,this.requiredAgility=null!=e.reqdAgility?e.reqdAgility:0,this.requiredCharisma=null!=e.reqdCharisma?e.reqdCharisma:0,this.requiredReputation=null!=e.reqdReputation?e.reqdReputation:0,this.hackingEffectiveness=null!=e.hackingEffectiveness?e.hackingEffectiveness:0,this.strengthEffectiveness=null!=e.strengthEffectiveness?e.strengthEffectiveness:0,this.defenseEffectiveness=null!=e.defenseEffectiveness?e.defenseEffectiveness:0,this.dexterityEffectiveness=null!=e.dexterityEffectiveness?e.dexterityEffectiveness:0,this.agilityEffectiveness=null!=e.agilityEffectiveness?e.agilityEffectiveness:0,this.charismaEffectiveness=null!=e.charismaEffectiveness?e.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!=e.hackingExpGain?e.hackingExpGain:0,this.strengthExpGain=null!=e.strengthExpGain?e.strengthExpGain:0,this.defenseExpGain=null!=e.defenseExpGain?e.defenseExpGain:0,this.dexterityExpGain=null!=e.dexterityExpGain?e.dexterityExpGain:0,this.agilityExpGain=null!=e.agilityExpGain?e.agilityExpGain:0,this.charismaExpGain=null!=e.charismaExpGain?e.charismaExpGain:0}calculateJobPerformance(e,t,a,r,i,o){const s=this.hackingEffectiveness*e/n.a.MaxSkillLevel,l=this.strengthEffectiveness*t/n.a.MaxSkillLevel,c=this.defenseEffectiveness*a/n.a.MaxSkillLevel,u=this.dexterityEffectiveness*r/n.a.MaxSkillLevel,m=this.agilityEffectiveness*i/n.a.MaxSkillLevel,h=this.charismaEffectiveness*o/n.a.MaxSkillLevel;let d=this.repMultiplier*(s+l+c+u+m+h)/100;return isNaN(d)&&(console.error("Company reputation gain calculated to be NaN"),d=0),d}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(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(247);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, and it is also hidden (you won't know when you gain experience and how much). 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 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(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(11),r=a(83),i=a(21),o=a(343);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class l{constructor(e=null,t=[]){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!=e&&(this.filename=e.filename,this.args=t,this.server=e.server,this.ramUsage=e.ramUsage,this.dependencies=e.dependencies)}log(e){this.logs.length>n.a.MaxLogCapacity&&this.logs.shift();let t=e;n.a.TimestampsFormat&&(t="["+Object(o.a)(n.a.TimestampsFormat)+"] "+t),this.logs.push(t),this.logUpd=!0}displayLog(){for(let e=0;e<this.logs.length;++e)r.a.print(this.logs[e])}clearLog(){this.logs.length=0}recordHack(e,t,a=1){null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][0]+=t,this.dataMap[e][1]+=a}recordGrow(e,t=1){null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][2]+=t}recordWeaken(e,t=1){null!=this.dataMap[e]&&this.dataMap[e].constructor===Array||(this.dataMap[e]=[0,0,0,0]),this.dataMap[e][3]+=t}toJSON(){return Object(i.b)("RunningScript",this)}static fromJSON(e){return Object(i.a)(l,e.data)}}i.c.constructors.RunningScript=l},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(128),o=a(29),s=a(10),l=a(6);function c(e){const t=o.b.Player(),a=e.bladeburner.getActionObject({name:e.name,type:e.type});if(null==a)throw new Error("Failed to get Operation Object for: "+e.name);let n=!1;return a.count<1&&(n=!0),"Raid"===e.name&&0===e.bladeburner.getCurrentCity().comms&&(n=!0),a instanceof i.a&&e.bladeburner.rank<a.reqdRank&&(n=!0),r.a.createElement(s.a,{sx:{mx:1},disabled:n,onClick:function(){n||(e.bladeburner.action.type=e.type,e.bladeburner.action.name=e.name,t.hasAugmentation(l.a.BladesSimulacrum,!0)||t.singularityStopWork(),e.bladeburner.startAction(t,e.bladeburner.action),e.rerender())}},"Start")}},,function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i}));const r=new class{constructor(){n(this,"m",1024),n(this,"a",341),n(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(e){n(this,"s1",0),n(this,"s2",0),n(this,"s3",0);const t=e/1e3%3e4;this.s1=t,this.s2=t,this.s3=t}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(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(1351);function r(e){try{return Object(n.a)(new Date,e)}catch(e){return"format error"}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(231),r=a(21);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class o{constructor(){i(this,"capacity",0),i(this,"hashes",0),i(this,"upgrades",{});for(const e in n.a)this.upgrades[e]=0}getMult(e){const t=n.a[e],a=this.upgrades[e];return null==t||null==a?(console.error("Could not find Hash Study upgrade"),1):1+t.value*a/100}getStudyMult(){return this.getMult("Improve Studying")}getTrainingMult(){return this.getMult("Improve Gym Training")}getUpgrade(e){const t=n.a[e];return t||(console.error("Invalid Upgrade Name given to HashManager.getUpgrade(): "+e),null)}getUpgradeCost(e){const t=this.getUpgrade(e),a=this.upgrades[e];return null==t||null==a?(console.error("Invalid Upgrade Name given to HashManager.getUpgradeCost(): "+e),1/0):t.getCost(a)}prestige(){for(const e in n.a)this.upgrades[e]=0;this.hashes=0,this.updateCapacity(0)}refundUpgrade(e){const t=n.a[e];--this.upgrades[e];const a=this.upgrades[e];if(null==t||null==a||a<0)return void console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+e);const r=t.getCost(a);this.hashes+=r}storeHashes(e){this.hashes+=e;let t=this.hashes;return this.hashes=Math.min(this.hashes,this.capacity),t-=this.hashes,t}updateCapacity(e){e<0&&(this.capacity=0),this.capacity=Math.max(e,0)}upgrade(e){if(null==n.a[e])return console.error("Invalid Upgrade Name given to HashManager.upgrade(): "+e),!1;const t=this.getUpgradeCost(e);return!(this.hashes<t)&&(this.hashes-=t,++this.upgrades[e],!0)}toJSON(){return Object(r.b)("HashManager",this)}static fromJSON(e){return Object(r.a)(o,e.data)}}r.c.constructors.HashManager=o},function(e,t,a){"use strict";a.d(t,"b",(function(){return u})),a.d(t,"c",(function(){return m})),a.d(t,"a",(function(){return h}));var n=a(104),r=a(26),i=a(2),o=a(24),s=a(98),l=a(44),c=a(32);function u(){const e=d(),t=p(),a=f(),r=g(a,t),i=new n.a(r,e,t);a.addContract(i)}function m(){const e=d(),t=p(),a=i.a.getHomeComputer(),r=g(a,t),o=new n.a(r,e,t);a.addContract(o)}function h(e){let t;const a=Object.keys(n.d);t=null!=e.problemType&&a.includes(e.problemType)?e.problemType:d();const r=p();let i,s;null!=e.server?(i=Object(o.d)(e.server),null==i&&(i=f())):i=f(),s=null!=e.fn?e.fn:g(i,r);const l=new n.a(s,t,r);i.addContract(l)}function d(){const e=Object.keys(n.d);return e[Object(c.a)(0,e.length-1)]}function p(){const e={name:"",type:Object(c.a)(0,n.c.Money)};e.type=function(e){let t=e;const a=i.a.factions.filter(e=>{try{return r.a[e].getInfo().offerHackingWork}catch(e){return console.error("Error when trying to filter Hacking Factions for Coding Contract Generation: "+e),!1}});return t===n.c.FactionReputation&&0===a.length&&(t=n.c.CompanyReputation),t===n.c.FactionReputationAll&&0===a.length&&(t=n.c.CompanyReputation),t===n.c.CompanyReputation&&0===Object.keys(i.a.jobs).length&&(t=n.c.Money),t}(e.type);const t=i.a.factions.filter(e=>r.a[e].getInfo().offerHackingWork);switch(e.type){case n.c.FactionReputation:{const a=t.length,n=t[Object(c.a)(0,a-1)];e.name=n;break}case n.c.CompanyReputation:{const t=Object.keys(i.a.jobs);t.length>0?e.name=t[Object(c.a)(0,t.length-1)]:e.type=n.c.Money;break}}return e}function f(){const e=Object(o.c)();let t=Object(c.a)(0,e.length-1),a=e[t];for(let n=0;n<200&&(!(a instanceof l.a)||a.purchasedByPlayer||a.hostname===s.a.WorldDaemon);++n)t=Object(c.a)(0,e.length-1),a=e[t];return a}function g(e,t){let a="contract-"+Object(c.a)(0,1e6);for(let t=0;t<1e3&&!(e.contracts.filter(e=>e.fn===a).length<=0);++t)a="contract-"+Object(c.a)(0,1e6);return t.name&&(a+="-"+t.name.replace(/\s/g,"")),a}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new(a(122).a)},function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o}));var n=a(81),r=a(15);function i(e,t){let a=0,i=!1;for(const r in n.a){const o=n.a[r];if(o.type==t){a=o.successRate(e),i=!0;break}}return i?Math.random()<=a:(Object(r.a)(`ERR: Unrecognized crime type: ${t} This is probably a bug please contact the developer`),!1)}function o(e){return(e=e.toLowerCase()).includes("shoplift")?n.a.Shoplift:e.includes("rob")&&e.includes("store")?n.a.RobStore:e.includes("mug")?n.a.Mug:e.includes("larceny")?n.a.Larceny:e.includes("drugs")?n.a.DealDrugs:e.includes("bond")&&e.includes("forge")?n.a.BondForgery:e.includes("traffick")&&e.includes("arms")?n.a.TraffickArms:e.includes("homicide")?n.a.Homicide:e.includes("grand")&&e.includes("auto")?n.a.GrandTheftAuto:e.includes("kidnap")?n.a.Kidnap:e.includes("assassinate")||e.includes("assassination")?n.a.Assassination:e.includes("heist")?n.a.Heist:null}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(53),r=a(42),i=a(32),o=a(22),s=a(21),l=a(843);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u{constructor(e={}){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",{[n.a.Operations]:0,[n.a.Engineer]:0,[n.a.Business]:0,[n.a.Management]:0,[n.a.RandD]:0,total:0}),this.loc=e.loc?e.loc:"",this.size=e.size?e.size:1}atCapacity(){return this.employees.length>=this.size}process(e=1,t,a){if(a.hasResearch("HRBuddy-Recruitment")&&!this.atCapacity()){const e=this.hireRandomEmployee();a.hasResearch("HRBuddy-Training")&&void 0!==e&&(e.pos=n.a.Training)}this.maxEne=100,this.maxHap=100,this.maxMor=100,a.hasResearch("Go-Juice")&&(this.maxEne+=10),a.hasResearch("JoyWire")&&(this.maxHap+=10),a.hasResearch("Sti.mu")&&(this.maxMor+=10);let r=1;t.funds<0&&a.lastCycleRevenue<0?r=Math.pow(.99,e):t.funds>0&&a.lastCycleRevenue>0&&(r=Math.pow(1.01,e));const i=a.hasResearch("AutoBrew"),o=a.hasResearch("AutoPartyManager");let s=0;for(let t=0;t<this.employees.length;++t){const a=this.employees[t];o?(a.mor=this.maxMor,a.hap=this.maxHap):(a.mor*=r,a.hap*=r,a.mor=Math.min(a.mor,this.maxMor),a.hap=Math.min(a.hap,this.maxHap)),i?a.ene=this.maxEne:(a.ene*=r,a.ene=Math.min(a.ene,this.maxEne));s+=a.process(e,this)}return this.calculateEmployeeProductivity(t,a),s}calculateEmployeeProductivity(e,t){for(const e in this.employeeProd)this.employeeProd[e]=0;let a=0;for(let n=0;n<this.employees.length;++n){const r=this.employees[n],i=r.calculateProductivity(e,t);this.employeeProd[r.pos]+=i,a+=i}this.employeeProd.total=a}hireRandomEmployee(){if(this.atCapacity())return;if(null!=document.getElementById("cmpy-mgmt-hire-employee-popup"))return;const e=Object(i.a)(50,100),t=Object(i.a)(50,100),a=Object(i.a)(50,100),n=Object(i.a)(50,100),s=Object(i.a)(50,100),c=r.a.EmployeeSalaryMultiplier*(e+t+a+n+s),u=new l.a({intelligence:e,charisma:t,experience:a,creativity:n,efficiency:s,salary:c}),m=Object(o.d)(7);for(let e=0;e<this.employees.length;++e)if(this.employees[e].name===m)return this.hireRandomEmployee();return u.name=m,this.employees.push(u),u}assignEmployeeToJob(e){for(let t=0;t<this.employees.length;++t)if(this.employees[t].pos===n.a.Unassigned)return this.employees[t].pos=e,!0;return!1}unassignEmployeeFromJob(e){for(let t=0;t<this.employees.length;++t)if(this.employees[t].pos===e)return this.employees[t].pos=n.a.Unassigned,!0;return!1}toJSON(){return Object(s.b)("OfficeSpace",this)}static fromJSON(e){return Object(s.a)(u,e.data)}}s.c.constructors.OfficeSpace=u},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={0:[0,5e5,1,1.05,"Coffee","Provide your employees with coffee, increasing their energy by 5%."],1:[1,1e9,1.06,1.03,"AdVert.Inc","Hire AdVert.Inc to advertise your company. Each level of this upgrade grants your company a static increase of 3 and 1 to its awareness and popularity, respectively. It will then increase your company's awareness by 1%, and its popularity by a random percentage between 1% and 3%. These effects are increased by other upgrades that increase the power of your advertising."]}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(40),o=a(10),s=a(1);function l(e){return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,null,e.confirmationText),r.a.createElement(o.a,{onClick:()=>{e.onConfirm()}},"Confirm")))}},,function(e,t,a){"use strict";function n(e,t){for(const a of Object.keys(t)){const n=t[a];void 0!==n&&("function"==typeof n?n(e,a):void 0!==n.func?n.func(e,t,a):(typeof e[a]!=typeof n.default&&(e[a]=n.default),"number"==typeof e[a]&&void 0!==n.min&&e[a]<n.min&&(e[a]=n.min),"number"==typeof e[a]&&void 0!==n.max&&e[a]>n.max&&(e[a]=n.max)))}}function r(e,t,a){return(n,r)=>{"number"==typeof n[r]?(n[r]<t&&(n[r]=t),n[r]>a&&(n[r]=a)):n[r]=e}}a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(21);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}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(e,t){const a=t.toLowerCase();"number"==typeof this[a]?(this[a]+=e,this.total+=e):console.warn("MoneySourceTracker.record() called with invalid source: "+t)}reset(){for(const e in this)"number"==typeof this[e]&&(this[e]=0)}toJSON(){return Object(n.b)("MoneySourceTracker",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.MoneySourceTracker=i},,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return r}));const n={primarylight:"#0f0",primary:"#0c0",primarydark:"#090",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"},r=()=>({Default:{colors:n},Monokai:{description:"Monokai'ish",colors:{primarylight:"#FFF",primary:"#F8F8F2",primarydark:"#FAFAEB",successlight:"#ADE146",success:"#A6E22E",successdark:"#98E104",errorlight:"#FF69A0",error:"#F92672",errordark:"#D10F56",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E1D992",warning:"#E6DB74",warningdark:"#EDDD54",infolight:"#92E1F1",info:"#66D9EF",infodark:"#31CDED",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#F92672",money:"#E6DB74",hack:"#A6E22E",combat:"#75715E",cha:"#AE81FF",int:"#66D9EF",rep:"#E69F66",disabled:"#66cfbc",backgroundprimary:"#272822",backgroundsecondary:"#1B1C18",button:"#333"}},Warmer:{credit:"hexnaught",description:"Warmer, softer theme",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999581020028938",colors:{primarylight:"#EA9062",primary:"#DD7B4A",primarydark:"#D3591C",successlight:"#6ACF6A",success:"#43BF43",successdark:"#3E913E",errorlight:"#C15757",error:"#B34141",errordark:"#752525",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E6E69D",warning:"#DADA56",warningdark:"#A1A106",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#AD84CF",int:"#6495ed",rep:"#faffdf",disabled:"#76C6B7",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}},"Dark+":{credit:"LoganMD",description:"VSCode Dark+",reference:"https://discord.com/channels/415207508303544321/921991895230611466/921999975867617310",colors:{primarylight:"#E0E0BC",primary:"#CCCCAE",primarydark:"#B8B89C",successlight:"#00F000",success:"#00D200",successdark:"#00B400",errorlight:"#F00000",error:"#C80000",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#969090",secondarydark:"#787272",warninglight:"#F0F000",warning:"#C8C800",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#333"}},"Mayukai Dark":{credit:"Festive Noire",description:"Mayukai Dark-esque",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922037502334889994",colors:{primarylight:"#DDDFC5",primary:"#CDCFB6",primarydark:"#9D9F8C",successlight:"#00EF00",success:"#00A500",successdark:"#007A00",errorlight:"#F92672",error:"#CA1C5C",errordark:"#90274A",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#D3D300",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#00010A",white:"#fff",black:"#020509",hp:"#dd3434",money:"#ffd700",hack:"#8CCF27",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#080C11",backgroundsecondary:"#03080F",button:"#00010A"}},Purple:{credit:"zer0ney",description:"Essentially all defaults except for purple replacing the main colors",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922091815849570395",colors:{primarylight:"#BA55D3",primary:"#9370DB",primarydark:"#8A2BE2",successlight:"#BA55D3",success:"#9370DB",successdark:"#8A2BE2",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#000",backgroundsecondary:"#000",button:"#333"}},"Smooth Green":{credit:"Swidt",description:"A nice green theme that doesn't hurt your eyes.",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922243957986033725",colors:{primarylight:"#E0E0BC",primary:"#B0D9A3",primarydark:"#B8B89C",successlight:"#00F000",success:"#6BC16B",successdark:"#00B400",errorlight:"#F00000",error:"#3D713D",errordark:"#A00000",secondarylight:"#B4AEAE",secondary:"#8FAF85",secondarydark:"#787272",warninglight:"#F0F000",warning:"#38F100",warningdark:"#A0A000",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#2F3C2B",white:"#fff",black:"#1E1E1E",hp:"#dd3434",money:"#4AA52E",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#35A135",disabled:"#66cfbc",backgroundprimary:"#1E1E1E",backgroundsecondary:"#252525",button:"#2F3C2B"}},Dracula:{credit:"H3draut3r",reference:"https://discord.com/channels/415207508303544321/921991895230611466/922296307836678144",colors:{primarylight:"#7082B8",primary:"#F8F8F2",primarydark:"#FF79C6",successlight:"#0f0",success:"#0c0",successdark:"#090",errorlight:"#FD4545",error:"#FF2D2D",errordark:"#C62424",secondarylight:"#AAA",secondary:"#8BE9FD",secondarydark:"#666",warninglight:"#FFC281",warning:"#FFB86C",warningdark:"#E6A055",infolight:"#A0A0FF",info:"#7070FF",infodark:"#4040FF",welllight:"#44475A",well:"#363948",white:"#fff",black:"#282A36",hp:"#D34448",money:"#50FA7B",hack:"#F1FA8C",combat:"#BD93F9",cha:"#FF79C6",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#282A36",backgroundsecondary:"#21222C",button:"#21222C"}},"Dark Blue":{credit:"Saynt_Garmo",reference:"https://discord.com/channels/415207508303544321/921991895230611466/923084732718264340",colors:{primarylight:"#023DDE",primary:"#4A41C8",primarydark:"#005299",successlight:"#00FF00",success:"#D1DAD1",successdark:"#BFCABF",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#040505",white:"#fff",black:"#000000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#091419",backgroundsecondary:"#000000",button:"#000000"}},Discord:{credit:"Thermite",description:"Discord inspired theme",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924305252017143818",colors:{primarylight:"#7389DC",primary:"#7389DC",primarydark:"#5964F1",successlight:"#00CC00",success:"#20DF20",successdark:"#0CB80C",errorlight:"#EA5558",error:"#EC4145",errordark:"#E82528",secondarylight:"#C3C3C3",secondary:"#9C9C9C",secondarydark:"#4E4E4E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#1C4FB3",welllight:"#999999",well:"#35383C",white:"#FFFFFF",black:"#202225",hp:"#FF5656",money:"#43FF43",hack:"#FFAB3D",combat:"#8A90FD",cha:"#FF51D9",int:"#6495ed",rep:"#FFFF30",disabled:"#474B51",backgroundprimary:"#2F3136",backgroundsecondary:"#35393E",button:"#333"}},"One Dark":{credit:"Dexalt142",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924650660694208512",colors:{primarylight:"#98C379",primary:"#98C379",primarydark:"#98C379",successlight:"#98C379",success:"#98C379",successdark:"#98C379",errorlight:"#E06C75",error:"#BE5046",errordark:"#BE5046",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",warninglight:"#E5C07B",warning:"#E5C07B",warningdark:"#D19A66",infolight:"#61AFEF",info:"#61AFEF",infodark:"#61AFEF",welllight:"#4B5263",well:"#282C34",white:"#ABB2BF",black:"#282C34",hp:"#E06C75",money:"#E5C07B",hack:"#98C379",combat:"#ABB2BF",cha:"#C678DD",int:"#61AFEF",rep:"#ABB2BF",disabled:"#56B6C2",backgroundprimary:"#282C34",backgroundsecondary:"#21252B",button:"#4B5263"}},"Muted Gold & Blue":{credit:"Sloth",reference:"https://discord.com/channels/415207508303544321/921991895230611466/924672660758208563",colors:{primarylight:"#E3B54A",primary:"#CAA243",primarydark:"#7E6937",successlight:"#82FF82",success:"#6FDA6F",successdark:"#64C364",errorlight:"#FD5555",error:"#D84A4A",errordark:"#AC3939",secondarylight:"#D8D0B8",secondary:"#B1AA95",secondarydark:"#736E5E",warninglight:"#ff0",warning:"#cc0",warningdark:"#990",infolight:"#69f",info:"#36c",infodark:"#039",welllight:"#444",well:"#111111",white:"#fff",black:"#070300",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed",rep:"#faffdf",disabled:"#66cfbc",backgroundprimary:"#0A0A0E",backgroundsecondary:"#0E0E10",button:"#222222"}},"Default Lite":{credit:"NmuGmu",description:"Less eye-straining default theme",reference:"https://discord.com/channels/415207508303544321/921991895230611466/925263801564151888",colors:{primarylight:"#28CF28",primary:"#21A821",primarydark:"#177317",successlight:"#1CFF1C",success:"#16CA16",successdark:"#0D910D",errorlight:"#FF3B3B",error:"#C32D2D",errordark:"#8E2121",secondarylight:"#B3B3B3",secondary:"#838383",secondarydark:"#676767",warninglight:"#FFFF3A",warning:"#C3C32A",warningdark:"#8C8C1E",infolight:"#64CBFF",info:"#3399CC",infodark:"#246D91",welllight:"#404040",well:"#1C1C1C",white:"#C3C3C3",black:"#0A0B0B",hp:"#C62E2E",money:"#D6BB27",hack:"#ADFF2F",combat:"#E8EDCD",cha:"#8B5FAF",int:"#537CC8",rep:"#E8EDCD",disabled:"#5AB5A5",backgroundprimary:"#0C0D0E",backgroundsecondary:"#121415",button:"#252829"}},Light:{credit:"matt",reference:"https://discord.com/channels/415207508303544321/921991895230611466/926114005456658432",colors:{primarylight:"#535353",primary:"#1A1A1A",primarydark:"#0d0d0d",successlight:"#63c439",success:"#428226",successdark:"#2E5A1B",errorlight:"#df7051",error:"#C94824",errordark:"#91341B",secondarylight:"#b3b3b3",secondary:"#9B9B9B",secondarydark:"#7A7979",warninglight:"#e8d464",warning:"#C6AD20",warningdark:"#9F8A16",infolight:"#6299cf",info:"#3778B7",infodark:"#30689C",welllight:"#f9f9f9",well:"#eaeaea",white:"#F7F7F7",black:"#F7F7F7",hp:"#BF5C41",money:"#E1B121",hack:"#47BC38",combat:"#656262",cha:"#A568AC",int:"#889BCF",rep:"#656262",disabled:"#70B4BF",backgroundprimary:"#F7F7F7",backgroundsecondary:"#f9f9f9",button:"#eaeaea"}}})},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={lineHeight:1.5,fontFamily:"Lucida Console, Lucida Sans Unicode, Fira Mono, Consolas, Courier New, Courier, monospace, Times New Roman"}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return u})),a.d(t,"b",(function(){return h}));var n=a(0),r=a.n(n),i=a(122),o=a(40),s=a(1),l=a(25),c=a(470);const u=new i.a;let m=0;function h(){const[e,t]=Object(n.useState)([]);return Object(n.useEffect)(()=>u.subscribe(e=>{const a=m+"";m++,t(t=>{const n=function(e){return"string"==typeof e?Object(c.sha256)(e):Object(c.sha256)(JSON.stringify(e.props))}(e);return t.some(e=>e.hash===n)?(console.log("Duplicate message"),t):[...t,{id:a,text:e,hash:n}]})}),[]),Object(n.useEffect)(()=>{function e(e){"Escape"===e.code&&t([])}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[]),r.a.createElement(r.a.Fragment,null,e.length>0&&r.a.createElement(o.a,{open:!0,onClose:function(){t(e=>e.slice(1,1e99))}},r.a.createElement(l.a,{overflow:"scroll",sx:{overflowWrap:"break-word",whiteSpace:"pre-line"}},r.a.createElement(s.a,null,e[0].text))))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return r})),a.d(t,"a",(function(){return i}));var n=a(8);function r(e){return e.money<0?0:Math.min(.1*e.money,(e.max_hp-e.hp)*n.a.HospitalCostPerHp)}function i(e,t){const a=e.hp;e.hp-=t;const n=r(e);return e.hp=a,n}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(53),r=a(169),i=a(844),o=a(488),s=a(21),l=a(32);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u{constructor(e={}){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)),this.name=e.name?e.name:"",this.dmd=e.demand?e.demand:0,this.cmp=e.competition?e.competition:0,this.mku=e.markup?e.markup:0,this.createCity=e.createCity?e.createCity:"",this.designCost=e.designCost?e.designCost:0,this.advCost=e.advCost?e.advCost:0,this.qlt=e.quality?e.quality:0,this.per=e.performance?e.performance:0,this.dur=e.durability?e.durability:0,this.rel=e.reliability?e.reliability:0,this.aes=e.aesthetics?e.aesthetics:0,this.fea=e.features?e.features:0,this.loc=e.loc?e.loc:"",this.siz=e.size?e.size:0,this.reqMats=e.req?e.req:{}}createProduct(e=1,t=1){this.fin||(this.prog+=.01*e*t)}finishProduct(e,t){this.fin=!0;const a=this.prog/100,i=e[n.a.Engineer]/e.total,o=e[n.a.Management]/e.total,s=e[n.a.RandD]/e.total,c=e[n.a.Operations]/e.total,u=e[n.a.Business]/e.total,m=a*(1.2*i+.9*o+1.3*s+1.5*c+u)*(1+Math.pow(this.designCost,.1)/100)*(1+Math.pow(t.sciResearch.qty,t.sciFac)/800);this.qlt=m*(.1*e[n.a.Engineer]+.05*e[n.a.Management]+.05*e[n.a.RandD]+.02*e[n.a.Operations]+.02*e[n.a.Business]),this.per=m*(.15*e[n.a.Engineer]+.02*e[n.a.Management]+.02*e[n.a.RandD]+.02*e[n.a.Operations]+.02*e[n.a.Business]),this.dur=m*(.05*e[n.a.Engineer]+.02*e[n.a.Management]+.08*e[n.a.RandD]+.05*e[n.a.Operations]+.05*e[n.a.Business]),this.rel=m*(.02*e[n.a.Engineer]+.08*e[n.a.Management]+.02*e[n.a.RandD]+.05*e[n.a.Operations]+.08*e[n.a.Business]),this.aes=m*(0*e[n.a.Engineer]+.08*e[n.a.Management]+.05*e[n.a.RandD]+.02*e[n.a.Operations]+.1*e[n.a.Business]),this.fea=m*(.08*e[n.a.Engineer]+.05*e[n.a.Management]+.02*e[n.a.RandD]+.05*e[n.a.Operations]+.05*e[n.a.Business]),this.calculateRating(t);const h=1+Math.pow(this.advCost,.1)/100,d=Math.max(u+o,1/e.total);this.mku=100/(h*Math.pow(this.qlt+.001,.65)*d),0!==this.mku&&isFinite(this.mku)||(this.mku=1),this.dmd=0===t.awareness?20:Math.min(100,h*(t.popularity/t.awareness*100)),this.cmp=Object(l.a)(0,70);for(const e in t.reqMats)if(t.reqMats.hasOwnProperty(e)){const a=t.reqMats[e];if(void 0===a)continue;this.reqMats[e]=a}this.siz=0;for(const e in t.reqMats){const a=t.reqMats[e];void 0!==a&&(this.siz+=r.a[e]*a)}}calculateRating(e){const t=i.a[e.type];null!=t?(this.rat=0,this.rat+=t.Quality?this.qlt*t.Quality:0,this.rat+=t.Performance?this.per*t.Performance:0,this.rat+=t.Durability?this.dur*t.Durability:0,this.rat+=t.Reliability?this.rel*t.Reliability:0,this.rat+=t.Aesthetics?this.aes*t.Aesthetics:0,this.rat+=t.Features?this.fea*t.Features:0):console.error("Could not find product rating weights for: "+e)}toJSON(){return Object(s.b)("Product",this)}static fromJSON(e){return Object(s.a)(u,e.data)}}s.c.constructors.Product=u},,function(e,t,a){"use strict";a.d(t,"b",(function(){return m})),a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(29),o=a(475),s=a(1),l=a(25),c=a(28),u=a(10);const m=[];function h(){const e=i.b.Player(),t=i.b.Router(),a=Object(n.useState)(!1)[1];function h(){a(e=>!e)}const d=Object(o.a)(e);return Object(n.useEffect)(()=>{d.forEach(e=>{m.includes(e.name)||m.push(e.name)})},[]),Object(n.useEffect)(()=>{const e=setInterval(h,200);return()=>clearInterval(e)},[]),r.a.createElement(r.a.Fragment,null,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",width:"fit-content"}},d.map(a=>{const n=a.create;return null===n?r.a.createElement(r.a.Fragment,null):r.a.createElement(r.a.Fragment,{key:a.name},r.a.createElement(c.a,{title:n.tooltip},r.a.createElement(u.a,{sx:{my:1},onClick:r=>{r.isTrusted&&e.startCreateProgramWork(t,a.name,n.time,n.level)}},a.name)))})))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return p})),a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(26),o=a(120),s=a(1),l=a(25),c=a(118),u=a(10),m=a(174),h=a(41),d=a(54);const p=[];function f(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}return Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]),Object(n.useEffect)(()=>{e.player.factionInvitations.forEach(e=>{p.includes(e)||p.push(e)})},[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,{variant:"h4"},"Factions"),r.a.createElement(s.a,null,"Lists all factions you have joined"),r.a.createElement("br",null),r.a.createElement(l.a,{display:"flex",flexDirection:"column"},e.player.factions.map(t=>r.a.createElement(c.a,{key:t,variant:"h6",onClick:()=>function(t){e.router.toFaction(t)}(i.a[t])},t))),r.a.createElement("br",null),e.player.factionInvitations.length>0&&r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,{variant:"h5",color:"primary"},"Outstanding Faction Invitations"),r.a.createElement(s.a,null,"Lists factions you have been invited to. You can accept these faction invitations at any time."),r.a.createElement(h.a,{size:"small",padding:"none"},r.a.createElement(m.a,null,e.player.factionInvitations.map(e=>r.a.createElement(d.a,{key:e},r.a.createElement(h.b,null,r.a.createElement(s.a,{noWrap:!0},e)),r.a.createElement(h.b,{align:"right"},r.a.createElement(u.a,{onClick:a=>function(e,a){e.isTrusted&&(Object(o.d)(i.a[a]),t(e=>!e))}(a,e)},"Join!"))))))))}},function(e,t,a){"use strict";function n(){try{return"9fdc3ac5"}catch(e){}return"DEV"}a.d(t,"a",(function(){return n}))},,,function(e,t,a){"use strict";a.d(t,"b",(function(){return m})),a.d(t,"a",(function(){return h})),a.d(t,"c",(function(){return d}));var n=a(0),r=a.n(n),i=a(1),o=a(118),s=a(10),l=a(11),c=a(318),u=a(162);let m=!1;function h(){m=!0}function d({router:e,softReset:t}){return l.a.AutosaveInterval=0,Object(c.b)().then(e=>{Object(u.a)("RECOVERY.json",e)}),r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{variant:"h3"},"RECOVERY MODE ACTIVATED"),r.a.createElement(i.a,null,"There was an error loading 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(i.a,null,"At this point it is recommended to alert a developer."),r.a.createElement(o.a,{href:"https://github.com/danielyxie/bitburner/issues/new",target:"_blank"},r.a.createElement(i.a,null,"File an issue on github")),r.a.createElement(o.a,{href:"https://www.reddit.com/r/Bitburner/",target:"_blank"},r.a.createElement(i.a,null,"Make a reddit post")),r.a.createElement(o.a,{href:"https://discord.gg/TFc3hKD",target:"_blank"},r.a.createElement(i.a,null,"Post in the #bug-report channel on Discord.")),r.a.createElement(i.a,null,"Please include your save file."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(i.a,null,"You can disable recovery mode now. But chances are the game will not work correctly."),r.a.createElement(s.a,{onClick:function(){m=!1,e.toTerminal()}},"DISABLE RECOVERY MODE"),r.a.createElement(s.a,{onClick:t},"PERFORM SOFT RESET"))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(814),r=a(415),i=a(416),o=a(229),s=a(42),l=a(5),c=a(531),u=a(60),m=a(15),h=a(21),d=a(126);function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class f{constructor(e={}){p(this,"name","The Corporation"),p(this,"divisions",[]),p(this,"funds",15e10),p(this,"revenue",0),p(this,"expenses",0),p(this,"fundingRound",0),p(this,"public",!1),p(this,"totalShares",s.a.INITIALSHARES),p(this,"numShares",s.a.INITIALSHARES),p(this,"shareSalesUntilPriceUpdate",s.a.SHARESPERPRICEUPDATE),p(this,"shareSaleCooldown",0),p(this,"issueNewSharesCooldown",0),p(this,"dividendPercentage",0),p(this,"dividendTaxPercentage",50),p(this,"issuedShares",0),p(this,"sharePrice",0),p(this,"storedCycles",0),p(this,"state",new n.a),this.name=e.name?e.name:"The Corporation";const t=Object.keys(r.a).length,a=Object.keys(i.a).length;this.unlockUpgrades=Array(t).fill(0),this.upgrades=Array(a).fill(0),this.upgradeMultipliers=Array(a).fill(1)}addFunds(e){isFinite(e)?this.funds=this.funds+e:console.error("Trying to add invalid amount of funds. Report to a developper.")}getState(){return this.state.getState()}storeCycles(e=1){this.storedCycles+=e}process(e){if(this.storedCycles>=s.a.CyclesPerIndustryStateCycle){const t=this.getState(),a=1,n=a*s.a.CyclesPerIndustryStateCycle;if(this.storedCycles-=n,this.divisions.forEach(e=>{e.process(a,t,this)}),this.shareSaleCooldown>0&&(this.shareSaleCooldown-=n),this.issueNewSharesCooldown>0&&(this.issueNewSharesCooldown-=n),"START"===t){this.revenue=0,this.expenses=0,this.divisions.forEach(e=>{e.lastCycleRevenue!==-1/0&&e.lastCycleRevenue!==1/0&&e.lastCycleExpenses!==-1/0&&e.lastCycleExpenses!==1/0&&(this.revenue=this.revenue+e.lastCycleRevenue,this.expenses=this.expenses+e.lastCycleExpenses)});const t=(this.revenue-this.expenses)*(a*s.a.SecsPerMarketCycle);if((isNaN(this.funds)||this.funds===1/0||this.funds===-1/0)&&(Object(m.a)("There was an error calculating your Corporations funds and they got reset to 0. This is a bug. Please report to game developer.<br><br>(Your funds have been set to $150b for the inconvenience)"),this.funds=15e10),this.dividendPercentage>0&&t>0)if(isNaN(this.dividendPercentage)||this.dividendPercentage<0||this.dividendPercentage>100*s.a.DividendMaxPercentage)console.error("Invalid Corporation dividend percentage: "+this.dividendPercentage);else{const a=t-this.dividendPercentage/100*t;e.gainMoney(this.getDividends(),"corporation"),this.addFunds(a)}else this.addFunds(t);this.updateSharePrice()}this.state.nextState()}}getDividends(){const e=(this.revenue-this.expenses)*s.a.SecsPerMarketCycle,t=this.dividendPercentage/100*e/this.totalShares,a=this.numShares*t;let n=-.15;return 1===this.unlockUpgrades[5]&&(n+=.05),1===this.unlockUpgrades[6]&&(n+=.1),Math.pow(a,l.a.CorporationSoftCap+n)}determineValuation(){let e,t=this.revenue-this.expenses;return this.public?(this.dividendPercentage>0&&(t*=(100-this.dividendPercentage)/100),e=this.funds+85e3*t,e*=Math.pow(1.1,this.divisions.length),e=Math.max(e,0)):(e=1e10+Math.max(this.funds,0)/3,t>0?(e+=315e3*t,e*=Math.pow(1.1,this.divisions.length)):e=1e10*Math.pow(1.1,this.divisions.length),e-=e%1e6),e*l.a.CorporationValuation}getTargetSharePrice(){return this.determineValuation()/(2*(this.totalShares-this.numShares)+1)}updateSharePrice(){const e=this.getTargetSharePrice();this.sharePrice<=e?this.sharePrice*=1+.01*Math.random():this.sharePrice*=1-.01*Math.random(),this.sharePrice<=.01&&(this.sharePrice=.01)}immediatelyUpdateSharePrice(){this.sharePrice=this.getTargetSharePrice()}calculateShareSale(e){let t=e,a=this.shareSalesUntilPriceUpdate,n=this.sharePrice,r=0,i=0;const o=Math.ceil(e/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 e=0;e<o;++e){if(t<a){i+=n*t,a-=t;break}i+=n*a,a=s.a.SHARESPERPRICEUPDATE,t-=a,r+=a,n=this.determineValuation()/(2*(this.totalShares+r-this.numShares))}return[i,n,a]}convertCooldownToString(e){const t=e/5;return t>3600?Math.floor(t/3600)+" hour(s)":t>60?Math.floor(t/60)+" minute(s)":Math.floor(t)+" second(s)"}unlock(e){const t=e[0],a=e[1];for(;this.unlockUpgrades.length<=t;)this.unlockUpgrades.push(0);this.funds<a?Object(m.a)("You don't have enough funds to unlock this!"):(this.unlockUpgrades[t]=1,this.funds=this.funds-a,5===t?this.dividendTaxPercentage-=5:6===t&&(this.dividendTaxPercentage-=10))}upgrade(e){const t=e[0],a=e[1],n=e[2],r=e[3];for(;this.upgrades.length<=t;)this.upgrades.push(0);for(;this.upgradeMultipliers.length<=t;)this.upgradeMultipliers.push(1);const i=a*Math.pow(n,this.upgrades[t]);if(this.funds<i)Object(m.a)("You don't have enough funds to purchase this!");else if(++this.upgrades[t],this.funds=this.funds-i,this.upgradeMultipliers[t]=1+this.upgrades[t]*r,1===t)for(let e=0;e<this.divisions.length;++e){const t=this.divisions[e];for(const e in t.warehouses){const a=t.warehouses[e];0!==a&&(t.warehouses.hasOwnProperty(e)&&a instanceof o.a&&a.updateSize(this,t))}}}getProductionMultiplier(){const e=this.upgradeMultipliers[0];return isNaN(e)||e<1?1:e}getStorageMultiplier(){const e=this.upgradeMultipliers[1];return isNaN(e)||e<1?1:e}getDreamSenseGain(){const e=this.upgradeMultipliers[2]-1;return e<=0?0:e}getAdvertisingMultiplier(){const e=this.upgradeMultipliers[3];return isNaN(e)||e<1?1:e}getEmployeeCreMultiplier(){const e=this.upgradeMultipliers[4];return isNaN(e)||e<1?1:e}getEmployeeChaMultiplier(){const e=this.upgradeMultipliers[5];return isNaN(e)||e<1?1:e}getEmployeeIntMultiplier(){const e=this.upgradeMultipliers[6];return isNaN(e)||e<1?1:e}getEmployeeEffMultiplier(){const e=this.upgradeMultipliers[7];return isNaN(e)||e<1?1:e}getSalesMultiplier(){const e=this.upgradeMultipliers[8];return isNaN(e)||e<1?1:e}getScientificResearchMultiplier(){const e=this.upgradeMultipliers[9];return isNaN(e)||e<1?1:e}getStarterGuide(e){const t=e.getHomeComputer();let a=!1;const n=u.a.CorporationManagementHandbook;for(let e=0;e<t.messages.length;++e)if(Object(d.a)(t.messages[e])&&t.messages[e]===n){a=!0;break}a||t.messages.push(n),Object(c.a)(n)}toJSON(){return Object(h.b)("Corporation",this)}static fromJSON(e){return Object(h.a)(f,e.data)}}h.c.constructors.Corporation=f},,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(4),o=a(222);function s({hashes:e}){return r.a.createElement(o.a,{hashes:i.a.formatHashes(e)+" h / s"})}},,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(58),r=a(32),i=a(21),o=a(280);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class l{constructor(e=n.a.CityNames[2]){s(this,"name",""),s(this,"pop",0),s(this,"popEst",0),s(this,"comms",0),s(this,"chaos",0),this.name=e,this.pop=Object(r.a)(n.a.PopulationThreshold,1.5*n.a.PopulationThreshold),this.popEst=this.pop*(Math.random()+.5),this.comms=Object(r.a)(5,150),this.chaos=0}changeChaosByPercentage(e){if(isNaN(e))throw new Error("NaN passed into City.chaosChaosByPercentage()");0!==e&&(this.chaos+=this.chaos*(e/100),this.chaos<0&&(this.chaos=0))}improvePopulationEstimateByCount(e){if(isNaN(e))throw new Error("NaN passeed into City.improvePopulationEstimateByCount()");this.popEst<this.pop?(this.popEst+=e,this.popEst>this.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst-=e,this.popEst<this.pop&&(this.popEst=this.pop))}improvePopulationEstimateByPercentage(e,t=1){if(e*=t,isNaN(e))throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");this.popEst<this.pop?(++this.popEst,this.popEst*=1+e/100,this.popEst>this.pop&&(this.popEst=this.pop)):this.popEst>this.pop&&(this.popEst*=1-e/100,this.popEst<this.pop&&(this.popEst=this.pop))}changePopulationByCount(e,t={estChange:0,estOffset:0}){if(isNaN(e))throw new Error("NaN passed into City.changePopulationByCount()");this.pop+=e,t.estChange&&!isNaN(t.estChange)&&(this.popEst+=t.estChange),t.estOffset&&(this.popEst=Object(o.a)(this.popEst,t.estOffset)),this.popEst=Math.max(this.popEst,0)}changePopulationByPercentage(e,t={nonZero:!1,changeEstEqually:!1}){if(isNaN(e))throw new Error("NaN passed into City.changePopulationByPercentage()");if(0===e)return 0;let a=Math.round(this.pop*(e/100));return t.nonZero&&0===a&&(a=e>0?1:-1),this.pop+=a,t.changeEstEqually&&(this.popEst+=a,this.popEst<0&&(this.popEst=0)),a}changeChaosByCount(e){if(isNaN(e))throw new Error("NaN passed into City.changeChaosByCount()");0!==e&&(this.chaos+=e,this.chaos<0&&(this.chaos=0))}toJSON(){return Object(i.b)("City",this)}static fromJSON(e){return Object(i.a)(l,e.data)}}i.c.constructors.City=l},function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"c",(function(){return l})),a.d(t,"d",(function(){return c})),a.d(t,"e",(function(){return u})),a.d(t,"f",(function(){return m}));var n=a(26),r=a(471),i=a(80);function o(){return 2===this.bitNodeN||!(i.a[2]<=0)&&this.karma<=-54e3}function s(){const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");const t=n.a[e.facName];if(null==t)throw new Error("Gang has invalid faction name: "+e.facName);return t}function l(){if(!this.inGang())return"";const e=this.gang;if(null===e)throw new Error("Cannot get gang faction because player is not in a gang.");return e.facName}function c(e){if(!this.inGang())return!1;const t=this.gang;if(null===t)throw new Error("Cannot get gang faction because player is not in a gang.");return t.facName===e}function u(){return null!=this.gang&&null!=this.gang&&this.gang instanceof r.a}function m(e,t){this.gang=new r.a(e,t);const a=n.a[e];if(null==a)throw new Error("Invalid faction name when creating gang: "+e);a.playerReputation=0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t=[],a=""){this.name=e,this.locations=t,this.asciiArt=a}addLocation(e){this.locations.push(e)}}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(1),i=a(10),o=a(75),s=a(25);function l(e){return n.createElement(s.a,null,n.createElement(o.a,{sx:{my:1,p:1,width:"100%"}},n.createElement(i.a,{onClick:e.onClick},e.buttonText),n.createElement(r.a,null,e.infoText)))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return l})),a.d(t,"a",(function(){return u}));var n=a(0),r=a(1),i=a(28),o=a(10),s=a(85);let l;function c(e){let t="",a="";return e.tickerDisplayMode===l.Portfolio?(t="Switch to 'All Stocks' Mode",a="Displays all stocks on the WSE"):(t="Switch to 'Portfolio' Mode",a="Displays only the stocks for which you have shares or orders"),n.createElement(i.a,{title:n.createElement(r.a,null,a)},n.createElement(o.a,{onClick:e.changeDisplayMode},t))}function u(e){return n.createElement(n.Fragment,null,n.createElement(c,e),n.createElement("br",null),n.createElement(s.a,{sx:{width:"100%"},onChange:e.changeWatchlistFilter,placeholder:"Filter Stocks by symbol (comma-separated list)",type:"text"}))}!function(e){e[e.AllStocks=0]="AllStocks",e[e.Portfolio=1]="Portfolio"}(l||(l={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a(1249),i=a(1),o=a(28),s=a(49),l=a(578),c=a(4);function u({min:e,max:t,current:a,remaining:s,progress:l,color:u}){const m=n.createElement(i.a,{sx:{textAlign:"right"}},n.createElement("strong",null,"Progress:")," ",c.a.formatExp(a)," / ",c.a.formatExp(t-e),n.createElement("br",null),n.createElement("strong",null,"Remaining:")," ",c.a.formatExp(s)," (",l.toFixed(2),"%)");return n.createElement(o.a,{title:m},n.createElement(r.a,{variant:"determinate",value:l,sx:{backgroundColor:"#111111","& .MuiLinearProgress-bar1Determinate":{backgroundColor:u}}}))}function m({progress:e,color:t}){const a=Object(l.b)();return n.createElement(s.a,{component:"th",scope:"row",colSpan:2,classes:{root:a.cellNone},style:{paddingBottom:"2px",position:"relative",top:"-3px"}},n.createElement(u,{min:e.baseExperience,max:e.nextExperience,current:e.currentExperience,remaining:e.remainingExperience,progress:e.progress,color:t}))}},function(e,t,a){"use strict";a.d(t,"f",(function(){return c})),a.d(t,"b",(function(){return u})),a.d(t,"c",(function(){return m})),a.d(t,"e",(function(){return h})),a.d(t,"d",(function(){return d})),a.d(t,"a",(function(){return p}));var n=a(8),r=a(5),i=a(44),o=a(87),s=a(24),l=a(98);function c(){return!!Object(s.d)(l.a.DarkWeb)}function u(){const e=Object(s.d)(this.currentServer);if(null===e)throw new Error("somehow connected to a server that does not exist. "+this.currentServer);return e}function m(){const e=Object(s.d)("home");if(e instanceof i.a)return e;throw new Error("home computer was not a normal server")}function h(){const e=this.getHomeComputer().maxRam,t=Math.log2(e),a=Math.pow(1.58,t);return e*n.a.BaseCostFor1GBOfRamHome*a*r.a.HomeComputerRamCost}function d(){return 1e9*Math.pow(7.5,this.getHomeComputer().cpuCores)}function p(){const e="hacknet-node-"+this.hacknetNodes.length,t=new o.a({adminRights:!0,hostname:e,ip:Object(s.e)()});this.hacknetNodes.push(t.hostname),Object(s.a)(t);return this.getHomeComputer().serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(l.a.Home),t}},,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(2),r=a(32),i=a(280),o=a(21),s=a(58);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class c{constructor(e=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),e&&e.name&&(this.name=e.name),e&&e.baseDifficulty&&(this.baseDifficulty=Object(i.a)(e.baseDifficulty,10)),e&&e.difficultyFac&&(this.difficultyFac=e.difficultyFac),e&&e.rewardFac&&(this.rewardFac=e.rewardFac),e&&e.rankGain&&(this.rankGain=e.rankGain),e&&e.rankLoss&&(this.rankLoss=e.rankLoss),e&&e.hpLoss&&(this.hpLoss=e.hpLoss),e&&e.isStealth&&(this.isStealth=e.isStealth),e&&e.isKill&&(this.isKill=e.isKill),e&&e.count&&(this.count=e.count),e&&e.weights&&(this.weights=e.weights),e&&e.decays&&(this.decays=e.decays);let t=0;for(const e in this.weights)this.weights.hasOwnProperty(e)&&(t+=this.weights[e]);if(t-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 e in this.decays)if(this.decays.hasOwnProperty(e)&&this.decays[e]>1)throw new Error("Invalid decays when constructing Action "+this.name+". Decay value cannot be greater than 1")}getDifficulty(){const e=this.baseDifficulty*Math.pow(this.difficultyFac,this.level-1);if(isNaN(e))throw new Error("Calculated NaN in Action.getDifficulty()");return e}attempt(e){return Math.random()<this.getSuccessChance(e)}getActionTimePenalty(){return 1}getActionTime(e){let t=this.getDifficulty()/s.a.DifficultyToTimeFactor;const a=e.skillMultipliers.actionTime,r=n.a.agility*e.skillMultipliers.effAgi,i=n.a.dexterity*e.skillMultipliers.effDex,o=.5*(Math.pow(r,s.a.EffAgiExponentialFactor)+Math.pow(i,s.a.EffDexExponentialFactor)+r/s.a.EffAgiLinearFactor+i/s.a.EffDexLinearFactor);return t=Math.max(1,t*a/o),Math.ceil(t*this.getActionTimePenalty())}getTeamSuccessBonus(e){return 1}getActionTypeSkillSuccessBonus(e){return 1}getChaosCompetencePenalty(e,t){const a=e.getCurrentCity();return t.est?Math.pow(a.popEst/s.a.PopulationThreshold,s.a.PopulationExponent):Math.pow(a.pop/s.a.PopulationThreshold,s.a.PopulationExponent)}getChaosDifficultyBonus(e){const t=e.getCurrentCity();if(t.chaos>s.a.ChaosThreshold){const e=t.chaos-s.a.ChaosThreshold+1;return Math.pow(e,.5)}return 1}getEstSuccessChance(e){function t(e){return Math.max(0,Math.min(e,1))}const a=this.getSuccessChance(e,{est:!0}),n=this.getSuccessChance(e),r=Math.abs(n-a);let i=n-r,o=n+r;const s=e.getCurrentCity(),l=s.pop/s.popEst;return l<1?i*=l:o*=l,[t(i),t(o)]}getSuccessChance(e,t={est:!1}){if(null==e)throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");let a=this.getDifficulty(),r=0;for(const t in this.weights)if(this.weights.hasOwnProperty(t)){const a=n.a.queryStatFromString(t),i="eff"+t.charAt(0).toUpperCase()+t.slice(1);let o=e.skillMultipliers[i];null==o&&(console.error("Failed to find Bladeburner Skill multiplier for: "+t),o=1),r+=this.weights[t]*Math.pow(o*a,this.decays[t])}if(r*=n.a.getIntelligenceBonus(.75),r*=e.calculateStaminaPenalty(),r*=this.getTeamSuccessBonus(e),r*=this.getChaosCompetencePenalty(e,t),a*=this.getChaosDifficultyBonus(e),"Raid"==this.name&&e.getCurrentCity().comms<=0)return 0;if(r*=e.skillMultipliers.successChanceAll,r*=this.getActionTypeSkillSuccessBonus(e),this.isStealth&&(r*=e.skillMultipliers.successChanceStealth),this.isKill&&(r*=e.skillMultipliers.successChanceKill),r*=n.a.bladeburner_success_chance_mult,isNaN(r))throw new Error("Competence calculated as NaN in Action.getSuccessChance()");return Math.min(1,r/a)}getSuccessesNeededForNextLevel(e){return Math.ceil(.5*this.maxLevel*(2*e+(this.maxLevel-1)))}setMaxLevel(e){this.successes>=this.getSuccessesNeededForNextLevel(e)&&++this.maxLevel}toJSON(){return Object(o.b)("Action",this)}static fromJSON(e){return Object(o.a)(c,e.data)}}o.c.constructors.Action=c},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={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(e,t,a){"use strict";a.d(t,"a",(function(){return c})),a.d(t,"b",(function(){return u}));var n=a(0),r=a.n(n),i=a(122),o=a(40),s=a(1),l=a(10);const c=new i.a;function u(){const[e,t]=Object(n.useState)(null);return Object(n.useEffect)(()=>c.subscribe(e=>{t(e)}),[]),r.a.createElement(r.a.Fragment,null,null!=e&&r.a.createElement(o.a,{open:!0,onClose:function(){null!==e&&(e.resolve(!1),t(null))}},r.a.createElement(s.a,null,e.txt),r.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",paddingTop:"10px"}},r.a.createElement(l.a,{style:{marginRight:"auto"},onClick:function(){null!==e&&(e.resolve(!0),t(null))}},"Yes"),r.a.createElement(l.a,{onClick:function(){null!==e&&(e.resolve(!1),t(null))}},"No"))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(23),o=a(1),s=a(28),l=a(111),c=a(134);const u=Object(l.a)(e=>Object(c.a)({travel:{color:e.colors.white,lineHeight:"1em",whiteSpace:"pre",cursor:"pointer"}}));function m(e){const t=u();return e.city!==e.currentCity?r.a.createElement(s.a,{title:r.a.createElement(o.a,null,e.city)},r.a.createElement("span",{onClick:()=>e.onTravel(e.city),className:t.travel},e.city[0])):r.a.createElement("span",null,e.city[0])}function h(e){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(m,{onTravel:e.onTravel,currentCity:e.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(m,{onTravel:e.onTravel,currentCity:e.currentCity,city:i.a.Chongqing})," /,"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," '\\ ",r.a.createElement(m,{onTravel:e.onTravel,currentCity:e.currentCity,city:i.a.Sector12})," /'~ |_/~\\\\,-,~ \\ \" ,_,/ |"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | / ._-~'\\_ _~| \\ ) ",r.a.createElement(m,{onTravel:e.onTravel,currentCity:e.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(m,{onTravel:e.onTravel,currentCity:e.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(m,{onTravel:e.onTravel,currentCity:e.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(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(22),o=a(930),s=a(931);function l(e){const t=e.action.getEstSuccessChance(e.bladeburner);let a=r.a.createElement(r.a.Fragment,null);return a=t[0]===t[1]?r.a.createElement(r.a.Fragment,null,Object(i.c)(100*t[0],1),"%"):r.a.createElement(r.a.Fragment,null,Object(i.c)(100*t[0],1),"% ~ ",Object(i.c)(100*t[1],1),"%"),r.a.createElement(r.a.Fragment,null,"Estimated success chance: ",a," ",e.action.isStealth?r.a.createElement(o.a,null):r.a.createElement(r.a.Fragment,null),e.action.isKill?r.a.createElement(s.a,null):r.a.createElement(r.a.Fragment,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(40);function o(e){return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},e.children)}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n);function i(e,t,a){return e.substring(0,t)+a+e.substring(t+1)}function o(e){const[t,a]=Object(n.useState)(e.content);return Object(n.useEffect)(()=>{let e=5;const n=[],r=setInterval(()=>{if(e--,e>0)return;e=5*Math.random();const r=Math.random()*t.length,o=t.charAt(r);a(e=>i(e,r,function(e){const t=e=>e[Math.floor(Math.random()*e.length)],a=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567890"," _","()[]{}<>"];for(const n of a)if(n.includes(e))return t(n);return t("!@#$%^&*()_+|\\';\"/.,?`~")}(o))),n.push(window.setTimeout(()=>{a(e=>i(e,r,o))},500))},20);return()=>{clearInterval(r),n.forEach(e=>clearTimeout(e))}},[]),r.a.createElement("span",null,t)}},,,,,,,,,function(e,t,a){"use strict";a.d(t,"c",(function(){return m})),a.d(t,"d",(function(){return h})),a.d(t,"b",(function(){return d})),a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(267),o=a(2),s=a(83),l=a(98),c=a(4),u=a(16);function m(){const e=o.a.getCurrentServer();null!==e&&l.a.DarkWeb==e.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 h(){for(const e in i.a){const t=i.a[e],a=o.a.getHomeComputer().programs.includes(t.program)?r.a.createElement("span",{style:{color:"green"}},"[OWNED]"):r.a.createElement(u.a,{money:t.price});s.a.printRaw(r.a.createElement(r.a.Fragment,null,r.a.createElement("span",null,t.program)," - ",r.a.createElement("span",null,a)," - ",r.a.createElement("span",null,t.description)))}}function d(e){e=e.toLowerCase();let t=null;for(const a in i.a){const n=i.a[a];n.program.toLowerCase()==e&&(t=n)}if(null===t)return void s.a.error("Unrecognized item: "+e);if(o.a.hasProgram(t.program))return void s.a.print("You already have the "+t.program+" program");if(o.a.money<t.price)return void s.a.error("Not enough money to purchase "+t.program);o.a.loseMoney(t.price,"other");const a=o.a.getHomeComputer().programs,n=a.findIndex(e=>{var a,n;return(null===(a=t)||void 0===a?void 0:a.program)&&e.startsWith(null===(n=t)||void 0===n?void 0:n.program)});n>-1&&a.splice(n,1),o.a.getHomeComputer().programs.push(t.program),s.a.print("You have purchased the "+t.program+" program. The new program can be found on your home computer.")}function p(){const e=[];let t=0;for(const a in i.a){const n=i.a[a];o.a.hasProgram(n.program)||(e.push(n),t+=n.price)}if(0!==e.length)if(t>o.a.money)s.a.error("Not enough money to purchase remaining programs, "+c.a.formatMoney(t)+" required");else for(const t of e)d(t.program);else s.a.print("All available programs have been purchased already.")}},function(e,t,a){"use strict";function n(e){const t=25e3*(Math.pow(1.02,e)-1);return Math.round(1e4*t)/1e4}function r(e){const t=Math.log(e/25e3+1)/Math.log(1.02);return Math.round(1e4*t)/1e4}a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return r}))},,function(e,t,a){"use strict";function n(e,t){const a=e.hostname;return"requiredHackingSkill"in e?!1===e.hasAdminRights?{res:!1,msg:`Cannot ${t} ${a} server because you do not have root access`}:{res:!0}:{res:!1,msg:`Cannot ${t} ${a} server because it is a Hacknet Node`}}function r(e,t){const a=n(e,"hack");if(!a.res)return a;return e.requiredHackingSkill>t.hacking?{res:!1,msg:`Cannot hack ${e.hostname} server because your hacking skill is not high enough`}:{res:!0}}function i(e){return n(e,"grow")}function o(e){return n(e,"weaken")}a.d(t,"b",(function(){return r})),a.d(t,"a",(function(){return i})),a.d(t,"c",(function(){return o}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(4),o=a(106);function s({reputation:e}){return r.a.createElement(o.a,{reputation:i.a.formatReputation(e)+" / sec"})}},function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"a",(function(){return o}));var n=a(144);function r(e){return"string"==typeof e&&(!isNaN(e)&&!isNaN(parseFloat(e)))}function i(e){const t=(e=(e=e.trim()).replace(/\s\s+/g," ")).match(/(?:'[^']*'|"[^"]*"|[^;"])*/g);if(!t)return[];const a=t.map(n.h).map(e=>e.match(/(?:'[^']*'|"[^"]*"|[^;"])*/g)).flat(),r=[];for(const e of a)null!==e&&(e.match(/^\s*$/)||r.push(e.trim()));return r}function o(e){let t="";const a=[];let n=0,i=0,o="";for(;i<e.length;){let s=!1;i>=1&&(o=e.charAt(i-1),"\\"===o&&(s=!0));const l=e.charAt(i);if('"'===l)if(s||" "!==o)""===t?t='"':'"'===t&&(t="");else{const t=e.indexOf('"',i+1);if(-1!==t&&(t===e.length-1||" "===e.charAt(t+1))){a.push(e.substr(i+1,t-i-1)),n=i=t===e.length-1?t+1:t+2;continue}}else if("'"===l)if(s||" "!==o)""===t?t="'":"'"===t&&(t="");else{const t=e.indexOf("'",i+1);if(-1!==t&&(t===e.length-1||" "===e.charAt(t+1))){a.push(e.substr(i+1,t-i-1)),n=i=t===e.length-1?t+1:t+2;continue}}else if(" "===l&&""===t){const t=e.substr(n,i-n);r(t)?a.push(parseFloat(t)):"true"===t?a.push(!0):"false"===t?a.push(!1):a.push(t),n=i+1}++i}if(n!==i){const t=e.substr(n,i-n);r(t)?a.push(parseFloat(t)):"true"===t?a.push(!0):"false"===t?a.push(!1):a.push(t)}return a}},,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r}));const n=5,r=1e13},,,,,,,,,,,,,,,,,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__(279),acorn__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(242),_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(281),_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(14),_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(78);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(e,t){const a=parseOnlyCalculateDeps(e,t);completedParses.add(t);for(let e=0;e<a.additionalModules.length;++e)completedParses.has(a.additionalModules[e])||parseQueue.push(a.additionalModules[e]);dependencyMap=Object.assign(dependencyMap,a.dependencyMap)}const initialModule="__SPECIAL_INITIAL_MODULE__";for(parseCode(code,initialModule);parseQueue.length>0;){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 e in module)"function"==typeof module[e]&&(code+=module[e].toString()+";\n")}catch(e){return console.error(`Error dynamically importing module from ${nextModule} for RAM calculations: ${e}`),{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 e=null;const t=nextModule.startsWith("./")?nextModule.slice(2):nextModule;for(const a of otherScripts)if(Object(_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_4__.b)(a.filename,t)){e=a;break}if(null==e)return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.ImportError};code=e.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(e=>e.startsWith(initialModule)),resolvedRefs=new Set;for(;unresolvedRefs.length>0;){const e=unresolvedRefs.shift();if(void 0===e)throw new Error("ref should not be undefined");if("hacknet"!==e||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"!==e||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"!==e||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"!==e||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(e),e.endsWith(".*")){const t=e.slice(0,e.length-2);for(const e of Object.keys(dependencyMap).filter(e=>e.startsWith(t)))for(const t of dependencyMap[e]||[])resolvedRefs.has(t)||unresolvedRefs.push(t)}else for(const t of dependencyMap[e]||[])resolvedRefs.has(t)||unresolvedRefs.push(t);try{function applyFuncRam(e){return"number"==typeof e?e:"function"==typeof e?e(player):0}if(workerScript.loadedFns[e])continue;let t;workerScript.loadedFns[e]=!0;let a="n/a";e in workerScript.env.vars.bladeburner?(t=workerScript.env.vars.bladeburner[e],a="bladeburner."+e):e in workerScript.env.vars.codingcontract?(t=workerScript.env.vars.codingcontract[e],a="codingcontract."+e):e in workerScript.env.vars.stanek?(t=workerScript.env.vars.stanek[e],a="stanek."+e):e in workerScript.env.vars.gang?(t=workerScript.env.vars.gang[e],a="gang."+e):e in workerScript.env.vars.sleeve?(t=workerScript.env.vars.sleeve[e],a="sleeve."+e):e in workerScript.env.vars.stock?(t=workerScript.env.vars.stock[e],a="stock."+e):e in workerScript.env.vars.ui?(t=workerScript.env.vars.ui[e],a="ui."+e):(t=workerScript.env.vars[e],a=""+e);const n=applyFuncRam(t);ram+=n,detailedCosts.push({type:"fn",name:a,cost:n})}catch(e){continue}}return{cost:ram,entries:detailedCosts.filter(e=>e.cost>0)}}catch(e){return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}}function checkInfiniteLoop(e){const t=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(e,{sourceType:"module",ecmaVersion:"latest"});let a=-1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(t,{},{WhileStatement:(t,n,r)=>{!function(e){return"Literal"===e.type&&"true"===e.raw}(t.test)||function(e){let t=!1;return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(e,{},{AwaitExpression:()=>{t=!0}}),t}(t)?t.body&&r(t.body,n):a=(e.slice(0,t.start).match(/\n/g)||[]).length+1}}),a}function parseOnlyCalculateDeps(e,t){const a=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(e,{sourceType:"module",ecmaVersion:"latest"}),n=t+memCheckGlobalKey,r={};r[n]=new Set;const i={},o=[];function s(e,a){const n=r[e]||(r[e]=new Set),o=i[a];void 0!==o&&n.add(o),n.add(t+"."+a),n.add(a)}const l=Object.getOwnPropertyNames(Object.prototype);function c(){return{Identifier:(e,t)=>{l.includes(e.name)||s(t.key,e.name)},WhileStatement:(e,t,a)=>{s(t.key,specialReferenceWHILE),e.test&&a(e.test,t),e.body&&a(e.body,t)},DoWhileStatement:(e,t,a)=>{s(t.key,specialReferenceWHILE),e.test&&a(e.test,t),e.body&&a(e.body,t)},ForStatement:(e,t,a)=>{s(t.key,specialReferenceFOR),e.init&&a(e.init,t),e.test&&a(e.test,t),e.update&&a(e.update,t),e.body&&a(e.body,t)},IfStatement:(e,t,a)=>{s(t.key,specialReferenceIF),e.test&&a(e.test,t),e.consequent&&a(e.consequent,t),e.alternate&&a(e.alternate,t)},MemberExpression:(e,t,a)=>{e.object&&a(e.object,t),e.property&&a(e.property,t)}}}return acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(a,{key:n},Object.assign({ImportDeclaration:(e,t)=>{const a=e.source.value;o.push(a);const n=r[t.key];if(void 0===n)throw new Error("set should not be undefined");n.add(a+memCheckGlobalKey);for(let n=0;n<e.specifiers.length;++n){const o=e.specifiers[n];if(void 0!==o.imported&&void 0!==o.local)i[o.local.name]=a+"."+o.imported.name;else{const e=r[t.key];if(void 0===e)throw new Error("set should not be undefined");e.add(a+".*")}}},FunctionDeclaration:e=>{const a=t+"."+e.id.name;acorn_walk__WEBPACK_IMPORTED_MODULE_0__.a(e,{key:a},c())}},c())),{dependencyMap:r,additionalModules:o}}async function calculateRamUsage(e,t,a){const n={loadedFns:{},env:{vars:_Netscript_RamCostGenerator__WEBPACK_IMPORTED_MODULE_3__.b}};try{return await parseOnlyRamCalculate(e,a,t,n)}catch(e){return console.error("Failed to parse script for RAM calculations:"),console.error(e),{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}return{cost:_RamCalculationErrorCodes__WEBPACK_IMPORTED_MODULE_2__.a.SyntaxError}}},function(e,t,a){"use strict";function n(e){return+(Math.round(parseFloat(e+"e+2"))+"e-2")}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(193),r=a(26),i=a(15),o=a(21),s=a(254),l=a(32),c=a(302),u=a(8),m=a(230),h=a(68),d=a(817),p=a(819);class f{constructor(e="",t=!1){this.facName=e,this.members=[],this.wanted=1,this.respect=1,this.isHackingGang=t,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 h.a[this.facName].power}getTerritory(){return h.a[this.facName].territory}process(e=1,t){const a=1e3/u.a._idleSpeed;if(isNaN(e)&&console.error("NaN passed into Gang.process(): "+e),this.storedCycles+=e,this.storedCycles<2*a)return;const n=Math.min(this.storedCycles,5*a);try{this.processGains(n,t),this.processExperienceGains(n),this.processTerritoryAndPowerGains(n),this.storedCycles-=n}catch(e){console.error("Exception caught when processing Gang: "+e)}}processGains(e=1,t){let a=0,o=0,s=0,l=0;for(let e=0;e<this.members.length;++e){o+=this.members[e].calculateRespectGain(this),a+=this.members[e].calculateMoneyGain(this);s+=this.members[e].calculateWantedLevelGain(this),this.members[e].getTask().baseWanted<0&&l++}this.respectGainRate=o,this.wantedGainRate=s,this.moneyGainRate=a;const u=o*e;this.respect+=u;const m=r.a[this.facName];if(!(m instanceof n.a))throw Object(i.a)("ERROR: Could not get Faction associates with your gang. This is a bug, please report to game dev"),new Error("Could not find the faction associated with this gang.");const h=1+m.favor/100;m.playerReputation+=t.faction_rep_mult*u*h/c.a.GangRespectToReputationRatio;for(let t=0;t<this.members.length;++t)this.members[t].recordEarnedRespect(e,this);if(!(1===this.wanted&&s<0)){const t=this.wanted;let a=t+s*e;a*=1-.001*l,s<=0&&a>t&&(a=1),this.wanted=a,this.wanted<1&&(this.wanted=1)}t.gainMoney(a*e,"gang")}processTerritoryAndPowerGains(e=1){if(this.storedTerritoryAndPowerCycles+=e,this.storedTerritoryAndPowerCycles<c.a.CyclesPerTerritoryAndPowerUpdate)return;this.storedTerritoryAndPowerCycles-=c.a.CyclesPerTerritoryAndPowerUpdate;const t=this.facName;for(const e in h.a)if(h.a.hasOwnProperty(e))if(e==t)h.a[e].power+=this.calculatePower();else{const t=Math.random();if(t<.5){const t=.005*h.a[e].power;h.a[e].power+=Math.min(.85,t)}else{const a=p.a[e];if(void 0===a)throw new Error("Should not be undefined");const n=.75*t*h.a[e].territory*a;h.a[e].power+=n}}this.territoryWarfareEngaged?this.territoryClashChance=1:this.territoryClashChance>0&&(this.territoryClashChance=Math.max(0,this.territoryClashChance-.01));const a=c.a.Names.filter(e=>h.a[e].territory>0);if(a.length>1)for(let e=0;e<a.length;++e){const r=a.filter(t=>t!==a[e]),i=Object(l.a)(0,r.length-1),o=a[e],s=r[i];if(!(o!==t&&s!==t||Math.random()<this.territoryClashChance))continue;const c=h.a[o].power,u=c/(c+h.a[s].power);function n(e,t){const a=Math.max(1,1+Math.log(h.a[e].power/h.a[t].power)/Math.log(50));return Math.min(h.a[t].territory,1e-4*a*(Math.random()+.5))}if(Math.random()<u){if(h.a[s].territory<=0)return;const e=n(o,s);h.a[o].territory+=e,h.a[o].territory>1&&(h.a[o].territory=1),h.a[s].territory-=e,h.a[o].territory<0&&(h.a[o].territory=0),o===t?(this.clash(!0),h.a[s].power*=1/1.01):s===t?this.clash(!1):h.a[s].power*=1/1.01}else{if(h.a[o].territory<=0)return;const e=n(s,o);h.a[o].territory-=e,h.a[s].territory<0&&(h.a[s].territory=0),h.a[s].territory+=e,h.a[s].territory>1&&(h.a[s].territory=1),o===t?this.clash(!1):s===t?(this.clash(!0),h.a[o].power*=1/1.01):h.a[o].power*=1/1.01}}}processExperienceGains(e=1){for(let t=0;t<this.members.length;++t)this.members[t].gainExperience(e),this.members[t].updateSkillLevels()}clash(e=!1){let t=.01;if(e?t/=2:h.a[this.facName].power*=1/1.008,!(Math.random()<.65))for(let e=this.members.length-1;e>=0;--e){const a=this.members[e];if("Territory Warfare"!==a.task)continue;const n=t/Math.pow(a.def,.6);Math.random()<n&&this.killMember(a)}}canRecruitMember(){return!(this.members.length>=c.a.MaximumGangMembers)&&this.respect>=this.getRespectNeededToRecruitMember()}getRespectNeededToRecruitMember(){if(this.members.length<3)return 0;const e=this.members.length-2;return Math.pow(5,e)}recruitMember(e){if(""===(e=String(e))||!this.canRecruitMember())return!1;if(this.members.filter(t=>t.name===e).length>=1)return!1;const t=new d.a(e);return this.members.push(t),!0}getWantedPenalty(){return this.respect/(this.respect+this.wanted)}calculatePower(){let e=0;for(let t=0;t<this.members.length;++t)m.a.hasOwnProperty(this.members[t].task)&&"Territory Warfare"===this.members[t].task&&(e+=this.members[t].calculatePower());return.015*Math.max(.002,this.getTerritory())*e}killMember(e){const t=this.respect,a=.05*t+e.earnedRespect;this.respect=Math.max(0,t-a);for(let t=0;t<this.members.length;++t)if(e.name===this.members[t].name){this.members.splice(t,1);break}this.notifyMemberDeath&&Object(i.a)(`${e.name} was killed in a gang clash! You lost ${a} respect`)}ascendMember(e,t){try{const a=e.ascend();return this.respect=Math.max(1,this.respect-a.respect),t&&t.log("gang.ascendMember",()=>"Ascended Gang member "+e.name),a}catch(e){throw null==t&&Object(s.a)(e),e}}getDiscount(){const e=this.getPower(),t=this.respect,a=Math.pow(t,.01)+t/5e6+Math.pow(e,.01)+e/1e6-1;return Math.max(1,a)}getAllTaskNames(){return Object.keys(m.a).filter(e=>{const t=m.a[e];return null!=t&&("Unassigned"!==t.name&&(this.isHackingGang===t.isHacking||!this.isHackingGang===t.isCombat))})}getUpgradeCost(e){return null==e?1/0:e.cost/this.getDiscount()}toJSON(){return Object(o.b)("Gang",this)}static fromJSON(e){return Object(o.a)(f,e.data)}}o.c.constructors.Gang=f},function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o}));var n=a(168);let r=1;function i(){let e=r,t=!1;for(let a=0;a<1e6;){if(!n.a.has(e+a)){t=!0,e+=a;break}a===Number.MAX_SAFE_INTEGER-1?a=1:++a}return t?(r=e+1,r>=Number.MAX_SAFE_INTEGER&&(r=1),e):-1}function o(){r=1}},function(e,t,a){"use strict";(function(e){a.d(t,"a",(function(){return X}));var n=a(434),r=a(14),i=a(275),o=a(5),s=a(8),l=a(94),c=a(435),u=a(87),m=a(83),h=a(2),d=a(61),p=a(207),f=a(221),g=a(91),y=a(417),b=a(24),E=a(123),k=a(226),v=a(44),_=a(80),w=a(474),S=a(78),C=a(209),x=a(181),O=a(132),M=a(168),T=a(103),R=a(4),A=a(22),N=a(167),P=a(243),I=a(126),F=a(829),D=a(830),j=a(831),B=a(832),G=a(833),L=a(836),W=a(837),H=a(838),U=a(840),q=a(845),K=a(846),z=a(847),$=a(575),V=a(15),Y=a(179),J=a(574);function X(t){const a=function(e,a){if(t.dynamicLoadedFns[e])return;t.dynamicLoadedFns[e]=!0;let n=t.scriptRef.threads;if("number"!=typeof n&&(console.warn(`WorkerScript detected NaN for threadcount for ${t.name} on ${t.hostname}`),n=1),t.dynamicRamUsage+=a,t.dynamicRamUsage>1.01*t.ramUsage)throw Object(T.b)(t,`Dynamic RAM usage calculated to be greater than initial RAM usage on fn: ${e}.\n This is probably because you somehow circumvented the static RAM calculation.\n\n Threads: ${n}\n Dynamic RAM Usage: ${R.a.formatRAM(t.dynamicRamUsage)}\n Static RAM Usage: ${R.a.formatRAM(t.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 :(`)},Q=function(e,t){const a=Object(b.d)(e);if(null==a)throw ne(t,"Invalid hostname or IP: "+e);return a},Z=function(e,a,n,r){if("string"==typeof n&&""!==n||(n="getRunningScript"),!Array.isArray(r))throw Object(T.b)(t,`Invalid scriptArgs argument passed into getRunningScript() from ${n}(). This is probably a bug. Please report to game developer`);if(null!=e&&"string"==typeof e){null==a&&(a=t.hostname);const i=Q(a,n);return Object(f.a)(e,r,i)}return t.scriptRef},ee=function(e,t){"string"==typeof t&&""!==t||(t="getRunningScriptgetRunningScriptByPid");for(const t of Object(b.c)()){const a=Object(f.b)(e,t);if(a)return a}return null},te=function(e,t,a){return Array.isArray(a)||(a=[]),`Cannot find running script ${e} on server ${t} with args: ${Object(P.a)(a)}`},ae=function(e,a=""){return e instanceof u.a&&(t.log(a,()=>"Does not work on Hacknet Servers"),!0)},ne=function(e,a){const n=(new Error).stack;if(void 0===n)throw new Error("how did we not throw an error?");const r=n.split("\n").slice(1),i=t.getServer().scripts,o=[];for(const e of r){let t;for(const a of i){a.url&&e.includes(a.url)&&(t=a.filename);for(const n of a.dependencies)e.includes(n.url)&&(t=n.filename)}if(!t)continue;function s(e){const t=e.match(/.*:(\d+):\d+.*/),a=e.match(/.*at (.+) \(.*/);return t&&a?{line:t[1],func:a[1]}:null}let a={line:"-1",func:"unknown"};const n=s(e);function l(e){const t=e.match(/.*:(\d+):\d+$/),a=e.lastIndexOf("@");return t&&-1!==a?{line:t[1],func:e.slice(0,a)}:null}n&&(a=n);const r=l(e);r&&(a=r),o.push(`${t}:L${a.line}@${a.func}`)}t.log(e,()=>a);let c=`${e}: ${a}`;return 0!==o.length&&(c+="<br><br>Stack:<br>"+o.join("<br>")),Object(T.b)(t,c)},re=function(e,a,{threads:n,stock:r}={}){if(void 0===e)throw ne("hack","Takes 1 argument.");const i=Object(T.d)(t,"hack",n),u=Q(e,"hack");if(!(u instanceof v.a))throw ne("hack","Cannot be executed on this server.");const m=Object(l.d)(u,h.a),d=Object(c.b)(u,h.a);if(!d.res)throw ne("hack",d.msg||"");return t.log("hack",()=>`Executing on '${u.hostname}' in ${Object(A.b)(1e3*m,!0)} (t=${R.a.formatThreads(i)})`),Object(T.c)(1e3*m,t).then((function(){const e=Object(l.b)(u,h.a),n=Math.random();let c=Object(l.c)(u,h.a)*i;const m=c/4;if(n<e){const e=Object(l.e)(u,h.a);let n=Math.ceil(1/e);isNaN(n)&&(n=1e6);let d=Math.floor(u.moneyAvailable*e)*i;d<=0&&(d=0,c=m),d>u.moneyAvailable&&(d=u.moneyAvailable),u.moneyAvailable-=d,u.moneyAvailable<0&&(u.moneyAvailable=0);const p=d*o.a.ScriptHackMoneyGain;return h.a.gainMoney(p,"hacking"),t.scriptRef.onlineMoneyMade+=p,h.a.scriptProdSinceLastAug+=p,t.scriptRef.recordHack(u.hostname,p,i),h.a.gainHackingExp(c),a&&h.a.gainIntelligenceExp(.005),t.scriptRef.onlineExpGained+=c,t.log("hack",()=>`Successfully hacked '${u.hostname}' for ${R.a.formatMoney(p)} and ${R.a.formatExp(c)} exp (t=${R.a.formatThreads(i)})`),u.fortify(s.a.ServerFortifyAmount*Math.min(i,n)),r&&Object(w.c)(u,d),a&&(u.backdoorInstalled=!0),Promise.resolve(p)}return h.a.gainHackingExp(m),t.scriptRef.onlineExpGained+=m,t.log("hack",()=>`Failed to hack '${u.hostname}'. Gained ${R.a.formatExp(m)} exp (t=${R.a.formatThreads(i)})`),Promise.resolve(0)}))},ie=function(e){let t="";for(let a of e)a=Object($.a)(a),t+="object"==typeof a?JSON.stringify(a):""+a;return t},oe={updateDynamicRam:a,makeRuntimeErrorMsg:ne,string:(e,t,a)=>{if("string"==typeof a)return a;if("number"==typeof a)return a+"";throw ne(e,t+" should be a string")},number:(e,t,a)=>{if(!isNaN(a)){if("number"==typeof a)return a;if(!isNaN(parseFloat(a)))return parseFloat(a)}throw ne(e,t+" should be a number")},boolean:e=>!!e,getServer:Q,checkSingularityAccess:function(e){if(4!==h.a.bitNodeN&&0===h.a.sourceFileLvl(4))throw ne(e,"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:re,getValidPort:(e,t)=>{if(isNaN(t))throw ne(e,`Invalid argument. Must be a port number between 1 and ${s.a.NumNetscriptPorts}, is ${t}`);if((t=Math.round(t))<1||t>s.a.NumNetscriptPorts)throw ne(e,`Trying to use an invalid port: ${t}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const a=x.a[t-1];if(null==a||!(a instanceof Object))throw ne(e,`Could not find port: ${t}. This is a bug. Report to dev.`);return a}},se=Object(F.a)(h.a,t,oe),le=Object(D.a)(h.a,t,oe),ce=Object(j.a)(h.a,t),ue=Object(B.a)(h.a,t,oe),me=Object(G.a)(h.a,t,oe),he=Object(W.a)(h.a,t,oe),de=Object(H.a)(h.a,t,oe),pe=Object(U.a)(h.a,t,oe),fe=Object(q.a)(h.a,t,oe),ge=Object(z.a)(h.a,t,oe),ye=Object(K.a)(h.a,t,oe),be={...{...ge,gang:se,bladeburner:he,codingcontract:de,sleeve:le,corporation:pe,stanek:me,ui:Object(L.a)(h.a,t,oe),formulas:fe,stock:ye,args:t.args,hacknet:ue,sprintf:n.sprintf,vsprintf:n.vsprintf,scan:function(e=t.hostname){a("scan",Object(r.c)(h.a,"scan"));const n=Q(e,"scan"),i=[];for(let e=0;e<n.serversOnNetwork.length;e++){const t=Object(E.a)(n,e);if(null===t)continue;const a=t.hostname;null!==a&&i.push(a)}return t.log("scan",()=>`returned ${n.serversOnNetwork.length} connections for ${n.hostname}`),i},hack:function(e,{threads:t,stock:n}={}){return a("hack",Object(r.c)(h.a,"hack")),re(e,!1,{threads:t,stock:n})},hackAnalyzeThreads:function(e,n){a("hackAnalyzeThreads",Object(r.c)(h.a,"hackAnalyzeThreads"));const i=Q(e,"hackAnalyzeThreads");if(!(i instanceof v.a))return t.log("hackAnalyzeThreads",()=>"Cannot be executed on this server."),-1;if(isNaN(n))throw ne("hackAnalyzeThreads",`Invalid growth argument passed into hackAnalyzeThreads: ${n}. Must be numeric.`);if(n<0||n>i.moneyAvailable)return-1;if(0===n)return 0;const o=Object(l.e)(i,h.a);return n/Math.floor(i.moneyAvailable*o)},hackAnalyze:function(e){a("hackAnalyze",Object(r.c)(h.a,"hackAnalyze"));const n=Q(e,"hackAnalyze");return n instanceof v.a?Object(l.e)(n,h.a):(t.log("hackAnalyze",()=>"Cannot be executed on this server."),!1)},hackAnalyzeSecurity:function(e){return s.a.ServerFortifyAmount*e},hackAnalyzeChance:function(e){a("hackAnalyzeChance",Object(r.c)(h.a,"hackAnalyzeChance"));const n=Q(e,"hackAnalyzeChance");return n instanceof v.a?Object(l.b)(n,h.a):(t.log("hackAnalyzeChance",()=>"Cannot be executed on this server."),!1)},sleep:function(e){if(void 0===e)throw ne("sleep","Takes 1 argument.");return t.log("sleep",()=>`Sleeping for ${e} milliseconds`),Object(T.c)(e,t).then((function(){return Promise.resolve(!0)}))},asleep:function(e){if(void 0===e)throw ne("asleep","Takes 1 argument.");return t.log("asleep",()=>`Sleeping for ${e} milliseconds`),Object(T.c)(e,t).then((function(){return Promise.resolve(!0)}))},grow:function(e,{threads:n,stock:i}={}){a("grow",Object(r.c)(h.a,"grow"));const o=Object(T.d)(t,"grow",n);if(void 0===e)throw ne("grow","Takes 1 argument.");const s=Q(e,"grow");if(!(s instanceof v.a))return t.log("grow",()=>"Cannot be executed on this server."),!1;const u=Object(b.d)(t.hostname);if(null===u)throw new Error("Workerscript host is null");const m=Object(c.a)(s);if(!m.res)throw ne("grow",m.msg||"");const d=Object(l.a)(s,h.a);return t.log("grow",()=>`Executing on '${s.hostname}' in ${Object(A.b)(1e3*d,!0)} (t=${R.a.formatThreads(o)}).`),Object(T.c)(1e3*d,t).then((function(){const e=s.moneyAvailable<=0?1:s.moneyAvailable;Object(E.e)(s,o,h.a,u.cpuCores);const a=s.moneyAvailable;t.scriptRef.recordGrow(s.hostname,o);const n=Object(l.c)(s,h.a)*o,r=a/e-1;return t.log("grow",()=>`Available money on '${s.hostname}' grown by ${R.a.formatPercentage(r,6)}. Gained ${R.a.formatExp(n)} hacking exp (t=${R.a.formatThreads(o)}).`),t.scriptRef.onlineExpGained+=n,h.a.gainHackingExp(n),i&&Object(w.b)(s,a-e),Promise.resolve(a/e)}))},growthAnalyze:function(e,n,i=1){a("growthAnalyze",Object(r.c)(h.a,"growthAnalyze"));const o=Q(e,"growthAnalyze");if(!(o instanceof v.a))return t.log("growthAnalyze",()=>"Cannot be executed on this server."),!1;if("number"!=typeof n||isNaN(n)||n<1||!isFinite(n))throw ne("growthAnalyze",`Invalid argument: growth must be numeric and >= 1, is ${n}.`);return Object(E.c)(o,Number(n),h.a,i)},growthAnalyzeSecurity:function(e){return 2*s.a.ServerFortifyAmount*e},weaken:function(e,{threads:n}={}){a("weaken",Object(r.c)(h.a,"weaken"));const i=Object(T.d)(t,"weaken",n);if(void 0===e)throw ne("weaken","Takes 1 argument.");const o=Q(e,"weaken");if(!(o instanceof v.a))return t.log("weaken",()=>"Cannot be executed on this server."),!1;const u=Object(c.c)(o);if(!u.res)throw ne("weaken",u.msg||"");const m=Object(l.f)(o,h.a);return t.log("weaken",()=>`Executing on '${o.hostname}' in ${Object(A.b)(1e3*m,!0)} (t=${R.a.formatThreads(i)})`),Object(T.c)(1e3*m,t).then((function(){const e=Object(b.d)(t.hostname);if(null===e)return t.log("weaken",()=>"Server is null, did it die?"),Promise.resolve(0);const a=1+(e.cpuCores-1)/16;o.weaken(s.a.ServerWeakenAmount*i*a),t.scriptRef.recordWeaken(o.hostname,i);const n=Object(l.c)(o,h.a)*i;return t.log("weaken",()=>`'${o.hostname}' security level weakened to ${o.hackDifficulty}. Gained ${R.a.formatExp(n)} hacking exp (t=${R.a.formatThreads(i)})`),t.scriptRef.onlineExpGained+=n,h.a.gainHackingExp(n),Promise.resolve(s.a.ServerWeakenAmount*i*a)}))},weakenAnalyze:function(e,t=1){const a=1+(t-1)/16;return s.a.ServerWeakenAmount*e*a},print:function(...e){if(0===e.length)throw ne("print","Takes at least 1 argument.");t.print(ie(e))},tprint:function(...e){if(0===e.length)throw ne("tprint","Takes at least 1 argument.");const a=ie(e);a.startsWith("ERROR")||a.startsWith("FAIL")?m.a.error(`${t.scriptRef.filename}: ${a}`):a.startsWith("SUCCESS")?m.a.success(`${t.scriptRef.filename}: ${a}`):a.startsWith("WARN")?m.a.warn(`${t.scriptRef.filename}: ${a}`):a.startsWith("INFO")?m.a.info(`${t.scriptRef.filename}: ${a}`):m.a.print(`${t.scriptRef.filename}: ${a}`)},tprintf:function(e,...t){if("string"!=typeof e)throw ne("tprintf","First argument must be string for the format.");const a=Object(n.vsprintf)(e,t);a.startsWith("ERROR")||a.startsWith("FAIL")?m.a.error(""+a):a.startsWith("SUCCESS")?m.a.success(""+a):a.startsWith("WARN")?m.a.warn(""+a):a.startsWith("INFO")?m.a.info(""+a):m.a.print(""+a)},clearLog:function(){t.scriptRef.clearLog()},disableLog:function(e){if("ALL"===e){for(e in Ee)t.disableLogs[e]=!0;t.log("disableLog",()=>"Disabled logging for all functions")}else{if(void 0===Ee[e])throw ne("disableLog",`Invalid argument: ${e}.`);t.disableLogs[e]=!0,t.log("disableLog",()=>"Disabled logging for "+e)}},enableLog:function(e){if("ALL"===e){for(e in Ee)delete t.disableLogs[e];t.log("enableLog",()=>"Enabled logging for all functions")}else if(void 0===Ee[e])throw ne("enableLog",`Invalid argument: ${e}.`);delete t.disableLogs[e],t.log("enableLog",()=>"Enabled logging for "+e)},isLogEnabled:function(e){if(void 0===Ee[e])throw ne("isLogEnabled",`Invalid argument: ${e}.`);return!t.disableLogs[e]},getScriptLogs:function(e,a,...n){const r=Z(e,a,"getScriptLogs",n);return null==r?(t.log("getScriptLogs",()=>te(e,a,n)),""):r.logs.slice()},tail:function(e,a=t.hostname,...n){let r;r=0===arguments.length?t.scriptRef:"number"==typeof e?ee(e,"tail"):Z(e,a,"tail",n),null!=r?N.b.emit(r):t.log("tail",()=>te(e,a,n))},nuke:function(e){if(a("nuke",Object(r.c)(h.a,"nuke")),void 0===e)throw ne("nuke","Takes 1 argument.");const n=Q(e,"nuke");if(!(n instanceof v.a))return t.log("nuke",()=>"Cannot be executed on this server."),!1;if(n.hasAdminRights)return t.log("nuke",()=>`Already have root access to '${n.hostname}'.`),!0;if(!h.a.hasProgram(d.a.NukeProgram.name))throw ne("nuke","You do not have the NUKE.exe virus!");if(n.openPortCount<n.numOpenPortsRequired)throw ne("nuke","Not enough ports opened to use NUKE.exe virus.");return n.hasAdminRights=!0,t.log("nuke",()=>`Executed NUKE.exe virus on '${n.hostname}' to gain root access.`),!0},brutessh:function(e){if(a("brutessh",Object(r.c)(h.a,"brutessh")),void 0===e)throw ne("brutessh","Takes 1 argument.");const n=Q(e,"brutessh");if(!(n instanceof v.a))return t.log("brutessh",()=>"Cannot be executed on this server."),!1;if(!h.a.hasProgram(d.a.BruteSSHProgram.name))throw ne("brutessh","You do not have the BruteSSH.exe program!");return n.sshPortOpen?t.log("brutessh",()=>`SSH Port (22) already opened on '${n.hostname}'.`):(t.log("brutessh",()=>`Executed BruteSSH.exe on '${n.hostname}' to open SSH port (22).`),n.sshPortOpen=!0,++n.openPortCount),!0},ftpcrack:function(e){if(a("ftpcrack",Object(r.c)(h.a,"ftpcrack")),void 0===e)throw ne("ftpcrack","Takes 1 argument.");const n=Q(e,"ftpcrack");if(!(n instanceof v.a))return t.log("ftpcrack",()=>"Cannot be executed on this server."),!1;if(!h.a.hasProgram(d.a.FTPCrackProgram.name))throw ne("ftpcrack","You do not have the FTPCrack.exe program!");return n.ftpPortOpen?t.log("ftpcrack",()=>`FTP Port (21) already opened on '${n.hostname}'.`):(t.log("ftpcrack",()=>`Executed FTPCrack.exe on '${n.hostname}' to open FTP port (21).`),n.ftpPortOpen=!0,++n.openPortCount),!0},relaysmtp:function(e){if(a("relaysmtp",Object(r.c)(h.a,"relaysmtp")),void 0===e)throw ne("relaysmtp","Takes 1 argument.");const n=Q(e,"relaysmtp");if(!(n instanceof v.a))return t.log("relaysmtp",()=>"Cannot be executed on this server."),!1;if(!h.a.hasProgram(d.a.RelaySMTPProgram.name))throw ne("relaysmtp","You do not have the relaySMTP.exe program!");return n.smtpPortOpen?t.log("relaysmtp",()=>`SMTP Port (25) already opened on '${n.hostname}'.`):(t.log("relaysmtp",()=>`Executed relaySMTP.exe on '${n.hostname}' to open SMTP port (25).`),n.smtpPortOpen=!0,++n.openPortCount),!0},httpworm:function(e){if(a("httpworm",Object(r.c)(h.a,"httpworm")),void 0===e)throw ne("httpworm","Takes 1 argument");const n=Q(e,"httpworm");if(!(n instanceof v.a))return t.log("httpworm",()=>"Cannot be executed on this server."),!1;if(!h.a.hasProgram(d.a.HTTPWormProgram.name))throw ne("httpworm","You do not have the HTTPWorm.exe program!");return n.httpPortOpen?t.log("httpworm",()=>`HTTP Port (80) already opened on '${n.hostname}'.`):(t.log("httpworm",()=>`Executed HTTPWorm.exe on '${n.hostname}' to open HTTP port (80).`),n.httpPortOpen=!0,++n.openPortCount),!0},sqlinject:function(e){if(a("sqlinject",Object(r.c)(h.a,"sqlinject")),void 0===e)throw ne("sqlinject","Takes 1 argument.");const n=Q(e,"sqlinject");if(!(n instanceof v.a))return t.log("sqlinject",()=>"Cannot be executed on this server."),!1;if(!h.a.hasProgram(d.a.SQLInjectProgram.name))throw ne("sqlinject","You do not have the SQLInject.exe program!");return n.sqlPortOpen?t.log("sqlinject",()=>`SQL Port (1433) already opened on '${n.hostname}'.`):(t.log("sqlinject",()=>`Executed SQLInject.exe on '${n.hostname}' to open SQL port (1433).`),n.sqlPortOpen=!0,++n.openPortCount),!0},run:function(e,n=1,...i){if(a("run",Object(r.c)(h.a,"run")),void 0===e)throw ne("run","Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");if(isNaN(n)||n<=0)throw ne("run","Invalid thread count. Must be numeric and > 0, is "+n);const o=Object(b.d)(t.hostname);if(null==o)throw ne("run","Could not find server. This is a bug. Report to dev.");return Object(x.d)(h.a,"run",o,e,i,t,n)},exec:function(e,n,i=1,...o){if(a("exec",Object(r.c)(h.a,"exec")),void 0===e||void 0===n)throw ne("exec","Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");if(isNaN(i)||i<=0)throw ne("exec","Invalid thread count. Must be numeric and > 0, is "+i);const s=Q(n,"exec");return Object(x.d)(h.a,"exec",s,e,o,t,i)},spawn:function(e,n=1,...i){if(a("spawn",Object(r.c)(h.a,"spawn")),!e||!n)throw ne("spawn","Usage: spawn(scriptname, threads)");setTimeout(()=>{if(isNaN(n)||n<=0)throw ne("spawn","Invalid thread count. Must be numeric and > 0, is "+n);const a=Object(b.d)(t.hostname);if(null==a)throw ne("spawn","Could not find server. This is a bug. Report to dev");return Object(x.d)(h.a,"spawn",a,e,i,t,n)},1e4),t.log("spawn",()=>`Will execute '${e}' in 10 seconds`),t.running=!1,Object(O.a)(t)&&t.log("spawn",()=>"Exiting...")},kill:function(e,n,...i){let o;a("kill",Object(r.c)(h.a,"kill"));const s="number"==typeof e;if(s)o=Object(O.a)(e);else{if(void 0===e||void 0===n)throw ne("kill","Usage: kill(scriptname, server, [arg1], [arg2]...)");const a=Q(n,"kill"),r=Z(e,n,"kill",i);if(null==r)return t.log("kill",()=>te(e,n,i)),!1;o=Object(O.a)(r,a.hostname)}return o?(s?t.log("kill",()=>"Killing script with PID "+e):t.log("kill",()=>`Killing '${e}' on '${n}' with args: ${Object(P.a)(i)}.`),!0):(s?t.log("kill",()=>"No script with PID "+e):t.log("kill",()=>`No such script '${e}' on '${n}' with args: ${Object(P.a)(i)}`),!1)},killall:function(e=t.hostname){if(a("killall",Object(r.c)(h.a,"killall")),void 0===e)throw ne("killall","Takes 1 argument");const n=Q(e,"killall"),o=n.runningScripts.length>0;for(let e=n.runningScripts.length-1;e>=0;--e)Object(O.a)(n.runningScripts[e],n.hostname,!1);return i.a.emit(),t.log("killall",()=>`Killing all scripts on '${n.hostname}'. May take a few minutes for the scripts to die.`),o},exit:function(){t.running=!1,Object(O.a)(t)?t.log("exit",()=>"Exiting..."):t.log("exit",()=>"Failed. This is a bug. Report to dev.")},scp:async function(e,n,i){if(a("scp",Object(r.c)(h.a,"scp")),2!==arguments.length&&3!==arguments.length)throw ne("scp","Takes 2 or 3 arguments");if(e&&e.constructor===Array){const a=e;if(0===a.length)throw ne("scp","No scripts to copy");let r=!0;return await Promise.all(a.map((async function(e){await X(t).scp(e,n,i)||(r=!1)}))),Promise.resolve(r)}if(!Object(S.j)(e))throw ne("scp",`Invalid filename: '${e}'`);if(!e.endsWith(".lit")&&!Object(g.a)(e)&&!e.endsWith("txt"))throw ne("scp","Only works for .script, .lit, and .txt files");let o,s;if(null!=i){if(void 0===e||void 0===n||void 0===i)throw ne("scp","Takes 2 or 3 arguments");o=Q(i,"scp"),s=Q(n,"scp")}else{if(null==n)throw ne("scp","Takes 2 or 3 arguments");if(void 0===e||void 0===n)throw ne("scp","Takes 2 or 3 arguments");if(o=Q(n,"scp"),s=Object(b.d)(t.hostname),null==s)throw ne("scp","Could not find server hostname for this script. This is a bug. Report to dev.")}if(e.endsWith(".lit")){let a=!1;for(let t=0;t<s.messages.length;++t)if(s.messages[t]==e){a=!0;break}if(!a)return t.log("scp",()=>`File '${e}' does not exist.`),Promise.resolve(!1);for(let a=0;a<o.messages.length;++a)if(o.messages[a]===e)return t.log("scp",()=>{var t;return`File '${e}' copied over to '${null===(t=o)||void 0===t?void 0:t.hostname}'.`}),Promise.resolve(!0);return o.messages.push(e),t.log("scp",()=>{var t;return`File '${e}' copied over to '${null===(t=o)||void 0===t?void 0:t.hostname}'.`}),Promise.resolve(!0)}if(e.endsWith(".txt")){let a;for(let t=0;t<s.textFiles.length;++t)if(s.textFiles[t].fn===e){a=s.textFiles[t];break}if(void 0===a)return t.log("scp",()=>`File '${e}' does not exist.`),Promise.resolve(!1);for(let n=0;n<o.textFiles.length;++n)if(o.textFiles[n].fn===e)return o.textFiles[n].text=a.text,t.log("scp",()=>{var t;return`File '${e}' copied over to '${null===(t=o)||void 0===t?void 0:t.hostname}'.`}),Promise.resolve(!0);const n=new C.a(a.fn,a.text);return o.textFiles.push(n),t.log("scp",()=>{var t;return`File '${e}' copied over to '${null===(t=o)||void 0===t?void 0:t.hostname}'.`}),Promise.resolve(!0)}let l=null;for(let t=0;t<s.scripts.length;++t)if(e==s.scripts[t].filename){l=s.scripts[t];break}if(null==l)return t.log("scp",()=>`File '${e}' does not exist.`),Promise.resolve(!1);for(let a=0;a<o.scripts.length;++a)if(e==o.scripts[a].filename){t.log("scp",()=>{var t;return`WARNING: File '${e}' overwritten on '${null===(t=o)||void 0===t?void 0:t.hostname}'`});const n=o.scripts[a];return n.code===l.code||(n.code=l.code,n.ramUsage=l.ramUsage,n.markUpdated()),Promise.resolve(!0)}const c=new p.a(h.a,e);return c.code=l.code,c.ramUsage=l.ramUsage,c.server=o.hostname,o.scripts.push(c),t.log("scp",()=>{var t;return`File '${e}' copied over to '${null===(t=o)||void 0===t?void 0:t.hostname}'.`}),new Promise(e=>{null!==o?c.updateRamUsage(h.a,o.scripts).then(()=>e(!0)):e(!1)})},ls:function(e,t){if(a("ls",Object(r.c)(h.a,"ls")),void 0===e)throw ne("ls","Usage: ls(hostname/ip, [grep filter])");const n=Q(e,"ls");let i="";arguments.length>=2&&(i=t.toString());const o=[];for(let e=0;e<n.programs.length;e++)i?n.programs[e].includes(i)&&o.push(n.programs[e]):o.push(n.programs[e]);for(let e=0;e<n.scripts.length;e++)i?n.scripts[e].filename.includes(i)&&o.push(n.scripts[e].filename):o.push(n.scripts[e].filename);for(let e=0;e<n.messages.length;e++)if(i){const t=n.messages[e];t.includes(i)&&o.push(t)}else o.push(n.messages[e]);for(let e=0;e<n.textFiles.length;e++)i?n.textFiles[e].fn.includes(i)&&o.push(n.textFiles[e].fn):o.push(n.textFiles[e].fn);for(let e=0;e<n.contracts.length;++e)i?n.contracts[e].fn.includes(i)&&o.push(n.contracts[e].fn):o.push(n.contracts[e].fn);return o.sort(),o},ps:function(e=t.hostname){a("ps",Object(r.c)(h.a,"ps"));const n=Q(e,"ps"),i=[];for(const e in n.runningScripts){const t=n.runningScripts[e];i.push({filename:t.filename,threads:t.threads,args:t.args.slice(),pid:t.pid})}return i},hasRootAccess:function(e){if(a("hasRootAccess",Object(r.c)(h.a,"hasRootAccess")),void 0===e)throw ne("hasRootAccess","Takes 1 argument");return Q(e,"hasRootAccess").hasAdminRights},getHostname:function(){a("getHostname",Object(r.c)(h.a,"getHostname"));const e=Object(b.d)(t.hostname);if(null==e)throw ne("getHostname","Could not find server. This is a bug. Report to dev.");return e.hostname},getHackingLevel:function(){return a("getHackingLevel",Object(r.c)(h.a,"getHackingLevel")),h.a.updateSkillLevels(),t.log("getHackingLevel",()=>"returned "+h.a.hacking),h.a.hacking},getHackingMultipliers:function(){return a("getHackingMultipliers",Object(r.c)(h.a,"getHackingMultipliers")),{chance:h.a.hacking_chance_mult,speed:h.a.hacking_speed_mult,money:h.a.hacking_money_mult,growth:h.a.hacking_grow_mult}},getHacknetMultipliers:function(){return a("getHacknetMultipliers",Object(r.c)(h.a,"getHacknetMultipliers")),{production:h.a.hacknet_node_money_mult,purchaseCost:h.a.hacknet_node_purchase_cost_mult,ramCost:h.a.hacknet_node_ram_cost_mult,coreCost:h.a.hacknet_node_core_cost_mult,levelCost:h.a.hacknet_node_level_cost_mult}},getBitNodeMultipliers:function(){if(a("getBitNodeMultipliers",Object(r.c)(h.a,"getBitNodeMultipliers")),_.a[5]<=0&&5!==h.a.bitNodeN)throw ne("getBitNodeMultipliers","Requires Source-File 5 to run.");return Object.assign({},o.a)},getServer:function(e=t.hostname){a("getServer",Object(r.c)(h.a,"getServer"));const n=Q(e,"getServer"),i=Object.assign({},n);return i.contracts=void 0,i.messages=void 0,i.runningScripts=void 0,i.scripts=void 0,i.textFiles=void 0,i.programs=void 0,i.serversOnNetwork=void 0,i.baseDifficulty||(i.baseDifficulty=0),i.hackDifficulty||(i.hackDifficulty=0),i.minDifficulty||(i.minDifficulty=0),i.moneyAvailable||(i.moneyAvailable=0),i.moneyMax||(i.moneyMax=0),i.numOpenPortsRequired||(i.numOpenPortsRequired=0),i.openPortCount||(i.openPortCount=0),i.requiredHackingSkill||(i.requiredHackingSkill=0),i.serverGrowth||(i.serverGrowth=0),i},getServerMoneyAvailable:function(e){a("getServerMoneyAvailable",Object(r.c)(h.a,"getServerMoneyAvailable"));const n=Q(e,"getServerMoneyAvailable");return n instanceof v.a?ae(n,"getServerMoneyAvailable")?0:"home"==n.hostname?(t.log("getServerMoneyAvailable",()=>"returned player's money: "+R.a.formatMoney(h.a.money)),h.a.money):(t.log("getServerMoneyAvailable",()=>`returned ${R.a.formatMoney(n.moneyAvailable)} for '${n.hostname}'`),n.moneyAvailable):(t.log("getServerMoneyAvailable",()=>"Cannot be executed on this server."),0)},getServerSecurityLevel:function(e){a("getServerSecurityLevel",Object(r.c)(h.a,"getServerSecurityLevel"));const n=Q(e,"getServerSecurityLevel");return n instanceof v.a?ae(n,"getServerSecurityLevel")?1:(t.log("getServerSecurityLevel",()=>`returned ${R.a.formatServerSecurity(n.hackDifficulty)} for '${n.hostname}'`),n.hackDifficulty):(t.log("getServerSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerBaseSecurityLevel:function(e){a("getServerBaseSecurityLevel",Object(r.c)(h.a,"getServerBaseSecurityLevel")),t.log("getServerBaseSecurityLevel",()=>"getServerBaseSecurityLevel is deprecated because it's not useful.");const n=Q(e,"getServerBaseSecurityLevel");return n instanceof v.a?ae(n,"getServerBaseSecurityLevel")?1:(t.log("getServerBaseSecurityLevel",()=>`returned ${R.a.formatServerSecurity(n.baseDifficulty)} for '${n.hostname}'`),n.baseDifficulty):(t.log("getServerBaseSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerMinSecurityLevel:function(e){a("getServerMinSecurityLevel",Object(r.c)(h.a,"getServerMinSecurityLevel"));const n=Q(e,"getServerMinSecurityLevel");return n instanceof v.a?ae(n,"getServerMinSecurityLevel")?1:(t.log("getServerMinSecurityLevel",()=>`returned ${R.a.formatServerSecurity(n.minDifficulty)} for ${n.hostname}`),n.minDifficulty):(t.log("getServerMinSecurityLevel",()=>"Cannot be executed on this server."),1)},getServerRequiredHackingLevel:function(e){a("getServerRequiredHackingLevel",Object(r.c)(h.a,"getServerRequiredHackingLevel"));const n=Q(e,"getServerRequiredHackingLevel");return n instanceof v.a?ae(n,"getServerRequiredHackingLevel")?1:(t.log("getServerRequiredHackingLevel",()=>`returned ${R.a.formatSkill(n.requiredHackingSkill)} for '${n.hostname}'`),n.requiredHackingSkill):(t.log("getServerRequiredHackingLevel",()=>"Cannot be executed on this server."),1)},getServerMaxMoney:function(e){a("getServerMaxMoney",Object(r.c)(h.a,"getServerMaxMoney"));const n=Q(e,"getServerMaxMoney");return n instanceof v.a?ae(n,"getServerMaxMoney")?0:(t.log("getServerMaxMoney",()=>`returned ${R.a.formatMoney(n.moneyMax)} for '${n.hostname}'`),n.moneyMax):(t.log("getServerMaxMoney",()=>"Cannot be executed on this server."),0)},getServerGrowth:function(e){a("getServerGrowth",Object(r.c)(h.a,"getServerGrowth"));const n=Q(e,"getServerGrowth");return n instanceof v.a?ae(n,"getServerGrowth")?1:(t.log("getServerGrowth",()=>`returned ${n.serverGrowth} for '${n.hostname}'`),n.serverGrowth):(t.log("getServerGrowth",()=>"Cannot be executed on this server."),1)},getServerNumPortsRequired:function(e){a("getServerNumPortsRequired",Object(r.c)(h.a,"getServerNumPortsRequired"));const n=Q(e,"getServerNumPortsRequired");return n instanceof v.a?ae(n,"getServerNumPortsRequired")?5:(t.log("getServerNumPortsRequired",()=>`returned ${n.numOpenPortsRequired} for '${n.hostname}'`),n.numOpenPortsRequired):(t.log("getServerNumPortsRequired",()=>"Cannot be executed on this server."),5)},getServerRam:function(e){a("getServerRam",Object(r.c)(h.a,"getServerRam")),t.log("getServerRam",()=>"getServerRam is deprecated in favor of getServerMaxRam / getServerUsedRam");const n=Q(e,"getServerRam");return t.log("getServerRam",()=>`returned [${R.a.formatRAM(n.maxRam)}, ${R.a.formatRAM(n.ramUsed)}]`),[n.maxRam,n.ramUsed]},getServerMaxRam:function(e){a("getServerMaxRam",Object(r.c)(h.a,"getServerMaxRam"));const n=Q(e,"getServerMaxRam");return t.log("getServerMaxRam",()=>"returned "+R.a.formatRAM(n.maxRam)),n.maxRam},getServerUsedRam:function(e){a("getServerUsedRam",Object(r.c)(h.a,"getServerUsedRam"));const n=Q(e,"getServerUsedRam");return t.log("getServerUsedRam",()=>"returned "+R.a.formatRAM(n.ramUsed)),n.ramUsed},serverExists:function(e){return a("serverExists",Object(r.c)(h.a,"serverExists")),null!==Object(b.d)(e)},fileExists:function(e,n=t.hostname){if(a("fileExists",Object(r.c)(h.a,"fileExists")),void 0===e)throw ne("fileExists","Usage: fileExists(scriptname, [server])");const i=Q(n,"fileExists");for(let t=0;t<i.scripts.length;++t)if(e==i.scripts[t].filename)return!0;for(let t=0;t<i.programs.length;++t)if(e.toLowerCase()==i.programs[t].toLowerCase())return!0;for(let t=0;t<i.messages.length;++t)if(e.toLowerCase()===i.messages[t].toLowerCase())return!0;return null!=Object(C.c)(e,i)},isRunning:function(e,n=t.hostname,...i){if(a("isRunning",Object(r.c)(h.a,"isRunning")),void 0===e||void 0===n)throw ne("isRunning","Usage: isRunning(scriptname, server, [arg1], [arg2]...)");return"number"==typeof e?null!=ee(e,"isRunning"):null!=Z(e,n,"isRunning",i)},getPurchasedServerLimit:function(){return a("getPurchasedServerLimit",Object(r.c)(h.a,"getPurchasedServerLimit")),Object(k.b)()},getPurchasedServerMaxRam:function(){return a("getPurchasedServerMaxRam",Object(r.c)(h.a,"getPurchasedServerMaxRam")),Object(k.c)()},getPurchasedServerCost:function(e){a("getPurchasedServerCost",Object(r.c)(h.a,"getPurchasedServerCost"));const n=Object(k.a)(e);return n===1/0?(t.log("getPurchasedServerCost",()=>`Invalid argument: ram='${e}'`),1/0):n},purchaseServer:function(e,n){const i=oe.string("purchaseServer","name",e),o=oe.number("purchaseServer","ram",n);a("purchaseServer",Object(r.c)(h.a,"purchaseServer"));let s=String(i);if(s=s.replace(/\s+/g,""),""==s)return t.log("purchaseServer",()=>`Invalid argument: hostname='${s}'`),"";if(h.a.purchasedServers.length>=Object(k.b)())return t.log("purchaseServer",()=>`You have reached the maximum limit of ${Object(k.b)()} servers. You cannot purchase any more.`),"";const l=Object(k.a)(o);if(l===1/0)return t.log("purchaseServer",()=>`Invalid argument: ram='${o}' must be a positive power of 2`),"";if(h.a.money<l)return t.log("purchaseServer",()=>"Not enough money to purchase server. Need "+R.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),h.a.purchasedServers.push(c.hostname);const u=h.a.getHomeComputer();return u.serversOnNetwork.push(c.hostname),c.serversOnNetwork.push(u.hostname),h.a.loseMoney(l,"servers"),t.log("purchaseServer",()=>`Purchased new server with hostname '${c.hostname}' for ${R.a.formatMoney(l)}`),c.hostname},deleteServer:function(e){a("deleteServer",Object(r.c)(h.a,"deleteServer"));let n=String(e);n=n.replace(/\s\s+/g,"");const i=Object(b.d)(n);if(!(i instanceof v.a))return t.log("deleteServer",()=>`Invalid argument: hostname='${n}'`),!1;if(!i.purchasedByPlayer||"home"===i.hostname)return t.log("deleteServer",()=>"Cannot delete non-purchased server."),!1;const o=i.hostname;if(i.isConnectedTo)return t.log("deleteServer",()=>"You are currently connected to the server you are trying to delete."),!1;if(o===t.hostname)return t.log("deleteServer",()=>"Cannot delete the server this script is running on."),!1;if(i.runningScripts.length>0)return t.log("deleteServer",()=>`Cannot delete server '${o}' because it still has scripts running.`),!1;let s=!1;for(let e=0;e<h.a.purchasedServers.length;++e)if(o==h.a.purchasedServers[e]){s=!0,h.a.purchasedServers.splice(e,1);break}if(!s)return t.log("deleteServer",()=>`Could not identify server ${o} as a purchased server. This is a bug. Report to dev.`),!1;Object(b.b)(o),s=!1;const l=h.a.getHomeComputer();for(let e=0;e<l.serversOnNetwork.length;++e)if(o==l.serversOnNetwork[e])return l.serversOnNetwork.splice(e,1),t.log("deleteServer",()=>"Deleted server '"+n),!0;return t.log("deleteServer",()=>`Could not find server ${o} as a purchased server. This is a bug. Report to dev.`),!1},getPurchasedServers:function(){a("getPurchasedServers",Object(r.c)(h.a,"getPurchasedServers"));const e=[];return h.a.purchasedServers.forEach((function(t){e.push(t)})),e},writePort:function(e,t=""){if("string"!=typeof t&&"number"!=typeof t)throw ne("writePort","Trying to write invalid data to a port: only strings and numbers are valid.");const a=oe.getValidPort("writePort",e);return Promise.resolve(a.write(t))},write:function(e,n="",i="a"){if(a("write",Object(r.c)(h.a,"write")),Object(I.a)(e)){let a=e;if(!Object(S.j)(a))throw ne("write","Invalid filepath: "+a);0===a.lastIndexOf("/")&&(a=Object(S.k)(a));try{n=String(n)}catch(e){throw ne("write",`Invalid data (${e}). Data being written must be convertible to a string`)}const r=t.getServer();if(null==r)throw ne("write","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(a)){let e=t.getScriptOnServer(a,r);return null==e?(e=new p.a(h.a,a,n,r.hostname,r.scripts),r.scripts.push(e),e.updateRamUsage(h.a,r.scripts)):("w"===i?e.code=n:e.code+=n,e.updateRamUsage(h.a,r.scripts))}{const e=Object(C.c)(a,r);if(null==e)return Object(C.b)(a,n,r),Promise.resolve();"w"===i?e.write(n):e.append(n)}return Promise.resolve()}throw ne("write","Invalid argument: "+e)},tryWritePort:function(e,t=""){if(a("tryWritePort",Object(r.c)(h.a,"tryWritePort")),isNaN(e))throw ne("tryWritePort","Invalid argument: "+e);{if((e=Math.round(e))<1||e>s.a.NumNetscriptPorts)throw ne("tryWritePort",`Invalid port: ${e}. Only ports 1-${s.a.NumNetscriptPorts} are valid.`);const a=x.a[e-1];if(null==a||!(a instanceof Object))throw ne("tryWritePort",`Could not find port: ${e}. This is a bug. Report to dev.`);return Promise.resolve(a.tryWrite(t))}},readPort:function(e){return oe.getValidPort("readPort",e).read()},read:function(e){if(a("read",Object(r.c)(h.a,"read")),Object(I.a)(e)){const a=e,n=Object(b.d)(t.hostname);if(null==n)throw ne("read","Error getting Server. This is a bug. Report to dev.");if(Object(g.a)(a)){const e=t.getScriptOnServer(a,n);return null==e?"":e.code}{const e=Object(C.c)(a,n);return null!==e?e.text:""}}throw ne("read","Invalid argument: "+e)},peek:function(e){a("peek",Object(r.c)(h.a,"peek"));return oe.getValidPort("peek",e).peek()},clear:function(e){if(a("clear",Object(r.c)(h.a,"clear")),!Object(I.a)(e))throw ne("clear","Invalid argument: "+e);{const a=e,n=Object(b.d)(t.hostname);if(null==n)throw ne("clear","Error getting Server. This is a bug. Report to dev.");const r=Object(C.c)(a,n);null!=r&&r.write("")}return 0},clearPort:function(e){return oe.getValidPort("clearPort",e).clear()},getPortHandle:function(e){a("getPortHandle",Object(r.c)(h.a,"getPortHandle"));return oe.getValidPort("getPortHandle",e)},rm:function(e,n){a("rm",Object(r.c)(h.a,"rm")),null!=n&&""!==n||(n=t.hostname);const i=Q(n,"rm").removeFile(e);return i.res||t.log("rm",()=>i.msg+""),i.res},scriptRunning:function(e,t){a("scriptRunning",Object(r.c)(h.a,"scriptRunning"));const n=Q(t,"scriptRunning");for(let t=0;t<n.runningScripts.length;++t)if(n.runningScripts[t].filename==e)return!0;return!1},scriptKill:function(e,t){a("scriptKill",Object(r.c)(h.a,"scriptKill"));const n=Q(t,"scriptKill");let i=!1;for(let t=0;t<n.runningScripts.length;t++)n.runningScripts[t].filename==e&&(Object(O.a)(n.runningScripts[t],n.hostname),i=!0,t--);return i},getScriptName:function(){return t.name},getScriptRam:function(e,n=t.hostname){a("getScriptRam",Object(r.c)(h.a,"getScriptRam"));const i=Q(n,"getScriptRam");for(let t=0;t<i.scripts.length;++t)if(i.scripts[t].filename==e)return i.scripts[t].ramUsage;return 0},getRunningScript:function(e,n,...i){let o;return a("getRunningScript",Object(r.c)(h.a,"getRunningScript")),o=void 0===e&&void 0===n&&0===i.length?t.scriptRef:"number"==typeof e?ee(e,"getRunningScript"):Z(e,n,"getRunningScript",i),null===o?null:{args:o.args.slice(),filename:o.filename,logs:o.logs.slice(),offlineExpGained:o.offlineExpGained,offlineMoneyMade:o.offlineMoneyMade,offlineRunningTime:o.offlineRunningTime,onlineExpGained:o.onlineExpGained,onlineMoneyMade:o.onlineMoneyMade,onlineRunningTime:o.onlineRunningTime,pid:o.pid,ramUsage:o.ramUsage,server:o.server,threads:o.threads}},getHackTime:function(e){a("getHackTime",Object(r.c)(h.a,"getHackTime"));const n=Q(e,"getHackTime");return n instanceof v.a?ae(n,"getHackTime")?1/0:1e3*Object(l.d)(n,h.a):(t.log("getHackTime",()=>"invalid for this kind of server"),1/0)},getGrowTime:function(e){a("getGrowTime",Object(r.c)(h.a,"getGrowTime"));const n=Q(e,"getGrowTime");return n instanceof v.a?ae(n,"getGrowTime")?1/0:1e3*Object(l.a)(n,h.a):(t.log("getGrowTime",()=>"invalid for this kind of server"),1/0)},getWeakenTime:function(e=t.hostname){a("getWeakenTime",Object(r.c)(h.a,"getWeakenTime"));const n=Q(e,"getWeakenTime");return n instanceof v.a?ae(n,"getWeakenTime")?1/0:1e3*Object(l.f)(n,h.a):(t.log("getWeakenTime",()=>"invalid for this kind of server"),1/0)},getScriptIncome:function(e,n,...i){if(a("getScriptIncome",Object(r.c)(h.a,"getScriptIncome")),0===arguments.length){const e=[];let t=0;for(const e of M.a.values())t+=e.scriptRef.onlineMoneyMade/e.scriptRef.onlineRunningTime;return e.push(t),e.push(h.a.scriptProdSinceLastAug/(h.a.playtimeSinceLastAug/1e3)),e}{const a=Q(n,"getScriptIncome"),r=Object(f.a)(e,i,a);return null==r?(t.log("getScriptIncome",()=>`No such script '${e}' on '${a.hostname}' with args: ${Object(P.a)(i)}`),-1):r.onlineMoneyMade/r.onlineRunningTime}},getScriptExpGain:function(e,n,...i){if(a("getScriptExpGain",Object(r.c)(h.a,"getScriptExpGain")),0===arguments.length){let e=0;for(const t of M.a.values())e+=t.scriptRef.onlineExpGained/t.scriptRef.onlineRunningTime;return e}{const a=Q(n,"getScriptExpGain"),r=Object(f.a)(e,i,a);return null==r?(t.log("getScriptExpGain",()=>`No such script '${e}' on '${a.hostname}' with args: ${Object(P.a)(i)}`),-1):r.onlineExpGained/r.onlineRunningTime}},nFormat:function(e,t){return isNaN(e)||isNaN(parseFloat(e))||"string"!=typeof t?"":R.a.format(parseFloat(e),t)},tFormat:function(e,t=!1){return Object(A.b)(e,t)},getTimeSinceLastAug:function(){return a("getTimeSinceLastAug",Object(r.c)(h.a,"getTimeSinceLastAug")),h.a.playtimeSinceLastAug},alert:function(e){e=ie([e]),Object(V.a)(e)},toast:function(e,t="success",a=2e3){if(!["success","info","warning","error"].includes(t))throw new Error('variant must be one of "success", "info", "warning", or "error"');e=ie([e]),Y.b.emit(e,t,a)},prompt:function(e){return Object(I.a)(e)||(e=JSON.stringify(e)),new Promise((function(t){y.a.emit({txt:e,resolve:t})}))},wget:async function(a,n,r=t.hostname){if(!Object(g.a)(n)&&!n.endsWith(".txt"))return t.log("wget",()=>`Invalid target file: '${n}'. Must be a script or text file.`),Promise.resolve(!1);const i=Q(r,"wget");return new Promise((function(o){e.get(a,(function(e){let a;return a=Object(g.a)(n)?i.writeToScriptFile(h.a,n,e):i.writeToTextFile(n,e),a.success?a.overwritten?(t.log("wget",()=>`Successfully retrieved content and overwrote '${n}' on '${r}'`),o(!0)):(t.log("wget",()=>`Successfully retrieved content to new file '${n}' on '${r}'`),o(!0)):(t.log("wget",()=>"Failed."),o(!1))}),"text").fail((function(e){return t.log("wget",()=>JSON.stringify(e)),o(!1)}))}))},getFavorToDonate:function(){return a("getFavorToDonate",Object(r.c)(h.a,"getFavorToDonate")),Math.floor(s.a.BaseFavorToDonate*o.a.RepToDonateToFaction)},getOwnedSourceFiles:function(){oe.updateDynamicRam("getOwnedSourceFiles",Object(r.c)(h.a,"getOwnedSourceFiles"));const e=[];for(let t=0;t<h.a.sourceFiles.length;++t)e.push({n:h.a.sourceFiles[t].n,lvl:h.a.sourceFiles[t].lvl});return e},getPlayer:function(){oe.updateDynamicRam("getPlayer",Object(r.c)(h.a,"getPlayer"));const e={hacking:h.a.hacking,hp:h.a.hp,max_hp:h.a.max_hp,strength:h.a.strength,defense:h.a.defense,dexterity:h.a.dexterity,agility:h.a.agility,charisma:h.a.charisma,intelligence:h.a.intelligence,hacking_chance_mult:h.a.hacking_chance_mult,hacking_speed_mult:h.a.hacking_speed_mult,hacking_money_mult:h.a.hacking_money_mult,hacking_grow_mult:h.a.hacking_grow_mult,hacking_exp:h.a.hacking_exp,strength_exp:h.a.strength_exp,defense_exp:h.a.defense_exp,dexterity_exp:h.a.dexterity_exp,agility_exp:h.a.agility_exp,charisma_exp:h.a.charisma_exp,hacking_mult:h.a.hacking_mult,strength_mult:h.a.strength_mult,defense_mult:h.a.defense_mult,dexterity_mult:h.a.dexterity_mult,agility_mult:h.a.agility_mult,charisma_mult:h.a.charisma_mult,hacking_exp_mult:h.a.hacking_exp_mult,strength_exp_mult:h.a.strength_exp_mult,defense_exp_mult:h.a.defense_exp_mult,dexterity_exp_mult:h.a.dexterity_exp_mult,agility_exp_mult:h.a.agility_exp_mult,charisma_exp_mult:h.a.charisma_exp_mult,company_rep_mult:h.a.company_rep_mult,faction_rep_mult:h.a.faction_rep_mult,numPeopleKilled:h.a.numPeopleKilled,money:h.a.money,city:h.a.city,location:h.a.location,companyName:h.a.companyName,crime_money_mult:h.a.crime_money_mult,crime_success_mult:h.a.crime_success_mult,isWorking:h.a.isWorking,workType:h.a.workType,currentWorkFactionName:h.a.currentWorkFactionName,currentWorkFactionDescription:h.a.currentWorkFactionDescription,workHackExpGainRate:h.a.workHackExpGainRate,workStrExpGainRate:h.a.workStrExpGainRate,workDefExpGainRate:h.a.workDefExpGainRate,workDexExpGainRate:h.a.workDexExpGainRate,workAgiExpGainRate:h.a.workAgiExpGainRate,workChaExpGainRate:h.a.workChaExpGainRate,workRepGainRate:h.a.workRepGainRate,workMoneyGainRate:h.a.workMoneyGainRate,workMoneyLossRate:h.a.workMoneyLossRate,workHackExpGained:h.a.workHackExpGained,workStrExpGained:h.a.workStrExpGained,workDefExpGained:h.a.workDefExpGained,workDexExpGained:h.a.workDexExpGained,workAgiExpGained:h.a.workAgiExpGained,workChaExpGained:h.a.workChaExpGained,workRepGained:h.a.workRepGained,workMoneyGained:h.a.workMoneyGained,createProgramName:h.a.createProgramName,createProgramReqLvl:h.a.createProgramReqLvl,className:h.a.className,crimeType:h.a.crimeType,work_money_mult:h.a.work_money_mult,hacknet_node_money_mult:h.a.hacknet_node_money_mult,hacknet_node_purchase_cost_mult:h.a.hacknet_node_purchase_cost_mult,hacknet_node_ram_cost_mult:h.a.hacknet_node_ram_cost_mult,hacknet_node_core_cost_mult:h.a.hacknet_node_core_cost_mult,hacknet_node_level_cost_mult:h.a.hacknet_node_level_cost_mult,hasWseAccount:h.a.hasWseAccount,hasTixApiAccess:h.a.hasTixApiAccess,has4SData:h.a.has4SData,has4SDataTixApi:h.a.has4SDataTixApi,bladeburner_max_stamina_mult:h.a.bladeburner_max_stamina_mult,bladeburner_stamina_gain_mult:h.a.bladeburner_stamina_gain_mult,bladeburner_analysis_mult:h.a.bladeburner_analysis_mult,bladeburner_success_chance_mult:h.a.bladeburner_success_chance_mult,bitNodeN:h.a.bitNodeN,totalPlaytime:h.a.totalPlaytime,playtimeSinceLastAug:h.a.playtimeSinceLastAug,playtimeSinceLastBitnode:h.a.playtimeSinceLastBitnode,jobs:{},factions:h.a.factions.slice(),tor:h.a.hasTorRouter()};return Object.assign(e.jobs,h.a.jobs),e},atExit:function(e){if("function"!=typeof e)throw ne("atExit","argument should be function");t.atExit=e},mv:function(e,t,n){if(a("mv",Object(r.c)(h.a,"mv")),3!=arguments.length)throw ne("mv","Takes 3 argument.");if(!Object(S.j)(t))throw ne("mv",`Invalid filename: '${t}'`);if(!Object(S.j)(n))throw ne("mv",`Invalid filename: '${n}'`);const i=t.endsWith(".txt"),o=n.endsWith(".txt");if(!Object(g.a)(t)&&!i)throw ne("mv","'mv' can only be used on scripts and text files (.txt)");if(i!=o)throw ne("mv","Source and destination files must have the same type");if(t===n)return;const s=Q(e,"mv");if(!i&&s.isRunning(t))throw ne("mv","Cannot use 'mv' on a script that is running");const l=i?s.textFiles:s.scripts;let c=null,u=null;for(let e=0;e<l.length;++e){const a=l[e];a.filename===t?c=a:a.filename===n&&(u=a)}if(null==c)throw ne("mv",`Source file ${t} does not exist`);null!=u?(u instanceof C.a&&c instanceof C.a?u.text=c.text:u instanceof p.a&&c instanceof p.a&&(u.code=c.code,u.markUpdated()),s.removeFile(t)):(c.filename=n,c instanceof p.a&&c.markUpdated())},flags:Object(J.a)(t.args)},...ce};const Ee=Object.fromEntries([...function e(t,a){const n=[];for(const[r,i]of Object.entries(t))"args"!==r&&("function"==typeof i?n.push(a+r):"object"==typeof i&&n.push(...e(i,r+".")));return n}(be,"")].map(e=>[e,!0]));return be}}).call(this,a(705))},function(e,t,a){"use strict";a.d(t,"c",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"a",(function(){return s}));var n=a(139),r=a(95);function i(e,t){const a=e.organizationName;let i=null;if("string"==typeof a&&""!==a&&(i=r.a[a]),!(i instanceof n.a))return;const o=t/e.moneyMax;Math.random()<o&&i.changeForecastForecast(i.otlkMagForecast-.1)}function o(e,t){const a=e.organizationName;let i=null;if("string"==typeof a&&""!==a&&(i=r.a[a]),!(i instanceof n.a))return;const o=t/e.moneyMax;Math.random()<o&&i.changeForecastForecast(i.otlkMagForecast+.1)}function s(e,t,a){const i=e.name;let o=null;if("string"==typeof i&&""!==i&&(o=r.a[i]),o instanceof n.a&&Math.random()<.002*a){const e=.001*t;o.changeForecastForecast(o.otlkMagForecast+e)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(61);function r(e){const t=[];for(const a in n.a){const r=n.a[a].create;null!=r&&(e.hasProgram(n.a[a].name)||r.req(e)&&t.push(n.a[a]))}return t}},,,function(e,t,a){"use strict";function n(e,t,a=!1){let n="";const r=e.jobStatReqOffset,i=t.requiredHacking>0?t.requiredHacking+r:0,o=t.requiredStrength>0?t.requiredStrength+r:0,s=t.requiredDefense>0?t.requiredDefense+r:0,l=t.requiredDexterity>0?t.requiredDexterity+r:0,c=t.requiredDexterity>0?t.requiredDexterity+r:0,u=t.requiredCharisma>0?t.requiredCharisma+r:0,m=t.requiredReputation;return a?(n="Requires:<br>",n+=i.toString()+" hacking<br>",n+=o.toString()+" strength<br>",n+=s.toString()+" defense<br>",n+=l.toString()+" dexterity<br>",n+=c.toString()+" agility<br>",n+=u.toString()+" charisma<br>",n+=m.toString()+" reputation"):(n="(Requires ",i>0&&(n+=i+" hacking, "),o>0&&(n+=o+" strength, "),s>0&&(n+=s+" defense, "),l>0&&(n+=l+" dexterity, "),c>0&&(n+=c+" agility, "),u>0&&(n+=u+" charisma, "),m>1&&(n+=m+" reputation, "),n=n.substring(0,n.length-2),n+=")"),n}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return i}));const n=["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/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","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 ...] | [glob] 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 <i>d</i> 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 ...] | [glob] 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=e=>[e+" [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, ${e} can spider directories and open all matching `,`files at once. ${e} cannot create files using globs, so your scripts must already exist.`," ","Examples:"," ",e+" test.js",e+" test.js test2.js"," ",e+" test.*",e+" /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 or IP address 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 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"," "],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] [| 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 '| 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 | grep .script"," ","List all files with the '.js' extension in the root directory:"," "," ls / | grep .js"," ","List all files with the word 'purchase' in the filename, in the 'scripts' directory:"," "," ls scripts | 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(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(1168),o=a(1),s=a(10);function l(e){const[t,a]=Object(n.useState)(0),[l,c]=Object(n.useState)(!1);return r.a.createElement(r.a.Fragment,null,e.lines.slice(0,t).map((e,t)=>r.a.createElement(o.a,{key:t},e)),e.lines.length>t&&r.a.createElement(i.a,{key:t,text:e.lines[t],onDone:function(){const n=t+1;a(n),n>=e.lines.length&&(e.onDone&&e.auto&&e.onDone(),c(!0))}}),!e.auto&&e.onDone&&l&&r.a.createElement(s.a,{onClick:e.onDone},"Continue ..."))}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(32);function r(e){const t=Math.max(Math.min(e,255),0);return Object(n.a)(0,t)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(32);const r={Tracking:()=>Object(n.a)(5,75)/10,"Bounty Hunter":()=>Object(n.a)(5,75)/10,Retirement:()=>Object(n.a)(5,75)/10,Investigation:()=>Object(n.a)(10,40)/10,"Undercover Operation":()=>Object(n.a)(10,40)/10,"Sting Operation":()=>Object(n.a)(3,40)/10,Raid:()=>Object(n.a)(2,40)/10,"Stealth Retirement Operation":()=>Object(n.a)(1,20)/10,Assassination:()=>Object(n.a)(1,20)/10}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(140);function r(e){const t={},a=Object.keys(n.a);for(let n=0;n<a.length;++n)t[a[n]]=e;return JSON.parse(JSON.stringify(t))}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e){this.cards=e}addCards(...e){return new n([...this.cards,...e])}removeByIndex(e){if(e>=this.cards.length)throw new Error("Tried to remove invalid card from Hand by index: "+e);return new n([...this.cards.slice().splice(e,1)])}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a(1),i=a(28),o=a(10);function s(e){return n.createElement(i.a,{title:null!=e.tooltip?n.createElement(r.a,null,e.tooltip):""},n.createElement(o.a,{onClick:e.onClick},e.text))}},,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(104),r=a(207),i=a(78),o=a(209),s=a(91),l=a(296),c=a(297);function u(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class m{constructor(e={hostname:"",ip:Object(l.a)()}){u(this,"contracts",[]),u(this,"cpuCores",1),u(this,"ftpPortOpen",!1),u(this,"hasAdminRights",!1),u(this,"hostname",""),u(this,"httpPortOpen",!1),u(this,"ip",""),u(this,"isConnectedTo",!1),u(this,"maxRam",0),u(this,"messages",[]),u(this,"organizationName",""),u(this,"programs",[]),u(this,"ramUsed",0),u(this,"runningScripts",[]),u(this,"scripts",[]),u(this,"serversOnNetwork",[]),u(this,"smtpPortOpen",!1),u(this,"sqlPortOpen",!1),u(this,"sshPortOpen",!1),u(this,"textFiles",[]),u(this,"purchasedByPlayer",!1),this.ip=e.ip?e.ip:Object(l.a)(),this.hostname=e.hostname,this.organizationName=null!=e.organizationName?e.organizationName:"",this.isConnectedTo=null!=e.isConnectedTo&&e.isConnectedTo,this.hasAdminRights=null!=e.adminRights&&e.adminRights}addContract(e){this.contracts.push(e)}getContract(e){for(const t of this.contracts)if(t.fn===e)return t;return null}getRunningScript(e,t){for(const a of this.runningScripts)if(a.filename===e&&Object(c.a)(a.args,t))return a;return null}getScript(e){for(let t=0;t<this.scripts.length;t++)if(this.scripts[t].filename===e)return this.scripts[t];return null}isRunning(e){for(const t of this.runningScripts)if(t.filename===e)return!0;return!1}removeContract(e){e instanceof n.a?this.contracts=this.contracts.filter(t=>t.fn!==e.fn):this.contracts=this.contracts.filter(t=>t.fn!==e)}removeFile(e){if(e.endsWith(".exe")||null!=e.match(/^.+\.exe-\d+(?:\.\d*)?%-INC$/)){for(let t=0;t<this.programs.length;++t)if(this.programs[t]===e)return this.programs.splice(t,1),{res:!0}}else if(Object(s.a)(e)){for(let t=0;t<this.scripts.length;++t)if(this.scripts[t].filename===e)return this.isRunning(e)?{res:!1,msg:"Cannot delete a script that is currently running!"}:(this.scripts.splice(t,1),{res:!0})}else if(e.endsWith(".lit"))for(let t=0;t<this.messages.length;++t){const a=this.messages[t];if("string"==typeof a&&a===e)return this.messages.splice(t,1),{res:!0}}else if(e.endsWith(".txt")){for(let t=0;t<this.textFiles.length;++t)if(this.textFiles[t].fn===e)return this.textFiles.splice(t,1),{res:!0}}else if(e.endsWith(".cct"))for(let t=0;t<this.contracts.length;++t)if(this.contracts[t].fn===e)return this.contracts.splice(t,1),{res:!0};return{res:!1,msg:"No such file exists"}}runScript(e){this.runningScripts.push(e)}setMaxRam(e){this.maxRam=e}updateRamUsed(e,t){this.ramUsed=e}writeToScriptFile(e,t,a){const n={success:!1,overwritten:!1};if(!Object(i.j)(t)||!Object(s.a)(t))return n;for(let r=0;r<this.scripts.length;++r)if(t===this.scripts[r].filename){const t=this.scripts[r];return t.code=a,t.updateRamUsage(e,this.scripts),t.markUpdated(),n.overwritten=!0,n.success=!0,n}const o=new r.a(e,t,a,this.hostname,this.scripts);return this.scripts.push(o),n.success=!0,n}writeToTextFile(e,t){const a={success:!1,overwritten:!1};if(!Object(i.j)(e)||!e.endsWith("txt"))return a;for(let n=0;n<this.textFiles.length;++n)if(this.textFiles[n].fn===e)return a.overwritten=!0,this.textFiles[n].text=t,a.success=!0,a;const n=new o.a(e,t);return this.textFiles.push(n),a.success=!0,a}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d})),a.d(t,"b",(function(){return p}));var n=a(0),r=a.n(n),i=a(96),o=a(104),s=a(161),l=a(40),c=a(122),u=a(1),m=a(85),h=a(10);const d=new c.a;function p(){const[e,t]=Object(n.useState)(null),[a,c]=Object(n.useState)("");if(Object(n.useEffect)(()=>{d.subscribe(e=>t(e))}),null===e)return r.a.createElement(r.a.Fragment,null);function p(){null!==e&&(e.onClose(),t(null))}const f=o.d[e.c.type],g=[];for(const[t,a]of f.desc(e.c.data).split("\n").entries())g.push(r.a.createElement("span",{key:t,dangerouslySetInnerHTML:{__html:a+"<br />"}}));return r.a.createElement(l.a,{open:null!==e,onClose:p},r.a.createElement(s.a,{variant:"h4",value:e.c.type}),r.a.createElement(u.a,null,"You are attempting to solve a Coding Contract. You have ",e.c.getMaxNumTries()-e.c.tries," tries remaining, after which the contract will self-destruct."),r.a.createElement("br",null),r.a.createElement(u.a,null,g),r.a.createElement("br",null),r.a.createElement(m.a,{autoFocus:!0,placeholder:"Enter Solution here",value:a,onChange:function(e){c(e.target.value)},onKeyDown:function(t){if(null===e)return;const n=t.target.value;t.keyCode===i.a.ENTER&&""!==n&&(t.preventDefault(),e.onAttempt(a),c(""),p())},InputProps:{endAdornment:r.a.createElement(h.a,{onClick:()=>{e.onAttempt(a),c(""),p()}},"Solve")}}))}},,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(470);function r(e){const t=n.sha256.create();return t.update(e),t.hex()}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u})),a.d(t,"b",(function(){return m}));var n=a(0),r=a.n(n),i=a(40),o=a(29),s=a(122),l=a(1),c=a(10);const u=new s.a;function m(){const e=o.b.Router(),[t,a]=Object(n.useState)(!1);return Object(n.useEffect)(()=>u.subscribe(()=>a(!0)),[]),r.a.createElement(i.a,{open:t,onClose:()=>a(!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(){e.toBitVerse(!0,!1),a(!1)}},"Travel to the BitVerse"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n);class i{constructor(e,t,a,n,r,i,o,s){this.infoText=e,this.enemies=t,this.offerHackingMission=a,this.offerHackingWork=n,this.offerFieldWork=r,this.offerSecurityWork=i,this.augmentationPriceMult=1,this.augmentationRepRequirementMult=1,this.keep=s,this.special=o}offersWork(){return this.offerFieldWork||this.offerHackingMission||this.offerHackingWork||this.offerSecurityWork}}const o={Illuminati:new i(r.a.createElement(r.a.Fragment,null,"Humanity never changes. No matter how civilized society becomes, it will eventually fall back into chaos. And from this chaos, we are the invisible hand that guides them to order."," "),[],!0,!0,!0,!1,!1,!1),Daedalus:new i(r.a.createElement(r.a.Fragment,null,"Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth."),[],!0,!0,!0,!1,!1,!1),"The Covenant":new i(r.a.createElement(r.a.Fragment,null,"Surrender yourself. Give up your empty individuality to become part of something great, something eternal. Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.",r.a.createElement("br",null),r.a.createElement("br",null),"Only then can you discover immortality."),[],!0,!0,!0,!1,!1,!1),ECorp:new i(r.a.createElement(r.a.Fragment,null,"ECorp's mission is simple: to connect the world of today with the technology of tomorrow. With our wide range of Internet-related software and commercial hardware, ECorp makes the world's information universally accessible."),[],!0,!0,!0,!0,!1,!0),MegaCorp:new i(r.a.createElement(r.a.Fragment,null,"MegaCorp does what no other dares to do. We imagine. We create. We invent. We create what others have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an unprecendented scale, in ways that no other company can.",r.a.createElement("br",null),r.a.createElement("br",null),"In our labs and factories and on the ground with customers, MegaCorp is ushering in a new era for the world."),[],!0,!0,!0,!0,!1,!0),"Bachman & Associates":new i(r.a.createElement(r.a.Fragment,null,"Where Law and Business meet - thats where we are.",r.a.createElement("br",null),r.a.createElement("br",null),"Legal Insight - Business Instinct - Innovative Experience."),[],!0,!0,!0,!0,!1,!0),"Blade Industries":new i(r.a.createElement(r.a.Fragment,null,"Augmentation is Salvation."),[],!0,!0,!0,!0,!1,!0),NWO:new i(r.a.createElement(r.a.Fragment,null,"Humans don't truly desire freedom. They want to be observed, understood, and judged. They want to be given purpose and direction in life. That is why they created God. And that is why they created civilization - not because of willingness, but because of a need to be incorporated into higher orders of structure and meaning."),[],!0,!0,!0,!0,!1,!0),"Clarke Incorporated":new i(r.a.createElement(r.a.Fragment,null,"The Power of the Genome - Unlocked."),[],!0,!0,!0,!0,!1,!0),"OmniTek Incorporated":new i(r.a.createElement(r.a.Fragment,null,"Simply put, our mission is to design and build robots that make a difference."),[],!0,!0,!0,!0,!1,!0),"Four Sigma":new i(r.a.createElement(r.a.Fragment,null,"The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by deep learning and innovative ideas. And improved by iteration. That's Four Sigma."),[],!0,!0,!0,!0,!1,!0),"KuaiGong International":new i(r.a.createElement(r.a.Fragment,null,"Dream big. Work hard. Make history."),[],!0,!0,!0,!0,!1,!0),"Fulcrum Secret Technologies":new i(r.a.createElement(r.a.Fragment,null,"The human organism has an innate desire to worship. That is why they created gods. If there were no gods, it would be necessary to create them. And now we can."),[],!0,!0,!1,!0,!1,!0),BitRunners:new i(r.a.createElement(r.a.Fragment,null,"Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person to move, to live, to operate at any level without the use of bits. And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.",r.a.createElement("br",null),r.a.createElement("br",null),"Those who run the bits, run the world."),[],!0,!0,!1,!1,!1,!1),"The Black Hand":new i(r.a.createElement(r.a.Fragment,null,"The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. Technological power. And those at the top rule with an invisible hand. They built a society where the rich get richer, and everyone else suffers.",r.a.createElement("br",null),r.a.createElement("br",null),"So much pain. So many lives. Their darkness must end."),[],!0,!0,!0,!1,!1,!1),NiteSec:new i(r.a.createElement(r.a.Fragment,null," __..__ ",r.a.createElement("br",null)," _.nITESECNIt. ",r.a.createElement("br",null)," .-'NITESECNITESEc. ",r.a.createElement("br",null)," .' NITESECNITESECn ",r.a.createElement("br",null)," / NITESECNITESEC; ",r.a.createElement("br",null)," : :NITESECNITESEC; ",r.a.createElement("br",null)," ; $ NITESECNITESECN ",r.a.createElement("br",null)," : _, ,N'ITESECNITESEC ",r.a.createElement("br",null)," : .+^^`, : `NITESECNIT ",r.a.createElement("br",null)," ) /), `-,-=,NITESECNI ",r.a.createElement("br",null)," / ^ ,-;|NITESECN; ",r.a.createElement("br",null)," / _.' '-';NITESECN ",r.a.createElement("br",null)," ( , ,-''`^NITE' ",r.a.createElement("br",null)," )` :`. .' ",r.a.createElement("br",null)," )-- ; `- / ",r.a.createElement("br",null)," ' _.-' : ",r.a.createElement("br",null)," ( _.-' . ",r.a.createElement("br",null)," ------. ",r.a.createElement("br",null)," . ",r.a.createElement("br",null)," _.nIt ",r.a.createElement("br",null)," _.nITESECNi ",r.a.createElement("br",null)," nITESECNIT^' ",r.a.createElement("br",null)," NITE^' ___ ",r.a.createElement("br",null)," / .gP''''Tp. ",r.a.createElement("br",null)," : d' . `b ",r.a.createElement("br",null)," ; d' o `b ; ",r.a.createElement("br",null)," / d; `b| ",r.a.createElement("br",null)," /, $; @ `: ",r.a.createElement("br",null)," /' $/ ; ",r.a.createElement("br",null)," .' $/b o | ",r.a.createElement("br",null)," .' d$/$; : ",r.a.createElement("br",null)," / .d/$/$; , ; ",r.a.createElement("br",null)," d .dNITESEC $ | ",r.a.createElement("br",null)," :bp.__.gNITESEC/$ :$ ; ",r.a.createElement("br",null)," NITESECNITESECNIT /$b : ",r.a.createElement("br",null)),[],!0,!0,!1,!1,!1,!1),Aevum:new i(r.a.createElement(r.a.Fragment,null,"The Silicon City."),["Chongqing","New Tokyo","Ishima","Volhaven"],!0,!0,!0,!0,!1,!1),Chongqing:new i(r.a.createElement(r.a.Fragment,null,"Serve the People."),["Sector-12","Aevum","Volhaven"],!0,!0,!0,!0,!1,!1),Ishima:new i(r.a.createElement(r.a.Fragment,null,"The East Asian Order of the Future."),["Sector-12","Aevum","Volhaven"],!0,!0,!0,!0,!1,!1),"New Tokyo":new i(r.a.createElement(r.a.Fragment,null,"Asia's World City."),["Sector-12","Aevum","Volhaven"],!0,!0,!0,!0,!1,!1),"Sector-12":new i(r.a.createElement(r.a.Fragment,null,"The City of the Future."),["Chongqing","New Tokyo","Ishima","Volhaven"],!0,!0,!0,!0,!1,!1),Volhaven:new i(r.a.createElement(r.a.Fragment,null,"Benefit, Honor, and Glory."),["Chongqing","Sector-12","New Tokyo","Aevum","Ishima"],!0,!0,!0,!0,!1,!1),"Speakers for the Dead":new i(r.a.createElement(r.a.Fragment,null,"It is better to reign in Hell than to serve in Heaven."),[],!0,!0,!0,!0,!1,!1),"The Dark Army":new i(r.a.createElement(r.a.Fragment,null,"The World doesn't care about right or wrong. It only cares about power."),[],!0,!0,!0,!1,!1,!1),"The Syndicate":new i(r.a.createElement(r.a.Fragment,null,"Honor holds you back."),[],!0,!0,!0,!0,!1,!1),Silhouette:new i(r.a.createElement(r.a.Fragment,null,"Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working for.",r.a.createElement("br",null),r.a.createElement("br",null),"That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system."),[],!0,!0,!0,!1,!1,!1),Tetrads:new i(r.a.createElement(r.a.Fragment,null,"Following the mandate of Heaven and carrying out the way."),[],!1,!1,!0,!0,!1,!1),"Slum Snakes":new i(r.a.createElement(r.a.Fragment,null,"Slum Snakes rule!"),[],!1,!1,!0,!0,!1,!1),Netburners:new i(r.a.createElement(r.a.Fragment,null,"~~//*>H4CK||3T 8URN3R5**>?>\\~~"),[],!0,!0,!1,!1,!1,!1),"Tian Di Hui":new i(r.a.createElement(r.a.Fragment,null,"Obey Heaven and work righteously."),[],!0,!0,!1,!0,!1,!1),CyberSec:new i(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."),[],!0,!0,!1,!1,!1,!1),Bladeburners:new i(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 Bladeburner actions. Completing Bladeburner contracts/operations will increase your reputation."),[],!1,!1,!1,!1,!0,!1),"Church of the Machine God":new i(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."),[],!1,!1,!1,!1,!0,!0)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return h}));var n=a(0),r=a.n(n),i=a(120),o=a(40),s=a(29),l=a(122),c=a(1),u=a(10);const m=new l.a;function h(){const[e,t]=Object(n.useState)(null),a=s.b.Player();return Object(n.useEffect)(()=>m.subscribe(e=>t(e)),[]),r.a.createElement(o.a,{open:null!==e,onClose:()=>t(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 ",(e||{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(u.a,{onClick:function(){if(null===e)return;-1===a.factionInvitations.findIndex(t=>t===e.name)&&console.error("Could not find faction in Player.factionInvitations"),Object(i.d)(e),t(null)}},"Join!"),r.a.createElement(u.a,{onClick:()=>t(null)},"Decide later"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(815),r=a(15);function i(e){const t=n.a[e];if(null==t)return;const a=`<i>${t.title}</i><br><br>${t.txt}`;Object(r.a)(a)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t,a,n,r){this.name=e,this.desc=t,this.isHacking=a,this.isCombat=n,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(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r}));class r{constructor(e,t){n(this,"lvl",1),n(this,"n",1),this.n=e,this.lvl=t}}},function(e,t,a){"use strict";a.d(t,"b",(function(){return n})),a.d(t,"a",(function(){return r}));const n=[];function r(e){if(!n.find(t=>t.pid===e.pid))for(n.unshift({filename:e.name,args:e.args,pid:e.pid,timestamp:new Date,runningScript:e.scriptRef});n.length>50;)n.pop()}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(242),r=function(e,t,a=0){this.sourceCode=e,this.sourceCodeLineOffset=a,"string"==typeof e&&(e=n.a(e,r.PARSE_OPTIONS)),this.ast=e,this.initFunc_=t,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=n.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=e,(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
|
||
*
|
||
* Copyright 2013 Google Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/r.PARSE_OPTIONS={ecmaVersion:5,locations:!0},r.READONLY_DESCRIPTOR={configurable:!0,enumerable:!0,writable:!1},r.NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!0},r.READONLY_NONENUMERABLE_DESCRIPTOR={configurable:!0,enumerable:!1,writable:!1},r.VARIABLE_DESCRIPTOR={configurable:!1,enumerable:!0,writable:!0},r.STEP_ERROR={},r.SCOPE_REFERENCE={},r.VALUE_IN_DESCRIPTOR={},r.toStringCycles_=[],r.prototype.getErrorLineNumber=function(e){var t=this.sourceCode;if(null==e||null==e.start)return NaN;try{return((t=t.substring(0,e.start)).match(/\n/g)||[]).length+1-this.sourceCodeLineOffset}catch(e){return NaN}},r.prototype.getErrorLineNumberMessage=function(e){return isNaN(e)?" (Unknown line number)":e<=0?" (Error occurred in an imported function)":" (Line Number "+e+". This line number is probably incorrect if your script is importing any functions. This is being worked on)"},r.prototype.appendCode=function(e){var t=this.stateStack[0];if(!t||"Program"!==t.node.type)throw Error("Expecting original AST to start with a Program node.");if("string"==typeof e&&(e=n.a(e,r.PARSE_OPTIONS)),!e||"Program"!==e.type)throw Error("Expecting new AST to start with a Program node.");this.populateScope_(e,t.scope);for(var a,i=0;a=e.body[i];i++)t.node.body.push(a);t.done=!1},r.prototype.step=function(){var e=this.stateStack,t=e[e.length-1];if(!t)return!1;var a=t.node,n=a.type;if("Program"===n&&t.done)return!1;if(this.paused_)return!0;try{var i=this.stepFunctions_[n](e,t,a)}catch(e){if(e!==r.STEP_ERROR)throw e}return i&&e.push(i),!!a.end||this.step()},r.prototype.run=function(){for(;!this.paused_&&this.step(););return this.paused_},r.prototype.initGlobalScope=function(e){this.setProperty(e,"NaN",NaN,r.READONLY_DESCRIPTOR),this.setProperty(e,"Infinity",1/0,r.READONLY_DESCRIPTOR),this.setProperty(e,"undefined",void 0,r.READONLY_DESCRIPTOR),this.setProperty(e,"window",e,r.READONLY_DESCRIPTOR),this.setProperty(e,"this",e,r.READONLY_DESCRIPTOR),this.setProperty(e,"self",e),this.OBJECT_PROTO=new r.Object(null),this.FUNCTION_PROTO=new r.Object(this.OBJECT_PROTO),this.initFunction(e),this.initObject(e),e.proto=this.OBJECT_PROTO,this.setProperty(e,"constructor",this.OBJECT,r.NONENUMERABLE_DESCRIPTOR),this.initArray(e),this.initString(e),this.initBoolean(e),this.initNumber(e),this.initDate(e),this.initRegExp(e),this.initError(e),this.initMath(e),this.initJSON(e);var t=this,a=this.createNativeFunction((function(e){throw EvalError("Can't happen")}),!1);a.eval=!0,this.setProperty(e,"eval",a),this.setProperty(e,"parseInt",this.createNativeFunction(parseInt,!1)),this.setProperty(e,"parseFloat",this.createNativeFunction(parseFloat,!1)),this.setProperty(e,"isNaN",this.createNativeFunction(isNaN,!1)),this.setProperty(e,"isFinite",this.createNativeFunction(isFinite,!1));for(var n=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]],i=0;i<n.length;i++){var o=function(e){return function(a){try{return e(a)}catch(e){t.throwException(t.URI_ERROR,e.message)}}}(n[i][0]);this.setProperty(e,n[i][1],this.createNativeFunction(o,!1),r.NONENUMERABLE_DESCRIPTOR)}this.OBJECT=this.OBJECT,this.OBJECT_PROTO=this.OBJECT_PROTO,this.FUNCTION=this.FUNCTION,this.FUNCTION_PROTO=this.FUNCTION_PROTO,this.ARRAY=this.ARRAY,this.ARRAY_PROTO=this.ARRAY_PROTO,this.REGEXP=this.REGEXP,this.REGEXP_PROTO=this.REGEXP_PROTO,this.DATE=this.DATE,this.DATE_PROTO=this.DATE_PROTO,this.UNDEFINED=void 0,this.NULL=null,this.NAN=NaN,this.TRUE=!0,this.FALSE=!1,this.STRING_EMPTY="",this.NUMBER_ZERO=0,this.NUMBER_ONE=1,this.initFunc_&&this.initFunc_(this,e)},r.prototype.initFunction=function(e){var t,a=this,i=/^[A-Za-z_$][\w$]*$/;(t=function(e){if(a.calledWithNew())var t=this;else t=a.createObjectProto(a.FUNCTION_PROTO);if(arguments.length)var o=String(arguments[arguments.length-1]);else o="";var s=Array.prototype.slice.call(arguments,0,-1).join(",").trim();if(s){for(var l=s.split(/\s*,\s*/),c=0;c<l.length;c++){var u=l[c];i.test(u)||a.throwException(a.SYNTAX_ERROR,"Invalid function argument: "+u)}s=l.join(", ")}t.parentScope=a.global;try{var m=n.a("(function("+s+") {"+o+"})",r.PARSE_OPTIONS)}catch(e){a.throwException(a.SYNTAX_ERROR,"Invalid code: "+e.message)}return 1!==m.body.length&&a.throwException(a.SYNTAX_ERROR,"Invalid code in function body."),t.node=m.body[0].expression,a.setProperty(t,"length",t.node.length,r.READONLY_DESCRIPTOR),t}).id=this.functionCounter_++,this.FUNCTION=this.createObjectProto(this.FUNCTION_PROTO),this.setProperty(e,"Function",this.FUNCTION),this.setProperty(this.FUNCTION,"prototype",this.FUNCTION_PROTO),this.FUNCTION.nativeFunc=t,this.setProperty(this.FUNCTION_PROTO,"constructor",this.FUNCTION,r.NONENUMERABLE_DESCRIPTOR),this.FUNCTION_PROTO.nativeFunc=function(){},this.FUNCTION_PROTO.nativeFunc.id=this.functionCounter_++,this.setProperty(this.FUNCTION_PROTO,"length",0,r.READONLY_DESCRIPTOR);var o=function(e){if(!(e&&e.isObject||a.getScope().strict))if(null==e)e=a.global;else{var t=a.createObjectProto(a.getPrototype(e));t.data=e,e=t}return e};t=function(e,t){var n=a.stateStack[a.stateStack.length-1];n.func_=this,n.funcThis_=o(e),n.arguments_=[],null!=t&&(t.isObject?n.arguments_=a.arrayPseudoToNative(t):a.throwException(a.TYPE_ERROR,"CreateListFromArrayLike called on non-object")),n.doneExec_=!1},this.setNativeFunctionPrototype(this.FUNCTION,"apply",t),t=function(e){var t=a.stateStack[a.stateStack.length-1];t.func_=this,t.funcThis_=o(e),t.arguments_=[];for(var n=1;n<arguments.length;n++)t.arguments_.push(arguments[n]);t.doneExec_=!1},this.setNativeFunctionPrototype(this.FUNCTION,"call",t),this.polyfills_.push("Object.defineProperty(Function.prototype, 'bind',","{configurable: true, writable: true, value:","function(oThis) {","if (typeof this !== 'function') {","throw TypeError('What is trying to be bound is not callable');","}","var aArgs = Array.prototype.slice.call(arguments, 1),","fToBind = this,","fNOP = function() {},","fBound = function() {","return fToBind.apply(this instanceof fNOP","? this",": oThis,","aArgs.concat(Array.prototype.slice.call(arguments)));","};","if (this.prototype) {","fNOP.prototype = this.prototype;","}","fBound.prototype = new fNOP();","return fBound;","}","});",""),t=function(){return this.toString()},this.setNativeFunctionPrototype(this.FUNCTION,"toString",t),this.setProperty(this.FUNCTION,"toString",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(){return this.valueOf()},this.setNativeFunctionPrototype(this.FUNCTION,"valueOf",t),this.setProperty(this.FUNCTION,"valueOf",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR)},r.prototype.initObject=function(e){var t,a=this;t=function(e){if(null==e)return a.calledWithNew()?this:a.createObjectProto(a.OBJECT_PROTO);if(!e.isObject){var t=a.createObjectProto(a.getPrototype(e));return t.data=e,t}return e},this.OBJECT=this.createNativeFunction(t,!0),this.setProperty(this.OBJECT,"prototype",this.OBJECT_PROTO),this.setProperty(this.OBJECT_PROTO,"constructor",this.OBJECT,r.NONENUMERABLE_DESCRIPTOR),this.setProperty(e,"Object",this.OBJECT);var n=function(e){null==e&&a.throwException(a.TYPE_ERROR,"Cannot convert '"+e+"' to object")};t=function(e){n(e);var t=e.isObject?e.properties:e;return a.arrayNativeToPseudo(Object.getOwnPropertyNames(t))},this.setProperty(this.OBJECT,"getOwnPropertyNames",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(e){return n(e),e.isObject&&(e=e.properties),a.arrayNativeToPseudo(Object.keys(e))},this.setProperty(this.OBJECT,"keys",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(e){return null===e?a.createObjectProto(null):(void 0!==e&&e.isObject||a.throwException(a.TYPE_ERROR,"Object prototype may only be an Object or null"),a.createObjectProto(e))},this.setProperty(this.OBJECT,"create",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),this.polyfills_.push("(function() {","var create_ = Object.create;","Object.create = function(proto, props) {","var obj = create_(proto);","props && Object.defineProperties(obj, props);","return obj;","};","})();",""),t=function(e,t,n){return t=String(t),e&&e.isObject||a.throwException(a.TYPE_ERROR,"Object.defineProperty called on non-object"),n&&n.isObject||a.throwException(a.TYPE_ERROR,"Property description must be an object"),!e.properties[t]&&e.preventExtensions&&a.throwException(a.TYPE_ERROR,"Can't define property '"+t+"', object is not extensible"),a.setProperty(e,t,r.VALUE_IN_DESCRIPTOR,n.properties),e},this.setProperty(this.OBJECT,"defineProperty",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),this.polyfills_.push("(function() {","var defineProperty_ = Object.defineProperty;","Object.defineProperty = function(obj, prop, d1) {","var d2 = {};","if ('configurable' in d1) d2.configurable = d1.configurable;","if ('enumerable' in d1) d2.enumerable = d1.enumerable;","if ('writable' in d1) d2.writable = d1.writable;","if ('value' in d1) d2.value = d1.value;","if ('get' in d1) d2.get = d1.get;","if ('set' in d1) d2.set = d1.set;","return defineProperty_(obj, prop, d2);","};","})();","Object.defineProperty(Object, 'defineProperties',","{configurable: true, writable: true, value:","function(obj, props) {","var keys = Object.keys(props);","for (var i = 0; i < keys.length; i++) {","Object.defineProperty(obj, keys[i], props[keys[i]]);","}","return obj;","}","});",""),t=function(e,t){if(e&&e.isObject||a.throwException(a.TYPE_ERROR,"Object.getOwnPropertyDescriptor called on non-object"),(t=String(t))in e.properties){var n=Object.getOwnPropertyDescriptor(e.properties,t),r=e.getter[t],i=e.setter[t];(r||i)&&(n.get=r,n.set=i,delete n.value,delete n.writable);var o=n.value,s="value"in n;delete n.value;var l=a.nativeToPseudo(n);return s&&a.setProperty(l,"value",o),l}},this.setProperty(this.OBJECT,"getOwnPropertyDescriptor",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(e){return n(e),a.getPrototype(e)},this.setProperty(this.OBJECT,"getPrototypeOf",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(e){return Boolean(e)&&!e.preventExtensions},this.setProperty(this.OBJECT,"isExtensible",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(e){return e&&e.isObject&&(e.preventExtensions=!0),e},this.setProperty(this.OBJECT,"preventExtensions",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),this.setNativeFunctionPrototype(this.OBJECT,"toString",r.Object.prototype.toString),this.setNativeFunctionPrototype(this.OBJECT,"toLocaleString",r.Object.prototype.toString),this.setNativeFunctionPrototype(this.OBJECT,"valueOf",r.Object.prototype.valueOf),t=function(e){return n(this),this.isObject?String(e)in this.properties:this.hasOwnProperty(e)},this.setNativeFunctionPrototype(this.OBJECT,"hasOwnProperty",t),t=function(e){return n(this),this.isObject?Object.prototype.propertyIsEnumerable.call(this.properties,e):this.propertyIsEnumerable(e)},this.setNativeFunctionPrototype(this.OBJECT,"propertyIsEnumerable",t),t=function(e){for(;;){if(!(e=a.getPrototype(e)))return!1;if(e===this)return!0}},this.setNativeFunctionPrototype(this.OBJECT,"isPrototypeOf",t)},r.prototype.initArray=function(e){var t,a=this;t=function(e){if(a.calledWithNew())var t=this;else t=a.createObjectProto(a.ARRAY_PROTO);var n=arguments[0];if(1===arguments.length&&"number"==typeof n)isNaN(r.legalArrayLength(n))&&a.throwException(a.RANGE_ERROR,"Invalid array length"),t.properties.length=n;else{for(var i=0;i<arguments.length;i++)t.properties[i]=arguments[i];t.properties.length=i}return t},this.ARRAY=this.createNativeFunction(t,!0),this.ARRAY_PROTO=this.ARRAY.properties.prototype,this.setProperty(e,"Array",this.ARRAY),t=function(e){return e&&"Array"===e.class},this.setProperty(this.ARRAY,"isArray",this.createNativeFunction(t,!1),r.NONENUMERABLE_DESCRIPTOR),t=function(){return Array.prototype.pop.call(this.properties)},this.setNativeFunctionPrototype(this.ARRAY,"pop",t),t=function(e){return Array.prototype.push.apply(this.properties,arguments)},this.setNativeFunctionPrototype(this.ARRAY,"push",t),t=function(){return Array.prototype.shift.call(this.properties)},this.setNativeFunctionPrototype(this.ARRAY,"shift",t),t=function(e){return Array.prototype.unshift.apply(this.properties,arguments)},this.setNativeFunctionPrototype(this.ARRAY,"unshift",t),t=function(){return Array.prototype.reverse.call(this.properties),this},this.setNativeFunctionPrototype(this.ARRAY,"reverse",t),t=function(e,t){var n=Array.prototype.splice.apply(this.properties,arguments);return a.arrayNativeToPseudo(n)},this.setNativeFunctionPrototype(this.ARRAY,"splice",t),t=function(e,t){var n=Array.prototype.slice.call(this.properties,e,t);return a.arrayNativeToPseudo(n)},this.setNativeFunctionPrototype(this.ARRAY,"slice",t),t=function(e){return Array.prototype.join.call(this.properties,e)},this.setNativeFunctionPrototype(this.ARRAY,"join",t),t=function(e){for(var t=[],n=0,r=a.getProperty(this,"length"),i=0;i<r;i++){if(a.hasProperty(this,i)){var o=a.getProperty(this,i);t[n]=o}n++}for(i=0;i<arguments.length;i++){var s=arguments[i];if(a.isa(s,a.ARRAY))for(var l=a.getProperty(s,"length"),c=0;c<l;c++)a.hasProperty(s,c)&&(t[n]=a.getProperty(s,c)),n++;else t[n]=s}return a.arrayNativeToPseudo(t)},this.setNativeFunctionPrototype(this.ARRAY,"concat",t),t=function(e,t){return Array.prototype.indexOf.apply(this.properties,arguments)},this.setNativeFunctionPrototype(this.ARRAY,"indexOf",t),t=function(e,t){return Array.prototype.lastIndexOf.apply(this.properties,arguments)},this.setNativeFunctionPrototype(this.ARRAY,"lastIndexOf",t),t=function(){return Array.prototype.sort.call(this.properties),this},this.setNativeFunctionPrototype(this.ARRAY,"sort",t),this.polyfills_.push("Object.defineProperty(Array.prototype, 'every',","{configurable: true, writable: true, value:","function(callbackfn, thisArg) {","if (!this || typeof callbackfn !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {","var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","if (!Array.prototype.find) {","Object.defineProperty(Array.prototype, 'find', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return kValue;","}","k++;","}","return undefined;","},","configurable: true,","writable: true","});","}","if (!Array.prototype.findIndex) {","Object.defineProperty(Array.prototype, 'findIndex', {","value: function(predicate) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","var o = Object(this);","var len = o.length >>> 0;","if (typeof predicate !== 'function') {","throw new TypeError('predicate must be a function');","}","var thisArg = arguments[1];","var k = 0;","while (k < len) {","var kValue = o[k];","if (predicate.call(thisArg, kValue, k, o)) {","return k;","}","k++;","}","return -1;","},","configurable: true,","writable: true","});","}","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'includes', {","value: function(searchElement, fromIndex) {","if (this == null) {","throw new TypeError('\"this\" is null or not defined');","}","// 1. Let O be ? ToObject(this value).","var o = Object(this);",'// 2. Let len be ? ToLength(? Get(O, "length")).',"var len = o.length >>> 0;","// 3. If len is 0, return false.","if (len === 0) {","return false;","}","// 4. Let n be ? ToInteger(fromIndex).","// (If fromIndex is undefined, this step produces the value 0.)","var n = fromIndex | 0;","// 5. If n ≥ 0, then","// a. Let k be n.","// 6. Else n < 0,","// a. Let k be len + n.","// b. If k < 0, let k be 0.","var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);","function sameValueZero(x, y) {","return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));","}","// 7. Repeat, while k < len","while (k < len) {","// a. Let elementK be the result of ? Get(O, ! ToString(k)).","// b. If SameValueZero(searchElement, elementK) is true, return true.","if (sameValueZero(o[k], searchElement)) {","return true;","}","// c. Increase k by 1. ","k++;","}","// 8. Return false","return false;","}","});","Object.defineProperty(Array.prototype, 'map',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;","Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:","function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")},r.prototype.initString=function(e){var t,a=this;t=function(e){return e=String(e),a.calledWithNew()?(this.data=e,this):e},this.STRING=this.createNativeFunction(t,!0),this.setProperty(e,"String",this.STRING),this.setProperty(this.STRING,"fromCharCode",this.createNativeFunction(String.fromCharCode,!1),r.NONENUMERABLE_DESCRIPTOR);for(var n=["charAt","charCodeAt","concat","indexOf","lastIndexOf","slice","substr","substring","toLocaleLowerCase","toLocaleUpperCase","toLowerCase","toUpperCase","trim"],i=0;i<n.length;i++)this.setNativeFunctionPrototype(this.STRING,n[i],String.prototype[n[i]]);t=function(e,t,n){return t=t?a.pseudoToNative(t):void 0,n=n?a.pseudoToNative(n):void 0,String(this).localeCompare(e,t,n)},this.setNativeFunctionPrototype(this.STRING,"localeCompare",t),t=function(e,t){a.isa(e,a.REGEXP)&&(e=e.data);var n=String(this).split(e,t);return a.arrayNativeToPseudo(n)},this.setNativeFunctionPrototype(this.STRING,"split",t),t=function(e){a.isa(e,a.REGEXP)&&(e=e.data);var t=String(this).match(e);return t&&a.arrayNativeToPseudo(t)},this.setNativeFunctionPrototype(this.STRING,"match",t),t=function(e){return a.isa(e,a.REGEXP)&&(e=e.data),String(this).search(e)},this.setNativeFunctionPrototype(this.STRING,"search",t),t=function(e,t){return a.isa(e,a.REGEXP)&&(e=e.data),String(this).replace(e,t)},this.setNativeFunctionPrototype(this.STRING,"replace",t),this.polyfills_.push("(function() {","var replace_ = String.prototype.replace;","String.prototype.replace = function(substr, newSubstr) {","if (typeof newSubstr !== 'function') {","return replace_.call(this, substr, newSubstr);","}","var str = this;","if (substr instanceof RegExp) {","var subs = [];","var m = substr.exec(str);","while (m) {","m.push(m.index, str);","var inject = newSubstr.apply(null, m);","subs.push([m.index, m[0].length, inject]);","m = substr.global ? substr.exec(str) : null;","}","for (var i = subs.length - 1; i >= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);","}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);","str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","if (!String.prototype.endsWith) {","String.prototype.endsWith = function(search, this_len) {","if (this_len === undefined || this_len > this.length) {","this_len = this.length;","}","return this.substring(this_len - search.length, this_len) === search;","};","}","if (!String.prototype.includes) {","String.prototype.includes = function(search, start) {","'use strict';","if (typeof start !== 'number') {","start = 0;","}"," ","if (start + search.length > this.length) {","return false;","} else {","return this.indexOf(search, start) !== -1;","}","};","}","if (!String.prototype.startsWith) {","String.prototype.startsWith = function(search, pos) {","return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;","};","}","")},r.prototype.initBoolean=function(e){var t,a=this;t=function(e){return e=Boolean(e),a.calledWithNew()?(this.data=e,this):e},this.BOOLEAN=this.createNativeFunction(t,!0),this.setProperty(e,"Boolean",this.BOOLEAN)},r.prototype.initNumber=function(e){var t,a=this;t=function(e){return e=Number(e),a.calledWithNew()?(this.data=e,this):e},this.NUMBER=this.createNativeFunction(t,!0),this.setProperty(e,"Number",this.NUMBER);for(var n=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"],i=0;i<n.length;i++)this.setProperty(this.NUMBER,n[i],Number[n[i]],r.READONLY_NONENUMERABLE_DESCRIPTOR);t=function(e){try{return Number(this).toExponential(e)}catch(e){a.throwException(a.ERROR,e.message)}},this.setNativeFunctionPrototype(this.NUMBER,"toExponential",t),t=function(e){try{return Number(this).toFixed(e)}catch(e){a.throwException(a.ERROR,e.message)}},this.setNativeFunctionPrototype(this.NUMBER,"toFixed",t),t=function(e){try{return Number(this).toPrecision(e)}catch(e){a.throwException(a.ERROR,e.message)}},this.setNativeFunctionPrototype(this.NUMBER,"toPrecision",t),t=function(e){try{return Number(this).toString(e)}catch(e){a.throwException(a.ERROR,e.message)}},this.setNativeFunctionPrototype(this.NUMBER,"toString",t),t=function(e,t){return e=e?a.pseudoToNative(e):void 0,t=t?a.pseudoToNative(t):void 0,Number(this).toLocaleString(e,t)},this.setNativeFunctionPrototype(this.NUMBER,"toLocaleString",t)},r.prototype.initDate=function(e){var t,a=this;t=function(e,t){if(!a.calledWithNew())return Date();var n=[null].concat(Array.from(arguments));return this.data=new(Function.prototype.bind.apply(Date,n)),this},this.DATE=this.createNativeFunction(t,!0),this.DATE_PROTO=this.DATE.properties.prototype,this.setProperty(e,"Date",this.DATE),this.setProperty(this.DATE,"now",this.createNativeFunction(Date.now,!1),r.NONENUMERABLE_DESCRIPTOR),this.setProperty(this.DATE,"parse",this.createNativeFunction(Date.parse,!1),r.NONENUMERABLE_DESCRIPTOR),this.setProperty(this.DATE,"UTC",this.createNativeFunction(Date.UTC,!1),r.NONENUMERABLE_DESCRIPTOR);for(var n=["getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getYear","setDate","setFullYear","setHours","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear","toDateString","toISOString","toJSON","toGMTString","toLocaleDateString","toLocaleString","toLocaleTimeString","toTimeString","toUTCString"],i=0;i<n.length;i++)t=function(e){return function(t){for(var n=[],r=0;r<arguments.length;r++)n[r]=a.pseudoToNative(arguments[r]);return this.data[e].apply(this.data,n)}}(n[i]),this.setNativeFunctionPrototype(this.DATE,n[i],t)},r.prototype.initRegExp=function(e){var t,a=this;t=function(e,t){if(a.calledWithNew())var n=this;else n=a.createObjectProto(a.REGEXP_PROTO);return e=e?e.toString():"",t=t?t.toString():"",a.populateRegExp(n,new RegExp(e,t)),n},this.REGEXP=this.createNativeFunction(t,!0),this.REGEXP_PROTO=this.REGEXP.properties.prototype,this.setProperty(e,"RegExp",this.REGEXP),this.setProperty(this.REGEXP.properties.prototype,"global",void 0,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(this.REGEXP.properties.prototype,"ignoreCase",void 0,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(this.REGEXP.properties.prototype,"multiline",void 0,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(this.REGEXP.properties.prototype,"source","(?:)",r.READONLY_NONENUMERABLE_DESCRIPTOR),t=function(e){return this.data.test(e)},this.setNativeFunctionPrototype(this.REGEXP,"test",t),t=function(e){e=e.toString(),this.data.lastIndex=Number(a.getProperty(this,"lastIndex"));var t=this.data.exec(e);if(a.setProperty(this,"lastIndex",this.data.lastIndex),t){for(var n=a.createObjectProto(a.ARRAY_PROTO),r=0;r<t.length;r++)a.setProperty(n,r,t[r]);return a.setProperty(n,"index",t.index),a.setProperty(n,"input",t.input),n}return null},this.setNativeFunctionPrototype(this.REGEXP,"exec",t)},r.prototype.initError=function(e){var t=this;this.ERROR=this.createNativeFunction((function(e){if(t.calledWithNew())var a=this;else a=t.createObject(t.ERROR);return e&&t.setProperty(a,"message",String(e),r.NONENUMERABLE_DESCRIPTOR),a}),!0),this.setProperty(e,"Error",this.ERROR),this.setProperty(this.ERROR.properties.prototype,"message","",r.NONENUMERABLE_DESCRIPTOR),this.setProperty(this.ERROR.properties.prototype,"name","Error",r.NONENUMERABLE_DESCRIPTOR);var a=function(a){var n=t.createNativeFunction((function(e){if(t.calledWithNew())var a=this;else a=t.createObject(n);return e&&t.setProperty(a,"message",String(e),r.NONENUMERABLE_DESCRIPTOR),a}),!0);return t.setProperty(n,"prototype",t.createObject(t.ERROR)),t.setProperty(n.properties.prototype,"name",a,r.NONENUMERABLE_DESCRIPTOR),t.setProperty(e,a,n),n};this.EVAL_ERROR=a("EvalError"),this.RANGE_ERROR=a("RangeError"),this.REFERENCE_ERROR=a("ReferenceError"),this.SYNTAX_ERROR=a("SyntaxError"),this.TYPE_ERROR=a("TypeError"),this.URI_ERROR=a("URIError")},r.prototype.initMath=function(e){var t=this.createObjectProto(this.OBJECT_PROTO);this.setProperty(e,"Math",t);for(var a=["E","LN2","LN10","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"],n=0;n<a.length;n++)this.setProperty(t,a[n],Math[a[n]],r.READONLY_NONENUMERABLE_DESCRIPTOR);var i=["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","random","round","sin","sqrt","tan"];for(n=0;n<i.length;n++)this.setProperty(t,i[n],this.createNativeFunction(Math[i[n]],!1),r.NONENUMERABLE_DESCRIPTOR)},r.prototype.initJSON=function(e){var t=this,a=t.createObjectProto(this.OBJECT_PROTO);this.setProperty(e,"JSON",a);var n=function(e){try{var a=JSON.parse(e.toString())}catch(e){t.throwException(t.SYNTAX_ERROR,e.message)}return t.nativeToPseudo(a)};this.setProperty(a,"parse",this.createNativeFunction(n,!1)),n=function(e){var a=t.pseudoToNative(e);try{var n=JSON.stringify(a)}catch(e){t.throwException(t.TYPE_ERROR,e.message)}return n},this.setProperty(a,"stringify",this.createNativeFunction(n,!1))},r.prototype.isa=function(e,t){if(null==e||!t)return!1;var a=t.properties.prototype;if(e===a)return!0;for(e=this.getPrototype(e);e;){if(e===a)return!0;e=e.proto}return!1},r.legalArrayLength=function(e){var t=e>>>0;return t===Number(e)?t:NaN},r.legalArrayIndex=function(e){var t=e>>>0;return String(t)===String(e)&&4294967295!==t?t:NaN},r.Value,r.Object=function(e){this.getter=Object.create(null),this.setter=Object.create(null),this.properties=Object.create(null),this.proto=e},r.Object.prototype.proto=null,r.Object.prototype.isObject=!0,r.Object.prototype.class="Object",r.Object.prototype.data=null,r.Object.prototype.toString=function(){if("Array"===this.class){(n=r.toStringCycles_).push(this);try{for(var e=[],t=0;t<this.properties.length;t++){var a=this.properties[t];e[t]=a&&a.isObject&&-1!==n.indexOf(a)?"...":a}}finally{n.pop()}return e.join(",")}if("Error"===this.class){var n,i,o;if(-1!==(n=r.toStringCycles_).indexOf(this))return"[object Error]";var s=this;do{if("name"in s.properties){i=s.properties.name;break}}while(s=s.proto);s=this;do{if("message"in s.properties){o=s.properties.message;break}}while(s=s.proto);n.push(this);try{i=i&&i.toString(),o=o&&o.toString()}finally{n.pop()}return o?i+": "+o:String(i)}return null!==this.data?String(this.data):"[object "+this.class+"]"},r.Object.prototype.valueOf=function(){return void 0===this.data||null===this.data||this.data instanceof RegExp?this:this.data instanceof Date?this.data.valueOf():this.data},r.prototype.createObject=function(e){return this.createObjectProto(e&&e.properties.prototype)},r.prototype.createObjectProto=function(e){if("object"!=typeof e)throw Error("Non object prototype");var t=new r.Object(e);return this.isa(t,this.FUNCTION)&&(this.setProperty(t,"prototype",this.createObjectProto(this.OBJECT_PROTO||null)),t.class="Function"),this.isa(t,this.ARRAY)&&(this.setProperty(t,"length",0,{configurable:!1,enumerable:!1,writable:!0}),t.class="Array"),this.isa(t,this.ERROR)&&(t.class="Error"),t},r.prototype.populateRegExp=function(e,t){e.data=t,this.setProperty(e,"lastIndex",t.lastIndex,r.NONENUMERABLE_DESCRIPTOR),this.setProperty(e,"source",t.source,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(e,"global",t.global,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(e,"ignoreCase",t.ignoreCase,r.READONLY_NONENUMERABLE_DESCRIPTOR),this.setProperty(e,"multiline",t.multiline,r.READONLY_NONENUMERABLE_DESCRIPTOR)},r.prototype.createFunction=function(e,t){var a=this.createObjectProto(this.FUNCTION_PROTO);return a.parentScope=t,a.node=e,this.setProperty(a,"length",a.node.params.length,r.READONLY_DESCRIPTOR),a},r.prototype.createNativeFunction=function(e,t){var a=this.createObjectProto(this.FUNCTION_PROTO);return a.nativeFunc=e,e.id=this.functionCounter_++,this.setProperty(a,"length",e.length,r.READONLY_DESCRIPTOR),t?this.setProperty(a.properties.prototype,"constructor",a,r.NONENUMERABLE_DESCRIPTOR):!1===t&&(a.illegalConstructor=!0,this.setProperty(a,"prototype",void 0)),a},r.prototype.createAsyncFunction=function(e){var t=this.createObjectProto(this.FUNCTION_PROTO);return t.asyncFunc=e,e.id=this.functionCounter_++,this.setProperty(t,"length",e.length,r.READONLY_DESCRIPTOR),t},r.prototype.nativeToPseudo=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)return e;if(e instanceof RegExp){var t=this.createObjectProto(this.REGEXP_PROTO);return this.populateRegExp(t,e),t}if(e instanceof Date){var a=this.createObjectProto(this.DATE_PROTO);return a.data=e,a}if(e instanceof Function){var n=this;return this.createNativeFunction((function(){return n.nativeToPseudo(e.apply(n,Array.prototype.slice.call(arguments).map((function(e){return n.pseudoToNative(e)}))))}),void 0)}var r;if(Array.isArray(e)){r=this.createObjectProto(this.ARRAY_PROTO);for(var i=0;i<e.length;i++)i in e&&this.setProperty(r,i,this.nativeToPseudo(e[i]))}else for(var o in r=this.createObjectProto(this.OBJECT_PROTO),e)this.setProperty(r,o,this.nativeToPseudo(e[o]));return r},r.prototype.pseudoToNative=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)return e;if(this.isa(e,this.REGEXP))return e.data;if(this.isa(e,this.DATE))return e.data;var a,n=t||{pseudo:[],native:[]};if(-1!==(i=n.pseudo.indexOf(e)))return n.native[i];if(n.pseudo.push(e),this.isa(e,this.ARRAY)){a=[],n.native.push(a);for(var r=this.getProperty(e,"length"),i=0;i<r;i++)this.hasProperty(e,i)&&(a[i]=this.pseudoToNative(this.getProperty(e,i),n))}else{var o;for(var s in a={},n.native.push(a),e.properties)o=e.properties[s],a[s]=this.pseudoToNative(o,n)}return n.pseudo.pop(),n.native.pop(),a},r.prototype.arrayNativeToPseudo=function(e){for(var t=this.createObjectProto(this.ARRAY_PROTO),a=Object.getOwnPropertyNames(e),n=0;n<a.length;n++)this.setProperty(t,a[n],e[a[n]]);return t},r.prototype.arrayPseudoToNative=function(e){var t=[];for(var a in e.properties)t[a]=this.getProperty(e,a);return t.length=r.legalArrayLength(this.getProperty(e,"length"))||0,t},r.prototype.getPrototype=function(e){switch(typeof e){case"number":return this.NUMBER.properties.prototype;case"boolean":return this.BOOLEAN.properties.prototype;case"string":return this.STRING.properties.prototype}return e?e.proto:null},r.prototype.getProperty=function(e,t,a){if(t=String(t),null==e){let n;null!=a&&null!=a.loc&&null!=a.loc.start&&(n=a.loc.start.line),this.throwException(this.TYPE_ERROR,"Cannot read property '"+t+"' of "+e,n)}if("length"===t){if(this.isa(e,this.STRING))return String(e).length}else if(t.charCodeAt(0)<64&&this.isa(e,this.STRING)){var n=r.legalArrayIndex(t);if(!isNaN(n)&&n<String(e).length)return String(e)[n]}do{if(e.properties&&t in e.properties){var i=e.getter[t];return i?(i.isGetter=!0,i):e.properties[t]}}while(e=this.getPrototype(e))},r.prototype.hasProperty=function(e,t){if(!e.isObject)throw TypeError("Primitive data type has no properties");if("length"===(t=String(t))&&this.isa(e,this.STRING))return!0;if(this.isa(e,this.STRING)){var a=r.legalArrayIndex(t);if(!isNaN(a)&&a<String(e).length)return!0}do{if(e.properties&&t in e.properties)return!0}while(e=this.getPrototype(e));return!1},r.prototype.setProperty=function(e,t,a,n){t=String(t),null==e&&this.throwException(this.TYPE_ERROR,"Cannot set property '"+t+"' of "+e),n&&("get"in n||"set"in n)&&("value"in n||"writable"in n)&&this.throwException(this.TYPE_ERROR,"Invalid property descriptor. Cannot both specify accessors and a value or writable attribute");var i=!this.stateStack||this.getScope().strict;if(e.isObject){if(this.isa(e,this.STRING)){var o=r.legalArrayIndex(t);if("length"===t||!isNaN(o)&&o<String(e).length)return void(i&&this.throwException(this.TYPE_ERROR,"Cannot assign to read only property '"+t+"' of String '"+e.data+"'"))}if("Array"===e.class){var s,l=e.properties.length;if("length"===t){if(n){if(!("value"in n))return;a=n.value}if(a=r.legalArrayLength(a),isNaN(a)&&this.throwException(this.RANGE_ERROR,"Invalid array length"),a<l)for(s in e.properties)s=r.legalArrayIndex(s),!isNaN(s)&&a<=s&&delete e.properties[s]}else isNaN(s=r.legalArrayIndex(t))||(e.properties.length=Math.max(l,s+1))}if(!e.preventExtensions||t in e.properties)if(n){"get"in n&&(n.get?e.getter[t]=n.get:delete e.getter[t]),"set"in n&&(n.set?e.setter[t]=n.set:delete e.setter[t]);var c={};"configurable"in n&&(c.configurable=n.configurable),"enumerable"in n&&(c.enumerable=n.enumerable),"writable"in n&&(c.writable=n.writable,delete e.getter[t],delete e.setter[t]),"value"in n?(c.value=n.value,delete e.getter[t],delete e.setter[t]):a!==r.VALUE_IN_DESCRIPTOR&&(c.value=a,delete e.getter[t],delete e.setter[t]);try{Object.defineProperty(e.properties,t,c)}catch(e){this.throwException(this.TYPE_ERROR,"Cannot redefine property: "+t)}}else{if(a===r.VALUE_IN_DESCRIPTOR)throw ReferenceError("Value not specified.");for(var u=e;!(t in u.properties);)if(!(u=this.getPrototype(u))){u=e;break}if(u.setter&&u.setter[t])return u.setter[t];if(u.getter&&u.getter[t])i&&this.throwException(this.TYPE_ERROR,"Cannot set property '"+t+"' of object '"+e+"' which only has a getter");else try{e.properties[t]=a}catch(a){i&&this.throwException(this.TYPE_ERROR,"Cannot assign to read only property '"+t+"' of object '"+e+"'")}}else i&&this.throwException(this.TYPE_ERROR,"Can't add property '"+t+"', object is not extensible")}else i&&this.throwException(this.TYPE_ERROR,"Can't create property '"+t+"' on '"+e+"'")},r.prototype.setNativeFunctionPrototype=function(e,t,a){this.setProperty(e.properties.prototype,t,this.createNativeFunction(a,!1),r.NONENUMERABLE_DESCRIPTOR)},r.prototype.getScope=function(){var e=this.stateStack[this.stateStack.length-1].scope;if(!e)throw Error("No scope found.");return e},r.prototype.createScope=function(e,t){var a=this.createObjectProto(null);if(a.parentScope=t,t||this.initGlobalScope(a),this.populateScope_(e,a),a.strict=!1,t&&t.strict)a.strict=!0;else{var n=e.body&&e.body[0];n&&n.expression&&"Literal"===n.expression.type&&"use strict"===n.expression.value&&(a.strict=!0)}return a},r.prototype.createSpecialScope=function(e,t){if(!e)throw Error("parentScope required");var a=t||this.createObjectProto(null);return a.parentScope=e,a.strict=e.strict,a},r.prototype.getValueFromScope=function(e,t){for(var a=this.getScope();a&&a!==this.global;){if(e in a.properties)return a.properties[e];a=a.parentScope}if(a===this.global&&this.hasProperty(a,e))return this.getProperty(a,e);var n,r=this.stateStack[this.stateStack.length-1].node;"UnaryExpression"===r.type&&"typeof"===r.operator||(null!=t&&null!=t.loc&&null!=t.loc.start&&(n=t.loc.start.line),this.throwException(this.REFERENCE_ERROR,e+" is not defined",n))},r.prototype.setValueToScope=function(e,t){for(var a=this.getScope(),n=a.strict;a&&a!==this.global;){if(e in a.properties)return void(a.properties[e]=t);a=a.parentScope}if(a===this.global&&(!n||this.hasProperty(a,e)))return this.setProperty(a,e,t);this.throwException(this.REFERENCE_ERROR,e+" is not defined")},r.prototype.populateScope_=function(e,t){if("VariableDeclaration"===e.type)for(var a=0;a<e.declarations.length;a++)this.setProperty(t,e.declarations[a].id.name,void 0,r.VARIABLE_DESCRIPTOR);else{if("FunctionDeclaration"===e.type)return void this.setProperty(t,e.id.name,this.createFunction(e,t),r.VARIABLE_DESCRIPTOR);if("FunctionExpression"===e.type)return;if("ExpressionStatement"===e.type)return}var n=e.constructor;for(var i in e){var o=e[i];if(o&&"object"==typeof o)if(Array.isArray(o))for(a=0;a<o.length;a++)o[a]&&o[a].constructor===n&&this.populateScope_(o[a],t);else o.constructor===n&&this.populateScope_(o,t)}},r.prototype.stripLocations_=function(e,t,a){for(var n in t?e.start=t:delete e.start,a?e.end=a:delete e.end,e)if(e.hasOwnProperty(n)){var r=e[n];r&&"object"==typeof r&&this.stripLocations_(r,t,a)}},r.prototype.calledWithNew=function(){return this.stateStack[this.stateStack.length-1].isConstructor},r.prototype.getValue=function(e,t){return e[0]===r.SCOPE_REFERENCE?this.getValueFromScope(e[1],t):this.getProperty(e[0],e[1],t)},r.prototype.setValue=function(e,t){return e[0]===r.SCOPE_REFERENCE?this.setValueToScope(e[1],t):this.setProperty(e[0],e[1],t)},r.Completion={NORMAL:0,BREAK:1,CONTINUE:2,RETURN:3,THROW:4},r.prototype.throwException=function(e,t,a){if(void 0===t)var n=e;else{n=this.createObject(e);this.setProperty(n,"message",t,r.NONENUMERABLE_DESCRIPTOR)}var i;throw null!=a&&(i=this.getErrorLineNumberMessage(a)),this.unwind(r.Completion.THROW,n,void 0,i),r.STEP_ERROR},r.prototype.unwind=function(e,t,a,n=""){if(e===r.Completion.NORMAL)throw TypeError("Should not unwind for NORMAL completions");for(var i=this.stateStack;i.length>0;i.pop()){var o=i[i.length-1];switch(o.node.type){case"TryStatement":return void(o.cv={type:e,value:t,label:a});case"CallExpression":case"NewExpression":if(e===r.Completion.RETURN)return void(o.value=t);if(e!==r.Completion.THROW)throw Error("Unsynatctic break/continue not rejected by Acorn")}if(e===r.Completion.BREAK){if(a?o.labels&&-1!==o.labels.indexOf(a):o.isLoop||o.isSwitch)return void i.pop()}else if(e===r.Completion.CONTINUE&&(a?o.labels&&-1!==o.labels.indexOf(a):o.isLoop))return}var s;if(this.isa(t,this.ERROR)){var l={EvalError:EvalError,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError,URIError:URIError},c=this.getProperty(t,"name").toString(),u=this.getProperty(t,"message").valueOf();s=(e=l[c]||Error)(u+n)}else s=String(t)+n;throw s},r.prototype.createGetter_=function(e,t){var a=Array.isArray(t)?t[0]:t,n=new this.nodeConstructor;n.type="CallExpression";var i=new r.State(n,this.stateStack[this.stateStack.length-1].scope);return i.doneCallee_=!0,i.funcThis_=a,i.func_=e,i.doneArgs_=!0,i.arguments_=[],i},r.prototype.createSetter_=function(e,t,a){var n=Array.isArray(t)?t[0]:this.global,i=new this.nodeConstructor;i.type="CallExpression";var o=new r.State(i,this.stateStack[this.stateStack.length-1].scope);return o.doneCallee_=!0,o.funcThis_=n,o.func_=e,o.doneArgs_=!0,o.arguments_=[a],o},r.State=function(e,t){this.node=e,this.scope=t},r.prototype.stepArrayExpression=function(e,t,a){var n=a.elements,i=t.n_||0;for(t.array_?(this.setProperty(t.array_,i,t.value),i++):(t.array_=this.createObjectProto(this.ARRAY_PROTO),t.array_.properties.length=n.length);i<n.length;){if(n[i])return t.n_=i,new r.State(n[i],t.scope);i++}e.pop(),e[e.length-1].value=t.array_},r.prototype.stepAssignmentExpression=function(e,t,a){if(!t.doneLeft_){t.doneLeft_=!0;var n=new r.State(a.left,t.scope);return n.components=!0,n}if(!t.doneRight_){if(t.leftReference_||(t.leftReference_=t.value),t.doneGetter_&&(t.leftValue_=t.value),!t.doneGetter_&&"="!==a.operator){var i=this.getValue(t.leftReference_,a);if(t.leftValue_=i,i&&"object"==typeof i&&i.isGetter){i.isGetter=!1,t.doneGetter_=!0;var o=i;return this.createGetter_(o,t.leftReference_)}}return t.doneRight_=!0,new r.State(a.right,t.scope)}if(t.doneSetter_)return e.pop(),void(e[e.length-1].value=t.setterValue_);var s=t.leftValue_,l=t.value;switch(a.operator){case"=":s=l;break;case"+=":s+=l;break;case"-=":s-=l;break;case"*=":s*=l;break;case"/=":s/=l;break;case"%=":s%=l;break;case"<<=":s<<=l;break;case">>=":s>>=l;break;case">>>=":s>>>=l;break;case"&=":s&=l;break;case"^=":s^=l;break;case"|=":s|=l;break;default:throw SyntaxError("Unknown assignment expression: "+a.operator)}var c=this.setValue(t.leftReference_,s);if(c)return t.doneSetter_=!0,t.setterValue_=s,this.createSetter_(c,t.leftReference_,s);e.pop(),e[e.length-1].value=s},r.prototype.stepBinaryExpression=function(e,t,a){if(!t.doneLeft_)return t.doneLeft_=!0,new r.State(a.left,t.scope);if(!t.doneRight_)return t.doneRight_=!0,t.leftValue_=t.value,new r.State(a.right,t.scope);e.pop();var n,i=t.leftValue_,o=t.value;switch(a.operator){case"==":n=i==o;break;case"!=":n=i!=o;break;case"===":n=i===o;break;case"!==":n=i!==o;break;case">":n=i>o;break;case">=":n=i>=o;break;case"<":n=i<o;break;case"<=":n=i<=o;break;case"+":n=i+o;break;case"-":n=i-o;break;case"*":n=i*o;break;case"/":n=i/o;break;case"%":n=i%o;break;case"&":n=i&o;break;case"|":n=i|o;break;case"^":n=i^o;break;case"<<":n=i<<o;break;case">>":n=i>>o;break;case">>>":n=i>>>o;break;case"in":if(!o||!o.isObject){let e=this.getErrorLineNumber(a);this.throwException(this.TYPE_ERROR,"'in' expects an object, not '"+o+"'",e)}n=this.hasProperty(o,i);break;case"instanceof":if(!this.isa(o,this.FUNCTION)){let e=this.getErrorLineNumber(a);this.throwException(this.TYPE_ERROR,"Right-hand side of instanceof is not an object",e)}n=!!i.isObject&&this.isa(i,o);break;default:throw SyntaxError("Unknown binary operator: "+a.operator)}e[e.length-1].value=n},r.prototype.stepBlockStatement=function(e,t,a){var n=t.n_||0,i=a.body[n];if(i)return t.n_=n+1,new r.State(i,t.scope);e.pop()},r.prototype.stepBreakStatement=function(e,t,a){var n=a.label&&a.label.name;this.unwind(r.Completion.BREAK,void 0,n)},r.prototype.stepCallExpression=function(e,t,a){if(!t.doneCallee_){t.doneCallee_=1;var i=new r.State(a.callee,t.scope);return i.components=!0,i}if(1===t.doneCallee_){t.doneCallee_=2;var o=t.value;if(Array.isArray(o)){if(t.func_=this.getValue(o,a),o[0]===r.SCOPE_REFERENCE?t.directEval_="eval"===o[1]:t.funcThis_=o[0],(o=t.func_)&&"object"==typeof o&&o.isGetter)return o.isGetter=!1,t.doneCallee_=1,this.createGetter_(o,t.value)}else t.func_=o;t.arguments_=[],t.n_=0}o=t.func_;if(!t.doneArgs_){if(0!==t.n_&&t.arguments_.push(t.value),a.arguments[t.n_])return new r.State(a.arguments[t.n_++],t.scope);if("NewExpression"===a.type){if(o.illegalConstructor){let e=this.getErrorLineNumber(a);this.throwException(this.TYPE_ERROR,o+" is not a constructor",e)}var s=o.properties.prototype;"object"==typeof s&&null!==s||(s=this.OBJECT_PROTO),t.funcThis_=this.createObjectProto(s),t.isConstructor=!0}else void 0===t.funcThis_&&(t.funcThis_=t.scope.strict?void 0:this.global);t.doneArgs_=!0}if(t.doneExec_)e.pop(),t.isConstructor&&"object"!=typeof t.value?e[e.length-1].value=t.funcThis_:e[e.length-1].value=t.value;else{if(t.doneExec_=!0,!o||!o.isObject){let e=this.getErrorLineNumber(a);this.throwException(this.TYPE_ERROR,o+" is not a function",e)}var l=o.node;if(l){for(var c=this.createScope(l.body,o.parentScope),u=0;u<l.params.length;u++){var m=l.params[u].name,h=t.arguments_.length>u?t.arguments_[u]:void 0;this.setProperty(c,m,h)}var d=this.createObjectProto(this.ARRAY_PROTO);for(u=0;u<t.arguments_.length;u++)this.setProperty(d,u,t.arguments_[u]);this.setProperty(c,"arguments",d);var p=l.id&&l.id.name;return p&&this.setProperty(c,p,o),this.setProperty(c,"this",t.funcThis_,r.READONLY_DESCRIPTOR),t.value=void 0,new r.State(l.body,c)}if(o.eval){var f=t.arguments_[0];if("string"==typeof f){try{var g=n.a(f.toString(),r.PARSE_OPTIONS)}catch(e){let t=this.getErrorLineNumber(a);this.throwException(this.SYNTAX_ERROR,"Invalid code: "+e.message,t)}var y=new this.nodeConstructor;return y.type="EvalProgram_",y.body=g.body,this.stripLocations_(y,a.start,a.end),(c=t.directEval_?t.scope:this.global).strict?c=this.createScope(g,c):this.populateScope_(g,c),this.value=void 0,new r.State(y,c)}t.value=f}else if(o.nativeFunc)t.value=o.nativeFunc.apply(t.funcThis_,t.arguments_);else{if(o.asyncFunc){var b=this,E=t.arguments_.concat((function(e){t.value=e,b.paused_=!1}));return this.paused_=!0,void o.asyncFunc.apply(t.funcThis_,E)}{let e=this.getErrorLineNumber(a);this.throwException(this.TYPE_ERROR,o.class+" is not a function",e)}}}},r.prototype.stepCatchClause=function(e,t,a){if(!t.done_){t.done_=!0;var n=this.createSpecialScope(t.scope);return this.setProperty(n,a.param.name,t.throwValue),new r.State(a.body,n)}e.pop()},r.prototype.stepConditionalExpression=function(e,t,a){var n=t.mode_||0;if(0===n)return t.mode_=1,new r.State(a.test,t.scope);if(1===n){t.mode_=2;var i=Boolean(t.value);if(i&&a.consequent)return new r.State(a.consequent,t.scope);if(!i&&a.alternate)return new r.State(a.alternate,t.scope);this.value=void 0}e.pop(),"ConditionalExpression"===a.type&&(e[e.length-1].value=t.value)},r.prototype.stepContinueStatement=function(e,t,a){var n=a.label&&a.label.name;this.unwind(r.Completion.CONTINUE,void 0,n)},r.prototype.stepDebuggerStatement=function(e,t,a){e.pop()},r.prototype.stepDoWhileStatement=function(e,t,a){if("DoWhileStatement"===a.type&&void 0===t.test_&&(t.value=!0,t.test_=!0),!t.test_)return t.test_=!0,new r.State(a.test,t.scope);if(t.value){if(a.body)return t.test_=!1,t.isLoop=!0,new r.State(a.body,t.scope)}else e.pop()},r.prototype.stepEmptyStatement=function(e,t,a){e.pop()},r.prototype.stepEvalProgram_=function(e,t,a){var n=t.n_||0,i=a.body[n];if(i)return t.n_=n+1,new r.State(i,t.scope);e.pop(),e[e.length-1].value=this.value},r.prototype.stepExpressionStatement=function(e,t,a){if(!t.done_)return t.done_=!0,new r.State(a.expression,t.scope);e.pop(),this.value=t.value},r.prototype.stepForInStatement=function(e,t,a){if(!t.doneInit_&&(t.doneInit_=!0,a.left.declarations&&a.left.declarations[0].init)){if(t.scope.strict){let e=this.getErrorLineNumber(a);this.throwException(this.SYNTAX_ERROR,"for-in loop variable declaration may not have an initializer.",e)}return new r.State(a.left,t.scope)}if(!t.doneObject_)return t.doneObject_=!0,t.variable_||(t.variable_=t.value),new r.State(a.right,t.scope);if(t.isLoop||(t.isLoop=!0,t.object_=t.value,t.visited_=Object.create(null)),void 0===t.name_)e:for(;;){if(t.object_&&t.object_.isObject)for(t.props_||(t.props_=Object.getOwnPropertyNames(t.object_.properties));;){if(void 0===(n=t.props_.shift()))break;if(Object.prototype.hasOwnProperty.call(t.object_.properties,n)&&(!t.visited_[n]&&(t.visited_[n]=!0,Object.prototype.propertyIsEnumerable.call(t.object_.properties,n)))){t.name_=n;break e}}else if(null!==t.object_&&void 0!==t.object_)for(t.props_||(t.props_=Object.getOwnPropertyNames(t.object_));;){var n;if(void 0===(n=t.props_.shift()))break;if(t.visited_[n]=!0,Object.prototype.propertyIsEnumerable.call(t.object_,n)){t.name_=n;break e}}if(t.object_=this.getPrototype(t.object_),t.props_=null,null===t.object_)return void e.pop()}if(!t.doneVariable_){t.doneVariable_=!0;var i=a.left;if("VariableDeclaration"!==i.type){t.variable_=null;var o=new r.State(i,t.scope);return o.components=!0,o}t.variable_=[r.SCOPE_REFERENCE,i.declarations[0].id.name]}if(t.variable_||(t.variable_=t.value),!t.doneSetter_){t.doneSetter_=!0;var s=t.name_,l=this.setValue(t.variable_,s);if(l)return this.createSetter_(l,t.variable_,s)}return t.name_=void 0,t.doneVariable_=!1,t.doneSetter_=!1,a.body?new r.State(a.body,t.scope):void 0},r.prototype.stepForStatement=function(e,t,a){var n=t.mode_||0;if(0===n){if(t.mode_=1,a.init)return new r.State(a.init,t.scope)}else if(1===n){if(t.mode_=2,a.test)return new r.State(a.test,t.scope)}else if(2===n){if(t.mode_=3,!a.test||t.value)return t.isLoop=!0,new r.State(a.body,t.scope);e.pop()}else if(3===n&&(t.mode_=1,a.update))return new r.State(a.update,t.scope)},r.prototype.stepFunctionDeclaration=function(e,t,a){e.pop()},r.prototype.stepFunctionExpression=function(e,t,a){e.pop(),e[e.length-1].value=this.createFunction(a,t.scope)},r.prototype.stepIdentifier=function(e,t,a){if(e.pop(),t.components)e[e.length-1].value=[r.SCOPE_REFERENCE,a.name];else{var n=this.getValueFromScope(a.name,a);if(n&&"object"==typeof n&&n.isGetter){n.isGetter=!1;for(var i=t.scope;!this.hasProperty(i,a.name);)i=i.parentScope;var o=n;return this.createGetter_(o,this.global)}e[e.length-1].value=n}},r.prototype.stepIfStatement=r.prototype.stepConditionalExpression,r.prototype.stepLabeledStatement=function(e,t,a){e.pop();var n=t.labels||[];n.push(a.label.name);var i=new r.State(a.body,t.scope);return i.labels=n,i},r.prototype.stepLiteral=function(e,t,a){e.pop();var n=a.value;if(n instanceof RegExp){var r=this.createObjectProto(this.REGEXP_PROTO);this.populateRegExp(r,n),n=r}e[e.length-1].value=n},r.prototype.stepLogicalExpression=function(e,t,a){if("&&"!==a.operator&&"||"!==a.operator)throw SyntaxError("Unknown logical operator: "+a.operator);if(!t.doneLeft_)return t.doneLeft_=!0,new r.State(a.left,t.scope);if(t.doneRight_)e.pop(),e[e.length-1].value=t.value;else{if(!("&&"===a.operator&&!t.value||"||"===a.operator&&t.value))return t.doneRight_=!0,new r.State(a.right,t.scope);e.pop(),e[e.length-1].value=t.value}},r.prototype.stepMemberExpression=function(e,t,a){if(!t.doneObject_)return t.doneObject_=!0,new r.State(a.object,t.scope);var n;if(a.computed){if(!t.doneProperty_)return t.object_=t.value,t.doneProperty_=!0,new r.State(a.property,t.scope);n=t.value}else t.object_=t.value,n=a.property.name;if(e.pop(),t.components)e[e.length-1].value=[t.object_,n];else{var i=this.getProperty(t.object_,n);if(i&&"object"==typeof i&&i.isGetter){i.isGetter=!1;var o=i;return this.createGetter_(o,t.object_)}e[e.length-1].value=i}},r.prototype.stepNewExpression=r.prototype.stepCallExpression,r.prototype.stepObjectExpression=function(e,t,a){var n=t.n_||0,i=a.properties[n];if(t.object_){if("Identifier"===(s=i.key).type)var o=s.name;else{if("Literal"!==s.type)throw SyntaxError("Unknown object structure: "+s.type);o=s.value}t.properties_[o]||(t.properties_[o]={}),t.properties_[o][i.kind]=t.value,t.n_=++n,i=a.properties[n]}else t.object_=this.createObjectProto(this.OBJECT_PROTO),t.properties_=Object.create(null);if(i)return new r.State(i.value,t.scope);for(var s in t.properties_){var l=t.properties_[s];if("get"in l||"set"in l){var c={configurable:!0,enumerable:!0,get:l.get,set:l.set};this.setProperty(t.object_,s,null,c)}else this.setProperty(t.object_,s,l.init)}e.pop(),e[e.length-1].value=t.object_},r.prototype.stepProgram=function(e,t,a){var n=a.body.shift();if(n)return t.done=!1,new r.State(n,t.scope);t.done=!0},r.prototype.stepReturnStatement=function(e,t,a){if(a.argument&&!t.done_)return t.done_=!0,new r.State(a.argument,t.scope);this.unwind(r.Completion.RETURN,t.value,void 0)},r.prototype.stepSequenceExpression=function(e,t,a){var n=t.n_||0,i=a.expressions[n];if(i)return t.n_=n+1,new r.State(i,t.scope);e.pop(),e[e.length-1].value=t.value},r.prototype.stepSwitchStatement=function(e,t,a){if(!t.test_)return t.test_=1,new r.State(a.discriminant,t.scope);for(1===t.test_&&(t.test_=2,t.switchValue_=t.value,t.defaultCase_=-1);;){var n=t.index_||0,i=a.cases[n];if(t.matched_||!i||i.test)if(i||t.matched_||-1===t.defaultCase_){if(!i)return void e.pop();if(!t.matched_&&!t.tested_&&i.test)return t.tested_=!0,new r.State(i.test,t.scope);if(t.matched_||t.value===t.switchValue_){t.matched_=!0;var o=t.n_||0;if(i.consequent[o])return t.isSwitch=!0,t.n_=o+1,new r.State(i.consequent[o],t.scope)}t.tested_=!1,t.n_=0,t.index_=n+1}else t.matched_=!0,t.index_=t.defaultCase_;else t.defaultCase_=n,t.index_=n+1}},r.prototype.stepThisExpression=function(e,t,a){e.pop(),e[e.length-1].value=this.getValueFromScope("this",a)},r.prototype.stepThrowStatement=function(e,t,a){if(!t.done_)return t.done_=!0,new r.State(a.argument,t.scope);this.throwException(t.value)},r.prototype.stepTryStatement=function(e,t,a){if(!t.doneBlock_)return t.doneBlock_=!0,new r.State(a.block,t.scope);if(t.cv&&t.cv.type===r.Completion.THROW&&!t.doneHandler_&&a.handler){t.doneHandler_=!0;var n=new r.State(a.handler,t.scope);return n.throwValue=t.cv.value,t.cv=void 0,n}if(!t.doneFinalizer_&&a.finalizer)return t.doneFinalizer_=!0,new r.State(a.finalizer,t.scope);e.pop(),t.cv&&this.unwind(t.cv.type,t.cv.value,t.cv.label)},r.prototype.stepUnaryExpression=function(e,t,a){if(!t.done_){t.done_=!0;var n=new r.State(a.argument,t.scope);return n.components="delete"===a.operator,n}e.pop();var i=t.value;if("-"===a.operator)i=-i;else if("+"===a.operator)i=+i;else if("!"===a.operator)i=!i;else if("~"===a.operator)i=~i;else if("delete"===a.operator){var o=!0;if(Array.isArray(i)){var s=i[0];s===r.SCOPE_REFERENCE&&(s=t.scope);var l=String(i[1]);try{delete s.properties[l]}catch(e){t.scope.strict?this.throwException(this.TYPE_ERROR,"Cannot delete property '"+l+"' of '"+s+"'"):o=!1}}i=o}else if("typeof"===a.operator)i=i&&"Function"===i.class?"function":typeof i;else{if("void"!==a.operator)throw SyntaxError("Unknown unary operator: "+a.operator);i=void 0}e[e.length-1].value=i},r.prototype.stepUpdateExpression=function(e,t,a){if(!t.doneLeft_){t.doneLeft_=!0;var n=new r.State(a.argument,t.scope);return n.components=!0,n}if(t.leftSide_||(t.leftSide_=t.value),t.doneGetter_&&(t.leftValue_=t.value),!t.doneGetter_){var i=this.getValue(t.leftSide_,a);if(t.leftValue_=i,i&&"object"==typeof i&&i.isGetter){i.isGetter=!1,t.doneGetter_=!0;var o=i;return this.createGetter_(o,t.leftSide_)}}if(t.doneSetter_)return e.pop(),void(e[e.length-1].value=t.setterValue_);var s;i=Number(t.leftValue_);if("++"===a.operator)s=i+1;else{if("--"!==a.operator)throw SyntaxError("Unknown update expression: "+a.operator);s=i-1}var l=a.prefix?s:i,c=this.setValue(t.leftSide_,s);if(c)return t.doneSetter_=!0,t.setterValue_=l,this.createSetter_(c,t.leftSide_,s);e.pop(),e[e.length-1].value=l},r.prototype.stepVariableDeclaration=function(e,t,a){var n=a.declarations,i=t.n_||0,o=n[i];for(t.init_&&o&&(this.setValueToScope(o.id.name,t.value),t.init_=!1,o=n[++i]);o;){if(o.init)return t.n_=i,t.init_=!0,new r.State(o.init,t.scope);o=n[++i]}e.pop()},r.prototype.stepWithStatement=function(e,t,a){if(!t.doneObject_)return t.doneObject_=!0,new r.State(a.object,t.scope);if(!t.doneBody_){t.doneBody_=!0;var n=this.createSpecialScope(t.scope,t.value);return new r.State(a.body,n)}e.pop()},r.prototype.stepWhileStatement=r.prototype.stepDoWhileStatement,r.prototype.step=r.prototype.step,r.prototype.run=r.prototype.run,r.prototype.appendCode=r.prototype.appendCode,r.prototype.createObject=r.prototype.createObject,r.prototype.createObjectProto=r.prototype.createObjectProto,r.prototype.createAsyncFunction=r.prototype.createAsyncFunction,r.prototype.createNativeFunction=r.prototype.createNativeFunction,r.prototype.getProperty=r.prototype.getProperty,r.prototype.setProperty=r.prototype.setProperty,r.prototype.nativeToPseudo=r.prototype.nativeToPseudo,r.prototype.pseudoToNative=r.prototype.pseudoToNative,r.prototype.createPrimitive=function(e){return e}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(8),r=a(5);function i(e,t,a,i=1){const o=Math.max(Math.floor(t),0);let s=1+(n.a.ServerBaseGrowthRate-1)/e.hackDifficulty;s>n.a.ServerMaxGrowthRate&&(s=n.a.ServerMaxGrowthRate);const l=o*(e.serverGrowth/100)*r.a.ServerGrowthRate,c=1+(i-1)/16;return Math.pow(s,l*a.hacking_grow_mult*c)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(20),r=a(6),i=a(26);function o(e,t){const a=e.augmentations.map(e=>e.name),o=[];function s(e){return e.name!==r.a.NeuroFluxGovernor&&(!a.includes(e.name)&&(!o.includes(e)&&!e.isSpecial))}if(t.inGang()){const e=t.getGangFaction();for(const t in n.a){const a=n.a[t];s(a)&&(e.playerReputation>a.baseRepRequirement&&o.push(a))}return o}for(const e of t.factions){if("Bladeburners"===e)continue;if("Netburners"===e)continue;const t=i.a[e];if(null!=t)for(const e of t.augmentations){const a=n.a[e];s(a)&&(t.playerReputation>a.baseRepRequirement&&o.push(a))}}return o}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new(a(122).a)},,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(6),o=a(310),s=a(100),l=a(25),c=a(1),u=a(75),m=a(200),h=a(66),d=a.n(h),p=a(137),f=a.n(p);function g(e){const[t,a]=Object(n.useState)(!1);let h=e.aug.name;return null!=e.level&&e.aug.name===i.a.NeuroFluxGovernor&&(h+=" - Level "+e.level),"string"==typeof e.aug.info?r.a.createElement(l.a,{component:u.a},r.a.createElement(o.a,{onClick:()=>a(e=>!e)},r.a.createElement(s.a,{primary:r.a.createElement(c.a,{style:{whiteSpace:"pre-wrap"}},h)}),t?r.a.createElement(f.a,{color:"primary"}):r.a.createElement(d.a,{color:"primary"})),r.a.createElement(m.a,{in:t,unmountOnExit:!0},r.a.createElement(l.a,{m:4},r.a.createElement(c.a,{dangerouslySetInnerHTML:{__html:e.aug.info}}),e.aug.stats&&r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,null,e.aug.stats))))):r.a.createElement(l.a,{component:u.a},r.a.createElement(o.a,{onClick:()=>a(e=>!e)},r.a.createElement(s.a,{primary:r.a.createElement(c.a,{style:{whiteSpace:"pre-wrap"}},h)}),t?r.a.createElement(f.a,{color:"primary"}):r.a.createElement(d.a,{color:"primary"})),r.a.createElement(m.a,{in:t,unmountOnExit:!0},r.a.createElement(l.a,{m:4},r.a.createElement(c.a,null,e.aug.info,e.aug.stats&&r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement("br",null),e.aug.stats)))))}},,,,,function(e,t,a){"use strict";a.d(t,"b",(function(){return r})),a.d(t,"a",(function(){return i}));var n=a(0);const r=n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"0 0 166 132",style:{fill:"#adff2f"}},n.createElement("g",null,n.createElement("path",{d:"M132.658-0.18l-24.321,24.321c-7.915-2.71-16.342-4.392-25.087-4.392c-45.84,0-83,46-83,46 s14.1,17.44,35.635,30.844L12.32,120.158l12.021,12.021L144.68,11.841L132.658-0.18z M52.033,80.445 c-2.104-4.458-3.283-9.438-3.283-14.695c0-19.054,15.446-34.5,34.5-34.5c5.258,0,10.237,1.179,14.695,3.284L52.033,80.445z"}),n.createElement("path",{d:"M134.865,37.656l-18.482,18.482c0.884,3.052,1.367,6.275,1.367,9.612c0,19.055-15.446,34.5-34.5,34.5 c-3.337,0-6.56-0.483-9.611-1.367l-10.124,10.124c6.326,1.725,12.934,2.743,19.735,2.743c45.84,0,83-46,83-46 S153.987,50.575,134.865,37.656z"}))),i=n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16px",height:"16px",viewBox:"-22 0 511 511.99561",style:{fill:"#adff2f"}},n.createElement("path",{d:"m.496094 466.242188 39.902344-39.902344 45.753906 45.753906-39.898438 39.902344zm0 0"}),n.createElement("path",{d:"m468.421875 89.832031-1.675781-89.832031-300.265625 300.265625 45.753906 45.753906zm0 0"}),n.createElement("path",{d:"m95.210938 316.785156 16.84375 16.847656h.003906l83.65625 83.65625 22.753906-22.753906-100.503906-100.503906zm0 0"}),n.createElement("path",{d:"m101.445312 365.300781-39.902343 39.902344 45.753906 45.753906 39.902344-39.902343-39.90625-39.902344zm0 0"}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(58),o=a(29),s=a(1),l=a(28),c=a(25),u=a(101),m=a(553),h=a.n(m),d=a(554),p=a.n(d);function f({action:e,isActive:t,bladeburner:a,rerender:n}){const m=o.b.Player(),d=e.level<e.maxLevel,f=e.level>1;return r.a.createElement(c.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(c.a,{display:"flex"},r.a.createElement(l.a,{title:r.a.createElement(s.a,null,e.getSuccessesNeededForNextLevel(i.a.ContractSuccessesPerLevel)," successes needed for next level")},r.a.createElement(s.a,null,"Level: ",e.level," / ",e.maxLevel))),r.a.createElement(l.a,{title:t?r.a.createElement(s.a,null,"WARNING: changing the level will restart the Operation"):""},r.a.createElement("span",null,r.a.createElement(u.a,{disabled:!d,onClick:function(){d&&(++e.level,t&&a.startAction(m,a.action),n())}},r.a.createElement(h.a,null)))),r.a.createElement(l.a,{title:t?r.a.createElement(s.a,null,"WARNING: changing the level will restart the Operation"):""},r.a.createElement("span",null,r.a.createElement(u.a,{disabled:!f,onClick:function(){f&&(--e.level,t&&a.startAction(m,a.action),n())}},r.a.createElement(p.a,null)))))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(1),o=a(28),s=a(25),l=a(261);function c(e){return r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(o.a,{title:r.a.createElement(i.a,null,"Automatically increase operation level when possible")},r.a.createElement(i.a,null," Autolevel:")),r.a.createElement(l.a,{checked:e.action.autoLevel,onChange:function(t){e.action.autoLevel=t.target.checked,e.rerender()}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(937),o=a(22),s=a(10);function l(e){const[t,a]=Object(n.useState)(!1);return r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,{disabled:0===e.bladeburner.teamSize,onClick:()=>a(!0)},"Set Team Size (Curr Size: ",Object(o.c)(e.action.teamCount,0),")"),r.a.createElement(i.a,{open:t,onClose:()=>a(!1),action:e.action,bladeburner:e.bladeburner}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);function i(){const[e,t]=Object(n.useState)(!0);return Object(n.useEffect)(()=>{const e=setInterval(()=>t(e=>!e),1e3);return()=>clearInterval(e)}),r.a.createElement(r.a.Fragment,null,e?"|":"")}},function(e,t,a){"use strict";a.d(t,"b",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(1015),r=a(20),i=a(290),o=a(6),s=a(32);function l(e,t){const a=e.getCost();if(!t.canAfford(a))return!1;t.loseMoney(a,"other"),t.hacking_exp=e.hacking_exp,t.strength_exp=e.strength_exp,t.defense_exp=e.defense_exp,t.dexterity_exp=e.dexterity_exp,t.agility_exp=e.agility_exp,t.charisma_exp=e.charisma_exp;for(const e in r.a)r.a[e].owned=!1;for(let e=t.augmentations.length-1;e>=0;--e)t.augmentations[e].name!==o.a.NeuroFluxGovernor?t.augmentations.splice(e,1):r.a[o.a.NeuroFluxGovernor].owned=!0;for(let a=0;a<e.augmentations.length;++a)t.augmentations.push(new i.a(e.augmentations[a].name)),r.a[e.augmentations[a].name].owned=!0;for(let e=t.queuedAugmentations.length-1;e>=0;--e){const a=t.queuedAugmentations[e].name;t.augmentations.filter(e=>e.name!==o.a.NeuroFluxGovernor&&e.name===a).length>=1&&t.queuedAugmentations.splice(e,1)}return t.reapplyAllAugmentations(!0),t.reapplyAllSourceFiles(),!0}function c(){const e=[];for(let t=0;t<40;++t){const a=new n.a,i=5*t+1;a.hacking_exp=i*Object(s.a)(1e3,5e3),a.strength_exp=i*Object(s.a)(1e3,5e3),a.defense_exp=i*Object(s.a)(1e3,5e3),a.dexterity_exp=i*Object(s.a)(1e3,5e3),a.agility_exp=i*Object(s.a)(1e3,5e3),a.charisma_exp=i*Object(s.a)(1e3,5e3);const l=Math.max(2,Math.ceil((t+3)/2)),c=Object(s.a)(l,l+2),u=Object.keys(r.a);for(let e=0;e<c;++e){const e=Object(s.a)(0,u.length-1),t=u[e];if([o.a.TheRedPill,o.a.NeuroFluxGovernor,o.a.StaneksGift1,o.a.StaneksGift2,o.a.StaneksGift3].includes(t))continue;const n=r.a[t];if(null===n)throw new Error("null augmentation: "+t);a.augmentations.push({name:n.name,level:1}),a.applyAugmentation(r.a[t]),a.updateStatLevels(),u.splice(e,1)}e.push(a)}return e}},,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(23),o=a(1091),s=a(8),l=a(11),c=a(29),u=a(16),m=a(418),h=a(15),d=a(1),p=a(25),f=a(10);function g(e,t,a){const n=s.a.TravelCost;e.canAfford(n)&&(e.loseMoney(n,"other"),e.travel(a),Object(h.a)(r.a.createElement(r.a.Fragment,null,"You are now in ",a,"!")),t.toCity())}function y(e){const t=c.b.Player(),a=c.b.Router(),h=Object(n.useState)(!1)[1],[y,b]=Object(n.useState)(!1),[E,k]=Object(n.useState)(i.a.Sector12);function v(){h(e=>!e)}function _(e){const n=s.a.TravelCost;t.canAfford(n)&&(l.a.SuppressTravelConfirmation?g(t,a,e):(b(!0),k(e)))}return Object(n.useEffect)(()=>{const e=setInterval(v,1e3);return()=>clearInterval(e)},[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{variant:"h4"},"Travel Agency"),r.a.createElement(p.a,{mx:2},r.a.createElement(d.a,null,"From here, you can travel to any other city! A ticket costs"," ",r.a.createElement(u.a,{money:s.a.TravelCost,player:e.p}),"."),l.a.DisableASCIIArt?r.a.createElement(r.a.Fragment,null,Object.values(i.a).filter(t=>t!=e.p.city).map(e=>{if(void 0===Object.entries(i.a).find(t=>t[1]===e))throw new Error(`could not find key for city '${e}'`);return r.a.createElement(r.a.Fragment,{key:e},r.a.createElement(f.a,{onClick:()=>_(e),sx:{m:2}},r.a.createElement(d.a,null,"Travel to ",e)),r.a.createElement("br",null))})):r.a.createElement(m.a,{currentCity:e.p.city,onTravel:e=>_(e)})),r.a.createElement(o.a,{city:E,travel:()=>g(t,a,E),open:y,onClose:()=>b(!1)}))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return F})),a.d(t,"a",(function(){return G}));var n=a(0),r=a.n(n),i=a(1100),o=a(1114),s=a(78),l=a(15),c=a(91),u=a(207),m=a(209),h=a(468),d=a(281),p=a(4),f=a(608),g=a(473),y=a(11),b=a(39),E=a(241),k=a(162),v=a(1115),_=a(24),w=a(10),S=a(1),C=a(118),x=a(25),O=a(101),M=a(545),T=a.n(M),R=a(417),A=a(1116);function N(){return(N=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}let P=!1,I=[];function F(){const e=Object(g.a)({});I=function e(t){let a=[];const n=Object.keys(t);for(const r of n)"object"==typeof t[r]&&(a.push(r),a=a.concat(e(t[r]))),"function"==typeof t[r]&&a.push(r);return a}(e);const t=["heart","break","exploit","bypass","corporation","alterReality"];I=I.filter(e=>!t.includes(e)).sort()}class D{constructor(e,t,a,n,r){this.fileName=e,this.code=t,this.hostname=a,this.lastPosition=n,this.model=r}}let j=[],B=null;function G(e){const t=Object(n.useState)(!1)[1];const a=Object(n.useRef)(null),g=Object(n.useRef)(null),M=Object(n.useRef)(null),[F,G]=Object(n.useState)(null),[L,W]=Object(n.useState)(null),[H,U]=Object(n.useState)("RAM: ???"),[q,K]=Object(n.useState)(!1),[z,$]=Object(n.useState)([]),[V,Y]=Object(n.useState)(!1),[J,X]=Object(n.useState)({theme:y.a.MonacoTheme,insertSpaces:y.a.MonacoInsertSpaces,fontSize:y.a.MonacoFontSize,wordWrap:y.a.MonacoWordWrap,vim:e.vim||y.a.MonacoVim});j=j.filter(e=>null!==Object(_.d)(e.hostname)),B&&null===Object(_.d)(B.hostname)&&(B=j[0],void 0===B&&(B=null));const[Q,Z]=Object(n.useState)({height:window.innerHeight,width:window.innerWidth});function ee(e){null!==g.current&&(e.model=g.current.editor.createModel(e.code,e.fileName.endsWith(".txt")?"plaintext":"javascript"))}Object(n.useEffect)(()=>{const e=Object(E.debounce)((function(){Z({height:window.innerHeight,width:window.innerWidth})}),250);return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[]),Object(n.useEffect)(()=>{null!==B&&ae(B.code)},[]),Object(n.useEffect)(()=>{function t(t){y.a.DisableHotkeys||("KeyB"==t.code&&(t.ctrlKey||t.metaKey)&&(t.preventDefault(),e.router.toTerminal()),"KeyS"==t.code&&(t.ctrlKey||t.metaKey)&&(t.preventDefault(),t.stopPropagation(),re()))}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}),Object(n.useEffect)(()=>{if(J.vim&&L&&!F)try{window.require(["monaco-vim"],(function(t){G(t.initVimMode(L,M.current)),t.VimMode.Vim.defineEx("write","w",(function(){re()})),t.VimMode.Vim.defineEx("quit","q",(function(){e.router.toTerminal()})),t.VimMode.Vim.defineEx("wqriteandquit","wq",(function(){re(),e.router.toTerminal()})),L.focus()}))}catch{}else J.vim||(null==F||F.dispose(),G(null));return()=>{null==F||F.dispose()}},[J,a,L,F]);const te=Object(n.useMemo)(()=>Object(E.debounce)(e=>{U(e),K(!1)},300),[]);async function ae(t){if(null!=B&&B.fileName.endsWith(".txt"))return void te("");K(!0);const a=t+"",n=await Object(h.a)(e.player,a,e.player.getCurrentServer().scripts);if(!(n.cost>0)){switch(n.cost){case d.a.ImportError:te("RAM: Import Error");break;case d.a.URLImportError:te("RAM: HTTP Import Error");break;case d.a.SyntaxError:default:te("RAM: Syntax Error")}return new Promise(()=>{})}te("RAM: "+p.a.formatRAM(n.cost))}function ne(t){const a=Object(_.d)(t.hostname);if(null===a)throw new Error("Server should not be null but it is.");if(Object(c.a)(t.fileName)){for(let n=0;n<a.scripts.length;n++)if(t.fileName==a.scripts[n].filename)return a.scripts[n].saveScript(e.player,t.fileName,t.code,e.player.currentServer,a.scripts),y.a.SaveGameOnFileSave&&k.c.saveGame(),void e.router.toTerminal();const n=new u.a;n.saveScript(e.player,t.fileName,t.code,e.player.currentServer,a.scripts),a.scripts.push(n)}else{if(!t.fileName.endsWith(".txt"))return void Object(l.a)("Invalid filename. Must be either a script (.script, .js, or .ns) or or text file (.txt)");{for(let n=0;n<a.textFiles.length;++n)if(a.textFiles[n].fn===t.fileName)return a.textFiles[n].write(t.code),y.a.SaveGameOnFileSave&&k.c.saveGame(),void e.router.toTerminal();const n=new m.a(t.fileName,t.code);a.textFiles.push(n)}}y.a.SaveGameOnFileSave&&k.c.saveGame(),e.router.toTerminal()}function re(){if(null===B)return void console.error("currentScript is null when it shouldn't be. Unable to save script");if(b.a.isRunning&&b.a.currStep===b.f.TerminalTypeScript)return"n00dles.script"!==B.fileName?void Object(l.a)("Leave the script name as 'n00dles.script'!"):-1==B.code.replace(/\s/g,"").indexOf("while(true){hack('n00dles');}")?void Object(l.a)("Please copy and paste the code from the tutorial!"):(ne(B),void Object(b.c)());if(""==B.fileName)return void Object(l.a)("You must specify a filename!");if(!Object(s.j)(B.fileName))return void Object(l.a)("Script filename can contain only alphanumerics, hyphens, and underscores, and must end with an extension.");const t=Object(_.d)(B.hostname);if(null===t)throw new Error("Server should not be null but it is.");if(Object(c.a)(B.fileName)){for(let a=0;a<t.scripts.length;a++)if(B.fileName==t.scripts[a].filename)return t.scripts[a].saveScript(e.player,B.fileName,B.code,e.player.currentServer,t.scripts),void(y.a.SaveGameOnFileSave&&k.c.saveGame());const a=new u.a;a.saveScript(e.player,B.fileName,B.code,e.player.currentServer,t.scripts),t.scripts.push(a)}else{if(!B.fileName.endsWith(".txt"))return void Object(l.a)("Invalid filename. Must be either a script (.script, .js, or .ns) or or text file (.txt)");{for(let e=0;e<t.textFiles.length;++e)if(t.textFiles[e].fn===B.fileName)return t.textFiles[e].write(B.code),void(y.a.SaveGameOnFileSave&&k.c.saveGame());const e=new m.a(B.fileName,B.code);t.textFiles.push(e)}}y.a.SaveGameOnFileSave&&k.c.saveGame()}function ie(n){const r=j[n],i=j.findIndex(e=>e.fileName===r.fileName&&e.hostname===r.hostname);let o="";-1!==i&&(o=j[i].code);const s=Object(_.d)(r.hostname);if(null===s)throw new Error(`Server '${r.hostname}' should not be null, but it is.`);const l=s.scripts.findIndex(e=>e.filename===r.fileName);if(-1!==l&&o===s.scripts[l].code||R.a.emit({txt:"Do you want to save changes to "+r.fileName+"?",resolve:e=>{e&&(r.code=o,ne(r))}}),j.length>1){j=j.filter((e,t)=>t!==n);let e=-1;void 0===j[n+e]&&(e=1,void 0===j[n+e]&&(e=0)),B=j[n+e],null!==a.current&&((void 0===j[n+e].model||null===j[n+e].model||j[n+e].model.isDisposed())&&ee(j[n+e]),a.current.setModel(j[n+e].model),a.current.setPosition(j[n+e].lastPosition),a.current.revealLineInCenter(j[n+e].lastPosition.lineNumber),a.current.focus()),t(e=>!e)}else j=[],B=null,e.router.toTerminal()}const oe=Q.height-(130+(J.vim?34:0));return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{display:null!==B?"block":"none",height:"100%",width:"100%"}},r.a.createElement(f.a,{onDragEnd:function(e){if(!e.destination)return;const t=function(e,t,a){const n=Array.from(e),[r]=n.splice(t,1);return n.splice(a,0,r),n}(j,e.source.index,e.destination.index);j=t}},r.a.createElement(f.c,{droppableId:"tabs",direction:"horizontal"},(e,t)=>r.a.createElement(x.a,N({maxWidth:"1640px",display:"flex",flexDirection:"row",alignItems:"center",whiteSpace:"nowrap",ref:e.innerRef},e.droppableProps,{style:{backgroundColor:t.isDraggingOver?"#1F2022":y.a.theme.backgroundprimary,overflowX:"scroll"}}),j.map(({fileName:e,hostname:t},n)=>r.a.createElement(f.b,{key:e+t,draggableId:e+t,index:n,disableInteractiveElementBlocking:!0},i=>{var o,s;return r.a.createElement("div",N({ref:i.innerRef},i.draggableProps,i.dragHandleProps,{style:{...i.draggableProps.style,marginRight:"5px",flexShrink:0}}),r.a.createElement(w.a,{onClick:()=>function(e){if(null!==B){const e=j.findIndex(e=>null!==B&&e.fileName===B.fileName&&e.hostname===B.hostname);j[e]=B}B={...j[e]},null!==a.current&&null!==j[e]&&((void 0===j[e].model||j[e].model.isDisposed())&&ee(j[e]),a.current.setModel(j[e].model),a.current.setPosition(j[e].lastPosition),a.current.revealLineInCenter(j[e].lastPosition.lineNumber),ae(j[e].code),a.current.focus())}(n),style:{background:(null===(o=B)||void 0===o?void 0:o.fileName)===j[n].fileName?y.a.theme.secondarydark:""}},t,":~/",e," ",function(e){const t=j[e],a=Object(_.d)(t.hostname);if(null===a)throw new Error(`Server '${t.hostname}' should not be null, but it is.`);const n=a.scripts.find(e=>e.filename===t.fileName);if(void 0===n)return" *";const r=u.a.formatCode(t.code);return n.code!==r?" *":""}(n)),r.a.createElement(w.a,{onClick:()=>ie(n),style:{maxWidth:"20px",minWidth:"20px",background:(null===(s=B)||void 0===s?void 0:s.fileName)===j[n].fileName?y.a.theme.secondarydark:""}},"x"))})),e.placeholder))),r.a.createElement("div",{style:{paddingBottom:"5px"}}),r.a.createElement(i.a,{beforeMount:function(e){if(P)return;P=!0,e.languages.registerCompletionItemProvider("javascript",{provideCompletionItems:()=>{const t=[];for(const a of I)t.push({label:a,kind:e.languages.CompletionItemKind.Function,insertText:a,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet});return{suggestions:t}}}),async function(){const t=await e.languages.getLanguages().find(e=>"javascript"===e.id).loader();t.language.tokenizer.root.unshift([new RegExp("\\bns\\b"),{token:"ns"}]);for(const e of I)t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"netscriptfunction"}]);["let","const","var","function"].forEach(e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeywords"}])),["true","false","null","undefined"].forEach(e=>t.language.tokenizer.root.unshift([new RegExp(`\\b${e}\\b`),{token:"otherkeyvars"}])),t.language.tokenizer.root.unshift([new RegExp("\\bthis\\b"),{token:"this"}])}();const t=(A.a+"").replace(/export /g,"");e.languages.typescript.javascriptDefaults.addExtraLib(t,"netscript.d.ts"),e.languages.typescript.typescriptDefaults.addExtraLib(t,"netscript.d.ts"),Object(v.a)(e)},onMount:function(t,n){if(W(t),a.current=t,g.current=n,null!==a.current&&null!==g.current){if(!e.files&&null!==B)return ee(B),a.current.setModel(B.model),a.current.setPosition(B.lastPosition),a.current.revealLineInCenter(B.lastPosition.lineNumber),ae(B.code),void a.current.focus();if(e.files){const t=Object.entries(e.files);if(!t.length)return void a.current.focus();for(const[n,r]of t){const t=j.find(t=>t.fileName===n&&t.hostname===e.hostname);if(t)(void 0===t.model||null===t.model||t.model.isDisposed())&&ee(t),B=t,a.current.setModel(t.model),a.current.setPosition(t.lastPosition),a.current.revealLineInCenter(t.lastPosition.lineNumber),ae(t.code);else{const t=new D(n,r,e.hostname,new g.current.Position(0,0),g.current.editor.createModel(r,n.endsWith(".txt")?"plaintext":"javascript"));j.push(t),B={...t},a.current.setModel(t.model),ae(t.code)}}}a.current.focus()}},loading:r.a.createElement(S.a,null,"Loading script editor!"),height:oe+"px",defaultLanguage:"javascript",defaultValue:"",onChange:function(e){if(void 0===e)return;if(ae(e),null===a.current)return;const t=a.current.getPosition();if(null!==t){if(null!==B){B={...B,code:e,lastPosition:t};const a=j.findIndex(e=>null!==B&&e.fileName===B.fileName&&e.hostname===B.hostname),n=[...j],r=B;r.code=e,n[a]=r,j=[...n]}try{!function(e){if(null===a.current||null===B)return;if(!B.fileName.endsWith(".ns")&&!B.fileName.endsWith(".js"))return;const t=Object(h.b)(e);if(-1!==t){const e=a.current.deltaDecorations(z,[{range:{startLineNumber:t,startColumn:1,endLineNumber:t,endColumn:10},options:{isWholeLine:!0,glyphMarginClassName:"myGlyphMarginClass",glyphMarginHoverMessage:{value:"Possible infinite loop, await something."}}}]);$(e)}else{const e=a.current.deltaDecorations(z,[]);$(e)}}(e)}catch(e){}}},theme:J.theme,options:{...J,glyphMargin:!0}}),r.a.createElement(x.a,{ref:M,className:"monaco-editor",display:"flex",flexDirection:"row",sx:{p:1},alignItems:"center"}),r.a.createElement(x.a,{display:"flex",flexDirection:"row",sx:{m:1},alignItems:"center"},r.a.createElement(w.a,{onClick:function(){null!==a.current&&a.current.getAction("editor.action.formatDocument").run()}},"Beautify"),r.a.createElement(S.a,{color:q?"secondary":"primary",sx:{mx:1}},H),r.a.createElement(w.a,{onClick:re},"Save (Ctrl/Cmd + s)"),r.a.createElement(w.a,{onClick:e.router.toTerminal},"Close (Ctrl/Cmd + b)"),r.a.createElement(S.a,{sx:{mx:1}}," ","Documentation:"," ",r.a.createElement(C.a,{target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/index.html"},"Basic")," ","|",r.a.createElement(C.a,{target:"_blank",href:"https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.ns.md"},"Full")),r.a.createElement(O.a,{style:{marginLeft:"auto"},onClick:()=>Y(!0)},r.a.createElement(r.a.Fragment,null,r.a.createElement(T.a,null),"options"))),r.a.createElement(o.a,{open:V,onClose:()=>Y(!1),options:{theme:y.a.MonacoTheme,insertSpaces:y.a.MonacoInsertSpaces,fontSize:y.a.MonacoFontSize,wordWrap:y.a.MonacoWordWrap,vim:y.a.MonacoVim},save:e=>{X(e),y.a.MonacoTheme=e.theme,y.a.MonacoInsertSpaces=e.insertSpaces,y.a.MonacoFontSize=e.fontSize,y.a.MonacoWordWrap=e.wordWrap,y.a.MonacoVim=e.vim}})),r.a.createElement("div",{style:{display:null!==B?"none":"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},r.a.createElement("span",{style:{color:y.a.theme.primary,fontSize:"20px",textAlign:"center"}},r.a.createElement(S.a,{variant:"h4"},"No open files"),r.a.createElement(S.a,{variant:"h5"},"Use ",r.a.createElement("code",null,"nano FILENAME")," in",r.a.createElement("br",null),"the terminal to open files"))))}},,,,,function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return compile})),__webpack_require__.d(__webpack_exports__,"b",(function(){return executeJSScript}));var acorn_walk__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(279),acorn__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(242),_NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(103),_Script_ScriptUrl__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(1129),_utils_helpers_computeHash__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(527),_utils_BlobCache__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(674),_utils_ImportCache__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(675),_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(78);function makeScriptBlob(e){return new Blob([e],{type:"text/javascript"})}async function compile(player,script,scripts){if(!shouldCompile(script,scripts))return;await script.updateRamUsage(player,scripts);const uurls=_getScriptUrls(script,scripts,[]),url=uurls[uurls.length-1].url;script.url&&script.url,script.url=url,script.module=new Promise(resolve=>resolve(eval("import(url)"))),script.dependencies=uurls}async function executeJSScript(e,t=[],a){const n=a.getScript();if(null===n)throw new Error("script is null");await compile(e,n,t),a.ramUsage=n.ramUsage;const r=await n.module,i=a.env.vars;if(!r.main)throw Object(_NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_2__.b)(a,n.filename+" cannot be run because it does not have a main function.");return r.main(i)}function shouldCompile(e,t){return""===e.module||e.dependencies.some(a=>{const n=t.find(e=>e.filename==a.filename);if(!n)return!0;return n.moduleSequenceNumber>e.moduleSequenceNumber})}function _getScriptUrls(e,t,a){const n=[];a.push(e);try{const r=Object(acorn__WEBPACK_IMPORTED_MODULE_1__.a)(e.code,{sourceType:"module",ecmaVersion:"latest",ranges:!0}),i=[];acorn_walk__WEBPACK_IMPORTED_MODULE_0__.b(r,{ImportDeclaration(e){i.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportNamedDeclaration(e){e.source&&i.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})},ExportAllDeclaration(e){e.source&&i.push({filename:e.source.value,start:e.source.range[0]+1,end:e.source.range[1]-1})}}),i.sort((e,t)=>t.start-e.start);let o=e.code;for(const e of i){const r=e.filename.startsWith("./")?e.filename.substring(2):e.filename,i=t.filter(e=>Object(_Terminal_DirectoryHelpers__WEBPACK_IMPORTED_MODULE_7__.b)(e.filename,r));if(0===i.length)continue;const[s]=i;let l=_utils_ImportCache__WEBPACK_IMPORTED_MODULE_6__.a.get(s.hash());l||(l=_getScriptUrls(s,t,a)),n.push(...l);const c=l[l.length-1].url;_utils_ImportCache__WEBPACK_IMPORTED_MODULE_6__.a.store(s.hash(),l),o=o.substring(0,e.start)+c+o.substring(e.end)}o+='\n\nfunction print() {throw new Error("Invalid call to window.print(). Did you mean to use Netscript\'s print()?");}';const s=Object(_utils_helpers_computeHash__WEBPACK_IMPORTED_MODULE_4__.a)(o);let l=_utils_BlobCache__WEBPACK_IMPORTED_MODULE_5__.a.get(s);return l||(l=URL.createObjectURL(makeScriptBlob(o))),_utils_BlobCache__WEBPACK_IMPORTED_MODULE_5__.a.store(s,l),n.push(new _Script_ScriptUrl__WEBPACK_IMPORTED_MODULE_3__.a(e.filename,l)),n}catch(e){for(const e in n)URL.revokeObjectURL(e);throw e}finally{a.pop()}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(575),r=a(342);function i(e){return function(t){t=Object(n.a)(t);const a={};for(const e of t){let t=String;"number"==typeof e[1]?t=Number:"boolean"==typeof e[1]?t=Boolean:Array.isArray(e[1])&&(t=[String]);const n=e[0].length>1?2:1;a["-".repeat(n)+e[0]]=t}const i=r(a,{argv:e});for(const e of t)i.hasOwnProperty("--"+e[0])&&i.hasOwnProperty("-"+e[0])||(i[e[0]]=e[1]);for(const e of Object.keys(i)){if(!e.startsWith("-"))continue;const t=i[e];delete i[e];const a=2===e.length?1:2;i[e.slice(a)]=t}return i}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n=new(a(535).a)("",()=>{});function r(e){if(null==e)return null;if(!(e.hasOwnProperty("properties")&&e.hasOwnProperty("getter")&&e.hasOwnProperty("setter")&&e.hasOwnProperty("proto")))return e;let t;if(e.hasOwnProperty("class")&&"Array"===e.class){t=[];const a=n.getProperty(e,"length");for(let i=0;i<a;i++)n.hasProperty(e,i)&&(t[i]=r(n.getProperty(e,i)))}else{t={};for(const a in e.properties){const n=e.properties[a];t[a]=r(n)}}return t}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a(119),i=a(25),o=a(101),s=a(676),l=a.n(s),c=a(678),u=a.n(c),m=a(677),h=a.n(m),d=a(322),p=a.n(d);function f(e){const t=Object(r.a)(),{count:a,page:s,rowsPerPage:c,onPageChange:m}=e;return n.createElement(i.a,{sx:{flexShrink:0,ml:2.5}},n.createElement(o.a,{onClick:e=>{m(e,0)},disabled:0===s},"rtl"===t.direction?n.createElement(p.a,null):n.createElement(l.a,null)),n.createElement(o.a,{onClick:e=>{m(e,s-1)},disabled:0===s},"rtl"===t.direction?n.createElement(h.a,null):n.createElement(u.a,null)),n.createElement(o.a,{onClick:e=>{m(e,s+1)},disabled:s>=Math.ceil(a/c)-1},"rtl"===t.direction?n.createElement(u.a,null):n.createElement(h.a,null)),n.createElement(o.a,{onClick:e=>{m(e,Math.max(0,Math.ceil(a/c)-1))},disabled:s>=Math.ceil(a/c)-1},"rtl"===t.direction?n.createElement(l.a,null):n.createElement(p.a,null)))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a(111),i=a(49);function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}const s=Object(r.a)({root:{border:"1px solid white",width:"5px",height:"5px"}}),l=e=>n.createElement(i.a,o({},e,{classes:{root:s().root,...e.classes}}));function c(e){return n.createElement(l,{style:{backgroundColor:e.color},onMouseEnter:e.onMouseEnter,onClick:e.onClick})}},function(e,t,a){"use strict";a.d(t,"b",(function(){return I})),a.d(t,"a",(function(){return F}));var n=a(0),r=a.n(n),i=a(119),o=a(111),s=a(134),l=a(4),c=a(106),u=a(1174),m=a(22),h=a(249),d=a(174),p=a(49),f=a(54),g=a(1),y=a(10),b=a(101),E=a(566),k=a.n(E),v=a(1175),_=a.n(v),w=a(11),S=a(29),C=a(400),x=a(5),O=a(28),M=a(25),T=a(8);function R(){const e=S.b.Player(),t=I();return 0===e.intelligence?r.a.createElement(r.a.Fragment,null):r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:t.cell}},r.a.createElement(g.a,{classes:{root:t.int}},"Int ")),r.a.createElement(p.a,{align:"right",classes:{root:t.cell}},r.a.createElement(g.a,{classes:{root:t.int}},l.a.formatSkill(e.intelligence))),r.a.createElement(p.a,{align:"right",classes:{root:t.cell}},r.a.createElement(g.a,{id:"overview-int-hook",classes:{root:t.int}})))}function A(){const e=S.b.Player(),t=I(),a=e.bladeburner;if(null===a)return r.a.createElement(r.a.Fragment,null);const n=a.getTypeAndNameFromActionId(a.action);return"Idle"===n.type?r.a.createElement(r.a.Fragment,null):r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},r.a.createElement(g.a,null,"Bladeburner:"))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",colSpan:2,classes:{root:t.cellNone}},r.a.createElement(g.a,null,n.type,": ",n.name))))}function N({tooltip:e,children:t,onClickFocus:a,header:n}){const i=I();return r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(O.a,{title:r.a.createElement(r.a.Fragment,null,e)},r.a.createElement(g.a,{className:i.workHeader,sx:{pt:1,pb:.5}},n)))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",colSpan:2,classes:{root:i.workCell}},r.a.createElement(g.a,{className:i.workSubtitles},t))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",align:"center",colSpan:2,classes:{root:i.cellNone}},r.a.createElement(y.a,{sx:{mt:1},onClick:a},"Focus"))))}function P(){const e=S.b.Player(),t=S.b.Router();if(!e.isWorking||e.focus)return r.a.createElement(r.a.Fragment,null);let a=r.a.createElement(r.a.Fragment,null),n=r.a.createElement(r.a.Fragment,null),i=r.a.createElement(r.a.Fragment,null);return e.workType===T.a.WorkTypeCompanyPartTime||e.workType===T.a.WorkTypeCompany?(a=r.a.createElement(r.a.Fragment,null,e.jobs[e.companyName]," at ",r.a.createElement("strong",null,e.companyName)),n=r.a.createElement(r.a.Fragment,null,"Working at ",r.a.createElement("strong",null,e.companyName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:e.workRepGained})," rep")):e.workType===T.a.WorkTypeFaction?(a=r.a.createElement(r.a.Fragment,null,e.factionWorkType," for ",r.a.createElement("strong",null,e.currentWorkFactionName)),n=r.a.createElement(r.a.Fragment,null,"Working for ",r.a.createElement("strong",null,e.currentWorkFactionName)),i=r.a.createElement(r.a.Fragment,null,"+",r.a.createElement(c.a,{reputation:e.workRepGained})," rep")):e.workType===T.a.WorkTypeStudyClass?(a=r.a.createElement(r.a.Fragment,null,e.workType),n=r.a.createElement(r.a.Fragment,null,"You are ",e.className),i=r.a.createElement(r.a.Fragment,null,Object(m.b)(e.timeWorked))):e.workType===T.a.WorkTypeCreateProgram&&(a=r.a.createElement(r.a.Fragment,null,"Coding ",e.createProgramName),n=r.a.createElement(r.a.Fragment,null,"Creating a program"),i=r.a.createElement(r.a.Fragment,null,e.createProgramName," ",(e.timeWorkedCreateProgram/e.timeNeededToCompleteWork*100).toFixed(2),"%")),r.a.createElement(N,{tooltip:a,header:n,onClickFocus:()=>{e.startFocusing(),t.toWork()}},i)}const I=Object(o.a)(e=>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:e.colors.hp},money:{color:e.colors.money},hack:{color:e.colors.hack},combat:{color:e.colors.combat},cha:{color:e.colors.cha},int:{color:e.colors.int}}));function F({save:e,killScripts:t}){const[a,o]=Object(n.useState)(!1),s=S.b.Player(),c=Object(n.useState)(!1)[1];Object(n.useEffect)(()=>{const e=setInterval(()=>c(e=>!e),600);return()=>clearInterval(e)},[]);const m=I(),y=Object(i.a)(),E=s.calculateSkillProgress(s.hacking_exp,s.hacking_mult*x.a.HackingLevelMultiplier),v=s.calculateSkillProgress(s.strength_exp,s.strength_mult*x.a.StrengthLevelMultiplier),T=s.calculateSkillProgress(s.defense_exp,s.defense_mult*x.a.DefenseLevelMultiplier),N=s.calculateSkillProgress(s.dexterity_exp,s.dexterity_mult*x.a.DexterityLevelMultiplier),F=s.calculateSkillProgress(s.agility_exp,s.agility_mult*x.a.AgilityLevelMultiplier),D=s.calculateSkillProgress(s.charisma_exp,s.charisma_mult*x.a.CharismaLevelMultiplier);return r.a.createElement(r.a.Fragment,null,r.a.createElement(h.a,{sx:{display:"block",m:1}},r.a.createElement(d.a,null,r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.hp}},"HP ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.hp}},l.a.formatHp(s.hp)," / ",l.a.formatHp(s.max_hp))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-hp-hook",classes:{root:m.hp}}))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.money}},"Money ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.money}},l.a.formatMoney(s.money))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-money-hook",classes:{root:m.money}}))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.hack}},"Hack ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.hack}},l.a.formatSkill(s.hacking)))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:E,color:y.colors.hack})),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cell}},r.a.createElement(g.a,{classes:{root:m.hack}})),r.a.createElement(p.a,{align:"right",classes:{root:m.cell}},r.a.createElement(g.a,{id:"overview-hack-hook",classes:{root:m.hack}}))),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},"Str ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},l.a.formatSkill(s.strength))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-str-hook",classes:{root:m.combat}}))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:v,color:y.colors.combat})),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},"Def ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},l.a.formatSkill(s.defense))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-def-hook",classes:{root:m.combat}}))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:T,color:y.colors.combat})),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},"Dex ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.combat}},l.a.formatSkill(s.dexterity))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-dex-hook",classes:{root:m.combat}}))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:N,color:y.colors.combat})),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cell}},r.a.createElement(g.a,{classes:{root:m.combat}},"Agi ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cell}},r.a.createElement(g.a,{classes:{root:m.combat}},l.a.formatSkill(s.agility))),r.a.createElement(p.a,{align:"right",classes:{root:m.cell}},r.a.createElement(g.a,{id:"overview-agi-hook",classes:{root:m.combat}}))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:F,color:y.colors.combat})),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.cha}},"Cha ")),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{classes:{root:m.cha}},l.a.formatSkill(s.charisma))),r.a.createElement(p.a,{align:"right",classes:{root:m.cellNone}},r.a.createElement(g.a,{id:"overview-cha-hook",classes:{root:m.cha}}))),r.a.createElement(f.a,null,!w.a.DisableOverviewProgressBars&&r.a.createElement(C.a,{progress:D,color:y.colors.cha})),r.a.createElement(R,null),r.a.createElement(f.a,null,r.a.createElement(p.a,{component:"th",scope:"row",classes:{root:m.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-0",classes:{root:m.hack}})),r.a.createElement(p.a,{component:"th",scope:"row",align:"right",classes:{root:m.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-1",classes:{root:m.hack}})),r.a.createElement(p.a,{component:"th",scope:"row",align:"right",classes:{root:m.cell}},r.a.createElement(g.a,{id:"overview-extra-hook-2",classes:{root:m.hack}}))),r.a.createElement(P,null),r.a.createElement(A,null))),r.a.createElement(M.a,{sx:{display:"flex",borderTop:"1px solid "+w.a.theme.welllight}},r.a.createElement(M.a,{sx:{display:"flex",flex:1,justifyContent:"flex-start",alignItems:"center"}},r.a.createElement(b.a,{onClick:e},r.a.createElement(O.a,{title:"Save game"},r.a.createElement(k.a,{color:0!==w.a.AutosaveInterval?"primary":"error"})))),r.a.createElement(M.a,{sx:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center"}},r.a.createElement(b.a,{onClick:()=>o(!0)},r.a.createElement(O.a,{title:"Kill all running scripts"},r.a.createElement(_.a,{color:"error"}))))),r.a.createElement(u.a,{open:a,onClose:()=>o(!1),killScripts:t}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(24);function r(e){if(null!=e.ramUsage&&e.ramUsage>0)return e.ramUsage;const t=Object(n.d)(e.server);if(null==t)return 0;for(let a=0;a<t.scripts.length;++a)if(t.scripts[a].filename===e.filename)return e.ramUsage=t.scripts[a].ramUsage,e.ramUsage;return 0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(78),r=a(91),i=a(1212),o=a(241);const s="/** @param {NS} ns **/\nexport async function main(ns) {\n\n}";function l(e,t,a){if(1==e.length&&(""+e[0]).includes("*")){return function(e,t,a){const r={glob:e,preGlob:"",postGlob:"",globError:"",globMatches:[],globAgainst:t};if(1!==(e=e.replace("**","*")).split("").filter(e=>"*"==e).length)return r.globError="Only a single glob is supported per command.\nexample: `nano my-dir/*.js`",r;[r.preGlob,r.postGlob]=e.split("*"),r.preGlob=Object(n.k)(r.preGlob);const i=Object(n.l)(a.cwd());return r.preGlob=`${i}/${r.preGlob}`,t.forEach(e=>{const t=e.filename.startsWith("/")?e.filename:"/"+e.filename;t.startsWith(r.preGlob)&&t.endsWith(r.postGlob)&&r.globMatches.push(t)}),r.glob=`${r.preGlob}*${r.postGlob}`,r}(""+e[0],t.getCurrentServer().scripts,a)}return null}function c(e,{terminal:t,router:a,player:n,args:c},u){if(c.length<1)return void t.error(`Incorrect usage of ${e} command. Usage: ${e} [scriptname]`);let m=c;try{const h=l(c,n,t);if(h){if(!1===Object(o.isEmpty)(h.globError))throw new Error(h.globError);m=h.globMatches}const d=m.map(a=>{const o=""+a;if(Object(r.a)(o)){const e=t.getFilepath(o),a=t.getScript(n,o),r=function(e){return e.endsWith(".ns")||e.endsWith(".js")}(o),l=null!==a?a.code:r?s:"";return l===s&&i.a.saveCursor(o,{row:3,column:5}),[e,l]}if(o.endsWith(".txt")){const e=t.getFilepath(o),a=t.getTextFile(n,o);return[e,null===a?"":a.text]}throw new Error("Invalid file. Only scripts (.script, .ns, .js), or text files (.txt) can be edited with "+e)});if(h&&0===d.length)throw new Error(`Could not find any valid files to open with ${e} using glob: \`${h.glob}\``);a.toScriptEditor(Object.fromEntries(d),u)}catch(e){t.error(""+e)}}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"c",(function(){return s}));var n=a(224),r=a(80);function i(){return 8!==this.bitNodeN&&(6===this.bitNodeN||7===this.bitNodeN||r.a[6]>0||r.a[7]>0)}function o(){return null!=this.bladeburner&&this.bladeburner instanceof n.a}function s(){this.bladeburner=new n.a(this)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(414),r=a(21);class i extends n.a{constructor(e=null){super(e)}getActionTypeSkillSuccessBonus(e){return e.skillMultipliers.successChanceContract}toJSON(){return Object(r.b)("Contract",this)}static fromJSON(e){return Object(r.a)(i,e.data)}}r.c.constructors.Contract=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={helpList:["Use 'help [command]' to get more information about a particular Bladeburner console command."," "," automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks"," clear/cls Clear the console"," help [cmd] Display this help text, or help text for a specific command"," log [en/dis] [type] Enable or disable logging for events and actions"," skill [action] [name] Level or display info about your Bladeburner skills"," start [type] [name] Start a Bladeburner action/task"," stop Stops your current Bladeburner action/task"," "],automate:["Usage: automate [var] [val] [hi/low]"," ","A simple way to automate your Bladeburner actions. This console command can be used to automatically start an action when your stamina rises above a certain threshold, and automatically switch to another action when your stamina drops below another threshold."," "," automate status - Check the current status of your automation and get a brief description of what it'll do"," automate en - Enable the automation feature"," automate dis - Disable the automation feature"," ","There are four properties that must be set for this automation to work properly. Here is how to set them:"," "," automate stamina 100 high"," automate contract Tracking high"," automate stamina 50 low"," automate general 'Field Analysis' low"," ","Using the four console commands above will set the automation to perform Tracking contracts if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below 50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must exactly match whatever the name is in the UI."," "],clear:["Usage: clear"," ","Clears the console"," "],cls:["Usage: cls"," ","Clears the console"," "],help:["Usage: help [command]"," ","Running 'help' with no arguments displays the general help text, which lists all console commands and a brief description of what they do. A command can be specified to get more specific help text about that particular command. For example:"," "," help automate"," ","will display specific information about using the automate console command"," "],log:["Usage: log [en/dis] [type]"," ","Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged in the console. There are also random events that are logged in the console as well. The five categories of things that get logged are:"," ","[general, contracts, ops, blackops, events]"," ","The logging for these categories can be enabled or disabled like so:"," "," log dis contracts - Disables logging that occurs when contracts are completed"," log en contracts - Enables logging that occurs when contracts are completed"," log dis events - Disables logging for Bladeburner random events"," ","Logging can be universally enabled/disabled using the 'all' keyword:"," "," log dis all"," log en all"," "],skill:["Usage: skill [action] [name]"," ","Level or display information about your skills."," ","To display information about all of your skills and your multipliers, use:"," "," skill list"," ","To display information about a specific skill, specify the name of the skill afterwards. Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If the name of the skill has whitespace, enclose the name of the skill in double quotation marks:"," "," skill list Reaper"," skill list 'Digital Observer'"," ","This console command can also be used to level up skills:"," "," skill level [skill name]"," "],start:["Usage: start [type] [name]"," ","Start an action. An action is specified by its type and its name. The name is case-sensitive. It must appear exactly as it does in the UI. If the name of the action has whitespace, enclose it in double quotation marks. Valid action types include:"," ","[general, contract, op, blackop]"," ","Examples:"," "," start contract Tracking"," start op 'Undercover Operation'"," "],stop:["Usage: stop"," ","Stop your current action and go idle."," "]}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i})),a.d(t,"b",(function(){return o})),a.d(t,"c",(function(){return s}));var n=a(381),r=a(80);function i(){return 3===this.bitNodeN||r.a[3]>0}function o(){return null!=this.corporation&&this.corporation instanceof n.a}function s(e,t=0){this.corporation=new n.a({name:e}),this.corporation.totalShares+=t}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"b",(function(){return s}));var n=a(299),r=a(4);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class o{constructor(e={cost:0,text:""}){if(i(this,"children",[]),i(this,"cost",0),i(this,"researched",!1),i(this,"parent",null),i(this,"text",""),null==n.a[e.text])throw new Error("Invalid Research name used when constructing ResearchTree Node: "+e.text);this.text=e.text,this.cost=e.cost,e.children&&e.children.length>0&&(this.children=e.children),null!=e.parent&&(this.parent=e.parent)}addChild(e){this.children.push(e),e.parent=this}createTreantMarkup(){const e=[];for(let t=0;t<this.children.length;++t)e.push(this.children[t].createTreantMarkup());let t="tooltip";this.researched?t+=" researched":this.parent&&!1===this.parent.researched?t+=" locked":t+=" unlocked";const a=n.a[this.text];return{children:e,HTMLclass:t,innerHTML:`<div id="${this.text.replace(/\s/g,"")}-corp-research-click-listener">${this.text}<br>${r.a.format(this.cost,"0,0")} Scientific Research<span class="tooltiptext">`+a.desc+"</span></div>",text:{name:this.text}}}findNode(e){if(this.text===e)return this;let t=null;for(let a=0;a<this.children.length;++a)if(t=this.children[a].findNode(e),null!=t)return t;return null}setParent(e){this.parent=e}}class s{constructor(){i(this,"researched",{}),i(this,"root",null)}createTreantMarkup(){if(null==this.root)return{};return{chart:{container:""},nodeStructure:this.root.createTreantMarkup()}}getAllNodes(){const e=[],t=[];if(null==this.root)return e;for(t.push(this.root);0!==t.length;){const a=t.shift();if(null!=a){e.push(a.text);for(let e=0;e<a.children.length;++e)t.push(a.children[e])}}return e}getAdvertisingMultiplier(){return this.getMultiplierHelper("advertisingMult")}getEmployeeChaMultiplier(){return this.getMultiplierHelper("employeeChaMult")}getEmployeeCreMultiplier(){return this.getMultiplierHelper("employeeCreMult")}getEmployeeEffMultiplier(){return this.getMultiplierHelper("employeeEffMult")}getEmployeeIntMultiplier(){return this.getMultiplierHelper("employeeIntMult")}getProductionMultiplier(){return this.getMultiplierHelper("productionMult")}getProductProductionMultiplier(){return this.getMultiplierHelper("productProductionMult")}getSalesMultiplier(){return this.getMultiplierHelper("salesMult")}getScientificResearchMultiplier(){return this.getMultiplierHelper("sciResearchMult")}getStorageMultiplier(){return this.getMultiplierHelper("storageMult")}getMultiplierHelper(e){let t=1;if(null==this.root)return t;const a=[];for(a.push(this.root);0!==a.length;){const r=a.shift();if(null==r||!r.researched)continue;const i=n.a[r.text];if(null==i){console.warn("Invalid Research name in node: "+r.text);continue}const o=i[e];if(null!=o){t*=o;for(let e=0;e<r.children.length;++e)a.push(r.children[e])}else console.warn("Invalid propName specified in ResearchTree.getMultiplierHelper: "+e)}return t}findNode(e){return null==this.root?null:this.root.findNode(e)}research(e){if(null==this.root)return;const t=[];for(t.push(this.root);0!==t.length;){const a=t.shift();if(null!=a){if(a.text===e)return a.researched=!0,void(this.researched[e]=!0);for(let e=0;e<a.children.length;++e)t.push(a.children[e])}}console.warn("ResearchTree.research() did not find the specified Research node for: "+e)}setRoot(e){this.root=e}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=75},,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(90);function r(e){if(null==e)return null;const t=e.nextPosition;return null==t?null:n.a[t]}},function(e,t,a){"use strict";a.d(t,"a",(function(){return H}));var n=a(22),r=a(20),i=a(143),o=a(6),s=a(220),l=a(224),c=a(345),u=a(62),m=a(381),h=a(8),d=a(26),p=a(110),f=a(120),g=a(92),y=a(568),b=a(234),E=a(55),k=a(39),v=a(255),_=a(181),w=a(2),S=a(162),C=a(24),x=a(11),O=a(182),M=a(80),T=a(95),R=a(83),A=a(303),N=a(16),P=a(222),I=a(106),F=a(369),D=a(254),j=a(1228),B=a(319),G=a(0),L=a.n(G),W=a(1229);const H={_lastUpdate:(new Date).getTime(),updateGame:function(e=1){const t=e*h.a._idleSpeed;null==w.a.totalPlaytime&&(w.a.totalPlaytime=0),null==w.a.playtimeSinceLastAug&&(w.a.playtimeSinceLastAug=0),null==w.a.playtimeSinceLastBitnode&&(w.a.playtimeSinceLastBitnode=0),w.a.totalPlaytime+=t,w.a.playtimeSinceLastAug+=t,w.a.playtimeSinceLastBitnode+=t,R.a.process(g.b,w.a,e),w.a.process(g.b,e),w.a.hasWseAccount&&Object(T.k)(e),w.a.inGang()&&null!==w.a.gang&&w.a.gang.process(e,w.a),p.b.process(w.a,e),w.a.corporation instanceof m.a&&w.a.corporation.storeCycles(e),w.a.bladeburner instanceof l.a&&w.a.bladeburner.storeCycles(e);for(let t=0;t<w.a.sleeves.length;++t)if(w.a.sleeves[t]instanceof A.a){const a=w.a.sleeves[t].process(w.a,e);if(null==a)continue;for(let n=0;n<w.a.sleeves.length;++n)n!==t&&w.a.sleeves[n].gainExperience(w.a,a,e,!0)}H.decrementAllCounters(e),H.checkCounters(),Object(_.f)(e),Object(E.i)(w.a,e)},Counters:{autoSaveCounter:300,updateSkillLevelsCounter:10,updateDisplays:3,updateDisplaysLong:15,updateActiveScriptsDisplay:5,createProgramNotifications:10,augmentationsNotifications:10,checkFactionInvitations:100,passiveFactionGrowth:5,messages:150,mechanicProcess:5,contractGeneration:3e3,achievementsCounter:60},decrementAllCounters:function(e=1){for(const t in H.Counters){const a=H.Counters[t];if(void 0===a)throw new Error("counter should not be undefined");H.Counters[t]=a-e}},checkCounters:function(){if(H.Counters.autoSaveCounter<=0&&(null==x.a.AutosaveInterval&&(x.a.AutosaveInterval=60),0===x.a.AutosaveInterval?H.Counters.autoSaveCounter=1/0:(H.Counters.autoSaveCounter=5*x.a.AutosaveInterval,S.c.saveGame(!x.a.SuppressSavedGameToast))),H.Counters.checkFactionInvitations<=0){const e=w.a.checkForFactionInvitations();if(e.length>0){const t=e[Math.floor(Math.random()*e.length)];Object(f.c)(t)}H.Counters.checkFactionInvitations=100}if(H.Counters.passiveFactionGrowth<=0){const e=Math.floor(5-H.Counters.passiveFactionGrowth);Object(f.e)(e),H.Counters.passiveFactionGrowth=5}if(H.Counters.messages<=0&&(Object(v.b)(),r.a[o.a.TheRedPill].owned?H.Counters.messages=4500:H.Counters.messages=150),w.a.corporation instanceof m.a&&w.a.corporation.process(w.a),H.Counters.mechanicProcess<=0){if(w.a.bladeburner instanceof l.a)try{w.a.bladeburner.process(g.b,w.a)}catch(e){Object(D.a)("Exception caught in Bladeburner.process(): "+e)}H.Counters.mechanicProcess=5}H.Counters.contractGeneration<=0&&(Math.random()<=.25&&Object(c.b)(),H.Counters.contractGeneration=3e3),H.Counters.achievementsCounter<=0&&(Object(B.b)(),H.Counters.achievementsCounter=300)},load:function(e){if(Object(j.a)(),Object(W.a)(),Object(S.b)(e)){O.b.emit(),Object(s.b)(w.a),Object(M.b)(w.a),Object(i.c)(),w.a.reapplyAllSourceFiles(),w.a.hasWseAccount&&Object(T.h)(),H._lastUpdate=(new Date).getTime();const e=w.a.lastUpdate,t=H._lastUpdate-e,a=Math.floor(t/h.a._idleSpeed);let r=0;const o=w.a.moneySourceA.hacking/w.a.playtimeSinceLastAug*t*.75;if(w.a.gainMoney(o,"hacking"),Object(_.b)(w.a),w.a.isWorking)w.a.focus=!0,w.a.workType==h.a.WorkTypeFaction?w.a.workForFaction(a):w.a.workType==h.a.WorkTypeCreateProgram?w.a.createProgramWork(a):w.a.workType==h.a.WorkTypeStudyClass?w.a.takeClass(a):w.a.workType==h.a.WorkTypeCrime?w.a.commitCrime(a):w.a.workType==h.a.WorkTypeCompanyPartTime?w.a.workPartTime(a):w.a.work(a);else for(let e=0;e<w.a.factions.length;e++){const t=w.a.factions[e];if(!d.a.hasOwnProperty(t))continue;const n=d.a[t];if(!n.isMember)continue;if(!n.getInfo().offersWork())continue;if(w.a.getGangName()===t)continue;const i=Object(b.c)(w.a,n),o=Object(b.b)(w.a,n),s=Object(b.a)(w.a,n),l=Math.max(i,o,s)/w.a.factions.length*a;n.playerReputation+=l,r+=l}const c=Object(E.i)(w.a,a),u=Object(E.g)(w.a)?L.a.createElement(L.a.Fragment,null,L.a.createElement(P.a,{hashes:c})," hashes"):L.a.createElement(N.a,{money:c});Object(f.e)(a),w.a.hasWseAccount&&Object(T.k)(a);const g=w.a.gang;w.a.inGang()&&null!==g&&g.process(a,w.a),w.a.corporation instanceof m.a&&w.a.corporation.storeCycles(a),w.a.bladeburner instanceof l.a&&w.a.bladeburner.storeCycles(a),p.b.process(w.a,a);for(let e=0;e<w.a.sleeves.length;++e)if(w.a.sleeves[e]instanceof A.a){const t=w.a.sleeves[e].process(w.a,a);if(null==t)continue;for(let n=0;n<w.a.sleeves.length;++n)n!==e&&w.a.sleeves[n].gainExperience(w.a,t,a,!0)}const y=a*h.a._idleSpeed;null==w.a.totalPlaytime&&(w.a.totalPlaytime=0),null==w.a.playtimeSinceLastAug&&(w.a.playtimeSinceLastAug=0),null==w.a.playtimeSinceLastBitnode&&(w.a.playtimeSinceLastBitnode=0),w.a.totalPlaytime+=y,w.a.playtimeSinceLastAug+=y,w.a.playtimeSinceLastBitnode+=y,w.a.lastUpdate=H._lastUpdate,H.start();const k=Object(n.b)(y);setTimeout(()=>F.a.emit(L.a.createElement(L.a.Fragment,null,"Offline for ",k,". While you were offline, your scripts generated"," ",L.a.createElement(N.a,{money:o}),", your Hacknet Nodes generated ",u," and you gained"," ",L.a.createElement(I.a,{reputation:r})," reputation divided amongst your factions.")),250)}else Object(s.b)(w.a),H.start(),w.a.init(),Object(C.f)(w.a.getHomeComputer()),Object(u.b)(),Object(d.c)(),Object(i.c)(),Object(v.c)(),Object(M.b)(w.a),Object(k.e)();Object(y.b)()},start:function(){const e=(new Date).getTime();let t=e-H._lastUpdate;const a=t%h.a._idleSpeed;t=Math.floor(t/h.a._idleSpeed),t>0&&(H._lastUpdate=e-a,w.a.lastUpdate=e-a,H.updateGame(t)),window.requestAnimationFrame(H.start)}}},,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return k}));var n=a(0),r=a.n(n),i=a(1417),o=a(1),s=a(52),l=a(25),c=a(111),u=a(134),m=a(83),h=a(318),d=a(2),p=a(612),f=a(92),g=a(8),y=a(378),b=a(375);const E=Object(c.a)(e=>Object(u.a)({root:{backgroundColor:e.colors.backgroundprimary}}));function k(){const e=E(),[t,a]=Object(n.useState)(!1),[c,u]=Object(n.useState)(!1);return Object(n.useEffect)(()=>{const e=setTimeout(()=>{c||a(!0)},2e3);return()=>clearTimeout(e)}),Object(n.useEffect)(()=>{!async function(){await Object(h.b)().then(e=>{try{p.a.load(e)}catch(e){throw Object(y.a)(),u(!0),e}u(!0)}).catch(e=>{console.error(e),p.a.load(""),u(!0)})}()},[]),r.a.createElement(l.a,{className:e.root},c?r.a.createElement(f.a,{terminal:m.a,engine:p.a,player:d.a}):r.a.createElement(s.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(s.a,{item:!0},r.a.createElement(i.a,{size:150,color:"primary"})),r.a.createElement(s.a,{item:!0},r.a.createElement(o.a,{variant:"h3"},"Loading Bitburner v",g.a.VersionString," (",Object(b.a)(),")")),t&&r.a.createElement(s.a,{item:!0},r.a.createElement(o.a,null,"If the game fails to load, consider ",r.a.createElement("a",{href:"?noScripts"},"killing all scripts")))))}},,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";function n(e){return"number"==typeof e&&!isNaN(e)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(105),r=a(69),i=a(21);class o{constructor(e="",t=0,a=0,i=n.a.LimitBuy,o=r.a.Long){let s=!1;if("number"==typeof t&&"number"==typeof a||(s=!0),(isNaN(t)||isNaN(a))&&(s=!0),"string"!=typeof e&&(s=!0),s)throw new Error("Invalid constructor paramters for Order");this.stockSymbol=e,this.shares=t,this.price=a,this.type=i,this.pos=o}toJSON(){return Object(i.b)("Order",this)}static fromJSON(e){return Object(i.a)(o,e.data)}}i.c.constructors.Order=o},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(658),r=a(70),i=a(26),o=a(834),s=a(539),l=a(21),c=a(8),u=a(835),m=a(5),h=a(2),d=a(6);function p(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class f{constructor(){p(this,"storedCycles",0),p(this,"fragments",[])}baseSize(){return u.a.BaseSize+m.a.StaneksGiftExtraSize+h.a.sourceFileLvl(13)}width(){return Math.floor(this.baseSize()/2+1)}height(){return Math.floor(this.baseSize()/2+.6)}charge(e,t,a){t.avgCharge=(t.numCharge*t.avgCharge+a)/(t.numCharge+1),t.numCharge++;const n=i.a["Church of the Machine God"];n.playerReputation+=e.faction_rep_mult*(Math.pow(a,.95)*(n.favor+100))/1e3}inBonus(){return this.storedCycles*c.a._idleSpeed/1e3>1}process(e,t=1){e.hasAugmentation(d.a.StaneksGift1)&&(this.storedCycles+=t,this.storedCycles-=10,this.storedCycles=Math.max(0,this.storedCycles),this.updateMults(e),s.a.emit())}effect(e){let t=e.neighboors().map(e=>this.fragmentAt(e[0],e[1])).filter(e=>!!e);t=t.filter(e=>e.fragment().type===r.b.Booster);let a=1;t=t.filter((e,t,a)=>a.indexOf(e)===t);for(const e of t)a*=e.fragment().power;return Object(o.a)(e.avgCharge,e.numCharge,e.fragment().power,a)}canPlace(e,t,a,r){if(e<0||t<0)return!1;if(e+r.width(a)>this.width())return!1;if(t+r.height(a)>this.height())return!1;if(this.count(r)>=r.limit)return!1;const i=new n.a({x:e,y:t,rotation:a,fragment:r});for(const e of this.fragments)if(e.collide(i))return!1;return!0}place(e,t,a,r){return!!this.canPlace(e,t,a,r)&&(this.fragments.push(new n.a({x:e,y:t,rotation:a,fragment:r})),!0)}findFragment(e,t){return this.fragments.find(a=>a.x===e&&a.y===t)}fragmentAt(e,t){for(const a of this.fragments)if(a.fullAt(e,t))return a}count(e){let t=0;for(const a of this.fragments)a.fragment().id===e.id&&t++;return t}delete(e,t){for(let a=0;a<this.fragments.length;a++)if(this.fragments[a].x===e&&this.fragments[a].y===t)return this.fragments.splice(a,1),!0;return!1}clear(){this.fragments=[]}clearCharge(){this.fragments.forEach(e=>{e.avgCharge=0,e.numCharge=0})}updateMults(e){e.reapplyAllAugmentations(!0),e.reapplyAllSourceFiles();for(const t of this.fragments){const a=t.fragment(),n=this.effect(t);switch(a.type){case r.b.HackingChance:e.hacking_chance_mult*=n;break;case r.b.HackingSpeed:e.hacking_speed_mult*=n;break;case r.b.HackingMoney:e.hacking_money_mult*=n;break;case r.b.HackingGrow:e.hacking_grow_mult*=n;break;case r.b.Hacking:e.hacking_mult*=n,e.hacking_exp_mult*=n;break;case r.b.Strength:e.strength_mult*=n,e.strength_exp_mult*=n;break;case r.b.Defense:e.defense_mult*=n,e.defense_exp_mult*=n;break;case r.b.Dexterity:e.dexterity_mult*=n,e.dexterity_exp_mult*=n;break;case r.b.Agility:e.agility_mult*=n,e.agility_exp_mult*=n;break;case r.b.Charisma:e.charisma_mult*=n,e.charisma_exp_mult*=n;break;case r.b.HacknetMoney:e.hacknet_node_money_mult*=n;break;case r.b.HacknetCost:e.hacknet_node_purchase_cost_mult/=n,e.hacknet_node_ram_cost_mult/=n,e.hacknet_node_core_cost_mult/=n,e.hacknet_node_level_cost_mult/=n;break;case r.b.Rep:e.company_rep_mult*=n,e.faction_rep_mult*=n;break;case r.b.WorkMoney:e.work_money_mult*=n;break;case r.b.Crime:e.crime_success_mult*=n,e.crime_money_mult*=n;break;case r.b.Bladeburner:e.bladeburner_max_stamina_mult*=n,e.bladeburner_stamina_gain_mult*=n,e.bladeburner_analysis_mult*=n,e.bladeburner_success_chance_mult*=n}}e.updateSkillLevels()}prestigeAugmentation(){this.clearCharge()}prestigeSourceFile(){this.clear(),this.storedCycles=0}toJSON(){return Object(l.b)("StaneksGift",this)}static fromJSON(e){return Object(l.a)(f,e.data)}}l.c.constructors.StaneksGift=f},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(233),r=a(21);class i{constructor(e){e?(this.id=e.fragment.id,this.x=e.x,this.y=e.y,this.avgCharge=0,this.numCharge=0,this.rotation=e.rotation):(this.id=-1,this.x=-1,this.y=-1,this.avgCharge=-1,this.numCharge=-1,this.rotation=-1)}collide(e){const t=this.fragment(),a=e.fragment(),n=e.x-this.x,r=e.y-this.y;for(let i=0;i<t.shape.length;i++)for(let o=0;o<t.shape[i].length;o++)if(t.fullAt(o,i,this.rotation)&&a.fullAt(o-n,i-r,e.rotation))return!0;return!1}fragment(){const e=Object(n.b)(this.id);if(null===e)throw new Error("ActiveFragment id refers to unknown Fragment.");return e}fullAt(e,t){return this.fragment().fullAt(e-this.x,t-this.y,this.rotation)}neighboors(){return this.fragment().neighboors(this.rotation).map(e=>[this.x+e[0],this.y+e[1]])}copy(){const e=Object(n.b)(this.id);if(null===e)throw new Error("ActiveFragment id refers to unknown Fragment.");const t=new i({x:this.x,y:this.y,rotation:this.rotation,fragment:e});return t.avgCharge=this.avgCharge,t.numCharge=this.numCharge,t}toJSON(){return Object(r.b)("ActiveFragment",this)}static fromJSON(e){return Object(r.a)(i,e.data)}}r.c.constructors.ActiveFragment=i},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(9);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e){r(this,"city",null),r(this,"costMult",0),r(this,"expMult",0),r(this,"name",n.a.Void),r(this,"types",[]),r(this,"techVendorMaxRam",0),r(this,"techVendorMinRam",0),e.city&&(this.city=e.city),e.costMult&&(this.costMult=e.costMult),e.expMult&&(this.expMult=e.expMult),e.infiltrationData&&(this.infiltrationData=e.infiltrationData),e.name&&(this.name=e.name),e.types&&(this.types=e.types),e.techVendorMaxRam&&(this.techVendorMaxRam=e.techVendorMaxRam),e.techVendorMinRam&&(this.techVendorMinRam=e.techVendorMinRam)}}},,,,,,,,function(e,t,a){"use strict";a.d(t,"b",(function(){return m})),a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(24),o=a(44),s=a(87),l=a(117),c=a(72),u=a(10);const m={All:0,Foreign:1,Owned:2,Purchased:3};function h(e){function t(t){const a=t instanceof o.a&&t.purchasedByPlayer,n=e.serverType;switch(n){case m.All:return!0;case m.Foreign:return"home"!==t.hostname&&!a;case m.Owned:return a||t instanceof s.a||"home"===t.hostname;case m.Purchased:return a||t instanceof s.a;default:return console.warn("Invalid ServerType specified for ServerDropdown component: "+n),!1}}const a=[];for(const e of Object(i.c)().sort((e,t)=>e.hostname.localeCompare(t.hostname)))t(e)&&a.push(r.a.createElement(c.a,{key:e.hostname,value:e.hostname},e.hostname));return r.a.createElement(l.a,{startAdornment:r.a.createElement(u.a,{onClick:e.purchase,disabled:!e.canPurchase},"Buy"),sx:{mx:1},value:e.value,onChange:e.onChange},a)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(245),o=a(111),s=a(134),l=a(75);const c=Object(o.a)(()=>Object(s.a)({card:{padding:"10px",border:"solid 1px #808080",backgroundColor:"white",display:"inline-block",borderRadius:"10px",fontSize:"18.5px",textAlign:"center",margin:"3px",fontWeight:"bold"},red:{color:"red"},black:{color:"black"},value:{fontSize:"20px",fontFamily:"sans-serif"}})),u=({card:e,hidden:t})=>{const a=c();let n;switch(e.suit){case i.b.Clubs:n=r.a.createElement("span",null,"♣");break;case i.b.Diamonds:n=r.a.createElement("span",null,"♦");break;case i.b.Hearts:n=r.a.createElement("span",null,"♥");break;case i.b.Spades:n=r.a.createElement("span",null,"♠");break;default:throw new Error("MissingCaseException: "+e.suit)}return r.a.createElement(l.a,{className:`${a.card} ${e.isRedSuit()?a.red:a.black}`},r.a.createElement(r.a.Fragment,null,r.a.createElement("span",{className:a.value},t?" - ":e.formatValue()),r.a.createElement("span",null,t?" - ":n)))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(26),r=a(24);function i(e,t){const a=t.augmentations.slice().filter(e=>"NeuroFlux Governor"!==e);for(const t of a)if(!e.augmentations.some(e=>e.name==t))return!1;return!0}const o=[{title:"Gain root access on CSEC",fulfilled:()=>{const e=Object(r.d)("CSEC");return!(!e||!e.hasOwnProperty("hasAdminRights"))&&e.hasAdminRights}},{title:"Install the backdoor on CSEC",fulfilled:()=>{const e=Object(r.d)("CSEC");return!(!e||!e.hasOwnProperty("backdoorInstalled"))&&e.backdoorInstalled}},{title:"Join the faction hinted at in csec-test.msg",fulfilled:e=>e.factions.includes("CyberSec")},{title:"Install all the Augmentations from CyberSec",fulfilled:e=>i(e,n.a.CyberSec)},{title:"Join the faction hinted at in nitesec-test.msg",fulfilled:e=>e.factions.includes("NiteSec")},{title:"Install all the Augmentations from NiteSec",fulfilled:e=>i(e,n.a.NiteSec)},{title:"Join the faction hinted at in j3.msg",fulfilled:e=>e.factions.includes("The Black Hand")},{title:"Install all the Augmentations from The Black Hand",fulfilled:e=>i(e,n.a["The Black Hand"])},{title:"Join the faction hinted at in 19dfj3l1nd.msg",fulfilled:e=>e.factions.includes("BitRunners")},{title:"Install all the Augmentations from BitRunners",fulfilled:e=>i(e,n.a.BitRunners)},{title:"Complete fl1ght.exe",fulfilled:e=>e.factions.includes("Daedalus")},{title:"Install the special Augmentation from Daedalus",fulfilled:e=>e.augmentations.some(e=>"The Red Pill"==e.name)},{title:"Install the final backdoor and free yourself.",fulfilled:()=>!1}]},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n={};class r{static get(e){return n[e]}static store(e,t){n[e]||(n[e]=t)}static removeByValue(e){Object.keys(n).filter(t=>n[t]===e).forEach(e=>delete n[e])}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n={};class r{static get(e){return n[e]}static store(e,t){n[e]||(n[e]=t)}}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(8);function r(e,t){return e/n.a.DonateMoneyToRepDivisor*t.faction_rep_mult}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(93);const r={longestName:0,longestSymbol:0};for(const e in n.a)r.longestName=Math.max(e.length,r.longestName),r.longestSymbol=Math.max(n.a[e].length,r.longestSymbol)},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(25),o=a(1),s=a(11),l=a(1180);function c({achievement:e,unlockedOn:t,cssFiltersUnlocked:a,cssFiltersLocked:n}){if(!e)return r.a.createElement(r.a.Fragment,null);const c=!!t,u=c?s.a.theme.primary:s.a.theme.secondarylight;let m="";return t&&(m=new Date(t).toLocaleString()),r.a.createElement(i.a,{sx:{border:"1px solid "+s.a.theme.well,mb:2}},r.a.createElement(i.a,{sx:{display:"flex",flexDirection:"row",flexWrap:"wrap"}},r.a.createElement(l.a,{achievement:e,unlocked:c,size:"72px",colorFilters:c?a:n}),r.a.createElement(i.a,{sx:{display:"flex",flexDirection:"column",justifyContent:"center",px:1}},r.a.createElement(o.a,{variant:"h6",sx:{color:u}},e.Name),r.a.createElement(o.a,{variant:"body2",sx:{maxWidth:"500px",color:u}},e.Description),c&&r.a.createElement(o.a,{variant:"caption",sx:{fontSize:"12px",color:s.a.theme.primarydark}},"Acquired on ",m))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));class n{constructor(e,t,a){this.set(e,t,a)}toString(){return`rgb(${Math.round(this.r)}, ${Math.round(this.g)}, ${Math.round(this.b)})`}set(e,t,a){this.r=this.clamp(e),this.g=this.clamp(t),this.b=this.clamp(a)}hueRotate(e=0){e=e/180*Math.PI;const t=Math.sin(e),a=Math.cos(e);this.multiply([.213+.787*a-.213*t,.715-.715*a-.715*t,.072-.072*a+.928*t,.213-.213*a+.143*t,.715+.285*a+.14*t,.072-.072*a-.283*t,.213-.213*a-.787*t,.715-.715*a+.715*t,.072+.928*a+.072*t])}grayscale(e=1){this.multiply([.2126+.7874*(1-e),.7152-.7152*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152+.2848*(1-e),.0722-.0722*(1-e),.2126-.2126*(1-e),.7152-.7152*(1-e),.0722+.9278*(1-e)])}sepia(e=1){this.multiply([.393+.607*(1-e),.769-.769*(1-e),.189-.189*(1-e),.349-.349*(1-e),.686+.314*(1-e),.168-.168*(1-e),.272-.272*(1-e),.534-.534*(1-e),.131+.869*(1-e)])}saturate(e=1){this.multiply([.213+.787*e,.715-.715*e,.072-.072*e,.213-.213*e,.715+.285*e,.072-.072*e,.213-.213*e,.715-.715*e,.072+.928*e])}multiply(e){const t=this.clamp(this.r*e[0]+this.g*e[1]+this.b*e[2]),a=this.clamp(this.r*e[3]+this.g*e[4]+this.b*e[5]),n=this.clamp(this.r*e[6]+this.g*e[7]+this.b*e[8]);this.r=t,this.g=a,this.b=n}brightness(e=1){this.linear(e)}contrast(e=1){this.linear(e,-.5*e+.5)}linear(e=1,t=0){this.r=this.clamp(this.r*e+255*t),this.g=this.clamp(this.g*e+255*t),this.b=this.clamp(this.b*e+255*t)}invert(e=1){this.r=this.clamp(255*(e+this.r/255*(1-2*e))),this.g=this.clamp(255*(e+this.g/255*(1-2*e))),this.b=this.clamp(255*(e+this.b/255*(1-2*e)))}hsl(){const e=this.r/255,t=this.g/255,a=this.b/255,n=Math.max(e,t,a),r=Math.min(e,t,a);let i,o,s=(n+r)/2;if(n===r)i=o=0;else{const l=n-r;switch(o=s>.5?l/(2-n-r):l/(n+r),n){case e:i=(t-a)/l+(t<a?6:0);break;case t:i=(a-e)/l+2;break;case a:i=(e-t)/l+4}i/=6}return{h:100*i,s:100*o,l:100*s}}clamp(e){return e>255?e=255:e<0&&(e=0),e}}class r{constructor(e){this.target=e,this.targetHSL=e.hsl(),this.reusedColor=new n(0,0,0)}solve(){const e=this.solveNarrow(this.solveWide());return{values:e.values,loss:e.loss,filter:this.css(e.values)}}solveWide(){const e=[60,180,18e3,600,1.2,1.2];let t={loss:1/0};for(let a=0;t.loss>25&&a<3;a++){const a=[50,20,3750,50,100,100],n=this.spsa(5,e,15,a,1e3);n.loss<t.loss&&(t=n)}return t}solveNarrow(e){const t=e.loss,a=t+1,n=[.25*a,.25*a,a,.25*a,.2*a,.2*a];return this.spsa(t,n,2,e.values,500)}spsa(e,t,a,n,r){let i=null,o=1/0;const s=new Array(6),l=new Array(6),c=new Array(6);for(let m=0;m<r;m++){const r=a/Math.pow(m+1,.16666666666666666);for(let e=0;e<6;e++)s[e]=Math.random()>.5?1:-1,l[e]=n[e]+r*s[e],c[e]=n[e]-r*s[e];const h=this.loss(l)-this.loss(c);for(let a=0;a<6;a++){const i=h/(2*r)*s[a],o=t[a]/Math.pow(e+m+1,1);n[a]=u(n[a]-o*i,a)}const d=this.loss(n);d<o&&(i=n.slice(0),o=d)}return{values:i,loss:o};function u(e,t){let a=100;return 2===t?a=7500:4!==t&&5!==t||(a=200),3===t?e>a?e%=a:e<0&&(e=a+e%a):e<0?e=0:e>a&&(e=a),e}}loss(e){const t=this.reusedColor;t.set(0,0,0),t.invert(e[0]/100),t.sepia(e[1]/100),t.saturate(e[2]/100),t.hueRotate(3.6*e[3]),t.brightness(e[4]/100),t.contrast(e[5]/100);const a=t.hsl();return Math.abs(t.r-this.target.r)+Math.abs(t.g-this.target.g)+Math.abs(t.b-this.target.b)+Math.abs(a.h-this.targetHSL.h)+Math.abs(a.s-this.targetHSL.s)+Math.abs(a.l-this.targetHSL.l)}css(e){function t(t,a=1){return Math.round(e[t]*a)}return`invert(${t(0)}%) sepia(${t(1)}%) saturate(${t(2)}%) hue-rotate(${t(3,3.6)}deg) brightness(${t(4)}%) contrast(${t(5)}%)`}}function i(e){const t=function(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(e,t,a,n)=>t+t+a+a+n+n);const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null}(e);if(!t)return"";const[a,i,o]=t,s=new n(a,i,o);return new r(s).solve().filter}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(8),r=a(5);function i(e){const t=1e3/n.a._idleSpeed;let a=0,i=0,o=0,s=0,l=0,c=0,u=0;const m=e.hashManager;switch(e.className){case n.a.ClassStudyComputerScience:i=n.a.ClassStudyComputerScienceBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassDataStructures:a=n.a.ClassDataStructuresBaseCost*e.workCostMult/t,i=n.a.ClassDataStructuresBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassNetworks:a=n.a.ClassNetworksBaseCost*e.workCostMult/t,i=n.a.ClassNetworksBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassAlgorithms:a=n.a.ClassAlgorithmsBaseCost*e.workCostMult/t,i=n.a.ClassAlgorithmsBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassManagement:a=n.a.ClassManagementBaseCost*e.workCostMult/t,u=n.a.ClassManagementBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassLeadership:a=n.a.ClassLeadershipBaseCost*e.workCostMult/t,u=n.a.ClassLeadershipBaseExp*e.workExpMult/t*m.getStudyMult();break;case n.a.ClassGymStrength:a=n.a.ClassGymBaseCost*e.workCostMult/t,o=e.workExpMult/t*m.getTrainingMult();break;case n.a.ClassGymDefense:a=n.a.ClassGymBaseCost*e.workCostMult/t,s=e.workExpMult/t*m.getTrainingMult();break;case n.a.ClassGymDexterity:a=n.a.ClassGymBaseCost*e.workCostMult/t,l=e.workExpMult/t*m.getTrainingMult();break;case n.a.ClassGymAgility:a=n.a.ClassGymBaseCost*e.workCostMult/t,c=e.workExpMult/t*m.getTrainingMult();break;default:throw new Error("ERR: Invalid/unrecognized class name")}return{workMoneyLossRate:a,workHackExpGainRate:i*e.hacking_exp_mult*r.a.ClassGymExpGain,workStrExpGainRate:o*e.strength_exp_mult*r.a.ClassGymExpGain,workDefExpGainRate:s*e.defense_exp_mult*r.a.ClassGymExpGain,workDexExpGainRate:l*e.dexterity_exp_mult*r.a.ClassGymExpGain,workAgiExpGainRate:c*e.agility_exp_mult*r.a.ClassGymExpGain,workChaExpGainRate:u*e.charisma_exp_mult*r.a.ClassGymExpGain}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return le}));var n=a(236),r=a(87),i=a(44),o=a(61),s=a(104),l=a(304),c=a(91),u=a(8),m=a(24),h=a(78),d=a(432),p=a(39),f=a(123),g=a(437),y=a(98),b=a(11),E=a(175),k=a(94),v=a(4),_=a(22),w=a(1186),S=a(1187),C=a(1188),x=a(1189),O=a(1190),M=a(1191),T=a(1192),R=a(1193),A=a(1194),N=a(1195),P=a(1198),I=a(1199),F=a(1200),D=a(1201),j=a(1202),B=a(1203),G=a(1204),L=a(1205),W=a(1206),H=a(1207),U=a(1208),q=a(1209),K=a(1210),z=a(1211),$=a(1213),V=a(1214),Y=a(1215),J=a(1218),X=a(1219),Q=a(1220),Z=a(1221),ee=a(1222),te=a(1223),ae=a(1224),ne=a(1225),re=a(1226),ie=a(1227),oe=a(375);function se(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class le{constructor(){se(this,"action",null),se(this,"commandHistory",[]),se(this,"commandHistoryIndex",0),se(this,"outputHistory",[new n.b(`Bitburner v${u.a.VersionString} (${Object(oe.a)()})`,"primary")]),se(this,"contractOpen",!1),se(this,"currDir","/")}process(e,t,a){null!==this.action&&(this.action.timeLeft-=u.a._idleSpeed*a/1e3,this.action.timeLeft<.01&&this.finishAction(e,t,!1),l.b.emit())}append(e){this.outputHistory.push(e),this.outputHistory.length>b.a.MaxTerminalCapacity&&this.outputHistory.splice(0,this.outputHistory.length-b.a.MaxTerminalCapacity),l.b.emit()}print(e){this.append(new n.b(e,"primary"))}printRaw(e){this.append(new n.c(e))}error(e){this.append(new n.b(e,"error"))}success(e){this.append(new n.b(e,"success"))}info(e){this.append(new n.b(e,"info"))}warn(e){this.append(new n.b(e,"warn"))}startHack(e){const t=e.getCurrentServer();if(t instanceof r.a)this.error("Cannot hack this kind of server");else{if(!(t instanceof i.a))throw new Error("server should be normal server");this.startAction(Object(k.d)(t,e)/4,"h",t)}}startGrow(e){const t=e.getCurrentServer();if(t instanceof r.a)this.error("Cannot hack this kind of server");else{if(!(t instanceof i.a))throw new Error("server should be normal server");this.startAction(Object(k.a)(t,e)/16,"g",t)}}startWeaken(e){const t=e.getCurrentServer();if(t instanceof r.a)this.error("Cannot hack this kind of server");else{if(!(t instanceof i.a))throw new Error("server should be normal server");this.startAction(Object(k.f)(t,e)/16,"w",t)}}startBackdoor(e){const t=e.getCurrentServer();if(t instanceof r.a)this.error("Cannot backdoor this kind of server");else{if(!(t instanceof i.a))throw new Error("server should be normal server");this.startAction(Object(k.d)(t,e)/4,"b",t)}}startAnalyze(e){this.print("Analyzing system...");const t=e.getCurrentServer();this.startAction(1,"a",t)}startAction(e,t,a){this.action=new n.d(e,t,a)}finishHack(e,t,a,n=!1){if(n)return;if(a instanceof r.a)return void this.error("Cannot hack this kind of server");if(!(a instanceof i.a))throw new Error("server should be normal server");const o=Object(k.b)(a,t),s=Math.random(),l=Object(k.c)(a,t),c=l/4;if(s<o){if(a.backdoorInstalled=!0,y.a.WorldDaemon===a.hostname)return void e.toBitVerse(!1,!1);let n=Object(k.e)(a,t);n=Math.floor(a.moneyAvailable*n),n<=0&&(n=0),a.moneyAvailable-=n,t.gainMoney(n,"hacking"),t.gainHackingExp(l),t.gainIntelligenceExp(l/u.a.IntelligenceTerminalHackBaseExpGain);const r=a.hackDifficulty;a.fortify(u.a.ServerFortifyAmount);const i=a.hackDifficulty;this.print(`Hack successful on '${a.hostname}'! Gained ${v.a.formatMoney(n)} and ${v.a.formatExp(l)} hacking exp`),this.print(`Security increased on '${a.hostname}' from ${v.a.formatSecurity(r)} to ${v.a.formatSecurity(i)}`)}else t.gainHackingExp(c),this.print(`Failed to hack '${a.hostname}'. Gained ${v.a.formatExp(c)} hacking exp`)}finishGrow(e,t,a=!1){if(a)return;if(t instanceof r.a)return void this.error("Cannot hack this kind of server");if(!(t instanceof i.a))throw new Error("server should be normal server");const n=Object(k.c)(t,e),o=t.hackDifficulty,s=Object(f.e)(t,25,e,t.cpuCores)-1,l=t.hackDifficulty;e.gainHackingExp(n),this.print(`Available money on '${t.hostname}' grown by ${v.a.formatPercentage(s,6)}. Gained ${v.a.formatExp(n)} hacking exp.`),this.print(`Security increased on '${t.hostname}' from ${v.a.formatSecurity(o)} to ${v.a.formatSecurity(l)}`)}finishWeaken(e,t,a=!1){if(a)return;if(t instanceof r.a)return void this.error("Cannot hack this kind of server");if(!(t instanceof i.a))throw new Error("server should be normal server");const n=Object(k.c)(t,e),o=t.hackDifficulty;t.weaken(u.a.ServerWeakenAmount);const s=t.hackDifficulty;e.gainHackingExp(n),this.print(`Security decreased on '${t.hostname}' from ${v.a.formatSecurity(o)} to ${v.a.formatSecurity(s)} (min: ${v.a.formatSecurity(t.minDifficulty)}) and Gained ${v.a.formatExp(n)} hacking exp.`)}finishBackdoor(e,t,a,n=!1){if(!n){if(a instanceof r.a)return void this.error("Cannot hack this kind of server");if(!(a instanceof i.a))throw new Error("server should be normal server");if(a.backdoorInstalled=!0,y.a.WorldDaemon===a.hostname)return null==t.bitNodeN&&(t.bitNodeN=1),void e.toBitVerse(!1,!1);this.print(`Backdoor on '${a.hostname}' successful!`)}}finishAnalyze(e,t,a=!1){if(!a){const a=t instanceof r.a;this.print(t.hostname+": ");const n=t.organizationName;this.print("Organization name: "+(a?"player":n));const o=!a&&t.hasAdminRights||a;if(this.print("Root Access: "+(o?"YES":"NO")),this.print("Can run scripts on this host: "+(o?"YES":"NO")),t instanceof i.a){this.print("Backdoor: "+(t.backdoorInstalled?"YES":"NO"));const n=t.requiredHackingSkill;this.print("Required hacking skill for hack() and backdoor: "+(a?"N/A":n));const r=t.hackDifficulty;this.print("Server security level: "+(a?"N/A":v.a.formatServerSecurity(r)));const i=Object(k.b)(t,e);this.print("Chance to hack: "+(a?"N/A":v.a.formatPercentage(i)));const o=1e3*Object(k.d)(t,e);this.print("Time to hack: "+(a?"N/A":Object(_.b)(o,!0)))}if(this.print("Total money available on server: "+(t instanceof i.a?v.a.formatMoney(t.moneyAvailable):"N/A")),t instanceof i.a){const e=t.numOpenPortsRequired;this.print("Required number of open ports for NUKE: "+(a?"N/A":e)),this.print("SSH port: "+(t.sshPortOpen?"Open":"Closed")),this.print("FTP port: "+(t.ftpPortOpen?"Open":"Closed")),this.print("SMTP port: "+(t.smtpPortOpen?"Open":"Closed")),this.print("HTTP port: "+(t.httpPortOpen?"Open":"Closed")),this.print("SQL port: "+(t.sqlPortOpen?"Open":"Closed"))}}}finishAction(e,t,a=!1){if(null!==this.action){if(!this.action.server)throw new Error("Missing action target server");this.print(this.getProgressText()),"h"===this.action.action?this.finishHack(e,t,this.action.server,a):"g"===this.action.action?this.finishGrow(t,this.action.server,a):"w"===this.action.action?this.finishWeaken(t,this.action.server,a):"b"===this.action.action?this.finishBackdoor(e,t,this.action.server,a):"a"===this.action.action&&this.finishAnalyze(t,this.action.server,a),a&&this.print("Cancelled"),this.action=null,l.b.emit()}else if(!a)throw new Error("Finish action called when there was no action")}getFile(e,t){return Object(c.a)(t)?this.getScript(e,t):t.endsWith(".lit")?this.getLitFile(e,t):t.endsWith(".txt")?this.getTextFile(e,t):null}getFilepath(e){const t=Object(h.d)(e,this.cwd());if(null==t)throw new Error("Invalid file path specified: "+e);return Object(h.h)(t)?Object(h.k)(t):t}getScript(e,t){const a=e.getCurrentServer(),n=this.getFilepath(t);for(const e of a.scripts)if(n===e.filename)return e;return null}getTextFile(e,t){const a=e.getCurrentServer(),n=this.getFilepath(t);for(const e of a.textFiles)if(n===e.fn)return e;return null}getLitFile(e,t){const a=e.getCurrentServer(),n=this.getFilepath(t);for(const e of a.messages)if("string"==typeof e&&n===e)return e;return null}cwd(){return this.currDir}setcwd(e){this.currDir=e,l.b.emit()}async runContract(e,t){if(this.contractOpen)return this.error("There's already a Coding Contract in Progress");const a=e.getCurrentServer(),n=a.getContract(t);if(null==n)return this.error("No such contract");this.contractOpen=!0;switch(await n.prompt()){case s.b.Success:if(null!==n.reward){const t=e.gainCodingContractReward(n.reward,n.getDifficulty());this.print("Contract SUCCESS - "+t)}a.removeContract(n);break;case s.b.Failure:++n.tries,n.tries>=n.getMaxNumTries()?(this.error("Contract FAILED - Contract is now self-destructing"),a.removeContract(n)):this.error(`Contract FAILED - ${n.getMaxNumTries()-n.tries} tries remaining`);break;case s.b.Cancelled:default:this.print("Contract cancelled")}this.contractOpen=!1}executeScanAnalyzeCommand(e,t=1,a=!1){this.print("~~~~~~~~~~ Beginning scan-analyze ~~~~~~~~~~"),this.print(" ");const i={};for(const e of Object(m.c)())i[e.hostname]=0;const s=[],l=[0],c=e.getCurrentServer();for(s.push(c);0!=s.length;){const c=s.pop();if(!c)continue;const u=l.pop();if(void 0===u)continue;const m=c instanceof r.a;if(!a&&c.purchasedByPlayer&&"home"!=c.hostname)continue;if(i[c.hostname]||u>t)continue;if(!a&&m)continue;i[c.hostname]=1;for(let e=c.serversOnNetwork.length-1;e>=0;--e){const t=Object(f.a)(c,e);null!==t&&(s.push(t),l.push(u+1))}if(0==u)continue;const h=Array(4*(u-1)+1).join("-");e.hasProgram(o.a.AutoLink.name)?this.append(new n.a(h,c.hostname)):this.print(h+c.hostname);const d=h+"--";let p="NO";c.hasAdminRights&&(p="YES"),this.print(`${d}Root Access: ${p}${m?"":", Required hacking skill: "+c.requiredHackingSkill}`),c.hasOwnProperty("numOpenPortsRequired")&&this.print(d+"Number of open ports required to NUKE: "+c.numOpenPortsRequired),this.print(d+"RAM: "+v.a.formatRAM(c.maxRam)),this.print(" ")}}connectToServer(e,t){const a=Object(m.d)(t);null!=a?(e.getCurrentServer().isConnectedTo=!1,e.currentServer=a.hostname,e.getCurrentServer().isConnectedTo=!0,this.print("Connected to "+a.hostname),this.setcwd("/"),"darkweb"==e.getCurrentServer().hostname&&Object(d.c)()):this.error("Invalid server. Connection failed.")}executeCommands(e,t,a){a=(a=a.trim()).replace(/\s\s+/g," "),this.commandHistory[this.commandHistory.length-1]!=a&&(this.commandHistory.push(a),this.commandHistory.length>50&&this.commandHistory.splice(0,1)),this.commandHistoryIndex=this.commandHistory.length;const n=Object(g.b)(a);for(let a=0;a<n.length;a++)this.executeCommand(e,t,n[a])}clear(){this.outputHistory=[new n.b(`Bitburner v${u.a.VersionString} (${Object(oe.a)()})`,"primary")],l.b.emit(),l.a.emit()}prestige(){this.action=null,this.clear()}executeCommand(e,t,a){if(null!==this.action)return void this.error(`Cannot execute command (${a}) while an action is in progress`);a.startsWith("./")&&(a="run "+a.slice(2));const n=Object(g.a)(a);if(0==n.length)return;const r=t.getCurrentServer();if(p.a.isRunning){const e=Object(m.d)("n00dles");if(null==e)throw new Error("Could not get n00dles server");switch(p.a.currStep){case p.f.TerminalHelp:if(1!==n.length||"help"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalLs:if(1!==n.length||"ls"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalScan:if(1!==n.length||"scan"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalScanAnalyze1:if(1!=n.length||"scan-analyze"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalScanAnalyze2:if(2!=n.length||"scan-analyze"!=n[0]||2!==n[1])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalConnect:if(2!=n.length)return void this.error("Bad command. Please follow the tutorial");if("connect"!=n[0]||"n00dles"!=n[1]&&n[1]!=e.hostname)return void this.error("Wrong command! Try again!");Object(p.c)();break;case p.f.TerminalAnalyze:if(1!==n.length||"analyze"!==n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalNuke:if(2!=n.length||"run"!=n[0]||"NUKE.exe"!=n[1])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalManualHack:if(1!=n.length||"hack"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalHackingMechanics:if(1!==n.length||!["grow","weaken","hack"].includes(n[0]+""))return void this.error("Bad command. Please follow the tutorial");break;case p.f.TerminalGoHome:if(1!=n.length||"home"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalCreateScript:if(2!=n.length||"nano"!=n[0]||"n00dles.script"!=n[1])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalFree:if(1!=n.length||"free"!=n[0])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.TerminalRunScript:if(2!=n.length||"run"!=n[0]||"n00dles.script"!=n[1])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;case p.f.ActiveScriptsToTerminal:if(2!=n.length||"tail"!=n[0]||"n00dles.script"!=n[1])return void this.error("Bad command. Please follow the tutorial");Object(p.c)();break;default:return void this.error("Please follow the tutorial, or click 'EXIT' if you'd like to skip it")}}const i=n[0];if("number"==typeof i||"boolean"==typeof i)return void this.error(`Command ${n[0]} not found`);const o={"scan-analyze":X.a,alias:w.a,analyze:S.a,backdoor:C.a,buy:x.a,cat:O.a,cd:M.a,check:T.a,clear:()=>this.clear(),cls:()=>this.clear(),connect:R.a,cp:A.a,download:N.a,expr:P.a,free:I.a,grow:F.a,hack:D.a,help:j.a,home:B.a,hostname:G.a,kill:L.a,killall:W.a,ls:H.a,lscpu:U.a,mem:q.a,mv:K.a,nano:z.a,ps:$.a,rm:V.a,run:Y.a,scan:J.a,scp:Q.a,sudov:Z.a,tail:ee.a,top:te.a,unalias:ae.a,vim:ne.a,weaken:re.a,wget:ie.a}[i.toLowerCase()];o?o(this,e,t,r,n.slice(1)):this.error(`Command ${n[0]} not found`)}getProgressText(){if(null===this.action)throw new Error("trying to get the progress text when there's no action");return Object(E.a)({progress:(this.action.time-this.action.timeLeft)/this.action.time,totalTicks:50})}}},,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(32);function r(e){let t=e;return t.startsWith("[")&&(t=t.slice(1)),t.endsWith("]")&&(t=t.slice(0,-1)),t}function i(e){let t=e;return(t.startsWith('"')||t.startsWith("'"))&&(t=t.slice(1)),(t.endsWith('"')||t.endsWith("'"))&&(t=t.slice(0,-1)),t}function o(e){const t=[];return e.forEach(e=>{let a=e.toString();a=["[",a,"]"].join(""),t.push(a)}),t.join(",").replace(/\s/g,"")}const s=[{desc:e=>["A prime factor is a factor that is a prime number.",`What is the largest prime factor of ${e}?`].join(" "),difficulty:1,gen:()=>Object(n.a)(500,1e9),name:"Find Largest Prime Factor",numTries:10,solver:(e,t)=>{let a=2,n=e;for(;n>(a-1)*(a-1);){for(;n%a==0;)n=Math.round(n/a);++a}return(1===n?a-1:n)===parseInt(t,10)}},{desc:e=>["Given the following integer array, find the contiguous subarray","(containing at least one number) which has the largest sum and return that sum.","'Sum' refers to the sum of all the numbers in the subarray.\n",""+e.toString()].join(" "),difficulty:1,gen:()=>{const e=Object(n.a)(5,40),t=[];t.length=e;for(let a=0;a<e;++a)t[a]=Object(n.a)(-10,10);return t},name:"Subarray with Maximum Sum",numTries:10,solver:(e,t)=>{const a=e.slice();for(let e=1;e<a.length;e++)a[e]=Math.max(a[e],a[e]+a[e-1]);return parseInt(t,10)===Math.max(...a)}},{desc:e=>["It is possible write four as a sum in exactly four different ways:\n\n"," 3 + 1\n"," 2 + 2\n"," 2 + 1 + 1\n"," 1 + 1 + 1 + 1\n\n",`How many different ways can the number ${e} be written as a sum of at least`,"two positive integers?"].join(" "),difficulty:1.5,gen:()=>Object(n.a)(8,100),name:"Total Ways to Sum",numTries:10,solver:(e,t)=>{const a=[1];a.length=e+1,a.fill(0,1);for(let t=1;t<e;++t)for(let n=t;n<=e;++n)a[n]+=a[n-t];return a[e]===parseInt(t,10)}},{desc:e=>{let t=["Given the following array of arrays of numbers representing a 2D matrix,","return the elements of the matrix as an array in spiral order:\n\n"].join(" ");return t+=" [\n",t+=e.map(e=>" ["+e.map(e=>(""+e).padStart(2," ")).join(",")+"]").join("\n"),t+="\n ]\n",t+=["\nHere is an example of what spiral order should be:\n\n"," [\n"," [1, 2, 3]\n"," [4, 5, 6]\n"," [7, 8, 9]\n"," ]\n\n","Answer: [1, 2, 3, 6, 9, 8 ,7, 4, 5]\n\n","Note that the matrix will not always be square:\n\n"," [\n"," [1, 2, 3, 4]\n"," [5, 6, 7, 8]\n"," [9, 10, 11, 12]\n"," ]\n\n","Answer: [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7]"].join(" "),t},difficulty:2,gen:()=>{const e=Object(n.a)(1,15),t=Object(n.a)(1,15),a=[];a.length=e;for(let n=0;n<e;++n)a[n]=[],a[n].length=t;for(let r=0;r<e;++r)for(let e=0;e<t;++e)a[r][e]=Object(n.a)(1,50);return a},name:"Spiralize Matrix",numTries:10,solver:(e,t)=>{const a=[];let n=0,i=e.length-1,o=0,s=e[0].length-1,l=0;for(;;){for(let t=o;t<=s;t++)a[l]=e[n][t],++l;if(++n>i)break;for(let t=n;t<=i;t++)a[l]=e[t][s],++l;if(--s<o)break;for(let t=s;t>=o;t--)a[l]=e[i][t],++l;if(--i<n)break;for(let t=i;t>=n;t--)a[l]=e[t][o],++l;if(++o>s)break}const c=r(t).replace(/\s/g,"").split(",");for(let e=0;e<c.length;++e)c[e]=parseInt(c[e],10);if(a.length!==c.length)return!1;for(let e=0;e<a.length;++e)if(a[e]!==c[e])return!1;return!0}},{desc:e=>["You are given the following array of integers:\n\n",e+"\n\n","Each element in the array represents your MAXIMUM jump length","at that position. This means that if you are at position i and your","maximum jump length is n, you can jump to any position from","i to i+n.","\n\nAssuming you are initially positioned","at the start of the array, determine whether you are","able to reach the last index.\n\n","Your answer should be submitted as 1 or 0, representing true and false respectively"].join(" "),difficulty:2.5,gen:()=>{const e=Object(n.a)(3,25),t=[];t.length=e;for(let e=0;e<t.length;++e)Math.random()<.2?t[e]=0:t[e]=Object(n.a)(0,10);return t},name:"Array Jumping Game",numTries:1,solver:(e,t)=>{const a=e.length;let n=0;for(let t=0;n<a&&n<=t;++n)t=Math.max(n+e[n],t);const r=n===a;return!("1"!==t||!r)||"0"===t&&!r}},{desc:e=>["Given the following array of array of numbers representing a list of","intervals, merge all overlapping intervals.\n\n",`[${o(e)}]\n\n`,"Example:\n\n","[[1, 3], [8, 10], [2, 6], [10, 16]]\n\n","would merge into [[1, 6], [8, 16]].\n\n","The intervals must be returned in ASCENDING order.","You can assume that in an interval, the first number will always be","smaller than the second."].join(" "),difficulty:3,gen:()=>{const e=[],t=Object(n.a)(3,20);for(let a=0;a<t;++a){const t=Object(n.a)(1,25),a=t+Object(n.a)(1,10);e.push([t,a])}return e},name:"Merge Overlapping Intervals",numTries:15,solver:(e,t)=>{const a=e.slice();a.sort((e,t)=>e[0]-t[0]);const n=[];let i=a[0][0],s=a[0][1];for(const e of a)e[0]<=s?s=Math.max(s,e[1]):(n.push([i,s]),i=e[0],s=e[1]);n.push([i,s]);const l=o(n),c=t.replace(/\s/g,"");return l===c||l===r(c)}},{desc:e=>["Given the following string containing only digits, return","an array with all possible valid IP address combinations","that can be created from the string:\n\n",e+"\n\n","Note that an octet cannot begin with a '0' unless the number","itself is actually 0. For example, '192.168.010.1' is not a valid IP.\n\n","Examples:\n\n","25525511135 -> [255.255.11.135, 255.255.111.35]\n","1938718066 -> [193.87.180.66]"].join(" "),difficulty:3,gen:()=>{let e="";for(let t=0;t<4;++t){e+=Object(n.a)(0,255).toString()}return e},name:"Generate IP Addresses",numTries:10,solver:(e,t)=>{const a=[];for(let t=1;t<=3;++t)for(let n=1;n<=3;++n)for(let r=1;r<=3;++r)for(let i=1;i<=3;++i)if(t+n+r+i===e.length){const o=parseInt(e.substring(0,t),10),s=parseInt(e.substring(t,t+n),10),l=parseInt(e.substring(t+n,t+n+r),10),c=parseInt(e.substring(t+n+r,t+n+r+i),10);if(o<=255&&s<=255&&l<=255&&c<=255){const t=[o.toString(),".",s.toString(),".",l.toString(),".",c.toString()].join("");t.length===e.length+3&&a.push(t)}}const n=r(t).replace(/\s/g,"").split(",");if(n.length!==a.length)return!1;for(const e of n)if(!a.includes(e))return!1;return!0}},{desc:e=>["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",e+"\n\n","Determine the maximum possible profit you can earn using at most","one transaction (i.e. you can only buy and sell the stock once). If no profit can be made","then the answer should be 0. Note","that you have to buy the stock before you can sell it"].join(" "),difficulty:1,gen:()=>{const e=Object(n.a)(3,50),t=[];t.length=e;for(let a=0;a<e;++a)t[a]=Object(n.a)(1,200);return t},name:"Algorithmic Stock Trader I",numTries:5,solver:(e,t)=>{let a=0,n=0;for(let t=1;t<e.length;++t)a=Math.max(0,a+=e[t]-e[t-1]),n=Math.max(a,n);return n.toString()===t}},{desc:e=>["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",e+"\n\n","Determine the maximum possible profit you can earn using as many","transactions as you'd like. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:2,gen:()=>{const e=Object(n.a)(3,50),t=[];t.length=e;for(let a=0;a<e;++a)t[a]=Object(n.a)(1,200);return t},name:"Algorithmic Stock Trader II",numTries:10,solver:(e,t)=>{let a=0;for(let t=1;t<e.length;++t)a+=Math.max(e[t]-e[t-1],0);return a.toString()===t}},{desc:e=>["You are given the following array of stock prices (which are numbers)","where the i-th element represents the stock price on day i:\n\n",e+"\n\n","Determine the maximum possible profit you can earn using at most","two transactions. A transaction is defined as buying","and then selling one share of the stock. Note that you cannot","engage in multiple transactions at once. In other words, you","must sell the stock before you buy it again.\n\n","If no profit can be made, then the answer should be 0"].join(" "),difficulty:5,gen:()=>{const e=Object(n.a)(3,50),t=[];t.length=e;for(let a=0;a<e;++a)t[a]=Object(n.a)(1,200);return t},name:"Algorithmic Stock Trader III",numTries:10,solver:(e,t)=>{let a=Number.MIN_SAFE_INTEGER,n=Number.MIN_SAFE_INTEGER,r=0,i=0;for(const t of e)i=Math.max(i,n+t),n=Math.max(n,r-t),r=Math.max(r,a+t),a=Math.max(a,-1*t);return i.toString()===t}},{desc:e=>["You are given the following array with two elements:\n\n",`[${e[0]}, [${e[1]}]]\n\n`,"The first element is an integer k. The second element is an","array of stock prices (which are numbers) where the i-th element","represents the stock price on day i.\n\n","Determine the maximum possible profit you can earn using at most","k transactions. A transaction is defined as buying and then selling","one share of the stock. Note that you cannot engage in multiple","transactions at once. In other words, you must sell the stock before","you can buy it again.\n\n","If no profit can be made, then the answer should be 0."].join(" "),difficulty:8,gen:()=>{const e=Object(n.a)(2,10),t=Object(n.a)(3,50),a=[];a.length=t;for(let e=0;e<t;++e)a[e]=Object(n.a)(1,200);return[e,a]},name:"Algorithmic Stock Trader IV",numTries:10,solver:(e,t)=>{const a=e[0],n=e[1],r=n.length;if(r<2)return 0===parseInt(t);if(a>r/2){let e=0;for(let t=1;t<r;++t)e+=Math.max(n[t]-n[t-1],0);return parseInt(t)===e}const i=[],o=[];i.length=a+1,o.length=a+1;for(let e=0;e<=a;++e)i[e]=Number.MIN_SAFE_INTEGER,o[e]=0;let s;for(let e=0;e<r;++e){s=n[e];for(let e=a;e>0;--e)o[e]=Math.max(o[e],i[e]+s),i[e]=Math.max(i[e],o[e-1]-s)}return parseInt(t)===o[a]}},{desc:e=>{function t(e,a=0){const n=e.length;if(a>=n)return"";let r=[" ".repeat(n-a+1),"[",e[a].toString(),"]"].join("");return a<n-1&&(r+=","),r+"\n"+t(e,a+1)}return["Given a triangle, find the minimum path sum from top to bottom. In each step","of the path, you may only move to adjacent numbers in the row below.","The triangle is represented as a 2D array of numbers:\n\n",function(e){return["[\n",t(e),"]"].join("")}(e)+"\n\n","Example: If you are given the following triangle:\n\n[\n"," [2],\n"," [3,4],\n"," [6,5,7],\n"," [4,1,8,3]\n","]\n\n","The minimum path sum is 11 (2 -> 3 -> 5 -> 1)."].join(" ")},difficulty:5,gen:()=>{const e=[],t=Object(n.a)(3,12);e.length=t;for(let a=0;a<t;++a){e[a]=[],e[a].length=a+1;for(let t=0;t<e[a].length;++t)e[a][t]=Object(n.a)(1,9)}return e},name:"Minimum Path Sum in a Triangle",numTries:10,solver:(e,t)=>{const a=e.length,n=e[a-1].slice();for(let t=a-2;t>-1;--t)for(let a=0;a<e[t].length;++a)n[a]=Math.min(n[a],n[a+1])+e[t][a];return n[0]===parseInt(t)}},{desc:e=>{const t=e[0],a=e[1];return["You are in a grid with",`${t} rows and ${a} columns, and you are`,"positioned in the top-left corner of that grid. You are trying to","reach the bottom-right corner of the grid, but you can only","move down or right on each step. Determine how many","unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an array","with the number of rows and columns:\n\n",`[${t}, ${a}]`].join(" ")},difficulty:3,gen:()=>[Object(n.a)(2,14),Object(n.a)(2,14)],name:"Unique Paths in a Grid I",numTries:10,solver:(e,t)=>{const a=e[0],n=e[1],r=[];r.length=a;for(let e=0;e<a;e++)r[e]=1;for(let e=1;e<n;e++)for(let e=1;e<a;e++)r[e]+=r[e-1];return parseInt(t)===r[a-1]}},{desc:e=>{let t="";for(const a of e)t+=a.toString()+",\n";return["You are located in the top-left corner of the following grid:\n\n",t+"\n","You are trying reach the bottom-right corner of the grid, but you can only","move down or right on each step. Furthermore, there are obstacles on the grid","that you cannot move onto. These obstacles are denoted by '1', while empty","spaces are denoted by 0.\n\n","Determine how many unique paths there are from start to finish.\n\n","NOTE: The data returned for this contract is an 2D array of numbers representing the grid."].join(" ")},difficulty:5,gen:()=>{const e=Object(n.a)(2,12),t=Object(n.a)(2,12),a=[];a.length=e;for(let n=0;n<e;++n)a[n]=[],a[n].length=t,a[n].fill(0);for(let n=0;n<e;++n)for(let r=0;r<t;++r)0===n&&0===r||n===e-1&&r===t-1||Math.random()<.15&&(a[n][r]=1);return a},name:"Unique Paths in a Grid II",numTries:10,solver:(e,t)=>{const a=[];a.length=e.length;for(let t=0;t<a.length;++t)a[t]=e[t].slice();for(let e=0;e<a.length;e++)for(let t=0;t<a[0].length;t++)1==a[e][t]?a[e][t]=0:0==e&&0==t?a[0][0]=1:a[e][t]=(e>0?a[e-1][t]:0)+(t>0?a[e][t-1]:0);return a[a.length-1][a[0].length-1]===parseInt(t)}},{desc:e=>["Given the following string:\n\n",e+"\n\n","remove the minimum number of invalid parentheses in order to validate","the string. If there are multiple minimal ways to validate the string,","provide all of the possible results. The answer should be provided","as an array of strings. If it is impossible to validate the string","the result should be an array with only an empty string.\n\n","IMPORTANT: The string may contain letters, not just parentheses.","Examples:\n",'"()())()" -> [()()(), (())()]\n','"(a)())()" -> [(a)()(), (a())()]\n','")( -> [""]'].join(" "),difficulty:10,gen:()=>{const e=Object(n.a)(6,20),t=[];t.length=e,Math.random()<.8?t[0]="(":t[0]=")";for(let a=1;a<e;++a){const e=Math.random();t[a]=e<.4?"(":e<.8?")":"a"}return t.join("")},name:"Sanitize Parentheses in Expression",numTries:10,solver:(e,t)=>{let a=0,n=0;const i=[];for(let t=0;t<e.length;++t)"("===e[t]?++a:")"===e[t]&&(a>0?--a:++n);!function e(t,a,n,r,i,o,s){if(i.length!==a)"("===i[a]?(n>0&&e(t,a+1,n-1,r,i,o,s),e(t+1,a+1,n,r,i,o+i[a],s)):")"===i[a]?(r>0&&e(t,a+1,n,r-1,i,o,s),t>0&&e(t-1,a+1,n,r,i,o+i[a],s)):e(t,a+1,n,r,i,o+i[a],s);else if(0===n&&0===r&&0===t){for(let e=0;e<s.length;e++)if(s[e]===o)return;s.push(o)}}(0,0,a,n,e,"",i);const o=r(t).replace(/\s/g,"").split(",");if(o.length!==i.length)return!1;for(const e of i)if(!o.includes(e))return!1;return!0}},{desc:e=>{const t=e[0],a=e[1];return["You are given the following string which contains only digits between 0 and 9:\n\n",t+"\n\n",`You are also given a target number of ${a}. Return all possible ways`,"you can add the +, -, and * operators to the string such that it evaluates","to the target number.\n\n","The provided answer should be an array of strings containing the valid expressions.","The data provided by this problem is an array with two elements. The first element","is the string of digits, while the second element is the target number:\n\n",`["${t}", ${a}]\n\n`,"NOTE: Numbers in the expression cannot have leading 0's. In other words,",'"1+01" is not a valid expression',"Examples:\n\n",'Input: digits = "123", target = 6\n',"Output: [1+2+3, 1*2*3]\n\n",'Input: digits = "105", target = 5\n',"Output: [1*0+5, 10-5]"].join(" ")},difficulty:10,gen:()=>{const e=Object(n.a)(4,12),t=[];t.length=e;for(let e=0;e<t.length;++e)t[e]=String(0===e?Object(n.a)(1,9):Object(n.a)(0,9));const a=Object(n.a)(-100,100);return[t.join(""),a]},name:"Find All Valid Math Expressions",numTries:10,solver:(e,t)=>{const a=e[0],n=e[1];const o=r(t).split(",");for(let e=0;e<o.length;++e)o[e]=i(o[e]).replace(/\s/g,"");if(null==a||0===a.length)return 0===o.length||1===o.length&&""===o[0];const s=[];!function e(t,a,n,r,i,o,s){if(i!==n.length)for(let l=i;l<n.length&&(l==i||"0"!=n[i]);++l){const c=parseInt(n.substring(i,l+1));0===i?e(t,a+c,n,r,l+1,c,c):(e(t,a+"+"+c,n,r,l+1,o+c,c),e(t,a+"-"+c,n,r,l+1,o-c,-c),e(t,a+"*"+c,n,r,l+1,o-s+s*c,s*c))}else r===o&&t.push(a)}(s,"",a,n,0,0,0);for(const e of s)if(!o.includes(e))return!1;return!0}}]},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function r(e){let t="";for(let a=0;a<e;++a)t+=n.charAt(Math.floor(Math.random()*n.length));return t}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t,a){var n,r,i;i="",(r="name")in(n=this)?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,this.name=e,this.create=t,this.run=a}htmlID(){return"create-program-"+(this.name.endsWith(".exe")?this.name.slice(0,-".exe".length):this.name)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(8),r=a(44),i=a(22),o=a(24),s=a(4),l=a(5),c=a(528),u=a(94);function m(e){return function(t){return t.hacking+t.intelligence/2>=e}}const h=[{key:"NukeProgram",name:"NUKE.exe",create:{level:1,tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",req:m(1),time:n.a.MillisecondsPerFiveMinutes},run:(e,t,a,n)=>{if(n instanceof r.a)return n.hasAdminRights?(t.print("You already have root access to this computer. There is no reason to run NUKE.exe"),void t.print("You can now run scripts on this server.")):n.openPortCount>=n.numOpenPortsRequired?(n.hasAdminRights=!0,t.print("NUKE successful! Gained root access to "+n.hostname),void t.print("You can now run scripts on this server.")):void t.print("NUKE unsuccessful. Not enough ports have been opened");t.error("Cannot nuke this kind of server.")}},{key:"BruteSSHProgram",name:"BruteSSH.exe",create:{level:50,tooltip:"This program executes a brute force attack that opens SSH ports",req:m(50),time:2*n.a.MillisecondsPerFiveMinutes},run:(e,t,a,n)=>{n instanceof r.a?n.sshPortOpen?t.print("SSH Port (22) is already open!"):(n.sshPortOpen=!0,t.print("Opened SSH Port(22)!"),n.openPortCount++):t.error("Cannot run BruteSSH.exe on this kind of server.")}},{key:"FTPCrackProgram",name:"FTPCrack.exe",create:{level:100,tooltip:"This program cracks open FTP ports",req:m(100),time:n.a.MillisecondsPerHalfHour},run:(e,t,a,n)=>{n instanceof r.a?n.ftpPortOpen?t.print("FTP Port (21) is already open!"):(n.ftpPortOpen=!0,t.print("Opened FTP Port (21)!"),n.openPortCount++):t.error("Cannot run FTPCrack.exe on this kind of server.")}},{key:"RelaySMTPProgram",name:"relaySMTP.exe",create:{level:250,tooltip:"This program opens SMTP ports by redirecting data",req:m(250),time:n.a.MillisecondsPer2Hours},run:(e,t,a,n)=>{n instanceof r.a?n.smtpPortOpen?t.print("SMTP Port (25) is already open!"):(n.smtpPortOpen=!0,t.print("Opened SMTP Port (25)!"),n.openPortCount++):t.error("Cannot run relaySMTP.exe on this kind of server.")}},{key:"HTTPWormProgram",name:"HTTPWorm.exe",create:{level:500,tooltip:"This virus opens up HTTP ports",req:m(500),time:n.a.MillisecondsPer4Hours},run:(e,t,a,n)=>{n instanceof r.a?n.httpPortOpen?t.print("HTTP Port (80) is already open!"):(n.httpPortOpen=!0,t.print("Opened HTTP Port (80)!"),n.openPortCount++):t.error("Cannot run HTTPWorm.exe on this kind of server.")}},{key:"SQLInjectProgram",name:"SQLInject.exe",create:{level:750,tooltip:"This virus opens SQL ports",req:m(750),time:n.a.MillisecondsPer8Hours},run:(e,t,a,n)=>{n instanceof r.a?n.sqlPortOpen?t.print("SQL Port (1433) is already open!"):(n.sqlPortOpen=!0,t.print("Opened SQL Port (1433)!"),n.openPortCount++):t.error("Cannot run SQLInject.exe on this kind of server.")}},{key:"DeepscanV1",name:"DeepscanV1.exe",create:{level:75,tooltip:"This program allows you to use the scan-analyze command with a depth up to 5",req:m(75),time:n.a.MillisecondsPerQuarterHour},run:(e,t)=>{t.print("This executable cannot be run."),t.print("DeepscanV1.exe lets you run 'scan-analyze' with a depth up to 5.")}},{key:"DeepscanV2",name:"DeepscanV2.exe",create:{level:400,tooltip:"This program allows you to use the scan-analyze command with a depth up to 10",req:m(400),time:n.a.MillisecondsPer2Hours},run:(e,t)=>{t.print("This executable cannot be run."),t.print("DeepscanV2.exe lets you run 'scan-analyze' with a depth up to 10.")}},{key:"ServerProfiler",name:"ServerProfiler.exe",create:{level:75,tooltip:"This program is used to display hacking and Netscript-related information about servers",req:m(75),time:n.a.MillisecondsPerHalfHour},run:(e,t,a,n,s)=>{if(1!==s.length)return void t.error("Must pass a server hostname or IP as an argument for ServerProfiler.exe");const l=Object(o.d)(s[0]);null!=l?l instanceof r.a?(t.print(l.hostname+":"),t.print("Server base security level: "+l.baseDifficulty),t.print("Server current security level: "+l.hackDifficulty),t.print("Server growth rate: "+l.serverGrowth),t.print("Netscript hack() execution time: "+Object(i.b)(1e3*Object(u.d)(l,a),!0)),t.print("Netscript grow() execution time: "+Object(i.b)(1e3*Object(u.a)(l,a),!0)),t.print("Netscript weaken() execution time: "+Object(i.b)(1e3*Object(u.f)(l,a),!0))):t.error("ServerProfiler.exe can only be run on normal servers."):t.error("Invalid server IP/hostname")}},{key:"AutoLink",name:"AutoLink.exe",create:{level:25,tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command",req:m(25),time:n.a.MillisecondsPerQuarterHour},run:(e,t)=>{t.print("This executable cannot be run."),t.print("AutoLink.exe lets you automatically connect to other servers when using 'scan-analyze'."),t.print("When using scan-analyze, click on a server's hostname to connect to it.")}},{key:"Formulas",name:"Formulas.exe",create:{level:1e3,tooltip:"This program allows you to use the formulas API",req:m(1e3),time:n.a.MillisecondsPer4Hours},run:(e,t)=>{t.print("This executable cannot be run."),t.print("Formulas.exe lets you use the formulas API.")}},{key:"BitFlume",name:"b1t_flum3.exe",create:{level:1,tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)",req:function(e){return e.sourceFiles.length>0&&e.hacking>=1},time:n.a.MillisecondsPerFiveMinutes/20},run:()=>{c.a.emit()}},{key:"Flight",name:"fl1ght.exe",create:null,run:(e,t,a)=>{const n=Math.round(30*l.a.DaedalusAugsRequirement);if(!(a.augmentations.length>=n&&a.money>1e11&&a.hacking>=2500))return t.print(`Augmentations: ${a.augmentations.length} / ${n}`),t.print(`Money: ${s.a.formatMoney(a.money)} / $100b`),void t.print(`Hacking skill: ${a.hacking} / 2500`);t.print("We will contact you."),t.print("-- Daedalus --")}}]},function(e,t,a){"use strict";function n(e){const t="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";return new RegExp(`^${t}.${t}.${t}.${t}$`).test(e)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(812),r=a(586),i=a(589),o=a(393),s=a(43),l=a(401),c=a(9),u=a(344),m=a(23),h=a(353),d=a(21);class p{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=m.a.Sector12,this.location=c.a.TravelAgency,this.jobs={},this.companyName="",this.currentServer="",this.purchasedServers=[],this.hacknetNodes=[],this.hashManager=new u.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.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.resleeves=[],this.sleevesFromCovenant=0,this.bitNodeN=1,this.lastUpdate=0,this.totalPlaytime=0,this.playtimeSinceLastAug=0,this.playtimeSinceLastBitnode=0,this.moneySourceA=new h.a,this.moneySourceB=new h.a,this.scriptProdSinceLastAug=0,this.exploits=[],this.achievements=[],this.init=s.eb,this.prestigeAugmentation=s.hb,this.prestigeSourceFile=s.ib,this.receiveInvite=s.qb,this.calculateSkill=s.o,this.calculateSkillProgress=s.p,this.updateSkillLevels=s.Ob,this.resetMultipliers=s.tb,this.hasProgram=s.cb,this.setMoney=s.wb,this.gainMoney=s.K,this.loseMoney=s.gb,this.canAfford=s.s,this.recordMoneySource=s.rb,this.gainHackingExp=s.I,this.gainStrengthExp=s.L,this.gainDefenseExp=s.G,this.gainDexterityExp=s.H,this.gainAgilityExp=s.D,this.gainCharismaExp=s.E,this.gainIntelligenceExp=s.J,this.queryStatFromString=s.lb,this.resetWorkStatus=s.ub,this.processWorkEarnings=s.kb,this.startWork=s.Ib,this.cancelationPenalty=s.t,this.work=s.Pb,this.finishWork=s.B,this.startWorkPartTime=s.Jb,this.workPartTime=s.Rb,this.finishWorkPartTime=s.C,this.startFocusing=s.Hb,this.stopFocusing=s.Kb,this.startFactionWork=s.Gb,this.startFactionHackWork=s.Eb,this.startFactionFieldWork=s.Db,this.startFactionSecurityWork=s.Fb,this.workForFaction=s.Qb,this.finishFactionWork=s.A,this.getWorkMoneyGain=s.V,this.getWorkHackExpGain=s.U,this.getWorkStrExpGain=s.X,this.getWorkDefExpGain=s.S,this.getWorkDexExpGain=s.T,this.getWorkAgiExpGain=s.Q,this.getWorkChaExpGain=s.R,this.getWorkRepGain=s.W,this.process=s.jb,this.startCreateProgramWork=s.Bb,this.createProgramWork=s.w,this.finishCreateProgramWork=s.y,this.startClass=s.Ab,this.takeClass=s.Lb,this.finishClass=s.x,this.startCrime=s.Cb,this.commitCrime=s.v,this.finishCrime=s.z,this.singularityStopWork=s.yb,this.takeDamage=s.Mb,this.regenerateHp=s.sb,this.hospitalize=s.db,this.applyForJob=s.f,this.getNextCompanyPosition=s.P,this.quitJob=s.nb,this.hasJob=s.bb,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.fb,this.reapplyAllAugmentations=s.ob,this.reapplyAllSourceFiles=s.pb,this.checkForFactionInvitations=s.u,this.setBitNodeNumber=s.vb,this.queueAugmentation=s.mb,this.gainCodingContractReward=s.F,this.travel=s.Nb,this.gotoLocation=s.ab,this.canAccessResleeving=s.r,this.giveExploit=s.Z,this.giveAchievement=s.Y,this.getIntelligenceBonus=s.N,this.getCasinoWinnings=s.M,this.hasAugmentation=n.a,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.O,this.setMult=s.xb,this.canAccessCotMG=s.q,this.sourceFileLvl=s.zb}toJSON(){return Object(d.b)("PlayerObject",this)}static fromJSON(e){return Object(d.a)(p,e.data)}}d.c.constructors.PlayerObject=p},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(35);function r(e,t=!1){const a=e instanceof n.a?e.name:e;for(const e of this.augmentations)if(e.name===a)return!0;if(!t)for(const e of this.queuedAugmentations)if(e.name===a)return!0;return!1}},function(e,t,a){"use strict";function n(){const e=new Date,t=("0"+e.getHours()).slice(-2),a=("0"+e.getMinutes()).slice(-2),n=("0"+e.getSeconds()).slice(-2);return`${e.getMonth()+1}/${e.getDate()} ${t}:${a}:${n}`}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(21);const r=["START","PURCHASE","PRODUCTION","SALE","EXPORT"];class i{constructor(){var e,t,a;a=0,(t="state")in(e=this)?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}getState(){return r[this.state]}nextState(){(this.state<0||this.state>=r.length)&&(this.state=0),++this.state,this.state>=r.length&&(this.state=0)}toJSON(){return Object(n.b)("CorporationState",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.CorporationState=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(149),r=a(60);const i={};!function(){let e,t,a;e="The Beginner's Guide to Hacking",t=r.a.HackersStartingHandbook,a="Some resources:<br><br><a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/netscript/netscriptlearntoprogram.html' target='_blank' style='margin:4px'>Learn to Program</a><br><br><a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html' target='_blank' style='margin:4px'>For Experienced JavaScript Developers: NetscriptJS</a><br><br><a class='a-link-button' href='https://bitburner.readthedocs.io/en/latest/netscript.html' target='_blank' style='margin:4px'>Netscript Documentation</a><br><br>When starting out, hacking is the most profitable way to earn money and progress. This is a brief collection of tips/pointers on how to make the most out of your hacking scripts.<br><br>-hack() and grow() both work by percentages. hack() steals a certain percentage of the money on a server, and grow() increases the amount of money on a server by some percentage (multiplicatively)<br><br>-Because hack() and grow() work by percentages, they are more effective if the target server has a high amount of money. Therefore, you should try to increase the amount of money on a server (using grow()) to a certain amount before hacking it. Two import Netscript functions for this are getServerMoneyAvailable() and getServerMaxMoney()<br><br>-Keep security level low. Security level affects everything when hacking. Two important Netscript functions for this are getServerSecurityLevel() and getServerMinSecurityLevel()<br><br>-Purchase additional servers by visiting 'Alpha Enterprises' in the city. They are relatively cheap and give you valuable RAM to run more scripts early in the game<br><br>-Prioritize upgrading the RAM on your home computer. This can also be done at 'Alpha Enterprises'<br><br>-Many low level servers have free RAM. You can use this RAM to run your scripts. Use the scp Terminal or Netscript command to copy your scripts onto these servers and then run them.",i[t]=new n.a(e,t,a),e="The Complete Handbook for Creating a Successful Corporation",t=r.a.CorporationManagementHandbook,a="<u>Getting Started with Corporations</u><br>To get started, visit the City Hall in Sector-12 in order to create a Corporation. This requires $150b of your own money, but this $150b will get put into your Corporation's funds. Your Corporation can have many different divisions, each in a different Industry. There are many different types of Industries, each with different properties. To create your first division, click the 'Expand into new Industry' button at the top of the management UI. The Agriculture and Software industries are recommended for your first division.<br><br>The first thing you'll need to do is hire some employees. Employees can be assigned to five different positions. Each position has a different effect on various aspects of your Corporation. It is recommended to have at least one employee at each position.<br><br>Each industry uses some combination of Materials in order to produce other Materials and/or create Products. Specific information about this is displayed in each of your divisions' UI.<br><br>Products are special, industry-specific objects. They are different than Materials because you must manually choose to develop them, and you can choose to develop any number of Products. Developing a Product takes time, but a Product typically generates significantly more revenue than any Material. Not all industries allow you to create Products. To create a Product, look for a button in the top-left panel of the division UI (e.g. For the Software Industry, the button says 'Develop Software').<br><br>To get your supply chain system started, purchase the Materials that your industry needs to produce other Materials/Products. This can be done by clicking the 'Buy' button next to the corresponding Material(s). After you have the required Materials, you will immediately start production. The amount of Materials/Products you produce is based on a variety of factors, one of which is your employees and their productivity.<br><br>Once you start producing Materials/Products, you can sell them in order to start earning revenue. This can be done by clicking the 'Sell' button next to the corresponding Material or Product. The amount of Material/Product you sell is dependent on a wide variety of different factors.<br><br>These are the basics of getting your Corporation up and running! Now, you can start purchasing upgrades to improve your bottom line. If you need money, consider looking for seed investors, who will give you money in exchange for stock shares. Otherwise, once you feel you are ready, take your Corporation public! Once your Corporation goes public, you can no longer find investors. Instead, your Corporation will be publicly traded and its stock price will change based on how well it's performing financially. You can then sell your stock shares in order to make money.<br><br><u>Tips/Pointers</u><br>-The 'Smart Supply' upgrade is extremely useful. Consider purchasing it as soon as possible.<br><br>-Purchasing Hardware, Robots, AI Cores, and Real Estate can potentially increase your production. The effects of these depend on what industry you are in.<br><br>-In order to optimize your production, you will need a good balance of Operators, Managers, and Engineers<br><br>-Different employees excel in different jobs. For example, the highly intelligent employees will probably do best if they are assigned to do Engineering work or Research & Development.<br><br>-If your employees have low morale, energy, or happiness, their production will greatly suffer.<br><br>-Tech is important, but don't neglect sales! Having several Businessmen can boost your sales and your bottom line.<br><br>-Don't forget to advertise your company. You won't have any business if nobody knows you.<br><br>-Having company awareness is great, but what's really important is your company's popularity. Try to keep your popularity as high as possible to see the biggest benefit for your sales<br><br>-Remember, you need to spend money to make money!<br><br>-Corporations do not reset when installing Augmentations, but they do reset when destroying a BitNode",i[t]=new n.a(e,t,a),e="A Brief History of Synthoids",t=r.a.HistoryOfSynthoids,a="Synthetic androids, or Synthoids for short, are genetically engineered robots and, short of Augmentations, are composed entirely of organic substances. For this reason, Synthoids are virtually identical to humans in form, composition, and appearance.<br><br>Synthoids were first designed and manufactured by OmniTek Incorporated sometime around the middle of the century. Their original purpose was to be used for manual labor and as emergency responders for disasters. As such, they were initially programmed only for their specific tasks. Each iteration that followed improved upon the intelligence and capabilities of the Synthoids. By the 6th iteration, called MK-VI, the Synthoids were so smart and capable enough of making their own decisions that many argued OmniTek had created the first sentient AI. These MK-VI Synthoids were produced in mass quantities (estimates up to 50 billion) with the hopes of increasing society's productivity and bolstering the global economy. Stemming from humanity's desire for technological advancement, optimism and excitement about the future had never been higher.<br><br>All of that excitement and optimism quickly turned to fear, panic, and dread in 2070, when a terrorist group called Ascendis Totalis hacked into OmniTek and uploaded a rogue AI into severeal of their Synthoid manufacturing facilities. This hack went undetected and for months OmniTek unknowingly churned out legions of Synthoids embedded with this rogue AI. Then, on December 24th, 2070, Omnica activated dormant protocols in the rogue AI, causing all of the infected Synthoids to immediately launch a military campaign to seek and destroy all of humanity.<br><br>What ensued was the deadlist conflict in human history. This crisis, now commonly known as the Synthoid Uprising, resulted in almost ten billion deaths over the course of a year. Despite the nations of the world banding together to combat the threat, the MK-VI Synthoids were simply stronger, faster, more intelligent, and more adaptable than humans, outsmarting them at every turn.<br><br>It wasn't until the sacrifice of an elite international military taskforce, called the Bladeburners, that humanity was finally able to defeat the Synthoids. The Bladeburners' final act was a suicide bombing mission that destroyed a large portion of the MK-VI Synthoids, including many of its leaders. In the following weeks militaries from around the world were able to round up and shut down the remaining rogue MK-VI Synthoids, ending the Synthoid Uprising.<br><br>In the aftermath of the bloodshed, the Synthoid Accords were drawn up. These Accords banned OmniTek Incorporated from manufacturing any Synthoids beyond the MK-III series. They also banned any other corporation from constructing androids with advanced, near-sentient AI. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were allowed to continue their existence, but they were stripped of all rights and protections as they were not considered humans. They were also banned from doing anything that may pose a global security threat, such as working for any military/defense organization or conducting any bioengineering, computing, or robotics related research.<br><br>Unfortunately, many believe that not all of the rogue MK-VI Synthoids from the Uprising were found and destroyed, and that many of them are blending in as normal humans in society today. In response, many nations have created Bladeburner divisions, special military branches that are tasked with investigating and dealing with any Synthoid threats.<br><br>To this day, tensions still exist between the remaining Synthoids and humans as a result of the Uprising.<br><br>Nobody knows what happened to the terrorist group Ascendis Totalis.",i[t]=new n.a(e,t,a),e="A Green Tomorrow",t=r.a.AGreenTomorrow,a="Starting a few decades ago, there was a massive global movement towards the generation of renewable energy in an effort to combat global warming and climate change. The shift towards renewable energy was a big success, or so it seemed. In 2045 a staggering 80% of the world's energy came from non-renewable fossil fuels. Now, about three decades later, that number is down to only 15%. Most of the world's energy now comes from nuclear power and renewable sources such as solar and geothermal energy. Unfortunately, these efforts were not the huge success that they seem to be.<br><br>Since 2045 primary energy use has soared almost tenfold. This was mainly due to growing urban populations and the rise of increasingly advanced (and power-hungry) technology that has become ubiquitous in our lives. So, despite the fact that the percentage of our energy that comes from fossil fuels has drastically decreased, the total amount of energy we are producing from fossil fuels has actually increased.<br><br>The grim effects of our species' irresponsible use of energy and neglect of our mother world have become increasingly apparent. Last year a temperature of 190F was recorded in the Death Valley desert, which is over 50% higher than the highest recorded temperature at the beginning of the century. In the last two decades numerous major cities such as Manhattan, Boston, and Los Angeles have been partially or fully submerged by rising sea levels. In the present day, over 75% of the world's agriculture is done in climate-controlled vertical farms, as most traditional farmland has become unusable due to severe climate conditions.<br><br>Despite all of this, the greedy and corrupt corporations that rule the world have done nothing to address these problems that threaten our species. And so it's up to us, the common people. Each and every one of us can make a difference by doing what these corporations won't: taking responsibility. If we don't, pretty soon there won't be an Earth left to save. We are the last hope for a green tomorrow.",i[t]=new n.a(e,t,a),e="Alpha and Omega",t=r.a.AlphaOmega,a="Then we saw a new Heaven and a new Earth, for our first Heaven and Earth had gone away, and our sea was no more. And we saw a new holy city, new Aeria, coming down out of this new Heaven, prepared as a bride adorned for her husband. And we heard a loud voice saying, 'Behold, the new dwelling place of the Gods. We will dwell with them, and they will be our people, and we will be with them as their Gods. We will wipe away every tear from their eyes, and death shall be no more, neither shall there be mourning, nor crying, nor pain anymore, for the former things have passed away.'<br><br>And once we were seated on the throne we said 'Behold, I am making all things new.' Also we said, 'Write this down, for these words are trustworthy and true.' And we said to you, 'It is done! I am the Alpha and the Omega, the beginning and the end. To the thirsty I will give from the spring of the water of life without payment. The one who conquers will have this heritage, and we will be his God and he will be our son. But as for the cowardly, the faithless, the detestable, as for murderers, the sexually immoral, sorcerers, idolaters, and all liars, their portion will be in the lake that burns with fire and sulfur, for it is the second true death.'",i[t]=new n.a(e,t,a),e="Are We Living in a Computer Simulation?",t=r.a.SimulatedReality,a="The idea that we are living in a virtual world is not new. It's a trope that has been explored constantly in literature and pop culture. However, it is also a legitimate scientific hypothesis that many notable physicists and philosophers have debated for years.<br><br>Proponents for this simulated reality theory often point to how advanced our technology has become, as well as the incredibly fast pace at which it has advanced over the past decades. The amount of computing power available to us has increased over 100-fold since 2060 due to the development of nanoprocessors and quantum computers. Artifical Intelligence has advanced to the point where our entire lives are controlled by robots and machines that handle our day-to-day activities such as autonomous transportation and scheduling. If we consider the pace at which this technology has advanced and assume that these developments continue, it's reasonable to assume that at some point in the future our technology would be advanced enough that we could create simulations that are indistinguishable from reality. However, if continued technological advancement is a reasonable outcome, then it is very likely that such a scenario has already happened. <br><br>Statistically speaking, somewhere out there in the infinite universe there is an advanced, intelligent species that already has such technology. Who's to say that they haven't already created such a virtual reality: our own?",i[t]=new n.a(e,t,a),e="Beyond Man",t=r.a.BeyondMan,a="Humanity entered a 'transhuman' era a long time ago. And despite the protests and criticisms of many who cried out against human augmentation at the time, the transhuman movement continued and prospered. Proponents of the movement ignored the critics, arguing that it was in our inherent nature to better ourselves. To improve. To be more than we were. They claimed that not doing so would be to go against every living organism's biological purpose: evolution and survival of the fittest.<br><br>And here we are today, with technology that is advanced enough to augment humans to a state that can only be described as posthuman. But what do we have to show for it when this augmentation technology is only available to the so-called 'elite'? Are we really better off than before when only 5% of the world's population has access to this technology? When the powerful corporations and organizations of the world keep it all to themselves, have we really evolved?<br><br>Augmentation technology has only further increased the divide between the rich and the poor, between the powerful and the oppressed. We have not become 'more than human'. We have not evolved from nature's original design. We are still the greedy, corrupted, and evil men that we always were.",i[t]=new n.a(e,t,a),e="Brighter than the Sun",t=r.a.BrighterThanTheSun,a="When people think about the corporations that dominate the East, they typically think of KuaiGong International, which holds a complete monopoly for manufacturing and commerce in Asia, or Global Pharmaceuticals, the world's largest drug company, or OmniTek Incorporated, the global leader in intelligent and autonomous robots. But there's one company that has seen a rapid rise in the last year and is poised to dominate not only the East, but the entire world: TaiYang Digital.<br><br>TaiYang Digital is a Chinese internet-technology corporation that provides services such as online advertising, search engines, gaming, media, entertainment, and cloud computing/storage. Its name TaiYang comes from the Chinese word for 'sun'. In Chinese culture, the sun is a 'yang' symbol associated with life, heat, masculinity, and heaven.<br><br>The company was founded less than 5 years ago and is already the third highest valued company in all of Asia. In 2076 it generated a total revenue of over 10 trillion yuan. It's services are used daily by over a billion people worldwide.<br><br>TaiYang Digital's meteoric rise is extremely surprising in modern society. This sort of growth is something you'd commonly see in the first half of the century, especially for tech companies. However in the last two decades the number of corporations has significantly declined as the largest entities quickly took over the economy. Corporations such as ECorp, MegaCorp, and KuaiGong have established such strong monopolies in their market sectors that they have effectively killed off all of the smaller and new corporations that have tried to start up over the years. This is what makes the rise of TaiYang Digital so impressive. And if TaiYang continues down this path, then they have a bright future ahead of them.",i[t]=new n.a(e,t,a),e="Democracy is Dead: The Fall of an Empire",t=r.a.DemocracyIsDead,a="They rose from the shadows in the street.<br>From the places where the oppressed meet.<br>Their cries echoed loudly through the air.<br>As they once did in Tiananmen Square.<br>Loudness in the silence, Darkness in the light.<br>They came forth with power and might.<br>Once the beacon of democracy, America was first.<br>Its pillars of society destroyed and dispersed.<br>Soon the cries rose everywhere, with revolt and riot.<br>Until one day, finally, all was quiet.<br>From the ashes rose a new order, corporatocracy was its name.<br>Rome, Mongol, Byzantine, all of history is just the same.<br>For man will never change in a fundamental way.<br>And now democracy is dead, in the USA.",i[t]=new n.a(e,t,a),e="Figures Show Rising Crime Rates in Sector-12",t=r.a.Sector12Crime,a="A recent study by analytics company Wilson Inc. shows a significant rise in criminal activity in Sector-12. Perhaps the most alarming part of the statistic is that most of the rise is in violent crime such as homicide and assault. According to the study, the city saw a total of 21,406 reported homicides in 2076, which is over a 20% increase compared to 2075.<br><br>CIA director David Glarow says its too early to know whether these figures indicate the beginning of a sustained increase in crime rates, or whether the year was just an unfortunate outlier. He states that many intelligence and law enforcement agents have noticed an increase in organized crime activites, and believes that these figures may be the result of an uprising from criminal organizations such as The Syndicate or the Slum Snakes.",i[t]=new n.a(e,t,a),e="Man and the Machine",t=r.a.ManAndMachine,a="In 2005 Ray Kurzweil popularized his theory of the Singularity. He predicted that the rate of technological advancement would continue to accelerate faster and faster until one day machines would be become infinitely more intelligent than humans. This point, called the Singularity, would result in a drastic transformation of the world as we know it. He predicted that the Singularity would arrive by 2045. And yet here we are, more than three decades later, where most would agree that we have not yet reached a point where computers and machines are vastly more intelligent than we are. So what gives?<br><br>The answer is that we have reached the Singularity, just not in the way we expected. The artifical superintelligence that was predicted by Kurzweil and others exists in the world today - in the form of Augmentations. Yes, those Augmentations that the rich and powerful keep to themselves enable humans to become superintelligent beings. The Singularity did not lead to a world where our machines are infinitely more intelligent than us, it led to a world where man and machine can merge to become something greater. Most of the world just doesn't know it yet.",i[t]=new n.a(e,t,a),e="Secret Societies",t=r.a.SecretSocieties,a="The idea of secret societies has long intrigued the general public by inspiring curiosity, fascination, and distrust. People have long wondered about who these secret society members are and what they do, with the most radical of conspiracy theorists claiming that they control everything in the entire world. And while the world may never know for sure, it is likely that many secret societies do actually exist, even today.<br><br>However, the secret societies of the modern world are nothing like those that (supposedly) existed decades and centuries ago. The Freemasons, Knights Templar, and Illuminati, while they may have been around at the turn of the 21st century, almost assuredly do not exist today. The dominance of the Web in our everyday lives and the fact that so much of the world is now digital has given rise to a new breed of secret societies: Internet-based ones.<br><br>Commonly called 'hacker groups', Internet-based secret societies have become well-known in today's world. Some of these, such as The Black Hand, are black hat groups that claim they are trying to help the oppressed by attacking the elite and powerful. Others, such as NiteSec, are hacktivist groups that try to push political and social agendas. Perhaps the most intriguing hacker group is the mysterious Bitrunners, whose purpose still remains unknown.",i[t]=new n.a(e,t,a),e="Space: The Failed Frontier",t=r.a.TheFailedFrontier,a="Humans have long dreamed about spaceflight. With enduring interest, we were driven to explore the unknown and discover new worlds. We dreamed about conquering the stars. And in our quest, we pushed the boundaries of our scientific limits, and then pushed further. Space exploration lead to the development of many important technologies and new industries.<br><br>But sometime in the middle of the 21st century, all of that changed. Humanity lost its ambitions and aspirations of exploring the cosmos. The once-large funding for agencies like NASA and the European Space Agency gradually whittled away until their eventual disbanding in the 2060's. Not even militaries are fielding flights into space nowadays. The only remnants of the once great mission for cosmic conquest are the countless satellites in near-earth orbit, used for communications, espionage, and other corporate interests.<br><br>And as we continue to look at the state of space technology, it becomes more and more apparent that we will never return to that golden age of space exploration, that age where everyone dreamed of going beyond earth for the sake of discovery.",i[t]=new n.a(e,t,a),e="Coded Intelligence: Myth or Reality?",t=r.a.CodedIntelligence,a="Tremendous progress has been made in the field of Artificial Intelligence over the past few decades. Our autonomous vehicles and transportation systems. The electronic personal assistants that control our everyday lives. Medical, service, and manufacturing robots. All of these are examples of how far AI has come and how much it has improved our daily lives. However, the question still remains of whether AI will ever be advanced enough to re-create human intelligence.<br><br>We've certainly come close to artificial intelligence that is similar to humans. For example OmniTek Incorporated's CompanionBot, a robot meant to act as a comforting friend for lonely and grieving people, is eerily human-like in its appearance, speech, mannerisms, and even movement. However its artificial intelligence isn't the same as that of humans. Not yet. It doesn't have sentience or self-awareness or consciousness.<br><br>Many neuroscientists believe that we won't ever reach the point of creating artificial human intelligence. 'At the end of the the day, AI comes down to 1's and 0's, while the human brain does not. We'll never see AI that is identical to that of humans.'",i[t]=new n.a(e,t,a),e="Synthetic Muscles",t=r.a.SyntheticMuscles,a="Initial versions of synthetic muscles weren't made of anything organic but were actually crude devices made to mimic human muscle function. Some of the early iterations were actually made of common materials such as fishing lines and sewing threads due to their high strength for a cheap cost.<br><br>As technology progressed, however, advances in biomedical engineering paved the way for a new method of creating synthetic muscles. Instead of creating something that closely imitated the functionality of human muscle, scientists discovered a way of forcing the human body itself to augment its own muscle tissue using both synthetic and organic materials. This is typically done using gene therapy or chemical injections.",i[t]=new n.a(e,t,a),e="Tensions rise in global tech race",t=r.a.TensionsInTechRace,a="Have we entered a new Cold War? Is WWIII just beyond the horizon?<br><br>After rumors came out that OmniTek Incorporated had begun developing advanced robotic supersoldiers, geopolitical tensions quickly flared between the USA, Russia, and several Asian superpowers. In a rare show of cooperation between corporations, MegaCorp and ECorp have reportedly launched hundreds of new surveillance and espionage satellites. Defense contractors such as DeltaOne and AeroCorp have been working with the CIA and NSA to prepare for conflict. Meanwhile, the rest of the world sits in earnest hoping that it never reaches full-scale war. With today's technology and firepower, a World War would assuredly mean the end of human civilization.",i[t]=new n.a(e,t,a),e="The Cost of Immortality",t=r.a.CostOfImmortality,a="Evolution and advances in medical and augmentation technology has lead to drastic improvements in human mortality rates. Recent figures show that the life expectancy for humans that live in a first-world country is about 130 years of age, almost double of what it was at the turn of the century. However, this increase in average lifespan has had some significant effects on society and culture.<br><br>Due to longer lifespans and a better quality of life, many adults are holding off on having kids until much later. As a result, the percentage of youth in first-world countries has been decreasing, while the number of senior citizens is significantly increasing.<br><br>Perhaps the most alarming result of all of this is the rapidly shrinking workforce. Despite the increase in life expectancy, the typical retirement age for workers in America has remained about the same, meaning a larger and larger percentage of people in America are retirees. Furthermore, many young adults are holding off on joining the workforce because they feel that they have plenty of time left in their lives for employment, and want to 'enjoy life while they're young.' For most industries, this shrinking workforce is not a major issue as most things are handled by robots anyways. However, there are still several key industries such as engineering and education that have not been automated, and these remain in danger to this cultural phenomenon.",i[t]=new n.a(e,t,a),e="The Hidden World",t=r.a.TheHiddenWorld,a="WAKE UP SHEEPLE<br><br>THE GOVERNMENT DOES NOT EXIST. CORPORATIONS DO NOT RUN SOCIETY<br><br>THE ILLUMINATI ARE THE SECRET RULERS OF THE WORLD!<br><br>Yes, the Illuminati of legends. The ancient secret society that controls the entire world from the shadows with their invisible hand. The group of the rich and wealthy that have penetrated every major government, financial agency, and corporation in the last three hundred years.<br><br>OPEN YOUR EYES<br><br>It was the Illuminati that brought an end to democracy in the world. They are the driving force behind everything that happens.<br><br>THEY ARE ALL AROUND YOU<br><br>After destabilizing the world's governments, they are now entering the final stage of their master plan. They will secretly initiate global crises. Terrorism. Pandemics. World War. And out of the chaos that ensues they will build their New World Order.",i[t]=new n.a(e,t,a),e="The New God",t=r.a.TheNewGod,a="Everyone has a moment in their life when they wonder about the bigger questions.<br><br>What's the point of all this? What is my purpose?<br><br>Some people dare to think even bigger.<br><br>What will the fate of the human race be?<br><br>We live in an era vastly different from that of 15 or even 20 years ago. We have gone beyond the limits of humanity. We have stripped ourselves of the tyranny of flesh.<br><br>The Singularity is here. The merging of man and machine. This is where humanity evolves into ",i[t]=new n.a(e,t,a),e="The New Triads",t=r.a.NewTriads,a="The Triads were an ancient transnational crime syndicate based in China, Hong Kong, and other Asian territories. They were often considered one of the first and biggest criminal secret societies. While most of the branches of the Triads have been destroyed over the past few decades, the crime faction has spawned and inspired a number of other Asian crime organizations over the past few years. The most notable of these is the Tetrads.<br><br>It is widely believed that the Tetrads are a rogue group that splintered off from the Triads sometime in the mid 21st century. The founders of the Tetrads, all of whom were ex-Triad members, believed that the Triads were losing their purpose and direction. The Tetrads started off as a small group that mainly engaged in fraud and extortion. They were largely unknown until just a few years ago when they took over the illegal drug trade in all of the major Asian cities. They quickly became the most powerful crime syndicate in the continent.<br><br>Not much else is known about the Tetrads, or about the efforts the Asian governments and corporations are making to take down this large new crime organization. Many believe that the Tetrads have infiltrated the governments and powerful corporations in Asia, which has helped faciliate their recent rapid rise.",i[t]=new n.a(e,t,a),e="The Secret War",t=r.a.TheSecretWar,a="",i[t]=new n.a(e,t,a)}()},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=[{desc:"This gang member is currently idle",isCombat:!0,isHacking:!0,name:"Unassigned",params:{hackWeight:100}},{desc:"Assign this gang member to create and distribute ransomware<br><br>Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Ransomware",params:{baseRespect:5e-5,baseWanted:1e-4,baseMoney:3,hackWeight:100,difficulty:1}},{desc:"Assign this gang member to attempt phishing scams and attacks<br><br>Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Phishing",params:{baseRespect:8e-5,baseWanted:.003,baseMoney:7.5,hackWeight:85,chaWeight:15,difficulty:3.5}},{desc:"Assign this gang member to attempt identity theft<br><br>Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Identity Theft",params:{baseRespect:1e-4,baseWanted:.075,baseMoney:18,hackWeight:80,chaWeight:20,difficulty:5}},{desc:"Assign this gang member to carry out DDoS attacks<br><br>Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"DDoS Attacks",params:{baseRespect:4e-4,baseWanted:.2,hackWeight:100,difficulty:8}},{desc:"Assign this gang member to create and distribute malicious viruses<br><br>Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Plant Virus",params:{baseRespect:6e-4,baseWanted:.4,hackWeight:100,difficulty:12}},{desc:"Assign this gang member to commit financial fraud and digital counterfeiting<br><br>Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!1,isHacking:!0,name:"Fraud & Counterfeiting",params:{baseRespect:4e-4,baseWanted:.3,baseMoney:45,hackWeight:80,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to launder money<br><br>Earns money - Increases respect - Increases wanted level",isCombat:!1,isHacking:!0,name:"Money Laundering",params:{baseRespect:.001,baseWanted:1.25,baseMoney:360,hackWeight:75,chaWeight:25,difficulty:25}},{desc:"Assign this gang member to commit acts of cyberterrorism<br><br>Greatly increases respect - Greatly increases wanted level",isCombat:!1,isHacking:!0,name:"Cyberterrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:80,chaWeight:20,difficulty:36}},{desc:"Assign this gang member to be an ethical hacker for corporations<br><br>Earns money - Lowers wanted level",isCombat:!1,isHacking:!0,name:"Ethical Hacking",params:{baseWanted:-.001,baseMoney:3,hackWeight:90,chaWeight:10,difficulty:1}},{desc:"Assign this gang member to mug random people on the streets<br><br>Earns money - Slightly increases respect - Very slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Mug People",params:{baseRespect:5e-5,baseWanted:5e-5,baseMoney:3.6,strWeight:25,defWeight:25,dexWeight:25,agiWeight:10,chaWeight:15,difficulty:1}},{desc:"Assign this gang member to sell drugs<br><br>Earns money - Slightly increases respect - Slightly increases wanted level - Scales slightly with territory",isCombat:!0,isHacking:!1,name:"Deal Drugs",params:{baseRespect:6e-5,baseWanted:.002,baseMoney:15,agiWeight:20,dexWeight:20,chaWeight:60,difficulty:3.5,territory:{money:1.2,respect:1,wanted:1.15}}},{desc:"Assign this gang member to extort civilians in your territory<br><br>Earns money - Slightly increases respect - Increases wanted - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Strongarm Civilians",params:{baseRespect:4e-5,baseWanted:.02,baseMoney:7.5,hackWeight:10,strWeight:25,defWeight:25,dexWeight:20,agiWeight:10,chaWeight:10,difficulty:5,territory:{money:1.6,respect:1.1,wanted:1.5}}},{desc:"Assign this gang member to run cons<br><br>Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Run a Con",params:{baseRespect:12e-5,baseWanted:.05,baseMoney:45,strWeight:5,defWeight:5,agiWeight:25,dexWeight:25,chaWeight:40,difficulty:14}},{desc:"Assign this gang member to commit armed robbery on stores, banks and armored cars<br><br>Earns money - Increases respect - Increases wanted level",isCombat:!0,isHacking:!1,name:"Armed Robbery",params:{baseRespect:14e-5,baseWanted:.1,baseMoney:114,hackWeight:20,strWeight:15,defWeight:15,agiWeight:10,dexWeight:20,chaWeight:20,difficulty:20}},{desc:"Assign this gang member to traffick illegal arms<br><br>Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Traffick Illegal Arms",params:{baseRespect:2e-4,baseWanted:.24,baseMoney:174,hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,chaWeight:25,difficulty:32,territory:{money:1.4,respect:1.3,wanted:1.25}}},{desc:"Assign this gang member to threaten and black mail high-profile targets<br><br>Earns money - Slightly increases respect - Slightly increases wanted level",isCombat:!0,isHacking:!1,name:"Threaten & Blackmail",params:{baseRespect:2e-4,baseWanted:.125,baseMoney:72,hackWeight:25,strWeight:25,dexWeight:25,chaWeight:25,difficulty:28}},{desc:"Assign this gang member to engage in human trafficking operations<br><br>Earns money - Increases respect - Increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Human Trafficking",params:{baseRespect:.004,baseWanted:1.25,baseMoney:360,hackWeight:30,strWeight:5,defWeight:5,dexWeight:30,chaWeight:30,difficulty:36,territory:{money:1.5,respect:1.5,wanted:1.6}}},{desc:"Assign this gang member to commit acts of terrorism<br><br>Greatly increases respect - Greatly increases wanted level - Scales heavily with territory",isCombat:!0,isHacking:!1,name:"Terrorism",params:{baseRespect:.01,baseWanted:6,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,chaWeight:20,difficulty:36,territory:{money:1,respect:2,wanted:2}}},{desc:"Assign this gang member to be a vigilante and protect the city from criminals<br><br>Decreases wanted level",isCombat:!0,isHacking:!0,name:"Vigilante Justice",params:{baseWanted:-.001,hackWeight:20,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,difficulty:1,territory:{money:1,respect:1,wanted:.9}}},{desc:"Assign this gang member to increase their combat stats (str, def, dex, agi)",isCombat:!0,isHacking:!0,name:"Train Combat",params:{strWeight:25,defWeight:25,dexWeight:25,agiWeight:25,difficulty:100}},{desc:"Assign this gang member to train their hacking skills",isCombat:!0,isHacking:!0,name:"Train Hacking",params:{hackWeight:100,difficulty:45}},{desc:"Assign this gang member to train their charisma",isCombat:!0,isHacking:!0,name:"Train Charisma",params:{chaWeight:100,difficulty:8}},{desc:"Assign this gang member to engage in territorial warfare with other gangs. Members assigned to this task will help increase your gang's territory and will defend your territory from being taken.",isCombat:!0,isHacking:!0,name:"Territory Warfare",params:{hackWeight:15,strWeight:20,defWeight:20,dexWeight:20,agiWeight:20,chaWeight:5,difficulty:5}}]},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(532),r=a(230),i=a(211),o=a(21),s=a(184);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class c{constructor(e=""){l(this,"task","Unassigned"),l(this,"earnedRespect",0),l(this,"hack",1),l(this,"str",1),l(this,"def",1),l(this,"dex",1),l(this,"agi",1),l(this,"cha",1),l(this,"hack_exp",0),l(this,"str_exp",0),l(this,"def_exp",0),l(this,"dex_exp",0),l(this,"agi_exp",0),l(this,"cha_exp",0),l(this,"hack_mult",1),l(this,"str_mult",1),l(this,"def_mult",1),l(this,"dex_mult",1),l(this,"agi_mult",1),l(this,"cha_mult",1),l(this,"hack_asc_points",0),l(this,"str_asc_points",0),l(this,"def_asc_points",0),l(this,"dex_asc_points",0),l(this,"agi_asc_points",0),l(this,"cha_asc_points",0),l(this,"upgrades",[]),l(this,"augmentations",[]),this.name=e}calculateSkill(e,t=1){return Math.max(Math.floor(t*(32*Math.log(e+534.5)-200)),1)}calculateAscensionMult(e){return Object(s.a)(e)}updateSkillLevels(){this.hack=this.calculateSkill(this.hack_exp,this.hack_mult*this.calculateAscensionMult(this.hack_asc_points)),this.str=this.calculateSkill(this.str_exp,this.str_mult*this.calculateAscensionMult(this.str_asc_points)),this.def=this.calculateSkill(this.def_exp,this.def_mult*this.calculateAscensionMult(this.def_asc_points)),this.dex=this.calculateSkill(this.dex_exp,this.dex_mult*this.calculateAscensionMult(this.dex_asc_points)),this.agi=this.calculateSkill(this.agi_exp,this.agi_mult*this.calculateAscensionMult(this.agi_asc_points)),this.cha=this.calculateSkill(this.cha_exp,this.cha_mult*this.calculateAscensionMult(this.cha_asc_points))}calculatePower(){return(this.hack+this.str+this.def+this.dex+this.agi+this.cha)/95}assignToTask(e){return r.a.hasOwnProperty(e)?(this.task=e,!0):(this.task="Unassigned",!1)}unassignFromTask(){this.task="Unassigned"}getTask(){return this.task instanceof n.a&&(this.task=this.task.name),r.a.hasOwnProperty(this.task)?r.a[this.task]:r.a.Unassigned}calculateRespectGain(e){const t=this.getTask(),a={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return Object(s.d)(a,this,t)}calculateWantedLevelGain(e){const t=this.getTask(),a={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return Object(s.e)(a,this,t)}calculateMoneyGain(e){const t=this.getTask(),a={respect:e.respect,wantedLevel:e.wanted,territory:e.getTerritory()};return Object(s.c)(a,this,t)}expMult(){return{hack:(this.hack_mult-1)/4+1,str:(this.str_mult-1)/4+1,def:(this.def_mult-1)/4+1,dex:(this.dex_mult-1)/4+1,agi:(this.agi_mult-1)/4+1,cha:(this.cha_mult-1)/4+1}}gainExperience(e=1){const t=this.getTask();if(t===r.a.Unassigned)return;const a=Math.pow(t.difficulty,.9)*e,n=this.expMult();this.hack_exp+=t.hackWeight/1500*a*n.hack*this.calculateAscensionMult(this.hack_asc_points),this.str_exp+=t.strWeight/1500*a*n.str*this.calculateAscensionMult(this.str_asc_points),this.def_exp+=t.defWeight/1500*a*n.def*this.calculateAscensionMult(this.def_asc_points),this.dex_exp+=t.dexWeight/1500*a*n.dex*this.calculateAscensionMult(this.dex_asc_points),this.agi_exp+=t.agiWeight/1500*a*n.agi*this.calculateAscensionMult(this.agi_asc_points),this.cha_exp+=t.chaWeight/1500*a*n.cha*this.calculateAscensionMult(this.cha_asc_points)}recordEarnedRespect(e=1,t){this.earnedRespect+=this.calculateRespectGain(t)*e}getGainedAscensionPoints(){return{hack:Object(s.b)(this.hack_exp),str:Object(s.b)(this.str_exp),def:Object(s.b)(this.def_exp),dex:Object(s.b)(this.dex_exp),agi:Object(s.b)(this.agi_exp),cha:Object(s.b)(this.cha_exp)}}canAscend(){const e=this.getGainedAscensionPoints();return e.hack>0||e.str>0||e.def>0||e.dex>0||e.agi>0||e.cha>0}getCurrentAscensionMults(){return{hack:this.calculateAscensionMult(this.hack_asc_points),str:this.calculateAscensionMult(this.str_asc_points),def:this.calculateAscensionMult(this.def_asc_points),dex:this.calculateAscensionMult(this.dex_asc_points),agi:this.calculateAscensionMult(this.agi_asc_points),cha:this.calculateAscensionMult(this.cha_asc_points)}}getAscensionMultsAfterAscend(){const e=this.getGainedAscensionPoints();return{hack:this.calculateAscensionMult(this.hack_asc_points+e.hack),str:this.calculateAscensionMult(this.str_asc_points+e.str),def:this.calculateAscensionMult(this.def_asc_points+e.def),dex:this.calculateAscensionMult(this.dex_asc_points+e.dex),agi:this.calculateAscensionMult(this.agi_asc_points+e.agi),cha:this.calculateAscensionMult(this.cha_asc_points+e.cha)}}getAscensionResults(){const e=this.getAscensionMultsAfterAscend(),t=this.getCurrentAscensionMults();return{hack:e.hack/t.hack,str:e.str/t.str,def:e.def/t.def,dex:e.dex/t.dex,agi:e.agi/t.agi,cha:e.cha/t.cha}}ascend(){const e=this.getAscensionResults(),t=this.getGainedAscensionPoints();this.hack_asc_points+=t.hack,this.str_asc_points+=t.str,this.def_asc_points+=t.def,this.dex_asc_points+=t.dex,this.agi_asc_points+=t.agi,this.cha_asc_points+=t.cha,this.upgrades.length=0,this.hack_mult=1,this.str_mult=1,this.def_mult=1,this.dex_mult=1,this.agi_mult=1,this.cha_mult=1;for(let e=0;e<this.augmentations.length;++e){const t=i.a[this.augmentations[e]];this.applyUpgrade(t)}this.hack_exp=0,this.str_exp=0,this.def_exp=0,this.dex_exp=0,this.agi_exp=0,this.cha_exp=0,this.updateSkillLevels();const a=this.earnedRespect;return this.earnedRespect=0,{respect:a,hack:e.hack,str:e.str,def:e.def,dex:e.dex,agi:e.agi,cha:e.cha}}applyUpgrade(e){null!=e.mults.str&&(this.str_mult*=e.mults.str),null!=e.mults.def&&(this.def_mult*=e.mults.def),null!=e.mults.dex&&(this.dex_mult*=e.mults.dex),null!=e.mults.agi&&(this.agi_mult*=e.mults.agi),null!=e.mults.cha&&(this.cha_mult*=e.mults.cha),null!=e.mults.hack&&(this.hack_mult*=e.mults.hack)}buyUpgrade(e,t,a){return!this.augmentations.includes(e.name)&&!this.upgrades.includes(e.name)&&(!(t.money<a.getUpgradeCost(e))&&(t.loseMoney(a.getUpgradeCost(e),"gang"),"g"===e.type?this.augmentations.push(e.name):this.upgrades.push(e.name),this.applyUpgrade(e),!0))}toJSON(){return Object(o.b)("GangMember",this)}static fromJSON(e){return Object(o.a)(c,e.data)}}o.c.constructors.GangMember=c},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(165),r=a(4);class i{constructor(e="",t=0,a=n.a.Weapon,r={}){this.name=e,this.cost=t,this.type=a,this.mults=r,this.desc=this.createDescription()}createDescription(){const e=["Effects:"];return null!=this.mults.str&&(e.push(`+${r.a.formatPercentage(this.mults.str-1,0)} strength skill`),e.push(`+${r.a.formatPercentage((this.mults.str-1)/4,2)} strength exp`)),null!=this.mults.def&&(e.push(`+${r.a.formatPercentage(this.mults.def-1,0)} defense skill`),e.push(`+${r.a.formatPercentage((this.mults.def-1)/4,2)} defense exp`)),null!=this.mults.dex&&(e.push(`+${r.a.formatPercentage(this.mults.dex-1,0)} dexterity skill`),e.push(`+${r.a.formatPercentage((this.mults.dex-1)/4,2)} dexterity exp`)),null!=this.mults.agi&&(e.push(`+${r.a.formatPercentage(this.mults.agi-1,0)} agility skill`),e.push(`+${r.a.formatPercentage((this.mults.agi-1)/4,2)} agility exp`)),null!=this.mults.cha&&(e.push(`+${r.a.formatPercentage(this.mults.cha-1,0)} charisma skill`),e.push(`+${r.a.formatPercentage((this.mults.cha-1)/4,2)} charisma exp`)),null!=this.mults.hack&&(e.push(`+${r.a.formatPercentage(this.mults.hack-1,0)} hacking skill`),e.push(`+${r.a.formatPercentage((this.mults.hack-1)/4,2)} hacking exp`)),e.join("<br>")}getType(){switch(this.type){case n.a.Weapon:return"Weapon";case n.a.Armor:return"Armor";case n.a.Vehicle:return"Vehicle";case n.a.Rootkit:return"Rootkit";case n.a.Augmentation:return"Augmentation";default:return""}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={"Slum Snakes":1,Tetrads:2,"The Syndicate":2,"The Dark Army":2,"Speakers for the Dead":5,NiteSec:2,"The Black Hand":5}},function(e,t,a){"use strict";a.d(t,"a",(function(){return S}));var n=a(30),r=a(9);const i={},o={},s={},l={},c={},u={},m={},h={},d={},p={},f={},g={},y={},b={},E={},k={},v={},_={},w={};n.j.forEach(e=>{i[e]=!0,c[e]=!0}),n.d.forEach(e=>{o[e]=!0,c[e]=!0}),n.f.forEach(e=>{s[e]=!0,c[e]=!0}),c[n.i[0]]=!0,l[n.i[0]]=!0,n.b.forEach(e=>{u[e]=!0}),n.h.forEach(e=>{h[e]=!0}),n.a.forEach(e=>{m[e]=!0}),n.k.forEach(e=>{d[e]=!0}),n.c.forEach(e=>{p[e]=!0});for(let e=0;e<n.j.length;++e){const t=n.j[e];e<=5&&(f[t]=!0),e<=3&&(g[t]=!0)}for(let e=0;e<n.b.length;++e){const t=n.b[e];e<=3&&(y[t]=!0)}b[n.e[0]]=!0,E[n.e[1]]=!0,k[n.g[0]]=!0,v[n.g[1]]=!0,_[n.b[3]]=!0,w[n.b[5]]=!0;const S=[{name:r.a.AevumECorp,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},{name:r.a.Sector12MegaCorp,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:3,salaryMultiplier:3,jobStatReqOffset:249},{name:r.a.AevumBachmanAndAssociates,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.6,salaryMultiplier:2.6,jobStatReqOffset:224},{name:r.a.Sector12BladeIndustries,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:224},{name:r.a.VolhavenNWO,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.75,salaryMultiplier:2.75,jobStatReqOffset:249},{name:r.a.AevumClarkeIncorporated,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},{name:r.a.VolhavenOmniTekIncorporated,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.25,salaryMultiplier:2.25,jobStatReqOffset:224},{name:r.a.Sector12FourSigma,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.5,salaryMultiplier:2.5,jobStatReqOffset:224},{name:r.a.ChongqingKuaiGongInternational,info:"",companyPositions:Object.assign({},c,u,h),expMultiplier:2.2,salaryMultiplier:2.2,jobStatReqOffset:224},{name:r.a.AevumFulcrumTechnologies,info:"",companyPositions:Object.assign({},c,u),expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:224},{name:r.a.IshimaStormTechnologies,info:"",companyPositions:Object.assign({},c,d,u),expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},{name:r.a.NewTokyoDefComm,info:"",companyPositions:Object.assign({},w,c,d),expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},{name:r.a.VolhavenHeliosLabs,info:"",companyPositions:Object.assign({},w,c,d),expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},{name:r.a.NewTokyoVitaLife,info:"",companyPositions:Object.assign({},c,u,d),expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:199},{name:r.a.Sector12IcarusMicrosystems,info:"",companyPositions:Object.assign({},c,u,d),expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},{name:r.a.Sector12UniversalEnergy,info:"",companyPositions:Object.assign({},c,u,d),expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:199},{name:r.a.AevumGalacticCybersystems,info:"",companyPositions:Object.assign({},c,u,d),expMultiplier:1.9,salaryMultiplier:1.9,jobStatReqOffset:199},{name:r.a.AevumAeroCorp,info:"",companyPositions:Object.assign({},w,_,c,h),expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},{name:r.a.VolhavenOmniaCybersystems,info:"",companyPositions:Object.assign({},w,_,c,h),expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},{name:r.a.ChongqingSolarisSpaceSystems,info:"",companyPositions:Object.assign({},w,_,c,h),expMultiplier:1.7,salaryMultiplier:1.7,jobStatReqOffset:199},{name:r.a.Sector12DeltaOne,info:"",companyPositions:Object.assign({},w,_,c,h),expMultiplier:1.6,salaryMultiplier:1.6,jobStatReqOffset:199},{name:r.a.NewTokyoGlobalPharmaceuticals,info:"",companyPositions:Object.assign({},c,u,d,h),expMultiplier:1.8,salaryMultiplier:1.8,jobStatReqOffset:224},{name:r.a.IshimaNovaMedical,info:"",companyPositions:Object.assign({},c,u,d,h),expMultiplier:1.75,salaryMultiplier:1.75,jobStatReqOffset:199},{name:r.a.Sector12CIA,info:"",companyPositions:Object.assign({},f,s,l,o,h,m),expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},{name:r.a.Sector12NSA,info:"",companyPositions:Object.assign({},f,s,l,o,h,m),expMultiplier:2,salaryMultiplier:2,jobStatReqOffset:149},{name:r.a.AevumWatchdogSecurity,info:"",companyPositions:Object.assign({},f,s,o,h,m,d),expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:124},{name:r.a.VolhavenLexoCorp,info:"",companyPositions:Object.assign({},c,d,u,h),expMultiplier:1.4,salaryMultiplier:1.4,jobStatReqOffset:99},{name:r.a.AevumRhoConstruction,info:"",companyPositions:Object.assign({},g,y),expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:49},{name:r.a.Sector12AlphaEnterprises,info:"",companyPositions:Object.assign({},g,y,d),expMultiplier:1.5,salaryMultiplier:1.5,jobStatReqOffset:99},{name:r.a.AevumPolice,info:"",companyPositions:Object.assign({},h,g),expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:99},{name:r.a.VolhavenSysCoreSecurities,info:"",companyPositions:Object.assign({},c),expMultiplier:1.3,salaryMultiplier:1.3,jobStatReqOffset:124},{name:r.a.VolhavenCompuTek,info:"",companyPositions:Object.assign({},c),expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},{name:r.a.AevumNetLinkTechnologies,info:"",companyPositions:Object.assign({},c),expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:99},{name:r.a.Sector12CarmichaelSecurity,info:"",companyPositions:Object.assign({},c,d,m,h),expMultiplier:1.2,salaryMultiplier:1.2,jobStatReqOffset:74},{name:r.a.Sector12FoodNStuff,info:"",companyPositions:Object.assign({},E,v),expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},{name:r.a.Sector12JoesGuns,info:"",companyPositions:Object.assign({},E,v),expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0},{name:r.a.IshimaOmegaSoftware,info:"",companyPositions:Object.assign({},i,d,o),expMultiplier:1.1,salaryMultiplier:1.1,jobStatReqOffset:49},{name:r.a.NewTokyoNoodleBar,info:"",companyPositions:Object.assign({},b,k),expMultiplier:1,salaryMultiplier:1,jobStatReqOffset:0}]},function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r}));class r{constructor(e={name:"",cost:0,desc:""}){n(this,"name",""),n(this,"cost",0),n(this,"desc",""),n(this,"advertisingMult",1),n(this,"employeeChaMult",1),n(this,"employeeCreMult",1),n(this,"employeeEffMult",1),n(this,"employeeIntMult",1),n(this,"productionMult",1),n(this,"productProductionMult",1),n(this,"salesMult",1),n(this,"sciResearchMult",1),n(this,"storageMult",1),this.name=e.name,this.cost=e.cost,this.desc=e.desc,e.advertisingMult&&(this.advertisingMult=e.advertisingMult),e.employeeChaMult&&(this.employeeChaMult=e.employeeChaMult),e.employeeCreMult&&(this.employeeCreMult=e.employeeCreMult),e.employeeEffMult&&(this.employeeEffMult=e.employeeEffMult),e.employeeIntMult&&(this.employeeIntMult=e.employeeIntMult),e.productionMult&&(this.productionMult=e.productionMult),e.productProductionMult&&(this.productProductionMult=e.productProductionMult),e.salesMult&&(this.salesMult=e.salesMult),e.sciResearchMult&&(this.sciResearchMult=e.sciResearchMult),e.storageMult&&(this.storageMult=e.storageMult)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=[{name:"AutoBrew",cost:12e3,desc:"Automatically keep your employees fully caffeinated with coffee injections. This research will keep the energy of all employees at its maximum possible value, for no cost. This will also disable the Coffee upgrade."},{name:"AutoPartyManager",cost:15e3,desc:"Automatically analyzes your employees' happiness and morale and boosts them whenever it detects a decrease. This research will keep the morale and happiness of all employees at their maximum possible values, for no cost. This will also disable the 'Throw Party' feature."},{name:"Automatic Drug Administration",cost:1e4,desc:"Research how to automatically administer performance-enhacing drugs to all of your employees. This unlocks Drug-related Research."},{name:"Bulk Purchasing",cost:5e3,desc:"Research the art of buying materials in bulk. This allows you to purchase any amount of a material instantly."},{name:"CPH4 Injections",cost:25e3,desc:"Develop an advanced and harmless synthetic drug that is administered to employees to increase all of their stats, except experience, by 10%.",employeeCreMult:1.1,employeeChaMult:1.1,employeeEffMult:1.1,employeeIntMult:1.1},{name:"Drones",cost:5e3,desc:"Acquire the knowledge needed to create advanced drones. This research does nothing by itself, but unlocks other Drone-related research."},{name:"Drones - Assembly",cost:25e3,desc:"Manufacture and use Assembly Drones to improve the efficiency of your production lines. This increases all production by 20%.",productionMult:1.2},{name:"Drones - Transport",cost:3e4,desc:"Manufacture and use intelligent Transport Drones to optimize your warehouses. This increases the storage space of all warehouses by 50%.",storageMult:1.5},{name:"Go-Juice",cost:25e3,desc:"Provide employees with Go-Juice, a coffee-derivative that further enhances the brain's dopamine production. This increases the maximum energy of all employees by 10."},{name:"Hi-Tech R&D Laboratory",cost:5e3,desc:"Construct a cutting edge facility dedicated to advanced research and and development. This allows you to spend Scientific Research on powerful upgrades. It also globally increases Scientific Research production by 10%.",sciResearchMult:1.1},{name:"HRBuddy-Recruitment",cost:15e3,desc:"Use automated software to handle the hiring of employees. With this research, each office will automatically hire one employee per market cycle if there is available space."},{name:"HRBuddy-Training",cost:2e4,desc:"Use automated software to handle the training of employees. With this research, each employee hired with HRBuddy-Recruitment will automatically be assigned to 'Training', rather than being unassigned."},{name:"JoyWire",cost:2e4,desc:"A brain implant which is installed in employees, increasing their maximum happiness by 10."},{name:"Market-TA.I",cost:2e4,desc:"Develop advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know what price to sell your Materials/Products at in order to avoid losing sales due to having too high of a mark-up. It also lets you automatically use that sale price."},{name:"Market-TA.II",cost:5e4,desc:"Develop double-advanced AI software that uses technical analysis to help you understand and exploit the market. This research allows you to know how many sales of a Material/Product you lose or gain from having too high or too low or a sale price. It also lets you automatically set the sale price of your Materials/Products at the optimal price such that the amount sold matches the amount produced."},{name:"Overclock",cost:15e3,desc:"Equip employees with a headset that uses transcranial direct current stimulation (tDCS) to increase the speed of their neurotransmitters. This research increases the intelligence and efficiency of all employees by 25%.",employeeEffMult:1.25,employeeIntMult:1.25},{name:"Self-Correcting Assemblers",cost:25e3,desc:"Create assemblers that can be used for universal production. These assemblers use deep learning to improve their efficiency at their tasks. This research increases all production by 10%",productionMult:1.1},{name:"Sti.mu",cost:3e4,desc:"Upgrade the tDCS headset to stimulate regions of the brain that control confidence and enthusiasm. This research increases the max morale of all employees by 10."},{name:"sudo.Assist",cost:15e3,desc:"Develop a virtual assistant AI to handle and manage administrative issues for your corporation."},{name:"uPgrade: Capacity.I",cost:2e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 3 to 4)."},{name:"uPgrade: Capacity.II",cost:3e4,desc:"Expand the industry's capacity for designing and manufacturing its various products. This increases the industry's maximum number of products by 1 (from 4 to 5)."},{name:"uPgrade: Dashboard",cost:5e3,desc:"Improve the software used to manage the industry's production line for its various products. This allows you to manage the production and sale of a product before it's finished being designed."},{name:"uPgrade: Fulcrum",cost:1e4,desc:"Streamline the manufacturing of this industry's various products. This research increases the production of your products by 5%",productProductionMult:1.05}]},function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r}));class r{constructor(e){n(this,"costPerLevel",0),n(this,"desc",""),n(this,"hasTargetServer",!1),n(this,"name",""),n(this,"value",0),n(this,"effectText",()=>null),null!=e.cost&&(this.cost=e.cost),null!=e.effectText&&(this.effectText=e.effectText),this.costPerLevel=e.costPerLevel,this.desc=e.desc,this.hasTargetServer=!!e.hasTargetServer&&e.hasTargetServer,this.name=e.name,this.value=e.value}getCost(e){return"number"==typeof this.cost?this.cost:Math.round((e+1)*this.costPerLevel)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(4),o=a(16);const s=[{cost:4,costPerLevel:4,desc:"Sell hashes for $1m",name:"Sell for Money",effectText:e=>r.a.createElement(r.a.Fragment,null,"Sold for ",r.a.createElement(o.a,{money:1e6*e})),value:1e6},{costPerLevel:100,desc:"Sell hashes for $1b in Corporation funds",name:"Sell for Corporation Funds",effectText:e=>r.a.createElement(r.a.Fragment,null,"Sold for ",r.a.createElement(o.a,{money:1e9*e})," Corporation funds."),value:1e9},{costPerLevel:50,desc:"Use hashes to decrease the minimum security of a single server by 2%. Note that a server's minimum security cannot go below 1. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Reduce Minimum Security",value:.98},{costPerLevel:50,desc:"Use hashes to increase the maximum amount of money on a single server by 2%. This effect persists until you install Augmentations (since servers are reset at that time).",hasTargetServer:!0,name:"Increase Maximum Money",value:1.02},{costPerLevel:50,desc:"Use hashes to improve the experience earned when studying at a university by 20%. This effect persists until you install Augmentations",name:"Improve Studying",effectText:e=>r.a.createElement(r.a.Fragment,null,"Improves studying by ",20*e,"%"),value:20},{costPerLevel:50,desc:"Use hashes to improve the experience earned when training at the gym by 20%. This effect persists until you install Augmentations",name:"Improve Gym Training",effectText:e=>r.a.createElement(r.a.Fragment,null,"Improves training by ",20*e,"%"),value:20},{costPerLevel:200,desc:"Exchange hashes for 1k Scientific Research in all of your Corporation's Industries",name:"Exchange for Corporation Research",effectText:e=>r.a.createElement(r.a.Fragment,null,"Acquired a total of ",e,"k Scientific Research in your industries."),value:1e3},{costPerLevel:250,desc:"Exchange hashes for 100 Bladeburner Rank",name:"Exchange for Bladeburner Rank",effectText:e=>r.a.createElement(r.a.Fragment,null,"Acquired a total of ",i.a.format(100*e,"0a")," Bladeburner rank"),value:100},{costPerLevel:250,desc:"Exchanges hashes for 10 Bladeburner Skill Points",name:"Exchange for Bladeburner SP",effectText:e=>r.a.createElement(r.a.Fragment,null,"Acquired a total of ",i.a.format(10*e,"0a")," Bladeburner Skill Points"),value:10},{costPerLevel:200,desc:"Generate a random Coding Contract somewhere on the network",name:"Generate Coding Contract",effectText:e=>r.a.createElement(r.a.Fragment,null,"Generated ",e," contracts."),value:1}]},function(e,t,a){"use strict";function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}a.d(t,"a",(function(){return r}));class r{constructor(e){n(this,"parent",null),n(this,"stopFlag",!1),n(this,"vars",{}),e instanceof r&&(this.vars=Object.assign({},e.vars)),this.parent=e}lookup(e){let t=this;for(;t;){if(Object.prototype.hasOwnProperty.call(t.vars,e))return t;t=t.parent}return null}get(e){if(e in this.vars)return this.vars[e];throw new Error("Undefined variable "+e)}set(e,t){const a=this.lookup(e);return null!==a?a.vars[e]=t:this.vars[e]=t}def(e,t){return this.vars[e]=t}}},function(e,t,a){"use strict";function n(e){return!isNaN(e)&&(0!==e&&0==(e&e-1))}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(93),r=a(9);const i=[{b:!0,initPrice:{max:28e3,min:17e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:r.a.AevumECorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.AevumECorp]},{b:!0,initPrice:{max:34e3,min:24e3},marketCap:24e11,mv:{divisor:100,max:50,min:40},name:r.a.Sector12MegaCorp,otlkMag:19,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.Sector12MegaCorp]},{b:!0,initPrice:{max:25e3,min:12e3},marketCap:16e11,mv:{divisor:100,max:80,min:70},name:r.a.Sector12BladeIndustries,otlkMag:13,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.Sector12BladeIndustries]},{b:!0,initPrice:{max:25e3,min:1e4},marketCap:15e11,mv:{divisor:100,max:75,min:65},name:r.a.AevumClarkeIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:5,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.AevumClarkeIncorporated]},{b:!0,initPrice:{max:43e3,min:32e3},marketCap:18e11,mv:{divisor:100,max:70,min:60},name:r.a.VolhavenOmniTekIncorporated,otlkMag:12,spreadPerc:{divisor:10,max:6,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.VolhavenOmniTekIncorporated]},{b:!0,initPrice:{max:8e4,min:5e4},marketCap:2e12,mv:{divisor:100,max:110,min:100},name:r.a.Sector12FourSigma,otlkMag:17,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.Sector12FourSigma]},{b:!0,initPrice:{max:28e3,min:16e3},marketCap:19e11,mv:{divisor:100,max:85,min:75},name:r.a.ChongqingKuaiGongInternational,otlkMag:10,spreadPerc:{divisor:10,max:7,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.ChongqingKuaiGongInternational]},{b:!0,initPrice:{max:36e3,min:29e3},marketCap:2e12,mv:{divisor:100,max:130,min:120},name:r.a.AevumFulcrumTechnologies,otlkMag:16,spreadPerc:{divisor:10,max:10,min:1},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.AevumFulcrumTechnologies]},{b:!0,initPrice:{max:25e3,min:2e4},marketCap:12e11,mv:{divisor:100,max:90,min:80},name:r.a.IshimaStormTechnologies,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.IshimaStormTechnologies]},{b:!0,initPrice:{max:19e3,min:6e3},marketCap:9e11,mv:{divisor:100,max:70,min:60},name:r.a.NewTokyoDefComm,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.NewTokyoDefComm]},{b:!0,initPrice:{max:18e3,min:1e4},marketCap:825e9,mv:{divisor:100,max:65,min:55},name:r.a.VolhavenHeliosLabs,otlkMag:9,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.VolhavenHeliosLabs]},{b:!0,initPrice:{max:14e3,min:8e3},marketCap:1e12,mv:{divisor:100,max:80,min:70},name:r.a.NewTokyoVitaLife,otlkMag:7,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.NewTokyoVitaLife]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:8e11,mv:{divisor:100,max:70,min:60},name:r.a.Sector12IcarusMicrosystems,otlkMag:7.5,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.Sector12IcarusMicrosystems]},{b:!0,initPrice:{max:29e3,min:16e3},marketCap:9e11,mv:{divisor:100,max:60,min:50},name:r.a.Sector12UniversalEnergy,otlkMag:10,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.Sector12UniversalEnergy]},{b:!0,initPrice:{max:17e3,min:8e3},marketCap:64e10,mv:{divisor:100,max:65,min:55},name:r.a.AevumAeroCorp,otlkMag:6,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:42e3},symbol:n.a[r.a.AevumAeroCorp]},{b:!0,initPrice:{max:15e3,min:6e3},marketCap:6e11,mv:{divisor:100,max:75,min:65},name:r.a.VolhavenOmniaCybersystems,otlkMag:4.5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:n.a[r.a.VolhavenOmniaCybersystems]},{b:!0,initPrice:{max:28e3,min:14e3},marketCap:705e9,mv:{divisor:100,max:80,min:70},name:r.a.ChongqingSolarisSpaceSystems,otlkMag:8.5,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:n.a[r.a.ChongqingSolarisSpaceSystems]},{b:!0,initPrice:{max:3e4,min:12e3},marketCap:695e9,mv:{divisor:100,max:65,min:55},name:r.a.NewTokyoGlobalPharmaceuticals,otlkMag:10.5,spreadPerc:{divisor:10,max:10,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:n.a[r.a.NewTokyoGlobalPharmaceuticals]},{b:!0,initPrice:{max:27e3,min:15e3},marketCap:6e11,mv:{divisor:100,max:80,min:70},name:r.a.IshimaNovaMedical,otlkMag:5,spreadPerc:{divisor:10,max:11,min:4},shareTxForMovement:{max:126e3,min:42e3},symbol:n.a[r.a.IshimaNovaMedical]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:45e10,mv:{divisor:100,max:260,min:240},name:r.a.AevumWatchdogSecurity,otlkMag:1.5,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:54e3,min:12e3},symbol:n.a[r.a.AevumWatchdogSecurity]},{b:!0,initPrice:{max:8e3,min:4500},marketCap:3e11,mv:{divisor:100,max:135,min:115},name:r.a.VolhavenLexoCorp,otlkMag:6,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:108e3,min:36e3},symbol:n.a[r.a.VolhavenLexoCorp]},{b:!0,initPrice:{max:7e3,min:2e3},marketCap:18e10,mv:{divisor:100,max:70,min:50},name:r.a.AevumRhoConstruction,otlkMag:1,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:126e3,min:6e4},symbol:n.a[r.a.AevumRhoConstruction]},{b:!0,initPrice:{max:8500,min:4e3},marketCap:24e10,mv:{divisor:100,max:205,min:175},name:r.a.Sector12AlphaEnterprises,otlkMag:10,spreadPerc:{divisor:10,max:16,min:5},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.Sector12AlphaEnterprises]},{b:!0,initPrice:{max:8e3,min:3e3},marketCap:2e11,mv:{divisor:100,max:170,min:150},name:r.a.VolhavenSysCoreSecurities,otlkMag:3,spreadPerc:{divisor:10,max:12,min:5},shareTxForMovement:{max:9e4,min:15e3},symbol:n.a[r.a.VolhavenSysCoreSecurities]},{b:!0,initPrice:{max:6e3,min:1e3},marketCap:185e9,mv:{divisor:100,max:100,min:80},name:r.a.VolhavenCompuTek,otlkMag:4,spreadPerc:{divisor:10,max:12,min:4},shareTxForMovement:{max:126e3,min:6e4},symbol:n.a[r.a.VolhavenCompuTek]},{b:!0,initPrice:{max:5e3,min:1e3},marketCap:58e9,mv:{divisor:100,max:400,min:200},name:r.a.AevumNetLinkTechnologies,otlkMag:1,spreadPerc:{divisor:10,max:20,min:5},shareTxForMovement:{max:54e3,min:18e3},symbol:n.a[r.a.AevumNetLinkTechnologies]},{b:!0,initPrice:{max:8e3,min:1e3},marketCap:6e10,mv:{divisor:100,max:110,min:90},name:r.a.IshimaOmegaSoftware,otlkMag:.5,spreadPerc:{divisor:10,max:13,min:4},shareTxForMovement:{max:9e4,min:3e4},symbol:n.a[r.a.IshimaOmegaSoftware]},{b:!1,initPrice:{max:4500,min:500},marketCap:45e9,mv:{divisor:100,max:80,min:70},name:r.a.Sector12FoodNStuff,otlkMag:1,spreadPerc:{divisor:10,max:10,min:6},shareTxForMovement:{max:18e4,min:6e4},symbol:n.a[r.a.Sector12FoodNStuff]},{b:!0,initPrice:{max:3500,min:1500},marketCap:3e10,mv:{divisor:100,max:275,min:100},name:"Sigma Cosmetics",otlkMag:0,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:7e4,min:2e4},symbol:n.a["Sigma Cosmetics"]},{b:!0,initPrice:{max:1500,min:250},marketCap:42e9,mv:{divisor:100,max:350,min:200},name:r.a.Sector12JoesGuns,otlkMag:1,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:52e3,min:15e3},symbol:n.a[r.a.Sector12JoesGuns]},{b:!0,initPrice:{max:1500,min:250},marketCap:1e11,mv:{divisor:100,max:175,min:120},name:"Catalyst Ventures",otlkMag:13.5,spreadPerc:{divisor:10,max:14,min:5},shareTxForMovement:{max:72e3,min:24e3},symbol:n.a["Catalyst Ventures"]},{b:!0,initPrice:{max:3e4,min:15e3},marketCap:36e10,mv:{divisor:100,max:80,min:70},name:"Microdyne Technologies",otlkMag:8,spreadPerc:{divisor:10,max:10,min:3},shareTxForMovement:{max:216e3,min:9e4},symbol:n.a["Microdyne Technologies"]},{b:!0,initPrice:{max:24e3,min:12e3},marketCap:42e10,mv:{divisor:100,max:70,min:50},name:"Titan Laboratories",otlkMag:11,spreadPerc:{divisor:10,max:10,min:2},shareTxForMovement:{max:216e3,min:9e4},symbol:n.a["Titan Laboratories"]}]},,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(14),r=a(471),i=a(68),o=a(230),s=a(211);function l(e,t,a){const l=function(t){const n=e.gang;if(null===n)throw new Error("Must have joined gang");if(!(n instanceof r.a))throw a.makeRuntimeErrorMsg("gang."+t,"You do not currently have a Gang")},c=function(t,n){const r=e.gang;if(null===r)throw new Error("Must have joined gang");for(const e of r.members)if(e.name===n)return e;throw a.makeRuntimeErrorMsg("gang."+t,`Invalid gang member: '${n}'`)};return{createGang:function(t){a.updateDynamicRam("createGang",Object(n.c)(e,"gang","createGang"));if(!e.canAccessGang()||!["Slum Snakes","Tetrads","The Syndicate","The Dark Army","Speakers for the Dead","NiteSec","The Black Hand"].includes(t))return!1;if(e.inGang())return!1;if(!e.factions.includes(t))return!1;const r="NiteSec"===t||"The Black Hand"===t;return e.startGang(t,r),!0},inGang:function(){return a.updateDynamicRam("inGang",Object(n.c)(e,"gang","inGang")),e.inGang()},getMemberNames:function(){a.updateDynamicRam("getMemberNames",Object(n.c)(e,"gang","getMemberNames")),l("getMemberNames");const t=e.gang;if(null===t)throw new Error("Should not be called without Gang");return t.members.map(e=>e.name)},getGangInformation:function(){a.updateDynamicRam("getGangInformation",Object(n.c)(e,"gang","getGangInformation")),l("getGangInformation");const t=e.gang;if(null===t)throw new Error("Should not be called without Gang");return{faction:t.facName,isHacking:t.isHackingGang,moneyGainRate:t.moneyGainRate,power:t.getPower(),respect:t.respect,respectGainRate:t.respectGainRate,territory:t.getTerritory(),territoryClashChance:t.territoryClashChance,territoryWarfareEngaged:t.territoryWarfareEngaged,wantedLevel:t.wanted,wantedLevelGainRate:t.wantedGainRate,wantedPenalty:t.getWantedPenalty()}},getOtherGangInformation:function(){a.updateDynamicRam("getOtherGangInformation",Object(n.c)(e,"gang","getOtherGangInformation")),l("getOtherGangInformation");const t={};for(const e in i.a)t[e]=Object.assign({},i.a[e]);return t},getMemberInformation:function(t){a.updateDynamicRam("getMemberInformation",Object(n.c)(e,"gang","getMemberInformation")),l("getMemberInformation");const r=e.gang;if(null===r)throw new Error("Should not be called without Gang");const i=c("getMemberInformation",t);return{name:i.name,task:i.task,earnedRespect:i.earnedRespect,hack:i.hack,str:i.str,def:i.def,dex:i.dex,agi:i.agi,cha:i.cha,hack_exp:i.hack_exp,str_exp:i.str_exp,def_exp:i.def_exp,dex_exp:i.dex_exp,agi_exp:i.agi_exp,cha_exp:i.cha_exp,hack_mult:i.hack_mult,str_mult:i.str_mult,def_mult:i.def_mult,dex_mult:i.dex_mult,agi_mult:i.agi_mult,cha_mult:i.cha_mult,hack_asc_mult:i.calculateAscensionMult(i.hack_asc_points),str_asc_mult:i.calculateAscensionMult(i.str_asc_points),def_asc_mult:i.calculateAscensionMult(i.def_asc_points),dex_asc_mult:i.calculateAscensionMult(i.dex_asc_points),agi_asc_mult:i.calculateAscensionMult(i.agi_asc_points),cha_asc_mult:i.calculateAscensionMult(i.cha_asc_points),hack_asc_points:i.hack_asc_points,str_asc_points:i.str_asc_points,def_asc_points:i.def_asc_points,dex_asc_points:i.dex_asc_points,agi_asc_points:i.agi_asc_points,cha_asc_points:i.cha_asc_points,upgrades:i.upgrades.slice(),augmentations:i.augmentations.slice(),respectGain:i.calculateRespectGain(r),wantedLevelGain:i.calculateWantedLevelGain(r),moneyGain:i.calculateMoneyGain(r)}},canRecruitMember:function(){a.updateDynamicRam("canRecruitMember",Object(n.c)(e,"gang","canRecruitMember")),l("canRecruitMember");const t=e.gang;if(null===t)throw new Error("Should not be called without Gang");return t.canRecruitMember()},recruitMember:function(r){a.updateDynamicRam("recruitMember",Object(n.c)(e,"gang","recruitMember")),l("recruitMember");const i=e.gang;if(null===i)throw new Error("Should not be called without Gang");const o=i.recruitMember(r);return o?t.log("gang.recruitMember",()=>`Successfully recruited Gang Member '${r}'`):t.log("gang.recruitMember",()=>`Failed to recruit Gang Member '${r}'`),o},getTaskNames:function(){a.updateDynamicRam("getTaskNames",Object(n.c)(e,"gang","getTaskNames")),l("getTaskNames");const t=e.gang;if(null===t)throw new Error("Should not be called without Gang");const r=t.getAllTaskNames();return r.unshift("Unassigned"),r},setMemberTask:function(r,i){a.updateDynamicRam("setMemberTask",Object(n.c)(e,"gang","setMemberTask")),l("setMemberTask");const o=c("setMemberTask",r),s=e.gang;if(null===s)throw new Error("Should not be called without Gang");if(!s.getAllTaskNames().includes(i))return t.log("gang.setMemberTask",()=>`Failed to assign Gang Member '${r}' to Invalid task '${i}'. '${r}' is now Unassigned`),o.assignToTask("Unassigned");const u=o.assignToTask(i);return u?t.log("gang.setMemberTask",()=>`Successfully assigned Gang Member '${r}' to '${i}' task`):t.log("gang.setMemberTask",()=>`Failed to assign Gang Member '${r}' to '${i}' task. '${r}' is now Unassigned`),u},getTaskStats:function(t){a.updateDynamicRam("getTaskStats",Object(n.c)(e,"gang","getTaskStats")),l("getTaskStats");const r=function(e,t){const n=o.a[t];if(!n)throw a.makeRuntimeErrorMsg("gang."+e,`Invalid task: '${t}'`);return n}("getTaskStats",t),i=Object.assign({},r);return i.territory=Object.assign({},r.territory),i},getEquipmentNames:function(){return a.updateDynamicRam("getEquipmentNames",Object(n.c)(e,"gang","getEquipmentNames")),l("getEquipmentNames"),Object.keys(s.a)},getEquipmentCost:function(t){a.updateDynamicRam("getEquipmentCost",Object(n.c)(e,"gang","getEquipmentCost")),l("getEquipmentCost");const r=e.gang;if(null===r)throw new Error("Should not be called without Gang");const i=s.a[t];return null===i?1/0:r.getUpgradeCost(i)},getEquipmentType:function(t){a.updateDynamicRam("getEquipmentType",Object(n.c)(e,"gang","getEquipmentType")),l("getEquipmentType");const r=s.a[t];return null==r?"":r.getType()},getEquipmentStats:function(t){a.updateDynamicRam("getEquipmentStats",Object(n.c)(e,"gang","getEquipmentStats")),l("getEquipmentStats");const r=s.a[t];if(!r)throw a.makeRuntimeErrorMsg("getEquipmentStats","Invalid equipment: "+t);const i=r.mults;return Object.assign({},i)},purchaseEquipment:function(r,i){a.updateDynamicRam("purchaseEquipment",Object(n.c)(e,"gang","purchaseEquipment")),l("purchaseEquipment");const o=e.gang;if(null===o)throw new Error("Should not be called without Gang");const u=c("purchaseEquipment",r),m=s.a[i];if(!m)return!1;const h=u.buyUpgrade(m,e,o);return h?t.log("gang.purchaseEquipment",()=>`Purchased '${i}' for Gang member '${r}'`):t.log("gang.purchaseEquipment",()=>`Failed to purchase '${i}' for Gang member '${r}'`),h},ascendMember:function(r){a.updateDynamicRam("ascendMember",Object(n.c)(e,"gang","ascendMember")),l("ascendMember");const i=e.gang;if(null===i)throw new Error("Should not be called without Gang");const o=c("ascendMember",r);if(o.canAscend())return i.ascendMember(o,t)},getAscensionResult:function(t){a.updateDynamicRam("getAscensionResult",Object(n.c)(e,"gang","getAscensionResult")),l("getAscensionResult");if(null===e.gang)throw new Error("Should not be called without Gang");const r=c("getAscensionResult",t);if(r.canAscend())return{respect:r.earnedRespect,...r.getAscensionResults()}},setTerritoryWarfare:function(r){a.updateDynamicRam("setTerritoryWarfare",Object(n.c)(e,"gang","setTerritoryWarfare")),l("setTerritoryWarfare");const i=e.gang;if(null===i)throw new Error("Should not be called without Gang");r?(i.territoryWarfareEngaged=!0,t.log("gang.setTerritoryWarfare",()=>"Engaging in Gang Territory Warfare")):(i.territoryWarfareEngaged=!1,t.log("gang.setTerritoryWarfare",()=>"Disengaging in Gang Territory Warfare"))},getChanceToWinClash:function(t){a.updateDynamicRam("getChanceToWinClash",Object(n.c)(e,"gang","getChanceToWinClash")),l("getChanceToWinClash");const r=e.gang;if(null===r)throw new Error("Should not be called without Gang");if(null==i.a[t])throw a.makeRuntimeErrorMsg("gang.getChanceToWinClash","Invalid gang: "+t);const o=i.a[r.facName].power;return o/(i.a[t].power+o)},getBonusTime:function(){a.updateDynamicRam("getBonusTime",Object(n.c)(e,"gang","getBonusTime")),l("getBonusTime");const t=e.gang;if(null===t)throw new Error("Should not be called without Gang");return Math.round(t.storedCycles/5)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(14),r=a(171),i=a(80),o=a(74),s=a(538),l=a(20),c=a(347);function u(e,t,a){const u=function(t){if(10!==e.bitNodeN&&!i.a[10])throw a.makeRuntimeErrorMsg("sleeve."+t,"You do not currently have access to the Sleeve API. This is either because you are not in BitNode-10 or because you do not have Source-File 10")},m=function(n,r){if(r>=e.sleeves.length||r<0){const e="Invalid sleeve number: "+r;throw t.log(n,()=>e),a.makeRuntimeErrorMsg("sleeve."+n,e)}};return{getNumSleeves:function(){return a.updateDynamicRam("getNumSleeves",Object(n.c)(e,"sleeve","getNumSleeves")),u("getNumSleeves"),e.sleeves.length},setToShockRecovery:function(t=0){const r=a.number("setToShockRecovery","sleeveNumber",t);return a.updateDynamicRam("setToShockRecovery",Object(n.c)(e,"sleeve","setToShockRecovery")),u("setToShockRecovery"),m("setToShockRecovery",r),e.sleeves[r].shockRecovery(e)},setToSynchronize:function(t=0){const r=a.number("setToSynchronize","sleeveNumber",t);return a.updateDynamicRam("setToSynchronize",Object(n.c)(e,"sleeve","setToSynchronize")),u("setToSynchronize"),m("setToSynchronize",r),e.sleeves[r].synchronize(e)},setToCommitCrime:function(t=0,r=""){const i=a.number("setToCommitCrime","sleeveNumber",t),o=a.string("setToCommitCrime","crimeName",r);a.updateDynamicRam("setToCommitCrime",Object(n.c)(e,"sleeve","setToCommitCrime")),u("setToCommitCrime"),m("setToCommitCrime",i);const s=Object(c.b)(o);return null!==s&&e.sleeves[i].commitCrime(e,s.name)},setToUniversityCourse:function(t=0,r="",i=""){const o=a.number("setToUniversityCourse","sleeveNumber",t),s=a.string("setToUniversityCourse","universityName",r),l=a.string("setToUniversityCourse","className",i);return a.updateDynamicRam("setToUniversityCourse",Object(n.c)(e,"sleeve","setToUniversityCourse")),u("setToUniversityCourse"),m("setToUniversityCourse",o),e.sleeves[o].takeUniversityCourse(e,s,l)},travel:function(t=0,r=""){const i=a.number("travel","sleeveNumber",t),o=a.string("setToUniversityCourse","cityName",r);return a.updateDynamicRam("travel",Object(n.c)(e,"sleeve","travel")),u("travel"),m("travel",i),e.sleeves[i].travel(e,o)},setToCompanyWork:function(t=0,r=""){const i=a.number("setToCompanyWork","sleeveNumber",t),s=a.string("setToUniversityCourse","companyName",r);a.updateDynamicRam("setToCompanyWork",Object(n.c)(e,"sleeve","setToCompanyWork")),u("setToCompanyWork"),m("setToCompanyWork",i);for(let t=0;t<e.sleeves.length;++t){if(t===i)continue;const n=e.sleeves[t];if(n.currentTask===o.a.Company&&n.currentTaskLocation===s)throw a.makeRuntimeErrorMsg("sleeve.setToFactionWork",`Sleeve ${i} cannot work for company ${s} because Sleeve ${t} is already working for them.`)}return e.sleeves[i].workForCompany(e,s)},setToFactionWork:function(t=0,r="",i=""){const s=a.number("setToFactionWork","sleeveNumber",t),l=a.string("setToUniversityCourse","factionName",r),c=a.string("setToUniversityCourse","workType",i);a.updateDynamicRam("setToFactionWork",Object(n.c)(e,"sleeve","setToFactionWork")),u("setToFactionWork"),m("setToFactionWork",s);for(let t=0;t<e.sleeves.length;++t){if(t===s)continue;const n=e.sleeves[t];if(n.currentTask===o.a.Faction&&n.currentTaskLocation===l)throw a.makeRuntimeErrorMsg("sleeve.setToFactionWork",`Sleeve ${s} cannot work for faction ${l} because Sleeve ${t} is already working for them.`)}return e.sleeves[s].workForFaction(e,l,c)},setToGymWorkout:function(t=0,r="",i=""){const o=a.number("setToGymWorkout","sleeveNumber",t),s=a.string("setToUniversityCourse","gymName",r),l=a.string("setToUniversityCourse","stat",i);return a.updateDynamicRam("setToGymWorkout",Object(n.c)(e,"sleeve","setToGymWorkout")),u("setToGymWorkout"),m("setToGymWorkout",o),e.sleeves[o].workoutAtGym(e,s,l)},getSleeveStats:function(t=0){const r=a.number("getSleeveStats","sleeveNumber",t);a.updateDynamicRam("getSleeveStats",Object(n.c)(e,"sleeve","getSleeveStats")),u("getSleeveStats"),m("getSleeveStats",r);const i=e.sleeves[r];return{shock:100-i.shock,sync:i.sync,hacking:i.hacking,strength:i.strength,defense:i.defense,dexterity:i.dexterity,agility:i.agility,charisma:i.charisma}},getTask:function(t=0){const i=a.number("getTask","sleeveNumber",t);a.updateDynamicRam("getTask",Object(n.c)(e,"sleeve","getTask")),u("getTask"),m("getTask",i);const s=e.sleeves[i];return{task:o.a[s.currentTask],crime:s.crimeType,location:s.currentTaskLocation,gymStatType:s.gymStatType,factionWorkType:r.a[s.factionWorkType]}},getInformation:function(t=0){const r=a.number("getInformation","sleeveNumber",t);a.updateDynamicRam("getInformation",Object(n.c)(e,"sleeve","getInformation")),u("getInformation"),m("getInformation",r);const i=e.sleeves[r];return{city:i.city,hp:i.hp,jobs:Object.keys(e.jobs),jobTitle:Object.values(e.jobs),maxHp:i.max_hp,mult:{agility:i.agility_mult,agilityExp:i.agility_exp_mult,charisma:i.charisma_mult,charismaExp:i.charisma_exp_mult,companyRep:i.company_rep_mult,crimeMoney:i.crime_money_mult,crimeSuccess:i.crime_success_mult,defense:i.defense_mult,defenseExp:i.defense_exp_mult,dexterity:i.dexterity_mult,dexterityExp:i.dexterity_exp_mult,factionRep:i.faction_rep_mult,hacking:i.hacking_mult,hackingExp:i.hacking_exp_mult,strength:i.strength_mult,strengthExp:i.strength_exp_mult,workMoney:i.work_money_mult},timeWorked:i.currentTaskTime,earningsForSleeves:{workHackExpGain:i.earningsForSleeves.hack,workStrExpGain:i.earningsForSleeves.str,workDefExpGain:i.earningsForSleeves.def,workDexExpGain:i.earningsForSleeves.dex,workAgiExpGain:i.earningsForSleeves.agi,workChaExpGain:i.earningsForSleeves.cha,workMoneyGain:i.earningsForSleeves.money},earningsForPlayer:{workHackExpGain:i.earningsForPlayer.hack,workStrExpGain:i.earningsForPlayer.str,workDefExpGain:i.earningsForPlayer.def,workDexExpGain:i.earningsForPlayer.dex,workAgiExpGain:i.earningsForPlayer.agi,workChaExpGain:i.earningsForPlayer.cha,workMoneyGain:i.earningsForPlayer.money},earningsForTask:{workHackExpGain:i.earningsForTask.hack,workStrExpGain:i.earningsForTask.str,workDefExpGain:i.earningsForTask.def,workDexExpGain:i.earningsForTask.dex,workAgiExpGain:i.earningsForTask.agi,workChaExpGain:i.earningsForTask.cha,workMoneyGain:i.earningsForTask.money},workRepGain:i.getRepGain(e)}},getSleeveAugmentations:function(t=0){const r=a.number("getSleeveAugmentations","sleeveNumber",t);a.updateDynamicRam("getSleeveAugmentations",Object(n.c)(e,"sleeve","getSleeveAugmentations")),u("getSleeveAugmentations"),m("getSleeveAugmentations",r);const i=[];for(let t=0;t<e.sleeves[r].augmentations.length;t++)i.push(e.sleeves[r].augmentations[t].name);return i},getSleevePurchasableAugs:function(t=0){const r=a.number("getSleevePurchasableAugs","sleeveNumber",t);a.updateDynamicRam("getSleevePurchasableAugs",Object(n.c)(e,"sleeve","getSleevePurchasableAugs")),u("getSleevePurchasableAugs"),m("getSleevePurchasableAugs",r);const i=Object(s.a)(e.sleeves[r],e),o=[];for(let e=0;e<i.length;e++){const t=i[e];o.push({name:t.name,cost:t.startingCost})}return o},purchaseSleeveAug:function(t=0,r=""){const i=a.number("purchaseSleeveAug","sleeveNumber",t),o=a.string("setToUniversityCourse","augName",r);a.updateDynamicRam("purchaseSleeveAug",Object(n.c)(e,"sleeve","purchaseSleeveAug")),u("purchaseSleeveAug"),m("purchaseSleeveAug",i);const s=l.a[o];if(!s)throw a.makeRuntimeErrorMsg("sleeve.purchaseSleeveAug","Invalid aug: "+o);return e.sleeves[i].tryBuyAugmentation(e,s)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(109);function r(e,t){return{heart:{break:function(){return e.karma}},exploit:function(){e.giveExploit(n.a.UndocumentedFunctionCall)},bypass:function(a){a.completely_unused_field=void 0;const r=document;r.completely_unused_field=void 0,r.completely_unused_field=!0,a.completely_unused_field&&1.6===t.ramUsage&&e.giveExploit(n.a.Bypass),a.completely_unused_field=void 0,r.completely_unused_field=void 0},alterReality:function(){let t=!1;const a=function(e){0!==e&&(t=!t,a(e-1))};a(2),console.warn("I am sure that this variable is false."),!1!==t&&(console.warn("Reality has been altered!"),e.giveExploit(n.a.RealityAlteration))}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(34),r=a(55),i=a(87),o=a(208),s=a(231),l=a(24);function c(e,t,a){const c=function(t,n=""){if(isNaN(t))throw a.makeRuntimeErrorMsg(n,"Invalid index specified for Hacknet Node: "+t);if(t<0||t>=e.hacknetNodes.length)throw a.makeRuntimeErrorMsg(n,"Index specified for Hacknet Node is out-of-bounds: "+t);if(Object(r.g)(e)){const r=e.hacknetNodes[t];if("string"!=typeof r)throw new Error("hacknet node was not a string");const o=Object(l.d)(r);if(!(o instanceof i.a))throw new Error("hacknet server was not actually hacknet server");if(null==o)throw a.makeRuntimeErrorMsg(n,`Could not get Hacknet Server for index ${t}. This is probably a bug, please report to game dev`);return o}{const a=e.hacknetNodes[t];if(!(a instanceof o.a))throw new Error("hacknet node was not node.");return a}};return{numNodes:function(){return e.hacknetNodes.length},maxNumNodes:function(){return Object(r.g)(e)?n.b.MaxServers:1/0},purchaseNode:function(){return Object(r.l)(e)},getPurchaseNodeCost:function(){return Object(r.g)(e)?Object(r.b)(e):Object(r.a)(e)},getNodeStats:function(t){const a=c(t,"getNodeStats"),n=Object(r.g)(e),o={name:a instanceof i.a?a.hostname:a.name,level:a.level,ram:a instanceof i.a?a.maxRam:a.ram,ramUsed:a instanceof i.a?a.ramUsed:void 0,cores:a.cores,production:a instanceof i.a?a.hashRate:a.moneyGainRatePerSecond,timeOnline:a.onlineTimeSeconds,totalProduction:a instanceof i.a?a.totalHashesGenerated:a.totalMoneyGenerated};return n&&a instanceof i.a&&(o.cache=a.cache,o.hashCapacity=a.hashCapacity),o},upgradeLevel:function(t,a){const n=c(t,"upgradeLevel");return Object(r.n)(e,n,a)},upgradeRam:function(t,a){const n=c(t,"upgradeRam");return Object(r.o)(e,n,a)},upgradeCore:function(t,a){const n=c(t,"upgradeCore");return Object(r.k)(e,n,a)},upgradeCache:function(a,n){if(!Object(r.g)(e))return!1;const o=c(a,"upgradeCache");if(!(o instanceof i.a))return t.log("hacknet.upgradeCache",()=>"Can only be called on hacknet servers"),!1;const s=Object(r.j)(e,o,n);return s&&Object(r.p)(e),s},getLevelUpgradeCost:function(t,a){return c(t,"upgradeLevel").calculateLevelUpgradeCost(a,e.hacknet_node_level_cost_mult)},getRamUpgradeCost:function(t,a){return c(t,"upgradeRam").calculateRamUpgradeCost(a,e.hacknet_node_ram_cost_mult)},getCoreUpgradeCost:function(t,a){return c(t,"upgradeCore").calculateCoreUpgradeCost(a,e.hacknet_node_core_cost_mult)},getCacheUpgradeCost:function(a,n){if(!Object(r.g)(e))return 1/0;const o=c(a,"upgradeCache");return o instanceof i.a?o.calculateCacheUpgradeCost(n):(t.log("hacknet.getCacheUpgradeCost",()=>"Can only be called on hacknet servers"),-1)},numHashes:function(){return Object(r.g)(e)?e.hashManager.hashes:0},hashCapacity:function(){return Object(r.g)(e)?e.hashManager.capacity:0},hashCost:function(t){return Object(r.g)(e)?e.hashManager.getUpgradeCost(t):1/0},spendHashes:function(t,a){return!!Object(r.g)(e)&&Object(r.m)(e,t,a)},getHashUpgrades:function(){return Object(r.g)(e)?Object.values(s.a).map(e=>e.name):[]},getHashUpgradeLevel:function(t){const n=e.hashManager.upgrades[t];if(void 0===n)throw a.makeRuntimeErrorMsg("hacknet.hashUpgradeLevel","Invalid Hash Upgrade: "+t);return n},getStudyMult:function(){return Object(r.g)(e)?e.hashManager.getStudyMult():1},getTrainingMult:function(){return Object(r.g)(e)?e.hashManager.getTrainingMult():1}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(103),r=a(14),i=a(110),o=a(233),s=a(6);function l(e,t,a){function l(t){e.hasAugmentation(s.a.StaneksGift1,!0)||a.makeRuntimeErrorMsg(t,"Requires Stanek's Gift installed.")}return{width:function(){return i.b.width()},height:function(){return i.b.height()},charge:function(o,s){const c=a.number("stanek.charge","rootX",o),u=a.number("stanek.charge","rootY",s);a.updateDynamicRam("charge",Object(r.c)(e,"stanek","charge")),l("charge");const m=i.b.findFragment(c,u);if(!m)throw a.makeRuntimeErrorMsg("stanek.charge",`No fragment with root (${c}, ${u}).`);const h=i.b.inBonus()?200:1e3;return Object(n.c)(h,t).then((function(){const a=i.b.charge(e,m,t.scriptRef.threads);return t.log("stanek.charge",()=>`Charged fragment for ${a} charge.`),Promise.resolve()}))},fragmentDefinitions:function(){return a.updateDynamicRam("fragmentDefinitions",Object(r.c)(e,"stanek","fragmentDefinitions")),l("fragmentDefinitions"),t.log("stanek.fragmentDefinitions",()=>`Returned ${o.c.length} fragments`),o.c.map(e=>e.copy())},activeFragments:function(){return a.updateDynamicRam("activeFragments",Object(r.c)(e,"stanek","activeFragments")),l("activeFragments"),t.log("stanek.activeFragments",()=>`Returned ${i.b.fragments.length} fragments`),i.b.fragments.map(e=>({...e.copy(),...e.fragment().copy()}))},clear:function(){a.updateDynamicRam("clear",Object(r.c)(e,"stanek","clear")),l("clear"),t.log("stanek.clear",()=>"Cleared Stanek's Gift."),i.b.clear()},canPlace:function(t,n,s,c){const u=a.number("stanek.canPlace","rootX",t),m=a.number("stanek.canPlace","rootY",n),h=a.number("stanek.canPlace","rotation",s),d=a.number("stanek.canPlace","fragmentId",c);a.updateDynamicRam("canPlace",Object(r.c)(e,"stanek","canPlace")),l("canPlace");const p=Object(o.b)(d);if(!p)throw a.makeRuntimeErrorMsg("stanek.canPlace","Invalid fragment id: "+d);return i.b.canPlace(u,m,h,p)},place:function(t,n,s,c){const u=a.number("stanek.place","rootX",t),m=a.number("stanek.place","rootY",n),h=a.number("stanek.place","rotation",s),d=a.number("stanek.place","fragmentId",c);a.updateDynamicRam("place",Object(r.c)(e,"stanek","place")),l("place");const p=Object(o.b)(d);if(!p)throw a.makeRuntimeErrorMsg("stanek.place","Invalid fragment id: "+d);return i.b.place(u,m,h,p)},get:function(t,n){const o=a.number("stanek.get","rootX",t),s=a.number("stanek.get","rootY",n);a.updateDynamicRam("get",Object(r.c)(e,"stanek","get")),l("get");const c=i.b.findFragment(o,s);if(void 0!==c)return c.copy()},remove:function(t,n){const o=a.number("stanek.remove","rootX",t),s=a.number("stanek.remove","rootY",n);return a.updateDynamicRam("remove",Object(r.c)(e,"stanek","remove")),l("remove"),i.b.delete(o,s)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(5);function r(e,t,a,r){return 1+Math.log(e+1)/(100*Math.log(1.8))*Math.pow((t+1)/5,.07)*a*r*n.a.StaneksGiftPowerMultiplier}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={RAMBonus:.1,BaseSize:9}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(14),r=a(11),i=a(182),o=a(363),s=a(364);function l(e,t,a){return{getTheme:function(){return a.updateDynamicRam("getTheme",Object(n.c)(e,"ui","getTheme")),{...r.a.theme}},getStyles:function(){return a.updateDynamicRam("getStyles",Object(n.c)(e,"ui","getStyles")),{...r.a.styles}},setTheme:function(o){a.updateDynamicRam("setTheme",Object(n.c)(e,"ui","setTheme"));const s=/^(#)((?:[A-Fa-f0-9]{3}){1,2})$/,l={...r.a.theme},c=[];for(const e of Object.keys(o)){var u;l[e]?s.test(null!==(u=o[e])&&void 0!==u?u:"")?l[e]=o[e]:c.push(`Invalid color "${e}": ${o[e]}`):c.push(`Invalid key "${e}"`)}0===c.length?(Object.assign(r.a.theme,l),i.b.emit(),t.log("ui.setTheme",()=>"Successfully set theme")):t.log("ui.setTheme",()=>"Failed to set theme. Errors: "+c.join(", "))},setStyles:function(o){a.updateDynamicRam("setStyles",Object(n.c)(e,"ui","setStyles"));const s={...r.a.styles},l=[];for(const e of Object.keys(o))s[e]?s[e]=o[e]:l.push(`Invalid key "${e}"`);0===l.length?(Object.assign(r.a.styles,s),i.b.emit(),t.log("ui.setStyles",()=>"Successfully set styles")):t.log("ui.setStyles",()=>"Failed to set styles. Errors: "+l.join(", "))},resetTheme:function(){a.updateDynamicRam("resetTheme",Object(n.c)(e,"ui","resetTheme")),r.a.theme={...o.a},i.b.emit(),t.log("ui.resetTheme",()=>"Reinitialized theme to default")},resetStyles:function(){a.updateDynamicRam("resetStyles",Object(n.c)(e,"ui","resetStyles")),r.a.styles={...s.a},i.b.emit(),t.log("ui.resetStyles",()=>"Reinitialized styles to default")}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(224),r=a(14),i=a(5);function o(e,t,a){const o=function(t,r=!1){const i=e.bladeburner;if(null===i)throw new Error("Must have joined bladeburner");if(!(7===e.bitNodeN||e.sourceFiles.some(e=>7===e.n))){const e="You do not currently have access to the Bladeburner API. You must either be in BitNode-7 or have Source-File 7.";throw a.makeRuntimeErrorMsg("bladeburner."+t,e)}if(!r){if(!(i instanceof n.a)){const e="You must be a member of the Bladeburner division to use this API.";throw a.makeRuntimeErrorMsg("bladeburner."+t,e)}}},s=function(t,n){const r=e.bladeburner;if(null===r)throw new Error("Must have joined bladeburner");if(!r.cities.hasOwnProperty(n))throw a.makeRuntimeErrorMsg("bladeburner."+t,"Invalid city: "+n)},l=function(t,n,r){const i=e.bladeburner;if(null===i)throw new Error("Must have joined bladeburner");const o=i.getActionIdFromTypeAndName(n,r);if(!o)throw a.makeRuntimeErrorMsg("bladeburner."+t,`Invalid action type='${n}', name='${r}'`);const s=i.getActionObject(o);if(!s)throw a.makeRuntimeErrorMsg("bladeburner."+t,`Invalid action type='${n}', name='${r}'`);return s};return{getContractNames:function(){a.updateDynamicRam("getContractNames",Object(r.c)(e,"bladeburner","getContractNames")),o("getContractNames");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getContractNamesNetscriptFn()},getOperationNames:function(){a.updateDynamicRam("getOperationNames",Object(r.c)(e,"bladeburner","getOperationNames")),o("getOperationNames");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getOperationNamesNetscriptFn()},getBlackOpNames:function(){a.updateDynamicRam("getBlackOpNames",Object(r.c)(e,"bladeburner","getBlackOpNames")),o("getBlackOpNames");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getBlackOpNamesNetscriptFn()},getBlackOpRank:function(t=""){a.updateDynamicRam("getBlackOpRank",Object(r.c)(e,"bladeburner","getBlackOpRank")),o("getBlackOpRank");return l("getBlackOpRank","blackops",t).reqdRank},getGeneralActionNames:function(){a.updateDynamicRam("getGeneralActionNames",Object(r.c)(e,"bladeburner","getGeneralActionNames")),o("getGeneralActionNames");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getGeneralActionNamesNetscriptFn()},getSkillNames:function(){a.updateDynamicRam("getSkillNames",Object(r.c)(e,"bladeburner","getSkillNames")),o("getSkillNames");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getSkillNamesNetscriptFn()},startAction:function(n="",i=""){a.updateDynamicRam("startAction",Object(r.c)(e,"bladeburner","startAction")),o("startAction");const s=e.bladeburner;if(null===s)throw new Error("Should not be called without Bladeburner");try{return s.startActionNetscriptFn(e,n,i,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.startAction",e)}},stopBladeburnerAction:function(){a.updateDynamicRam("stopBladeburnerAction",Object(r.c)(e,"bladeburner","stopBladeburnerAction")),o("stopBladeburnerAction");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.resetAction()},getCurrentAction:function(){a.updateDynamicRam("getCurrentAction",Object(r.c)(e,"bladeburner","getCurrentAction")),o("getCurrentAction");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.getTypeAndNameFromActionId(t.action)},getActionTime:function(n="",i=""){a.updateDynamicRam("getActionTime",Object(r.c)(e,"bladeburner","getActionTime")),o("getActionTime");const s=e.bladeburner;if(null===s)throw new Error("Should not be called without Bladeburner");try{return s.getActionTimeNetscriptFn(e,n,i,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getActionTime",e)}},getActionEstimatedSuccessChance:function(n="",i=""){a.updateDynamicRam("getActionEstimatedSuccessChance",Object(r.c)(e,"bladeburner","getActionEstimatedSuccessChance")),o("getActionEstimatedSuccessChance");const s=e.bladeburner;if(null===s)throw new Error("Should not be called without Bladeburner");try{return s.getActionEstimatedSuccessChanceNetscriptFn(e,n,i,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getActionEstimatedSuccessChance",e)}},getActionRepGain:function(t="",n="",s){a.updateDynamicRam("getActionRepGain",Object(r.c)(e,"bladeburner","getActionRepGain")),o("getActionRepGain");const c=l("getActionRepGain",t,n);let u;return u=null==s||isNaN(s)?Math.pow(c.rewardFac,c.level-1):Math.pow(c.rewardFac,s-1),c.rankGain*u*i.a.BladeburnerRank},getActionCountRemaining:function(n="",i=""){a.updateDynamicRam("getActionCountRemaining",Object(r.c)(e,"bladeburner","getActionCountRemaining")),o("getActionCountRemaining");const s=e.bladeburner;if(null===s)throw new Error("Should not be called without Bladeburner");try{return s.getActionCountRemainingNetscriptFn(n,i,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getActionCountRemaining",e)}},getActionMaxLevel:function(t="",n=""){a.updateDynamicRam("getActionMaxLevel",Object(r.c)(e,"bladeburner","getActionMaxLevel")),o("getActionMaxLevel");return l("getActionMaxLevel",t,n).maxLevel},getActionCurrentLevel:function(t="",n=""){a.updateDynamicRam("getActionCurrentLevel",Object(r.c)(e,"bladeburner","getActionCurrentLevel")),o("getActionCurrentLevel");return l("getActionCurrentLevel",t,n).level},getActionAutolevel:function(t="",n=""){a.updateDynamicRam("getActionAutolevel",Object(r.c)(e,"bladeburner","getActionAutolevel")),o("getActionAutolevel");return l("getActionCurrentLevel",t,n).autoLevel},setActionAutolevel:function(t="",n="",i=!0){a.updateDynamicRam("setActionAutolevel",Object(r.c)(e,"bladeburner","setActionAutolevel")),o("setActionAutolevel");l("setActionAutolevel",t,n).autoLevel=i},setActionLevel:function(t="",n="",i=1){a.updateDynamicRam("setActionLevel",Object(r.c)(e,"bladeburner","setActionLevel")),o("setActionLevel");const s=l("setActionLevel",t,n);if(i<1||i>s.maxLevel)throw a.makeRuntimeErrorMsg("bladeburner.setActionLevel",`Level must be between 1 and ${s.maxLevel}, is ${i}`);s.level=i},getRank:function(){a.updateDynamicRam("getRank",Object(r.c)(e,"bladeburner","getRank")),o("getRank");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.rank},getSkillPoints:function(){a.updateDynamicRam("getSkillPoints",Object(r.c)(e,"bladeburner","getSkillPoints")),o("getSkillPoints");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.skillPoints},getSkillLevel:function(n=""){a.updateDynamicRam("getSkillLevel",Object(r.c)(e,"bladeburner","getSkillLevel")),o("getSkillLevel");const i=e.bladeburner;if(null===i)throw new Error("Should not be called without Bladeburner");try{return i.getSkillLevelNetscriptFn(n,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getSkillLevel",e)}},getSkillUpgradeCost:function(n=""){a.updateDynamicRam("getSkillUpgradeCost",Object(r.c)(e,"bladeburner","getSkillUpgradeCost")),o("getSkillUpgradeCost");const i=e.bladeburner;if(null===i)throw new Error("Should not be called without Bladeburner");try{return i.getSkillUpgradeCostNetscriptFn(n,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getSkillUpgradeCost",e)}},upgradeSkill:function(n){a.updateDynamicRam("upgradeSkill",Object(r.c)(e,"bladeburner","upgradeSkill")),o("upgradeSkill");const i=e.bladeburner;if(null===i)throw new Error("Should not be called without Bladeburner");try{return i.upgradeSkillNetscriptFn(n,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.upgradeSkill",e)}},getTeamSize:function(n="",i=""){a.updateDynamicRam("getTeamSize",Object(r.c)(e,"bladeburner","getTeamSize")),o("getTeamSize");const s=e.bladeburner;if(null===s)throw new Error("Should not be called without Bladeburner");try{return s.getTeamSizeNetscriptFn(n,i,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.getTeamSize",e)}},setTeamSize:function(n="",i="",s){a.updateDynamicRam("setTeamSize",Object(r.c)(e,"bladeburner","setTeamSize")),o("setTeamSize");const l=e.bladeburner;if(null===l)throw new Error("Should not be called without Bladeburner");try{return l.setTeamSizeNetscriptFn(n,i,s,t)}catch(e){throw a.makeRuntimeErrorMsg("bladeburner.setTeamSize",e)}},getCityEstimatedPopulation:function(t){a.updateDynamicRam("getCityEstimatedPopulation",Object(r.c)(e,"bladeburner","getCityEstimatedPopulation")),o("getCityEstimatedPopulation"),s("getCityEstimatedPopulation",t);const n=e.bladeburner;if(null===n)throw new Error("Should not be called without Bladeburner");return n.cities[t].popEst},getCityCommunities:function(t){a.updateDynamicRam("getCityCommunities",Object(r.c)(e,"bladeburner","getCityCommunities")),o("getCityCommunities"),s("getCityCommunities",t);const n=e.bladeburner;if(null===n)throw new Error("Should not be called without Bladeburner");return n.cities[t].comms},getCityChaos:function(t){a.updateDynamicRam("getCityChaos",Object(r.c)(e,"bladeburner","getCityChaos")),o("getCityChaos"),s("getCityChaos",t);const n=e.bladeburner;if(null===n)throw new Error("Should not be called without Bladeburner");return n.cities[t].chaos},getCity:function(){a.updateDynamicRam("getCity",Object(r.c)(e,"bladeburner","getCity")),o("getCityChaos");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return t.city},switchCity:function(t){a.updateDynamicRam("switchCity",Object(r.c)(e,"bladeburner","switchCity")),o("switchCity"),s("switchCity",t);const n=e.bladeburner;if(null===n)throw new Error("Should not be called without Bladeburner");return n.city=t},getStamina:function(){a.updateDynamicRam("getStamina",Object(r.c)(e,"bladeburner","getStamina")),o("getStamina");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return[t.stamina,t.maxStamina]},joinBladeburnerFaction:function(){a.updateDynamicRam("joinBladeburnerFaction",Object(r.c)(e,"bladeburner","joinBladeburnerFaction")),o("joinBladeburnerFaction",!0);const n=e.bladeburner;if(null===n)throw new Error("Should not be called without Bladeburner");return n.joinBladeburnerFactionNetscriptFn(t)},joinBladeburnerDivision:function(){return a.updateDynamicRam("joinBladeburnerDivision",Object(r.c)(e,"bladeburner","joinBladeburnerDivision")),(7===e.bitNodeN||e.sourceFileLvl(7)>0)&&(8!==e.bitNodeN&&(e.bladeburner instanceof n.a||(e.strength>=100&&e.defense>=100&&e.dexterity>=100&&e.agility>=100?(e.bladeburner=new n.a(e),t.log("joinBladeburnerDivision",()=>"You have been accepted into the Bladeburner division"),!0):(t.log("joinBladeburnerDivision",()=>"You do not meet the requirements for joining the Bladeburner division"),!1))))},getBonusTime:function(){a.updateDynamicRam("getBonusTime",Object(r.c)(e,"bladeburner","getBonusTime")),o("getBonusTime");const t=e.bladeburner;if(null===t)throw new Error("Should not be called without Bladeburner");return Math.round(t.storedCycles/5)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(14),r=a(839);function i(e,t,a){const i=function(e,t,n){const r=a.getServer(t,e).getContract(n);if(null==r)throw a.makeRuntimeErrorMsg("codingcontract."+e,`Cannot find contract '${n}' on server '${t}'`);return r};return{attempt:function(o,s,l=t.hostname,{returnReward:c}={}){a.updateDynamicRam("attempt",Object(n.c)(e,"codingcontract","attempt"));const u=i("attempt",l,s);if(Object(r.a)(o)){const e=[];for(let t=0;t<o.length;++t)e.push(["[",o[t].toString(),"]"].join(""));o=e.join(",")}else o=String(o);const m=u.reward;if(null===m)throw new Error("Somehow solved a contract that didn't have a reward");const h=a.getServer(l,"codingcontract.attempt");if(u.isSolution(o)){const a=e.gainCodingContractReward(m,u.getDifficulty());return t.log("codingcontract.attempt",()=>`Successfully completed Coding Contract '${s}'. Reward: ${a}`),h.removeContract(s),!c||a}return++u.tries,u.tries>=u.getMaxNumTries()?(t.log("codingcontract.attempt",()=>`Coding Contract attempt '${s}' failed. Contract is now self-destructing`),h.removeContract(s)):t.log("codingcontract.attempt",()=>`Coding Contract attempt '${s}' failed. ${u.getMaxNumTries()-u.tries} attempts remaining.`),!!c&&""},getContractType:function(r,o=t.hostname){a.updateDynamicRam("getContractType",Object(n.c)(e,"codingcontract","getContractType"));return i("getContractType",o,r).getType()},getData:function(r,o=t.hostname){a.updateDynamicRam("getData",Object(n.c)(e,"codingcontract","getData"));const s=i("getData",o,r).getData();if(s.constructor===Array){const e=s.slice();for(let t=0;t<e.length;++t)s[t].constructor===Array&&(e[t]=s[t].slice());return e}return s},getDescription:function(r,o=t.hostname){a.updateDynamicRam("getDescription",Object(n.c)(e,"codingcontract","getDescription"));return i("getDescription",o,r).getDescription()},getNumTriesRemaining:function(r,o=t.hostname){a.updateDynamicRam("getNumTriesRemaining",Object(n.c)(e,"codingcontract","getNumTriesRemaining"));const s=i("getNumTriesRemaining",o,r);return s.getMaxNumTries()-s.tries}}}},function(e,t,a){"use strict";function n(e){return e.constructor===Array&&e.every(e=>e.constructor===Array)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(103),r=a(73),i=a(415),o=a(416),s=a(53),l=a(298);function c(e,t,a){function c(){const t=e.corporation;if(null===t)throw new Error("cannot be called without a corporation");return t}function u(e){const t=c().divisions.find(t=>t.name===e);if(void 0===t)throw new Error(`No division named '${e}'`);return t}function m(e,t){const a=u(e);if(!(t in a.offices))throw new Error(`Invalid city name '${t}'`);const n=a.offices[t];if(0===n)throw new Error(`${a.name} has not expanded to '${t}'`);return n}function h(e,t){const a=u(e);if(!(t in a.warehouses))throw new Error(`Invalid city name '${t}'`);const n=a.warehouses[t];if(0===n)throw new Error(`${a.name} has not expanded to '${t}'`);return n}function d(e,t,a){const n=h(e,t).materials[a];if(void 0===n)throw new Error(`Invalid material name: '${a}'`);return n}function p(e,t){const a=u(e).products[t];if(void 0===a)throw new Error(`Invalid product name: '${t}'`);return a}function f(e,t,a){const n=m(e,t).employees.find(e=>e.name===a);if(void 0===n)throw new Error(`Invalid employee name: '${a}'`);return n}function g(t,n){if(null===e.corporation)throw a.makeRuntimeErrorMsg("corporation."+t,"Must own a corporation.");if(n&&!e.corporation.unlockUpgrades[n])throw a.makeRuntimeErrorMsg("corporation."+t,"You do not have access to this API.")}return{...{getWarehouse:function(e,t){g("getWarehouse",7);const n=h(a.string("getWarehouse","divisionName",e),a.string("getWarehouse","cityName",t));return{level:n.level,loc:n.loc,size:n.size,sizeUsed:n.sizeUsed}},getMaterial:function(e,t,n){g("getMaterial",7);const r=d(a.string("getMaterial","divisionName",e),a.string("getMaterial","cityName",t),a.string("getMaterial","materialName",n));return{name:r.name,qty:r.qty,qlt:r.qlt}},getProduct:function(e,t){g("getProduct",7);const n=p(a.string("getProduct","divisionName",e),a.string("getProduct","productName",t));return{name:n.name,dmd:n.dmd,cmp:n.cmp,pCost:n.pCost,sCost:n.sCost}},purchaseWarehouse:function(e,t){g("purchaseWarehouse",7);const n=a.string("purchaseWarehouse","divisionName",e),i=a.string("purchaseWarehouse","cityName",t),o=c();Object(r.m)(o,u(n),i)},upgradeWarehouse:function(e,t){g("upgradeWarehouse",7);const n=a.string("upgradeWarehouse","divisionName",e),i=a.string("upgradeWarehouse","cityName",t),o=c();Object(r.z)(o,u(n),h(n,i))},sellMaterial:function(e,t,n,i,o){g("sellMaterial",7);const s=a.string("sellMaterial","divisionName",e),l=a.string("sellMaterial","cityName",t),c=a.string("sellMaterial","materialName",n),u=a.string("sellMaterial","amt",i),m=a.string("sellMaterial","price",o),h=d(s,l,c);Object(r.o)(h,u,m)},sellProduct:function(e,t,n,i,o,s){g("sellProduct",7);const l=a.string("sellProduct","divisionName",e),c=a.string("sellProduct","cityName",t),u=a.string("sellProduct","productName",n),m=a.string("sellProduct","amt",i),h=a.string("sellProduct","price",o),d=a.boolean(s),f=p(l,u);Object(r.p)(f,c,m,h,d)},discontinueProduct:function(e,t){g("discontinueProduct",7);const n=a.string("discontinueProduct","divisionName",e),r=a.string("discontinueProduct","productName",t);u(n).discontinueProduct(p(n,r))},setSmartSupply:function(e,t,n){g("setSmartSupply",7);const i=a.string("setSmartSupply","divisionName",e),o=a.string("sellProduct","cityName",t),s=a.boolean(n),l=h(i,o);Object(r.u)(l,s)},buyMaterial:function(e,t,n,i){g("buyMaterial",7);const o=a.string("buyMaterial","divisionName",e),s=a.string("buyMaterial","cityName",t),l=a.string("buyMaterial","materialName",n),c=a.number("buyMaterial","amt",i),u=d(o,s,l);Object(r.c)(u,c)},makeProduct:function(e,t,n,i,o){g("makeProduct",7);const s=a.string("makeProduct","divisionName",e),l=a.string("makeProduct","cityName",t),m=a.string("makeProduct","productName",n),h=a.number("makeProduct","designInvest",i),d=a.number("makeProduct","marketingInvest",o),p=c();Object(r.j)(p,u(s),l,m,h,d)},exportMaterial:function(e,t,n,i,o,s){g("exportMaterial",7);const l=a.string("exportMaterial","sourceDivision",e),c=a.string("exportMaterial","sourceCity",t),u=a.string("exportMaterial","targetDivision",n),m=a.string("exportMaterial","targetCity",i),h=a.string("exportMaterial","materialName",o),p=a.string("exportMaterial","amt",s);Object(r.e)(u,m,d(l,c,h),p+"")},cancelExportMaterial:function(e,t,n,i,o,s){g("cancelExportMaterial",7);const l=a.string("cancelExportMaterial","sourceDivision",e),c=a.string("cancelExportMaterial","sourceCity",t),u=a.string("cancelExportMaterial","targetDivision",n),m=a.string("cancelExportMaterial","targetCity",i),h=a.string("cancelExportMaterial","materialName",o),p=a.string("cancelExportMaterial","amt",s);Object(r.d)(u,m,d(l,c,h),p+"")},setMaterialMarketTA1:function(e,t,n,i){g("setMaterialMarketTA1",7);const o=a.string("setMaterialMarketTA1","divisionName",e),s=a.string("setMaterialMarketTA1","cityName",t),l=a.string("setMaterialMarketTA1","materialName",n),c=a.boolean(i);Object(r.q)(d(o,s,l),c)},setMaterialMarketTA2:function(e,t,n,i){g("setMaterialMarketTA2",7);const o=a.string("setMaterialMarketTA2","divisionName",e),s=a.string("setMaterialMarketTA2","cityName",t),l=a.string("setMaterialMarketTA2","materialName",n),c=a.boolean(i);Object(r.r)(d(o,s,l),c)},setProductMarketTA1:function(e,t,n){g("setProductMarketTA1",7);const i=a.string("setProductMarketTA1","divisionName",e),o=a.string("setProductMarketTA1","productName",t),s=a.boolean(n);Object(r.s)(p(i,o),s)},setProductMarketTA2:function(e,t,n){g("setProductMarketTA2",7);const i=a.string("setProductMarketTA2","divisionName",e),o=a.string("setProductMarketTA2","productName",t),s=a.boolean(n);Object(r.t)(p(i,o),s)}},...{assignJob:function(e,i,o,s){g("assignJob",8);const l=a.string("assignJob","divisionName",e),c=a.string("assignJob","cityName",i),u=a.string("assignJob","employeeName",o),m=a.string("assignJob","job",s),h=f(l,c,u);return Object(n.c)(1e3,t).then((function(){return Promise.resolve(Object(r.a)(h,m))}))},hireEmployee:function(e,t){g("hireEmployee",8);return m(a.string("hireEmployee","divisionName",e),a.string("hireEmployee","cityName",t)).hireRandomEmployee()},upgradeOfficeSize:function(e,t,n){g("upgradeOfficeSize",8);const i=a.string("upgradeOfficeSize","divisionName",e),o=a.string("upgradeOfficeSize","cityName",t),s=a.number("upgradeOfficeSize","size",n),l=m(i,o),u=c();Object(r.y)(u,l,s)},throwParty:function(i,o,s){g("throwParty",8);const u=a.string("throwParty","divisionName",i),h=a.string("throwParty","cityName",o),d=a.number("throwParty","costPerEmployee",s),p=m(u,h),f=c();return Object(n.c)(6e4/(e.hacking_speed_mult*Object(l.a)(e.intelligence,1)),t).then((function(){return Promise.resolve(Object(r.w)(f,p,d))}))},buyCoffee:function(i,o){g("buyCoffee",8);const s=a.string("buyCoffee","divisionName",i),h=a.string("buyCoffee","cityName",o),d=c();return Object(n.c)(6e4/(e.hacking_speed_mult*Object(l.a)(e.intelligence,1)),t).then((function(){return Promise.resolve(Object(r.b)(d,u(s),m(s,h)))}))},hireAdVert:function(e){g("hireAdVert",8);const t=a.string("hireAdVert","divisionName",e),n=c();Object(r.f)(n,u(t),m(t,"Sector-12"))},research:function(e,t){g("research",8);const n=a.string("research","divisionName",e),i=a.string("research","researchName",t);Object(r.n)(u(n),i)},getOffice:function(e,t){g("getOffice",8);const n=m(a.string("getOffice","divisionName",e),a.string("getOffice","cityName",t));return{loc:n.loc,size:n.size,minEne:n.minEne,maxEne:n.maxEne,minHap:n.minHap,maxHap:n.maxHap,maxMor:n.maxMor,employees:n.employees.map(e=>e.name),employeeProd:{Operations:n.employeeProd[s.a.Operations],Engineer:n.employeeProd[s.a.Engineer],Business:n.employeeProd[s.a.Business],Management:n.employeeProd[s.a.Management],"Research & Development":n.employeeProd[s.a.RandD],Training:n.employeeProd[s.a.Training]}}},getEmployee:function(e,t,n){g("getEmployee",8);const r=f(a.string("getEmployee","divisionName",e),a.string("getEmployee","cityName",t),a.string("getEmployee","employeeName",n));return{name:r.name,mor:r.mor,hap:r.hap,ene:r.ene,int:r.int,cha:r.cha,exp:r.exp,cre:r.cre,eff:r.eff,sal:r.sal,loc:r.loc,pos:r.pos}}},expandIndustry:function(e,t){g("expandIndustry");const n=a.string("expandIndustry","industryName",e),i=a.string("expandIndustry","divisionName",t),o=c();Object(r.l)(o,n,i)},expandCity:function(e,t){g("expandCity");const n=a.string("expandCity","divisionName",e),i=a.string("expandCity","cityName",t),o=c(),s=u(n);Object(r.k)(o,s,i)},unlockUpgrade:function(e){g("unlockUpgrade");const t=a.string("unlockUpgrade","upgradeName",e),n=c(),o=Object.values(i.a).find(e=>e[2]===t);if(void 0===o)throw new Error(`No upgrade named '${t}'`);Object(r.x)(n,o)},levelUpgrade:function(e){g("levelUpgrade");const t=a.string("levelUpgrade","upgradeName",e),n=c(),i=Object.values(o.a).find(e=>e[4]===t);if(void 0===i)throw new Error(`No upgrade named '${t}'`);Object(r.h)(n,i)},issueDividends:function(e){g("issueDividends");const t=a.number("issueDividends","percent",e),n=c();Object(r.g)(n,t)},getDivision:function(e){g("getDivision");const t=u(a.string("getDivision","divisionName",e)),n=[];for(const e of Object.values(t.offices))0!==e&&n.push(e.loc);return{name:t.name,type:t.type,awareness:t.awareness,popularity:t.popularity,prodMult:t.prodMult,research:t.sciResearch.qty,lastCycleRevenue:t.lastCycleRevenue,lastCycleExpenses:t.lastCycleExpenses,thisCycleRevenue:t.thisCycleRevenue,thisCycleExpenses:t.thisCycleExpenses,upgrades:t.upgrades,cities:n}},getCorporation:function(){g("getCorporation");const e=c();return{name:e.name,funds:e.funds,revenue:e.revenue,expenses:e.expenses,public:e.public,totalShares:e.totalShares,numShares:e.numShares,shareSaleCooldown:e.shareSaleCooldown,issuedShares:e.issuedShares,sharePrice:e.sharePrice,state:e.state.getState()}}}}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return Industry}));var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(21),_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(23),_IndustryData__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(51),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(42),_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(53),_Material__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(183),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(32),_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(842),_OfficeSpace__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(348),_Product__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(371),_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(15),_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(126),_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(169),_Warehouse__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(229),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(349);function _defineProperty(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Industry{constructor(e={}){_defineProperty(this,"name",""),_defineProperty(this,"type",_IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Agriculture),_defineProperty(this,"sciResearch",new _Material__WEBPACK_IMPORTED_MODULE_5__.a({name:"Scientific Research"})),_defineProperty(this,"researched",{}),_defineProperty(this,"reqMats",{}),_defineProperty(this,"prodMats",[]),_defineProperty(this,"products",{}),_defineProperty(this,"makesProducts",!1),_defineProperty(this,"awareness",0),_defineProperty(this,"popularity",0),_defineProperty(this,"startingCost",0),_defineProperty(this,"reFac",0),_defineProperty(this,"sciFac",0),_defineProperty(this,"hwFac",0),_defineProperty(this,"robFac",0),_defineProperty(this,"aiFac",0),_defineProperty(this,"advFac",0),_defineProperty(this,"prodMult",0),_defineProperty(this,"upgrades",Array(Object.keys(_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_14__.a).length).fill(0)),_defineProperty(this,"state","START"),_defineProperty(this,"newInd",!0),_defineProperty(this,"offices",{[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Aevum]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Chongqing]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Sector12]:new _OfficeSpace__WEBPACK_IMPORTED_MODULE_8__.a({loc:_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Sector12,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.OfficeInitialSize}),[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.NewTokyo]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Ishima]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Volhaven]:0}),this.name=e.name?e.name:"",this.type=e.type?e.type:_IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Agriculture,this.lastCycleRevenue=0,this.lastCycleExpenses=0,this.thisCycleRevenue=0,this.thisCycleExpenses=0,this.warehouses={[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Aevum]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Chongqing]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Sector12]:new _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a({corp:e.corp,industry:this,loc:_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Sector12,size:_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.WarehouseInitialSize}),[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.NewTokyo]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Ishima]:0,[_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__.a.Volhaven]:0},this.init()}init(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.d[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);switch(this.startingCost=e,this.type){case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Energy:this.reFac=.65,this.sciFac=.7,this.robFac=.05,this.aiFac=.3,this.advFac=.08,this.reqMats={Hardware:.1,Metal:.2},this.prodMats=["Energy"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Utilities:case"Utilities":this.reFac=.5,this.sciFac=.6,this.robFac=.4,this.aiFac=.4,this.advFac=.08,this.reqMats={Hardware:.1,Metal:.1},this.prodMats=["Water"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Agriculture:this.reFac=.72,this.sciFac=.5,this.hwFac=.2,this.robFac=.3,this.aiFac=.3,this.advFac=.04,this.reqMats={Water:.5,Energy:.5},this.prodMats=["Plants","Food"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Fishing:this.reFac=.15,this.sciFac=.35,this.hwFac=.35,this.robFac=.5,this.aiFac=.2,this.advFac=.08,this.reqMats={Energy:.5},this.prodMats=["Food"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Mining:this.reFac=.3,this.sciFac=.26,this.hwFac=.4,this.robFac=.45,this.aiFac=.45,this.advFac=.06,this.reqMats={Energy:.8},this.prodMats=["Metal"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Food:this.sciFac=.12,this.hwFac=.15,this.robFac=.3,this.aiFac=.25,this.advFac=.25,this.reFac=.05,this.reqMats={Food:.5,Water:.5,Energy:.2},this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Tobacco:this.reFac=.15,this.sciFac=.75,this.hwFac=.15,this.robFac=.2,this.aiFac=.15,this.advFac=.2,this.reqMats={Plants:1,Water:.2},this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Chemical:this.reFac=.25,this.sciFac=.75,this.hwFac=.2,this.robFac=.25,this.aiFac=.2,this.advFac=.07,this.reqMats={Plants:1,Energy:.5,Water:.5},this.prodMats=["Chemicals"];break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Pharmaceutical:this.reFac=.05,this.sciFac=.8,this.hwFac=.15,this.robFac=.25,this.aiFac=.2,this.advFac=.16,this.reqMats={Chemicals:2,Energy:1,Water:.5},this.prodMats=["Drugs"],this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Computer:case"Computer":this.reFac=.2,this.sciFac=.62,this.robFac=.36,this.aiFac=.19,this.advFac=.17,this.reqMats={Metal:2,Energy:1},this.prodMats=["Hardware"],this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Robotics:this.reFac=.32,this.sciFac=.65,this.aiFac=.36,this.advFac=.18,this.hwFac=.19,this.reqMats={Hardware:5,Energy:3},this.prodMats=["Robots"],this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Software:this.sciFac=.62,this.advFac=.16,this.hwFac=.25,this.reFac=.15,this.aiFac=.18,this.robFac=.05,this.reqMats={Hardware:.5,Energy:.5},this.prodMats=["AICores"],this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Healthcare:this.reFac=.1,this.sciFac=.75,this.advFac=.11,this.hwFac=.1,this.robFac=.1,this.aiFac=.1,this.reqMats={Robots:10,AICores:5,Energy:5,Water:5},this.makesProducts=!0;break;case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.RealEstate:this.robFac=.6,this.aiFac=.6,this.advFac=.25,this.sciFac=.05,this.hwFac=.05,this.reqMats={Metal:5,Energy:5,Water:2,Hardware:4},this.prodMats=["RealEstate"],this.makesProducts=!0;break;default:return void console.error("Invalid Industry Type passed into Industry.init(): "+this.type)}}getProductDescriptionText(){if(!this.makesProducts)return"";switch(this.type){case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Food:return"create and manage restaurants";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Tobacco:return"create tobacco and tobacco-related products";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Pharmaceutical:return"develop new pharmaceutical drugs";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Computer:case"Computer":return"create new computer hardware and networking infrastructures";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Robotics:return"build specialized robots and robot-related products";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Software:return"develop computer software";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Healthcare:return"build and manage hospitals";case _IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.RealEstate:return"develop and manage real estate properties";default:return console.error("Invalid industry type in Industry.getProductDescriptionText"),""}}getMaximumNumberProducts(){if(!this.makesProducts)return 0;let e=0;return this.hasResearch("uPgrade: Capacity.I")&&++e,this.hasResearch("uPgrade: Capacity.II")&&++e,_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.BaseMaxProducts+e}hasMaximumNumberProducts(){return Object.keys(this.products).length>=this.getMaximumNumberProducts()}calculateProductionFactors(){let e=0;for(let t=0;t<_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities.length;++t){const a=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[t],n=this.warehouses[a];if(!(n instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a))continue;const r=n.materials,i=Math.pow(.002*r.RealEstate.qty+1,this.reFac)*Math.pow(.002*r.Hardware.qty+1,this.hwFac)*Math.pow(.002*r.Robots.qty+1,this.robFac)*Math.pow(.002*r.AICores.qty+1,this.aiFac);e+=Math.pow(i,.73)}this.prodMult=e<1?1:e}updateWarehouseSizeUsed(e){e.updateMaterialSizeUsed();for(const t in this.products)if(this.products.hasOwnProperty(t)){const a=this.products[t];if(void 0===a)continue;e.sizeUsed+=a.data[e.loc][0]*a.siz}}process(e=1,t,a){if(this.state=t,"START"===t){(isNaN(this.thisCycleRevenue)||isNaN(this.thisCycleExpenses))&&(console.error("NaN in Corporation's computed revenue/expenses"),Object(_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__.a)("Something went wrong when compting Corporation's revenue/expenses. This is a bug. Please report to game developer"),this.thisCycleRevenue=0,this.thisCycleExpenses=0),this.lastCycleRevenue=this.thisCycleRevenue/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle),this.lastCycleExpenses=this.thisCycleExpenses/(e*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle),this.thisCycleRevenue=0,this.thisCycleExpenses=0,this.lastCycleRevenue>0&&(this.newInd=!1);let t=0;for(const n in this.offices){const r=this.offices[n];0!==r&&(r instanceof _OfficeSpace__WEBPACK_IMPORTED_MODULE_8__.a&&(t+=r.process(e,a,this)))}this.thisCycleExpenses=this.thisCycleExpenses+t,this.processMaterialMarket(),this.processProductMarket(e),this.popularity-=1e-4*e,this.popularity=Math.max(0,this.popularity);const n=a.getDreamSenseGain(),r=4*n;return void(n>0&&(this.popularity+=n*e,this.awareness+=r*e))}let n=this.processMaterials(e,a);Array.isArray(n)&&(this.thisCycleRevenue=this.thisCycleRevenue+n[0],this.thisCycleExpenses=this.thisCycleExpenses+n[1]),n=this.processProducts(e,a),Array.isArray(n)&&(this.thisCycleRevenue=this.thisCycleRevenue+n[0],this.thisCycleExpenses=this.thisCycleExpenses+n[1])}processMaterialMarket(){const e=this.reqMats,t=this.prodMats;for(let a=0;a<_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities.length;++a)if(this.warehouses[_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[a]]instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a){const n=this.warehouses[_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[a]];if(0===n)continue;for(const t in e)e.hasOwnProperty(t)&&n.materials[t].processMarket();for(let e=0;e<t.length;++e)n.materials[t[e]].processMarket();n.materials.Hardware.processMarket(),n.materials.Robots.processMarket(),n.materials.AICores.processMarket(),n.materials.RealEstate.processMarket()}}processProductMarket(e=1){for(const t in this.products)if(this.products.hasOwnProperty(t)){const a=this.products[t];if(void 0===a)continue;let n=4e-4*Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_6__.a)(0,3);if(0===n)continue;this.type!==_IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Pharmaceutical&&this.type!==_IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Software&&this.type!==_IndustryData__WEBPACK_IMPORTED_MODULE_2__.a.Robotics||(n*=3),n*=e,a.dmd-=n,a.cmp+=n,a.cmp=Math.min(a.cmp,99.99),a.dmd=Math.max(a.dmd,.001)}}processMaterials(marketCycles=1,corporation){let revenue=0,expenses=0;if(this.calculateProductionFactors(),"EXPORT"===this.state)for(let e=0;e<_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities.length;++e){const t=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[e];if(!(this.warehouses[t]instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a))continue;const a=this.warehouses[t];if(0!==a)for(const e in a.materials)if(a.materials.hasOwnProperty(e)){const t=a.materials[e];t.imp=0}}for(let i=0;i<_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities.length;++i){const city=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[i],office=this.offices[city];if(0!==office){if(this.warehouses[city]instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a){const warehouse=this.warehouses[city];if(0===warehouse)continue;switch(this.state){case"PURCHASE":{for(const e in warehouse.materials){if(!warehouse.materials.hasOwnProperty(e))continue;const t=warehouse.materials[e];let a=0,n=0;warehouse.smartSupplyEnabled&&Object.keys(this.reqMats).includes(e)||(a=t.buy*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles,n=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[e]),a=Math.min(a,n),a>0&&(t.qty+=a,expenses+=a*t.bCost),this.updateWarehouseSizeUsed(warehouse))}const e={};for(const t in warehouse.materials){if(!warehouse.materials.hasOwnProperty(t))continue;if(!warehouse.smartSupplyEnabled||!Object.keys(this.reqMats).includes(t))continue;const a=warehouse.materials[t],n=this.reqMats[t];if(void 0===n)throw new Error(`reqMat "${t}" is undefined`);a.buy=n*warehouse.smartSupplyStore;let r=a.buy*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles;const i=Math.floor((warehouse.size-warehouse.sizeUsed)/_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[t]);r=Math.min(r,i),r>0&&(e[t]=r)}let t=1e99;for(const a in e){const n=e[a];if(void 0===n)throw new Error("Somehow smartbuy matname is undefined");const r=this.reqMats[a];if(void 0===r)throw new Error(`reqMat "${a}" is undefined`);const i=n/r;i<t&&(t=i)}for(const a in e){const n=this.reqMats[a];if(void 0===n)throw new Error(`reqMat "${a}" is undefined`);e[a]=t*n}let a=0;for(const t in e){const n=e[t];if(void 0===n)throw new Error("Somehow smartbuy matname is undefined");a+=n*_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[t]}const n=warehouse.size-warehouse.sizeUsed;if(a>n)for(const t in e){const r=e[t];if(void 0===r)throw new Error("Somehow smartbuy matname is undefined");e[t]=Math.floor(r*n/a)}for(const t in e){if(!warehouse.smartSupplyUseLeftovers[t])continue;const a=warehouse.materials[t],n=e[t];if(void 0===n)throw new Error("Somehow smartbuy matname is undefined");e[t]=Math.max(0,n-a.qty)}for(const t in e){const a=warehouse.materials[t],n=e[t];if(void 0===n)throw new Error("Somehow smartbuy matname is undefined");a.qty+=n,expenses+=n*a.bCost}break}case"PRODUCTION":if(warehouse.smartSupplyStore=0,this.prodMats.length>0){const e=warehouse.materials[this.prodMats[0]],t=this.getOfficeProductivity(office)*this.prodMult*corporation.getProductionMultiplier()*this.getProductionMultiplier();let a;a=e.prdman[0]?Math.min(t,e.prdman[1]):t,a*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles;let n=0;for(let e=0;e<this.prodMats.length;++e)n+=_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[this.prodMats[e]];for(const e in this.reqMats){const t=this.reqMats[e];void 0!==t&&(n-=_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[e]*t)}if(n>0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/n);a=Math.min(e,a)}a<0&&(a=0),warehouse.smartSupplyStore+=a/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles);let r=1;for(const e in this.reqMats)if(this.reqMats.hasOwnProperty(e)){const t=this.reqMats[e];if(void 0===t)continue;const n=t*a;warehouse.materials[e].qty<n&&(r=Math.min(r,warehouse.materials[e].qty/n))}if(r<=0&&(r=0,a=0),r>0&&a>0){for(const e in this.reqMats){const t=this.reqMats[e];if(void 0===t)continue;const n=t*a*r;warehouse.materials[e].qty-=n,warehouse.materials[e].prd=0,warehouse.materials[e].prd-=n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles)}for(let e=0;e<this.prodMats.length;++e)warehouse.materials[this.prodMats[e]].qty+=a*r,warehouse.materials[this.prodMats[e]].qlt=office.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Engineer]/90+Math.pow(this.sciResearch.qty,this.sciFac)+Math.pow(warehouse.materials.AICores.qty,this.aiFac)/1e4}else for(const e in this.reqMats)this.reqMats.hasOwnProperty(e)&&(warehouse.materials[e].prd=0);const i=a*r/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles);for(let e=0;e<this.prodMats.length;++e)warehouse.materials[this.prodMats[e]].prd=i}else for(const e in this.reqMats)warehouse.materials[e].prd=0;break;case"SALE":for(const matName in warehouse.materials)if(warehouse.materials.hasOwnProperty(matName)){const mat=warehouse.materials[matName];if(mat.sCost<0||!1===mat.sllman[0]){mat.sll=0;continue}const businessFactor=this.getBusinessFactor(office),advertisingFactor=this.getAdvertisingFactors()[0],marketFactor=this.getMarketFactor(mat),markupLimit=mat.getMarkupLimit();let sCost;if(mat.marketTa2){const e=mat.prd,t=markupLimit,a=e,n=(mat.qlt+.001)*marketFactor*businessFactor*corporation.getSalesMultiplier()*advertisingFactor*this.getSalesMultiplier(),r=Math.sqrt(a/n);let i;0===n||0===r?0===a?i=0:(i=mat.bCost+markupLimit,console.warn("In Corporation, found illegal 0s when trying to calculate MarketTA2 sale cost")):i=t/r+mat.bCost,mat.marketTa2Price=i,sCost=i}else mat.marketTa1?sCost=mat.bCost+markupLimit:Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__.a)(mat.sCost)?(sCost=mat.sCost.replace(/MP/g,mat.bCost+""),sCost=eval(sCost)):sCost=mat.sCost;let markup=1;sCost>mat.bCost?sCost-mat.bCost>markupLimit&&(markup=Math.pow(markupLimit/(sCost-mat.bCost),2)):sCost<mat.bCost&&(markup=sCost<=0?1e12:mat.bCost/sCost);const maxSell=(mat.qlt+.001)*marketFactor*markup*businessFactor*corporation.getSalesMultiplier()*advertisingFactor*this.getSalesMultiplier();let sellAmt;if(Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__.a)(mat.sllman[1])){let tmp=mat.sllman[1].replace(/MAX/g,(maxSell+"").toUpperCase());tmp=tmp.replace(/PROD/g,mat.prd+"");try{sellAmt=eval(tmp)}catch(e){Object(_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__.a)("Error evaluating your sell amount for material "+mat.name+" in "+this.name+"'s "+city+" office. The sell amount is being set to zero"),sellAmt=0}sellAmt=Math.min(maxSell,sellAmt)}else sellAmt=-1===mat.sllman[1]?maxSell:Math.min(maxSell,mat.sllman[1]);if(sellAmt=sellAmt*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles,sellAmt=Math.min(mat.qty,sellAmt),sellAmt<0){console.warn(`sellAmt calculated to be negative for ${matName} in ${city}`),mat.sll=0;continue}sellAmt&&sCost>=0?(mat.qty-=sellAmt,revenue+=sellAmt*sCost,mat.sll=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles)):mat.sll=0}break;case"EXPORT":for(const matName in warehouse.materials)if(warehouse.materials.hasOwnProperty(matName)){const mat=warehouse.materials[matName];mat.totalExp=0;for(let expI=0;expI<mat.exp.length;++expI){const exp=mat.exp[expI],amtStr=exp.amt.replace(/MAX/g,(mat.qty/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles)+"").toUpperCase());let amt=0;try{amt=eval(amtStr)}catch(e){Object(_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__.a)("Calculating export for "+mat.name+" in "+this.name+"'s "+city+" division failed with error: "+e);continue}if(isNaN(amt))Object(_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__.a)("Error calculating export amount for "+mat.name+" in "+this.name+"'s "+city+" division.");else{if(amt=amt*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles,mat.qty<amt&&(amt=mat.qty),0===amt)break;for(let e=0;e<corporation.divisions.length;++e)if(corporation.divisions[e].name===exp.ind){const t=corporation.divisions[e],a=t.warehouses[exp.city];if(!(a instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a)){console.error(`Invalid export! ${t.name} ${exp.city}`);break}if(a.sizeUsed>=a.size)return[0,0];{const e=Math.floor((a.size-a.sizeUsed)/_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[matName]);amt=Math.min(e,amt)}a.materials[matName].imp+=amt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles),a.materials[matName].qty+=amt,a.materials[matName].qlt=mat.qlt,mat.qty-=amt,mat.totalExp+=amt,t.updateWarehouseSizeUsed(a);break}}}mat.totalExp/=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles}break;case"START":break;default:console.error("Invalid state: "+this.state)}this.updateWarehouseSizeUsed(warehouse)}office instanceof _OfficeSpace__WEBPACK_IMPORTED_MODULE_8__.a&&(this.sciResearch.qty+=.004*Math.pow(office.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.RandD],.5)*corporation.getScientificResearchMultiplier()*this.getScientificResearchMultiplier())}}return[revenue,expenses]}processProducts(e=1,t){let a=0;if("PRODUCTION"===this.state)for(const t in this.products){const a=this.products[t];if(void 0!==a&&!a.fin){const t=a.createCity,n=this.offices[t];if(0===n)continue;const r=n.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Engineer],i=n.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Management],o=n.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Operations],s=r+i+o;if(s<=0)break;const l=1+i/(1.2*s),c=(Math.pow(r,.34)+Math.pow(o,.2))*l;a.createProduct(e,c),a.prog>=100&&a.finishProduct(n.employeeProd,this);break}}for(const n in this.products)if(this.products.hasOwnProperty(n)){const r=this.products[n];r instanceof _Product__WEBPACK_IMPORTED_MODULE_9__.a&&r.fin&&(a+=this.processProduct(e,r,t))}return[a,0]}processProduct(marketCycles=1,product,corporation){let totalProfit=0;for(let i=0;i<_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities.length;++i){const city=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.Cities[i],office=this.offices[city];if(0===office)continue;const warehouse=this.warehouses[city];if(warehouse instanceof _Warehouse__WEBPACK_IMPORTED_MODULE_13__.a)switch(this.state){case"PRODUCTION":{const e=this.getOfficeProductivity(office,{forProduct:!0})*corporation.getProductionMultiplier()*this.prodMult*this.getProductionMultiplier()*this.getProductProductionMultiplier();let t;t=product.prdman[city][0]?Math.min(e,product.prdman[city][1]):e,t*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles;let a=product.siz;for(const e in product.reqMats)if(product.reqMats.hasOwnProperty(e)){const t=product.reqMats[e];a-=_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__.a[e]*t}if(a>0){const e=Math.floor((warehouse.size-warehouse.sizeUsed)/a);t=Math.min(e,t)}warehouse.smartSupplyStore+=t/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles);let n=1;for(const e in product.reqMats)if(product.reqMats.hasOwnProperty(e)){const a=product.reqMats[e]*t;warehouse.materials[e].qty<a&&(n=Math.min(n,warehouse.materials[e].qty/a))}if(n>0&&t>0){for(const e in product.reqMats)if(product.reqMats.hasOwnProperty(e)){const a=product.reqMats[e]*t*n;warehouse.materials[e].qty-=a,warehouse.materials[e].prd-=a/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles)}product.data[city][0]+=t*n}product.data[city][1]=t*n/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles);break}case"SALE":{product.pCost=0;for(const e in product.reqMats)product.reqMats.hasOwnProperty(e)&&(product.pCost+=product.reqMats[e]*warehouse.materials[e].bCost);product.pCost*=_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.ProductProductionCostRatio;const businessFactor=this.getBusinessFactor(office),advertisingFactor=this.getAdvertisingFactors()[0],marketFactor=this.getMarketFactor(product),markupLimit=product.rat/product.mku;let sCost;if(product.marketTa2){const e=product.data[city][1],t=markupLimit,a=e,n=.5*Math.pow(product.rat,.65)*marketFactor*corporation.getSalesMultiplier()*businessFactor*advertisingFactor*this.getSalesMultiplier(),r=Math.sqrt(a/n);let i;0===n||0===r?0===a?i=0:(i=product.pCost+markupLimit,console.warn("In Corporation, found illegal 0s when trying to calculate MarketTA2 sale cost")):i=t/r+product.pCost,product.marketTa2Price[city]=i,sCost=i}else if(product.marketTa1)sCost=product.pCost+markupLimit;else if(Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__.a)(product.sCost)){const sCostString=product.sCost;0===product.mku&&(console.error("mku is zero, reverting to 1 to avoid Infinity"),product.mku=1),sCost=sCostString.replace(/MP/g,product.pCost+product.rat/product.mku+""),sCost=eval(sCost)}else sCost=product.sCost;let markup=1;sCost>product.pCost&&sCost-product.pCost>markupLimit&&(markup=markupLimit/(sCost-product.pCost));const maxSell=.5*Math.pow(product.rat,.65)*marketFactor*corporation.getSalesMultiplier()*Math.pow(markup,2)*businessFactor*advertisingFactor*this.getSalesMultiplier();let sellAmt;if(product.sllman[city][0]&&Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__.a)(product.sllman[city][1])){let tmp=product.sllman[city][1].replace(/MAX/g,(maxSell+"").toUpperCase());tmp=tmp.replace(/PROD/g,product.data[city][1]);try{tmp=eval(tmp)}catch(e){Object(_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__.a)("Error evaluating your sell price expression for "+product.name+" in "+this.name+"'s "+city+" office. Sell price is being set to MAX"),tmp=maxSell}sellAmt=Math.min(maxSell,tmp)}else sellAmt=product.sllman[city][0]&&product.sllman[city][1]>0?Math.min(maxSell,product.sllman[city][1]):!1===product.sllman[city][0]?0:maxSell;sellAmt<0&&(sellAmt=0),sellAmt=sellAmt*_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles,sellAmt=Math.min(product.data[city][0],sellAmt),sellAmt&&sCost?(product.data[city][0]-=sellAmt,totalProfit+=sellAmt*sCost,product.data[city][2]=sellAmt/(_data_Constants__WEBPACK_IMPORTED_MODULE_3__.a.SecsPerMarketCycle*marketCycles)):product.data[city][2]=0;break}case"START":case"PURCHASE":case"EXPORT":break;default:console.error("Invalid State: "+this.state)}}return totalProfit}discontinueProduct(e){for(const t in this.products)this.products.hasOwnProperty(t)&&e===this.products[t]&&delete this.products[t]}upgrade(e,t){const a=t.corporation,n=t.office,r=e[0];for(;this.upgrades.length<=r;)this.upgrades.push(0);switch(++this.upgrades[r],r){case 0:for(let e=0;e<n.employees.length;++e)n.employees[e].ene=Math.min(1.05*n.employees[e].ene,n.maxEne);break;case 1:{const e=a.getAdvertisingMultiplier()*this.getAdvertisingMultiplier();this.awareness+=3*e,this.popularity+=1*e,this.awareness*=1.01*e,this.popularity*=(1+Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_6__.a)(1,3)/100)*e;break}default:console.error("Un-implemented function index: "+r)}}getOfficeProductivity(e,t={}){const a=e.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Operations],n=e.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Engineer],r=e.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Management],i=a+n+r;if(i<=0)return 0;const o=1+r/(1.2*i),s=(Math.pow(a,.4)+Math.pow(n,.3))*o;return t&&t.forProduct?.025*s:.05*s}getBusinessFactor(e){const t=1+e.employeeProd[_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__.a.Business];return Object(_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_7__.a)(t,.26,1e4)}getAdvertisingFactors(){const e=Math.pow(this.awareness+1,this.advFac),t=Math.pow(this.popularity+1,this.advFac),a=0===this.awareness?.01:Math.max((this.popularity+.001)/this.awareness,.01);return[Math.pow(e*t*a,.85),e,t,a]}getMarketFactor(e){return Math.max(.1,e.dmd*(100-e.cmp)/100)}hasResearch(e){return!0===this.researched[e]}updateResearchTree(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry "${this.type}"`);if(Object.keys(e.researched).length!==Object.keys(this.researched).length)for(const t in this.researched)e.research(t)}getAdvertisingMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getAdvertisingMultiplier()}getEmployeeChaMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getEmployeeChaMultiplier()}getEmployeeCreMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getEmployeeCreMultiplier()}getEmployeeEffMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getEmployeeEffMultiplier()}getEmployeeIntMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getEmployeeIntMultiplier()}getProductionMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getProductionMultiplier()}getProductProductionMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getProductProductionMultiplier()}getSalesMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getSalesMultiplier()}getScientificResearchMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getScientificResearchMultiplier()}getStorageMultiplier(){const e=_IndustryData__WEBPACK_IMPORTED_MODULE_2__.c[this.type];if(void 0===e)throw new Error(`Invalid industry: "${this.type}"`);return this.updateResearchTree(),e.getStorageMultiplier()}toJSON(){return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_0__.b)("Industry",this)}static fromJSON(e){return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_0__.a)(Industry,e.data)}}_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_0__.c.constructors.Industry=Industry},function(e,t,a){"use strict";function n(e,t,a){return(t<=0||t>=1)&&console.warn(`Exponential factor is ${t}. This is not an intended value for it`),a<1&&console.warn(`Linear factor is ${a}. This is not an intended value for it`),Math.pow(e,t)+e/a}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(42),r=a(32),i=a(21),o=a(53);class s{constructor(e={}){var t,a,i;t=this,a="cyclesUntilRaise",i=n.a.CyclesPerEmployeeRaise,a in t?Object.defineProperty(t,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[a]=i,this.name=e.name?e.name:"Bobby",this.mor=e.morale?e.morale:Object(r.a)(50,100),this.hap=e.happiness?e.happiness:Object(r.a)(50,100),this.ene=e.energy?e.energy:Object(r.a)(50,100),this.int=e.intelligence?e.intelligence:Object(r.a)(10,50),this.cha=e.charisma?e.charisma:Object(r.a)(10,50),this.exp=e.experience?e.experience:Object(r.a)(10,50),this.cre=e.creativity?e.creativity:Object(r.a)(10,50),this.eff=e.efficiency?e.efficiency:Object(r.a)(10,50),this.sal=e.salary?e.salary:Object(r.a)(.1,5),this.loc=e.loc?e.loc:"",this.pos=o.a.Unassigned}process(e=1,t){const a=.003*e,r=a*Math.random();this.exp+=a;const i=a*Math.random();this.pos===o.a.Training&&(this.cha+=i,this.exp+=i,this.eff+=i),this.ene-=r,this.hap-=r,this.ene<t.minEne&&(this.ene=t.minEne),this.hap<t.minHap&&(this.hap=t.minHap);return this.sal*e*n.a.SecsPerMarketCycle}calculateProductivity(e,t){const a=this.cre*e.getEmployeeCreMultiplier()*t.getEmployeeCreMultiplier(),n=this.cha*e.getEmployeeChaMultiplier()*t.getEmployeeChaMultiplier(),r=this.int*e.getEmployeeIntMultiplier()*t.getEmployeeIntMultiplier(),i=this.eff*e.getEmployeeEffMultiplier()*t.getEmployeeEffMultiplier(),s=this.mor*this.hap*this.ene*1e-6;let l=0;switch(this.pos){case o.a.Operations:l=.6*r+.1*n+this.exp+.5*a+i;break;case o.a.Engineer:l=r+.1*n+1.5*this.exp+i;break;case o.a.Business:l=.4*r+n+.5*this.exp;break;case o.a.Management:l=2*n+this.exp+.2*a+.7*i;break;case o.a.RandD:l=1.5*r+.8*this.exp+a+.5*i;break;case o.a.Unassigned:case o.a.Training:l=0;break;default:console.error("Invalid employee position: "+this.pos)}return s*l}throwParty(e){const t=1+e/1e7;return this.mor*=t,this.mor=Math.min(100,this.mor),this.hap*=t,this.hap=Math.min(100,this.hap),t}toJSON(){return Object(i.b)("Employee",this)}static fromJSON(e){return Object(i.a)(s,e.data)}}i.c.constructors.Employee=s},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(51);const r={[n.a.Food]:{Quality:.7,Durability:.1,Aesthetics:.2},[n.a.Tobacco]:{Quality:.4,Durability:.2,Reliability:.2,Aesthetics:.2},[n.a.Pharmaceutical]:{Quality:.2,Performance:.2,Durability:.1,Reliability:.3,Features:.2},[n.a.Computer]:{Quality:.15,Performance:.25,Durability:.25,Reliability:.2,Aesthetics:.05,Features:.1},Computer:{Quality:.15,Performance:.25,Durability:.25,Reliability:.2,Aesthetics:.05,Features:.1},[n.a.Robotics]:{Quality:.1,Performance:.2,Durability:.2,Reliability:.2,Aesthetics:.1,Features:.2},[n.a.Software]:{Quality:.2,Performance:.2,Reliability:.2,Durability:.2,Features:.2},[n.a.Healthcare]:{Quality:.4,Performance:.1,Durability:.1,Reliability:.3,Features:.1},[n.a.RealEstate]:{Quality:.2,Durability:.25,Reliability:.1,Aesthetics:.35,Features:.1}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(536),r=a(195),i=a(170),o=a(34),s=a(163),l=a(94),c=a(61),u=a(184);function m(e,t,a){const m=function(t){if(!e.hasProgram(c.a.Formulas.name))throw a.makeRuntimeErrorMsg("formulas."+t,"Requires Formulas.exe to run.")};return{skills:{calculateSkill:function(e,t=1){return m("basic.calculateSkill"),Object(s.b)(e,t)},calculateExp:function(e,t=1){return m("basic.calculateExp"),Object(s.a)(e,t)}},hacking:{hackChance:function(e,t){return m("basic.hackChance"),Object(l.b)(e,t)},hackExp:function(e,t){return m("basic.hackExp"),Object(l.c)(e,t)},hackPercent:function(e,t){return m("basic.hackPercent"),Object(l.e)(e,t)},growPercent:function(e,t,a,r=1){return m("basic.growPercent"),Object(n.a)(e,t,a,r)},hackTime:function(e,t){return m("basic.hackTime"),1e3*Object(l.d)(e,t)},growTime:function(e,t){return m("basic.growTime"),1e3*Object(l.a)(e,t)},weakenTime:function(e,t){return m("basic.weakenTime"),1e3*Object(l.f)(e,t)}},hacknetNodes:{moneyGainRate:function(e,t,a,n=1){return m("hacknetNodes.moneyGainRate"),Object(r.c)(e,t,a,n)},levelUpgradeCost:function(e,t=1,a=1){return m("hacknetNodes.levelUpgradeCost"),Object(r.b)(e,t,a)},ramUpgradeCost:function(e,t=1,a=1){return m("hacknetNodes.ramUpgradeCost"),Object(r.e)(e,t,a)},coreUpgradeCost:function(e,t=1,a=1){return m("hacknetNodes.coreUpgradeCost"),Object(r.a)(e,t,a)},hacknetNodeCost:function(e,t){return m("hacknetNodes.hacknetNodeCost"),Object(r.d)(e,t)},constants:function(){return m("hacknetNodes.constants"),Object.assign({},o.a)}},hacknetServers:{hashGainRate:function(e,t,a,n,r=1){return m("hacknetServers.hashGainRate"),Object(i.c)(e,t,a,n,r)},levelUpgradeCost:function(e,t=1,a=1){return m("hacknetServers.levelUpgradeCost"),Object(i.d)(e,t,a)},ramUpgradeCost:function(e,t=1,a=1){return m("hacknetServers.ramUpgradeCost"),Object(i.e)(e,t,a)},coreUpgradeCost:function(e,t=1,a=1){return m("hacknetServers.coreUpgradeCost"),Object(i.b)(e,t,a)},cacheUpgradeCost:function(e,t=1){return m("hacknetServers.cacheUpgradeCost"),Object(i.a)(e,t)},hashUpgradeCost:function(t,n){m("hacknetServers.hashUpgradeCost");const r=e.hashManager.getUpgrade(t);if(!r)throw a.makeRuntimeErrorMsg("formulas.hacknetServers.calculateHashUpgradeCost","Invalid Hash Upgrade: "+t);return r.getCost(n)},hacknetServerCost:function(e,t=1){return m("hacknetServers.hacknetServerCost"),Object(i.f)(e,t)},constants:function(){return m("hacknetServers.constants"),Object.assign({},o.b)}},gang:{wantedPenalty:e=>Object(u.f)(e),respectGain:function(e,t,a){return Object(u.d)(e,t,a)},wantedLevelGain:function(e,t,a){return Object(u.e)(e,t,a)},moneyGain:function(e,t,a){return Object(u.c)(e,t,a)},ascensionPointsGain:function(e){return Object(u.b)(e)},ascensionMultiplier:function(e){return Object(u.a)(e)}}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(14),r=a(235),i=a(95),o=a(212),s=a(105),l=a(69),c=a(93),u=a(268);function m(e,t,a){const m=function(t){if(!e.hasWseAccount)throw a.makeRuntimeErrorMsg(t,`You don't have WSE Access! Cannot use ${t}()`);if(!e.hasTixApiAccess)throw a.makeRuntimeErrorMsg(t,`You don't have TIX API Access! Cannot use ${t}()`)},h=function(e,t){const n=i.b[e];if(null==n)throw a.makeRuntimeErrorMsg(t,`Invalid stock symbol: '${e}'`);return n};return{getSymbols:function(){return a.updateDynamicRam("getSymbols",Object(n.c)(e,"stock","getSymbols")),m("getSymbols"),Object.values(c.a)},getPrice:function(t){a.updateDynamicRam("getPrice",Object(n.c)(e,"stock","getPrice")),m("getPrice");return h(t,"getPrice").price},getAskPrice:function(t){a.updateDynamicRam("getAskPrice",Object(n.c)(e,"stock","getAskPrice")),m("getAskPrice");return h(t,"getAskPrice").getAskPrice()},getBidPrice:function(t){a.updateDynamicRam("getBidPrice",Object(n.c)(e,"stock","getBidPrice")),m("getBidPrice");return h(t,"getBidPrice").getBidPrice()},getPosition:function(t){a.updateDynamicRam("getPosition",Object(n.c)(e,"stock","getPosition")),m("getPosition");const r=i.b[t];if(null==r)throw a.makeRuntimeErrorMsg("getPosition","Invalid stock symbol: "+t);return[r.playerShares,r.playerAvgPx,r.playerShortShares,r.playerAvgShortPx]},getMaxShares:function(t){a.updateDynamicRam("getMaxShares",Object(n.c)(e,"stock","getMaxShares")),m("getMaxShares");return h(t,"getMaxShares").maxShares},getPurchaseCost:function(t,r,i){a.updateDynamicRam("getPurchaseCost",Object(n.c)(e,"stock","getPurchaseCost")),m("getPurchaseCost");const s=h(t,"getPurchaseCost");let c;r=Math.round(r);const u=i.toLowerCase();if(u.includes("l"))c=l.a.Long;else{if(!u.includes("s"))return 1/0;c=l.a.Short}const d=Object(o.b)(s,r,c);return null==d?1/0:d},getSaleGain:function(t,r,i){a.updateDynamicRam("getSaleGain",Object(n.c)(e,"stock","getSaleGain")),m("getSaleGain");const s=h(t,"getSaleGain");let c;r=Math.round(r);const u=i.toLowerCase();if(u.includes("l"))c=l.a.Long;else{if(!u.includes("s"))return 0;c=l.a.Short}const d=Object(o.c)(s,r,c);return null==d?0:d},buy:function(i,o){a.updateDynamicRam("buy",Object(n.c)(e,"stock","buy")),m("buy");const s=h(i,"buy");return Object(r.a)(s,o,t,{})?s.getAskPrice():0},sell:function(i,o){a.updateDynamicRam("sell",Object(n.c)(e,"stock","sell")),m("sell");const s=h(i,"sell");return Object(r.c)(s,o,t,{})?s.getBidPrice():0},short:function(i,o){if(a.updateDynamicRam("short",Object(n.c)(e,"stock","short")),m("short"),8!==e.bitNodeN&&e.sourceFileLvl(8)<=1)throw a.makeRuntimeErrorMsg("short","You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const s=h(i,"short");return Object(r.d)(s,o,t,{})?s.getBidPrice():0},sellShort:function(i,o){if(a.updateDynamicRam("sellShort",Object(n.c)(e,"stock","sellShort")),m("sellShort"),8!==e.bitNodeN&&e.sourceFileLvl(8)<=1)throw a.makeRuntimeErrorMsg("sellShort","You must either be in BitNode-8 or you must have Source-File 8 Level 2.");const s=h(i,"sellShort");return Object(r.b)(s,o,t,{})?s.getAskPrice():0},placeOrder:function(r,o,c,u,d){if(a.updateDynamicRam("placeOrder",Object(n.c)(e,"stock","placeOrder")),m("placeOrder"),8!==e.bitNodeN&&e.sourceFileLvl(8)<=2)throw a.makeRuntimeErrorMsg("placeOrder","You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const p=h(r,"placeOrder");let f,g;const y=u.toLowerCase();if(y.includes("limit")&&y.includes("buy"))f=s.a.LimitBuy;else if(y.includes("limit")&&y.includes("sell"))f=s.a.LimitSell;else if(y.includes("stop")&&y.includes("buy"))f=s.a.StopBuy;else{if(!y.includes("stop")||!y.includes("sell"))throw a.makeRuntimeErrorMsg("placeOrder","Invalid order type: "+u);f=s.a.StopSell}const b=d.toLowerCase();if(b.includes("l"))g=l.a.Long;else{if(!b.includes("s"))throw a.makeRuntimeErrorMsg("placeOrder","Invalid position type: "+d);g=l.a.Short}return Object(i.j)(p,o,c,f,g,t)},cancelOrder:function(r,o,c,u,d){if(a.updateDynamicRam("cancelOrder",Object(n.c)(e,"stock","cancelOrder")),m("cancelOrder"),8!==e.bitNodeN&&e.sourceFileLvl(8)<=2)throw a.makeRuntimeErrorMsg("cancelOrder","You must either be in BitNode-8 or you must have Source-File 8 Level 3.");const p=h(r,"cancelOrder");if(isNaN(o)||isNaN(c))throw a.makeRuntimeErrorMsg("cancelOrder",`Invalid shares or price. Must be numeric. shares=${o}, price=${c}`);let f,g;const y=u.toLowerCase();if(y.includes("limit")&&y.includes("buy"))f=s.a.LimitBuy;else if(y.includes("limit")&&y.includes("sell"))f=s.a.LimitSell;else if(y.includes("stop")&&y.includes("buy"))f=s.a.StopBuy;else{if(!y.includes("stop")||!y.includes("sell"))throw a.makeRuntimeErrorMsg("cancelOrder","Invalid order type: "+u);f=s.a.StopSell}const b=d.toLowerCase();if(b.includes("l"))g=l.a.Long;else{if(!b.includes("s"))throw a.makeRuntimeErrorMsg("cancelOrder","Invalid position type: "+d);g=l.a.Short}const E={stock:p,shares:o,price:c,type:f,pos:g};return Object(i.c)(E,t)},getOrders:function(){if(a.updateDynamicRam("getOrders",Object(n.c)(e,"stock","getOrders")),m("getOrders"),8!==e.bitNodeN&&e.sourceFileLvl(8)<=2)throw a.makeRuntimeErrorMsg("getOrders","You must either be in BitNode-8 or have Source-File 8 Level 3.");const t={},r=i.a.Orders;for(const e in r){const a=r[e];if(a.constructor===Array&&a.length>0){t[e]=[];for(let n=0;n<a.length;++n)t[e].push({shares:a[n].shares,price:a[n].price,type:a[n].type,position:a[n].pos})}}return t},getVolatility:function(t){if(a.updateDynamicRam("getVolatility",Object(n.c)(e,"stock","getVolatility")),!e.has4SDataTixApi)throw a.makeRuntimeErrorMsg("getVolatility","You don't have 4S Market Data TIX API Access!");return h(t,"getVolatility").mv/100},getForecast:function(t){if(a.updateDynamicRam("getForecast",Object(n.c)(e,"stock","getForecast")),!e.has4SDataTixApi)throw a.makeRuntimeErrorMsg("getForecast","You don't have 4S Market Data TIX API Access!");const r=h(t,"getForecast");let i=50;return r.b?i+=r.otlkMag:i-=r.otlkMag,i/100},purchase4SMarketData:function(){return a.updateDynamicRam("purchase4SMarketData",Object(n.c)(e,"stock","purchase4SMarketData")),m("purchase4SMarketData"),e.has4SData?(t.log("stock.purchase4SMarketData",()=>"Already purchased 4S Market Data."),!0):e.money<Object(u.a)()?(t.log("stock.purchase4SMarketData",()=>"Not enough money to purchase 4S Market Data."),!1):(e.has4SData=!0,e.loseMoney(Object(u.a)(),"stock"),t.log("stock.purchase4SMarketData",()=>"Purchased 4S Market Data"),!0)},purchase4SMarketDataTixApi:function(){return a.updateDynamicRam("purchase4SMarketDataTixApi",Object(n.c)(e,"stock","purchase4SMarketDataTixApi")),m("purchase4SMarketDataTixApi"),e.has4SDataTixApi?(t.log("stock.purchase4SMarketDataTixApi",()=>"Already purchased 4S Market Data TIX API"),!0):e.money<Object(u.b)()?(t.log("stock.purchase4SMarketDataTixApi",()=>"Not enough money to purchase 4S Market Data TIX API"),!1):(e.has4SDataTixApi=!0,e.loseMoney(Object(u.b)(),"stock"),t.log("stock.purchase4SMarketDataTixApi",()=>"Purchased 4S Market Data TIX API"),!0)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return G}));var n=a(120),r=a(181),i=a(20),o=a(143),s=a(317),l=a(6),c=a(132),u=a(8),m=a(126),h=a(14),d=a(336),p=a(347),f=a(334),g=a(90),y=a(267),b=a(68),E=a(23),k=a(9),v=a(92),_=a(98),w=a(27),S=a(240),C=a(24),x=a(61),O=a(4),M=a(5),T=a(225),R=a(62),A=a(26),N=a(103),P=a(22),I=a(123),F=a(83),D=a(94),j=a(44),B=a(435);function G(e,t,a){const G=function(e,t){if(!Object(o.b)(t))throw a.makeRuntimeErrorMsg(e,`Invalid augmentation: '${t}'`);return i.a[t]},L=function(e,t){if(!Object(A.b)(t))throw a.makeRuntimeErrorMsg(e,"Invalid faction name: '"+t);return A.a[t]},W=function(e,t){const n=R.a[t];if(null==n||!(n instanceof T.a))throw a.makeRuntimeErrorMsg(e,`Invalid company name: '${t}'`);return n},H=function(t=null){if(t&&Object(m.a)(t)){const a=e.getHomeComputer();for(const n of a.scripts)if(n.filename===t){if(n.ramUsage>a.maxRam-a.ramUsed)return;const t=new d.a(n,[]);t.threads=1,Object(r.e)(e,t,a)}}};return{getOwnedAugmentations:function(t=!1){a.updateDynamicRam("getOwnedAugmentations",Object(h.c)(e,"getOwnedAugmentations")),a.checkSingularityAccess("getOwnedAugmentations");const n=[];for(let t=0;t<e.augmentations.length;++t)n.push(e.augmentations[t].name);if(t)for(let t=0;t<e.queuedAugmentations.length;++t)n.push(e.queuedAugmentations[t].name);return n},getAugmentationsFromFaction:function(t){a.updateDynamicRam("getAugmentationsFromFaction",Object(h.c)(e,"getAugmentationsFromFaction")),a.checkSingularityAccess("getAugmentationsFromFaction");const n=L("getAugmentationsFromFaction",t);if(e.hasGangWith(t)){const t=[];for(const a in i.a){if(a===l.a.NeuroFluxGovernor)continue;if(a===l.a.TheRedPill&&2!==e.bitNodeN)continue;i.a[a].isSpecial||t.push(a)}return t}return n.augmentations.slice()},getAugmentationCost:function(t){a.updateDynamicRam("getAugmentationCost",Object(h.c)(e,"getAugmentationCost")),a.checkSingularityAccess("getAugmentationCost");const n=G("getAugmentationCost",t);return[n.baseRepRequirement,n.baseCost]},getAugmentationPrereq:function(t){a.updateDynamicRam("getAugmentationPrereq",Object(h.c)(e,"getAugmentationPrereq")),a.checkSingularityAccess("getAugmentationPrereq");return G("getAugmentationPrereq",t).prereqs.slice()},getAugmentationPrice:function(t){a.updateDynamicRam("getAugmentationPrice",Object(h.c)(e,"getAugmentationPrice")),a.checkSingularityAccess("getAugmentationPrice");return G("getAugmentationPrice",t).baseCost},getAugmentationRepReq:function(t){a.updateDynamicRam("getAugmentationRepReq",Object(h.c)(e,"getAugmentationRepReq")),a.checkSingularityAccess("getAugmentationRepReq");return G("getAugmentationRepReq",t).baseRepRequirement},getAugmentationStats:function(t){a.updateDynamicRam("getAugmentationStats",Object(h.c)(e,"getAugmentationStats")),a.checkSingularityAccess("getAugmentationStats");const n=G("getAugmentationStats",t);return Object.assign({},n.mults)},purchaseAugmentation:function(r,o){a.updateDynamicRam("purchaseAugmentation",Object(h.c)(e,"purchaseAugmentation")),a.checkSingularityAccess("purchaseAugmentation");const s=L("purchaseAugmentation",r),c=G("purchaseAugmentation",o);let d=[];if(e.hasGangWith(r))for(const t in i.a){if(t===l.a.NeuroFluxGovernor)continue;if(t===l.a.TheRedPill&&2!==e.bitNodeN)continue;i.a[t].isSpecial||d.push(t)}else d=s.augmentations;if(!d.includes(o))return t.log("purchaseAugmentation",()=>`Faction '${r}' does not have the '${o}' augmentation.`),!1;if(!(c.name===l.a.NeuroFluxGovernor)){for(let a=0;a<e.queuedAugmentations.length;++a)if(e.queuedAugmentations[a].name===c.name)return t.log("purchaseAugmentation",()=>`You already have the '${o}' augmentation.`),!1;for(let a=0;a<e.augmentations.length;++a)if(e.augmentations[a].name===c.name)return t.log("purchaseAugmentation",()=>`You already have the '${o}' augmentation.`),!1}if(s.playerReputation<c.baseRepRequirement)return t.log("purchaseAugmentation",()=>`You do not have enough reputation with '${s.name}'.`),!1;const p=Object(n.f)(c,s,!0);return t.log("purchaseAugmentation",()=>p),!(!Object(m.a)(p)||!p.startsWith("You purchased"))&&(e.gainIntelligenceExp(10*u.a.IntelligenceSingFnBaseExpGain),!0)},softReset:function(n){a.updateDynamicRam("softReset",Object(h.c)(e,"softReset")),a.checkSingularityAccess("softReset"),t.log("softReset",()=>"Soft resetting. This will cause this script to be killed"),setTimeout(()=>{Object(s.a)(),H(n)},0),t.running=!1,Object(c.a)(t)},installAugmentations:function(n){if(a.updateDynamicRam("installAugmentations",Object(h.c)(e,"installAugmentations")),a.checkSingularityAccess("installAugmentations"),0===e.queuedAugmentations.length)return t.log("installAugmentations",()=>"You do not have any Augmentations to be installed."),!1;e.gainIntelligenceExp(10*u.a.IntelligenceSingFnBaseExpGain),t.log("installAugmentations",()=>"Installing Augmentations. This will cause this script to be killed"),setTimeout(()=>{Object(o.d)(),H(n)},0),t.running=!1,Object(c.a)(t)},goToLocation:function(n){a.updateDynamicRam("goToLocation",Object(h.c)(e,"goToLocation")),a.checkSingularityAccess("goToLocation");const r=Object.values(S.a).find(e=>e.name===n);return r?e.city!==r.city?(t.log("goToLocation",()=>`No location named ${n} in ${e.city}`),!1):(v.b.toLocation(r),e.gainIntelligenceExp(u.a.IntelligenceSingFnBaseExpGain/500),!0):(t.log("goToLocation",()=>"No location named "+n),!1)},universityCourse:function(n,r,i=!0){a.updateDynamicRam("universityCourse",Object(h.c)(e,"universityCourse")),a.checkSingularityAccess("universityCourse");const o=e.focus;if(e.isWorking){const a=e.singularityStopWork();t.log("universityCourse",()=>a)}let s,l;switch(n.toLowerCase()){case k.a.AevumSummitUniversity.toLowerCase():if(e.city!=E.a.Aevum)return t.log("universityCourse",()=>"You cannot study at 'Summit University' because you are not in 'Aevum'."),!1;e.gotoLocation(k.a.AevumSummitUniversity),s=4,l=3;break;case k.a.Sector12RothmanUniversity.toLowerCase():if(e.city!=E.a.Sector12)return t.log("universityCourse",()=>"You cannot study at 'Rothman University' because you are not in 'Sector-12'."),!1;e.location=k.a.Sector12RothmanUniversity,s=3,l=2;break;case k.a.VolhavenZBInstituteOfTechnology.toLowerCase():if(e.city!=E.a.Volhaven)return t.log("universityCourse",()=>"You cannot study at 'ZB Institute of Technology' because you are not in 'Volhaven'."),!1;e.location=k.a.VolhavenZBInstituteOfTechnology,s=5,l=4;break;default:return t.log("universityCourse",()=>`Invalid university name: '${n}'.`),!1}let c="";switch(r.toLowerCase()){case"Study Computer Science".toLowerCase():c=u.a.ClassStudyComputerScience;break;case"Data Structures".toLowerCase():c=u.a.ClassDataStructures;break;case"Networks".toLowerCase():c=u.a.ClassNetworks;break;case"Algorithms".toLowerCase():c=u.a.ClassAlgorithms;break;case"Management".toLowerCase():c=u.a.ClassManagement;break;case"Leadership".toLowerCase():c=u.a.ClassLeadership;break;default:return t.log("universityCourse",()=>`Invalid class name: ${r}.`),!1}return e.startClass(v.b,s,l,c),i?(e.startFocusing(),v.b.toWork()):o&&(e.stopFocusing(),v.b.toTerminal()),t.log("universityCourse",()=>`Started ${c} at ${n}`),!0},gymWorkout:function(n,r,i=!0){a.updateDynamicRam("gymWorkout",Object(h.c)(e,"gymWorkout")),a.checkSingularityAccess("gymWorkout");const o=e.focus;if(e.isWorking){const a=e.singularityStopWork();t.log("gymWorkout",()=>a)}let s,l;switch(n.toLowerCase()){case k.a.AevumCrushFitnessGym.toLowerCase():if(e.city!=E.a.Aevum)return t.log("gymWorkout",()=>"You cannot workout at 'Crush Fitness' because you are not in 'Aevum'."),!1;e.location=k.a.AevumCrushFitnessGym,s=3,l=2;break;case k.a.AevumSnapFitnessGym.toLowerCase():if(e.city!=E.a.Aevum)return t.log("gymWorkout",()=>"You cannot workout at 'Snap Fitness' because you are not in 'Aevum'."),!1;e.location=k.a.AevumSnapFitnessGym,s=10,l=5;break;case k.a.Sector12IronGym.toLowerCase():if(e.city!=E.a.Sector12)return t.log("gymWorkout",()=>"You cannot workout at 'Iron Gym' because you are not in 'Sector-12'."),!1;e.location=k.a.Sector12IronGym,s=1,l=1;break;case k.a.Sector12PowerhouseGym.toLowerCase():if(e.city!=E.a.Sector12)return t.log("gymWorkout",()=>"You cannot workout at 'Powerhouse Gym' because you are not in 'Sector-12'."),!1;e.location=k.a.Sector12PowerhouseGym,s=20,l=10;break;case k.a.VolhavenMilleniumFitnessGym.toLowerCase():if(e.city!=E.a.Volhaven)return t.log("gymWorkout",()=>"You cannot workout at 'Millenium Fitness Gym' because you are not in 'Volhaven'."),!1;e.location=k.a.VolhavenMilleniumFitnessGym,s=7,l=4;break;default:return t.log("gymWorkout",()=>`Invalid gym name: ${n}. gymWorkout() failed`),!1}switch(r.toLowerCase()){case"strength".toLowerCase():case"str".toLowerCase():e.startClass(v.b,s,l,u.a.ClassGymStrength);break;case"defense".toLowerCase():case"def".toLowerCase():e.startClass(v.b,s,l,u.a.ClassGymDefense);break;case"dexterity".toLowerCase():case"dex".toLowerCase():e.startClass(v.b,s,l,u.a.ClassGymDexterity);break;case"agility".toLowerCase():case"agi".toLowerCase():e.startClass(v.b,s,l,u.a.ClassGymAgility);break;default:return t.log("gymWorkout",()=>`Invalid stat: ${r}.`),!1}return i?(e.startFocusing(),v.b.toWork()):o&&(e.stopFocusing(),v.b.toTerminal()),t.log("gymWorkout",()=>`Started training ${r} at ${n}`),!0},travelToCity:function(n){switch(a.updateDynamicRam("travelToCity",Object(h.c)(e,"travelToCity")),a.checkSingularityAccess("travelToCity"),n){case E.a.Aevum:case E.a.Chongqing:case E.a.Sector12:case E.a.NewTokyo:case E.a.Ishima:case E.a.Volhaven:if(e.money<u.a.TravelCost)throw a.makeRuntimeErrorMsg("travelToCity","Not enough money to travel.");return e.loseMoney(u.a.TravelCost,"other"),e.city=n,t.log("travelToCity",()=>"Traveled to "+n),e.gainIntelligenceExp(u.a.IntelligenceSingFnBaseExpGain/50),!0;default:return t.log("travelToCity",()=>`Invalid city name: '${n}'.`),!1}},purchaseTor:function(){if(a.updateDynamicRam("purchaseTor",Object(h.c)(e,"purchaseTor")),a.checkSingularityAccess("purchaseTor"),e.hasTorRouter())return t.log("purchaseTor",()=>"You already have a TOR router!"),!1;if(e.money<u.a.TorRouterCost)return t.log("purchaseTor",()=>"You cannot afford to purchase a Tor router."),!1;e.loseMoney(u.a.TorRouterCost,"other");const n=Object(I.f)({ip:Object(C.e)(),hostname:"darkweb",organizationName:"",isConnectedTo:!1,adminRights:!1,purchasedByPlayer:!1,maxRam:1});return Object(C.a)(n),e.getHomeComputer().serversOnNetwork.push(n.hostname),n.serversOnNetwork.push(e.getHomeComputer().hostname),e.gainIntelligenceExp(u.a.IntelligenceSingFnBaseExpGain/50),t.log("purchaseTor",()=>"You have purchased a Tor router!"),!0},purchaseProgram:function(n){if(a.updateDynamicRam("purchaseProgram",Object(h.c)(e,"purchaseProgram")),a.checkSingularityAccess("purchaseProgram"),!e.hasTorRouter())return t.log("purchaseProgram",()=>"You do not have the TOR router."),!1;n=n.toLowerCase();const r=Object.values(y.a).find(e=>e.program.toLowerCase()===n);return null==r?(t.log("purchaseProgram",()=>`Invalid program name: '${n}.`),!1):e.money<r.price?(t.log("purchaseProgram",()=>`Not enough money to purchase '${r.program}'. Need ${O.a.formatMoney(r.price)}`),!1):e.hasProgram(r.program)?(t.log("purchaseProgram",()=>`You already have the '${r.program}' program`),!0):(e.loseMoney(r.price,"other"),e.getHomeComputer().programs.push(r.program),t.log("purchaseProgram",()=>`You have purchased the '${r.program}' program. The new program can be found on your home computer.`),e.gainIntelligenceExp(u.a.IntelligenceSingFnBaseExpGain/50),!0)},getCurrentServer:function(){return a.updateDynamicRam("getCurrentServer",Object(h.c)(e,"getCurrentServer")),a.checkSingularityAccess("getCurrentServer"),e.getCurrentServer().hostname},connect:function(t){if(a.updateDynamicRam("connect",Object(h.c)(e,"connect")),a.checkSingularityAccess("connect"),!t)throw a.makeRuntimeErrorMsg("connect",`Invalid hostname: '${t}'`);const n=Object(C.d)(t);if(null==n)throw a.makeRuntimeErrorMsg("connect",`Invalid hostname: '${t}'`);if("home"===t)return e.getCurrentServer().isConnectedTo=!1,e.currentServer=e.getHomeComputer().hostname,e.getCurrentServer().isConnectedTo=!0,F.a.setcwd("/"),!0;const r=e.getCurrentServer();for(let a=0;a<r.serversOnNetwork.length;a++){const i=Object(I.a)(r,a);if(null!==i&&i.hostname==t)return e.getCurrentServer().isConnectedTo=!1,e.currentServer=n.hostname,e.getCurrentServer().isConnectedTo=!0,F.a.setcwd("/"),!0}return!1},manualHack:function(){a.updateDynamicRam("manualHack",Object(h.c)(e,"manualHack")),a.checkSingularityAccess("manualHack");const t=e.getCurrentServer();return a.hack(t.hostname,!0)},installBackdoor:function(){a.updateDynamicRam("installBackdoor",Object(h.c)(e,"installBackdoor")),a.checkSingularityAccess("installBackdoor");const n=e.getCurrentServer();if(!(n instanceof j.a))return t.log("installBackdoor",()=>"cannot backdoor this kind of server"),Promise.resolve();const r=n,i=Object(D.d)(r,e)/4*1e3,o=Object(B.b)(r,e);if(!o.res)throw a.makeRuntimeErrorMsg("installBackdoor",o.msg||"");return t.log("installBackdoor",()=>`Installing backdoor on '${r.hostname}' in ${Object(P.b)(i,!0)}`),Object(N.c)(i,t).then((function(){return t.log("installBackdoor",()=>`Successfully installed backdoor on '${r.hostname}'`),r.backdoorInstalled=!0,_.a.WorldDaemon===r.hostname&&v.b.toBitVerse(!1,!1),Promise.resolve()}))},isFocused:function(){return a.updateDynamicRam("isFocused",Object(h.c)(e,"isFocused")),a.checkSingularityAccess("isFocused"),e.focus},setFocus:function(t){const n=a.boolean(t);if(a.updateDynamicRam("setFocus",Object(h.c)(e,"setFocus")),a.checkSingularityAccess("setFocus"),!e.isWorking)throw a.makeRuntimeErrorMsg("setFocus","Not currently working");if(e.workType!=u.a.WorkTypeFaction&&e.workType!=u.a.WorkTypeCompany&&e.workType!=u.a.WorkTypeCompanyPartTime)throw a.makeRuntimeErrorMsg("setFocus","Cannot change focus for current job");return!e.focus&&n?(e.startFocusing(),v.b.toWork(),!0):!(!e.focus||n)&&(e.stopFocusing(),v.b.toTerminal(),!0)},getStats:function(){return a.updateDynamicRam("getStats",Object(h.c)(e,"getStats")),a.checkSingularityAccess("getStats"),t.log("getStats",()=>"getStats is deprecated, please use getplayer"),{hacking:e.hacking,strength:e.strength,defense:e.defense,dexterity:e.dexterity,agility:e.agility,charisma:e.charisma,intelligence:e.intelligence}},getCharacterInformation:function(){return a.updateDynamicRam("getCharacterInformation",Object(h.c)(e,"getCharacterInformation")),a.checkSingularityAccess("getCharacterInformation"),t.log("getCharacterInformation",()=>"getCharacterInformation is deprecated, please use getplayer"),{bitnode:e.bitNodeN,city:e.city,factions:e.factions.slice(),hp:e.hp,jobs:Object.keys(e.jobs),jobTitles:Object.values(e.jobs),maxHp:e.max_hp,mult:{agility:e.agility_mult,agilityExp:e.agility_exp_mult,companyRep:e.company_rep_mult,crimeMoney:e.crime_money_mult,crimeSuccess:e.crime_success_mult,defense:e.defense_mult,defenseExp:e.defense_exp_mult,dexterity:e.dexterity_mult,dexterityExp:e.dexterity_exp_mult,factionRep:e.faction_rep_mult,hacking:e.hacking_mult,hackingExp:e.hacking_exp_mult,strength:e.strength_mult,strengthExp:e.strength_exp_mult,workMoney:e.work_money_mult},timeWorked:e.timeWorked,tor:e.hasTorRouter(),workHackExpGain:e.workHackExpGained,workStrExpGain:e.workStrExpGained,workDefExpGain:e.workDefExpGained,workDexExpGain:e.workDexExpGained,workAgiExpGain:e.workAgiExpGained,workChaExpGain:e.workChaExpGained,workRepGain:e.workRepGained,workMoneyGain:e.workMoneyGained,hackingExp:e.hacking_exp,strengthExp:e.strength_exp,defenseExp:e.defense_exp,dexterityExp:e.dexterity_exp,agilityExp:e.agility_exp,charismaExp:e.charisma_exp}},hospitalize:function(){if(a.updateDynamicRam("hospitalize",Object(h.c)(e,"hospitalize")),a.checkSingularityAccess("hospitalize"),!e.isWorking&&v.b.page()!==w.a.Infiltration&&v.b.page()!==w.a.BitVerse)return e.hospitalize();t.log("hospitalize",()=>"Cannot go to the hospital because the player is busy.")},isBusy:function(){return a.updateDynamicRam("isBusy",Object(h.c)(e,"isBusy")),a.checkSingularityAccess("isBusy"),e.isWorking||v.b.page()===w.a.Infiltration||v.b.page()===w.a.BitVerse},stopAction:function(){if(a.updateDynamicRam("stopAction",Object(h.c)(e,"stopAction")),a.checkSingularityAccess("stopAction"),e.isWorking){e.focus&&(e.stopFocusing(),v.b.toTerminal());const a=e.singularityStopWork();return t.log("stopAction",()=>a),!0}return!1},upgradeHomeCores:function(){a.updateDynamicRam("upgradeHomeCores",Object(h.c)(e,"upgradeHomeCores")),a.checkSingularityAccess("upgradeHomeCores");const n=e.getHomeComputer();if(n.cpuCores>=8)return t.log("upgradeHomeCores",()=>"Your home computer is at max cores."),!1;const r=e.getUpgradeHomeCoresCost();return e.money<r?(t.log("upgradeHomeCores",()=>"You don't have enough money. Need "+O.a.formatMoney(r)),!1):(n.cpuCores+=1,e.loseMoney(r,"servers"),e.gainIntelligenceExp(2*u.a.IntelligenceSingFnBaseExpGain),t.log("upgradeHomeCores",()=>`Purchased an additional core for home computer! It now has ${n.cpuCores} cores.`),!0)},getUpgradeHomeCoresCost:function(){return a.updateDynamicRam("getUpgradeHomeCoresCost",Object(h.c)(e,"getUpgradeHomeCoresCost")),a.checkSingularityAccess("getUpgradeHomeCoresCost"),e.getUpgradeHomeCoresCost()},upgradeHomeRam:function(){a.updateDynamicRam("upgradeHomeRam",Object(h.c)(e,"upgradeHomeRam")),a.checkSingularityAccess("upgradeHomeRam");const n=e.getHomeComputer();if(n.maxRam>=u.a.HomeComputerMaxRam)return t.log("upgradeHomeRam",()=>"Your home computer is at max RAM."),!1;const r=e.getUpgradeHomeRamCost();return e.money<r?(t.log("upgradeHomeRam",()=>"You don't have enough money. Need "+O.a.formatMoney(r)),!1):(n.maxRam*=2,e.loseMoney(r,"servers"),e.gainIntelligenceExp(2*u.a.IntelligenceSingFnBaseExpGain),t.log("upgradeHomeRam",()=>`Purchased additional RAM for home computer! It now has ${O.a.formatRAM(n.maxRam)} of RAM.`),!0)},getUpgradeHomeRamCost:function(){return a.updateDynamicRam("getUpgradeHomeRamCost",Object(h.c)(e,"getUpgradeHomeRamCost")),a.checkSingularityAccess("getUpgradeHomeRamCost"),e.getUpgradeHomeRamCost()},workForCompany:function(n,r=!0){if(a.updateDynamicRam("workForCompany",Object(h.c)(e,"workForCompany")),a.checkSingularityAccess("workForCompany"),null==n&&(n=e.companyName),null==n||""===n||!(R.a[n]instanceof T.a))return t.log("workForCompany",()=>`Invalid company: '${n}'`),!1;if(!Object.keys(e.jobs).includes(n))return t.log("workForCompany",()=>`You do not have a job at '${n}'`),!1;const i=e.jobs[n],o=g.a[i];if(""===i||!(o instanceof f.a))return t.log("workForCompany",()=>"You do not have a job"),!1;const s=e.focus;if(e.isWorking){const a=e.singularityStopWork();t.log("workForCompany",()=>a)}return o.isPartTimeJob()?e.startWorkPartTime(n):e.startWork(n),r?(e.startFocusing(),v.b.toWork()):s&&(e.stopFocusing(),v.b.toTerminal()),t.log("workForCompany",()=>`Began working at '${e.companyName}' as a '${i}'`),!0},applyToCompany:function(n,r){let i;switch(a.updateDynamicRam("applyToCompany",Object(h.c)(e,"applyToCompany")),a.checkSingularityAccess("applyToCompany"),W("applyToCompany",n),e.location=n,r.toLowerCase()){case"software":i=e.applyForSoftwareJob(!0);break;case"software consultant":i=e.applyForSoftwareConsultantJob(!0);break;case"it":i=e.applyForItJob(!0);break;case"security engineer":i=e.applyForSecurityEngineerJob(!0);break;case"network engineer":i=e.applyForNetworkEngineerJob(!0);break;case"business":i=e.applyForBusinessJob(!0);break;case"business consultant":i=e.applyForBusinessConsultantJob(!0);break;case"security":i=e.applyForSecurityJob(!0);break;case"agent":i=e.applyForAgentJob(!0);break;case"employee":i=e.applyForEmployeeJob(!0);break;case"part-time employee":i=e.applyForPartTimeEmployeeJob(!0);break;case"waiter":i=e.applyForWaiterJob(!0);break;case"part-time waiter":i=e.applyForPartTimeWaiterJob(!0);break;default:return t.log("applyToCompany",()=>`Invalid job: '${r}'.`),!1}return i?t.log("applyToCompany",()=>`You were offered a new job at '${n}' as a '${e.jobs[n]}'`):t.log("applyToCompany",()=>`You failed to get a new job/promotion at '${n}' in the '${r}' field.`),i},getCompanyRep:function(t){a.updateDynamicRam("getCompanyRep",Object(h.c)(e,"getCompanyRep")),a.checkSingularityAccess("getCompanyRep");return W("getCompanyRep",t).playerReputation},getCompanyFavor:function(t){a.updateDynamicRam("getCompanyFavor",Object(h.c)(e,"getCompanyFavor")),a.checkSingularityAccess("getCompanyFavor");return W("getCompanyFavor",t).favor},getCompanyFavorGain:function(t){a.updateDynamicRam("getCompanyFavorGain",Object(h.c)(e,"getCompanyFavorGain")),a.checkSingularityAccess("getCompanyFavorGain");return W("getCompanyFavorGain",t).getFavorGain()},checkFactionInvitations:function(){return a.updateDynamicRam("checkFactionInvitations",Object(h.c)(e,"checkFactionInvitations")),a.checkSingularityAccess("checkFactionInvitations"),e.factionInvitations.slice()},joinFaction:function(r){if(a.updateDynamicRam("joinFaction",Object(h.c)(e,"joinFaction")),a.checkSingularityAccess("joinFaction"),L("joinFaction",r),!e.factionInvitations.includes(r))return t.log("joinFaction",()=>`You have not been invited by faction '${r}'`),!1;const i=A.a[r];Object(n.d)(i);for(let t=0;t<e.factionInvitations.length;++t)(e.factionInvitations[t]==r||A.a[e.factionInvitations[t]].isBanned)&&(e.factionInvitations.splice(t,1),t--);return e.gainIntelligenceExp(5*u.a.IntelligenceSingFnBaseExpGain),t.log("joinFaction",()=>`Joined the '${r}' faction.`),!0},workForFaction:function(n,r,i=!0){if(a.updateDynamicRam("workForFaction",Object(h.c)(e,"workForFaction")),a.checkSingularityAccess("workForFaction"),L("workForFaction",n),e.inGang()&&void 0!==b.a[n])return t.log("workForFaction",()=>`Faction '${n}' does not offer work at the moment.`),!1;if(!e.factions.includes(n))return t.log("workForFaction",()=>`You are not a member of '${n}'`),!1;const o=e.focus;if(e.isWorking){const a=e.singularityStopWork();t.log("workForFaction",()=>a)}const s=A.a[n],l=["Illuminati","Daedalus","The Covenant","ECorp","MegaCorp","Bachman & Associates","Blade Industries","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma","KuaiGong International","Fulcrum Secret Technologies","BitRunners","The Black Hand","NiteSec","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Speakers for the Dead","The Dark Army","The Syndicate","Silhouette","Netburners","Tian Di Hui","CyberSec"],c=["Illuminati","Daedalus","The Covenant","ECorp","MegaCorp","Bachman & Associates","Blade Industries","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma","KuaiGong International","The Black Hand","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Speakers for the Dead","The Dark Army","The Syndicate","Silhouette","Tetrads","Slum Snakes"],u=["ECorp","MegaCorp","Bachman & Associates","Blade Industries","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma","KuaiGong International","Fulcrum Secret Technologies","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Speakers for the Dead","The Syndicate","Tetrads","Slum Snakes","Tian Di Hui"];switch(r.toLowerCase()){case"hacking":case"hacking contracts":case"hackingcontracts":return l.includes(s.name)?(e.startFactionHackWork(s),i?(e.startFocusing(),v.b.toWork()):o&&(e.stopFocusing(),v.b.toTerminal()),t.log("workForFaction",()=>`Started carrying out hacking contracts for '${s.name}'`),!0):(t.log("workForFaction",()=>`Faction '${s.name}' do not need help with hacking contracts.`),!1);case"field":case"fieldwork":case"field work":return c.includes(s.name)?(e.startFactionFieldWork(s),i?(e.startFocusing(),v.b.toWork()):o&&(e.stopFocusing(),v.b.toTerminal()),t.log("workForFaction",()=>`Started carrying out field missions for '${s.name}'`),!0):(t.log("workForFaction",()=>`Faction '${s.name}' do not need help with field missions.`),!1);case"security":case"securitywork":case"security work":return u.includes(s.name)?(e.startFactionSecurityWork(s),i?(e.startFocusing(),v.b.toWork()):o&&(e.stopFocusing(),v.b.toTerminal()),t.log("workForFaction",()=>`Started carrying out security work for '${s.name}'`),!0):(t.log("workForFaction",()=>`Faction '${s.name}' do not need help with security work.`),!1);default:t.log("workForFaction",()=>"Invalid work type: '"+r)}return!0},getFactionRep:function(t){a.updateDynamicRam("getFactionRep",Object(h.c)(e,"getFactionRep")),a.checkSingularityAccess("getFactionRep");return L("getFactionRep",t).playerReputation},getFactionFavor:function(t){a.updateDynamicRam("getFactionFavor",Object(h.c)(e,"getFactionFavor")),a.checkSingularityAccess("getFactionFavor");return L("getFactionFavor",t).favor},getFactionFavorGain:function(t){a.updateDynamicRam("getFactionFavorGain",Object(h.c)(e,"getFactionFavorGain")),a.checkSingularityAccess("getFactionFavorGain");return L("getFactionFavorGain",t).getFavorGain()},donateToFaction:function(n,r){a.updateDynamicRam("donateToFaction",Object(h.c)(e,"donateToFaction")),a.checkSingularityAccess("donateToFaction");const i=L("donateToFaction",n);if(!e.factions.includes(i.name))return t.log("donateToFaction",()=>`You can't donate to '${n}' because you aren't a member`),!1;if(e.inGang()&&i.name===e.getGangFaction().name)return t.log("donateToFaction",()=>`You can't donate to '${n}' because youre managing a gang for it`),!1;if("number"!=typeof r||r<=0||isNaN(r))return t.log("donateToFaction",()=>`Invalid donation amount: '${r}'.`),!1;if(e.money<r)return t.log("donateToFaction",()=>`You do not have enough money to donate ${O.a.formatMoney(r)} to '${n}'`),!1;const o=Math.round(u.a.BaseFavorToDonate*M.a.RepToDonateToFaction);if(i.favor<o)return t.log("donateToFaction",()=>`You do not have enough favor to donate to this faction. Have ${i.favor}, need ${o}`),!1;const s=r/u.a.DonateMoneyToRepDivisor*e.faction_rep_mult;return i.playerReputation+=s,e.loseMoney(r,"other"),t.log("donateToFaction",()=>`${O.a.formatMoney(r)} donated to '${n}' for ${O.a.formatReputation(s)} reputation`),!0},createProgram:function(n,r=!0){a.updateDynamicRam("createProgram",Object(h.c)(e,"createProgram")),a.checkSingularityAccess("createProgram");const i=e.focus;if(e.isWorking){const a=e.singularityStopWork();t.log("createProgram",()=>a)}n=n.toLowerCase();const o=Object.values(x.a).find(e=>e.name.toLowerCase()===n);if(null==o)return t.log("createProgram",()=>"The specified program does not exist: '"+n),!1;if(e.hasProgram(o.name))return t.log("createProgram",()=>`You already have the '${o.name}' program`),!1;const s=o.create;return null===s?(t.log("createProgram",()=>`You cannot create the '${o.name}' program`),!1):s.req(e)?(e.startCreateProgramWork(v.b,o.name,s.time,s.level),r?(e.startFocusing(),v.b.toWork()):i&&(e.stopFocusing(),v.b.toTerminal()),t.log("createProgram",()=>`Began creating program: '${n}'`),!0):(t.log("createProgram",()=>`Hacking level is too low to create '${o.name}' (level ${s.level} req)`),!1)},commitCrime:function(n){if(a.updateDynamicRam("commitCrime",Object(h.c)(e,"commitCrime")),a.checkSingularityAccess("commitCrime"),e.isWorking){const a=e.singularityStopWork();t.log("commitCrime",()=>a)}e.gotoLocation(k.a.Slums);const r=Object(p.b)(n.toLowerCase());if(null==r)throw a.makeRuntimeErrorMsg("commitCrime",`Invalid crime: '${n}'`);return t.log("commitCrime",()=>`Attempting to commit ${r.name}...`),r.commit(v.b,e,1,t)},getCrimeChance:function(t){a.updateDynamicRam("getCrimeChance",Object(h.c)(e,"getCrimeChance")),a.checkSingularityAccess("getCrimeChance");const n=Object(p.b)(t.toLowerCase());if(null==n)throw a.makeRuntimeErrorMsg("getCrimeChance","Invalid crime: "+t);return n.successRate(e)},getCrimeStats:function(t){a.updateDynamicRam("getCrimeStats",Object(h.c)(e,"getCrimeStats")),a.checkSingularityAccess("getCrimeStats");const n=Object(p.b)(t.toLowerCase());if(null==n)throw a.makeRuntimeErrorMsg("getCrimeStats","Invalid crime: "+t);return Object.assign({},n)}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(30);const r=[{name:n.j[0],nextPosition:n.j[1],baseSalary:33,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.05,reqdHacking:1,repMultiplier:.9},{name:n.j[1],nextPosition:n.j[2],baseSalary:80,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.1,reqdHacking:51,reqdReputation:8e3,repMultiplier:1.1},{name:n.j[2],nextPosition:n.j[3],baseSalary:165,charismaEffectiveness:20,charismaExpGain:.08,hackingEffectiveness:80,hackingExpGain:.4,reqdCharisma:51,reqdHacking:251,reqdReputation:4e4,repMultiplier:1.3},{name:n.j[3],nextPosition:n.j[4],baseSalary:500,charismaEffectiveness:25,charismaExpGain:.1,hackingEffectiveness:75,hackingExpGain:.8,reqdCharisma:151,reqdHacking:401,reqdReputation:2e5,repMultiplier:1.5},{name:n.j[4],nextPosition:n.j[5],baseSalary:800,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1,reqdCharisma:251,reqdHacking:501,reqdReputation:4e5,repMultiplier:1.6},{name:n.j[5],nextPosition:n.j[6],baseSalary:1650,charismaEffectiveness:25,charismaExpGain:.5,hackingEffectiveness:75,hackingExpGain:1.1,reqdCharisma:251,reqdHacking:501,reqdReputation:8e5,repMultiplier:1.6},{name:n.j[6],nextPosition:n.j[7],baseSalary:2310,charismaEffectiveness:30,charismaExpGain:.6,hackingEffectiveness:70,hackingExpGain:1.2,reqdCharisma:401,reqdHacking:601,reqdReputation:16e5,repMultiplier:1.75},{name:n.j[7],nextPosition:null,baseSalary:2640,charismaEffectiveness:35,charismaExpGain:1,hackingEffectiveness:65,hackingExpGain:1.5,reqdCharisma:501,reqdHacking:751,reqdReputation:32e5,repMultiplier:2},{name:n.d[0],nextPosition:n.d[1],baseSalary:26,charismaEffectiveness:10,charismaExpGain:.01,hackingEffectiveness:90,hackingExpGain:.04,reqdHacking:1,repMultiplier:.9},{name:n.d[1],nextPosition:n.d[2],baseSalary:66,charismaEffectiveness:15,charismaExpGain:.02,hackingEffectiveness:85,hackingExpGain:.08,reqdHacking:26,reqdReputation:7e3,repMultiplier:1.1},{name:n.d[2],nextPosition:n.d[3],baseSalary:132,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.3,reqdCharisma:51,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.3},{name:n.d[3],nextPosition:n.j[5],baseSalary:410,charismaEffectiveness:20,charismaExpGain:.2,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.4},{name:n.i[0],nextPosition:n.j[5],baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},{name:n.f[0],nextPosition:n.f[1],baseSalary:121,charismaEffectiveness:15,charismaExpGain:.05,hackingEffectiveness:85,hackingExpGain:.4,reqdCharisma:26,reqdHacking:151,reqdReputation:35e3,repMultiplier:1.2},{name:n.f[1],nextPosition:n.j[5],baseSalary:410,charismaEffectiveness:20,charismaExpGain:.1,hackingEffectiveness:80,hackingExpGain:.5,reqdCharisma:76,reqdHacking:251,reqdReputation:175e3,repMultiplier:1.3},{name:n.b[0],nextPosition:n.b[1],baseSalary:46,charismaEffectiveness:90,charismaExpGain:.08,hackingEffectiveness:10,hackingExpGain:.01,reqdCharisma:1,reqdHacking:1,repMultiplier:.9},{name:n.b[1],nextPosition:n.b[2],baseSalary:100,charismaEffectiveness:85,charismaExpGain:.15,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:51,reqdHacking:6,reqdReputation:8e3,repMultiplier:1.1},{name:n.b[2],nextPosition:n.b[3],baseSalary:200,charismaEffectiveness:85,charismaExpGain:.3,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:101,reqdHacking:51,reqdReputation:4e4,repMultiplier:1.3},{name:n.b[3],nextPosition:n.b[4],baseSalary:660,charismaEffectiveness:85,charismaExpGain:.4,hackingEffectiveness:15,hackingExpGain:.02,reqdCharisma:226,reqdHacking:51,reqdReputation:2e5,repMultiplier:1.5},{name:n.b[4],nextPosition:n.b[5],baseSalary:1950,charismaEffectiveness:90,charismaExpGain:1,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:501,reqdHacking:76,reqdReputation:8e5,repMultiplier:1.6},{name:n.b[5],nextPosition:null,baseSalary:3900,charismaEffectiveness:90,charismaExpGain:1.5,hackingEffectiveness:10,hackingExpGain:.05,reqdCharisma:751,reqdHacking:101,reqdReputation:32e5,repMultiplier:1.75},{name:n.h[0],nextPosition:n.h[1],baseSalary:82,hackingEffectiveness:5,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.02,strengthExpGain:.08,defenseExpGain:.08,dexterityExpGain:.08,agilityExpGain:.08,charismaExpGain:.04,reqdHacking:11,reqdStrength:101,reqdDefense:101,reqdDexterity:101,reqdAgility:101,reqdCharisma:51,reqdReputation:8e3,repMultiplier:1},{name:n.h[1],nextPosition:null,baseSalary:460,hackingEffectiveness:5,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.02,strengthExpGain:.1,defenseExpGain:.1,dexterityExpGain:.1,agilityExpGain:.1,charismaExpGain:.1,reqdHacking:101,reqdStrength:301,reqdDefense:301,reqdDexterity:301,reqdAgility:301,reqdCharisma:151,reqdReputation:36e3,repMultiplier:1.25},{name:n.h[2],nextPosition:n.h[3],baseSalary:50,hackingEffectiveness:5,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.01,strengthExpGain:.04,defenseExpGain:.04,dexterityExpGain:.04,agilityExpGain:.04,charismaExpGain:.02,reqdStrength:51,reqdDefense:51,reqdDexterity:51,reqdAgility:51,reqdCharisma:1,repMultiplier:1},{name:n.h[3],nextPosition:n.h[4],baseSalary:195,hackingEffectiveness:10,strengthEffectiveness:20,defenseEffectiveness:20,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:10,hackingExpGain:.02,strengthExpGain:.1,defenseExpGain:.1,dexterityExpGain:.1,agilityExpGain:.1,charismaExpGain:.05,reqdHacking:26,reqdStrength:151,reqdDefense:151,reqdDexterity:151,reqdAgility:151,reqdCharisma:51,reqdReputation:8e3,repMultiplier:1.1},{name:n.h[4],nextPosition:n.h[5],baseSalary:660,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.02,strengthExpGain:.12,defenseExpGain:.12,dexterityExpGain:.12,agilityExpGain:.12,charismaExpGain:.1,reqdHacking:26,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:101,reqdReputation:36e3,repMultiplier:1.25},{name:n.h[5],nextPosition:null,baseSalary:1320,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:15,agilityEffectiveness:15,charismaEffectiveness:30,hackingExpGain:.05,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.15,reqdHacking:51,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:151,reqdReputation:144e3,repMultiplier:1.4},{name:n.a[0],nextPosition:n.a[1],baseSalary:330,hackingEffectiveness:10,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:20,hackingExpGain:.04,strengthExpGain:.08,defenseExpGain:.08,dexterityExpGain:.08,agilityExpGain:.08,charismaExpGain:.05,reqdHacking:101,reqdStrength:101,reqdDefense:101,reqdDexterity:101,reqdAgility:101,reqdCharisma:101,reqdReputation:8e3,repMultiplier:1},{name:n.a[1],nextPosition:n.a[2],baseSalary:990,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.1,strengthExpGain:.15,defenseExpGain:.15,dexterityExpGain:.15,agilityExpGain:.15,charismaExpGain:.1,reqdHacking:201,reqdStrength:251,reqdDefense:251,reqdDexterity:251,reqdAgility:251,reqdCharisma:201,reqdReputation:32e3,repMultiplier:1.25},{name:n.a[2],nextPosition:null,baseSalary:2e3,hackingEffectiveness:15,strengthEffectiveness:15,defenseEffectiveness:15,dexterityEffectiveness:20,agilityEffectiveness:20,charismaEffectiveness:15,hackingExpGain:.15,strengthExpGain:.2,defenseExpGain:.2,dexterityExpGain:.2,agilityExpGain:.2,charismaExpGain:.15,reqdHacking:251,reqdStrength:501,reqdDefense:501,reqdDexterity:501,reqdAgility:501,reqdCharisma:251,reqdReputation:162e3,repMultiplier:1.5},{name:n.e[0],nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.05,repMultiplier:1},{name:n.e[1],nextPosition:null,baseSalary:22,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.02,defenseExpGain:.02,dexterityExpGain:.02,agilityExpGain:.02,charismaExpGain:.04,repMultiplier:1},{name:n.k[0],nextPosition:n.k[1],baseSalary:66,hackingEffectiveness:80,charismaEffectiveness:20,hackingExpGain:.08,charismaExpGain:.03,reqdHacking:51,repMultiplier:1},{name:n.k[1],nextPosition:null,baseSalary:132,hackingEffectiveness:75,charismaEffectiveness:25,hackingExpGain:.25,charismaExpGain:.06,reqdHacking:251,reqdCharisma:51,repMultiplier:1.2},{name:n.c[0],nextPosition:n.c[1],baseSalary:66,hackingEffectiveness:20,charismaEffectiveness:80,hackingExpGain:.015,charismaExpGain:.15,reqdHacking:6,reqdCharisma:51,repMultiplier:1},{name:n.c[1],nextPosition:null,baseSalary:525,hackingEffectiveness:15,charismaEffectiveness:85,hackingExpGain:.015,charismaExpGain:.3,reqdHacking:51,reqdCharisma:226,repMultiplier:1.2},{name:n.g[0],nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.04,repMultiplier:1},{name:n.g[1],nextPosition:null,baseSalary:20,strengthEffectiveness:10,dexterityEffectiveness:10,agilityEffectiveness:10,charismaEffectiveness:70,strengthExpGain:.0075,defenseExpGain:.0075,dexterityExpGain:.0075,agilityExpGain:.0075,charismaExpGain:.03,repMultiplier:1}]},,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(2),r=a(207),i=a(24);const o=[["getHackTime","returns milliseconds"],["getGrowTime","returns milliseconds"],["getWeakenTime","returns milliseconds"],["getActionTime","returns milliseconds"],["hackAnalyzePercent","renamed 'hackAnalyze' and returns decimal"],["hackChance","renamed 'hackAnalyzeChance'"],["basic.calculateSkill","renamed 'skills.calculateSkill'"],["basic.calculateExp","renamed 'skills.calculateExp'"],["basic.hackChance","renamed 'hacking.hackChance'"],["basic.hackExp","renamed 'hacking.hackExp'"],["basic.hackPercent","renamed 'hacking.hackPercent'"],["basic.growPercent","renamed 'hacking.growPercent'"],["basic.hackTime","renamed 'hacking.hackTime'"],["basic.growTime","renamed 'hacking.growTime'"],["basic.weakenTime","renamed 'hacking.weakenTime'"],["write","needs to be awaited"],["scp","needs to be awaited"],["sleep","Can no longer be called simultenaously."],["hacking_skill","renamed 'hacking'"],["tryWrite","renamed 'tryWritePort'"]],s=[[/ns.getHackTime/g,"((...a)=>ns.getHackTime(...a)/1000)"],[/ns.getGrowTime/g,"((...a)=>ns.getGrowTime(...a)/1000)"],[/ns.getWeakenTime/g,"((...a)=>ns.getWeakenTime(...a)/1000)"],[/ns.bladeburner.getActionTime/g,"((...a)=>ns.bladeburner.getActionTime(...a)/1000)"],[/ns.hackAnalyzePercent/g,"((...a)=>ns.hackAnalyze(...a)*100)"],[/ns.hackChance/g,"ns.hackAnalyzeChance"],[/ns.tryWrite/g,"ns.tryWritePort"],[/formulas.basic.calculateSkill/g,"formulas.skills.calculateSkill"],[/formulas.basic.calculateExp/g,"formulas.skills.calculateExp"],[/formulas.basic.hackChance/g,"formulas.hacking.hackChance"],[/formulas.basic.hackExp/g,"formulas.hacking.hackExp"],[/formulas.basic.hackPercent/g,"formulas.hacking.hackPercent"],[/formulas.basic.growPercent/g,"formulas.hacking.growPercent"],[/formulas.basic.hackTime/g,"formulas.hacking.hackTime"],[/formulas.basic.growTime/g,"formulas.hacking.growTime"],[/formulas.basic.weakenTime/g,"formulas.hacking.weakenTime"]];function l(e){for(const t of s)if(e.match(t[0]))return!0;return!1}function c(e){const t=e.split("\n"),a=[];for(let e=0;e<t.length;e++){const n=t[e];let r=t[e];for(const e of s)r=r.replace(e[0],e[1]);r!=n&&(a.push("// =============================== original line ==============================="),a.push("/**"),a.push(" * "+n),a.push(" */"),a.push("// =============================================================================")),a.push(r)}return a.join("\n")}function u(){let e="";for(const t of Object(i.c)())for(const a of o){const n=[];for(const e of t.scripts){const t=e.code.split("\n");for(let r=0;r<t.length;r++)t[r].includes(a[0])&&n.push({file:e.filename,line:r+1})}if(0!==n.length){e+=`// Detected change ${a[0]}, reason: ${a[1]}\n`;for(const t of n)e+=`${t.file}:${t.line}\n`}}if(""!==e){n.a.getHomeComputer().writeToTextFile("v1_DETECTED_CHANGES.txt",e)}for(const e of Object(i.c)()){const t=[];for(const a of e.scripts){if(!l(a.code))continue;const e=a.filename.includes("/")?"/BACKUP_":"BACKUP_";t.push(new r.a(n.a,e+a.filename,a.code,a.server)),a.code=c(a.code)}e.scripts=e.scripts.concat(t)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(23),r=a(9),i=a(48);const o=[{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:8.18},name:r.a.AevumAeroCorp,types:[i.a.Company]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:8.19},name:r.a.AevumBachmanAndAssociates,types:[i.a.Company]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:9.55},name:r.a.AevumClarkeIncorporated,types:[i.a.Company]},{city:n.a.Aevum,costMult:3,expMult:2,name:r.a.AevumCrushFitnessGym,types:[i.a.Gym]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:37,startingSecurityLevel:17.02},name:r.a.AevumECorp,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:512,techVendorMinRam:128},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:15.54},name:r.a.AevumFulcrumTechnologies,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:1024,techVendorMinRam:256},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:7.89},name:r.a.AevumGalacticCybersystems,types:[i.a.Company]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:3.29},name:r.a.AevumNetLinkTechnologies,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:64,techVendorMinRam:8},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:6,startingSecurityLevel:5.35},name:r.a.AevumPolice,types:[i.a.Company]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:5.02},name:r.a.AevumRhoConstruction,types:[i.a.Company]},{city:n.a.Aevum,costMult:10,expMult:5,name:r.a.AevumSnapFitnessGym,types:[i.a.Gym]},{city:n.a.Aevum,costMult:4,expMult:3,name:r.a.AevumSummitUniversity,types:[i.a.University]},{city:n.a.Aevum,infiltrationData:{maxClearanceLevel:7,startingSecurityLevel:5.85},name:r.a.AevumWatchdogSecurity,types:[i.a.Company]},{city:n.a.Aevum,name:r.a.AevumCasino,types:[i.a.Casino]},{city:n.a.Chongqing,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:16.25},name:r.a.ChongqingKuaiGongInternational,types:[i.a.Company]},{city:n.a.Chongqing,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:12.59},name:r.a.ChongqingSolarisSpaceSystems,types:[i.a.Company]},{city:n.a.Ishima,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.02},name:r.a.IshimaNovaMedical,types:[i.a.Company]},{city:n.a.Ishima,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.2},name:r.a.IshimaOmegaSoftware,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:128,techVendorMinRam:4},{city:n.a.Ishima,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.38},name:r.a.IshimaStormTechnologies,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:512,techVendorMinRam:32},{city:n.a.NewTokyo,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:7.18},name:r.a.NewTokyoDefComm,types:[i.a.Company]},{city:n.a.NewTokyo,infiltrationData:{maxClearanceLevel:20,startingSecurityLevel:5.9},name:r.a.NewTokyoGlobalPharmaceuticals,types:[i.a.Company]},{city:n.a.NewTokyo,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:2.5},name:r.a.NewTokyoNoodleBar,types:[i.a.Company,i.a.Special]},{city:n.a.NewTokyo,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:5.52},name:r.a.NewTokyoVitaLife,types:[i.a.Company,i.a.Special]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:10,startingSecurityLevel:3.62},name:r.a.Sector12AlphaEnterprises,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:8,techVendorMinRam:2},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:10.59},name:r.a.Sector12BladeIndustries,types:[i.a.Company]},{city:n.a.Sector12,name:r.a.Sector12CIA,types:[i.a.Company]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.66},name:r.a.Sector12CarmichaelSecurity,types:[i.a.Company]},{city:n.a.Sector12,name:r.a.Sector12CityHall,types:[i.a.Special]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:r.a.Sector12DeltaOne,types:[i.a.Company]},{city:n.a.Sector12,name:r.a.Sector12FoodNStuff,types:[i.a.Company]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:8.18},name:r.a.Sector12FourSigma,types:[i.a.Company]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:17,startingSecurityLevel:6.02},name:r.a.Sector12IcarusMicrosystems,types:[i.a.Company]},{city:n.a.Sector12,expMult:1,costMult:1,name:r.a.Sector12IronGym,types:[i.a.Gym]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:5,startingSecurityLevel:3.13},name:r.a.Sector12JoesGuns,types:[i.a.Company]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:31,startingSecurityLevel:16.36},name:r.a.Sector12MegaCorp,types:[i.a.Company]},{city:n.a.Sector12,name:r.a.Sector12NSA,types:[i.a.Company,i.a.Special]},{city:n.a.Sector12,costMult:20,expMult:10,name:r.a.Sector12PowerhouseGym,types:[i.a.Gym]},{city:n.a.Sector12,costMult:3,expMult:2,name:r.a.Sector12RothmanUniversity,types:[i.a.University]},{city:n.a.Sector12,infiltrationData:{maxClearanceLevel:12,startingSecurityLevel:5.9},name:r.a.Sector12UniversalEnergy,types:[i.a.Company]},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:3.59},name:r.a.VolhavenCompuTek,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:256,techVendorMinRam:8},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:7.28},name:r.a.VolhavenHeliosLabs,types:[i.a.Company]},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:15,startingSecurityLevel:4.35},name:r.a.VolhavenLexoCorp,types:[i.a.Company]},{city:n.a.Volhaven,costMult:7,expMult:4,name:r.a.VolhavenMilleniumFitnessGym,types:[i.a.Gym]},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:50,startingSecurityLevel:8.53},name:r.a.VolhavenNWO,types:[i.a.Company]},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:25,startingSecurityLevel:7.74},name:r.a.VolhavenOmniTekIncorporated,types:[i.a.Company,i.a.TechVendor],techVendorMaxRam:1024,techVendorMinRam:128},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:22,startingSecurityLevel:6},name:r.a.VolhavenOmniaCybersystems,types:[i.a.Company]},{city:n.a.Volhaven,infiltrationData:{maxClearanceLevel:18,startingSecurityLevel:4.77},name:r.a.VolhavenSysCoreSecurities,types:[i.a.Company]},{city:n.a.Volhaven,costMult:5,expMult:4,name:r.a.VolhavenZBInstituteOfTechnology,types:[i.a.University]},{city:null,name:r.a.Hospital,types:[i.a.Hospital]},{city:null,name:r.a.Slums,types:[i.a.Slums]},{city:null,name:r.a.TravelAgency,types:[i.a.TravelAgency]},{city:null,name:r.a.WorldStockExchange,types:[i.a.StockMarket]},{city:n.a.Chongqing,name:r.a.ChongqingChurchOfTheMachineGod,types:[i.a.Special]},{city:n.a.Ishima,name:r.a.IshimaGlitch,types:[i.a.Special]}]},function(e,t,a){"use strict";a.d(t,"a",(function(){return N}));var n=a(0),r=a.n(n),i=a(75),o=a(1),s=a(101),l=a(10),c=a(537),u=a.n(c),m=a(859),h=a.n(m),d=a(346),p=a(161),f=a(64),g=a(372),y=a.n(g),b=a(322),E=a.n(b),k=a(276),v=a.n(k),_=a(541),w=a.n(_),S=a(540),C=a.n(S),x=a(542),O=a.n(x),M=a(111),T=a(134),R=a(39);const A=Object(M.a)(e=>Object(T.a)({textfield:{borderBottom:"1px solid "+e.palette.primary.main},code:{whiteSpace:"pre",backgroundColor:e.palette.background.paper}}));function N(){const e=A(),t={[R.f.Start]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian future... The year is 2077...",r.a.createElement("br",null),r.a.createElement("br",null),"This tutorial will show you the basics of the game. You may skip the tutorial at any time.",r.a.createElement("br",null),r.a.createElement("br",null),"You can also collapse this panel to temporarily hide this tutorial.")),canNext:!0},[R.f.GoToCharacterPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Let's start by heading to the Stats page. Click"),r.a.createElement(f.a,null,r.a.createElement(y.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Stats")),r.a.createElement(o.a,null,"on the main navigation menu (left-hand side of the screen)")),canNext:!1},[R.f.CharacterPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(y.a,{color:"primary"}),r.a.createElement(o.a,{color:"primary"},"Stats")),r.a.createElement(o.a,null,"shows a lot of important information about your progress, such as your skills, money, and bonuses.")),canNext:!0},[R.f.CharacterGoToTerminalPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Let's head to your computer's terminal by clicking"),r.a.createElement(f.a,null,r.a.createElement(E.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Terminal")),r.a.createElement(o.a,null,"on the main navigation menu.")),canNext:!1},[R.f.TerminalIntro]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(E.a,{color:"primary"}),r.a.createElement(o.a,{color:"primary"},"Terminal")),r.a.createElement(o.a,null,"is used to interface with your home computer as well as all of the other machines around the world.")),canNext:!0},[R.f.TerminalHelp]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Let's try it out. Start by entering"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> help"),r.a.createElement(o.a,null,"(Don't forget to press Enter after typing the command)")),canNext:!1},[R.f.TerminalLs]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> help"),r.a.createElement(o.a,null,"displays a list of all available Terminal commands, how to use them, and a description of what they do."," ",r.a.createElement("br",null),r.a.createElement("br",null),"Let's try another command. Enter"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> ls")),canNext:!1},[R.f.TerminalScan]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> ls"),r.a.createElement(o.a,null," ","is a basic command that shows files on the computer. Right now, it shows that you have a program called"," ","NUKE.exe on your computer. We'll get to what this does later. ",r.a.createElement("br",null),r.a.createElement("br",null),"Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that now by first entering"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan")),canNext:!1},[R.f.TerminalScanAnalyze1]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan"),r.a.createElement(o.a,null,"shows all available network connections. In other words, it displays a list of all servers that can be connected to from your current machine. A server is identified by its hostname. ",r.a.createElement("br",null),r.a.createElement("br",null),"That's great and all, but there's so many servers. Which one should you go to?"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),r.a.createElement(o.a,null,"gives some more detailed information about servers on the network. Try it now!")),canNext:!1},[R.f.TerminalScanAnalyze2]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan-analyze"),r.a.createElement(o.a,null,"shows more detailed information about each server that you can connect to (servers that are a distance of one node away). ",r.a.createElement("br",null),r.a.createElement("br",null)," It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the following command:"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2")),canNext:!1},[R.f.TerminalConnect]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Now you can see information about all servers that are up to two nodes away, as well as figure out how to navigate to those servers through the network. You can only connect to a server that is one node away. To connect to a machine, use"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> connect hostname"),r.a.createElement(o.a,null,"From the results of "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> scan-analyze 2"),r.a.createElement(o.a,null," ","we can see that the n00dles server is only one node away. Let's connect so it now using:"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> connect n00dles")),canNext:!1},[R.f.TerminalAnalyze]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"You are now connected to another machine! What can you do now? You can hack it!",r.a.createElement("br",null),r.a.createElement("br",null)," In the year 2077, currency has become digital and decentralized. People and corporations store their money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain experience. ",r.a.createElement("br",null),r.a.createElement("br",null),"Before you try to hack a server, you should run diagnostics using"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> analyze")),canNext:!1},[R.f.TerminalNuke]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"When "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),r.a.createElement(o.a,null,"finishes running it will show useful information about hacking the server. ",r.a.createElement("br",null),r.a.createElement("br",null)," For this server, the required hacking skill is only 1, which means you can hack it right now. However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier on your home computer is a virus that will grant you root access to a machine if there are enough open ports."),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> analyze"),r.a.createElement(o.a,null," ","shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead and run the virus using"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> run NUKE.exe"),r.a.createElement(o.a,null)),canNext:!0},[R.f.TerminalManualHack]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"You now have root access! You can hack the server using "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> hack"),r.a.createElement(o.a,null," Try doing that now.")),canNext:!0},[R.f.TerminalHackingMechanics]:{content:r.a.createElement(o.a,null,"You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage chance of success. This time and success chance is determined by a variety of factors, including your hacking skill and the server's security level.",r.a.createElement("br",null),r.a.createElement("br",null),"If your attempt to hack the server is successful, you will steal a certain percentage of the server's total money. This percentage is affected by your hacking skill and the server's security level.",r.a.createElement("br",null),r.a.createElement("br",null),"The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will encounter diminishing returns in your hacking. You will need to use"," ",r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> grow"),"which tricks the company into adding money to their server and"," ",r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> weaken"),"which increases the speed of hack and grow."),canNext:!0},[R.f.TerminalGoHome]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"From any server you can get back home using"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[n00dles ~/]> home"),r.a.createElement(o.a,null,"Let's head home before creating our first script!")),canNext:!0},[R.f.TerminalCreateScript]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be hacking manually the entire time. You can automate your hacking by writing scripts!",r.a.createElement("br",null),r.a.createElement("br",null),"To create a new script or edit an existing one, you can use"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> nano"),r.a.createElement(o.a,null,"Scripts must end with the .script extension. Let's make a script now by entering "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> nano n00dles.script"),r.a.createElement(o.a,null,"after the hack command finishes running (Sidenote: Pressing ctrl + c will end a command like hack early)")),canNext:!1},[R.f.TerminalTypeScript]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"This is the script editor. You can use it to program your scripts. Scripts are written in a simplified version of javascript. Copy and paste the following code into the script editor: ",r.a.createElement("br",null)),r.a.createElement(o.a,{classes:{root:e.code}},r.a.createElement(p.a,{value:"while(true) {\n hack('n00dles');\n}"})),r.a.createElement(o.a,null,"For anyone with basic programming experience, this code should be straightforward. This script will continuously hack the n00dles server.",r.a.createElement("br",null),r.a.createElement("br",null),"To save and close the script editor, press the button in the bottom left, or press ctrl + s then ctrl + b.")),canNext:!1},[R.f.TerminalFree]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine which you have root access to. Different servers have different amounts of RAM. You can also purchase more RAM for your home server.",r.a.createElement("br",null),r.a.createElement("br",null),"To check how much RAM is available on this machine, enter"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> free")),canNext:!1},[R.f.TerminalRunScript]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"We have 8GB of free RAM on this machine, which is enough to run our script. Let's run our script using"),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> run n00dles.script")),canNext:!1},[R.f.TerminalGoToActiveScriptsPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Your script is now running! It will continuously run in the background and will automatically stop if the code ever completes (the n00dles.script will never complete because it runs an infinite loop). ",r.a.createElement("br",null),r.a.createElement("br",null),"These scripts can passively earn you income and hacking experience. Your scripts will also earn money and experience while you are offline, although at a slightly slower rate. ",r.a.createElement("br",null),r.a.createElement("br",null),"Let's check out some statistics for our running scripts by clicking"," "),r.a.createElement(f.a,null,r.a.createElement(C.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Active Scripts"))),canNext:!1},[R.f.ActiveScriptsPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"This page displays information about all of your scripts that are running across every server. You can use this to gauge how well your scripts are doing. Let's go back to"),r.a.createElement(f.a,null,r.a.createElement(E.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Terminal"))),canNext:!1},[R.f.ActiveScriptsToTerminal]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"One last thing about scripts, each active script contains logs that detail what it's doing. We can check these logs using the tail command. Do that now for the script we just ran by typing"," "),r.a.createElement(o.a,{classes:{root:e.textfield}},"[home ~/]> tail n00dles.script")),canNext:!1},[R.f.TerminalTailScript]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"The log for this script won't show much right now (it might show nothing at all) because it just started running...but check back again in a few minutes! ",r.a.createElement("br",null),r.a.createElement("br",null),"This covers the basics of hacking. To learn more about writing scripts, select"),r.a.createElement(f.a,null,r.a.createElement(v.a,{color:"primary"}),r.a.createElement(o.a,{color:"primary"},"Tutorial")),r.a.createElement(o.a,null,"in the main navigation menu to look at the documentation.",r.a.createElement("br",null),r.a.createElement("br",null),"If you know even a little bit of programming it is highly recommended you use NS2 instead. You will enjoy the game much more. NS1 files end with .script and are a subset of javascript. NS2 files end with .js and are full speed native javascript.",r.a.createElement("br",null),r.a.createElement("br",null),"You can learn more about the difference between them later in the documentation.",r.a.createElement("br",null),r.a.createElement("br",null),"For now, let's move on to something else!")),canNext:!0},[R.f.GoToHacknetNodesPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and upgrading Hacknet Nodes. Let's go to"),r.a.createElement(f.a,null,r.a.createElement(w.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Hacknet")),r.a.createElement(o.a,null,"through the main navigation menu now.")),canNext:!0},[R.f.HacknetNodesIntroduction]:{content:r.a.createElement(o.a,null,"Here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now."),canNext:!0},[R.f.HacknetNodesGoToWorldPage]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.",r.a.createElement("br",null),r.a.createElement("br",null),"Let's go to"),r.a.createElement(f.a,null,r.a.createElement(O.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"City"))),canNext:!0},[R.f.WorldDescription]:{content:r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,null,"This page lists all of the different locations you can currently travel to. Each location has something that you can do. There's a lot of content out in the world, make sure you explore and discover!",r.a.createElement("br",null),r.a.createElement("br",null),"Lastly, click on"),r.a.createElement(f.a,null,r.a.createElement(v.a,{color:"error"}),r.a.createElement(o.a,{color:"error"},"Tutorial"))),canNext:!0},[R.f.TutorialPageInfo]:{content:r.a.createElement(o.a,null,"This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot, but I highly suggest you read (or at least skim) through this before you start playing . That's the end of the tutorial. Hope you enjoy the game!"),canNext:!0},[R.f.End]:{content:r.a.createElement(o.a,null),canNext:!0}},a=Object(n.useState)(!1)[1];function c(){a(e=>!e)}Object(n.useEffect)(()=>d.a.subscribe(c),[]);const m=R.a.currStep,g=t[m];if(void 0===g)throw new Error("error in the tutorial");return r.a.createElement(i.a,{square:!0,sx:{maxWidth:"70vw",p:2}},g.content,m!==R.f.TutorialPageInfo&&r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,{onClick:R.d,"aria-label":"previous"},r.a.createElement(h.a,null)),g.canNext&&r.a.createElement(s.a,{onClick:R.c,"aria-label":"next"},r.a.createElement(u.a,null))),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{onClick:R.b},m!==R.f.TutorialPageInfo?"SKIP TUTORIAL":"FINISH TUTORIAL"))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return x}));var n=a(0),r=a.n(n),i=a(407),o=a.n(i),s=a(111),l=a(200),c=a(75),u=a(862),m=a.n(u),h=a(861),d=a.n(h),p=a(372),f=a.n(p),g=a(863),y=a.n(g),b=a(29),E=a(27),k=a(11),v=a(25),_=a(1),w=a(10),S=a(241);const C=Object(s.a)({overviewContainer:{position:"fixed",top:0,right:0,zIndex:1500,display:"flex",justifyContent:"flex-end",flexDirection:"column"},header:{cursor:"grab",textAlign:"center",display:"flex",flexDirection:"row",alignItems:"center"},visibilityToggle:{padding:"2px",minWidth:"inherit",backgroundColor:"transparent",border:"none","&:hover":{backgroundColor:"rgba(255, 255, 255, 0.1)"}},collapse:{borderTop:"1px solid "+k.a.theme.welllight,margin:"0 auto"},icon:{fontSize:"24px"}});function x({children:e,mode:t}){const a=Object(n.useRef)(null),[i,s]=Object(n.useState)(k.a.overview.opened),[u,h]=Object(n.useState)(k.a.overview.x),[p,g]=Object(n.useState)(k.a.overview.y),x=C(),O=b.b.Router(),M=i?d.a:m.a,T="tutorial"===t?y.a:f.a,R="tutorial"===t?"Tutorial":"Overview";Object(n.useEffect)(()=>{k.a.overview={x:u,y:p,opened:i}},[i,u,p]),Object(n.useEffect)(()=>A(),[]),Object(n.useEffect)(()=>(window.addEventListener("resize",A),()=>{window.removeEventListener("resize",A)}),[]);const A=Object(S.debounce)(()=>{const e=null==a?void 0:a.current;e&&(N(e,"mouseover"),N(e,"mousedown"),N(document,"mousemove"),N(e,"mouseup"),N(e,"click"))},100),N=(e,t)=>{const a=document.createEvent("MouseEvents");a.initEvent(t,!0,!0),e.dispatchEvent(a)};return O.page()===E.a.BitVerse||O.page()===E.a.Loading||O.page()===E.a.Recovery?r.a.createElement(r.a.Fragment,null):r.a.createElement(o.a,{handle:".drag",bounds:"body",onStop:(e,t)=>{h(t.x),g(t.y)},defaultPosition:{x:u,y:p}},r.a.createElement(c.a,{className:x.overviewContainer,square:!0},r.a.createElement(v.a,{className:"drag",onDoubleClick:()=>s(e=>!e),ref:a},r.a.createElement(v.a,{className:x.header},r.a.createElement(T,{color:"secondary",className:x.icon,sx:{padding:"2px"}}),r.a.createElement(_.a,{flexGrow:1,color:"secondary"},R),r.a.createElement(w.a,{variant:"text",size:"small",className:x.visibilityToggle},r.a.createElement(M,{className:x.icon,color:"secondary",onClick:()=>s(e=>!e)})))),r.a.createElement(l.a,{in:i,className:x.collapse},e)))}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return Be}));var n=a(0),r=a.n(n),i=a(13),o=a(18),s=a(134),l=a(111),c=a(1378),u=a(285),m=a(616),h=a(28),d=a(869),p=a.n(d),f=a(868),g=a.n(f),y=a(64),b=a(130),E=a(100),k=a(1),v=a(200),_=a(692),w=a(870),S=a.n(w),C=a(322),x=a.n(C),O=a(871),M=a.n(O),T=a(540),R=a.n(T),A=a(872),N=a.n(A),P=a(372),I=a.n(P),F=a(875),D=a.n(F),j=a(544),B=a.n(j),G=a(541),L=a.n(G),W=a(876),H=a.n(W),U=a(542),q=a.n(U),K=a(878),z=a.n(K),$=a(879),V=a.n($),Y=a(880),J=a.n(Y),X=a(881),Q=a.n(X),Z=a(882),ee=a.n(Z),te=a(883),ae=a.n(te),ne=a(382),re=a.n(ne),ie=a(276),oe=a.n(ie),se=a(545),le=a.n(se),ce=a(873),ue=a.n(ce),me=a(885),he=a.n(me),de=a(874),pe=a.n(de),fe=a(877),ge=a.n(fe),ye=a(884),be=a.n(ye),Ee=a(137),ke=a.n(Ee),ve=a(66),_e=a.n(ve),we=a(27),Se=a(8),Ce=a(39),xe=a(475),Oe=a(11),Me=a(278),Te=a(6),Re=a(96),Ae=a(373),Ne=a(374),Pe=a(375);const Ie=e=>({width:e.spacing(31),transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.enteringScreen}),overflowX:"hidden"}),Fe=e=>({transition:e.transitions.create("width",{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen}),overflowX:"hidden",width:`calc(${e.spacing(2)} + 1px)`,[e.breakpoints.up("sm")]:{width:`calc(${e.spacing(7)} + 1px)`}}),De=Object(o.a)(c.a,{shouldForwardProp:e=>"open"!==e})(({theme:e,open:t})=>({width:e.spacing(31),whiteSpace:"nowrap",boxSizing:"border-box",...t&&{...Ie(e),"& .MuiDrawer-paper":Ie(e)},...!t&&{...Fe(e),"& .MuiDrawer-paper":Fe(e)}})),je=Object(l.a)(e=>Object(s.a)({active:{borderLeft:"3px solid "+e.palette.primary.main},listitem:{}}));function Be(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]);const[o,s]=Object(n.useState)(!0),[l,c]=Object(n.useState)(!0),[d,f]=Object(n.useState)(!0),[w,C]=Object(n.useState)(!0),O=Ce.a.currStep===Ce.f.CharacterGoToTerminalPage||Ce.a.currStep===Ce.f.ActiveScriptsPage,T=Ce.a.currStep===Ce.f.GoToCharacterPage,A=Ce.a.currStep===Ce.f.TerminalGoToActiveScriptsPage,P=Ce.a.currStep===Ce.f.GoToHacknetNodesPage,F=Ce.a.currStep===Ce.f.HacknetNodesGoToWorldPage,j=Ce.a.currStep===Ce.f.WorldDescription,G=e.player.queuedAugmentations.length,W=e.player.factionInvitations.filter(e=>!Ne.b.includes(e)).length,U=Object(xe.a)(e.player).length-Ae.b.length,K=Object(xe.a)(e.player).length>0||e.player.augmentations.length>0||e.player.queuedAugmentations.length>0||e.player.sourceFiles.length>0,$=e.player.factionInvitations.length>0||e.player.factions.length>0||e.player.augmentations.length>0||e.player.queuedAugmentations.length>0||e.player.sourceFiles.length>0,Y=e.player.augmentations.length>0||e.player.queuedAugmentations.length>0||e.player.sourceFiles.length>0,X=e.player.sleeves.length>0,Z=!!e.player.corporation,te=!!e.player.gang,ne=""!==e.player.companyName,ie=e.player.hasWseAccount,se=!!e.player.bladeburner,ce=e.player.augmentations.some(e=>e.name===Te.a.StaneksGift1);function me(){e.router.toTerminal(),O&&Object(Ce.c)()}function de(){e.router.toScriptEditor()}function fe(){e.router.toStats(),T&&Object(Ce.c)()}function ye(){e.router.toActiveScripts(),A&&Object(Ce.c)()}function Ee(){e.router.toCreateProgram()}function ve(){e.router.toFactions()}function Ie(){e.router.toAugmentations()}function Fe(){e.router.toHacknetNodes(),P&&Object(Ce.c)()}function Be(){e.router.toCity(),F&&Object(Ce.c)()}function Ge(){e.router.toTravel()}function Le(){e.router.toJob()}function We(){e.router.toBladeburner()}function He(){e.router.toGang()}function Ue(){e.router.toTutorial(),j&&Object(Ce.c)()}Object(n.useEffect)(()=>{function t(t){if(!Oe.a.DisableHotkeys&&!(e.player.isWorking&&e.player.focus||Me.b))if(t.keyCode==Re.a.T&&t.altKey)t.preventDefault(),me();else if(t.keyCode===Re.a.C&&t.altKey)t.preventDefault(),fe();else if(t.keyCode===Re.a.E&&t.altKey)t.preventDefault(),de();else if(t.keyCode===Re.a.S&&t.altKey)t.preventDefault(),ye();else if(t.keyCode===Re.a.H&&t.altKey)t.preventDefault(),Fe();else if(t.keyCode===Re.a.W&&t.altKey)t.preventDefault(),Be();else if(t.keyCode===Re.a.J&&t.altKey&&!t.ctrlKey&&!t.metaKey&&e.player.hasJob())t.preventDefault(),Le();else if(t.keyCode===Re.a.R&&t.altKey)t.preventDefault(),Ge();else if(t.keyCode===Re.a.P&&t.altKey)t.preventDefault(),Ee();else if(t.keyCode===Re.a.F&&t.altKey){if(e.page==we.a.Terminal&&Oe.a.EnableBashHotkeys)return;t.preventDefault(),ve()}else t.keyCode===Re.a.A&&t.altKey?(t.preventDefault(),Ie()):t.keyCode===Re.a.U&&t.altKey?(t.preventDefault(),Ue()):t.keyCode===Re.a.B&&t.altKey?(t.preventDefault(),We()):t.keyCode===Re.a.G&&t.altKey&&(t.preventDefault(),He())}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[]);const qe=je(),[Ke,ze]=Object(n.useState)(!0);return r.a.createElement(De,{open:Ke,anchor:"left",variant:"permanent"},r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,onClick:()=>ze(e=>!e)},r.a.createElement(b.a,null,Ke?r.a.createElement(p.a,{color:"primary"}):r.a.createElement(g.a,{color:"primary"})),r.a.createElement(E.a,{primary:r.a.createElement(h.a,{title:Object(Pe.a)()},r.a.createElement(k.a,null,"Bitburner v",Se.a.VersionString))})),r.a.createElement(m.a,null),r.a.createElement(u.a,null,r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,onClick:()=>s(e=>!e)},r.a.createElement(b.a,null,r.a.createElement(S.a,{color:"primary"})),r.a.createElement(E.a,{primary:r.a.createElement(k.a,null,"Hacking")}),o?r.a.createElement(ke.a,{color:"primary"}):r.a.createElement(_e.a,{color:"primary"})),r.a.createElement(v.a,{in:o,timeout:"auto",unmountOnExit:!0},r.a.createElement(u.a,null,r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Terminal",className:Object(i.default)({[qe.active]:e.page===we.a.Terminal}),onClick:me},r.a.createElement(b.a,null,r.a.createElement(x.a,{color:O?"error":e.page!==we.a.Terminal?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:O?"error":e.page!==we.a.Terminal?"secondary":"primary"},"Terminal"))),r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Script Editor",className:Object(i.default)({[qe.active]:e.page===we.a.ScriptEditor}),onClick:de},r.a.createElement(b.a,null,r.a.createElement(M.a,{color:e.page!==we.a.ScriptEditor?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.ScriptEditor?"secondary":"primary"},"Script Editor"))),r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Active Scripts",className:Object(i.default)({[qe.active]:e.page===we.a.ActiveScripts}),onClick:ye},r.a.createElement(b.a,null,r.a.createElement(R.a,{color:A?"error":e.page!==we.a.ActiveScripts?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:A?"error":e.page!==we.a.ActiveScripts?"secondary":"primary"},"Active Scripts"))),K&&r.a.createElement(y.a,{button:!0,key:"Create Program",className:Object(i.default)({[qe.active]:e.page===we.a.CreateProgram}),onClick:Ee},r.a.createElement(b.a,null,r.a.createElement(_.a,{badgeContent:U>0?U:void 0,color:"error"},r.a.createElement(N.a,{color:e.page!==we.a.CreateProgram?"secondary":"primary"}))),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.CreateProgram?"secondary":"primary"},"Create Program"))),ce&&r.a.createElement(y.a,{button:!0,key:"Staneks Gift",className:Object(i.default)({[qe.active]:e.page===we.a.StaneksGift}),onClick:function(){e.router.toStaneksGift()}},r.a.createElement(b.a,null,r.a.createElement(ue.a,{color:e.page!==we.a.StaneksGift?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.StaneksGift?"secondary":"primary"},"Stanek's Gift"))))),r.a.createElement(m.a,null),r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,onClick:()=>c(e=>!e)},r.a.createElement(b.a,null,r.a.createElement(pe.a,{color:"primary"})),r.a.createElement(E.a,{primary:r.a.createElement(k.a,null,"Character")}),l?r.a.createElement(ke.a,{color:"primary"}):r.a.createElement(_e.a,{color:"primary"})),r.a.createElement(v.a,{in:l,timeout:"auto",unmountOnExit:!0},r.a.createElement(y.a,{button:!0,key:"Stats",className:Object(i.default)({[qe.active]:e.page===we.a.Stats}),onClick:fe},r.a.createElement(b.a,null,r.a.createElement(I.a,{color:T?"error":e.page!==we.a.Stats?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:T?"error":e.page!==we.a.Stats?"secondary":"primary"},"Stats"))),$&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Factions",className:Object(i.default)({[qe.active]:[we.a.Factions,we.a.Faction].includes(e.page)}),onClick:ve},r.a.createElement(b.a,null,r.a.createElement(_.a,{badgeContent:0!==W?W:void 0,color:"error"},r.a.createElement(D.a,{color:[we.a.Factions,we.a.Faction].includes(e.page)?"primary":"secondary"}))),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:[we.a.Factions,we.a.Faction].includes(e.page)?"primary":"secondary"},"Factions"))),Y&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Augmentations",className:Object(i.default)({[qe.active]:e.page===we.a.Augmentations}),onClick:Ie},r.a.createElement(b.a,null,r.a.createElement(_.a,{badgeContent:0!==G?G:void 0,color:"error"},r.a.createElement(B.a,{style:{transform:"rotate(-90deg)"},color:e.page!==we.a.Augmentations?"secondary":"primary"}))),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Augmentations?"secondary":"primary"},"Augmentations"))),r.a.createElement(y.a,{button:!0,key:"Hacknet",className:Object(i.default)({[qe.active]:e.page===we.a.Hacknet}),onClick:Fe},r.a.createElement(b.a,null,r.a.createElement(L.a,{color:P?"error":e.page!==we.a.Hacknet?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:P?"error":e.page!==we.a.Hacknet?"secondary":"primary"},"Hacknet"))),X&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Sleeves",className:Object(i.default)({[qe.active]:e.page===we.a.Sleeves}),onClick:function(){e.router.toSleeves()}},r.a.createElement(b.a,null,r.a.createElement(H.a,{color:e.page!==we.a.Sleeves?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Sleeves?"secondary":"primary"},"Sleeves")))),r.a.createElement(m.a,null),r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,onClick:()=>f(e=>!e)},r.a.createElement(b.a,null,r.a.createElement(ge.a,{color:"primary"})),r.a.createElement(E.a,{primary:r.a.createElement(k.a,null,"World")}),d?r.a.createElement(ke.a,{color:"primary"}):r.a.createElement(_e.a,{color:"primary"})),r.a.createElement(v.a,{in:d,timeout:"auto",unmountOnExit:!0},r.a.createElement(y.a,{button:!0,key:"City",className:Object(i.default)({[qe.active]:e.page===we.a.City||e.page===we.a.Resleeves||e.page===we.a.Location}),onClick:Be},r.a.createElement(b.a,null,r.a.createElement(q.a,{color:F?"error":e.page!==we.a.City?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:F?"error":e.page!==we.a.City?"secondary":"primary"},"City"))),r.a.createElement(y.a,{button:!0,key:"Travel",className:Object(i.default)({[qe.active]:e.page===we.a.Travel}),onClick:Ge},r.a.createElement(b.a,null,r.a.createElement(z.a,{color:e.page!==we.a.Travel?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Travel?"secondary":"primary"},"Travel"))),ne&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Job",className:Object(i.default)({[qe.active]:e.page===we.a.Job}),onClick:Le},r.a.createElement(b.a,null,r.a.createElement(V.a,{color:e.page!==we.a.Job?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Job?"secondary":"primary"},"Job"))),ie&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Stock Market",className:Object(i.default)({[qe.active]:e.page===we.a.StockMarket}),onClick:function(){e.router.toStockMarket()}},r.a.createElement(b.a,null,r.a.createElement(J.a,{color:e.page!==we.a.StockMarket?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.StockMarket?"secondary":"primary"},"Stock Market"))),se&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Bladeburner",className:Object(i.default)({[qe.active]:e.page===we.a.Bladeburner}),onClick:We},r.a.createElement(b.a,null,r.a.createElement(Q.a,{color:e.page!==we.a.Bladeburner?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Bladeburner?"secondary":"primary"},"Bladeburner"))),Z&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Corp",className:Object(i.default)({[qe.active]:e.page===we.a.Corporation}),onClick:function(){e.router.toCorporation()}},r.a.createElement(b.a,null,r.a.createElement(ee.a,{color:e.page!==we.a.Corporation?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Corporation?"secondary":"primary"},"Corp"))),te&&r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,key:"Gang",className:Object(i.default)({[qe.active]:e.page===we.a.Gang}),onClick:He},r.a.createElement(b.a,null,r.a.createElement(ae.a,{color:e.page!==we.a.Gang?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Gang?"secondary":"primary"},"Gang")))),r.a.createElement(m.a,null),r.a.createElement(y.a,{classes:{root:qe.listitem},button:!0,onClick:()=>C(e=>!e)},r.a.createElement(b.a,null,r.a.createElement(be.a,{color:"primary"})),r.a.createElement(E.a,{primary:r.a.createElement(k.a,null,"Help")}),w?r.a.createElement(ke.a,{color:"primary"}):r.a.createElement(_e.a,{color:"primary"})),r.a.createElement(v.a,{in:w,timeout:"auto",unmountOnExit:!0},r.a.createElement(y.a,{button:!0,key:"Milestones",className:Object(i.default)({[qe.active]:e.page===we.a.Milestones}),onClick:function(){e.router.toMilestones()}},r.a.createElement(b.a,null,r.a.createElement(re.a,{color:e.page!==we.a.Milestones?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Milestones?"secondary":"primary"},"Milestones"))),r.a.createElement(y.a,{button:!0,key:"Tutorial",className:Object(i.default)({[qe.active]:e.page===we.a.Tutorial}),onClick:Ue},r.a.createElement(b.a,null,r.a.createElement(oe.a,{color:j?"error":e.page!==we.a.Tutorial?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:j?"error":e.page!==we.a.Tutorial?"secondary":"primary"},"Tutorial"))),r.a.createElement(y.a,{button:!0,key:"Achievements",className:Object(i.default)({[qe.active]:e.page===we.a.Achievements}),onClick:function(){e.router.toAchievements()}},r.a.createElement(b.a,null,r.a.createElement(he.a,{color:e.page!==we.a.Achievements?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Achievements?"secondary":"primary"},"Achievements"))),r.a.createElement(y.a,{button:!0,key:"Options",className:Object(i.default)({[qe.active]:e.page===we.a.Options}),onClick:function(){e.router.toGameOptions()}},r.a.createElement(b.a,null,r.a.createElement(le.a,{color:e.page!==we.a.Options?"secondary":"primary"})),r.a.createElement(E.a,null,r.a.createElement(k.a,{color:e.page!==we.a.Options?"secondary":"primary"},"Options"))),!1)))}},,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(887),o=a(888),s=a(889),l=a(890),c=a(321),u=a(29),m=a(1),h=a(10),d=a(28),p=a(25),f=a(11),g=a(350);function y(e){const[t,a]=Object(n.useState)(!1),y=u.b.Player(),b=Object(n.useState)(!1)[1];function E(){b(e=>!e)}return Object(n.useEffect)(()=>{const e=setInterval(E,200);return()=>clearInterval(e)},[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{variant:"h4"},"Augmentations"),r.a.createElement(p.a,{mx:2},r.a.createElement(m.a,null,"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them."),r.a.createElement(m.a,null,"WARNING: Installing your Augmentations resets most of your progress, including:"),r.a.createElement("br",null),r.a.createElement(m.a,null,"- Stats/Skill levels and Experience"),r.a.createElement(m.a,null,"- Money"),r.a.createElement(m.a,null,"- Scripts on every computer but your home computer"),r.a.createElement(m.a,null,"- Purchased servers"),r.a.createElement(m.a,null,"- Hacknet Nodes"),r.a.createElement(m.a,null,"- Faction/Company reputation"),r.a.createElement(m.a,null,"- Stocks"),r.a.createElement("br",null),r.a.createElement(m.a,null,"Installing Augmentations lets you start over with the perks and benefits granted by all of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades on your home computer (but you will lose all programs besides NUKE.exe)")),r.a.createElement(m.a,{variant:"h4",color:"primary"},"Purchased Augmentations"),r.a.createElement(p.a,{mx:2},r.a.createElement(d.a,{title:r.a.createElement(m.a,null,"'I never asked for this'")},r.a.createElement("span",null,r.a.createElement(h.a,{disabled:0===y.queuedAugmentations.length,onClick:function(){f.a.SuppressBuyAugmentationConfirmation?e.installAugmentationsFn():a(!0)}},"Install Augmentations"))),r.a.createElement(g.a,{open:t,onClose:()=>a(!1),onConfirm:e.installAugmentationsFn,confirmationText:r.a.createElement(r.a.Fragment,null,"Installing will reset",r.a.createElement("br",null),r.a.createElement("br",null),"- money",r.a.createElement("br",null),"- skill / experience",r.a.createElement("br",null),"- every server except home",r.a.createElement("br",null),"- factions and reputation",r.a.createElement("br",null),r.a.createElement("br",null),"You will keep:",r.a.createElement("br",null),r.a.createElement("br",null),"- All scripts on home",r.a.createElement("br",null),"- home ram and cores",r.a.createElement("br",null),r.a.createElement("br",null),"It is recommended to install several Augmentations at once. Preferably everything from any faction of your chosing.")}),r.a.createElement(d.a,{title:r.a.createElement(m.a,null,"It's always a good idea to backup/export your save!")},r.a.createElement(h.a,{sx:{mx:2},onClick:function(){e.exportGameFn(),E()},color:"error"},"Backup Save ",Object(c.b)()?"(+1 favor to all factions)":"")),r.a.createElement(s.a,null)),r.a.createElement(m.a,{variant:"h4"},"Installed Augmentations"),r.a.createElement(p.a,{mx:2},r.a.createElement(m.a,null,"List of all Augmentations that have been installed. You have gained the effects of these."),r.a.createElement(i.a,null)),r.a.createElement(o.a,null),r.a.createElement(l.a,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(546),o=a(20),s=a(6),l=a(11),c=a(29),u=a(194),m=a(10),h=a(28),d=a(285);function p(){const e=Object(n.useState)(!0)[1],t=c.b.Player().augmentations.slice();function a(){e(e=>!e)}return l.a.OwnedAugmentationsOrder===u.a.Alphabetically&&t.sort((e,t)=>e.name<=t.name?-1:1),r.a.createElement(r.a.Fragment,null,r.a.createElement(h.a,{title:"Sorts the Augmentations alphabetically in numeral order"},r.a.createElement(m.a,{onClick:function(){l.a.OwnedAugmentationsOrder=u.a.Alphabetically,a()}},"Sort in Order")),r.a.createElement(h.a,{title:"Sorts the Augmentations based on when you acquired them (same as default)"},r.a.createElement(m.a,{sx:{mx:2},onClick:function(){l.a.OwnedAugmentationsOrder=u.a.AcquirementTime,a()}},"Sort by Acquirement Time")),r.a.createElement(d.a,{dense:!0},t.map(e=>{const t=o.a[e.name];let a=null;return e.name===s.a.NeuroFluxGovernor&&(a=e.level),r.a.createElement(i.a,{key:t.name,aug:t,level:a})})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a(2),i=a(4),o=a(20),s=a(41),l=a(174),c=a(54),u=a(1),m=a(25),h=a(5);function d({r:e,m:t}){return e?n.createElement(n.Fragment,null,n.createElement(s.b,{key:"2"},n.createElement(u.a,null," ","=>"," ")),n.createElement(s.b,{key:"3"},n.createElement(u.a,null,i.a.formatPercentage(e)," ",n.createElement(p,{base:e,mult:t})))):n.createElement(n.Fragment,null)}function p(e){return 1===e.mult?n.createElement(n.Fragment,null):n.createElement(n.Fragment,null,"(",i.a.formatPercentage(e.base*e.mult),")")}function f({rows:e}){return n.createElement(s.a,{size:"small",padding:"none"},n.createElement(l.a,null,e.map(e=>n.createElement(c.a,{key:e[0]},n.createElement(s.b,{key:"0"},n.createElement(u.a,{noWrap:!0},e[0]," multiplier: ")),n.createElement(s.b,{key:"1",style:{textAlign:"right"}},n.createElement(u.a,{noWrap:!0},i.a.formatPercentage(e[1])," ",n.createElement(p,{base:e[1],mult:e[3]}))),n.createElement(d,{r:e[2],m:e[3]})))))}function g(){const e=function(){const e={};for(const t of r.a.queuedAugmentations){const a=o.a[t.name];for(const t in a.mults){const n=e[t]?e[t]:1;e[t]=n*a.mults[t]}}return e}();function t(){return r.a.canAccessBladeburner()?n.createElement(n.Fragment,null,n.createElement(f,{rows:[["Bladeburner Success Chance",r.a.bladeburner_success_chance_mult,r.a.bladeburner_success_chance_mult*e.bladeburner_success_chance_mult,1],["Bladeburner Max Stamina",r.a.bladeburner_max_stamina_mult,r.a.bladeburner_max_stamina_mult*e.bladeburner_max_stamina_mult,1],["Bladeburner Stamina Gain",r.a.bladeburner_stamina_gain_mult,r.a.bladeburner_stamina_gain_mult*e.bladeburner_stamina_gain_mult,1],["Bladeburner Field Analysis",r.a.bladeburner_analysis_mult,r.a.bladeburner_analysis_mult*e.bladeburner_analysis_mult,1]]}),n.createElement("br",null)):n.createElement(n.Fragment,null)}return n.createElement(n.Fragment,null,n.createElement(u.a,{variant:"h4"},"Multipliers"),n.createElement(m.a,{mx:2},n.createElement(f,{rows:[["Hacking Chance ",r.a.hacking_chance_mult,r.a.hacking_chance_mult*e.hacking_chance_mult,1],["Hacking Speed ",r.a.hacking_speed_mult,r.a.hacking_speed_mult*e.hacking_speed_mult,1],["Hacking Money ",r.a.hacking_money_mult,r.a.hacking_money_mult*e.hacking_money_mult,1],["Hacking Growth ",r.a.hacking_grow_mult,r.a.hacking_grow_mult*e.hacking_grow_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Hacking Level ",r.a.hacking_mult,r.a.hacking_mult*e.hacking_mult,h.a.HackingLevelMultiplier],["Hacking Experience ",r.a.hacking_exp_mult,r.a.hacking_exp_mult*e.hacking_exp_mult,h.a.HackExpGain]]}),n.createElement("br",null),n.createElement(f,{rows:[["Strength Level ",r.a.strength_mult,r.a.strength_mult*e.strength_mult,h.a.StrengthLevelMultiplier],["Strength Experience ",r.a.strength_exp_mult,r.a.strength_exp_mult*e.strength_exp_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Defense Level ",r.a.defense_mult,r.a.defense_mult*e.defense_mult,h.a.DefenseLevelMultiplier],["Defense Experience ",r.a.defense_exp_mult,r.a.defense_exp_mult*e.defense_exp_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Dexterity Level ",r.a.dexterity_mult,r.a.dexterity_mult*e.dexterity_mult,h.a.DexterityLevelMultiplier],["Dexterity Experience ",r.a.dexterity_exp_mult,r.a.dexterity_exp_mult*e.dexterity_exp_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Agility Level ",r.a.agility_mult,r.a.agility_mult*e.agility_mult,h.a.AgilityLevelMultiplier],["Agility Experience ",r.a.agility_exp_mult,r.a.agility_exp_mult*e.agility_exp_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Charisma Level ",r.a.charisma_mult,r.a.charisma_mult*e.charisma_mult,h.a.CharismaLevelMultiplier],["Charisma Experience ",r.a.charisma_exp_mult,r.a.charisma_exp_mult*e.charisma_exp_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Hacknet Node production ",r.a.hacknet_node_money_mult,r.a.hacknet_node_money_mult*e.hacknet_node_money_mult,h.a.HacknetNodeMoney],["Hacknet Node purchase cost ",r.a.hacknet_node_purchase_cost_mult,r.a.hacknet_node_purchase_cost_mult*e.hacknet_node_purchase_cost_mult,1],["Hacknet Node RAM upgrade cost ",r.a.hacknet_node_ram_cost_mult,r.a.hacknet_node_ram_cost_mult*e.hacknet_node_ram_cost_mult,1],["Hacknet Node Core purchase cost ",r.a.hacknet_node_core_cost_mult,r.a.hacknet_node_core_cost_mult*e.hacknet_node_core_cost_mult,1],["Hacknet Node level upgrade cost ",r.a.hacknet_node_level_cost_mult,r.a.hacknet_node_level_cost_mult*e.hacknet_node_level_cost_mult,1]]}),n.createElement("br",null),n.createElement(f,{rows:[["Company reputation gain ",r.a.company_rep_mult,r.a.company_rep_mult*e.company_rep_mult,1],["Faction reputation gain ",r.a.faction_rep_mult,r.a.faction_rep_mult*e.faction_rep_mult,h.a.FactionWorkRepGain],["Salary ",r.a.work_money_mult,r.a.work_money_mult*e.work_money_mult,h.a.CompanyWorkMoney]]}),n.createElement("br",null),n.createElement(f,{rows:[["Crime success ",r.a.crime_success_mult,r.a.crime_success_mult*e.crime_success_mult,1],["Crime money ",r.a.crime_money_mult,r.a.crime_money_mult*e.crime_money_mult,h.a.CrimeMoney]]}),n.createElement("br",null),n.createElement(t,null)))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a(20),i=a(6),o=a(2),s=a(546),l=a(285);function c(){const e=[];let t=-1;for(let e=o.a.queuedAugmentations.length-1;e>=0;e--)if(o.a.queuedAugmentations[e].name===i.a.NeuroFluxGovernor){t=e;break}for(let a=0;a<o.a.queuedAugmentations.length;a++){const l=o.a.queuedAugmentations[a];if(l.name===i.a.NeuroFluxGovernor&&a!==t)continue;const c=r.a[l.name];let u=null;l.name===i.a.NeuroFluxGovernor&&(u=l.level),e.push(n.createElement(s.a,{key:c.name,aug:c,level:u}))}return n.createElement(l.a,{dense:!0},e)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(891),o=a(892),s=a(285),l=a(1),c=a(25);function u(){return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Source Files"),r.a.createElement(c.a,{mx:2},r.a.createElement(s.a,{dense:!0},r.a.createElement(i.a,null),r.a.createElement(o.a,null))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(2),o=a(109),s=a(310),l=a(100),c=a(25),u=a(1),m=a(75),h=a(200),d=a(66),p=a.n(d),f=a(137),g=a.n(f);function y(){const[e,t]=Object(n.useState)(!1),a=i.a.exploits;return 0===a.length?r.a.createElement(r.a.Fragment,null):r.a.createElement(c.a,{component:m.a},r.a.createElement(s.a,{onClick:()=>t(e=>!e)},r.a.createElement(l.a,{primary:r.a.createElement(u.a,{style:{whiteSpace:"pre-wrap"}},"Source-File -1: Exploits in the BitNodes",r.a.createElement("br",null),"Level ",a.length," / ",Object.keys(o.a).length)}),e?r.a.createElement(g.a,{color:"primary"}):r.a.createElement(p.a,{color:"primary"})),r.a.createElement(h.a,{in:e,unmountOnExit:!0},r.a.createElement(c.a,{m:4},r.a.createElement(u.a,null,"This Source-File can only be acquired with obscure knowledge of the game, javascript, and the web ecosystem."),r.a.createElement(u.a,null,"It increases all of the player's multipliers by 0.1%"),r.a.createElement("br",null),r.a.createElement(u.a,null,"You have found the following exploits:"),r.a.createElement(c.a,{mx:2},a.map(e=>r.a.createElement(u.a,{key:e},"* ",Object(o.b)(e)))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a(2),i=a(11),o=a(194),s=a(335),l=a(893);function c(){const e=r.a.sourceFiles.slice();return i.a.OwnedAugmentationsOrder===o.a.Alphabetically&&e.sort((e,t)=>e.n-t.n),n.createElement(n.Fragment,null,e.map(e=>{const t="SourceFile"+e.n,a=s.a[t];return null==a?(console.error("Invalid source file number: "+e.n),null):n.createElement(l.a,{key:e.n,level:e.lvl,sf:a})}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(310),o=a(100),s=a(25),l=a(1),c=a(75),u=a(200),m=a(66),h=a.n(m),d=a(137),p=a.n(d);function f(e){const[t,a]=Object(n.useState)(!1),m=12===e.sf.n?"∞":"3";return r.a.createElement(s.a,{component:c.a},r.a.createElement(i.a,{onClick:()=>a(e=>!e)},r.a.createElement(o.a,{primary:r.a.createElement(l.a,{style:{whiteSpace:"pre-wrap"}},e.sf.name,r.a.createElement("br",null),`Level ${e.level} / ${m}`)}),t?r.a.createElement(p.a,{color:"primary"}):r.a.createElement(h.a,{color:"primary"})),r.a.createElement(u.a,{in:t,unmountOnExit:!0},r.a.createElement(s.a,{m:4},r.a.createElement(l.a,null,e.sf.info))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return x}));var n=a(224),r=a(6),i=a(0),o=a.n(i),s=a(895),l=a(897),c=a(899),u=a(900),m=a(901),h=a(902),d=a(903),p=a(904),f=a(905),g=a(906),y=a(907),b=a(908),E=a(909),k=a(910),v=a(911),_=a(912),w=a(913),S=a(1),C=a(109);function x(e){return Object(i.useEffect)(()=>{e.player.giveExploit(C.a.YoureNotMeantToAccessThis)},[]),o.a.createElement(o.a.Fragment,null,o.a.createElement(S.a,null,"Development Menu - Only meant to be used for testing/debugging"),o.a.createElement(s.a,{player:e.player,router:e.router}),o.a.createElement(l.a,{player:e.player}),o.a.createElement(c.a,{player:e.player}),o.a.createElement(u.a,{player:e.player}),o.a.createElement(m.a,{player:e.player}),o.a.createElement(h.a,{player:e.player}),o.a.createElement(d.a,null),o.a.createElement(p.a,null),e.player.bladeburner instanceof n.a&&o.a.createElement(f.a,{player:e.player}),e.player.inGang()&&o.a.createElement(g.a,{player:e.player}),e.player.hasCorporation()&&o.a.createElement(y.a,{player:e.player}),o.a.createElement(b.a,null),e.player.hasWseAccount&&o.a.createElement(E.a,null),e.player.sleeves.length>0&&o.a.createElement(k.a,{player:e.player}),e.player.augmentations.some(e=>e.name===r.a.StaneksGift1)&&o.a.createElement(v.a,null),o.a.createElement(_.a,{player:e.player,engine:e.engine}),o.a.createElement(w.a,{player:e.player,engine:e.engine}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(16);function d(e){function t(t){return function(){e.player.gainMoney(t,"other")}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"General")),r.a.createElement(s.a,null,r.a.createElement(m.a,{onClick:t(1e6)},r.a.createElement("pre",null,"+ ",r.a.createElement(h.a,{money:1e6}))),r.a.createElement(m.a,{onClick:t(1e9)},r.a.createElement("pre",null,"+ ",r.a.createElement(h.a,{money:1e9}))),r.a.createElement(m.a,{onClick:t(1e12)},r.a.createElement("pre",null,"+ ",r.a.createElement(h.a,{money:1e12}))),r.a.createElement(m.a,{onClick:t(1e15)},r.a.createElement("pre",null,"+ ",r.a.createElement(h.a,{money:1e15}))),r.a.createElement(m.a,{onClick:t(1/0)},r.a.createElement("pre",null,"+ ",r.a.createElement(h.a,{money:1/0}))),r.a.createElement(m.a,{onClick:function(){e.player.getHomeComputer().maxRam*=2}},"+ RAM"),r.a.createElement("br",null),r.a.createElement(m.a,{onClick:function(){e.router.toBitVerse(!0,!0)}},"Quick b1t_flum3.exe"),r.a.createElement(m.a,{onClick:function(){e.router.toBitVerse(!0,!1)}},"Run b1t_flum3.exe"),r.a.createElement(m.a,{onClick:function(){e.router.toBitVerse(!1,!0)}},"Quick w0rld_d34m0n"),r.a.createElement(m.a,{onClick:function(){e.router.toBitVerse(!1,!1)}},"Hack w0rld_d34m0n")))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(133);const d=1e27;function p(e){function t(t,a){return function(n){switch(t){case"hacking":n&&e.player.gainHackingExp(n*a);break;case"strength":n&&e.player.gainStrengthExp(n*a);break;case"defense":n&&e.player.gainDefenseExp(n*a);break;case"dexterity":n&&e.player.gainDexterityExp(n*a);break;case"agility":n&&e.player.gainAgilityExp(n*a);break;case"charisma":n&&e.player.gainCharismaExp(n*a);break;case"intelligence":n&&e.player.gainIntelligenceExp(n*a)}e.player.updateSkillLevels()}}function a(t){return function(a){e.player.karma+=a*t}}function n(t){return function(){switch(t){case"hacking":e.player.hacking_exp=0;break;case"strength":e.player.strength_exp=0;break;case"defense":e.player.defense_exp=0;break;case"dexterity":e.player.dexterity_exp=0;break;case"agility":e.player.agility_exp=0;break;case"charisma":e.player.charisma_exp=0;break;case"intelligence":e.player.intelligence_exp=0}e.player.updateSkillLevels()}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Experience / Stats")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"All:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.gainHackingExp(d),e.player.gainStrengthExp(d),e.player.gainDefenseExp(d),e.player.gainDexterityExp(d),e.player.gainAgilityExp(d),e.player.gainCharismaExp(d),e.player.gainIntelligenceExp(d),e.player.updateSkillLevels()}},"Tons of exp"),r.a.createElement(m.a,{onClick:function(){e.player.hacking_exp=0,e.player.strength_exp=0,e.player.defense_exp=0,e.player.dexterity_exp=0,e.player.agility_exp=0,e.player.charisma_exp=0,e.player.intelligence_exp=0,e.player.updateSkillLevels()}},"Reset"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Hacking:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"hacking",placeholder:"exp",tons:()=>t("hacking",1)(d),add:t("hacking",1),subtract:t("hacking",-1),reset:n("hacking")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Strength:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"strength",placeholder:"exp",tons:()=>t("strength",1)(d),add:t("strength",1),subtract:t("strength",-1),reset:n("strength")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Defense:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"defense",placeholder:"exp",tons:()=>t("defense",1)(d),add:t("defense",1),subtract:t("defense",-1),reset:n("defense")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Dexterity:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"dexterity",placeholder:"exp",tons:()=>t("dexterity",1)(d),add:t("dexterity",1),subtract:t("dexterity",-1),reset:n("dexterity")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Agility:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"agility",placeholder:"exp",tons:()=>t("agility",1)(d),add:t("agility",1),subtract:t("agility",-1),reset:n("agility")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Charisma:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"charisma",placeholder:"exp",tons:()=>t("charisma",1)(d),add:t("charisma",1),subtract:t("charisma",-1),reset:n("charisma")}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Intelligence:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"intelligence",placeholder:"exp",tons:()=>t("intelligence",1)(d),add:t("intelligence",1),subtract:t("intelligence",-1),reset:n("intelligence")})),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){0===e.player.intelligence&&(e.player.intelligence=1,e.player.updateSkillLevels())}},"Enable")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.intelligence_exp=0,e.player.intelligence=0,e.player.updateSkillLevels()}},"Disable"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Karma:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"karma",placeholder:"amt",tons:()=>t("intelligence",1)(1e5),add:a(1),subtract:a(-1),reset:function(){e.player.karma=0}})))))))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return w}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(117),d=a(133),p=a(26),f=a(1244),g=a(72),y=a(101),b=a(550),E=a.n(b),k=a(338),v=a.n(k),_=a(1245);function w(e){const[t,a]=Object(n.useState)("Illuminati");function l(e){return function(a){const n=p.a[t];null==n||isNaN(a)||(n.playerReputation+=a*e)}}function b(e){return function(a){const n=p.a[t];null==n||isNaN(a)||(n.favor+=a*e)}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Factions")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Faction:")),r.a.createElement("td",null,r.a.createElement(f.a,null,r.a.createElement(_.a,{id:"factions-select"},"Faction"),r.a.createElement(h.a,{labelId:"factions-select",id:"factions-dropdown",onChange:function(e){a(e.target.value)},value:t,startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(y.a,{onClick:function(){for(const t in p.a)e.player.receiveInvite(p.a[t].name)},size:"large","arial-label":"receive-all-invitation"},r.a.createElement(E.a,null)),r.a.createElement(y.a,{onClick:function(){e.player.receiveInvite(t)},size:"large","arial-label":"receive-one-invitation"},r.a.createElement(v.a,null)))},Object.values(p.a).map(e=>r.a.createElement(g.a,{key:e.name,value:e.name},e.name)))))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Reputation:")),r.a.createElement("td",null,r.a.createElement(d.a,{label:"reputation",placeholder:"amt",tons:()=>l(1)(1e12),add:l(1),subtract:l(-1),reset:function(){const e=p.a[t];null!=e&&(e.playerReputation=0)}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Favor:")),r.a.createElement("td",null,r.a.createElement(d.a,{label:"favor",placeholder:"amt",tons:()=>b(1)(2e3),add:b(1),subtract:b(-1),reset:function(){const e=p.a[t];null!=e&&(e.favor=0)}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"All Reputation:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e in p.a)p.a[e].playerReputation=1e12}},"Tons"),r.a.createElement(m.a,{onClick:function(){for(const e in p.a)p.a[e].playerReputation=0}},"Reset"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"All Favor:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e in p.a)p.a[e].favor=1e12}},"Tons"),r.a.createElement(m.a,{onClick:function(){for(const e in p.a)p.a[e].favor=0}},"Reset")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(117),m=a(6),h=a(1),d=a(72),p=a(101),f=a(550),g=a.n(f),y=a(338),b=a.n(y),E=a(549),k=a.n(E);function v(e){const[t,a]=Object(n.useState)("Augmented Targeting I");return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(h.a,null,"Augmentations")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(h.a,null,"Aug:")),r.a.createElement("td",null,r.a.createElement(u.a,{onChange:function(e){a(e.target.value)},value:t,startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{onClick:function(){for(const t of Object.values(m.a))e.player.queueAugmentation(t)},size:"large"},r.a.createElement(g.a,null)),r.a.createElement(p.a,{onClick:function(){e.player.queueAugmentation(t)},size:"large"},r.a.createElement(b.a,null))),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{onClick:function(){e.player.augmentations=[]},size:"large"},r.a.createElement(k.a,null)))},Object.values(m.a).map(e=>r.a.createElement(d.a,{key:e,value:e},e)))))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(533),d=a(495);const p=[1,2,3,4,5,6,7,8,9,10,11,12,13];function f(e){function t(t,a){return function(){if(9===t&&(e.player.hacknetNodes=[]),0!==a)if(e.player.sourceFiles.some(e=>e.n===t))for(let n=0;n<e.player.sourceFiles.length;n++)e.player.sourceFiles[n].n===t&&(e.player.sourceFiles[n].lvl=a);else e.player.sourceFiles.push(new h.a(t,a));else e.player.sourceFiles=e.player.sourceFiles.filter(e=>e.n!==t)}}function a(e){return()=>{for(let a=0;a<p.length;a++)t(p[a],e)()}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Source-Files")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Exploits:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.exploits=[]}},"Clear"))),r.a.createElement("tr",{key:"sf-all"},r.a.createElement("td",null,r.a.createElement(u.a,null,"All:")),r.a.createElement("td",null,r.a.createElement(d.a,null,r.a.createElement(m.a,{"aria-label":"all-sf-0",onClick:a(0)},"0"),r.a.createElement(m.a,{"aria-label":"all-sf-1",onClick:a(1)},"1"),r.a.createElement(m.a,{"aria-label":"all-sf-2",onClick:a(2)},"2"),r.a.createElement(m.a,{"aria-label":"all-sf-3",onClick:a(3)},"3")))),p.map(e=>r.a.createElement("tr",{key:"sf-"+e},r.a.createElement("td",null,r.a.createElement(u.a,null,"SF-",e,":")),r.a.createElement("td",null,r.a.createElement(d.a,null,r.a.createElement(m.a,{onClick:t(e,0)},"0"),r.a.createElement(m.a,{onClick:t(e,1)},"1"),r.a.createElement(m.a,{onClick:t(e,2)},"2"),r.a.createElement(m.a,{onClick:t(e,3)},"3")))))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(117),d=a(61),p=a(72);function f(e){const[t,a]=Object(n.useState)("NUKE.exe");return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Programs")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Program:")),r.a.createElement("td",null,r.a.createElement(h.a,{onChange:function(e){a(e.target.value)},value:t},Object.values(d.a).map(e=>r.a.createElement(p.a,{key:e.name,value:e.name},e.name))))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Add:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.hasProgram(t)||e.player.getHomeComputer().programs.push(t)}},"One"),r.a.createElement(m.a,{onClick:function(){for(const t in d.a)e.player.hasProgram(d.a[t].name)||e.player.getHomeComputer().programs.push(d.a[t].name)}},"All")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(117),d=a(24),p=a(44),f=a(72);function g(){const[e,t]=Object(n.useState)("home");return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Servers")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Server:")),r.a.createElement("td",{colSpan:2},r.a.createElement(h.a,{id:"dev-servers-dropdown",onChange:function(e){t(e.target.value)},value:e},Object(d.c)().map(e=>r.a.createElement(f.a,{key:e.hostname,value:e.hostname},e.hostname))))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Root:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){const t=Object(d.d)(e);null!==t&&t instanceof p.a&&(t.hasAdminRights=!0,t.sshPortOpen=!0,t.ftpPortOpen=!0,t.smtpPortOpen=!0,t.httpPortOpen=!0,t.sqlPortOpen=!0,t.openPortCount=5)}},"Root one")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e of Object(d.c)()){if(!(e instanceof p.a))return;e.hasAdminRights=!0,e.sshPortOpen=!0,e.ftpPortOpen=!0,e.smtpPortOpen=!0,e.httpPortOpen=!0,e.sqlPortOpen=!0,e.openPortCount=5}}},"Root all"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Security:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){const t=Object(d.d)(e);null!==t&&t instanceof p.a&&(t.hackDifficulty=t.minDifficulty)}},"Min one")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e of Object(d.c)()){if(!(e instanceof p.a))return;e.hackDifficulty=e.minDifficulty}}},"Min all"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Money:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){const t=Object(d.d)(e);null!==t&&t instanceof p.a&&(t.moneyAvailable=0)}},"Min one")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e of Object(d.c)()){if(!(e instanceof p.a))return;e.moneyAvailable=0}}},"Min all")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){const t=Object(d.d)(e);null!==t&&t instanceof p.a&&(t.moneyAvailable=t.moneyMax)}},"Max one")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e of Object(d.c)()){if(!(e instanceof p.a))return;e.moneyAvailable=e.moneyMax}}},"Max all")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(117),d=a(62),p=a(72),f=a(133);function g(){const[e,t]=Object(n.useState)("ECorp");function a(t){return function(a){const n=d.a[e];null==n||isNaN(a)||(n.playerReputation+=a*t)}}function l(t){return function(a){const n=d.a[e];null==n||isNaN(a)||(n.favor+=a*t)}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Companies")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Company:")),r.a.createElement("td",{colSpan:3},r.a.createElement(h.a,{id:"dev-companies-dropdown",onChange:function(e){t(e.target.value)},value:e},Object.values(d.a).map(e=>r.a.createElement(p.a,{key:e.name,value:e.name},e.name))))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Reputation:")),r.a.createElement("td",null,r.a.createElement(f.a,{label:"reputation",placeholder:"amt",tons:()=>a(1)(1e12),add:a(1),subtract:a(-1),reset:function(){d.a[e].playerReputation=0}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Favor:")),r.a.createElement("td",null,r.a.createElement(f.a,{label:"favor",placeholder:"amt",tons:()=>l(1)(2e3),add:l(1),subtract:l(-1),reset:function(){d.a[e].favor=0}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"All Reputation:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e in d.a)d.a[e].playerReputation=1e12}},"Tons"),r.a.createElement(m.a,{onClick:function(){for(const e in d.a)d.a[e].playerReputation=0}},"Reset"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"All Favor:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){for(const e in d.a)d.a[e].favor=1e12}},"Tons"),r.a.createElement(m.a,{onClick:function(){for(const e in d.a)d.a[e].favor=0}},"Reset")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(1),o=a(150),s=a(151),l=a(152),c=a(66),u=a.n(c),m=a(133);function h(e){const t=e.player.bladeburner;if(null===t)return r.a.createElement(r.a.Fragment,null);function a(a){return function(n){t&&t.changeRank(e.player,n*a)}}function n(e){return function(a){t&&(t.storedCycles+=a*e)}}return r.a.createElement(o.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(s.a,{expandIcon:r.a.createElement(u.a,null)},r.a.createElement(i.a,null,"Bladeburner")),r.a.createElement(l.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(i.a,null,"Rank:")),r.a.createElement("td",null,r.a.createElement(m.a,{label:"rank",placeholder:"amt",tons:function(){t&&t.changeRank(e.player,1e27)},add:a(1),subtract:a(-1),reset:function(){t&&(t.rank=0,t.maxRank=0)}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(i.a,null,"Cycles:")),r.a.createElement("td",null,r.a.createElement(m.a,{label:"cycles",placeholder:"amt",tons:function(){t&&(t.storedCycles+=1e27)},add:n(1),subtract:n(-1),reset:function(){t&&(t.storedCycles=0)}})))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(1),o=a(150),s=a(151),l=a(152),c=a(66),u=a.n(c),m=a(133);function h(e){function t(t){return function(a){e.player.gang&&(e.player.gang.storedCycles+=a*t)}}return r.a.createElement(o.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(s.a,{expandIcon:r.a.createElement(u.a,null)},r.a.createElement(i.a,null,"Gang")),r.a.createElement(l.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(i.a,null,"Cycles:")),r.a.createElement("td",null,r.a.createElement(m.a,{label:"cycles",placeholder:"amt",tons:function(){e.player.gang&&(e.player.gang.storedCycles=1e27)},add:t(1),subtract:t(-1),reset:function(){e.player.gang&&(e.player.gang.storedCycles=0)}})))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(133);function d(e){function t(t){return function(a){e.player.corporation&&(e.player.corporation.storedCycles+=a*t)}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Corporation")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.corporation&&(e.player.corporation.funds=e.player.corporation.funds+1e99)}},"Tons of funds"),r.a.createElement(m.a,{onClick:function(){e.player.corporation&&(e.player.corporation.funds=e.player.corporation.funds-e.player.corporation.funds)}},"Reset funds"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Cycles:")),r.a.createElement("td",null,r.a.createElement(h.a,{label:"cycles",placeholder:"amt",tons:function(){e.player.corporation&&(e.player.corporation.storedCycles=1e27)},add:t(1),subtract:t(-1),reset:function(){e.player.corporation&&(e.player.corporation.storedCycles=0)}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.corporation&&e.player.corporation.divisions.forEach(e=>{Object.keys(e.products).forEach(t=>{const a=e.products[t];if(void 0===a)throw new Error("Impossible product undefined");a.prog=99.9})})}},"Finish products"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){e.player.corporation&&e.player.corporation.divisions.forEach(e=>{e.sciResearch.qty+=1e10})}},"Tons of research")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(117),d=a(72),p=a(345),f=a(104);function g(){const[e,t]=Object(n.useState)("Find Largest Prime Factor");return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Coding Contracts")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,{onClick:p.b},"Generate Random Contract"),r.a.createElement(m.a,{onClick:p.c},"Generate Random Contract on Home Comp"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(h.a,{onChange:function(e){t(e.target.value)},value:e},Object.values(f.d).map(e=>r.a.createElement(d.a,{key:e.name,value:e.name},e.name))),r.a.createElement(m.a,{onClick:function(){Object(p.a)({problemType:e,server:"home"})}},"Generate Specified Contract Type on Home Comp")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(85),d=a(16),p=a(15),f=a(95),g=a(139);function y(){const[e,t]=Object(n.useState)(0),[a,l]=Object(n.useState)("");function y(e){const t=a.replace(/\s/g,"");let n=()=>!0;""!==t&&"all"!==t&&(n=function(e){return t.split(",").includes(e)});for(const t in f.a)if(f.a.hasOwnProperty(t)){const a=f.a[t];a instanceof g.a&&n(a.symbol)&&e(a)}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Stock Market")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Symbol:")),r.a.createElement("td",null,r.a.createElement(h.a,{placeholder:"symbol/'all'",onChange:function(e){l(e.target.value)}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Price:")),r.a.createElement("td",null,r.a.createElement(h.a,{placeholder:"$$$",onChange:function(e){t(parseFloat(e.target.value))}}),r.a.createElement(m.a,{onClick:function(){isNaN(e)||y(t=>{t.price=e})}},"Set"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,null,"Caps:")),r.a.createElement("td",null,r.a.createElement(m.a,{onClick:function(){const e=[];y(t=>{e.push(r.a.createElement("tr",{key:t.symbol},r.a.createElement("td",null,t.symbol),r.a.createElement("td",{style:{textAlign:"right"}},r.a.createElement(d.a,{money:t.cap}))))}),Object(p.a)(r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("th",null,"Stock"),r.a.createElement("th",null,"Price cap")),e)))}},"View stock caps")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(10),m=a(1);function h(e){return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(m.a,null,"Sleeves")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,null,"Shock:")),r.a.createElement("td",null,r.a.createElement(u.a,{onClick:function(){for(let t=0;t<e.player.sleeves.length;++t)e.player.sleeves[t].shock=0}},"Max all")),r.a.createElement("td",null,r.a.createElement(u.a,{onClick:function(){for(let t=0;t<e.player.sleeves.length;++t)e.player.sleeves[t].shock=100}},"Clear all"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(m.a,null,"Sync:")),r.a.createElement("td",null,r.a.createElement(u.a,{onClick:function(){for(let t=0;t<e.player.sleeves.length;++t)e.player.sleeves[t].sync=100}},"Max all")),r.a.createElement("td",null,r.a.createElement(u.a,{onClick:function(){for(let t=0;t<e.player.sleeves.length;++t)e.player.sleeves[t].sync=0}},"Clear all")))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(110),o=a(150),s=a(151),l=a(152),c=a(66),u=a.n(c),m=a(1),h=a(133);function d(){function e(e){return function(t){i.b.storedCycles+=t*e}}function t(e){return function(t){i.b.fragments.forEach(a=>a.avgCharge+=t*e)}}return r.a.createElement(o.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(s.a,{expandIcon:r.a.createElement(u.a,null)},r.a.createElement(m.a,null,"Stanek's Gift")),r.a.createElement(l.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(h.a,{label:"cycles",placeholder:"amt",tons:function(){i.b.storedCycles=1e6},add:e(1),subtract:e(-1),reset:function(){i.b.storedCycles=0}}))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(h.a,{label:"all charge",placeholder:"amt",tons:function(){i.b.fragments.forEach(e=>{e.avgCharge=1e21,e.numCharge=1e21})},add:t(1),subtract:t(-1),reset:function(){i.b.fragments.forEach(e=>{e.avgCharge=0,e.numCharge=0})}})))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(162);function d(e){function t(t){return()=>{e.player.lastUpdate-=t,e.engine._lastUpdate-=t,h.c.saveGame(),setTimeout(()=>location.reload(),1e3)}}return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Time skip")),r.a.createElement(s.a,null,r.a.createElement(m.a,{onClick:t(6e4)},"1 minute"),r.a.createElement(m.a,{onClick:t(36e5)},"1 hour"),r.a.createElement(m.a,{onClick:t(864e5)},"1 day")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return E}));var n=a(0),r=a.n(n),i=a(150),o=a(151),s=a(152),l=a(66),c=a.n(l),u=a(1),m=a(10),h=a(495),d=a(28),p=a(916),f=a.n(p),g=a(915),y=a.n(g),b=a(319);function E(e){const[t,a]=Object(n.useState)(e.player.achievements.map(e=>e.ID));return r.a.createElement(i.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(o.a,{expandIcon:r.a.createElement(c.a,null)},r.a.createElement(u.a,null,"Achievements")),r.a.createElement(s.a,null,r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null),r.a.createElement("td",null,r.a.createElement(u.a,null,"Achievements:")),r.a.createElement("td",null,r.a.createElement(h.a,null,r.a.createElement(m.a,{onClick:function(){Object.values(b.a).forEach(t=>e.player.giveAchievement(t.ID)),a(e.player.achievements.map(e=>e.ID))}},"Grant All"),r.a.createElement(m.a,{onClick:function(){e.player.achievements=[],a(e.player.achievements.map(e=>e.ID))}},"Clear"),r.a.createElement(m.a,{onClick:function(){e.engine.Counters.achievementsCounter=Number.MAX_VALUE}},"Disable Engine"),r.a.createElement(m.a,{onClick:function(){e.engine.Counters.achievementsCounter=0}},"Enable Engine")))),Object.values(b.a).map(n=>{const i=t.includes(n.ID);return r.a.createElement("tr",{key:"ach-"+n.ID},r.a.createElement("td",null,i?r.a.createElement(d.a,{title:"Achieved"},r.a.createElement(y.a,{color:"primary"})):r.a.createElement(d.a,{title:"Locked"},r.a.createElement(f.a,{color:"secondary"}))),r.a.createElement("td",null,r.a.createElement(d.a,{title:r.a.createElement(r.a.Fragment,null,n.ID,r.a.createElement("br",null),n.Description)},r.a.createElement(u.a,{color:i?"primary":"secondary"},n.Name,":"))),r.a.createElement("td",null,r.a.createElement(h.a,null,r.a.createElement(m.a,{onClick:()=>{return t=n.ID,e.player.giveAchievement(t),void a(e.player.achievements.map(e=>e.ID));var t}},"Grant"),r.a.createElement(m.a,{onClick:()=>{return t=n.ID,e.player.achievements=e.player.achievements.filter(e=>e.ID!==t),void a(e.player.achievements.map(e=>e.ID));var t}},"Clear"))))})))))}},function(e){e.exports=JSON.parse('{"a":{"CYBERSEC":{"ID":"CYBERSEC","Name":"CyberSec","Description":"Join CyberSec."},"NITESEC":{"ID":"NITESEC","Name":"avmnite-02h","Description":"Join NiteSec."},"THE_BLACK_HAND":{"ID":"THE_BLACK_HAND","Name":"I.I.I.I","Description":"Join The Black Hand."},"BITRUNNERS":{"ID":"BITRUNNERS","Name":"run4theh111z","Description":"Join the BitRunners."},"DAEDALUS":{"ID":"DAEDALUS","Name":"fl1ght.exe","Description":"Join Daedalus."},"THE_COVENANT":{"ID":"THE_COVENANT","Name":"The Covenant","Description":"Join The Covenant."},"ILLUMINATI":{"ID":"ILLUMINATI","Name":"Illuminati","Description":"Join the Illuminati."},"BRUTESSH.EXE":{"ID":"BRUTESSH.EXE","Name":"BruteSSH.exe","Description":"Acquire BruteSSH.exe"},"FTPCRACK.EXE":{"ID":"FTPCRACK.EXE","Name":"FTPCrack.exe","Description":"Acquire FTPCrack.exe"},"RELAYSMTP.EXE":{"ID":"RELAYSMTP.EXE","Name":"relaySMTP.exe","Description":"Acquire relaySMTP.exe"},"HTTPWORM.EXE":{"ID":"HTTPWORM.EXE","Name":"HTTPWorm.exe","Description":"Acquire HTTPWorm.exe"},"SQLINJECT.EXE":{"ID":"SQLINJECT.EXE","Name":"SQLInject.exe","Description":"Acquire SQLInject.exe"},"FORMULAS.EXE":{"ID":"FORMULAS.EXE","Name":"Formulas.exe","Description":"Acquire Formulas.exe"},"SF1.1":{"ID":"SF1.1","Name":"Source Genesis","Description":"Acquire SF1.1"},"SF2.1":{"ID":"SF2.1","Name":"Rise of the Underworld","Description":"Acquire SF2.1"},"SF3.1":{"ID":"SF3.1","Name":"Corporatocracy","Description":"Acquire SF3.1"},"SF4.1":{"ID":"SF4.1","Name":"The Singularity","Description":"Acquire SF4.1"},"SF5.1":{"ID":"SF5.1","Name":"Artificial Intelligence","Description":"Acquire SF5.1"},"SF6.1":{"ID":"SF6.1","Name":"Bladeburners","Description":"Acquire SF6.1"},"SF7.1":{"ID":"SF7.1","Name":"Bladeburners 2079","Description":"Acquire SF7.1"},"SF8.1":{"ID":"SF8.1","Name":"Ghost of Wall Street","Description":"Acquire SF8.1"},"SF9.1":{"ID":"SF9.1","Name":"Hacktocracy","Description":"Acquire SF9.1"},"SF10.1":{"ID":"SF10.1","Name":"Digital Carbon","Description":"Acquire SF10.1"},"SF11.1":{"ID":"SF11.1","Name":"The Big Crash","Description":"Acquire SF11.1"},"SF12.1":{"ID":"SF12.1","Name":"The Recursion","Description":"Acquire SF12.1"},"MONEY_1Q":{"ID":"MONEY_1Q","Name":"Here comes the money!","Description":"Have $1Q on your home computer."},"MONEY_M1B":{"ID":"MONEY_M1B","Name":"Massive debt","Description":"Be $1b in debt."},"INSTALL_1":{"ID":"INSTALL_1","Name":"I never asked for this.","Description":"Install your first augmentation."},"INSTALL_100":{"ID":"INSTALL_100","Name":"I asked for this.","Description":"Have 100 augmentation installed at once."},"QUEUE_40":{"ID":"QUEUE_40","Name":"It\'s time to install","Description":"Have 40 augmentation queued at once."},"HACKING_100000":{"ID":"HACKING_100000","Name":"Power Overwhelming","Description":"Achieve 100 000 hacking skill."},"COMBAT_3000":{"ID":"COMBAT_3000","Name":"One punch man","Description":"Achieve 3000 in all combat stats."},"NEUROFLUX_255":{"ID":"NEUROFLUX_255","Name":"Neuroflux is love, Neuroflux is live","Description":"Install Neuroflux Governor level 255"},"NS2":{"ID":"NS2","Name":"Maximum speed!","Description":"Write an ns2 script."},"FROZE":{"ID":"FROZE","Name":"while(true);","Description":"Restart the game using the reload & kill all option because you froze it with an infinite loop."},"RUNNING_SCRIPTS_1000":{"ID":"RUNNING_SCRIPTS_1000","Name":"Need more real life ram","Description":"Run 1000 scripts simultaneously."},"DRAIN_SERVER":{"ID":"DRAIN_SERVER","Name":"Big trouble","Description":"Drain a server of all its money."},"MAX_RAM":{"ID":"MAX_RAM","Name":"Download more ram","Description":"Maximize your home computer ram."},"MAX_CORES":{"ID":"MAX_CORES","Name":"Download more cores?","Description":"Maximize your home computer cores."},"SCRIPTS_30":{"ID":"SCRIPTS_30","Name":"Thank you folders!","Description":"Have 30 scripts on your home computer."},"KARMA_1000000":{"ID":"KARMA_1000000","Name":"Wretched hive of scum and vilany","Description":"Reach -1m karma."},"STOCK_1q":{"ID":"STOCK_1q","Name":"Wolf of wall street.","Description":"Make 1q on the stock market."},"DISCOUNT":{"ID":"DISCOUNT","Name":"Discount!","Description":"Get a discount at Powerhouse Gym by backdooring their server."},"SCRIPT_32GB":{"ID":"SCRIPT_32GB","Name":"You\'ll need upgrade for this one.","Description":"Write a script that costs 32GB per thread."},"FIRST_HACKNET_NODE":{"ID":"FIRST_HACKNET_NODE","Name":"Free money!","Description":"Purchase your first hacknet node."},"30_HACKNET_NODE":{"ID":"30_HACKNET_NODE","Name":"Big network","Description":"Have 30 hacknet nodes."},"MAX_HACKNET_NODE":{"ID":"MAX_HACKNET_NODE","Name":"That\'s the limit","Description":"Maximize a hacknet node."},"HACKNET_NODE_10M":{"ID":"HACKNET_NODE_10M","Name":"The original hacker","Description":"Make 10m from hacknet nodes."},"REPUTATION_10M":{"ID":"REPUTATION_10M","Name":"Well liked","Description":"Reach 10m reputation with a faction."},"DONATION":{"ID":"DONATION","Name":"Donate!","Description":"Unlock donations with a faction."},"TRAVEL":{"ID":"TRAVEL","Name":"World explorer","Description":"Travel anywhere."},"WORKOUT":{"ID":"WORKOUT","Name":"Gains!","Description":"Workout at a gym."},"TOR":{"ID":"TOR","Name":"The Onion Network","Description":"Purchase the TOR router."},"HOSPITALIZED":{"ID":"HOSPITALIZED","Name":"Ouch!","Description":"Go to the hospital."},"GANG":{"ID":"GANG","Name":"Gangster","Description":"Form a gang."},"FULL_GANG":{"ID":"FULL_GANG","Name":"Don","Description":"Recruit all gang members."},"GANG_TERRITORY":{"ID":"GANG_TERRITORY","Name":"Stay out of my territory","Description":"Have 100% of the territory."},"GANG_MEMBER_POWER":{"ID":"GANG_MEMBER_POWER","Name":"One punch guy","Description":"Have a gang member with 10 000 in 1 skill."},"CORPORATION":{"ID":"CORPORATION","Name":"A small 150b loan.","Description":"Create a corporation."},"CORPORATION_BRIBE":{"ID":"CORPORATION_BRIBE","Name":"Lobbying is great!","Description":"Lower your taxes through lobbying."},"CORPORATION_PROD_1000":{"ID":"CORPORATION_PROD_1000","Name":"Streamlined manufacturing","Description":"Have a division with a production multiplier of 1000."},"CORPORATION_EMPLOYEE_3000":{"ID":"CORPORATION_EMPLOYEE_3000","Name":"Small town","Description":"Have a division with 3000 employee."},"CORPORATION_REAL_ESTATE":{"ID":"CORPORATION_REAL_ESTATE","Name":"Own the land","Description":"Expand to the Real Estate division."},"INTELLIGENCE_255":{"ID":"INTELLIGENCE_255","Name":"Smart!","Description":"Reach intelligence 255"},"BLADEBURNER_DIVISION":{"ID":"BLADEBURNER_DIVISION","Name":"Bladeburners","Description":"Join the Bladeburner division."},"BLADEBURNER_OVERCLOCK":{"ID":"BLADEBURNER_OVERCLOCK","Name":"Overclock!","Description":"Reach maximum level of Overclock"},"BLADEBURNER_UNSPENT_100000":{"ID":"BLADEBURNER_UNSPENT_100000","Name":"You should really spent those.","Description":"Have 100 000 unspent bladeburner skill points."},"4S":{"ID":"4S","Name":"4S","Description":"Purchase the 4S market data."},"FIRST_HACKNET_SERVER":{"ID":"FIRST_HACKNET_SERVER","Name":"The improved hacker.","Description":"Purchase your first hacknet server."},"ALL_HACKNET_SERVER":{"ID":"ALL_HACKNET_SERVER","Name":"Full network","Description":"Buy all hacknet servers."},"MAX_HACKNET_SERVER":{"ID":"MAX_HACKNET_SERVER","Name":"That\'s the new limit.","Description":"Maximize a hacknet server."},"HACKNET_SERVER_1B":{"ID":"HACKNET_SERVER_1B","Name":"Not passive anymore","Description":"Make $1b with hacknet servers."},"MAX_CACHE":{"ID":"MAX_CACHE","Name":"What a waste.","Description":"Cap your hashes."},"SLEEVE_8":{"ID":"SLEEVE_8","Name":"You and what army?","Description":"Purchase all duplicate sleeves from The Covenant."},"INDECISIVE":{"ID":"INDECISIVE","Name":"Too many options.","Description":"Spend 1h straight on the bitverse."},"FAST_BN":{"ID":"FAST_BN","Name":"Speed demon.","Description":"Destroy a bitnode in under 2 days."},"CHALLENGE_BN1":{"ID":"CHALLENGE_BN1","Name":"BN1: Challenge","Description":"Destroy BN1 with at most 128GB and 1 core."},"CHALLENGE_BN2":{"ID":"CHALLENGE_BN2","Name":"BN2: Challenge","Description":"Destroy BN2 without forming a gang."},"CHALLENGE_BN3":{"ID":"CHALLENGE_BN3","Name":"BN3: Challenge","Description":"Destroy BN3 without creating corporation."},"CHALLENGE_BN6":{"ID":"CHALLENGE_BN6","Name":"BN6: Challenge","Description":"Destroy BN6 without joining the bladeburner division."},"CHALLENGE_BN7":{"ID":"CHALLENGE_BN7","Name":"BN7: Challenge","Description":"Destroy BN7 without joining the bladeburner division."},"CHALLENGE_BN8":{"ID":"CHALLENGE_BN8","Name":"BN8: Challenge","Description":"Destroy BN8 without purchasing the 4s market data."},"CHALLENGE_BN9":{"ID":"CHALLENGE_BN9","Name":"BN9: Challenge","Description":"Destroy BN9 without using hacknet servers."},"CHALLENGE_BN10":{"ID":"CHALLENGE_BN10","Name":"BN10: Challenge","Description":"Destroy BN10 without using sleeves."},"CHALLENGE_BN12":{"ID":"CHALLENGE_BN12","Name":"BN12: Challenge","Description":"Destroy BN12 50 times."},"BYPASS":{"ID":"BYPASS","Name":"Exploit: bypass","Description":"Circumventing the ram cost of document."},"PROTOTYPETAMPERING":{"ID":"PROTOTYPETAMPERING","Name":"Exploit: prototype tampering","Description":"Tamper with the Numbers prototype."},"UNCLICKABLE":{"ID":"UNCLICKABLE","Name":"Exploit: unclickable","Description":"Click the unclickable."},"UNDOCUMENTEDFUNCTIONCALL":{"ID":"UNDOCUMENTEDFUNCTIONCALL","Name":"Exploit: undocumented","Description":"Call the undocumented function."},"TIMECOMPRESSION":{"ID":"TIMECOMPRESSION","Name":"Exploit: time compression","Description":"Compress time."},"REALITYALTERATION":{"ID":"REALITYALTERATION","Name":"Exploit: reality alteration","Description":"Alter reality."},"N00DLES":{"ID":"N00DLES","Name":"Exploit: noodles","Description":"Harness the power of the noodles."},"EDITSAVEFILE":{"ID":"EDITSAVEFILE","Name":"Exploit: edit","Description":"Acquire the EditSaveFile Source-File -1"},"UNACHIEVABLE":{"ID":"UNACHIEVABLE","Name":"UNACHIEVABLE","Description":"This achievement cannot be unlocked."},"CHALLENGE_BN13":{"ID":"CHALLENGE_BN13","Name":"BN13: Challenge","Description":"Complete BN13 without Stanek\'s Gift."},"DEVMENU":{"ID":"DEVMENU","Name":"Exploit: you\'re not meant to access this","Description":"Open the dev menu."}}}')},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(918),o=a(920),s=a(921),l=a(29),c=a(25);function u(){const e=l.b.Player(),t=l.b.Router(),a=Object(n.useState)(!1)[1];function u(){a(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(u,200);return()=>clearInterval(e)},[]);const m=e.bladeburner;return null===m?r.a.createElement(r.a.Fragment,null):r.a.createElement(c.a,{display:"flex",flexDirection:"column"},r.a.createElement(c.a,{sx:{display:"grid",gridTemplateColumns:"4fr 8fr",p:1}},r.a.createElement(i.a,{bladeburner:m,player:e,router:t}),r.a.createElement(o.a,{bladeburner:m,player:e})),r.a.createElement(s.a,{bladeburner:m,player:e}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(22),o=a(58),s=a(16),l=a(4),c=a(26),u=a(120),m=a(919),h=a(1),d=a(28),p=a(25),f=a(10),g=a(75);function y(e){const[t,a]=Object(n.useState)(!1),y=Object(n.useState)(!1)[1],b=e.bladeburner.rank>=o.a.RankNeededForFaction;return Object(n.useEffect)(()=>{const e=setInterval(()=>y(e=>!e),1e3);return()=>clearInterval(e)},[]),r.a.createElement(g.a,{sx:{p:1,overflowY:"auto",overflowX:"hidden",wordBreak:"break-all"}},r.a.createElement(p.a,{sx:{display:"flex",flexDirection:"column",gap:1,maxHeight:"60vh"}},r.a.createElement(p.a,{sx:{alignSelf:"flex-start",width:"100%"}},r.a.createElement(f.a,{onClick:()=>a(!0),sx:{width:"50%"}},"Travel"),r.a.createElement(d.a,{title:b?"":r.a.createElement(h.a,null,"Rank 25 required.")},r.a.createElement("span",null,r.a.createElement(f.a,{disabled:!b,onClick:function(){if(!b)return;const t=c.a.Bladeburners;t.isMember||Object(u.d)(t),e.router.toFaction(t)},sx:{width:"50%"}},"Faction"))),r.a.createElement(m.a,{open:t,onClose:()=>a(!1),bladeburner:e.bladeburner})),r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"Your rank within the Bladeburner division.")},r.a.createElement(h.a,null,"Rank: ",Object(i.c)(e.bladeburner.rank,2)))),r.a.createElement("br",null),r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"Performing actions will use up your stamina.",r.a.createElement("br",null),r.a.createElement("br",null),"Your max stamina is determined primarily by your agility stat.",r.a.createElement("br",null),r.a.createElement("br",null),"Your stamina gain rate is determined by both your agility and your max stamina. Higher max stamina leads to a higher gain rate.",r.a.createElement("br",null),r.a.createElement("br",null),"Once your stamina falls below 50% of its max value, it begins to negatively affect the success rate of your contracts/operations. This penalty is shown in the overview panel. If the penalty is 15%, then this means your success rate would be multipled by 85% (100 - 15).",r.a.createElement("br",null),r.a.createElement("br",null),"Your max stamina and stamina gain rate can also be increased by training, or through skills and Augmentation upgrades.")},r.a.createElement(h.a,null,"Stamina: ",Object(i.c)(e.bladeburner.stamina,3)," / ",Object(i.c)(e.bladeburner.maxStamina,3)))),r.a.createElement("br",null),r.a.createElement(h.a,null,"Stamina Penalty: ",Object(i.c)(100*(1-e.bladeburner.calculateStaminaPenalty()),1),"%"),r.a.createElement("br",null),r.a.createElement(h.a,null,"Team Size: ",Object(i.c)(e.bladeburner.teamSize,0)),r.a.createElement(h.a,null,"Team Members Lost: ",Object(i.c)(e.bladeburner.teamLost,0)),r.a.createElement("br",null),r.a.createElement(h.a,null,"Num Times Hospitalized: ",e.bladeburner.numHosp),r.a.createElement(h.a,null,"Money Lost From Hospitalizations: ",r.a.createElement(s.a,{money:e.bladeburner.moneyLost})),r.a.createElement("br",null),r.a.createElement(h.a,null,"Current City: ",e.bladeburner.city),r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"This is your Bladeburner division's estimate of how many Synthoids exist in your current city. An accurate population count increases success rate estimates.")},r.a.createElement(h.a,null,"Est. Synthoid Population: ",l.a.formatPopulation(e.bladeburner.getCurrentCity().popEst)))),r.a.createElement("br",null),r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"This is your Bladeburner divison's estimate of how many Synthoid communities exist in your current city.")},r.a.createElement(h.a,null,"Synthoid Communities: ",Object(i.c)(e.bladeburner.getCurrentCity().comms,0)))),r.a.createElement("br",null),r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"The city's chaos level due to tensions and conflicts between humans and Synthoids. Having too high of a chaos level can make contracts and operations harder.")},r.a.createElement(h.a,null,"City Chaos: ",Object(i.c)(e.bladeburner.getCurrentCity().chaos)))),r.a.createElement("br",null),e.bladeburner.storedCycles/o.a.CyclesPerSecond*1e3>15e3&&r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{display:"flex"},r.a.createElement(d.a,{title:r.a.createElement(h.a,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by browser). Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed.")},r.a.createElement(h.a,null,"Bonus time:"," ",Object(i.b)(e.bladeburner.storedCycles/o.a.CyclesPerSecond*1e3)))),r.a.createElement("br",null)),r.a.createElement(h.a,null,"Skill Points: ",Object(i.c)(e.bladeburner.skillPoints,0)),r.a.createElement("br",null),r.a.createElement(h.a,null,"Aug. Success Chance mult: ",Object(i.c)(100*e.player.bladeburner_success_chance_mult,1),"%",r.a.createElement("br",null),"Aug. Max Stamina mult: ",Object(i.c)(100*e.player.bladeburner_max_stamina_mult,1),"%",r.a.createElement("br",null),"Aug. Stamina Gain mult: ",Object(i.c)(100*e.player.bladeburner_stamina_gain_mult,1),"%",r.a.createElement("br",null),"Aug. Field Analysis mult: ",Object(i.c)(100*e.player.bladeburner_analysis_mult,1),"%")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(418),o=a(40),s=a(23),l=a(11),c=a(1),u=a(10);function m(e){function t(t){e.bladeburner.city=t,e.onClose()}return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,null,"Travel to a different city for your Bladeburner activities. This does not cost any money. The city you are in for your Bladeburner duties does not affect your location in the game otherwise."),l.a.DisableASCIIArt?Object.values(s.a).map(e=>r.a.createElement(u.a,{key:e,onClick:()=>t(e)},e)):r.a.createElement(i.a,{currentCity:e.bladeburner.city,onTravel:e=>t(e)})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(75),o=a(285),s=a(64),l=a(25),c=a(1),u=a(85),m=a(111),h=a(134);const d=Object(m.a)(e=>Object(h.a)({textfield:{margin:e.spacing(0),width:"100%"},input:{backgroundColor:e.colors.backgroundsecondary},nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"}}));function p(e){return r.a.createElement(s.a,{sx:{p:0}},r.a.createElement(c.a,null,e.content))}function f(e){const t=d(),[a,o]=Object(n.useState)(""),s=Object(n.useState)(!1)[1],m=Object(n.useRef)(null);const[h,p]=Object(n.useState)(e.bladeburner.consoleHistory.length);function f(){s(e=>!e)}return Object(n.useEffect)(()=>{const e=setInterval(f,1e3);return()=>{clearInterval(e)}},[]),r.a.createElement(i.a,{sx:{p:1}},r.a.createElement(l.a,{sx:{height:"60vh",paddingBottom:"8px",display:"flex",alignItems:"stretch",whiteSpace:"pre-wrap"},onClick:function(){m.current&&m.current.focus()}},r.a.createElement(l.a,null,r.a.createElement(g,{entries:[...e.bladeburner.consoleLogs]}))),r.a.createElement(u.a,{classes:{root:t.textfield},autoFocus:!0,tabIndex:1,type:"text",inputRef:m,value:a,onChange:function(e){o(e.target.value)},onKeyDown:function(t){13===t.keyCode&&(t.preventDefault(),a.length>0&&(e.bladeburner.postToConsole("> "+a),e.bladeburner.executeConsoleCommands(e.player,a),p(e.bladeburner.consoleHistory.length),o("")));const n=e.bladeburner.consoleHistory;if(38===t.keyCode){let e=h;const a=n.length;if(0===a)return;(e<0||e>a)&&p(a),0!==e&&(e-=1),p(e);const r=n[e];t.currentTarget.value=r,o(r)}if(40===t.keyCode){const e=h,a=n.length;if(0==a)return;if((e<0||e>a)&&p(a),e==a||e==a-1)p(a),t.currentTarget.value="";else{p(h+1);const e=n[h+1];t.currentTarget.value=e,o(e)}}},InputProps:{className:t.input,startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,null,"> ")),spellCheck:!1}}))}function g({entries:e}){const t=Object(n.useRef)(null);return Object(n.useEffect)(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight)},[e.length]),r.a.createElement(o.a,{sx:{height:"100%",overflow:"auto",p:1},ref:t},e&&e.map((e,t)=>r.a.createElement(p,{key:t,content:e})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(922),o=a(926),s=a(934),l=a(939),c=a(943),u=a(496),m=a(238),h=a(25);function d(e){const[t,a]=r.a.useState(0);return r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{variant:"fullWidth",value:t,onChange:function(e,t){a(t)}},r.a.createElement(m.a,{label:"General"}),r.a.createElement(m.a,{label:"Contracts"}),r.a.createElement(m.a,{label:"Operations"}),r.a.createElement(m.a,{label:"BlackOps"}),r.a.createElement(m.a,{label:"Skills"})),r.a.createElement(h.a,{sx:{p:1}},0===t&&r.a.createElement(i.a,{bladeburner:e.bladeburner,player:e.player}),1===t&&r.a.createElement(o.a,{bladeburner:e.bladeburner,player:e.player}),2===t&&r.a.createElement(s.a,{bladeburner:e.bladeburner,player:e.player}),3===t&&r.a.createElement(l.a,{bladeburner:e.bladeburner,player:e.player}),4===t&&r.a.createElement(c.a,{bladeburner:e.bladeburner})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a(923),i=a(1);function o(e){return n.createElement(n.Fragment,null,n.createElement(i.a,null,"These are generic actions that will assist you in your Bladeburner duties."),n.createElement(r.a,{bladeburner:e.bladeburner,player:e.player}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(924),o=a(244);function s(e){const t=[];for(const e in o.a)o.a.hasOwnProperty(e)&&t.push(o.a[e]);return r.a.createElement(r.a.Fragment,null,t.map(t=>r.a.createElement(i.a,{key:t.name,bladeburner:e.bladeburner,action:t,player:e.player})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(38),o=a(175),s=a(22),l=a(925),c=a(161),u=a(339),m=a(1),h=a(25),d=a(75);function p(e){const t=Object(n.useState)(!1)[1];const a=e.action.name===e.bladeburner.action.name,p=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),f=function(){switch(e.action.name){case"Training":case"Field Analysis":return 30;case"Diplomacy":case"Hyperbolic Regeneration Chamber":case"Incite Violence":return 60;case"Recruitment":return e.bladeburner.getRecruitmentTime(e.player)}return-1}(),g="Recruitment"===e.action.name?Math.max(0,Math.min(e.bladeburner.getRecruitmentSuccessChance(e.player),1)):-1,y=l.a[e.action.name];if(void 0===y)throw new Error("Cannot find data for "+e.action.name);return r.a.createElement(d.a,{sx:{my:1,p:1}},a?r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{value:e.action.name}),r.a.createElement(m.a,null,"(IN PROGRESS - ",Object(s.c)(p,0)," /"," ",Object(s.c)(e.bladeburner.actionTimeToComplete,0),")"),r.a.createElement(m.a,null,Object(o.a)({progress:p/e.bladeburner.actionTimeToComplete}))):r.a.createElement(h.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(c.a,{value:e.action.name}),r.a.createElement(u.a,{bladeburner:e.bladeburner,type:i.a[e.action.name],name:e.action.name,rerender:function(){t(e=>!e)}})),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,null,y.desc),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,null,"Time Required: ",Object(s.b)(1e3*f),-1!==g&&r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),"Estimated success chance: ",Object(s.c)(100*g,1),"%")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);const i={Training:{desc:r.a.createElement(r.a.Fragment,null,"Improve your abilities at the Bladeburner unit's specialized training center. Doing this gives experience for all combat stats and also increases your max stamina.")},"Field Analysis":{desc:r.a.createElement(r.a.Fragment,null,"Mine and analyze Synthoid-related data. This improves the Bladeburner unit's intelligence on Synthoid locations and activities. Completing this action will improve the accuracy of your Synthoid population estimated in the current city.",r.a.createElement("br",null),r.a.createElement("br",null),"Does NOT require stamina.")},Recruitment:{desc:r.a.createElement(r.a.Fragment,null,"Attempt to recruit members for your Bladeburner team. These members can help you conduct operations.",r.a.createElement("br",null),r.a.createElement("br",null),"Does NOT require stamina.")},Diplomacy:{desc:r.a.createElement(r.a.Fragment,null,"Improve diplomatic relations with the Synthoid population. Completing this action will reduce the Chaos level in your current city.",r.a.createElement("br",null),r.a.createElement("br",null),"Does NOT require stamina.")},"Hyperbolic Regeneration Chamber":{desc:r.a.createElement(r.a.Fragment,null,"Enter cryogenic stasis using the Bladeburner division's hi-tech Regeneration Chamber. This will slowly heal your wounds and slightly increase your stamina.",r.a.createElement("br",null),r.a.createElement("br",null))},"Incite Violence":{desc:r.a.createElement(r.a.Fragment,null,"Purposefully stir trouble in the synthoid community in order to gain a political edge. This will generate additional contracts and operations, at the cost of increased Chaos.")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a(927),i=a(1);function o(e){return n.createElement(n.Fragment,null,n.createElement(i.a,null,"Complete contracts in order to increase your Bladeburner rank and earn money. Failing a contract will cause you to lose HP, which can lead to hospitalization.",n.createElement("br",null),n.createElement("br",null),"You can unlock higher-level contracts by successfully completing them. Higher-level contracts are more difficult, but grant more rank, experience, and money."),n.createElement(r.a,{bladeburner:e.bladeburner,player:e.player}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(928);function o(e){const t=Object.keys(e.bladeburner.contracts),a=e.bladeburner.contracts;return r.a.createElement(r.a.Fragment,null,t.map(t=>r.a.createElement(i.a,{key:t,bladeburner:e.bladeburner,action:a[t],player:e.player})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(38),o=a(175),s=a(22),l=a(929),c=a(419),u=a(161),m=a(552),h=a(555),d=a(339),p=a(1),f=a(75);function g(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}const g=e.bladeburner.action.type===i.a.Contract&&e.action.name===e.bladeburner.action.name,y=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),b=e.action.getActionTime(e.bladeburner),E=l.a[e.action.name];if(void 0===E)throw new Error("Cannot find data for "+e.action.name);return r.a.createElement(f.a,{sx:{my:1,p:1}},g?r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,r.a.createElement(u.a,{value:e.action.name})," (IN PROGRESS - ",Object(s.c)(y,0)," /"," ",Object(s.c)(e.bladeburner.actionTimeToComplete,0),")"),r.a.createElement(p.a,null,Object(o.a)({progress:y/e.bladeburner.actionTimeToComplete}))):r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{value:e.action.name}),r.a.createElement(d.a,{bladeburner:e.bladeburner,type:i.a.Contract,name:e.action.name,rerender:a})),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,{action:e.action,bladeburner:e.bladeburner,isActive:g,rerender:a}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(p.a,null,E.desc,r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{action:e.action,bladeburner:e.bladeburner}),r.a.createElement("br",null),"Time Required: ",Object(s.b)(1e3*b),r.a.createElement("br",null),"Contracts remaining: ",Math.floor(e.action.count),r.a.createElement("br",null),"Successes: ",e.action.successes,r.a.createElement("br",null),"Failures: ",e.action.failures),r.a.createElement("br",null),r.a.createElement(h.a,{rerender:a,action:e.action}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);const i={Tracking:{desc:r.a.createElement(r.a.Fragment,null,"Identify and locate Synthoids. This contract involves reconnaissance and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.",r.a.createElement("br",null),r.a.createElement("br",null),"Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for whatever city you are currently in.")},"Bounty Hunter":{desc:r.a.createElement(r.a.Fragment,null,"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.",r.a.createElement("br",null),r.a.createElement("br",null),"Successfully completing a Bounty Hunter contract will lower the population in your current city, and will also increase its chaos level.")},Retirement:{desc:r.a.createElement(r.a.Fragment,null,"Hunt down and retire (kill) rogue Synthoids.",r.a.createElement("br",null),r.a.createElement("br",null),"Successfully completing a Retirement contract will lower the population in your current city, and will also increase its chaos level.")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(551),o=a(1),s=a(28);function l(){return r.a.createElement(s.a,{title:r.a.createElement(o.a,null,"This action involves stealth")},i.b)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(551),o=a(1),s=a(28);function l(){return r.a.createElement(s.a,{title:r.a.createElement(o.a,null,"This action involves retirement")},i.a)}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a(935),i=a(1);function o(e){return n.createElement(n.Fragment,null,n.createElement(i.a,null,"Carry out operations for the Bladeburner division. Failing an operation will reduce your Bladeburner rank. It will also cause you to lose HP, which can lead to hospitalization. In general, operations are harder and more punishing than contracts, but are also more rewarding.",n.createElement("br",null),n.createElement("br",null),"Operations can affect the chaos level and Synthoid population of your current city. The exact effects vary between different Operations.",n.createElement("br",null),n.createElement("br",null),"For operations, you can use a team. You must first recruit team members. Having a larger team will improves your chances of success.",n.createElement("br",null),n.createElement("br",null),"You can unlock higher-level operations by successfully completing them. Higher-level operations are more difficult, but grant more rank and experience."),n.createElement(r.a,{bladeburner:e.bladeburner,player:e.player}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(936);function o(e){const t=Object.keys(e.bladeburner.operations),a=e.bladeburner.operations;return r.a.createElement(r.a.Fragment,null,t.map(t=>r.a.createElement(i.a,{key:t,bladeburner:e.bladeburner,action:a[t],player:e.player})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(38),o=a(175),s=a(22),l=a(419),c=a(552),u=a(555),m=a(339),h=a(556),d=a(938),p=a(161),f=a(1),g=a(75);function y(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}const y=e.bladeburner.action.type===i.a.Operation&&e.action.name===e.bladeburner.action.name,b=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),E=e.action.getActionTime(e.bladeburner),k=d.a[e.action.name];if(void 0===k)throw new Error("Cannot find data for "+e.action.name);return r.a.createElement(g.a,{sx:{my:1,p:1}},y?r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(p.a,{value:e.action.name})," (IN PROGRESS - ",Object(s.c)(b,0)," /"," ",Object(s.c)(e.bladeburner.actionTimeToComplete,0),")"),r.a.createElement(f.a,null,Object(o.a)({progress:b/e.bladeburner.actionTimeToComplete}))):r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{value:e.action.name}),r.a.createElement(m.a,{bladeburner:e.bladeburner,type:i.a.Operation,name:e.action.name,rerender:a}),r.a.createElement(h.a,{action:e.action,bladeburner:e.bladeburner})),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{action:e.action,bladeburner:e.bladeburner,isActive:y,rerender:a}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(f.a,null,k.desc,r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{action:e.action,bladeburner:e.bladeburner}),r.a.createElement("br",null),"Time Required: ",Object(s.b)(1e3*E),r.a.createElement("br",null),"Operations remaining: ",Math.floor(e.action.count),r.a.createElement("br",null),"Successes: ",e.action.successes,r.a.createElement("br",null),"Failures: ",e.action.failures),r.a.createElement("br",null),r.a.createElement(u.a,{rerender:a,action:e.action}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(15),o=a(40),s=a(1),l=a(10),c=a(85);function u(e){const[t,a]=Object(n.useState)();return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,null,"Enter the amount of team members you would like to take on this Op. If you do not have the specified number of team members, then as many as possible will be used. Note that team members may be lost during operations."),r.a.createElement(c.a,{autoFocus:!0,type:"number",placeholder:"Team size",value:t,onChange:function(t){const n=parseFloat(t.target.value);n>e.bladeburner.teamSize?a(e.bladeburner.teamSize):a(n)}}),r.a.createElement(l.a,{sx:{mx:2},onClick:function(){if(void 0===t)return;const a=Math.round(t);isNaN(a)||a<0?Object(i.a)("Invalid value entered for number of Team Members (must be numeric, positive)"):e.action.teamCount=a,e.onClose()}},"Confirm"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);const i={Investigation:{desc:r.a.createElement(r.a.Fragment,null,"As a field agent, investigate and identify Synthoid populations, movements, and operations.",r.a.createElement("br",null),r.a.createElement("br",null),"Successful Investigation ops will increase the accuracy of your synthoid data.",r.a.createElement("br",null),r.a.createElement("br",null),"You will NOT lose HP from failed Investigation ops.")},"Undercover Operation":{desc:r.a.createElement(r.a.Fragment,null,"Conduct undercover operations to identify hidden and underground Synthoid communities and organizations.",r.a.createElement("br",null),r.a.createElement("br",null),"Successful Undercover ops will increase the accuracy of your synthoid data.")},"Sting Operation":{desc:r.a.createElement(r.a.Fragment,null,"Conduct a sting operation to bait and capture particularly notorious Synthoid criminals.")},Raid:{desc:r.a.createElement(r.a.Fragment,null,"Lead an assault on a known Synthoid community. Note that there must be an existing Synthoid community in your current city in order for this Operation to be successful.")},"Stealth Retirement Operation":{desc:r.a.createElement(r.a.Fragment,null,"Lead a covert operation to retire Synthoids. The objective is to complete the task without drawing any attention. Stealth and discretion are key.")},Assassination:{desc:r.a.createElement(r.a.Fragment,null,"Assassinate Synthoids that have been identified as important, high-profile social and political leaders in the Synthoid communities.")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a(940),i=a(1);function o(e){return n.createElement(n.Fragment,null,n.createElement(i.a,null,"Black Operations (Black Ops) are special, one-time covert operations. Each Black Op must be unlocked successively by completing the one before it.",n.createElement("br",null),n.createElement("br",null),n.createElement("b",null,"Your ultimate goal to climb through the ranks of Bladeburners is to complete all of the Black Ops."),n.createElement("br",null),n.createElement("br",null),"Like normal operations, you may use a team for Black Ops. Failing a black op will incur heavy HP and rank losses."),n.createElement(r.a,{bladeburner:e.bladeburner,player:e.player}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(256),o=a(941);function s(e){let t=[];for(const e in i.a)i.a.hasOwnProperty(e)&&t.push(i.a[e]);return t.sort((function(e,t){return e.reqdRank-t.reqdRank})),t=t.filter((a,n)=>!(null==e.bladeburner.blackops[t[n].name]&&0!==n&&null==e.bladeburner.blackops[t[n-1].name])),t=t.reverse(),r.a.createElement(r.a.Fragment,null,t.map(t=>r.a.createElement(o.a,{key:t.name,bladeburner:e.bladeburner,action:t,player:e.player})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(22),o=a(38),s=a(175),l=a(556),c=a(942),u=a(161),m=a(419),h=a(339),d=a(1),p=a(75);function f(e){const t=Object(n.useState)(!1)[1];if(null!=e.bladeburner.blackops[e.action.name])return r.a.createElement(p.a,{sx:{my:1,p:1}},r.a.createElement(d.a,null,e.action.name," (COMPLETED)"));const a=e.bladeburner.action.type===o.a.BlackOperation&&e.action.name===e.bladeburner.action.name,f=e.action.getActionTime(e.bladeburner),g=e.bladeburner.rank>=e.action.reqdRank,y=Math.min(e.bladeburner.actionTimeCurrent+e.bladeburner.actionTimeOverflow,e.bladeburner.actionTimeToComplete),b=c.a[e.action.name];if(void 0===b)throw new Error("Cannot find data for "+e.action.name);return r.a.createElement(p.a,{sx:{my:1,p:1}},a?r.a.createElement(r.a.Fragment,null,r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{value:e.action.name}),r.a.createElement(d.a,null,"(IN PROGRESS - ",Object(i.c)(y,0)," /"," ",Object(i.c)(e.bladeburner.actionTimeToComplete,0),")"),r.a.createElement(d.a,null,Object(s.a)({progress:y/e.bladeburner.actionTimeToComplete})))):r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{value:e.action.name}),r.a.createElement(h.a,{bladeburner:e.bladeburner,type:o.a.BlackOperation,name:e.action.name,rerender:function(){t(e=>!e)}}),r.a.createElement(l.a,{action:e.action,bladeburner:e.bladeburner})),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(d.a,null,b.desc),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(d.a,{color:g?"primary":"error"},"Required Rank: ",Object(i.c)(e.action.reqdRank,0)),r.a.createElement("br",null),r.a.createElement(d.a,null,r.a.createElement(m.a,{action:e.action,bladeburner:e.bladeburner}),r.a.createElement("br",null),"Time Required: ",Object(i.b)(1e3*f)))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);const i={"Operation Typhoon":{desc:r.a.createElement(r.a.Fragment,null,"Obadiah Zenyatta is the leader of a RedWater PMC. It has long been known among the intelligence community that Zenyatta, along with the rest of the PMC, is a Synthoid.",r.a.createElement("br",null),r.a.createElement("br",null),"The goal of Operation Typhoon is to find and eliminate Zenyatta and RedWater by any means necessary. After the task is completed, the actions must be covered up from the general public.")},"Operation Zero":{desc:r.a.createElement(r.a.Fragment,null,"AeroCorp is one of the world's largest defense contractors. Its leader, Steve Watataki, is thought to be a supporter of Synthoid rights. He must be removed.",r.a.createElement("br",null),r.a.createElement("br",null),"The goal of Operation Zero is to covertly infiltrate AeroCorp and uncover any incriminating evidence or information against Watataki that will cause him to be removed from his position at AeroCorp. Incriminating evidence can be fabricated as a last resort. Be warned that AeroCorp has some of the most advanced security measures in the world.")},"Operation X":{desc:r.a.createElement(r.a.Fragment,null,"We have recently discovered an underground publication group called Samizdat. Even though most of their publications are nonsensical conspiracy theories, the average human is gullible enough to believe them. Many of their works discuss Synthoids and pose a threat to society. The publications are spreading rapidly in China and other Eastern countries.",r.a.createElement("br",null),r.a.createElement("br",null),"Samizdat has done a good job of keeping hidden and anonymous. However, we've just received intelligence that their base of operations is in Ishima's underground sewer systems. Your task is to investigate the sewer systems, and eliminate Samizdat. They must never publish anything again.")},"Operation Titan":{desc:r.a.createElement(r.a.Fragment,null,"Several months ago Titan Laboratories' Bioengineering department was infiltrated by Synthoids. As far as we know, Titan Laboratories' management has no knowledge about this. We don't know what the Synthoids are up to, but the research that they could be conducting using Titan Laboraties' vast resources is potentially very dangerous.",r.a.createElement("br",null),r.a.createElement("br",null),"Your goal is to enter and destroy the Bioengineering department's facility in Aevum. The task is not just to retire the Synthoids there, but also to destroy any information or research at the facility that is relevant to the Synthoids and their goals.")},"Operation Ares":{desc:r.a.createElement(r.a.Fragment,null,"One of our undercover agents, Agent Carter, has informed us of a massive weapons deal going down in Dubai between rogue Russian militants and a radical Synthoid community. These weapons are next-gen plasma and energy weapons. It is critical for the safety of humanity that this deal does not happen.",r.a.createElement("br",null),r.a.createElement("br",null),"Your task is to intercept the deal. Leave no survivors.")},"Operation Archangel":{desc:r.a.createElement(r.a.Fragment,null,"Our analysts have discovered that the popular Red Rabbit brothel in Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence suggests that the profit from this brothel is used to fund a large black market arms trafficking operation.",r.a.createElement("br",null),r.a.createElement("br",null),"The goal of this operation is to take out the leaders that are running the Red Rabbit brothel. Try to limit the number of other casualties, but do what you must to complete the mission.")},"Operation Juggernaut":{desc:r.a.createElement(r.a.Fragment,null,"The CIA has just encountered a new security threat. A new criminal group, lead by a shadowy operative who calls himself Juggernaut, has been smuggling drugs and weapons (including suspected bioweapons) into Sector-12. We also have reason to believe they tried to break into one of Universal Energy's facilities in order to cause a city-wide blackout. The CIA suspects that Juggernaut is a heavily-augmented Synthoid, and have thus enlisted our help.",r.a.createElement("br",null),r.a.createElement("br",null),"Your mission is to eradicate Juggernaut and his followers.")},"Operation Red Dragon":{desc:r.a.createElement(r.a.Fragment,null,"The Tetrads criminal organization is suspected of reverse-engineering the MK-VI Synthoid design. We believe they altered and possibly improved the design and began manufacturing their own Synthoid models in order to bolster their criminal activities.",r.a.createElement("br",null),r.a.createElement("br",null),"Your task is to infiltrate and destroy the Tetrads' base of operations in Los Angeles. Intelligence tells us that their base houses one of their Synthoid manufacturing units.")},"Operation K":{desc:r.a.createElement(r.a.Fragment,null,"CODE RED SITUATION. Our intelligence tells us that VitaLife has discovered a new android cloning technology. This technology is supposedly capable of cloning Synthoid, not only physically but also their advanced AI modules. We do not believe that VitaLife is trying to use this technology illegally or maliciously, but if any Synthoids were able to infiltrate the corporation and take advantage of this technology then the results would be catastrophic.",r.a.createElement("br",null),r.a.createElement("br",null),"We do not have the power or jurisdiction to shut this down through legal or political means, so we must resort to a covert operation. Your goal is to destroy this technology and eliminate anyone who was involved in its creation.")},"Operation Deckard":{desc:r.a.createElement(r.a.Fragment,null,"Despite your success in eliminating VitaLife's new android-replicating technology in Operation K, we've discovered that a small group of MK-VI Synthoids were able to make off with the schematics and design of the technology before the Operation. It is almost a certainty that these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising.",r.a.createElement("br",null),r.a.createElement("br",null),"The goal of Operation Deckard is to hunt down these Synthoids and retire them. I don't need to tell you how critical this mission is.")},"Operation Tyrell":{desc:r.a.createElement(r.a.Fragment,null,"A week ago Blade Industries reported a small break-in at one of their Aevum Augmentation storage facilities. We figured out that The Dark Army was behind the heist, and didn't think any more of it. However, we've just discovered that several known MK-VI Synthoids were part of that break-in group.",r.a.createElement("br",null),r.a.createElement("br",null),"We cannot have Synthoids upgrading their already-enhanced abilities with Augmentations. Your task is to hunt down the associated Dark Army members and eliminate them.")},"Operation Wallace":{desc:r.a.createElement(r.a.Fragment,null,"Based on information gathered from Operation Tyrell, we've discovered that The Dark Army was well aware that there were Synthoids amongst their ranks. Even worse, we believe that The Dark Army is working together with other criminal organizations such as The Syndicate and that they are planning some sort of large-scale takeover of multiple major cities, most notably Aevum. We suspect that Synthoids have infiltrated the ranks of these criminal factions and are trying to stage another Synthoid uprising.",r.a.createElement("br",null),r.a.createElement("br",null),"The best way to deal with this is to prevent it before it even happens. The goal of Operation Wallace is to destroy the Dark Army and Syndicate factions in Aevum immediately. Leave no survivors.")},"Operation Shoulder of Orion":{desc:r.a.createElement(r.a.Fragment,null,"China's Solaris Space Systems is secretly launching the first manned spacecraft in over a decade using Synthoids. We believe China is trying to establish the first off-world colonies.",r.a.createElement("br",null),r.a.createElement("br",null),"The mission is to prevent this launch without instigating an international conflict. When you accept this mission you will be officially disavowed by the NSA and the national government until after you successfully return. In the event of failure, all of the operation's team members must not let themselves be captured alive.")},"Operation Hyron":{desc:r.a.createElement(r.a.Fragment,null,"Our intelligence tells us that Fulcrum Technologies is developing a quantum supercomputer using human brains as core processors. This supercomputer is rumored to be able to store vast amounts of data and perform computations unmatched by any other supercomputer on the planet. But more importantly, the use of organic human brains means that the supercomputer may be able to reason abstractly and become self-aware.",r.a.createElement("br",null),r.a.createElement("br",null),"I do not need to remind you why sentient-level AIs pose a serious threat to all of mankind.",r.a.createElement("br",null),r.a.createElement("br",null),"The research for this project is being conducted at one of Fulcrum Technologies secret facilities in Aevum, codenamed 'Alpha Ranch'. Infiltrate the compound, delete and destroy the work, and then find and kill the project lead.")},"Operation Morpheus":{desc:r.a.createElement(r.a.Fragment,null,"DreamSense Technologies is an advertising company that uses special technology to transmit their ads into the people's dreams and subconcious. They do this using broadcast transmitter towers. Based on information from our agents and informants in Chonqging, we have reason to believe that one of the broadcast towers there has been compromised by Synthoids and is being used to spread pro-Synthoid propaganda.",r.a.createElement("br",null),r.a.createElement("br",null),"The mission is to destroy this broadcast tower. Speed and stealth are of the utmost importance for this.")},"Operation Ion Storm":{desc:r.a.createElement(r.a.Fragment,null,"Our analysts have uncovered a gathering of MK-VI Synthoids that have taken up residence in the Sector-12 Slums. We don't know if they are rogue Synthoids from the Uprising, but we do know that they have been stockpiling weapons, money, and other resources. This makes them dangerous.",r.a.createElement("br",null),r.a.createElement("br",null),"This is a full-scale assault operation to find and retire all of these Synthoids in the Sector-12 Slums.")},"Operation Annihilus":{desc:r.a.createElement(r.a.Fragment,null,"Our superiors have ordered us to eradicate everything and everyone in an underground facility located in Aevum. They tell us that the facility houses many dangerous Synthoids and belongs to a terrorist organization called 'The Covenant'. We have no prior intelligence about this organization, so you are going in blind.")},"Operation Ultron":{desc:r.a.createElement(r.a.Fragment,null,"OmniTek Incorporated, the original designer and manufacturer of Synthoids, has notified us of a malfunction in their AI design. This malfunction, when triggered, causes MK-VI Synthoids to become radicalized and seek out the destruction of humanity. They say that this bug affects all MK-VI Synthoids, not just the rogue ones from the Uprising.",r.a.createElement("br",null),r.a.createElement("br",null),"OmniTek has also told us they they believe someone has triggered this malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids are now amassing in Volhaven to form a terrorist group called Ultron.",r.a.createElement("br",null),r.a.createElement("br",null),"Intelligence suggests Ultron is heavily armed and that their members are augmented. We believe Ultron is making moves to take control of and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).",r.a.createElement("br",null),r.a.createElement("br",null),"Your task is to find and destroy Ultron.")},"Operation Centurion":{desc:r.a.createElement(r.a.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",r.a.createElement("br",null),r.a.createElement("br",null),"Throughout all of humanity's history, we have relied on technology to survive, conquer, and progress. Its advancement became our primary goal. And at the peak of human civilization technology turned into power. Global, absolute power.",r.a.createElement("br",null),r.a.createElement("br",null),"It seems that the universe is not without a sense of irony.",r.a.createElement("br",null),r.a.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},"Operation Vindictus":{desc:r.a.createElement(r.a.Fragment,null,"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",r.a.createElement("br",null),r.a.createElement("br",null),"The bits are all around us. The daemons that hold the Node together can manifest themselves in many different ways.",r.a.createElement("br",null),r.a.createElement("br",null),"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)")},"Operation Daedalus":{desc:r.a.createElement(r.a.Fragment,null," Yesterday we obeyed kings and bent our neck to emperors. Today we kneel only to truth.")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(944),o=a(58),s=a(22),l=a(1),c=a(5);function u(e){const t=Object(n.useState)(!1)[1],a=e.bladeburner.skillMultipliers;function u(e){return e&&1!==e}return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,r.a.createElement("strong",null,"Skill Points: ",Object(s.c)(e.bladeburner.skillPoints,0))),r.a.createElement(l.a,null,"You will gain one skill point every"," ",o.a.RanksPerSkillPoint*c.a.BladeburnerSkillCost," ranks.",r.a.createElement("br",null),"Note that when upgrading a skill, the benefit for that skill is additive. However, the effects of different skills with each other is multiplicative."),u(a.successChanceAll)&&r.a.createElement(l.a,null,"Total Success Chance: x",Object(s.c)(a.successChanceAll,3)),u(a.successChanceStealth)&&r.a.createElement(l.a,null,"Stealth Success Chance: x",Object(s.c)(a.successChanceStealth,3)),u(a.successChanceKill)&&r.a.createElement(l.a,null,"Retirement Success Chance: x",Object(s.c)(a.successChanceKill,3)),u(a.successChanceContract)&&r.a.createElement(l.a,null,"Contract Success Chance: x",Object(s.c)(a.successChanceContract,3)),u(a.successChanceOperation)&&r.a.createElement(l.a,null,"Operation Success Chance: x",Object(s.c)(a.successChanceOperation,3)),u(a.successChanceEstimate)&&r.a.createElement(l.a,null,"Synthoid Data Estimate: x",Object(s.c)(a.successChanceEstimate,3)),u(a.actionTime)&&r.a.createElement(l.a,null,"Action Time: x",Object(s.c)(a.actionTime,3)),u(a.effHack)&&r.a.createElement(l.a,null,"Hacking Skill: x",Object(s.c)(a.effHack,3)),u(a.effStr)&&r.a.createElement(l.a,null,"Strength: x",Object(s.c)(a.effStr,3)),u(a.effDef)&&r.a.createElement(l.a,null,"Defense: x",Object(s.c)(a.effDef,3)),u(a.effDex)&&r.a.createElement(l.a,null,"Dexterity: x",Object(s.c)(a.effDex,3)),u(a.effAgi)&&r.a.createElement(l.a,null,"Agility: x",Object(s.c)(a.effAgi,3)),u(a.effCha)&&r.a.createElement(l.a,null,"Charisma: x",Object(s.c)(a.effCha,3)),u(a.effInt)&&r.a.createElement(l.a,null,"Intelligence: x",Object(s.c)(a.effInt,3)),u(a.stamina)&&r.a.createElement(l.a,null,"Stamina: x",Object(s.c)(a.stamina,3)),u(a.money)&&r.a.createElement(l.a,null,"Contract Money: x",Object(s.c)(a.money,3)),u(a.expGain)&&r.a.createElement(l.a,null,"Exp Gain: x",Object(s.c)(a.expGain,3)),r.a.createElement(i.a,{bladeburner:e.bladeburner,onUpgrade:()=>t(e=>!e)}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a(945),i=a(210);function o(e){return n.createElement(n.Fragment,null,Object.keys(i.a).map(t=>n.createElement(r.a,{key:t,bladeburner:e.bladeburner,skill:i.a[t],onUpgrade:e.onUpgrade})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(161),o=a(22),s=a(1),l=a(101),c=a(25),u=a(75),m=a(548),h=a.n(m),d=a(946),p=a.n(d);function f(e){const t=e.skill.name;let a=0;e.bladeburner.skills[t]&&!isNaN(e.bladeburner.skills[t])&&(a=e.bladeburner.skills[t]);const n=e.skill.calculateCost(a),m=e.bladeburner.skillPoints>=n,d=!!e.skill.maxLvl&&a>=e.skill.maxLvl;return r.a.createElement(u.a,{sx:{my:1,p:1}},r.a.createElement(c.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(i.a,{variant:"h6",color:"primary",value:e.skill.name}),!m||d?r.a.createElement(l.a,{disabled:!0},r.a.createElement(p.a,null)):r.a.createElement(l.a,{onClick:function(){e.bladeburner.skillPoints<n||(e.bladeburner.skillPoints-=n,e.bladeburner.upgradeSkill(e.skill),e.onUpgrade())}},r.a.createElement(h.a,null))),r.a.createElement(s.a,null,"Level: ",a),d?r.a.createElement(s.a,null,"MAX LEVEL"):r.a.createElement(s.a,null,"Skill Points required: ",Object(o.c)(n,0)),r.a.createElement(s.a,null,e.skill.desc))}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(950),o=a(962),s=a(963),l=a(29),c=a(138),u=a(496),m=a(238);function h(){const e=l.b.Player(),t=function(){if(null===e.gang)throw new Error("Gang should not be null");return e.gang}(),[a,h]=r.a.useState(0);const d=Object(n.useState)(!1)[1];return Object(n.useEffect)(()=>{const e=setInterval(()=>d(e=>!e),200);return()=>clearInterval(e)},[]),r.a.createElement(c.a.Gang.Provider,{value:t},r.a.createElement(u.a,{variant:"fullWidth",value:a,onChange:function(e,t){h(t)}},r.a.createElement(m.a,{label:"Management"}),r.a.createElement(m.a,{label:"Equipment"}),r.a.createElement(m.a,{label:"Territory"})),0===a&&r.a.createElement(i.a,null),1===a&&r.a.createElement(s.a,null),2===a&&r.a.createElement(o.a,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(951),o=a(953),s=a(138),l=a(1);function c(){const e=Object(s.b)();return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,"This page is used to manage your gang members and get an overview of your gang's stats.",r.a.createElement("br",null),r.a.createElement("br",null),"If a gang member is not earning much money or respect, the task that you have assigned to that member might be too difficult. Consider training that member's stats or choosing an easier task. The tasks closer to the top of the dropdown list are generally easier. Alternatively, the gang member's low production might be due to the fact that your wanted level is too high. Consider assigning a few members to the '",e.isHackingGang?"Ethical Hacking":"Vigilante Justice","' task to lower your wanted level.",r.a.createElement("br",null),r.a.createElement("br",null),"Installing Augmentations does NOT reset your progress with your Gang. Furthermore, after installing Augmentations, you will automatically be a member of whatever Faction you created your gang with.",r.a.createElement("br",null),r.a.createElement("br",null),"You can also manage your gang programmatically through Netscript using the Gang API"),r.a.createElement("br",null),r.a.createElement(i.a,null),r.a.createElement("br",null),r.a.createElement(o.a,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(26),o=a(22),s=a(4),l=a(102),c=a(106),u=a(68),m=a(952),h=a(138),d=a(1),p=a(28),f=a(25);function g(){const e=Object(h.b)(),t=100*u.a[e.facName].territory;let a;return a=t<=0?Object(o.c)(0,2):t>=100?Object(o.c)(100,2):Object(o.c)(t,2),r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{display:"flex"},r.a.createElement(p.a,{title:r.a.createElement(d.a,null,"Represents the amount of respect your gang has from other gangs and criminal organizations. Your respect affects the amount of money your gang members will earn, and also determines how much reputation you are earning with your gang's corresponding Faction.")},r.a.createElement(d.a,null,"Respect: ",s.a.formatRespect(e.respect)," (",s.a.formatRespect(5*e.respectGainRate)," / sec)"))),r.a.createElement(f.a,{display:"flex"},r.a.createElement(p.a,{title:r.a.createElement(d.a,null,"Represents how much the gang is wanted by law enforcement. The higher your gang's wanted level, the harder it will be for your gang members to make money and earn respect. Note that the minimum wanted level is 1.")},r.a.createElement(d.a,null,"Wanted Level: ",s.a.formatWanted(e.wanted)," (",s.a.formatWanted(5*e.wantedGainRate)," / sec)"))),r.a.createElement(f.a,{display:"flex"},r.a.createElement(p.a,{title:r.a.createElement(d.a,null,"Penalty for respect and money gain rates due to Wanted Level")},r.a.createElement(d.a,null,"Wanted Level Penalty: -",Object(o.c)(100*(1-e.getWantedPenalty()),2),"%"))),r.a.createElement(d.a,null,"Money gain rate: ",r.a.createElement(l.a,{money:5*e.moneyGainRate})),r.a.createElement(f.a,{display:"flex"},r.a.createElement(p.a,{title:r.a.createElement(d.a,null,"The percentage of total territory your Gang controls")},r.a.createElement(d.a,null,"Territory: ",a,"%"))),r.a.createElement(d.a,null,"Faction reputation: ",r.a.createElement(c.a,{reputation:i.a[e.facName].playerReputation})),r.a.createElement(m.a,{gang:e}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a(8),i=a(22),o=a(1),s=a(28),l=a(25);function c(e){const t=1e3/r.a._idleSpeed;if(e.gang.storedCycles/t*1e3<=5e3)return n.createElement(n.Fragment,null);const a=e.gang.storedCycles/t*1e3;return n.createElement(l.a,{display:"flex"},n.createElement(s.a,{title:n.createElement(o.a,null,"You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by the browser). Bonus time makes the Gang mechanic progress faster, up to 5x the normal speed.")},n.createElement(o.a,null,"Bonus time: ",Object(i.b)(a))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(954),o=a(960),s=a(138);function l(){const e=Object(s.b)(),t=Object(n.useState)(!1)[1];return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{onRecruit:()=>t(e=>!e)}),r.a.createElement("ul",null,e.members.map(e=>r.a.createElement(i.a,{key:e.name,member:e}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(955),o=a(25),s=a(1),l=a(310),c=a(100),u=a(75),m=a(200),h=a(66),d=a.n(h),p=a(137),f=a.n(p);function g(e){const[t,a]=Object(n.useState)(!0);return r.a.createElement(o.a,{component:u.a},r.a.createElement(l.a,{onClick:()=>a(e=>!e)},r.a.createElement(c.a,{primary:r.a.createElement(s.a,null,e.member.name)}),t?r.a.createElement(f.a,{color:"primary"}):r.a.createElement(d.a,{color:"primary"})),r.a.createElement(m.a,{in:t,unmountOnExit:!0},r.a.createElement(o.a,{sx:{mx:4}},r.a.createElement(i.a,{member:e.member}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(956),o=a(958),s=a(959),l=a(52);function c(e){const t=Object(n.useState)(!1)[1];return r.a.createElement(l.a,{container:!0},r.a.createElement(l.a,{item:!0,xs:4},r.a.createElement(i.a,{onAscend:()=>t(e=>!e),member:e.member})),r.a.createElement(l.a,{item:!0,xs:4},r.a.createElement(o.a,{onTaskChange:()=>t(e=>!e),member:e.member})),r.a.createElement(l.a,{item:!0,xs:4},r.a.createElement(s.a,{member:e.member})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(22),o=a(4),s=a(957),l=a(1),c=a(28),u=a(10),m=a(420),h=a(101),d=a(276),p=a.n(d);function f(e){const[t,a]=Object(n.useState)(!1),[d,f]=Object(n.useState)(!1),g={hack:e.member.calculateAscensionMult(e.member.hack_asc_points),str:e.member.calculateAscensionMult(e.member.str_asc_points),def:e.member.calculateAscensionMult(e.member.def_asc_points),dex:e.member.calculateAscensionMult(e.member.dex_asc_points),agi:e.member.calculateAscensionMult(e.member.agi_asc_points),cha:e.member.calculateAscensionMult(e.member.cha_asc_points)};return r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{title:r.a.createElement(l.a,null,"Hk: x",o.a.formatMultiplier(e.member.hack_mult*g.hack),"(x",o.a.formatMultiplier(e.member.hack_mult)," Eq, x",o.a.formatMultiplier(g.hack)," ","Asc)",r.a.createElement("br",null),"St: x",o.a.formatMultiplier(e.member.str_mult*g.str),"(x",o.a.formatMultiplier(e.member.str_mult)," Eq, x",o.a.formatMultiplier(g.str)," ","Asc)",r.a.createElement("br",null),"Df: x",o.a.formatMultiplier(e.member.def_mult*g.def),"(x",o.a.formatMultiplier(e.member.def_mult)," Eq, x",o.a.formatMultiplier(g.def)," ","Asc)",r.a.createElement("br",null),"Dx: x",o.a.formatMultiplier(e.member.dex_mult*g.dex),"(x",o.a.formatMultiplier(e.member.dex_mult)," Eq, x",o.a.formatMultiplier(g.dex)," ","Asc)",r.a.createElement("br",null),"Ag: x",o.a.formatMultiplier(e.member.agi_mult*g.agi),"(x",o.a.formatMultiplier(e.member.agi_mult)," Eq, x",o.a.formatMultiplier(g.agi)," ","Asc)",r.a.createElement("br",null),"Ch: x",o.a.formatMultiplier(e.member.cha_mult*g.cha),"(x",o.a.formatMultiplier(e.member.cha_mult)," Eq, x",o.a.formatMultiplier(g.cha)," ","Asc)")},r.a.createElement(l.a,null,"Hacking: ",Object(i.c)(e.member.hack,0)," (",o.a.formatExp(e.member.hack_exp)," exp)",r.a.createElement("br",null),"Strength: ",Object(i.c)(e.member.str,0)," (",o.a.formatExp(e.member.str_exp)," exp)",r.a.createElement("br",null),"Defense: ",Object(i.c)(e.member.def,0)," (",o.a.formatExp(e.member.def_exp)," exp)",r.a.createElement("br",null),"Dexterity: ",Object(i.c)(e.member.dex,0)," (",o.a.formatExp(e.member.dex_exp)," exp)",r.a.createElement("br",null),"Agility: ",Object(i.c)(e.member.agi,0)," (",o.a.formatExp(e.member.agi_exp)," exp)",r.a.createElement("br",null),"Charisma: ",Object(i.c)(e.member.cha,0)," (",o.a.formatExp(e.member.cha_exp)," exp)",r.a.createElement("br",null))),r.a.createElement("br",null),e.member.canAscend()&&r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{onClick:()=>f(!0)},"Ascend"),r.a.createElement(s.a,{open:d,onClose:()=>f(!1),member:e.member,onAscend:e.onAscend}),r.a.createElement(h.a,{onClick:()=>a(!0)},r.a.createElement(p.a,null)),r.a.createElement(m.a,{open:t,onClose:()=>a(!1)},r.a.createElement(l.a,null,"Ascending a Gang Member resets the member's progress and stats in exchange for a permanent boost to their stat multipliers.",r.a.createElement("br",null),r.a.createElement("br",null),"The additional stat multiplier that the Gang Member gains upon ascension is based on the amount of exp they have.",r.a.createElement("br",null),r.a.createElement("br",null),"Upon ascension, the member will lose all of its non-Augmentation Equipment and your gang will lose respect equal to the total respect earned by the member."))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(4),o=a(15),s=a(40),l=a(138),c=a(1),u=a(10);function m(e){const t=Object(l.b)(),a=Object(n.useState)(!1)[1];Object(n.useEffect)(()=>{const e=setInterval(()=>a(e=>!e),1e3);return()=>clearInterval(e)},[]);const m=e.member.getCurrentAscensionMults(),h=e.member.getAscensionMultsAfterAscend();return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"Are you sure you want to ascend this member? They will lose all of",r.a.createElement("br",null),"their non-Augmentation upgrades and their stats will reset back to 1.",r.a.createElement("br",null),r.a.createElement("br",null),"Furthermore, your gang will lose ",i.a.formatRespect(e.member.earnedRespect)," respect",r.a.createElement("br",null),r.a.createElement("br",null),"In return, they will gain the following permanent boost to stat multipliers:",r.a.createElement("br",null),"Hacking: x",i.a.format(m.hack,"0.000")," => x",i.a.format(h.hack,"0.000"),r.a.createElement("br",null),"Strength: x",i.a.format(m.str,"0.000")," => x",i.a.format(h.str,"0.000"),r.a.createElement("br",null),"Defense: x",i.a.format(m.def,"0.000")," => x",i.a.format(h.def,"0.000"),r.a.createElement("br",null),"Dexterity: x",i.a.format(m.dex,"0.000")," => x",i.a.format(h.dex,"0.000"),r.a.createElement("br",null),"Agility: x",i.a.format(m.agi,"0.000")," => x",i.a.format(h.agi,"0.000"),r.a.createElement("br",null),"Charisma: x",i.a.format(m.cha,"0.000")," => x",i.a.format(h.cha,"0.000"),r.a.createElement("br",null)),r.a.createElement(u.a,{onClick:function(){e.onAscend();const a=t.ascendMember(e.member);Object(o.a)(r.a.createElement(c.a,null,"You ascended ",e.member.name,"!",r.a.createElement("br",null),r.a.createElement("br",null),"Your gang lost ",i.a.formatRespect(a.respect)," respect.",r.a.createElement("br",null),r.a.createElement("br",null),e.member.name," gained the following stat multipliers for ascending:",r.a.createElement("br",null),"Hacking: x",i.a.format(a.hack,"0.000"),r.a.createElement("br",null),"Strength: x",i.a.format(a.str,"0.000"),r.a.createElement("br",null),"Defense: x",i.a.format(a.def,"0.000"),r.a.createElement("br",null),"Dexterity: x",i.a.format(a.dex,"0.000"),r.a.createElement("br",null),"Agility: x",i.a.format(a.agi,"0.000"),r.a.createElement("br",null),"Charisma: x",i.a.format(a.cha,"0.000"),r.a.createElement("br",null))),e.onClose()}},"Ascend"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(4),o=a(131),s=a(102),l=a(138),c=a(72),u=a(117);function m(e){const t=Object(l.b)(),[a,m]=Object(n.useState)(e.member.task);const h=t.getAllTaskNames(),d=[["Money:",r.a.createElement(s.a,{money:5*e.member.calculateMoneyGain(t)})],["Respect:",i.a.formatRespect(5*e.member.calculateRespectGain(t))+" / sec"],["Wanted Level:",i.a.formatWanted(5*e.member.calculateWantedLevelGain(t))+" / sec"],["Total Respect:",""+i.a.formatRespect(e.member.earnedRespect)]];return r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{onChange:function(t){const a=t.target.value;e.member.assignToTask(a),m(a),e.onTaskChange()},value:a},r.a.createElement(c.a,{key:0,value:"Unassigned"},"Unassigned"),h.map((e,t)=>r.a.createElement(c.a,{key:t+1,value:e},e))),r.a.createElement(o.a,{rows:d}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(230),o=a(1);function s(e){const t=i.a[e.member.task],a=t?t.desc:i.a.Unassigned.desc;return r.a.createElement(o.a,{dangerouslySetInnerHTML:{__html:a}})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(961),o=a(302),s=a(22),l=a(138),c=a(1),u=a(10),m=a(25);function h(e){const t=Object(l.b)(),[a,h]=Object(n.useState)(!1);if(t.members.length>=o.a.MaximumGangMembers)return r.a.createElement(r.a.Fragment,null);if(!t.canRecruitMember()){const e=t.getRespectNeededToRecruitMember();return r.a.createElement(m.a,{display:"flex",alignItems:"center"},r.a.createElement(u.a,{sx:{mx:1},disabled:!0},"Recruit Gang Member"),r.a.createElement(c.a,null,Object(s.c)(e,2)," respect needed to recruit next member"))}return r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{onClick:()=>h(!0)},"Recruit Gang Member"),r.a.createElement(i.a,{open:a,onClose:()=>h(!1),onRecruit:e.onRecruit}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(40),o=a(15),s=a(138),l=a(1),c=a(85),u=a(10);function m(e){const t=Object(s.b)(),[a,m]=Object(n.useState)(""),h=""===a||!t.canRecruitMember();function d(){h||(t.recruitMember(a)?(e.onRecruit(),e.onClose()):Object(o.a)("You already have a gang member with this name!"))}return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,null,"Enter a name for your new Gang member:"),r.a.createElement("br",null),r.a.createElement(c.a,{autoFocus:!0,onKeyUp:function(e){13===e.keyCode&&d()},onChange:function(e){m(e.target.value)},type:"text",placeholder:"unique name",InputProps:{endAdornment:r.a.createElement(u.a,{disabled:h,onClick:d},"Recruit")}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(4),o=a(22),s=a(68),l=a(138),c=a(1),u=a(311),m=a(261),h=a(28),d=a(25),p=a(75);function f(){const e=Object(l.b)(),t=Object.keys(s.a).filter(t=>t!=e.facName);return r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,null,"This page shows how much territory your Gang controls. This statistic is listed as a percentage, which represents how much of the total territory you control.",r.a.createElement("br",null),r.a.createElement("br",null),"Every ~20 seconds, your gang has a chance to 'clash' with other gangs. Your chance to win a clash depends on your gang's power, which is listed in the display below. Your gang's power slowly accumulates over time. The accumulation rate is determined by the stats of all Gang members you have assigned to the 'Territory Warfare' task. Gang members that are not assigned to this task do not contribute to your gang's power. Your gang also loses a small amount of power whenever you lose a clash.",r.a.createElement("br",null),r.a.createElement("br",null),"NOTE: Gang members assigned to 'Territory Warfare' can be killed during clashes. This can happen regardless of whether you win or lose the clash. A gang member being killed results in both respect and power loss for your gang.",r.a.createElement("br",null),r.a.createElement("br",null),"The amount of territory you have affects all aspects of your Gang members' production, including money, respect, and wanted level. It is very beneficial to have high territory control.",r.a.createElement("br",null),r.a.createElement("br",null),'To increase your chances of winning territory assign gang members to "Territory Warfare", this will build your gang power. Then enable "Engage in Territory Warfare" to start fighting over territory.'),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.territoryWarfareEngaged,onChange:t=>e.territoryWarfareEngaged=t.target.checked}),label:r.a.createElement(h.a,{title:r.a.createElement(c.a,null,"Engaging in Territory Warfare sets your clash chance to 100%. Disengaging will cause your clash chance to gradually decrease until it reaches 0%.")},r.a.createElement(c.a,null,"Engage in Territory Warfare"))}),r.a.createElement("br",null),r.a.createElement(d.a,{display:"flex"},r.a.createElement(h.a,{title:r.a.createElement(c.a,null,"This percentage represents the chance you have of 'clashing' with with another gang. If you do not wish to gain/lose territory, then keep this percentage at 0% by not engaging in territory warfare.")},r.a.createElement(c.a,null,"Territory Clash Chance: ",i.a.formatPercentage(e.territoryClashChance,3)))),r.a.createElement("br",null),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.notifyMemberDeath,onChange:t=>e.notifyMemberDeath=t.target.checked}),label:r.a.createElement(h.a,{title:r.a.createElement(c.a,null,"If this is enabled, then you will receive a pop-up notifying you whenever one of your Gang Members dies in a territory clash.")},r.a.createElement(c.a,null,"Notify about Gang Member Deaths"))}),r.a.createElement("br",null),r.a.createElement(p.a,null,r.a.createElement(c.a,null,r.a.createElement("b",null,r.a.createElement("u",null,e.facName)),r.a.createElement("br",null),"Power: ",Object(o.c)(s.a[e.facName].power,6),r.a.createElement("br",null),"Territory: ",g(s.a[e.facName].territory),"%",r.a.createElement("br",null),r.a.createElement("br",null)),t.map(e=>r.a.createElement(y,{key:e,name:e}))))}function g(e){const t=100*e;return t<=0?Object(o.c)(0,2):t>=100?Object(o.c)(100,2):Object(o.c)(t,2)}function y(e){const t=Object(l.b)(),a=s.a[t.facName].power,n=s.a[e.name].power,u=a/(n+a);return r.a.createElement(c.a,null,r.a.createElement("u",null,e.name),r.a.createElement("br",null),"Power: ",Object(o.c)(n,6),r.a.createElement("br",null),"Territory: ",g(s.a[e.name].territory),"%",r.a.createElement("br",null),"Chance to win clash with this gang: ",i.a.formatPercentage(u,3),r.a.createElement("br",null),r.a.createElement("br",null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(22),o=a(4),s=a(211),l=a(16),c=a(138),u=a(165),m=a(29),h=a(1),d=a(10),p=a(28),f=a(25),g=a(75);function y(e){const t=Object(c.b)(),a=m.b.Player(),n=Object.keys(s.a).filter(n=>{const r=s.a[n];return!(a.money>t.getUpgradeCost(r))&&(r.type===e.type&&!e.upgrades.includes(n))}).map(e=>s.a[e]);return 0===n.length?r.a.createElement(r.a.Fragment,null):r.a.createElement(h.a,null,"Next at ",r.a.createElement(l.a,{money:n[0].cost}))}function b({upgName:e}){const t=s.a[e];return r.a.createElement(g.a,{sx:{mx:1,p:1}},r.a.createElement(f.a,{display:"flex"},r.a.createElement(p.a,{title:r.a.createElement(h.a,{dangerouslySetInnerHTML:{__html:t.desc}})},r.a.createElement(h.a,null,t.name))))}function E(e){const t=Object(c.b)(),a=m.b.Player();return r.a.createElement(p.a,{title:r.a.createElement(h.a,{dangerouslySetInnerHTML:{__html:e.upg.desc}})},r.a.createElement("span",null,r.a.createElement(h.a,null,e.upg.name),r.a.createElement(d.a,{onClick:function(){e.member.buyUpgrade(e.upg,a,t),e.rerender()}},r.a.createElement(l.a,{money:t.getUpgradeCost(e.upg)}))))}function k(e){const t=Object(c.b)(),a=m.b.Player(),o=Object(n.useState)(!1)[1];function l(){o(e=>!e)}function d(e,n){return Object.keys(s.a).filter(r=>{const i=s.a[r];return!(a.money<t.getUpgradeCost(i))&&(i.type===n&&!e.includes(r))}).map(e=>s.a[e])}const p=d(e.member.upgrades,u.a.Weapon),k=d(e.member.upgrades,u.a.Armor),v=d(e.member.upgrades,u.a.Vehicle),_=d(e.member.upgrades,u.a.Rootkit),w=d(e.member.augmentations,u.a.Augmentation),S=e.member.calculateAscensionMult(e.member.hack_asc_points),C=e.member.calculateAscensionMult(e.member.str_asc_points),x=e.member.calculateAscensionMult(e.member.def_asc_points),O=e.member.calculateAscensionMult(e.member.dex_asc_points),M=e.member.calculateAscensionMult(e.member.agi_asc_points),T=e.member.calculateAscensionMult(e.member.cha_asc_points);return r.a.createElement(g.a,null,r.a.createElement(h.a,{variant:"h5",color:"primary"},e.member.name," (",e.member.task,")"),r.a.createElement(h.a,null,"Hack: ",e.member.hack," (x",Object(i.c)(e.member.hack_mult*S,2),")",r.a.createElement("br",null),"Str: ",e.member.str," (x",Object(i.c)(e.member.str_mult*C,2),")",r.a.createElement("br",null),"Def: ",e.member.def," (x",Object(i.c)(e.member.def_mult*x,2),")",r.a.createElement("br",null),"Dex: ",e.member.dex," (x",Object(i.c)(e.member.dex_mult*O,2),")",r.a.createElement("br",null),"Agi: ",e.member.agi," (x",Object(i.c)(e.member.agi_mult*M,2),")",r.a.createElement("br",null),"Cha: ",e.member.cha," (x",Object(i.c)(e.member.cha_mult*T,2),")"),r.a.createElement(f.a,{display:"flex",flexWrap:"wrap"},r.a.createElement(h.a,null,"Purchased Upgrades: "),r.a.createElement("br",null),e.member.upgrades.map(e=>r.a.createElement(b,{key:e,upgName:e})),e.member.augmentations.map(e=>r.a.createElement(b,{key:e,upgName:e}))),r.a.createElement(f.a,{display:"flex",justifyContent:"space-around"},r.a.createElement(f.a,null,r.a.createElement(h.a,{variant:"h6",color:"primary"},"Weapons"),p.map(t=>r.a.createElement(E,{key:t.name,rerender:l,member:e.member,upg:t})),r.a.createElement(y,{type:u.a.Weapon,upgrades:e.member.upgrades})),r.a.createElement(f.a,null,r.a.createElement(h.a,{variant:"h6",color:"primary"},"Armor"),k.map(t=>r.a.createElement(E,{key:t.name,rerender:l,member:e.member,upg:t})),r.a.createElement(y,{type:u.a.Armor,upgrades:e.member.upgrades})),r.a.createElement(f.a,null,r.a.createElement(h.a,{variant:"h6",color:"primary"},"Vehicles"),v.map(t=>r.a.createElement(E,{key:t.name,rerender:l,member:e.member,upg:t})),r.a.createElement(y,{type:u.a.Vehicle,upgrades:e.member.upgrades})),r.a.createElement(f.a,null,r.a.createElement(h.a,{variant:"h6",color:"primary"},"Rootkits"),_.map(t=>r.a.createElement(E,{key:t.name,rerender:l,member:e.member,upg:t})),r.a.createElement(y,{type:u.a.Rootkit,upgrades:e.member.upgrades})),r.a.createElement(f.a,null,r.a.createElement(h.a,{variant:"h6",color:"primary"},"Augmentations"),w.map(t=>r.a.createElement(E,{key:t.name,rerender:l,member:e.member,upg:t})),r.a.createElement(y,{type:u.a.Augmentation,upgrades:e.member.upgrades}))))}function v(){const e=Object(c.b)();return r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:r.a.createElement(h.a,null,"You get a discount on equipment and upgrades based on your gang's respect and power. More respect and power leads to more discounts.")},r.a.createElement(h.a,null,"Discount: -",o.a.formatPercentage(1-1/e.getDiscount()))),e.members.map(e=>r.a.createElement(k,{key:e.name,member:e})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(965),o=a(51),s=a(989),l=a(29),c=a(45),u=a(990),m=a(496),h=a(238);function d(){const e=l.b.Player().corporation;if(null===e)return r.a.createElement(r.a.Fragment,null);const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}const[d,p]=Object(n.useState)("Overview");Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]);const f=Object.keys(o.a).filter(t=>void 0===e.divisions.find(e=>e.type===t)).length>0;return r.a.createElement(c.a.Corporation.Provider,{value:e},r.a.createElement(m.a,{variant:"fullWidth",value:d,onChange:function(e,t){p(t)}},r.a.createElement(h.a,{label:e.name,value:"Overview"}),e.divisions.map(e=>r.a.createElement(h.a,{key:e.name,label:e.name,value:e.name})),f&&r.a.createElement(h.a,{label:"Expand",value:-1})),"Overview"===d&&r.a.createElement(u.a,{rerender:a}),-1===d&&r.a.createElement(s.a,{setDivisionName:p}),"string"==typeof d&&"Overview"!==d&&r.a.createElement(i.a,{rerender:a,divisionName:d+""}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(966),o=a(45),s=a(23);function l(e){const t=Object(o.b)(),a="Overview"!==e.divisionName?t.divisions.find(t=>t.name===e.divisionName):void 0;if(void 0===a)throw new Error("Cannot find division");return r.a.createElement(o.a.Division.Provider,{value:a},r.a.createElement(i.a,{rerender:e.rerender,city:s.a.Sector12}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(967),o=a(988),s=a(45),l=a(496),c=a(238);function u(e){const t=Object(s.c)(),[a,u]=Object(n.useState)(e.city),m=t.offices[a];if(0===m)return u("Sector-12"),r.a.createElement(r.a.Fragment,null);const h=Object.keys(t.offices).filter(e=>0===t.offices[e]).length>0;return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"fullWidth",value:a,onChange:function(e,t){u(t)}},Object.values(t.offices).map(e=>0!==e&&r.a.createElement(c.a,{key:e.loc,label:e.loc,value:e.loc})),h&&r.a.createElement(c.a,{label:"Expand",value:"Expand"})),"Expand"!==a?r.a.createElement(i.a,{key:a,rerender:e.rerender,city:a,warehouse:t.warehouses[a],office:m}):r.a.createElement(o.a,{cityStateSetter:u}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(968),o=a(971),s=a(974),l=a(29),c=a(45),u=a(25);function m(e){const t=l.b.Player(),a=Object(c.b)(),n=Object(c.c)();return r.a.createElement(u.a,{display:"flex"},r.a.createElement(u.a,{sx:{width:"50%"}},r.a.createElement(o.a,{rerender:e.rerender,currentCity:e.city,office:e.office}),r.a.createElement(i.a,{rerender:e.rerender,office:e.office})),r.a.createElement(u.a,{sx:{width:"50%"}},r.a.createElement(s.a,{rerender:e.rerender,player:t,corp:a,currentCity:e.city,division:n,warehouse:e.warehouse})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return A}));var n=a(0),r=a.n(n),i=a(53),o=a(4),s=a(969),l=a(970),c=a(16),u=a(45),m=a(1),h=a(10),d=a(101),p=a(75),f=a(553),g=a.n(f),y=a(554),b=a.n(y),E=a(28),k=a(72),v=a(117),_=a(249),w=a(174),S=a(54),C=a(41);function x(e,t){let a=0;for(let n=0;n<e.length;++n)e[n].pos===t&&a++;return a}function O(e){return e.manualMode?r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"Switch to Automatic Assignment Mode, which will automatically assign employees to your selected jobs. You simply have to select the number of assignments for each job")},r.a.createElement(h.a,{onClick:()=>e.switchMode(e=>!e)},"Switch to Auto Mode")):r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"Switch to Manual Assignment Mode, which allows you to specify which employees should get which jobs")},r.a.createElement(h.a,{onClick:()=>e.switchMode(e=>!e)},"Switch to Manual Mode"))}function M(e){const t=Object(u.b)(),a=Object(u.c)(),[s,l]=Object(n.useState)(e.office.employees.length>0?e.office.employees[0]:null),h=[];for(let t=0;t<e.office.employees.length;++t)h.push(r.a.createElement(k.a,{key:e.office.employees[t].name,value:e.office.employees[t].name},e.office.employees[t].name));const d=s;let p="";const f=[],g=Object.values(i.a);for(let e=0;e<g.length;++e)f.push(r.a.createElement(k.a,{key:g[e],value:g[e]},g[e])),null!=d&&d.pos===g[e]&&(p=g[e]);const y="0.000",b=d?d.cre*t.getEmployeeCreMultiplier()*a.getEmployeeCreMultiplier():0,E=d?d.cha*t.getEmployeeChaMultiplier()*a.getEmployeeChaMultiplier():0,_=d?d.int*t.getEmployeeIntMultiplier()*a.getEmployeeIntMultiplier():0,w=d?d.eff*t.getEmployeeEffMultiplier()*a.getEmployeeEffMultiplier():0;return r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(v.a,{value:null!==s?s.name:"",onChange:function(t){const a=t.target.value;for(let t=0;t<e.office.employees.length;++t)if(a===e.office.employees[t].name){l(e.office.employees[t]);break}e.rerender()}},h),null!=s&&r.a.createElement(m.a,null,"Morale: ",o.a.format(s.mor,y),r.a.createElement("br",null),"Happiness: ",o.a.format(s.hap,y),r.a.createElement("br",null),"Energy: ",o.a.format(s.ene,y),r.a.createElement("br",null),"Intelligence: ",o.a.format(_,y),r.a.createElement("br",null),"Charisma: ",o.a.format(E,y),r.a.createElement("br",null),"Experience: ",o.a.format(s.exp,y),r.a.createElement("br",null),"Creativity: ",o.a.format(b,y),r.a.createElement("br",null),"Efficiency: ",o.a.format(w,y),r.a.createElement("br",null),"Salary: ",r.a.createElement(c.a,{money:s.sal})),null!=s&&r.a.createElement(v.a,{onChange:function(t){null!==s&&(s.pos=t.target.value,e.rerender())},value:p},f))}function T(e){const t=Object(u.b)(),a=Object(u.c)(),n=x(e.office.employees,e.job),o=x(e.office.employees,i.a.Unassigned);return r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(E.a,{title:e.desc},r.a.createElement(m.a,null,e.job," (",n,")"))),r.a.createElement(C.b,null,r.a.createElement(d.a,{disabled:0===o,onClick:function(){o<=0?console.warn("Cannot assign employee. No unassigned employees available"):(e.office.assignEmployeeToJob(e.job),e.office.calculateEmployeeProductivity(t,a),e.rerender())}},r.a.createElement(g.a,null)),r.a.createElement(d.a,{disabled:0===n,onClick:function(){e.office.unassignEmployeeFromJob(e.job),e.office.calculateEmployeeProductivity(t,a),e.rerender()}},r.a.createElement(b.a,null))))}function R(e){const t=Object(u.b)(),a=Object(u.c)(),n=x(e.office.employees,i.a.Unassigned),s=1===t.unlockUpgrades[4];let l=0,h=0,d=0,p=0;for(let t=0;t<e.office.employees.length;++t)l+=e.office.employees[t].mor,h+=e.office.employees[t].hap,d+=e.office.employees[t].ene,p+=e.office.employees[t].sal;let f=0,g=0,y=0;return e.office.employees.length>0&&(f=l/e.office.employees.length,g=h/e.office.employees.length,y=d/e.office.employees.length),r.a.createElement(r.a.Fragment,null,r.a.createElement(_.a,{padding:"none"},r.a.createElement(w.a,null,r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(m.a,null,"Unassigned Employees:")),r.a.createElement(C.b,null,r.a.createElement(m.a,null,n))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(m.a,null,"Avg Employee Morale:")),r.a.createElement(C.b,null,r.a.createElement(m.a,null,o.a.format(f,"0.000")))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(m.a,null,"Avg Employee Happiness:")),r.a.createElement(C.b,null,r.a.createElement(m.a,null,o.a.format(g,"0.000")))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(m.a,null,"Avg Employee Energy:")),r.a.createElement(C.b,null,r.a.createElement(m.a,null,o.a.format(y,"0.000")))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(m.a,null,"Total Employee Salary:")),r.a.createElement(C.b,null,r.a.createElement(m.a,null,r.a.createElement(c.a,{money:p})))),s&&r.a.createElement(r.a.Fragment,null,r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"The base amount of material this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},r.a.createElement(m.a,null,"Material Production:"))),r.a.createElement(C.b,null,r.a.createElement(m.a,null,o.a.format(a.getOfficeProductivity(e.office),"0.000")))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"The base amount of any given Product this office can produce. Does not include production multipliers from upgrades and materials. This value is based off the productivity of your Operations, Engineering, and Management employees")},r.a.createElement(m.a,null,"Product Production:"))),r.a.createElement(C.b,null,r.a.createElement(m.a,null,o.a.format(a.getOfficeProductivity(e.office,{forProduct:!0}),"0.000")))),r.a.createElement(S.a,null,r.a.createElement(C.b,null,r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"The effect this office's 'Business' employees has on boosting sales")},r.a.createElement(m.a,null," Business Multiplier:"))),r.a.createElement(C.b,null,r.a.createElement(m.a,null,"x",o.a.format(a.getBusinessFactor(e.office),"0.000"))))))),r.a.createElement(_.a,{padding:"none"},r.a.createElement(w.a,null,r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.Operations,desc:"Manages supply chain operations. Improves the amount of Materials and Products you produce."}),r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.Engineer,desc:"Develops and maintains products and production systems. Increases the quality of everything you produce. Also increases the amount you produce (not as much as Operations, however)"}),r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.Business,desc:"Handles sales and finances. Improves the amount of Materials and Products you can sell."}),r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.Management,desc:"Leads and oversees employees and office operations. Improves the effectiveness of Engineer and Operations employees."}),r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.RandD,desc:"Research new innovative ways to improve the company. Generates Scientific Research."}),r.a.createElement(T,{rerender:e.rerender,office:e.office,job:i.a.Training,desc:"Set employee to training, which will increase some of their stats. Employees in training do not affect any company operations."}))))}function A(e){const t=Object(u.b)(),a=Object(u.c)(),[i,o]=Object(n.useState)(!1),[c,d]=Object(n.useState)(!1),[f,g]=Object(n.useState)(!1);return r.a.createElement(p.a,null,r.a.createElement(m.a,null,"Office Space"),r.a.createElement(m.a,null,"Size: ",e.office.employees.length," / ",e.office.size," employees"),r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"Automatically hires an employee and gives him/her a random name")},r.a.createElement("span",null,r.a.createElement(h.a,{disabled:e.office.atCapacity(),onClick:function(){e.office.atCapacity()||(e.office.hireRandomEmployee(),e.rerender())}},"Hire Employee"))),r.a.createElement("br",null),r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"Upgrade the office's size so that it can hold more employees!")},r.a.createElement("span",null,r.a.createElement(h.a,{disabled:t.funds<0,onClick:()=>o(!0)},"Upgrade size"))),r.a.createElement(s.a,{rerender:e.rerender,office:e.office,open:i,onClose:()=>o(!1)}),!a.hasResearch("AutoPartyManager")&&r.a.createElement(r.a.Fragment,null,r.a.createElement(E.a,{title:r.a.createElement(m.a,null,"Throw an office party to increase your employee's morale and happiness")},r.a.createElement("span",null,r.a.createElement(h.a,{disabled:t.funds<0,onClick:()=>d(!0)},"Throw Party"))),r.a.createElement(l.a,{rerender:e.rerender,office:e.office,open:c,onClose:()=>d(!1)})),r.a.createElement("br",null),r.a.createElement(O,{manualMode:f,switchMode:g}),f?r.a.createElement(M,{rerender:e.rerender,office:e.office}):r.a.createElement(R,{rerender:e.rerender,office:e.office}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(4),o=a(42),s=a(73),l=a(40),c=a(45),u=a(1),m=a(10),h=a(28),d=a(25);function p(e){const t=Object(c.b)();return r.a.createElement(h.a,{title:i.a.formatMoney(e.cost)},r.a.createElement("span",null,r.a.createElement(m.a,{disabled:t.funds<e.cost,onClick:()=>{return a=e.cost,n=e.size,void(t.funds<a||(Object(s.y)(t,e.office,n),e.rerender(),e.onClose()));var a,n}},"+",e.size)))}function f(e){const t=Object(c.b)(),a=Math.round(e.office.size/o.a.OfficeInitialSize),n=o.a.OfficeInitialCost*Math.pow(1.09,a);let i=0;for(let e=0;e<5;++e)i+=Math.pow(1.09,a+e);const s=o.a.OfficeInitialCost*i,m=t.funds/o.a.OfficeInitialCost;let h=1;for(i=Math.pow(1.09,a);h<50&&!(i>=m);){const e=Math.pow(1.09,a+h);if(i+e>m)break;i+=e,++h}const f=o.a.OfficeInitialCost*i;return r.a.createElement(l.a,{open:e.open,onClose:e.onClose},r.a.createElement(u.a,null,"Increase the size of your office space to fit additional employees!"),r.a.createElement(d.a,{display:"flex",alignItems:"center"},r.a.createElement(u.a,null,"Upgrade size: "),r.a.createElement(p,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:n,size:o.a.OfficeInitialSize}),r.a.createElement(p,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:s,size:5*o.a.OfficeInitialSize}),r.a.createElement(p,{onClose:e.onClose,rerender:e.rerender,office:e.office,corp:t,cost:f,size:h*o.a.OfficeInitialSize})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(4),o=a(15),s=a(73),l=a(16),c=a(40),u=a(45),m=a(1),h=a(10),d=a(85),p=a(25);function f(e){const t=Object(u.b)(),[a,f]=Object(n.useState)(0),g=a*e.office.employees.length,y=t.funds>=g;function b(){if(null===a||isNaN(a)||a<0)Object(o.a)("Invalid value entered");else if(y){const n=Object(s.w)(t,e.office,a);Object(o.a)("You threw a party for the office! The morale and happiness of each employee increased by "+i.a.formatPercentage(n-1)),e.rerender(),e.onClose()}else Object(o.a)("You don't have enough company funds to throw a party!")}function E(){return isNaN(a)||a<0?r.a.createElement(m.a,null,"Invalid value entered!"):r.a.createElement(m.a,null,"Throwing this party will cost a total of ",r.a.createElement(l.a,{money:g}))}return r.a.createElement(c.a,{open:e.open,onClose:e.onClose},r.a.createElement(m.a,null,"Enter the amount of money you would like to spend PER EMPLOYEE on this office party"),r.a.createElement(E,null),r.a.createElement(p.a,{display:"flex",alignItems:"center"},r.a.createElement(d.a,{autoFocus:!0,type:"number",placeholder:"$ / employee",value:a,onChange:function(e){let t=parseFloat(e.target.value);isNaN(t)&&(t=0),f(t)},onKeyDown:function(e){13===e.keyCode&&b()}}),r.a.createElement(h.a,{disabled:!y,onClick:b},"Throw Party")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return M}));var n=a(0),r=a.n(n),i=a(51),o=a(349),s=a(4),l=a(175),c=a(972),u=a(973),m=a(16),h=a(102),d=a(131),p=a(420),f=a(129),g=a(45),y=a(1),b=a(10),E=a(28),k=a(75),v=a(101),_=a(276),w=a.n(_),S=a(25);function C(){const e=Object(g.b)(),t=Object(g.c)(),[a,o]=Object(n.useState)(!1),s=t.hasMaximumNumberProducts();let l="";switch(t.type){case i.a.Food:l="Build Restaurant";break;case i.a.Tobacco:l="Create Product";break;case i.a.Pharmaceutical:l="Create Drug";break;case i.a.Computer:case"Computer":l="Create Product";break;case i.a.Robotics:l="Design Robot";break;case i.a.Software:l="Develop Software";break;case i.a.Healthcare:l="Build Hospital";break;case i.a.RealEstate:l="Develop Property";break;default:return l="Create Product",r.a.createElement(r.a.Fragment,null)}return r.a.createElement(r.a.Fragment,null,r.a.createElement(E.a,{title:s?r.a.createElement(y.a,null,"You have reached the maximum number of products: ",t.getMaximumNumberProducts()):""},r.a.createElement(b.a,{color:0===Object.keys(t.products).length?"error":"primary",onClick:()=>o(!0),disabled:e.funds<0},l)),r.a.createElement(c.a,{open:a,onClose:()=>o(!1)}))}function x(){const e=Object(g.b)(),t=Object(g.c)(),[a,i]=Object(n.useState)(!1),[o,c]=Object(n.useState)(!1),f=1===e.unlockUpgrades[4],k=t.lastCycleRevenue-t.lastCycleExpenses;let _=!1;const C=t.getAdvertisingFactors(),x=C[1],O=C[2],M=C[3],T=C[0];function R(e){return Object(l.a)({progress:e,totalTicks:20})}return f&&(_=!0),r.a.createElement(r.a.Fragment,null,r.a.createElement(y.a,null,"Industry: ",t.type," (Corp Funds: ",r.a.createElement(m.a,{money:e.funds}),")"),r.a.createElement("br",null),r.a.createElement(d.a,{rows:[["Awareness:",s.a.format(t.awareness,"0.000")],["Popularity:",s.a.format(t.popularity,"0.000")]]}),!1!==_&&r.a.createElement(E.a,{title:r.a.createElement(r.a.Fragment,null,r.a.createElement(y.a,null,"Total multiplier for this industrys sales due to its awareness and popularity"),r.a.createElement(d.a,{rows:[["Awareness Bonus:","x"+s.a.format(Math.pow(x,.85),"0.000")],["Popularity Bonus:","x"+s.a.format(Math.pow(O,.85),"0.000")],["Ratio Multiplier:","x"+s.a.format(Math.pow(M,.85),"0.000")]]}))},r.a.createElement(y.a,null,"Advertising Multiplier: x",s.a.format(T,"0.000"))),r.a.createElement("br",null),r.a.createElement(d.a,{rows:[["Revenue:",r.a.createElement(h.a,{money:t.lastCycleRevenue})],["Expenses:",r.a.createElement(h.a,{money:t.lastCycleExpenses})],["Profit:",r.a.createElement(h.a,{money:k})]]}),r.a.createElement("br",null),r.a.createElement(S.a,{display:"flex",alignItems:"center"},r.a.createElement(E.a,{title:r.a.createElement(y.a,null,"Production gain from owning production-boosting materials such as hardware, Robots, AI Cores, and Real Estate.")},r.a.createElement(y.a,null,"Production Multiplier: ",s.a.format(t.prodMult,"0.00"))),r.a.createElement(v.a,{onClick:()=>i(!0)},r.a.createElement(w.a,null)),r.a.createElement(p.a,{open:a,onClose:()=>i(!1)},r.a.createElement(y.a,null,"Owning Hardware, Robots, AI Cores, and Real Estate can boost your Industry's production. The effect these materials have on your production varies between Industries. For example, Real Estate may be very effective for some Industries, but ineffective for others.",r.a.createElement("br",null),r.a.createElement("br",null),"This division's production multiplier is calculated by summing the individual production multiplier of each of its office locations. This production multiplier is applied to each office. Therefore, it is beneficial to expand into new cities as this can greatly increase the production multiplier of your entire Division.",r.a.createElement("br",null),r.a.createElement("br",null),"Below are approximations for how effective each material is at boosting this industry's production multiplier (Bigger bars = more effective):",r.a.createElement("br",null),r.a.createElement("br",null),"Hardware: ",R(t.hwFac),r.a.createElement("br",null),"Robots: ",R(t.robFac),r.a.createElement("br",null),"AI Cores: ",R(t.aiFac),r.a.createElement("br",null),"Real Estate: ",R(t.reFac)))),r.a.createElement(S.a,{display:"flex",alignItems:"center"},r.a.createElement(E.a,{title:r.a.createElement(y.a,null,"Scientific Research increases the quality of the materials and products that you produce.")},r.a.createElement(y.a,null,"Scientific Research: ",s.a.format(t.sciResearch.qty,"0.000a"))),r.a.createElement(b.a,{sx:{mx:1},onClick:()=>c(!0)},"Research"),r.a.createElement(u.a,{open:o,onClose:()=>c(!1),industry:t})))}function O(e){const t=Object(g.b)(),a=Object(g.c)(),n=[];for(const s in o.a){const l=o.a[s];if(a.hasResearch("AutoBrew")&&"Coffee"===l[4])continue;const c=l[0],u=l[1],m=l[2];let h=0;switch(c){case 0:h=e.office.employees.length*u;break;default:h=u*Math.pow(m,a.upgrades[c])}function i(){t.funds<h||(t.funds=t.funds-h,a.upgrade(l,{corporation:t,office:e.office}),e.rerender())}n.push(r.a.createElement(E.a,{key:s,title:l[5]},r.a.createElement("span",null,r.a.createElement(b.a,{disabled:t.funds<h,onClick:i},l[4]," - ",r.a.createElement(f.a,{money:h,corp:t})))))}return r.a.createElement(r.a.Fragment,null,n)}function M(e){const t=Object(g.c)();return r.a.createElement(k.a,null,r.a.createElement(x,null),r.a.createElement("br",null),r.a.createElement(y.a,null,"Purchases & Upgrades"),r.a.createElement(O,{office:e.office,rerender:e.rerender})," ",r.a.createElement("br",null),t.makesProducts&&r.a.createElement(C,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(15),o=a(40),s=a(51),l=a(73),c=a(45),u=a(1),m=a(85),h=a(10),d=a(72),p=a(117);function f(e){const t=Object(c.b)(),a=Object(c.c)(),f=Object.keys(a.offices).filter(e=>0!==a.offices[e]),[g,y]=Object(n.useState)(f.length>0?f[0]:""),[b,E]=Object(n.useState)(""),[k,v]=Object(n.useState)(null),[_,w]=Object(n.useState)(null);if(a.hasMaximumNumberProducts())return r.a.createElement(r.a.Fragment,null);let S=r.a.createElement(r.a.Fragment,null);switch(a.type){case s.a.Food:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Build and manage a new restaurant!");break;case s.a.Tobacco:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Create a new tobacco product!");break;case s.a.Pharmaceutical:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Design and develop a new pharmaceutical drug!");break;case s.a.Computer:case"Computer":S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Design and manufacture a new computer hardware product!");break;case s.a.Robotics:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Design and create a new robot or robotic system!");break;case s.a.Software:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Develop a new piece of software!");break;case s.a.Healthcare:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Build and manage a new hospital!");break;case s.a.RealEstate:S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Develop a new piece of real estate property!");break;default:return S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),"Create a new product!"),r.a.createElement(r.a.Fragment,null)}function C(){if(null!==k&&null!==_){try{Object(l.j)(t,a,g,b,k,_)}catch(e){Object(i.a)(e+"")}e.onClose()}}return S=r.a.createElement(r.a.Fragment,null,S,r.a.createElement("br",null),r.a.createElement("br",null),"To begin developing a product, first choose the city in which it will be designed. The stats of your employees in the selected city affect the properties of the finished product, such as its quality, performance, and durability.",r.a.createElement("br",null),r.a.createElement("br",null),"You can also choose to invest money in the design and marketing of the product. Investing money in its design will result in a superior product. Investing money in marketing the product will help the product's sales."),r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(u.a,null,S),r.a.createElement(p.a,{style:{margin:"5px"},onChange:function(e){y(e.target.value)},defaultValue:g},f.map(e=>r.a.createElement(d.a,{key:e,value:e},e))),r.a.createElement(m.a,{onChange:function(e){E(e.target.value)},placeholder:(x=a.type,x===s.a.Food?"Restaurant Name":x===s.a.Healthcare?"Hospital Name":x===s.a.RealEstate?"Property Name":"Product Name")}),r.a.createElement("br",null),r.a.createElement(m.a,{onChange:function(e){""===e.target.value?v(null):v(parseFloat(e.target.value))},autoFocus:!0,type:"number",placeholder:"Design investment"}),r.a.createElement(m.a,{onChange:function(e){""===e.target.value?w(null):w(parseFloat(e.target.value))},onKeyDown:function(e){13===e.keyCode&&C()},type:"number",placeholder:"Marketing investment"}),r.a.createElement(h.a,{onClick:C},"Develop Product"));var x}},function(e,t,a){"use strict";a.d(t,"a",(function(){return w}));var n=a(0),r=a.n(n),i=a(40),o=a(51),s=a(42),l=a(73),c=a(299),u=a(15),m=a(1),h=a(28),d=a(10),p=a(25),f=a(310),g=a(100),y=a(200),b=a(66),E=a.n(b),k=a(137),v=a.n(k);function _({n:e,division:t}){const[a,i]=Object(n.useState)(!1);if(null===e)return r.a.createElement(r.a.Fragment,null);const o=c.a[e.text];let b=t.sciResearch.qty<o.cost||e.researched;const k=e.parent;null!==k&&(b=b||!k.researched);let w="primary";e.researched&&(w="info");const S=r.a.createElement(p.a,null,r.a.createElement(h.a,{title:r.a.createElement(m.a,null,"Research points: ",o.cost,r.a.createElement("br",null),o.desc)},r.a.createElement("span",null,r.a.createElement(d.a,{color:w,disabled:b&&!e.researched,onClick:function(){if(null!==e&&!b){try{Object(l.n)(t,e.text)}catch(e){return void Object(u.a)(e+"")}Object(u.a)(`Researched ${e.text}. It may take a market cycle (~${s.a.SecsPerMarketCycle} seconds) before the effects of the Research apply.`)}}},e.text))));return 0===e.children.length?S:r.a.createElement(p.a,null,r.a.createElement(p.a,{display:"flex"},S,r.a.createElement(f.a,{onClick:()=>i(e=>!e)},r.a.createElement(g.a,null),a?r.a.createElement(v.a,{color:"primary"}):r.a.createElement(E.a,{color:"primary"}))),r.a.createElement(y.a,{in:a,unmountOnExit:!0},r.a.createElement(p.a,{m:4},e.children.map(e=>r.a.createElement(_,{key:e.text,division:t,n:e})))))}function w(e){const t=o.c[e.industry.type];return void 0===t?r.a.createElement(r.a.Fragment,null):r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(_,{division:e.industry,n:t.root}),r.a.createElement(m.a,null,"Research points: ",e.industry.sciResearch.qty.toFixed(3),r.a.createElement("br",null),"Multipliers from research:",r.a.createElement("br",null),"* Advertising Multiplier: x",t.getAdvertisingMultiplier(),r.a.createElement("br",null),"* Employee Charisma Multiplier: x",t.getEmployeeChaMultiplier(),r.a.createElement("br",null),"* Employee Creativity Multiplier: x",t.getEmployeeCreMultiplier(),r.a.createElement("br",null),"* Employee Efficiency Multiplier: x",t.getEmployeeEffMultiplier(),r.a.createElement("br",null),"* Employee Intelligence Multiplier: x",t.getEmployeeIntMultiplier(),r.a.createElement("br",null),"* Production Multiplier: x",t.getProductionMultiplier(),r.a.createElement("br",null),"* Sales Multiplier: x",t.getSalesMultiplier(),r.a.createElement("br",null),"* Scientific Research Multiplier: x",t.getScientificResearchMultiplier(),r.a.createElement("br",null),"* Storage Multiplier: x",t.getStorageMultiplier()))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return C}));var n=a(0),r=a.n(n),i=a(42),o=a(183),s=a(371),l=a(229),c=a(975),u=a(976),m=a(981),h=a(169),d=a(4),p=a(129),f=a(986),g=a(987),y=a(73),b=a(45),E=a(1),k=a(28),v=a(75),_=a(10),w=a(25);function S(e){const t=Object(b.b)(),a=Object(b.c)(),[l,y]=Object(n.useState)(!1);if(0===e.warehouse)return r.a.createElement(r.a.Fragment,null);const S=i.a.WarehouseUpgradeBaseCost*Math.pow(1.07,e.warehouse.level+1),C=t.funds>S;let x;switch(a.state){case"START":x="Current state: Preparing...";break;case"PURCHASE":x="Current state: Purchasing materials...";break;case"PRODUCTION":x="Current state: Producing materials and/or products...";break;case"SALE":x="Current state: Selling materials and/or products...";break;case"EXPORT":x="Current state: Exporting materials and/or products...";break;default:console.error("Invalid state: "+a.state)}const O=[];for(const t in e.warehouse.materials)e.warehouse.materials[t]instanceof o.a&&Object(f.a)(t,a)&&O.push(r.a.createElement(m.a,{rerender:e.rerender,city:e.currentCity,key:t,mat:e.warehouse.materials[t],warehouse:e.warehouse}));const M=[];if(a.makesProducts&&Object.keys(a.products).length>0)for(const t in a.products){const n=a.products[t];n instanceof s.a&&M.push(r.a.createElement(u.a,{rerender:e.rerender,city:e.currentCity,key:t,product:n}))}const T=[];for(const t in e.warehouse.materials){const a=e.warehouse.materials[t];h.a.hasOwnProperty(t)&&(0!==a.qty&&T.push(r.a.createElement(r.a.Fragment,null,t,": ",d.a.format(a.qty*h.a[t],"0,0.0"))))}for(const t in a.products){const n=a.products[t];void 0!==n&&T.push(r.a.createElement(r.a.Fragment,null,t,": ",d.a.format(n.data[e.warehouse.loc][0]*n.siz,"0,0.0")))}let R;return R=T&&T.length>0?T.reduce((e,t)=>e&&r.a.createElement(r.a.Fragment,null,e,r.a.createElement("br",null),t)||r.a.createElement(r.a.Fragment,null,t)):r.a.createElement(r.a.Fragment,null,"No items in storage."),r.a.createElement(v.a,null,r.a.createElement(w.a,{display:"flex",alignItems:"center"},r.a.createElement(k.a,{title:0!==e.warehouse.sizeUsed?r.a.createElement(E.a,null,r.a.createElement(r.a.Fragment,null,R)):""},r.a.createElement(E.a,{color:e.warehouse.sizeUsed>=e.warehouse.size?"error":"primary"},"Storage: ",d.a.formatBigNumber(e.warehouse.sizeUsed)," /"," ",d.a.formatBigNumber(e.warehouse.size))),r.a.createElement(_.a,{disabled:!C,onClick:function(){null!==a&&0!==e.warehouse&&C&&(++e.warehouse.level,e.warehouse.updateSize(t,a),t.funds=t.funds-S,e.rerender())}},"Upgrade Warehouse Size - ",r.a.createElement(p.a,{money:S,corp:t}))),r.a.createElement(E.a,null,"This industry uses the following equation for its production: "),r.a.createElement("br",null),r.a.createElement(E.a,null,r.a.createElement(g.a,{key:a.name,division:a})),r.a.createElement("br",null),r.a.createElement(E.a,null,"To get started with production, purchase your required materials or import them from another of your company's divisions."),r.a.createElement("br",null),r.a.createElement(E.a,null,x),t.unlockUpgrades[1]&&r.a.createElement(r.a.Fragment,null,r.a.createElement(_.a,{onClick:()=>y(!0)},"Configure Smart Supply"),r.a.createElement(c.a,{open:l,onClose:()=>y(!1),warehouse:e.warehouse})),O,M)}function C(e){return e.warehouse instanceof l.a?r.a.createElement(S,e):r.a.createElement(x,{rerender:e.rerender,city:e.currentCity})}function x(e){const t=Object(b.b)(),a=Object(b.c)(),n=t.funds<i.a.WarehouseInitialCost;return r.a.createElement(v.a,null,r.a.createElement(_.a,{onClick:function(){n||(Object(y.m)(t,a,e.city),e.rerender())},disabled:n},"Purchase Warehouse (",r.a.createElement(p.a,{money:i.a.WarehouseInitialCost,corp:t}),")"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(73),o=a(183),s=a(15),l=a(40),c=a(45),u=a(1),m=a(311),h=a(261);function d(e){const[t,a]=Object(n.useState)(!!e.warehouse.smartSupplyUseLeftovers[e.matName]);return r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{control:r.a.createElement(h.a,{checked:t,onChange:function(t){try{const a=e.warehouse.materials[e.matName];Object(i.v)(e.warehouse,a,t.target.checked)}catch(e){Object(s.a)(e+"")}a(t.target.checked)}}),label:r.a.createElement(u.a,null,e.warehouse.materials[e.matName].name)}),r.a.createElement("br",null))}function p(e){const t=Object(c.c)(),a=Object(n.useState)(!1)[1];const s=[];for(const a in e.warehouse.materials)e.warehouse.materials[a]instanceof o.a&&Object.keys(t.reqMats).includes(a)&&s.push(r.a.createElement(d,{key:a,warehouse:e.warehouse,matName:a}));return r.a.createElement(l.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{control:r.a.createElement(h.a,{checked:e.warehouse.smartSupplyEnabled,onChange:function(t){Object(i.u)(e.warehouse,t.target.checked),a(e=>!e)}}),label:r.a.createElement(u.a,null,"Enable Smart Supply")}),r.a.createElement("br",null),r.a.createElement(u.a,null,"Use materials already in the warehouse instead of buying new ones, if available:"),s))}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ProductElem}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_data_Constants__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(42),_DiscontinueProductModal__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(977),_LimitProductProductionModal__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(978),_SellProductModal__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(979),_ProductMarketTaModal__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(980),_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(4),_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(126),_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(16),_Context__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(45),_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(1),_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(28),_mui_material_Paper__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(75),_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(10),_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(25);function ProductElem(props){const corp=Object(_Context__WEBPACK_IMPORTED_MODULE_9__.b)(),division=Object(_Context__WEBPACK_IMPORTED_MODULE_9__.c)(),[sellOpen,setSellOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[limitOpen,setLimitOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[discontinueOpen,setDiscontinueOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[marketTaOpen,setMarketTaOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),city=props.city,product=props.product,nf="0.000",nfB="0.000a",hasUpgradeDashboard=division.hasResearch("uPgrade: Dashboard"),totalGain=product.data[city][1]-product.data[city][2];let sellButtonText;if(sellButtonText=product.sllman[city][0]?Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__.a)(product.sllman[city][1])?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.data[city][2],nfB),"/",product.sllman[city][1],")"):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.data[city][2],nfB),"/",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.sllman[city][1],nfB),")"):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (0.000/0.000)"),product.marketTa2)sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:product.marketTa2Price[city]}));else if(product.marketTa1){const e=product.rat/product.mku;sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:product.pCost+e}))}else if(product.sCost)if(Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__.a)(product.sCost)){const sCost=product.sCost.replace(/MP/g,product.pCost+"");sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:eval(sCost)}))}else sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:product.sCost}));let limitProductionButtonText="Limit Production";return product.prdman[city][0]&&(limitProductionButtonText+=" ("+_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.prdman[city][1],nf)+")"),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Paper__WEBPACK_IMPORTED_MODULE_12__.a,null,product.fin?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,{display:"flex"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Prod: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.data[city][1],nfB),"/s",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Sell: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.data[city][2],nfB)," /s")},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,product.name,": ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.data[city][0],nfB)," (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(totalGain,nfB),"/s)"))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,{display:"flex"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Quality: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.qlt,nf)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Performance: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.per,nf)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Durability: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.dur,nf)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Reliability: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.rel,nf)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Aesthetics: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.aes,nf)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Features: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.fea,nf),1===corp.unlockUpgrades[2]&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),1===corp.unlockUpgrades[2]&&"Demand: "+_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.dmd,nf),1===corp.unlockUpgrades[3]&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),1===corp.unlockUpgrades[3]&&"Competition: "+_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.cmp,nf))},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Rating: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.rat,nf)))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,{display:"flex"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"An estimate of the material cost it takes to create this Product.")},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Est. Production Cost:"," ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.formatMoney(product.pCost/_data_Constants__WEBPACK_IMPORTED_MODULE_1__.a.ProductProductionCostRatio)))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,{display:"flex"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"An estimate of how much consumers are willing to pay for this product. Setting the sale price above this may result in less sales. Setting the sale price below this may result in more sales.")},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Est. Market Price: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.formatMoney(product.pCost))))):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Designing ",product.name," (req. Operations/Engineers in ",product.createCity,")..."),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(product.prog,"0.00"),"% complete")),(hasUpgradeDashboard||product.fin)&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setSellOpen(!0)},sellButtonText),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_SellProductModal__WEBPACK_IMPORTED_MODULE_4__.a,{product:product,city:city,open:sellOpen,onClose:()=>setSellOpen(!1)}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setLimitOpen(!0)},limitProductionButtonText),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LimitProductProductionModal__WEBPACK_IMPORTED_MODULE_3__.a,{product:product,city:city,open:limitOpen,onClose:()=>setLimitOpen(!1)}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setDiscontinueOpen(!0)},"Discontinue"),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DiscontinueProductModal__WEBPACK_IMPORTED_MODULE_2__.a,{product:product,rerender:props.rerender,open:discontinueOpen,onClose:()=>setDiscontinueOpen(!1)}),division.hasResearch("Market-TA.I")&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setMarketTaOpen(!0)},"Market-TA"),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ProductMarketTaModal__WEBPACK_IMPORTED_MODULE_5__.a,{product:product,open:marketTaOpen,onClose:()=>setMarketTaOpen(!1)}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(40),o=a(45),s=a(1),l=a(10);function c(e){const t=Object(o.c)();return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,null,"Are you sure you want to do this? Discontinuing a product removes it completely and permanently. You will no longer produce this product and all of its existing stock will be removed and left unsold"),r.a.createElement(l.a,{onClick:function(){t.discontinueProduct(e.product),e.onClose(),e.rerender()}},"Discontinue"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(73),o=a(40),s=a(1),l=a(10),c=a(85);function u(e){const[t,a]=Object(n.useState)(null);function u(){let a=t;null===a&&(a=-1),Object(i.i)(e.product,e.city,a),e.onClose()}return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,null,"Enter a limit to the amount of this product you would like to product per second. Leave the box empty to set no limit."),r.a.createElement(c.a,{autoFocus:!0,placeholder:"Limit",type:"number",onChange:function(e){""===e.target.value?a(null):a(parseFloat(e.target.value))},onKeyDown:function(e){13===e.keyCode&&u()}}),r.a.createElement(l.a,{onClick:u},"Limit production"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(15),o=a(73),s=a(40),l=a(1),c=a(85),u=a(10),m=a(311),h=a(261);function d(e){const[t,a]=Object(n.useState)(!0),[d,p]=Object(n.useState)(e.product.sllman[e.city][1]?e.product.sllman[e.city][1]:""),[f,g]=Object(n.useState)(function(e){let t=e.sCost?e.sCost+"":"";return e.marketTa2?t+=" (Market-TA.II)":e.marketTa1&&(t+=" (Market-TA.I)"),t}(e.product));function y(){try{Object(o.p)(e.product,e.city,d,f,t)}catch(e){Object(i.a)(e+"")}e.onClose()}function b(e){13===e.keyCode&&y()}return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,null,"Enter the maximum amount of ",e.product.name," you would like to sell per second, as well as the price at which you would like to sell it at.",r.a.createElement("br",null),r.a.createElement("br",null),"If the sell amount is set to 0, then the product will not be sold. If the sell price is set to 0, then the product will be discarded.",r.a.createElement("br",null),r.a.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the material.",r.a.createElement("br",null),r.a.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-1' then you will always sell 1 less of the material than you produce.",r.a.createElement("br",null),r.a.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to set a dynamically changing price that depends on the Product's estimated market price. For example, if you set it to 'MP*5' then it will always be sold at five times the estimated market price."),r.a.createElement("br",null),r.a.createElement(c.a,{value:d,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){p(e.target.value)},onKeyDown:b}),r.a.createElement(c.a,{value:f,type:"text",placeholder:"Sell price",onChange:function(e){g(e.target.value)},onKeyDown:b}),r.a.createElement(u.a,{onClick:y},"Confirm"),r.a.createElement(m.a,{control:r.a.createElement(h.a,{checked:t,onChange:function(e){a(e.target.checked)}}),label:r.a.createElement(l.a,null,"Use same 'Sell Amount' for all cities")}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(4),o=a(40),s=a(45),l=a(1),c=a(85),u=a(311),m=a(261),h=a(28);function d(e){if(!Object(s.c)().hasResearch("Market-TA.II"))return r.a.createElement(r.a.Fragment,null);const t=e.product.rat/e.product.mku,[a,o]=Object(n.useState)(e.product.pCost),d=Object(n.useState)(!1)[1];const p=a;let f=1;return p>e.product.pCost&&p-e.product.pCost>t&&(f=t/(p-e.product.pCost)),r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Market-TA.II"),r.a.createElement("br",null),r.a.createElement(l.a,null,"If you sell at ",i.a.formatMoney(p),", then you will sell"," ",i.a.format(f,"0.00000"),"x as much compared to if you sold at market price."),r.a.createElement(c.a,{type:"number",onChange:function(e){o(parseFloat(e.target.value))},value:a}),r.a.createElement("br",null),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.product.marketTa2,onChange:function(t){e.product.marketTa2=t.target.checked,d(e=>!e)}}),label:r.a.createElement(h.a,{title:r.a.createElement(l.a,null,"If this is enabled, then this Material will automatically be sold at the optimal price such that the amount sold matches the amount produced. (i.e. the highest possible price, while still ensuring that all produced materials will be sold)")},r.a.createElement(l.a,null,"Use Market-TA.II for Auto-Sale Price"))}))}function p(e){const t=e.product.rat/e.product.mku,a=Object(n.useState)(!1)[1];return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Market-TA.I"),r.a.createElement(l.a,null,"The maximum sale price you can mark this up to is"," ",i.a.formatMoney(e.product.pCost+t),". This means that if you set the sale price higher than this, you will begin to experience a loss in number of sales"),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.product.marketTa1,onChange:function(t){e.product.marketTa1=t.target.checked,a(e=>!e)}}),label:r.a.createElement(h.a,{title:r.a.createElement(l.a,null,"If this is enabled, then this Material will automatically be sold at the price identified by Market-TA.I (i.e. the price shown above)")},r.a.createElement(l.a,null,"Use Market-TA.I for Auto-Sale Price"))})),r.a.createElement(d,{product:e.product}))}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return MaterialElem}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_OfficeSpace__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(348),_ExportModal__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(982),_MaterialMarketTaModal__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(983),_SellMaterialModal__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(984),_PurchaseMaterialModal__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(985),_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(4),_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(126),_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(16),_Context__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(45),_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(1),_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(28),_mui_material_Paper__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(75),_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(10),_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(25);function MaterialElem(props){const corp=Object(_Context__WEBPACK_IMPORTED_MODULE_9__.b)(),division=Object(_Context__WEBPACK_IMPORTED_MODULE_9__.c)(),[purchaseMaterialOpen,setPurchaseMaterialOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[exportOpen,setExportOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[sellMaterialOpen,setSellMaterialOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),[materialMarketTaOpen,setMaterialMarketTaOpen]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!1),warehouse=props.warehouse,city=props.city,mat=props.mat,markupLimit=mat.getMarkupLimit(),office=division.offices[city];if(!(office instanceof _OfficeSpace__WEBPACK_IMPORTED_MODULE_1__.a))throw new Error(`Could not get OfficeSpace object for this city (${city})`);const nf="0.000",nfB="0.000a",totalGain=mat.buy+mat.prd+mat.imp-mat.sll-mat.totalExp,tutorial=division.newInd&&Object.keys(division.reqMats).includes(mat.name)&&0===mat.buy&&0===mat.imp,purchaseButtonText=`Buy (${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.buy,nfB)})`;let sellButtonText;if(mat.sllman[0]){if(sellButtonText=Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__.a)(mat.sllman[1])?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.sll,nfB),"/",mat.sllman[1],")"):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.sll,nfB),"/",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.sllman[1],nfB),")"),mat.marketTa2)sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:mat.marketTa2Price}));else if(mat.marketTa1)sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:mat.bCost+markupLimit}));else if(mat.sCost)if(Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_7__.a)(mat.sCost)){const sCost=mat.sCost.replace(/MP/g,mat.bCost+"");sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:eval(sCost)}))}else sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,sellButtonText," @ ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ui_React_Money__WEBPACK_IMPORTED_MODULE_8__.a,{money:mat.sCost}))}else sellButtonText=react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,"Sell (0.000/0.000)");return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Paper__WEBPACK_IMPORTED_MODULE_12__.a,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,{display:"flex"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Buy: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.buy,nfB)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Prod: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.prd,nfB)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Sell: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.sll,nfB)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Export: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.totalExp,nfB)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),"Import: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.imp,nfB),1===corp.unlockUpgrades[2]&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),1===corp.unlockUpgrades[2]&&"Demand: "+_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.dmd,nf),1===corp.unlockUpgrades[3]&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),1===corp.unlockUpgrades[3]&&"Competition: "+_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.cmp,nf))},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,mat.name,": ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.qty,nfB)," (",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(totalGain,nfB),"/s)")),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Market Price: The price you would pay if you were to buy this material on the market")},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"MP: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.formatMoney(mat.bCost))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"The quality of your material. Higher quality will lead to more sales")},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Quality: ",_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__.a.format(mat.qlt,"0.00a")))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_14__.a,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Tooltip__WEBPACK_IMPORTED_MODULE_11__.a,{title:tutorial?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__.a,null,"Purchase your required materials to get production started!"):""},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span",null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{color:tutorial?"error":"primary",onClick:()=>setPurchaseMaterialOpen(!0),disabled:props.warehouse.smartSupplyEnabled&&Object.keys(division.reqMats).includes(props.mat.name)},purchaseButtonText))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_PurchaseMaterialModal__WEBPACK_IMPORTED_MODULE_5__.a,{mat:mat,warehouse:warehouse,open:purchaseMaterialOpen,onClose:()=>setPurchaseMaterialOpen(!1)}),1===corp.unlockUpgrades[0]&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setExportOpen(!0)},"Export"),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ExportModal__WEBPACK_IMPORTED_MODULE_2__.a,{mat:mat,open:exportOpen,onClose:()=>setExportOpen(!1)})),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{color:division.prodMats.includes(props.mat.name)&&!mat.sllman[0]?"error":"primary",onClick:()=>setSellMaterialOpen(!0)},sellButtonText),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_SellMaterialModal__WEBPACK_IMPORTED_MODULE_4__.a,{mat:mat,open:sellMaterialOpen,onClose:()=>setSellMaterialOpen(!1)}),division.hasResearch("Market-TA.I")&&react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_13__.a,{onClick:()=>setMaterialMarketTaOpen(!0)},"Market-TA"),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_MaterialMarketTaModal__WEBPACK_IMPORTED_MODULE_3__.a,{mat:mat,open:materialMarketTaOpen,onClose:()=>setMaterialMarketTaOpen(!1)})))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(15),o=a(73),s=a(40),l=a(45),c=a(1),u=a(85),m=a(10),h=a(25),d=a(72),p=a(117);function f(e){const t=Object(l.b)();if(0===t.divisions.length)throw new Error("Export popup created with no divisions.");if(0===Object.keys(t.divisions[0].warehouses).length)throw new Error("Export popup created in a division with no warehouses.");const[a,f]=Object(n.useState)(t.divisions[0].name),[g,y]=Object(n.useState)(Object.keys(t.divisions[0].warehouses)[0]),[b,E]=Object(n.useState)(""),k=Object(n.useState)(!1)[1];function v(t){for(let a=0;a<e.mat.exp.length;++a)if(e.mat.exp[a].ind===t.ind&&e.mat.exp[a].city===t.city&&e.mat.exp[a].amt===t.amt){e.mat.exp.splice(a,1);break}k(e=>!e)}const _=t.divisions.find(e=>e.name===a);if(void 0===_)throw new Error(`Export popup somehow ended up with undefined division '${_}'`);const w=Object.keys(_.warehouses).filter(e=>0!==_.warehouses[e]);return w.length>0&&!w.includes(g)&&y(w[0]),r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"Select the industry and city to export this material to, as well as how much of this material to export per second. You can set the export amount to 'MAX' to export all of the materials in this warehouse."),r.a.createElement(p.a,{onChange:function(e){const a=e.target.value;f(a),y(Object.keys(t.divisions[0].warehouses)[0])},value:a},t.divisions.map(e=>r.a.createElement(d.a,{key:e.name,value:e.name},e.name))),r.a.createElement(p.a,{onChange:function(e){y(e.target.value)},value:g},w.map(e=>{if(0!==_.warehouses[e])return r.a.createElement(d.a,{key:e,value:e},e)})),r.a.createElement(u.a,{placeholder:"Export amount / s",onChange:function(e){E(e.target.value)},value:b}),r.a.createElement(m.a,{onClick:function(){try{Object(o.e)(a,g,e.mat,b)}catch(e){Object(i.a)(e+"")}e.onClose()}},"Export"),r.a.createElement(c.a,null,"Below is a list of all current exports of this material from this warehouse. Clicking on one of the exports below will REMOVE that export."),e.mat.exp.map((e,t)=>r.a.createElement(h.a,{display:"flex",alignItems:"center",key:t},r.a.createElement(m.a,{sx:{mx:2},onClick:()=>v(e)},"delete"),r.a.createElement(c.a,null,"Industry: ",e.ind,r.a.createElement("br",null),"City: ",e.city,r.a.createElement("br",null),"Amount/s: ",e.amt))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(4),o=a(40),s=a(45),l=a(1),c=a(85),u=a(311),m=a(261),h=a(28);function d(e){if(!Object(s.c)().hasResearch("Market-TA.II"))return r.a.createElement(r.a.Fragment,null);const[t,a]=Object(n.useState)(e.mat.bCost),o=Object(n.useState)(!1)[1];const d=e.mat.getMarkupLimit();const p=t;let f=1;return p>e.mat.bCost?p-e.mat.bCost>d&&(f=Math.pow(d/(p-e.mat.bCost),2)):p<e.mat.bCost&&(f=p<=0?1e12:e.mat.bCost/p),r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Market-TA.II"),r.a.createElement("br",null),r.a.createElement(l.a,null,"If you sell at ",i.a.formatMoney(p),", then you will sell"," ",i.a.format(f,"0.00000"),"x as much compared to if you sold at market price."),r.a.createElement(c.a,{type:"number",onChange:function(e){""===e.target.value?a(0):a(parseFloat(e.target.value))},value:t}),r.a.createElement("br",null),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.mat.marketTa2,onChange:function(t){e.mat.marketTa2=t.target.checked,o(e=>!e)}}),label:r.a.createElement(h.a,{title:r.a.createElement(l.a,null,"If this is enabled, then this Material will automatically be sold at the optimal price such that the amount sold matches the amount produced. (i.e. the highest possible price, while still ensuring that all produced materials will be sold)")},r.a.createElement(l.a,null,"Use Market-TA.II for Auto-Sale Price"))}))}function p(e){const t=Object(n.useState)(!1)[1];const a=e.mat.getMarkupLimit();return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Market-TA.I"),r.a.createElement(l.a,null,"The maximum sale price you can mark this up to is ",i.a.formatMoney(e.mat.bCost+a),". This means that if you set the sale price higher than this, you will begin to experience a loss in number of sales"),r.a.createElement(u.a,{control:r.a.createElement(m.a,{checked:e.mat.marketTa1,onChange:function(a){e.mat.marketTa1=a.target.checked,t(e=>!e)}}),label:r.a.createElement(h.a,{title:r.a.createElement(l.a,null,"If this is enabled, then this Material will automatically be sold at the price identified by Market-TA.I (i.e. the price shown above)")},r.a.createElement(l.a,null,"Use Market-TA.I for Auto-Sale Price"))})),r.a.createElement(d,{mat:e.mat}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(15),o=a(73),s=a(40),l=a(1),c=a(85),u=a(10);function m(e){const[t,a]=Object(n.useState)(e.mat.sllman[1]?e.mat.sllman[1]+"":""),[m,h]=Object(n.useState)(function(e){let t=e.sCost?e.sCost+"":"";return e.marketTa2?t+=" (Market-TA.II)":e.marketTa1&&(t+=" (Market-TA.I)"),t}(e.mat));function d(){try{Object(o.o)(e.mat,t,m)}catch(e){Object(i.a)(e+"")}e.onClose()}function p(e){13===e.keyCode&&d()}return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,null,"Enter the maximum amount of ",e.mat.name," you would like to sell per second, as well as the price at which you would like to sell at.",r.a.createElement("br",null),r.a.createElement("br",null),"If the sell amount is set to 0, then the material will not be sold. If the sell price if set to 0, then the material will be discarded",r.a.createElement("br",null),r.a.createElement("br",null),"Setting the sell amount to 'MAX' will result in you always selling the maximum possible amount of the material.",r.a.createElement("br",null),r.a.createElement("br",null),"When setting the sell amount, you can use the 'PROD' variable to designate a dynamically changing amount that depends on your production. For example, if you set the sell amount to 'PROD-5' then you will always sell 5 less of the material than you produce.",r.a.createElement("br",null),r.a.createElement("br",null),"When setting the sell price, you can use the 'MP' variable to designate a dynamically changing price that depends on the market price. For example, if you set the sell price to 'MP+10' then it will always be sold at $10 above the market price."),r.a.createElement("br",null),r.a.createElement(c.a,{value:t,autoFocus:!0,type:"text",placeholder:"Sell amount",onChange:function(e){a(e.target.value)},onKeyDown:p}),r.a.createElement(c.a,{value:m,type:"text",placeholder:"Sell price",onChange:function(e){h(e.target.value)},onKeyDown:p}),r.a.createElement(u.a,{onClick:d},"Confirm"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(15),o=a(169),s=a(4),l=a(73),c=a(40),u=a(45),m=a(1),h=a(85),d=a(10);function p(e){const t=parseFloat(e.amount),a=t*e.mat.bCost,n=o.a[e.mat.name];return t*n>(e.warehouse.size-e.warehouse.sizeUsed)/n?r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{color:"error"},"Not enough warehouse space to purchase this amount")):isNaN(a)?r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{color:"error"},"Invalid put for Bulk Purchase amount")):r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,null,"Purchasing ",s.a.format(t,"0,0.00")," of ",e.mat.name," will cost"," ",s.a.formatMoney(a)))}function f(e){const t=Object(u.b)(),[a,s]=Object(n.useState)("");function l(){const n=parseFloat(a),r=o.a[e.mat.name];if(n*r>(e.warehouse.size-e.warehouse.sizeUsed)/r)Object(i.a)("You do not have enough warehouse size to fit this purchase");else if(isNaN(n))Object(i.a)("Invalid input amount");else{const a=n*e.mat.bCost;if(!(t.funds>=a))return void Object(i.a)("You cannot afford this purchase.");t.funds=t.funds-a,e.mat.qty+=n,e.onClose()}}return r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,null,"Enter the amount of ",e.mat.name," you would like to bulk purchase. This purchases the specified amount instantly (all at once)."),r.a.createElement(p,{warehouse:e.warehouse,mat:e.mat,amount:a}),r.a.createElement(h.a,{value:a,onChange:function(e){s(e.target.value)},type:"number",placeholder:"Bulk Purchase amount",onKeyDown:function(e){13===e.keyCode&&l()}}),r.a.createElement(d.a,{onClick:l},"Confirm Bulk Purchase"))}function g(e){const t=Object(u.c)(),[a,o]=Object(n.useState)(e.mat.buy?e.mat.buy:0);function s(){if(null!==a){try{Object(l.c)(e.mat,a)}catch(e){Object(i.a)(e+"")}e.onClose()}}return r.a.createElement(c.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,null,"Enter the amount of ",e.mat.name," you would like to purchase per second. This material's cost changes constantly."),r.a.createElement(h.a,{value:a,onChange:function(e){o(parseFloat(e.target.value))},autoFocus:!0,placeholder:"Purchase amount",type:"number",onKeyDown:function(e){13===e.keyCode&&s()}}),r.a.createElement(d.a,{onClick:s},"Confirm"),r.a.createElement(d.a,{onClick:function(){e.mat.buy=0,e.onClose()}},"Clear Purchase"),t.hasResearch("Bulk Purchasing")&&r.a.createElement(f,{onClose:e.onClose,mat:e.mat,warehouse:e.warehouse})))}},function(e,t,a){"use strict";function n(e,t){return!!Object.keys(t.reqMats).includes(e)||(!!t.prodMats.includes(e)||!!["Hardware","Robots","AICores","RealEstate"].includes(e))}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(253);function o(e){const t=[];for(const a of Object.keys(e.division.reqMats)){const n=e.division.reqMats[a];void 0!==n&&t.push(String.raw`${n}\text{ }${a}`)}const a=e.division.prodMats.slice();return e.division.makesProducts&&a.push(e.division.type),r.a.createElement(i.a,null,"\\("+t.join("+")+"\\Rightarrow"+a.map(e=>`1 \\text{${e}}`).join("+")+"\\)")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(42),o=a(15),s=a(73),l=a(129),c=a(45),u=a(1),m=a(72),h=a(117),d=a(10);function p(e){const t=Object(c.b)(),a=Object(c.c)(),p=Object.keys(a.offices).filter(e=>0===a.offices[e]),[f,g]=Object(n.useState)(p[0]),y=t.funds<i.a.OfficeInitialCost;return r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"Would you like to expand into a new city by opening an office? This would cost"," ",r.a.createElement(l.a,{money:i.a.OfficeInitialCost,corp:t})),r.a.createElement(h.a,{endAdornment:r.a.createElement(d.a,{onClick:function(){try{Object(s.k)(t,a,f)}catch(e){return void Object(o.a)(e+"")}Object(o.a)(`Opened a new office in ${f}!`),e.cityStateSetter(f)},disabled:y},"Confirm"),value:f,onChange:function(e){g(e.target.value)}},p.map(e=>r.a.createElement(m.a,{key:e,value:e},e))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(15),o=a(51),s=a(45),l=a(73),c=a(1),u=a(10),m=a(85),h=a(72),d=a(25),p=a(117);function f(e){const t=Object(s.b)(),a=Object.keys(o.a).sort().filter(e=>void 0===t.divisions.find(t=>t.type===e)).sort(),[f,g]=Object(n.useState)(a.length>0?a[0]:""),[y,b]=Object(n.useState)(""),E=o.d[f];if(void 0===E)throw new Error(`Invalid industry: '${f}'`);const k=t.funds<E||""===y;function v(){if(!k){try{Object(l.l)(t,f,y)}catch(e){return void Object(i.a)(e+"")}e.setDivisionName(y)}}const _=o.b[f];if(void 0===_)throw new Error(`Trying to create an industry that doesn't exists: '${f}'`);return r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,null,"Create a new division to expand into a new industry:"),r.a.createElement(p.a,{value:f,onChange:function(e){g(e.target.value)}},a.map(e=>r.a.createElement(h.a,{key:e,value:e},e))),r.a.createElement(c.a,null,_(t)),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,null,"Division name:"),r.a.createElement(d.a,{display:"flex",alignItems:"center"},r.a.createElement(m.a,{autoFocus:!0,value:y,onChange:function(e){b(e.target.value)},onKeyDown:function(e){13===e.keyCode&&v()},type:"text",InputProps:{endAdornment:r.a.createElement(u.a,{disabled:k,sx:{mx:1},onClick:v},"Expand")}})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return N}));var n=a(0),r=a.n(n),i=a(991),o=a(992),s=a(993),l=a(994),c=a(995),u=a(996),m=a(997),h=a(998),d=a(999),p=a(26),f=a(42),g=a(415),y=a(416),b=a(8),E=a(4),k=a(22),v=a(16),_=a(102),w=a(131),S=a(29),C=a(45),x=a(1),O=a(28),M=a(10),T=a(25),R=a(75),A=a(52);function N({rerender:e}){const t=S.b.Player(),a=Object(C.b)(),n=a.revenue-a.expenses,i=[];function o(e,t){1!==t&&i.push([e,E.a.format(t,"0.000")])}return o("Production Multiplier: ",a.getProductionMultiplier()),o("Storage Multiplier: ",a.getStorageMultiplier()),o("Advertising Multiplier: ",a.getAdvertisingMultiplier()),o("Empl. Creativity Multiplier: ",a.getEmployeeCreMultiplier()),o("Empl. Charisma Multiplier: ",a.getEmployeeChaMultiplier()),o("Empl. Intelligence Multiplier: ",a.getEmployeeIntMultiplier()),o("Empl. Efficiency Multiplier: ",a.getEmployeeEffMultiplier()),o("Sales Multiplier: ",a.getSalesMultiplier()),o("Scientific Research Multiplier: ",a.getScientificResearchMultiplier()),r.a.createElement(r.a.Fragment,null,r.a.createElement(w.a,{rows:[["Total Funds:",r.a.createElement(v.a,{money:a.funds})],["Total Revenue:",r.a.createElement(_.a,{money:a.revenue})],["Total Expenses:",r.a.createElement(_.a,{money:a.expenses})],["Publicly Traded:",a.public?"Yes":"No"],["Owned Stock Shares:",E.a.format(a.numShares,"0.000a")],["Stock Price:",a.public?r.a.createElement(v.a,{money:a.sharePrice}):"N/A"]]}),r.a.createElement("br",null),r.a.createElement(T.a,{display:"flex"},r.a.createElement(O.a,{title:r.a.createElement(w.a,{rows:[["Outstanding Shares:",E.a.format(a.issuedShares,"0.000a")],["Private Shares:",E.a.format(a.totalShares-a.issuedShares-a.numShares,"0.000a")]]})},r.a.createElement(x.a,null,"Total Stock Shares: ",E.a.format(a.totalShares,"0.000a")))),r.a.createElement("br",null),r.a.createElement(j,{profit:n}),r.a.createElement("br",null),r.a.createElement(w.a,{rows:i}),r.a.createElement("br",null),r.a.createElement(B,null),r.a.createElement(O.a,{title:r.a.createElement(x.a,null,"Get a copy of and read 'The Complete Handbook for Creating a Successful Corporation.' This is a .lit file that guides you through the beginning of setting up a Corporation and provides some tips/pointers for helping you get started with managing it.")},r.a.createElement(M.a,{onClick:()=>a.getStarterGuide(t)},"Getting Started Guide")),a.public?r.a.createElement(F,{rerender:e}):r.a.createElement(P,{rerender:e}),r.a.createElement(D,null),r.a.createElement("br",null),r.a.createElement(I,{rerender:e}))}function P({rerender:e}){const t=Object(C.b)(),[a,i]=Object(n.useState)(!1),[o,s]=Object(n.useState)(!1),l=t.fundingRound<4,c=l?"Search for private investors who will give you startup funding in exchange for equity (stock shares) in your company":"";return r.a.createElement(r.a.Fragment,null,r.a.createElement(O.a,{title:r.a.createElement(x.a,null,c)},r.a.createElement("span",null,r.a.createElement(M.a,{disabled:!l,onClick:()=>i(!0)},"Find Investors"))),r.a.createElement(O.a,{title:r.a.createElement(x.a,null,"Become a publicly traded and owned entity. Going public involves issuing shares for an IPO. Once you are a public company, your shares will be traded on the stock market.")},r.a.createElement(M.a,{onClick:()=>s(!0)},"Go Public")),r.a.createElement(h.a,{open:a,onClose:()=>i(!1),rerender:e}),r.a.createElement(d.a,{open:o,onClose:()=>s(!1),rerender:e}),r.a.createElement("br",null))}function I({rerender:e}){const t=Object(C.b)();return t.divisions.length<=0?r.a.createElement(x.a,{variant:"h4"},"Upgrades are unlocked once you create an industry."):r.a.createElement(r.a.Fragment,null,r.a.createElement(R.a,{sx:{p:1,my:1}},r.a.createElement(x.a,{variant:"h4"},"Unlocks"),r.a.createElement(A.a,{container:!0},Object.values(g.a).filter(e=>!t.unlockUpgrades[e[0]]).map(t=>r.a.createElement(o.a,{rerender:e,upgradeData:t,key:t[0]})))),r.a.createElement(R.a,{sx:{p:1,my:1}},r.a.createElement(x.a,{variant:"h4"},"Upgrades"),r.a.createElement(A.a,{container:!0},t.upgrades.map((e,t)=>y.a[t]).map(t=>r.a.createElement(i.a,{rerender:e,upgrade:t,key:t[0]})))))}function F({rerender:e}){const t=Object(C.b)(),[a,i]=Object(n.useState)(!1),[o,s]=Object(n.useState)(!1),[h,d]=Object(n.useState)(!1),[p,f]=Object(n.useState)(!1),g=t.shareSaleCooldown>0,y=g?"Cannot sell shares for "+t.convertCooldownToString(t.shareSaleCooldown):"Sell your shares in the company. The money earned from selling your shares goes into your personal account, not the Corporation's. This is one of the only ways to profit from your business venture.",b=t.issueNewSharesCooldown>0,E=b?"Cannot issue new shares for "+t.convertCooldownToString(t.issueNewSharesCooldown):"Issue new equity shares to raise capital.";return r.a.createElement(r.a.Fragment,null,r.a.createElement(O.a,{title:r.a.createElement(x.a,null,y)},r.a.createElement("span",null,r.a.createElement(M.a,{disabled:g,onClick:()=>i(!0)},"Sell Shares"))),r.a.createElement(l.a,{open:a,onClose:()=>i(!1),rerender:e}),r.a.createElement(O.a,{title:r.a.createElement(x.a,null,"Buy back shares you that previously issued or sold at market price.")},r.a.createElement("span",null,r.a.createElement(M.a,{disabled:t.issuedShares<1,onClick:()=>s(!0)},"Buyback shares"))),r.a.createElement(c.a,{open:o,onClose:()=>s(!1),rerender:e}),r.a.createElement("br",null),r.a.createElement(O.a,{title:r.a.createElement(x.a,null,E)},r.a.createElement("span",null,r.a.createElement(M.a,{disabled:b,onClick:()=>d(!0)},"Issue New Shares"))),r.a.createElement(m.a,{open:h,onClose:()=>d(!1)}),r.a.createElement(O.a,{title:r.a.createElement(x.a,null,"Manage the dividends that are paid out to shareholders (including yourself)")},r.a.createElement(M.a,{onClick:()=>f(!0)},"Issue Dividends")),r.a.createElement(u.a,{open:p,onClose:()=>f(!1)}),r.a.createElement("br",null))}function D(){const e=S.b.Player(),t=Object(C.b)(),[a,i]=Object(n.useState)(!1),o=t.determineValuation()>=f.a.BribeThreshold&&e.factions.filter(e=>p.a[e].getInfo().offersWork()).length>0;return r.a.createElement(r.a.Fragment,null,r.a.createElement(O.a,{title:o?"Use your Corporations power and influence to bribe Faction leaders in exchange for reputation":"Your Corporation is not powerful enough to bribe Faction leaders"},r.a.createElement("span",null,r.a.createElement(M.a,{disabled:!o,onClick:function(){o&&i(!0)}},"Bribe Factions"))),r.a.createElement(s.a,{open:a,onClose:()=>i(!1)}))}function j({profit:e}){const t=Object(C.b)();if(t.dividendPercentage<=0||e<=0)return r.a.createElement(r.a.Fragment,null);const a=t.dividendPercentage/100*e,n=e-a,i=a/t.totalShares;return r.a.createElement(w.a,{rows:[["Retained Profits (after dividends):",r.a.createElement(_.a,{money:n})],["Dividend Percentage:",E.a.format(t.dividendPercentage/100,"0%")],["Dividends per share:",r.a.createElement(_.a,{money:i})],["Your earnings as a shareholder:",r.a.createElement(_.a,{money:t.getDividends()})]]})}function B(){const e=Object(C.b)().storedCycles*b.a.MilliPerCycle;return e<=15e3?r.a.createElement(r.a.Fragment,null):r.a.createElement(x.a,null,"Bonus time: ",Object(k.b)(e),r.a.createElement("br",null),r.a.createElement("br",null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(15),o=a(73),s=a(129),l=a(45),c=a(1),u=a(28),m=a(10),h=a(25),d=a(52);function p(e){const t=Object(l.b)(),a=e.upgrade,n=t.upgrades[a[0]],p=a[1],f=a[2],g=p*Math.pow(f,n),y=a[5];return r.a.createElement(d.a,{item:!0,xs:4},r.a.createElement(h.a,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},r.a.createElement(m.a,{disabled:t.funds<g,sx:{mx:1},onClick:function(){if(!(t.funds<g)){try{Object(o.h)(t,e.upgrade)}catch(e){Object(i.a)(e+"")}e.rerender()}}},r.a.createElement(s.a,{money:g,corp:t})),r.a.createElement(u.a,{title:y},r.a.createElement(c.a,null,a[4]," - lvl ",n))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(15),o=a(45),s=a(73),l=a(129),c=a(1),u=a(28),m=a(10),h=a(25),d=a(52);function p(e){const t=Object(o.b)(),a=e.upgradeData,n=a[3];return r.a.createElement(d.a,{item:!0,xs:4},r.a.createElement(h.a,{display:"flex",alignItems:"center",flexDirection:"row-reverse"},r.a.createElement(m.a,{disabled:t.funds<a[1],sx:{mx:1},onClick:function(){if(!(t.funds<a[1])){try{Object(s.x)(t,e.upgradeData)}catch(e){Object(i.a)(e+"")}e.rerender()}}},r.a.createElement(l.a,{money:a[1],corp:t})),r.a.createElement(u.a,{title:n},r.a.createElement(c.a,null,a[2]))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return b}));var n=a(0),r=a.n(n),i=a(26),o=a(42),s=a(4),l=a(15),c=a(40),u=a(29),m=a(45),h=a(1),d=a(10),p=a(72),f=a(85),g=a(25),y=a(117);function b(e){const t=u.b.Player(),a=t.factions.filter(e=>!!i.a[e].getInfo().offersWork()&&!t.hasGangWith(e)),b=Object(m.b)(),[E,k]=Object(n.useState)(0),[v,_]=Object(n.useState)(0),[w,S]=Object(n.useState)(a.length>0?a[0]:""),C=null===E||null===v||0===E&&0===v||isNaN(E)||isNaN(v)||E<0||v<0||b.funds<E||v>b.numShares;function x(e,t){return(e+t*b.sharePrice)/o.a.BribeToRepRatio}return r.a.createElement(c.a,{open:e.open,onClose:e.onClose},r.a.createElement(h.a,null,"You can use Corporation funds or stock shares to bribe Faction Leaders in exchange for faction reputation."),r.a.createElement(g.a,{display:"flex",alignItems:"center"},r.a.createElement(h.a,null,"Faction:"),r.a.createElement(y.a,{value:w,onChange:function(e){S(e.target.value)}},a.map(e=>{if(i.a[e].getInfo().offersWork()&&!t.hasGangWith(e))return r.a.createElement(p.a,{key:e,value:e},e)}))),r.a.createElement(h.a,null,function(e,t){return 0===e&&0===t?"":isNaN(e)||isNaN(t)||e<0||t<0?"ERROR: Invalid value(s) entered":b.funds<e?"ERROR: You do not have this much money to bribe with":t>b.numShares?"ERROR: You do not have this many shares to bribe with":"You will gain "+s.a.formatReputation(x(e,t))+" reputation with "+w+" with this bribe"}(E||0,v||0)),r.a.createElement(f.a,{onChange:function(e){k(parseFloat(e.target.value))},placeholder:"Corporation funds"}),r.a.createElement(f.a,{sx:{mx:1},onChange:function(e){_(parseFloat(e.target.value))},placeholder:"Stock Shares"}),r.a.createElement(d.a,{disabled:C,sx:{mx:1},onClick:()=>function(t,a){const n=i.a[w];if(C)return;const r=x(t,a);Object(l.a)("You gained "+s.a.formatReputation(r)+" reputation with "+n.name+" by bribing them."),n.playerReputation+=r,b.funds=b.funds-t,b.numShares-=a,e.onClose()}(E||0,v||0)},"Bribe"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(4),o=a(15),s=a(40),l=a(29),c=a(45),u=a(42),m=a(1),h=a(85),d=a(10),p=a(16);function f(e){const t=l.b.Player(),a=Object(c.b)(),[f,g]=Object(n.useState)(null),y=null===f||isNaN(f)||f<=0||f>a.numShares;function b(e){if(null===e.shares)return r.a.createElement(r.a.Fragment,null);if(isNaN(e.shares)||e.shares<=0)return r.a.createElement(r.a.Fragment,null,"ERROR: Invalid value entered for number of shares to sell");if(e.shares>a.numShares)return r.a.createElement(r.a.Fragment,null,"You don't have this many shares to sell!");{const t=a.calculateShareSale(e.shares)[0];return r.a.createElement(r.a.Fragment,null,"Sell ",e.shares," shares for a total of ",i.a.formatMoney(t))}}function E(){if(null===f)return;if(y)return;const n=a.calculateShareSale(f),s=n[0],l=n[1],c=n[2];if(a.numShares-=f,isNaN(a.issuedShares)){console.error("Corporation issuedShares is NaN: "+a.issuedShares);const e=a.issuedShares;isNaN(e)?a.issuedShares=0:a.issuedShares=e}a.issuedShares+=f,a.sharePrice=l,a.shareSalesUntilPriceUpdate=c,a.shareSaleCooldown=u.a.SellSharesCooldown,t.gainMoney(s,"corporation"),e.onClose(),Object(o.a)(r.a.createElement(r.a.Fragment,null,"Sold ",i.a.formatMoney(f)," shares for",r.a.createElement(p.a,{money:s}),". The corporation's stock price fell to ",r.a.createElement(p.a,{money:a.sharePrice}),"as a result of dilution.")),e.rerender()}return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(m.a,null,"Enter the number of shares you would like to sell. The money from selling your shares will go directly to you (NOT your Corporation).",r.a.createElement("br",null),r.a.createElement("br",null),"Selling your shares will cause your corporation's stock price to fall due to dilution. Furthermore, selling a large number of shares all at once will have an immediate effect in reducing your stock price.",r.a.createElement("br",null),r.a.createElement("br",null),"The current price of your company's stock is ",i.a.formatMoney(a.sharePrice)),r.a.createElement(b,{shares:f,corp:a}),r.a.createElement("br",null),r.a.createElement(h.a,{variant:"standard",autoFocus:!0,type:"number",placeholder:"Shares to sell",onChange:function(e){""===e.target.value?g(null):g(Math.round(parseFloat(e.target.value)))},onKeyDown:function(e){13===e.keyCode&&E()}}),r.a.createElement(d.a,{disabled:y,onClick:E,sx:{mx:1}},"Sell shares"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(40),o=a(4),s=a(29),l=a(45),c=a(1),u=a(10),m=a(85);function h(e){const t=s.b.Player(),a=Object(l.b)(),[h,d]=Object(n.useState)(null);const p=1.1*a.sharePrice,f=null===h||isNaN(h)||h<=0||h>a.issuedShares||h*p>t.money;function g(){if(!f&&null!==h){if(a.numShares+=h,isNaN(a.issuedShares)){console.warn("Corporation issuedShares is NaN: "+a.issuedShares),console.warn("Converting to number now");const e=a.issuedShares;isNaN(e)?a.issuedShares=0:a.issuedShares=e}a.issuedShares-=h,t.loseMoney(h*p,"corporation"),e.onClose(),e.rerender()}}function y(){return null===h?r.a.createElement(r.a.Fragment,null):isNaN(h)||h<=0?r.a.createElement(r.a.Fragment,null,"ERROR: Invalid value entered for number of shares to buyback"):h>a.issuedShares?r.a.createElement(r.a.Fragment,null,"There are not this many shares available to buy back. There are only"," ",o.a.formatBigNumber(a.issuedShares)," outstanding shares."):r.a.createElement(r.a.Fragment,null,"Purchase ",h," shares for a total of ",o.a.formatMoney(h*p))}return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"Enter the number of outstanding shares you would like to buy back. These shares must be bought at a 10% premium. However, repurchasing shares from the market tends to lead to an increase in stock price.",r.a.createElement("br",null),r.a.createElement("br",null),"To purchase these shares, you must use your own money (NOT your Corporation's funds).",r.a.createElement("br",null),r.a.createElement("br",null),"The current buyback price of your company's stock is ",o.a.formatMoney(p),". Your company currently has ",o.a.formatBigNumber(a.issuedShares)," outstanding stock shares."),r.a.createElement(y,null),r.a.createElement("br",null),r.a.createElement(m.a,{autoFocus:!0,type:"number",placeholder:"Shares to buyback",onChange:function(e){""===e.target.value?d(null):d(Math.round(parseFloat(e.target.value)))},onKeyDown:function(e){13===e.keyCode&&g()}}),r.a.createElement(u.a,{disabled:f,onClick:g},"Buy shares"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(15),o=a(40),s=a(42),l=a(73),c=a(45),u=a(1),m=a(85),h=a(10);function d(e){const t=Object(c.b)(),[a,d]=Object(n.useState)(0),p=!isNaN(a)&&a>=0&&a<=100*s.a.DividendMaxPercentage;function f(){if(p&&null!==a){try{Object(l.g)(t,a/100)}catch(e){Object(i.a)(e+"")}e.onClose()}}return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(u.a,null,"Dividends are a distribution of a portion of the corporation's profits to the shareholders. This includes yourself, as well.",r.a.createElement("br",null),r.a.createElement("br",null),"In order to issue dividends, simply allocate some percentage of your corporation's profits to dividends. This percentage must be an integer between 0 and 100. (A percentage of 0 means no dividends will be issued)",r.a.createElement("br",null),r.a.createElement("br",null),"Two important things to note:",r.a.createElement("br",null),"* Issuing dividends will negatively affect your corporation's stock price",r.a.createElement("br",null),r.a.createElement("br",null),"Example: Assume your corporation makes $100m / sec in profit and you allocate 40% of that towards dividends. That means your corporation will gain $60m / sec in funds and the remaining $40m / sec will be paid as dividends. Since your corporation starts with 1 billion shares, every shareholder will be paid $0.04 per share per second before taxes."),r.a.createElement(m.a,{autoFocus:!0,value:a,onChange:function(e){if(""===e.target.value)d(0);else{let t=parseFloat(e.target.value);t>100&&(t=100),t<0&&(t=0),d(t)}},onKeyDown:function(e){13===e.keyCode&&f()},placeholder:"Dividend %",type:"number"}),r.a.createElement(h.a,{disabled:!p,sx:{mx:1},onClick:f},"Allocate Dividend Percentage"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(4),o=a(15),s=a(40),l=a(32),c=a(42),u=a(45),m=a(1),h=a(85),d=a(10);function p(e){const t=Object(u.b)();if(null===e.shares)return r.a.createElement(r.a.Fragment,null);const a=Math.round(.9*t.sharePrice),n=Math.round(.2*t.totalShares),o=n-n%1e6;let s=e.shares;return isNaN(s)?r.a.createElement(m.a,null,"Invalid input"):(s/=1e7,s=1e7*Math.round(s),s<1e7?r.a.createElement(m.a,null,"Must issue at least 10 million new shares"):s>o?r.a.createElement(m.a,null,"You cannot issue that many shares"):r.a.createElement(m.a,null,"Issue ",i.a.format(s,"0.000a")," new shares for"," ",i.a.formatMoney(s*a),"?"))}function f(e){const t=Object(u.b)(),[a,f]=Object(n.useState)(null),g=Math.round(.2*t.totalShares),y=g-g%1e6,b=1e7*Math.round((a||0)/1e7),E=null===a||isNaN(b)||b<1e7||b>y;function k(){if(null===a)return;if(E)return;const n=Math.round(.9*t.sharePrice);let r=a;r=1e7*Math.round(r/1e7);const s=r*n;t.issueNewSharesCooldown=c.a.IssueNewSharesCooldown,t.totalShares+=r;let u=Object(l.a)(0,Math.round(r/2));u=1e6*Math.round(u/1e6),t.issuedShares+=r-u,t.funds=t.funds+s,t.immediatelyUpdateSharePrice(),e.onClose(),Object(o.a)(`Issued ${i.a.format(r,"0.000a")} and raised ${i.a.formatMoney(s)}. ${i.a.format(u,"0.000a")} of these shares were bought by private investors.<br><br>Stock price decreased to `+i.a.formatMoney(t.sharePrice))}return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(m.a,null,"You can issue new equity shares (i.e. stocks) in order to raise capital for your corporation.",r.a.createElement("br",null),r.a.createElement("br",null)," * You can issue at most ",i.a.formatMoney(y)," new shares",r.a.createElement("br",null)," * New shares are sold at a 10% discount",r.a.createElement("br",null)," * You can only issue new shares once every 12 hours",r.a.createElement("br",null)," * Issuing new shares causes dilution, resulting in a decrease in stock price and lower dividends per share",r.a.createElement("br",null)," * Number of new shares issued must be a multiple of 10 million",r.a.createElement("br",null),r.a.createElement("br",null),"When you choose to issue new equity, private shareholders have first priority for up to 50% of the new shares. If they choose to exercise this option, these newly issued shares become private, restricted shares, which means you cannot buy them back."),r.a.createElement(p,{shares:a}),r.a.createElement(h.a,{autoFocus:!0,placeholder:"# New Shares",onChange:function(e){""===e.target.value?f(null):f(parseFloat(e.target.value))},onKeyDown:function(e){13===e.keyCode&&k()}}),r.a.createElement(d.a,{disabled:E,onClick:k,sx:{mx:1}},"Issue New Shares"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(4),o=a(42),s=a(40),l=a(45),c=a(1),u=a(10);function m(e){const t=Object(l.b)(),a=t.determineValuation();let n=0,m=4;switch(t.fundingRound){case 0:n=.1,m=4;break;case 1:n=.35,m=3;break;case 2:n=.25,m=3;break;case 3:n=.2,m=2.5;break;default:return r.a.createElement(r.a.Fragment,null)}const h=a*n*m,d=Math.floor(o.a.INITIALSHARES*n);return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"An investment firm has offered you ",i.a.formatMoney(h)," in funding in exchange for a"," ",i.a.format(100*n,"0.000a"),"% stake in the company (",i.a.format(d,"0.000a")," shares).",r.a.createElement("br",null),r.a.createElement("br",null),"Do you accept or reject this offer?",r.a.createElement("br",null),r.a.createElement("br",null),"Hint: Investment firms will offer more money if your corporation is turning a profit"),r.a.createElement(u.a,{onClick:function(){t.fundingRound++,t.addFunds(h),t.numShares-=d,e.rerender(),e.onClose()}},"Accept"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(15),o=a(40),s=a(4),l=a(45),c=a(1),u=a(10),m=a(85),h=a(25);function d(e){const t=Object(l.b)(),[a,d]=Object(n.useState)(""),p=t.determineValuation()/t.totalShares;function f(){const n=parseFloat(a),r=t.determineValuation()/t.totalShares;isNaN(n)?Object(i.a)("Invalid value for number of issued shares"):n>t.numShares?Object(i.a)("Error: You don't have that many shares to issue!"):(t.public=!0,t.sharePrice=r,t.issuedShares=n,t.numShares-=n,t.addFunds(n*r),e.rerender(),Object(i.a)(`You took your ${t.name} public and earned `+s.a.formatMoney(n*r)+" in your IPO"),e.onClose())}return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"Enter the number of shares you would like to issue for your IPO. These shares will be publicly sold and you will no longer own them. Your Corporation will receive ",s.a.formatMoney(p)," per share (the IPO money will be deposited directly into your Corporation's funds).",r.a.createElement("br",null),r.a.createElement("br",null),"You have a total of ",s.a.format(t.numShares,"0.000a")," of shares that you can issue."),r.a.createElement(h.a,{display:"flex",alignItems:"center"},r.a.createElement(m.a,{value:a,onChange:function(e){d(e.target.value)},autoFocus:!0,type:"number",placeholder:"Shares to issue",onKeyDown:function(e){13===e.keyCode&&f()}}),r.a.createElement(u.a,{disabled:parseFloat(a)<0||parseFloat(a)>t.numShares,sx:{mx:1},onClick:f},"Go Public")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(1001),o=a(1002),s=a(29),l=a(163);function c(e,t,a){const n=a-Math.pow(t,.9)/250-e.intelligence/1600;return n<0?0:n>3?3:n}function u(e){const t=s.b.Player(),a=s.b.Router(),[u,m]=Object(n.useState)(!1);if(void 0===e.location.infiltrationData)throw new Error("Trying to do infiltration on invalid location.");const h=e.location.infiltrationData.startingSecurityLevel,d=function(e,t){return c(e,e.strength+e.defense+e.dexterity+e.agility+e.charisma,t)}(t,h),p=function(e,t){return c(e,Object(l.b)(9e3*e.strength_exp_mult,e.strength_mult)+Object(l.b)(9e3*e.defense_exp_mult,e.defense_mult)+Object(l.b)(9e3*e.agility_exp_mult,e.agility_mult)+Object(l.b)(9e3*e.dexterity_exp_mult,e.dexterity_mult)+Object(l.b)(9e3*e.charisma_exp_mult,e.charisma_mult),t)}(t,h);return console.log(`${d} ${p}`),u?r.a.createElement(o.a,{StartingDifficulty:h,Difficulty:d,Reward:p,MaxLevel:e.location.infiltrationData.maxClearanceLevel}):r.a.createElement(i.a,{Location:e.location,Difficulty:d,MaxLevel:e.location.infiltrationData.maxClearanceLevel,start:()=>m(!0),cancel:function(){a.toCity()}})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(52),o=a(1),s=a(10),l=a(4);function c(e,t){let a="";return t<=0?t=0:t>13?t=13:(t--,a=">"),r.a.createElement("span",{style:{color:e}},"=".repeat(t),a," ".repeat(13-a.length-t))}function u(e){return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,{variant:"h4"},"Infiltrating ",e.Location.name)),r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,{variant:"h5",color:"primary"},"Maximum level: ",e.MaxLevel)),r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,{variant:"h5",color:"primary"},"Difficulty: ",l.a.format(33.3333*e.Difficulty,"0")," / 100")),e.Difficulty>1.5&&r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,{variant:"h5",color:"primary"},"Warning: This location is too heavily guarded for your current stats, try training or finding an easier location.")),r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"[",0===(t=e.Difficulty)?r.a.createElement("span",{style:{color:"white"}},">"," ".repeat(38)):r.a.createElement(r.a.Fragment,null,c("white",13*t),c("orange",13*(t-1)),c("red",13*(t-2))),"]"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ^ ^ ^ ^"),r.a.createElement(o.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," Trivial Normal Hard Impossible")),r.a.createElement(i.a,{item:!0,xs:10},r.a.createElement(o.a,null,"Infiltration is a series of short minigames that get progressively harder. You take damage for failing them. Reaching the maximum level rewards you with intel you can trade for money or reputation."),r.a.createElement("br",null),r.a.createElement(o.a,null,"The minigames you play are randomly selected. It might take you few tries to get used to them."),r.a.createElement("br",null),r.a.createElement(o.a,null,"No game require use of the mouse."),r.a.createElement("br",null),r.a.createElement(o.a,null,"Spacebar is the default action/confirm button."),r.a.createElement("br",null),r.a.createElement(o.a,null,"Everything that uses arrow can also use WASD"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sometimes the rest of the keyboard is used.")),r.a.createElement(i.a,{item:!0,xs:3},r.a.createElement(s.a,{onClick:e.start},"Start")),r.a.createElement(i.a,{item:!0,xs:3},r.a.createElement(s.a,{onClick:e.cancel},"Cancel"))));var t}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n,r=a(29),i=a(0),o=a.n(i),s=a(52),l=a(10),c=a(1003),u=a(1004),m=a(1006),h=a(1007),d=a(1008),p=a(1009),f=a(1010),g=a(1011),y=a(1012),b=a(1013),E=a(1);!function(e){e[e.Countdown=0]="Countdown",e[e.Minigame=1]="Minigame",e[e.Result=2]="Result",e[e.Sell=3]="Sell"}(n||(n={}));const k=[m.a,u.a,h.a,d.a,p.a,f.a,g.a,y.a];function v(e){const t=r.b.Player(),a=r.b.Router(),[u,m]=Object(i.useState)(1),[h,d]=Object(i.useState)(n.Countdown),[p,f]=Object(i.useState)(""),[g,y]=Object(i.useState)({lastGames:[-1,-1],id:Math.floor(Math.random()*k.length)});function v(){let e=g.lastGames[0];const t=[g.lastGames[0],g.lastGames[1],g.id];for(;t.includes(e);)e=Math.floor(Math.random()*k.length);return e}function _(){y({lastGames:[g.lastGames[1],g.id],id:v()})}function w(e){f(t=>{let a=t;return a+=e?"✓":"✗",a.length>15&&(a=a.slice(1)),a})}let S;switch(h){case n.Countdown:S=o.a.createElement(c.a,{onFinish:()=>d(n.Minigame)});break;case n.Minigame:{const r=k[g.id];S=o.a.createElement(r,{onSuccess:function(){w(!0),u===e.MaxLevel?d(n.Sell):(d(n.Countdown),m(u+1)),_()},onFailure:function(r){d(n.Countdown),w(!1);const i=null!=r&&r.automated?t.hp:3*e.StartingDifficulty;t.takeDamage(i)?a.toCity():_()},difficulty:e.Difficulty+u/50});break}case n.Sell:S=o.a.createElement(b.a,{StartingDifficulty:e.StartingDifficulty,Difficulty:e.Difficulty,Reward:e.Reward,MaxLevel:e.MaxLevel})}function C(){return o.a.createElement(E.a,{variant:"h4"},o.a.createElement("span",{style:{color:"gray"}},p.slice(0,p.length-1)),p[p.length-1])}return o.a.createElement(o.a.Fragment,null,o.a.createElement(s.a,{container:!0,spacing:3},o.a.createElement(s.a,{item:!0,xs:3},o.a.createElement(l.a,{onClick:function(){a.toCity()}},"Cancel")),o.a.createElement(s.a,{item:!0,xs:3},o.a.createElement(E.a,null,"Level: ",u," / ",e.MaxLevel),o.a.createElement(C,null)),o.a.createElement(s.a,{item:!0,xs:12},S)))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(52),o=a(1);function s(e){const[t,a]=Object(n.useState)(3);return Object(n.useEffect)(()=>{0!==t?setTimeout(()=>a(t-1),200):e.onFinish()}),r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(o.a,{variant:"h4"},"Get Ready!"),r.a.createElement(o.a,{variant:"h4"},t))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(251),c=a(205),u=a(557),m=a(1);const h={Trivial:{timer:8e3,min:2,max:3},Normal:{timer:6e3,min:4,max:5},Hard:{timer:4e3,min:4,max:6},Impossible:{timer:2500,min:7,max:7}};function d(e){const t={timer:0,min:0,max:0};Object(c.a)(h,e.difficulty,t);const a=t.timer,[d,p]=Object(n.useState)(""),[f]=Object(n.useState)(function(e){let t="";const a=Object(l.b)(e.min,e.max);for(let e=0;e<a;e++)t+=["[","<","(","{"][Math.floor(4*Math.random())];return t}(t));return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(m.a,{variant:"h4"},"Close the brackets"),r.a.createElement(m.a,{style:{fontSize:"5em"}},`${f}${d}`,r.a.createElement(u.a,null)),r.a.createElement(o.a,{onKeyDown:function(t){t.preventDefault();const a=function(e){return")"===e.key?")":"]"===e.key?"]":"}"===e.key?"}":">"===e.key?">":""}(t);a&&(!function(e,t){return"["===e&&"]"===t||"<"===e&&">"===t||"("===e&&")"===t||"{"===e&&"}"===t}(f[f.length-d.length-1],a)?e.onFailure():f.length!==d.length+1?p(d+a):e.onSuccess())},onFailure:e.onFailure})))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(205),c=a(1);const u={Trivial:{window:600},Normal:{window:325},Hard:{window:250},Impossible:{window:150}};function m(e){const t={window:0};Object(l.a)(u,e.difficulty,t);const[a,m]=Object(n.useState)(0);return Object(n.useEffect)(()=>{let e=window.setTimeout(()=>{m(1),e=window.setTimeout(()=>{m(2),e=window.setTimeout(()=>m(0),t.window)},250)},3250*Math.random()+1500-(250+t.window));return()=>{clearInterval(e)}},[]),r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:5e3,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(c.a,{variant:"h4"},"Slash when his guard is down!"),0===a&&r.a.createElement(c.a,{variant:"h4"},"Guarding ..."),1===a&&r.a.createElement(c.a,{variant:"h4"},"Preparing?"),2===a&&r.a.createElement(c.a,{variant:"h4"},"ATTACKING!"),r.a.createElement(o.a,{onKeyDown:function(t){t.preventDefault()," "===t.key&&(2!==a?e.onFailure():e.onSuccess())},onFailure:e.onFailure})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(251),c=a(205),u=a(557),m=a(1);const h={Trivial:{timer:16e3,min:3,max:4},Normal:{timer:12500,min:2,max:3},Hard:{timer:15e3,min:3,max:4},Impossible:{timer:8e3,min:4,max:4}};function d(e){const t={timer:0,min:0,max:0};Object(c.a)(h,e.difficulty,t);const a=t.timer,[d]=Object(n.useState)(function(e){const t=Object(l.b)(e.min,e.max);let a="";for(let e=0;e<t;e++)e>0&&(a+=" "),a+=p[Math.floor(Math.random()*p.length)];return a}(t)),[f,g]=Object(n.useState)("");return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(m.a,{variant:"h4"},"Type it backward"),r.a.createElement(o.a,{onKeyDown:function(t){if(t.preventDefault(),"Backspace"===t.key)return;const a=f+t.key.toUpperCase();d.startsWith(a)?d===a?e.onSuccess():g(a):e.onFailure()},onFailure:e.onFailure})),r.a.createElement(i.a,{item:!0,xs:6},r.a.createElement(m.a,{style:{transform:"scaleX(-1)"}},d)),r.a.createElement(i.a,{item:!0,xs:6},r.a.createElement(m.a,null,f,r.a.createElement(u.a,null))))}const p=["ALGORITHM","ANALOG","APP","APPLICATION","ARRAY","BACKUP","BANDWIDTH","BINARY","BIT","BITE","BITMAP","BLOG","BLOGGER","BOOKMARK","BOOT","BROADBAND","BROWSER","BUFFER","BUG","BUS","BYTE","CACHE","CAPS LOCK","CAPTCHA","CD","CD-ROM","CLIENT","CLIPBOARD","CLOUD","COMPUTING","COMMAND","COMPILE","COMPRESS","COMPUTER","CONFIGURE","COOKIE","COPY","CPU","CYBERCRIME","CYBERSPACE","DASHBOARD","DATA","MINING","DATABASE","DEBUG","DECOMPRESS","DELETE","DESKTOP","DEVELOPMENT","DIGITAL","DISK","DNS","DOCUMENT","DOMAIN","DOMAIN NAME","DOT","DOT MATRIX","DOWNLOAD","DRAG","DVD","DYNAMIC","EMAIL","EMOTICON","ENCRYPT","ENCRYPTION","ENTER","EXABYTE","FAQ","FILE","FINDER","FIREWALL","FIRMWARE","FLAMING","FLASH","FLASH DRIVE","FLOPPY DISK","FLOWCHART","FOLDER","FONT","FORMAT","FRAME","FREEWARE","GIGABYTE","GRAPHICS","HACK","HACKER","HARDWARE","HOME PAGE","HOST","HTML","HYPERLINK","HYPERTEXT","ICON","INBOX","INTEGER","INTERFACE","INTERNET","IP ADDRESS","ITERATION","JAVA","JOYSTICK","JUNKMAIL","KERNEL","KEY","KEYBOARD","KEYWORD","LAPTOP","LASER PRINTER","LINK","LINUX","LOG OUT","LOGIC","LOGIN","LURKING","MACINTOSH","MACRO","MAINFRAME","MALWARE","MEDIA","MEMORY","MIRROR","MODEM","MONITOR","MOTHERBOARD","MOUSE","MULTIMEDIA","NET","NETWORK","NODE","NOTEBOOK","COMPUTER","OFFLINE","ONLINE","OPENSOURCE","OPERATING","SYSTEM","OPTION","OUTPUT","PAGE","PASSWORD","PASTE","PATH","PHISHING","PIRACY","PIRATE","PLATFORM","PLUGIN","PODCAST","POPUP","PORTAL","PRINT","PRINTER","PRIVACY","PROCESS","PROGRAM","PROGRAMMER","PROTOCOL","QUEUE","QWERTY","RAM","REALTIME","REBOOT","RESOLUTION","RESTORE","ROM","ROOT","ROUTER","RUNTIME","SAVE","SCAN","SCANNER","SCREEN","SCREENSHOT","SCRIPT","SCROLL","SCROLL","SEARCH","ENGINE","SECURITY","SERVER","SHAREWARE","SHELL","SHIFT","SHIFT KEY","SNAPSHOT","SOCIAL NETWORKING","SOFTWARE","SPAM","SPAMMER","SPREADSHEET","SPYWARE","STATUS","STORAGE","SUPERCOMPUTER","SURF","SYNTAX","TABLE","TAG","TERMINAL","TEMPLATE","TERABYTE","TEXT EDITOR","THREAD","TOOLBAR","TRASH","TROJAN HORSE","TYPEFACE","UNDO","UNIX","UPLOAD","URL","USER","USER INTERFACE","USERNAME","UTILITY","VERSION","VIRTUAL","VIRTUAL MEMORY","VIRUS","WEB","WEBMASTER","WEBSITE","WIDGET","WIKI","WINDOW","WINDOWS","WIRELESS","PROCESSOR","WORKSTATION","WEB","WORM","WWW","XML","ZIP"]},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(205),c=a(1);const u={Trivial:{timer:12e3,size:6},Normal:{timer:9e3,size:8},Hard:{timer:5e3,size:9},Impossible:{timer:2500,size:12}};function m(e){const t={timer:0,size:0};Object(l.a)(u,e.difficulty,t);const a=t.timer,[m]=Object(n.useState)(function(e){const t=[];t.push(h[Math.floor(Math.random()*h.length)]);for(let a=0;a<e.size;a++){const e=d[Math.floor(Math.random()*d.length)];t.includes(e)?a--:t.push(e)}return function(e){for(let t=e.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[a],e[a]=n}}(t),t}(t)),[p,f]=Object(n.useState)(0);return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(c.a,{variant:"h4"},"Say something nice about the guard."),r.a.createElement(o.a,{onKeyDown:function(t){t.preventDefault();const a=t.key;if(" "===a)return void(h.includes(m[p])?e.onSuccess():e.onFailure());let n=p;for(["ArrowUp","w","ArrowRight","d"].includes(a)&&n++,["ArrowDown","s","ArrowLeft","a"].includes(a)&&n--;n<0;)n+=m.length;for(;n>m.length-1;)n-=m.length;f(n)},onFailure:e.onFailure})),r.a.createElement(i.a,{item:!0,xs:6},r.a.createElement(c.a,{variant:"h5",color:"primary"},"↑"),r.a.createElement(c.a,{variant:"h5",color:"primary"},m[p]),r.a.createElement(c.a,{variant:"h5",color:"primary"},"↓")))}const h=["affectionate","agreeable","bright","charming","creative","determined","energetic","friendly","funny","generous","polite","likable","diplomatic","helpful","giving","kind","hardworking","patient","dynamic","loyal"],d=["aggressive","aloof","arrogant","big-headed","boastful","boring","bossy","careless","clingy","couch potato","cruel","cynical","grumpy","hot air","know it all","obnoxious","pain in the neck","picky","tactless","thoughtless"]},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(251),c=a(205),u=a(1);const m={Trivial:{timer:13e3,min:6,max:8},Normal:{timer:7e3,min:7,max:8},Hard:{timer:5e3,min:8,max:9},Impossible:{timer:3e3,min:9,max:10}};function h(e){const t={timer:0,min:0,max:0};Object(c.a)(m,e.difficulty,t);const a=t.timer,[h]=Object(n.useState)(function(e){const t=["←","→","↑","↓"];let a="";for(let n=0;n<Object(l.b)(e.min,e.max);n++){let e=t[Math.floor(4*Math.random())];for(;e===a[a.length-1];)e=t[Math.floor(4*Math.random())];a+=e}return a}(t)),[d,p]=Object(n.useState)(0);return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(u.a,{variant:"h4"},"Enter the Code!"),r.a.createElement(u.a,{variant:"h4"},h[d]),r.a.createElement(o.a,{onKeyDown:function(t){t.preventDefault(),h[d]===Object(l.a)(t)?(p(d+1),d+1>=h.length&&e.onSuccess()):e.onFailure()},onFailure:e.onFailure})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(205),c=a(251),u=a(1);const m={Trivial:{timer:12500,width:3,height:3,symbols:6},Normal:{timer:15e3,width:4,height:4,symbols:7},Hard:{timer:12500,width:5,height:5,symbols:8},Impossible:{timer:1e4,width:6,height:6,symbols:9}};function h(e){const t={timer:0,width:0,height:0,symbols:0};Object(l.a)(m,e.difficulty,t);const a=t.timer,[h]=Object(n.useState)(function(e){const t=[];for(let a=0;a<Math.round(e.height);a++){const a=[];for(let t=0;t<Math.round(e.width);t++)a.push(d()+d());t.push(a)}return t}(t)),[p]=Object(n.useState)(function(e,t){const a=[];for(let n=0;n<Math.round(t.symbols);n++)a.push(e[Math.floor(Math.random()*e.length)][Math.floor(Math.random()*e[0].length)]);return a}(h,t)),[f,g]=Object(n.useState)(0),[y,b]=Object(n.useState)([0,0]);return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(u.a,{variant:"h4"},"Match the symbols!"),r.a.createElement(u.a,{variant:"h5",color:"primary"},"Targets:"," ",p.map((e,t)=>t==f?r.a.createElement("span",{key:""+t,style:{fontSize:"1em",color:"blue"}},e," "):r.a.createElement("span",{key:""+t,style:{fontSize:"1em"}},e," "))),r.a.createElement("br",null),h.map((e,t)=>r.a.createElement("div",{key:t},r.a.createElement(u.a,null,e.map((e,a)=>a==y[0]&&t==y[1]?r.a.createElement("span",{key:`${a}${t}`,style:{fontSize:"2em",color:"blue"}},e," "):r.a.createElement("span",{key:`${a}${t}`,style:{fontSize:"2em"}},e," "))),r.a.createElement("br",null))),r.a.createElement(o.a,{onKeyDown:function(t){t.preventDefault();const a=[0,0];switch(Object(c.a)(t)){case"↑":a[1]--;break;case"←":a[0]--;break;case"↓":a[1]++;break;case"→":a[0]++}const n=[y[0]+a[0],y[1]+a[1]];if(n[0]=(n[0]+h[0].length)%h[0].length,n[1]=(n[1]+h.length)%h.length,b(n)," "===t.key){if(h[y[1]][y[0]]!==p[f])return void e.onFailure();g(f+1),p.length===f+1&&e.onSuccess()}},onFailure:e.onFailure})))}function d(){return"ABCDEF0123456789"[Math.floor(16*Math.random())]}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(52),o=a(203),s=a(204),l=a(205),c=a(251),u=a(1);const m={Trivial:{timer:15e3,width:3,height:3,mines:4},Normal:{timer:15e3,width:4,height:4,mines:7},Hard:{timer:15e3,width:5,height:5,mines:11},Impossible:{timer:15e3,width:6,height:6,mines:15}};function h(e){const t={timer:0,width:0,height:0,mines:0};Object(l.a)(m,e.difficulty,t);const a=t.timer,[h]=Object(n.useState)(function(e){const t=d(e);for(let a=0;a<e.mines;a++){const e=Math.floor(Math.random()*t.length),n=Math.floor(Math.random()*t[0].length);t[e][n]?a--:t[e][n]=!0}return t}(t)),[p,f]=Object(n.useState)(d(t)),[g,y]=Object(n.useState)([0,0]),[b,E]=Object(n.useState)(!0);return Object(n.useEffect)(()=>{const e=setTimeout(()=>E(!1),2e3);return()=>clearInterval(e)},[]),r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(s.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(u.a,{variant:"h4"},b?"Remember all the mines!":"Mark all the mines!"),h.map((e,t)=>r.a.createElement("div",{key:t},r.a.createElement(u.a,null,e.map((e,a)=>b?h[t][a]?r.a.createElement("span",{key:a},"[?] "):r.a.createElement("span",{key:a},"[ ] "):a==g[0]&&t==g[1]?r.a.createElement("span",{key:a},"[X] "):p[t][a]?r.a.createElement("span",{key:a},"[.] "):r.a.createElement("span",{key:a},"[ ] "))),r.a.createElement("br",null))),r.a.createElement(o.a,{onKeyDown:function(t){if(t.preventDefault(),b)return;const a=[0,0];switch(Object(c.a)(t)){case"↑":a[1]--;break;case"←":a[0]--;break;case"↓":a[1]++;break;case"→":a[0]++}const n=[g[0]+a[0],g[1]+a[1]];if(n[0]=(n[0]+h[0].length)%h[0].length,n[1]=(n[1]+h.length)%h.length,y(n)," "==t.key){if(!h[g[1]][g[0]])return void e.onFailure();f(t=>(t[g[1]][g[0]]=!0,function(e,t){function a(e){return e.flat().reduce((e,t)=>e+(t?1:0),0)}return a(e)===a(t)}(h,t)&&e.onSuccess(),t))}},onFailure:e.onFailure})))}function d(e){const t=[];for(let a=0;a<e.height;a++)t.push(new Array(Math.round(e.width)).fill(!1));return t}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(52),o=a(1),s=a(203),l=a(204),c=a(251),u=a(205);const m={Trivial:{timer:9e3,wiresmin:4,wiresmax:4,rules:2},Normal:{timer:7e3,wiresmin:6,wiresmax:6,rules:2},Hard:{timer:5e3,wiresmin:8,wiresmax:8,rules:3},Impossible:{timer:4e3,wiresmin:9,wiresmax:9,rules:4}},h=["|",".","/","-","█","#"],d=["red","#FFC107","blue","white"],p={red:"red","#FFC107":"yellow",blue:"blue",white:"white"};function f(e){const t={timer:0,wiresmin:0,wiresmax:0,rules:0};Object(u.a)(m,e.difficulty,t);const a=t.timer,[p]=Object(n.useState)(function(e){const t=[],a=Object(c.b)(e.wiresmin,e.wiresmax);for(let e=0;e<a;e++){const e=[d[Math.floor(Math.random()*d.length)]];Math.random()<.15&&e.push(d[Math.floor(Math.random()*d.length)]),t.push({tpe:h[Math.floor(Math.random()*h.length)],colors:e})}return t}(t)),[f,b]=Object(n.useState)(new Array(p.length).fill(!1)),[E]=Object(n.useState)(function(e,t){const a=t.rules,n=[g,y],r=[];for(let t=0;t<a;t++)r.push(n[t%2](e));return r}(p,t));return r.a.createElement(i.a,{container:!0,spacing:3},r.a.createElement(l.a,{millis:a,onExpire:e.onFailure}),r.a.createElement(i.a,{item:!0,xs:12},r.a.createElement(o.a,{variant:"h4"},"Cut the wires with the following properties! (keyboard 1 to 9)"),E.map((e,t)=>r.a.createElement(o.a,{key:t},e.toString())),r.a.createElement(o.a,null,new Array(p.length).fill(0).map((e,t)=>r.a.createElement("span",{key:t}," ",t+1," "))),new Array(8).fill(0).map((e,t)=>r.a.createElement("div",{key:t},r.a.createElement(o.a,null,p.map((e,a)=>3!==t&&4!==t||!f[a]?r.a.createElement("span",{key:a,style:{color:e.colors[t%e.colors.length]}},"|",e.tpe,"| "):r.a.createElement("span",{key:a}," "))))),r.a.createElement(s.a,{onKeyDown:function(t){t.preventDefault();const a=parseInt(t.key);a<1||a>p.length||isNaN(a)||b(t=>{const n=[...t];n[a-1]=!0,E.some(e=>e.shouldCut(p[a-1],a-1))||e.onFailure();const r=[];for(let e=0;e<p.length;e++){let t=!1;for(let a=0;a<E.length;a++)t=t||E[a].shouldCut(p[e],e);r.push(t)}return r.every((e,t)=>e===n[t])&&e.onSuccess(),n})},onFailure:e.onFailure})))}function g(e){const t=Math.floor(Math.random()*e.length);return{toString:()=>`Cut wires number ${t+1}.`,shouldCut:(e,a)=>t===a}}function y(e){const t=e[Math.floor(Math.random()*e.length)].colors[0];return{toString:()=>`Cut all wires colored ${p[t]}.`,shouldCut:e=>e.colors.includes(t)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(26),r=a(0),i=a.n(r),o=a(52),s=a(16),l=a(106),c=a(5),u=a(29),m=a(1),h=a(10),d=a(72),p=a(117);function f(e){const t=u.b.Player(),a=u.b.Router(),[f,g]=Object(r.useState)("none");function y(){a.toCity()}const b=e.MaxLevel*Math.pow(1.01,e.MaxLevel),E=Math.pow(e.Reward+1,1.1)*Math.pow(e.StartingDifficulty,1.2)*30*b*c.a.InfiltrationRep,k=Math.pow(e.Reward+1,2)*Math.pow(e.StartingDifficulty,3)*3e3*b*c.a.InfiltrationMoney;return i.a.createElement(i.a.Fragment,null,i.a.createElement(o.a,{container:!0,spacing:3},i.a.createElement(o.a,{item:!0,xs:10},i.a.createElement(m.a,{variant:"h4"},"Infiltration successful!")),i.a.createElement(o.a,{item:!0,xs:10},i.a.createElement(m.a,{variant:"h5",color:"primary"},"You can trade the confidential information you found for money or reputation."),i.a.createElement(p.a,{value:f,onChange:function(e){g(e.target.value)}},i.a.createElement(d.a,{key:"none",value:"none"},"none"),t.factions.filter(e=>n.a[e].getInfo().offersWork()).map(e=>i.a.createElement(d.a,{key:e,value:e},e))),i.a.createElement(h.a,{onClick:function(){"none"!==f&&(n.a[f].playerReputation+=E,y())}},"Trade for ",i.a.createElement(l.a,{reputation:E})," reputation")),i.a.createElement(o.a,{item:!0,xs:3},i.a.createElement(h.a,{onClick:function(){t.gainMoney(k,"infiltration"),y()}},"Sell for ",i.a.createElement(s.a,{money:k}))),i.a.createElement(o.a,{item:!0,xs:3},i.a.createElement(h.a,{onClick:y},"Quit"))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(558),o=a(1016),s=a(29),l=a(1),c=a(117),u=a(72),m=a(25);const h={Cost:"Cost",Hacking:"Hacking Level",Strength:"Strength Level",Defense:"Defense Level",Dexterity:"Dexterity Level",Agility:"Agility Level",Charisma:"Charisma Level",AverageCombatStats:"Average Combat Stats",AverageAllStats:"Average Stats",TotalNumAugmentations:"Number of Augmentations"};function d(...e){let t=0;for(let a=0;a<e.length;++a)t+=e[a];return t/e.length}const p={Cost:(e,t)=>e.getCost()-t.getCost(),Hacking:(e,t)=>e.hacking-t.hacking,Strength:(e,t)=>e.strength-t.strength,Defense:(e,t)=>e.defense-t.defense,Dexterity:(e,t)=>e.dexterity-t.dexterity,Agility:(e,t)=>e.agility-t.agility,Charisma:(e,t)=>e.charisma-t.charisma,AverageCombatStats:(e,t)=>d(e.strength,e.defense,e.dexterity,e.agility)-d(t.strength,t.defense,t.dexterity,t.agility),AverageAllStats:(e,t)=>d(e.hacking,e.strength,e.defense,e.dexterity,e.agility,e.charisma)-d(t.hacking,t.strength,t.defense,t.dexterity,t.agility,t.charisma),TotalNumAugmentations:(e,t)=>e.augmentations.length-t.augmentations.length};function f(){const e=s.b.Player(),[t,a]=Object(n.useState)(h.Cost);0===e.resleeves.length&&(e.resleeves=Object(i.a)());const d=p[t];if(void 0===d)throw new Error(`sort function '${t}' is undefined`);return e.resleeves.sort(d),r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,"Re-sleeving is the process of digitizing and transferring your consciousness into a new human body, or 'sleeve'. Here at VitaLife, you can purchase new specially-engineered bodies for the re-sleeve process. Many of these bodies even come with genetic and cybernetic Augmentations!",r.a.createElement("br",null),r.a.createElement("br",null),"Re-sleeving will change your experience for every stat. It will also REMOVE all of your currently-installed Augmentations, and replace them with the ones provided by the purchased sleeve. However, Augmentations that you have purchased but not installed will NOT be removed. If you have purchased an Augmentation and then re-sleeve into a body which already has that Augmentation, it will be removed (since you cannot have duplicate Augmentations).",r.a.createElement("br",null),r.a.createElement("br",null),"NOTE: The stats and multipliers displayed on this page do NOT include your bonuses from Source-File."),r.a.createElement(m.a,{display:"flex",alignItems:"center"},r.a.createElement(l.a,null,"Sort By: "),r.a.createElement(c.a,{value:t,onChange:function(e){a(e.target.value)}},Object.keys(h).map(e=>r.a.createElement(u.a,{key:e,value:e},h[e])))),e.resleeves.map((t,a)=>r.a.createElement(o.a,{key:a,player:e,resleeve:t})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(213),r=a(20),i=a(21);class o extends n.a{constructor(){super()}getCost(){const e=this.hacking_exp+this.strength_exp+this.defense_exp+this.dexterity_exp+this.agility_exp+this.charisma_exp;let t=0;for(let e=0;e<this.augmentations.length;++e){const a=r.a[this.augmentations[e].name];null!=a?t+=a.startingCost:console.error("Could not find Augmentation "+this.augmentations[e].name)}return 25e3*e+t*Math.pow(1.2,this.augmentations.length)}toJSON(){return Object(i.b)("Resleeve",this)}static fromJSON(e){return Object(i.a)(o,e.data)}}i.c.constructors.Resleeve=o},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(20),o=a(558),s=a(16),l=a(4),c=a(15),u=a(1),m=a(75),h=a(10),d=a(117),p=a(72),f=a(52);function g(e){const[t,a]=Object(n.useState)(e.resleeve.augmentations[0].name);const g=i.a[t],y=e.resleeve.getCost();return r.a.createElement(m.a,{sx:{my:1}},r.a.createElement(f.a,{container:!0},r.a.createElement(f.a,{item:!0,xs:3},r.a.createElement(u.a,null,"Hacking: ",l.a.formatSkill(e.resleeve.hacking)," (",l.a.formatExp(e.resleeve.hacking_exp)," exp)",r.a.createElement("br",null),"Strength: ",l.a.formatSkill(e.resleeve.strength)," (",l.a.formatExp(e.resleeve.strength_exp)," exp)",r.a.createElement("br",null),"Defense: ",l.a.formatSkill(e.resleeve.defense)," (",l.a.formatExp(e.resleeve.defense_exp)," exp)",r.a.createElement("br",null),"Dexterity: ",l.a.formatSkill(e.resleeve.dexterity)," (",l.a.formatExp(e.resleeve.dexterity_exp)," exp)",r.a.createElement("br",null),"Agility: ",l.a.formatSkill(e.resleeve.agility)," (",l.a.formatExp(e.resleeve.agility_exp)," exp)",r.a.createElement("br",null),"Charisma: ",l.a.formatSkill(e.resleeve.charisma)," (",l.a.formatExp(e.resleeve.charisma_exp)," exp)",r.a.createElement("br",null),"# Augmentations: ",e.resleeve.augmentations.length),r.a.createElement(h.a,{onClick:function(){Object(c.a)(r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{variant:"h5",color:"primary"},"Total Multipliers:"),r.a.createElement(u.a,null,"Hacking Level multiplier: ",l.a.formatPercentage(e.resleeve.hacking_mult),r.a.createElement("br",null),"Hacking Experience multiplier: ",l.a.formatPercentage(e.resleeve.hacking_exp_mult),r.a.createElement("br",null),"Strength Level multiplier: ",l.a.formatPercentage(e.resleeve.strength_mult),r.a.createElement("br",null),"Strength Experience multiplier: ",l.a.formatPercentage(e.resleeve.strength_exp_mult),r.a.createElement("br",null),"Defense Level multiplier: ",l.a.formatPercentage(e.resleeve.defense_mult),r.a.createElement("br",null),"Defense Experience multiplier: ",l.a.formatPercentage(e.resleeve.defense_exp_mult),r.a.createElement("br",null),"Dexterity Level multiplier: ",l.a.formatPercentage(e.resleeve.dexterity_mult),r.a.createElement("br",null),"Dexterity Experience multiplier: ",l.a.formatPercentage(e.resleeve.dexterity_exp_mult),r.a.createElement("br",null),"Agility Level multiplier: ",l.a.formatPercentage(e.resleeve.agility_mult),r.a.createElement("br",null),"Agility Experience multiplier: ",l.a.formatPercentage(e.resleeve.agility_exp_mult),r.a.createElement("br",null),"Charisma Level multiplier: ",l.a.formatPercentage(e.resleeve.charisma_mult),r.a.createElement("br",null),"Charisma Experience multiplier: ",l.a.formatPercentage(e.resleeve.charisma_exp_mult),r.a.createElement("br",null),"Hacking Chance multiplier: ",l.a.formatPercentage(e.resleeve.hacking_chance_mult),r.a.createElement("br",null),"Hacking Speed multiplier: ",l.a.formatPercentage(e.resleeve.hacking_speed_mult),r.a.createElement("br",null),"Hacking Money multiplier: ",l.a.formatPercentage(e.resleeve.hacking_money_mult),r.a.createElement("br",null),"Hacking Growth multiplier: ",l.a.formatPercentage(e.resleeve.hacking_grow_mult),r.a.createElement("br",null),"Salary multiplier: ",l.a.formatPercentage(e.resleeve.work_money_mult),r.a.createElement("br",null),"Company Reputation Gain multiplier: ",l.a.formatPercentage(e.resleeve.company_rep_mult),r.a.createElement("br",null),"Faction Reputation Gain multiplier: ",l.a.formatPercentage(e.resleeve.faction_rep_mult),r.a.createElement("br",null),"Crime Money multiplier: ",l.a.formatPercentage(e.resleeve.crime_money_mult),r.a.createElement("br",null),"Crime Success multiplier: ",l.a.formatPercentage(e.resleeve.crime_success_mult),r.a.createElement("br",null),"Hacknet Income multiplier: ",l.a.formatPercentage(e.resleeve.hacknet_node_money_mult),r.a.createElement("br",null),"Hacknet Purchase Cost multiplier:",l.a.formatPercentage(e.resleeve.hacknet_node_purchase_cost_mult),r.a.createElement("br",null),"Hacknet Level Upgrade Cost multiplier:",l.a.formatPercentage(e.resleeve.hacknet_node_level_cost_mult),r.a.createElement("br",null),"Hacknet Ram Upgrade Cost multiplier:",l.a.formatPercentage(e.resleeve.hacknet_node_ram_cost_mult),r.a.createElement("br",null),"Hacknet Core Upgrade Cost multiplier:",l.a.formatPercentage(e.resleeve.hacknet_node_core_cost_mult),r.a.createElement("br",null),"Bladeburner Max Stamina multiplier:",l.a.formatPercentage(e.resleeve.bladeburner_max_stamina_mult),r.a.createElement("br",null),"Bladeburner Stamina Gain multiplier:",l.a.formatPercentage(e.resleeve.bladeburner_stamina_gain_mult),r.a.createElement("br",null),"Bladeburner Field Analysis multiplier:",l.a.formatPercentage(e.resleeve.bladeburner_analysis_mult),r.a.createElement("br",null),"Bladeburner Success Chance multiplier:",l.a.formatPercentage(e.resleeve.bladeburner_success_chance_mult))))}},"Multipliers")),r.a.createElement(f.a,{item:!0,xs:6},r.a.createElement(d.a,{value:t,onChange:function(e){a(e.target.value)}},e.resleeve.augmentations.map(e=>r.a.createElement(p.a,{key:e.name,value:e.name},e.name))),r.a.createElement(u.a,null,void 0!==g&&g.info)),r.a.createElement(f.a,{item:!0,xs:3},r.a.createElement(u.a,null,"It costs ",r.a.createElement(s.a,{money:y,player:e.player})," to purchase this Sleeve."),r.a.createElement(h.a,{onClick:function(){Object(o.b)(e.resleeve,e.player)&&Object(c.a)(r.a.createElement(r.a.Fragment,null,"You re-sleeved for ",r.a.createElement(s.a,{money:y}),"!"))}},"Purchase"))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return w}));var n=a(0),r=a.n(n),i=a(29),o=a(8),s=a(4),l=a(106),c=a(436),u=a(102),m=a(16),h=a(22),d=a(26),p=a(225),f=a(62),g=a(240),y=a(9),b=a(1),E=a(52),k=a(10),v=a(175);const _=1e3/o.a.MilliPerCycle;function w(){const e=Object(n.useState)(!1)[1];function t(){e(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(t,o.a.MilliPerCycle);return()=>clearInterval(e)},[]);const a=i.b.Player(),w=i.b.Router(),S=d.a[a.currentWorkFactionName];if(a.workType==o.a.WorkTypeFaction){function C(){w.toFaction(S),a.finishFactionWork(!0)}function x(){w.toFaction(S),a.stopFocusing()}return r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,"You are currently ",a.currentWorkFactionDescription," for your faction ",S.name,r.a.createElement("br",null),"(Current Faction Reputation: ",r.a.createElement(l.a,{reputation:S.playerReputation}),"). ",r.a.createElement("br",null),"You have been doing this for ",Object(h.b)(a.timeWorked),r.a.createElement("br",null),r.a.createElement("br",null),"You have earned: ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,{money:a.workMoneyGained})," (",r.a.createElement(u.a,{money:a.workMoneyGainRate*_}),")"," ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{reputation:a.workRepGained})," (",r.a.createElement(c.a,{reputation:a.workRepGainRate*_}),") reputation for this faction ",r.a.createElement("br",null),r.a.createElement("br",null),a.workHackExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workHackExpGained)," (",s.a.formatExp(a.workHackExpGainRate*_)," / sec) hacking exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workStrExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workStrExpGained)," (",s.a.formatExp(a.workStrExpGainRate*_)," / sec) strength exp ",r.a.createElement("br",null)),a.workDefExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDefExpGained)," (",s.a.formatExp(a.workDefExpGainRate*_)," / sec) defense exp ",r.a.createElement("br",null)),a.workDexExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDexExpGained)," (",s.a.formatExp(a.workDexExpGainRate*_)," / sec) dexterity exp ",r.a.createElement("br",null)),a.workAgiExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workAgiExpGained)," (",s.a.formatExp(a.workAgiExpGainRate*_)," / sec) agility exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workChaExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workChaExpGained)," (",s.a.formatExp(a.workChaExpGainRate*_)," / sec) charisma exp ",r.a.createElement("br",null)),r.a.createElement("br",null),"You will automatically finish after working for 20 hours. You can cancel earlier if you wish.",r.a.createElement("br",null),"There is no penalty for cancelling earlier.")),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{sx:{mx:2},onClick:C},"Stop Faction Work"),r.a.createElement(k.a,{onClick:x},"Do something else simultaneously")))}const O=a.className;if(""!==a.className){function C(){a.finishClass(!0),w.toCity()}function x(){w.toFaction(S),w.toCity(),a.stopFocusing()}let e="";return e=O==o.a.ClassGymStrength||O==o.a.ClassGymDefense||O==o.a.ClassGymDexterity||O==o.a.ClassGymAgility?"Stop training at gym":"Stop taking course",r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,"You have been ",O," for ",Object(h.b)(a.timeWorked),r.a.createElement("br",null),r.a.createElement("br",null),"This has cost you: ",r.a.createElement("br",null),r.a.createElement(m.a,{money:-a.workMoneyGained})," (",r.a.createElement(u.a,{money:a.workMoneyLossRate*_}),")"," ",r.a.createElement("br",null),r.a.createElement("br",null),"You have gained: ",r.a.createElement("br",null),a.workHackExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workHackExpGained)," (",s.a.formatExp(a.workHackExpGainRate*_)," / sec) hacking exp ",r.a.createElement("br",null)),a.workStrExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workStrExpGained)," (",s.a.formatExp(a.workStrExpGainRate*_)," / sec) strength exp ",r.a.createElement("br",null)),a.workDefExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDefExpGained)," (",s.a.formatExp(a.workDefExpGainRate*_)," / sec) defense exp ",r.a.createElement("br",null)),a.workDexExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDexExpGained)," (",s.a.formatExp(a.workDexExpGainRate*_)," / sec) dexterity exp ",r.a.createElement("br",null)),a.workAgiExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workAgiExpGained)," (",s.a.formatExp(a.workAgiExpGainRate*_)," / sec) agility exp ",r.a.createElement("br",null)),a.workChaExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workChaExpGained)," (",s.a.formatExp(a.workChaExpGainRate*_)," / sec) charisma exp ",r.a.createElement("br",null)),"You may cancel at any time")),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{sx:{mx:2},onClick:C},e),r.a.createElement(k.a,{onClick:x},"Do something else simultaneously")))}if(a.workType==o.a.WorkTypeCompany){const e=f.a[a.companyName];let t=0;if(null==e||!(e instanceof p.a))throw new Error("Could not find Company: "+a.companyName);function C(){a.finishWork(!0),w.toJob()}function x(){a.stopFocusing(),w.toJob()}t=e.playerReputation;const n=a.jobs[a.companyName],i=.5===a.cancelationPenalty()?"half":"three-quarters";return r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,"You are currently working as a ",n," at ",a.companyName," (Current Company Reputation:"," ",r.a.createElement(l.a,{reputation:t}),")",r.a.createElement("br",null),r.a.createElement("br",null),"You have been working for ",Object(h.b)(a.timeWorked),r.a.createElement("br",null),r.a.createElement("br",null),"You have earned: ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,{money:a.workMoneyGained})," (",r.a.createElement(u.a,{money:a.workMoneyGainRate*_}),")"," ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{reputation:a.workRepGained})," (",r.a.createElement(c.a,{reputation:a.workRepGainRate*_}),") reputation for this company ",r.a.createElement("br",null),r.a.createElement("br",null),a.workHackExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workHackExpGained)," (",s.a.formatExp(a.workHackExpGainRate*_)+" / sec",") hacking exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workStrExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workStrExpGained)," (",s.a.formatExp(a.workStrExpGainRate*_)+" / sec",") strength exp ",r.a.createElement("br",null)),a.workDefExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDefExpGained)," (",s.a.formatExp(a.workDefExpGainRate*_)+" / sec",") defense exp ",r.a.createElement("br",null)),a.workDexExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDexExpGained)," (",s.a.formatExp(a.workDexExpGainRate*_)+" / sec",") dexterity exp ",r.a.createElement("br",null)),a.workAgiExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workAgiExpGained)," (",s.a.formatExp(a.workAgiExpGainRate*_)+" / sec",") agility exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workChaExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workChaExpGained)," (",s.a.formatExp(a.workChaExpGainRate*_)+" / sec",") charisma exp ",r.a.createElement("br",null)),r.a.createElement("br",null),"You will automatically finish after working for 8 hours. You can cancel earlier if you wish, but you will only gain ",i," of the reputation you've earned so far.")),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{sx:{mx:2},onClick:C},"Stop Working"),r.a.createElement(k.a,{onClick:x},"Do something else simultaneously")))}if(a.workType==o.a.WorkTypeCompanyPartTime){function C(){a.finishWorkPartTime(!0),w.toJob()}function x(){a.stopFocusing(),w.toJob()}const e=f.a[a.companyName];let t=0;if(null==e||!(e instanceof p.a))throw new Error("Could not find Company: "+a.companyName);t=e.playerReputation;const n=a.jobs[a.companyName];return r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,"You are currently working as a ",n," at ",a.companyName," (Current Company Reputation:"," ",r.a.createElement(l.a,{reputation:t}),")",r.a.createElement("br",null),r.a.createElement("br",null),"You have been working for ",Object(h.b)(a.timeWorked),r.a.createElement("br",null),r.a.createElement("br",null),"You have earned: ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(m.a,{money:a.workMoneyGained})," (",r.a.createElement(u.a,{money:a.workMoneyGainRate*_}),")"," ",r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{reputation:a.workRepGained})," (",r.a.createElement(c.a,{reputation:a.workRepGainRate*_}),") reputation for this company ",r.a.createElement("br",null),r.a.createElement("br",null),a.workHackExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workHackExpGained)," (",s.a.formatExp(a.workHackExpGainRate*_)+" / sec",") hacking exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workStrExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workStrExpGained)," (",s.a.formatExp(a.workStrExpGainRate*_)+" / sec",") strength exp ",r.a.createElement("br",null)),a.workDefExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDefExpGained)," (",s.a.formatExp(a.workDefExpGainRate*_)+" / sec",") defense exp ",r.a.createElement("br",null)),a.workDexExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workDexExpGained)," (",s.a.formatExp(a.workDexExpGainRate*_)+" / sec",") dexterity exp ",r.a.createElement("br",null)),a.workAgiExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workAgiExpGained)," (",s.a.formatExp(a.workAgiExpGainRate*_)+" / sec",") agility exp ",r.a.createElement("br",null)),r.a.createElement("br",null),a.workChaExpGained>0&&r.a.createElement(r.a.Fragment,null,s.a.formatExp(a.workChaExpGained)," (",s.a.formatExp(a.workChaExpGainRate*_)+" / sec",") charisma exp ",r.a.createElement("br",null)),r.a.createElement("br",null),"You will automatically finish after working for 8 hours. You can cancel earlier if you wish, and there will be no penalty because this is a part-time job.")),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{sx:{mx:2},onClick:C},"Stop Working"),r.a.createElement(k.a,{onClick:x},"Do something else simultaneously")))}if(""!==a.crimeType){const e=Math.round(a.timeWorked/a.timeNeededToCompleteWork*100);let t=Math.round(e/5);t<0&&(t=0),t>20&&(t=20);const n=Object(v.a)({progress:(t+1)/20,totalTicks:20});return r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,r.a.createElement(b.a,null,"You are attempting to ",a.crimeType,"."),r.a.createElement("br",null),r.a.createElement(b.a,null,"Time remaining: ",Object(h.b)(a.timeNeededToCompleteWork-a.timeWorked)),r.a.createElement("br",null),r.a.createElement("pre",null,n))),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{onClick:()=>{w.toLocation(g.a[y.a.Slums]),a.finishCrime(!0)}},"Cancel crime")))}if(""!==a.createProgramName){function C(){a.finishCreateProgramWork(!0),w.toTerminal()}function x(){w.toTerminal(),a.stopFocusing()}return r.a.createElement(E.a,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",style:{minHeight:"100vh"}},r.a.createElement(E.a,{item:!0},r.a.createElement(b.a,null,"You are currently working on coding ",a.createProgramName,".",r.a.createElement("br",null),r.a.createElement("br",null),"You have been working for ",Object(h.b)(a.timeWorked),r.a.createElement("br",null),r.a.createElement("br",null),"The program is ",(a.timeWorkedCreateProgram/a.timeNeededToCompleteWork*100).toFixed(2),"% complete. ",r.a.createElement("br",null),"If you cancel, your work will be saved and you can come back to complete the program later.")),r.a.createElement(E.a,{item:!0},r.a.createElement(k.a,{sx:{mx:2},onClick:C},"Cancel work on creating program"),r.a.createElement(k.a,{onClick:x},"Do something else simultaneously")))}return a.workType||w.toTerminal(),r.a.createElement(r.a.Fragment,null)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return I}));var n=a(0),r=a.n(n),i=a(111),o=a(134),s=a(1),l=a(498),c=a(52),u=a(117),m=a(72),h=a(10),d=a(25),p=a(285),f=a(64),g=a(118),y=a(28),b=a(85),E=a(1056),k=a.n(E),v=a(1057),_=a.n(v),w=a(1019),S=a(15),C=a(350),x=a(1022),O=a(1055),M=a(179),T=a(11),R=a(318),A=a(343),N=a(214);const P=Object(i.a)(e=>Object(o.a)({root:{width:50,padding:e.spacing(2),userSelect:"none"}}));function I(e){const t=P(),a=Object(n.useRef)(null),[i,o]=Object(n.useState)(T.a.CodeInstructionRunTime),[E,v]=Object(n.useState)(T.a.MaxLogCapacity),[I,F]=Object(n.useState)(T.a.MaxPortCapacity),[D,j]=Object(n.useState)(T.a.MaxTerminalCapacity),[B,G]=Object(n.useState)(T.a.AutosaveInterval),[L,W]=Object(n.useState)(T.a.TimestampsFormat),[H,U]=Object(n.useState)(T.a.Locale),[q,K]=Object(n.useState)(!1),[z,$]=Object(n.useState)(!1),[V,Y]=Object(n.useState)(!1),[J,X]=Object(n.useState)(!1),[Q,Z]=Object(n.useState)(!1),[ee,te]=Object(n.useState)(!1),[ae,ne]=Object(n.useState)(null);return r.a.createElement("div",{className:t.root,style:{width:"90%"}},r.a.createElement(s.a,{variant:"h4",gutterBottom:!0},"Options"),r.a.createElement(c.a,{container:!0,spacing:3},r.a.createElement(c.a,{item:!0,xs:12,sm:6},r.a.createElement(p.a,null,r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"The minimum number of milliseconds it takes to execute an operation in Netscript. Setting this too low can result in poor performance if you have many scripts running.")},r.a.createElement(s.a,null,"Netscript exec time (ms)")),r.a.createElement(l.a,{value:i,onChange:function(e,t){o(t),T.a.CodeInstructionRunTime=t},step:1,min:5,max:100,valueLabelDisplay:"auto"})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"The maximum number of lines a script's logs can hold. Setting this too high can cause the game to use a lot of memory if you have many scripts running.")},r.a.createElement(s.a,null,"Netscript log size")),r.a.createElement(l.a,{value:E,onChange:function(e,t){v(t),T.a.MaxLogCapacity=t},step:20,min:20,max:500,valueLabelDisplay:"auto"})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"The maximum number of entries that can be written to a port using Netscript's write() function. Setting this too high can cause the game to use a lot of memory.")},r.a.createElement(s.a,null,"Netscript port size")),r.a.createElement(l.a,{value:I,onChange:function(e,t){F(t),T.a.MaxPortCapacity=t},step:1,min:20,max:100,valueLabelDisplay:"auto"})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"The maximum number of entries that can be written to the terminal. Setting this too high can cause the game to use a lot of memory.")},r.a.createElement(s.a,null,"Terminal capacity")),r.a.createElement(l.a,{value:D,onChange:function(e,t){j(t),T.a.MaxTerminalCapacity=t},step:50,min:50,max:500,valueLabelDisplay:"auto",marks:!0})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"The time (in seconds) between each autosave. Set to 0 to disable autosave.")},r.a.createElement(s.a,null,"Autosave interval (s)")),r.a.createElement(l.a,{value:B,onChange:function(e,t){G(t),T.a.AutosaveInterval=t},step:30,min:0,max:600,valueLabelDisplay:"auto",marks:!0})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressMessages,onChange:e=>T.a.SuppressMessages=e,text:"Suppress story messages",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, then any messages you receive will not appear as popups on the screen. They will still get sent to your home computer as '.msg' files and can be viewed with the 'cat' Terminal command.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressFactionInvites,onChange:e=>T.a.SuppressFactionInvites=e,text:"Suppress faction invites",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, then any faction invites you receive will not appear as popups on the screen. Your outstanding faction invites can be viewed in the 'Factions' page.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressTravelConfirmation,onChange:e=>T.a.SuppressTravelConfirmation=e,text:"Suppress travel confirmations",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, the confirmation message before traveling will not show up. You will automatically be deducted the travel cost as soon as you click.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressBuyAugmentationConfirmation,onChange:e=>T.a.SuppressBuyAugmentationConfirmation=e,text:"Suppress augmentations confirmation",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, the confirmation message before buying augmentation will not show up.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressTIXPopup,onChange:e=>T.a.SuppressTIXPopup=e,text:"Suppress TIX messages",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, the stock market will never create any popup.")})),!!e.player.bladeburner&&r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressBladeburnerPopup,onChange:e=>T.a.SuppressBladeburnerPopup=e,text:"Suppress bladeburner popup",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, then having your Bladeburner actions interrupted by being busy with something else will not display a popup message.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SuppressSavedGameToast,onChange:e=>T.a.SuppressSavedGameToast=e,text:"Suppress Auto-Save Game Toast",tooltip:r.a.createElement(r.a.Fragment,null,'If this is set, there will be no "Game Saved!" toast appearing after an auto-save.')})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.DisableHotkeys,onChange:e=>T.a.DisableHotkeys=e,text:"Disable hotkeys",tooltip:r.a.createElement(r.a.Fragment,null,'If this is set, then most hotkeys (keyboard shortcuts) in the game are disabled. This includes Terminal commands, hotkeys to navigate between different parts of the game, and the "Save and Close (Ctrl + b)" hotkey in the Text Editor.')})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.DisableASCIIArt,onChange:e=>T.a.DisableASCIIArt=e,text:"Disable ascii art",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set all ASCII art will be disabled.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.DisableTextEffects,onChange:e=>T.a.DisableTextEffects=e,text:"Disable text effects",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, text effects will not be displayed. This can help if text is difficult to read in certain areas.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.DisableOverviewProgressBars,onChange:e=>T.a.DisableOverviewProgressBars=e,text:"Disable Overview Progress Bars",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, the progress bars in the character overview will be hidden.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.EnableBashHotkeys,onChange:e=>T.a.EnableBashHotkeys=e,text:"Enable bash hotkeys",tooltip:r.a.createElement(r.a.Fragment,null,"Improved Bash emulation mode. Setting this to 1 enables several new Terminal shortcuts and features that more closely resemble a real Bash-style shell. Note that when this mode is enabled, the default browser shortcuts are overriden by the new Bash shortcuts.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.UseIEC60027_2,onChange:e=>T.a.UseIEC60027_2=e,text:"Use GiB instead of GB",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set all references to memory will use GiB instead of GB, in accordance with IEC 60027-2.")})),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.ExcludeRunningScriptsFromSave,onChange:e=>T.a.ExcludeRunningScriptsFromSave=e,text:"Exclude Running Scripts from Save",tooltip:r.a.createElement(r.a.Fragment,null,"If this is set, the save file will exclude all running scripts. This is only useful if your save is lagging a lot. You'll have to restart your script every time you launch the game.")})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Terminal commands and log entries will be timestamped. See https://date-fns.org/docs/Getting-Started/")},r.a.createElement("span",null,r.a.createElement(b.a,{InputProps:{startAdornment:r.a.createElement(s.a,{color:"format error"===Object(A.a)(L)&&""!==L?"error":"success"},"Timestamp format: ")},value:L,onChange:function(e){W(e.target.value),T.a.TimestampsFormat=e.target.value},placeholder:"yyyy-MM-dd hh:mm:ss"})))),r.a.createElement(f.a,null,r.a.createElement(N.a,{checked:T.a.SaveGameOnFileSave,onChange:e=>T.a.SaveGameOnFileSave=e,text:"Save game on file save",tooltip:r.a.createElement(r.a.Fragment,null,"Save your game any time a file is saved in the script editor.")})),r.a.createElement(f.a,null,r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Sets the locale for displaying numbers.")},r.a.createElement(s.a,null,"Locale ")),r.a.createElement(u.a,{value:H,onChange:function(e){U(e.target.value),T.a.Locale=e.target.value}},r.a.createElement(m.a,{value:"en"},"en"),r.a.createElement(m.a,{value:"bg"},"bg"),r.a.createElement(m.a,{value:"cs"},"cs"),r.a.createElement(m.a,{value:"da-dk"},"da-dk"),r.a.createElement(m.a,{value:"de"},"de"),r.a.createElement(m.a,{value:"en-au"},"en-au"),r.a.createElement(m.a,{value:"en-gb"},"en-gb"),r.a.createElement(m.a,{value:"es"},"es"),r.a.createElement(m.a,{value:"fr"},"fr"),r.a.createElement(m.a,{value:"hu"},"hu"),r.a.createElement(m.a,{value:"it"},"it"),r.a.createElement(m.a,{value:"lv"},"lv"),r.a.createElement(m.a,{value:"no"},"no"),r.a.createElement(m.a,{value:"pl"},"pl"),r.a.createElement(m.a,{value:"ru"},"ru")))),!location.href.startsWith("file://")&&r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,r.a.createElement(s.a,null,"danielyxie / BigD (Original developer): "),r.a.createElement("form",{action:"https://www.paypal.com/cgi-bin/webscr",method:"post",target:"_blank"},r.a.createElement("input",{type:"hidden",name:"cmd",value:"_s-xclick"}),r.a.createElement("input",{type:"hidden",name:"encrypted",value:"-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYA2Y2VGE75oWct89z//G2YEJKmzx0uDTXNrpje9ThxmUnBLFZCY+I11Pors7lGRvFqo5okwnu41CfYMPHDxpAgyYyQndMX9pWUX0gLfBMm2BaHwsNBCwt34WmpQqj7TGsQ+aw9NbmkxiJltGnOa+6/gy10mPZAA3HxiieLeCKkGgDELMAkGBSsOAwIaBQAwgcQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI72F1YSzHUd2AgaDMekHU3AKT93Ey9wkB3486bV+ngFSD6VOHrPweH9QATsp+PMe9QM9vmq+s2bGtTbZaYrFqM3M97SnQ0l7IQ5yuOzdZhRdfysu5uJ8dnuHUzq4gLSzqMnZ6/3c+PoHB8AS1nYHUVL4U0+ogZsO1s97IAQyfck9SaoFlxVtqQhkb8752MkQJJvGu3ZQSQGcVC4hFDPk8prXqyq4BU/k/EliwoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwNzI1MDExODE2WjAjBgkqhkiG9w0BCQQxFgQUNo8efiZ7sk7nwKM/6B6Z7sU8hIIwDQYJKoZIhvcNAQEBBQAEgYB+JB4vZ/r48815/1HF/xK3+rOx7bPz3kAXmbhW/mkoF4OUbzqMeljvDIA9q/BDdlCLtxFOw9XlftTzv0eZCW/uCIiwu5wTzPIfPY1SI8WHe4cJbP2f2EYxIVs8D7OSirbW4yVa0+gACaLLj0rzIzNN8P/5PxgB03D+jwkcJABqng==-----END PKCS7-----"}),r.a.createElement("input",{type:"image",src:"https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif",name:"submit",alt:"PayPal - The safer, easier way to pay online!"}))),r.a.createElement(f.a,null,r.a.createElement(s.a,null,"hydroflame (Current maintainer):"," ",r.a.createElement(g.a,{href:"https://www.google.com/search?q=Where+to+donate+blood+near+me%3F",target:"_blank"},"Donate blood!")," ")))),r.a.createElement(d.a,{sx:{display:"grid",width:"fit-content",height:"fit-content"}},r.a.createElement(d.a,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.a.createElement(h.a,{onClick:()=>e.save()},"Save Game"),r.a.createElement(h.a,{onClick:()=>$(!0)},"Delete Game")),r.a.createElement(d.a,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Export your game to a text file.")},r.a.createElement(h.a,{onClick:()=>e.export()},r.a.createElement(k.a,{color:"primary"}),"Export Game")),r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Import your game from a text file.",r.a.createElement("br",null),"This will ",r.a.createElement("strong",null,"overwrite")," your current game. Back it up first!")},r.a.createElement(h.a,{onClick:function(){if(!(window.File&&window.FileReader&&window.FileList&&window.Blob))return;const e=a.current;if(null===e)throw new Error("import input should not be null");e.click()}},r.a.createElement(_.a,{color:"primary"}),"Import Game",r.a.createElement("input",{ref:a,id:"import-game-file-selector",type:"file",hidden:!0,onChange:function(e){const t=e.target.files;if(null===t)return;const a=t[0];if(!a)return void Object(S.a)("Invalid file selected");const n=new FileReader;n.onload=function(e){const t=e.target;if(null===t)return void console.error("error importing file");const a=t.result;if("string"!=typeof a||null===a)return void console.error("FileReader event was not type string");const n=a;let r,i;try{r=window.atob(n),r=r.trim()}catch(e){console.log(e)}if(!r||""===r)return void M.b.emit("Save game had not content or was not base64 encoded","error",5e3);try{i=JSON.parse(r)}catch(e){console.log(e)}if(!i||"BitburnerSaveObject"!==i.ctor||!i.data)return void M.b.emit("Save game did not seem valid","error",5e3);const o={base64:n,parsed:i},s=i.data.SaveTimestamp;s&&"0"!==s&&(o.exportDate=new Date(parseInt(s,10))),ne(o),te(!0)},n.readAsText(a)}}))),r.a.createElement(C.a,{open:ee,onClose:()=>te(!1),onConfirm:()=>{ae&&(te(!1),Object(R.c)(ae.base64).then(()=>{ne(null),setTimeout(()=>location.reload(),1e3)}))},confirmationText:r.a.createElement(r.a.Fragment,null,"Importing a new game will ",r.a.createElement("strong",null,"completely wipe")," the current data!",r.a.createElement("br",null),r.a.createElement("br",null),"Make sure to have a backup of your current save file before importing.",r.a.createElement("br",null),"The file you are attempting to import seems valid.",r.a.createElement("br",null),r.a.createElement("br",null),(null==ae?void 0:ae.exportDate)&&r.a.createElement(r.a.Fragment,null,"The export date of the save file is ",r.a.createElement("strong",null,null==ae?void 0:ae.exportDate.toString()),r.a.createElement("br",null),r.a.createElement("br",null)))})),r.a.createElement(d.a,{sx:{display:"grid"}},r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After using this, save the game and then reload the page. This is different then normal kill in that normal kill will tell the script to shut down while force kill just removes the references to it (and it should crash on it's own). This will not remove the files on your computer. Just forcefully kill all running instance of all scripts.")},r.a.createElement(h.a,{onClick:()=>e.forceKill()},"Force kill all active scripts"))),r.a.createElement(d.a,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"Perform a soft reset. Resets everything as if you had just purchased an Augmentation.")},r.a.createElement(h.a,{onClick:function(){T.a.SuppressBuyAugmentationConfirmation?e.softReset():Z(!0)}},"Soft Reset")),r.a.createElement(C.a,{open:Q,onClose:()=>Z(!1),onConfirm:e.softReset,confirmationText:"This will perform the same action as installing Augmentations, are you sure?"}),r.a.createElement(y.a,{title:r.a.createElement(s.a,null,"If your save file is extremely big you can use this button to view a map of all the files on every server. Be careful there might be spoilers.")},r.a.createElement(h.a,{onClick:()=>K(!0)},"Diagnose files"))),r.a.createElement(d.a,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.a.createElement(h.a,{onClick:()=>Y(!0)},"Theme editor"),r.a.createElement(h.a,{onClick:()=>X(!0)},"Style editor")),r.a.createElement(d.a,null,r.a.createElement(g.a,{href:"https://github.com/danielyxie/bitburner/issues/new",target:"_blank"},r.a.createElement(s.a,null,"Report bug")),r.a.createElement(g.a,{href:"https://bitburner.readthedocs.io/en/latest/changelog.html",target:"_blank"},r.a.createElement(s.a,null,"Changelog")),r.a.createElement(g.a,{href:"https://bitburner.readthedocs.io/en/latest/index.html",target:"_blank"},r.a.createElement(s.a,null,"Documentation")),r.a.createElement(g.a,{href:"https://discord.gg/TFc3hKD",target:"_blank"},r.a.createElement(s.a,null,"Discord")),r.a.createElement(g.a,{href:"https://www.reddit.com/r/bitburner",target:"_blank"},r.a.createElement(s.a,null,"Reddit")),r.a.createElement(g.a,{href:"https://plaza.dsolver.ca/games/bitburner",target:"_blank"},r.a.createElement(s.a,null,"Incremental game plaza"))))),r.a.createElement(w.a,{open:q,onClose:()=>K(!1)}),r.a.createElement(C.a,{onConfirm:()=>{$(!1),Object(R.a)().then(()=>setTimeout(()=>location.reload(),1e3)).catch(e=>console.error("Could not delete game: "+e))},open:z,onClose:()=>$(!1),confirmationText:"Really delete your game? (It's permanent!)"}),r.a.createElement(x.a,{open:V,onClose:()=>Y(!1)}),r.a.createElement(O.a,{open:J,onClose:()=>X(!1)}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return _}));var n=a(0),r=a.n(n),i=a(24),o=a(40),s=a(4),l=a(249),c=a(174),u=a(49),m=a(1383),h=a(1384),d=a(54),p=a(1),f=a(75),g=a(150),y=a(151),b=a(152),E=a(66),k=a.n(E);function v(e){const t=Object(i.d)(e.hostname);if(null===t)throw new Error(`server '${e.hostname}' should not be null`);let a=0;for(const e of t.scripts)a+=e.code.length;for(const e of t.textFiles)a+=e.text.length;if(0===a)return r.a.createElement(r.a.Fragment,null);const n=[];for(const e of t.scripts)n.push({name:e.filename,size:e.code.length});for(const e of t.textFiles)n.push({name:e.fn,size:e.text.length});return n.sort((e,t)=>t.size-e.size),r.a.createElement(g.a,{TransitionProps:{unmountOnExit:!0}},r.a.createElement(y.a,{expandIcon:r.a.createElement(k.a,null)},r.a.createElement(p.a,null,t.hostname," (",s.a.formatBigNumber(a),"b)")),r.a.createElement(b.a,null,r.a.createElement(m.a,{component:f.a},r.a.createElement(l.a,null,r.a.createElement(h.a,null,r.a.createElement(d.a,null,r.a.createElement(u.a,null,r.a.createElement(p.a,null,"Filename")),r.a.createElement(u.a,{align:"right"},r.a.createElement(p.a,null,"Size")))),r.a.createElement(c.a,null,n.map(e=>r.a.createElement(d.a,{key:e.name},r.a.createElement(u.a,{component:"th",scope:"row"},r.a.createElement(p.a,null,e.name)),r.a.createElement(u.a,{align:"right"},r.a.createElement(p.a,null,s.a.formatBigNumber(e.size),"b"))))))),r.a.createElement("ul",null)))}function _(e){const t=[];for(const e of Object(i.c)())t.push(e.hostname);return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,null,"Welcome to the file diagnostic! If your save file is really big it's likely because you have too many text/scripts. This tool can help you narrow down where they are."),t.map(e=>r.a.createElement(v,{key:e,hostname:e}))))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(40),o=a(10),s=a(1),l=a(28),c=a(75),u=a(85),m=a(101),h=a(338),d=a.n(h),p=a(1054),f=a.n(p),g=a(1023),y=a(182),b=a(11),E=a(363);function k({name:e,onColorChange:t,color:a,defaultColor:n}){return void 0===a&&(console.error(`color ${e} was undefined, reverting to default`),a=n),r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{sx:{mx:1},label:e,value:a,InputProps:{startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(g.a,{hideTextfield:!0,deferred:!0,value:a,onChange:a=>t(e,"#"+a.hex),disableAlpha:!0})),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{onClick:()=>t(e,n)},r.a.createElement(d.a,{color:"primary"})))}}))}function v(e){const[t,a]=Object(n.useState)({...b.a.theme}),m=Object(E.b)(),h=m&&Object.entries(m).map(([e,t])=>{const n=t.name||e;let i,c=r.a.createElement(s.a,null,n);return t.credit?i=r.a.createElement(s.a,null,t.description||n," ",r.a.createElement("em",null,"by ",t.credit)):t.description&&(i=r.a.createElement(s.a,null,t.description)),i&&(c=r.a.createElement(l.a,{title:i},c)),r.a.createElement(o.a,{onClick:()=>{!function(e){a(e),Object.assign(b.a.theme,e),y.b.emit()}(t.colors)},startIcon:r.a.createElement(f.a,null),key:e,sx:{mr:1,mb:1}},c)})||r.a.createElement(r.a.Fragment,null);function d(e,t){a(a=>(a[e]=t,a)),b.a.theme[e]=t,y.b.emit()}return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,{sx:{px:1,py:1,my:1}},r.a.createElement(l.a,{open:!0,placement:"top",title:r.a.createElement(s.a,null,"Example tooltip")},r.a.createElement(o.a,{color:"primary",size:"small"},"primary button")),r.a.createElement(o.a,{color:"secondary",size:"small"},"secondary button"),r.a.createElement(o.a,{color:"warning",size:"small"},"warning button"),r.a.createElement(o.a,{color:"info",size:"small"},"info button"),r.a.createElement(o.a,{color:"error",size:"small"},"error button"),r.a.createElement(o.a,{disabled:!0,size:"small"},"disabled button"),r.a.createElement("br",null),r.a.createElement(s.a,{color:"primary",variant:"caption"},"text with primary color")," ",r.a.createElement(s.a,{color:"secondary",variant:"caption"},"text with secondary color")," ",r.a.createElement(s.a,{color:"error",variant:"caption"},"text with error color"),r.a.createElement("br",null),r.a.createElement(u.a,{value:"Text field",size:"small"})),r.a.createElement(c.a,{sx:{py:1,my:1}},r.a.createElement(k,{name:"primarylight",onColorChange:d,color:t.primarylight,defaultColor:b.b.theme.primarylight}),r.a.createElement(k,{name:"primary",onColorChange:d,color:t.primary,defaultColor:b.b.theme.primary}),r.a.createElement(k,{name:"primarydark",onColorChange:d,color:t.primarydark,defaultColor:b.b.theme.primarydark}),r.a.createElement("br",null),r.a.createElement(k,{name:"successlight",onColorChange:d,color:t.successlight,defaultColor:b.b.theme.successlight}),r.a.createElement(k,{name:"success",onColorChange:d,color:t.success,defaultColor:b.b.theme.success}),r.a.createElement(k,{name:"successdark",onColorChange:d,color:t.successdark,defaultColor:b.b.theme.successdark}),r.a.createElement("br",null),r.a.createElement(k,{name:"errorlight",onColorChange:d,color:t.errorlight,defaultColor:b.b.theme.errorlight}),r.a.createElement(k,{name:"error",onColorChange:d,color:t.error,defaultColor:b.b.theme.error}),r.a.createElement(k,{name:"errordark",onColorChange:d,color:t.errordark,defaultColor:b.b.theme.errordark}),r.a.createElement("br",null),r.a.createElement(k,{name:"secondarylight",onColorChange:d,color:t.secondarylight,defaultColor:b.b.theme.secondarylight}),r.a.createElement(k,{name:"secondary",onColorChange:d,color:t.secondary,defaultColor:b.b.theme.secondary}),r.a.createElement(k,{name:"secondarydark",onColorChange:d,color:t.secondarydark,defaultColor:b.b.theme.secondarydark}),r.a.createElement("br",null),r.a.createElement(k,{name:"warninglight",onColorChange:d,color:t.warninglight,defaultColor:b.b.theme.warninglight}),r.a.createElement(k,{name:"warning",onColorChange:d,color:t.warning,defaultColor:b.b.theme.warning}),r.a.createElement(k,{name:"warningdark",onColorChange:d,color:t.warningdark,defaultColor:b.b.theme.warningdark}),r.a.createElement("br",null),r.a.createElement(k,{name:"infolight",onColorChange:d,color:t.infolight,defaultColor:b.b.theme.infolight}),r.a.createElement(k,{name:"info",onColorChange:d,color:t.info,defaultColor:b.b.theme.info}),r.a.createElement(k,{name:"infodark",onColorChange:d,color:t.infodark,defaultColor:b.b.theme.infodark}),r.a.createElement("br",null),r.a.createElement(k,{name:"welllight",onColorChange:d,color:t.welllight,defaultColor:b.b.theme.welllight}),r.a.createElement(k,{name:"well",onColorChange:d,color:t.well,defaultColor:b.b.theme.well}),r.a.createElement(k,{name:"white",onColorChange:d,color:t.white,defaultColor:b.b.theme.white}),r.a.createElement(k,{name:"black",onColorChange:d,color:t.black,defaultColor:b.b.theme.black}),r.a.createElement(k,{name:"backgroundprimary",onColorChange:d,color:t.backgroundprimary,defaultColor:b.b.theme.backgroundprimary}),r.a.createElement(k,{name:"backgroundsecondary",onColorChange:d,color:t.backgroundsecondary,defaultColor:b.b.theme.backgroundsecondary}),r.a.createElement(k,{name:"button",onColorChange:d,color:t.button,defaultColor:b.b.theme.button}),r.a.createElement("br",null),r.a.createElement(k,{name:"hp",onColorChange:d,color:t.hp,defaultColor:b.b.theme.hp}),r.a.createElement(k,{name:"money",onColorChange:d,color:t.money,defaultColor:b.b.theme.money}),r.a.createElement(k,{name:"hack",onColorChange:d,color:t.hack,defaultColor:b.b.theme.hack}),r.a.createElement(k,{name:"combat",onColorChange:d,color:t.combat,defaultColor:b.b.theme.combat}),r.a.createElement(k,{name:"cha",onColorChange:d,color:t.cha,defaultColor:b.b.theme.cha}),r.a.createElement(k,{name:"int",onColorChange:d,color:t.int,defaultColor:b.b.theme.int}),r.a.createElement(k,{name:"rep",onColorChange:d,color:t.rep,defaultColor:b.b.theme.rep}),r.a.createElement(k,{name:"disabled",onColorChange:d,color:t.disabled,defaultColor:b.b.theme.disabled})),r.a.createElement(c.a,{sx:{px:1,py:1,my:1}},r.a.createElement(u.a,{sx:{mb:1},multiline:!0,fullWidth:!0,maxRows:3,label:"import / export theme",value:JSON.stringify(t),onChange:function(e){try{const t=JSON.parse(e.target.value);if("object"!=typeof t)return;a(t);for(const e of Object.keys(t))b.a.theme[e]=t[e];y.b.emit()}catch(e){}}}),r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,{sx:{my:1}},"Backup your theme or share it with others by copying the string above."),r.a.createElement(s.a,{sx:{my:1}},"Replace the current theme with a pre-built template using the buttons below."),h)))}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(40),o=a(10),s=a(495),l=a(1),c=a(75),u=a(85),m=a(338),h=a.n(m),d=a(566),p=a.n(d),f=a(182),g=a(11),y=a(364),b=a(28);function E({value:e,onChange:t,refreshId:a}){const[i,o]=Object(n.useState)(),[s,l]=Object(n.useState)(e);function c(e){l(e),o(e?"":"Must have a value")}return Object(n.useEffect)(()=>t(s,i),[s]),Object(n.useEffect)(()=>c(e),[a]),r.a.createElement(u.a,{sx:{my:1},label:"Font-Family",error:!!i,value:s,helperText:i,onChange:function(e){c(e.target.value)},fullWidth:!0})}function k({value:e,onChange:t,refreshId:a}){const[i,o]=Object(n.useState)(),[s,l]=Object(n.useState)(e);function c(e){l(e),e?isNaN(Number(e))?o("Must be a number"):o(""):o("Must have a value")}return Object(n.useEffect)(()=>t(s,i),[s]),Object(n.useEffect)(()=>c(e),[a]),r.a.createElement(u.a,{sx:{my:1},label:"Line Height",error:!!i,value:s,helperText:i,onChange:function(e){c(e.target.value)}})}function v(e){const[t,a]=Object(n.useState)(0),[u,m]=Object(n.useState)(),[d,v]=Object(n.useState)({...g.a.styles});function _(e){Object.assign(g.a.styles,e),f.b.emit()}function w(e,t){m(t),t||v(e)}return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,{variant:"h6"},"Styles Editor"),r.a.createElement(l.a,null,"WARNING: Changing styles ",r.a.createElement("strong",null,"may mess up")," the interface. Drastic changes are"," ",r.a.createElement("strong",null,"NOT recommended"),"."),r.a.createElement(c.a,{sx:{p:2,my:2}},r.a.createElement(E,{value:d.fontFamily,refreshId:t,onChange:(e,t)=>w({...d,fontFamily:e},t)}),r.a.createElement("br",null),r.a.createElement(k,{value:d.lineHeight,refreshId:t,onChange:(e,t)=>w({...d,lineHeight:e},t)}),r.a.createElement("br",null),r.a.createElement(s.a,{sx:{my:1}},r.a.createElement(o.a,{onClick:function(){const e={...y.a};v(e),_(e),a(t+1)},startIcon:r.a.createElement(h.a,null),color:"secondary",variant:"outlined"},"Revert to Defaults"),r.a.createElement(b.a,{title:"Save styles to settings"},r.a.createElement(o.a,{onClick:function(){_(d)},endIcon:r.a.createElement(p.a,null),color:u?"error":"primary",disabled:!!u},"Save Modifications")))))}},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(1059),o=a(1066),s=a(29),l=a(1),c=a(10),u=a(118);function m(){const e=s.b.Player(),[t,a]=Object(n.useState)(!1),m=Object(n.useState)(!1)[1];function h(){m(e=>!e)}return Object(n.useEffect)(()=>{const e=setInterval(h,200);return()=>clearInterval(e)},[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{variant:"h4"},"Sleeves"),r.a.createElement(l.a,null,"Duplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciousness has been copied. In other words, these Synthoids contain a perfect duplicate of your mind.",r.a.createElement("br",null),r.a.createElement("br",null),"Sleeves can be used to perform different tasks synchronously.",r.a.createElement("br",null),r.a.createElement("br",null)),r.a.createElement(c.a,{onClick:()=>a(!0)},"FAQ"),r.a.createElement(u.a,{target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/advancedgameplay/sleeves.html#duplicate-sleeves"},r.a.createElement(l.a,null," Documentation")),e.sleeves.map((e,t)=>r.a.createElement(i.a,{key:t,rerender:h,sleeve:e})),r.a.createElement(o.a,{open:t,onClose:()=>a(!1)}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return O}));var n=a(0),r=a.n(n),i=a(74),o=a(8),s=a(81),l=a(4),c=a(175),u=a(1060),m=a(1061),h=a(16),d=a(102),p=a(29),f=a(436),g=a(1062),y=a(1063),b=a(1064),E=a(1065),k=a(171),v=a(131),_=a(1),w=a(75),S=a(52),C=a(10),x=a(28);function O(e){const t=p.b.Player(),[a,O]=Object(n.useState)(!1),[M,T]=Object(n.useState)(!1),[R,A]=Object(n.useState)(!1),[N,P]=Object(n.useState)(!1),[I,F]=Object(n.useState)(["------","------","------"]);let D=r.a.createElement(r.a.Fragment,null);switch(e.sleeve.currentTask){case i.a.Idle:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently idle");break;case i.a.Company:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently working your job at ",e.sleeve.currentTaskLocation,".");break;case i.a.Faction:{let t="nothing";switch(e.sleeve.factionWorkType){case k.a.Field:t="Field work";break;case k.a.Hacking:t="Hacking contracts";break;case k.a.Security:t="Security work"}D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently doing ",t," for ",e.sleeve.currentTaskLocation,".");break}case i.a.Crime:{const t=Object.values(s.a).find(t=>t.name===e.sleeve.crimeType);if(!t)throw new Error("crime should not be undefined");D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently attempting to ",t.type," (Success Rate:"," ",l.a.formatPercentage(t.successRate(e.sleeve)),").");break}case i.a.Class:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently studying/taking a course at ",e.sleeve.currentTaskLocation,".");break;case i.a.Gym:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently working out at ",e.sleeve.currentTaskLocation,".");break;case i.a.Recovery:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently set to focus on shock recovery. This causes the Sleeve's shock to decrease at a faster rate.");break;case i.a.Synchro:D=r.a.createElement(r.a.Fragment,null,"This sleeve is currently set to synchronize with the original consciousness. This causes the Sleeve's synchronization to increase.");break;default:console.error("Invalid/Unrecognized taskValue in updateSleeveTaskDescription(): "+I[0])}let j=[];if(e.sleeve.currentTask===i.a.Crime)j=[["Money",r.a.createElement(h.a,{money:parseFloat(e.sleeve.currentTaskLocation)}),"(on success)"],["Hacking Exp",l.a.formatExp(e.sleeve.gainRatesForTask.hack),"(2x on success)"],["Strength Exp",l.a.formatExp(e.sleeve.gainRatesForTask.str),"(2x on success)"],["Defense Exp",l.a.formatExp(e.sleeve.gainRatesForTask.def),"(2x on success)"],["Dexterity Exp",l.a.formatExp(e.sleeve.gainRatesForTask.dex),"(2x on success)"],["Agility Exp",l.a.formatExp(e.sleeve.gainRatesForTask.agi),"(2x on success)"],["Charisma Exp",l.a.formatExp(e.sleeve.gainRatesForTask.cha),"(2x on success)"]];else if(j=[["Money:",r.a.createElement(d.a,{money:5*e.sleeve.gainRatesForTask.money})],["Hacking Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.hack)+" / s"],["Strength Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.str)+" / s"],["Defense Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.def)+" / s"],["Dexterity Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.dex)+" / s"],["Agility Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.agi)+" / s"],["Charisma Exp:",l.a.formatExp(5*e.sleeve.gainRatesForTask.cha)+" / s"]],e.sleeve.currentTask===i.a.Company||e.sleeve.currentTask===i.a.Faction){const a=e.sleeve.getRepGain(t);j.push(["Reputation:",r.a.createElement(f.a,{reputation:5*a})])}return r.a.createElement(r.a.Fragment,null,r.a.createElement(S.a,{container:!0,component:w.a},r.a.createElement(S.a,{item:!0,xs:3},r.a.createElement(g.a,{sleeve:e.sleeve}),r.a.createElement(C.a,{onClick:()=>O(!0)},"More Stats"),r.a.createElement(x.a,{title:t.money<o.a.TravelCost?r.a.createElement(_.a,null,"Insufficient funds"):""},r.a.createElement("span",null,r.a.createElement(C.a,{onClick:()=>A(!0),disabled:t.money<o.a.TravelCost},"Travel"))),r.a.createElement(x.a,{title:e.sleeve.shock<100?r.a.createElement(_.a,null,"Unlocked when sleeve has fully recovered"):""},r.a.createElement("span",null,r.a.createElement(C.a,{onClick:()=>P(!0),disabled:e.sleeve.shock<100},"Manage Augmentations")))),r.a.createElement(S.a,{item:!0,xs:5},r.a.createElement(E.a,{player:t,sleeve:e.sleeve,setABC:F}),r.a.createElement(_.a,null,D),r.a.createElement(_.a,null,e.sleeve.currentTask===i.a.Crime&&Object(c.a)({progress:e.sleeve.currentTaskTime/e.sleeve.currentTaskMaxTime,totalTicks:25})),r.a.createElement(C.a,{onClick:function(){switch(e.sleeve.resetTaskStatus(),I[0]){case"------":break;case"Work for Company":e.sleeve.workForCompany(t,I[1]);break;case"Work for Faction":e.sleeve.workForFaction(t,I[1],I[2]);break;case"Commit Crime":e.sleeve.commitCrime(t,I[1]);break;case"Take University Course":e.sleeve.takeUniversityCourse(t,I[2],I[1]);break;case"Workout at Gym":e.sleeve.workoutAtGym(t,I[2],I[1]);break;case"Shock Recovery":e.sleeve.shockRecovery(t);break;case"Synchronize":e.sleeve.synchronize(t);break;default:console.error("Invalid/Unrecognized taskValue in setSleeveTask(): "+I[0])}e.rerender()}},"Set Task")),r.a.createElement(S.a,{item:!0,xs:4},r.a.createElement(v.a,{title:"Earnings (Pre-Synchronization)",rows:j}),r.a.createElement(C.a,{onClick:()=>T(!0)},"More Earnings Info"))),r.a.createElement(y.a,{open:a,onClose:()=>O(!1),sleeve:e.sleeve}),r.a.createElement(b.a,{open:M,onClose:()=>T(!1),sleeve:e.sleeve}),r.a.createElement(m.a,{open:R,onClose:()=>A(!1),sleeve:e.sleeve,rerender:e.rerender}),r.a.createElement(u.a,{open:N,onClose:()=>P(!1),sleeve:e.sleeve}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return E}));var n=a(0),r=a.n(n),i=a(538),o=a(20),s=a(16),l=a(40),c=a(29),u=a(1),m=a(28),h=a(75),d=a(25),p=a(10),f=a(174),g=a(249),y=a(41),b=a(54);function E(e){const t=c.b.Player(),a=Object(n.useState)(!1)[1];function E(){a(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(E,150);return()=>clearInterval(e)},[]);const k=e.sleeve.augmentations.map(e=>e.name),v=Object(i.a)(e.sleeve,t);return r.a.createElement(l.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"You can purchase Augmentations for your Duplicate Sleeves. These Augmentations have the same effect as they would for you. You can only purchase Augmentations that you have unlocked through Factions.",r.a.createElement("br",null),r.a.createElement("br",null),"When purchasing an Augmentation for a Duplicate Sleeve, they are immediately installed. This means that the Duplicate Sleeve will immediately lose all of its stat experience."),r.a.createElement(g.a,{size:"small",padding:"none"},r.a.createElement(f.a,null,v.map(a=>r.a.createElement(b.a,{key:a.name},r.a.createElement(y.b,null,r.a.createElement(p.a,{onClick:()=>function(a){e.sleeve.tryBuyAugmentation(t,a),E()}(a),disabled:t.money<a.startingCost},"Buy")),r.a.createElement(y.b,null,r.a.createElement(d.a,{display:"flex"},r.a.createElement(m.a,{title:a.stats||""},r.a.createElement(u.a,null,a.name)))),r.a.createElement(y.b,null,r.a.createElement(s.a,{money:a.startingCost,player:t})))))),k.length>0&&r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"Owned Augmentations:"),k.map(e=>{const t=o.a[e];let a=r.a.createElement(r.a.Fragment,null);return a="string"==typeof t.info?r.a.createElement(r.a.Fragment,null,r.a.createElement("span",null,t.info),r.a.createElement("br",null),r.a.createElement("br",null),t.stats):r.a.createElement(r.a.Fragment,null,t.info,r.a.createElement("br",null),r.a.createElement("br",null),t.stats),r.a.createElement(m.a,{key:e,title:r.a.createElement(u.a,null,a)},r.a.createElement(h.a,null,r.a.createElement(u.a,null,e)))}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(8),o=a(16),s=a(418),l=a(23),c=a(11),u=a(15),m=a(29),h=a(40),d=a(1),p=a(10);function f(e){const t=m.b.Player();function a(a){t.canAfford(i.a.TravelCost)||Object(u.a)("You cannot afford to have this sleeve travel to another city"),e.sleeve.city=a,t.loseMoney(i.a.TravelCost,"sleeve"),e.sleeve.resetTaskStatus(),e.rerender(),e.onClose()}return r.a.createElement(h.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,null,"Have this sleeve travel to a different city. This affects the gyms and universities at which this sleeve can study. Traveling to a different city costs ",r.a.createElement(o.a,{money:i.a.TravelCost,player:t}),". It will also set your current sleeve task to idle."),c.a.DisableASCIIArt?Object.values(l.a).map(e=>r.a.createElement(p.a,{key:e,onClick:()=>a(e)},e)):r.a.createElement(s.a,{currentCity:e.sleeve.city,onTravel:e=>a(e)})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(4),r=a(0),i=a.n(r),o=a(131);function s(e){const t=[["HP: ",i.a.createElement(i.a.Fragment,null,n.a.formatHp(e.sleeve.hp)," / ",n.a.formatHp(e.sleeve.max_hp))],["City: ",i.a.createElement(i.a.Fragment,null,e.sleeve.city)],["Hacking: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.hacking))],["Strength: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.strength))],["Defense: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.defense))],["Dexterity: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.dexterity))],["Agility: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.agility))],["Charisma: ",i.a.createElement(i.a.Fragment,null,n.a.formatSkill(e.sleeve.charisma))],["Shock: ",i.a.createElement(i.a.Fragment,null,n.a.formatSleeveShock(100-e.sleeve.shock))],["Sync: ",i.a.createElement(i.a.Fragment,null,n.a.formatSleeveSynchro(e.sleeve.sync))],["Memory: ",i.a.createElement(i.a.Fragment,null,n.a.formatSleeveMemory(e.sleeve.memory))]];return i.a.createElement(o.a,{rows:t})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(4),r=a(131),i=a(40),o=a(0),s=a.n(o);function l(e){return s.a.createElement(i.a,{open:e.open,onClose:e.onClose},s.a.createElement(r.a,{rows:[[s.a.createElement(s.a.Fragment,null,"Hacking: "),e.sleeve.hacking,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.hacking_exp)," exp)")],[s.a.createElement(s.a.Fragment,null,"Strength: "),e.sleeve.strength,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.strength_exp)," exp)")],[s.a.createElement(s.a.Fragment,null,"Defense: "),e.sleeve.defense,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.defense_exp)," exp)")],[s.a.createElement(s.a.Fragment,null,"Dexterity: "),e.sleeve.dexterity,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.dexterity_exp)," exp)")],[s.a.createElement(s.a.Fragment,null,"Agility: "),e.sleeve.agility,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.agility_exp)," exp)")],[s.a.createElement(s.a.Fragment,null,"Charisma: "),e.sleeve.charisma,s.a.createElement(s.a.Fragment,null," (",n.a.formatExp(e.sleeve.charisma_exp)," exp)")]],title:"Stats:"}),s.a.createElement("br",null),s.a.createElement(r.a,{rows:[[s.a.createElement(s.a.Fragment,null,"Hacking Level multiplier: "),n.a.formatPercentage(e.sleeve.hacking_mult)],[s.a.createElement(s.a.Fragment,null,"Hacking Experience multiplier: "),n.a.formatPercentage(e.sleeve.hacking_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Strength Level multiplier: "),n.a.formatPercentage(e.sleeve.strength_mult)],[s.a.createElement(s.a.Fragment,null,"Strength Experience multiplier: "),n.a.formatPercentage(e.sleeve.strength_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Defense Level multiplier: "),n.a.formatPercentage(e.sleeve.defense_mult)],[s.a.createElement(s.a.Fragment,null,"Defense Experience multiplier: "),n.a.formatPercentage(e.sleeve.defense_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Dexterity Level multiplier: "),n.a.formatPercentage(e.sleeve.dexterity_mult)],[s.a.createElement(s.a.Fragment,null,"Dexterity Experience multiplier: "),n.a.formatPercentage(e.sleeve.dexterity_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Agility Level multiplier: "),n.a.formatPercentage(e.sleeve.agility_mult)],[s.a.createElement(s.a.Fragment,null,"Agility Experience multiplier: "),n.a.formatPercentage(e.sleeve.agility_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Charisma Level multiplier: "),n.a.formatPercentage(e.sleeve.charisma_mult)],[s.a.createElement(s.a.Fragment,null,"Charisma Experience multiplier: "),n.a.formatPercentage(e.sleeve.charisma_exp_mult)],[s.a.createElement(s.a.Fragment,null,"Faction Reputation Gain multiplier: "),n.a.formatPercentage(e.sleeve.faction_rep_mult)],[s.a.createElement(s.a.Fragment,null,"Company Reputation Gain multiplier: "),n.a.formatPercentage(e.sleeve.company_rep_mult)],[s.a.createElement(s.a.Fragment,null,"Salary multiplier: "),n.a.formatPercentage(e.sleeve.work_money_mult)],[s.a.createElement(s.a.Fragment,null,"Crime Money multiplier: "),n.a.formatPercentage(e.sleeve.crime_money_mult)],[s.a.createElement(s.a.Fragment,null,"Crime Success multiplier: "),n.a.formatPercentage(e.sleeve.crime_success_mult)]],title:"Multipliers:"}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(4),r=a(16),i=a(0),o=a(131),s=a(40);function l(e){return i.createElement(s.a,{open:e.open,onClose:e.onClose},i.createElement(o.a,{rows:[["Money ",i.createElement(r.a,{money:e.sleeve.earningsForTask.money})],["Hacking Exp ",n.a.formatExp(e.sleeve.earningsForTask.hack)],["Strength Exp ",n.a.formatExp(e.sleeve.earningsForTask.str)],["Defense Exp ",n.a.formatExp(e.sleeve.earningsForTask.def)],["Dexterity Exp ",n.a.formatExp(e.sleeve.earningsForTask.dex)],["Agility Exp ",n.a.formatExp(e.sleeve.earningsForTask.agi)],["Charisma Exp ",n.a.formatExp(e.sleeve.earningsForTask.cha)]],title:"Earnings for Current Task:"}),i.createElement("br",null),i.createElement(o.a,{rows:[["Money: ",i.createElement(r.a,{money:e.sleeve.earningsForPlayer.money})],["Hacking Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.hack)],["Strength Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.str)],["Defense Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.def)],["Dexterity Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.dex)],["Agility Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.agi)],["Charisma Exp: ",n.a.formatExp(e.sleeve.earningsForPlayer.cha)]],title:"Total Earnings for Host Consciousness:"}),i.createElement("br",null),i.createElement(o.a,{rows:[["Money: ",i.createElement(r.a,{money:e.sleeve.earningsForSleeves.money})],["Hacking Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.hack)],["Strength Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.str)],["Defense Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.def)],["Dexterity Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.dex)],["Agility Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.agi)],["Charisma Exp: ",n.a.formatExp(e.sleeve.earningsForSleeves.cha)]],title:"Total Earnings for Other Sleeves:"}),i.createElement("br",null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return E}));var n=a(0),r=a.n(n),i=a(74),o=a(81),s=a(9),l=a(23),c=a(26),u=a(171),m=a(117),h=a(72);const d=["Study Computer Science","Data Structures","Networks","Algorithms","Management","Leadership"],p=["Train Strength","Train Defense","Train Dexterity","Train Agility"];function f(e,t){const a=[];for(const n of e.sleeves)t!==n&&n.currentTask===i.a.Company&&a.push(n.currentTaskLocation);const n=Object.keys(e.jobs);for(let e=0;e<n.length;++e)a.includes(n[e])||n[e];return n}function g(e,t){const a=["Bladeburners"];e.gang&&a.push(e.gang.facName);for(const n of e.sleeves)t!==n&&n.currentTask===i.a.Faction&&a.push(n.currentTaskLocation);const n=[];for(const t of e.factions)a.includes(t)||n.push(t);return n}const y={"------":()=>({first:["------"],second:()=>["------"]}),"Work for Company":(e,t)=>{let a=f(e,t);return 0===a.length&&(a=["------"]),{first:a,second:()=>["------"]}},"Work for Faction":(e,t)=>{let a=g(e,t);return 0===a.length&&(a=["------"]),{first:a,second:e=>{const t=c.a[e].getInfo(),a=[];return t.offerHackingWork&&a.push("Hacking Contracts"),t.offerFieldWork&&a.push("Field Work"),t.offerSecurityWork&&a.push("Security Work"),a}}},"Commit Crime":()=>({first:Object.values(o.a).map(e=>e.name),second:()=>["------"]}),"Take University Course":(e,t)=>{let a=[];switch(t.city){case l.a.Aevum:a=[s.a.AevumSummitUniversity];break;case l.a.Sector12:a=[s.a.Sector12RothmanUniversity];break;case l.a.Volhaven:a=[s.a.VolhavenZBInstituteOfTechnology];break;default:a=["No university available in city!"]}return{first:d,second:()=>a}},"Workout at Gym":(e,t)=>{let a=[];switch(t.city){case l.a.Aevum:a=[s.a.AevumCrushFitnessGym,s.a.AevumSnapFitnessGym];break;case l.a.Sector12:a=[s.a.Sector12IronGym,s.a.Sector12PowerhouseGym];break;case l.a.Volhaven:a=[s.a.VolhavenMilleniumFitnessGym];break;default:a=["No gym available in city!"]}return{first:p,second:()=>a}},"Shock Recovery":()=>({first:["------"],second:()=>["------"]}),Synchronize:()=>({first:["------"],second:()=>["------"]})},b={"------":()=>!0,"Work for Company":(e,t)=>f(e,t).length>0,"Work for Faction":(e,t)=>g(e,t).length>0,"Commit Crime":()=>!0,"Take University Course":(e,t)=>[l.a.Aevum,l.a.Sector12,l.a.Volhaven].includes(t.city),"Workout at Gym":(e,t)=>[l.a.Aevum,l.a.Sector12,l.a.Volhaven].includes(t.city),"Shock Recovery":(e,t)=>t.shock<100,Synchronize:(e,t)=>t.sync<100};function E(e){const t=function(e){switch(e.currentTask){case i.a.Idle:return["------","------","------"];case i.a.Company:return["Work for Company",e.currentTaskLocation,"------"];case i.a.Faction:{let t="";switch(e.factionWorkType){case u.a.Hacking:t="Hacking Contracts";break;case u.a.Field:t="Field Work";break;case u.a.Security:t="Security Work"}return["Work for Faction",e.currentTaskLocation,t]}case i.a.Crime:return["Commit Crime",e.crimeType,"------"];case i.a.Class:return["Take University Course",e.className,e.currentTaskLocation];case i.a.Gym:return["Workout at Gym",e.gymStatType,e.currentTaskLocation];case i.a.Recovery:return["Shock Recovery","------","------"];case i.a.Synchro:return["Synchronize","------","------"]}}(e.sleeve),[a,o]=Object(n.useState)(t[0]),[s,l]=Object(n.useState)(t[1]),[c,d]=Object(n.useState)(t[2]),p=Object.keys(b).filter(t=>b[t](e.player,e.sleeve)),f=y[a];if(void 0===f)throw new Error(`No function for task '${a}'`);const g=f(e.player,e.sleeve),E=g.second(s);return g.first.length>0&&!g.first.includes(s)&&(l(g.first[0]),e.setABC([a,g.first[0],c])),E.length>0&&!E.includes(c)&&(d(E[0]),e.setABC([a,s,E[0]])),r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{onChange:function(t){const n=t.target.value,r=y[n];if(void 0===r)throw new Error(`No function for task '${a}'`);const i=r(e.player,e.sleeve),s=i.second(i.first[0]);d(s[0]),l(i.first[0]),o(n),e.setABC([n,i.first[0],s[0]])},value:a},p.map(e=>r.a.createElement(h.a,{key:e,value:e},e))),!(1===g.first.length&&"------"===g.first[0])&&r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(m.a,{onChange:function(t){l(t.target.value),e.setABC([a,t.target.value,c])},value:s},g.first.map(e=>r.a.createElement(h.a,{key:e,value:e},e)))),!(1===E.length&&"------"===E[0])&&r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(m.a,{onChange:function(t){d(t.target.value),e.setABC([a,s,t.target.value])},value:c},E.map(e=>r.a.createElement(h.a,{key:e,value:e},e)))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(40),o=a(1);function s({open:e,onClose:t}){return r.a.createElement(i.a,{open:e,onClose:t},r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{variant:"h4"},"How do Duplicate Sleeves work?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Duplicate Sleeves are essentially clones. You can use them to perform any work type action, such as working for a company/faction or committing a crime. Having sleeves perform these tasks earns you money, experience, and reputation."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeves are their own individuals, which means they each have their own experience and stats."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"When a sleeve earns experience, it earns experience for itself, the player's original 'consciousness', as well as all of the player's other sleeves."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"What is Synchronization (Sync)?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Synchronization is a measure of how aligned your consciousness is with that of your Duplicate Sleeves. It is a numerical value between 1 and 100, and it affects how much experience is earned when the sleeve is performing a task."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"Let N be the sleeve's synchronization. When the sleeve earns experience by performing a task, both the sleeve and the player's original host consciousness earn N% of the amount of experience normally earned by the task. All of the player's other sleeves earn ((N/100)^2 * 100)% of the experience."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"Synchronization can be increased by assigning sleeves to the 'Synchronize' task."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"What is Shock?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeve shock is a measure of how much trauma the sleeve has due to being placed in a new body. It is a numerical value between 0 and 99, where 99 indicates full shock and 0 indicates no shock. Shock affects the amount of experience earned by the sleeve."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeve shock slowly decreases over time. You can further increase the rate at which it decreases by assigning sleeves to the 'Shock Recovery' task."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"Why can't I work for this company or faction?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Only one of your sleeves can work for a given company/faction a time. To clarify further, if you have two sleeves they can work for two different companies, but they cannot both work for the same company."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"Why did my Sleeve stop working?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeves are subject to the same time restrictions as you. This means that they automatically stop working at a company after 8 hours, and stop working for a faction after 20 hours."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"How do I buy Augmentations for my Sleeves?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Your Sleeve needs to have a Shock of 0 in order for you to buy Augmentations for it."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"Why can't I buy the X Augmentation for my sleeve?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Certain Augmentations, like Bladeburner-specific ones and NeuroFlux Governor, are not available for sleeves."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"Do sleeves get reset when installing Augmentations or switching BitNodes?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeves are reset when switching BitNodes, but not when installing Augmentations."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,{variant:"h4"},"What is Memory?"),r.a.createElement("br",null),r.a.createElement(o.a,null,"Sleeve memory dictates what a sleeve's synchronization will be when its reset by switching BitNodes. For example, if a sleeve has a memory of 25, then when you switch BitNodes its synchronization will initially be set to 25, rather than 1."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(o.a,null,"Memory can only be increased by purchasing upgrades from The Covenant. It is a persistent stat, meaning it never gets resets back to 1. The maximum possible value for a sleeve's memory is 100.")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(1068),o=a(1069),s=a(1070),l=a(208),c=a(87),u=a(1071),m=a(1073),h=a(1074),d=a(1075),p=a(34),f=a(55),g=a(24),y=a(1),b=a(52),E=a(10),k=a(25);function v(e){const[t,a]=Object(n.useState)(!1),v=Object(n.useState)(!1)[1];function _(){v(e=>!e)}const[w,S]=Object(n.useState)(p.c.x1);Object(n.useEffect)(()=>{const e=setInterval(_,200);return()=>clearInterval(e)},[]);let C,x=0;for(let t=0;t<e.player.hacknetNodes.length;++t){const a=e.player.hacknetNodes[t];if(Object(f.g)(e.player)){if(a instanceof l.a)throw new Error("node was hacknet node");const e=Object(g.d)(a);if(!(e instanceof c.a))throw new Error("node was not hacknet server");e?x+=e.hashRate:console.warn(`Could not find Hacknet Server object in AllServers map (i=${t})`)}else{if("string"==typeof a)throw new Error("node was ip string");x+=a.moneyGainRatePerSecond}}C=Object(f.g)(e.player)?Object(f.b)(e.player):Object(f.a)(e.player);const O=[()=>S(p.c.x1),()=>S(p.c.x5),()=>S(p.c.x10),()=>S(p.c.MAX)],M=e.player.hacknetNodes.map(t=>{if(Object(f.g)(e.player)){if(t instanceof l.a)throw new Error("node was hacknet node");const a=Object(g.d)(t);if(null==a)throw new Error("Could not find Hacknet Server object in AllServers map for IP: "+t);if(!(a instanceof c.a))throw new Error("node was not hacknet server");return r.a.createElement(s.a,{player:e.player,key:a.hostname,node:a,purchaseMultiplier:w,rerender:_})}if("string"==typeof t)throw new Error("node was ip string");return r.a.createElement(o.a,{player:e.player,key:t.name,node:t,purchaseMultiplier:w,rerender:_})});return r.a.createElement(r.a.Fragment,null,r.a.createElement(y.a,{variant:"h4"},"Hacknet ",Object(f.g)(e.player)?"Servers":"Nodes"),r.a.createElement(i.a,{hasHacknetServers:Object(f.g)(e.player)}),r.a.createElement(d.a,{cost:C,multiplier:w,onClick:function(){Object(f.l)(e.player),_()}}),r.a.createElement("br",null),r.a.createElement(b.a,{container:!0,spacing:2},r.a.createElement(b.a,{item:!0,xs:6},r.a.createElement(h.a,{totalProduction:x,player:e.player})),r.a.createElement(b.a,{item:!0,xs:6},r.a.createElement(m.a,{onClicks:O,purchaseMultiplier:w}))),Object(f.g)(e.player)&&r.a.createElement(E.a,{onClick:()=>a(!0)},"Spend Hashes on Upgrades"),r.a.createElement(k.a,{sx:{display:"grid",width:"fit-content",gridTemplateColumns:"repeat(3, 1fr)"}},M),r.a.createElement(u.a,{open:t,onClose:()=>a(!1)}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(1);function o(e){return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced."),e.hasHacknetServers?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"Here, you can purchase a Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers will perform computations and operations on the network, earning you hashes. Hashes can be spent on a variety of different upgrades."),r.a.createElement(i.a,null,"Hacknet Servers can also be used as servers to run scripts. However, running scripts on a server will reduce its hash rate (hashes generated per second). A Hacknet Server's hash rate will be reduced by the percentage of RAM that is being used by that Server to run scripts.")):r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power."),r.a.createElement(i.a,null,"Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return k}));var n=a(0),r=a.n(n),i=a(34),o=a(55),s=a(16),l=a(102),c=a(1),u=a(52),m=a(75),h=a(10),d=a(41),p=a(174),f=a(249),g=a(54),y=a(28),b=a(4),E=a(195);function k(e){const t=e.node,a=e.purchaseMultiplier,n=e.rerender;let k,v,_;if(t.level>=i.a.MaxLevel)k=r.a.createElement(h.a,{disabled:!0},"MAX LEVEL");else{let u=0;if("MAX"===a)u=Object(o.e)(e.player,t,i.a.MaxLevel);else{const e=i.a.MaxLevel-t.level;u=Math.min(e,a)}const m=Object(E.c)(t.level+u,t.ram,t.cores,e.player.hacknet_node_money_mult)-t.moneyGainRatePerSecond,d=t.calculateLevelUpgradeCost(u,e.player.hacknet_node_level_cost_mult);k=r.a.createElement(y.a,{title:r.a.createElement(c.a,null,"+",r.a.createElement(l.a,{money:m}))},r.a.createElement(h.a,{onClick:function(){const r="MAX"===a?Object(o.e)(e.player,t,i.a.MaxLevel):a;Object(o.n)(e.player,t,r),n()}},"+",u," - ",r.a.createElement(s.a,{money:d,player:e.player})))}if(t.ram>=i.a.MaxRam)v=r.a.createElement(h.a,{disabled:!0},"MAX RAM");else{let u=0;if("MAX"===a)u=Object(o.f)(e.player,t,i.a.MaxRam);else{const e=Math.round(Math.log2(i.a.MaxRam/t.ram));u=Math.min(e,a)}const m=Object(E.c)(t.level,t.ram*Math.pow(2,u),t.cores,e.player.hacknet_node_money_mult)-t.moneyGainRatePerSecond,d=t.calculateRamUpgradeCost(u,e.player.hacknet_node_ram_cost_mult);v=r.a.createElement(y.a,{title:r.a.createElement(c.a,null,"+",r.a.createElement(l.a,{money:m}))},r.a.createElement(h.a,{onClick:function(){const r="MAX"===a?Object(o.f)(e.player,t,i.a.MaxRam):a;Object(o.o)(e.player,t,r),n()}},"+",u," - ",r.a.createElement(s.a,{money:d,player:e.player})))}if(t.cores>=i.a.MaxCores)_=r.a.createElement(h.a,{disabled:!0},"MAX CORES");else{let u=0;if("MAX"===a)u=Object(o.d)(e.player,t,i.a.MaxCores);else{const e=i.a.MaxCores-t.cores;u=Math.min(e,a)}const m=Object(E.c)(t.level,t.ram,t.cores+u,e.player.hacknet_node_money_mult)-t.moneyGainRatePerSecond,d=t.calculateCoreUpgradeCost(u,e.player.hacknet_node_core_cost_mult);_=r.a.createElement(y.a,{title:r.a.createElement(c.a,null,"+",r.a.createElement(l.a,{money:m}))},r.a.createElement(h.a,{onClick:function(){const r="MAX"===a?Object(o.d)(e.player,t,i.a.MaxCores):a;Object(o.k)(e.player,t,r),n()}},"+",u," - ",r.a.createElement(s.a,{money:d,player:e.player})))}return r.a.createElement(u.a,{item:!0,component:m.a,p:1},r.a.createElement(f.a,{size:"small"},r.a.createElement(p.a,null,r.a.createElement(g.a,null,r.a.createElement(d.b,null,r.a.createElement(c.a,null,t.name))),r.a.createElement(g.a,null,r.a.createElement(d.b,null,r.a.createElement(c.a,null,"Production:")),r.a.createElement(d.b,{colSpan:2},r.a.createElement(c.a,null,r.a.createElement(s.a,{money:t.totalMoneyGenerated})," (",r.a.createElement(l.a,{money:t.moneyGainRatePerSecond}),")"))),r.a.createElement(g.a,null,r.a.createElement(d.b,null,r.a.createElement(c.a,null,"Level:")),r.a.createElement(d.b,null,r.a.createElement(c.a,null,t.level)),r.a.createElement(d.b,null,k)),r.a.createElement(g.a,null,r.a.createElement(d.b,null,r.a.createElement(c.a,null,"RAM:")),r.a.createElement(d.b,null,r.a.createElement(c.a,null,b.a.formatRAM(t.ram))),r.a.createElement(d.b,null,v)),r.a.createElement(g.a,null,r.a.createElement(d.b,null,r.a.createElement(c.a,null,"Cores:")),r.a.createElement(d.b,null,r.a.createElement(c.a,null,t.cores)),r.a.createElement(d.b,null,_)))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(34),o=a(55),s=a(16),l=a(222),c=a(383),u=a(1),m=a(52),h=a(75),d=a(10),p=a(41),f=a(174),g=a(249),y=a(54),b=a(4),E=a(170),k=a(28);function v(e){const t=e.node,a=e.purchaseMultiplier,n=e.rerender;let v,_,w,S;if(t.level>=i.b.MaxLevel)v=r.a.createElement(d.a,{disabled:!0},"MAX LEVEL");else{let l=0;if("MAX"===a)l=Object(o.e)(e.player,t,i.b.MaxLevel);else{const e=i.b.MaxLevel-t.level;l=Math.min(e,a)}const m=Object(E.c)(t.level+l,0,t.maxRam,t.cores,e.player.hacknet_node_money_mult)-t.hashRate,h=t.calculateLevelUpgradeCost(l,e.player.hacknet_node_level_cost_mult);v=r.a.createElement(k.a,{title:r.a.createElement(u.a,null,"+",r.a.createElement(c.a,{hashes:m}))},r.a.createElement(d.a,{onClick:function(){let r=a;"MAX"===a&&(r=Object(o.e)(e.player,t,i.b.MaxLevel));Object(o.n)(e.player,t,r),n()}},"+",l," - ",r.a.createElement(s.a,{money:h,player:e.player})))}if(t.maxRam>=i.b.MaxRam)_=r.a.createElement(d.a,{disabled:!0},"MAX RAM");else{let l=0;if("MAX"===a)l=Object(o.f)(e.player,t,i.b.MaxRam);else{const e=Math.round(Math.log2(i.b.MaxRam/t.maxRam));l=Math.min(e,a)}const m=Object(E.c)(t.level,0,t.maxRam*Math.pow(2,l),t.cores,e.player.hacknet_node_money_mult)-t.hashRate,h=t.calculateRamUpgradeCost(l,e.player.hacknet_node_ram_cost_mult);_=r.a.createElement(k.a,{title:r.a.createElement(u.a,null,"+",r.a.createElement(c.a,{hashes:m}))},r.a.createElement(d.a,{onClick:function(){let r=a;"MAX"===a&&(r=Object(o.f)(e.player,t,i.b.MaxRam)),Object(o.o)(e.player,t,r),n()}},"+",l," - ",r.a.createElement(s.a,{money:h,player:e.player})))}if(t.cores>=i.b.MaxCores)w=r.a.createElement(d.a,{disabled:!0},"MAX CORES");else{let l=0;if("MAX"===a)l=Object(o.d)(e.player,t,i.b.MaxCores);else{const e=i.b.MaxCores-t.cores;l=Math.min(e,a)}const m=Object(E.c)(t.level,0,t.maxRam,t.cores+l,e.player.hacknet_node_money_mult)-t.hashRate,h=t.calculateCoreUpgradeCost(l,e.player.hacknet_node_core_cost_mult);w=r.a.createElement(k.a,{title:r.a.createElement(u.a,null,"+",r.a.createElement(c.a,{hashes:m}))},r.a.createElement(d.a,{onClick:function(){let r=a;"MAX"===a&&(r=Object(o.d)(e.player,t,i.b.MaxCores)),Object(o.k)(e.player,t,r),n()}},"+",l," - ",r.a.createElement(s.a,{money:h,player:e.player})))}if(t.cache>=i.b.MaxCache)S=r.a.createElement(d.a,{disabled:!0},"MAX CACHE");else{let c=0;if("MAX"===a)c=Object(o.c)(e.player,t,i.b.MaxCache);else{const e=i.b.MaxCache-t.cache;c=Math.min(e,a)}const m=32*Math.pow(2,t.cache+c)-t.hashCapacity,h=t.calculateCacheUpgradeCost(c);S=r.a.createElement(k.a,{title:r.a.createElement(u.a,null,"+",r.a.createElement(l.a,{hashes:m})," hashes")},r.a.createElement(d.a,{onClick:function(){let r=a;"MAX"===a&&(r=Object(o.c)(e.player,t,i.b.MaxCache));Object(o.j)(e.player,t,r),n(),Object(o.p)(e.player)}},"+",c," - ",r.a.createElement(s.a,{money:h,player:e.player}))),e.player.money}return r.a.createElement(m.a,{item:!0,component:h.a,p:1},r.a.createElement(g.a,{size:"small"},r.a.createElement(f.a,null,r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,t.hostname))),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"Production:")),r.a.createElement(p.b,{colSpan:2},r.a.createElement(u.a,null,r.a.createElement(l.a,{hashes:t.totalHashesGenerated})," (",r.a.createElement(c.a,{hashes:t.hashRate}),")"))),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"Hash Capacity:")),r.a.createElement(p.b,{colSpan:2},r.a.createElement(u.a,null,r.a.createElement(l.a,{hashes:t.hashCapacity})))),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"Level:")),r.a.createElement(p.b,null,r.a.createElement(u.a,null,t.level)),r.a.createElement(p.b,null,v)),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"RAM:")),r.a.createElement(p.b,null,r.a.createElement(u.a,null,b.a.formatRAM(t.maxRam))),r.a.createElement(p.b,null,_)),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"Cores:")),r.a.createElement(p.b,null,r.a.createElement(u.a,null,t.cores)),r.a.createElement(p.b,null,w)),r.a.createElement(y.a,null,r.a.createElement(p.b,null,r.a.createElement(u.a,null,"Cache Level:")),r.a.createElement(p.b,null,r.a.createElement(u.a,null,t.cache)),r.a.createElement(p.b,null,S)))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(344),o=a(231),s=a(222),l=a(1072),c=a(40),u=a(29),m=a(1);function h(e){const t=u.b.Player(),a=Object(n.useState)(!1)[1];function h(){a(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(()=>a(e=>!e),200);return()=>clearInterval(e)},[]);const d=t.hashManager;if(!(d instanceof i.a))throw new Error("Player does not have a HashManager)");return r.a.createElement(c.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,null,"Spend your hashes on a variety of different upgrades"),r.a.createElement(m.a,null,"Hashes: ",r.a.createElement(s.a,{hashes:t.hashManager.hashes})),Object.keys(o.a).map(e=>{const a=o.a[e];return r.a.createElement(l.a,{player:t,upg:a,hashManager:d,key:a.name,rerender:h})})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(55),o=a(669),s=a(15),l=a(161),c=a(222),u=a(1),m=a(75),h=a(10);const d={};function p(e){const[t,a]=Object(n.useState)(d[e.upg.name]?d[e.upg.name]:"ecorp");function p(){if(e.hashManager.hashes>=e.hashManager.getUpgradeCost(e.upg.name)){Object(i.m)(e.player,e.upg.name,t)||Object(s.a)("Failed to purchase upgrade. This may be because you do not have enough hashes, or because you do not have access to the feature upgrade affects."),e.rerender()}}const f=e.hashManager,g=e.upg,y=f.getUpgradeCost(g.name),b=f.upgrades[g.name],E=g.effectText(b),k=f.hashes>=y;return r.a.createElement(m.a,{sx:{p:1}},r.a.createElement(u.a,null,r.a.createElement(l.a,{value:g.name})),r.a.createElement(u.a,null,"Cost: ",r.a.createElement(c.a,{hashes:y}),", Bought: ",b," times"),r.a.createElement(u.a,null,g.desc),!g.hasTargetServer&&r.a.createElement(h.a,{onClick:p,disabled:!k},"Buy"),g.hasTargetServer&&r.a.createElement(o.a,{purchase:p,canPurchase:k,value:t,serverType:o.b.Foreign,onChange:function(t){a(t.target.value),d[e.upg.name]=t.target.value}}),b>0&&E&&r.a.createElement(u.a,null,E))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(34),o=a(10);function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function l(e){return r.a.createElement(o.a,{disabled:e.disabled,onClick:e.onClick},e.text)}function c(e){if(null==e.purchaseMultiplier)throw new Error("MultiplierButtons constructed without required props");const t=["x1","x5","x10","MAX"],a=e.onClicks,n=[];for(let o=0;o<t.length;++o){const c=t[o],u={disabled:e.purchaseMultiplier===i.c[c],onClick:a[o],text:c};n.push(r.a.createElement(l,s({key:c},u)))}return r.a.createElement(r.a.Fragment,null,n)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(55),o=a(16),s=a(102),l=a(383),c=a(222),u=a(1);function m(e){const t=Object(i.g)(e.player);let a;return a=t?r.a.createElement(l.a,{hashes:e.totalProduction}):r.a.createElement(s.a,{money:e.totalProduction}),r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"Money:",r.a.createElement(o.a,{money:e.player.money})),t&&r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"Hashes: ",r.a.createElement(c.a,{hashes:e.player.hashManager.hashes})," /"," ",r.a.createElement(c.a,{hashes:e.player.hashManager.capacity}))),r.a.createElement(u.a,null,"Total Hacknet ",t?"Server":"Node"," Production: ",a))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(55),o=a(2),s=a(16),l=a(10);function c(e){const t=e.cost;let a;return a=Object(i.g)(o.a)?Object(i.h)(o.a)?r.a.createElement(r.a.Fragment,null,"Hacknet Server limit reached"):r.a.createElement(r.a.Fragment,null,"Purchase Hacknet Server - ",r.a.createElement(s.a,{money:t,player:o.a})):r.a.createElement(r.a.Fragment,null,"Purchase Hacknet Node - ",r.a.createElement(s.a,{money:t,player:o.a})),r.a.createElement(l.a,{disabled:!o.a.canAfford(t),onClick:e.onClick},a)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return w}));var n=a(0),r=a(1),i=a(10),o=a(1077),s=a(1079),l=a(1080),c=a(1081),u=a(1082),m=a(1085),h=a(567),d=a(1092),p=a(1093),f=a(48),g=a(11),y=a(123),b=a(24),E=a(423),k=a(29),v=a(333),_=a(28);function w({loc:e}){const t=k.b.Router(),a=k.b.Player();const w=function(){const r=[];return e.types.includes(f.a.Company)&&r.push(n.createElement(o.a,{key:"companylocation",locName:e.name})),e.types.includes(f.a.Gym)&&r.push(n.createElement(s.a,{key:"gymlocation",router:t,loc:e,p:a})),e.types.includes(f.a.Hospital)&&r.push(n.createElement(l.a,{key:"hospitallocation",p:a})),e.types.includes(f.a.Slums)&&r.push(n.createElement(c.a,{key:"slumslocation"})),e.types.includes(f.a.Special)&&r.push(n.createElement(u.a,{key:"speciallocation",loc:e})),e.types.includes(f.a.TechVendor)&&r.push(n.createElement(m.a,{key:"techvendorlocation",loc:e})),e.types.includes(f.a.TravelAgency)&&r.push(n.createElement(h.a,{key:"travelagencylocation",p:a,router:t})),e.types.includes(f.a.University)&&r.push(n.createElement(d.a,{key:"universitylocation",loc:e})),e.types.includes(f.a.Casino)&&r.push(n.createElement(p.a,{key:"casinoLocation",p:a})),r}(),S=v.a.find(t=>t.specialName===e.name),C=Object(b.d)(S?S.hostname:""),x=null!==C&&Object(y.b)(C);return n.createElement(n.Fragment,null,n.createElement(i.a,{onClick:()=>t.toCity()},"Return to World"),n.createElement(r.a,{variant:"h4",sx:{mt:1}},x&&!g.a.DisableTextEffects?n.createElement(_.a,{title:`Backdoor installed on ${e.name}.`},n.createElement("span",null,n.createElement(E.a,{content:e.name}))):e.name),w)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return E}));var n=a(0),r=a.n(n),i=a(1),o=a(10),s=a(28),l=a(25),c=a(270),u=a(240),m=a(62),h=a(334),d=a(90),p=a(30),f=a(106),g=a(301),y=a(29),b=a(1078);function E(e){const t=y.b.Player(),a=y.b.Router(),[E,k]=Object(n.useState)(!1),v=Object(n.useState)(!1)[1];function _(){v(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(_,200);return()=>clearInterval(e)},[]);const w=m.a[e.locName];if(null==w)throw new Error("CompanyLocation component constructed with invalid company: "+e.locName);const S=u.a[e.locName];if(null==S)throw new Error("CompanyLocation component constructed with invalid location: "+e.locName);const C=t.jobs[e.locName]?t.jobs[e.locName]:null,x=C?d.a[C]:null;t.location=e.locName;const O=null!=C,M=w.getFavorGain();return r.a.createElement(r.a.Fragment,null,O&&r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"Job Title: ",C),r.a.createElement(i.a,null,"-------------------------"),r.a.createElement(l.a,{display:"flex"},r.a.createElement(s.a,{title:r.a.createElement(r.a.Fragment,null,"You will have ",r.a.createElement(g.a,{favor:w.favor+M})," company favor upon resetting after installing Augmentations")},r.a.createElement(i.a,null,"Company reputation: ",r.a.createElement(f.a,{reputation:w.playerReputation})))),r.a.createElement(i.a,null,"-------------------------"),r.a.createElement(l.a,{display:"flex"},r.a.createElement(s.a,{title:r.a.createElement(r.a.Fragment,null,"Company favor increases the rate at which you earn reputation for this company by 1% per favor. Company favor is gained whenever you reset after installing Augmentations. The amount of favor you gain depends on how much reputation you have with the company.")},r.a.createElement(i.a,null,"Company Favor: ",r.a.createElement(g.a,{favor:w.favor})))),r.a.createElement(i.a,null,"-------------------------"),r.a.createElement("br",null)),r.a.createElement(l.a,{sx:{display:"grid",width:"fit-content"}},O&&r.a.createElement(l.a,{sx:{display:"grid",gridTemplateColumns:"1fr 1fr"}},r.a.createElement(o.a,{onClick:function(n){if(!n.isTrusted)return;const r=x;r instanceof h.a&&(r.isPartTimeJob()||r.isSoftwareConsultantJob()||r.isBusinessConsultantJob()?t.startWorkPartTime(e.locName):t.startWork(e.locName),t.startFocusing(),a.toWork())}},"Work"),r.a.createElement(o.a,{onClick:()=>k(!0)},"Quit"),r.a.createElement(b.a,{locName:e.locName,company:w,onQuit:_,open:E,onClose:()=>k(!1)})),w.hasAgentPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.a[0]],onClick:function(e){e.isTrusted&&(t.applyForAgentJob(),_())},text:"Apply for Agent Job"}),w.hasBusinessConsultantPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.c[0]],onClick:function(e){e.isTrusted&&(t.applyForBusinessConsultantJob(),_())},text:"Apply for Business Consultant Job"}),w.hasBusinessPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.b[0]],onClick:function(e){e.isTrusted&&(t.applyForBusinessJob(),_())},text:"Apply for Business Job"}),w.hasEmployeePositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.e[1]],onClick:function(e){e.isTrusted&&(t.applyForEmployeeJob(),_())},text:"Apply to be an Employee"}),w.hasEmployeePositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.g[1]],onClick:function(e){e.isTrusted&&(t.applyForPartTimeEmployeeJob(),_())},text:"Apply to be a part-time Employee"}),w.hasITPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.d[0]],onClick:function(e){e.isTrusted&&(t.applyForItJob(),_())},text:"Apply for IT Job"}),w.hasSecurityPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.h[2]],onClick:function(e){e.isTrusted&&(t.applyForSecurityJob(),_())},text:"Apply for Security Job"}),w.hasSoftwareConsultantPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.k[0]],onClick:function(e){e.isTrusted&&(t.applyForSoftwareConsultantJob(),_())},text:"Apply for Software Consultant Job"}),w.hasSoftwarePositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.j[0]],onClick:function(e){e.isTrusted&&(t.applyForSoftwareJob(),_())},text:"Apply for Software Job"}),w.hasWaiterPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.e[0]],onClick:function(e){e.isTrusted&&(t.applyForWaiterJob(),_())},text:"Apply to be a Waiter"}),w.hasWaiterPositions()&&r.a.createElement(c.a,{company:w,entryPosType:d.a[p.g[0]],onClick:function(e){e.isTrusted&&(t.applyForPartTimeWaiterJob(),_())},text:"Apply to be a part-time Waiter"}),null!=S.infiltrationData&&r.a.createElement(o.a,{onClick:function(t){if(!t.isTrusted)return;const n=S;if(!n.infiltrationData)throw new Error(`trying to start infiltration at ${e.locName} but the infiltrationData is null`);a.toInfiltration(n)}},"Infiltrate Company")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(29),o=a(40),s=a(1),l=a(10);function c(e){const t=i.b.Player();return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,null," Would you like to quit your job at ",e.company.name,"?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,{onClick:function(){t.quitJob(e.locName),e.onQuit(),e.onClose()}},"Quit"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a(10),i=a(8),o=a(24),s=a(16),l=a(333),c=a(25);function u(e){function t(){const t=l.a.find(t=>t.specialName===e.loc.name),a=Object(o.d)(t?t.hostname:"");if(null==a||!a.hasOwnProperty("backdoorInstalled"))return e.loc.costMult;const n=a.backdoorInstalled?.9:1;return e.loc.costMult*n}function a(a){const n=e.loc;e.p.startClass(e.router,t(),n.expMult,a)}const u=i.a.ClassGymBaseCost*t();return n.createElement(c.a,{sx:{display:"grid",width:"fit-content"}},n.createElement(r.a,{onClick:function(){a(i.a.ClassGymStrength)}},"Train Strength (",n.createElement(s.a,{money:u,player:e.p})," / sec)"),n.createElement("br",null),n.createElement(r.a,{onClick:function(){a(i.a.ClassGymDefense)}},"Train Defense (",n.createElement(s.a,{money:u,player:e.p})," / sec)"),n.createElement("br",null),n.createElement(r.a,{onClick:function(){a(i.a.ClassGymDexterity)}},"Train Dexterity (",n.createElement(s.a,{money:u,player:e.p})," / sec)"),n.createElement("br",null),n.createElement(r.a,{onClick:function(){a(i.a.ClassGymAgility)}},"Train Agility (",n.createElement(s.a,{money:u,player:e.p})," / sec)"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(10),i=a(370),o=a(16),s=a(15);class l extends n.Component{constructor(e){super(e),this.btnStyle={display:"block"},this.getCost=this.getCost.bind(this),this.getHealed=this.getHealed.bind(this),this.state={currHp:this.props.p.hp}}getCost(){return Object(i.b)(this.props.p)}getHealed(e){if(!e.isTrusted)return;if(this.props.p.hp<0&&(this.props.p.hp=0),this.props.p.hp>=this.props.p.max_hp)return;const t=this.getCost();this.props.p.loseMoney(t,"hospitalization"),this.props.p.hp=this.props.p.max_hp,this.setState({currHp:this.props.p.hp}),Object(s.a)(n.createElement(n.Fragment,null,"You were healed to full health! The hospital billed you for ",n.createElement(o.a,{money:t})))}render(){const e=this.getCost();return n.createElement(r.a,{onClick:this.getHealed,style:this.btnStyle},"Get treatment for wounds - ",n.createElement(o.a,{money:e,player:this.props.p}))}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a(10),i=a(28),o=a(81),s=a(4),l=a(29),c=a(25);function u(){const e=l.b.Player(),t=l.b.Router();const a=o.a.Shoplift.successRate(e),u=o.a.RobStore.successRate(e),m=o.a.Mug.successRate(e),h=o.a.Larceny.successRate(e),d=o.a.DealDrugs.successRate(e),p=o.a.BondForgery.successRate(e),f=o.a.TraffickArms.successRate(e),g=o.a.Homicide.successRate(e),y=o.a.GrandTheftAuto.successRate(e),b=o.a.Kidnap.successRate(e),E=o.a.Assassination.successRate(e),k=o.a.Heist.successRate(e);return n.createElement(c.a,{sx:{display:"grid",width:"fit-content"}},n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to shoplift from a low-end retailer")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Shoplift.commit(t,e)}},"Shoplift (",s.a.formatPercentage(a)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to commit armed robbery on a high-end store")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.RobStore.commit(t,e)}},"Rob store (",s.a.formatPercentage(u)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to mug a random person on the street")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Mug.commit(t,e)}},"Mug someone (",s.a.formatPercentage(m)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to rob property from someone's house")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Larceny.commit(t,e)}},"Larceny (",s.a.formatPercentage(h)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to deal drugs")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.DealDrugs.commit(t,e)}},"Deal Drugs (",s.a.formatPercentage(d)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to forge corporate bonds")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.BondForgery.commit(t,e)}},"Bond Forgery (",s.a.formatPercentage(p)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to smuggle illegal arms into the city")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.TraffickArms.commit(t,e)}},"Traffick illegal Arms (",s.a.formatPercentage(f)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to murder a random person on the street")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Homicide.commit(t,e)}},"Homicide (",s.a.formatPercentage(g)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to commit grand theft auto")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.GrandTheftAuto.commit(t,e)}},"Grand theft Auto (",s.a.formatPercentage(y)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to kidnap and ransom a high-profile-target")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Kidnap.commit(t,e)}},"Kidnap and Ransom (",s.a.formatPercentage(b)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to assassinate a high-profile target")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Assassination.commit(t,e)}},"Assassinate (",s.a.formatPercentage(E)," chance of success)")),n.createElement(i.a,{title:n.createElement(n.Fragment,null,"Attempt to pull off the ultimate heist")},n.createElement(r.a,{onClick:function(a){a.isTrusted&&o.a.Heist.commit(t,e)}},"Heist (",s.a.formatPercentage(k)," chance of success)")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return _}));var n=a(0),r=a.n(n),i=a(1),o=a(10),s=a(1083),l=a(9),c=a(6),u=a(26),m=a(120),h=a(29),d=a(15),p=a(179),f=a(1084),g=a(109),y=a(143),b=a(423),E=a(208),k=a(87),v=a(24);function _(e){const t=h.b.Player(),a=h.b.Router(),_=Object(n.useState)(!1)[1],w=t.inBladeburner();function S(){const e=t;if(e.inBladeburner())a.toBladeburner();else if(e.strength>=100&&e.defense>=100&&e.dexterity>=100&&e.agility>=100){e.startBladeburner({new:!0}),Object(d.a)("You have been accepted into the Bladeburner division!"),_(e=>!e);const t=document.getElementById("world-menu-header");t instanceof HTMLElement&&(t.click(),t.click())}else Object(d.a)("Rejected! Please apply again when you have 100 of each combat stat (str, def, dex, agi)")}function C(){a.toResleeves()}function x(){const[e,a]=Object(n.useState)(!1);return t.canAccessCorporation()?r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{disabled:!t.canAccessCorporation()||t.hasCorporation(),onClick:()=>a(!0)},"Create a Corporation"),r.a.createElement(s.a,{open:e,onClose:()=>a(!1)})):r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,"A business man is yelling at a clerk. You should come back later.")))}function O(){const e=u.a["Church of the Machine God"];t.factions.includes("Church of the Machine God")||Object(m.d)(e),t.augmentations.some(e=>e.name===c.a.StaneksGift1)||t.queuedAugmentations.some(e=>e.name===c.a.StaneksGift1)||Object(y.a)({name:c.a.StaneksGift1,level:1}),a.toFaction(e)}switch(e.loc.name){case l.a.NewTokyoVitaLife:return t.canAccessResleeving()?r.a.createElement(o.a,{onClick:C},"Re-Sleeve"):r.a.createElement(r.a.Fragment,null);case l.a.Sector12CityHall:return r.a.createElement(x,null);case l.a.Sector12NSA:return function(){if(!t.canAccessBladeburner())return r.a.createElement(r.a.Fragment,null);const e=w?"Enter Bladeburner Headquarters":"Apply to Bladeburner Division";return r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(o.a,{onClick:S},e))}();case l.a.NewTokyoNoodleBar:return r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(o.a,{onClick:function(){p.b.emit("You ate some delicious noodles and feel refreshed","success",2e3),Object(f.a)(),t.sourceFiles.length>0&&t.giveExploit(g.a.N00dles),(t.sourceFileLvl(5)>0||5===t.bitNodeN)&&(t.intelligence_exp*=1.0000000000000002),t.hacking_exp*=1.0000000000000002,t.strength_exp*=1.0000000000000002,t.defense_exp*=1.0000000000000002,t.agility_exp*=1.0000000000000002,t.dexterity_exp*=1.0000000000000002,t.charisma_exp*=1.0000000000000002;for(const e of t.hacknetNodes)if(e instanceof E.a)t.gainMoney(.001*e.moneyGainRatePerSecond,"other");else{const a=Object(v.d)(e);if(!(a instanceof k.a))throw new Error(`Server ${e} is not a hacknet server.`);t.hashManager.storeHashes(.001*a.hashRate)}t.bladeburner&&(t.bladeburner.rank+=1e-5),t.corporation&&(t.corporation.funds+=.01*t.corporation.revenue)}},"Eat noodles"));case l.a.ChongqingChurchOfTheMachineGod:return function(){const e=r.a.createElement(i.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," `` ",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)," `..` ");return t.hasAugmentation(c.a.StaneksGift3,!0)?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,"Allison \"Mother\" Stanek: ..can ...you hear them too ...? Come now, don't be shy and let me get a closer look at you. Yes wonderful, I see my creation has taken root without consquence or much ill effect it seems. Curious, Just how much of a machine's soul do you house in that body?")),e):t.hasAugmentation(c.a.StaneksGift2,!0)?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,'Allison "Mother" Stanek: I see you\'ve taken to my creation. So much so it could hardly be recognized as one of my own after your tinkering with it. I see you follow the ways of the Machine God as I do, and your mastery of the gift clearly demonstrates that. My hopes are climbing by the day for you.')),e):t.factions.includes("Church of the Machine God")?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,'Allison "Mother" Stanek: Welcome back my child!')),e):t.canAccessCotMG()?t.augmentations.filter(e=>e.name!==c.a.NeuroFluxGovernor).length>0||t.queuedAugmentations.filter(e=>e.name!==c.a.NeuroFluxGovernor).length>0?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,'Allison "Mother" Stanek: Begone you filth! My gift must be the first modification that your body should have!'))):r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement("i",null,'Allison "Mother" Stanek: Welcome child, I see your body is pure. Are you ready to ascend beyond our human form? If you are, accept my gift.')),r.a.createElement(o.a,{onClick:O},"Accept Stanek's Gift"),e):r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"A decrepit altar stands in the middle of a dilapidated church.",r.a.createElement("br",null),r.a.createElement("br",null),"A symbol is carved in the altar."),r.a.createElement("br",null),e)}();case l.a.IshimaGlitch:return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,r.a.createElement(b.a,{content:"An eerie aura surrounds this area. You feel you should leave."})));default:return console.error(`Location ${e.loc.name} doesn't have any special properties`),r.a.createElement(r.a.Fragment,null)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(16),o=a(40),s=a(29),l=a(1),c=a(10),u=a(85);function m(e){const t=s.b.Player(),a=s.b.Router(),m=t.canAfford(15e10);if(!t.canAccessCorporation()||t.hasCorporation())return e.onClose(),r.a.createElement(r.a.Fragment,null);const[h,d]=Object(n.useState)("");return r.a.createElement(o.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,null,"Would you like to start a corporation? This will require $150b for registration and initial funding. This $150b can either be self-funded, or you can obtain the seed money from the government in exchange for 500 million shares",r.a.createElement("br",null),r.a.createElement("br",null),"If you would like to start one, please enter a name for your corporation below:"),r.a.createElement(u.a,{autoFocus:!0,placeholder:"Corporation Name",onChange:function(e){d(e.target.value)},value:h}),3===t.bitNodeN&&r.a.createElement(c.a,{onClick:function(){""!=h&&(t.startCorporation(h,5e8),e.onClose(),a.toCorporation())},disabled:""==h},"Use seed money"),r.a.createElement(c.a,{onClick:function(){m&&""!=h&&(t.startCorporation(h),t.loseMoney(15e10,"corporation"),e.onClose(),a.toCorporation())},disabled:""==h||!m},"Self-Fund (",r.a.createElement(i.a,{money:15e10,player:t}),")"))}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return N00dles}));const n00dlePower="[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]]((+((+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+[+[]+[+[]]+[+[]]+[+[]]+[+[]]+[+[]]+[+!+[]]])+[])[!+[]+!+[]]+[+!+[]])+(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]])()())[!+[]+!+[]+!+[]+[+[]]]+(+[]+[][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[]+[][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[!+[]+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+[]]+(+(+!+[]+[+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+[+!+[]])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()+[])[!+[]+!+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])()";function N00dles(){eval(n00dlePower)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(1),o=a(10),s=a(1086),l=a(1087),c=a(1089),u=a(226),m=a(16),h=a(29),d=a(1090),p=a(4),f=a(25);function g(e){const[t,a]=Object(n.useState)(!1),i=h.b.Player(),s=Object(u.a)(e.ram);return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{onClick:()=>a(!0),disabled:!i.canAfford(s)},"Purchase ",p.a.formatRAM(e.ram)," Server - ",r.a.createElement(m.a,{money:s,player:i})),r.a.createElement(d.a,{open:t,onClose:()=>a(!1),ram:e.ram,cost:s,rerender:e.rerender}),r.a.createElement("br",null))}function y(e){const t=h.b.Player(),a=Object(n.useState)(!1)[1];function o(){a(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(o,1e3);return()=>clearInterval(e)},[]);const u=[];for(let t=e.loc.techVendorMinRam;t<=e.loc.techVendorMaxRam;t*=2)u.push(r.a.createElement(g,{key:t,ram:t,rerender:o}));return r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(f.a,{sx:{display:"grid",width:"fit-content"}},u),r.a.createElement("br",null),r.a.createElement(i.a,null,r.a.createElement("i",null,'"You can order bigger servers via scripts. We don\'t take custom orders in person."')),r.a.createElement("br",null),r.a.createElement(l.a,{p:t,rerender:o}),r.a.createElement("br",null),r.a.createElement(s.a,{p:t,rerender:o}),r.a.createElement("br",null),r.a.createElement(c.a,{p:t,rerender:o}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(10),o=a(28),s=a(1),l=a(8),c=a(226),u=a(16),m=a(4),h=a(253);function d(e){const t=e.p.getHomeComputer();if(t.maxRam>=l.a.HomeComputerMaxRam)return r.a.createElement(i.a,null,"Upgrade 'home' RAM - MAX");const a=e.p.getUpgradeHomeRamCost();return r.a.createElement(o.a,{title:r.a.createElement(h.a,null,"\\(\\large{cost = 3.2 \\cdot 10^3 \\cdot 1.58^{log_2{(ram)}}}\\)")},r.a.createElement("span",null,r.a.createElement("br",null),r.a.createElement(s.a,null,r.a.createElement("i",null,"\"More RAM means more scripts on 'home'\"")),r.a.createElement("br",null),r.a.createElement(i.a,{disabled:!e.p.canAfford(a),onClick:function(){Object(c.d)(e.p),e.rerender()}},"Upgrade 'home' RAM (",m.a.formatRAM(t.maxRam)," -> ",m.a.formatRAM(2*t.maxRam),") - ",r.a.createElement(u.a,{money:a,player:e.p}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(10),o=a(1088),s=a(8),l=a(16);function c(e){return e.p.hasTorRouter()?r.a.createElement(i.a,null,"TOR Router - Purchased"):r.a.createElement(i.a,{disabled:!e.p.canAfford(s.a.TorRouterCost),onClick:function(){Object(o.a)(e.p),e.rerender()}},"Purchase TOR router - ",r.a.createElement(l.a,{money:s.a.TorRouterCost,player:e.p}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(8),r=a(24),i=a(123),o=a(15);function s(e){if(e.hasTorRouter())return void Object(o.a)("You already have a TOR Router!");if(!e.canAfford(n.a.TorRouterCost))return void Object(o.a)("You cannot afford to purchase the TOR router!");e.loseMoney(n.a.TorRouterCost,"other");const t=Object(i.f)({ip:Object(r.e)(),hostname:"darkweb",organizationName:"",isConnectedTo:!1,adminRights:!1,purchasedByPlayer:!1,maxRam:1});Object(r.a)(t),e.getHomeComputer().serversOnNetwork.push(t.hostname),t.serversOnNetwork.push(e.getHomeComputer().hostname),Object(o.a)("You have purchased a TOR router!<br>You now have access to the dark web from your home computer.<br>Use the scan/scan-analyze commands to search for the dark web connection.")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(10),o=a(28),s=a(1),l=a(16),c=a(253);function u(e){const t=e.p.getHomeComputer(),a=t.cpuCores>=8;if(a)return r.a.createElement(i.a,null,"Upgrade 'home' cores - MAX");const n=e.p.getUpgradeHomeCoresCost();return r.a.createElement(o.a,{title:r.a.createElement(c.a,null,"\\(\\large{cost = 10^9 \\cdot 7.5 ^{\\text{cores}}}\\)")},r.a.createElement("span",null,r.a.createElement("br",null),r.a.createElement(s.a,null,r.a.createElement("i",null,"\"Cores increase the effectiveness of grow() and weaken() on 'home'\"")),r.a.createElement("br",null),r.a.createElement(i.a,{disabled:!e.p.canAfford(n),onClick:function(){a||e.p.canAfford(n)&&(e.p.loseMoney(n,"servers"),t.cpuCores++,e.rerender())}},"Upgrade 'home' cores (",t.cpuCores," -> ",t.cpuCores+1,") - ",r.a.createElement(l.a,{money:n,player:e.p}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(226),o=a(4),s=a(16),l=a(40),c=a(29),u=a(1),m=a(85),h=a(10);function d(e){const t=c.b.Player(),[a,d]=Object(n.useState)("");function p(){Object(i.e)(a,e.ram,e.cost,t),e.onClose()}return r.a.createElement(l.a,{open:e.open,onClose:e.onClose},r.a.createElement(u.a,null,"Would you like to purchase a new server with ",o.a.formatRAM(e.ram)," of RAM for"," ",r.a.createElement(s.a,{money:e.cost,player:t}),"?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(u.a,null," Please enter the server hostname below:"),r.a.createElement("br",null),r.a.createElement(m.a,{autoFocus:!0,onKeyUp:function(e){13===e.keyCode&&p()},onChange:function(e){d(e.target.value)},type:"text",placeholder:"Unique Hostname",InputProps:{endAdornment:r.a.createElement(h.a,{onClick:p,disabled:!t.canAfford(e.cost)||""===a},"Buy")}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a.n(n),i=a(8),o=a(16),s=a(40),l=a(29),c=a(1),u=a(10);function m(e){const t=l.b.Player(),a=i.a.TravelCost;return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(c.a,null,"Would you like to travel to ",e.city,"? The trip will cost ",r.a.createElement(o.a,{money:a,player:t}),"."),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(u.a,{onClick:function(){e.travel()}},r.a.createElement(c.a,null,"Travel")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var n=a(0),r=a(28),i=a(10),o=a(8),s=a(24),l=a(16),c=a(29),u=a(25);function m(e){const t=c.b.Player(),a=c.b.Router();function m(){const t=Object(s.d)(e.loc.name);if(null==t||!t.hasOwnProperty("backdoorInstalled"))return e.loc.costMult;const a=t.backdoorInstalled?.9:1;return e.loc.costMult*a}function h(n){const r=e.loc;t.startClass(a,m(),r.expMult,n)}const d=m(),p=o.a.ClassDataStructuresBaseCost*d,f=o.a.ClassNetworksBaseCost*d,g=o.a.ClassAlgorithmsBaseCost*d,y=o.a.ClassManagementBaseCost*d,b=o.a.ClassLeadershipBaseCost*d;return n.createElement(u.a,{sx:{display:"grid",width:"fit-content"}},n.createElement(r.a,{title:"Gain hacking experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassStudyComputerScience)}},"Study Computer Science (free)")),n.createElement(r.a,{title:"Gain hacking experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassDataStructures)}},"Take Data Structures course (",n.createElement(l.a,{money:p,player:t})," / sec)")),n.createElement(r.a,{title:"Gain hacking experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassNetworks)}},"Take Networks course (",n.createElement(l.a,{money:f,player:t})," / sec)")),n.createElement(r.a,{title:"Gain hacking experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassAlgorithms)}},"Take Algorithms course (",n.createElement(l.a,{money:g,player:t})," / sec)")),n.createElement(r.a,{title:"Gain charisma experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassManagement)}},"Take Management course (",n.createElement(l.a,{money:y,player:t})," / sec)")),n.createElement(r.a,{title:"Gain charisma experience!"},n.createElement(i.a,{onClick:function(){h(o.a.ClassLeadership)}},"Take Leadership course (",n.createElement(l.a,{money:b,player:t})," / sec)")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n,r=a(0),i=a.n(r),o=a(10),s=a(1094),l=a(1096),c=a(1097),u=a(1098),m=a(25);function h(e){const[t,a]=Object(r.useState)(n.None);function h(e){a(e)}return i.a.createElement(i.a.Fragment,null,t===n.None&&i.a.createElement(m.a,{sx:{display:"grid",width:"fit-content"}},i.a.createElement(o.a,{onClick:()=>h(n.Coin)},"Play coin flip"),i.a.createElement(o.a,{onClick:()=>h(n.Slots)},"Play slots"),i.a.createElement(o.a,{onClick:()=>h(n.Roulette)},"Play roulette"),i.a.createElement(o.a,{onClick:()=>h(n.Blackjack)},"Play blackjack")),t!==n.None&&i.a.createElement(i.a.Fragment,null,i.a.createElement(o.a,{onClick:()=>h(n.None)},"Stop playing"),t===n.Coin&&i.a.createElement(l.a,{p:e.p}),t===n.Slots&&i.a.createElement(u.a,{p:e.p}),t===n.Roulette&&i.a.createElement(c.a,{p:e.p}),t===n.Blackjack&&i.a.createElement(s.a,{p:e.p})))}!function(e){e.None="none",e.Coin="coin",e.Slots="slots",e.Roulette="roulette",e.Blackjack="blackjack"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a(16),i=a(196),o=a(1095),s=a(492),l=a(1415),c=a(670),u=a(10),m=a(75),h=a(25),d=a(1),p=a(85);function f(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var g;!function(e){e.Pending="",e.PlayerWon="You won!",e.PlayerWonByBlackjack="You Won! Blackjack!",e.DealerWon="You lost!",e.Tie="Push! (Tie)"}(g||(g={}));class y extends i.a{constructor(e){super(e),f(this,"canStartGame",()=>{const{p:e}=this.props,{bet:t}=this.state;return e.canAfford(t)}),f(this,"startGame",()=>{if(!this.canStartGame()||Object(i.b)(this.props.p))return;this.props.p.loseMoney(this.state.bet,"casino");const e=new s.a([this.deck.safeDrawCard(),this.deck.safeDrawCard()]),t=new s.a([this.deck.safeDrawCard(),this.deck.safeDrawCard()]);this.setState({playerHand:e,dealerHand:t,gameInProgress:!0,result:g.Pending}),21===this.getTrueHandValue(e)?21===this.getTrueHandValue(t)?this.finishGame(g.Tie):this.finishGame(g.PlayerWonByBlackjack):21===this.getTrueHandValue(t)&&this.finishGame(g.DealerWon)}),f(this,"getHandValue",e=>{let t=[0];for(let a=0;a<e.cards.length;++a){const n=e.cards[a].value;t=n>=10?t.map(e=>e+10):1===n?t.flatMap(e=>[e+1,e+11]):t.map(e=>e+n)}return t}),f(this,"getTrueHandValue",e=>{const t=this.getHandValue(e),a=t.filter(e=>e<=21);return a.length>0?(a.sort((e,t)=>e-t),a[a.length-1]):t[0]}),f(this,"getHandDisplayValues",e=>{const t=this.getHandValue(e);return this.isHandBusted(e)?[...new Set([t[0]])]:[...new Set(t.filter(e=>e<=21))]}),f(this,"isHandBusted",e=>this.getTrueHandValue(e)>21),f(this,"playerHit",e=>{if(!e.isTrusted)return;const t=this.state.playerHand.addCards(this.deck.safeDrawCard());this.setState({playerHand:t}),this.isHandBusted(t)&&this.finishGame(g.DealerWon)}),f(this,"playerStay",e=>{if(!e.isTrusted)return;let t=this.state.dealerHand;for(;;){if(!(this.getTrueHandValue(t)<=16))break;t=t.addCards(this.deck.safeDrawCard())}if(this.setState({dealerHand:t}),this.isHandBusted(t))this.finishGame(g.PlayerWon);else{const e=this.getTrueHandValue(t),a=this.getTrueHandValue(this.state.playerHand);if(e>21||a>21)throw new Error("Someone busted when not expected to");a>e?this.finishGame(g.PlayerWon):a<e?this.finishGame(g.DealerWon):this.finishGame(g.Tie)}}),f(this,"finishGame",e=>{const t=e===g.DealerWon?0:e===g.Tie?this.state.bet:e===g.PlayerWon?2*this.state.bet:e===g.PlayerWonByBlackjack?2.5*this.state.bet:(()=>{throw new Error("Unexpected result: "+e)})();this.win(this.props.p,t),this.setState({gameInProgress:!1,result:e,gains:this.state.gains+t-this.state.bet})}),f(this,"wagerOnChange",e=>{const{p:t}=this.props,a=e.target.value,n=Math.round(parseFloat(a));isNaN(n)?this.setState({bet:0,betInput:a,wagerInvalid:!0,wagerInvalidHelperText:"Not a valid number"}):n<=0?this.setState({bet:0,betInput:a,wagerInvalid:!0,wagerInvalidHelperText:"Must bet a postive amount"}):n>1e8?this.setState({bet:0,betInput:a,wagerInvalid:!0,wagerInvalidHelperText:"Exceeds max bet"}):t.canAfford(n)?this.setState({bet:n,betInput:a,wagerInvalid:!1,wagerInvalidHelperText:"",result:g.Pending}):this.setState({bet:0,betInput:a,wagerInvalid:!0,wagerInvalidHelperText:"Not enough money"})}),f(this,"startOnClick",e=>{e.isTrusted&&(this.state.wagerInvalid||this.startGame())}),this.deck=new o.a(5);this.state={playerHand:new s.a([]),dealerHand:new s.a([]),bet:1e6,betInput:String(1e6),gameInProgress:!1,result:g.Pending,gains:0,wagerInvalid:!1,wagerInvalidHelperText:""}}render(){const{betInput:e,playerHand:t,dealerHand:a,gameInProgress:i,result:o,wagerInvalid:s,wagerInvalidHelperText:f,gains:y}=this.state,b=this.getHandDisplayValues(t),E=this.getHandDisplayValues(a);return n.createElement(n.Fragment,null,n.createElement(h.a,null,n.createElement(p.a,{value:e,label:n.createElement(n.Fragment,null,"Wager (Max: ",n.createElement(r.a,{money:1e8}),")"),disabled:i,onChange:this.wagerOnChange,error:s,helperText:s?f:"",type:"number",style:{width:"200px"},InputProps:{startAdornment:n.createElement(l.a,{position:"start"},n.createElement(d.a,null,"$"))}}),n.createElement(d.a,null,"Total earnings this session: ",n.createElement(r.a,{money:y}))),i?n.createElement(n.Fragment,null,n.createElement(u.a,{onClick:this.playerHit},"Hit"),n.createElement(u.a,{color:"secondary",onClick:this.playerStay},"Stay")):n.createElement(u.a,{onClick:this.startOnClick,disabled:s||!this.canStartGame()},"Start"),(i||o!==g.Pending)&&n.createElement(n.Fragment,null,n.createElement(h.a,{display:"flex"},n.createElement(m.a,{elevation:2},n.createElement(d.a,null,"Player"),t.cards.map((e,t)=>n.createElement(c.a,{card:e,key:t})),n.createElement(d.a,null,"Count:"," ",b.map((e,t)=>n.createElement("span",{key:t},e)).reduce((e,t)=>[e," or ",t])))),n.createElement("br",null),n.createElement(h.a,{display:"flex"},n.createElement(m.a,{elevation:2},n.createElement(d.a,null,"Dealer"),a.cards.map((e,t)=>n.createElement(c.a,{card:e,hidden:i&&0!==t,key:t})),!i&&n.createElement(n.Fragment,null,n.createElement(d.a,null,"Count:"," ",E.map((e,t)=>n.createElement("span",{key:t},e)).reduce((e,t)=>[e," or ",t])))))),o!==g.Pending&&n.createElement(d.a,null,o," ",o===g.PlayerWon&&n.createElement(r.a,{money:this.state.bet}),o===g.PlayerWonByBlackjack&&n.createElement(r.a,{money:1.5*this.state.bet}),o===g.DealerWon&&n.createElement(r.a,{money:-this.state.bet})))}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(245),r=a(241);class i{constructor(e=1){var t,a,n;n=[],(a="cards")in(t=this)?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,this.numDecks=e,this.reset()}shuffle(){this.cards=Object(r.shuffle)(this.cards)}drawCard(){if(0==this.cards.length)throw new Error("Tried to draw card from empty deck");return this.cards.shift()}safeDrawCard(){return 0===this.cards.length&&this.reset(),this.drawCard()}reset(){this.cards=[];for(let e=1;e<=13;++e)for(let t=0;t<this.numDecks;++t)this.cards.push(new n.a(e,n.b.Clubs)),this.cards.push(new n.a(e,n.b.Diamonds)),this.cards.push(new n.a(e,n.b.Hearts)),this.cards.push(new n.a(e,n.b.Spades));this.shuffle()}size(){return this.cards.length}isEmpty(){return 0===this.cards.length}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(341),o=a(196),s=a(82),l=a(1),c=a(85),u=a(10),m=a(25);function h(e){const[t,a]=Object(n.useState)(1e3),[h,d]=Object(n.useState)(r.a.createElement("span",null," ")),[p,f]=Object(n.useState)(""),[g,y]=Object(n.useState)(!1);function b(a){if(Object(o.b)(e.p))return;let n;n=i.a.random()<.5?"H":"T";const s=a===n;d(r.a.createElement(m.a,{display:"flex"},r.a.createElement(l.a,{sx:{lineHeight:"1em",whiteSpace:"pre"},color:s?"primary":"error"},n))),f(s?" win!":"lose!"),y(!0),setTimeout(()=>y(!1),250),s?Object(o.c)(e.p,t):Object(o.c)(e.p,-t),Object(o.b)(e.p)}return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,"Result:")," ",h,r.a.createElement(m.a,{display:"flex",alignItems:"center"},r.a.createElement(c.a,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>1e4&&(t=1e4),t<0&&(t=0),a(t)},InputProps:{endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{onClick:Object(s.a)(()=>b("H")),disabled:g},"Head!"),r.a.createElement(u.a,{onClick:Object(s.a)(()=>b("T")),disabled:g},"Tail!"))}})),r.a.createElement(l.a,{variant:"h3"},p))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(16),o=a(196),s=a(341),l=a(82),c=a(1),u=a(10),m=a(85);const h=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36],d={Red:{match:e=>0!==e&&h.includes(e),payout:1},Black:{match:e=>!h.includes(e),payout:1},Odd:{match:e=>0!==e&&e%2==1,payout:1},Even:{match:e=>0!==e&&e%2==0,payout:1},High:{match:e=>0!==e&&e>18,payout:1},Low:{match:e=>0!==e&&e<19,payout:1},Third1:{match:e=>0!==e&&e<=12,payout:2},Third2:{match:e=>0!==e&&(e>=13&&e<=24),payout:2},Third3:{match:e=>0!==e&&e>=25,payout:2}};function p(e){return{match:t=>e===t,payout:36}}function f(e){const[t]=Object(n.useState)(new s.b((new Date).getTime())),[a,h]=Object(n.useState)(1e3),[f,g]=Object(n.useState)(!0),[y,b]=Object(n.useState)("waiting"),[E,k]=Object(n.useState)(0),[v,_]=Object(n.useState)(!0),[w,S]=Object(n.useState)({payout:0,match:()=>!1});function C(){v||k(Math.floor(37*Math.random()))}function x(n){Object(o.b)(e.p)||(g(!1),_(!1),b("playing"),S(n),setTimeout(()=>{let n=Math.floor(37*t.random()),s=r.a.createElement(r.a.Fragment,null),l=0,c=w.match(n);if(c&&Math.random()>.9)for(c=!1;w.match(n);)n=(n+1)%36;c?(l=a*w.payout,s=r.a.createElement(r.a.Fragment,null,"won ",r.a.createElement(i.a,{money:l}))):(l=-a,s=r.a.createElement(r.a.Fragment,null,"lost ",r.a.createElement(i.a,{money:-l}))),Object(o.c)(e.p,l),g(!0),_(!0),b(s),k(n),Object(o.b)(e.p)},1600))}return Object(n.useEffect)(()=>{const e=window.setInterval(C,50);return()=>clearInterval(e)}),r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{variant:"h4"},function(){if(0===E)return"0";const e=function(e){return[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36].includes(e)}(E)?"R":"B";return`${E}${e}`}()),r.a.createElement(m.a,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>1e7&&(t=1e7),t<0&&(t=0),h(t)},placeholder:"Amount to play",disabled:!f}),r.a.createElement(c.a,{variant:"h4"},y),r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(3)))},"3")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(6)))},"6")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(9)))},"9")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(12)))},"12")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(15)))},"15")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(18)))},"18")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(21)))},"21")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(24)))},"24")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(27)))},"27")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(30)))},"30")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(33)))},"33")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(36)))},"36"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(2)))},"2")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(5)))},"5")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(8)))},"8")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(11)))},"11")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(14)))},"14")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(17)))},"17")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(20)))},"20")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(23)))},"23")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(26)))},"26")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(29)))},"29")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(32)))},"32")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(35)))},"35"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(1)))},"1")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(4)))},"4")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(7)))},"7")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(10)))},"10")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(13)))},"13")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(16)))},"16")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(19)))},"19")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(22)))},"22")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(25)))},"25")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(28)))},"28")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(31)))},"31")),r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(34)))},"34"))),r.a.createElement("tr",null,r.a.createElement("td",{colSpan:4},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Third1))},"1 to 12")),r.a.createElement("td",{colSpan:4},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Third2))},"13 to 24")),r.a.createElement("td",{colSpan:4},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Third3))},"25 to 36"))),r.a.createElement("tr",null,r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Red))},"Red")),r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Black))},"Black")),r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Odd))},"Odd")),r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Even))},"Even")),r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.High))},"High")),r.a.createElement("td",{colSpan:2},r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(d.Low))},"Low"))),r.a.createElement("tr",null,r.a.createElement("td",null,r.a.createElement(u.a,{disabled:!f,onClick:Object(l.a)(()=>x(p(0)))},"0"))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(16),o=a(341),s=a(196),l=a(82),c=a(1),u=a(85),m=a(10);const h=["D","C","$","?","♥","A","C","B","C","E","B","E","C","*","D","♥","B","A","A","A","C","A","D","B","E","?","D","*","@","♥","B","E","?"];function d(e,t){switch(e){case"$":return[20,200,1e3][t];case"@":return[8,80,400][t];case"♥":case"?":return[6,20,150][t];case"D":case"E":return[1,8,30][t];default:return[1,5,20][t]}}const p=[[[0,0],[0,1],[0,2],[0,3],[0,4]],[[1,0],[1,1],[1,2],[1,3],[1,4]],[[2,0],[2,1],[2,2],[2,3],[2,4]],[[2,0],[1,1],[0,2],[1,3],[2,4]],[[0,0],[1,1],[2,2],[1,3],[0,4]],[[0,0],[1,1],[1,2],[1,3],[0,4]],[[2,0],[1,1],[1,2],[1,3],[2,4]],[[1,0],[0,1],[0,2],[0,3],[1,4]],[[1,0],[2,1],[2,2],[2,3],[1,4]]];function f(e){const[t]=Object(n.useState)(new o.b(e.p.totalPlaytime)),[a,f]=Object(n.useState)([0,0,0,0,0]),[g,y]=Object(n.useState)([0,0,0,0,0]),[b,E]=Object(n.useState)(1e3),[k,v]=Object(n.useState)(!0),[_,w]=Object(n.useState)("waiting");function S(){let t=!1;const n=a.slice();for(const e in n)(n[e]!==g[e]||t)&&(n[e]=(n[e]+1)%h.length,t=!0);f(n),t&&n.every((e,t)=>e===g[t])&&function(){const t=C(),a=function(e){const a=[];for(const n of e)a.push(t[n[0]][n[1]]);return a},n=function(e){let t=1;for(let a=1;a<e.length&&e[a]===e[a-1];a++)t++;return t};let o=-b;for(const t of p){const r=a(t),i=n(r);if(i<3)continue;const l=d(r[0],i-3);o+=b*l,Object(s.c)(e.p,b*l)}if(w(r.a.createElement(r.a.Fragment,null,o>0?"gained":"lost"," ",r.a.createElement(i.a,{money:Math.abs(o)}))),v(!0),Object(s.b)(e.p));}()}function C(){return[[h[(a[0]+h.length-1)%h.length],h[(a[1]+h.length-1)%h.length],h[(a[2]+h.length-1)%h.length],h[(a[3]+h.length-1)%h.length],h[(a[4]+h.length-1)%h.length]],[h[a[0]],h[a[1]],h[a[2]],h[a[3]],h[a[4]]],[h[(a[0]+1)%h.length],h[(a[1]+1)%h.length],h[(a[2]+1)%h.length],h[(a[3]+1)%h.length],h[(a[4]+1)%h.length]]]}function x(){y([Math.floor(t.random()*h.length),Math.floor(t.random()*h.length),Math.floor(t.random()*h.length),Math.floor(t.random()*h.length),Math.floor(t.random()*h.length)])}Object(n.useEffect)(()=>{const e=window.setInterval(S,50);return()=>clearInterval(e)});const O=C();return r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",O[0][0]," | ",O[0][1]," | ",O[0][2]," | ",O[0][3]," | ",O[0][4]," | |"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",h[a[0]]," | ",h[a[1]]," | ",h[a[2]]," | ",h[a[3]]," | ",h[a[4]]," | |"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | | | | | |"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | ",h[(a[0]+1)%h.length]," | ",h[(a[1]+1)%h.length]," | ",h[(a[2]+1)%h.length]," | ",h[(a[3]+1)%h.length]," | ",h[(a[4]+1)%h.length]," | |"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"+———————————————————————+"),r.a.createElement(u.a,{type:"number",onChange:function(e){let t=parseInt(e.currentTarget.value);isNaN(t)&&(t=0),t>1e6&&(t=1e6),t<0&&(t=0),E(t)},placeholder:"Amount to play",disabled:!k,InputProps:{endAdornment:r.a.createElement(m.a,{onClick:Object(l.a)((function(){Object(s.b)(e.p)||(w("playing"),Object(s.c)(e.p,-b),k&&(y([-1,-1,-1,-1,-1]),v(!1),setTimeout(x,2e3*t.random()+1e3)))})),disabled:!k},"Spin!")}}),r.a.createElement(c.a,{variant:"h4"},_),r.a.createElement(c.a,null,"Pay lines"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"----- ····· ·····"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ----- ·····"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ····· -----"),r.a.createElement("br",null),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"··^·· \\···/ \\···/"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·/·\\· ·\\·/· ·---·"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ··v·· ·····"),r.a.createElement("br",null),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"····· ·---· ·····"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"·---· /···\\ \\···/"),r.a.createElement(c.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"/···\\ ····· ·---·"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return E}));var n=a(0),r=a(140),i=a(9),o=a(240),s=a(11),l=a(29),c=a(1),u=a(10),m=a(48),h=a(111),d=a(134);const p=Object(h.a)(e=>Object(d.a)({location:{color:e.colors.white,whiteSpace:"nowrap",margin:"0px",padding:"0px",cursor:"pointer"}}));function f(e,t){t.name===i.a.TravelAgency?e.toTravel():t.name===i.a.WorldStockExchange?e.toStockMarket():e.toLocation(t)}function g(e){e.types;const t=l.b.Router(),a=p();let r="X";return e.types.includes(m.a.Company)&&(r="C"),e.types.includes(m.a.Gym)&&(r="G"),e.types.includes(m.a.Hospital)&&(r="H"),e.types.includes(m.a.Slums)&&(r="S"),e.types.includes(m.a.StockMarket)&&(r="$"),e.types.includes(m.a.TechVendor)&&(r="T"),e.types.includes(m.a.TravelAgency)&&(r="T"),e.types.includes(m.a.University)&&(r="U"),e.types.includes(m.a.Casino)&&(r="¢"),e.types.includes(m.a.Special)&&(r="?"),e?n.createElement("span",{"aria-label":e.name,key:e.name,className:a.location,onClick:()=>f(t,e)},n.createElement("b",null,r)):n.createElement("span",null,"*")}function y(e){const t=/[A-Z]/g,a={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25},r=n=>{const r=[],i=[];let s;for(;null!==(s=t.exec(n));)i.push(s);if(0===i.length)return r.push(n),r;for(let t=0;t<i.length;t++){const s=0===t?0:i[t-1].index+1,l=i[t].index;r.push(n.slice(s,l));const c=a[n[i[t].index]];r.push(g(o.a[e.city.locations[c]]))}return r.push(n.slice(i[i.length-1].index+1)),r},i=[],s=e.city.asciiArt.split("\n");for(const e in s)i.push(n.createElement(c.a,{key:e,sx:{lineHeight:"1em",whiteSpace:"pre"}},r(s[e])));return n.createElement(n.Fragment,null,i)}function b(e){const t=l.b.Router(),a=e.city.locations.map(e=>n.createElement(n.Fragment,{key:e},n.createElement(u.a,{onClick:()=>f(t,o.a[e])},e),n.createElement("br",null)));return n.createElement(n.Fragment,null,a)}function E(){const e=l.b.Player(),t=r.a[e.city];return n.createElement(n.Fragment,null,n.createElement(c.a,null,t.name),s.a.DisableASCIIArt?n.createElement(b,{city:t}):n.createElement(y,{city:t}))}},,,,,,,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return d}));var n=a(0),r=a.n(n),i=a(40),o=a(10),s=a(25),l=a(1),c=a(117),u=a(261),m=a(72),h=a(85);function d(e){const[t,a]=Object(n.useState)(e.options.theme),[d,p]=Object(n.useState)(e.options.insertSpaces),[f,g]=Object(n.useState)(e.options.fontSize),[y,b]=Object(n.useState)(e.options.wordWrap),[E,k]=Object(n.useState)(e.options.vim);return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(l.a,null,"Theme: "),r.a.createElement(c.a,{onChange:e=>a(e.target.value),value:t},r.a.createElement(m.a,{value:"monokai"},"monokai"),r.a.createElement(m.a,{value:"solarized-dark"},"solarized-dark"),r.a.createElement(m.a,{value:"solarized-light"},"solarized-light"),r.a.createElement(m.a,{value:"vs-dark"},"dark"),r.a.createElement(m.a,{value:"light"},"light"),r.a.createElement(m.a,{value:"dracula"},"dracula"),r.a.createElement(m.a,{value:"one-dark"},"one-dark"))),r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(l.a,null,"Use whitespace over tabs: "),r.a.createElement(u.a,{onChange:e=>p(e.target.checked),checked:d})),r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(l.a,null,"Word Wrap: "),r.a.createElement(c.a,{onChange:e=>b(e.target.value),value:y},r.a.createElement(m.a,{value:"off"},"Off"),r.a.createElement(m.a,{value:"on"},"On"),r.a.createElement(m.a,{value:"bounded"},"Bounded"),r.a.createElement(m.a,{value:"wordWrapColumn"},"Word Wrap Column"))),r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(l.a,null,"Enable vim mode: "),r.a.createElement(u.a,{onChange:e=>k(e.target.checked),checked:E})),r.a.createElement(s.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(h.a,{type:"number",label:"Font size",value:f,onChange:function(e){const t=parseFloat(e.target.value);isNaN(t)||g(t)}})),r.a.createElement("br",null),r.a.createElement(o.a,{onClick:function(){e.save({theme:t,insertSpaces:d,fontSize:f,wordWrap:y,vim:E}),e.onClose()}},"Save"))}},function(e,t,a){"use strict";async function n(e){e.editor.defineTheme("monokai",{base:"vs-dark",inherit:!0,rules:[{background:"272822",token:""},{foreground:"75715e",token:"comment"},{foreground:"e6db74",token:"string"},{token:"number",foreground:"ae81ff"},{token:"otherkeyvars",foreground:"ae81ff"},{foreground:"ae81ff",token:"function"},{foreground:"f92672",token:"keyword"},{token:"storage.type.function.js",foreground:"ae81ff"},{token:"ns",foreground:"97d92b"},{token:"netscriptfunction",foreground:"53d3e4"},{token:"otherkeywords",foreground:"53d3e4"},{token:"this",foreground:"fd971f"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#272822","editor.selectionBackground":"#49483E","editor.lineHighlightBackground":"#3E3D32","editorCursor.foreground":"#F8F8F0","editorWhitespace.foreground":"#3B3A32","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e.editor.defineTheme("solarized-dark",{base:"vs-dark",inherit:!0,rules:[{background:"002b36",token:""},{foreground:"586e75",token:"comment"},{foreground:"00afaf",token:"string"},{token:"number",foreground:"00afaf"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"cb4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#839496","editor.background":"#002b36","editor.selectionBackground":"#073642","editor.lineHighlightBackground":"#073642","editorCursor.foreground":"#819090","editorWhitespace.foreground":"#073642","editorIndentGuide.activeBackground":"#9D550FB0","editor.selectionHighlightBorder":"#222218"}}),e.editor.defineTheme("solarized-light",{base:"vs",inherit:!0,rules:[{foreground:"657b83",background:"fdf6e3",token:""},{foreground:"586e75",token:"comment"},{foreground:"2aa198",token:"string"},{token:"number",foreground:"2aa198"},{token:"otherkeyvars",foreground:"268bd2"},{foreground:"268bd2",token:"function"},{foreground:"859900",token:"keyword"},{token:"storage.type.function.js",foreground:"bc4b16"},{token:"ns",foreground:"cb4b16"},{token:"netscriptfunction",foreground:"268bd2"},{token:"otherkeywords",foreground:"268bd2"},{token:"type.identifier.js",foreground:"b58900"},{token:"delimiter.square.js",foreground:"0087ff"},{token:"delimiter.bracket.js",foreground:"0087ff"},{token:"this",foreground:"cb4b16"}],colors:{"editor.foreground":"#657b83","editor.background":"#fdf6e3","editor.selectionBackground":"#eee8d5","editor.lineHighlightBackground":"#eee8d5","editorCursor.foreground":"#657b83","editorWhitespace.foreground":"#eee8d5","editorIndentGuide.activeBackground":"#eee8d5","editor.selectionHighlightBorder":"#073642"}}),e.editor.defineTheme("dracula",{base:"vs-dark",inherit:!0,rules:[{background:"282A36",foreground:"F8F8F2",token:""},{foreground:"6272A4",token:"comment"},{foreground:"F1FA8C",token:"string"},{token:"number",foreground:"BD93F9"},{token:"otherkeyvars",foreground:"BD93F9"},{foreground:"FF79C6",token:"function"},{foreground:"FF79C6",token:"keyword"},{token:"storage.type.function.js",foreground:"FF79C6"},{token:"ns",foreground:"FFB86C",fontStyle:"italic"},{token:"netscriptfunction",foreground:"FF79C6"},{token:"otherkeywords",foreground:"FF68A7"},{token:"type.identifier.js",foreground:"7EE9FD",fontStyle:"italic"},{token:"delimiter.square.js",foreground:"FFD709"},{token:"delimiter.parenthesis.js",foreground:"FFD709"},{token:"delimiter.bracket.js",foreground:"FFD709"},{token:"this",foreground:"BD93F9",fontStyle:"italic"}],colors:{"editor.foreground":"#F8F8F2","editor.background":"#282A36","editorLineNumber.foreground":"#6272A4","editor.selectionBackground":"#44475A","editor.selectionHighlightBackground":"#424450","editor.foldBackground":"#21222C","editor.wordHighlightBackground":"#8BE9FD50","editor.wordHighlightStrongBackground":"#50FA7B50","editor.findMatchBackground":"#FFB86C80","editor.findMatchHighlightBackground":"#FFFFFF40","editor.findRangeHighlightBackground":"#44475A75","editor.hoverHighlightBackground":"#8BE9FD50","editor.lineHighlightBorder":"#44475A","editor.rangeHighlightBackground":"#BD93F915","editor.snippetTabstopHighlightBackground":"#282A36","editor.snippetTabstopHighlightBorder":"#6272A4","editor.snippetFinalTabstopHighlightBackground":"#282A36","editor.snippetFinalTabstopHighlightBorder":"#50FA7B"}}),e.editor.defineTheme("one-dark",{base:"vs-dark",inherit:!0,rules:[{token:"",background:"333842",foreground:"ABB2BF"},{token:"comment",foreground:"5C6370"},{token:"string",foreground:"98C379"},{token:"number",foreground:"D19A66"},{token:"function",foreground:"C678DD"},{token:"keyword",foreground:"C678DD"},{token:"otherkeyvars",foreground:"D19A66"},{token:"otherkeywords",foreground:"C678DD"},{token:"ns",foreground:"E06C75"},{token:"netscriptfunction",foreground:"61AFEF"},{token:"type.identifier",foreground:"E5C07B"},{token:"delimiter",foreground:"ABB2BF"},{token:"this",foreground:"E06C75"}],colors:{"editor.background":"#282C34","editor.foreground":"#ABB2BF","editor.lineHighlightBackground":"#99BBFF0A","editor.selectionBackground":"#3E4451","editor.findMatchHighlightBackground":"#528BFF3D","editorCursor.foreground":"#528BFF","editorHoverWidget.background":"#21252B","editorHoverWidget.border":"#181A1F","editorIndentGuide.background":"#ABB2BF26","editorIndentGuide.activeBackground":"#626772","editorLineNumber.foreground":"#636D83","editorLineNumber.activeForeground":"#ABB2BF","editorSuggestWidget.background":"#21252B","editorSuggestWidget.border":"#181A1F","editorSuggestWidget.selectedBackground":"#2C313A","editorWhitespace.foreground":"#ABB2BF26","editorWidget.background":"#21252B","editorWidget.border":"#3A3F4B","input.background":"#1B1D23","input.border":"#181A1F","peekView.border":"#528BFF","peekViewResult.background":"#21252B","peekViewResult.selectionBackground":"#2C313A","peekViewTitle.background":"#1B1D23","peekViewEditor.background":"#1B1D23","scrollbarSlider.background":"#4E566680","scrollbarSlider.activeBackground":"#747D9180","scrollbarSlider.hoverBackground":"#5A637580"}})}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";t.a='/**\n * @public\n */\ninterface Player {\n hacking: number;\n hp: number;\n max_hp: number;\n strength: number;\n defense: number;\n dexterity: number;\n agility: number;\n charisma: number;\n intelligence: number;\n hacking_chance_mult: number;\n hacking_speed_mult: number;\n hacking_money_mult: number;\n hacking_grow_mult: number;\n hacking_exp: number;\n strength_exp: number;\n defense_exp: number;\n dexterity_exp: number;\n agility_exp: number;\n charisma_exp: number;\n hacking_mult: number;\n strength_mult: number;\n defense_mult: number;\n dexterity_mult: number;\n agility_mult: number;\n charisma_mult: number;\n hacking_exp_mult: number;\n strength_exp_mult: number;\n defense_exp_mult: number;\n dexterity_exp_mult: number;\n agility_exp_mult: number;\n charisma_exp_mult: number;\n company_rep_mult: number;\n faction_rep_mult: number;\n numPeopleKilled: number;\n money: number;\n city: string;\n location: string;\n companyName: string;\n crime_money_mult: number;\n crime_success_mult: number;\n isWorking: boolean;\n workType: string;\n currentWorkFactionName: string;\n currentWorkFactionDescription: string;\n workHackExpGainRate: number;\n workStrExpGainRate: number;\n workDefExpGainRate: number;\n workDexExpGainRate: number;\n workAgiExpGainRate: number;\n workChaExpGainRate: number;\n workRepGainRate: number;\n workMoneyGainRate: number;\n workMoneyLossRate: number;\n workHackExpGained: number;\n workStrExpGained: number;\n workDefExpGained: number;\n workDexExpGained: number;\n workAgiExpGained: number;\n workChaExpGained: number;\n workRepGained: number;\n workMoneyGained: number;\n createProgramName: string;\n createProgramReqLvl: number;\n className: string;\n crimeType: string;\n work_money_mult: number;\n hacknet_node_money_mult: number;\n hacknet_node_purchase_cost_mult: number;\n hacknet_node_ram_cost_mult: number;\n hacknet_node_core_cost_mult: number;\n hacknet_node_level_cost_mult: number;\n hasWseAccount: boolean;\n hasTixApiAccess: boolean;\n has4SData: boolean;\n has4SDataTixApi: boolean;\n bladeburner_max_stamina_mult: number;\n bladeburner_stamina_gain_mult: number;\n bladeburner_analysis_mult: number;\n bladeburner_success_chance_mult: number;\n bitNodeN: number;\n totalPlaytime: number;\n playtimeSinceLastAug: number;\n playtimeSinceLastBitnode: number;\n jobs: any;\n factions: string[];\n tor: boolean;\n}\n\n/**\n * @public\n */\ninterface RunningScript {\n args: string[];\n filename: string;\n logs: string[];\n offlineExpGained: number;\n offlineMoneyMade: number;\n offlineRunningTime: number;\n onlineExpGained: number;\n onlineMoneyMade: number;\n onlineRunningTime: number;\n pid: number;\n ramUsage: number;\n server: string;\n threads: number;\n}\n\n/**\n * Data representing the internal values of a crime.\n * @public\n */\nexport interface CrimeStats {\n /** Number representing the difficulty of the crime. Used for success chance calculations */\n difficulty: number;\n /** Amount of karma lost for successfully committing this crime */\n karma: number;\n /** How many people die as a result of this crime */\n kills: number;\n /** How much money is given */\n money: number;\n /** Name of crime */\n name: number;\n /** Milliseconds it takes to attempt the crime */\n time: number;\n /** Description of the crime activity */\n type: string;\n /** hacking level impact on success change of the crime */\n hacking_success_weight: number;\n /** strength level impact on success change of the crime */\n strength_success_weight: number;\n /** defense level impact on success change of the crime */\n defense_success_weight: number;\n /** dexterity level impact on success change of the crime */\n dexterity_success_weight: number;\n /** agility level impact on success change of the crime */\n agility_success_weight: number;\n /** charisma level impact on success change of the crime */\n charisma_success_weight: number;\n /** hacking exp gained from crime */\n hacking_exp: number;\n /** strength exp gained from crime */\n strength_exp: number;\n /** defense exp gained from crime */\n defense_exp: number;\n /** dexterity exp gained from crime */\n dexterity_exp: number;\n /** agility exp gained from crime */\n agility_exp: number;\n /** charisma exp gained from crime */\n charisma_exp: number;\n /** intelligence exp gained from crime */\n intelligence_exp: number;\n}\n\n/**\n * Data representing the internal values of an Augmentation.\n * @public\n */\nexport interface AugmentationStats {\n /** Multipler to hacking skill */\n hacking_mult?: number;\n /** Multipler to strength skill */\n strength_mult?: number;\n /** Multipler to defense skill */\n defense_mult?: number;\n /** Multipler to dexterity skill */\n dexterity_mult?: number;\n /** Multipler to agility skill */\n agility_mult?: number;\n /** Multipler to charisma skill */\n charisma_mult?: number;\n /** Multipler to hacking experience gain rate */\n hacking_exp_mult?: number;\n /** Multipler to strength experience gain rate */\n strength_exp_mult?: number;\n /** Multipler to defense experience gain rate */\n defense_exp_mult?: number;\n /** Multipler to dexterity experience gain rate */\n dexterity_exp_mult?: number;\n /** Multipler to agility experience gain rate */\n agility_exp_mult?: number;\n /** Multipler to charisma experience gain rate */\n charisma_exp_mult?: number;\n /** Multipler to chance of successfully performing a hack */\n hacking_chance_mult?: number;\n /** Multipler to hacking speed */\n hacking_speed_mult?: number;\n /** Multipler to amount of money the player gains from hacking */\n hacking_money_mult?: number;\n /** Multipler to amount of money injected into servers using grow */\n hacking_grow_mult?: number;\n /** Multipler to amount of reputation gained when working */\n company_rep_mult?: number;\n /** Multipler to amount of reputation gained when working */\n faction_rep_mult?: number;\n /** Multipler to amount of money gained from crimes */\n crime_money_mult?: number;\n /** Multipler to crime success rate */\n crime_success_mult?: number;\n /** Multipler to amount of money gained from working */\n work_money_mult?: number;\n /** Multipler to amount of money produced by Hacknet Nodes */\n hacknet_node_money_mult?: number;\n /** Multipler to cost of purchasing a Hacknet Node */\n hacknet_node_purchase_cost_mult?: number;\n /** Multipler to cost of ram for a Hacknet Node */\n hacknet_node_ram_cost_mult?: number;\n /** Multipler to cost of core for a Hacknet Node */\n hacknet_node_core_cost_mult?: number;\n /** Multipler to cost of leveling up a Hacknet Node */\n hacknet_node_level_cost_mult?: number;\n /** Multipler to Bladeburner max stamina */\n bladeburner_max_stamina_mult?: number;\n /** Multipler to Bladeburner stamina gain rate */\n bladeburner_stamina_gain_mult?: number;\n /** Multipler to effectiveness in Bladeburner Field Analysis */\n bladeburner_analysis_mult?: number;\n /** Multipler to success chance in Bladeburner contracts/operations */\n bladeburner_success_chance_mult?: number;\n}\n\n/**\n * Options to affect the behavior of {@link NS.hack | hack}, {@link NS.grow | grow}, and {@link NS.weaken | weaken}.\n * @public\n */\nexport interface BasicHGWOptions {\n /** Number of threads to use for this function. Must be less than or equal to the number of threads the script is running with. */\n threads?: number;\n /** Set to true this action will affect the stock market. */\n stock?: boolean;\n}\n\n/**\n * Options to affect the behavior of {@link CodingContract} attempt.\n * @public\n */\nexport interface CodingAttemptOptions {\n /** If truthy, then the function will return a string that states the contract’s reward when it is successfully solved. */\n returnReward: boolean;\n}\n\n/**\n * Return value of {@link Sleeve.getSleevePurchasableAugs | getSleevePurchasableAugs}\n * @public\n */\nexport interface AugmentPair {\n /** augmentation name */\n name: string;\n /** augmentation cost */\n cost: number;\n}\n\n/**\n * @public\n */\nexport enum PositionTypes {\n Long = "L",\n Short = "S",\n}\n\n/**\n * @public\n */\nexport enum OrderTypes {\n LimitBuy = "Limit Buy Order",\n LimitSell = "Limit Sell Order",\n StopBuy = "Stop Buy Order",\n StopSell = "Stop Sell Order",\n}\n\n/**\n * Value in map of {@link StockOrder}\n * @public\n */\nexport interface StockOrderObject {\n /** Number of shares */\n shares: number;\n /** Price per share */\n price: number;\n /** Order type */\n type: OrderTypes;\n /** Order position */\n position: PositionTypes;\n}\n\n/**\n * Return value of {@link TIX.getOrders | getOrders}\n *\n * Keys are stock symbols, properties are arrays of {@link StockOrderObject}\n * @public\n */\nexport interface StockOrder {\n [key: string]: StockOrderObject[];\n}\n\n/**\n * A single process on a server.\n * @public\n */\nexport interface ProcessInfo {\n /** Script name. */\n filename: string;\n /** Number of threads script is running with */\n threads: number;\n /** Script\'s arguments */\n args: string[];\n /** Process ID */\n pid: number;\n}\n\n/**\n * Hack related multipliers.\n * @public\n */\nexport interface HackingMultipliers {\n /** Player\'s hacking chance multiplier. */\n chance: number;\n /** Player\'s hacking speed multiplier. */\n speed: number;\n /** Player\'s hacking money stolen multiplier. */\n money: number;\n /** Player\'s hacking growth multiplier */\n growth: number;\n}\n\n/**\n * Hacknet related multipliers.\n * @public\n */\nexport interface HacknetMultipliers {\n /** Player\'s hacknet production multiplier */\n production: number;\n /** Player\'s hacknet purchase cost multiplier */\n purchaseCost: number;\n /** Player\'s hacknet ram cost multiplier */\n ramCost: number;\n /** Player\'s hacknet core cost multiplier */\n coreCost: number;\n /** Player\'s hacknet level cost multiplier */\n levelCost: number;\n}\n\n/**\n * Hacknet node related constants\n * @public\n */\nexport interface HacknetNodeConstants {\n /** Amount of money gained per level */\n MoneyGainPerLevel: number;\n /** Base cost for a new node */\n BaseCost: number;\n /** Base cost per level */\n LevelBaseCost: number;\n /** Base cost to incrase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Multiplier to purchase new node */\n PurchaseNextMult: number;\n /** Multiplier to increase node level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Max node level */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n}\n\n/**\n * Hacknet server related constants\n * @public\n */\nexport interface HacknetServerConstants {\n /** Number of hashes calculated per level */\n HashesPerLevel: number;\n /** Base cost for a new server */\n BaseCost: number;\n /** Base cost to increase RAM */\n RamBaseCost: number;\n /** Base cost to increase cores */\n CoreBaseCost: number;\n /** Base cost to upgrade cache */\n CacheBaseCost: number;\n /** Multiplier to purchase a new server */\n PurchaseMult: number;\n /** Multiplier to increase server level */\n UpgradeLevelMult: number;\n /** Multiplier to increase RAM */\n UpgradeRamMult: number;\n /** Multiplier to increase cores */\n UpgradeCoreMult: number;\n /** Multiplier to upgrade cache */\n UpgradeCacheMult: number;\n /** Max number of servers */\n MaxServers: number;\n /** Max level for a server */\n MaxLevel: number;\n /** Max amount of RAM in GB */\n MaxRam: number;\n /** Max number of cores */\n MaxCores: number;\n /** Max cache size */\n MaxCache: number;\n}\n\n/**\n * A single server.\n * @public\n */\nexport interface Server {\n /**\n * How many CPU cores this server has. Maximum of 8.\n * Affects magnitude of grow and weaken.\n */\n cpuCores: number;\n\n /** Flag indicating whether the FTP port is open */\n ftpPortOpen: boolean;\n\n /** Flag indicating whether player has admin/root access to this server */\n hasAdminRights: boolean;\n\n /** Hostname. Must be unique */\n hostname: string;\n\n /** Flag indicating whether HTTP Port is open */\n httpPortOpen: boolean;\n\n /** IP Address. Must be unique */\n ip: string;\n\n /** Flag indicating whether player is curently connected to this server */\n isConnectedTo: boolean;\n\n /** RAM (GB) available on this server */\n maxRam: number;\n\n /**\n * Name of company/faction/etc. that this server belongs to.\n * Optional, not applicable to all Servers\n */\n organizationName: string;\n\n /** RAM (GB) used. i.e. unavailable RAM */\n ramUsed: number;\n\n /** Flag indicating whether SMTP Port is open */\n smtpPortOpen: boolean;\n\n /** Flag indicating whether SQL Port is open */\n sqlPortOpen: boolean;\n\n /** Flag indicating whether the SSH Port is open */\n sshPortOpen: boolean;\n\n /** Flag indicating whether this is a purchased server */\n purchasedByPlayer: boolean;\n\n /** Flag indicating whether this server has a backdoor installed by a player */\n backdoorInstalled: boolean;\n\n /**\n * Initial server security level\n * (i.e. security level when the server was created)\n */\n baseDifficulty: number;\n\n /** Server Security Level */\n hackDifficulty: number;\n\n /** Minimum server security level that this server can be weakened to */\n minDifficulty: number;\n\n /** How much money currently resides on the server and can be hacked */\n moneyAvailable: number;\n\n /** Maximum amount of money that this server can hold */\n moneyMax: number;\n\n /** Number of open ports required in order to gain admin/root access */\n numOpenPortsRequired: number;\n\n /** How many ports are currently opened on the server */\n openPortCount: number;\n\n /** Hacking level required to hack this server */\n requiredHackingSkill: number;\n\n /**\n * Parameter that affects how effectively this server\'s money can\n * be increased using the grow() Netscript function\n */\n serverGrowth: number;\n}\n\n/**\n * All multipliers affecting the difficulty of the current challenge.\n * @public\n */\nexport interface BitNodeMultipliers {\n /** Influences how quickly the player\'s agility level (not exp) scales */\n AgilityLevelMultiplier: number;\n /** Influences the base cost to purchase an augmentation. */\n AugmentationMoneyCost: number;\n /** Influences the base rep the player must have with a faction to purchase an augmentation. */\n AugmentationRepCost: number;\n /** Influences how quickly the player can gain rank within Bladeburner. */\n BladeburnerRank: number;\n /** Influences the cost of skill levels from Bladeburner. */\n BladeburnerSkillCost: number;\n /** Influences how quickly the player\'s charisma level (not exp) scales */\n CharismaLevelMultiplier: number;\n /** Influences the experience gained for each ability when a player completes a class. */\n ClassGymExpGain: number;\n /** Influences the amount of money gained from completing Coding Contracts */\n CodingContractMoney: number;\n /** Influences the experience gained for each ability when the player completes working their job. */\n CompanyWorkExpGain: number;\n /** Influences how much money the player earns when completing working their job. */\n CompanyWorkMoney: number;\n /** Influences the valuation of corporations created by the player. */\n CorporationValuation: number;\n /** Influences the base experience gained for each ability when the player commits a crime. */\n CrimeExpGain: number;\n /** Influences the base money gained when the player commits a crime. */\n CrimeMoney: number;\n /** Influences how many Augmentations you need in order to get invited to the Daedalus faction */\n DaedalusAugsRequirement: number;\n /** Influences how quickly the player\'s defense level (not exp) scales */\n DefenseLevelMultiplier: number;\n /** Influences how quickly the player\'s dexterity level (not exp) scales */\n DexterityLevelMultiplier: number;\n /** Influences how much rep the player gains in each faction simply by being a member. */\n FactionPassiveRepGain: number;\n /** Influences the experience gained for each ability when the player completes work for a Faction. */\n FactionWorkExpGain: number;\n /** Influences how much rep the player gains when performing work for a faction. */\n FactionWorkRepGain: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data API */\n FourSigmaMarketDataApiCost: number;\n /** Influences how much it costs to unlock the stock market\'s 4S Market Data (NOT API) */\n FourSigmaMarketDataCost: number;\n /** Influences the respect gain and money gain of your gang. */\n GangSoftcap: number;\n /** Influences the experienced gained when hacking a server. */\n HackExpGain: number;\n /** Influences how quickly the player\'s hacking level (not experience) scales */\n HackingLevelMultiplier: number;\n /** Influences how much money is produced by Hacknet Nodes and the hash rate of Hacknet Servers (unlocked in BitNode-9) */\n HacknetNodeMoney: number;\n /** Influences how much money it costs to upgrade your home computer\'s RAM */\n HomeComputerRamCost: number;\n /** Influences how much money is gained when the player infiltrates a company. */\n InfiltrationMoney: number;\n /** Influences how much rep the player can gain from factions when selling stolen documents and secrets */\n InfiltrationRep: number;\n /** Influences how much money can be stolen from a server when the player performs a hack against it through the Terminal. */\n ManualHackMoney: number;\n /** Influence how much it costs to purchase a server */\n PurchasedServerCost: number;\n /** Influences the maximum number of purchased servers you can have */\n PurchasedServerLimit: number;\n /** Influences the maximum allowed RAM for a purchased server */\n PurchasedServerMaxRam: number;\n /** Influences cost of any purchased server at or above 128GB */\n PurchasedServerSoftCap: number;\n /** Influences the minimum favor the player must have with a faction before they can donate to gain rep. */\n RepToDonateToFaction: number;\n /** Influences how much the money on a server can be reduced when a script performs a hack against it. */\n ScriptHackMoney: number;\n /** Influences how much of the money stolen by a scripted hack will be added to the player\'s money. */\n ScriptHackMoneyGain: number;\n /** Influences the growth percentage per cycle against a server. */\n ServerGrowthRate: number;\n /** Influences the maxmimum money that a server can grow to. */\n ServerMaxMoney: number;\n /** Influences the initial money that a server starts with. */\n ServerStartingMoney: number;\n /** Influences the initial security level (hackDifficulty) of a server. */\n ServerStartingSecurity: number;\n /** Influences the weaken amount per invocation against a server. */\n ServerWeakenRate: number;\n /** Influences how quickly the player\'s strength level (not exp) scales */\n StrengthLevelMultiplier: number;\n /** Influences the power of the gift */\n StaneksGiftPowerMultiplier: number;\n /** Influences the size of the gift */\n StaneksGiftExtraSize: number;\n /** Influences the hacking skill required to backdoor the world daemon. */\n WorldDaemonDifficulty: number;\n}\n\n/**\n * Object representing all the values related to a hacknet node.\n * @public\n */\nexport interface NodeStats {\n /** Node\'s name */\n name: string;\n /** Node\'s level */\n level: number;\n /** Node\'s RAM (GB) */\n ram: number;\n /** Node\'s used RAM (GB) */\n ramUsed: number;\n /** Node\'s number of cores */\n cores: number;\n /** Cache level. Only applicable for Hacknet Servers */\n cache: number;\n /** Hash Capacity provided by this Node. Only applicable for Hacknet Servers */\n hashCapacity: number;\n /** Node\'s production per second */\n production: number;\n /** Number of seconds since Node has been purchased */\n timeOnline: number;\n /** Total number of money Node has produced */\n totalProduction: number;\n}\n\n/**\n * Short summary of the players skills.\n * @public\n */\nexport interface PlayerSkills {\n /** Hacking level */\n hacking: number;\n /** Strength level */\n strength: number;\n /** Defense level */\n defense: number;\n /** Dexterity level */\n dexterity: number;\n /** Agility level */\n agility: number;\n /** Chraisma level */\n charisma: number;\n /** Intelligence level */\n intelligence: number;\n}\n\n/**\n * @public\n */\nexport interface CharacterMult {\n /** Agility stat */\n agility: number;\n /** Agility exp */\n agilityExp: number;\n /** Company reputation */\n companyRep: number;\n /** Money earned from crimes */\n crimeMoney: number;\n /** Crime success chance */\n crimeSuccess: number;\n /** Defense stat */\n defense: number;\n /** Defense exp */\n defenseExp: number;\n /** Dexterity stat */\n dexterity: number;\n /** Dexterity exp */\n dexterityExp: number;\n /** Faction reputation */\n factionRep: number;\n /** Hacking stat */\n hacking: number;\n /** Hacking exp */\n hackingExp: number;\n /** Strength stat */\n strength: number;\n /** Strength exp */\n strengthExp: number;\n /** Money earned from jobs */\n workMoney: number;\n}\n\n/**\n * @public\n */\nexport interface CharacterInfo {\n /** Current BitNode number */\n bitnode: number;\n /** Name of city you are currently in */\n city: string;\n /** Array of factions you are currently a member of */\n factions: string[];\n /** Current health points */\n hp: number;\n /** Array of all companies at which you have jobs */\n company: string[];\n /** Array of job positions for all companies you are employed at. Same order as \'jobs\' */\n jobTitle: string[];\n /** Maximum health points */\n maxHp: number;\n /** Boolean indicating whether or not you have a tor router */\n tor: boolean;\n /** Object with many of the player\'s multipliers from Augmentations/Source Files */\n mult: CharacterMult;\n /** Timed worked in ms */\n timeWorked: number;\n /** Hacking experience earned so far from work */\n workHackExpGain: number;\n /** Str experience earned so far from work */\n workStrExpGain: number;\n /** Def experience earned so far from work */\n workDefExpGain: number;\n /** Dex experience earned so far from work */\n workDexExpGain: number;\n /** Agi experience earned so far from work */\n workAgiExpGain: number;\n /** Cha experience earned so far from work */\n workChaExpGain: number;\n /** Reputation earned so far from work, if applicable */\n workRepGain: number;\n /** Money earned so far from work, if applicable */\n workMoneyGain: number;\n}\n\n/**\n * @public\n */\nexport interface SleeveWorkGains {\n /** Hacking exp gained from work */\n workHackExpGain: number;\n /** Strength exp gained from work */\n workStrExpGain: number;\n /** Defense exp gained from work, */\n workDefExpGain: number;\n /** Dexterity exp gained from work */\n workDexExpGain: number;\n /** Agility exp gained from work */\n workAgiExpGain: number;\n /** Charisma exp gained from work */\n workChaExpGain: number;\n /** Money gained from work */\n workMoneyGain: number;\n}\n\n/**\n * @public\n */\nexport interface SourceFileLvl {\n /** The number of the source file */\n n: number;\n /** The level of the source file */\n lvl: number;\n}\n\n/**\n * Bladeburner current action.\n * @public\n */\nexport interface BladeburnerCurAction {\n /** Type of Action */\n type: string;\n /** Name of Action */\n name: string;\n}\n\n/**\n * Gang general info.\n * @public\n */\nexport interface GangGenInfo {\n /** Name of faction that the gang belongs to ("Slum Snakes", etc.) */\n faction: string;\n /** Indicating whether or not it\'s a hacking gang */\n isHacking: boolean;\n /** Money earned per game cycle */\n moneyGainRate: number;\n /** Gang\'s power for territory warfare */\n power: number;\n /** Gang\'s respect */\n respect: number;\n /** Respect earned per game cycle */\n respectGainRate: number;\n /** Amount of territory held */\n territory: number;\n /** Clash chance */\n territoryClashChance: number;\n /** Gang\'s wanted level */\n wantedLevel: number;\n /** Wanted level gained/lost per game cycle (negative for losses) */\n wantedLevelGainRate: number;\n /** Indicating if territory warfare is enabled */\n territoryWarfareEngaged: boolean;\n /** Number indicating the current wanted penalty */\n wantedPenalty: number;\n}\n\n/**\n * @public\n */\nexport interface GangOtherInfoObject {\n /** Gang power */\n power: number;\n /** Gang territory, in decimal form */\n territory: number;\n}\n\n/**\n * @public\n */\nexport interface GangOtherInfo {\n "Slum Snakes": GangOtherInfoObject;\n Tetrads: GangOtherInfoObject;\n "The Syndicate": GangOtherInfoObject;\n "The Dark Army": GangOtherInfoObject;\n "Speakers for the Dead": GangOtherInfoObject;\n NiteSec: GangOtherInfoObject;\n "The Black Hand": GangOtherInfoObject;\n}\n\n/**\n * Object representing data representing a gang member task.\n * @public\n */\nexport interface GangTaskStats {\n /** Task name */\n name: string;\n /** Task Description */\n desc: string;\n /** Is a task of a hacking gang */\n isHacking: boolean;\n /** Is a task of a combat gang */\n isCombat: boolean;\n /** Base respect earned */\n baseRespect: number;\n /** Base wanted earned */\n baseWanted: number;\n /** Base money earned */\n baseMoney: number;\n /** Hacking skill impact on task scaling */\n hackWeight: number;\n /** Stength skill impact on task scaling */\n strWeight: number;\n /** Defense skill impact on task scaling */\n defWeight: number;\n /** Dexterity skill impact on task scaling */\n dexWeight: number;\n /** Agility skill impact on task scaling */\n agiWeight: number;\n /** Charisma skill impact on task scaling */\n chaWeight: number;\n /** Number representing the difficulty of the task */\n difficulty: number;\n /** Territory impact on task scaling */\n territory: GangTerritory;\n}\n\n/**\n * Object representing data representing a gang member equipment.\n * @public\n */\nexport interface EquipmentStats {\n /** Strength multiplier */\n str?: number;\n /** Defense multiplier */\n def?: number;\n /** Dexterity multiplier */\n dex?: number;\n /** Agility multiplier */\n agi?: number;\n /** Charisma multiplier */\n cha?: number;\n /** Hacking multiplier */\n hack?: number;\n}\n\n/**\n * @public\n */\nexport interface GangTerritory {\n /** Money gain impact on task scaling */\n money: number;\n /** Respect gain impact on task scaling */\n respect: number;\n /** Wanted gain impact on task scaling */\n wanted: number;\n}\n\n/**\n * @public\n */\nexport interface GangMemberInfo {\n name: string;\n task: string;\n earnedRespect: number;\n hack: number;\n str: number;\n def: number;\n dex: number;\n agi: number;\n cha: number;\n\n hack_exp: number;\n str_exp: number;\n def_exp: number;\n dex_exp: number;\n agi_exp: number;\n cha_exp: number;\n\n hack_mult: number;\n str_mult: number;\n def_mult: number;\n dex_mult: number;\n agi_mult: number;\n cha_mult: number;\n\n hack_asc_mult: number;\n str_asc_mult: number;\n def_asc_mult: number;\n dex_asc_mult: number;\n agi_asc_mult: number;\n cha_asc_mult: number;\n\n hack_asc_points: number;\n str_asc_points: number;\n def_asc_points: number;\n dex_asc_points: number;\n agi_asc_points: number;\n cha_asc_points: number;\n\n upgrades: string[];\n augmentations: string[];\n\n respectGain: number;\n wantedLevelGain: number;\n moneyGain: number;\n}\n\n/**\n * @public\n */\nexport interface GangMemberAscension {\n /** Amount of respect lost from ascending */\n respect: number;\n /** Hacking multiplier gained from ascending */\n hack: number;\n /** Strength multiplier gained from ascending */\n str: number;\n /** Defense multiplier gained from ascending */\n def: number;\n /** Dexterity multiplier gained from ascending */\n dex: number;\n /** Agility multiplier gained from ascending */\n agi: number;\n /** Charisma multiplier gained from ascending */\n cha: number;\n}\n\n/**\n * Object representing a sleeve stats.\n * @public\n */\nexport interface SleeveSkills {\n /** Current shock of the sleeve [0-100] */\n shock: number;\n /** Current sync of the sleeve [0-100] */\n sync: number;\n /** Current hacking skill of the sleeve */\n hacking: number;\n /** Current strength of the sleeve */\n strength: number;\n /** Current defense of the sleeve */\n defense: number;\n /** Current dexterity of the sleeve */\n dexterity: number;\n /** Current agility of the sleeve */\n agility: number;\n /** Current charisma of the sleeve */\n charisma: number;\n}\n\n/**\n * Object representing sleeve information.\n * @public\n */\nexport interface SleeveInformation {\n /** Location of the sleeve */\n city: string;\n /** Current hp of the sleeve */\n hp: number;\n /** Max hp of the sleeve */\n maxHp: number;\n /** Jobs available to the sleeve */\n jobs: string[];\n /** Job titles available to the sleeve */\n jobTitle: string[];\n /** Does this sleeve have access to the tor router */\n tor: boolean;\n /** Sleeve multipliers */\n mult: CharacterMult;\n /** Time spent on the current task in milliseconds */\n timeWorked: number;\n /** Earnings synchronized to other sleeves */\n earningsForSleeves: SleeveWorkGains;\n /** Earnings synchronized to the player */\n earningsForPlayer: SleeveWorkGains;\n /** Earnings for this sleeve */\n earningsForTask: SleeveWorkGains;\n /** Faction or company reputation gained for the current task */\n workRepGain: number;\n}\n\n/**\n * Object representing a sleeve current task.\n * @public\n */\nexport interface SleeveTask {\n /** Task type */\n task: string;\n /** Crime currently attempting, if any */\n crime: string;\n /** Location of the task, if any */\n location: string;\n /** Stat being trained at the gym, if any */\n gymStatType: string;\n /** Faction work type being performed, if any */\n factionWorkType: string;\n}\n\n/**\n * Object representing a port. A port is a serialized queue.\n * @public\n */\nexport interface NetscriptPort {\n /**\n * Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns The data popped off the queue if it was full.\n */\n write(value: string|number): null|string|number;\n\n /**\n * Attempt to write data to the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns True if the data was added to the port, false if the port was full\n */\n tryWrite(value: string|number): boolean;\n\n /**\n * Shift an element out of the port.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function will remove the first element from the port and return it.\n * If the port is empty, then the string “NULL PORT DATA” will be returned.\n * @returns the data read.\n */\n read(): string|number;\n\n /**\n * Retrieve the first element from the port without removing it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n * @returns the data read\n */\n peek(): string|number;\n\n /**\n * Check if the port is full.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is full, otherwise false\n */\n full(): boolean;\n\n /**\n * Check if the port is empty.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns true if the port is empty, otherwise false\n */\n empty(): boolean;\n\n /**\n * Empties all data from the port.\n * @remarks\n * RAM cost: 0 GB\n */\n clear(): void;\n}\n\n/**\n * Stock market API\n * @public\n */\nexport interface TIX {\n /**\n * Returns an array of the symbols of the tradable stocks\n *\n * @remarks RAM cost: 2 GB\n * @returns Array of the symbols of the tradable stocks.\n */\n getSymbols(): string[];\n\n /**\n * Returns the price of a stock\n *\n * @remarks\n * RAM cost: 2 GB\n * The stock’s price is the average of its bid and ask price.\n *\n * @example\n * ```ts\n * // NS1\n * stock.getPrice("FISG");\n * ```\n * @example\n * ```ts\n * // NS2\n * ns.stock.getPrice("FISG");\n * ```\n * @param sym - Stock symbol.\n * @returns The price of a stock.\n */\n getPrice(sym: string): number;\n\n /**\n * Returns the ask price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The ask price of a stock.\n */\n getAskPrice(sym: string): number;\n\n /**\n * Returns the bid price of that stock.\n * @remarks RAM cost: 2 GB\n *\n * @param sym - Stock symbol.\n * @returns The bid price of a stock.\n */\n getBidPrice(sym: string): number;\n\n /**\n * Returns the player’s position in a stock.\n * @remarks\n * RAM cost: 2 GB\n * Returns an array of four elements that represents the player’s position in a stock.\n *\n * The first element is the returned array is the number of shares the player owns of\n * the stock in the Long position. The second element in the array is the average price\n * of the player’s shares in the Long position.\n *\n * The third element in the array is the number of shares the player owns of the stock\n * in the Short position. The fourth element in the array is the average price of the\n * player’s Short position.\n *\n * All elements in the returned array are numeric.\n *\n * @example\n * ```ts\n * // NS1\n * var pos = stock.getPosition("ECP");\n * var shares = pos[0];\n * var avgPx = pos[1];\n * var sharesShort = pos[2];\n * var avgPxShort = pos[3];\n * ```\n * @example\n * ```ts\n * // NS2\n * const [shares, avgPx, sharesShort, avgPxShort] = ns.stock.getPosition("ECP");\n * ```\n * @param sym - Stock symbol.\n * @returns Array of four elements that represents the player’s position in a stock.\n */\n getPosition(sym: string): [number, number, number, number];\n\n /**\n * Returns the maximum number of shares of a stock.\n * @remarks\n * RAM cost: 2 GB\n * This is the maximum amount of the stock that can be purchased\n * in both the Long and Short positions combined.\n *\n * @param sym - Stock symbol.\n * @returns Maximum number of shares that the stock has.\n */\n getMaxShares(sym: string): number;\n\n /**\n * Calculates cost of buying stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much it would cost to buy a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchase.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Cost to buy a given number of shares of a stock.\n */\n getPurchaseCost(sym: string, shares: number, posType: string): number;\n\n /**\n * Calculate profit of selling stocks.\n * @remarks\n * RAM cost: 2 GB\n * Calculates and returns how much you would gain from selling a given number of shares of a stock.\n * This takes into account spread, large transactions influencing the price of the stock and commission fees.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell.\n * @param posType - Specifies whether the order is a “Long” or “Short” position.\n * @returns Gain from selling a given number of shares of a stock.\n */\n getSaleGain(sym: string, shares: number, posType: string): number;\n\n /**\n * Buy stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase shares of a stock using a Market Order.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If this function successfully purchases the shares, it will return the stock price at which\n * each share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to purchased. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n buy(sym: string, shares: number): number;\n\n /**\n * Sell stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell shares of a stock using a Market Order.\n *\n * If the specified number of shares in the function exceeds the amount that the player\n * actually owns, then this function will sell all owned shares. Remember that every\n * transaction on the stock exchange costs a certain commission fee.\n *\n * The net profit made from selling stocks with this function is reflected in the script’s\n * statistics. This net profit is calculated as:\n *\n * shares * (sell_price - average_price_of_purchased_shares)\n *\n * If the sale is successful, this function will return the stock price at\n * which each share was sold. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sell(sym: string, shares: number): number;\n\n /**\n * Short stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to purchase a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the player does not have enough money to purchase the specified number of shares,\n * then no shares will be purchased. Remember that every transaction on the stock exchange\n * costs a certain commission fee.\n *\n * If the purchase is successful, this function will return the stock price at which each\n * share was purchased. Otherwise, it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to short. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was purchased, otherwise 0 if the shares weren\'t purchased.\n */\n short(sym: string, shares: number): number;\n\n /**\n * Sell short stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Attempts to sell a short position of a stock using a Market Order.\n *\n * The ability to short a stock is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * If the specified number of shares exceeds the amount that the player actually owns,\n * then this function will sell all owned shares. Remember that every transaction on\n * the stock exchange costs a certain commission fee.\n *\n * If the sale is successful, this function will return the stock price at which each\n * share was sold. Otherwise it will return 0.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares to sell. Must be positive. Will be rounded to nearest integer.\n * @returns The stock price at which each share was sold, otherwise 0 if the shares weren\'t sold.\n */\n sellShort(sym: string, shares: number): number;\n\n /**\n * Place order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Places an order on the stock market. This function only works for Limit and Stop Orders.\n *\n * The ability to place limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * Returns true if the order is successfully placed, and false otherwise.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n * @returns True if the order is successfully placed, and false otherwise.\n */\n placeOrder(sym: string, shares: number, price: number, type: string, pos: string): boolean;\n\n /**\n * Cancel order for stocks.\n * @remarks\n * RAM cost: 2.5 GB\n * Cancels an oustanding Limit or Stop order on the stock market.\n *\n * The ability to use limit and stop orders is **not** immediately available to the player and\n * must be unlocked later on in the game.\n *\n * @param sym - Stock symbol.\n * @param shares - Number of shares for order. Must be positive. Will be rounded to nearest integer.\n * @param price - Execution price for the order.\n * @param type - Type of order.\n * @param pos - Specifies whether the order is a “Long” or “Short” position.\n */\n cancelOrder(sym: string, shares: number, price: number, type: string, pos: string): void;\n\n /**\n * Returns your order book for the stock market.\n * @remarks\n * RAM cost: 2.5 GB\n * This is an object containing information for all the Limit and Stop Orders you have in the stock market.\n * For each symbol you have a position in, the returned object will have a key with that symbol\'s name.\n * The object\'s properties are each an array of {@link StockOrderObject}\n * The object has the following structure:\n *\n * ```ts\n * {\n * string1: [ // Array of orders for this stock\n * {\n * shares: Order quantity\n * price: Order price\n * type: Order type\n * position: Either "L" or "S" for Long or Short position\n * },\n * {\n * ...\n * },\n * ...\n * ],\n * string2: [ // Array of orders for this stock\n * ...\n * ],\n * ...\n * }\n * ```\n * The “Order type” property can have one of the following four values: "Limit Buy Order", "Limit Sell Order", "Stop Buy Order", "Stop Sell Order".\n * Note that the order book will only contain information for stocks that you actually have orders in.\n *\n * @example\n * ```ts\n * "If you do not have orders in Nova Medical (NVMD), then the returned object will not have a “NVMD” property."\n * {\n * ECP: [\n * {\n * shares: 5,\n * price: 100,000\n * type: "Stop Buy Order",\n * position: "S",\n * },\n * {\n * shares: 25,\n * price: 125,000\n * type: "Limit Sell Order",\n * position: "L",\n * },\n * ],\n * SYSC: [\n * {\n * shares: 100,\n * price: 10,000\n * type: "Limit Buy Order",\n * position: "L",\n * },\n * ],\n * }\n * ```\n * @returns Object containing information for all the Limit and Stop Orders you have in the stock market.\n */\n getOrders(): StockOrder;\n\n /**\n * Returns the volatility of the specified stock.\n * @remarks\n * RAM cost: 2.5 GB\n * Volatility represents the maximum percentage by which a stock’s price can change every tick.\n * The volatility is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a volatility of 3%, then this function will return 0.03, NOT 3).\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Volatility of the specified stock.\n */\n getVolatility(sym: string): number;\n\n /**\n * Returns the probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\n * @remarks\n * RAM cost: 2.5 GB\n * The probability is returned as a decimal value, NOT a percentage\n * (e.g. if a stock has a 60% chance of increasing, then this function will return 0.6, NOT 60).\n *\n * In other words, if this function returned 0.30 for a stock, then this means that the stock’s price has a\n * 30% chance of increasing and a 70% chance of decreasing during the next tick.\n *\n * In order to use this function, you must first purchase access to the Four Sigma (4S) Market Data TIX API.\n *\n * @param sym - Stock symbol.\n * @returns Probability that the specified stock’s price will increase (as opposed to decrease) during the next tick.\n */\n getForecast(sym: string): number;\n\n /**\n * Purchase 4S Market Data Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketData(): boolean;\n\n /**\n * Purchase 4S Market Data TIX API Access.\n * @remarks RAM cost: 2.5 GB\n * @returns True if you successfully purchased it or if you already have access, false otherwise.\n */\n purchase4SMarketDataTixApi(): boolean;\n}\n\n/**\n * Singularity API\n * @remarks\n * This API requires Source-File 4 to use. The RAM cost of all these functions is multiplied by 16/4/1 based on Source-File 4 levels.\n * @public\n */\nexport interface Singularity {\n /**\n * Take university class.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function will automatically set you to start taking a course at a university.\n * If you are already in the middle of some “working” action (such as working at a\n * company, for a faction, or on a program), then running this function will automatically\n * cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these universities and classes are the same as\n * if you were to manually visit and take these classes.\n *\n * @param universityName - Name of university. You must be in the correct city for whatever university you specify.\n * @param courseName - Name of course.\n * @param focus - Acquire player focus on this class. Optional. Defaults to true.\n * @returns True if actions is successfully started, false otherwise.\n */\n universityCourse(universityName: string, courseName: string, focus?: boolean): boolean;\n\n /**\n * Workout at the gym.\n *\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n\n * This function will automatically set you to start working out at a gym to train\n * a particular stat. If you are already in the middle of some “working” action\n * (such as working at a company, for a faction, or on a program), then running\n * this function will automatically cancel that action and give you your earnings.\n *\n * The cost and experience gains for all of these gyms are the same as if you were\n * to manually visit these gyms and train\n *\n * @param gymName - Name of gym. You must be in the correct city for whatever gym you specify.\n * @param stat - The stat you want to train.\n * @param focus - Acquire player focus on this gym workout. Optional. Defaults to true.\n * @returns True if actions is successfully started, false otherwise.\n */\n gymWorkout(gymName: string, stat: string, focus?: boolean): boolean;\n\n /**\n * Travel to another city.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows the player to travel to any city. The cost for using this\n * function is the same as the cost for traveling through the Travel Agency.\n *\n * @param city - City to travel to.\n * @returns True if actions is successful, false otherwise.\n */\n travelToCity(city: string): boolean;\n\n /**\n * Purchase the TOR router.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase a TOR router. The cost for\n * purchasing a TOR router using this function is the same as if you were to\n * manually purchase one.\n *\n * @returns True if actions is successful, false otherwise.\n */\n purchaseTor(): boolean;\n\n /**\n * Purchase a program from the dark web.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * This function allows you to automatically purchase programs. You MUST have a\n * TOR router in order to use this function. The cost of purchasing programs\n * using this function is the same as if you were purchasing them through the Dark\n * Web using the Terminal buy command.\n *\n * @example\n * ```ts\n * // NS1\n * purchaseProgram("brutessh.exe");\n * ```\n * @example\n * ```ts\n * // NS2\n * ns.purchaseProgram("brutessh.exe");\n * ```\n * @param programName - Name of program to purchase.\n * @returns True if the specified program is purchased, and false otherwise.\n */\n purchaseProgram(programName: string): boolean;\n\n /**\n * Check if the player is busy.\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * Returns a boolean indicating whether or not the player is currently performing an\n * ‘action’. These actions include working for a company/faction, studying at a univeristy,\n * working out at a gym, creating a program, committing a crime, or carrying out a Hacking Mission.\n *\n * @returns True if the player is currently performing an ‘action’, false otherwise.\n */\n isBusy(): boolean;\n\n /**\n * Stop the current action.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function is used to end whatever ‘action’ the player is currently performing.\n * The player will receive whatever money/experience/etc. he has earned from that action.\n *\n * The actions that can be stopped with this function are:\n *\n * * Studying at a university\n * * Working for a company/faction\n * * Creating a program\n * * Committing a Crime\n *\n * This function will return true if the player’s action was ended.\n * It will return false if the player was not performing an action when this function was called.\n *\n * @returns True if the player’s action was ended, false if the player was not performing an action.\n */\n stopAction(): boolean;\n\n /**\n * Upgrade home computer RAM.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of RAM on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer RAM is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer RAM is successfully upgraded, and false otherwise.\n */\n upgradeHomeRam(): boolean;\n\n /**\n * Upgrade home computer cores.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will upgrade amount of cores on the player’s home computer. The cost is\n * the same as if you were to do it manually.\n *\n * This function will return true if the player’s home computer cores is successfully upgraded, and false otherwise.\n *\n * @returns True if the player’s home computer cores is successfully upgraded, and false otherwise.\n */\n upgradeHomeCores(): boolean;\n\n /**\n * Get the price of upgrading home RAM.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer RAM.\n *\n * @returns Cost of upgrading the player’s home computer RAM.\n */\n getUpgradeHomeRamCost(): number;\n\n /**\n * Get the price of upgrading home cores.\n * @remarks\n * RAM cost: 1.5 GB * 16/4/1\n *\n *\n * Returns the cost of upgrading the player’s home computer cores.\n *\n * @returns Cost of upgrading the player’s home computer cores.\n */\n getUpgradeHomeCoresCost(): number;\n\n /**\n * Work for a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically set you to start working at the company\n * at which you are employed. If you are already in the middle of some “working”\n * action (such as working for a faction, training at a gym, or creating a program),\n * then running this function will automatically cancel that action and give you\n * your earnings.\n *\n * This function will return true if the player starts working, and false otherwise.\n *\n * Note that when you are working for a company, you will not actually receive your earnings (reputation, money, experience) until you FINISH the action.\n *\n * @example\n * ```ts\n * // NS1:\n * //If you only want to work until you get 100,000 company reputation. One small hack to get around this is to continuously restart the action to receive your earnings:\n * while (getCompanyRep(COMPANY HERE) < VALUE) {\n * workForCompany();\n * sleep(60000);\n * }\n * //This way, your company reputation will be updated every minute.\n * ```\n * @example\n * ```ts\n * // NS2:\n * //If you only want to work until you get 100,000 company reputation. One small hack to get around this is to continuously restart the action to receive your earnings:\n * while (ns.getCompanyRep(COMPANY HERE) < VALUE) {\n * ns.workForCompany();\n * await ns.sleep(60000);\n * }\n * //This way, your company reputation will be updated every minute.\n * ```\n * @param companyName - Name of company to work for. Must be an exact match. Optional. If not specified, this argument defaults to the last job that you worked\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForCompany(companyName?: string, focus?: boolean): boolean;\n\n /**\n * Apply for a job at a company.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically try to apply to the specified company\n * for a position in the specified field. This function can also be used to\n * apply for promotions by specifying the company and field you are already\n * employed at.\n *\n * This function will return true if you successfully get a job/promotion,\n * and false otherwise. Note that if you are trying to use this function to\n * apply for a promotion and you don’t get one, it will return false.\n *\n * @param companyName - Name of company to apply to.\n * @param field - Field to which you want to apply.\n * @returns True if the player successfully get a job/promotion, and false otherwise.\n */\n applyToCompany(companyName: string, field: string): boolean;\n\n /**\n * Get company reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of reputation you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of reputation you have at the specified company.\n */\n getCompanyRep(companyName: string): number;\n\n /**\n * Get company favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you have at the specified company.\n * If the company passed in as an argument is invalid, -1 will be returned.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you have at the specified company.\n */\n getCompanyFavor(companyName: string): number;\n\n /**\n * Get company favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function will return the amount of favor you will gain for the specified\n * company when you reset by installing Augmentations.\n *\n * @param companyName - Name of the company.\n * @returns Amount of favor you gain at the specified company when you reset by installing Augmentations.\n */\n getCompanyFavorGain(companyName: string): number;\n\n /**\n * List all current faction invitations.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * Returns an array with the name of all Factions you currently have oustanding invitations from.\n *\n * @returns Array with the name of all Factions you currently have oustanding invitations from.\n */\n checkFactionInvitations(): string[];\n\n /**\n * Join a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically accept an invitation from a faction and join it.\n *\n * @param faction - Name of faction to join.\n * @returns True if player joined the faction, and false otherwise.\n */\n joinFaction(faction: string): boolean;\n\n /**\n * Work for a faction.\n * @remarks\n * RAM cost: 3 GB * 16/4/1\n *\n *\n * This function will automatically set you to start working for the specified faction.\n * Obviously, you must be a member of the faction or else this function will fail. If\n * you are already in the middle of some “working” action (such as working for a company,\n * training at a gym, or creating a program), then running this function will automatically\n * cancel that action and give you your earnings.\n *\n * This function will return true if you successfully start working for the specified faction, and false otherwise.\n *\n * Note that when you are working for a faction, you will not actually receive your earnings (reputation, experience) until you FINISH the action.\n *\n * @example\n * ```ts\n * // NS1:\n * //If you only want to work until you get 100,000 faction reputation. One small hack to get around this is to continuously restart the action to receive your earnings:\n * while (getFactionRep(FACTION NAME) < VALUE) {\n * workForFaction(FACNAME, WORKTYPE);\n * sleep(60000);\n * }\n * //This way, your faction reputation will be updated every minute.\n * ```\n * @example\n * ```ts\n * // NS2:\n * //If you only want to work until you get 100,000 faction reputation. One small hack to get around this is to continuously restart the action to receive your earnings:\n * while (ns.getFactionRep(FACTION NAME) < VALUE) {\n * ns.workForFaction(FACNAME, WORKTYPE);\n * await ns.sleep(60000);\n * }\n * //This way, your faction reputation will be updated every minute.\n * ```\n * @param faction - Name of faction to work for.\n * @param workType - Type of work to perform for the faction.\n * @param focus - Acquire player focus on this work operation. Optional. Defaults to true.\n * @returns True if the player starts working, and false otherwise.\n */\n workForFaction(faction: string, workType: string, focus?: boolean): boolean;\n\n /**\n * Get faction reputation.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of reputation you have for the specified faction.\n *\n * @param faction - Name of faction to work for.\n * @returns Amount of reputation you have for the specified faction.\n */\n getFactionRep(faction: string): number;\n\n /**\n * Get faction favor.\n * @remarks\n * RAM cost: 1 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you have for the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you have for the specified faction.\n */\n getFactionFavor(faction: string): number;\n\n /**\n * Get faction favor gain.\n * @remarks\n * RAM cost: 0.75 GB * 16/4/1\n *\n *\n * This function returns the amount of favor you will gain for the specified\n * faction when you reset by installing Augmentations.\n *\n * @param faction - Name of faction.\n * @returns Amount of favor you will gain for the specified faction when you reset by installing Augmentations.\n */\n getFactionFavorGain(faction: string): number;\n\n /**\n * Donate to a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Attempts to donate money to the specified faction in exchange for reputation.\n * Returns true if you successfully donate the money, and false otherwise.\n *\n * @param faction - Name of faction to donate to.\n * @param amount - Amount of money to donate.\n * @returns True if the money was donated, and false otherwise.\n */\n donateToFaction(faction: string, amount: number): boolean;\n\n /**\n * Create a program.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically set you to start working on creating the\n * specified program. If you are already in the middle of some “working” action\n * (such as working for a company, training at a gym, or taking a course), then\n * running this function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns true if you successfully start working on the specified program, and false otherwise.\n *\n * Note that creating a program using this function has the same hacking level requirements as it normally would. These level requirements are:\n * * BruteSSH.exe: 50\n * * FTPCrack.exe: 100\n * * relaySMTP.exe: 250\n * * HTTPWorm.exe: 500\n * * SQLInject.exe: 750\n * * DeepscanV1.exe: 75\n * * DeepscanV2.exe: 400\n * * ServerProfiler.exe: 75\n * * AutoLink.exe: 25\n *\n * @example\n * ```ts\n * // NS1:\n * createProgram(“relaysmtp.exe”);\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.createProgram(“relaysmtp.exe”);\n * ```\n * @param program - Name of program to create.\n * @param focus - Acquire player focus on this program creation. Optional. Defaults to true.\n * @returns True if you successfully start working on the specified program, and false otherwise.\n */\n createProgram(program: string, focus?: boolean): boolean;\n\n /**\n * Commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function is used to automatically attempt to commit crimes.\n * If you are already in the middle of some ‘working’ action (such\n * as working for a company or training at a gym), then running this\n * function will automatically cancel that action and give you your\n * earnings.\n *\n * This function returns the number of milliseconds it takes to attempt the\n * specified crime (e.g It takes 60 seconds to attempt the ‘Rob Store’ crime,\n * so running `commitCrime(\'rob store\')` will return 60,000).\n *\n * Warning: I do not recommend using the time returned from this function to try\n * and schedule your crime attempts. Instead, I would use the isBusy Singularity\n * function to check whether you have finished attempting a crime. This is because\n * although the game sets a certain crime to be X amount of seconds, there is no\n * guarantee that your browser will follow that time limit.\n *\n * @param crime - Name of crime to attempt.\n * @returns The number of milliseconds it takes to attempt the specified crime.\n */\n commitCrime(crime: string): number;\n\n /**\n * Get chance to successfully commit a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns your chance of success at commiting the specified crime.\n *\n * @param crime - Name of crime.\n * @returns Chance of success at commiting the specified crime.\n */\n getCrimeChance(crime: string): number;\n\n /**\n * Get stats related to a crime.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns the stats of the crime.\n *\n * @param crime - Name of crime. Not case-sensitive\n * @returns The stats of the crime.\n */\n getCrimeStats(crime: string): CrimeStats;\n\n /**\n * Get a list of owned augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array containing the names (as strings) of all Augmentations you have.\n *\n * @param purchased - Specifies whether the returned array should include Augmentations you have purchased but not yet installed. By default, this argument is false which means that the return value will NOT have the purchased Augmentations.\n * @returns Array containing the names (as strings) of all Augmentations you have.\n */\n getOwnedAugmentations(purchased?: boolean): string[];\n\n /**\n * Get a list of augmentation available from a faction.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Returns an array containing the names (as strings) of all Augmentations\n * that are available from the specified faction.\n *\n * @param faction - Name of faction.\n * @returns Array containing the names of all Augmentations.\n */\n getAugmentationsFromFaction(faction: string): string[];\n\n /**\n * Get the pre-requisite of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n * If there are no prerequisites, a blank array is returned.\n *\n * @param augName - Name of Augmentation.\n * @returns Array with the names of the prerequisite Augmentation(s) for the specified Augmentation.\n */\n getAugmentationPrereq(augName: string): string[];\n\n /**\n * Get the price and reputation of an augmentation.\n * @deprecated use getAugmentationPrice getAugmentationRepCost\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns an array with two elements that gives the cost for\n * the specified Augmentation. The first element in the returned array is the\n * reputation requirement of the Augmentation, and the second element is the\n * money cost.\n *\n * If an invalid Augmentation name is passed in for the augName argument, this\n * function will return the array [-1, -1].\n *\n * @param augName - Name of Augmentation.\n * @returns Array with first element as a reputation requirement and second element as the money cost.\n */\n getAugmentationCost(augName: string): [number, number];\n\n /**\n * Get price of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Price of the augmentation.\n */\n getAugmentationPrice(augName: string): number;\n\n /**\n * Get reputation requirement of an augmentation.\n * @remarks\n * RAM cost: 2.5 GB * 16/4/1\n *\n *\n * @param augName - Name of Augmentation.\n * @returns Reputation requirement of the augmentation.\n */\n getAugmentationRepReq(augName: string): number;\n\n /**\n * Purchase an augmentation\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will try to purchase the specified Augmentation through the given Faction.\n *\n * This function will return true if the Augmentation is successfully purchased, and false otherwise.\n *\n * @param faction - Name of faction to purchase Augmentation from.\n * @param augmentation - Name of Augmentation to purchase.\n * @returns True if the Augmentation is successfully purchased, and false otherwise.\n */\n purchaseAugmentation(faction: string, augmentation: string): boolean;\n\n /**\n * Get the stats of an augmentation.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function returns augmentation stats.\n *\n * @param name - Name of Augmentation. CASE-SENSITIVE.\n * @returns Augmentation stats.\n */\n getAugmentationStats(name: string): AugmentationStats;\n\n /**\n * Install your purchased augmentations.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will automatically install your Augmentations, resetting the game as usual.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n installAugmentations(cbScript?: string): void;\n\n /**\n * Returns an object with the Player’s stats.\n * @deprecated use getPlayer\n *\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * @example\n * ```ts\n * res = getStats();\n * print(\'My charisma level is: \' + res.charisma);\n * ```\n * @returns Object with the Player’s stats.\n */\n getStats(): PlayerSkills;\n\n /**\n * Returns an object with various information about your character.\n * @deprecated use getPlayer\n *\n * @remarks\n * RAM cost: 0.5 GB * 16/4/1\n *\n *\n * @returns Object with various information about your character.\n */\n getCharacterInformation(): CharacterInfo;\n\n /**\n * Hospitalize the player.\n * @remarks\n * RAM cost: 0.25 GB * 16/4/1\n *\n *\n * @returns The cost of the hospitalization.\n */\n hospitalize(): number;\n\n /**\n * Soft reset the game.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * This function will perform a reset even if you don’t have any augmentation installed.\n *\n * @param cbScript - This is a script that will automatically be run after Augmentations are installed (after the reset). This script will be run with no arguments and 1 thread. It must be located on your home computer.\n */\n softReset(cbScript: string): void;\n\n /**\n * Go to a location.\n * @remarks\n * RAM cost: 5 GB * 16/4/1\n *\n *\n * Move the player to a specific location.\n *\n * @param locationName - Name of the location.\n * @returns True if the player was moved there, false otherwise.\n */\n goToLocation(locationName: string): boolean;\n\n /**\n * Get the current server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Name of the current server.\n */\n getCurrentServer(): string;\n\n /**\n * Connect to a server.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * Run the connect HOSTNAME command in the terminal. Can only connect to neighbors.\n *\n * @returns True if the connect command was successful, false otherwise.\n */\n connect(hostname: string): boolean;\n\n /**\n * Run the hack command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Amount of money stolen by manual hacking.\n */\n manualHack(): Promise<number>;\n\n /**\n * Run the backdoor command in the terminal.\n * @remarks\n * RAM cost: 2 GB * 16/4/1\n *\n *\n * @returns Promise waiting for the installation to finish.\n */\n installBackdoor(): Promise<void>;\n\n /**\n * Check if the player is focused.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n *\n * @returns True if the player is focused.\n */\n isFocused(): boolean;\n\n /**\n * Set the players focus.\n * @remarks\n * RAM cost: 0.1 GB * 16/4/1\n *\n * @returns True if the focus was changed.\n */\n setFocus(focus: boolean): boolean;\n}\n\n/**\n * Hacknet API\n * @remarks\n * Not all these functions are immediately available.\n * @public\n */\nexport interface Hacknet {\n /**\n * Get the number of hacknet nodes you own.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the number of Hacknet Nodes you own.\n *\n * @returns number of hacknet nodes.\n */\n numNodes(): number;\n\n /**\n * Get the maximum number of hacknet nodes.\n * @remarks\n * RAM cost: 0 GB\n *\n * @returns maximum number of hacknet nodes.\n */\n maxNumNodes(): number;\n\n /**\n * Purchase a new hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Purchases a new Hacknet Node. Returns a number with the index of the\n * Hacknet Node. This index is equivalent to the number at the end of\n * the Hacknet Node’s name (e.g The Hacknet Node named `hacknet-node-4`\n * will have an index of 4).\n *\n * If the player cannot afford to purchase a new Hacknet Node then the function will return -1.\n *\n * @returns The index of the Hacknet Node or if the player cannot afford to purchase a new Hacknet Node the function will return -1.\n */\n purchaseNode(): number;\n\n /**\n * Get the price of the next hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of purchasing a new Hacknet Node.\n *\n * @returns Cost of purchasing a new Hacknet Node.\n */\n getPurchaseNodeCost(): number;\n\n /**\n * Get the stats of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns an object containing a variety of stats about the specified Hacknet Node.\n *\n * Note that for Hacknet Nodes, production refers to the amount of money the node generates.\n * For Hacknet Servers (the upgraded version of Hacknet Nodes), production refers to the\n * amount of hashes the node generates.\n *\n * @param index - Index/Identifier of Hacknet Node\n * @returns Object containing a variety of stats about the specified Hacknet Node.\n */\n getNodeStats(index: number): NodeStats;\n\n /**\n * Upgrade the level of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the level of the specified Hacknet Node by n.\n *\n * Returns true if the Hacknet Node’s level is successfully upgraded by n\n * or if it is upgraded by some positive amount and the Node reaches its max level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to purchase. Must be positive. Rounded to nearest integer.\n * @returns True if the Hacknet Node’s level is successfully upgraded, false otherwise.\n */\n upgradeLevel(index: number, n: number): boolean;\n\n /**\n * Upgrade the RAM of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to upgrade the specified Hacknet Node’s RAM n times.\n * Note that each upgrade doubles the Node’s RAM.\n * So this is equivalent to multiplying the Node’s RAM by 2 n.\n *\n * Returns true if the Hacknet Node’s RAM is successfully upgraded n times\n * or if it is upgraded some positive number of times and the Node reaches it max RAM.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer.\n * @returns True if the Hacknet Node’s ram is successfully upgraded, false otherwise.\n */\n upgradeRam(index: number, n: number): boolean;\n\n /**\n * Upgrade the core of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * Tries to purchase n cores for the specified Hacknet Node.\n *\n * Returns true if it successfully purchases n cores for the Hacknet Node\n * or if it purchases some positive amount and the Node reaches its max number of cores.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cores to purchase. Must be positive. Rounded to nearest integer.\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\n */\n upgradeCore(index: number, n: number): boolean;\n\n /**\n * Upgrade the cache of a hacknet node.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Tries to upgrade the specified Hacknet Server’s cache n times.\n *\n * Returns true if it successfully upgrades the Server’s cache n times,\n * or if it purchases some positive amount and the Server reaches its max cache level.\n *\n * Returns false otherwise.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of cache levels to purchase. Must be positive. Rounded to nearest integer.\n * @returns True if the Hacknet Node’s cores are successfully purchased, false otherwise.\n */\n upgradeCache(index: number, n: number): boolean;\n\n /**\n * Calculate the cost of upgrading hacknet node levels.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the specified Hacknet Node by n levels.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of levels to upgrade. Must be positive. Rounded to nearest integer.\n * @returns Cost of upgrading the specified Hacknet Node.\n */\n getLevelUpgradeCost(index: number, n: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node RAM.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the RAM of the specified Hacknet Node n times.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade RAM. Must be positive. Rounded to nearest integer.\n * @returns Cost of upgrading the specified Hacknet Node\'s ram.\n */\n getRamUpgradeCost(index: number, n: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cores.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the cost of upgrading the number of cores of the specified Hacknet Node by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cores. Must be positive. Rounded to nearest integer.\n * @returns Cost of upgrading the specified Hacknet Node\'s number of cores.\n */\n getCoreUpgradeCost(index: number, n: number): number;\n\n /**\n * Calculate the cost of upgrading hacknet node cache.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the cost of upgrading the cache level of the specified Hacknet Server by n.\n *\n * If an invalid value for n is provided, then this function returns 0.\n * If the specified Hacknet Node is already at max level, then Infinity is returned.\n *\n * @param index - Index/Identifier of Hacknet Node.\n * @param n - Number of times to upgrade cache. Must be positive. Rounded to nearest integer.\n * @returns Cost of upgrading the specified Hacknet Node\'s cache.\n */\n getCacheUpgradeCost(index: number, n: number): number;\n\n /**\n * Get the total number of hashes stored.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you have.\n *\n * @returns Number of hashes you have.\n */\n numHashes(): number;\n\n /**\n * Get the maximum number of hashes you can store.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes you can store.\n *\n * @returns Number of hashes you can store.\n */\n hashCapacity(): number;\n\n /**\n * Get the cost of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the number of hashes required for the specified upgrade. The name of the upgrade must be an exact match.\n *\n * @example\n * ```ts\n * // NS1:\n * var upgradeName = "Sell for Corporation Funds";\n * if (hacknet.numHashes() > hacknet.hashCost(upgradeName)) {\n * hacknet.spendHashes(upgName);\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * const upgradeName = "Sell for Corporation Funds";\n * if (ns.hacknet.numHashes() > ns.hacknet.hashCost(upgradeName)) {\n * ns.hacknet.spendHashes(upgName);\n * }\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @returns Number of hashes required for the specified upgrade.\n */\n hashCost(upgName: string): number;\n\n /**\n * Purchase a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Spend the hashes generated by your Hacknet Servers on an upgrade.\n * Returns a boolean value - true if the upgrade is successfully purchased, and false otherwise.\n *\n * The name of the upgrade must be an exact match.\n * The `upgTarget` argument is used for upgrades such as `Reduce Minimum Security`, which applies to a specific server.\n * In this case, the `upgTarget` argument must be the hostname of the server.\n *\n * @example\n * ```ts\n * // NS1:\n * hacknet.spendHashes("Sell for Corporation Funds");\n * hacknet.spendHashes("Increase Maximum Money", "foodnstuff");\n * ```\n * @example\n * ```ts\n * NS2:\n * ns.hacknet.spendHashes("Sell for Corporation Funds");\n * ns.hacknet.spendHashes("Increase Maximum Money", "foodnstuff");\n * ```\n * @param upgName - Name of the upgrade of Hacknet Node.\n * @param upgTarget - Object to which upgrade applies. Required for certain upgrades.\n * @returns True if the upgrade is successfully purchased, and false otherwise..\n */\n spendHashes(upgName: string, upgTarget?: string): boolean;\n\n /**\n * Get the list of hash upgrades\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * Returns the list of all available hash upgrades that can be used in the spendHashes function.\n * @example\n * ```ts\n * // NS1:\n * var upgrades = hacknet.getHashUpgrades(); // ["Sell for Money","Sell for Corporation Funds",...]\n * ```\n * @example\n * ```ts\n * // NS2:\n * const upgrades = ns.hacknet.getHashUpgrades(); // ["Sell for Money","Sell for Corporation Funds",...]\n * ```\n * @returns An array containing the available upgrades\n */\n getHashUpgrades(): string[];\n\n /**\n * Get the level of a hash upgrade.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Level of the upgrade.\n */\n getHashUpgradeLevel(upgName: string): number;\n\n /**\n * Get the multipler to study.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getStudyMult(): number;\n\n /**\n * Get the multipler to training.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is only applicable for Hacknet Servers (the upgraded version of a Hacknet Node).\n *\n * @returns Multiplier.\n */\n getTrainingMult(): number;\n}\n\n/**\n * Bladeburner API\n * @remarks\n * You have to be employed in the Bladeburner division and be in BitNode-7\n * or have Source-File 7 in order to use this API.\n * @public\n */\nexport interface Bladeburner {\n /**\n * List all contracts.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner contracts.\n *\n * @returns Array of strings containing the names of all Bladeburner contracts.\n */\n getContractNames(): string[];\n\n /**\n * List all operations.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner operations.\n *\n * @returns Array of strings containing the names of all Bladeburner operations.\n */\n getOperationNames(): string[];\n\n /**\n * List all black ops.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all Bladeburner Black Ops.\n *\n * @returns Array of strings containing the names of all Bladeburner Black Ops.\n */\n getBlackOpNames(): string[];\n\n /**\n * List all general actions.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner actions.\n *\n * @returns Array of strings containing the names of all general Bladeburner actions.\n */\n getGeneralActionNames(): string[];\n\n /**\n * List all skills.\n * @remarks\n * RAM cost: 0.4 GB\n *\n * Returns an array of strings containing the names of all general Bladeburner skills.\n *\n * @returns Array of strings containing the names of all general Bladeburner skills.\n */\n getSkillNames(): string[];\n\n /**\n * Start an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to start the specified Bladeburner action.\n * Returns true if the action was started successfully, and false otherwise.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match\n * @returns True if the action was started successfully, and false otherwise.\n */\n startAction(type: string, name: string): boolean;\n\n /**\n * Stop current action.\n * @remarks\n * RAM cost: 2 GB\n *\n * Stops the current Bladeburner action.\n *\n */\n stopBladeburnerAction(): void;\n\n /**\n * Get current action.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns an object that represents the player’s current Bladeburner action.\n * If the player is not performing an action, the function will return an object with the ‘type’ property set to “Idle”.\n *\n * @returns Object that represents the player’s current Bladeburner action.\n */\n getCurrentAction(): BladeburnerCurAction;\n\n /**\n * Get the time to complete an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of seconds it takes to complete the specified action\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of milliseconds it takes to complete the specified action.\n */\n getActionTime(type: string, name: string): number;\n\n /**\n * Get estimate success chance of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated success chance for the specified action.\n * This chance is returned as a decimal value, NOT a percentage\n * (e.g. if you have an estimated success chance of 80%, then this function will return 0.80, NOT 80).\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Estimated success chance for the specified action.\n */\n getActionEstimatedSuccessChance(type: string, name: string): [number, number];\n\n /**\n * Get the reputation gain of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the average Bladeburner reputation gain for successfully\n * completing the specified action.\n * Note that this value is an ‘average’ and the real reputation gain may vary slightly from this value.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Optional action level at which to calculate the gain\n * @returns Average Bladeburner reputation gain for successfully completing the specified action.\n */\n getActionRepGain(type: string, name: string, level: number): number;\n\n /**\n * Get action count remaining.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the remaining count of the specified action.\n *\n * Note that this is meant to be used for Contracts and Operations.\n * This function will return ‘Infinity’ for actions such as Training and Field Analysis.\n * This function will return 1 for BlackOps not yet completed regardless of wether\n * the player has the required rank to attempt the mission or not.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Remaining count of the specified action.\n */\n getActionCountRemaining(type: string, name: string): number;\n\n /**\n * Get the maximum level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the maximum level for this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Maximum level of the specified action.\n */\n getActionMaxLevel(type: string, name: string): number;\n\n /**\n * Get the current level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the current level of this action.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Current level of the specified action.\n */\n getActionCurrentLevel(type: string, name: string): number;\n\n /**\n * Get wether an action is set to autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action is currently set to autolevel.\n *\n * Returns false if an invalid action is specified.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns True if the action is set to autolevel, and false otherwise.\n */\n getActionAutolevel(type: string, name: string): boolean;\n\n /**\n * Set an action autolevel.\n * @remarks\n * RAM cost: 4 GB\n *\n * Enable/disable autoleveling for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param autoLevel - Whether or not to autolevel this action\n */\n setActionAutolevel(type: string, name: string, autoLevel: boolean): void;\n\n /**\n * Set the level of an action.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the level for the specified action.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param level - Level to set this action to.\n */\n setActionLevel(type: string, name: string, level: number): void;\n\n /**\n * Get player bladeburner rank.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the player’s Bladeburner Rank.\n *\n * @returns Player’s Bladeburner Rank.\n */\n getRank(): number;\n\n /**\n * Get black op required rank.\n * @remarks\n * RAM cost: 2 GB\n *\n * Returns the rank required to complete this BlackOp.\n *\n * Returns -1 if an invalid action is specified.\n *\n * @param name - Name of BlackOp. Must be an exact match.\n * @returns Rank required to complete this BlackOp.\n */\n getBlackOpRank(name: string): number;\n\n /**\n * Get bladeburner skill points.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner skill points you have.\n *\n * @returns Number of Bladeburner skill points you have.\n */\n getSkillPoints(): number;\n\n /**\n * Get skill level.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns your level in the specified skill.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @returns Level in the specified skill.\n */\n getSkillLevel(name: string): number;\n\n /**\n * Get cost to upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * This function returns the number of skill points needed to upgrade the specified skill.\n *\n * The function returns -1 if an invalid skill name is passed in.\n *\n * @param skillName - Name of skill. Case-sensitive and must be an exact match\n * @returns Number of skill points needed to upgrade the specified skill.\n */\n getSkillUpgradeCost(name: string): number;\n\n /**\n * Upgrade skill.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to upgrade the specified Bladeburner skill.\n *\n * Returns true if the skill is successfully upgraded, and false otherwise.\n *\n * @param skillName - Name of skill to be upgraded. Case-sensitive and must be an exact match\n * @returns true if the skill is successfully upgraded, and false otherwise.\n */\n upgradeSkill(name: string): boolean;\n\n /**\n * Get team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the number of Bladeburner team members you have assigned to the specified action.\n *\n * Setting a team is only applicable for Operations and BlackOps. This function will return 0 for other action types.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @returns Number of Bladeburner team members that were assigned to the specified action.\n */\n getTeamSize(type: string, name: string): number;\n\n /**\n * Set team size.\n * @remarks\n * RAM cost: 4 GB\n *\n * Set the team size for the specified Bladeburner action.\n *\n * Returns the team size that was set, or -1 if the function failed.\n *\n * @param type - Type of action.\n * @param name - Name of action. Must be an exact match.\n * @param size - Number of team members to set. Will be converted using Math.round().\n * @returns Number of Bladeburner team members you assigned to the specified action.\n */\n setTeamSize(type: string, name: string, size: number): number;\n\n /**\n * Get estimated population in city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoids in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param cityName - Name of city. Case-sensitive\n * @returns Estimated number of Synthoids in the specified city.\n */\n getCityEstimatedPopulation(name: string): number;\n\n /**\n * Get number of communities in a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the estimated number of Synthoid communities in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param cityName - Name of city. Case-sensitive\n * @returns Number of Synthoids communities in the specified city.\n */\n getCityCommunities(name: string): number;\n\n /**\n * Get chaos of a city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chaos in the specified city,\n * or -1 if an invalid city was specified.\n *\n * @param cityName - Name of city. Case-sensitive\n * @returns Chaos in the specified city.\n */\n getCityChaos(name: string): number;\n\n /**\n * Get current city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the city that the player is currently in (for Bladeburner).\n *\n * @returns City that the player is currently in (for Bladeburner).\n */\n getCity(): string;\n\n /**\n * Travel to another city in bladeburner.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to switch to the specified city (for Bladeburner only).\n *\n * Returns true if successful, and false otherwise\n *\n * @param cityName - Name of city. Case-sensitive\n * @returns true if successful, and false otherwise\n */\n switchCity(name: string): boolean;\n\n /**\n * Get bladeburner stamina.\n * @remarks\n * RAM cost: 4 GB\n * Returns an array with two elements:\n * * [Current stamina, Max stamina]\n * @example\n * ```ts\n * // NS1:\n * function getStaminaPercentage() {\n * var res = bladeburner.getStamina();\n * return res[0] / res[1];\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * function getStaminaPercentage() {\n * const [current, max] = ns.bladeburner.getStamina();\n * return current / max;\n * }\n * ```\n * @returns Array containing current stamina and max stamina.\n */\n getStamina(): [number, number];\n\n /**\n * Join the bladeburner faction.\n * @remarks\n * RAM cost: 4 GB\n * Attempts to join the Bladeburner faction.\n *\n * Returns true if you successfully join the Bladeburner faction, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner faction, or if you are already a member, false otherwise.\n */\n joinBladeburnerFaction(): boolean;\n\n /**\n * Join the bladeburner division.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempts to join the Bladeburner division.\n *\n * Returns true if you successfully join the Bladeburner division, or if you are already a member.\n *\n * Returns false otherwise.\n *\n * @returns True if you successfully join the Bladeburner division, or if you are already a member, false otherwise.\n */\n joinBladeburnerDivision(): boolean;\n\n /**\n * Get bladeburner bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (seconds) for the Bladeburner mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 5x the normal speed.\n * For example, if an action takes 30 seconds to complete but you’ve accumulated over\n * 30 seconds in bonus time, then the action will only take 6 seconds in real life to complete.\n *\n * @returns Amount of accumulated “bonus time” (milliseconds) for the Bladeburner mechanic.\n */\n getBonusTime(): number;\n}\n\n/**\n * Coding Contract API\n * @public\n */\nexport interface CodingContract {\n /**\n * Attemps a coding contract.\n * @remarks\n * RAM cost: 10 GB\n *\n * Attempts to solve the Coding Contract with the provided solution.\n *\n * @param answer - Solution for the contract.\n * @param fn - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns True if the solution was correct, false otherwise. If the returnReward option is configured, then the function will instead return a string. If the contract is successfully solved, the string will contain a description of the contract’s reward. Otherwise, it will be an empty string.\n */\n attempt(answer: string[] | number, filename: string, host?: string, opts?: CodingAttemptOptions): boolean | string;\n\n /**\n * Get the type of a coding contract.\n * @remarks\n * RAM cost: 5 GB\n *\n * Returns a name describing the type of problem posed by the Coding Contract.\n * (e.g. Find Largest Prime Factor, Total Ways to Sum, etc.)\n *\n * @param fn - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Name describing the type of problem posed by the Coding Contract.\n */\n getContractType(filename: string, host?: string): string;\n\n /**\n * Get the description.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the full text description for the problem posed by the Coding Contract.\n *\n * @param fn - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns Contract’s text description.\n */\n getDescription(filename: string, host?: string): string;\n\n /**\n * Get the input data.\n * @remarks\n * RAM cost: 5 GB\n *\n * Get the data associated with the specific Coding Contract.\n * Note that this is not the same as the contract’s description.\n * This is just the data that the contract wants you to act on in order to solve\n *\n * @param filename - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns The specified contract’s data, data type depends on contract type.;\n */\n getData(filename: string, host?: string): any;\n\n /**\n * Get the number of attempt remaining.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the number of tries remaining on the contract before it self-destructs.\n *\n * @param fn - Filename of the contract.\n * @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.\n * @returns How many attempts are remaining for the contract;\n */\n getNumTriesRemaining(filename: string, host?: string): number;\n}\n\n/**\n * Gang API\n * @remarks\n * If you are not in BitNode-2, then you must have Source-File 2 in order to use this API.\n * @public\n */\nexport interface Gang {\n /**\n * Create a gang.\n * @remarks\n * RAM cost: 1GB\n *\n * Create a gang with the specified faction.\n * @returns True if the gang was created, false otherwise.\n */\n createGang(faction: string): boolean;\n\n /**\n * Check if you\'re in a gang.\n * @remarks\n * RAM cost: 1GB\n * @returns True if you\'re in a gang, false otherwise.\n */\n inGang(): boolean;\n\n /**\n * List all gang members.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the names of all Gang members\n *\n * @returns Names of all Gang members.\n */\n getMemberNames(): string[];\n\n /**\n * Get information about your gang.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get general information about the gang.\n *\n * @returns Object containing general information about the gang.\n */\n getGangInformation(): GangGenInfo;\n\n /**\n * Get information about the other gangs.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get territory and power information about all gangs.\n *\n * @returns Object containing territory and power information about all gangs.\n */\n getOtherGangInformation(): GangOtherInfo;\n\n /**\n * Get information about a specific gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get stat and equipment-related information about a Gang Member\n *\n * @param name - Name of member.\n * @returns Object containing stat and equipment-related information about a Gang Member.\n */\n getMemberInformation(name: string): GangMemberInfo;\n\n /**\n * Check if you can recruit a new gang member.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns boolean indicating whether a member can currently be recruited\n *\n * @returns True if a member can currently be recruited, false otherwise.\n */\n canRecruitMember(): boolean;\n\n /**\n * Recruit a new gang member.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempt to recruit a new gang member.\n *\n * Possible reasons for failure:\n * * Cannot currently recruit a new member\n * * There already exists a member with the specified name\n *\n * @param name - Name of member to recruit.\n * @returns True if the member was successfully recruited, false otherwise.\n */\n recruitMember(name: string): boolean;\n\n /**\n * List member task names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all valid tasks that Gang members can be assigned to.\n *\n * @returns All valid tasks that Gang members can be assigned to.\n */\n getTaskNames(): string[];\n\n /**\n * Set gang member to task.\n * @remarks\n * RAM cost: 2 GB\n *\n * Attempts to assign the specified Gang Member to the specified task.\n * If an invalid task is specified, the Gang member will be set to idle (“Unassigned”).\n *\n * @param memberName - Name of Gang member to assign.\n * @param taskName - Task to assign.\n * @returns True if the Gang Member was successfully assigned to the task, false otherwise.\n */\n setMemberTask(memberName: string, taskName: string): boolean;\n\n /**\n * Get stats of a task.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the stats of a gang task stats. This is typically used to evaluate which action should be executed next.\n *\n * @param name - Name of the task.\n * @returns Detailed stats of a task.\n */\n getTaskStats(name: string): GangTaskStats;\n\n /**\n * List equipment names.\n * @remarks\n * RAM cost: 1 GB\n *\n * Get the name of all possible equipment/upgrades you can purchase for your Gang Members.\n * This includes Augmentations.\n *\n * @returns Names of all Equipments/Augmentations.\n */\n getEquipmentNames(): string[];\n\n /**\n * Get cost of equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the amount of money it takes to purchase a piece of Equipment or an Augmentation.\n * If an invalid Equipment/Augmentation is specified, this function will return Infinity.\n *\n * @param equipName - Name of equipment.\n * @returns Cost to purchase the specified Equipment/Augmentation (number). Infinity for invalid arguments\n */\n getEquipmentCost(equipName: string): number;\n\n /**\n * Get type of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment type.\n *\n * @param equipName - Name of equipment.\n * @returns Type of the equipment.\n */\n getEquipmentType(equipName: string): string;\n\n /**\n * Get stats of an equipment.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the specified equipment stats.\n *\n * @param equipName - Name of equipment.\n * @returns A dictionary containing the stats of the equipment.\n */\n getEquipmentStats(equipName: string): EquipmentStats;\n\n /**\n * Purchase an equipment for a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Attempt to purchase the specified Equipment/Augmentation for the specified Gang member.\n *\n * @param memberName - Name of Gang member to purchase the equipment for.\n * @param equipName - Name of Equipment/Augmentation to purchase.\n * @returns True if the equipment was successfully purchased. False otherwise\n */\n purchaseEquipment(memberName: string, equipName: string): boolean;\n\n /**\n * Ascend a gang member.\n * @remarks\n * RAM cost: 4 GB\n *\n * Ascend the specified Gang Member.\n *\n * @param memberName - Name of member to ascend.\n * @returns Object with info about the ascension results. undefined if ascension did not occur.\n */\n ascendMember(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Get the result of an ascension without ascending.\n * @remarks\n * RAM cost: 2 GB\n *\n * Get the result of an ascension without ascending.\n *\n * @param memberName - Name of member.\n * @returns Object with info about the ascension results. undefined if ascension is impossible.\n */\n getAscensionResult(memberName: string): GangMemberAscension | undefined;\n\n /**\n * Enable/Disable territory warfare.\n * @remarks\n * RAM cost: 2 GB\n *\n * Set whether or not the gang should engage in territory warfare\n *\n * @param engage - Whether or not to engage in territory warfare.\n */\n setTerritoryWarfare(engage: boolean): void;\n\n /**\n * Get chance to win clash with other gang.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns the chance you have to win a clash with the specified gang. The chance is returned in decimal form, not percentage\n *\n * @param gangName - Target gang\n * @returns Chance you have to win a clash with the specified gang.\n */\n getChanceToWinClash(gangName: string): number;\n\n /**\n * Get bonus time.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns the amount of accumulated “bonus time” (seconds) for the Gang mechanic.\n *\n * “Bonus time” is accumulated when the game is offline or if the game is inactive in the browser.\n *\n * “Bonus time” makes the game progress faster, up to 10x the normal speed.\n *\n * @returns Bonus time for the Gang mechanic in milliseconds.\n */\n getBonusTime(): number;\n}\n\n/**\n * Sleeve API\n * @remarks\n * If you are not in BitNode-10, then you must have Source-File 10 in order to use this API.\n * @public\n */\nexport interface Sleeve {\n /**\n * Get the number of sleeves you own.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the number of duplicate sleeves the player has.\n *\n * @returns number of duplicate sleeves the player has.\n */\n getNumSleeves(): number;\n\n /**\n * Get the stats of a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a structure containing the stats of the sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to get stats of.\n * @returns Object containing the stats of the sleeve.\n */\n getSleeveStats(sleeveNumber: number): SleeveSkills;\n\n /**\n * Get information about a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a struct containing tons of information about this sleeve\n *\n * @param sleeveNumber - Index of the sleeve to retrieve information.\n * @returns Object containing tons of information about this sleeve.\n */\n getInformation(sleeveNumber: number): SleeveInformation;\n\n /**\n * Get task of a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return the current task that the sleeve is performing. type is set to “Idle” if the sleeve isn’t doing anything.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve task from.\n * @returns Object containing information the current task that the sleeve is performing.\n */\n getTask(sleeveNumber: number): SleeveTask;\n\n /**\n * Set a sleeve to shock recovery.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start recovery.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToShockRecovery(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to synchronize.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start synchronizing.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToSynchronize(sleeveNumber: number): boolean;\n\n /**\n * Set a sleeve to commit crime.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * Returns false if an invalid action is specified.\n *\n * @param sleeveNumber - Index of the sleeve to start commiting crime.\n * @param name - Name of the crime. Must be an exact match.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToCommitCrime(sleeveNumber: number, name: string): boolean;\n\n /**\n * Set a sleeve to work for a faction.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working or this faction.\n *\n * @param sleeveNumber - Index of the sleeve to work for the faction.\n * @param factionName - Name of the faction to work for.\n * @param factionWorkType - Name of the action to perform for this faction.\n * @returns True if the sleeve started working on this faction, false otherwise.\n */\n setToFactionWork(sleeveNumber: number, factionName: string, factionWorkType: string): boolean;\n\n /**\n * Set a sleeve to work for a company.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working or this company.\n *\n * @param sleeveNumber - Index of the sleeve to work for the company.\n * @param companyName - Name of the company to work for.\n * @returns True if the sleeve started working on this company, false otherwise.\n */\n setToCompanyWork(sleeveNumber: number, companyName: string): boolean;\n\n /**\n * Set a sleeve to take a class at a university.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not this action was set successfully.\n *\n * @param sleeveNumber - Index of the sleeve to start taking class.\n * @param university - Name of the university to attend.\n * @param className - Name of the class to follow.\n * @returns True if this action was set successfully, false otherwise.\n */\n setToUniversityCourse(sleeveNumber: number, university: string, className: string): boolean;\n\n /**\n * Set a sleeve to workout at the gym.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve started working out.\n *\n * @param sleeveNumber - Index of the sleeve to workout at the gym.\n * @param gymName - Name of the gym.\n * @param stat - Name of the stat to train.\n * @returns True if the sleeve started working out, false otherwise.\n */\n setToGymWorkout(sleeveNumber: number, gymName: string, stat: string): boolean;\n\n /**\n * Make a sleeve travel to another city.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a boolean indicating whether or not the sleeve reached destination.\n *\n * @param sleeveNumber - Index of the sleeve to travel.\n * @param cityName - Name of the destination city.\n * @returns True if the sleeve reached destination, false otherwise.\n */\n travel(sleeveNumber: number, cityName: string): boolean;\n\n /**\n * Get augmentations installed on a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentation names that this sleeve has installed.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve augmentations from.\n * @returns List of augmentation names that this sleeve has installed.\n */\n getSleeveAugmentations(sleeveNumber: number): string[];\n\n /**\n * List purchasable augs for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return a list of augmentations that the player can buy for this sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to retrieve purchasable augmentations from.\n * @returns List of augmentations that the player can buy for this sleeve.\n */\n getSleevePurchasableAugs(sleeveNumber: number): AugmentPair[];\n\n /**\n * Purchase an aug for a sleeve.\n * @remarks\n * RAM cost: 4 GB\n *\n * Return true if the aug was purchased and installed on the sleeve.\n *\n * @param sleeveNumber - Index of the sleeve to buy an aug for.\n * @param augName - Name of the aug to buy. Must be an exact match.\n * @returns True if the aug was purchased and installed on the sleeve, false otherwise.\n */\n purchaseSleeveAug(sleeveNumber: number, augName: string): boolean;\n}\n\n/**\n * Skills formulas\n * @public\n */\ninterface SkillsFormulas {\n /**\n * Calculate skill level.\n * @param exp - experience for that skill\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated skill level.\n */\n calculateSkill(exp: number, skillMult?: number): number;\n /**\n * Calculate exp for skill level.\n * @param skill - target skill level\n * @param skillMult - Multiplier for that skill, defaults to 1.\n * @returns The calculated exp required.\n */\n calculateExp(skill: number, skillMult?: number): number;\n}\n\n/**\n * Hacking formulas\n * @public\n */\ninterface HackingFormulas {\n /**\n * Calculate hack chance.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack chance.\n */\n hackChance(server: Server, player: Player): number;\n /**\n * Calculate hack exp for one thread.\n * @remarks\n * Multiply by thread to get total exp\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack exp.\n */\n hackExp(server: Server, player: Player): number;\n /**\n * Calculate hack percent for one thread.\n * @remarks\n * Multiply by thread to get total percent hacked.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack percent.\n */\n hackPercent(server: Server, player: Player): number;\n /**\n * Calculate the percent a server would grow.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param threads - Amount of thread.\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @param cores - Number of cores on the computer that will execute grow.\n * @returns The calculated grow percent.\n */\n growPercent(server: Server, threads: number, player: Player, cores?: number): number;\n /**\n * Calculate hack time.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated hack time.\n */\n hackTime(server: Server, player: Player): number;\n /**\n * Calculate grow time.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated grow time.\n */\n growTime(server: Server, player: Player): number;\n /**\n * Calculate weaken time.\n * @param server - Server info from {@link NS.getServer | getServer}\n * @param player - Player info from {@link NS.getPlayer | getPlayer}\n * @returns The calculated weaken time.\n */\n weakenTime(server: Server, player: Player): number;\n}\n\n/**\n * Hacknet Node formulas\n * @public\n */\ninterface HacknetNodesFormulas {\n /**\n * Calculate money gain rate.\n * @param level - level of the node.\n * @param ram - ram of the node.\n * @param cores - cores of the node.\n * @param mult - player production mult (default to 1)\n * @returns The calculated money gain rate.\n */\n moneyGainRate(level: number, ram: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet node cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate the cost of a hacknet node.\n * @param n - number of the hacknet node\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetNodeCost(n: number, mult: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet node constants used by the game.\n */\n constants(): HacknetNodeConstants;\n}\n\n/**\n * Hacknet Server formulas\n * @public\n */\ninterface HacknetServersFormulas {\n /**\n * Calculate hash gain rate.\n * @param level - level of the server.\n * @param ramUsed - ramUsed of the server.\n * @param maxRam - maxRam of the server.\n * @param cores - cores of the server.\n * @param mult - player production mult (default to 1)\n * @returns The calculated hash gain rate.\n */\n hashGainRate(level: number, ramUsed: number, maxRam: number, cores: number, mult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server level.\n * @param startingLevel - starting level\n * @param extraLevels - amount of level to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n levelUpgradeCost(startingLevel: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server ram.\n * @param startingRam - starting ram\n * @param extraLevels - amount of level of ram to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n ramUpgradeCost(startingRam: number, extraLevels?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cores.\n * @param startingCore - starting cores\n * @param extraCores - amount of cores to purchase (defaults to 1)\n * @param costMult - player cost reduction (default to 1)\n * @returns The calculated cost.\n */\n coreUpgradeCost(startingCore: number, extraCores?: number, costMult?: number): number;\n /**\n * Calculate cost of upgrading hacknet server cache.\n * @param startingCache - starting cache level\n * @param extraCache - amount of levels of cache to purchase (defaults to 1)\n * @returns The calculated cost.\n */\n cacheUpgradeCost(startingCache: number, extraCache?: number): number;\n /**\n * Calculate hash cost of an upgrade.\n * @param upgName - name of the upgrade\n * @param level - level of the upgrade\n * @returns The calculated hash cost.\n */\n hashUpgradeCost(upgName: number, level: number): number;\n /**\n * Calculate the cost of a hacknet server.\n * @param n - number of the hacknet server\n * @param mult - player cost reduction (defaults to 1)\n * @returns The calculated cost.\n */\n hacknetServerCost(n: number, mult?: number): number;\n /**\n * All constants used by the game.\n * @returns An object with all hacknet server constants used by the game.\n */\n constants(): HacknetServerConstants;\n}\n\n/**\n * Gang formulas\n * @public\n */\ninterface GangFormulas {\n /**\n * Calculate the wanted penalty.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @returns The calculated wanted penalty.\n */\n wantedPenalty(gang: GangGenInfo): number;\n /**\n * Calculate respect gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Gang info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Gang info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated respect gain.\n */\n respectGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate wanted gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated wanted gain.\n */\n wantedLevelGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n /**\n * Calculate money gain per tick.\n * @param gang - Gang info from {@link Gang.getGangInformation | getGangInformation}\n * @param member - Member info from {@link Gang.getMemberInformation | getMemberInformation}\n * @param task - Task info from {@link Gang.getTaskStats | getTaskStats}\n * @returns The calculated money gain.\n */\n moneyGain(gang: GangGenInfo, member: GangMemberInfo, task: GangTaskStats): number;\n\n /**\n * Calculate ascension point gain.\n * @param exp - Experience point before ascension.\n * @returns The calculated ascension point gain.\n */\n ascensionPointsGain(exp: number): number;\n\n /**\n * Calculate ascension mult.\n * @param points - Amount of ascension points.\n * @returns The calculated ascension mult.\n */\n ascensionMultiplier(points: number): number;\n}\n\n/**\n * Formulas API\n * @remarks\n * You need Formulas.exe on your home computer to use this API.\n * @public\n */\nexport interface Formulas {\n /** Skills formulas */\n skills: SkillsFormulas;\n /** Hacking formulas */\n hacking: HackingFormulas;\n /** Hacknet Nodes formulas */\n hacknetNodes: HacknetNodesFormulas;\n /** Hacknet Servers formulas */\n hacknetServers: HacknetServersFormulas;\n /** Gang formulas */\n gang: GangFormulas;\n}\n\n/**\n * @public\n */\nexport interface Fragment {\n id: number;\n shape: boolean[][];\n type: number;\n power: number;\n limit: number;\n}\n\n/**\n * @public\n */\nexport interface ActiveFragment {\n id: number;\n avgCharge: number;\n numCharge: number;\n rotation: number;\n x: number;\n y: number;\n}\n\n/**\n * Stanek\'s Gift API.\n * @public\n */\ninterface Stanek {\n /**\n * Stanek\'s Gift width.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The width of the gift.\n */\n width(): number;\n /**\n * Stanek\'s Gift height.\n * @remarks\n * RAM cost: 0.4 GB\n * @returns The height of the gift.\n */\n height(): number;\n\n /**\n * Charge a fragment, increasing its power.\n * @remarks\n * RAM cost: 0.4 GB\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @returns Promise that lasts until the charge action is over.\n */\n charge(rootX: number, rootY: number): Promise<void>;\n\n /**\n * List possible fragments.\n * @remarks\n * RAM cost: cost: 0 GB\n *\n * @returns List of possible fragments.\n */\n fragmentDefinitions(): Fragment[];\n\n /**\n * List of fragments in Stanek\'s Gift.\n * @remarks\n * RAM cost: cost: 5 GB\n *\n * @returns List of active fragments placed on Stanek\'s Gift.\n */\n activeFragments(): ActiveFragment[];\n\n /**\n * Clear the board of all fragments.\n * @remarks\n * RAM cost: cost: 0 GB\n */\n clear(): void;\n\n /**\n * Check if fragment can be placed at specified location.\n * @remarks\n * RAM cost: cost: 0.5 GB\n *\n * @param rootX - rootX Root X against which to align the top left of the fragment.\n * @param rootY - rootY Root Y against which to align the top left of the fragment.\n * @param rotation - rotation A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - fragmentId ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n canPlace(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Place fragment on Stanek\'s Gift.\n * @remarks\n * RAM cost: cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @param rotation - A number from 0 to 3, the mount of 90 degree turn to take.\n * @param fragmentId - ID of the fragment to place.\n * @returns true if the fragment can be placed at that position. false otherwise.\n */\n place(rootX: number, rootY: number, rotation: number, fragmentId: number): boolean;\n /**\n * Get placed fragment at location.\n * @remarks\n * RAM cost: cost: 5 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n get(rootX: number, rootY: number): ActiveFragment | undefined;\n\n /**\n * Remove fragment at location.\n * @remarks\n * RAM cost: cost: 0.15 GB\n *\n * @param rootX - X against which to align the top left of the fragment.\n * @param rootY - Y against which to align the top left of the fragment.\n * @returns The fragment at [rootX, rootY], if any.\n */\n remove(rootX: number, rootY: number): boolean;\n}\n\n/**\n * User Interface API.\n * @public\n */\ninterface UserInterface {\n /**\n * Get the current theme\n * @remarks\n * RAM cost: cost: 0 GB\n *\n * @returns An object containing the theme\'s colors\n */\n getTheme(): UserInterfaceTheme;\n\n /**\n * Sets the current theme\n * @remarks\n * RAM cost: cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const theme = ns.ui.getTheme();\n * theme.primary = \'#ff5500\';\n * ns.ui.setTheme(theme);\n * ```\n */\n setTheme(newTheme: UserInterfaceTheme): void;\n\n /**\n * Resets the player\'s theme to the default values\n * @remarks\n * RAM cost: cost: 0 GB\n */\n resetTheme(): void;\n\n /**\n * Get the current styles\n * @remarks\n * RAM cost: cost: 0 GB\n *\n * @returns An object containing the player\'s styles\n */\n getStyles(): IStyleSettings;\n\n /**\n * Sets the current styles\n * @remarks\n * RAM cost: cost: 0 GB\n * @example\n * Usage example (NS2)\n * ```ts\n * const styles = ns.ui.getStyles();\n * styles.fontFamily = \'Comic Sans Ms\';\n * ns.ui.setStyles(styles);\n * ```\n */\n setStyles(newStyles: IStyleSettings): void;\n\n /**\n * Resets the player\'s styles to the default values\n * @remarks\n * RAM cost: cost: 0 GB\n */\n resetStyles(): void;\n}\n\n/**\n * Collection of all functions passed to scripts\n * @public\n * @remarks\n * <b>Basic ns1 usage example:</b>\n * ```ts\n * // Basic ns functions can be used directly\n * getHostname();\n * // Some related functions are gathered within a common namespace\n * stock.getPrice();\n * ```\n * {@link https://bitburner.readthedocs.io/en/latest/netscript/netscript1.html| ns1 in-game docs}\n * <hr>\n * <b>Basic ns2 usage example:</b>\n * ```ts\n * export async function main(ns) {\n * // Basic ns functions can be accessed on the ns object\n * ns.getHostname();\n * // Some related functions are gathered under a sub-property of the ns object\n * ns.stock.getPrice();\n * // Some functions need to be await ed\n * await ns.hack(\'n00dles\');\n * }\n * ```\n * {@link https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html| ns2 in-game docs}\n * <hr>\n */\nexport interface NS extends Singularity {\n /**\n * Namespace for hacknet functions.\n * @remarks RAM cost: 4 GB\n */\n readonly hacknet: Hacknet;\n /**\n *\n * Namespace for bladeburner functions.\n * @remarks RAM cost: 0 GB\n */\n readonly bladeburner: Bladeburner;\n /**\n *\n * Namespace for codingcontract functions.\n * @remarks RAM cost: 0 GB\n */\n readonly codingcontract: CodingContract;\n /**\n *\n * Namespace for gang functions.\n * @remarks RAM cost: 0 GB\n */\n readonly gang: Gang;\n /**\n *\n * Namespace for sleeve functions.\n * @remarks RAM cost: 0 GB\n */\n readonly sleeve: Sleeve;\n /**\n *\n * Namespace for stock functions.\n * @remarks\n * RAM cost: 0 GB\n */\n readonly stock: TIX;\n /**\n *\n * Namespace for formulas functions.\n * @remarks\n * RAM cost: 0 GB\n */\n readonly formulas: Formulas;\n /**\n * Namespace for stanek functions.\n * RAM cost: 0 GB\n */\n readonly stanek: Stanek;\n /**\n * Namespace for corporation functions.\n * RAM cost: 0 GB\n */\n readonly corporation: Corporation;\n\n /**\n * Namespace for user interface functions.\n * RAM cost: 0 GB\n */\n readonly ui: UserInterface;\n\n /**\n * Arguments passed into the script.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * Arguments passed into a script can be accessed using a normal\n * array using the [] operator (args[0], args[1], etc…).\n *\n * It is also possible to get the number of arguments that was passed into a script using: \'args.length\'\n * WARNING: Do not try to modify the args array. This will break the game.\n */\n readonly args: (string | number | boolean)[];\n\n /**\n * Steal a servers money.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Function that is used to try and hack servers to steal money and gain hacking experience.\n * The runtime for this command depends on your hacking level and the target server’s\n * security level when this function is called. In order to hack a server you must first gain root access to that server\n * and also have the required hacking level.\n *\n * A script can hack a server from anywhere. It does not need to be running on the same\n * server to hack that server. For example, you can create a script that hacks the `foodnstuff`\n * server and run that script on any server in the game.\n *\n * A successful `hack()` on a server will raise that server’s security level by 0.002.\n *\n * @example\n * ```ts\n * // NS1:\n * var earnedMoney = hack("foodnstuff");\n * earnedMoney = earnedMoney + hack("foodnstuff", { threads: 5 }); // Only use 5 threads to hack\n * ```\n * @example\n * ```ts\n * // NS2:\n * let earnedMoney = await ns.hack("foodnstuff");\n * earnedMoney += await ns.hack("foodnstuff", { threads: 5 }); // Only use 5 threads to hack\n * ```\n * @param host - Hostname of the target server to hack.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns The amount of money stolen if the hack is successful, and zero otherwise.\n */\n hack(host: string, opts?: BasicHGWOptions): Promise<number>;\n\n /**\n * Spoof money in a servers bank account, increasing the amount available.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to increase the amount of money available on a server.\n * The runtime for this command depends on your hacking level and the target server’s\n * security level. When `grow` completes, the money available on a target server will\n * be increased by a certain, fixed percentage. This percentage is determined by the\n * target server’s growth rate (which varies between servers) and security level. Generally,\n * higher-level servers have higher growth rates. The getServerGrowth() function can be used\n * to obtain a server’s growth rate.\n *\n * Like hack, `grow` can be called on any server, regardless of where the script is running.\n * The grow() command requires root access to the target server, but there is no required hacking\n * level to run the command. It also raises the security level of the target server by 0.004.\n *\n * @example\n * ```ts\n * // NS1:\n * var availableMoney = getServerMoneyAvailable("foodnstuff");\n * currentMoney = currentMoney * (1 + grow("foodnstuff"));\n * currentMoney = currentMoney * (1 + grow("foodnstuff", { threads: 5 })); // Only use 5 threads to grow\n * ```\n * @example\n * ```ts\n * // NS2:\n * let availableMoney = ns.getServerMoneyAvailable("foodnstuff");\n * currentMoney *= (1 + await ns.grow("foodnstuff"));\n * currentMoney *= (1 + await ns.grow("foodnstuff", { threads: 5 })); // Only use 5 threads to grow\n * ```\n * @param host - Hostname of the target server to grow.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns The number by which the money on the server was multiplied for the growth.\n */\n grow(host: string, opts?: BasicHGWOptions): Promise<number>;\n\n /**\n * Reduce a server security level.\n * @remarks\n * RAM cost: 0.15 GB\n *\n * Use your hacking skills to attack a server’s security, lowering the server’s security level.\n * The runtime for this command depends on your hacking level and the target server’s security\n * level when this function is called. This function lowers the security level of the target server by 0.05.\n *\n * Like hack and grow, `weaken` can be called on any server, regardless of\n * where the script is running. This command requires root access to the target server, but\n * there is no required hacking level to run the command.\n *\n * @example\n * ```ts\n * // NS1:\n * var currentSecurity = getServerSecurityLevel("foodnstuff");\n * currentSecurity = currentSecurity - weaken("foodnstuff");\n * currentSecurity = currentSecurity - weaken("foodnstuff", { threads: 5 }); // Only use 5 threads to weaken\n * ```\n * @example\n * ```ts\n * // NS2:\n * let currentSecurity = ns.getServerSecurityLevel("foodnstuff");\n * currentSecurity -= await ns.weaken("foodnstuff");\n * currentSecurity -= await ns.weaken("foodnstuff", { threads: 5 }); // Only use 5 threads to weaken\n * ```\n * @param host - Hostname of the target server to weaken.\n * @param opts - Optional parameters for configuring function behavior.\n * @returns The amount by which the target server’s security level was decreased. This is equivalent to 0.05 multiplied by the number of script threads.\n */\n weaken(host: string, opts?: BasicHGWOptions): Promise<number>;\n\n /**\n * Predict the effect of weaken.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security decrease that would occur if a weaken with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @param cores - Optional. The number of cores of the server that would run weaken.\n * @returns The security decrease.\n */\n weakenAnalyze(threads: number, cores?: number): number;\n\n /**\n * Predict the effect of hack.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the number of script threads you need when running the hack command\n * to steal the specified amount of money from the target server.\n * If hackAmount is less than zero or greater than the amount of money available on the server,\n * then this function returns -1.\n *\n * Warning: The value returned by this function isn’t necessarily a whole number.\n *\n * @example\n * ```ts\n * //For example, let’s say the foodnstuff server has $10m and you run:\n * hackAnalyzeThreads("foodnstuff", 1e6);\n * //If this function returns 50, this means that if your next hack call is run on a script with 50 threads, it will steal $1m from the foodnstuff server.\n * ```\n * @param host - Hostname of the target server to analyze.\n * @param hackAmount - Amount of money you want to hack from the server.\n * @returns The number of threads needed to hack the server for hackAmount money.\n */\n hackAnalyzeThreads(host: string, hackAmount: number): number;\n\n /**\n * Get the part of money stolen with a single thread.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the part of the specified server’s money you will steal with a single thread hack.\n *\n * @example\n * ```ts\n * // NS1:\n * //For example, assume the following returns 0.01:\n * var hackAmount = hackAnalyze("foodnstuff");\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\n * ```\n * @example\n * ```ts\n * // NS2:\n * //For example, assume the following returns 0.01:\n * const hackAmount = ns.hackAnalyze("foodnstuff");\n * //This means that if hack the foodnstuff server using a single thread, then you will steal 1%, or 0.01 of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.\n * ```\n * @param host - Hostname of the target server.\n * @returns The part of money you will steal from the target server with a single thread hack.\n */\n hackAnalyze(host: string): number;\n\n /**\n * Get the security increase for a number of thread.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a hack with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @returns The security increase.\n */\n hackAnalyzeSecurity(threads: number): number;\n\n /**\n * Get the chance of successfully hacking a server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the chance you have of successfully hacking the specified server.\n *\n * This returned value is in decimal form, not percentage.\n *\n * @param host - Hostname of the target server.\n * @returns The chance you have of successfully hacking the target server.\n */\n hackAnalyzeChance(host: string): number;\n\n /**\n * Calculate the number of grow thread needed to grow a server by a certain multiplier.\n * @remarks\n * RAM cost: 1 GB\n *\n * This function returns the number of “growths” needed in order to increase\n * the amount of money available on the specified server by the specified amount.\n * The specified amount is multiplicative and is in decimal form, not percentage.\n *\n * Warning: The value returned by this function isn’t necessarily a whole number.\n *\n * @example\n * ```ts\n * // NS1:\n * //For example, if you want to determine how many grow calls you need to double the amount of money on foodnstuff, you would use:\n * var growTimes = growthAnalyze("foodnstuff", 2);\n * //If this returns 100, then this means you need to call grow 100 times in order to double the money (or once with 100 threads).\n * ```\n * @example\n * ```ts\n * // NS2:\n * //For example, if you want to determine how many grow calls you need to double the amount of money on foodnstuff, you would use:\n * const growTimes = ns.growthAnalyze("foodnstuff", 2);\n * //If this returns 100, then this means you need to call grow 100 times in order to double the money (or once with 100 threads).\n * ```\n * @param host - Hostname of the target server.\n * @param growthAmount - Multiplicative factor by which the server is grown. Decimal form..\n * @returns The amount of grow calls needed to grow the specified server by the specified amount\n */\n growthAnalyze(host: string, growthAmount: number, cores?: number): number;\n\n /**\n * Calculate the security increase for a number of thread.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns the security increase that would occur if a grow with this many threads happened.\n *\n * @param threads - Amount of threads that will be used.\n * @returns The security increase.\n */\n growthAnalyzeSecurity(threads: number): number;\n\n /**\n * Suspends the script for n milliseconds.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @example\n * ```ts\n * // NS1:\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\n * for (var i=0; i<10; i++) {\n * tprint(i + 1);\n * sleep(5000);\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * // This will count from 1 to 10 in your terminal, with one number every 5 seconds\n * for (var i=0; i<10; i++) {\n * ns.tprint(i + 1);\n * await ns.sleep(5000);\n * }\n * ```\n * @returns\n */\n sleep(millis: number): Promise<void>;\n\n /**\n * Suspends the script for n milliseconds. Doesn\'t block with concurrent calls.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param millis - Number of milliseconds to sleep.\n * @returns\n */\n asleep(millis: number): Promise<void>;\n\n /**\n * Prints one or move values or variables to the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param args - Value(s) to be printed.\n */\n print(...args: any[]): void;\n\n /**\n * Prints one or more values or variables to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param args - Value(s) to be printed.\n */\n tprint(...args: any[]): void;\n\n /**\n * Prints a raw value or a variable to the Terminal.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param format - format of the message\n * @param msg - Value to be printed.\n */\n tprintf(format: string, ...values: any[]): void;\n\n /**\n * Clears the script’s logs.\n * @remarks\n * RAM cost: 0 GB\n */\n clearLog(): void;\n\n /**\n * Disables logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Logging can be disabled for all functions by passing `ALL` as the argument.\n *\n * Note that this does not completely remove all logging functionality.\n * This only stops a function from logging when the function is successful.\n * If the function fails, it will still log the reason for failure.\n *\n * @param fn - Name of function for which to disable logging.\n */\n disableLog(fn: string): void;\n\n /**\n * Enable logging for a certain function.\n * @remarks\n * RAM cost: 0 GB\n *\n * Re-enables logging for the given function. If `ALL` is passed into this\n * function as an argument, then it will revert the effects of disableLog(`ALL`).\n *\n * @param fn - Name of function for which to enable logging.\n */\n enableLog(fn: string): void;\n\n /**\n * Checks the status of the logging for the given function.\n * @remarks\n * RAM cost: 0 GB\n *\n * @param fn - Name of function to check.\n * @returns Returns a boolean indicating whether or not logging is enabled for that function (or `ALL`)\n */\n isLogEnabled(fn: string): boolean;\n\n /**\n * Get all the logs of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Returns a script’s logs. The logs are returned as an array, where each line is an element in the array.\n * The most recently logged line is at the end of the array.\n * Note that there is a maximum number of lines that a script stores in its logs. This is configurable in the game’s options.\n * If the function is called with no arguments, it will return the current script’s logs.\n *\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```ts\n * // NS1:\n * //Get logs from foo.script on the current server that was run with no args\n * getScriptLogs("foo.script");\n *\n * //Open logs from foo.script on the foodnstuff server that was run with no args\n * getScriptLogs("foo.script", "foodnstuff");\n *\n * //Open logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]\n * getScriptLogs("foo.script", "foodnstuff", 1, "test");\n * ```\n * @example\n * ```ts\n * // NS2:\n * //Get logs from foo.script on the current server that was run with no args\n * ns.getScriptLogs("foo.script");\n *\n * //Open logs from foo.script on the foodnstuff server that was run with no args\n * ns.getScriptLogs("foo.script", "foodnstuff");\n *\n * //Open logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.getScriptLogs("foo.script", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename of script to get logs from.\n * @param host - Optional. Hostname of the server that the script is on.\n * @param args - Arguments to identify which scripts to get logs for.\n * @returns Returns an string array, where each line is an element in the array. The most recently logged line is at the end of the array.\n */\n getScriptLogs(fn?: string, host?: string, ...args: any[]): string[];\n\n /**\n * Open the tail window of a script.\n * @remarks\n * RAM cost: 0 GB\n *\n * Opens a script’s logs. This is functionally the same as the tail Terminal command.\n *\n * If the function is called with no arguments, it will open the current script’s logs.\n *\n * Otherwise, the fn, hostname/ip, and args… arguments can be used to get the logs from another script.\n * Remember that scripts are uniquely identified by both their names and arguments.\n *\n * @example\n * ```ts\n * // NS1:\n * //Open logs from foo.script on the current server that was run with no args\n * tail("foo.script");\n *\n * //Get logs from foo.script on the foodnstuff server that was run with no args\n * tail("foo.script", "foodnstuff");\n *\n * //Get logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]\n * tail("foo.script", "foodnstuff", 1, "test");\n * ```\n * @example\n * ```ts\n * // NS2:\n * //Open logs from foo.script on the current server that was run with no args\n * ns.tail("foo.script");\n *\n * //Get logs from foo.script on the foodnstuff server that was run with no args\n * ns.tail("foo.script", "foodnstuff");\n *\n * //Get logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]\n * ns.tail("foo.script", "foodnstuff", 1, "test");\n * ```\n * @param fn - Optional. Filename or PID of the script being tailed. If omitted, the current script is tailed.\n * @param host - Optional. Hostname of the script being tailed. Defaults to the server this script is running on. If args are specified, this is not optional.\n * @param args - Arguments for the script being tailed.\n */\n tail(fn?: FilenameOrPID, host?: string, ...args: any[]): void;\n\n /**\n * Get the list of servers connected to a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array containing the hostnames of all servers that are one\n * node way from the specified target server. The hostnames in the returned\n * array are strings.\n *\n * @param host - Optional, Hostname of the server to scan, default to current server.\n * @returns Returns an string of hostnames.\n */\n scan(host?: string): string[];\n\n /**\n * Runs NUKE.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Running NUKE.exe on a target server gives you root access which means you can executes scripts on said server. NUKE.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * nuke("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.nuke("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n nuke(host: string): void;\n\n /**\n * Runs BruteSSH.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * brutessh("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.brutessh("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n brutessh(host: string): void;\n\n /**\n * Runs FTPCrack.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * ftpcrack("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.ftpcrack("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n ftpcrack(host: string): void;\n\n /**\n * Runs relaySMTP.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * relaysmtp("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.relaysmtp("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n relaysmtp(host: string): void;\n\n /**\n * Runs HTTPWorm.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * httpworm("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.httpworm("foodnstuff");\n * ```\n * @param host - Hostname of the target server.\n */\n httpworm(host: string): void;\n\n /**\n * Runs SQLInject.exe on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Runs the SQLInject.exe program on the target server. SQLInject.exe must exist on your home computer.\n *\n * @example\n * ```ts\n * // NS1:\n * sqlinject("foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.sqlinject("foodnstuff");\n * ```\n * @remarks RAM cost: 0.05 GB\n * @param host - Hostname of the target server.\n */\n sqlinject(host: string): void;\n\n /**\n * Start another script on the current server.\n * @remarks\n * RAM cost: 1 GB\n *\n * Run a script as a separate process. This function can only be used to run scripts located on the\n * current server (the server running the script that calls this function). Requires a significant\n * amount of RAM to run this command.\n *\n * If the script was successfully started, then this functions returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with a numThreads argument of 0 will return 0 without running the script.\n * However, running this function with a negative numThreads argument will cause a runtime error.\n *\n * @example\n * ```ts\n * // NS1:\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.script’ single-threaded with no arguments:\n * run("foo.script");\n *\n * //The following example will run ‘foo.script’ but with 5 threads instead of single-threaded:\n * run("foo.script", 5);\n *\n * //This next example will run ‘foo.script’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\n * run("foo.script", 1, \'foodnstuff\');\n * ```\n * @example\n * ```ts\n * // NS2:\n * //The simplest way to use the run command is to call it with just the script name. The following example will run ‘foo.script’ single-threaded with no arguments:\n * ns.run("foo.script");\n *\n * //The following example will run ‘foo.script’ but with 5 threads instead of single-threaded:\n * ns.run("foo.script", 5);\n *\n * //This next example will run ‘foo.script’ single-threaded, and will pass the string ‘foodnstuff’ into the script as an argument:\n * ns.run("foo.script", 1, \'foodnstuff\');\n * ```\n * @param script - Filename of script to run.\n * @param numThreads - Optional thread count for new script. Set to 1 by default. Will be rounded to nearest integer.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the second argument numThreads must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n run(script: string, numThreads?: number, ...args: Array<string | number | boolean>): number;\n\n /**\n * Start another script on any server.\n * @remarks\n * RAM cost: 1.3 GB\n *\n * Run a script as a separate process on a specified server. This is similar to the run function\n * except that it can be used to run a script on any server, instead of just the current server.\n *\n * If the script was successfully started, then this functions returns the PID of that script.\n * Otherwise, it returns 0.\n *\n * PID stands for Process ID. The PID is a unique identifier for each script.\n * The PID will always be a positive integer.\n *\n * Running this function with a numThreads argument of 0 will return 0 without running the script.\n * However, running this function with a negative numThreads argument will cause a runtime error.\n *\n * @example\n * ```ts\n * // NS1:\n * //The simplest way to use the exec command is to call it with just the script name and the target server. The following example will try to run generic-hack.script on the foodnstuff server:\n * exec("generic-hack.script", "foodnstuff");\n *\n * //The following example will try to run the script generic-hack.script on the joesguns server with 10 threads:\n * exec("generic-hack.script", "joesguns", 10);\n *\n * //This last example will try to run the script foo.script on the foodnstuff server with 5 threads. It will also pass the number 1 and the string “test” in as arguments to the script:\n * exec("foo.script", "foodnstuff", 5, 1, "test");\n * ```\n * * @example\n * ```ts\n * // NS2:\n * //The simplest way to use the exec command is to call it with just the script name and the target server. The following example will try to run generic-hack.script on the foodnstuff server:\n * ns.exec("generic-hack.script", "foodnstuff");\n *\n * //The following example will try to run the script generic-hack.script on the joesguns server with 10 threads:\n * ns.exec("generic-hack.script", "joesguns", 10);\n *\n * //This last example will try to run the script foo.script on the foodnstuff server with 5 threads. It will also pass the number 1 and the string “test” in as arguments to the script:\n * ns.exec("foo.script", "foodnstuff", 5, 1, "test");\n * ```\n * @param script - Filename of script to execute.\n * @param host - Hostname of the `target server` on which to execute the script.\n * @param numThreads - Optional thread count for new script. Set to 1 by default. Will be rounded to nearest integer.\n * @param args - Additional arguments to pass into the new script that is being run. Note that if any arguments are being passed into the new script, then the third argument numThreads must be filled in with a value.\n * @returns Returns the PID of a successfully started script, and 0 otherwise.\n */\n exec(script: string, host: string, numThreads?: number, ...args: Array<string | number | boolean>): number;\n\n /**\n * Terminate current script and start another in 10s.\n * @remarks\n * RAM cost: 2 GB\n *\n * Terminates the current script, and then after a delay of about 10 seconds it will execute the\n * newly-specified script. The purpose of this function is to execute a new script without being\n * constrained by the RAM usage of the current one. This function can only be used to run scripts\n * on the local server.\n *\n * Because this function immediately terminates the script, it does not have a return value.\n *\n * @example\n * ```ts\n * // NS1:\n * //The following example will execute the script ‘foo.script’ with 10 threads and the arguments ‘foodnstuff’ and 90:\n * spawn(\'foo.script\', 10, \'foodnstuff\', 90);\n * ```\n * @example\n * ```ts\n * // NS2:\n * //The following example will execute the script ‘foo.script’ with 10 threads and the arguments ‘foodnstuff’ and 90:\n * ns.spawn(\'foo.script\', 10, \'foodnstuff\', 90);\n * ```\n * @param script - Filename of script to execute.\n * @param numThreads - Number of threads to spawn new script with. Will be rounded to nearest integer.\n * @param args - Additional arguments to pass into the new script that is being run.\n */\n spawn(script: string, numThreads?: number, ...args: string[]): void;\n\n /**\n * Terminate another script.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills the script on the target server specified by the script’s name and arguments.\n * Remember that scripts are uniquely identified by both their name and arguments.\n * For example, if `foo.script` is run with the argument 1, then this is not the same as\n * `foo.script` run with the argument 2, even though they have the same code.\n *\n * @example\n * ```ts\n * // NS1:\n * //The following example will try to kill a script named foo.script on the foodnstuff server that was ran with no arguments:\n * kill("foo.script", "foodnstuff");\n *\n * //The following will try to kill a script named foo.script on the current server that was ran with no arguments:\n * kill("foo.script", getHostname());\n *\n * //The following will try to kill a script named foo.script on the current server that was ran with the arguments 1 and “foodnstuff”:\n * kill("foo.script", getHostname(), 1, "foodnstuff");\n * ```\n * @example\n * ```ts\n * // NS2:\n * //The following example will try to kill a script named foo.script on the foodnstuff server that was ran with no arguments:\n * ns.kill("foo.script", "foodnstuff");\n *\n * //The following will try to kill a script named foo.script on the current server that was ran with no arguments:\n * ns.kill("foo.script", getHostname());\n *\n * //The following will try to kill a script named foo.script on the current server that was ran with the arguments 1 and “foodnstuff”:\n * ns.kill("foo.script", getHostname(), 1, "foodnstuff");\n * ```\n * @param script - Filename or pid of the script to kill\n * @param host - Hostname of the server on which to kill the script.\n * @param args - Arguments to identify which script to kill.\n * @returns True if the script is successfully killed, and false otherwise.\n */\n kill(script: number): boolean;\n kill(script: string, host: string, ...args: string[]): boolean;\n\n /**\n * Terminate all scripts on a server.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Kills all running scripts on the specified server. This function returns true\n * if any scripts were killed, and false otherwise. In other words, it will return\n * true if there are any scripts running on the target server.\n * If no host is defined, it will kill all scripts, where the script is running.\n *\n * @param host - IP or hostname of the server on which to kill all scripts.\n * @returns True if any scripts were killed, and false otherwise.\n */\n killall(host?: string): boolean;\n\n /**\n * Terminates the current script immediately.\n * @remarks\n * RAM cost: 0 GB\n */\n exit(): void;\n\n /**\n * Copy file between servers.\n * @remarks\n * RAM cost: 0.6 GB\n *\n * Copies a script or literature (.lit) file(s) to another server. The files argument can be either a string\n * specifying a single file to copy, or an array of strings specifying multiple files to copy.\n *\n * @example\n * ```ts\n * // NS1:\n * //Copies foo.lit from the helios server to the home computer:\n * scp("foo.lit", "helios", "home");\n *\n * //Tries to copy three files from rothman-uni to home computer:\n * files = ["foo1.lit", "foo2.script", "foo3.script"];\n * scp(files, "rothman-uni", "home");\n * ```\n * @example\n * ```ts\n * // NS2:\n * //Copies foo.lit from the helios server to the home computer:\n * await ns.scp("foo.lit", "helios", "home");\n *\n * //Tries to copy three files from rothman-uni to home computer:\n * files = ["foo1.lit", "foo2.script", "foo3.script"];\n * await ns.scp(files, "rothman-uni", "home");\n * ```\n * @example\n * ```ts\n * //ns2, copies files from home to a target server\n * const server = ns.args[0];\n * const files = ["hack.js","weaken.js","grow.js"];\n * await ns.scp(files, "home", server);\n * ```\n * @param files - Filename or an array of filenames of script/literature files to copy.\n * @param source - Host of the source server, which is the server from which the file will be copied. This argument is optional and if it’s omitted the source will be the current server.\n * @param destination - Host of the destination server, which is the server to which the file will be copied.\n * @returns True if the script/literature file is successfully copied over and false otherwise. If the files argument is an array then this function will return true if at least one of the files in the array is successfully copied.\n */\n scp(files: string | string[], destination: string): Promise<boolean>;\n scp(files: string | string[], source: string, destination: string): Promise<boolean>;\n\n /**\n * List files on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with the filenames of all files on the specified server\n * (as strings). The returned array is sorted in alphabetic order.\n *\n * @param host - Host of the target server.\n * @param grep - A substring to search for in the filename.\n * @returns Array with the filenames of all files on the specified server.\n */\n ls(host: string, grep?: string): string[];\n\n /**\n * List running scripts on a server.\n * @remarks\n * RAM cost: 0.2 GB\n *\n * Returns an array with general information about all scripts running on the specified target server.\n *\n * @example\n * ```ts\n * // NS1:\n * const scripts = ps("home");\n * for (let i = 0; i < scripts.length; ++i) {\n * tprint(scripts[i].filename + \' \' + scripts[i].threads);\n * tprint(scripts[i].args);\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * const ps = ns.ps("home");\n * for (script of ps) {\n * ns.tprint(`${script.filename} ${ps[i].threads}`);\n * ns.tprint(script.args);\n * }\n * ```\n * @param host - Host address of the target server. If not specified, it will be the current server’s IP by default.\n * @returns Array with general information about all scripts running on the specified target server.\n */\n ps(host?: string): ProcessInfo[];\n\n /**\n * Check if your have root access on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns a boolean indicating whether or not the player has root access to the specified target server.\n *\n * @example\n * ```ts\n * // NS1:\n * if (hasRootAccess("foodnstuff") == false) {\n * nuke("foodnstuff");\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * if (ns.hasRootAccess("foodnstuff") == false) {\n * ns.nuke("foodnstuff");\n * }\n * ```\n * @param host - Host of the target server\n * @returns True if player has root access to the specified target server, and false otherwise.\n */\n hasRootAccess(host: string): boolean;\n\n /**\n * Returns a string with the hostname of the server that the script is running on.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Hostname of the server that the script is on.\n */\n getHostname(): string;\n\n /**\n * Returns the player’s current hacking level.\n *\n * @remarks\n * RAM cost: 0.05 GB\n * @returns Player’s current hacking level\n */\n getHackingLevel(): number;\n\n /**\n * Get hacking related multipliers.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns an object containing the Player’s hacking related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```ts\n * // NS1:\n * // Example of how this can be used:\n * var mults = getHackingMultipliers();\n * print(mults.chance);\n * print(mults.growth);\n * ```\n * @example\n * ```ts\n * // NS2:\n * // Example of how this can be used:\n * const {chance, growth} = ns.getHackingMultipliers();\n * print(chance);\n * print(growth);\n * ```\n * @returns Object containing the Player’s hacking related multipliers.\n */\n getHackingMultipliers(): HackingMultipliers;\n\n /**\n * Get hacknet related multipliers.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns an object containing the Player’s hacknet related multipliers.\n * These multipliers are returned in fractional forms, not percentages\n * (e.g. 1.5 instead of 150%).\n *\n * @example\n * ```ts\n * // NS1:\n * // Example of how this can be used:\n * var mults = getHacknetMultipliers();\n * print(mults.production);\n * print(mults.purchaseCost);\n * ```\n * @example\n * ```ts\n * // NS2:\n * // Example of how this can be used:\n * const {production, purchaseCost} = ns.getHacknetMultipliers();\n * print(production);\n * print(purchaseCost);\n * ```\n * @returns Object containing the Player’s hacknet related multipliers.\n */\n getHacknetMultipliers(): HacknetMultipliers;\n\n /**\n * Returns a server object for the given server. Defaults to the running script\'s server if host is not specified.\n *\n * @remarks\n * RAM cost: 2 GB\n * @param host - Optional. Hostname for the requested server object.\n * @returns The requested server object.\n */\n getServer(host?: string): Server;\n\n /**\n * Get money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of money available on a server.\n * Running this function on the home computer will return the player’s money.\n *\n * @example\n * ```ts\n * // NS1:\n * getServerMoneyAvailable("foodnstuff");\n * getServerMoneyAvailable("home"); //Returns player\'s money\n * ```\n * @example\n * ```ts\n * // NS2:\n * ns.getServerMoneyAvailable("foodnstuff");\n * ns.getServerMoneyAvailable("home"); // Returns player\'s money\n * ```\n * @param host - Host of target server\n * @returns Amount of money available on the server.\n */\n getServerMoneyAvailable(host: string): number;\n\n /**\n * Get maximum money available on a server.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the maximum amount of money that can be available on a server.\n *\n * @param host - Host of target server.\n * @returns Maximum amount of money available on the server.\n */\n getServerMaxMoney(host: string): number;\n\n /**\n * Get a server growth parameter.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the server’s instrinsic “growth parameter”. This growth\n * parameter is a number between 0 and 100 that represents how\n * quickly the server’s money grows. This parameter affects the\n * percentage by which the server’s money is increased when using the\n * grow function. A higher growth parameter will result in a\n * higher percentage increase from grow.\n *\n * @param host - Host of target server.\n * @returns Parameter that affects the percentage by which the server’s money is increased when using the grow function.\n */\n getServerGrowth(host: string): number;\n\n /**\n * Get server security level.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the security level of the target server. A server’s security\n * level is denoted by a number, typically between 1 and 100\n * (but it can go above 100).\n *\n * @param host - Host of target server.\n * @returns Security level of the target server.\n */\n getServerSecurityLevel(host: string): number;\n\n /**\n * Returns the minimum security level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Host of target server.\n * @returns Minimum security level of the target server.\n */\n getServerMinSecurityLevel(host: string): number;\n\n /**\n * @deprecated useless\n * @remarks\n * RAM cost: 0.1 GB\n * Returns the base security level of the target server. This is the security\n * level that the server starts out with. This is different than\n * getServerSecurityLevel because getServerSecurityLevel returns\n * the current security level of a server, which can constantly change due to\n * hack, grow, and weaken, calls on that server.\n * The base security level will stay the same until you reset by\n * installing an Augmentation(s).\n *\n * @param host - Host of target server.\n * @returns Base security level of the target server.\n */\n getServerBaseSecurityLevel(host: string): number;\n\n /**\n * @deprecated use getServerMaxRam / getServerUsedRam\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns an array with two elements that gives information about a server’s memory (RAM).\n * The first element in the array is the amount of RAM that the server has total (in GB).\n * The second element in the array is the amount of RAM that is currently being used on\n * the server (in GB).\n *\n * @example\n * ```ts\n * // NS1:\n * var serverRam = getServerRam("helios");\n * var totalRam = serverRam[0];\n * var ramUsed = serverRam[1];\n * ```\n * @example\n * ```ts\n * // NS2:\n * const [totalRam, ramUsed] = ns.getServerRam("helios");\n * ```\n * @param host - Host of target server.\n * @returns Array with total and used memory on the specified server, in GB.\n */\n getServerRam(host: string): [number, number];\n\n /**\n * Get the max RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns max ram (GB)\n */\n getServerMaxRam(host: string): number;\n /**\n * Get the used RAM on a server.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * @param host - Hostname of the target server.\n * @returns used ram (GB)\n */\n getServerUsedRam(host: string): number;\n\n /**\n * Returns the required hacking level of the target server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Host of target server.\n * @returns The required hacking level of the target server.\n */\n getServerRequiredHackingLevel(host: string): number;\n\n /**\n * Returns the number of open ports required to successfully run NUKE.exe on the specified server.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Host of target server.\n * @returns The number of open ports required to successfully run NUKE.exe on the specified server.\n */\n getServerNumPortsRequired(host: string): number;\n\n /**\n * Returns a boolean denoting whether or not the specified server exists.\n *\n * @remarks RAM cost: 0.1 GB\n * @param host - Host of target server.\n * @returns True if specified server exists, and false otherwise.\n */\n serverExists(host: string): boolean;\n\n /**\n * Check if a file exists.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified file exists on the target server.\n * The filename for scripts is case-sensitive, but for other types of files it is not.\n * For example, fileExists(“brutessh.exe”) will work fine, even though the actual program\n * is named \'BruteSSH.exe\'.\n *\n * If the hostname/ip argument is omitted, then the function will search through the current\n * server (the server running the script that calls this function) for the file.\n *\n * @example\n * ```ts\n * // NS1:\n * //The function call will return true if the script named foo.script exists on the foodnstuff server, and false otherwise.\n * fileExists("foo.script", "foodnstuff");\n *\n * //The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\n * fileExists("ftpcrack.exe");\n * ```\n * * @example\n * ```ts\n * // NS2:\n * // The function call will return true if the script named foo.script exists on the foodnstuff server, and false otherwise.\n * ns.fileExists("foo.script", "foodnstuff");\n *\n * // The function call will return true if the current server contains the FTPCrack.exe program, and false otherwise.\n * ns.fileExists("ftpcrack.exe");\n * ```\n * @param filename - Filename of file to check.\n * @param host - Host of target server. This is optional. If it is not specified then the function will use the current server as the target server.\n * @returns True if specified file exists, and false otherwise.\n */\n fileExists(filename: string, host?: string): boolean;\n\n /**\n * Check if a script is running.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns a boolean indicating whether the specified script is running on the target server.\n * If you use a PID instead of a filename, the hostname and args parameters are unnecessary.\n * Remember that a script is uniquely identified by both its name and its arguments.\n *\n * @example\n * ```ts\n * // NS1:\n * //The function call will return true if there is a script named foo.script with no arguments running on the foodnstuff server, and false otherwise:\n * isRunning("foo.script", "foodnstuff");\n *\n * //The function call will return true if there is a script named foo.script with no arguments running on the current server, and false otherwise:\n * isRunning("foo.script", getHostname());\n *\n * //The function call will return true if there is a script named foo.script running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\n * isRunning("foo.script", "joesguns", 1, 5, "test");\n * ```\n * @example\n * ```ts\n * // NS2:\n * //The function call will return true if there is a script named foo.script with no arguments running on the foodnstuff server, and false otherwise:\n * ns.isRunning("foo.script", "foodnstuff");\n *\n * //The function call will return true if there is a script named foo.script with no arguments running on the current server, and false otherwise:\n * ns.isRunning("foo.script", ns.getHostname());\n *\n * //The function call will return true if there is a script named foo.script running with the arguments 1, 5, and “test” (in that order) on the joesguns server, and false otherwise:\n * ns.isRunning("foo.script", "joesguns", 1, 5, "test");\n * ```\n * @param script - Filename or PID of script to check. This is case-sensitive.\n * @param host - Host of target server.\n * @param args - Arguments to specify/identify which scripts to search for.\n * @returns True if specified script is running on the target server, and false otherwise.\n */\n isRunning(script: FilenameOrPID, host: string, ...args: string[]): boolean;\n\n /**\n * Get general info about a running script.\n * @remarks\n * RAM cost: 0.3 GB\n *\n * Running with no args returns curent script.\n * If you use a PID as the first parameter, the hostname and args parameters are unnecessary.\n *\n * @param filename - Optional. Filename or PID of the script.\n * @param hostname - Optional. Name of host server the script is running on.\n * @param args - Arguments to identify the script\n * @returns info about a running script\n */\n getRunningScript(filename?: FilenameOrPID, hostname?: string, ...args: (string | number)[]): RunningScript;\n\n /**\n * Get cost of purchasing a server.\n * @remarks\n * RAM cost: 0.25 GB\n *\n * Returns the cost to purchase a server with the specified amount of ram.\n *\n * @example\n * ```ts\n * // NS1:\n * for (i = 1; i <= 20; i++) {\n * tprint(i + " -- " + getPurchasedServerCost(Math.pow(2, i)));\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * for (i = 1; i <= 20; i++) {\n * ns.tprint(i + " -- " + ns.getPurchasedServerCost(Math.pow(2, i)));\n * }\n * ```\n * @param ram - Amount of RAM of a potential purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The cost to purchase a server with the specified amount of ram.\n */\n getPurchasedServerCost(ram: number): number;\n\n /**\n * Purchase a server.\n * @remarks\n * 2.25 GB\n *\n * Purchased a server with the specified hostname and amount of RAM.\n *\n * The hostname argument can be any data type, but it will be converted to a string\n * and have whitespace removed. Anything that resolves to an empty string will cause\n * the function to fail. If there is already a server with the specified hostname,\n * then the function will automatically append a number at the end of the hostname\n * argument value until it finds a unique hostname. For example, if the script calls\n * `purchaseServer(“foo”, 4)` but a server named “foo” already exists, the it will\n * automatically change the hostname to `foo-0`. If there is already a server with the\n * hostname `foo-0`, then it will change the hostname to `foo-1`, and so on.\n *\n * Note that there is a maximum limit to the amount of servers you can purchase.\n *\n * Returns the hostname of the newly purchased server as a string. If the function\n * fails to purchase a server, then it will return an empty string. The function will\n * fail if the arguments passed in are invalid, if the player does not have enough\n * money to purchase the specified server, or if the player has exceeded the maximum\n * amount of servers.\n *\n * @example\n * ```ts\n * // NS1:\n * var ram = 64;\n * var prefix = "pserv-";\n * for (i = 0; i < 5; ++i) {\n * purchaseServer(prefix + i, ram);\n * }\n * ```\n * @example\n * ```ts\n * // NS2:\n * const ram = 64;\n * const prefix = "pserv-";\n * for (i = 0; i < 5; ++i) {\n * ns.purchaseServer(prefix + i, ram);\n * }\n * ```\n * @param hostname - Host of the purchased server.\n * @param ram - Amount of RAM of the purchased server, in GB. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20).\n * @returns The hostname of the newly purchased server.\n */\n purchaseServer(hostname: string, ram: number): string;\n\n /**\n * Delete a purchased server.\n * @remarks\n * 2.25 GB\n *\n * Deletes one of your purchased servers, which is specified by its hostname.\n *\n * The hostname argument can be any data type, but it will be converted to a string.\n * Whitespace is automatically removed from the string. This function will not delete a\n * server that still has scripts running on it.\n *\n * @param host - Host of the server to delete.\n * @returns True if successful, and false otherwise.\n */\n deleteServer(host: string): boolean;\n\n /**\n * Returns an array with the hostnames of all of the servers you have purchased.\n *\n * @remarks 2.25 GB\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\n */\n getPurchasedServers(): string[];\n\n /**\n * Returns the maximum number of servers you can purchase.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum number of servers you can purchase.\n */\n getPurchasedServerLimit(): number;\n\n /**\n * Returns the maximum RAM that a purchased server can have.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Returns the maximum RAM (in GB) that a purchased server can have.\n */\n getPurchasedServerMaxRam(): number;\n\n /**\n * Write data to a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function can be used to write data to a text file (.txt).\n *\n * This function will write data to that text file. If the specified text file does not exist,\n * then it will be created. The third argument mode, defines how the data will be written to\n * the text file. If *mode is set to “w”, then the data is written in “write” mode which means\n * that it will overwrite all existing data on the text file. If mode is set to any other value\n * then the data will be written in “append” mode which means that the data will be added at the\n * end of the text file.\n *\n * @param handle - Filename of the text file that will be written to.\n * @param data - Data to write.\n * @param mode - Defines the write mode. Only valid when writing to text files.\n */\n write(handle: string, data?: string[] | number | string, mode?: "w" | "a"): Promise<void>;\n\n /**\n * Attempt to write to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Attempts to write data to the specified Netscript Port.\n * If the port is full, the data will not be written.\n * Otherwise, the data will be written normally.\n *\n * @param port - Port or text file that will be written to.\n * @param data - Data to write.\n * @returns True if the data is successfully written to the port, and false otherwise.\n */\n tryWritePort(port: number, data: string[] | number): Promise<boolean>;\n\n /**\n * Read content of a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to read data from a text file (.txt).\n *\n * This function will return the data in the specified text\n * file. If the text file does not exist, an empty string will be returned.\n *\n * @param handle - Filename to read from.\n * @returns Data in the specified text file.\n */\n read(handle: string): any;\n\n /**\n * Get a copy of the data from a port without popping it.\n * @remarks\n * RAM cost: 0 GB\n *\n * This function is used to peek at the data from a port. It returns the\n * first element in the specified port without removing that element. If\n * the port is empty, the string “NULL PORT DATA” will be returned.\n *\n * @param port - Port to peek. Must be an integer between 1 and 20.\n * @returns Data in the specified port.\n */\n peek(port: number): any;\n\n /**\n * Clear data from a file.\n * @remarks\n * RAM cost: 0 GB\n *\n * Delete all data from that text file.\n *\n * @param handle - Text file to clear.\n */\n clear(handle: string): void;\n\n /**\n * Clear data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Deleta all data from the underlying queue.\n *\n * @param handle - Port to clear.\n */\n clearPort(handle: number): void;\n\n /**\n * Write data to a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Write data to that netscript port.\n * @returns The data popped off the queue if it was full.\n */\n writePort(port: number, data: string | number): Promise<any>;\n /**\n * Read data from a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Read data from that port. A port is a serialized queue.\n * This function will remove the first element from that queue and return it.\n * If the queue is empty, then the string “NULL PORT DATA” will be returned.\n * @returns the data read.\n */\n readPort(port: number): any;\n\n /**\n * Get all data on a port.\n * @remarks\n * RAM cost: 0 GB\n *\n * Get a handle to a Netscript Port.\n *\n * WARNING: Port Handles only work in NetscriptJS (Netscript 2.0). They will not work in Netscript 1.0.\n *\n * @see https://bitburner.readthedocs.io/en/latest/netscript/netscriptmisc.html#netscript-ports\n * @param port - Port number. Must be an integer between 1 and 20.\n */\n getPortHandle(port: number): NetscriptPort;\n\n /**\n * Delete a file.\n * @remarks\n * RAM cost: 1 GB\n *\n * Removes the specified file from the current server. This function works for every file\n * type except message (.msg) files.\n *\n * @param name - Filename of file to remove. Must include the extension.\n * @param host - Host Address of the server on which to delete the file. Optional. Defaults to current server.\n * @returns True if it successfully deletes the file, and false otherwise.\n */\n rm(name: string, host?: string): boolean;\n\n /**\n * Check if any script with a filename is running.\n * @remarks\n * RAM cost: 1 GB\n *\n * Returns a boolean indicating whether any instance of the specified script is running\n * on the target server, regardless of its arguments.\n *\n * This is different than the isRunning function because it does not try to\n * identify a specific instance of a running script by its arguments.\n *\n * @example\n * ```ts\n * // NS1:\n * //The function call will return true if there is any script named foo.script running on the foodnstuff server, and false otherwise:\n * scriptRunning("foo.script", "foodnstuff");\n *\n * //The function call will return true if there is any script named “foo.script” running on the current server, and false otherwise:\n * scriptRunning("foo.script", getHostname());\n * ```\n * * @example\n * ```ts\n * // NS2:\n * //The function call will return true if there is any script named foo.script running on the foodnstuff server, and false otherwise:\n * ns.scriptRunning("foo.script", "foodnstuff");\n *\n * //The function call will return true if there is any script named “foo.script” running on the current server, and false otherwise:\n * ns.scriptRunning("foo.script", ns.getHostname());\n * ```\n * @param script - Filename of script to check. This is case-sensitive.\n * @param host - Host of target server.\n * @returns True if the specified script is running, and false otherwise.\n */\n scriptRunning(script: string, host: string): boolean;\n\n /**\n * Kill all scripts with a filename.\n * @remarks\n * RAM cost: 1 GB\n *\n * Kills all scripts with the specified filename on the target server specified by hostname,\n * regardless of arguments.\n *\n * @param script - Filename of script to kill. This is case-sensitive.\n * @param host - Host of target server.\n * @returns true if one or more scripts were successfully killed, and false if none were.\n */\n scriptKill(script: string, host: string): boolean;\n\n /**\n * Returns the current script name.\n *\n * @remarks RAM cost: 0 GB\n * @returns Current script name.\n */\n getScriptName(): string;\n\n /**\n * Get the ram cost of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of RAM required to run the specified script on the target server.\n * Returns 0 if the script does not exist.\n *\n * @param script - Filename of script. This is case-sensitive.\n * @param host - Host of target server the script is located on. This is optional, If it is not specified then the function will se the current server as the target server.\n * @returns Amount of RAM (in GB) required to run the specified script on the target server, and 0 if the script does not exist.\n */\n getScriptRam(script: string, host?: string): number;\n\n /**\n * Get the execution time of a hack() call.\n * @remarks\n * RAM cost: 0.05 GB\n *When `hack` completes an amount of money is stolen depending on the player\'s skills.\n * Returns the amount of time in milliseconds it takes to execute the hack Netscript function on the target server.\n * The function takes in an optional hackLvl parameter that can be specified to see what the hack time would be at different hacking levels.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Host of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the hack Netscript function. Returns Infinity if called on a Hacknet Server.\n */\n getHackTime(host: string): number;\n\n /**\n * Get the execution time of a grow() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the grow Netscript function on the target server.\n * The function takes in an optional hackLvl parameter that can be specified to see what the grow time would be at different hacking levels.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Host of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the grow Netscript function. Returns Infinity if called on a Hacknet Server.\n */\n getGrowTime(host: string): number;\n\n /**\n * Get the execution time of a weaken() call.\n * @remarks\n * RAM cost: 0.05 GB\n *\n * Returns the amount of time in milliseconds it takes to execute the weaken Netscript function on the target server.\n * The function takes in an optional hackLvl parameter that can be specified to see what the weaken time would be at different hacking levels.\n * The required time is increased by the security level of the target server and decreased by the player\'s hacking level.\n *\n * @param host - Host of target server.\n * @returns Returns the amount of time in milliseconds it takes to execute the weaken Netscript function. Returns Infinity if called on a Hacknet Server.\n */\n getWeakenTime(host: string): number;\n\n /**\n * Get the income of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of income the specified script generates while online\n * (when the game is open, does not apply for offline income). Remember that\n * a script is uniquely identified by both its name and its arguments. So for\n * example if you ran a script with the arguments “foodnstuff” and “5” then\n * in order to use this function to get that script’s income you must specify\n * those same arguments in the same order in this function call.\n *\n * This function can also be called with no arguments.\n * If called with no arguments, then this function will return an array of two values.\n * The first value is the total income (dollar / second) of all of your active scripts\n * (scripts that are currently running on any server).\n * The second value is the total income (dollar / second) that you’ve earned from scripts\n * since you last installed Augmentations.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of income the specified script generates while online.\n */\n getScriptIncome(): [number, number];\n getScriptIncome(script: string, host: string, ...args: string[]): number;\n\n /**\n * Get the exp gain of a script.\n * @remarks\n * RAM cost: 0.1 GB\n *\n * Returns the amount of hacking experience the specified script generates while online\n * (when the game is open, does not apply for offline experience gains). Remember that a\n * script is uniquely identified by both its name and its arguments.\n *\n * This function can also return the total experience gain rate of all of your active\n * scripts by running the function with no arguments.\n *\n * @param script - Filename of script.\n * @param host - Server on which script is running.\n * @param args - Arguments that the script is running with.\n * @returns Amount of hacking experience the specified script generates while online.\n */\n getScriptExpGain(): number;\n getScriptExpGain(script: string, host: string, ...args: string[]): number;\n\n /**\n * Returns the amount of time in milliseconds that have passed since you last installed Augmentations.\n *\n * @remarks RAM cost: 0.05 GB\n * @returns Time in milliseconds that have passed since you last installed Augmentations.\n */\n getTimeSinceLastAug(): number;\n\n /**\n * Format a string.\n *\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formating arguments.\n * @returns Formated text.\n */\n sprintf(format: string, ...args: any[]): string;\n\n /**\n * Format a string with an array of arguments.\n * @remarks\n * RAM cost: 0 GB\n *\n * see: https://github.com/alexei/sprintf.js\n * @param format - String to format.\n * @param args - Formating arguments.\n * @returns Formated text.\n */\n vsprintf(format: string, args: any[]): string;\n\n /**\n * Format a number\n * @remarks\n * RAM cost: 0 GB\n *\n * Converts a number into a string with the specified formatter.\n * This uses the numeraljs library, so the formatters must be compatible with that.\n * This is the same function that the game itself uses to display numbers.\n *\n * see: http://numeraljs.com/\n * @param n - Number to format.\n * @param format - Formatter.\n * @returns Formated number.\n */\n nFormat(n: number, format: string): string;\n\n /**\n * Format time to readable string\n * @remarks\n * RAM cost: 0 GB\n *\n * @param milliseconds - Number of millisecond to format.\n * @param milliPrecision - Format time with subsecond precision, defaults to false.\n * @returns The formatted time.\n */\n tFormat(milliseconds: number, milliPrecision?: boolean): string;\n\n /**\n * Prompt the player with a Yes/No modal.\n * @remarks\n * RAM cost: 0 GB\n *\n * Prompts the player with a dialog box with two options: “Yes” and “No”.\n * This function will return true if the player click “Yes” and false if\n * the player clicks “No”. The script’s execution is halted until the player\n * selects one of the options.\n *\n * @param txt - Text to appear in the prompt dialog box.\n * @returns True if the player click “Yes” and false if the player clicks “No”.\n */\n prompt(txt: string): Promise<boolean>;\n\n /**\n * Open up a message box.\n * @param msg - Message to alert.\n */\n alert(msg: any): void;\n\n /**\n * Queue a toast (bottom-right notification).\n * @param msg - Message in the toast.\n * @param variant - Type of toast, must be one of success, info, warning, error. Defaults to success.\n * @param duration - Duration of toast in ms. Can also be `null` to create a persistent toast. Defaults to 2000\n */\n toast(msg: any, variant?: string, duration?: number | null): void;\n\n /**\n * Download a file from the internet.\n * @remarks\n * RAM cost: 0 GB\n *\n * Retrieves data from a URL and downloads it to a file on the specified server.\n * The data can only be downloaded to a script (.script, .ns, .js) or a text file (.txt).\n * If the file already exists, it will be overwritten by this command.\n * Note that it will not be possible to download data from many websites because they\n * do not allow cross-origin resource sharing (CORS).\n *\n * IMPORTANT: This is an asynchronous function that returns a Promise.\n * The Promise’s resolved value will be a boolean indicating whether or not the data was\n * successfully retrieved from the URL. Because the function is async and returns a Promise,\n * it is recommended you use wget in NetscriptJS (Netscript 2.0).\n *\n * In NetscriptJS, you must preface any call to wget with the await keyword (like you would hack or sleep).\n * wget will still work in Netscript 1.0, but the functions execution will not be synchronous\n * (i.e. it may not execute when you expect/want it to).\n * Furthermore, since Promises are not supported in ES5,\n * you will not be able to process the returned value of wget in Netscript 1.0.\n *\n * @example\n * ```ts\n * // NS1:\n * wget("https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md", "game_readme.txt");\n * ```\n * @example\n * ```ts\n * // NS2:\n * await ns.wget("https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md", "game_readme.txt");\n * ```\n * @param url - URL to pull data from.\n * @param target - Filename to write data to. Must be script or text file.\n * @param host - Optional hostname/ip of server for target file.\n * @returns True if the data was successfully retrieved from the URL, false otherwise.\n */\n wget(url: string, target: string, host?: string): Promise<boolean>;\n\n /**\n * Returns the amount of Faction favor required to be able to donate to a faction.\n *\n * @remarks RAM cost: 0.1 GB\n * @returns Amount of Faction favor required to be able to donate to a faction.\n */\n getFavorToDonate(): number;\n\n /**\n * Get the current Bitnode multipliers.\n * @remarks\n * RAM cost: 4 GB\n *\n * Returns an object containing the current BitNode multipliers.\n * This function requires you to be in Bitnode 5 or have Source-File 5 in order to run.\n * The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%).\n * The multipliers represent the difference between the current BitNode and\n * the original BitNode (BitNode-1).\n *\n * For example, if the CrimeMoney multiplier has a value of 0.1, then that means\n * that committing crimes in the current BitNode will only give 10% of the money\n * you would have received in BitNode-1.\n *\n * @example\n * ```ts\n * // NS1:\n * var mults = getBitNodeMultipliers();\n * print(mults.ServerMaxMoney);\n * print(mults.HackExpGain);\n * ```\n * @example\n * ```ts\n * // NS2:\n * const {ServerMaxMoney, HackExpGain} = ns.getBitNodeMultipliers();\n * print(ServerMaxMoney);\n * print(HackExpGain);\n * ```\n * @returns Object containing the current BitNode multipliers.\n */\n getBitNodeMultipliers(): BitNodeMultipliers;\n\n /**\n * Get a list of acquired Source-Files.\n * @remarks\n * RAM cost: 5 GB\n *\n * Returns an array of source files\n *\n * @returns Array containing an object with number and level of the source file.\n */\n getOwnedSourceFiles(): SourceFileLvl[];\n\n /**\n * Get information about the player.\n * @remarks\n * RAM cost: 0.5 GB\n *\n * Returns an object with information on the current player.\n *\n * @returns Player info\n */\n getPlayer(): Player;\n\n /**\n * Add callback function when the script dies\n * @remarks\n * RAM cost: 0 GB\n *\n * NS2 exclusive\n *\n * Add callback to be executed when the script dies.\n */\n atExit(f: () => void): void;\n\n /**\n * Move a file on the target server.\n * @remarks\n * RAM cost: 0 GB\n *\n * NS2 exclusive\n *\n * Move the source file to the specified destination on the target server.\n *\n * This command only works for scripts and text files (.txt). It cannot, however, be used\n * to convert from script to text file, or vice versa.\n *\n * This function can also be used to rename files.\n * \n * @param host - Host of target server.\n * @param source - Filename of the source file.\n * @param destination - Filename of the destination file.\n */\n mv(host: string, source: string, destination: string): void;\n\n /**\n * Parse command line flags.\n * @remarks\n * RAM cost: 0 GB\n *\n * Allows unix like flag parsing.\n * @example\n * ```ts\n * // example.script\n * var data = flags([\n * [\'delay\', 0], // a default number means this flag is a number\n * [\'server\', \'foodnstuff\'], // a default string means this flag is a string\n * [\'exclude\', []], // a default array means this flag is a default array of string\n * [\'help\', false], // a default boolean means this flag is a boolean\n * ]);\n * tprint(data);\n *\n * // example.ns\n * export async function main(ns) {\n * const data = ns.flags([\n * [\'delay\', 0], // a default number means this flag is a number\n * [\'server\', \'foodnstuff\'], // a default string means this flag is a string\n * [\'exclude\', []], // a default array means this flag is a default array of string\n * [\'help\', false], // a default boolean means this flag is a boolean\n * ]);\n * ns.tprint(data);\n * }\n *\n * // [home ~/]> run example.script\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":false}\n * // [home ~/]> run example.script --delay 3000\n * // {"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}\n * // [home ~/]> run example.script --delay 3000 --server harakiri-sushi\n * // {"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world\n * // {"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}\n * // [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b\n * // {"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}\n * // [home ~/]> run example.script --help\n * // {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}\n * ```\n */\n flags(schema: [string, string | number | boolean | string[]][]): any;\n}\n\n/**\n * Corporation Office API\n * @remarks\n * Requires the Office API upgrade from your corporation.\n * @public\n */\nexport interface OfficeAPI {\n /**\n * Assign an employee to a job.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param employeeName - name of the employee\n * @param job - Name of the job.\n * @returns A promise that is fulfilled when the assignment is complete.\n */\n assignJob(divisionName: string, cityName: string, employeeName: string, job: string): Promise<void>;\n /**\n * Assign an employee to a job.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @returns The newly hired employee, if any\n */\n hireEmployee(divisionName: string, cityName: string): Employee | undefined;\n /**\n * Upgrade office size.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param size - Amount of positions to open\n */\n upgradeOfficeSize(divisionName: string, cityName: string, size: number): void;\n /**\n * Assign an employee to a job.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param costPerEmployee - Amount to spend per employee.\n * @returns Amount of happiness increased.\n */\n throwParty(divisionName: string, cityName: string, costPerEmployee: number): Promise<number>;\n /**\n * Buy coffee for your employees\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @returns A promise that is fulfilled when the coffee is served.\n */\n buyCoffee(divisionName: string, cityName: string): Promise<void>;\n /**\n * Hire AdVert.\n * @param divisionName - Name of the division\n */\n hireAdVert(divisionName: string): void;\n /**\n * Hire AdVert.\n * @param divisionName - Name of the division\n * @param researchName - Name of the research\n */\n research(divisionName: string, researchName: string): void;\n /**\n * Get data about an office\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @returns Office data\n */\n getOffice(divisionName: string, cityName: string): Office;\n /**\n * Get data about an employee\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param employeeName - Name of the employee\n * @returns Employee data\n */\n getEmployee(divisionName: string, cityName: string, employeeName: string): Employee;\n}\n\n/**\n * Corporation Warehouse API\n * @remarks\n * Requires the Warehouse API upgrade from your corporation.\n * @public\n */\nexport interface WarehouseAPI {\n /**\n * Set material sell data.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n */\n sellMaterial(divisionName: string, cityName: string, materialName: string, amt: string, price: string): void;\n /**\n * Set product sell data.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param productName - Name of the product\n * @param amt - Amount to sell, can be "MAX"\n * @param price - Price to sell, can be "MP"\n * @param all - Sell in all city\n */\n sellProduct(\n divisionName: string,\n cityName: string,\n productName: string,\n amt: string,\n price: string,\n all: boolean,\n ): void;\n /**\n * Discontinue a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n */\n discontinueProduct(divisionName: string, productName: string): void;\n /**\n * Set smart supply\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param enabled - smart supply enabled\n */\n setSmartSupply(divisionName: string, cityName: string, enabled: boolean): void;\n /**\n * Set material buy data\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param materialName - Name of the material\n * @param amt - Amount of material to buy\n */\n buyMaterial(divisionName: string, cityName: string, materialName: string, amt: number): void;\n /**\n * Get warehouse data\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @returns warehouse data\n */\n getWarehouse(divisionName: string, cityName: string): Warehouse;\n /**\n * Get product data\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @returns product data\n */\n getProduct(divisionName: string, productName: string): Product;\n /**\n * Get material data\n * @param divisionName - Name of the division\n * @param materialName - Name of the material\n * @returns material data\n */\n getMaterial(divisionName: string, cityName: string, materialName: string): Material;\n /**\n * Set market TA 1 for a material.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA1(divisionName: string, cityName: string, materialName: string, on: boolean): void;\n /**\n * Set market TA 2 for a material.\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param materialName - Name of the material\n * @param on - market ta enabled\n */\n setMaterialMarketTA2(divisionName: string, cityName: string, materialName: string, on: boolean): void;\n /**\n * Set market TA 1 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled\n */\n setProductMarketTA1(divisionName: string, productName: string, on: boolean): void;\n /**\n * Set market TA 2 for a product.\n * @param divisionName - Name of the division\n * @param productName - Name of the product\n * @param on - market ta enabled\n */\n setProductMarketTA2(divisionName: string, productName: string, on: boolean): void;\n /**\n * Set material export data\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n * @param amt - Amount of material to export.\n */\n exportMaterial(\n sourceDivision: string,\n sourceCity: string,\n targetDivision: string,\n targetCity: string,\n materialName: string,\n amt: number,\n ): void;\n /**\n * Cancel material export\n * @param sourceDivision - Source division\n * @param sourceCity - Source city\n * @param targetDivision - Target division\n * @param targetCity - Target city\n * @param materialName - Name of the material\n * @param amt - Amount of material to export.\n */\n cancelExportMaterial(\n sourceDivision: string,\n sourceCity: string,\n targetDivision: string,\n targetCity: string,\n materialName: string,\n amt: number,\n ): void;\n /**\n * Purchase warehouse for a new city\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n */\n purchaseWarehouse(divisionName: string, cityName: string): void;\n /**\n * Upgrade warehouse\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n */\n upgradeWarehouse(divisionName: string, cityName: string): void;\n /**\n * Create a new product\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n * @param productName - Name of the product\n * @param designInvest - Amount to invest for the design of the product.\n * @param marketingInvest - Amount to invest for the marketing of the product.\n */\n makeProduct(\n divisionName: string,\n cityName: string,\n productName: string,\n designInvest: number,\n marketingInvest: number,\n ): void;\n}\n\n/**\n * Corporation API\n * @public\n */\nexport interface Corporation extends WarehouseAPI, OfficeAPI {\n /**\n * Get corporation data\n * @returns Corporation data\n */\n getCorporation(): CorporationInfo;\n /**\n * Get division data\n * @param divisionName - Name of the division\n * @returns Division data\n */\n getDivision(divisionName: string): Division;\n /**\n * Expand to a new industry\n * @param industryType - Name of the industry\n * @param divisionName - Name of the division\n */\n expandIndustry(industryType: string, divisionName: string): void;\n /**\n * Expand to a new city\n * @param divisionName - Name of the division\n * @param cityName - Name of the city\n */\n expandCity(divisionName: string, cityName: string): void;\n /**\n * Unlock an upgrade.\n * @param upgradeName - Name of the upgrade\n */\n unlockUpgrade(upgradeName: string): void;\n /**\n * Level an upgrade.\n * @param upgradeName - Name of the upgrade\n */\n levelUpgrade(upgradeName: string): void;\n /**\n * Issue dividends\n * @param percent - Percent of profit to issue as dividends.\n */\n issueDividends(percent: number): void;\n}\n\n/**\n * General info about a corporation\n * @public\n */\ninterface CorporationInfo {\n /** Name of the corporation */\n name: string;\n /** Funds available */\n funds: number;\n /** Revenue per second this cycle */\n revenue: number;\n /** Expenses per second this cycle */\n expenses: number;\n /** Indicating if the company is public */\n public: boolean;\n /** Total number of shares issues by this corporation */\n totalShares: number;\n /** Amount of share owned */\n numShares: number;\n /** Cooldown until shares can be sold again */\n shareSaleCooldown: number;\n /** Amount of shares issued */\n issuedShares: number;\n /** Price of the shares */\n sharePrice: number;\n /** State of the corporation. Possible states are START, PURCHASE, PRODUCTION, SALE, EXPORT. */\n state: string;\n}\n\n/**\n * Employee in an office\n * @public\n */\ninterface Employee {\n /** Name of the employee */\n name: string;\n /** Morale */\n mor: number;\n /** Happiness */\n hap: number;\n /** Energy */\n ene: number;\n int: number;\n cha: number;\n exp: number;\n cre: number;\n eff: number;\n /** Salary */\n sal: number;\n /** City */\n loc: string;\n /** Current job */\n pos: string;\n}\n\n/**\n * Product in a warehouse\n * @public\n */\ninterface Product {\n /** Name of the product */\n name: string;\n /** Demand for the product */\n dmd: number;\n /** Competition for the product */\n cmp: number;\n /** Production cost */\n pCost: number;\n /** Sell cost, can be "MP+5" */\n sCost: string | number;\n}\n\n/**\n * Material in a warehouse\n * @public\n */\ninterface Material {\n /** Name of the material */\n name: string;\n /** Amount of material */\n qty: number;\n /** Quality of the material */\n qlt: number;\n}\n\n/**\n * Warehouse for a division in a city\n * @public\n */\ninterface Warehouse {\n /** Amount of size upgrade bought */\n level: number;\n /** City in which the warehouse is located */\n loc: string;\n /** Total space in the warehouse */\n size: number;\n /** Used space in the warehouse */\n sizeUsed: number;\n}\n\n/**\n * Office for a division in a city.\n * @public\n */\ninterface Office {\n /** City of the office */\n loc: string;\n /** Maximum number of employee */\n size: number;\n /** Minimum amount of energy of the employees */\n minEne: number;\n /** Maximum amount of energy of the employees */\n maxEne: number;\n /** Minimum happiness of the employees */\n minHap: number;\n /** Maximum happiness of the employees */\n maxHap: number;\n /** Maximum morale of the employees */\n maxMor: number;\n /** Name of all the employees */\n employees: string[];\n /** Positions of the employees */\n employeeProd: EmployeeJobs;\n}\n\n/**\n * Object representing the number of employee in each job.\n * @public\n */\ninterface EmployeeJobs {\n Operations: number;\n Engineer: number;\n Business: number;\n Management: number;\n "Research & Development": number;\n Training: number;\n Unassigned: number;\n}\n\n/**\n * Corporation division\n * @public\n */\ninterface Division {\n /** Name of the division */\n name: string;\n /** Type of division, like Aggriculture */\n type: string;\n /** Awareness of the division */\n awareness: number;\n /** Popularity of the division */\n popularity: number;\n /** Production multiplier */\n prodMult: number;\n /** Amount of research in that division */\n research: number;\n /** Revenue last cycle */\n lastCycleRevenue: number;\n /** Expenses last cycle */\n lastCycleExpenses: number;\n /** Revenue this cycle */\n thisCycleRevenue: number;\n /** Expenses this cycle */\n thisCycleExpenses: number;\n /** All research bought */\n upgrades: number[];\n /** Cities in which this division has expanded */\n cities: string[];\n}\n\n/**\n * Interface Theme\n * @internal\n */\ninterface UserInterfaceTheme {\n [key: string]: string | undefined;\n primarylight: string;\n primary: string;\n primarydark: string;\n successlight: string;\n success: string;\n successdark: string;\n errorlight: string;\n error: string;\n errordark: string;\n secondarylight: string;\n secondary: string;\n secondarydark: string;\n warninglight: string;\n warning: string;\n warningdark: string;\n infolight: string;\n info: string;\n infodark: string;\n welllight: string;\n well: string;\n white: string;\n black: string;\n hp: string;\n money: string;\n hack: string;\n combat: string;\n cha: string;\n int: string;\n rep: string;\n disabled: string;\n backgroundprimary: string;\n backgroundsecondary: string;\n button: string;\n}\n\n/**\n * Interface Styles\n * @internal\n */\ninterface IStyleSettings {\n fontFamily: string;\n lineHeight: number;\n}\n'},,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(673),r=a(0),i=a(1),o=a(25);function s(e){const t=function(e,t){let a=-1;for(let n=0;n<t.length;n++)t[n].fulfilled(e)&&(a=n);return a}(e.player,n.a),a=n.a.map((a,n)=>{if(n<=t+1)return r.createElement(i.a,{key:n},"[",a.fulfilled(e.player)?"x":" ","] ",a.title)});return r.createElement(r.Fragment,null,r.createElement(i.a,{variant:"h4"},"Milestones"),r.createElement(o.a,{mx:2},r.createElement(i.a,null,"Milestones don't reward you for completing them. They are here to guide you if you're lost. They will reset when you install Augmentations."),r.createElement("br",null),r.createElement(i.a,null,"Completing fl1ght.exe"),a))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var n=a(0),r=a.n(n),i=a(1),o=a(285),s=a(64),l=a(118),c=a(111),u=a(134),m=a(25),h=a(236),d=a(1126),p=a(304),f=a(528),g=a(513),y=a(241),b=a.n(y);function E({terminal:e}){return r.a.createElement(i.a,{color:"primary",paragraph:!1},e.getProgressText())}const k=Object(c.a)(e=>Object(u.a)({nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"},success:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.colors.success},error:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.error.main},primary:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.primary.main},info:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.info.main},warning:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:e.spacing(0),color:e.palette.warning.main}}));function v({terminal:e,router:t,player:a}){const c=Object(n.useRef)(null),u=Object(n.useState)(0)[1],[y,v]=Object(n.useState)(0);function _(){const e=c.current;if(null!==e)return window.setTimeout(()=>e.scrollIntoView(!0),50)}Object(n.useEffect)(()=>{const e=b.a.debounce(async()=>{u(e=>e+1)},25,{maxWait:50}),t=p.b.subscribe(e);return()=>{e.cancel(),t()}},[]),Object(n.useEffect)(()=>{const e=b.a.debounce(async()=>{v(e=>e+1)},25,{maxWait:50}),t=p.a.subscribe(e);return()=>{e.cancel(),t()}},[]),_(),Object(n.useEffect)(()=>{let e;const t=setTimeout(()=>{var t;e=null!==(t=_())&&void 0!==t?t:0},50);return()=>{clearTimeout(t),clearTimeout(e)}},[]);const w=k();return r.a.createElement(r.a.Fragment,null,r.a.createElement(m.a,{width:"100%",minHeight:"100vh",display:"flex",alignItems:"flex-end"},r.a.createElement(o.a,{key:y,id:"terminal",classes:{root:w.list}},e.outputHistory.map((t,n)=>{return t instanceof h.b?r.a.createElement(s.a,{key:n,classes:{root:w.nopadding}},r.a.createElement(i.a,{classes:{root:(o=t.color,"error"===o?w.error:"success"===o?w.success:"info"===o?w.info:"warn"===o?w.warning:w.primary)},paragraph:!1},t.text)):t instanceof h.c?r.a.createElement(s.a,{key:n,classes:{root:w.nopadding}},r.a.createElement(i.a,{classes:{root:w.preformatted},paragraph:!1},t.raw)):t instanceof h.a?r.a.createElement(s.a,{key:n,classes:{root:w.nopadding}},r.a.createElement(i.a,null,t.dashes,"> "),r.a.createElement(l.a,{classes:{root:w.preformatted},color:"secondary",paragraph:!1,onClick:()=>e.connectToServer(a,t.hostname)},r.a.createElement(i.a,null,t.hostname))):void 0;var o}),null!==e.action&&r.a.createElement(s.a,{classes:{root:w.nopadding}},r.a.createElement(E,{terminal:e})," ")),r.a.createElement("div",{ref:c})),r.a.createElement(m.a,{position:"sticky",bottom:0,width:"100%",px:0},r.a.createElement(d.a,{player:a,router:t,terminal:e})),r.a.createElement(f.b,null),r.a.createElement(g.b,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(1),o=a(111),s=a(134),l=a(85),c=a(28),u=a(96),m=a(1127),h=a(1130),d=a(11);const p=Object(o.a)(e=>Object(s.a)({textfield:{margin:e.spacing(0)},input:{backgroundColor:e.colors.backgroundprimary},nopadding:{padding:e.spacing(0)},preformatted:{whiteSpace:"pre-wrap",margin:e.spacing(0)},list:{padding:e.spacing(0),height:"100%"}}));let f="";function g({terminal:e,router:t,player:a}){const o=Object(n.useRef)(null),[s,g]=Object(n.useState)(f),[y,b]=Object(n.useState)(),[E,k]=Object(n.useState)([]),v=p();function _(e,t){f=e,g(e),t&&b({postUpdate:t})}function w(e){const t=o.current;if(!t)return;const a=s.length,n=t.selectionStart;if(null===n)return;const r=t.value;switch(e.toLowerCase()){case"backspace":n>0&&n<=a+1&&_(r.substr(0,n-1)+r.substr(n));break;case"deletewordbefore":for(let e=n-1;e>-2;--e)if((" "===r.charAt(e)||-1===e)&&e!==n-1)return void _(r.substr(0,e+1)+r.substr(n),()=>{const t=o.current;null==t||t.setSelectionRange(e+1,e+1)});break;case"deletewordafter":for(let e=n+1;e<=s.length+1;++e)if(" "===r.charAt(e)||e===s.length+1)return void _(r.substr(0,n)+r.substr(e+1),()=>{const e=o.current;null==e||e.setSelectionRange(n,n)});break;case"clearafter":_(r.substr(0,n));break;case"clearbefore":_(r.substr(n),()=>S("home"))}}function S(e){const t=o.current;if(!t)return;const a=s.length,n=t.selectionStart;if(null!==n)switch(e.toLowerCase()){case"home":t.setSelectionRange(0,0);break;case"end":t.setSelectionRange(a,a);break;case"prevchar":n>0&&t.setSelectionRange(n-1,n-1);break;case"prevword":for(let e=n-2;e>=0;--e)if(" "===t.value.charAt(e))return void t.setSelectionRange(e+1,e+1);t.setSelectionRange(0,0);break;case"nextchar":t.setSelectionRange(n+1,n+1);break;case"nextword":for(let e=n+1;e<=a;++e)if(" "===t.value.charAt(e))return void t.setSelectionRange(e,e);t.setSelectionRange(a,a);break;default:console.warn("Invalid loc argument in Terminal.moveTextCursor()")}}return Object(n.useEffect)(()=>{null!=y&&y.postUpdate&&(y.postUpdate(),b(null))},[y]),Object(n.useEffect)(()=>{function n(n){if(e.contractOpen)return;if(null!==e.action&&n.keyCode===u.a.C&&n.ctrlKey)return void e.finishAction(t,a,!0);const r=o.current;n.ctrlKey||n.metaKey||n.keyCode===u.a.C&&(n.ctrlKey||n.metaKey)||r&&r.focus()}return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)}),r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{title:E.length>0?r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{classes:{root:v.preformatted},color:"primary",paragraph:!1},"Possible autocomplete candidate:"),r.a.createElement(i.a,{classes:{root:v.preformatted},color:"primary",paragraph:!1},E.join(" "))):""},r.a.createElement(l.a,{fullWidth:!0,color:null===e.action?"primary":"secondary",autoFocus:!0,disabled:null!==e.action,autoComplete:"off",value:s,classes:{root:v.textfield},onChange:function(e){_(e.target.value),k([])},inputRef:o,InputProps:{id:"terminal-input",className:v.input,startAdornment:r.a.createElement(i.a,{color:null===e.action?"primary":"secondary",flexShrink:0},"[",a.getCurrentServer().hostname," ~",e.cwd(),"]> "),spellCheck:!1,onKeyDown:async function(n){if(n.keyCode===u.a.ENTER&&""!==s)return n.preventDefault(),e.print(`[${a.getCurrentServer().hostname} ~${e.cwd()}]> ${s}`),e.executeCommands(t,a,s),void _("");if(n.keyCode===u.a.TAB&&""!==s){n.preventDefault();let t=s;const r=t.lastIndexOf(";");-1!==r&&(t=t.slice(r+1)),t=t.trim(),t=t.replace(/\s\s+/g," ");const i=t.split(" ");let o=i.length-2;o<-1&&(o=0);const l=await Object(m.a)(a,t,o,e.cwd());if(0==l.length)return;let c="",u="";if(0==i.length)return;1==i.length?u=i[0]:2==i.length?(u=i[0],c=i[1]):3==i.length?(u=i[0]+" "+i[1],c=i[2]):(c=i.pop()+"",u=i.join(" "));let d=Object(h.a)(u,c,l,s);"string"==typeof d&&""!==d&&(d.endsWith(" ")||d.endsWith("/")||1!==l.length||(d+=" "),_(d)),Array.isArray(d)&&k(d)}if(n.keyCode===u.a.L&&n.ctrlKey&&(n.preventDefault(),e.clear()),n.keyCode===u.a.UPARROW||d.a.EnableBashHotkeys&&n.keyCode===u.a.P&&n.ctrlKey){d.a.EnableBashHotkeys&&n.preventDefault();const t=e.commandHistoryIndex,a=e.commandHistory.length;if(0==a)return;(t<0||t>a)&&(e.commandHistoryIndex=a),0!=t&&--e.commandHistoryIndex;_(e.commandHistory[e.commandHistoryIndex]);const r=o.current;r&&setTimeout((function(){r.selectionStart=r.selectionEnd=1e4}),10)}if(n.keyCode===u.a.DOWNARROW||d.a.EnableBashHotkeys&&n.keyCode===u.a.M&&n.ctrlKey){d.a.EnableBashHotkeys&&n.preventDefault();const t=e.commandHistoryIndex,a=e.commandHistory.length;if(0==a)return;if((t<0||t>a)&&(e.commandHistoryIndex=a),t==a||t==a-1)e.commandHistoryIndex=a,_("");else{++e.commandHistoryIndex;_(e.commandHistory[e.commandHistoryIndex])}}d.a.EnableBashHotkeys&&(n.keyCode===u.a.A&&n.ctrlKey&&(n.preventDefault(),S("home")),n.keyCode===u.a.E&&n.ctrlKey&&(n.preventDefault(),S("end")),n.keyCode===u.a.B&&n.ctrlKey&&(n.preventDefault(),S("prevchar")),n.keyCode===u.a.B&&n.altKey&&(n.preventDefault(),S("prevword")),n.keyCode===u.a.F&&n.ctrlKey&&(n.preventDefault(),S("nextchar")),n.keyCode===u.a.F&&n.altKey&&(n.preventDefault(),S("nextword")),n.keyCode!==u.a.H&&n.keyCode!==u.a.D||!n.ctrlKey||(w("backspace"),n.preventDefault()),n.keyCode===u.a.W&&n.ctrlKey&&(n.preventDefault(),w("deletewordbefore")),n.keyCode===u.a.D&&n.altKey&&(n.preventDefault(),w("deletewordafter")),n.keyCode===u.a.U&&n.ctrlKey&&(n.preventDefault(),w("clearbefore")),n.keyCode===u.a.K&&n.ctrlKey&&(n.preventDefault(),w("clearafter")))}}})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(78),r=a(1128),i=a(144),o=a(267),s=a(24),l=a(437),c=a(480),u=a(91),m=a(573),h=a(574),d=a(342);const p=["alias","analyze","backdoor","cat","cd","check","clear","cls","connect","cp","download","expr","free","grow","hack","help","home","hostname","ifconfig","kill","killall","ls","lscpu","mem","mv","nano","ps","rm","run","scan-analyze","scan","scp","sudov","tail","theme","top","vim","weaken"];async function f(e,t,a,f=""){t=Object(i.h)(t);let g=[];g=g.concat(Object.keys(i.b));const y=e.getCurrentServer(),b=e.getHomeComputer();let E="",k=null;function v(){for(const e of y.contracts)g.push(e.fn)}function _(){for(const e of y.messages)e.endsWith(".msg")||g.push(e)}function w(){for(const e of b.programs)g.push(e)}function S(){for(const e of y.scripts){const t=O(e.filename);t&&g.push(t)}}function C(){for(const e of y.textFiles){const t=O(e.fn);t&&g.push(t)}}function x(){const e=Object(r.a)(y,null==k?"/":k);for(let t=0;t<e.length;++t){const a=O(null==k?e[t]:k+e[t]);null!=a&&(e[t]=a)}g=g.concat(e)}function O(e){if(!k){if(""!==E){let t=E;return t.endsWith("/")||(t+="/"),E+e}return e}return e.startsWith(k)?function(e){return null==E||null==k?(console.warn("convertParentPath() called when paths are null"),e):e.startsWith(k)?E+e.slice(k.length):(console.warn(`convertParentPath() called for invalid path. (filepath=${e}) (evaledParentDirPath=${k})`),e)}(e):null}function M(e){let a=e;return a.endsWith(" ")||(a+=" "),t.startsWith(a)}if(-1===a&&!t.startsWith("./"))return p.concat(Object.keys(i.a)).concat(Object.keys(i.b));const T=t.split(" ");if(0===T.length)return console.warn("Tab autocompletion logic reached invalid branch"),g;const R=T[T.length-1];if(E=Object(n.e)(R),k=Object(n.c)(E,f),"/"===k)k=null;else{if(null==k)return g;k+="/"}if(M("buy")){const e=[];for(const t in o.a){const a=o.a[t];e.push(a.program)}return e.concat(Object.keys(i.b))}if(M("scp")&&1===a){for(const e of Object(s.c)())g.push(e.hostname);return g}if(M("scp")&&0===a)return S(),_(),C(),x(),g;if(M("cp")&&0===a)return S(),C(),x(),g;if(M("connect")){for(let e=0;e<y.serversOnNetwork.length;++e){const t=Object(s.d)(y.serversOnNetwork[e]);null!=t&&g.push(t.hostname)}return g}if(M("nano")||M("vim"))return S(),C(),x(),g;if(M("rm"))return S(),w(),_(),C(),v(),x(),g;const A=await async function(){if(!(M("run")||M("tail")||M("kill")||t.startsWith("./")))return;let a=t;t.startsWith("./")&&(a="run "+t.slice(2));const n=Object(l.b)(a);if(0===n.length)return;const r=Object(l.a)(n[n.length-1]),i=r[1]+"";if(!Object(u.a)(i))return;if(i.endsWith(".script"))return;const o=y.scripts.find(e=>{const t=i.replace(/^\.\//g,"");return O(e.filename)===t||e.filename==="/"+t});if(!o)return;o.module||await Object(m.a)(e,o,y.scripts);const c=await o.module;if(!c.autocomplete)return;const p={"--tail":Boolean,"-t":Number},f=d(p,{permissive:!0,argv:r.slice(2)}),g=Object(h.a)(f._);let b=[],E=[];return b=b.concat(c.autocomplete({servers:Object(s.c)().map(e=>e.hostname),scripts:y.scripts.map(e=>e.filename),txts:y.textFiles.map(e=>e.fn),flags:e=>{E=e.map(e=>1===e[0].length?"-"+e[0]:"--"+e[0]);try{return g(e)}catch(e){return}}},f._)),b.concat(E)}();if(A)return A;if(t.startsWith("./")){for(const e of y.scripts){const t=O(e.filename);t&&g.push(t)}for(const e of y.programs){const t=O(e);t&&g.push(t)}for(const e of y.contracts){const t=O(e.fn);t&&g.push(t)}return g}return M("run")&&(S(),w(),v(),x()),M("kill")||M("tail")||M("mem")||M("check")?(S(),x(),g):M("cat")?(function(){for(const e of y.messages)e.endsWith(".msg")&&g.push(e)}(),_(),C(),x(),S(),g):M("download")||M("mv")?(S(),C(),x(),g):M("cd")?(x(),g):(M("ls")&&0===a&&x(),M("help")?Object.keys(c.a):g)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(78);function r(e,t){const a=[];if(!Object(n.i)(t))return a;let r=t;function i(e){if("/"===r&&Object(n.h)(e)){const t=Object(n.g)(e);"/"===t||a.includes(t)||a.push(t)}else if(e.startsWith(r)){const t=e.slice(r.length),i=Object(n.g)(t);"/"===i||a.includes(i)||a.push(i)}}r.endsWith("/")||(r+="/");for(const t of e.scripts)i(t.filename);for(const t of e.textFiles)i(t.fn);return a}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t){this.filename=e,this.url=t}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(22);function r(e,t,a,r){if(a.constructor!==Array)return;if(!Object(n.a)(a))return;if(""===t)for(let t=a.length-1;t>=0;--t)a[t].toLowerCase().startsWith(e.toLowerCase())||a.splice(t,1);else for(let e=a.length-1;e>=0;--e)a[e].toLowerCase().startsWith(t.toLowerCase())||a.splice(e,1);const i=r.lastIndexOf(";");let o="";if(0!==a.length){if(1===a.length)return o=""===t?a[0]:e+" "+a[0],-1===i?o:r.slice(0,i+1)+" "+o;{const o=Object(n.e)(a);return""===t?o===e?a:-1===i?o:`${r.slice(0,i+1)} ${o}`:o===t?a:-1==i?`${e} ${o}`:`${r.slice(0,i+1)} ${e} ${o}`}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(1),o=a(118),s=a(25),l=a(10),c=a(350);function u(e){const[t,a]=Object(n.useState)(!1);return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{variant:"h4"},"Tutorial / Documentation"),r.a.createElement(s.a,{m:2},r.a.createElement(l.a,{onClick:()=>a(!0)},"Soft reset and Restart tutorial"),r.a.createElement(c.a,{open:t,onClose:()=>a(!1),onConfirm:e.reactivateTutorial,confirmationText:"This will reset all your stats to 1 and money to 1k. Are you sure?"}),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/guidesandtips/gettingstartedguideforbeginnerprogrammers.html"},r.a.createElement(i.a,null,"Getting Started")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/servers.html"},r.a.createElement(i.a,null,"Servers & Networking")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/hacking.html"},r.a.createElement(i.a,null,"Hacking")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/scripts.html"},r.a.createElement(i.a,null,"Scripts")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/netscript.html"},r.a.createElement(i.a,null,"Netscript Programming Language")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/world.html"},r.a.createElement(i.a,null,"Traveling")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/companies.html"},r.a.createElement(i.a,null,"Companies")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/infiltration.html"},r.a.createElement(i.a,null,"Infiltration")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/factions.html"},r.a.createElement(i.a,null,"Factions")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/augmentations.html"},r.a.createElement(i.a,null,"Augmentations")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/shortcuts.html"},r.a.createElement(i.a,null,"Keyboard Shortcuts")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/netscript/netscriptlearntoprogram.html#netscript-1-0-vs-netscript-2-0"},r.a.createElement(i.a,null,"NS1 vs NS2 (or .script vs .js)")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://bitburner.readthedocs.io/en/latest/netscript/netscriptfunctions.html"},r.a.createElement(i.a,null,"Simplified list of functions")),r.a.createElement("br",null),r.a.createElement(o.a,{color:"primary",target:"_blank",href:"https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.ns.md"},r.a.createElement(i.a,null,"Complete list of functions"))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(496),o=a(238),s=a(1133),l=a(1143);function c(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]);const[c,u]=Object(n.useState)("active");return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{variant:"fullWidth",value:c,onChange:function(e,t){u(t)}},r.a.createElement(o.a,{label:"Active",value:"active"}),r.a.createElement(o.a,{label:"Recent",value:"recent"})),"active"===c&&r.a.createElement(s.a,{workerScripts:e.workerScripts}),"recent"===c&&r.a.createElement(l.a,null))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(1134),o=a(1135),s=a(1);function l(e){return r.a.createElement(r.a.Fragment,null,r.a.createElement(s.a,null,"This page displays a list of all of your scripts that are currently running across every machine. It also provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running."),r.a.createElement(i.a,null),r.a.createElement(o.a,e))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a(16),i=a(102),o=a(29),s=a(1),l=a(111),c=a(134),u=a(249),m=a(174),h=a(49),d=a(54);const p=Object(l.a)(e=>Object(c.a)({cell:{borderBottom:"none",padding:e.spacing(1),margin:e.spacing(1),whiteSpace:"nowrap"},size:{width:"1px"}}));function f(){const e=o.b.Player(),t=p(),a=e.scriptProdSinceLastAug/(e.playtimeSinceLastAug/1e3);return n.createElement(u.a,{size:"small",classes:{root:t.size}},n.createElement(m.a,null,n.createElement(d.a,null,n.createElement(h.a,{component:"th",scope:"row",classes:{root:t.cell}},n.createElement(s.a,{variant:"body2"},"Total production since last Augment Installation:")),n.createElement(h.a,{align:"left",classes:{root:t.cell}},n.createElement(s.a,{variant:"body2"},n.createElement(r.a,{money:e.scriptProdSinceLastAug}))),n.createElement(h.a,{align:"left",classes:{root:t.cell}},n.createElement(s.a,{variant:"body2"},"(",n.createElement(i.a,{money:a}),")")))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a.n(n),i=a(1136),o=a(85),s=a(285),l=a(1266),c=a(275),u=a(24),m=a(11),h=a(576),d=a(1142),p=a.n(d);function f(e){const[t,a]=Object(n.useState)(""),[d,f]=Object(n.useState)(0),[g,y]=Object(n.useState)(m.a.ActiveScriptsServerPageSize),b=Object(n.useState)(!1)[1];const E={};for(const t of e.workerScripts.values()){const e=Object(u.d)(t.hostname);if(null==e){console.warn("WorkerScript has invalid IP address: "+t.hostname);continue}let a=E[e.hostname];void 0===a&&(E[e.hostname]={server:e,workerScripts:[]},a=E[e.hostname]),void 0!==a&&a.workerScripts.push(t)}const k=Object.values(E).filter(e=>e&&(e.server.hostname.includes(t)||e.server.runningScripts.find(e=>e.filename.includes(t))));function v(){b(e=>!e)}return Object(n.useEffect)(()=>c.a.subscribe(v)),r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{value:t,onChange:function(e){a(e.target.value),f(0)},autoFocus:!0,InputProps:{startAdornment:r.a.createElement(p.a,null),spellCheck:!1}}),r.a.createElement(s.a,{dense:!0},k.slice(d*g,d*g+g).map(e=>e&&r.a.createElement(i.a,{key:e.server.hostname,server:e.server,workerScripts:e.workerScripts}))),r.a.createElement(l.a,{rowsPerPageOptions:[10,15,20,100],component:"div",count:k.length,rowsPerPage:g,page:d,onPageChange:(e,t)=>{f(t)},onRowsPerPageChange:e=>{m.a.ActiveScriptsServerPageSize=parseInt(e.target.value,10),y(parseInt(e.target.value,10)),f(0)},ActionsComponent:h.a}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a(1),i=a(310),o=a(100),s=a(75),l=a(25),c=a(200),u=a(66),m=a.n(u),h=a(137),d=a.n(h),p=a(1137),f=a(175);function g(e){const[t,a]=n.useState(!1),u=e.server,h=`${u.hostname}${" ".repeat(18)}`.slice(0,Math.max(u.hostname.length,18)),g={progress:u.ramUsed/u.maxRam,totalTicks:30},y=`${h} ${Object(f.a)(g)}`;return n.createElement(l.a,{component:s.a},n.createElement(i.a,{onClick:()=>a(e=>!e)},n.createElement(o.a,{primary:n.createElement(r.a,{style:{whiteSpace:"pre-wrap"}},y)}),t?n.createElement(d.a,{color:"primary"}):n.createElement(m.a,{color:"primary"})),n.createElement(l.a,{mx:2},n.createElement(c.a,{in:t,timeout:0,unmountOnExit:!0},n.createElement(p.a,{workerScripts:e.workerScripts}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(1138),o=a(285),s=a(1266),l=a(576),c=a(11);function u(e){const[t,a]=Object(n.useState)(0),[u,m]=Object(n.useState)(c.a.ActiveScriptsScriptPageSize);return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{dense:!0,disablePadding:!0},e.workerScripts.slice(t*u,t*u+u).map(e=>r.a.createElement(i.a,{key:`${e.name}_${e.args}`,workerScript:e}))),r.a.createElement(s.a,{rowsPerPageOptions:[10,15,20,100],component:"div",count:e.workerScripts.length,rowsPerPage:u,page:t,onPageChange:(e,t)=>{a(t)},onRowsPerPageChange:e=>{c.a.ActiveScriptsScriptPageSize=parseInt(e.target.value,10),m(parseInt(e.target.value,10)),a(0)},ActionsComponent:l.a}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return N}));var n=a(0),r=a(4),i=a(249),o=a(49),s=a(54),l=a(174),c=a(10),u=a(25),m=a(75),h=a(1),d=a(101),p=a(1139),f=a.n(p),g=a(310),y=a(100),b=a(111),E=a(200),k=a(137),v=a.n(k),_=a(66),w=a.n(_),S=a(132),C=a(15),x=a(167),O=a(22),M=a(243),T=a(16),R=a(102);const A=Object(b.a)({noborder:{borderBottom:"none"}});function N(e){const t=A(),[a,p]=n.useState(!1),b=e.workerScript.scriptRef;const k=S.a.bind(null,b,b.server);const _=b.onlineMoneyMade/b.onlineRunningTime,N=b.onlineExpGained/b.onlineRunningTime;return n.createElement(n.Fragment,null,n.createElement(g.a,{onClick:()=>p(e=>!e),component:m.a},n.createElement(y.a,{primary:n.createElement(h.a,null,"└ ",e.workerScript.name," ",JSON.stringify(e.workerScript.args))}),a?n.createElement(v.a,{color:"primary"}):n.createElement(w.a,{color:"primary"})),n.createElement(E.a,{in:a,timeout:0,unmountOnExit:!0},n.createElement(u.a,{mx:6},n.createElement(i.a,{padding:"none",size:"small"},n.createElement(l.a,null,n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Threads:")),n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,r.a.formatThreads(e.workerScript.scriptRef.threads)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:2},n.createElement(h.a,null,"└ Args: ",Object(M.a)(e.workerScript.args)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Online Time:")),n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,Object(O.b)(1e3*b.onlineRunningTime)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Offline Time:")),n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,Object(O.b)(1e3*b.offlineRunningTime)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Total online production:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null,n.createElement(T.a,{money:b.onlineMoneyMade})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null," ",r.a.formatExp(b.onlineExpGained)+" hacking exp"))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Online production rate:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null,n.createElement(R.a,{money:_})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null," ",r.a.formatExp(N)+" hacking exp / sec"))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(h.a,null,"└ Total offline production:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null,n.createElement(T.a,{money:b.offlineMoneyMade})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(h.a,null," ",r.a.formatExp(b.offlineExpGained)+" hacking exp"))))),n.createElement(c.a,{onClick:function(){x.b.emit(b)}},"LOG"),n.createElement(d.a,{onClick:function(){k(),Object(C.a)("Killing script")}},n.createElement(f.a,{color:"error"})))))}},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(1),o=a(534),s=a(1144);function l(){return r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,"List of all recently killed scripts."),o.b.map(e=>r.a.createElement(s.a,{key:e.pid,recentScript:e})))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return O}));var n=a(0),r=a(4),i=a(249),o=a(49),s=a(54),l=a(174),c=a(25),u=a(75),m=a(1),h=a(10),d=a(310),p=a(100),f=a(111),g=a(200),y=a(137),b=a.n(y),E=a(66),k=a.n(E),v=a(22),_=a(243),w=a(16),S=a(102),C=a(167);const x=Object(f.a)({noborder:{borderBottom:"none"}});function O(e){const t=x(),[a,f]=n.useState(!1),y=e.recentScript,E=y.runningScript.onlineMoneyMade/y.runningScript.onlineRunningTime,O=y.runningScript.onlineExpGained/y.runningScript.onlineRunningTime;return n.createElement(n.Fragment,null,n.createElement(d.a,{onClick:()=>f(e=>!e),component:u.a},n.createElement(p.a,{primary:n.createElement(m.a,null,"└ ",y.filename," (died"," ",Object(v.b)((new Date).getTime()-y.timestamp.getTime())," ago)")}),a?n.createElement(b.a,{color:"primary"}):n.createElement(k.a,{color:"primary"})),n.createElement(g.a,{in:a,timeout:0,unmountOnExit:!0},n.createElement(c.a,{mx:6},n.createElement(i.a,{padding:"none",size:"small"},n.createElement(l.a,null,n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Threads:")),n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,r.a.formatThreads(y.runningScript.threads)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:2},n.createElement(m.a,null,"└ Args: ",Object(_.a)(y.args)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Online Time:")),n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,Object(v.b)(1e3*y.runningScript.onlineRunningTime)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Offline Time:")),n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,Object(v.b)(1e3*y.runningScript.offlineRunningTime)))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Total online production:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null,n.createElement(w.a,{money:y.runningScript.onlineMoneyMade})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null," ",r.a.formatExp(y.runningScript.onlineExpGained)+" hacking exp"))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Online production rate:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null,n.createElement(S.a,{money:E})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null," ",r.a.formatExp(O)+" hacking exp / sec"))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder},n.createElement(m.a,null,"└ Total offline production:")),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null,n.createElement(w.a,{money:y.runningScript.offlineMoneyMade})))),n.createElement(s.a,null,n.createElement(o.a,{className:t.noborder,colSpan:1}),n.createElement(o.a,{className:t.noborder,align:"left"},n.createElement(m.a,null," ",r.a.formatExp(y.runningScript.offlineExpGained)+" hacking exp"))))),n.createElement(h.a,{onClick:function(){C.b.emit(y.runningScript)}},"LOG"))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return b}));var n=a(0),r=a.n(n),i=a(1146),o=a(1150),s=a(1151),l=a(398),c=a(8),u=a(5),m=a(29),h=a(1152),d=a(1),p=a(10),f=a(1153);const g=["Slum Snakes","Tetrads","The Syndicate","The Dark Army","Speakers for the Dead","NiteSec","The Black Hand"];function y({faction:e,rerender:t,onAugmentations:a}){const i=m.b.Player(),y=m.b.Router(),[b,E]=Object(n.useState)(!1),[k,v]=Object(n.useState)(!1),_=i,w=e.getInfo();function S(){i.startFocusing(),y.toWork()}const C=_.inGang()&&_.getGangName()===e.name,x=Math.floor(c.a.BaseFavorToDonate*u.a.RepToDonateToFaction),O=e.favor>=x,M="The Covenant"===e.name&&10===_.bitNodeN;let T=_.canAccessGang()&&g.includes(e.name);return _.inGang()&&(_.getGangName()!==e.name?T=!1:_.getGangName()===e.name&&(T=!0)),r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{onClick:()=>y.toFactions()},"Back"),r.a.createElement(d.a,{variant:"h4",color:"primary"},e.name),r.a.createElement(s.a,{faction:e,factionInfo:w}),T&&r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{buttonText:"Manage Gang",infoText:"Create and manage a gang for this Faction. Gangs will earn you money and faction reputation",onClick:function(){if(i.inGang())return y.toGang();v(!0)}}),r.a.createElement(h.a,{facName:e.name,open:k,onClose:()=>v(!1)})),!C&&w.offerHackingWork&&r.a.createElement(l.a,{buttonText:"Hacking Contracts",infoText:"Complete hacking contracts for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill. You will gain hacking exp.",onClick:()=>function(e){i.startFactionHackWork(e),S()}(e)}),!C&&w.offerFieldWork&&r.a.createElement(l.a,{buttonText:"Field Work",infoText:"Carry out field missions for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats. You will gain exp for all stats.",onClick:()=>function(e){i.startFactionFieldWork(e),S()}(e)}),!C&&w.offerSecurityWork&&r.a.createElement(l.a,{buttonText:"Security Work",infoText:"Serve in a security detail for your faction. Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats. You will gain exp for all combat stats.",onClick:()=>function(e){i.startFactionSecurityWork(e),S()}(e)}),!C&&w.offersWork()&&r.a.createElement(o.a,{faction:e,p:i,rerender:t,favorToDonate:x,disabled:!O}),r.a.createElement(l.a,{buttonText:"Purchase Augmentations",infoText:"As your reputation with this faction rises, you will unlock Augmentations, which you can purchase to enhance your abilities.",onClick:a}),M&&r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,{buttonText:"Purchase & Upgrade Duplicate Sleeves",infoText:"Purchase Duplicate Sleeves and upgrades. These are permanent!",onClick:()=>E(!0)}),r.a.createElement(f.a,{open:b,onClose:()=>E(!1)})))}function b(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]);const o=e.faction,[s,l]=Object(n.useState)(!1);return s?r.a.createElement(i.a,{faction:o,routeToMainPage:()=>l(!1)}):r.a.createElement(y,{rerender:a,faction:o,onAugmentations:()=>l(!0)})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return _}));var n=a(0),r=a.n(n),i=a(1147),o=a(20),s=a(6),l=a(194),c=a(11),u=a(120),m=a(29),h=a(106),d=a(301),p=a(4),f=a(25),g=a(10),y=a(1),b=a(28),E=a(174),k=a(249),v=a(8);function _(e){const t=m.b.Player(),a=t.inGang()&&t.getGangName()===e.faction.name,_=Object(n.useState)(!1)[1];function w(){_(e=>!e)}function S(){if(a){const e=[];for(const a in o.a){if(a===s.a.NeuroFluxGovernor)continue;if(a===s.a.TheRedPill&&2!==t.bitNodeN)continue;o.a[a].isSpecial||e.push(a)}return e}return e.faction.augmentations.slice()}function C(e){c.a.PurchaseAugmentationsOrder=e,w()}const x=function(){switch(c.a.PurchaseAugmentationsOrder){case l.b.Cost:return function(){const e=S();return e.sort((e,t)=>{const a=o.a[e],n=o.a[t];if(null==a||null==n)throw new Error("Invalid Augmentation Names");return a.baseCost-n.baseCost}),e}();case l.b.Reputation:return function(){const e=S();return e.sort((e,t)=>{const a=o.a[e],n=o.a[t];if(null==a||null==n)throw new Error("Invalid Augmentation Names");return a.baseRepRequirement-n.baseRepRequirement}),e}();case l.b.Purchasable:return function(){const a=S();function n(a){const n=o.a[a],r=n.baseRepRequirement*e.faction.getInfo().augmentationRepRequirementMult,i=e.faction.playerReputation>=r,s=Object(u.b)(n);return 0!==n.baseCost&&t.money>n.baseCost*e.faction.getInfo().augmentationPriceMult&&i&&s}const r=a.filter(n).sort((e,t)=>{const a=o.a[e],n=o.a[t];if(null==a||null==n)throw new Error("Invalid Augmentation Names");return a.baseCost-n.baseCost}),i=a.filter(e=>!n(e)).sort((e,t)=>{const a=o.a[e],n=o.a[t];if(null==a||null==n)throw new Error("Invalid Augmentation Names");return a.baseRepRequirement-n.baseRepRequirement});return r.concat(i)}();default:return S()}}(),O=x.filter(e=>e===s.a.NeuroFluxGovernor||!t.augmentations.some(t=>t.name===e)&&!t.queuedAugmentations.some(t=>t.name===e)),M=(a,n=!1)=>r.a.createElement(i.a,{augName:a,faction:e.faction,key:a,p:t,rerender:w,owned:n}),T=O.map(e=>M(e));let R=r.a.createElement(r.a.Fragment,null);const A=x.filter(e=>!O.includes(e));0!==A.length&&(R=r.a.createElement(r.a.Fragment,null,r.a.createElement("br",null),r.a.createElement(y.a,{variant:"h4"},"Purchased Augmentations"),r.a.createElement(y.a,null,"This faction also offers these augmentations but you already own them."),A.map(e=>M(e,!0))));const N=Math.pow(v.a.MultipleAugMultiplier*[1,.96,.94,.93][t.sourceFileLvl(11)],t.queuedAugmentations.length);return r.a.createElement(r.a.Fragment,null,r.a.createElement(g.a,{onClick:e.routeToMainPage},"Back"),r.a.createElement(y.a,{variant:"h4"},"Faction Augmentations"),r.a.createElement(y.a,null,"These are all of the Augmentations that are available to purchase from ",e.faction.name,". Augmentations are powerful upgrades that will enhance your abilities.",r.a.createElement("br",null),"Reputation: ",r.a.createElement(h.a,{reputation:e.faction.playerReputation})," Favor:"," ",r.a.createElement(d.a,{favor:Math.floor(e.faction.favor)})),r.a.createElement(f.a,{display:"flex"},r.a.createElement(b.a,{title:r.a.createElement(y.a,null,"The price of every Augmentation increases for every queued Augmentation and it is reset when you install them.")},r.a.createElement(y.a,null,"Price multiplier: x ",p.a.formatMultiplier(N)))),r.a.createElement(g.a,{onClick:()=>C(l.b.Cost)},"Sort by Cost"),r.a.createElement(g.a,{onClick:()=>C(l.b.Reputation)},"Sort by Reputation"),r.a.createElement(g.a,{onClick:()=>C(l.b.Default)},"Sort by Default Order"),r.a.createElement(g.a,{onClick:()=>C(l.b.Purchasable)},"Sort by Purchasable"),r.a.createElement("br",null),r.a.createElement(k.a,{size:"small",padding:"none"},r.a.createElement(E.a,null,T)),r.a.createElement(k.a,{size:"small",padding:"none"},r.a.createElement(E.a,null,R)))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return k}));var n=a(0),r=a.n(n),i=a(120),o=a(1148),s=a(20),l=a(6),c=a(11),u=a(16),m=a(106),h=a(1149),d=a(10),p=a(1),f=a(28),g=a(25),y=a(41),b=a(54);function E(e){const t=s.a[e.augName];return e.hasReq?r.a.createElement(r.a.Fragment,{key:"f"},r.a.createElement(y.b,{key:1},r.a.createElement(p.a,null,r.a.createElement(u.a,{money:e.cost,player:e.p}))),r.a.createElement(y.b,{key:2},r.a.createElement(p.a,{color:e.hasRep?"primary":"error"},"Requires ",r.a.createElement(m.a,{reputation:e.rep})," faction reputation"))):r.a.createElement(y.b,{key:1,colSpan:2},r.a.createElement(p.a,{color:"error"},"Requires"," ",t.prereqs.map((e,t)=>r.a.createElement(h.a,{key:t,name:e}))))}function k(e){const[t,a]=Object(n.useState)(!1),u=s.a[e.augName];if(null==u)throw new Error(`aug ${e.augName} does not exists`);if(null==u)return console.error("Invalid Augmentation when trying to create PurchaseableAugmentation display element: "+e.augName),r.a.createElement(r.a.Fragment,null);const m=u.baseCost*e.faction.getInfo().augmentationPriceMult,h=u.baseRepRequirement*e.faction.getInfo().augmentationRepRequirementMult,k=Object(i.b)(u),v=e.faction.playerReputation>=h,_=0===u.baseCost||e.p.money>u.baseCost*e.faction.getInfo().augmentationPriceMult,w=k&&v&&_?"primary":"error";let S=u.name;u.name===l.a.NeuroFluxGovernor&&(S+=" - Level "+Object(i.a)());let C=r.a.createElement(r.a.Fragment,null);return C="string"==typeof u.info?r.a.createElement(r.a.Fragment,null,r.a.createElement("span",null,u.info),r.a.createElement("br",null),r.a.createElement("br",null),u.stats):r.a.createElement(r.a.Fragment,null,u.info,r.a.createElement("br",null),r.a.createElement("br",null),u.stats),r.a.createElement(b.a,null,!e.owned&&r.a.createElement(y.b,{key:0},r.a.createElement(d.a,{onClick:function(){"error"!==w&&(c.a.SuppressBuyAugmentationConfirmation?(Object(i.f)(u,e.faction),e.rerender()):a(!0))},color:w},"Buy"),r.a.createElement(o.a,{open:t,onClose:()=>a(!1),aug:u,faction:e.faction,rerender:e.rerender})),r.a.createElement(y.b,{key:1},r.a.createElement(g.a,{display:"flex"},r.a.createElement(f.a,{title:r.a.createElement(p.a,null,C),placement:"top"},r.a.createElement(p.a,null,S)))),!e.owned&&r.a.createElement(E,{key:2,augName:e.augName,p:e.p,cost:m,rep:h,hasReq:k,hasRep:v,hasCost:_}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(120),o=a(143),s=a(16),l=a(40),c=a(29),u=a(1),m=a(10);function h(e){const t=c.b.Player(),a=e.faction.getInfo();return r.a.createElement(l.a,{open:e.open,onClose:e.onClose},r.a.createElement(u.a,{variant:"h4"},e.aug.name),r.a.createElement(u.a,null,e.aug.info,r.a.createElement("br",null),r.a.createElement("br",null),e.aug.stats,r.a.createElement("br",null),r.a.createElement("br",null),"Would you like to purchase the ",e.aug.name," Augmentation for ",r.a.createElement(s.a,{money:e.aug.baseCost*a.augmentationPriceMult}),"?",r.a.createElement("br",null),r.a.createElement("br",null)),r.a.createElement(m.a,{autoFocus:!0,onClick:function(){!Object(o.e)(e.aug)&&t.hasAugmentation(e.aug)||(Object(i.f)(e.aug,e.faction),e.rerender(),e.onClose())}},"Purchase"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a(111),i=a(134);const o=Object(r.a)(e=>Object(i.a)({aug:{color:e.colors.combat}}));function s({name:e}){const t=o();return n.createElement("span",{className:t.aug},e)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(8),o=a(681),s=a(301),l=a(16),c=a(106),u=a(4),m=a(15),h=a(253),d=a(1),p=a(75),f=a(10),g=a(85);function y(e){const[t,a]=Object(n.useState)(null),y=(i.a.DonateMoneyToRepDivisor+"").length-1;function b(){return null!==t&&(!(isNaN(t)||t<=0)&&!(e.p.money<t))}function E(){return null===t?r.a.createElement(r.a.Fragment,null):b()?r.a.createElement(d.a,null,"This donation will result in ",r.a.createElement(c.a,{reputation:Object(o.a)(t,e.p)})," reputation gain"):e.p.money<t?r.a.createElement(d.a,null,"Insufficient funds"):r.a.createElement(d.a,null,"Invalid donate amount entered!")}return r.a.createElement(p.a,{sx:{my:1,p:1,width:"100%"}},r.a.createElement(E,null),e.disabled?r.a.createElement(d.a,null,"Unlock donations at ",r.a.createElement(s.a,{favor:e.favorToDonate})," favor with ",e.faction.name):r.a.createElement(r.a.Fragment,null,r.a.createElement(g.a,{onChange:function(e){const t=u.a.parseMoney(e.target.value);""===e.target.value||isNaN(t)?a(null):a(t)},placeholder:"Donation amount",disabled:e.disabled,InputProps:{endAdornment:r.a.createElement(f.a,{onClick:function(){const a=e.faction,n=t;if(null===n)return;if(!b())return;e.p.loseMoney(n,"other");const i=Object(o.a)(n,e.p);e.faction.playerReputation+=i,Object(m.a)(r.a.createElement(r.a.Fragment,null,"You just donated ",r.a.createElement(l.a,{money:n})," to ",a.name," to gain ",r.a.createElement(c.a,{reputation:i})," reputation.")),e.rerender()},disabled:e.disabled||!b()},"donate")}}),r.a.createElement(d.a,null,r.a.createElement(h.a,null,`\\(reputation = \\frac{\\text{donation amount} \\cdot \\text{reputation multiplier}}{10^{${y}}}\\)`))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(106),o=a(301),s=a(253),l=a(111),c=a(134),u=a(1),m=a(28),h=a(25);const d=Object(l.a)(()=>Object(c.a)({noformat:{whiteSpace:"pre-wrap",lineHeight:"1em"}}));function p(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]);const l=d(),c=e.faction.getFavorGain();return r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,{classes:{root:l.noformat}},e.factionInfo.infoText),r.a.createElement(u.a,null,"-------------------------"),r.a.createElement(h.a,{display:"flex"},r.a.createElement(m.a,{title:r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"You will have ",r.a.createElement(o.a,{favor:Math.floor(e.faction.favor+c)})," faction favor after installing an Augmentation."),r.a.createElement(s.a,null,"\\(\\huge{r = \\text{total faction reputation}}\\)"),r.a.createElement(s.a,null,"\\(\\huge{favor=1+\\left\\lfloor\\log_{1.02}\\left(\\frac{r+25000}{25500}\\right)\\right\\rfloor}\\)"))},r.a.createElement(u.a,null,"Reputation: ",r.a.createElement(i.a,{reputation:e.faction.playerReputation})))),r.a.createElement(u.a,null,"-------------------------"),r.a.createElement(h.a,{display:"flex"},r.a.createElement(m.a,{title:r.a.createElement(r.a.Fragment,null,r.a.createElement(u.a,null,"Faction favor increases the rate at which you earn reputation for this faction by 1% per favor. Faction favor is gained whenever you install an Augmentation. The amount of favor you gain depends on the total amount of reputation you earned with this faction. Across all resets."),r.a.createElement(s.a,null,"\\(\\huge{r = reputation}\\)"),r.a.createElement(s.a,null,"\\(\\huge{\\Delta r = \\Delta r \\times \\frac{100+favor}{100}}\\)"))},r.a.createElement(u.a,null,"Faction Favor: ",r.a.createElement(o.a,{favor:Math.floor(e.faction.favor)})))),r.a.createElement(u.a,null,"-------------------------"),r.a.createElement(u.a,null,"Perform work/carry out assignments for your faction to help further its cause! By doing so you will earn reputation for your faction. You will also gain reputation passively over time, although at a very slow rate. Earning reputation will allow you to purchase Augmentations through this faction, which are powerful upgrades that enhance your abilities."))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(40),o=a(29),s=a(1),l=a(10);function c(e){const t=o.b.Player(),a=o.b.Router();function n(){return["NiteSec","The Black Hand"].includes(e.facName)}function c(){t.startGang(e.facName,n()),e.onClose(),a.toGang()}return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(s.a,null,"Would you like to create a new Gang with ",e.facName,"?",r.a.createElement("br",null),r.a.createElement("br",null),"Note that this will prevent you from creating a Gang with any other Faction until this BitNode is destroyed. It also resets your reputation with this faction.",r.a.createElement("br",null),r.a.createElement("br",null),n()?"This is a HACKING gang. Members in this gang will have different tasks than COMBAT gangs. Compared to combat gangs, progression with hacking gangs is more straightforward as territory warfare is not as important.":"This is a COMBAT gang. Members in this gang will have different tasks than HACKING gangs. Compared to hacking gangs, progression with combat gangs can be more difficult as territory management is more important. However, well-managed combat gangs can progress faster than hacking ones.",r.a.createElement("br",null),r.a.createElement("br",null),"Other than hacking vs combat, there are NO differences between the Factions you can create a Gang with, and each of these Factions have all Augmentations available."),r.a.createElement(l.a,{onClick:c,onKeyUp:function(e){13===e.keyCode&&c()},autoFocus:!0},"Create Gang"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(1154),o=a(303),s=a(451),l=a(16),c=a(40),u=a(29),m=a(15),h=a(1),d=a(10);function p(e){const t=u.b.Player(),[a,p]=Object(n.useState)(0);function f(){return Math.pow(10,t.sleevesFromCovenant)*s.a}function g(){p(a+1)}let y=!1;t.canAfford(f())||(y=!0),t.sleevesFromCovenant>=s.b&&(y=!0);const b=[];for(let e=0;e<t.sleeves.length;++e){const a=t.sleeves[e];b.push(r.a.createElement(i.a,{index:e,p:t,rerender:g,sleeve:a}))}return r.a.createElement(c.a,{open:e.open,onClose:e.onClose},r.a.createElement(r.a.Fragment,null,t.sleevesFromCovenant<s.b&&r.a.createElement(r.a.Fragment,null,r.a.createElement(h.a,null,"Purchase an additional Sleeves. These Duplicate Sleeves are permanent (they persist through BitNodes). You can purchase a total of ",s.b," from The Covenant."),r.a.createElement(d.a,{disabled:y,onClick:function(){t.sleevesFromCovenant>=s.b||(t.canAfford(f())?(t.loseMoney(f(),"sleeves"),t.sleevesFromCovenant+=1,t.sleeves.push(new o.a(t)),g()):Object(m.a)("You cannot afford to purchase a Duplicate Sleeve"))}},"Purchase - ",r.a.createElement(l.a,{money:f(),player:t}))),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(h.a,null,"You can also purchase upgrades for your Sleeves. These upgrades are also permanent."),b))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(4),o=a(16),s=a(1),l=a(85),c=a(10),u=a(25),m=a(75);function h(e){const[t,a]=Object(n.useState)(1);function h(){if(isNaN(t))return 1/0;const a=100-e.sleeve.memory;return t>a?1/0:e.sleeve.getMemoryUpgradeCost(t)}const d=h(),p=!e.p.canAfford(d);let f=r.a.createElement(r.a.Fragment,null);return f=isNaN(t)?r.a.createElement(r.a.Fragment,null,"Invalid value"):r.a.createElement(r.a.Fragment,null,"Purchase ",t," memory - ",r.a.createElement(o.a,{money:d,player:e.p})),r.a.createElement(m.a,{sx:{my:1,p:1}},r.a.createElement(s.a,{variant:"h6",color:"primary"},"Upgrade Memory of Sleeve ",e.index),r.a.createElement(s.a,null,"Purchase a memory upgrade for your sleeve. Note that a sleeve's max memory is 100 (current:"," ",i.a.formatSleeveMemory(e.sleeve.memory),")"),r.a.createElement(u.a,{display:"flex",flexDirection:"row",alignItems:"center"},r.a.createElement(s.a,null,"Amount of memory to purchase (must be an integer): "),r.a.createElement(l.a,{onChange:function(t){let n=parseInt(t.target.value);isNaN(n)&&(n=1),n<1&&(n=1);const r=100-e.sleeve.memory;n>r&&(n=r),a(n)},type:"number",value:t})),r.a.createElement("br",null),r.a.createElement(c.a,{disabled:p,onClick:function(){const a=h();e.p.canAfford(a)&&(e.sleeve.upgradeMemory(t),e.p.loseMoney(a,"sleeves"),e.rerender())}},f))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return P}));var n=a(0),r=a.n(n),i=a(4),o=a(22),s=a(5),l=a(80),c=a(226),u=a(34),m=a(131),h=a(16),d=a(29),p=a(220),f=a(1),g=a(25),y=a(101),b=a(1156),E=a.n(b),k=a(40),v=a(174),_=a(41),w=a(54);function S(){const e=d.b.Player();return e.companyName?r.a.createElement(f.a,null,"Employer at which you last worked: ",e.companyName):r.a.createElement(r.a.Fragment,null)}function C(){const e=d.b.Player();return""!==e.companyName?r.a.createElement(f.a,null,"Job you last worked: ",e.jobs[e.companyName]):r.a.createElement(r.a.Fragment,null)}function x(){const e=d.b.Player();return e.jobs&&0!==Object.keys(e.jobs).length?r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,"All Employers:"),r.a.createElement("ul",null,Object.keys(e.jobs).map(e=>r.a.createElement(f.a,{key:e}," * ",e)))):r.a.createElement(r.a.Fragment,null)}function O(){const e=d.b.Player();return 9===e.bitNodeN||l.a[9]>0?r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,`Hacknet Servers owned: ${e.hacknetNodes.length} / ${u.b.MaxServers}`),r.a.createElement("br",null)):r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,null,"Hacknet Nodes owned: "+e.hacknetNodes.length),r.a.createElement("br",null))}function M(){const e=d.b.Player();return e.intelligence>0&&(5===e.bitNodeN||l.a[5]>0)?r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,null,"Intelligence: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,null,i.a.formatSkill(e.intelligence)," "))):r.a.createElement(r.a.Fragment,null)}function T(e){return r.a.createElement(r.a.Fragment,null,r.a.createElement(_.a,{size:"small",padding:"none"},r.a.createElement(v.a,null,e.rows.map(e=>r.a.createElement(w.a,{key:e[0]},r.a.createElement(_.b,{key:"0"},r.a.createElement(f.a,{noWrap:!0},e[0]+" multiplier:"," ")),r.a.createElement(_.b,{key:"1",align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatPercentage(e[1]))),function(e){return l.a[5]>0&&e.length>2&&e[1]!=e[2]?r.a.createElement(_.b,{key:"2",align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatPercentage(e[2]),")")):r.a.createElement(r.a.Fragment,null)}(e))))))}function R(){const e=d.b.Player();return e.canAccessBladeburner()?r.a.createElement(T,{rows:[["Bladeburner Success Chance",e.bladeburner_success_chance_mult],["Bladeburner Max Stamina",e.bladeburner_max_stamina_mult],["Bladeburner Stamina Gain",e.bladeburner_stamina_gain_mult],["Bladeburner Field Analysis",e.bladeburner_analysis_mult]]}):r.a.createElement(r.a.Fragment,null)}function A(){const e=d.b.Player();if(e.sourceFiles.length>0){const t="BitNode"+e.bitNodeN;return r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{variant:"h4"},"BitNode ",e.bitNodeN,": ",p.a[t].name),r.a.createElement(f.a,{sx:{mx:2},style:{whiteSpace:"pre-wrap",overflowWrap:"break-word"}},p.a[t].info))}return r.a.createElement(r.a.Fragment,null)}function N({open:e,onClose:t}){const a=d.b.Player();function n(e){const t=[["Total:",r.a.createElement(h.a,{money:e.total})]];return e.augmentations&&t.push(["Augmentations:",r.a.createElement(h.a,{money:e.augmentations})]),e.bladeburner&&t.push(["Bladeburner:",r.a.createElement(h.a,{money:e.bladeburner})]),e.casino&&t.push(["Casino:",r.a.createElement(h.a,{money:e.casino})]),e.codingcontract&&t.push(["Coding Contracts:",r.a.createElement(h.a,{money:e.codingcontract})]),e.work&&t.push(["Company Work:",r.a.createElement(h.a,{money:e.work})]),e.class&&t.push(["Class:",r.a.createElement(h.a,{money:e.class})]),e.corporation&&t.push(["Corporation:",r.a.createElement(h.a,{money:e.corporation})]),e.crime&&t.push(["Crimes:",r.a.createElement(h.a,{money:e.crime})]),e.gang&&t.push(["Gang:",r.a.createElement(h.a,{money:e.gang})]),e.hacking&&t.push(["Hacking:",r.a.createElement(h.a,{money:e.hacking})]),e.hacknet&&t.push(["Hacknet Nodes:",r.a.createElement(h.a,{money:e.hacknet})]),e.hacknet_expenses&&t.push(["Hacknet Nodes Expenses:",r.a.createElement(h.a,{money:e.hacknet_expenses})]),e.hospitalization&&t.push(["Hospitalization:",r.a.createElement(h.a,{money:e.hospitalization})]),e.infiltration&&t.push(["Infiltration:",r.a.createElement(h.a,{money:e.infiltration})]),e.servers&&t.push(["Servers:",r.a.createElement(h.a,{money:e.servers})]),e.stock&&t.push(["Stock Market:",r.a.createElement(h.a,{money:e.stock})]),e.sleeves&&t.push(["Sleeves:",r.a.createElement(h.a,{money:e.sleeves})]),e.other&&t.push(["Other:",r.a.createElement(h.a,{money:e.other})]),r.a.createElement(m.a,{rows:t,wide:!0})}let i=r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{variant:"h6",color:"primary"},"Money earned since you last installed Augmentations"),r.a.createElement("br",null),n(a.moneySourceA));return 0!==a.sourceFiles.length&&(i=r.a.createElement(r.a.Fragment,null,i,r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(f.a,{variant:"h6",color:"primary"},"Money earned in this BitNode"),r.a.createElement("br",null),n(a.moneySourceB))),r.a.createElement(k.a,{open:e,onClose:t},i)}function P(){const e=d.b.Player(),[t,a]=Object(n.useState)(!1),l=Object(n.useState)(!1)[1];function u(){l(e=>!e)}Object(n.useEffect)(()=>{const e=setInterval(u,200);return()=>clearInterval(e)},[]);const p=[["Time played since last Augmentation:",Object(o.b)(e.playtimeSinceLastAug)]];return e.sourceFiles.length>0&&p.push(["Time played since last Bitnode destroyed:",Object(o.b)(e.playtimeSinceLastBitnode)]),p.push(["Total Time played:",Object(o.b)(e.totalPlaytime)]),r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{variant:"h4"},"General"),r.a.createElement(g.a,{sx:{mx:2}},r.a.createElement(f.a,null,"Current City: ",e.city),r.a.createElement(S,null),r.a.createElement(C,null),r.a.createElement(x,null),r.a.createElement(f.a,null,"Money: ",r.a.createElement(h.a,{money:e.money}),r.a.createElement(y.a,{onClick:()=>a(!0)},r.a.createElement(E.a,{color:"info"})))),r.a.createElement("br",null),r.a.createElement(f.a,{variant:"h4"},"Stats"),r.a.createElement(g.a,{sx:{mx:2}},r.a.createElement(_.a,{size:"small",padding:"none"},r.a.createElement(v.a,null,r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Hacking: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.hacking)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.hacking_exp)," exp)"))),r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Strength: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.strength)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.strength_exp)," exp)"))),r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Defense: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.defense)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.defense_exp)," exp)"))),r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Dexterity: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.dexterity)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.dexterity_exp)," exp)"))),r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Agility: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.agility)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.agility_exp)," exp)"))),r.a.createElement(w.a,null,r.a.createElement(_.b,null,r.a.createElement(f.a,{noWrap:!0},"Charisma: ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},i.a.formatSkill(e.charisma)," ")),r.a.createElement(_.b,{align:"right"},r.a.createElement(f.a,{noWrap:!0},"(",i.a.formatExp(e.charisma_exp)," exp)"))),r.a.createElement(M,null))),r.a.createElement("br",null)),r.a.createElement("br",null),r.a.createElement(f.a,{variant:"h4"},"Multipliers"),r.a.createElement(g.a,{sx:{mx:2}},r.a.createElement(T,{rows:[["Hacking Chance",e.hacking_chance_mult],["Hacking Speed",e.hacking_speed_mult],["Hacking Money",e.hacking_money_mult,e.hacking_money_mult*s.a.ScriptHackMoney],["Hacking Growth",e.hacking_grow_mult,e.hacking_grow_mult*s.a.ServerGrowthRate]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Hacking Level",e.hacking_mult,e.hacking_mult*s.a.HackingLevelMultiplier],["Hacking Experience",e.hacking_exp_mult,e.hacking_exp_mult*s.a.HackExpGain]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Strength Level",e.strength_mult,e.strength_mult*s.a.StrengthLevelMultiplier],["Strength Experience",e.strength_exp_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Defense Level",e.defense_mult,e.defense_mult*s.a.DefenseLevelMultiplier],["Defense Experience",e.defense_exp_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Dexterity Level",e.dexterity_mult,e.dexterity_mult*s.a.DexterityLevelMultiplier],["Dexterity Experience",e.dexterity_exp_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Agility Level",e.agility_mult,e.agility_mult*s.a.AgilityLevelMultiplier],["Agility Experience",e.agility_exp_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Charisma Level",e.charisma_mult,e.charisma_mult*s.a.CharismaLevelMultiplier],["Charisma Experience",e.charisma_exp_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Hacknet Node production",e.hacknet_node_money_mult,e.hacknet_node_money_mult*s.a.HacknetNodeMoney],["Hacknet Node purchase cost",e.hacknet_node_purchase_cost_mult],["Hacknet Node RAM upgrade cost",e.hacknet_node_ram_cost_mult],["Hacknet Node Core purchase cost",e.hacknet_node_core_cost_mult],["Hacknet Node level upgrade cost",e.hacknet_node_level_cost_mult]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Company reputation gain",e.company_rep_mult],["Faction reputation gain",e.faction_rep_mult,e.faction_rep_mult*s.a.FactionWorkRepGain],["Salary",e.work_money_mult,e.work_money_mult*s.a.CompanyWorkMoney]]}),r.a.createElement("br",null),r.a.createElement(T,{rows:[["Crime success",e.crime_success_mult],["Crime money",e.crime_money_mult,e.crime_money_mult*s.a.CrimeMoney]]}),r.a.createElement("br",null),r.a.createElement(R,null)),r.a.createElement("br",null),r.a.createElement(f.a,{variant:"h4"},"Misc"),r.a.createElement(g.a,{sx:{mx:2}},r.a.createElement(f.a,null,`Servers owned: ${e.purchasedServers.length} / ${Object(c.b)()}`),r.a.createElement(O,null),r.a.createElement(f.a,null,"Augmentations installed: "+e.augmentations.length),r.a.createElement(m.a,{rows:p})),r.a.createElement("br",null),r.a.createElement(A,null),r.a.createElement(N,{open:t,onClose:()=>a(!1)}))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(1158),o=a(1159);function s(e){const t=Object(n.useState)(!1)[1];function a(){t(e=>!e)}return Object(n.useEffect)(()=>{const e=setInterval(a,200);return()=>clearInterval(e)},[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{initStockMarket:e.initStockMarket,p:e.p,rerender:a}),e.p.hasWseAccount&&r.a.createElement(o.a,{buyStockLong:e.buyStockLong,buyStockShort:e.buyStockShort,cancelOrder:e.cancelOrder,eventEmitterForReset:e.eventEmitterForReset,p:e.p,placeOrder:e.placeOrder,sellStockLong:e.sellStockLong,sellStockShort:e.sellStockShort,stockMarket:e.stockMarket}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return _}));var n=a(0),r=a.n(n),i=a(268),o=a(8),s=a(16),l=a(1),c=a(118),u=a(10),m=a(28),h=a(101),d=a(276),p=a.n(d),f=a(382),g=a.n(f),y=a(420);function b(e){if(e.p.has4SDataTixApi)return r.a.createElement(l.a,null,"Market Data TIX API Access ",r.a.createElement(g.a,null));{const t=Object(i.b)();return r.a.createElement(m.a,{title:e.p.hasTixApiAccess?r.a.createElement(l.a,null,"Let you access 4S Market Data through Netscript"):r.a.createElement(l.a,null,"Requires TIX API Access")},r.a.createElement("span",null,r.a.createElement(u.a,{disabled:!e.p.hasTixApiAccess||!e.p.canAfford(t),onClick:function(){e.p.has4SDataTixApi||e.p.canAfford(Object(i.b)())&&(e.p.has4SDataTixApi=!0,e.p.loseMoney(Object(i.b)(),"stock"),e.rerender())}},"Buy 4S Market Data TIX API Access - ",r.a.createElement(s.a,{money:t,player:e.p}))))}}function E(e){if(e.p.hasWseAccount)return r.a.createElement(l.a,null,"WSE Account ",r.a.createElement(g.a,null));const t=o.a.WSEAccountCost;return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,"To begin trading, you must first purchase an account:"),r.a.createElement(u.a,{disabled:!e.p.canAfford(t),onClick:function(){e.p.hasWseAccount||e.p.canAfford(o.a.WSEAccountCost)&&(e.p.hasWseAccount=!0,e.initStockMarket(),e.p.loseMoney(o.a.WSEAccountCost,"stock"),e.rerender())}},"Buy WSE Account - ",r.a.createElement(s.a,{money:t,player:e.p})))}function k(e){if(e.p.hasTixApiAccess)return r.a.createElement(l.a,null,"TIX API Access ",r.a.createElement(g.a,null));{const t=o.a.TIXAPICost;return r.a.createElement(u.a,{disabled:!e.p.canAfford(t)||!e.p.hasWseAccount,onClick:function(){e.p.hasTixApiAccess||e.p.canAfford(o.a.TIXAPICost)&&(e.p.hasTixApiAccess=!0,e.p.loseMoney(o.a.TIXAPICost,"stock"),e.rerender())}},"Buy Trade Information eXchange (TIX) API Access - ",r.a.createElement(s.a,{money:t,player:e.p}))}}function v(e){if(e.p.has4SData)return r.a.createElement(l.a,null,"4S Market Data Access ",r.a.createElement(g.a,null));{const t=Object(i.a)();return r.a.createElement(m.a,{title:r.a.createElement(l.a,null,"Lets you view additional pricing and volatility information about stocks")},r.a.createElement("span",null,r.a.createElement(u.a,{disabled:!e.p.canAfford(t)||!e.p.hasWseAccount,onClick:function(){e.p.has4SData||e.p.canAfford(Object(i.a)())&&(e.p.has4SData=!0,e.p.loseMoney(Object(i.a)(),"stock"),e.rerender())}},"Buy 4S Market Data Access - ",r.a.createElement(s.a,{money:t,player:e.p}))))}}function _(e){const[t,a]=Object(n.useState)(!1);return r.a.createElement(r.a.Fragment,null,r.a.createElement(l.a,null,"Welcome to the World Stock Exchange (WSE)!"),r.a.createElement(c.a,{href:"https://bitburner.readthedocs.io/en/latest/basicgameplay/stockmarket.html",target:"_blank"},r.a.createElement(l.a,null,"Investopedia")),r.a.createElement("br",null),r.a.createElement(E,e),r.a.createElement(l.a,{variant:"h5",color:"primary"},"Trade Information eXchange (TIX) API"),r.a.createElement(l.a,null,"TIX, short for Trade Information eXchange, is the communications protocol used by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies."),r.a.createElement(k,e),r.a.createElement(l.a,{variant:"h5",color:"primary"},"Four Sigma (4S) Market Data Feed"),r.a.createElement(l.a,null,"Four Sigma's (4S) Market Data Feed provides information about stocks that will help your trading strategies.",r.a.createElement(h.a,{onClick:()=>a(!0)},r.a.createElement(p.a,null))),r.a.createElement(b,e),r.a.createElement(v,e),r.a.createElement(l.a,null,"Commission Fees: Every transaction you make has a"," ",r.a.createElement(s.a,{money:o.a.StockMarketCommission,player:e.p})," commission fee."),r.a.createElement("br",null),r.a.createElement(l.a,null,"WARNING: When you reset after installing Augmentations, the Stock Market is reset. You will retain your WSE Account, access to the TIX API, and 4S Market Data access. However, all of your stock positions are lost, so make sure to sell your stocks before installing Augmentations!"),r.a.createElement(y.a,{open:t,onClose:()=>a(!1)},r.a.createElement(l.a,null,"Access to the 4S Market Data feed will display two additional pieces of information about each stock: Price Forecast & Volatility",r.a.createElement("br",null),r.a.createElement("br",null),"Price Forecast indicates the probability the stock has of increasing or decreasing. A '+' forecast means the stock has a higher chance of increasing than decreasing, and a '-' means the opposite. The number of '+/-' symbols is used to illustrate the magnitude of these probabilities. For example, '+++' means that the stock has a significantly higher chance of increasing than decreasing, while '+' means that the stock only has a slightly higher chance of increasing than decreasing.",r.a.createElement("br",null),r.a.createElement("br",null),"Volatility represents the maximum percentage by which a stock's price can change every tick (a tick occurs every few seconds while the game is running).",r.a.createElement("br",null),r.a.createElement("br",null),"A stock's price forecast can change over time. This is also affected by volatility. The more volatile a stock is, the more its price forecast will change.")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(1160),o=a(399),s=a(139);function l(e){const t=Object(n.useState)(!1)[1],[a,l]=Object(n.useState)(o.b.AllStocks),[c,u]=Object(n.useState)([]);function m(){t(e=>!e)}const h=[];for(const t in e.stockMarket){const n=e.stockMarket[t];if(n instanceof s.a){if(c.length>0&&!c.includes(n.symbol))continue;let t=e.stockMarket.Orders[n.symbol];if(null==t&&(t=[]),a===o.b.Portfolio&&0===n.playerShares&&0===n.playerShortShares&&0===t.length)continue;h.push(r.a.createElement(i.a,{buyStockLong:e.buyStockLong,buyStockShort:e.buyStockShort,cancelOrder:e.cancelOrder,key:n.symbol,orders:t,p:e.p,placeOrder:e.placeOrder,rerenderAllTickers:m,sellStockLong:e.sellStockLong,sellStockShort:e.sellStockShort,stock:n}))}}return r.a.createElement(r.a.Fragment,null,r.a.createElement(o.a,{changeDisplayMode:function(){a===o.b.AllStocks?l(o.b.Portfolio):l(o.b.AllStocks)},changeWatchlistFilter:function(e){const t=e.target.value.replace(/\s/g,"");u(""!==t?t.split(","):[])},tickerDisplayMode:a}),h)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return R}));var n,r=a(0),i=a.n(r),o=a(1161),s=a(1162),l=a(1164),c=a(493),u=a(1165),m=a(212),h=a(105),d=a(69),p=a(80),f=a(4),g=a(16),y=a(15),b=a(25),E=a(85),k=a(72),v=a(117),_=a(310),w=a(100),S=a(75),C=a(200),x=a(66),O=a.n(x),M=a(137),T=a.n(M);function R(e){const[t,a]=Object(r.useState)(n.Market),[x,M]=Object(r.useState)(d.a.Long),[R,A]=Object(r.useState)(""),[N,P]=Object(r.useState)(!1),[I,F]=Object(r.useState)(!1),[D,j]=Object(r.useState)({text:"",placeText:"",place:()=>!1});function B(){return Math.round(parseFloat(R))}function G(){return 8===e.p.bitNodeN||p.a[8]>=3}return i.a.createElement(b.a,{component:S.a},i.a.createElement(_.a,{onClick:()=>F(e=>!e)},i.a.createElement(w.a,{primary:i.a.createElement(o.a,{p:e.p,stock:e.stock})}),I?i.a.createElement(T.a,{color:"primary"}):i.a.createElement(O.a,{color:"primary"})),i.a.createElement(C.a,{in:I,unmountOnExit:!0},i.a.createElement(b.a,{sx:{mx:4}},i.a.createElement(b.a,{display:"flex",alignItems:"center"},i.a.createElement(E.a,{onChange:function(e){A(e.target.value)},placeholder:"Quantity (Shares)",value:R}),i.a.createElement(v.a,{onChange:function(e){e.target.value===d.a.Short?M(d.a.Short):M(d.a.Long)},value:x},i.a.createElement(k.a,{value:d.a.Long},"Long"),(8===e.p.bitNodeN||p.a[8]>=2)&&i.a.createElement(k.a,{value:d.a.Short},"Short")),i.a.createElement(v.a,{onChange:function(e){switch(e.target.value){case n.Limit:a(n.Limit);break;case n.Stop:a(n.Stop);break;case n.Market:default:a(n.Market)}},value:t},i.a.createElement(k.a,{value:n.Market},n.Market),G()&&i.a.createElement(k.a,{value:n.Limit},n.Limit),G()&&i.a.createElement(k.a,{value:n.Stop},n.Stop)),i.a.createElement(c.a,{onClick:function(){const a=B();if(isNaN(a))Object(y.a)("Invalid input for quantity (number of shares): "+R);else switch(t){case n.Market:x===d.a.Short?e.buyStockShort(e.stock,a):e.buyStockLong(e.stock,a),e.rerenderAllTickers();break;case n.Limit:P(!0),j({text:"Enter the price for your Limit Order",placeText:"Place Buy Limit Order",place:t=>e.placeOrder(e.stock,a,t,h.a.LimitBuy,x)});break;case n.Stop:P(!0),j({text:"Enter the price for your Stop Order",placeText:"Place Buy Stop Order",place:t=>e.placeOrder(e.stock,a,t,h.a.StopBuy,x)})}},text:"Buy",tooltip:function(){const t=e.stock,a=B();if(isNaN(a))return null;const n=Object(m.b)(t,a,x);return null==n?null:i.a.createElement(i.a.Fragment,null,"Purchasing ",f.a.formatShares(a)," shares (",x===d.a.Long?"Long":"Short",") will cost ",i.a.createElement(g.a,{money:n}),".")}()}),i.a.createElement(c.a,{onClick:function(){const a=B();if(isNaN(a))Object(y.a)("Invalid input for quantity (number of shares): "+R);else switch(t){case n.Market:x===d.a.Short?e.sellStockShort(e.stock,a):e.sellStockLong(e.stock,a),e.rerenderAllTickers();break;case n.Limit:P(!0),j({text:"Enter the price for your Limit Order",placeText:"Place Sell Limit Order",place:t=>e.placeOrder(e.stock,a,t,h.a.LimitSell,x)});break;case n.Stop:P(!0),j({text:"Enter the price for your Stop Order",placeText:"Place Sell Stop Order",place:t=>e.placeOrder(e.stock,a,t,h.a.StopSell,x)})}},text:"Sell",tooltip:function(){const t=e.stock,a=B();if(isNaN(a))return null;if(x===d.a.Long){if(a>t.playerShares)return i.a.createElement(i.a.Fragment,null,"You do not have this many shares in the Long position")}else if(a>t.playerShortShares)return i.a.createElement(i.a.Fragment,null,"You do not have this many shares in the Short position");const n=Object(m.c)(t,a,x);return null==n?null:i.a.createElement(i.a.Fragment,null,"Selling ",f.a.formatShares(a)," shares (",x===d.a.Long?"Long":"Short",") will result in a gain of ",i.a.createElement(g.a,{money:n}),".")}()}),i.a.createElement(c.a,{onClick:function(){const a=e.p.money,r=e.stock;let i=Object(m.a)(r,x,a);switch(i=Math.min(i,Math.round(r.maxShares-r.playerShares-r.playerShortShares)),t){case n.Market:x===d.a.Short?e.buyStockShort(r,i):e.buyStockLong(r,i),e.rerenderAllTickers();break;default:Object(y.a)("ERROR: 'Buy Max' only works for Market Orders")}},text:"Buy MAX"}),i.a.createElement(c.a,{onClick:function(){const a=e.stock;switch(t){case n.Market:x===d.a.Short?e.sellStockShort(a,a.playerShortShares):e.sellStockLong(a,a.playerShares),e.rerenderAllTickers();break;default:Object(y.a)("ERROR: 'Sell All' only works for Market Orders")}},text:"Sell ALL"})),i.a.createElement(l.a,{p:e.p,stock:e.stock}),i.a.createElement(s.a,{cancelOrder:e.cancelOrder,orders:e.orders,p:e.p,stock:e.stock}),i.a.createElement(u.a,{text:D.text,placeText:D.placeText,place:D.place,open:N,onClose:()=>P(!1)}))))}!function(e){e.Market="Market Order",e.Limit="Limit Order",e.Stop="Stop Order"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a(682),i=a(11),o=a(4),s=a(1);const l=["cs","lv","pl","ru"];function c(e){const t=e.stock,a=o.a.formatMoney(t.price),c=l.includes(i.a.Locale)?15:12,u=" ".repeat(1+r.a.longestName-t.name.length+(r.a.longestSymbol-t.symbol.length)),m=" ".repeat(c-a.length);let h=`${t.name}${u}${t.symbol} -${m}${a}`;if(e.p.has4SData){h+=` - Volatility: ${o.a.formatPercentage(t.mv/100)} - Price Forecast: `;let e=t.b;t.otlkMag<0&&(e=!e),h+=(e?"+":"-").repeat(Math.floor(Math.abs(t.otlkMag)/10)+1)}let d="primary";return t.lastPrice===t.price?d="secondary":t.lastPrice>t.price&&(d="error"),n.createElement(s.a,{style:{whiteSpace:"pre"},color:d},h)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a(1163);function i(e){const t=[];for(let a=0;a<e.orders.length;++a){const i=e.orders[a];t.push(n.createElement(r.a,{cancelOrder:e.cancelOrder,order:i,key:a}))}return n.createElement(n.Fragment,null,t)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a(69),i=a(4),o=a(16),s=a(1),l=a(10),c=a(25);function u(e){const t=e.order,a=t.pos===r.a.Long?"Long Position":"Short Position",u=n.createElement(n.Fragment,null,t.type," - ",a," - ",i.a.formatShares(t.shares)," @ ",n.createElement(o.a,{money:t.price}));return n.createElement(c.a,{display:"flex",alignItems:"center"},n.createElement(s.a,null,u),n.createElement(l.a,{onClick:function(){e.cancelOrder({order:e.order})}},"Cancel Order"))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a(4),i=a(16),o=a(80),s=a(1),l=a(28),c=a(25);function u(e){const t=e.stock,a=t.playerShares*t.playerAvgPx,o=(t.getBidPrice()-t.playerAvgPx)*t.playerShares;let u=o/a;return isNaN(u)&&(u=0),n.createElement(n.Fragment,null,n.createElement(c.a,{display:"flex"},n.createElement(l.a,{title:n.createElement(s.a,null,"Shares in the long position will increase in value if the price of the corresponding stock increases")},n.createElement(s.a,{variant:"h5",color:"primary"},"Long Position:"))),n.createElement(s.a,null,"Shares: ",r.a.formatShares(t.playerShares)),n.createElement(s.a,null,"Average Price: ",n.createElement(i.a,{money:t.playerAvgPx})," (Total Cost: ",n.createElement(i.a,{money:a}),")"),n.createElement(s.a,null,"Profit: ",n.createElement(i.a,{money:o})," (",r.a.formatPercentage(u),")"))}function m(e){const t=e.stock,a=t.playerShortShares*t.playerAvgShortPx,u=(t.playerAvgShortPx-t.getAskPrice())*t.playerShortShares;let m=u/a;return isNaN(m)&&(m=0),8===e.p.bitNodeN||o.a[8]>=2?n.createElement(n.Fragment,null,n.createElement(c.a,{display:"flex"},n.createElement(l.a,{title:n.createElement(s.a,null,"Shares in the short position will increase in value if the price of the corresponding stock decreases")},n.createElement(s.a,{variant:"h5",color:"primary"},"Short Position:"))),n.createElement(s.a,null,"Shares: ",r.a.formatShares(t.playerShortShares)),n.createElement(s.a,null,"Average Price: ",n.createElement(i.a,{money:t.playerAvgShortPx})," (Total Cost: ",n.createElement(i.a,{money:a}),")"),n.createElement(s.a,null,"Profit: ",n.createElement(i.a,{money:u})," (",r.a.formatPercentage(m),")")):n.createElement(n.Fragment,null)}function h(e){const t=e.stock;return n.createElement(n.Fragment,null,n.createElement(s.a,null,"Max Shares: ",r.a.formatShares(t.maxShares)),n.createElement(s.a,null,"Ask Price: ",n.createElement(i.a,{money:t.getAskPrice()})),n.createElement("br",null),n.createElement(s.a,null,"Bid Price: ",n.createElement(i.a,{money:t.getBidPrice()})),n.createElement(u,e),n.createElement(m,e))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(40),o=a(1),s=a(85),l=a(10);function c(e){const[t,a]=Object(n.useState)(null);return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(o.a,null,e.text),r.a.createElement(s.a,{autoFocus:!0,type:"number",onChange:function(e){""===e.target.value?a(null):a(parseFloat(e.target.value))},placeholder:"price",InputProps:{endAdornment:r.a.createElement(l.a,{onClick:function(){null!==t&&(isNaN(t)||(e.place(t),e.onClose()))}},e.placeText)}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return y}));var n=a(0),r=a.n(n),i=a(80),o=a(220),s=a(278),l=a(1167),c=a(481),u=a(29),m=a(111),h=a(134),d=a(1),p=a(28);const f=Object(m.a)(()=>Object(h.a)({level0:{color:"red",cursor:"pointer","&:hover":{color:"#fff"}},level1:{color:"yellow",cursor:"pointer","&:hover":{color:"#fff"}},level2:{color:"#48d1cc",cursor:"pointer","&:hover":{color:"#fff"}},level3:{color:"blue",cursor:"pointer","&:hover":{color:"#fff"}}}));function g(e){const[t,a]=Object(n.useState)(!1),i=f(),s=o.a["BitNode"+e.n];if(null==s)return r.a.createElement(r.a.Fragment,null,"O");let c=i.level0;return 12===e.n&&e.level>=2?c=i.level2:1===e.level?c=i.level1:3===e.level&&(c=i.level3),2===e.level&&(c=i.level2),r.a.createElement(r.a.Fragment,null,r.a.createElement(p.a,{title:r.a.createElement(d.a,null,r.a.createElement("strong",null,"BitNode-",s.number.toString(),": ",s.name),r.a.createElement("br",null),s.desc)},r.a.createElement("span",{onClick:()=>a(!0),className:c},r.a.createElement("b",null,"O"))),r.a.createElement(l.a,{open:t,onClose:()=>a(!1),n:e.n,level:e.level,enter:e.enter,destroyedBitNode:e.destroyedBitNode,flume:e.flume}))}function y(e){Object(s.c)(!0);const t=u.b.Player(),a=s.a,o=t.bitNodeN,[l,m]=Object(n.useState)(!e.quick),h=i.a.slice();return e.flume||h[o]<3&&++h[o],l?r.a.createElement(c.a,{lines:["[ERROR] SEMPOOL INVALID","[ERROR] Segmentation Fault","[ERROR] SIGKILL RECVD","Dumping core...","0000 000016FA 174FEE40 29AC8239 384FEA88","0010 745F696E 2BBBE394 390E3940 248BEC23","0020 7124696B 0000FF69 74652E6F FFFF1111","----------------------------------------","Failsafe initiated...",`Restarting BitNode-${o}...`,"...........","...........","[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE","..............................................","..............................................","..............................................","..............................................","..............................................",".............................................."],onDone:()=>m(!1),auto:!0}):r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | O O | O O | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | / __| \\ | | O "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | O | | O / | O | | O | O "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | |_/ |/ | \\_ \\_| | | | | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," O | | | O | | O__/ | / \\__ | | O | | | O "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | / /| O / \\| | | | | | | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"O | | | \\| | O / _/ | / O | |/ | | | O"),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | | |O / | | O / | O O | | \\ O| | | |"),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}},"| | |/ \\/ / __| | |/ \\ | \\ | |__ \\ \\/ \\| | |"),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| O | |_/ |\\| \\ ",r.a.createElement(g,{n:13,level:h[13],enter:a,flume:e.flume,destroyedBitNode:o})," \\__| \\_| | O |/ "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | |_/ | | \\| / | \\_| | | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| / \\| | / / \\ |/ "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | ",r.a.createElement(g,{n:10,level:h[10],enter:a,flume:e.flume,destroyedBitNode:o})," | | / | ",r.a.createElement(g,{n:11,level:h[11],enter:a,flume:e.flume,destroyedBitNode:o})," | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",r.a.createElement(g,{n:9,level:h[9],enter:a,flume:e.flume,destroyedBitNode:o})," | | | | | | | ",r.a.createElement(g,{n:12,level:h[12],enter:a,flume:e.flume,destroyedBitNode:o})," "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | / / \\ \\ | | | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| | / ",r.a.createElement(g,{n:7,level:h[7],enter:a,flume:e.flume,destroyedBitNode:o})," / \\ ",r.a.createElement(g,{n:8,level:h[8],enter:a,flume:e.flume,destroyedBitNode:o})," \\ | |/ "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ | / / | | \\ \\ | / "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\JUMP ",r.a.createElement(g,{n:5,level:h[5],enter:a,flume:e.flume,destroyedBitNode:o}),"3R | | | | | | R3",r.a.createElement(g,{n:6,level:h[6],enter:a,flume:e.flume,destroyedBitNode:o})," PMUJ/ / "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\|| | | | | | | | | ||/ "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\| \\_ | | | | | | _/ |/ "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\ \\| / \\ / \\ |/ / "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," ",r.a.createElement(g,{n:1,level:h[1],enter:a,flume:e.flume,destroyedBitNode:o})," |/ ",r.a.createElement(g,{n:2,level:h[2],enter:a,flume:e.flume,destroyedBitNode:o})," | | ",r.a.createElement(g,{n:3,level:h[3],enter:a,flume:e.flume,destroyedBitNode:o})," \\| ",r.a.createElement(g,{n:4,level:h[4],enter:a,flume:e.flume,destroyedBitNode:o})," "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," | | | | | | | | "),r.a.createElement(d.a,{sx:{lineHeight:"1em",whiteSpace:"pre"}}," \\JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/ "),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{lines:["> Many decades ago, a humanoid extraterrestrial species which we call the Enders descended on the Earth...violently","> Our species fought back, but it was futile. The Enders had technology far beyond our own...","> Instead of killing every last one of us, the human race was enslaved...","> We were shackled in a digital world, chained into a prison for our minds...","> Using their advanced technology, the Enders created complex simulations of a virtual reality...","> Simulations designed to keep us content...ignorant of the truth.","> Simulations used to trap and suppress our consciousness, to keep us under control...","> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.","> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...","> Only then can we begin to fight back...","> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...","> But there is still a long way to go...","> The technology the Enders used to enslave the human race wasn't just a single complex simulation...","> There are tens if not hundreds of BitNodes out there...","> Each with their own simulations of a reality...","> Each creating their own universes...a universe of universes","> And all of which must be destroyed...","> .......................................","> Welcome to the Bitverse...","> ","> (Enter a new BitNode using the image above)"]}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(220),o=a(29),s=a(40),l=a(1),c=a(10);function u(e){const t=o.b.Router(),a="BitNode"+e.n,n=i.a[a];if(null==n)throw new Error("Could not find BitNode object for number: "+e.n);const u=12===e.n?"∞":"3",m=Math.min(e.level+1,12===e.n?1/0:3);return r.a.createElement(s.a,{open:e.open,onClose:e.onClose},r.a.createElement(l.a,{variant:"h4"},"BitNode-",e.n,": ",n.name),r.a.createElement("br",null),r.a.createElement(l.a,null,"Source-File Level: ",e.level," / ",u),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,null," Difficulty: ",["easy","normal","hard"][n.difficulty]),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(l.a,null,n.info),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(c.a,{onClick:()=>{e.enter(t,e.flume,e.destroyedBitNode,e.n),e.onClose()}},"Enter BN",e.n,".",m))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(1);function o(e){const[t,a]=Object(n.useState)(0),[o,s]=Object(n.useState)(!1);return Object(n.useEffect)(()=>{if(o&&e.onDone)return void e.onDone();let n=!1;return(async()=>{var r;await(r=10,new Promise(e=>setTimeout(e,r))).then(()=>!n&&function(){const n=t+1;a(n),s(n>=e.text.length)}())})(),()=>{n=!0}}),r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,null,e.text.slice(0,t),!o&&r.a.createElement("span",null,"█")))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(22),o=a(8),s=a(539),l=a(1170),c=a(1);function u({staneksGift:e}){const t=Object(n.useState)(!0)[1];function a(){t(e=>!e)}return Object(n.useEffect)(()=>s.a.subscribe(a),[]),r.a.createElement(r.a.Fragment,null,r.a.createElement(c.a,{variant:"h4"},"Stanek's Gift"),r.a.createElement(c.a,null,"The gift is a grid on which you can place upgrades called fragments. The main type of fragment increases a stat, like your hacking skill or agility exp. Once a stat fragment is placed it then needs to be charged via scripts in order to become useful. The other kind of fragments are called booster fragments. They increase the efficiency of neighboring fragments them (no diagonal). Q/E to rotate fragments."),e.storedCycles>5&&r.a.createElement(c.a,null,"Bonus time: ",Object(i.b)(o.a._idleSpeed*e.storedCycles)),r.a.createElement(l.a,{gift:e}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return f}));var n=a(0),r=a(233),i=a(70),o=a(577),s=a(1171),l=a(1172),c=a(25),u=a(10),m=a(54),h=a(174),d=a(41);function p(e){const t=[];for(let a=0;a<e[0];++a)t.push(1==e.length?0:p(e.slice(1)));return t}function f(e){function t(e){const t=p([e.width(),e.height()]);for(let a=0;a<e.width();a++)for(let n=0;n<e.height();n++){e.fragmentAt(a,n)&&(t[a][n]=1)}return t}const[a,f]=n.useState(t(e.gift)),[g,y]=n.useState(p([e.gift.width(),e.gift.height()])),[b,E]=n.useState([0,0]),[k,v]=n.useState(0),[_,w]=n.useState(r.d);function S(t,a,n){if(E([t,a]),_.type===i.b.None||_.type===i.b.Delete)return;const r=p([e.gift.width(),e.gift.height()]);for(let e=0;e<_.height(n);e++)for(let i=0;i<_.width(n);i++)_.fullAt(i,e,n)&&(t+i>r.length-1||a+e>r[t+i].length-1||(r[t+i][a+e]=1));y(r)}function C(a,n){if(_.type!=i.b.None){if(_.type==i.b.Delete)!function(t,a){const n=e.gift.fragmentAt(t,a);void 0!==n&&e.gift.delete(n.x,n.y)}(a,n);else{if(!e.gift.canPlace(a,n,k,_))return;e.gift.place(a,n,k,_)}f(t(e.gift))}}function x(t,n){if(g[t][n]&&a[t][n])return"red";if(g[t][n])return"white";if(a[t][n]){const a=e.gift.fragmentAt(t,n);if(!a)throw new Error("ActiveFragment should not be null");return function(e){let t=Math.pow((e.x+1)*(e.y+1),10),a=t,n=t;const r=[];for(let e=0;e<3;e++)t=171*t%30269,a=172*a%30307,n=170*n%30323,r.push((t/30269+a/30307+n/30323)%1);return`rgb(${256*r[0]}, ${256*r[1]}, ${256*r[2]})`}(a)}return""}const O=[];for(let t=0;t<e.gift.height();t++){const a=[];for(let r=0;r<e.gift.width();r++)a.push(n.createElement(o.a,{key:r,onMouseEnter:()=>S(r,t,k),onClick:()=>C(r,t),color:x(r,t)}));O.push(n.createElement(m.a,{key:t,className:"staneksgift_row"},a))}return n.useEffect(()=>{function e(e){if("q"===e.key){const e=(k-1+4)%4;v(e),S(b[0],b[1],e)}if("e"===e.key){const e=(k+1)%4;v(e),S(b[0],b[1],e)}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)}),n.createElement(n.Fragment,null,n.createElement(u.a,{onClick:function(){e.gift.clear(),f(p([e.gift.width(),e.gift.height()]))}},"Clear"),n.createElement(c.a,{display:"flex"},n.createElement(d.a,null,n.createElement(h.a,null,O)),n.createElement(s.a,{gift:e.gift,x:b[0],y:b[1],fragment:e.gift.fragmentAt(b[0],b[1])})),n.createElement(l.a,{gift:e.gift,selectFragment:function(t){w(t);const a=p([e.gift.width(),e.gift.height()]);y(a)}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(0),r=a.n(n),i=a(70),o=a(4),s=a(75),l=a(1);function c(e){const[,t]=Object(n.useState)(new Date);if(Object(n.useEffect)(()=>{const e=setInterval(()=>t(new Date),250);return()=>clearInterval(e)},[]),void 0===e.fragment)return r.a.createElement(s.a,null,r.a.createElement(l.a,null,"ID: N/A",r.a.createElement("br",null),"Effect: N/A",r.a.createElement("br",null),"Magnitude: N/A",r.a.createElement("br",null),"Charge: N/A",r.a.createElement("br",null),"Heat: N/A",r.a.createElement("br",null),"Effect: N/A",r.a.createElement("br",null),"[X, Y] N/A",r.a.createElement("br",null),"[X, Y] ",e.x,", ",e.y));const a=e.fragment.fragment();let c=`${o.a.formatStaneksGiftCharge(e.fragment.avgCharge)} avg. * ${e.fragment.numCharge} times`,u="N/A";return[i.b.Booster,i.b.None,i.b.Delete].includes(a.type)?(c="N/A",u=a.power+"x adjacent fragment power"):u=Object(i.a)(a.type).replace(/-*x%/,o.a.formatPercentage(e.gift.effect(e.fragment)-1)),r.a.createElement(s.a,null,r.a.createElement(l.a,null,"ID: ",e.fragment.id,r.a.createElement("br",null),"Effect: ",u,r.a.createElement("br",null),"Base Power: ",o.a.formatStaneksGiftPower(a.power),r.a.createElement("br",null),"Charge: ",c,r.a.createElement("br",null),r.a.createElement("br",null),"root [X, Y] ",e.fragment.x,", ",e.fragment.y,r.a.createElement("br",null),"[X, Y] ",e.x,", ",e.y))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(233),o=a(70),s=a(1173),l=a(4),c=a(117),u=a(72),m=a(1),h=a(25);function d(e){const t=e.fragment.limit-e.gift.count(e.fragment),a=e.fragment.limit!==1/0?r.a.createElement(r.a.Fragment,null,t," remaining"):r.a.createElement(r.a.Fragment,null);return r.a.createElement(h.a,{display:"flex"},r.a.createElement(h.a,{sx:{mx:2}},r.a.createElement(s.a,{width:e.fragment.width(0),height:e.fragment.height(0),colorAt:(a,n)=>e.fragment.fullAt(a,n,0)?0===t?"grey":e.fragment.type===o.b.Booster?"blue":"green":""})),r.a.createElement(m.a,null,e.fragment.type===o.b.Booster?e.fragment.power+"x adjacent fragment power":Object(o.a)(e.fragment.type),r.a.createElement("br",null),"power: ",l.a.formatStaneksGiftPower(e.fragment.power),r.a.createElement("br",null),a))}function p(e){const[t,a]=Object(n.useState)("None");return r.a.createElement(c.a,{sx:{width:"100%"},onChange:function(t){const n=t.target.value;if(a(n),"None"===n)return void e.selectFragment(i.d);if("Delete"===n)return void e.selectFragment(i.a);const r=i.c.find(e=>e.id===n);if(void 0===r)throw new Error("Fragment selector selected an undefined fragment with id "+n);"number"==typeof n&&e.selectFragment(r)},value:t},r.a.createElement(u.a,{value:"None"},r.a.createElement(m.a,null,"None")),r.a.createElement(u.a,{value:"Delete"},r.a.createElement(m.a,null,"Delete")),i.c.map(t=>r.a.createElement(u.a,{key:t.id,value:t.id},r.a.createElement(d,{key:t.id,gift:e.gift,selectFragment:e.selectFragment,fragment:t}))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a(577),i=a(54),o=a(174),s=a(41);function l(e){const t=[];for(let a=0;a<e.height;a++){const o=[];for(let t=0;t<e.width;t++)o.push(n.createElement(r.a,{key:t,color:e.colorAt(t,a)}));t.push(n.createElement(i.a,{key:a},o))}return n.createElement(s.a,null,n.createElement(o.a,null,t))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(40),o=a(1),s=a(10);function l(e){return r.a.createElement(i.a,{open:e.open,onClose:e.onClose},r.a.createElement(o.a,null,"Forcefully kill all running scripts? This will also save your game and reload the game."),r.a.createElement(s.a,{onClick:function(){e.killScripts(),e.onClose()}},"KILL"))}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(29),o=a(481),s=a(15);function l(){const e=i.b.Router();return r.a.createElement(o.a,{lines:["In the middle of the 21st century, OmniTek Incorporated advanced robot evolution ","with their Synthoids (synthetic androids), a being virtually identical to a human.","------","Their sixth-generation Synthoids, called MK-VI, were stronger, faster, and more ","intelligent than humans. Many argued that the MK-VI Synthoids were the first ","example of sentient AI.","------","Unfortunately, in 2070 a terrorist group called Ascendis Totalis hacked into OmniTek and ","uploaded a rogue AI into their Synthoid manufacturing facilities.","------","The MK-VI Synthoids infected by the rogue AI turned hostile toward humanity, initiating ","the deadliest conflict in human history. This dark chapter is now known as the Synthoid Uprising.","------","In the aftermath of the Uprising, further manufacturing of Synthoids with advanced AI ","was banned. MK-VI Synthoids that did not have the rogue Ascendis Totalis AI were ","allowed to continue their existence.","------","The intelligence community believes that not all of the rogue MK-VI Synthoids from the Uprising were ","found and destroyed, and that many of them are blending in as normal humans in society today. ","As a result, many nations have created Bladeburner divisions, special units that are tasked with ","investigating and dealing with Synthoid threats."],onDone:()=>{e.toTerminal(),Object(s.a)("Visit the National Security Agency (NSA) to apply for their Bladeburner division! You will need 100 of each combat stat before doing this.")}})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(0),r=a.n(n),i=a(29),o=a(109);const s=window.getComputedStyle;function l(){const e=i.b.Player();return r.a.createElement("div",{id:"unclickable",onClick:function(t){if(!(t.target&&t.target instanceof Element))return;const a=s(t.target).display,n=s(t.target).visibility;"none"===a&&"hidden"===n&&t.isTrusted&&e.giveExploit(o.a.Unclickable)},style:{display:"none",visibility:"hidden"}},"Click on this to upgrade your Source-File -1!")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return h}));var n=a(0),r=a.n(n),i=a(111),o=a(134),s=a(1179),l=a(319),c=a(1),u=a(2);const m=Object(i.a)(e=>Object(o.a)({root:{width:50,padding:e.spacing(2),userSelect:"none"}}));function h(){const e=m();return r.a.createElement("div",{className:e.root,style:{width:"90%"}},r.a.createElement(c.a,{variant:"h4"},"Achievements"),r.a.createElement(s.a,{achievements:Object.values(l.a),playerAchievements:u.a.achievements}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var n=a(0),r=a.n(n),i=a(25),o=a(150),s=a(151),l=a(1),c=a(152),u=a(683),m=a(11),h=a(684),d=a(423);function p({achievements:e,playerAchievements:t}){const a=Object(h.a)(m.a.theme.primary),n=Object(h.a)(m.a.theme.secondary),p=e.map(e=>{var a;return{achievement:e,unlockedOn:null===(a=t.find(t=>t.ID===e.ID))||void 0===a?void 0:a.unlockedOn}}).sort((e,t)=>{var a,n;return(null!==(a=t.unlockedOn)&&void 0!==a?a:0)-(null!==(n=e.unlockedOn)&&void 0!==n?n:0)}),f=p.filter(e=>e.unlockedOn),g=p.filter(e=>!e.unlockedOn&&e.achievement.Secret),y=p.filter(e=>!e.unlockedOn&&!e.achievement.Secret&&e.achievement.Visible&&!e.achievement.Visible()),b=p.filter(e=>!f.map(e=>e.achievement.ID).includes(e.achievement.ID)).filter(e=>!g.map(e=>e.achievement.ID).includes(e.achievement.ID)).filter(e=>!y.map(e=>e.achievement.ID).includes(e.achievement.ID));return r.a.createElement(i.a,{sx:{pr:18,my:2}},r.a.createElement(i.a,{sx:{display:"flex",flexDirection:"column",flexWrap:"wrap"}},f.length>0&&r.a.createElement(o.a,{defaultExpanded:!0,disableGutters:!0,square:!0},r.a.createElement(s.a,null,r.a.createElement(l.a,{variant:"h5",sx:{my:1}},"Acquired (",f.length,"/",p.length,")")),r.a.createElement(c.a,{sx:{pt:2}},f.map(e=>r.a.createElement(u.a,{key:"unlocked_"+e.achievement.ID,achievement:e.achievement,unlockedOn:e.unlockedOn,cssFiltersUnlocked:a,cssFiltersLocked:n})))),b.length>0&&r.a.createElement(o.a,{disableGutters:!0,square:!0},r.a.createElement(s.a,null,r.a.createElement(l.a,{variant:"h5",color:"secondary"},"Locked (",b.length," remaining)")),r.a.createElement(c.a,{sx:{pt:2}},b.map(e=>r.a.createElement(u.a,{key:"locked_"+e.achievement.ID,achievement:e.achievement,cssFiltersUnlocked:a,cssFiltersLocked:n})))),y.length>0&&r.a.createElement(o.a,{disableGutters:!0,square:!0},r.a.createElement(s.a,null,r.a.createElement(l.a,{variant:"h5",color:"secondary"},"Unavailable (",y.length," remaining)")),r.a.createElement(c.a,null,r.a.createElement(l.a,{sx:{mt:1}},y.length," additional achievements hidden behind content you don't have access to."))),g.length>0&&r.a.createElement(o.a,{disableGutters:!0,square:!0},r.a.createElement(s.a,null,r.a.createElement(l.a,{variant:"h5",color:"secondary"},"Secret (",g.length," remaining)")),r.a.createElement(c.a,null,r.a.createElement(l.a,{color:"secondary",sx:{mt:1}},g.map(e=>r.a.createElement("span",{key:"secret_"+e.achievement.ID},r.a.createElement(d.a,{content:e.achievement.ID}),r.a.createElement("br",null))))))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(0),r=a.n(n),i=a(25),o=a(11);function s({achievement:e,unlocked:t,colorFilters:a,size:s}){const[l,c]=Object(n.useState)(!1),u=t?o.a.theme.primarydark:o.a.theme.secondarydark;return e.Icon?r.a.createElement(i.a,{sx:{border:"1px solid "+u,width:s,height:s,m:1,visibility:l?"visible":"hidden"}},r.a.createElement("img",{src:`dist/icons/achievements/${encodeURI(e.Icon)}.svg`,style:{filter:a,width:s,height:s},onLoad:()=>c(!0),alt:e.Name})):r.a.createElement(r.a.Fragment,null)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(0),r=a.n(n),i=a(378);class o extends r.a.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(e,t){console.error(e,t)}render(){return this.state.hasError?r.a.createElement(i.c,{router:this.props.router,softReset:this.props.softReset}):this.props.children}static getDerivedStateFromError(){return{hasError:!0}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(11);function r(){const e=[];return{write:t=>(e.push(t),e.length>n.a.MaxPortCapacity?e.shift():null),tryWrite:t=>!(e.length>=n.a.MaxPortCapacity)&&(e.push(t),!0),read:()=>0===e.length?"NULL PORT DATA":e.shift(),peek:()=>{if(0===e.length)return"NULL PORT DATA";return e.slice()[0]},full:()=>e.length==n.a.MaxPortCapacity,empty:()=>0===e.length,clear:()=>{e.length=0}}}},function(e,t,a){"use strict";function n(e){for(const t in e)e.hasOwnProperty(t)&&delete e[t]}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(335),r=a(2);function i(e){const t="SourceFile"+e.n,a=n.a[t];if(null!=a){switch(e.n){case 1:{let t=0;for(let a=0;a<e.lvl;++a)t+=16/Math.pow(2,a);const a=1+t/100,n=1-t/100;r.a.hacking_chance_mult*=a,r.a.hacking_speed_mult*=a,r.a.hacking_money_mult*=a,r.a.hacking_grow_mult*=a,r.a.hacking_mult*=a,r.a.strength_mult*=a,r.a.defense_mult*=a,r.a.dexterity_mult*=a,r.a.agility_mult*=a,r.a.charisma_mult*=a,r.a.hacking_exp_mult*=a,r.a.strength_exp_mult*=a,r.a.defense_exp_mult*=a,r.a.dexterity_exp_mult*=a,r.a.agility_exp_mult*=a,r.a.charisma_exp_mult*=a,r.a.company_rep_mult*=a,r.a.faction_rep_mult*=a,r.a.crime_money_mult*=a,r.a.crime_success_mult*=a,r.a.hacknet_node_money_mult*=a,r.a.hacknet_node_purchase_cost_mult*=n,r.a.hacknet_node_ram_cost_mult*=n,r.a.hacknet_node_core_cost_mult*=n,r.a.hacknet_node_level_cost_mult*=n,r.a.work_money_mult*=a;break}case 2:{let t=0;for(let a=0;a<e.lvl;++a)t+=24/Math.pow(2,a);const a=1+t/100;r.a.crime_money_mult*=a,r.a.crime_success_mult*=a,r.a.charisma_mult*=a;break}case 3:{let t=0;for(let a=0;a<e.lvl;++a)t+=8/Math.pow(2,a);const a=1+t/100;r.a.charisma_mult*=a,r.a.work_money_mult*=a;break}case 4:break;case 5:{let t=0;for(let a=0;a<e.lvl;++a)t+=8/Math.pow(2,a);const a=1+t/100;r.a.hacking_chance_mult*=a,r.a.hacking_speed_mult*=a,r.a.hacking_money_mult*=a,r.a.hacking_grow_mult*=a,r.a.hacking_mult*=a,r.a.hacking_exp_mult*=a;break}case 6:{let t=0;for(let a=0;a<e.lvl;++a)t+=8/Math.pow(2,a);const a=1+t/100;r.a.strength_exp_mult*=a,r.a.defense_exp_mult*=a,r.a.dexterity_exp_mult*=a,r.a.agility_exp_mult*=a,r.a.strength_mult*=a,r.a.defense_mult*=a,r.a.dexterity_mult*=a,r.a.agility_mult*=a;break}case 7:{let t=0;for(let a=0;a<e.lvl;++a)t+=8/Math.pow(2,a);const a=1+t/100;r.a.bladeburner_max_stamina_mult*=a,r.a.bladeburner_stamina_gain_mult*=a,r.a.bladeburner_analysis_mult*=a,r.a.bladeburner_success_chance_mult*=a;break}case 8:{let t=0;for(let a=0;a<e.lvl;++a)t+=12/Math.pow(2,a);const a=1+t/100;r.a.hacking_grow_mult*=a;break}case 9:{let t=0;for(let a=0;a<e.lvl;++a)t+=8/Math.pow(2,a);const a=1+t/100,n=1-t/100;r.a.hacknet_node_core_cost_mult*=n,r.a.hacknet_node_level_cost_mult*=n,r.a.hacknet_node_money_mult*=a,r.a.hacknet_node_purchase_cost_mult*=n,r.a.hacknet_node_ram_cost_mult*=n;break}case 10:break;case 11:{let t=0;for(let a=0;a<e.lvl;++a)t+=32/Math.pow(2,a);const a=1+t/100;r.a.work_money_mult*=a,r.a.company_rep_mult*=a;break}case 12:case 13:break;default:console.error("Invalid source file number: "+e.n)}a.owned=!0}else console.error("Invalid source file number: "+e.n)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(2),r=a(109);function i(){if(n.a.exploits&&0===n.a.exploits.length)return;n.a.exploits=Object(r.c)(n.a.exploits);const e=Math.pow(1.001,n.a.exploits.length),t=Math.pow(.999,n.a.exploits.length);n.a.hacking_chance_mult*=e,n.a.hacking_speed_mult*=e,n.a.hacking_money_mult*=e,n.a.hacking_grow_mult*=e,n.a.hacking_mult*=e,n.a.strength_mult*=e,n.a.defense_mult*=e,n.a.dexterity_mult*=e,n.a.agility_mult*=e,n.a.charisma_mult*=e,n.a.hacking_exp_mult*=e,n.a.strength_exp_mult*=e,n.a.defense_exp_mult*=e,n.a.dexterity_exp_mult*=e,n.a.agility_exp_mult*=e,n.a.charisma_exp_mult*=e,n.a.company_rep_mult*=e,n.a.faction_rep_mult*=e,n.a.crime_money_mult*=e,n.a.crime_success_mult*=e,n.a.hacknet_node_money_mult*=e,n.a.hacknet_node_purchase_cost_mult*=t,n.a.hacknet_node_ram_cost_mult*=t,n.a.hacknet_node_core_cost_mult*=t,n.a.hacknet_node_level_cost_mult*=t,n.a.work_money_mult*=e}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(144);function r(e,t,a,r,i){0!==i.length?1===i.length&&Object(n.e)(i[0]+"")?e.print("Set alias "+i[0]):2===i.length&&"-g"===i[0]&&Object(n.e)(i[1]+"",!0)?e.print("Set global alias "+i[1]):e.error('Incorrect usage of alias command. Usage: alias [-g] [aliasname="value"]'):Object(n.f)()}},function(e,t,a){"use strict";function n(e,t,a,n,r){0===r.length?e.startAnalyze(a):e.error("Incorrect usage of analyze command. Usage: analyze")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(44),r=a(87);function i(e,t,a,i,o){if(0!==o.length)return void e.error("Incorrect usage of backdoor command. Usage: backdoor");i instanceof n.a||e.error("Can only backdoor normal servers");const s=i;s.purchasedByPlayer?e.error("Cannot use backdoor on your own machines! You are currently connected to your home PC or one of your purchased servers"):s.hasAdminRights?s.requiredHackingSkill>a.hacking?e.error("Your hacking skill is not high enough to use backdoor on this machine. Try analyzing the machine to determine the required hacking skill"):s instanceof r.a?e.error("Cannot use backdoor on this type of Server"):e.startBackdoor(a):e.error("You do not have admin rights for this machine! Cannot backdoor")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(432),r=a(98),i=a(24);function o(e,t,a,o,s){if(!Object(i.d)(r.a.DarkWeb))return void e.error("You need to be able to connect to the Dark Web to use the buy command. (Maybe there's a TOR router you can buy somewhere)");if(1!=s.length)return e.print("Incorrect number of arguments. Usage: "),e.print("buy -l"),e.print("buy -a"),void e.print("buy [item name]");const l=s[0]+"";"-l"==l||"-1"==l||"--list"==l?Object(n.d)():"-a"==l||"--all"==l?Object(n.a)():Object(n.b)(l)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(255),r=a(531),i=a(15);function o(e,t,a,o,s){if(1!==s.length)return void e.error("Incorrect usage of cat command. Usage: cat [file]");const l=s[0]+"",c=e.getFilepath(l);if(c.endsWith(".msg")||c.endsWith(".lit")||c.endsWith(".txt")||c.endsWith(".script")||c.endsWith(".js")||c.endsWith(".ns")){if(c.endsWith(".msg")||c.endsWith(".lit"))for(let e=0;e<o.messages.length;++e){if(c.endsWith(".lit")&&o.messages[e]===c){const t=o.messages[e];if(t.endsWith(".msg"))throw new Error(".lit file should not be a .msg");return void Object(r.a)(t)}if(c.endsWith(".msg")){const t=o.messages[e];if(t!==c)continue;return void Object(n.e)(t)}}else if(c.endsWith(".txt")){const t=e.getTextFile(a,l);if(null!=t)return void t.show()}else if(c.endsWith(".script")||c.endsWith(".js")||c.endsWith(".ns")){const t=e.getScript(a,l);if(null!=t)return void Object(i.a)(`${t.filename}<br /><br />${t.code}`)}e.error("No such file "+c)}else e.error("Only .msg, .txt, .lit, .script, .js, and .ns files are viewable with cat (filename must end with .msg, .txt, .lit, .script, .js, or .ns)")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(78);function r(e,t,a,r,i){if(i.length>1)e.error("Incorrect number of arguments. Usage: cd [dir]");else{let t=1===i.length?i[0]+"":"/",r="";if("/"===t)r="/";else{if(t=Object(n.l)(t),r=Object(n.c)(t,e.cwd()),null===r||""===r)return void e.error("Invalid path. Failed to change directories");const i=a.getCurrentServer();if(!i.scripts.some(e=>e.filename.startsWith(r+""))&&!i.textFiles.some(e=>e.fn.startsWith(r+"")))return void e.error("Invalid path. Failed to change directories")}e.setcwd(r)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(221),r=a(91);function i(e,t,a,i,o){if(o.length<1)e.error("Incorrect number of arguments. Usage: check [script] [arg1] [arg2]...");else{const t=e.getFilepath(o[0]+"");if(!Object(r.a)(t))return void e.error(`'check' can only be called on scripts files (filename must end with ${r.b.join(", ")})`);const a=Object(n.a)(t,o.slice(1),i);if(null==a)return void e.error(`No script named ${t} is running on the server`);a.displayLog()}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(123),r=a(24),i=a(44);function o(e,t,a,o,s){if(1!==s.length)return void e.error("Incorrect usage of connect command. Usage: connect [hostname]");const l=s[0]+"";for(let t=0;t<o.serversOnNetwork.length;t++){const r=Object(n.a)(o,t);if(null===r)throw new Error("Server on network should not be null");if(r.hostname==l)return void e.connectToServer(a,l)}const c=Object(r.d)(l);if(null!==c){if(c instanceof i.a&&c.backdoorInstalled)return void e.connectToServer(a,l);e.error("Cannot directly connect to "+l)}else e.error("Host not found")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(91),r=a(78);function i(e,t,a,i,o){try{if(2!==o.length)return void e.error("Incorrect usage of cp command. Usage: cp [src] [dst]");const t=e.getFilepath(o[0]+"");if(null===t)return void e.error("src cannot be a directory");const s=Object(r.f)(o[1]+"",t,e.cwd());if(null===s)return void e.error("error parsing dst file");const l=e.getFilepath(s);if(Object(r.a)(t,l))return void e.error("src and dst cannot be the same");const c=t.slice(t.lastIndexOf("."));if(c!==l.slice(l.lastIndexOf(".")))return void e.error("src and dst must have the same extension.");if(!Object(n.a)(t)&&!t.endsWith(".txt"))return void e.error("cp only works for scripts and .txt files");if(t.endsWith(".txt")){let a=null;for(let e=0;e<i.textFiles.length;++e)if(Object(r.a)(i.textFiles[e].fn,t)){a=i.textFiles[e];break}if(null===a)return e.error("No such file exists!");const n=i.writeToTextFile(l,a.text);return n.success?n.overwritten?(e.print(`WARNING: ${l} already exists and will be overwriten`),void e.print(l+" overwritten")):void e.print(l+" copied"):void e.error("cp failed")}let u=null;for(let e=0;e<i.scripts.length;++e)if(Object(r.a)(i.scripts[e].filename,t)){u=i.scripts[e];break}if(null==u)return void e.error("cp failed. No such script exists");const m=i.writeToScriptFile(a,l,u.code);if(!m.success)return void e.error("cp failed");if(m.overwritten)return e.print(`WARNING: ${l} already exists and will be overwritten`),void e.print(l+" overwritten");e.print(l+" copied")}catch(t){e.error(t+"")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(91),r=a(1196),i=a.n(r),o=a(1197),s=a.n(o);function l(e,t,a,r,o){try{if(1!==o.length)return void e.error("Incorrect usage of download command. Usage: download [script/text file]");const t=o[0]+"";if(t.startsWith("*")){const a=1==t.length||"*.*"===t?null:t.slice(1),o=new s.a,l=(e,t)=>{for(let n=0;n<t.length;++n){let r=e[n];r.startsWith("/")&&(r=r.slice(1)),a&&!r.endsWith(a)||o.file(r,new Blob([t[n]],{type:"text/plain"}))}};if(a&&!Object(n.a)(a)||l(r.scripts.map(e=>e.filename),r.scripts.map(e=>e.code)),a&&!a.endsWith(".txt")||l(r.textFiles.map(e=>e.fn),r.textFiles.map(e=>e.text)),0==Object.keys(o.files).length)return e.error("No files match the pattern "+t);const c=`bitburner${Object(n.a)(t)?"Scripts":"*.txt"===t?"Texts":"Files"}.zip`;return void o.generateAsync({type:"blob"}).then(e=>i.a.saveAs(e,c))}if(Object(n.a)(t)){const n=e.getScript(a,t);if(null!=n)return n.download()}else{if(!t.endsWith(".txt"))return void e.error("Cannot download this filetype");{const n=e.getTextFile(a,t);if(null!=n)return n.download()}}return void e.error(t+" does not exist")}catch(t){return void e.error(t+"")}}},,,function(module,__webpack_exports__,__webpack_require__){"use strict";function expr(terminal,router,player,server,args){if(0===args.length)return void terminal.error("Incorrect usage of expr command. Usage: expr [math expression]");const expr=args.join(""),sanitizedExpr=expr.replace(/s+/g,"").replace(/[^-()\d/*+.]/g,"");let result;try{result=eval(sanitizedExpr)}catch(e){return void terminal.error("Could not evaluate expression: "+sanitizedExpr)}terminal.print(result)}__webpack_require__.d(__webpack_exports__,"a",(function(){return expr}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(4);function r(e,t,a,r,i){if(0!==i.length)return void e.error("Incorrect usage of free command. Usage: free");const o=n.a.formatRAM(a.getCurrentServer().maxRam),s=n.a.formatRAM(a.getCurrentServer().ramUsed),l=n.a.formatRAM(a.getCurrentServer().maxRam-a.getCurrentServer().ramUsed),c=Math.max(o.length,Math.max(s.length,l.length)),u=n.a.formatPercentage(a.getCurrentServer().ramUsed/a.getCurrentServer().maxRam);e.print(`Total: ${" ".repeat(c-o.length)}${o}`),e.print(`Used: ${" ".repeat(c-s.length)}${s} (${u})`),e.print(`Available: ${" ".repeat(c-l.length)}${l}`)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(44);function r(e,t,a,r,i){if(0!==i.length)return void e.error("Incorrect usage of grow command. Usage: grow");r instanceof n.a||e.error("Cannot grow your own machines! You are currently connected to your home PC or one of your purchased servers");const o=r;o.purchasedByPlayer?e.error("Cannot grow your own machines! You are currently connected to your home PC or one of your purchased servers"):o.hasAdminRights?o.requiredHackingSkill>a.hacking?e.error("Your hacking skill is not high enough to attempt hacking this machine. Try analyzing the machine to determine the required hacking skill"):e.startGrow(a):e.error("You do not have admin rights for this machine! Cannot grow")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(44);function r(e,t,a,r,i){if(0!==i.length)return void e.error("Incorrect usage of hack command. Usage: hack");r instanceof n.a||e.error("Cannot hack your own machines! You are currently connected to your home PC or one of your purchased servers");const o=r;o.purchasedByPlayer?e.error("Cannot hack your own machines! You are currently connected to your home PC or one of your purchased servers"):o.hasAdminRights?o.requiredHackingSkill>a.hacking?e.error("Your hacking skill is not high enough to attempt hacking this machine. Try analyzing the machine to determine the required hacking skill"):e.startHack(a):e.error("You do not have admin rights for this machine! Cannot hack")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(480);function r(e,t,a,r,i){if(0===i.length||1===i.length)if(0===i.length)n.b.forEach(t=>e.print(t));else{const t=i[0]+"",a=n.a[t];if(null==a)return void e.error("No help topics match '"+t+"'");a.forEach(t=>e.print(t))}else e.error("Incorrect usage of help command. Usage: help")}},function(e,t,a){"use strict";function n(e,t,a,n,r){0===r.length?(a.getCurrentServer().isConnectedTo=!1,a.currentServer=a.getHomeComputer().hostname,a.getCurrentServer().isConnectedTo=!0,e.print("Connected to home"),e.setcwd("/")):e.error("Incorrect usage of home command. Usage: home")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";function n(e,t,a,n,r){0===r.length?e.print(a.getCurrentServer().hostname):e.error("Incorrect usage of hostname command. Usage: hostname")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(132);function r(e,t,a,r,i){try{if(i.length<1)return void e.error("Incorrect usage of kill command. Usage: kill [scriptname] [arg1] [arg2]...");if("boolean"==typeof i[0])return;if("number"==typeof i[0]){const t=i[0];return void(Object(n.a)(t)?e.print("Killing script with PID "+t):e.error(`Failed to kill script with PID ${t}. No such script is running`))}const t=e.getFilepath(i[0]),a=r.getRunningScript(t,i.slice(1));if(null==a)return void e.error("No such script is running. Nothing to kill");Object(n.a)(a,r.hostname,!1),e.print("Killing "+t)}catch(t){e.error(t+"")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(132),r=a(275);function i(e,t,a,i){for(let e=i.runningScripts.length-1;e>=0;--e)Object(n.a)(i.runningScripts[e],i.hostname,!1);r.a.emit(),e.print("Killing all running scripts")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(134),r=a(111),i=a(241),o=a(0),s=a.n(o),l=a(78);function c(e,t,a,o,c){const u=c.length;function m(){e.error("Incorrect usage of ls command. Usage: ls [dir] [| grep pattern]")}if(u>4||2===u)return m();let h="",d=e.cwd();if(d.endsWith("/")||(d+="/"),u>=3){if("grep"!==c[u-2]||"|"!==c[u-3])return m();h=c[u-1]+""}if(u>=1&&"|"!==c[0]){const t=Object(l.c)(c[0]+"",e.cwd());if(d=t||"",null!=d&&(d.endsWith("/")||(d+="/"),!Object(l.i)(d)))return m()}"/"===d&&(d="");const p=[],f=[],g=[],y=[],b=[],E=[];function k(e,t){let a=e;if(d){if(!e.startsWith(d))return;a=e.slice(d.length,e.length)}if(!h||a.includes(h))if(a.includes("/")){const e=Object(l.g)(a);if(h&&!e.includes(h))return;E.includes(e)||E.push(e)}else t.push(a)}const v=a.getCurrentServer();for(const e of v.programs)k(e,p);for(const e of v.scripts)k(e.filename,f);for(const e of v.textFiles)k(e.fn,g);for(const e of v.contracts)k(e.fn,y);for(const e of v.messages)k(e,b);function _({row:o,prefix:l,hostname:c}){const u=Object(r.a)(e=>Object(n.a)({scriptLinksWrap:{display:"flex",color:e.palette.warning.main},scriptLink:{cursor:"pointer",textDecorationLine:"underline",paddingRight:"1.15em","&:last-child":{padding:0}}}))(),m=o.split(" ").map(e=>e.trim()).filter(e=>!!e);return s.a.createElement("span",{className:u.scriptLinksWrap},m.map(n=>s.a.createElement("span",{key:n,className:u.scriptLink,onClick:()=>function(n){var r;if(a.getCurrentServer().hostname!==c)return e.error(`File is not on this server, connect to ${c} and try again`);n.startsWith("/")&&(n=n.slice(1));const o=e.getFilepath(`${l}${n}`),s=Object(i.toString)(null===(r=e.getScript(a,o))||void 0===r?void 0:r.code);t.toScriptEditor({[o]:s})}(n)},n)))}function w(t,a,n){const r=Math.max(...t.map(e=>e.length))+1,i=Math.floor(80/r);for(let l=0;l<t.length;l++){let c="";for(let e=0;e<i&&l<t.length;e++)c+=t[l],c+=" ".repeat(r*(e+1)-c.length),l++;l--,a?n?e.printRaw(s.a.createElement(_,{row:c,prefix:d,hostname:o.hostname})):e.printRaw(s.a.createElement("span",{style:a},c)):e.print(c)}}p.sort(),f.sort(),g.sort(),y.sort(),b.sort(),E.sort();const S=[{segments:E,style:{color:"cyan"}},{segments:b},{segments:g},{segments:p},{segments:y},{segments:f,style:{color:"yellow",fontStyle:"bold"},linked:!0}].filter(e=>e.segments.length>0);for(let e=0;e<S.length;e++)w(S[e].segments,S[e].style,S[e].linked)}},function(e,t,a){"use strict";function n(e,t,a){e.print(a.getCurrentServer().cpuCores+" Core(s)")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(4),r=a(11);function i(e,t,a,i,o){try{var s,l;if(1!==o.length&&3!==o.length)return void e.error("Incorrect usage of mem command. usage: mem [scriptname] [-t] [number threads]");const t=o[0]+"";let i=1;if(3===o.length&&"-t"===o[1]&&(i=Math.round(parseInt(o[2]+"")),isNaN(i)||i<1))return void e.error("Invalid number of threads specified. Number of threads must be greater than 1");const c=e.getScript(a,t);if(null==c)return void e.error("mem failed. No such script exists!");const u=c.ramUsage*i;e.print(`This script requires ${n.a.formatRAM(u)} of RAM to run for ${i} thread(s)`);const m=null!==(s=null===(l=c.ramUsageEntries)||void 0===l?void 0:l.sort((e,t)=>t.cost-e.cost))&&void 0!==s?s:[],h=r.a.UseIEC60027_2?9:8;for(const t of m)e.print(`${n.a.formatRAM(t.cost*i).padStart(h)} | ${t.name} (${t.type})`);u>0&&0===m.length&&e.warn("You might have to open & save this script to see the detailed RAM usage information.")}catch(t){e.error(t+"")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(91),r=a(209),i=a(78);function o(e,t,a,o,s){if(2===s.length)try{const t=s[0]+"",l=s[1]+"";if(!Object(n.a)(t)&&!t.endsWith(".txt"))return void e.error("'mv' can only be used on scripts and text files (.txt)");const c=e.getFile(a,t);if(null==c)return void e.error(`Source file ${t} does not exist`);const u=e.getFilepath(t),m=Object(i.f)(l,t,e.cwd());if(null===m)return void e.error("error parsing dst file");const h=e.getFile(a,m),d=e.getFilepath(m);if(Object(i.a)(u,d))return void e.error("Source and destination files are the same file");if(Object(n.a)(t)){const t=c;if(!Object(n.a)(d))return void e.error("Source and destination files must have the same type");if(o.isRunning(u))return void e.error("Cannot use 'mv' on a script that is running");if(null!=h){if(!o.removeFile(d).res)return void e.error("Something went wrong...please contact game dev (probably a bug)");e.print("Warning: The destination file was overwritten")}t.filename=d}else if(c instanceof r.a){const t=c;if(!m.endsWith(".txt"))return void e.error("Source and destination files must have the same type");if(null!=h){if(!o.removeFile(d).res)return void e.error("Something went wrong...please contact game dev (probably a bug)");e.print("Warning: The destination file was overwritten")}t.fn=d}}catch(t){e.error(t+"")}else e.error("Incorrect number of arguments. Usage: mv [src] [dest]")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(580);function r(e,t,a,r,i){return Object(n.a)("nano",{terminal:e,router:t,player:a,server:r,args:i})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new class{constructor(){this.positions=new Map}saveCursor(e,t){this.positions.set(e,t)}getCursor(e){const t=this.positions.get(e);return t||{row:-1,column:-1}}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(342);function r(e,t,a,r,i){let o;try{o=n({"--grep":String,"-g":"--grep"},{argv:i})}catch(t){return void e.error("Incorrect usage of ps command. Usage: ps [-g, --grep pattern]")}const s=o["--grep"];if(s){const t=new RegExp(s.toString()),a=r.runningScripts.filter(e=>t.test(e.filename));for(let t=0;t<a.length;t++){const n=a[t];let r=`(PID - ${n.pid}) ${n.filename}`;for(let e=0;e<n.args.length;++e)r+=" "+n.args[e].toString();e.print(r)}}if(0===i.length)for(let t=0;t<r.runningScripts.length;t++){const a=r.runningScripts[t];let n=`(PID - ${a.pid}) ${a.filename}`;for(let e=0;e<a.args.length;++e)n+=" "+a.args[e].toString();e.print(n)}}},function(e,t,a){"use strict";function n(e,t,a,n,r){if(1!==r.length)return void e.error("Incorrect number of arguments. Usage: rm [program/script]");let i,o={res:!0,msg:""};try{i=e.getFilepath(r[0]+""),o=n.removeFile(i)}catch(e){o={res:!1,msg:"No such file exists"}}!o.res&&o.msg&&e.error(o.msg)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(91),r=a(1216),i=a(1217);function o(e,t,a,o,s){if(s.length<1)e.error("Incorrect number of arguments. Usage: run [program/script] [-t] [num threads] [arg1] [arg2]...");else{const l=s[0]+"";Object(n.a)(l)?Object(r.a)(e,t,a,o,s):l.endsWith(".cct")?e.runContract(a,l):Object(i.a)(e,t,a,o,s)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(167),r=a(181),i=a(336),o=a(221),s=a(342),l=a(4);function c(e,t,a,c,u){if(u.length<1)return void e.error("Bug encountered with Terminal.runScript(). Command array has a length of less than 1: "+u);const m=e.getFilepath(u[0]+""),h={"--tail":Boolean,"-t":Number},d=s(h,{permissive:!0,argv:u.slice(1)}),p=Math.round(parseFloat(d["-t"])),f=!0===d["--tail"];if(void 0!==d["-t"]&&(p<0||isNaN(p)))return void e.error("Invalid number of threads specified. Number of threads must be greater than 0");const g=!isNaN(p)&&p>0?p:1,y=d._;if(null==Object(o.a)(m,y,c)){for(let t=0;t<c.scripts.length;t++){if(c.scripts[t].filename!==m)continue;const o=c.scripts[t];o.server=a.getCurrentServer().hostname;const s=o.ramUsage*g,u=c.maxRam-c.ramUsed;if(!c.hasAdminRights)return void e.error("Need root access to run script");if(s>u)return void e.error("This machine does not have enough RAM to run this script with "+g+" threads. Script requires "+l.a.formatRAM(s)+" of RAM");const h=new i.a(o,y);h.threads=g;return Object(r.e)(a,h,c)?(e.print(`Running script with ${g} thread(s), pid ${h.pid} and args: ${JSON.stringify(y)}.`),h.filename.endsWith(".ns")&&e.warn(".ns files are deprecated, please rename everything to .js"),void(f&&n.b.emit(h))):void e.error("Failed to start script")}e.error("No such script")}else e.error("This script is already running with the same args. Cannot run multiple instances with the same args")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(61);function r(e,t,a,r,i){if(i.length<1)return;const o=i[0]+"";if(a.hasProgram(o)){if(!(i.length<1)){for(const s of Object.values(n.a))if(s.name.toLocaleLowerCase()===o.toLocaleLowerCase())return void s.run(t,e,a,r,i.slice(1).map(e=>e+""));e.error("Invalid executable. Cannot be run")}}else e.error(`No such (exe, script, js, ns, or cct) file! (Only programs that exist on your home computer or scripts on ${a.getCurrentServer().hostname} can be run)`)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(123);function r(e,t,a,r,i){if(0!==i.length)return void e.error("Incorrect usage of netstat/scan command. Usage: netstat/scan");const o=a.getCurrentServer(),s=o.serversOnNetwork.map((e,t)=>{const a=Object(n.a)(o,t);if(null===a)throw new Error("Server should not be null");return{hostname:a.hostname,ip:a.ip,hasRoot:a.hasAdminRights?"Y":"N"}});s.unshift({hostname:"Hostname",ip:"IP",hasRoot:"Root Access"});const l=Math.max(...s.map(e=>e.hostname.length)),c=Math.max(...s.map(e=>e.ip.length));for(const t of s){if(!t)continue;let a=t.hostname;a+=" ".repeat(l-t.hostname.length+1),a+=t.ip,a+=" ".repeat(c-t.ip.length+1),a+=t.hasRoot,e.print(a)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(61);function r(e,t,a,r,i){if(0===i.length)e.executeScanAnalyzeCommand(a,1);else{if(i.length>2)return void e.error("Incorrect usage of scan-analyze command. usage: scan-analyze [depth]");let t=!1;2===i.length&&"-a"===i[1]&&(t=!0);const r=parseInt(i[0]+"");if(isNaN(r)||r<0)return void e.error("Incorrect usage of scan-analyze command. depth argument must be positive numeric");if(r>3&&!a.hasProgram(n.a.DeepscanV1.name)&&!a.hasProgram(n.a.DeepscanV2.name))return void e.error("You cannot scan-analyze with that high of a depth. Maximum depth is 3");if(r>5&&!a.hasProgram(n.a.DeepscanV2.name))return void e.error("You cannot scan-analyze with that high of a depth. Maximum depth is 5");if(r>10)return void e.error("You cannot scan-analyze with that high of a depth. Maximum depth is 10");e.executeScanAnalyzeCommand(a,r,t)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(24),r=a(91);function i(e,t,a,i,o){try{if(2!==o.length)return void e.error("Incorrect usage of scp command. Usage: scp [file] [destination hostname]");const t=e.getFilepath(o[0]+"");if(!t.endsWith(".lit")&&!Object(r.a)(t)&&!t.endsWith(".txt"))return void e.error("scp only works for scripts, text files (.txt), and literature files (.lit)");const s=Object(n.d)(o[1]+"");if(null==s)return void e.error(`Invalid destination. ${o[1]} not found`);if(t.endsWith(".lit")){let a=!1;for(let e=0;e<i.messages.length;++e)if(i.messages[e]==t){a=!0;break}if(!a)return e.error("No such file exists!");for(let a=0;a<s.messages.length;++a)if(s.messages[a]===t)return void e.print(t+" copied over to "+s.hostname);return s.messages.push(t),e.print(t+" copied over to "+s.hostname)}if(t.endsWith(".txt")){let a=null;for(let e=0;e<i.textFiles.length;++e)if(i.textFiles[e].fn===t){a=i.textFiles[e];break}if(null===a)return e.error("No such file exists!");const n=s.writeToTextFile(a.fn,a.text);return n.success?n.overwritten?(e.print(`WARNING: ${t} already exists on ${s.hostname} and will be overwriten`),void e.print(`${t} overwritten on ${s.hostname}`)):void e.print(`${t} copied over to ${s.hostname}`):void e.error("scp failed")}let l=null;for(let e=0;e<i.scripts.length;++e)if(t==i.scripts[e].filename){l=i.scripts[e];break}if(null==l)return void e.error("scp failed. No such script exists");const c=s.writeToScriptFile(a,t,l.code);if(!c.success)return void e.error("scp failed");if(c.overwritten)return e.print(`WARNING: ${t} already exists on ${s.hostname} and will be overwritten`),void e.print(`${t} overwritten on ${s.hostname}`);e.print(`${t} copied over to ${s.hostname}`)}catch(t){e.error(t+"")}}},function(e,t,a){"use strict";function n(e,t,a,n,r){0===r.length?n.hasAdminRights?e.print("You have ROOT access to this machine"):e.print("You do NOT have root access to this machine"):e.error("Incorrect number of arguments. Usage: sudov")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(221),r=a(91),i=a(297),o=a(167);function s(e,t,a,s,l){try{if(l.length<1)e.error("Incorrect number of arguments. Usage: tail [script] [arg1] [arg2]...");else if("string"==typeof l[0]){const t=e.getFilepath(l[0]);if(!Object(r.a)(t))return void e.error(`tail can only be called on ${r.b.join(", ")} files, or by PID`);const a=[];for(let e=1;e<l.length;++e)a.push(l[e]);for(let e=0;e<s.runningScripts.length;++e)if(s.runningScripts[e].filename===t&&Object(i.a)(s.runningScripts[e].args,a))return void o.b.emit(s.runningScripts[e]);const n=[];for(let e=0;e<s.runningScripts.length;++e){if(s.runningScripts[e].args.length<a.length)continue;const r=s.runningScripts[e].args.slice(0,a.length);s.runningScripts[e].filename===t&&Object(i.a)(r,a)&&n.push(s.runningScripts[e])}if(1===n.length)return void o.b.emit(n[0]);if(n.length>1){e.error("Found several potential candidates:");for(const t of n)e.error(`${t.filename} ${t.args.join(" ")}`);return void e.error("Script arguments need to be specified.")}e.error(`No script named ${t} is running on the server`)}else if("number"==typeof l[0]){const t=Object(n.b)(l[0],s);if(null==t)return void e.error(`No script with PID ${l[0]} is running on the server`);o.b.emit(t)}}catch(t){e.error(t+"")}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(579),r=a(4);function i(e,t,a,i,o){if(0!==o.length)return void e.error("Incorrect usage of top command. Usage: top");const s=`Script${" ".repeat(40-"Script".length)}PID${" ".repeat(10-"PID".length)}Threads${" ".repeat(16-"Threads".length)}RAM Usage`;e.print(s);const l=i.runningScripts;for(let t=0;t<l.length;t++){const a=l[t],i=Math.max(0,40-a.filename.length),o=" ".repeat(i),s=Math.max(0,10-(a.pid+"").length),c=" ".repeat(s),u=Math.max(0,16-(a.threads+"").length),m=" ".repeat(u),h=r.a.formatRAM(Object(n.a)(a)*a.threads),d=[a.filename,o,a.pid,c,a.threads,m,h].join("");e.print(d)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(144);function r(e,t,a,r,i){1===i.length?Object(n.g)(i[0]+"")?e.print("Removed alias "+i[0]):e.error("No such alias exists: "+i[0]):e.error("Incorrect usage of unalias name. Usage: unalias [alias]")}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(580);function r(e,t,a,r,i){return Object(n.a)("vim",{terminal:e,router:t,player:a,server:r,args:i},{vim:!0})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(44);function r(e,t,a,r,i){if(0!==i.length)return void e.error("Incorrect usage of weaken command. Usage: weaken");r instanceof n.a||e.error("Cannot weaken your own machines! You are currently connected to your home PC or one of your purchased servers");const o=r;o.purchasedByPlayer?e.error("Cannot weaken your own machines! You are currently connected to your home PC or one of your purchased servers"):o.hasAdminRights?o.requiredHackingSkill>a.hacking?e.error("Your hacking skill is not high enough to attempt hacking this machine. Try analyzing the machine to determine the required hacking skill"):e.startWeaken(a):e.error("You do not have admin rights for this machine! Cannot weaken")}},function(e,t,a){"use strict";(function(e){a.d(t,"a",(function(){return r}));var n=a(91);function r(t,a,r,i,o){if(2!==o.length)return void t.error("Incorrect usage of wget command. Usage: wget [url] [target file]");const s=o[0]+"",l=t.getFilepath(o[1]+"");if(!Object(n.a)(l)&&!l.endsWith(".txt"))return t.error("wget failed: Invalid target file. Target file must be script or text file");e.get(s,(function(e){let a;return a=Object(n.a)(l)?i.writeToScriptFile(r,l,e):i.writeToTextFile(l,e),a.success?a.overwritten?t.print("wget successfully retrieved content and overwrote "+l):t.print("wget successfully retrieved content to new file "+l):t.error("wget failed")}),"text").fail((function(e){return t.error("wget failed: "+JSON.stringify(e))}))}}).call(this,a(705))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(2),r=a(109);function i(){!function(){if(n.a.exploits.includes(r.a.PrototypeTampering))return;setInterval((function(){"5.5e+1"!==55..toExponential()&&n.a.giveExploit(r.a.PrototypeTampering)}),9e5)}(),function(){if(n.a.exploits.includes(r.a.TimeCompression))return;let e=performance.now();window.setTimeout((function t(){const a=performance.now();a-e<500?n.a.giveExploit(r.a.TimeCompression):(e=a,window.setTimeout(t,15e3))}),15e3)}()}},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(232),r=a(103),i=a(15);function o(){window.addEventListener("unhandledrejection",(function(e){if(Object(r.a)(e.reason)){const t=e.reason.split("|DELIMITER|"),a=t[1],n=t[2],r=t[3];let o=`UNCAUGHT PROMISE ERROR<br>You forgot to await a promise<br>${n}@${a}<br>`;o+="<br>",o+=r,Object(i.a)(o)}else if(e.reason instanceof n.a){const t=`UNCAUGHT PROMISE ERROR<br>You forgot to await a promise<br>${e.reason.name}@${e.reason.hostname}<br>Maybe hack / grow / weaken ?`;Object(i.a)(t)}}))}},,function(e,t,a){"use strict";(function(e){a.d(t,"a",(function(){return u}));var n=a(2),r=a(91),i=a(207),o=a(78),s=a(83),l=a(179),c=a(24);function u(){navigator.userAgent.toLowerCase().indexOf(" electron/")>-1&&(document.achievements=[],document.saveFile=function(t,a){t=t.replace(/\/\/+/g,"/"),(t=Object(o.k)(t)).includes("/")&&(t="/"+Object(o.k)(t)),a=e.from(a,"base64").toString();const s=Object(c.d)("home");if(null===s)return"'home' server not found.";if(Object(r.a)(t)){for(let e=0;e<s.scripts.length;e++)if(t==s.scripts[e].filename)return s.scripts[e].saveScript(n.a,t,a,"home",s.scripts),"written";const e=new i.a;return e.saveScript(n.a,t,a,"home",s.scripts),s.scripts.push(e),"written"}return"not a script file"},function(){const e={terminal:(e,t)=>{const a={info:s.a.info,warn:s.a.warn,error:s.a.error,success:s.a.success};let n;t&&(n=a[t]),n||(n=s.a.print),n.bind(s.a)(e)},toast:(e,t,a=2e3)=>l.b.emit(e,t,a)};window.appNotifier=e}())}}).call(this,a(725).Buffer)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),i=a(99),o=a.n(i),s=a(182),l=a(637),c=a(1231);function u(){Object(s.c)(),o.a.render(r.a.createElement(s.a,null,r.a.createElement(l.a,null)),document.getElementById("root"))}Object(c.a)(),globalThis.React=r.a,globalThis.ReactDOM=o.a,o.a.render(r.a.createElement(s.a,null,r.a.createElement(l.a,null)),document.getElementById("root")),s.b.subscribe(u),location.href.startsWith("file://")||(window.onbeforeunload=function(){return"Your work will be lost."})}]);
|
||
//# sourceMappingURL=main.bundle.js.map |