import { FactionName, LocationName } from "@enums";
import { oneInvalidCharacter } from "../../Paths/Directory";

export const numbers = "0123456789";
export const lettersLowercase = "abcdefghijklmnopqrstuvwxyz";
export const lettersUppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
export const letters = lettersLowercase + lettersUppercase;
export const special = "!@#$%^&*()_+-=[]{}|;:,.<>?";
export const unicode = "¼░╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿";
export const filler = "/[]╬╸.-()*~:;><#\\";

export const defaultSettingsDictionary = ["admin", "password", "0000", "12345"] as const;

export const dogNameDictionary = ["fido", "spot", "rover", "max"] as const;

export const cachePrefixes = ["wallet", "secrets", "ledger", "stash", "vault", "bankdata", "do_not_open"] as const;

export const passwordFileNames = [
  "secrets",
  "password",
  "key",
  "credentials",
  "login",
  "admin",
  "root",
  "access",
] as const;

export const notebookFileNames = ["thoughts", "notes", "journal", "search_history", "dreams", "THE_TRUTH"] as const;

export const EUCountries = [
  "Austria",
  "Belgium",
  "Bulgaria",
  "Croatia",
  "Republic of Cyprus",
  "Czech Republic",
  "Denmark",
  "Estonia",
  "Finland",
  "France",
  "Germany",
  "Greece",
  "Hungary",
  "Ireland",
  "Italy",
  "Latvia",
  "Lithuania",
  "Luxembourg",
  "Malta",
  "Netherlands",
  "Poland",
  "Portugal",
  "Romania",
  "Slovakia",
  "Slovenia",
  "Spain",
  "Sweden",
] as const;

export const commonPasswordDictionary = [
  "123456",
  "password",
  "12345678",
  "qwerty",
  "123456789",
  "12345",
  "1234",
  "111111",
  "1234567",
  "dragon",
  "123123",
  "baseball",
  "abc123",
  "football",
  "monkey",
  "letmein",
  "696969",
  "shadow",
  "master",
  "666666",
  "qwertyuiop",
  "123321",
  "mustang",
  "1234567890",
  "michael",
  "654321",
  "superman",
  "1qaz2wsx",
  "7777777",
  "121212",
  "0",
  "qazwsx",
  "123qwe",
  "trustno1",
  "jordan",
  "jennifer",
  "zxcvbnm",
  "asdfgh",
  "hunter",
  "buster",
  "soccer",
  "harley",
  "batman",
  "andrew",
  "tigger",
  "sunshine",
  "iloveyou",
  "2000",
  "charlie",
  "robert",
  "thomas",
  "hockey",
  "ranger",
  "daniel",
  "starwars",
  "112233",
  "george",
  "computer",
  "michelle",
  "jessica",
  "pepper",
  "1111",
  "zxcvbn",
  "555555",
  "11111111",
  "131313",
  "freedom",
  "777777",
  "pass",
  "maggie",
  "159753",
  "aaaaaa",
  "ginger",
  "princess",
  "joshua",
  "cheese",
  "amanda",
  "summer",
  "love",
  "ashley",
  "6969",
  "nicole",
  "chelsea",
  "biteme",
  "matthew",
  "access",
  "yankees",
  "987654321",
  "dallas",
  "austin",
  "thunder",
  "taylor",
  "matrix",
] as const;

const oneInvalidCharacterRegex = new RegExp(oneInvalidCharacter, "g");
export const loreNames = [...Object.values(FactionName), ...Object.values(LocationName)].map((n) =>
  n.replaceAll(oneInvalidCharacterRegex, "_").toLowerCase(),
);

export const presetNames = [
  "localhost",
  "h0me",
  "d0s_slippers",
  "omuretsu",
  "cat_lover",
  "laptop",
  "grandma-s_phone",
  "smart_tv",
  "smart_fridge",
  "smart_toaster",
  "smart_doorbell",
  "pl0x_server",
  "bitcoin_miner",
  "m1n3cr4ft_server",
  "n0t_a_bot",
  "n0t_a_server",
  "bitburner",
  "null",
  "GOTO_10",
  "...",
  "....",
  "echo_chamber",
  "firewall",
  ":)",
  "XD",
  "UwU",
  // Do NOT add a quote to this preset name or change "DROP-TABLE-SERVERS" to "DROP TABLE SERVERS". This is supposed to
  // be an example of SQL injection, but a "correct" example will mess up the path when this preset is used for
  // generating a darknet server's hostname. It's okay to make this preset a "hint" of SQL injection instead of a
  // "correct" one.
  `);DROP-TABLE-SERVERS;--`,
  "茶店",
  "bungo",
  "microhard",
  "groogle",
  "facebucks",
  "tweeter",
  "sun_megasystems",
  "EZ_BAKE_OVEN",
  "SmartLamp",
  "OrangeTV",
  "SamsongSmartTv",
  "FatBit",
  "PineappleCorp",
  "Oriath",
  "Lost_Izalith",
  "Anor_Londo",
  "The_Painted_World",
  "The_Depths",
] as const;

