various fixes and adjustments

This commit is contained in:
phyzical 2022-03-29 22:43:28 +08:00
parent 7c5097ee83
commit fd64746ff8
15 changed files with 143 additions and 147 deletions

@ -776,7 +776,7 @@ export const achievements: IMap<Achievement> = {
// { ID: FactionNames.Bladeburners.toUpperCase(), Condition: () => Player.factions.includes(FactionNames.Bladeburners) },
// { ID: "DEEPSCANV1.EXE", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV1.name) },
// { ID: "DEEPSCANV2.EXE", Condition: () => Player.getHomeComputer().programs.includes(Programs.DeepscanV2.name) },
// { ID: "INFILTRATORS", Condition: () => Player.factions.includes(FactionNames.Infiltators) },
// { ID: "INFILTRATORS", Condition: () => Player.factions.includes(FactionNames.Infiltrators) },
// {
// ID: "SERVERPROFILER.EXE",
// Condition: () => Player.getHomeComputer().programs.includes(Programs.ServerProfiler.name),

@ -349,42 +349,44 @@ function generateStatsDescription(mults: IMap<number>, programs?: string[], star
desc = (
<>
{desc}
<br />+{f(mults.infiltration_base_rep_increase)} Infiltration {FactionNames.Infiltrators} Reputation base reward
<br />+{f(mults.infiltration_base_rep_increase - 1)} Infiltration {FactionNames.Infiltrators} Reputation base
reward
</>
);
if (mults.infiltration_rep_mult)
desc = (
<>
{desc}
<br />+{f((mults.infiltration_rep_mult - 1) * 100)}% Infiltration {FactionNames.Infiltrators} Reputation reward
<br />+{f(mults.infiltration_rep_mult - 1)} Infiltration {FactionNames.Infiltrators} Reputation reward
</>
);
if (mults.infiltration_trade_mult)
desc = (
<>
{desc}
<br />+{f((mults.infiltration_trade_mult - 1) * 100)}% Infiltration Reputation for trading information
<br />+{f(mults.infiltration_trade_mult - 1)} Infiltration Reputation for trading information
</>
);
if (mults.infiltration_sell_mult)
desc = (
<>
{desc}
<br />+{f((mults.infiltration_sell_mult - 1) * 100)}% Infiltration cash reward for selling information
<br />+{f(mults.infiltration_sell_mult - 1)} Infiltration cash reward for selling information
</>
);
if (mults.infiltration_timer_mult)
desc = (
<>
{desc}
<br />+{f((mults.infiltration_timer_mult - 1) * 100)}% Infiltration time per minigame
<br />+{f(mults.infiltration_timer_mult - 1)} Infiltration time per minigame
</>
);
if (mults.infiltration_health_reduction_mult)
desc = (
<>
{desc}
<br />-{f((mults.infiltration_health_reduction_mult - 1) * 100)}% Infiltration health lost per failed minigame
<br />
{f(mults.infiltration_health_reduction_mult - 1)} Infiltration health lost per failed minigame
</>
);

@ -163,13 +163,13 @@ export const infiltratorsOtherAugmentations = [
export const infiltratorsMiniGameAugmentations = [
new Augmentation({
name: AugmentationNames.BagOfSand,
name: AugmentationNames.PythiasBrainStem,
repCost: 1e2,
moneyCost: 1e6,
info:
"You watched a bittube video about sword fighting, " +
"it suggested the best way to win a sword fight was to play dirty " +
"so you filled a bag full of sand from outside your house.",
"You found an old jar apparently containing the brain stem of one of the most famous " +
"fortune tellers in the world, installing this augmentation will apparently connect the synapses reactivating " +
"the magic this man once shared with the world ",
stats: (
<>This augmentation makes the Slash minigame easier by showing you via an indictor when the slash in coming.</>
),
@ -187,34 +187,32 @@ export const infiltratorsMiniGameAugmentations = [
factions: [FactionNames.Infiltrators],
}),
new Augmentation({
name: AugmentationNames.ReverseDictionary,
name: AugmentationNames.RearViewMirrorShoulderAttachment,
repCost: 1e2,
moneyCost: 1e6,
info:
"An ancient dictionary with a thick layer of dust it looks like a different language, " +
"as you examine it further you realise that its actually just a normal dictionary but the words are " +
"written backwards if only you could take the book home, you think it would become like a second language.",
info: "Never again will you need to turn your head to see whats behind you.",
stats: <>This augmentation makes the Backwards minigame easier by making the words no longer backwards.</>,
factions: [FactionNames.Infiltrators],
}),
new Augmentation({
name: AugmentationNames.AmuletOfPersuasion,
name: AugmentationNames.KyberCrystalInjection,
repCost: 1e2,
moneyCost: 1e6,
info:
"A fancy looking amulet that looks like something an Egyptian goddess would wear, " +
"you hear faint whispers that are trying to convince you to do things you wouldn't normally do, " +
"upon touching it the voices stop how strange.",
"A weird looking shiny crystal which is crushed down and turned into a thick syrup, " +
"most people think its all homeopathic but there are a few that believe when injected people will " +
"believe what you say with one wave of the hand ",
stats: <>This augmentation makes the Bribe minigame easier by indicating the incorrect paths.</>,
factions: [FactionNames.Infiltrators],
}),
new Augmentation({
name: AugmentationNames.LameSharkRepository,
name: AugmentationNames.DyslexiaModule,
repCost: 1e2,
moneyCost: 1e6,
info:
"You stumble across an old opensource repository for a weird defunct version of LameShark, " +
"upon studying the source code it seems to just have a bunch of arrow key cheat codes. ",
"A module initially developed to reverse the disability of dyslexia, But during human trials it was found " +
"to actually cause dyslexia, despite the fact scientists decided to sell it anyway. Who would want " +
"to install something like that... i guess it has the added benefit of qualifying for a disability card",
stats: <>This augmentation makes the Cheat Code minigame easier by allowing the opposite character.</>,
factions: [FactionNames.Infiltrators],
}),
@ -229,11 +227,11 @@ export const infiltratorsMiniGameAugmentations = [
factions: [FactionNames.Infiltrators],
}),
new Augmentation({
name: AugmentationNames.MineDetector,
name: AugmentationNames.MineDetectionArmAttachment,
repCost: 1e2,
moneyCost: 1e6,
info:
"You stumble across an old mine detector at an army surplus store, " +
"You stumble across an old mine detection arm attachment at an army surplus store, " +
"on the side is inscribed 'X(' i wonder what happened to the original owner, " +
"its a bit beaten up but looks like it should still do the job.",
stats: (
@ -245,12 +243,12 @@ export const infiltratorsMiniGameAugmentations = [
factions: [FactionNames.Infiltrators],
}),
new Augmentation({
name: AugmentationNames.WireCuttingManual,
name: AugmentationNames.SecurityWireContacts,
repCost: 1e2,
moneyCost: 1e6,
info:
"You found an old wire cutting for dummies book in the local library, " +
"how hard can it be to cut wires, right?",
"This augment is a set of contacts for your eyes when installed allows for the user to see which" +
"wires are conducting security related information",
stats: <>This augmentation makes the Wire Cutting minigame easier by indicating the incorrect wires.</>,
factions: [FactionNames.Infiltrators],
}),

@ -114,14 +114,14 @@ export enum AugmentationNames {
StaneksGift3 = "Stanek's Gift - Serenity",
// Infiltrators MiniGames
BagOfSand = "A Bag of Sand",
PythiasBrainStem = "Pythia's Brain Stem",
IntellisenseModule = "Intellisense Module",
ReverseDictionary = "Reverse Dictionary",
AmuletOfPersuasion = "Amulet of Persuasian",
LameSharkRepository = "Lame Shark Repository",
DyslexiaModule = "Dyslexia Module",
KyberCrystalInjection = "Kyber Crystal Injection",
RearViewMirrorShoulderAttachment = "Rear View Mirror Shoulder Attachment",
CyberDecoder = "Cyber Decoder",
MineDetector = "Mine Detector",
WireCuttingManual = "Wire Cutting Manual",
MineDetectionArmAttachment = "Mine Detection Arm Attachment",
SecurityWireContacts = "Security Wire Contacts",
// Infiltrators general
BionicFingers = "Bionic Fingers",
CorporationManagementImplant = "Corporation Management Implant",

@ -121,33 +121,33 @@ export function PlayerMultipliers(): React.ReactElement {
<MultiplierTable
rows={[
[
"Infiltrator Rep reward multiplier",
"Infiltrator Rep reward",
Player.infiltration_rep_mult,
Player.infiltration_rep_mult * mults.infiltration_rep_mult,
1,
],
[
"Infiltration sell multiplier",
"Infiltration sell",
Player.infiltration_sell_mult,
Player.infiltration_sell_mult * mults.infiltration_sell_mult,
1,
],
[
"Infiltration trade multiplier",
"Infiltration trade",
Player.infiltration_trade_mult,
Player.infiltration_trade_mult * mults.infiltration_trade_mult,
1,
],
[
"Infiltration minigame timer multiplier",
"Infiltration minigame timer",
Player.infiltration_timer_mult,
Player.infiltration_timer_mult * mults.infiltration_timer_mult,
1,
],
[
"Infiltration minigame health reduction multiplier",
"Infiltration minigame health reduction",
Player.infiltration_health_reduction_mult,
Player.infiltration_health_reduction_mult * mults.infiltration_health_reduction_mult,
-1 * (1 - Player.infiltration_health_reduction_mult * mults.infiltration_health_reduction_mult),
1,
],
]}

@ -85,8 +85,6 @@ export class FactionInfo {
}
}
/**
* A map of all factions and associated info to them.
*/
@ -143,8 +141,9 @@ export const FactionInfos: IMap<FactionInfo> = {
[FactionNames.ECorp]: new FactionInfo(
(
<>
{FactionNames.ECorp}'s mission is simple: to connect the world of today with the technology of tomorrow. With our wide range of
Internet-related software and commercial hardware, {FactionNames.ECorp} makes the world's information universally accessible.
{FactionNames.ECorp}'s mission is simple: to connect the world of today with the technology of tomorrow. With
our wide range of Internet-related software and commercial hardware, {FactionNames.ECorp} makes the world's
information universally accessible.
</>
),
[],
@ -159,12 +158,13 @@ export const FactionInfos: IMap<FactionInfo> = {
[FactionNames.MegaCorp]: new FactionInfo(
(
<>
{FactionNames.MegaCorp} does what no other dares to do. We imagine. We create. We invent. We create what others have never even
dreamed of. Our work fills the world's needs for food, water, power, and transportation on an unprecedented
scale, in ways that no other company can.
{FactionNames.MegaCorp} does what no other dares to do. We imagine. We create. We invent. We create what others
have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an
unprecedented scale, in ways that no other company can.
<br />
<br />
In our labs and factories and on the ground with customers, {FactionNames.MegaCorp} is ushering in a new era for the world.
In our labs and factories and on the ground with customers, {FactionNames.MegaCorp} is ushering in a new era for
the world.
</>
),
[],
@ -194,7 +194,16 @@ export const FactionInfos: IMap<FactionInfo> = {
true,
),
[FactionNames.BladeIndustries]: new FactionInfo(<>Augmentation is Salvation.</>, [], true, true, true, true, false, true),
[FactionNames.BladeIndustries]: new FactionInfo(
<>Augmentation is Salvation.</>,
[],
true,
true,
true,
true,
false,
true,
),
[FactionNames.NWO]: new FactionInfo(
(
@ -486,12 +495,39 @@ export const FactionInfos: IMap<FactionInfo> = {
false,
),
[FactionNames.SlumSnakes]: new FactionInfo(<>{FactionNames.SlumSnakes} rule!</>, [], false, false, true, true, false, false),
[FactionNames.SlumSnakes]: new FactionInfo(
<>{FactionNames.SlumSnakes} rule!</>,
[],
false,
false,
true,
true,
false,
false,
),
// Earlygame factions - factions the player will prestige with early on that don't belong in other categories.
[FactionNames.Netburners]: new FactionInfo(<>{"~~//*>H4CK||3T 8URN3R5**>?>\\~~"}</>, [], true, true, false, false, false, false),
[FactionNames.Netburners]: new FactionInfo(
<>{"~~//*>H4CK||3T 8URN3R5**>?>\\~~"}</>,
[],
true,
true,
false,
false,
false,
false,
),
[FactionNames.TianDiHui]: new FactionInfo(<>Obey Heaven and work righteously.</>, [], true, true, false, true, false, false),
[FactionNames.TianDiHui]: new FactionInfo(
<>Obey Heaven and work righteously.</>,
[],
true,
true,
false,
true,
false,
false,
),
[FactionNames.CyberSec]: new FactionInfo(
(
@ -517,7 +553,8 @@ export const FactionInfos: IMap<FactionInfo> = {
It's too bad they won't live. But then again, who does?
<br />
<br />
Note that for this faction, reputation can only be gained through {FactionNames.Bladeburners} actions. Completing {FactionNames.Bladeburners}
Note that for this faction, reputation can only be gained through {FactionNames.Bladeburners} actions.
Completing {FactionNames.Bladeburners}
contracts/operations will increase your reputation.
</>
),
@ -572,88 +609,45 @@ export const FactionInfos: IMap<FactionInfo> = {
true,
true,
),
// prettier-ignore
[FactionNames.Infiltrators]: new FactionInfo(<>
{". ;<<;. '>><'...<<<' I+<l .>>>: .'<i<. I~~!' `l<!+jYJJCJJJJJLJJLc{ii<! .'><i' .;<<~ .l~>: `<>>. .:<i!.. <<~I ..><>`..;<>> ' !<<;. `>~<' ,<>l...!i>; . +<<' "}<br /><br />
{"llI,^^'I!l^^^Iil:^^^;l!,^^:ll!,^^:!!:^^'!!l:'^'i>;{UUJCJUCCJJJJJUUJCJUCOY<IlI'^^;!l,^^,!!l,^`;!l:^^^:!!:^^'llI'`^,I!l``'Il!;^^'l!!,^^:!!I,^^llI,^^^;!l,^^,!lI^`^:l"}<br /><br />
{"><<, .'>~i' .l><i..'>><' .^<<>' ':<<I...<<~' :fUJCLLQ0QCCCJJJJJCCJUUUJCCv><l. 'i>>,'..<>>^ .:<>l '.><>: '^!<~`..,<>>.''!>>: ..<i+^. ,><!...i><;.'`>>>^'.,>>_...I<"}<br /><br />
{"..'I>iI..'i<>' .^>>i^..l>i;'. >><,'.`<<i.^>(YLCCLLQ0QQLCCJJJUCLJJJJCCCLZq?'.`i<>' ;<>!. 'Ii>'.''i>>`..:<<I..'i>i,'.'>>!' .:>~!. l<<;. ^li>...'i<l' 'l<>, .^>>i'."}<br /><br />
{"`'^,ll;^`';II''^,ll;''^;ll;^^'i>l;l>}uYCCJJCLLLCCCJJJCCCJJJJJJC0LCUUCLwZqI``'lII:'':!l;^`';!!,'^'lll'^',II:'^^lI;:^`'!lI'`':;lI'^';li;`^'Ii!'^';l;I''`,I;'^^'!!;:'"}<br /><br />
{">i+I ^,+ii.'.I>++'.^<ii,` `>!+nLUJLCJJCJXCLLLJJCCCCCCUJJJCJCCJCZZOQQOmmmm'~>i ''>>>, . <>i' .;!<> '.-<iI''^>i_''.I<iI' I+i^ '~i>'' ;i<I 'ii~I ^^<<i'..;><_ '!>"}<br /><br />
{" .`;><l`.'!<>'.',>>!'` i>>:lXCJJCCCJJJJJJJJJJJJJJJJJJJJJJJCCCJLZmmmmw0q_<>.'`i_i`..;<<!' ';i>'.''i>>'. ,>>;..^i>>;`.'>il^..,><i'..!<>;'''i<~..`:i>i^..I>>,.''<>i,'"}<br /><br />
{" .';><l' 'i<<^ .^<<i^' I~icJUCJCJJCJJJJJJJJJJJJJJJJJJJJJJJCJJQOmwqwOph+>[11_li~>`. I<<i' .I><' '^i><^. :<<I. '>><:' .<ii^. :<<i. !<<;..^><~ .',><i`..l><: .`<<>'."}<br /><br />
{">>~; ',+!i.'.I><~ ..!i>''rCUJJJJJJJJJJJCCJJJJJJJJJJJJCJJJJUQ0mpZZZk8%B8t}]-?]1]'<i>, . ~~>` ;i>>. +>>; .^>i+'. ;~<i.' l>i' .'+i~`. :>~!. .ii<l '`<>>''.,<<+ .l<"}<br /><br />
{";:',:,:,;:,,,,;:,:,,,IIlJLUUCCCCJJJJJJJJJLLLLLQQQQQQQ00OZmwZZQwo%@@@B@W{?-tf||_{il;,:::;;::;::;;,,,,,;;',,,::,;,,:,;I,;;;,I:,::;;,,;;;;;::;:';;:,'::I,'',;:::::,:;"}<br /><br />
{" ..;>i;.'^i>>,'.'><i' ^YUJJCJUUJJCC00ZmwwmmmmmmmmmmmmZmmmwmmZwW@@@@$@@o[_[n|1][?{. :>>i. .I><,. ^><i...:<<I...!<>:. .ii>'..I>>l l><; ^!<~^. '>iI' `l<<: .'i<>'."}<br /><br />
{"><~;..^><!' .li<!'.'!<jZ0CUJCJCQOZZmmmmmmZZmmwmZmwmZZpwJJQwQ*BB%B@8B%Y??-?(xf}---<<,' <>>^.':>!l ' i<>I.'`l~+^..:<><.'.l!i, .~>~^. '>>l...!ii:.''i>i^' 'i>_'..l<"}<br /><br />
{"<<!^ ^!<>' .l~iI..`IiwZZ0Q00mmmmmmmmmmZZZZmmmmZZ0LCJYU0Zq*@@B%@@B%@L???-_-??][,!-~, .^<<>,. ;~<I. ;~+; ^>>i` 'i~> ^!<~l' '>~+' .;<<i^ ><>,. .l+<' ,~<i. :>"}<br /><br />
{". I~<I .<<~^ .>!i^^YZZZZZZmZOOZmZZZZZZZO0LCJJJUJCLQm#@WQjjp@BB@%C?-[-_-?-|1~>^ .I~<< l+<: `<>i' .,<i!.. >><I ..><>` .I<>! ' l><I. '>~<' ,<>l. .li>; . ~<<' "}<br /><br />
{"!lI,^`'l!!^^^;!I;^^^Ili(0dOmOmZwm0mZQJUCQJJJUUJLLOpo&8@&m?<~<(%@B&X]?]-}({-_]{t>IIl:`^'lil''^Iil;'^';l!:'''!ll'^`:Il!^^';ll;`^,I!!'^^:li;^^`!!l;^`^;!;,,^:ill'^^;;"}<br /><br />
{"<>>, .'><!'..I><! .'>>~'..,+{1i;;W%obqm0C00OwkaW%B@@&zuqBb?>(*B%Mt}_?_jf-}-]--ft-~>^. '<>!' I>>l.. i~>; '>>>' ':>~i..'l~>'..`><i`. ;>>I' <>>;.'`i~<' .;><i. ';<"}<br /><br />
{" . :~!l .'>>>'...~i!^''!>>I.. ><~fB8B@@@@@@@BBB@B@BO|[[}|U*@BB8C{}-[-]U--]--?-tt}..I>~+. '!<>'. `>><. .,<<l.' >>>,..`i><' 'I+>l.. li+I. ^><> . '<i>. 'I<<, . <>i` "}<br /><br />
{"^^^:II:^'';:;''^^;I;'^`:II;^^::lI;b&M&%BW%%@&B&@88W&&%@@BB@&oz/?-[+?uZ]-?--?-(jt_:':;;I'^^;lI:'''III^^^,II;'^`,II,^^^;;I,'';I;;^,';;;:'^'III^^^'III''^;II:'^';ll,^"}<br /><br />
{"i<~, '>i!. Iii< .l>>' .`<<> ;(W?+>{c8B}1W#t_+?~][1tvt})-??]xY]<!1_?-???}ff{~i<'.. >~<` ;<>! <>>: ^ii<'. :<<i.'.l>>^ ''+>~`. ,><i. .ii>l ^>l!^` 'i>_ l~"}<br /><br />
{"^' ;<il..'>><^..'>>!^'';iil...!>>;'pb-li}Za@8)}_?]]?_}1_??-?--cc))?<_jJ_]~-[fft!'. I>i>'..l>i'.'`><<.'':><l.. i!<:.'^i!>^. ;<ii . !>>;''`>>i^`'^iii...!i>;.. <>>^ "}<br /><br />
{" .`I<<!` 'i~<^ .'~~i'' l>i;' l<<:.]@BBBB%@8z|({{1(tt1-??-?]}}?]t{-]!iC-_?}t/?<i^ ;~<I 'I><, `'><~^. ,~_l..`<<<;`.'<i!^ ,>~! .!<>' 'i<<'..,>+i' .!~+: .^<<i''"}<br /><br />
{"<<i' '<+i. ;~~!..`l<<'..'>>i. I<+p%hdQzf|[_/tfjt{?__--_?X]>+1(i~+1J(-t?t1i..'><~; .i<i'..;<>l'..!<+: `><<^..:><i ..l~>' '<++^ ,><!' .!<<I. ^i<<` ,<<>' .;>"}<br /><br />
{",^':;I;'^,III;^^:;;:,',;II;''::II''''])t(]_[_-__??--?-??[t}?(]<~iu1u1-])|[tf+;;l:^,:II:'',,I;''^;:I;;'^,I,;,^,:;:;',:;I:'^,,;;;,'':lI:,'':I:,',;;I;:'^:I;;,',:;;:^"}<br /><br />
{". I<>;' `i<<'..^i<>^ I~<; .>i~,..:{/(?]??vdmOc|{1)jt_>~<!YJOU?_-[]txjtt//|/{](fnzUJLzvjf/}!^'`I>+. .:~ii.`.i><I. '!ii'..I><!.. li>l. 'i~<' ,>>l' 'l><I.. <><, "}<br /><br />
{"i<>' .,i>l. ;>>!' .l~>, ,~>>.' I<il.+n1_}![]?-?]]?-[--?<_}<???f)tnnnj|/ftjjf|/fwQCQLCLOZLUCLJYZdf,+<~l `^>!<`. ^<<i`'.Iii^. `>>_^'.'i<i' .:i<: .^i>!` ''>>+. ;~"}<br /><br />
{"i!l,`'^l>!` .Ii!;''^;li''^,l!i'.`:><;`':~/j/trftf||)[?_--]{(|)ttjt//t/ttfjt/ft//JmZwpddqOLCCJUJQQQQQQLc(_lII;,''^:llI``.IIi:'''l<i,'',ilI,'.I!iI` `I>!'.':liI^`^,i"}<br /><br />
{".'.:>!I .`i<>^' 'i>!`..Ii>I.. >~>: ,>~>..^l<?(ff//ft//ttttjf|_~<<l`''}(/|f/fj)UmwmqpppqOJUUJCQ00Q0m0JUUYJUUJ0Z0OZZO0OLYJn:;ii!. .l>+; ^!<>'. '>>!' I+<,. .>>>' "}<br /><br />
{"i!!,'',i!I`.';!>l`'`I!i''`'!!i^'';<<I`'`!i!;`''i!;^,I+-?~'^`;ii,`''!>!`'zXff/nqwwmqpdpqqmO0QJCQ00OqwZZmZQCCCQ0OQ00QLCJCCJCc;`.'iii^'`;iiI^`'l!i;'.`I!i,'.:>i!'..I>"}<br /><br />
{">><: '>>i' .l>>! .'!i<' .^<~~'..;<<I..'~<<,'.'<ii` l>>!...i>>,' ^i<> ;OOmwZmmwqqpppppwZZZZZmqddpdqmZZmmmZmpdppbpOqZZmLJJJ? .'<>~' ,><i...iiiI. 'ii>^'.;><>. .I<"}<br /><br />
{" . :~+I .'<<~^ .<<>'' I~>! <>>, '>>~. ;><> ..i~~' .`~>~'. :>+l !}qwwwmwqqpppddpmZZZZZZmpddpppwZmwmmmwpdppwqmOwwwOLJJC>>i. !>>; '<~< ^<<i '.ii<:. ~~<^ "}<br /><br />
{",:I;,,;I,:':,;:;l,:,I:::''^;::`,,,,,:,,`:,:'^,,::I,,,l;::':':,:,:,,I;:'zwpdkdddpppbqmZZmZZZZZZwpqwqwmOZZZmmwpbdmLZmZZOZw0CLL(^,,:l,,`'',:^',',;;,,:I,:';,,:;!,,';I"}<br /><br />
{">>>, .,>i!.`.I><<' .i>!' ^i+>;::>-<;'..<i<, .^><>' .i>il.' li~;'.,l<!tpwwqmqqqqqwmZZZZmmZZmwpppdpZ0QCUUJUL}<>.'U0pmmpdpdQ0OO..<<+'' '>>l...i<~I..'>ii^^ ,<<~'. I+"}<br /><br />
{"'.`I><l. ^<<<: `i<l`.'l><_{1}{11)1(){_<'.';><l. `l>>, '>><^ .:!<;..)qZZZwqmmmZZZZZZZZZZmwpppqqddpmLULLUCU/ `i><,.QppdpdQQQZ}> . I<<I..'!<>. .:i>!`..l<~I '!>i:."}<br /><br />
{".`^:!I;^'`Il!^^`'l>l^_(11{{||{)1||ff/1}{1'',lll`^`;i!'^^`!il''`:lll^-0qZOwOOmmZZZZZZZZZmqpddpppddmCJOmLJJCUQ''!!iI`tqpdpdQQ0QrI`.`II!:``^lIi'``'!il'''Il!,^^`l!i^."}<br /><br />
{"i_)+:'^ii!. .,i!l'i-tXJYYzXYXYYYCn/t/tt({]<>' ^><>^ !<>l '.Ii~;.``tZmpqwmZZmqO;)CwmmqdpddddddpmmZQQLCCCJJOm~<'..I>}bwmmOUJJLt.<>+^. ,><i. .!><; `><>^..;<>~ I~"}<br /><br />
{"}>!,1zLJQQn|/zCUYzYYXUJUUUCQCCJCLQJrjft|11[{X0|~,^l<>'''^>!~`,`:i+cCmppddpwmmxlI,. ~ddpdddppqwmZmwmQCUJLQJ0q;'!l!:.:dmmmCJJUJz!``.Iii,'.`lii..',i<l^'`Iii:'^^>>>,."}<br /><br />
{"{I,';:/CCJ000CYYYCLJCCLL|]xJQt)X0LCrftfft[}[zJUUQOO0O0Qzjt)])0mmLXQmOwppppkbIi+l' ,l<vbqwmZZmmZmmZZqp0L00Ow' <~~: OZmOUJCQLC~ ..l>>; `><~' ,>!i. .lli,' .<>>^ "}<br /><br />
{"(I,',:'/UQUQCCCCCQQXYC0j{)vO/})xr|(ftftt/]}[LmZJLQQQQLJJJJUJLmppwZOZmm0mZd(lI..'!+~' (mZqZOZmmwqqwppwOQQ0O<~'..:<!zdqQLQZZC0<~>>^ ;!<l' .>i>;.'^i>i^ ,i>i'..I~"}<br /><br />
{"~<l'':^`vCLLLCCCCL0f|})x[)(/)1|/ftffft)1<<CmZZOmwqqwZLJJJJCL0wdppwZZmZwwv;l;;,:::':''::_ZqwwppdddbbddppmQQ0C:I,I:::'tbZCcrxjnY/;;;::,,;;,,:,,;II:::;;,:;:;III::;;:"}<br /><br />
{"'_>I:,,^;JQJJLLu[{~i';'I~<l . >~<l:,I~<<.' :?jJkqqpppmZmZZwmZwddqqmwZZQ?>I ^<>>' .'~><cqpqqqwmmmZZmmmwOUUL)'.<><,.'|m1|{11{}1}?+~-i~;..'>>>'' '<>> ..l>+;. _<>^ "}<br /><br />
{"i<(;;',:;YJQCc-i> 'l>~' ''<~<`. ;<<;..`<~i, .`ii-jCOmmOZmZmqpdpdpqq0{ . '+>!' 'i<>' .>fwOwmZZZZZZZZZZQUJL]>>`..,<i>:|[{{{{{{{{{11(+I~<l'.`>>i;..'i>>^. :<<<. .I>"}<br /><br />
{"i>l+-I,'iLU?'l>;i.'^;!>''^,!ii,'.:i>;'''!>>'..^>i!;''Ill<}vJOqdkkdw{ii''.:>>l^.`Iii'`''!xdqpmqqqqqqwww0CJCv<<i^'',<!i]f(}1{{{{{{1[1}}))xf<'.>il:`'`Iii'.':>>l`'`;l"}<br /><br />
{".. ^i~cJ1.!l<' .<<!' .I<_i' <!>:`''>i~.^.:i>!. '!+<''''>~+'``li<; '!~_I ,<!>''.:<~i]pppppqqqpdbpbmCQQZ) >>>,.lj({}11{11{{{11{}{)/|ll<cQi.,><! ' il<; . >>+' "}<br /><br />
{"><l'''^i>!`'^I~i'''^;>>'.':!>!;'':llI`^,!ll,`':!il,^`;i~l''.;<>'.^:I!>'.^;!>l,`';l!:^`jbqqqqqpdddpppw00OQOlIII`^',:}t{}{11{1111)1{1(/t/t>``,i[U-`'`;i>,`';<>:''`,l"}<br /><br />
{"i<<, .^>~!.' Ii>i' `Ii<'..'i<>' .:<<;. .il-zppMW8@%88&oaadpOYr)!. ^>~< ..,><!' 'i<>^'vZmZZZZZZZmmwwm000Qm<^~><'' l~///(|(1}{{1)(/tfft/?~l. '>i>rj'`i<i^. :iii' ;<"}<br /><br />
{"`. :>i;. '>><^. .><i' .;<<l '.<<>:..^><~Q$$$$$$$$$$$$$$$$$$$$$$$$B@$*0Qj]I..`>ii`'./qwOZmmZZZOZmZZmwLJC0xl!'. i><; irttfjtj||jtjtf[-?I'.`<~<''.,xfl'.`l~>I.. >>>^ "}<br /><br />
{"^^,;Il;,^';lI,^';llI,'^;l;,'^^:Il:'`,:l?%$$$$$$$$$$$$$$$$$$$$$$$@BB@$$@%B@B$Qw%%d(qppbZppqqmmmZOLLOmQCJc>I:'^,Ill;'^'[fj}^~|xt_}?;;li;^^';l!^'`!xz]^,^;,I,^':IlI:'"}<br /><br />
{"!><, .'><i.. l>>i. .!~>, ^<>>. .:><I^.`o$$$$$$$$$$$$$$$$$$$$$$$$@BB@@$B%@$BB@@@B&@BBB#bddpdpdpw0JUJUUC>'`^!><'. ;<<>` [)i<, .<~l^. :><!. >>)Ync[|}>``.'i>_. I~"}<br /><br />
{" .;~-!' `!_<, ,>~i'. !+<I' 'l~+: '~+l!$$@@B$$$$$$@$B$$B&%BBBB$$$$$$$$$$$$$$$$$@@@@@@@@%opqdpppOLJXU,,>_l. `i_>I' .>~-t'':+<!' `l~<'..^!>~.'ucfJl:u_|,<; '~~<;."}<br /><br />
{" . :<<I. `i<<^. `>~i^. l<<l' .>+<; .^i>!'X%%@$$$$$$$$B@$@%8W@%BB$$$$$$$$$$$$$$$$$$@@@@@@@@@@WbqppOLLJ_ ;<_l. .i><,...ii>f/<>>i>'. >+~; ^~i<'_trjYYYi!!)>l '+<<^ "}<br /><br />
{"<>+: `'~i!``'I!<~' '><i^' ^~<_ .',>>I` .>tBB$@B$$$$$@BB%@r(%B@@B@$$$$$$$$$$$$$$$$$@@@@@@B@@BBBWkmQ0w?i<I` ^>>+'. ;~<i'';/{c|vr^+i<.. I+~;.|vnuzX_'I[|~I<[>!~~. .l<"}<br /><br />
{"'',:IlI:,,;I;,,:;Il;:,,;I;:''':Il;:::II:'~*%$B@$$$$$@%j,^!l,,~Y&B@$8%@B@@%@B$$$$$$$$$$$$$$$$$BB8OQJ>',,;I;::,;III:,,:l;[+';/CffzvJX[{nunvcj|xY};/il,,,;lI:]t/>'!:,"}<br /><br />
{" ..:><I..`<<>'``'><!^..I>il. i>>:..'>ii.'p@@@$$$$$$B%o,`ii>' ';>|Q*BB8%B@B$$$$$$$$$$$$$$$$$$@@@8U>>. .'<!I'`'ii<:..'<ifYj/ru1uzujJujff|nYzzx{/XX~>` 'l<<;'luucY: "}<br /><br />
{"l!<: .'>>>.'.lii< .!<<,..'i>~ . ;<>I . <~p@BB$$$$$$@Li~i.` !i<: .,>i~)Za%$@$$$$$$$$$$$$@$$$$@%BJ ..!~i:`.^li>'. ,<<i `}iI!|`ix~+!)<~j_!_c~'ut{[}:`>ii^'.:>i>?]]j+"}<br /><br />
{"ilI,'.'!>l^.'IiiI'.^;!<''`,i>i'.`;><;`.^i>p$$@B$$$$$$j~<!..`lil,'.,i>~`|&@@$$$$$$$$$$$$@B8@8BBM{!.,`Ii!:'.'lil,.',!i>`',?/};';vzvn)I`nXYzc]'l~f{+`'l>i,'.:iiI`.`I>"}<br /><br />
{"...:>>,..^<<<,''.!<!^..IiiI`.^>ii' .^!i>''w%$@$$$$$$B%!``>>~'. '~~l. ,&B%@@$$$$$$$$$$$$$B&@$o>..`~i!.'';>il`'.l><I..'<!)f`':l~|1+<|<?+1-{X>~, '?t<!'..!>i;''.!+>` "}<br /><br />
{"l>>,'',!i!`''liil''`!<i,.''>i!''':!l;'`'!+h$$$@$$$$$B%#<!'^'l!!:^''lt%@$@$@$$$$$$$%%$B$%B#}^^:>il'''!ii:','l!>`'',>>i''j1!i,^`'+t-^'':>]t;''l>il}Y`l>!'`^,!!~.''I>"}<br /><br />
{"<>!' ^i+i' .I~<; 'I>~' ',><>^ ;~~I ^>1WBB@$$$$$$@%Bx!. .!~i^' 'w@@$$$$$$$$$$$$@@B@kt>>' I<i;. I<~: '>~!' .'i<> :j)l~:..`~f?'..;~~/{ ~i>,l|f>!<^. :<<l. ;<"}<br /><br />
{". ;>>l. '>+~^ ^<~i` ;<>I .i>>, '<>>.1$@@@@$$$$$$$@f'+~<` .:~+d%BB$$$$$$$$$$$$Bk/>+...li~: .^<><' :~il'..i<<; ..<>_tc':>>!In;I<>; .]x~~ '>1x~ 'ii>;...<><' "}<br /><br />
{"^:,:l;:,^'li!,''';I;:,'II;:'^';lI:'':iI:'O@BB@@$$$$$$BM~';I!:^',:kBB@B$$$$$$BB%#p]^;;II;'';;I:^,';;!'^:,!!I''';II,,:'ll!)u'^iI:ln>:l!;''?([l''',I!1x,';Il,^,'Il;',"}<br /><br />
{"<ii:'^,<>l'..I!>>' ^ii>''`'ii<..`,ii; `.}@B$@B@$$$$$@@Qi! ,;>l:Y@B$@@$$$$$$%t ^i>i,^. i<l`'.:>i! '.i>!;''^ii~`.'I>i>.+Cn>>,''`+f[`'.'!>itj'i!iI..,/i+^'.;>i~'.`li"}<br /><br />
{"' I+~I `>+<,. .i<>` .;>+l ><i' .,i<>oB@B$$@$$$$$$o . <~i^ .vB$@%B$$$$$$$8Y->' :i<>. l~>^ '>+i' ;~~l'. ii<; ,ctI' l<<i;cii~?I' `f/?` '~><icU(>+l' >><' "}<br /><br />
{" .';<+I..'<~+' .'<+i'. i~>;. .>>~, .'>lC@$$$$$$$$$$$@z `><>^:M@$$$$$$$$$$$$$*I!.' ;<>>. 'I>+, '>_+`. :<~!...i>i''1uvn)^ ';~<!;v<:~<I. ,}xuu `:~~>`[z/l>, ^~<>'."}<br /><br />
{"ii<;..:<!!.`'I!i~' '!>>^..'>>i '';i<l.1%@$$$$$$$$$$$$Z!i! ..-aB%$$$$$$$$$$$$%}`'i><''. ><i`..;<i! <i>;.'^!!<^..,>>|j+.!~i`.'`+fY: ',+i>{uf]~>I'.^<vvz(,,~><.. l<"}<br /><br />
{",'`,lII',,;;I,:'^III'',::I;',^lI::,',[$@B$$$$$$$$$$$@@:^'ll!'<U#$$$$$$$$$$$$$8L<^:,;:;l'''II;,','l;!'',,I;:,''lI;,,''ll;:'':llI;c)~iI:^:'>tv/?`,lII,':[<I;'',Il!'`"}<br /><br />
{"'. ;<<;. '><<^..'>>!` .Ii<l.' >]/Y&%@$$$@$$$$$$@BBB8@B1''~>+' :ljd@B@$%B@B$B@%@$*}I~i] ..l<>: .^<><'..:><l...!><I..'>>i` :><!`)XUX+:'.^!}vY:.:~>!..'!>>;..'<<>' "}<br /><br />
{"+<!' ^!>i. ;<>;'..i->>[CMBB@@%@@$@@$@@@$$$$$$@@BBhW%k>I'' I<<,`':<+O8B%B$@@$$@@@@WC',i~i,. I~>I. .I>>, ^<>!' 'i<~ `l~+;..`<>i' ;><!^ :~!>, `!<i` :~>!. .:i"}<br /><br />
{"Ii~:'^'i>l^''lii>.,Q$8B@@BB@BB@$@@$@$$B@$$$$$$$%$@%} ,n!I .'l>>; .'l>l^,J$B$%%$$@BB$@@W~I!` ^:>>l '.i!iI^',l>!''',<ll''.llI'.''~!!:'',PHYZ|C@L!<I'^'i!i:.`'i!i^'`,"}<br /><br />
{". .;>>I. '>+<' 'i~@$%$@@$@@@$$$$$$$$$$$$BB%%@@@@@@*i^ ^~+<` ,>>I. .+!>Ii8@B8B%@$$$$$$h~I+<:^ 'i>>' :+>!'. l>>;..'>>i` .:<<i . l><>W@Z. `i<~. .:<<!. .!~~: .><"}<br /><br />
{"!i!'..'!>!'.'Ii!I'.%%@%B@@B@@$$$$$$$$$$$$@@@BB@$$%@Ml;i>l'''lil'..^!i!`'';<<<JBBBB$$$$$@@%Wc^:!iI'`'l>i:.`'l!!`..'!!!''`lii;''`>ii'``:H3R3i>l^''ii!,'.^!>i^'':iil."}<br /><br />
{"ii>, .,><l'. I!>>'.'i-11(rcL0mZwdoW%B@@@@f+@B8@BB@@#Il>il.. l>i;. ^>>>'. '<<i'^Q@%@$@B$@@@BB@WQ>i . i>!;..^i>>`. ,>i>.'.l>>:.'`>i+`..,>~!'. !<<;..`>>l^'.:!>+' l<"}<br /><br />
{" .';<>I..`i+<'..'><i^' l<>I. i<<:. '!<>' ',>>I^'`!i<'..`><~`..;<<;'. <>>:..'l>i?BB@@@$@$$$$$@$BC~><^..,><l...>~>,...<ii^..;>>l. .!<>:. 'i<~ .',<~!' .l<<,...i~>'."}<br /><br />
{",;;,:,;;,::,:,:::;,,;;:;,,;;I;',:::,:,:,;I:',;I,::,:,;::,,,:,,I;,:,:;::,:;;;;'II;>8$BBB$$$$$$$$8B%]::,;,::,,:;;,:,;;,:,;;;:',::;:;;::::::,,;::;,,:I:,,,:;,::,,:::;"}<br /><br />
{"ii>: ,>li.'.l>i~. 'lii,..'><~ ' ;>>l ' <i>'..'ili` >ii! . ii>;`.,>i>''.'i+I`..I>iM$$$$$$$$$@$B$$@)l>!!..^>!<''.;>ii '.l><'..'<!+''.,!<l. .!i<I ^<ii^' :<i+.. l<"}<br /><br />
{" ;<>; '<~+'. .i>l' l~>l .~<i, 'i<~' ;><> ..lii' `~<~' ,i<;'. i><: .'!;{b&8&@B@%$$$$$@$$$wM@v..;~<l. l>>,.''>>~^ I>>l l><I ^i>~ ^<+i' 'l<<,.. !><^ "}<br /><br />
{".'^:l>I^ 'l<>,.`:!!I,' Iil:^.^;i<, '>i;^.`,Ii!.',Ii!:` ^!>!` `;>iI,' ii>^`+w8%B@B@@BBBB$$$$$$%@W~i<''.'i>;..'I>!;''.!il:'.,l>I' 'l>l,''^;i>.'`,l<!,..I<<: .'Iii:'"}<br /><br />
{"i<~: .'><!.. I>>i. ^i>>,. ^><<.'.I~<l'. >ii' `<<!` .l><l . !>~: ^i<>`-UW@$$$$$$$$$@@@@BB$$BBBB%W! i>i: .^i<>'' '<ii. .!>>: .+>-`. :i>!. .!<~; .`><>^..:><+ I~"}<br /><br />
{"`^,;liI''^I>!,'`;!!I:'`I!l;''`I!<,`',!lI`'`:!iI'.^:II,^'^ll!''`:l>[upBBBBB@B$$$$$$$$@@@@B%$@@@$@$%L!:`',!<I`''I!l;,`^lI:'^`'liI^''I!l:``':l!'^,;l!l,'^I>>:'`:l!I:'"}<br /><br />
{". ;<<; 'i>>^. .>~!' I><I'`^><il:'I>~<,,,!<++;Il+--<l!>?]-ii!__(&B%%@@$8B@$$$$$$$$@@@8Jfk@%B@@8Wj<. 'iiI. .!><; ..>>>`..:<<> ` li>; '><<. ,<<i. .lii,.. ~<<' "}<br /><br />
{"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"}<br /><br />
{".,=,.==.²=.'=,.=░.==.:=,,▄▓▓▓▓▓▓▓▓▓╬░.==.²!.,=,.=⌐.==.!=,.=,.==.²=.,=,.==.²=.!=,"}<br />
{"'¡»⌐^»∩^:»^:=^`=∩':+]▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▒^»∩^»=^:»^²»⌐^»∩^:=^`»^`»∩^:»^¡»^`»⌐'»÷'\»'"}<br />
{"░░_|░_'░⌐_░∩`|▒▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░`,░``░∩`»░_|░¬`░⌐_░░`'PHYZ|C@L`»░_!░⌐`░░_|"}<br />
{".,=,.»\.²=,,[▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▒╦╔░¡_²².,=,,=:.==_!²,,=,_==,W@Z,=,,=\.!=./²,"}<br />
{"'`»^^»∩':»')▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▒▐▒Ü▒^»=^¡»^^»⌐'»∩':»^`»^'=^:=^H3R3^»∩^:»':=^"}<br />
{"░∩`:░_'░⌐`░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████ÑÜP╩Ü╙░`_░∩`|░`:░_`░∩`|∩`:░_`░⌐_░░`|░`,░⌐`░∩`»"}<br />
{".,=,,==_²=,▀▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▌Ñ▓██ÑÜÜ▒Ü▒░_»=,,=,.==_»=,!=,,=,_==,»░,,=,,==_»=,!=,"}<br />
{"'`=^^=∩^:»^:»└'µ╫█████████╬▓▓▓██Ññ▒NÜÜ▒╠^»=':=^^=∩^»=^:=^`=⌐^»»':»`¡»^`=∩^:=^\»'"}<br />
{"░░`:░_,░⌐`=∩`|░_¡█╬▀███▓╬╬▀▓▓▀Ñ▒ÄÜ╟ñÜÜ╠D░¬_░░_|=_!░_`░⌐`=∩_:░_'░⌐_░░`!=`┌░__░∩_»"}<br />
{".,=,.==.!=,,=,.=░╠████Ñ▒▒ÄÜñÜÜÖ╠╩Ü║Üû╠╙».»░.:=,.=⌐.==.!=,,=,.==.!=.,=,_==.»=.!=,"}<br />
{"^`»^`»∩`:»'\»^^»⌐^╚╬▒Ü▒▒▒ÜÜ▒╚╩▒▒RÖÜ╠╠▒∩∩';╓';»^'»⌐`»»^:»^^»⌐^»∩':»^¡»''»∩`:»^\»^"}<br />
{"░░ :░ '░⌐_░░_|░`!░`╙▒▒╠╠ÜÉ▒╚Ö╠╠╠╠╟╬╠╠╠╬╬▓▓█▓▓▓▓▓▌▄▒,,░⌐_|░_:░`,░⌐`░░ |░ '░_`░∩_|"}<br />
{".,=,.=».!=,,=,.=░.==.└╙╙╜╚╩╩╙╙Ü7┘,░╚╬╠╬▓████▓▓▓▓▓█▓▓▓▓▓▓▓▓▓▓▒==,²».,»,,=░.!=.!=,"}<br />
{"'^»⌐^»∩^:÷^\»^^»⌐'»»^:»^^»⌐^»∩^:»'`║██████████████▓████████▓▓m»'»»^¡»^^»∩^»»^\»^"}<br />
{"░∩`!░_'░⌐`░░`|░,;░__░⌐`░░`|░-'░⌐`░µ▓█████████████▓▓▓▓▀▀╫▓███▓▌`░⌐_░░`|░`!░⌐`░∩`|"}<br />
{"_,=,_²».:=:▒▒╠▒▒╠╠▒▒,:=,,=⌐_»░_:=,▓██████████████▓▓▓▓▒!=,███▓▓░_»=_,=,_=░_!░.'=,"}<br />
{"▒╙R▓▓▄▄╣▓▓▓▓▓▓▓▓▓╬╬╠▒╠▄▄▄µ∩'»=]▄▄▓████Ñ»╙▀███████▓▓▓▓Ñ:»^╫█▓▓▓H`:='`=^`=∩`»=`\=^"}<br />
{"Ü⌐»╙▓▓▓▓▓▓╬▌╠╬▒╬╬╬╠╠Ö╣▓▓▓▓▓▓▓▓██▓███▀U``░``╫███████▓▓Ñ⌐_=╫█▓▓▓Ñ░_`░░_|░_┌░``░░_»"}<br />
{"|░::╟▓▓▀╚╙░/=,,╙░░╙░,⌡╩▀▓█████████▓╙,,==_²²╫███████▓▓░!=,╙╬╩▒▒▒╦╦░,,=,_=\.²=.!=,"}<br />
{"^'ܵÅÑ»`:='\=^^»⌐^»=':÷^^=^┴╚╢▀▀▀╙`»^'=∩`:»║██████▓▓▌^:»'╔╠▒▒▒▒▒▒▒╠M≡╦`»⌐'»=^╒»`"}<br />
{"░░_|░_'░⌐`░░_»░`!░¬`░▄▄▄▌▄▄▄▄▄▄╥,░░_:░`,░,╫███████▓▓Ü░⌐`=╠▒▒▒▒▒▒╠╠╩░`»╝╦:░_`░∩`»"}<br />
{"_,»,_!\_!=,,=,_»░_²1████████████████▓▄▓▓▄▓█████▓▓▓▓Ñ»_!=,7╝╬╚╝╩╩░ù,,»,,╫▒,²»_!=,"}<br />
{"'¡»^^»∩^:÷^\»^^»⌐^»=████████████████████████████▓▓Ñ»∩':»^^»╬^÷∩^:»^¡÷^║╣ÜR≈»^\÷^"}<br />
{"░░`|░¬'░⌐`░░`|░`:░``╫███████▀▀██████████████████▓▀░¬`░⌐`|░`╠╣╣░▒░_▒╥║╬╣▒╙Ü^=░░`|"}<br />
{"_,=,_»░_²=,,=,_=░_==|██████░==_╙╩▀██████████████Ñ⌐_!=_:=,_░╟%╩╬╟╣╣╣╬Ñ╣Φ╬»_²=┐╟╣╓"}<br />
{"`¡»^^»∩^»»^\»^^»⌐^»»[█████▓^»∩'»:^)▓██████████▀┴=⌐`»='»»^`»╠^»╠╬╠n╬╬▒^[╠∩^»»^:=^"}<br />
{"░∩`:░_'░⌐`░∩_»░_:░¬_▐██████▒``░⌐`▄█████████▓Ñ`»░`!░_`░⌐_|∩|╬░``╠⌐_░╠_»░╚Ü░_`░⌐`|"}<br />
{",,=,,==_²=.,=,,=░,==╫██████▒==,²▓███████▓╨░,,=,_=⌐,=»,!=,,=╠░»=╬==.╠Ü,_=╢,!=,!=,"}<br />
{"^¡÷^^»∩^:='\»^^»⌐^»»███████^»»^╫██████▄┐':»':=^^»⌐`»»^\=^░╬Ü'»┐╬░»''╢^^»∩Φ░»^\»^"}<br />
{"░=`!░`¡░⌐`░░`|░`:░,███████▓░_`▓███████▌'░¬`░░`|░ ¡░``░⌐`|╝╨|░``╬H_░û╬▒░`:╟╬^░∩_»"}<br />
{",_=,,»»_!»,,░╓▄▄▓▓█████████,=»,╙▀███████▌▄».,=,_=⌐_»»_²=,,=,,²=╚ÑÜ,,╚Ñ_=»_!=.!»_"}<br />
{"^^»^^»∩^:Φ███████████████▌╜^»»':»^¡╬▓██████▄░»^^»⌐'»»':»^^»''»»^»»^¡»^^»⌐':»'\»^"}<br />
{"░∩`:░`'░⌐╨████████████████:░``░⌐`░░`|░▀██████▓▄░`:░_`░░`»░`:░``░⌐`░░`|░`,░⌐`░░`|"}<br />
{"_,=,,==_!=,,=,_»=_==_²ù││ù,_==_!=,,=,,=░████████▄░_»»_!=,_=░_==_»»_,=,,=░_»=,'»,"}<br />
{"^¡»^^»∩^:=^\=^^»⌐^»»^:»^^=^^»∩^:=^`='^;▄▓████████▌^»»^:=^`»⌐^»»^»»^¡»^^»∩^:=^\»^"}<br />
{"░∩`!=_'░⌐`░∩`|░`!░``░⌐`|░`|░`'░⌐`░µ▄▓███████████▄¡░_`░⌐`|░`!░_`░⌐`░∩`|░_¡░⌐`░░`|"}<br />
{"################################################################################"}<br /><br />
Experts in getting in and out in plain sight<br /><br />
Some some speculate that the oceans movies are documentaries based on this group<br /><br />
Some members are even rumored to be able to pick locks like the fonz, one hit and it will swing open ayeeeee<br /><br />

@ -36,7 +36,7 @@ export function BackwardGame(props: IMinigameProps): React.ReactElement {
const timer = difficulty.timer;
const [answer] = useState(makeAnswer(difficulty));
const [guess, setGuess] = useState("");
const hasAugment = Player.hasAugmentation(AugmentationNames.ReverseDictionary, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.RearViewMirrorShoulderAttachment, true);
function press(this: Document, event: KeyboardEvent): void {
event.preventDefault();

@ -47,7 +47,7 @@ export function BribeGame(props: IMinigameProps): React.ReactElement {
let upColor = defaultColor;
let downColor = defaultColor;
let choiceColor = defaultColor;
const hasAugment = Player.hasAugmentation(AugmentationNames.AmuletOfPersuasion, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.KyberCrystalInjection, true);
if (hasAugment) {
const upIndex = index + 1 >= choices.length ? 0 : index + 1;

@ -42,7 +42,7 @@ export function CheatCodeGame(props: IMinigameProps): React.ReactElement {
const timer = difficulty.timer;
const [code] = useState(generateCode(difficulty));
const [index, setIndex] = useState(0);
const hasAugment = Player.hasAugmentation(AugmentationNames.LameSharkRepository, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.DyslexiaModule, true);
function press(this: Document, event: KeyboardEvent): void {
event.preventDefault();

@ -38,7 +38,7 @@ export function MinesweeperGame(props: IMinigameProps): React.ReactElement {
const [answer, setAnswer] = useState(generateEmptyField(difficulty));
const [pos, setPos] = useState([0, 0]);
const [memoryPhase, setMemoryPhase] = useState(true);
const hasAugment = Player.hasAugmentation(AugmentationNames.MineDetector, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.MineDetectionArmAttachment, true);
function press(this: Document, event: KeyboardEvent): void {
event.preventDefault();
if (memoryPhase) return;

@ -40,7 +40,7 @@ export function SlashGame(props: IMinigameProps): React.ReactElement {
props.onSuccess();
}
}
const hasAugment = Player.hasAugmentation(AugmentationNames.BagOfSand, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.PythiasBrainStem, true);
const phaseZeroTime = Math.random() * 3250 + 1500 - (250 + difficulty.window);
const phaseOneTime = 250;
const timeUntilAttacking = phaseZeroTime + phaseOneTime;

@ -64,7 +64,7 @@ export function WireCuttingGame(props: IMinigameProps): React.ReactElement {
const [wires] = useState(generateWires(difficulty));
const [cutWires, setCutWires] = useState(new Array(wires.length).fill(false));
const [questions] = useState(generateQuestion(wires, difficulty));
const hasAugment = Player.hasAugmentation(AugmentationNames.WireCuttingManual, true);
const hasAugment = Player.hasAugmentation(AugmentationNames.SecurityWireContacts, true);
function checkWire(wireNum: number): boolean {
return questions.some((q) => q.shouldCut(wires[wireNum - 1], wireNum - 1));

@ -480,7 +480,7 @@ export class PlayerObject implements IPlayer {
this.lastUpdate = 0;
this.lastSave = 0;
this.totalPlaytime = 0;
this.hasCompletedAnInfiltration = true;
this.hasCompletedAnInfiltration = false;
this.playtimeSinceLastAug = 0;
this.playtimeSinceLastBitnode = 0;

@ -163,6 +163,7 @@ export function prestigeAugmentation(this: PlayerObject): void {
this.workChaExpGained = 0;
this.workRepGained = 0;
this.workMoneyGained = 0;
this.hasCompletedAnInfiltration = false;
this.timeWorked = 0;

@ -21,6 +21,7 @@ import { Modal } from "./React/Modal";
import TableBody from "@mui/material/TableBody";
import { Table, TableCell } from "./React/Table";
import TableRow from "@mui/material/TableRow";
import { FactionNames } from "../Faction/data/FactionNames";
function LastEmployer(): React.ReactElement {
const player = use.Player();
@ -144,16 +145,16 @@ function BladeburnerMults(): React.ReactElement {
function InfiltrationMults(): React.ReactElement {
const player = use.Player();
if (!player.factions.includes(FactionNames.Infiltrators)) return <></>;
return (
<>
<MultiplierTable
rows={[
["Infiltrator Base Rep increase", player.infiltration_rep_mult],
["Infiltrator Rep reward multiplier", player.infiltration_rep_mult],
["Infiltration sell multiplier", player.infiltration_sell_mult],
["Infiltration trade multiplier", player.infiltration_trade_mult],
["Infiltration minigame timer multiplier", player.infiltration_timer_mult],
["Infiltration minigame health reduction multiplier", player.infiltration_health_reduction_mult],
["Infiltrator Rep reward", player.infiltration_rep_mult],
["Infiltration sell", player.infiltration_sell_mult],
["Infiltration trade", player.infiltration_trade_mult],
["Infiltration minigame timer", player.infiltration_timer_mult],
["Infiltration minigame health reduction", -1 * (1 - player.infiltration_health_reduction_mult)],
]}
/>
<br />