diff --git a/assets/Steam/achievements/sf1.1-.png b/assets/Steam/achievements/sf1.1-.png
new file mode 100644
index 000000000..40e109783
Binary files /dev/null and b/assets/Steam/achievements/sf1.1-.png differ
diff --git a/assets/Steam/achievements/sf1.1.png b/assets/Steam/achievements/sf1.1.png
new file mode 100644
index 000000000..d4063d08e
Binary files /dev/null and b/assets/Steam/achievements/sf1.1.png differ
diff --git a/assets/Steam/achievements/sf1.1.svg b/assets/Steam/achievements/sf1.1.svg
new file mode 100644
index 000000000..ccaffc360
--- /dev/null
+++ b/assets/Steam/achievements/sf1.1.svg
@@ -0,0 +1,73 @@
+
+
+
+
diff --git a/assets/Steam/achievements/sf1.2-.png b/assets/Steam/achievements/sf1.2-.png
new file mode 100644
index 000000000..835daf20f
Binary files /dev/null and b/assets/Steam/achievements/sf1.2-.png differ
diff --git a/assets/Steam/achievements/sf1.2.png b/assets/Steam/achievements/sf1.2.png
new file mode 100644
index 000000000..236bd39b3
Binary files /dev/null and b/assets/Steam/achievements/sf1.2.png differ
diff --git a/assets/Steam/achievements/sf1.2.svg b/assets/Steam/achievements/sf1.2.svg
new file mode 100644
index 000000000..ee6aa5619
--- /dev/null
+++ b/assets/Steam/achievements/sf1.2.svg
@@ -0,0 +1,73 @@
+
+
+
+
diff --git a/dist/bitburner.d.ts b/dist/bitburner.d.ts
index 6ca0c461c..a0e9948e8 100644
--- a/dist/bitburner.d.ts
+++ b/dist/bitburner.d.ts
@@ -4326,6 +4326,26 @@ export declare interface Singularity {
* @returns True if the installation was successful.
*/
installBackdoor(): Promise;
+
+ /**
+ * Check if the player is focused.
+ * @remarks
+ * RAM cost: 0.1 GB
+ *
+ * Singularity - Level 2
+ *
+ * @returns True if the player is focused.
+ */
+ isFocused(): void;
+
+ /**
+ * Set the players focus.
+ * @remarks
+ * RAM cost: 0.1 GB
+ *
+ * Singularity - Level 2
+ */
+ setFocus(focus: boolean): void;
}
/**
diff --git a/input/bitburner.api.json b/input/bitburner.api.json
index b4ade11a0..af5ff7b28 100644
--- a/input/bitburner.api.json
+++ b/input/bitburner.api.json
@@ -21307,6 +21307,34 @@
"parameters": [],
"name": "isBusy"
},
+ {
+ "kind": "MethodSignature",
+ "canonicalReference": "bitburner!Singularity#isFocused:member(1)",
+ "docComment": "/**\n * Check if the player is focused.\n *\n * @remarks\n *\n * RAM cost: 0.1 GB\n *\n * Singularity - Level 2\n *\n * @returns True if the player is focused.\n */\n",
+ "excerptTokens": [
+ {
+ "kind": "Content",
+ "text": "isFocused(): "
+ },
+ {
+ "kind": "Content",
+ "text": "void"
+ },
+ {
+ "kind": "Content",
+ "text": ";"
+ }
+ ],
+ "isOptional": false,
+ "returnTypeTokenRange": {
+ "startIndex": 1,
+ "endIndex": 2
+ },
+ "releaseTag": "Public",
+ "overloadIndex": 1,
+ "parameters": [],
+ "name": "isFocused"
+ },
{
"kind": "MethodSignature",
"canonicalReference": "bitburner!Singularity#joinFaction:member(1)",
@@ -21515,6 +21543,50 @@
"parameters": [],
"name": "purchaseTor"
},
+ {
+ "kind": "MethodSignature",
+ "canonicalReference": "bitburner!Singularity#setFocus:member(1)",
+ "docComment": "/**\n * Set the players focus.\n *\n * @remarks\n *\n * RAM cost: 0.1 GB\n *\n * Singularity - Level 2\n */\n",
+ "excerptTokens": [
+ {
+ "kind": "Content",
+ "text": "setFocus(focus: "
+ },
+ {
+ "kind": "Content",
+ "text": "boolean"
+ },
+ {
+ "kind": "Content",
+ "text": "): "
+ },
+ {
+ "kind": "Content",
+ "text": "void"
+ },
+ {
+ "kind": "Content",
+ "text": ";"
+ }
+ ],
+ "isOptional": false,
+ "returnTypeTokenRange": {
+ "startIndex": 3,
+ "endIndex": 4
+ },
+ "releaseTag": "Public",
+ "overloadIndex": 1,
+ "parameters": [
+ {
+ "parameterName": "focus",
+ "parameterTypeTokenRange": {
+ "startIndex": 1,
+ "endIndex": 2
+ }
+ }
+ ],
+ "name": "setFocus"
+ },
{
"kind": "MethodSignature",
"canonicalReference": "bitburner!Singularity#softReset:member(1)",
diff --git a/main.bundle.js b/main.bundle.js
index ab793ab48..466c7b4dd 100644
--- a/main.bundle.js
+++ b/main.bundle.js
@@ -1,4 +1,4 @@
-!function(e){function t(t){for(var n,o,s=t[0],l=t[1],c=t[2],m=0,h=[];mObject(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,"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(115);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(;iObject(n.useContext)(i.Player),Router:()=>Object(n.useContext)(i.Router)}},function(e,t,a){"use strict";a.d(t,"d",(function(){return u})),a.d(t,"c",(function(){return m})),a.d(t,"b",(function(){return h})),a.d(t,"g",(function(){return p})),a.d(t,"e",(function(){return d})),a.d(t,"a",(function(){return f})),a.d(t,"f",(function(){return g})),a.d(t,"i",(function(){return y})),a.d(t,"h",(function(){return b})),a.d(t,"j",(function(){return E}));var n=a(47),r=a(496),i=a(281),o=a(31),s=a(22),l=a(756);let c={};function u(e){const t=c[e];if(t)return t;if(!Object(l.a)(e))return function(e){for(const t in c){const a=c[t];if(a.hostname==e)return a}return null}(e);const a=function(e){for(const t in c){const a=c[t];if(a.ip===e)return a}}(e);return void 0!==a?a:null}function m(){const e=[];for(const t in c)e.push(c[t]);return e}function h(e){for(const t in c){const a=c[t];if(a.ip===e||a.hostname===e){delete c[t];break}}}function p(e){return null!=c[e]}function d(){const e=Object(i.a)();return p(e)?Object(i.a)():e}function f(e){if(u(e.hostname))throw console.warn("Hostname of the server thats being added: "+e.hostname),console.warn("The server that already has this IP is: "+c[e.hostname].hostname),new Error("Error: Trying to add a server with an existing IP");c[e.hostname]=e}function g(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:d(),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);f(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{return(a=t[e-1])[Math.floor(Math.random()*a.length)];var a})}function y(){for(const e in c)delete c[e];c={}}function b(e){c=JSON.parse(e,s.c)}function E(){const e=JSON.parse(JSON.stringify(c),s.c);for(const t in e){const a=e[t];for(let e=0;ee===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;tn.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(121),o=a(149),s=a(642),l=a(1154),c=a(32);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(50),o=a(226),s=a(121);function l(){return(l=Object.assign||function(e){for(var t=1;tr.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,"ab",(function(){return Q})),a.d(t,"db",(function(){return Z})),a.d(t,"eb",(function(){return ee})),a.d(t,"mb",(function(){return te})),a.d(t,"o",(function(){return ae})),a.d(t,"Kb",(function(){return ne})),a.d(t,"pb",(function(){return re})),a.d(t,"Y",(function(){return ie})),a.d(t,"sb",(function(){return oe})),a.d(t,"I",(function(){return se})),a.d(t,"cb",(function(){return le})),a.d(t,"q",(function(){return ce})),a.d(t,"nb",(function(){return ue})),a.d(t,"G",(function(){return me})),a.d(t,"J",(function(){return he})),a.d(t,"E",(function(){return pe})),a.d(t,"F",(function(){return de})),a.d(t,"B",(function(){return fe})),a.d(t,"C",(function(){return ge})),a.d(t,"H",(function(){return ye})),a.d(t,"hb",(function(){return be})),a.d(t,"qb",(function(){return Ee})),a.d(t,"gb",(function(){return ke})),a.d(t,"Eb",(function(){return ve})),a.d(t,"fb",(function(){return _e})),a.d(t,"r",(function(){return we})),a.d(t,"Lb",(function(){return Se})),a.d(t,"z",(function(){return Ce})),a.d(t,"Fb",(function(){return xe})),a.d(t,"Nb",(function(){return Oe})),a.d(t,"A",(function(){return Me})),a.d(t,"Db",(function(){return Te})),a.d(t,"Gb",(function(){return Re})),a.d(t,"Cb",(function(){return Ae})),a.d(t,"Ab",(function(){return Pe})),a.d(t,"zb",(function(){return Ne})),a.d(t,"Bb",(function(){return Ie})),a.d(t,"Mb",(function(){return Fe})),a.d(t,"y",(function(){return je})),a.d(t,"T",(function(){return De})),a.d(t,"S",(function(){return Be})),a.d(t,"V",(function(){return Ge})),a.d(t,"Q",(function(){return Le})),a.d(t,"R",(function(){return We})),a.d(t,"O",(function(){return He})),a.d(t,"P",(function(){return Ue})),a.d(t,"U",(function(){return qe})),a.d(t,"xb",(function(){return Ke})),a.d(t,"u",(function(){return ze})),a.d(t,"w",(function(){return $e})),a.d(t,"wb",(function(){return Ve})),a.d(t,"Hb",(function(){return Ye})),a.d(t,"v",(function(){return Je})),a.d(t,"yb",(function(){return Xe})),a.d(t,"t",(function(){return Qe})),a.d(t,"x",(function(){return Ze})),a.d(t,"ub",(function(){return et})),a.d(t,"Ib",(function(){return tt})),a.d(t,"ob",(function(){return at})),a.d(t,"Z",(function(){return nt})),a.d(t,"f",(function(){return rt})),a.d(t,"N",(function(){return it})),a.d(t,"jb",(function(){return ot})),a.d(t,"m",(function(){return st})),a.d(t,"l",(function(){return lt})),a.d(t,"e",(function(){return ct})),a.d(t,"j",(function(){return ut})),a.d(t,"g",(function(){return mt})),a.d(t,"c",(function(){return ht})),a.d(t,"b",(function(){return pt})),a.d(t,"k",(function(){return dt})),a.d(t,"a",(function(){return ft})),a.d(t,"d",(function(){return gt})),a.d(t,"h",(function(){return yt})),a.d(t,"n",(function(){return bt})),a.d(t,"i",(function(){return Et})),a.d(t,"bb",(function(){return kt})),a.d(t,"kb",(function(){return vt})),a.d(t,"lb",(function(){return _t})),a.d(t,"s",(function(){return wt})),a.d(t,"rb",(function(){return St})),a.d(t,"ib",(function(){return Ct})),a.d(t,"D",(function(){return xt})),a.d(t,"Jb",(function(){return Ot})),a.d(t,"X",(function(){return Mt})),a.d(t,"p",(function(){return Tt})),a.d(t,"W",(function(){return Rt})),a.d(t,"L",(function(){return At})),a.d(t,"K",(function(){return Pt})),a.d(t,"M",(function(){return Nt})),a.d(t,"tb",(function(){return It})),a.d(t,"vb",(function(){return Ft}));var n=a(20),r=a(156),i=a(275),o=a(7),s=a(8),l=a(97),c=a(206),u=a(60),m=a(572),h=a(446),p=a(84),d=a(26),f=a(6),g=a(62),y=a(326),b=a(75),E=a(176),k=a(24),v=a(72),_=a(132),w=a(218),S=a(23),C=a(9),x=a(286),O=a(236),M=a(350),T=a(212),R=a(28),A=a(47),P=a(112),N=a(96),I=a(1103),F=a(1104),j=a(316),D=a(71),B=a(441),G=a(351),L=a(86),W=a(3),H=a(332),U=a(15),q=a(21),K=a(103),z=a(16),$=a(0),V=a.n($),Y=a(496),J=a(247),X=a(636);function Q(){const e=Object(P.f)({adminRights:!0,hostname:"home",ip:Object(R.e)(),isConnectedTo:!0,maxRam:8,organizationName:"Home PC",purchasedByPlayer:!0});this.currentServer=N.a.Home,Object(R.a)(e),this.getHomeComputer().programs.push(g.a.NukeProgram.name)}function Z(){this.currentServer=N.a.Home,this.numPeopleKilled=0,this.karma=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,D.a[10]+(10===this.bitNodeN?1:0))+this.sleevesFromCovenant;this.sleeves.length>e&&(this.sleeves.length=e);for(let t=this.sleeves.length;t=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 ee(){this.prestigeAugmentation();for(let e=0;e0?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 re(){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 ie(e){const t=this.getHomeComputer();if(null==t)return!1;for(let a=0;a=e}function ue(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 me(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 he(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 pe(e){isNaN(e)?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))}function de(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 fe(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 ge(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 ye(e){isNaN(e)?console.error("ERROR: NaN passed into Player.gainIntelligenceExp()"):(D.a[5]>0||this.intelligence>0)&&(this.intelligence_exp+=e,this.intelligence=Math.floor(this.calculateSkill(this.intelligence_exp)))}function be(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 Ee(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 ke(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 ve(e,t){this.resetWorkStatus(f.a.WorkTypeCompany,t),this.isWorking=!0,this.focus=!0,this.companyName=t,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,e.toWork()}function _e(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 we(){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 Se(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 Ce(e,t=!1){e&&(this.workRepGained*=this.cancelationPenalty());u.a[this.companyName].playerReputation+=this.workRepGained,this.updateSkillLevels();let a=V.a.createElement(V.a.Fragment,null,"You earned a total of: ",V.a.createElement("br",null),V.a.createElement(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(a=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 half of the reputation you earned. ",V.a.createElement("br",null),V.a.createElement("br",null),a):V.a.createElement(V.a.Fragment,null,"You worked a full shift of 8 hours! ",V.a.createElement("br",null),V.a.createElement("br",null),a),t||Object(U.a)(a),this.isWorking=!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 xe(e,t){this.resetWorkStatus(f.a.WorkTypeCompanyPartTime,t),this.isWorking=!0,this.focus=!0,this.companyName=t,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,e.toWork()}function Oe(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 Me(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 Te(){this.focus=!0}function Re(){this.focus=!1}function Ae(e,t){let a=1+t.favor/100;isNaN(a)&&(a=1),this.workRepGainRate*=a,this.workRepGainRate*=s.a.FactionWorkRepGain,this.isWorking=!0,this.focus=!0,this.workType=f.a.WorkTypeFaction,this.currentWorkFactionName=t.name,this.timeNeededToCompleteWork=f.a.MillisecondsPer20Hours,e.toWork()}function Pe(e,t){this.resetWorkStatus(f.a.WorkTypeFaction,t.name,f.a.FactionWorkHacking),this.workHackExpGainRate=.15*this.hacking_exp_mult*s.a.FactionWorkExpGain,this.workRepGainRate=Object(T.c)(this,t),this.factionWorkType=f.a.FactionWorkHacking,this.currentWorkFactionDescription="carrying out hacking contracts",this.startFactionWork(e,t)}function Ne(e,t){this.resetWorkStatus(f.a.WorkTypeFaction,t.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,t),this.factionWorkType=f.a.FactionWorkField,this.currentWorkFactionDescription="carrying out field missions",this.startFactionWork(e,t)}function Ie(e,t){this.resetWorkStatus(f.a.WorkTypeFaction,t.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,t),this.factionWorkType=f.a.FactionWorkSecurity,this.currentWorkFactionDescription="performing security detail",this.startFactionWork(e,t)}function Fe(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)}let a=1+t.favor/100;isNaN(a)&&(a=1),this.workRepGainRate*=a,this.workRepGainRate*=s.a.FactionWorkRepGain;let n=!1;return this.timeWorked+f.a._idleSpeed*e>=f.a.MillisecondsPer20Hours&&(n=!0,e=Math.round((f.a.MillisecondsPer20Hours-this.timeWorked)/f.a._idleSpeed)),this.timeWorked+=f.a._idleSpeed*e,this.processWorkEarnings(e),!!(n||this.timeWorked>=f.a.MillisecondsPer20Hours)&&(this.finishFactionWork(!1),!0)}function je(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 De(){let e=1;const t=u.a[this.companyName];D.a[11]>0&&(e=1+t.favor/100);const a=this.jobs[this.companyName],n=p.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 Be(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 Ge(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 Le(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 We(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 He(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 Ue(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 qe(){const e=u.a[this.companyName],t=this.jobs[this.companyName],a=p.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 Ke(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=100)break;this.timeWorkedCreateProgram=n/100*this.timeNeededToCompleteWork,this.getHomeComputer().programs.splice(e,1)}}this.createProgramName=t,e.toWork()}function ze(e){const t=this.createProgramReqLvl;let a=this.hacking/t*this.getIntelligenceBonus(3);return a=1+(a-1)/5,this.timeWorked+=f.a._idleSpeed*e,this.timeWorkedCreateProgram+=f.a._idleSpeed*e*a,this.timeWorkedCreateProgram>=this.timeNeededToCompleteWork&&(this.finishCreateProgramWork(!1),!0)}function $e(e){const t=this.createProgramName;if(!1===e)Object(U.a)("You've finished creating "+t+"! 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 Ve(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 Ye(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 Je(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 Xe(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 Qe(e){return this.timeWorked+=f.a._idleSpeed*e,this.timeWorked>=this.timeNeededToCompleteWork&&(this.finishCrime(!1),!0)}function Ze(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 et(){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 tt(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 at(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 nt(){const e=Object(G.b)(this);return J.b.emit("You've been Hospitalized for "+W.a.formatMoney(e),"warning"),this.loseMoney(e,"hospitalization"),this.hp=this.max_hp,e}function rt(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 "+e),!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 "+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 it(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],r=p.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 ot(e){this.isWorking=!1,this.companyName="",delete this.jobs[e]}function st(e=!1){return this.applyForJob(p.a[d.j[0]],e)}function lt(e=!1){return this.applyForJob(p.a[d.k[0]],e)}function ct(e=!1){return this.applyForJob(p.a[d.d[0]],e)}function ut(e=!1){const t=u.a[this.location];return this.isQualified(t,p.a[d.i[0]])?this.applyForJob(p.a[d.i[0]],e):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function mt(e=!1){const t=u.a[this.location];if(this.isQualified(t,p.a[d.f[0]])){const t=p.a[d.f[0]];return this.applyForJob(t,e)}return e||Object(U.a)("Unforunately, you do not qualify for this position"),!1}function ht(e=!1){return this.applyForJob(p.a[d.b[0]],e)}function pt(e=!1){return this.applyForJob(p.a[d.c[0]],e)}function dt(e=!1){return this.applyForJob(p.a[d.h[2]],e)}function ft(e=!1){const t=u.a[this.location];if(this.isQualified(t,p.a[d.a[0]])){const t=p.a[d.a[0]];return this.applyForJob(t,e)}return e||Object(U.a)("Unforunately, you do not qualify for this position"),!1}function gt(e=!1){const t=u.a[this.location];return this.isQualified(t,p.a[d.e[1]])?(this.companyName=t.name,this.jobs[t.name]=d.e[1],e||Object(U.a)("Congratulations, you are now employed at "+this.companyName),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function yt(e=!1){const t=u.a[this.location];return this.isQualified(t,p.a[d.g[1]])?(this.jobs[t.name]=d.g[1],e||Object(U.a)("Congratulations, you are now employed part-time at "+this.companyName),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function bt(e=!1){const t=u.a[this.location];return this.isQualified(t,p.a[d.e[0]])?(this.companyName=t.name,this.jobs[t.name]=d.e[0],e||Object(U.a)("Congratulations, you are now employed as a waiter at "+this.companyName),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function Et(e=!1){const t=u.a[this.location];return this.isQualified(t,p.a[d.g[0]])?(this.companyName=t.name,this.jobs[t.name]=d.g[0],e||Object(U.a)("Congratulations, you are now employed as a part-time waiter at "+this.companyName),!0):(e||Object(U.a)("Unforunately, you do not qualify for this position"),!1)}function kt(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 vt(e=!0){e&&this.resetMultipliers();for(let e=0;et}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 p=k.a["Blade Industries"];p.isBanned||p.isMember||p.alreadyInvited||!r(C.a.Sector12BladeIndustries)||e.push(p);const d=k.a.NWO;d.isBanned||d.isMember||d.alreadyInvited||!r(C.a.VolhavenNWO)||e.push(d);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)(N.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)(N.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)(N.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,P=Object(R.d)(N.a.NiteSecServer);if(!(P instanceof A.a))throw new Error("NiteSec should be normal server");null==P?console.error("Could not find NiteSec Server"):T.isBanned||T.isMember||!P.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 j=k.a["New Tokyo"];!j.isBanned&&!j.isMember&&!j.alreadyInvited&&this.money>=2e7&&this.city==S.a.NewTokyo&&e.push(j);const D=k.a.Aevum;!D.isBanned&&!D.isMember&&!D.alreadyInvited&&this.money>=4e7&&this.city==S.a.Aevum&&e.push(D);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=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)(N.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 St(e){this.bitNodeN=e}function Ct(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 xt(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 Ot(e){return null==_.a[e]?(console.warn("Player.travel() called with invalid city: "+e),!1):(this.city=e,!0)}function Mt(e){return null==w.a[e]?(console.warn("Player.gotoLocation() called with invalid location: "+e),!1):(this.location=e,!0)}function Tt(){return 10===this.bitNodeN||D.a[10]>0}function Rt(e){this.exploits.includes(e)||(this.exploits.push(e),J.b.emit("SF -1 acquired!","success"))}function At(e){return Object(M.a)(this.intelligence,e)}function Pt(){return this.moneySourceA.casino}function Nt(e){return this.hasOwnProperty(e)?this[e]:1}function It(e,t){this.hasOwnProperty(e)&&(this[e]=t)}function Ft(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 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";a.d(t,"a",(function(){return c}));var n=a(481),r=a(8),i=a(753),o=a(281),s=a(22);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.hackDifficulty100&&(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 n}));const n={Operations:"Operations",Engineer:"Engineer",Business:"Business",Management:"Management",RandD:"Research & Development",Training:"Training",Unassigned:"Unassigned"}},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(110),o=a(120);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={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,"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(250),r=a(179),i=a(162),o=a(38),s=a(86),l=a(323),c=a(251),u=a(324),m=a(39),h=a(28),p=a(47),d=a(71);function f(e){return 9===e.bitNodeN||d.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)?(e.loseMoney(a,"hacknet_expenses"),e.createHacknetServer(),R(e),t):-1}{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.moneyt.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.moneyt.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.moneyt.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.moneyt.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.moneyt.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{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 i}));var n=a(754),r=a(755);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";let n;a.d(t,"a",(function(){return n})),function(e){e.Long="L",e.Short="S"}(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__(52),_Industry__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(783),_data_Constants__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(42),_OfficeSpace__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(327),_Product__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(352),_Warehouse__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(210),_Locations_Cities__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(132),_EmployeePositions__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(48),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(328),_ResearchMap__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(283);function NewIndustry(e,t,a){for(let 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]/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{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,"a",(function(){return u}));var n=a(6),r=a(481),i=a(38),o=a(162),s=a(281),l=a(22);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;t1?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/240;return a<0?0:a>1?1:a*n.a.ScriptHackMoney}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";function n(e){return e.endsWith(".js")||e.endsWith(".script")||e.endsWith(".ns")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new(a(685).a)},,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(614),r=a(292),i=a(131),o=a(553),s=a(773),l=a(98),c=a(66),u=a(87),m=a(6),h=a(125),p=a(3),d=a(15),f=a(22);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("placeOrder",`Invalid stock: '${e}'`):Object(d.a)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof t||"number"!=typeof a)return l?l.log("placeOrder",`Invalid arguments: shares='${t}' price='${a}'`):Object(d.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=t.cap&&(o=.1,t.b=!1),isNaN(o)&&(o=.5);const s=Math.random(),u={stockMarket:g,symbolToStockMap:y};s{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(3),i=a(121),o=a(149);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";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){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&&null==e.match(/^.?[a-zA-Z0-9_-]+$/))return!1;return!0}function s(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 o(t.slice(0,a+1))&&i(n)}function l(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 c(e){const t=e,a=t.lastIndexOf("/");return-1===a?"":t.slice(0,a+1)}function u(e){return!!s(e)&&(null!=e&&0!==e.length&&e.lastIndexOf("/")<=0)}function m(e,t){let a=e;if(a.startsWith("/")||null==t||(a=t+(t.endsWith("/")?"":"/")+a),!o(a))return null;a=n(a),a=r(a);const i=a.split("/"),s=[];for(const e of i)if("."!==e)if(".."===e){if(null==s.pop())return null}else s.push(e);return"/"+s.join("/")}function h(e,t){let a=e;if(a.startsWith("/")||null==t||(a=t+(t.endsWith("/")?"":"/")+a),!s(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 p(e,t){return e.startsWith("/")||(e="/"+e),t.startsWith("/")||(t="/"+t),e===t}a.d(t,"i",(function(){return n})),a.d(t,"j",(function(){return r})),a.d(t,"g",(function(){return o})),a.d(t,"h",(function(){return s})),a.d(t,"e",(function(){return l})),a.d(t,"d",(function(){return c})),a.d(t,"f",(function(){return u})),a.d(t,"b",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"a",(function(){return p}))},function(e,t,a){"use strict";a.d(t,"b",(function(){return pe})),a.d(t,"a",(function(){return de}));var n=a(0),r=a.n(n),i=a(156),o=a(177),s=a(329),l=a(9),c=a(218),u=a(39),m=a(798),h=a(325),p=a(314),d=a(15),f=a(28),g=a(24),y=a(213),b=a(93),E=a(121),k=a(149),v=a(32),_=a(1),w=a(29),S=a(801),C=a(804),x=a(824),O=a(832),M=a(850),T=a(882),R=a(897),A=a(933),P=a(947),N=a(950),I=a(951),F=a(990),j=a(999),D=a(625),B=a(1031),G=a(353),L=a(536),W=a(1049),H=a(1050),U=a(1056),q=a(1057),K=a(354),z=a(1070),$=a(1080),V=a(535),Y=a(1082),J=a(1091),X=a(1094),Q=a(1098),Z=a(160),ee=a(1099),te=a(247),ae=a(217),ne=a(349),re=a(506),ie=a(499),oe=a(262),se=a(27),le=a(450);const ce=location,ue=Object(E.a)(e=>Object(k.a)({root:{"-ms-overflow-style":"none","scrollbar-width":"none",margin:e.spacing(0)}}));let me="",he="",pe={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")}};function de({player:e,engine:t,terminal:a}){const E=ue(),[k,de]=Object(n.useState)(function(e){return le.b?w.a.Recovery:e.isWorking?w.a.Work:w.a.Terminal}(e)),fe=Object(n.useState)(0)[1],[ge,ye]=Object(n.useState)(e.currentWorkFactionName?g.a[e.currentWorkFactionName]:void 0);if(void 0===ge&&k===w.a.Faction)throw new Error("Trying to go to a page without the proper setup");const[be,Ee]=Object(n.useState)(!1),[ke,ve]=Object(n.useState)(!1),[_e,we]=Object(n.useState)(void 0);if(void 0===_e&&(k===w.a.Infiltration||k===w.a.Location||k===w.a.Job))throw new Error("Trying to go to a page without the proper setup");const[Se,Ce]=Object(n.useState)("");function xe(){fe(e=>e+1)}function Oe(){for(const e of Object(f.c)())e.runningScripts=[];o.c.saveGame(),setTimeout(()=>ce.reload(),2e3)}return Object(n.useEffect)(()=>h.a.subscribe(xe),[]),pe={page:()=>k,toActiveScripts:()=>de(w.a.ActiveScripts),toAugmentations:()=>de(w.a.Augmentations),toBladeburner:()=>de(w.a.Bladeburner),toStats:()=>de(w.a.Stats),toCorporation:()=>de(w.a.Corporation),toCreateProgram:()=>de(w.a.CreateProgram),toDevMenu:()=>de(w.a.DevMenu),toFaction:e=>{de(w.a.Faction),e&&ye(e)},toFactions:()=>de(w.a.Factions),toGameOptions:()=>de(w.a.Options),toGang:()=>de(w.a.Gang),toHacknetNodes:()=>de(w.a.Hacknet),toMilestones:()=>de(w.a.Milestones),toResleeves:()=>de(w.a.Resleeves),toScriptEditor:(e,t)=>{me=e,he=t,de(w.a.ScriptEditor)},toSleeves:()=>de(w.a.Sleeves),toStockMarket:()=>de(w.a.StockMarket),toTerminal:()=>de(w.a.Terminal),toTutorial:()=>de(w.a.Tutorial),toJob:()=>{we(c.a[e.companyName]),de(w.a.Job)},toCity:()=>{de(w.a.City)},toTravel:()=>{e.gotoLocation(l.a.TravelAgency),de(w.a.Travel)},toBitVerse:(e,t)=>{Ee(e),ve(t),de(w.a.BitVerse)},toInfiltration:e=>{we(e),de(w.a.Infiltration)},toWork:()=>de(w.a.Work),toBladeburnerCinematic:()=>{de(w.a.BladeburnerCinematic),Ce(Se)},toLocation:e=>{we(e),de(w.a.Location)}},Object(n.useEffect)(()=>{me="",he="",k!==w.a.Terminal&&window.scrollTo(0,0)}),r.a.createElement(se.a.Player.Provider,{value:e},r.a.createElement(se.a.Router.Provider,{value:pe},r.a.createElement(te.c,null,r.a.createElement(S.a,null,u.a.isRunning?r.a.createElement(m.a,null):r.a.createElement(X.a,{save:()=>o.c.saveGame(),killScripts:Oe})),k===w.a.Recovery?r.a.createElement(le.c,{router:pe}):k===w.a.BitVerse?r.a.createElement(J.a,{flume:be,enter:oe.a,quick:ke}):k===w.a.Infiltration?r.a.createElement(A.a,{location:_e}):k===w.a.BladeburnerCinematic?r.a.createElement(Q.a,null):k===w.a.Work?r.a.createElement(N.a,null):r.a.createElement(v.a,{display:"flex",flexDirection:"row",width:"100%"},r.a.createElement(C.a,{player:e,router:pe,page:k}),r.a.createElement(v.a,{className:E.root,flexGrow:1,display:"block",px:1,height:"100vh"},k===w.a.Terminal?r.a.createElement(H.a,{terminal:a,router:pe,player:e}):k===w.a.Sleeves?r.a.createElement(F.a,null):k===w.a.Stats?r.a.createElement($.a,null):k===w.a.ScriptEditor?r.a.createElement(L.a,{filename:me,code:he,hostname:e.getCurrentServer().hostname,player:e,router:pe}):k===w.a.ActiveScripts?r.a.createElement(q.a,{workerScripts:Z.a}):k===w.a.Hacknet?r.a.createElement(j.a,{player:e}):k===w.a.CreateProgram?r.a.createElement(G.a,null):k===w.a.Factions?r.a.createElement(K.a,{player:e,router:pe}):k===w.a.Faction?r.a.createElement(z.a,{faction:ge}):k===w.a.Milestones?r.a.createElement(W.a,{player:e}):k===w.a.Tutorial?r.a.createElement(U.a,null):k===w.a.DevMenu?r.a.createElement(O.a,{player:e,engine:t,router:pe}):k===w.a.Gang?r.a.createElement(T.a,null):k===w.a.Corporation?r.a.createElement(R.a,null):k===w.a.Bladeburner?r.a.createElement(M.a,null):k===w.a.Resleeves?r.a.createElement(P.a,null):k===w.a.Travel?r.a.createElement(V.a,{p:e,router:pe}):k===w.a.StockMarket?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}):k===w.a.City?r.a.createElement(B.a,null):k===w.a.Job||k===w.a.Location?r.a.createElement(D.a,{loc:_e}):k===w.a.Options?r.a.createElement(I.a,{player:e,save:()=>o.c.saveGame(),export:()=>o.c.exportGame(),forceKill:Oe,softReset:()=>{Object(d.a)("Soft Reset!"),Object(p.a)(),pe.toTerminal()}}):k===w.a.Augmentations?r.a.createElement(x.a,{exportGameFn:()=>{o.c.exportGame(),Object(s.c)(e)},installAugmentationsFn:()=>{Object(i.d)(),pe.toTerminal()}}):r.a.createElement(r.a.Fragment,null,r.a.createElement(_.a,null,"Cannot load")))),r.a.createElement(ee.a,null),r.a.createElement(ae.b,null),r.a.createElement(ne.b,null),r.a.createElement(re.b,null),r.a.createElement(ie.b,null),r.a.createElement(te.a,null))))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return l}));var n=a(283),r=a(552);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"),p=i("JoyWire"),d=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),d.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(p),e.addChild(d),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";a.d(t,"f",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"e",(function(){return p})),a.d(t,"d",(function(){return d})),a.d(t,"a",(function(){return f})),a.d(t,"b",(function(){return g}));var n=a(28),r=a(47),i=a(505),o=a(8),s=a(6),l=a(62),c=a(58),u=a(613);function m(e){if(null!=e.ip&&Object(n.g)(e.ip)&&(e.ip=Object(n.e)()),null!=Object(n.d)(e.hostname)){let t=e.hostname;for(let a=0;a<200&&(t=`${e.hostname}-${a}`,null!=Object(n.d)(t));++a);e.hostname=t}return 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 p(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 d(e){const t=e.programs.includes(l.a.BitFlume.name);e.programs.length=0,e.runningScripts=[],e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(l.a.NukeProgram.name),t&&e.programs.push(l.a.BitFlume.name),e.scripts.forEach((function(t){t.updateRamUsage(e.scripts)})),e.messages.length=0,e.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";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 u}));var n=a(0),r=a.n(n),i=a(41),o=a(183),s=a(226),l=a(56),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 i}));var n=a(307),r=a(22);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,"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(275),i=a(7),o=a(8),s=a(6),l=a(176),c=a(24),u=a(4),m=a(13),h=a(212),p=a(71),d=a(15),f=a(499);function g(e){u.a.factionInvitations.push(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;t0)for(let a=0;a=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;tObject(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";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,"a",(function(){return h}));var n=a(288),r=a(160),i=a(259),o=a(317),s=a(28),l=a(282),c=a(15),u=a(503),m=a(4);function h(e,t,a){if(null!=a&&"boolean"==typeof a||(a=!0),e instanceof n.a)return d(e),!0;if(e instanceof o.a&&"string"==typeof t){const n=p(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 d(n,a),!0;return!1}return"number"==typeof e?p(e,a):(console.error("killWorkerScript() called with invalid argument:"),console.error(e),!1)}function p(e,t=!0){const a=r.a.get(e);return a instanceof n.a&&(d(a,t),!0)}function d(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.delayResolve&&e.delayResolve())}(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{t.delay=null,a()},e),t.delayResolve=a}))}function o(e,t){const a=Object(r.d)(e.hostname);if(null==a)throw new Error("WorkerScript constructed with invalid server ip: "+e.hostname);return"|DELIMITER|"+a.hostname+"|DELIMITER|"+e.name+"|DELIMITER|"+t}function s(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 o(e,`Invalid thread count passed to ${t}: ${a}. Threads must be a positive number.`);if(a>n)throw o(e,`Too many threads requested by ${t}. Requested: ${a}. Has: ${n}.`);return r}function l(e){if(!Object(n.a)(e))return!1;return 4==e.split("|DELIMITER|").length}},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";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(22),r=a(31);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()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,"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 m})),a.d(t,"h",(function(){return h}));var n=a(91);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&&3==a.length&&(t?function(e,t){e in r&&delete r[e];i[e]=t.trim()}(a[1],a[2]):function(e,t){e in i&&delete i[e];r[e]=t.trim()}(a[1],a[2]),!0)}function u(e){return i.hasOwnProperty(e)?i[e]:null}function m(e){return r.hasOwnProperty(e)?(delete r[e],!0):!!i.hasOwnProperty(e)&&(delete i[e],!0)}function h(e){const t=e.split(" ");if(t.length>0){if("unalias"===t[0]||"alias"===t[0])return t.join(" ");let e=!0,o=0;for(;e&&o<10;){var a;o++,e=!1;const s=null===(i=t[0],a=r.hasOwnProperty(i)?r[i]:null)||void 0===a?void 0:a.split(" ");null!=s&&(e=!0,t.splice(0,1,...s));for(let a=0;a{i=!0;let t=e.source.value;t.startsWith("./")&&(t=t.slice(2));const a=function(e){for(let t=0;t{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+": "+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"+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){return N(e,t,a)?(t.runScript(e),e.pid):0}function N(e,t,a){let l=1;e.threads&&!isNaN(e.threads)?l=e.threads:e.threads=1;const c=Object(f.a)(e),p=Object(_.a)(c*l);if(p>t.maxRam-t.ramUsed)return Object(k.a)(`Not enough RAM to run script ${e.filename} with args `+Object(v.a)(e.args)+". This likely occurred because you re-loaded the game and the script's RAM usage increased (either because of an update to the game or your changes to the script.)"),!1;t.updateRamUsed(Object(_.a)(t.ramUsed+p),M.a);const d=Object(s.a)();if(-1===d)throw new Error("Failed to start script because could not find available PID. This is most because you have too many scripts running.");const g=new r.a(e,d,m.a);g.ramUsage=c,i.a.set(d,g),o.a.emit();let y=null;if(g.name.endsWith(".js")||g.name.endsWith(".ns"))y=function(e){e.running=!0;let t=null;function a(a,n){return function(...r){if(e.env.stopFlag)throw e;if("asleep"===a)return n(...r);if(t)throw e.errorMessage=Object(u.b)(e,Object(S.sprintf)("Concurrent calls to Netscript functions not allowed! Did you forget to await hack(), grow(), or some other promise-returning function? (Currently running: %s tried to run: %s)",t,a)),e;let i;t=a;try{i=n(...r)}catch(e){throw t=null,e}return i&&void 0!==i.finally?i.finally((function(){t=null})):(t=null,i)}}for(const t in e.env.vars)"function"==typeof e.env.vars[t]&&(e.env.vars[t]=a(t,e.env.vars[t]));return new Promise((t,a)=>{Object(h.b)(e.getServer().scripts,e).then(()=>{t(e)}).catch(e=>a(e))}).catch(t=>{if(t instanceof Error)throw t instanceof SyntaxError?e.errorMessage=Object(u.b)(e,t.message+" (sorry we can't be more helpful)"):e.errorMessage=Object(u.b)(e,t.message+(t.stack&&"\nstack:\n"+t.stack.toString()||"")),e;if(Object(u.a)(t))throw e.errorMessage=t,e;throw t})}(g);else if(y=A(g),!(y instanceof Promise))return!1;return y.then((function(t){void 0!==a&&a.running&&(a.scriptRef.onlineExpGained+=e.onlineExpGained,a.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),Object(n.a)(g),t.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 ${n}@${a} `;e.args.length>0&&(i+=`Args: ${Object(v.a)(e.args)} `),i+=" ",i+=r,Object(k.a)(i),e.log("","Script crashed with runtime error")}e.running=!1,e.env.stopFlag=!0}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)(g)})),!0}function I(e=1){const t=e*l.a._idleSpeed/1e3;for(const e of i.a.values())e.scriptRef.onlineRunningTime+=t}function F(){const e=-1!==window.location.href.toLowerCase().indexOf("?noscripts");e&&console.info("Skipping the load of any scripts during startup");for(const t of Object(y.c)()){t.ramUsed=0;for(let e=0;e{if("string"!=typeof e&&"number"!=typeof e)throw new Error("Only strings and numbers can be passed as arguments to otherscripts.")});if(null!=t.getRunningScript(a,n))return i.log(e,`'${a}' is already running on '${t.hostname}'`),0;for(let t=0;tc)return i.log(e,`Cannot run script '${a}' (t=${o}) on '${t.hostname}' because there is not enough available RAM!`),0;{i.log(e,`'${a}' on '${t.hostname}' with ${o} threads and args: ${Object(v.a)(n)}.`);const r=new d.a(s,n);return r.threads=o,P(r,t,i)}}return i.log(e,`Could not find script '${a}' on '${t.hostname}'`),0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(517),o=a.n(i),s=a(836),l=a.n(s),c=a(92),u=a(518),m=a.n(u),h=a(513),p=a.n(h),d=a(81),f=a(25);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(d.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(p.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 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(25);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";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.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."};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,"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(36),r=a(20),i=a(275),o=a(7),s=a(8),l=a(6),c=a(24),u=a(4),m=a(314),h=a(62),p=a(71),d=a(15),f=a(1102),g=a(321),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%. Increases the player's hacking speed by 10%. Increases the amount of money the player's gains from hacking by 25%. Improves grow() by 10%."},{bonuses:{hacking_mult:1.15,hacking_exp_mult:2},description:"Increases the player's hacking skill by 15%. Increases the player's hacking experience gain rate by 100%."},{bonuses:{strength_mult:1.25,strength_exp_mult:2,defense_mult:1.25,defense_exp_mult:2,dexterity_mult:1.25,dexterity_exp_mult:2,agility_mult:1.25,agility_exp_mult:2},description:"Increases all of the player's combat stats by 25%. Increases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma_mult:1.5,charisma_exp_mult:2},description:"This augmentation increases the player's charisma by 50%. Increases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money_mult:1.2,hacknet_node_purchase_cost_mult:.85,hacknet_node_ram_cost_mult:.85,hacknet_node_core_cost_mult:.85,hacknet_node_level_cost_mult:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%. Decreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep_mult:1.25,faction_rep_mult:1.15,work_money_mult:1.7},description:"Increases the amount of money the player gains from working by 70%. Increases the amount of reputation the player gains when working for a company by 25%. Increases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success_mult:2,crime_money_mult:2},description:"Increases the player's crime success rate by 100%. Increases the amount of money the player gains from crimes by 100%."}],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 d=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});d.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(d);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 P=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});P.addToFactions(["Fulcrum Secret Technologies","ECorp"]),S(o.a.GrapheneBionicSpine)&&delete r.a[o.a.GrapheneBionicSpine],E(P);const N=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});N.addToFactions(["Speakers for the Dead","The Syndicate","KuaiGong International","OmniTek Incorporated","Blade Industries"]),S(o.a.BionicLegs)&&delete r.a[o.a.BionicLegs],E(N);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 j=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});j.addToFactions(["Silhouette"]),S(o.a.TITN41Injection)&&delete r.a[o.a.TITN41Injection],E(j);const D=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});D.addToFactions(["Bachman & Associates","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma"]),S(o.a.EnhancedSocialInteractionImplant)&&delete r.a[o.a.EnhancedSocialInteractionImplant],E(D);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 pe=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});pe.addToFactions(["The Syndicate","The Dark Army","Speakers for the Dead"]),S(o.a.ShadowsSimulacrum)&&delete r.a[o.a.ShadowsSimulacrum],E(pe);const de=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});de.addToFactions(["Netburners"]),S(o.a.HacknetNodeCPUUpload)&&delete r.a[o.a.HacknetNodeCPUUpload],E(de);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 ALL 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=0;e--)if(u.a.queuedAugmentations[e].name===o.a.NeuroFluxGovernor){t=e;break}for(let a=0;a"}return u.a.queuedAugmentations=[],Object(d.a)("You slowly drift to sleep as scientists put you under in order to install the following Augmentations: "+e+" You wake up in your home...you feel different..."),Object(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";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,"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(8),r=a(38);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=r.b.MaxRam)return 1/0;let i=0,o=Math.round(Math.log2(e)),s=e;for(let e=0;e=r.b.MaxCores)return 1/0;const i=r.b.UpgradeCoreMult;let o=0,s=e;for(let e=0;e=r.b.MaxCache)return 1/0;const n=r.b.UpgradeCacheMult;let i=0,o=e;for(let e=0;e=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,"a",(function(){return i}));var n=a(22);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.cmpthis.dmdR[1]&&(this.dmd=this.dmdR[1]),this.bCost*=e):(this.dmd*=1/a,this.dmd({ind:e.ind,city:e.city,amt:e.amt})),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,"a",(function(){return s}));var n=a(498),r=a(612),i=a(22);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";a.d(t,"c",(function(){return O})),a.d(t,"b",(function(){return S})),a.d(t,"a",(function(){return x}));var n=a(135),r=a(60),i=a(6),o=a(24),s=a(72),l=a(235),c=a(4),u=a(28),m=a(13),h=a(71),p=a(93),d=a(247),f=a(329),g=a(15),y=a(22),b=a(303),E=a(796),k=a(7),v=a(275);function _(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class w{constructor(){_(this,"PlayerSave",""),_(this,"AllServersSave",""),_(this,"CompaniesSave",""),_(this,"FactionsSave",""),_(this,"AliasesSave",""),_(this,"GlobalAliasesSave",""),_(this,"MessagesSave",""),_(this,"StockMarketSave",""),_(this,"SettingsSave",""),_(this,"VersionSave",""),_(this,"AllGangsSave",""),_(this,"LastExportBonus","")}getSaveString(){this.PlayerSave=JSON.stringify(c.a),this.AllServersSave=Object(u.j)(),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(p.a),this.SettingsSave=JSON.stringify(m.a),this.VersionSave=JSON.stringify(i.a.VersionNumber),this.LastExportBonus=JSON.stringify(f.a),c.a.inGang()&&(this.AllGangsSave=JSON.stringify(s.a));return btoa(unescape(encodeURIComponent(JSON.stringify(this))))}saveGame(){const e=this.getSaveString();Object(b.c)(e).then(()=>d.b.emit("Game Saved!","info")).catch(e=>console.error(e))}exportGame(){const e=this.getSaveString(),t=Math.round(Date.now()/1e3),a=c.a.bitNodeN;x(`bitburnerSave_BN${a}x${h.a[a]}_${t}.json`,e)}toJSON(){return Object(y.b)("BitburnerSaveObject",this)}static fromJSON(e){return Object(y.a)(w,e.data)}}function S(e){if(!e)return!1;e=decodeURIComponent(escape(atob(e)));const t=JSON.parse(e,y.c);if(Object(c.b)(t.PlayerSave),Object(u.h)(t.AllServersSave),Object(r.c)(t.CompaniesSave),Object(o.d)(t.FactionsSave),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(p.i)(t.StockMarketSave)}catch(e){Object(p.i)("")}else Object(p.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{f.d(JSON.parse(t.LastExportBonus))}catch(e){f.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,y.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;ae.name===k.a.NeuroFluxGovernor);if(e)e.level+=10;else{const e=new v.a(k.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;ePlease report any bugs/issues through the github repository (https://github.com/danielyxie/bitburner/issues) or the Bitburner subreddit (reddit.com/r/bitburner).
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.
-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)
-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()
-Keep security level low. Security level affects everything when hacking. Two important Netscript functions for this are getServerSecurityLevel() and getServerMinSecurityLevel()
-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
-Prioritize upgrading the RAM on your home computer. This can also be done at 'Alpha Enterprises'
-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="Getting Started with Corporations 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.
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.
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.
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').
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.
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.
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.
Tips/Pointers -The 'Smart Supply' upgrade is extremely useful. Consider purchasing it as soon as possible.
-Purchasing Hardware, Robots, AI Cores, and Real Estate can potentially increase your production. The effects of these depend on what industry you are in.
-In order to optimize your production, you will need a good balance of Operators, Managers, and Engineers
-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.
-If your employees have low morale, energy, or happiness, their production will greatly suffer.
-Tech is important, but don't neglect sales! Having several Businessmen can boost your sales and your bottom line.
-Don't forget to advertise your company. You won't have any business if nobody knows you.
-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
-Remember, you need to spend money to make money!
-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.
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.
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.
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.
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.
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.
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 threads.
To this day, tensions still exist between the remaining Synthoids and humans as a result of the Uprising.
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.
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.
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.
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.'
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.
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.
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.
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?
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.
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.
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.
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. From the places where the oppressed meet. Their cries echoed loudly through the air. As they once did in Tiananmen Square. Loudness in the silence, Darkness in the light. They came forth with power and might. Once the beacon of democracy, America was first. Its pillars of society destroyed and dispersed. Soon the cries rose everywhere, with revolt and riot. Until one day, finally, all was quiet. From the ashes rose a new order, corporatocracy was its name. Rome, Mongol, Byzantine, all of history is just the same. For man will never change in a fundamental way. 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.
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?
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.
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.
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.
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.
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 transporation 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.
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.
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.
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?
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.
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.
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
THE GOVERNMENT DOES NOT EXIST. CORPORATIONS DO NOT RUN SOCIETY
THE ILLUMINATI ARE THE SECRET RULERS OF THE WORLD!
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.
OPEN YOUR EYES
It was the Illuminati that brought an end to democracy in the world. They are the driving force behind everything that happens.
THEY ARE ALL AROUND YOU
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.
What's the point of all this? What is my purpose?
Some people dare to think even bigger.
What will the fate of the human race be?
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 u}));var n=a(501),r=a(211),i=a(190),o=a(72),s=a(22),l=a(8);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,"task","Unassigned"),c(this,"earnedRespect",0),c(this,"hack",1),c(this,"str",1),c(this,"def",1),c(this,"dex",1),c(this,"agi",1),c(this,"cha",1),c(this,"hack_exp",0),c(this,"str_exp",0),c(this,"def_exp",0),c(this,"dex_exp",0),c(this,"agi_exp",0),c(this,"cha_exp",0),c(this,"hack_mult",1),c(this,"str_mult",1),c(this,"def_mult",1),c(this,"dex_mult",1),c(this,"agi_mult",1),c(this,"cha_mult",1),c(this,"hack_asc_points",0),c(this,"str_asc_points",0),c(this,"def_asc_points",0),c(this,"dex_asc_points",0),c(this,"agi_asc_points",0),c(this,"cha_asc_points",0),c(this,"upgrades",[]),c(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 Math.max(Math.pow(e/2e3,.7),1)}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();if(0===t.baseRespect)return 0;let a=t.hackWeight/100*this.hack+t.strWeight/100*this.str+t.defWeight/100*this.def+t.dexWeight/100*this.dex+t.agiWeight/100*this.agi+t.chaWeight/100*this.cha;if(a-=4*t.difficulty,a<=0)return 0;const n=Math.max(.005,Math.pow(100*o.a[e.facName].territory,t.territory.respect)/100),r=(.2*e.getTerritory()+.8)*l.a.GangSoftcap;if(isNaN(n)||n<=0)return 0;const i=e.getWantedPenalty();return Math.pow(11*t.baseRespect*a*n*i,r)}calculateWantedLevelGain(e){const t=this.getTask();if(0===t.baseWanted)return 0;let a=t.hackWeight/100*this.hack+t.strWeight/100*this.str+t.defWeight/100*this.def+t.dexWeight/100*this.dex+t.agiWeight/100*this.agi+t.chaWeight/100*this.cha;if(a-=3.5*t.difficulty,a<=0)return 0;const n=Math.max(.005,Math.pow(100*o.a[e.facName].territory,t.territory.wanted)/100);if(isNaN(n)||n<=0)return 0;if(t.baseWanted<0)return.4*t.baseWanted*a*n;const r=7*t.baseWanted/Math.pow(3*a*n,.8);return Math.min(100,r)}calculateMoneyGain(e){const t=this.getTask();if(0===t.baseMoney)return 0;let a=t.hackWeight/100*this.hack+t.strWeight/100*this.str+t.defWeight/100*this.def+t.dexWeight/100*this.dex+t.agiWeight/100*this.agi+t.chaWeight/100*this.cha;if(a-=3.2*t.difficulty,a<=0)return 0;const n=Math.max(.005,Math.pow(100*o.a[e.facName].territory,t.territory.money)/100);if(isNaN(n)||n<=0)return 0;const r=e.getWantedPenalty(),i=(.2*e.getTerritory()+.8)*l.a.GangSoftcap;return Math.pow(5*t.baseMoney*a*n*r,i)}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.str_exp+=t.strWeight/1500*a*n.str,this.def_exp+=t.defWeight/1500*a*n.def,this.dex_exp+=t.dexWeight/1500*a*n.dex,this.agi_exp+=t.agiWeight/1500*a*n.agi,this.cha_exp+=t.chaWeight/1500*a*n.cha}recordEarnedRespect(e=1,t){this.earnedRespect+=this.calculateRespectGain(t)*e}getGainedAscensionPoints(){return{hack:Math.max(this.hack_exp-1e3,0),str:Math.max(this.str_exp-1e3,0),def:Math.max(this.def_exp-1e3,0),dex:Math.max(this.dex_exp-1e3,0),agi:Math.max(this.agi_exp-1e3,0),cha:Math.max(this.cha_exp-1e3,0)}}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")}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(26),r=a(9);const i={},o={},s={},l={},c={},u={},m={},h={},p={},d={},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=>{p[e]=!0}),n.c.forEach(e=>{d[e]=!0});for(let e=0;enull),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(3),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(87),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:"Joes Guns",otlkMag:1,spreadPerc:{divisor:10,max:14,min:6},shareTxForMovement:{max:52e3,min:15e3},symbol:n.a["Joes Guns"]},{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(438),i=a(72),o=a(211),s=a(190);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)("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)("gang","inGang")),e.inGang()},getMemberNames:function(){a.updateDynamicRam("getMemberNames",Object(n.c)("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)("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}},getOtherGangInformation:function(){a.updateDynamicRam("getOtherGangInformation",Object(n.c)("gang","getOtherGangInformation")),l("getOtherGangInformation");const e={};for(const t in i.a)e[t]=Object.assign({},i.a[t]);return e},getMemberInformation:function(e){a.updateDynamicRam("getMemberInformation",Object(n.c)("gang","getMemberInformation")),l("getMemberInformation");const t=c("getMemberInformation",e);return{name:t.name,task:t.task,earnedRespect:t.earnedRespect,hack:t.hack,str:t.str,def:t.def,dex:t.dex,agi:t.agi,cha:t.cha,hack_exp:t.hack_exp,str_exp:t.str_exp,def_exp:t.def_exp,dex_exp:t.dex_exp,agi_exp:t.agi_exp,cha_exp:t.cha_exp,hack_mult:t.hack_mult,str_mult:t.str_mult,def_mult:t.def_mult,dex_mult:t.dex_mult,agi_mult:t.agi_mult,cha_mult:t.cha_mult,hack_asc_mult:t.calculateAscensionMult(t.hack_asc_points),str_asc_mult:t.calculateAscensionMult(t.str_asc_points),def_asc_mult:t.calculateAscensionMult(t.def_asc_points),dex_asc_mult:t.calculateAscensionMult(t.dex_asc_points),agi_asc_mult:t.calculateAscensionMult(t.agi_asc_points),cha_asc_mult:t.calculateAscensionMult(t.cha_asc_points),hack_asc_points:t.hack_asc_points,str_asc_points:t.str_asc_points,def_asc_points:t.def_asc_points,dex_asc_points:t.dex_asc_points,agi_asc_points:t.agi_asc_points,cha_asc_points:t.cha_asc_points,upgrades:t.upgrades.slice(),augmentations:t.augmentations.slice()}},canRecruitMember:function(){a.updateDynamicRam("canRecruitMember",Object(n.c)("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)("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("recruitMember",`Successfully recruited Gang Member '${r}'`):t.log("recruitMember",`Failed to recruit Gang Member '${r}'`),o},getTaskNames:function(){a.updateDynamicRam("getTaskNames",Object(n.c)("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(e,r){a.updateDynamicRam("setMemberTask",Object(n.c)("gang","setMemberTask")),l("setMemberTask");const i=c("setMemberTask",e).assignToTask(r);return i?t.log("setMemberTask",`Successfully assigned Gang Member '${e}' to '${r}' task`):t.log("setMemberTask",`Failed to assign Gang Member '${e}' to '${r}' task. '${e}' is now Unassigned`),i},getTaskStats:function(e){a.updateDynamicRam("getTaskStats",Object(n.c)("gang","getTaskStats")),l("getTaskStats");const t=function(e,t){const n=o.a[t];if(!n)throw a.makeRuntimeErrorMsg("gang."+e,`Invalid task: '${t}'`);return n}("getTaskStats",e),r=Object.assign({},t);return r.territory=Object.assign({},t.territory),r},getEquipmentNames:function(){return a.updateDynamicRam("getEquipmentNames",Object(n.c)("gang","getEquipmentNames")),l("getEquipmentNames"),Object.keys(s.a)},getEquipmentCost:function(t){a.updateDynamicRam("getEquipmentCost",Object(n.c)("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(e){a.updateDynamicRam("getEquipmentType",Object(n.c)("gang","getEquipmentType")),l("getEquipmentType");const t=s.a[e];return null==t?"":t.getType()},getEquipmentStats:function(e){a.updateDynamicRam("getEquipmentStats",Object(n.c)("gang","getEquipmentStats")),l("getEquipmentStats");const t=s.a[e];if(!t)throw a.makeRuntimeErrorMsg("getEquipmentStats","Invalid equipment: "+e);const r=t.mults;return Object.assign({},r)},purchaseEquipment:function(r,i){a.updateDynamicRam("purchaseEquipment",Object(n.c)("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("purchaseEquipment",`Purchased '${i}' for Gang member '${r}'`):t.log("purchaseEquipment",`Failed to purchase '${i}' for Gang member '${r}'`),h},ascendMember:function(r){a.updateDynamicRam("ascendMember",Object(n.c)("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)},setTerritoryWarfare:function(r){a.updateDynamicRam("setTerritoryWarfare",Object(n.c)("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("setTerritoryWarfare","Engaging in Gang Territory Warfare")):(i.territoryWarfareEngaged=!1,t.log("setTerritoryWarfare","Disengaging in Gang Territory Warfare"))},getChanceToWinClash:function(t){a.updateDynamicRam("getChanceToWinClash",Object(n.c)("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)("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(163),i=a(71),o=a(68),s=a(508),l=a(20),c=a(326);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)("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)("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)("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)("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)("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)("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)("sleeve","setToCompanyWork")),u("setToCompanyWork"),m("setToCompanyWork",i);for(let 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(s.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=l(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=l(t,"upgradeLevel");return Object(r.n)(e,n,a)},upgradeRam:function(t,a){const n=l(t,"upgradeRam");return Object(r.o)(e,n,a)},upgradeCore:function(t,a){const n=l(t,"upgradeCore");return Object(r.k)(e,n,a)},upgradeCache:function(a,n){if(!Object(r.g)(e))return!1;const o=l(a,"upgradeCache");if(!(o instanceof i.a))return t.log("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 l(t,"upgradeLevel").calculateLevelUpgradeCost(a,e.hacknet_node_level_cost_mult)},getRamUpgradeCost:function(t,a){return l(t,"upgradeRam").calculateRamUpgradeCost(a,e.hacknet_node_ram_cost_mult)},getCoreUpgradeCost:function(t,a){return l(t,"upgradeCore").calculateCoreUpgradeCost(a,e.hacknet_node_core_cost_mult)},getCacheUpgradeCost:function(a,n){if(!Object(r.g)(e))return 1/0;const o=l(a,"upgradeCache");return o instanceof i.a?o.calculateCacheUpgradeCost(n):(t.log("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)},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 o}));var n=a(205),r=a(14),i=a(8);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)("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)("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)("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(e=""){a.updateDynamicRam("getBlackOpRank",Object(r.c)("bladeburner","getBlackOpRank")),o("getBlackOpRank");return l("getBlackOpRank","blackops",e).reqdRank},getGeneralActionNames:function(){a.updateDynamicRam("getGeneralActionNames",Object(r.c)("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)("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)("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)("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)("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)("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)("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(e="",t="",n){a.updateDynamicRam("getActionRepGain",Object(r.c)("bladeburner","getActionRepGain")),o("getActionRepGain");const s=l("getActionRepGain",e,t);let c;return c=null==n||isNaN(n)?Math.pow(s.rewardFac,s.level-1):Math.pow(s.rewardFac,n-1),s.rankGain*c*i.a.BladeburnerRank},getActionCountRemaining:function(n="",i=""){a.updateDynamicRam("getActionCountRemaining",Object(r.c)("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(e="",t=""){a.updateDynamicRam("getActionMaxLevel",Object(r.c)("bladeburner","getActionMaxLevel")),o("getActionMaxLevel");return l("getActionMaxLevel",e,t).maxLevel},getActionCurrentLevel:function(e="",t=""){a.updateDynamicRam("getActionCurrentLevel",Object(r.c)("bladeburner","getActionCurrentLevel")),o("getActionCurrentLevel");return l("getActionCurrentLevel",e,t).level},getActionAutolevel:function(e="",t=""){a.updateDynamicRam("getActionAutolevel",Object(r.c)("bladeburner","getActionAutolevel")),o("getActionAutolevel");return l("getActionCurrentLevel",e,t).autoLevel},setActionAutolevel:function(e="",t="",n=!0){a.updateDynamicRam("setActionAutolevel",Object(r.c)("bladeburner","setActionAutolevel")),o("setActionAutolevel");l("setActionAutolevel",e,t).autoLevel=n},setActionLevel:function(e="",t="",n=1){a.updateDynamicRam("setActionLevel",Object(r.c)("bladeburner","setActionLevel")),o("setActionLevel");const i=l("setActionLevel",e,t);if(n<1||n>i.maxLevel)throw a.makeRuntimeErrorMsg("bladeburner.setActionLevel",`Level must be between 1 and ${i.maxLevel}, is ${n}`);i.level=n},getRank:function(){a.updateDynamicRam("getRank",Object(r.c)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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)("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(781);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)("codingcontract","attempt"));const u=i("attempt",l,s);if(Object(r.a)(o)){const e=[];for(let t=0;t=u.getMaxNumTries()?(t.log("attempt",`Coding Contract attempt '${s}' failed. Contract is now self-destructing`),h.removeContract(s)):t.log("attempt",`Coding Contract attempt '${s}' failed. ${u.getMaxNumTries()-u.tries} attempts remaining.`),!!c&&""},getContractType:function(e,r=t.hostname){a.updateDynamicRam("getContractType",Object(n.c)("codingcontract","getContractType"));return i("getContractType",r,e).getType()},getData:function(e,r=t.hostname){a.updateDynamicRam("getData",Object(n.c)("codingcontract","getData"));const o=i("getData",r,e).getData();if(o.constructor===Array){const e=o.slice();for(let t=0;te.constructor===Array)}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return o}));var n=a(67),r=a(389),i=a(390);function o(e){function t(t){const a=e.corporation;if(null===a)throw new Error("cannot be called without a corporation");const n=a.divisions.find(e=>e.name===t);if(void 0===n)throw new Error(`No division named '${t}'`);return n}function a(e,a){const n=t(e);if(!(a in n.offices))throw new Error(`Invalid city name '${a}'`);const r=n.offices[a];if(0===r)throw new Error(`${n.name} has not expanded to '${a}'`);return r}function o(e,a){const n=t(e);if(!(a in n.warehouses))throw new Error(`Invalid city name '${a}'`);const r=n.warehouses[a];if(0===r)throw new Error(`${n.name} has not expanded to '${a}'`);return r}function s(e,t,a){const n=o(e,t).materials[a];if(void 0===n)throw new Error(`Invalid material name: '${a}'`);return n}function l(e,a){const n=t(e).products[a];if(void 0===n)throw new Error(`Invalid product name: '${a}'`);return n}function c(e,t,n){const r=a(e,t).employees.find(e=>e.name===n);if(void 0===r)throw new Error(`Invalid employee name: '${n}'`);return r}return{expandIndustry:function(t,a){const r=e.corporation;if(null===r)throw new Error("Should not be called without a corporation");Object(n.l)(r,t,a)},expandCity:function(a,r){const i=t(a),o=e.corporation;if(null===o)throw new Error("Should not be called without a corporation");Object(n.k)(o,i,r)},unlockUpgrade:function(t){const a=Object.values(r.a).find(e=>e[2]===t);if(void 0===a)throw new Error(`No upgrade named '${t}'`);const i=e.corporation;if(null===i)throw new Error("Should not be called without a corporation");Object(n.x)(i,a)},levelUpgrade:function(t){const a=Object.values(i.a).find(e=>e[4]===t);if(void 0===a)throw new Error(`No upgrade named '${t}'`);const r=e.corporation;if(null===r)throw new Error("Should not be called without a corporation");Object(n.h)(r,a)},issueDividends:function(t){const a=e.corporation;if(null===a)throw new Error("Should not be called without a corporation");Object(n.g)(a,t)},sellMaterial:function(e,t,a,r,i){const o=s(e,t,a);Object(n.o)(o,r,i)},sellProduct:function(e,t,a,r,i,o){const s=l(e,a);Object(n.p)(s,t,r,i,o)},discontinueProduct:function(e,a){t(e).discontinueProduct(l(e,a))},setSmartSupply:function(e,t,a){const r=o(e,t);Object(n.u)(r,a)},buyMaterial:function(e,t,a,r){const i=s(e,t,a);Object(n.c)(i,r)},employees:function(e,t){return a(e,t).employees.map(e=>Object.assign({},e))},assignJob:function(e,t,a,r){const i=c(e,t,a);Object(n.a)(i,r)},hireEmployee:function(e,t){a(e,t).hireRandomEmployee()},upgradeOfficeSize:function(t,r,i){const o=a(t,r),s=e.corporation;if(null===s)throw new Error("Should not be called without a corporation");Object(n.y)(s,o,i)},throwParty:function(t,r,i){const o=a(t,r),s=e.corporation;if(null===s)throw new Error("Should not be called without a corporation");Object(n.w)(s,o,i)},purchaseWarehouse:function(a,r){const i=e.corporation;if(null===i)throw new Error("Should not be called without a corporation");Object(n.m)(i,t(a),r)},upgradeWarehouse:function(a,r){const i=e.corporation;if(null===i)throw new Error("Should not be called without a corporation");Object(n.z)(i,t(a),o(a,r))},buyCoffee:function(r,i){const o=e.corporation;if(null===o)throw new Error("Should not be called without a corporation");Object(n.b)(o,t(r),a(r,i))},hireAdVert:function(r){const i=e.corporation;if(null===i)throw new Error("Should not be called without a corporation");Object(n.f)(i,t(r),a(r,"Sector-12"))},makeProduct:function(a,r,i,o,s){const l=e.corporation;if(null===l)throw new Error("Should not be called without a corporation");Object(n.j)(l,t(a),r,i,o,s)},research:function(e,a){Object(n.n)(t(e),a)},exportMaterial:function(e,t,a,r,i,o){Object(n.e)(a,r,s(e,t,i),o+"")},cancelExportMaterial:function(e,t,a,r,i,o){Object(n.d)(a,r,s(e,t,i),o+"")},setMaterialMarketTA1:function(e,t,a,r){Object(n.q)(s(e,t,a),r)},setMaterialMarketTA2:function(e,t,a,r){Object(n.r)(s(e,t,a),r)},setProductMarketTA1:function(e,t,a){Object(n.s)(l(e,t),a)},setProductMarketTA2:function(e,t,a){Object(n.t)(l(e,t),a)},getDivision:function(e){return t(e)},getOffice:function(e,t){return a(e,t)},getWarehouse:function(e,t){return o(e,t)},getMaterial:function(e,t,a){return s(e,t,a)},getProduct:function(e,t){return l(e,t)},getEmployee:function(e,t,a){return c(e,t,a)}}}},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__(22),_Locations_data_CityNames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(23),_IndustryData__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(52),_data_Constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(42),_EmployeePositions__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(48),_Material__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(171),_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(31),_utils_calculateEffectWithFactors__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(784),_OfficeSpace__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(327),_Product__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(352),_ui_React_DialogBox__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(15),_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(115),_MaterialSizes__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(161),_Warehouse__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(210),_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(328);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;e0&&(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;in)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;e0){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].qty0&&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;emat.bCost?sCost-mat.bCost>markupLimit&&(markup=Math.pow(markupLimit/(sCost-mat.bCost),2)):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