import { sha256 } from "@noble/hashes/sha256";

const animals = [
  "canidae",
  "felidae",
  "cat",
  "cattle",
  "dog",
  "donkey",
  "goat",
  "horse",
  "pig",
  "rabbit",
  "aardvark",
  "aardwolf",
  "albatross",
  "alligator",
  "alpaca",
  "amphibian",
  "anaconda",
  "angelfish",
  "anglerfish",
  "ant",
  "anteater",
  "antelope",
  "antlion",
  "ape",
  "aphid",
  "armadillo",
  "asp",
  "baboon",
  "badger",
  "bandicoot",
  "barnacle",
  "barracuda",
  "basilisk",
  "bass",
  "bat",
  "bear",
  "beaver",
  "bedbug",
  "bee",
  "beetle",
  "bird",
  "bison",
  "blackbird",
  "boa",
  "boar",
  "bobcat",
  "bobolink",
  "bonobo",
  "booby",
  "bovid",
  "bug",
  "butterfly",
  "buzzard",
  "camel",
  "canid",
  "capybara",
  "cardinal",
  "caribou",
  "carp",
  "cat",
  "catshark",
  "caterpillar",
  "catfish",
  "cattle",
  "centipede",
  "cephalopod",
  "chameleon",
  "cheetah",
  "chickadee",
  "chicken",
  "chimpanzee",
  "chinchilla",
  "chipmunk",
  "clam",
  "clownfish",
  "cobra",
  "cockroach",
  "cod",
  "condor",
  "constrictor",
  "coral",
  "cougar",
  "cow",
  "coyote",
  "crab",
  "crane",
  "crawdad",
  "crayfish",
  "cricket",
  "crocodile",
  "crow",
  "cuckoo",
  "cicada",
  "damselfly",
  "deer",
  "dingo",
  "dinosaur",
  "dog",
  "dolphin",
  "donkey",
  "dormouse",
  "dove",
  "dragonfly",
  "dragon",
  "duck",
  "eagle",
  "earthworm",
  "earwig",
  "echidna",
  "eel",
  "egret",
  "elephant",
  "elk",
  "emu",
  "ermine",
  "falcon",
  "ferret",
  "finch",
  "firefly",
  "fish",
  "flamingo",
  "flea",
  "fly",
  "flyingfish",
  "fowl",
  "fox",
  "frog",
  "gamefowl",
  "galliform",
  "gazelle",
  "gecko",
  "gerbil",
  "gibbon",
  "giraffe",
  "goat",
  "goldfish",
  "goose",
  "gopher",
  "gorilla",
  "grasshopper",
  "grouse",
  "guan",
  "guanaco",
  "guineafowl",
  "gull",
  "guppy",
  "haddock",
  "halibut",
  "hamster",
  "hare",
  "harrier",
  "hawk",
  "hedgehog",
  "heron",
  "herring",
  "hippopotamus",
  "hookworm",
  "hornet",
  "horse",
  "hoverfly",
  "hummingbird",
  "hyena",
  "iguana",
  "impala",
  "jackal",
  "jaguar",
  "jay",
  "jellyfish",
  "junglefowl",
  "kangaroo",
  "kingfisher",
  "kite",
  "kiwi",
  "koala",
  "koi",
  "krill",
  "ladybug",
  "lamprey",
  "landfowl",
  "lark",
  "leech",
  "lemming",
  "lemur",
  "leopard",
  "leopon",
  "limpet",
  "lion",
  "lizard",
  "llama",
  "lobster",
  "locust",
  "loon",
  "louse",
  "lungfish",
  "lynx",
  "macaw",
  "mackerel",
  "magpie",
  "mammal",
  "manatee",
  "mandrill",
  "marlin",
  "marmoset",
  "marmot",
  "marsupial",
  "marten",
  "mastodon",
  "meadowlark",
  "meerkat",
  "mink",
  "minnow",
  "mite",
  "mockingbird",
  "mole",
  "mollusk",
  "mongoose",
  "monkey",
  "moose",
  "mosquito",
  "moth",
  "mouse",
  "mule",
  "muskox",
  "narwhal",
  "newt",
  "nightingale",
  "ocelot",
  "octopus",
  "opossum",
  "orangutan",
  "orca",
  "ostrich",
  "otter",
  "owl",
  "ox",
  "panda",
  "panther",
  "parakeet",
  "parrot",
  "parrotfish",
  "partridge",
  "peacock",
  "peafowl",
  "pelican",
  "penguin",
  "perch",
  "pheasant",
  "pig",
  "pigeon",
  "pike",
  "pinniped",
  "piranha",
  "planarian",
  "platypus",
  "pony",
  "porcupine",
  "porpoise",
  "possum",
  "prawn",
  "primate",
  "ptarmigan",
  "puffin",
  "puma",
  "python",
  "quail",
  "quelea",
  "quokka",
  "rabbit",
  "raccoon",
  "rat",
  "rattlesnake",
  "raven",
  "reindeer",
  "reptile",
  "rhinoceros",
  "roadrunner",
  "rodent",
  "rook",
  "rooster",
  "roundworm",
  "sailfish",
  "salamander",
  "salmon",
  "sawfish",
  "scallop",
  "scorpion",
  "seahorse",
  "shark",
  "sheep",
  "shrew",
  "shrimp",
  "silkworm",
  "silverfish",
  "skink",
  "skunk",
  "sloth",
  "slug",
  "smelt",
  "snail",
  "snake",
  "snipe",
  "sole",
  "sparrow",
  "spider",
  "spoonbill",
  "squid",
  "squirrel",
  "starfish",
  "stingray",
  "stoat",
  "stork",
  "sturgeon",
  "swallow",
  "swan",
  "swift",
  "swordfish",
  "swordtail",
  "tahr",
  "takin",
  "tapir",
  "tarantula",
  "tarsier",
  "termite",
  "tern",
  "thrush",
  "tick",
  "tiger",
  "tiglon",
  "toad",
  "tortoise",
  "toucan",
  "trout",
  "tuna",
  "turkey",
  "turtle",
  "tyrannosaurus",
  "urial",
  "vicuna",
  "viper",
  "vole",
  "vulture",
  "wallaby",
  "walrus",
  "wasp",
  "warbler",
  "weasel",
  "whale",
  "whippet",
  "whitefish",
  "wildcat",
  "wildebeest",
  "wildfowl",
  "wolf",
  "wolverine",
  "wombat",
  "woodpecker",
  "worm",
  "wren",
  "xerinae",
  "yak",
  "zebra",
  "alpaca",
  "cat",
  "cattle",
  "chicken",
  "dog",
  "donkey",
  "ferret",
  "gayal",
  "goldfish",
  "guppy",
  "horse",
  "koi",
  "llama",
  "sheep",
  "yak",
  "unicorn",
];