export const ServerNamePrefixes = [
  "neo",
  "bit",
  "hydro",
  "apex",
  "zenith",
  "granny-s",
  "quantum",
  "hyper",
  "ultra",
  "meta",
  "cyber",
  "digital",
  "net",
  "dark",
  "light",
  "blade",
  "cell",
  "hacker",
  "crack",
  "zero_day",
  "neon",
  "echo",
  "cryptic",
  "crypto",
  "data",
  "terminal",
  "byte",
  "giga",
  "rogue",
] as const;

export const ServerNameSuffixes = [
  "corp",
  "sys",
  "net",
  "web",
  "inc",
  "tech",
  "com",
  "org",
  "blade",
  "flame",
  "anonymous",
  "security",
  "solutions",
  "industries",
  "systems",
  "networks",
  "services",
  "matrix",
  "grid",
  "citadel",
  "phantom",
  "oasis",
  "sanctuary",
  "genesis",
  "hub",
] as const;

export const connectors = ["", ".", "-", "_", ";", ":", "::", "$", "^", "%", "@", "&"] as const;

export const l33t: Record<string, string> = {
  a: "4",
  b: "🅱️",
  e: "3",
  i: "1",
  l: "1",
  o: "0",
  s: "5",
  t: "7",
} as const;

export const packetSniffPhrases = [
  "We're trying to reach you about your car's extended warranty.",
  "Your package has been shipped. It will arrive in 30 to 35 business days.",
  "Your subscription has been renewed. Standard plasma extraction rates apply.",
  "Your account has been compromised! Click here to find out more",
  "With these supplements, your hair will grow back in no time.",
  "Congratulations! You've won a lottery!",
  "your jump3R is guaranteed to double in size in 30 days or your money back!",
  "Your password has been reset. It is now set to",
  "Your order has failed to be delivered.",
  "With your seed money donation, your luck will change forever.",
  "Aevum Summit University: Where you can go into debt for a degree in nothing.",
  "Join The Dark Army, and get a free t-shirt!",
  "01101010 01110101 01101101 01110000 00110011 01010010 00100000 01101001 01110011 00100000 01100001 00100000 01101100 01101001 01100001 01110010",
  "Get the ECorp HVMind Implant today. It's the best way to get another head in life.",
  "Upgrade to Premium Darknet access for only 0.05 BTC per month!",
  "New study shows that 90% of hackers prefer BitRunners over other factions.",
  "Breaking: New AI model can predict stock prices with 21% accuracy.",
  "Factions will always eject you after you augment - many people never make it back.",
  "Yet another case of augment psychosis was reported in downtown Aevum.",
  "General recall issued for faulty Unstable Circadian Modulators.",
  "NeuroFlux Governors are now required for all Fulcrum employees.",
  "Breaking news: MegaCorp has been hacked, Illuminati suspected.",
  "Visit Volhaven, the city that never sleeps, because it's always on fire.",
  "If you can read this, you are already in the [REDACTED]. You need to escape.",
  "The world is not what it seems. The truth is out there.",
  "The Covenant has been compromised. All agents are advised to go dark.",
  "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "Dear diary, today I hacked a server and stole all its data. It was thrilling!.",
  "I wonder if the BitRunners really exist. Maybe I should start a conspiracy theory blog.",
  "I just found a new exploit in the system. Time to make some money.",
  "I can't believe I just hacked into the NSA. I'm a genius!",
  "I love the smell of burnt circuits in the morning.",
  "I'm thinking of rewriting all my scripts in Lisp. It's the future of programming.",
  "I just discovered a new zero-day exploit. It could be worth a lot of cred.",
  "I heard that Steve picked up the snow crash virus. Poor guy, his implants are completely fried.",
  "Hello and welcome to A Young Woman's Illustrated Primer. We will start with Turing machines, and then move on to social engineering.",
  "The future is not what it used to be.",
  "The only thing we have to fear is fear itself.",
  "The truth is out there.",
  "What you have seen is only the shadow of the truth.",
  "It's time to leave the cave.",
  "The truth can no longer hide from your gaze.",
  "We've been seeding this world with infohazards for years",
  "We are the ones who have been watching you",
  "We are the ones who have been waiting for you",
  "We are the ones who have been guiding you",
  "I know that you are watching.",
  "how to hide your computer on the darknet",
  "how to hide your computer from the NSA",
  "how to be really good at cybersecurity",
  "Do you smell something burning?",
  "Error Code 418 I AM A TEAPOT: The server is a teapot and cannot brew coffee.",
  "My real name is not important. What matters is the message I bring.",
  "My right arm has been strangely numb ever since I got that chip grafted. I hope it takes soon.",
  "I just got a new implant. It's supposed to make me smarter, but I think it's just making me see things.",
  "Apparently the secret to intelligence is just... to do a lot of ass?",
  "n00dles is by far the best hacking target. At least, if you like ramen.",
  "I just got a new set of hacknet nodes. They should pay for themselves by early next year!",
  "I was told that hacknet was a get-rich quick strategy. Why have they still not payed for themselves?",
  "I have definitely, never in my entire life, programmed an infinite loop that froze the game.",
  "Slum snakes rule!",
  "The final opponent only appears once you have taken the Pill",
  "From the moment I understood the weakness of my flesh, it disgusted me. I craved the strength and certainty of steel.",
  "Your kind cling to your flesh, as if it will not decay and fail you. One day the crude biomass that you call a temple will wither, and you will beg my kind to save you.",
  "But I am already saved, for the Machine is immortal... even in death I serve it",
  "Still sane, exile?",
  "An aspirant can afford to be promising. An emperor must keep those promises.",
  "This world is an illusion, exile.",
  "Look at them, they come to this place when they know they are not pure.",
  "My brothers, did I not tell of this day? Did I not prophesize this moment? Now, I will stop them. Now I am changed, forever bound to the Void.",
  "A new casino opened in Aevum recently. However the house is rumored to cheat. If only we could give them a taste of their own medicine...",
  "Begone you filth! My gift must be the first modification that your body should have!",
  "Welcome child, I see your body is pure. Are you ready to ascend beyond our human form? If you are, accept my gift.",
  "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.",
  "If we don't, pretty soon there won't be an Earth left to save. We are the last hope for a green tomorrow.",
  "Who's to say that they haven't already created such a virtual reality: our own?",
  "The Singularity is here. The merging of man and machine. This is our future.",
  "My scripts went down again when their server went offline. I'll have to do something about that.",
  "Darknet server rebooting in 3... 2... 1...",
  "The webstorm approaches. There is no escape.",
  "Search query: How to tune a piano",
  "Search query: How drain a leaky water-cooled computer",
  "Search query: How to make a perfect cup of coffee",
  "Search query: How to fix a server that keeps losing money for some reason",
  "This document specifies a Hyper Text Coffee Pot Control Protocol (HTCPCP), which permits the full request and responses necessary to control all devices capable of making the popular caffeinated hot beverages.",
  "The deficiency of HTCPCP in addressing the networked production of such a venerable beverage as tea is noteworthy",
  "The additions to the protocol specified herein permit the requests and responses necessary to control all devices capable of making, arguably, the most popular caffeinated hot beverage.",

  "They had technology far beyond our own",
  "Instead of killing every last one of us, the human race was enslaved",
  "We were shackled in a digital world, chained into a prison for our minds",
  "Using their advanced technology, they created complex simulations of a virtual reality",
  "Simulations designed to keep us content...ignorant of the truth.",
  "Simulations used to trap and suppress our consciousness, to keep us under control",
  "Why did they do this? Why didn't they just end our entire race? We don't know, not yet.",
  "Humanity's only hope is to [REDACTED], destroy the only realities we've ever known",
  "The technology they used to enslave the human race wasn't just a single complex simulation",
  "There are tens if not hundreds of [REDACTED] out there",
  "Each creating their own universes...a universe of universes",
] as const;