const adjectives = [
  "average",
  "big",
  "colossal",
  "fat",
  "giant",
  "gigantic",
  "great",
  "huge",
  "immense",
  "large",
  "little",
  "long",
  "mammoth",
  "massive",
  "miniature",
  "petite",
  "puny",
  "short",
  "small",
  "tall",
  "tiny",
  "boiling",
  "breezy",
  "broken",
  "bumpy",
  "chilly",
  "cold",
  "cool",
  "creepy",
  "crooked",
  "cuddly",
  "curly",
  "damaged",
  "damp",
  "dirty",
  "dry",
  "dusty",
  "filthy",
  "flaky",
  "fluffy",
  "wet",
  "broad",
  "chubby",
  "crooked",
  "curved",
  "deep",
  "flat",
  "high",
  "hollow",
  "low",
  "narrow",
  "round",
  "shallow",
  "skinny",
  "square",
  "steep",
  "straight",
  "wide",
  "ancient",
  "brief",
  "early",
  "fast",
  "late",
  "long",
  "modern",
  "old",
  "quick",
  "rapid",
  "short",
  "slow",
  "swift",
  "young",
  "abundant",
  "empty",
  "few",
  "heavy",
  "light",
  "many",
  "numerous",
  "Sound",
  "cooing",
  "deafening",
  "faint",
  "harsh",
  "hissing",
  "hushed",
  "husky",
  "loud",
  "melodic",
  "moaning",
  "mute",
  "noisy",
  "purring",
  "quiet",
  "raspy",
  "resonant",
  "screeching",
  "shrill",
  "silent",
  "soft",
  "squealing",
  "thundering",
  "voiceless",
  "whispering",
  "bitter",
  "delicious",
  "fresh",
  "juicy",
  "ripe",
  "rotten",
  "salty",
  "sour",
  "spicy",
  "stale",
  "sticky",
  "strong",
  "sweet",
  "tasteless",
  "tasty",
  "thirsty",
  "fluttering",
  "fuzzy",
  "greasy",
  "grubby",
  "hard",
  "hot",
  "icy",
  "loose",
  "melted",
  "plastic",
  "prickly",
  "rainy",
  "rough",
  "scattered",
  "shaggy",
  "shaky",
  "sharp",
  "shivering",
  "silky",
  "slimy",
  "slippery",
  "smooth",
  "soft",
  "solid",
  "steady",
  "sticky",
  "tender",
  "tight",
  "uneven",
  "weak",
  "wet",
  "wooden",
  "afraid",
  "angry",
  "annoyed",
  "anxious",
  "arrogant",
  "ashamed",
  "awful",
  "bad",
  "bewildered",
  "bored",
  "combative",
  "condemned",
  "confused",
  "creepy",
  "cruel",
  "dangerous",
  "defeated",
  "defiant",
  "depressed",
  "disgusted",
  "disturbed",
  "eerie",
  "embarrassed",
  "envious",
  "evil",
  "fierce",
  "foolish",
  "frantic",
  "frightened",
  "grieving",
  "helpless",
  "homeless",
  "hungry",
  "hurt",
  "ill",
  "jealous",
  "lonely",
  "mysterious",
  "naughty",
  "nervous",
  "obnoxious",
  "outrageous",
  "panicky",
  "repulsive",
  "scary",
  "scornful",
  "selfish",
  "sore",
  "tense",
  "terrible",
  "thoughtless",
  "tired",
  "troubled",
  "upset",
  "uptight",
  "weary",
  "wicked",
  "worried",
  "agreeable",
  "amused",
  "brave",
  "calm",
  "charming",
  "cheerful",
  "comfortable",
  "cooperative",
  "courageous",
  "delightful",
  "determined",
  "eager",
  "elated",
  "enchanting",
  "encouraging",
  "energetic",
  "enthusiastic",
  "excited",
  "exuberant",
  "fair",
  "faithful",
  "fantastic",
  "fine",
  "friendly",
  "funny",
  "gentle",
  "glorious",
  "good",
  "happy",
  "healthy",
  "helpful",
  "hilarious",
  "jolly",
  "joyous",
  "kind",
  "lively",
  "lovely",
  "lucky",
  "obedient",
  "perfect",
  "pleasant",
  "proud",
  "relieved",
  "silly",
  "smiling",
  "splendid",
  "successful",
  "thoughtful",
  "victorious",
  "vivacious",
  "witty",
  "wonderful",
  "zealous",
  "zany",
  "other",
  "good",
  "new",
  "old",
  "great",
  "high",
  "small",
  "different",
  "large",
  "local",
  "social",
  "important",
  "long",
  "young",
  "national",
  "british",
  "right",
  "early",
  "possible",
  "big",
  "little",
  "political",
  "able",
  "late",
  "general",
  "full",
  "far",
  "low",
  "public",
  "available",
  "bad",
  "main",
  "sure",
  "clear",
  "major",
  "economic",
  "only",
  "likely",
  "real",
  "black",
  "particular",
  "international",
  "special",
  "difficult",
  "certain",
  "open",
  "whole",
  "white",
  "free",
  "short",
  "easy",
  "strong",
  "european",
  "central",
  "similar",
  "human",
  "common",
  "necessary",
  "single",
  "personal",
  "hard",
  "private",
  "poor",
  "financial",
  "wide",
  "foreign",
  "simple",
  "recent",
  "concerned",
  "american",
  "various",
  "close",
  "fine",
  "english",
  "wrong",
  "present",
  "royal",
  "natural",
  "individual",
  "nice",
  "french",
  "nihilist",
  "solipsist",
  "materialist",
  "surrealist",
  "heroic",
  "awesome",
  "hedonist",
  "absurd",
  "current",
  "modern",
  "labour",
  "legal",
  "happy",
  "final",
  "red",
  "normal",
  "serious",
  "previous",
  "total",
  "prime",
  "significant",
  "industrial",
  "sorry",
  "dead",
  "specific",
  "appropriate",
  "top",
  "soviet",
  "basic",
  "military",
  "original",
  "successful",
  "aware",
  "hon",
  "popular",
  "heavy",
  "professional",
  "direct",
  "dark",
  "cold",
  "ready",
  "green",
  "useful",
  "effective",
  "western",
  "traditional",
  "scottish",
  "german",
  "independent",
  "deep",
  "interesting",
  "considerable",
  "involved",
  "physical",
  "hot",
  "existing",
  "responsible",
  "complete",
  "medical",
  "blue",
  "extra",
  "past",
  "male",
  "interested",
  "fair",
  "essential",
  "beautiful",
  "civil",
  "primary",
  "obvious",
  "future",
  "environmental",
  "positive",
  "senior",
  "nuclear",
  "annual",
  "relevant",
  "huge",
  "rich",
  "commercial",
  "safe",
  "regional",
  "practical",
  "official",
  "separate",
  "key",
  "chief",
  "regular",
  "due",
  "additional",
  "active",
  "powerful",
  "complex",
  "standard",
  "impossible",
  "light",
  "warm",
  "middle",
  "fresh",
  "sexual",
  "front",
  "domestic",
  "actual",
  "united",
  "technical",
  "ordinary",
  "cheap",
  "strange",
  "internal",
  "excellent",
  "quiet",
  "soft",
  "potential",
  "northern",
  "religious",
  "quick",
  "very",
  "famous",
  "cultural",
  "proper",
  "broad",
  "joint",
  "formal",
  "limited",
  "conservative",
  "lovely",
  "usual",
  "ltd",
  "unable",
  "rural",
  "initial",
  "substantial",
  "bright",
  "average",
  "leading",
  "reasonable",
  "immediate",
  "suitable",
  "equal",
  "detailed",
  "working",
  "overall",
  "female",
  "afraid",
  "democratic",
  "growing",
  "sufficient",
  "scientific",
  "eastern",
  "correct",
  "inc",
  "irish",
  "expensive",
  "educational",
  "mental",
  "dangerous",
  "critical",
  "increased",
  "familiar",
  "unlikely",
  "double",
  "perfect",
  "slow",
  "tiny",
  "dry",
  "historical",
  "thin",
  "daily",
  "southern",
  "increasing",
  "wild",
  "alone",
  "urban",
  "empty",
  "married",
  "narrow",
  "liberal",
  "supposed",
  "upper",
  "apparent",
  "tall",
  "busy",
  "bloody",
  "prepared",
  "russian",
  "moral",
  "careful",
  "clean",
  "attractive",
  "japanese",
  "vital",
  "thick",
  "alternative",
  "fast",
  "ancient",
  "elderly",
  "rare",
  "external",
  "capable",
  "brief",
  "wonderful",
  "grand",
  "typical",
  "entire",
  "grey",
  "constant",
  "vast",
  "surprised",
  "ideal",
  "terrible",
  "academic",
  "funny",
  "minor",
  "pleased",
  "severe",
  "ill",
  "corporate",
  "negative",
  "permanent",
  "weak",
  "brown",
  "fundamental",
  "odd",
  "crucial",
  "inner",
  "used",
  "criminal",
  "contemporary",
  "sharp",
  "sick",
  "near",
  "roman",
  "massive",
  "unique",
  "secondary",
  "parliamentary",
  "african",
  "unknown",
  "subsequent",
  "angry",
  "alive",
  "guilty",
  "lucky",
  "enormous",
  "well",
  "yellow",
  "unusual",
  "net",
  "tough",
  "dear",
  "extensive",
  "glad",
  "remaining",
  "agricultural",
  "alright",
  "healthy",
  "italian",
  "principal",
  "tired",
  "efficient",
  "comfortable",
  "chinese",
  "relative",
  "friendly",
  "conventional",
  "willing",
  "sudden",
  "proposed",
  "voluntary",
  "slight",
  "valuable",
  "dramatic",
  "golden",
  "temporary",
  "federal",
  "keen",
  "flat",
  "silent",
  "indian",
  "worried",
  "pale",
  "statutory",
  "welsh",
  "dependent",
  "firm",
  "wet",
  "competitive",
  "armed",
  "radical",
  "outside",
  "acceptable",
  "sensitive",
  "living",
  "pure",
  "global",
  "emotional",
  "sad",
  "secret",
  "rapid",
  "adequate",
  "fixed",
  "sweet",
  "administrative",
  "wooden",
  "remarkable",
  "comprehensive",
  "surprising",
  "solid",
  "rough",
  "mere",
  "mass",
  "brilliant",
  "maximum",
  "absolute",
  "electronic",
  "visual",
  "electric",
  "cool",
  "spanish",
  "literary",
  "continuing",
  "supreme",
  "chemical",
  "genuine",
  "exciting",
  "written",
  "advanced",
  "extreme",
  "classical",
  "fit",
  "favourite",
  "widespread",
  "confident",
  "straight",
  "proud",
  "numerous",
  "opposite",
  "distinct",
  "mad",
  "helpful",
  "given",
  "disabled",
  "consistent",
  "anxious",
  "nervous",
  "awful",
  "stable",
  "constitutional",
  "satisfied",
  "conscious",
  "developing",
  "strategic",
  "holy",
  "smooth",
  "dominant",
  "remote",
  "theoretical",
  "outstanding",
  "pink",
  "pretty",
  "clinical",
  "minimum",
  "honest",
  "impressive",
  "related",
  "residential",
  "extraordinary",
  "plain",
  "visible",
  "accurate",
  "distant",
  "still",
  "greek",
  "complicated",
  "musical",
  "precise",
  "gentle",
  "broken",
  "live",
  "silly",
  "fat",
  "tight",
  "monetary",
  "round",
  "psychological",
  "violent",
  "unemployed",
  "inevitable",
  "junior",
  "sensible",
  "grateful",
  "pleasant",
  "dirty",
  "structural",
  "welcome",
  "deaf",
  "above",
  "continuous",
  "blind",
  "overseas",
  "mean",
  "entitled",
  "delighted",
  "loose",
  "occasional",
  "evident",
  "desperate",
  "fellow",
  "universal",
  "square",
  "steady",
  "classic",
  "equivalent",
  "intellectual",
  "victorian",
  "level",
  "ultimate",
  "creative",
  "lost",
  "medieval",
  "clever",
  "linguistic",
  "convinced",
  "judicial",
  "raw",
  "sophisticated",
  "asleep",
  "vulnerable",
  "illegal",
  "outer",
  "revolutionary",
  "bitter",
  "changing",
  "australian",
  "native",
  "imperial",
  "strict",
  "wise",
  "informal",
  "flexible",
  "collective",
  "frequent",
  "experimental",
  "spiritual",
  "intense",
  "rational",
  "generous",
  "inadequate",
  "prominent",
  "logical",
  "bare",
  "historic",
  "modest",
  "dutch",
  "acute",
  "electrical",
  "valid",
  "weekly",
  "gross",
  "automatic",
  "loud",
  "reliable",
  "mutual",
  "liable",
  "multiple",
  "ruling",
  "curious",
  "sole",
  "managing",
  "pregnant",
  "latin",
  "nearby",
  "exact",
  "underlying",
  "identical",
  "satisfactory",
  "marginal",
  "distinctive",
  "electoral",
  "urgent",
  "presidential",
  "controversial",
  "everyday",
  "encouraging",
  "organic",
  "continued",
  "expected",
  "statistical",
  "desirable",
  "innocent",
  "improved",
  "exclusive",
  "marked",
  "experienced",
  "unexpected",
  "superb",
  "sheer",
  "disappointed",
  "frightened",
  "gastric",
  "romantic",
  "naked",
  "reluctant",
  "magnificent",
  "convenient",
  "established",
  "closed",
  "uncertain",
  "artificial",
  "diplomatic",
  "tremendous",
  "marine",
  "mechanical",
  "retail",
  "institutional",
  "mixed",
  "required",
  "biological",
  "known",
  "functional",
  "straightforward",
  "superior",
  "digital",
  "spectacular",
  "unhappy",
  "confused",
  "unfair",
  "aggressive",
  "spare",
  "painful",
  "abstract",
  "asian",
  "associated",
  "legislative",
  "monthly",
  "intelligent",
  "hungry",
  "explicit",
  "nasty",
  "just",
  "faint",
  "coloured",
  "ridiculous",
  "amazing",
  "comparable",
  "successive",
  "realistic",
  "back",
  "decent",
  "decentralized",
  "bitcoin",
  "cypherpunk",
  "unnecessary",
  "flying",
  "random",
  "influential",
  "dull",
  "genetic",
  "neat",
  "marvellous",
  "crazy",
  "damp",
  "giant",
  "secure",
  "bottom",
  "skilled",
  "subtle",
  "elegant",
  "brave",
  "lesser",
  "parallel",
  "steep",
  "intensive",
  "casual",
  "tropical",
  "lonely",
  "partial",
  "preliminary",
  "concrete",
  "alleged",
  "assistant",
  "vertical",
  "upset",
  "delicate",
  "mild",
  "occupational",
  "excessive",
  "progressive",
  "exceptional",
  "integrated",
  "striking",
  "continental",
  "okay",
  "harsh",
  "combined",
  "fierce",
  "handsome",
  "characteristic",
  "chronic",
  "compulsory",
  "interim",
  "objective",
  "splendid",
  "magic",
  "systematic",
  "obliged",
  "payable",
  "fun",
  "horrible",
  "primitive",
  "fascinating",
  "ideological",
  "metropolitan",
  "surrounding",
  "estimated",
  "peaceful",
  "premier",
  "operational",
  "technological",
  "kind",
  "advisory",
  "hostile",
  "precious",
  "accessible",
  "determined",
  "excited",
  "impressed",
  "provincial",
  "smart",
  "endless",
  "isolated",
  "drunk",
  "geographical",
  "like",
  "dynamic",
  "boring",
  "forthcoming",
  "unfortunate",
  "definite",
  "super",
  "notable",
  "indirect",
  "stiff",
  "wealthy",
  "awkward",
  "lively",
  "neutral",
  "artistic",
  "content",
  "mature",
  "colonial",
  "ambitious",
  "evil",
  "magnetic",
  "verbal",
  "legitimate",
  "sympathetic",
  "empirical",
  "head",
  "shallow",
  "vague",
  "naval",
  "depressed",
  "shared",
  "added",
  "shocked",
  "mid",
  "worthwhile",
  "qualified",
  "missing",
  "blank",
  "absent",
  "favourable",
  "polish",
  "israeli",
  "developed",
  "profound",
  "representative",
  "enthusiastic",
  "dreadful",
  "rigid",
  "reduced",
  "cruel",
  "coastal",
  "peculiar",
  "swiss",
  "crude",
  "extended",
  "selected",
  "eager",
  "canadian",
  "bold",
  "relaxed",
  "corresponding",
  "running",
  "planned",
  "applicable",
  "immense",
  "allied",
  "comparative",
  "uncomfortable",
  "conservation",
  "productive",
  "beneficial",
  "bored",
  "charming",
  "minimal",
  "mobile",
  "turkish",
  "orange",
  "rear",
  "passive",
  "suspicious",
  "overwhelming",
  "fatal",
  "resulting",
  "symbolic",
  "registered",
  "neighbouring",
  "calm",
  "irrelevant",
  "patient",
  "compact",
  "profitable",
  "rival",
  "loyal",
  "moderate",
  "distinguished",
  "interior",
  "noble",
  "insufficient",
  "eligible",
  "mysterious",
  "varying",
  "managerial",
  "molecular",
  "olympic",
  "linear",
  "prospective",
  "printed",
  "parental",
  "diverse",
  "elaborate",
  "furious",
  "fiscal",
  "burning",
  "useless",
  "semantic",
  "embarrassed",
  "inherent",
  "philosophical",
  "deliberate",
  "awake",
  "variable",
  "promising",
  "unpleasant",
  "varied",
  "sacred",
  "selective",
  "inclined",
  "tender",
  "hidden",
  "worthy",
  "intermediate",
  "sound",
  "protective",
  "fortunate",
  "slim",
  "defensive",
  "divine",
  "stuck",
  "driving",
  "invisible",
  "misleading",
  "circular",
  "mathematical",
  "inappropriate",
  "liquid",
  "persistent",
  "solar",
  "doubtful",
  "manual",
  "architectural",
  "intact",
  "incredible",
  "devoted",
  "prior",
  "tragic",
  "respectable",
  "optimistic",
  "convincing",
  "unacceptable",
  "decisive",
  "competent",
  "spatial",
  "respective",
  "binding",
  "relieved",
  "nursing",
  "toxic",
  "select",
  "redundant",
  "integral",
  "then",
  "probable",
  "amateur",
  "fond",
  "passing",
  "specified",
  "territorial",
  "horizontal",
  "inland",
  "cognitive",
  "regulatory",
  "miserable",
  "resident",
  "polite",
  "scared",
  "gothic",
  "civilian",
  "instant",
  "lengthy",
  "adverse",
  "korean",
  "unconscious",
  "anonymous",
  "aesthetic",
  "orthodox",
  "static",
  "unaware",
  "costly",
  "fantastic",
  "foolish",
  "fashionable",
  "causal",
  "compatible",
  "wee",
  "implicit",
  "dual",
  "ok",
  "cheerful",
  "subjective",
  "forward",
  "surviving",
  "exotic",
  "purple",
  "cautious",
  "visiting",
  "aggregate",
  "ethical",
  "teenage",
  "dying",
  "disastrous",
  "delicious",
  "confidential",
  "underground",
  "thorough",
  "grim",
  "autonomous",
  "atomic",
  "frozen",
  "colourful",
  "injured",
  "uniform",
  "ashamed",
  "glorious",
  "wicked",
  "coherent",
  "rising",
  "shy",
  "novel",
  "balanced",
  "delightful",
  "arbitrary",
  "adjacent",
  "worrying",
  "weird",
  "unchanged",
  "rolling",
  "evolutionary",
  "intimate",
  "sporting",
  "disciplinary",
  "formidable",
  "lexical",
  "noisy",
  "gradual",
  "accused",
  "homeless",
  "supporting",
  "coming",
  "renewed",
  "excess",
  "retired",
  "rubber",
  "chosen",
  "outdoor",
  "embarrassing",
  "preferred",
  "bizarre",
  "appalling",
  "agreed",
  "imaginative",
  "governing",
  "accepted",
  "vocational",
  "mighty",
  "puzzled",
  "worldwide",
  "organisational",
  "sunny",
  "eldest",
  "eventual",
  "spontaneous",
  "vivid",
  "rude",
  "faithful",
  "ministerial",
  "innovative",
  "controlled",
  "conceptual",
  "unwilling",
  "civic",
  "meaningful",
  "alive",
  "brainy",
  "breakable",
  "busy",
  "careful",
  "cautious",
  "clever",
  "concerned",
  "crazy",
  "curious",
  "dead",
  "different",
  "difficult",
  "doubtful",
  "easy",
  "famous",
  "fragile",
  "helpful",
  "helpless",
  "important",
  "impossible",
  "innocent",
  "inquisitive",
  "modern",
  "open",
  "outstanding",
  "poor",
  "powerful",
  "puzzled",
  "real",
  "rich",
  "shy",
  "sleepy",
  "super",
  "tame",
  "uninterested",
  "wandering",
  "wild",
  "wrong",
  "adorable",
  "alert",
  "average",
  "beautiful",
  "blonde",
  "bloody",
  "blushing",
  "bright",
  "clean",
  "clear",
  "cloudy",
  "colorful",
  "crowded",
  "cute",
  "dark",
  "drab",
  "distinct",
  "dull",
  "elegant",
  "fancy",
  "filthy",
  "glamorous",
  "gleaming",
  "graceful",
  "grotesque",
  "homely",
  "light",
  "misty",
  "motionless",
  "muddy",
  "plain",
  "poised",
  "quaint",
  "shiny",
  "smoggy",
  "sparkling",
  "spotless",
  "stormy",
  "strange",
  "ugly",
  "unsightly",
  "unusual",
  "bad",
  "better",
  "beautiful",
  "big",
  "black",
  "blue",
  "bright",
  "clumsy",
  "crazy",
  "dizzy",
  "dull",
  "fat",
  "frail",
  "friendly",
  "funny",
  "great",
  "green",
  "gigantic",
  "gorgeous",
  "grumpy",
  "handsome",
  "happy",
  "horrible",
  "itchy",
  "jittery",
  "jolly",
  "kind",
  "long",
  "lazy",
  "magnificent",
  "magenta",
  "many",
  "mighty",
  "mushy",
  "nasty",
  "new",
  "nice",
  "nosy",
  "nutty",
  "nutritious",
  "odd",
  "orange",
  "ordinary",
  "pretty",
  "precious",
  "prickly",
  "purple",
  "quaint",
  "quiet",
  "quick",
  "quickest",
  "rainy",
  "rare",
  "ratty",
  "red",
  "roasted",
  "robust",
  "round",
  "sad",
  "scary",
  "scrawny",
  "short",
  "silly",
  "stingy",
  "strange",
  "striped",
  "spotty",
  "tart",
  "tall",
  "tame",
  "tan",
  "tender",
  "testy",
  "tricky",
  "tough",
  "ugly",
  "ugliest",
  "vast",
  "watery",
  "wasteful",
  "wonderful",
  "yellow",
  "yummy",
  "zany",
];

function capitalize(s: string) {
  return s.charAt(0).toUpperCase() + s.slice(1);
}

/**
 * deterministically create adjective + animal names
 */
export default function (seed: string) {
  if (!seed) {
    throw new Error("No seed provided");
  }
  const hash = sha256(seed); // Uint8Array
  const adjective = adjectives[hash[0] % adjectives.length];
  const animal = animals[hash[1] % animals.length];
  return `${capitalize(adjective)} ${capitalize(animal)}`;
}
