diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d2156fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.env +.env.test +.cache \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..52b6506 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - 15.5.0 +before_script: + - npm install -g mocha chai +script: mocha tests/index.test.js --exit \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3bc6d8c --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Joey Malvinni + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ae2d5c --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# Random Usernames +This module generates random usernames by combining different words. + +Usage: + + + +```js +let output = generateUsername({ + // Setting the order of the outputted words + order: ["possibly", "adjectives", "nouns", "numbers"], + // Only capitalize nouns + capitalize: ["nouns"], + // Seperates the words with an underscore + separator: '_', + // Special formatting done to each individual word + wordFormatter: (word) => word.replaceAll('o', '0'), + // Special formatting done to the entire string + formatter: (str) => str.split('_'), + // Enables the addition of custom words in the order, e.g. "Pretty" or "true" or "Random" + customWords: true, +}) + +console.log(output) // => [ 'p0ssibly', 'c0nservati0n', 'Gridl0ck', '1425' ] + +// Generate a username using verbs and adverbs + +let output2 = generateUsername({ + // Setting the order of the outputted words + order: ["Cool", "verbs", "adverbs", "numbers"], + // Only capitalize nouns + capitalize: ["adverbs"], + // Seperates the words with an underscore + separator: '_', + // Special formatting done to each individual word + wordFormatter: (word) => word.replaceAll('o', '0'), + // Special formatting done to the entire string + formatter: (str) => str.split('_'), + // Enables the addition of custom words in the order, e.g. "Exotic" or "Cool" or "Nice" + customWords: true, +}) + +console.log(output2) // => [ 'c00l', 'fraudulent', 'R0adbl0ck', '7586' ] + +// Generate a username without any parameters +let output3 = generateUsername() + +console.log(output3) // => DiscerningSquid4 +``` \ No newline at end of file diff --git a/data/adjectives.json b/data/adjectives.json new file mode 100644 index 0000000..da248ec --- /dev/null +++ b/data/adjectives.json @@ -0,0 +1 @@ +["other", "new", "good", "old", "little", "great", "small", "young", "long", "black", "high", "only", "big", "white", "political", "right", "large", "real", "sure", "different", "important", "public", "possible", "full", "whole", "certain", "human", "major", "military", "bad", "social", "dead", "true", "economic", "open", "early", "free", "national", "strong", "hard", "special", "clear", "local", "private", "wrong", "late", "short", "poor", "recent", "dark", "fine", "foreign", "ready", "red", "cold", "low", "heavy", "serious", "single", "personal", "difficult", "left", "blue", "federal", "necessary", "general", "easy", "likely", "beautiful", "happy", "past", "hot", "close", "common", "afraid", "simple", "natural", "main", "various", "available", "nice", "present", "final", "sorry", "entire", "current", "similar", "deep", "huge", "rich", "nuclear", "empty", "strange", "quiet", "front", "wide", "modern", "concerned", "green", "very", "alone", "particular", "bright", "supposed", "basic", "medical", "aware", "total", "financial", "legal", "original", "international", "soft", "alive", "interested", "tall", "warm", "popular", "tiny", "top", "normal", "powerful", "silent", "religious", "impossible", "quick", "safe", "thin", "familiar", "gray", "fresh", "physical", "individual", "willing", "crazy", "sick", "angry", "perfect", "tired", "wild", "moral", "brown", "dangerous", "famous", "married", "terrible", "successful", "fair", "professional", "official", "obvious", "glad", "central", "chief", "effective", "light", "complete", "interesting", "thick", "proper", "involved", "responsible", "narrow", "civil", "industrial", "dry", "yellow", "specific", "sharp", "sudden", "direct", "following", "growing", "significant", "traditional", "slow", "previous", "vast", "surprised", "busy", "usual", "clean", "funny", "regular", "scientific", "ordinary", "ancient", "senior", "sweet", "future", "annual", "secret", "equal", "independent", "wonderful", "tough", "broad", "additional", "careful", "domestic", "brief", "enormous", "commercial", "grand", "average", "sexual", "nervous", "pale", "immediate", "critical", "proud", "like", "complex", "separate", "considerable", "still", "extra", "expensive", "guilty", "active", "mad", "asleep", "wooden", "cool", "presidential", "apparent", "weak", "essential", "living", "pretty", "cultural", "useful", "actual", "unusual", "daily", "potential", "wet", "solid", "lovely", "comfortable", "formal", "outside", "massive", "sad", "corporate", "distant", "loose", "rare", "stupid", "visible", "liberal", "flat", "pleased", "pure", "curious", "practical", "upper", "technical", "male", "appropriate", "fat", "just", "due", "mere", "handsome", "mental", "conservative", "positive", "leading", "naked", "false", "drunk", "dirty", "friendly", "constant", "well", "used", "emotional", "internal", "odd", "historical", "female", "ill", "broken", "capable", "southern", "pleasant", "bare", "minor", "eager", "lucky", "urban", "steady", "fiscal", "rough", "primary", "reasonable", "typical", "inner", "favorite", "attractive", "slight", "innocent", "limited", "straight", "pink", "excellent", "double", "dramatic", "violent", "honest", "electric", "fellow", "substantial", "opposite", "awful", "severe", "joint", "armed", "hungry", "remarkable", "increased", "gentle", "illegal", "middle", "bitter", "mass", "permanent", "increasing", "damn", "golden", "correct", "intense", "round", "northern", "proposed", "so-called", "criminal", "healthy", "plain", "vital", "blind", "native", "intellectual", "unknown", "extreme", "existing", "raw", "prime", "brilliant", "sensitive", "extraordinary", "sufficient", "remaining", "ultimate", "unique", "royal", "initial", "negative", "fundamental", "nearby", "smart", "strategic", "educational", "unlikely", "smooth", "modest", "conventional", "giant", "scared", "cheap", "dear", "delicate", "anxious", "valuable", "standard", "desperate", "lonely", "diplomatic", "firm", "wise", "principal", "congressional", "occasional", "ugly", "vice", "radical", "faint", "working", "absolute", "intelligent", "racial", "mutual", "silly", "fast", "musical", "tight", "complicated", "numerous", "crucial", "square", "contemporary", "bloody", "western", "endless", "inevitable", "environmental", "constitutional", "rapid", "worried", "lost", "genuine", "temporary", "democratic", "rural", "regional", "given", "painful", "literary", "chemical", "sophisticated", "decent", "academic", "awake", "conscious", "revolutionary", "surprising", "elderly", "agricultural", "psychological", "pregnant", "live", "adequate", "superior", "grateful", "prominent", "frightened", "remote", "overall", "stiff", "harsh", "electronic", "spiritual", "okay", "closed", "excited", "convinced", "long-term", "unexpected", "dull", "evident", "civilian", "mysterious", "romantic", "impressive", "continuing", "exciting", "logical", "peculiar", "exact", "widespread", "foolish", "extensive", "evil", "continued", "confident", "generous", "legislative", "stable", "vulnerable", "elegant", "embarrassed", "hostile", "efficient", "blond", "dumb", "advanced", "defensive", "outer", "neat", "estimated", "wealthy", "dying", "loud", "creative", "acceptable", "unhappy", "sheer", "competitive", "concrete", "reluctant", "fucking", "precious", "tremendous", "burning", "precise", "uncertain", "holy", "artificial", "vague", "ideal", "universal", "moderate", "subtle", "mild", "peaceful", "assistant", "invisible", "casual", "crowded", "crude", "running", "classic", "controversial", "ridiculous", "frequent", "grim", "accurate", "detailed", "goddamn", "fun", "fierce", "cruel", "incredible", "blank", "dim", "suitable", "classical", "elaborate", "collective", "eastern", "legitimate", "aggressive", "rear", "administrative", "automatic", "dependent", "ashamed", "distinct", "fit", "clever", "brave", "ethnic", "maximum", "relative", "primitive", "uncomfortable", "profound", "sacred", "biological", "identical", "furious", "loyal", "rational", "mechanical", "mean", "naval", "noble", "ambitious", "purple", "historic", "dominant", "suburban", "developing", "calm", "frozen", "subsequent", "charming", "damp", "fixed", "rigid", "offensive", "electrical", "shy", "continuous", "urgent", "weary", "immense", "splendid", "downtown", "uneasy", "disappointed", "helpless", "voluntary", "polite", "junior", "gross", "striking", "overwhelming", "unconscious", "steep", "outstanding", "tender", "tragic", "costly", "miserable", "near", "useless", "welcome", "external", "helpful", "weekly", "middle-aged", "suspicious", "old-fashioned", "technological", "damned", "awkward", "visual", "organized", "ideological", "orange", "horrible", "strict", "magnificent", "deadly", "dusty", "mighty", "puzzled", "bold", "global", "passing", "magic", "fond", "judicial", "missing", "definite", "changing", "rubber", "theoretical", "satisfied", "promising", "abstract", "excessive", "comparable", "fatal", "distinguished", "inadequate", "slender", "artistic", "known", "sympathetic", "favorable", "cheerful", "faithful", "delighted", "unnecessary", "sole", "cautious", "productive", "reliable", "patient", "sensible", "desirable", "depressed", "atomic", "able", "instant", "relevant", "alien", "spectacular", "lesser", "swift", "comic", "enthusiastic", "marvelous", "experimental", "weird", "retired", "fascinating", "content", "medieval", "inclined", "bored", "ruling", "flying", "consistent", "organic", "alleged", "grave", "smiling", "realistic", "amazing", "exotic", "symbolic", "confused", "underground", "spare", "philosophical", "vigorous", "troubled", "shallow", "amused", "lively", "genetic", "impatient", "brutal", "solar", "unfair", "formidable", "tense", "unfortunate", "minimum", "sleeping", "secondary", "shiny", "jealous", "insane", "gay", "vivid", "wounded", "hurt", "intimate", "monthly", "sour", "socialist", "worthy", "preliminary", "colonial", "middle-class", "alternative", "influential", "unpleasant", "comprehensive", "devoted", "upset", "secure", "absurd", "neutral", "frightening", "profitable", "fragile", "civilized", "slim", "partial", "added", "fearful", "optimistic", "isolated", "eternal", "vocal", "beloved", "alert", "verbal", "rising", "skilled", "antique", "municipal", "written", "restless", "outdoor", "governmental", "driving", "sore", "informal", "loving", "retail", "hidden", "determined", "monetary", "convenient", "thoughtful", "colored", "progressive", "bizarre", "sweeping", "fancy", "expected", "fantastic", "editorial", "intact", "bottom", "multiple", "well-known", "nasty", "protective", "acute", "combined", "related", "fortunate", "earnest", "divine", "passionate", "icy", "noisy", "vicious", "dreadful", "apt", "boring", "unprecedented", "decisive", "sunny", "marked", "experienced", "disturbing", "satisfactory", "sober", "random", "electoral", "shocked", "deliberate", "coming", "orderly", "surrounding", "unwilling", "inherent", "mixed", "naive", "dense", "hopeless", "aesthetic", "supreme", "encouraging", "institutional", "solemn", "stubborn", "required", "relaxed", "bald", "frantic", "exclusive", "rotten", "filthy", "flexible", "explicit", "glorious", "lean", "ignorant", "extended", "embarrassing", "architectural", "mortal", "corrupt", "hopeful", "regulatory", "valid", "characteristic", "tribal", "capitalist", "diverse", "functional", "improved", "ironic", "graceful", "unaware", "respectable", "eligible", "lousy", "established", "postwar", "objective", "wary", "elementary", "moving", "superb", "cute", "minimal", "meaningful", "notable", "structural", "developed", "rolling", "fashionable", "persistent", "distinctive", "terrific", "thorough", "skeptical", "secular", "chronic", "level", "everyday", "visiting", "infinite", "short-term", "terrorist", "youthful", "unemployed", "forced", "liquid", "explosive", "rude", "colorful", "renewed", "semantic", "astonishing", "passive", "heroic", "gleaming", "indifferent", "vertical", "prior", "anonymous", "absent", "customary", "mobile", "uniform", "solitary", "probable", "amazed", "petty", "bleak", "athletic", "tentative", "harmless", "ample", "right-wing", "polished", "obscure", "sincere", "dried", "intensive", "equivalent", "convincing", "idle", "vacant", "mature", "amusing", "competent", "ominous", "savage", "motionless", "tropical", "blunt", "drunken", "delicious", "lazy", "ragged", "longtime", "nationwide", "startling", "civic", "freezing", "muscular", "circular", "imperial", "irrelevant", "countless", "gloomy", "startled", "disastrous", "skinny", "hollow", "upward", "ethical", "underlying", "careless", "wholesale", "abandoned", "unfamiliar", "mandatory", "imaginary", "bewildered", "annoyed", "magnetic", "dazzling", "lengthy", "stern", "surgical", "clinical", "full-time", "metropolitan", "moist", "unlike", "doubtful", "prosperous", "keen", "awesome", "humble", "interior", "psychiatric", "clumsy", "outraged", "theatrical", "educated", "gigantic", "scattered", "privileged", "sleepy", "battered", "meaningless", "predictable", "gradual", "miniature", "radioactive", "prospective", "aging", "destructive", "authentic", "portable", "bearded", "balanced", "shining", "spontaneous", "bureaucratic", "inferior", "sturdy", "cynical", "exquisite", "talented", "immune", "imaginative", "ripe", "shared", "kind", "parliamentary", "glowing", "frail", "astonished", "forward", "inside", "operational", "faded", "closing", "pro", "coastal", "shrewd", "preoccupied", "celebrated", "wicked", "bourgeois", "marginal", "transparent", "dynamic", "psychic", "plump", "coarse", "bleeding", "striped", "eventual", "residential", "hysterical", "pathetic", "planned", "fake", "imminent", "sentimental", "stunning", "worldwide", "militant", "sizable", "representative", "incapable", "provincial", "poetic", "injured", "tactical", "selfish", "winning", "foul", "repeated", "novel", "dubious", "part-time", "abrupt", "lone", "overseas", "grey", "varied", "cooperative", "muddy", "scheduled", "legendary", "arrogant", "conspicuous", "varying", "devastating", "vulgar", "martial", "amateur", "mathematical", "deaf", "scarce", "specialized", "honorable", "outrageous", "confidential", "fallen", "goddamned", "five-year", "feminine", "monstrous", "brisk", "systematic", "exhausted", "frank", "lunar", "daring", "shadowy", "respected", "stark", "accepted", "successive", "pending", "prolonged", "unseen", "uniformed", "wretched", "sullen", "arbitrary", "drastic", "crooked", "resulting", "intricate", "unpredictable", "printed", "utter", "satisfying", "delightful", "linguistic", "shabby", "statistical", "accessible", "prestigious", "trivial", "waiting", "futile", "prepared", "aged", "misleading", "cognitive", "shocking", "childish", "elected", "magical", "forthcoming", "exceptional", "gifted", "stricken", "fiery", "cardboard", "shaky", "conflicting", "commanding", "starving", "accustomed", "rocky", "long-range", "floating", "sinister", "potent", "phony", "lasting", "understandable", "curved", "barren", "lethal", "toxic", "deserted", "ambiguous", "notorious", "synthetic", "worthwhile", "imported", "intent", "reduced", "painted", "taut", "sociological", "questionable", "crisp", "pointed", "harmful", "horizontal", "rival", "somber", "benign", "prevailing", "selected", "organizational", "excess", "dedicated", "veteran", "implicit", "prudent", "plausible", "confusing", "smoking", "large-scale", "subdued", "constructive", "marital", "scarlet", "rugged", "darkened", "untouched", "above", "matching", "covert", "communal", "sticky", "affluent", "energetic", "stale", "controlled", "qualified", "reminiscent", "shut", "blonde", "handy", "ritual", "straightforward", "terminal", "dizzy", "sane", "twisted", "occupied", "finished", "opposing", "sly", "depressing", "irregular", "marine", "communist", "obscene", "wrinkled", "unsuccessful", "gracious", "static", "consecutive", "reserve", "exposed", "scholarly", "sleek", "reckless", "oral", "comforting", "pressing", "swollen", "viable", "carved", "obsessed", "projected", "hideous", "unthinkable", "mock", "susceptible", "respective", "goddam", "downward", "memorable", "worn", "raised", "glittering", "beneficial", "lingering", "patriotic", "stunned", "hairy", "worrying", "lighted", "sexy", "abundant", "tangled", "perpetual", "irresistible", "terrified", "compelling", "unmistakable", "feeble", "uneven", "trained", "folded", "relentless", "killed", "gorgeous", "conservation", "serene", "eerie", "premature", "dismal", "competing", "risky", "unacceptable", "indirect", "witty", "muffled", "feasible", "interstate", "heated", "uncommon", "accidental", "queer", "innovative", "parallel", "fried", "unnatural", "cracked", "persuasive", "integrated", "ongoing", "homosexual", "sound", "fertile", "canned", "preceding", "worldly", "onstage", "declining", "advisory", "juvenile", "slippery", "numb", "postal", "olive", "eccentric", "lay", "chilly", "shrill", "ceremonial", "registered", "boiling", "contradictory", "irresponsible", "then", "industrialized", "obsolete", "rusty", "inflationary", "split", "discreet", "intolerable", "barefoot", "territorial", "outspoken", "audible", "adverse", "associate", "impending", "decorative", "luminous", "two-year", "expanding", "unchanged", "outstretched", "momentary", "good-looking", "cunning", "overnight", "sprawling", "unbelievable", "bland", "liable", "terrifying", "televised", "appealing", "breathless", "alarming", "supporting", "greasy", "affirmative", "guiding", "homeless", "triumphant", "rainy", "stolen", "empirical", "timid", "provocative", "knowledgeable", "pragmatic", "touching", "desired", "amiable", "attempted", "humane", "adjacent", "superficial", "greedy", "assorted", "elusive", "ruthless", "lush", "soothing", "imposing", "preferred", "lavish", "pervasive", "managing", "sandy", "inappropriate", "desolate", "nude", "reassuring", "shimmering", "first-class", "unfinished", "insistent", "comparative", "conceivable", "admirable", "courageous", "aristocratic", "meager", "subjective", "vain", "disgusted", "dual", "towering", "responsive", "ailing", "compact", "torn", "sortal", "entertaining", "dreary", "metallic", "tedious", "irrational", "immoral", "teen-age", "interim", "jagged", "selective", "volatile", "cozy", "unanimous", "unlimited", "hired", "cosmic", "indoor", "retarded", "gold", "fabulous", "dignified", "long-distance", "high-school", "classified", "luxurious", "insufficient", "pious", "incomplete", "oblivious", "imperialist", "stately", "lifelong", "subordinate", "extravagant", "intrinsic", "unpopular", "scant", "surplus", "radiant", "ruined", "grotesque", "hazardous", "disabled", "intriguing", "worthless", "reported", "hoarse", "utmost", "muted", "bony", "disgusting", "monumental", "pleasing", "sterile", "agreeable", "three-year", "tricky", "lucrative", "respectful", "inexpensive", "bulky", "troublesome", "affectionate", "coherent", "unreasonable", "nineteenth-century", "curly", "indispensable", "nursing", "incompetent", "governing", "alternate", "suspected", "left-wing", "refined", "overt", "chilling", "virtual", "devoid", "perverse", "enduring", "outright", "overhead", "unnoticed", "nonprofit", "pointless", "appalling", "dental", "chosen", "enlightened", "robust", "commonplace", "damaging", "conscientious", "eloquent", "erratic", "applied", "merry", "ardent", "flowing", "incoming", "chaotic", "noticeable", "pitiful", "locked", "swelling", "definitive", "homemade", "super", "pronounced", "kindly", "prone", "attentive", "unstable", "unrelated", "charitable", "armored", "unclear", "tangible", "medium", "winding", "slick", "credible", "frustrating", "shifting", "spacious", "day-to-day", "surviving", "expanded", "arid", "unwanted", "unbearable", "hesitant", "recognizable", "multinational", "abdominal", "murderous", "glossy", "mute", "working-class", "insignificant", "ingenious", "masculine", "blessed", "gaunt", "miraculous", "unconstitutional", "parental", "rigorous", "bodily", "impersonal", "backward", "computerized", "four-year", "unmarried", "wry", "resident", "luxury", "high-level", "partisan", "powerless", "seasonal", "self-conscious", "triple", "onetime", "ecological", "periodic", "racist", "exaggerated", "facial", "erotic", "unreal", "durable", "manual", "rounded", "concentrated", "literal", "mystical", "stimulating", "staggering", "tempting", "last-minute", "erect", "feudal", "head", "emerging", "hind", "brooding", "candid", "paranoid", "defective", "linear", "immortal", "shattered", "unsure", "swinging", "compatible", "ghastly", "investigative", "rosy", "convicted", "sensational", "committed", "makeshift", "tolerant", "forceful", "supernatural", "joyous", "limp", "improper", "hanging", "sliding", "renowned", "tattered", "nonexistent", "supportive", "frustrated", "undercover", "handicapped", "apprehensive", "plentiful", "authoritative", "sustained", "disappointing", "hereditary", "photographic", "impoverished", "ornate", "respiratory", "substantive", "acting", "nutritional", "unofficial", "innumerable", "prevalent", "dire", "menacing", "outward", "brittle", "hasty", "sparkling", "sled", "geographical", "therapeutic", "melancholy", "adolescent", "hearty", "disturbed", "sweaty", "poisonous", "paid", "ineffective", "humorous", "burly", "rebellious", "reddish", "stout", "teenage", "eminent", "rhythmic", "physiological", "guaranteed", "opaque", "folding", "fleeting", "full-scale", "low-income", "infectious", "stringent", "stained", "beige", "stirring", "soaring", "glamorous", "airborne", "improbable", "austere", "anticipated", "designated", "oval", "restrictive", "yearly", "precarious", "relieved", "said", "feverish", "occupational", "holding", "speculative", "abnormal", "challenging", "healing", "boyish", "forbidding", "divorced", "famed", "sluggish", "struggling", "united", "undesirable", "steaming", "consulting", "answering", "recreational", "accompanying", "cramped", "journalistic", "neighboring", "fictional", "chopped", "phenomenal", "bankrupt", "illicit", "advancing", "upcoming", "racing", "protected", "padded", "venerable", "fuzzy", "behavioral", "roast", "mocking", "reactionary", "inefficient", "packed", "sloppy", "sparse", "foster", "revealing", "reverse", "gaping", "blue-collar", "thankful", "down", "unimportant", "traveling", "corresponding", "maternal", "autonomous", "conceptual", "smoky", "baked", "stuffed", "murky", "totalitarian", "ghostly", "seeming", "flickering", "sensual", "clenched", "offshore", "stinging", "oppressive", "strained", "messy", "executive", "evolutionary", "theological", "damaged", "unrealistic", "rectangular", "off", "mainstream", "benevolent", "thirsty", "blinding", "loaded", "applicable", "unused", "crushed", "tan", "factual", "involuntary", "brand-new", "akin", "scary", "modified", "mindless", "born", "feminist", "integral", "uncanny", "aloof", "spreading", "watery", "playful", "stocky", "wasted", "compulsory", "indignant", "pertinent", "incredulous", "simultaneous", "turbulent", "framed", "aching", "falling", "cardiac", "trim", "silvery", "accused", "pastoral", "barbed", "adjoining", "inspired", "courteous", "skillful", "majestic", "gilded", "published", "perennial", "upright", "seasoned", "continual", "papal", "victorious", "optical", "ecstatic", "agonizing", "shameful", "expressive", "inconsistent", "insulting", "cloudy", "defiant", "restricted", "approaching", "aggregate", "orthodox", "unified", "all-out", "wooded", "nationalist", "favored", "lofty", "assured", "smug", "earthly", "improving", "instrumental", "stray", "clandestine", "managerial", "animated", "intended", "flawed", "bent", "clerical", "outgoing", "righteous", "unspoken", "poignant", "faulty", "defeated", "authoritarian", "treacherous", "catastrophic", "refreshing", "unidentified", "suicidal", "sickly", "disciplined", "meticulous", "preferable", "trusted", "hectic", "husky", "distraught", "select", "snowy", "ferocious", "crumpled", "humiliating", "divided", "crippled", "infamous", "chic", "broke", "sovereign", "continental", "idealistic", "first-rate", "guarded", "learned", "nameless", "runaway", "metaphysical", "senseless", "boiled", "needy", "silver", "recorded", "polar", "real-estate", "stormy", "incomprehensible", "wiry", "raging", "composite", "flamboyant", "crimson", "reproductive", "intermediate", "ubiquitous", "repressive", "hefty", "listening", "good-natured", "parochial", "stylish", "high-tech", "flaming", "coronary", "overweight", "bathing", "three-day", "tidy", "beleaguered", "manifest", "ludicrous", "indigenous", "adamant", "placid", "inept", "exuberant", "stony", "salty", "seductive", "accomplished", "impassive", "grazing", "congenial", "misguided", "wide-eyed", "revised", "bass", "sonic", "budgetary", "halfway", "ensuing", "admiring", "palpable", "nightly", "hooded", "best-known", "eighteenth-century", "dissident", "morbid", "incumbent", "demanding", "inexperienced", "hazy", "revolving", "rented", "disadvantaged", "innate", "dietary", "minute", "cultivated", "sealed", "contemptuous", "rhetorical", "conciliatory", "articulate", "jobless", "macho", "forgotten", "lifeless", "proven", "latent", "secretive", "perilous", "token", "graphic", "alcoholic", "overdue", "permissible", "shattering", "preventive", "illiterate", "back", "atmospheric", "thermal", "quaint", "negotiated", "preposterous", "temporal", "restrained", "triangular", "mayoral", "spatial", "heady", "biblical", "fitting", "pessimistic", "mammoth", "allied", "failed", "intuitive", "nagging", "tidal", "angular", "speechless", "finishing", "protracted", "watchful", "businesslike", "automated", "versatile", "booming", "pouring", "misty", "deceptive", "sunken", "singular", "suspended", "unworthy", "immigrant", "expressionless", "airy", "mournful", "neurotic", "cubic", "unauthorized", "economical", "fund-raising", "captive", "blatant", "far-reaching", "subversive", "imperfect", "jolly", "inaccurate", "resentful", "strenuous", "suffering", "hardened", "malicious", "unjust", "perceptive", "newborn", "promised", "differing", "virgin", "alarmed", "grassy", "frivolous", "apologetic", "wasteful", "endangered", "unarmed", "adept", "unavoidable", "approved", "trembling", "stuck", "high-ranking", "crushing", "prescribed", "dependable", "fragrant", "expansive", "unfriendly", "covered", "bemused", "digital", "probing", "sloping", "man-made", "festive", "unilateral", "unmarked", "bipartisan", "statewide", "burgeoning", "devout", "sickening", "mediocre", "adventurous", "elevated", "suggestive", "accountable", "virtuous", "lame", "heavenly", "bruised", "unbroken", "irritable", "affected", "inconceivable", "sometime", "vile", "baggy", "timely", "glistening", "imagined", "unprepared", "unresolved", "windy", "humanitarian", "overriding", "detached", "annoying", "narrative", "interminable", "appalled", "penal", "unsatisfactory", "instinctive", "variable", "cumulative", "obedient", "deficient", "colossal", "unaffected", "extinct", "routine", "microscopic", "compassionate", "nominal", "forlorn", "distorted", "mistaken", "enclosed", "infected", "fervent", "analogous", "frigid", "instructive", "appointed", "one-way", "gnarled", "problematic", "sardonic", "two-hour", "hypothetical", "prompt", "anguished", "electromagnetic", "sensuous", "homely", "beaten", "malignant", "rotting", "concealed", "peripheral", "creaking", "impeccable", "khaki", "grinning", "irreversible", "rampant", "wondrous", "inward", "manufactured", "grisly", "cooked", "discriminatory", "cerebral", "knowing", "auxiliary", "operative", "losing", "genial", "phonetic", "ecclesiastical", "sarcastic", "incorrect", "ruddy", "well-to-do", "inexplicable", "unreliable", "developmental", "woolen", "agitated", "lyrical", "consequent", "calculated", "molecular", "pompous", "present-day", "shaggy", "even", "inhuman", "sublime", "diagnostic", "manly", "raucous", "balding", "after", "bilateral", "mounted", "blackened", "assembled", "separated", "gaudy", "evangelical", "darling", "juicy", "impotent", "receptive", "irritating", "pulmonary", "dazed", "cross-country", "unavailable", "parked", "habitual", "lexical", "lowered", "unwise", "planetary", "throbbing", "enigmatic", "superstitious", "threatening", "manned", "childlike", "sporting", "right-hand", "adult", "reflective", "white-haired", "discernible", "celestial", "prodigious", "translucent", "equitable", "epic", "frayed", "arduous", "flimsy", "penetrating", "howling", "disparate", "alike", "all-time", "deformed", "comical", "inert", "procedural", "resistant", "vibrant", "geographic", "wistful", "specified", "rightful", "spirited", "unborn", "enjoyable", "regal", "cumbersome", "burned", "frenzied", "gubernatorial", "deteriorating", "haunted", "evasive", "neglected", "anthropological", "inescapable", "clear-cut", "visionary", "bloated", "accumulated", "agrarian", "pained", "dwindling", "heightened", "gray-haired", "distressing", "grinding", "insecure", "archaic", "piercing", "fluent", "leisurely", "giddy", "slimy", "oncoming", "short-lived", "spinal", "wholesome", "unanswered", "illegitimate", "staunch", "two-day", "rumpled", "speedy", "soaked", "rocking", "invaluable", "gallant", "tacit", "finite", "inviting", "sporadic", "powdered", "cheery", "volcanic", "optional", "mischievous", "flowered", "contagious", "automotive", "inflated", "mythic", "analytical", "infrared", "two-week", "binding", "ancestral", "dissatisfied", "upstate", "veritable", "unaccustomed", "oily", "monotonous", "seated", "feeding", "fluorescent", "undue", "impassioned", "picturesque", "vocational", "tranquil", "tumultuous", "rustic", "patterned", "two-story", "pagan", "flash", "playing", "exhilarating", "maiden", "three-dimensional", "mythical", "thriving", "drab", "black-and-white", "honorary", "dingy", "founding", "imperative", "indistinguishable", "lightweight", "avid", "dreamy", "everlasting", "obsessive", "tional", "homogeneous", "inner-city", "changed", "tame", "colorless", "haggard", "implacable", "altered", "unequal", "focal", "perceptual", "literate", "priceless", "diminishing", "harmonious", "dark-haired", "fatty", "squat", "undecided", "banal", "fruitful", "pioneering", "innocuous", "cordial", "rewarding", "unsafe", "maritime", "overcrowded", "timeless", "fledgling", "nostalgic", "abreast", "one-time", "humid", "astronomical", "one-man", "deepening", "blazing", "fleshy", "dishonest", "succeeding", "qualitative", "needless", "rickety", "joyful", "stated", "ambivalent", "hybrid", "six-month", "limiting", "workable", "sleepless", "unpaid", "mundane", "flashy", "stagnant", "bumper", "recurring", "sinful", "immaculate", "synonymous", "measured", "thrilling", "long-standing", "unruly", "bewildering", "unfit", "edgy", "numerical", "sumptuous", "fragmented", "puffy", "elastic", "high-pitched", "momentous", "woven", "unsteady", "unnamed", "cosmetic", "snap", "impenetrable", "floral", "waving", "promotional", "tenuous", "lonesome", "embroidered", "strident", "cherished", "aghast", "fundamentalist", "white-collar", "afloat", "disruptive", "law-enforcement", "gathered", "indefinite", "intervening", "publicized", "geometric", "disciplinary", "descriptive", "wavy", "edible", "disgruntled", "obligatory", "untrue", "amber", "snug", "resolute", "awed", "simplistic", "grandiose", "crippling", "high-speed", "mounting", "glaring", "small-town", "cavernous", "hushed", "wage-price", "demographic", "diseased", "unpublished", "causal", "defenseless", "sheltered", "dormant", "compulsive", "loved", "willful", "truthful", "punitive", "disposable", "ajar", "drowsy", "statutory", "tanned", "proprietary", "informed", "unheard", "decision-making", "transient", "unlawful", "dour", "negligible", "underwater", "optimum", "illusory", "imaginable", "borrowed", "divergent", "looking", "exempt", "contentious", "forbidden", "cowardly", "masked", "crazed", "silken", "parched", "furry", "wandering", "insensitive", "over-all", "elated", "waxed", "veiled", "envious", "insidious", "scrawny", "unwarranted", "lithe", "abrasive", "pretentious", "far-off", "murdered", "deft", "prickly", "musty", "shapeless", "incongruous", "gruesome", "honored", "perceived", "grieving", "unspecified", "dizzying", "privy", "noteworthy", "charred", "median", "fearless", "twisting", "unattractive", "flawless", "welcoming", "flushed", "hardy", "glum", "scenic", "devious", "recurrent", "distasteful", "jubilant", "ballistic", "hilarious", "naughty", "bustling", "discarded", "pristine", "exemplary", "fading", "complacent", "incessant", "engaging", "twentieth-century", "protectionist", "rudimentary", "traumatic", "steamy", "emphatic", "hard-line", "teeming", "generating", "stuffy", "connecting", "stationary", "genteel", "populist", "supple", "hateful", "retrospective", "glazed", "lawful", "arched", "tiresome", "lucid", "reserved", "pivotal", "grimy", "surly", "anti-Soviet", "contrary", "quarterly", "old-time", "residual", "spiral", "decaying", "threatened", "docile", "appreciative", "jovial", "fascist", "worrisome", "red-haired", "undisturbed", "creamy", "well-dressed", "serial", "existential", "mountainous", "pastel", "self-sufficient", "spoken", "express", "tasty", "maroon", "infrequent", "deceased", "full-fledged", "transitional", "leafy", "gravitational", "furtive", "prophetic", "nasal", "unwelcome", "troubling", "immobile", "merciful", "uncontrollable", "impartial", "unfavorable", "attendant", "associated", "high-rise", "vascular", "fateful", "concerted", "rash", "stubby", "paramount", "impulsive", "fraudulent", "drooping", "reciprocal", "usable", "fast-food", "touchy", "astute", "oversized", "mottled", "slack", "fruitless", "unhealthy", "decorated", "shady", "shaped", "fanciful", "quivering", "charismatic", "sordid", "oppressed", "inaccessible", "fastidious", "brazen", "gloved", "crumbling", "underdeveloped", "scarred", "rambling", "incipient", "remedial", "derelict", "incompatible", "fanatical", "smoked", "secondhand", "hypnotic", "failing", "marching", "flattened", "paradoxical", "unskilled", "esthetic", "tolerable", "pungent", "substitute", "soggy", "terse", "tiring", "fictitious", "manageable", "inventive", "haughty", "normative", "premier", "grudging", "vested", "exhausting", "cross-legged", "self-evident", "away", "horrified", "prolific", "incoherent", "quantitative", "full-length", "year-round", "unkind", "provisional", "exterior", "brash", "inconclusive", "landed", "breathtaking", "acrid", "noted", "resultant", "long-time", "resounding", "lovable", "hypocritical", "plush", "foggy", "acknowledged", "idiotic", "tracking", "ceramic", "taxable", "enterprising", "flashing", "wee", "barbaric", "deafening", "orbital", "lurid", "dated", "hated", "buoyant", "mating", "pictorial", "overlapping", "lax", "archetypal", "manic", "limitless", "puzzling", "condescending", "hapless", "meek", "faceless", "uncommitted", "horrid", "greenish", "unorthodox", "unending", "accelerated", "day-care", "undeniable", "bushy", "searing", "fearsome", "unharmed", "divisive", "overpowering", "diving", "telling", "determining", "uptight", "cast", "enlarged", "ebullient", "disagreeable", "insatiable", "grown-up", "demented", "puffing", "inconvenient", "uncontrolled", "inland", "repulsive", "unintelligible", "blue-eyed", "pallid", "nonviolent", "dilapidated", "unyielding", "astounded", "marvellous", "low-cost", "purposeful", "courtly", "predominant", "conversational", "erroneous", "resourceful", "converted", "disconcerting", "oblique", "dreaded", "indicative", "silky", "six-year", "front-page", "biting", "flowering", "sunlit", "licensed", "unspeakable", "adrift", "awash", "identifiable", "girlish", "zealous", "spooky", "uncompromising", "deserving", "driven", "certified", "unlucky", "temperate", "budding", "impractical", "public-relations", "inflexible", "sensory", "pornographic", "outlandish", "resonant", "belligerent", "wan", "leftover", "spotted", "soybean", "easygoing", "vengeful", "proportional", "inaugural", "dank", "screaming", "heterosexual", "sliced", "year-old", "considerate", "thunderous", "distressed", "warring", "assertive", "foreseeable", "psychotic", "intermittent", "anti-Communist", "generalized", "unable", "molten", "excruciating", "illustrious", "voluminous", "offending", "trustworthy", "grating", "laughing", "one-year", "industrious", "uninterrupted", "dashing", "speaking", "metabolic", "flattering", "one-sided", "ineffectual", "primal", "digestive", "taped", "floppy", "jaunty", "practiced", "walled", "hospitable", "dutiful", "melodramatic", "intestinal", "cluttered", "conclusive", "complementary", "unprotected", "buzzing", "attributable", "tasteless", "forthright", "wily", "hourly", "delayed", "sweating", "affable", "studied", "chubby", "thyroid", "chilled", "conducive", "childless", "faltering", "authorized", "buried", "land-based", "observable", "hurried", "curving", "dismayed", "pernicious", "upturned", "believable", "questioning", "syndicated", "pharmaceutical", "high-risk", "resigned", "discrete", "likable", "imprisoned", "cocky", "outdated", "autocratic", "ablaze", "askew", "grammatical", "wintry", "incidental", "matter-of-fact", "disputed", "exorbitant", "low-level", "sodden", "skeletal", "disproportionate", "soiled", "cellular", "ephemeral", "perfunctory", "inconsequential", "flourishing", "intentional", "two-way", "elemental", "whispered", "four-day", "stinking", "informative", "tenacious", "outlying", "virulent", "horrendous", "horrifying", "burnt", "longstanding", "senile", "unmoving", "deprived", "interpersonal", "intimidating", "posh", "dainty", "portly", "nondescript", "inquisitive", "exiled", "capricious", "scandalous", "severed", "debilitating", "widowed", "horny", "sallow", "up-to-date", "self-contained", "carefree", "boisterous", "coordinated", "anti-Semitic", "superfluous", "metric", "expressed", "enchanting", "disorderly", "paternal", "wanton", "frightful", "free-lance", "extremist", "lined", "scornful", "inseparable", "obese", "ponderous", "imperious", "indistinct", "adrenal", "belated", "rippling", "valiant", "livid", "mystic", "cracking", "subterranean", "invading", "rusted", "esoteric", "red-faced", "segregated", "lanky", "departmental", "allergic", "predatory", "enforced", "anti-inflation", "implied", "flagrant", "best-selling", "haphazard", "trailing", "seedy", "real-life", "unannounced", "utilitarian", "roving", "despairing", "immature", "simulated", "embattled", "poisoned", "patronizing", "baffled", "centralized", "weathered", "weeping", "mutilated", "painstaking", "tax-exempt", "socioeconomic", "tearful", "stringy", "projecting", "low-key", "single-minded", "shadowed", "vehement", "darn", "fluffy", "apocalyptic", "completed", "intelligible", "furnished", "elongated", "worsening", "eclectic", "bacterial", "earthy", "sagging", "wide-ranging", "face-to-face", "settled", "dogmatic", "anti", "secluded", "baffling", "coy", "pathological", "echoing", "bridal", "autobiographical", "instantaneous", "ornamental", "satirical", "voluptuous", "movable", "kinetic", "merciless", "tireless", "three-month", "unconcerned", "impromptu", "turning", "follow-up", "retaliatory", "arcane", "waterproof", "justifiable", "glassy", "unearthly", "shuttered", "inverted", "bogus", "petrified", "simmering", "guided", "gritty", "widening", "generic", "pretrial", "returning", "boundless", "swirling", "northeastern", "swell", "tive", "minuscule", "estranged", "upbeat", "explanatory", "repetitive", "repressed", "vindictive", "shrinking", "canny", "little-known", "hydraulic", "unrelenting", "looming", "supersonic", "justified", "lukewarm", "unmoved", "blurred", "double-breasted", "sanitary", "unforgettable", "diligent", "unconventional", "ashen", "wordless", "stainless", "inlaid", "irritated", "spotless", "pudgy", "yellowish", "lateral", "adopted", "lowly", "obnoxious", "utopian", "called", "unimaginable", "hairless", "foregoing", "opulent", "garish", "nocturnal", "rousing", "unexplained", "cosmopolitan", "milky", "medium-sized", "all-night", "bloodshot", "rueful", "hard-working", "crafty", "familial", "iced", "violet", "arctic", "ceaseless", "exasperated", "warped", "aquatic", "gruff", "terrestrial", "contrasting", "egalitarian", "needful", "spent", "untrained", "escalating", "liberated", "long-haired", "abortive", "syntactic", "consummate", "lumpy", "spoiled", "ten-year-old", "talkative", "whimsical", "weighty", "audio", "inflammatory", "deplorable", "spicy", "corrugated", "morose", "sobering", "southwestern", "three-year-old", "methodical", "prehistoric", "carpeted", "smelly", "processed", "overheated", "interstellar", "agile", "approximate", "sadistic", "living-room", "irate", "smashed", "frontal", "venereal", "indiscriminate", "suggested", "cultured", "creeping", "recognized", "toothless", "handmade", "mellow", "fetal", "disinterested", "gratifying", "trusting", "small-scale", "intravenous", "crashing", "exhaustive", "afire", "clammy", "sleazy", "florid", "heartless", "transcendent", "restored", "demonic", "abusive", "avowed", "shrunken", "objectionable", "tailored", "arms-control", "listless", "polluted", "palatable", "funded", "elective", "entrenched", "classy", "operatic", "daunting", "roaring", "preferential", "languid", "three-hour", "virile", "inspiring", "enhanced", "scrupulous", "bottomless", "ginger", "wispy", "advantageous", "rapt", "umbilical", "uphill", "ordered", "enraged", "detrimental", "curt", "exalted", "hard-pressed", "intangible", "fussy", "forgiving", "facile", "populous", "condemned", "mashed", "hard-boiled", "introductory", "rowdy", "switching", "perplexing", "spilled", "southeastern", "undulating", "fractured", "inherited", "inscrutable", "measurable", "stunted", "hormonal", "stylized", "hierarchical", "air-conditioned", "aimless", "subsidized", "paying", "symmetrical", "nomadic", "cloudless", "reigning", "thatched", "perceptible", "anesthetic", "anti-American", "miscellaneous", "homesick", "preparatory", "seven-year", "big-city", "decadent", "searching", "all-important", "inanimate", "senatorial", "diminutive", "soft-spoken", "contingent", "dusky", "smashing", "precipitous", "bulging", "standardized", "biographical", "restive", "indecent", "upper-class", "ecumenical", "interchangeable", "lumbering", "fascinated", "untidy", "indulgent", "leaden", "wanted", "endemic", "doomed", "wanting", "receiving", "engaged", "unparalleled", "abbreviated", "malevolent", "wishful", "carnival", "world-wide", "protruding", "resplendent", "stranded", "structured", "biased", "frosty", "northwestern", "viral", "mindful", "paved", "indeterminate", "painless", "second-floor", "geological", "permissive", "downhill", "unsuspecting", "expectant", "fabled", "jittery", "windowless", "evocative", "unsolved", "disoriented", "monastic", "soluble", "misshapen", "antiquated", "repugnant", "non-Communist", "retiring", "shaded", "combative", "high-powered", "resilient", "antagonistic", "starched", "vice-presidential", "speckled", "lopsided", "bluish", "late-night", "prim", "unrestrained", "almighty", "tyrannical", "unkempt", "menstrual", "bleached", "overgrown", "idiosyncratic", "shoddy", "hallowed", "trying", "halting", "princely", "drugged", "gratuitous", "descending", "fatherly", "avant-garde", "laborious", "pinched", "disguised", "caustic", "bespectacled", "handwritten", "goodly", "itinerant", "cryptic", "undisclosed", "affordable", "outmoded", "expedient", "moody", "tepid", "firsthand", "digging", "elitist", "observed", "chartered", "slain", "five-day", "unimpressed", "tactful", "idyllic", "prostrate", "ramshackle", "expert", "deferred", "undistinguished", "prized", "transatlantic", "crystalline", "tacky", "haunting", "nutritious", "bereft", "turquoise", "time-consuming", "sanguine", "culinary", "fraught", "precocious", "assigned", "scrambled", "advisable", "nationalistic", "long-awaited", "unwrapped", "unchallenged", "circumstantial", "pleasurable", "compressed", "humanistic", "unforeseen", "diversified", "frenetic", "disapproving", "proletarian", "conspiratorial", "featureless", "going", "commendable", "no-nonsense", "chipped", "surreal", "salient", "pissed", "insurmountable", "backstage", "contented", "indebted", "adoring", "one-room", "prewar", "potted", "accelerating", "thorny", "possessive", "abiding", "ever-increasing", "bloodless", "high-technology", "counterproductive", "attracting", "entrepreneurial", "cooling", "unoccupied", "craggy", "leathery", "degenerate", "additive", "weakened", "quilted", "untold", "incandescent", "intractable", "middle-income", "abject", "self-made", "gaseous", "anal", "displaced", "unabashed", "immutable", "fluttering", "ten-year", "bearable", "stamped", "darkening", "beefy", "petite", "charging", "high-quality", "left-hand", "age-old", "checkered", "stupendous", "priestly", "loath", "endearing", "exacting", "correctional", "freak", "sneaky", "disgraceful", "unholy", "oriental", "wayward", "societal", "hard-core", "bilingual", "flipping", "staid", "paramilitary", "heartfelt", "shapely", "kosher", "heedless", "incurable", "controlling", "in-house", "choral", "manicured", "cardinal", "inconspicuous", "steely", "vanishing", "misplaced", "centre-fire", "enchanted", "unfounded", "wrecked", "womanly", "delirious", "deposed", "panicky", "differential", "tawny", "articulated", "coded", "wide-open", "unregulated", "lenient", "feathered", "simplified", "beguiling", "sectarian", "producing", "tiled", "inorganic", "frosted", "lusty", "scented", "rotating", "grievous", "dissimilar", "salaried", "unequivocal", "strangled", "grubby", "alluring", "downcast", "restraining", "unjustified", "contaminated", "lacy", "cinematic", "second-class", "splintered", "adorable", "derisive", "state-owned", "requisite", "fleeing", "uncomplicated", "motherly", "inter", "high-heeled", "climatic", "republican", "unqualified", "leveraged", "intercontinental", "uncharacteristic", "compositional", "unwritten", "patriarchal", "brusque", "unresponsive", "replete", "corrective", "reflected", "scraping", "doctoral", "premium", "deductible", "alternating", "amorous", "overjoyed", "recalcitrant", "presumptuous", "vaulted", "declared", "inexorable", "groggy", "diminished", "restful", "retroactive", "presumed", "monolithic", "curtained", "tortured", "ground", "trendy", "brassy", "prosaic", "inactive", "chaste", "bumpy", "aggrieved", "corny", "centrist", "trapped", "noxious", "jerky", "concomitant", "withholding", "poorly", "stolid", "unguarded", "methodological", "primordial", "retreating", "telescopic", "sidelong", "off-duty", "pleated", "dissenting", "agreed", "double-action", "optimal", "plaintive", "banned", "kindred", "quintessential", "impervious", "jumping", "disenchanted", "observant", "congested", "second-rate", "reasoned", "extrinsic", "infantile", "transitory", "coveted", "small-time", "doctrinal", "incomparable", "jaded", "special-interest", "sociable", "shameless", "coloured", "ascending", "fraternal", "queasy", "wont", "exhilarated", "salted", "disquieting", "listed", "unchanging", "nine-year-old", "unrestricted", "uppermost", "reputable", "dummy", "skimpy", "crusty", "corrosive", "bubbling", "decrepit", "unsuitable", "snarling", "destitute", "illuminating", "systemic", "material", "unwashed", "rushing", "dialectical", "jeweled", "attached", "liberating", "judicious", "errant", "vanished", "worn-out", "erstwhile", "uninformed", "twelve-year-old", "longterm", "petulant", "twin", "self-righteous", "afflicted", "snappy", "tantamount", "sworn", "unethical", "drained", "hydroelectric", "perplexed", "logistical", "concentric", "unifying", "lunatic", "invincible", "diffident", "inexhaustible", "discouraging", "dreamlike", "artful", "rolled", "suppressed", "secretarial", "smoldering", "redundant", "forensic", "million-dollar", "self-styled", "earned", "weightless", "signed", "compensatory", "glacial", "unmanned", "stalwart", "funky", "intensified", "uninterested", "submerged", "urbane", "glib", "ascetic", "contractual", "warlike", "high-priced", "diagonal", "cylindrical", "gargantuan", "illuminated", "unconditional", "hulking", "supplementary", "dictatorial", "puny", "sedate", "moonlit", "eight-year-old", "gullible", "counterfeit", "alienated", "spinning", "analytic", "nimble", "adaptive", "individualistic", "numbered", "blissful", "insolent", "supplemental", "delectable", "inordinate", "unbalanced", "tormented", "unchecked", "aspiring", "punishing", "self-serving", "crossed", "discretionary", "box-office", "snow-covered", "improvised", "squalid", "orphaned", "grizzled", "unsmiling", "disappearing", "affiliated", "readable", "blocking", "bullish", "contending", "burned-out", "bloodied", "subsidiary", "complimentary", "unclean", "scanty", "uprooted", "farfetched", "solicitous", "regulated", "threadbare", "choppy", "ever-present", "negligent", "nonstop", "one-day", "wild-eyed", "infuriating", "vivacious", "abominable", "wrought", "inaudible", "braided", "transcendental", "desultory", "climactic", "appellate", "interlocking", "submissive", "unmatched", "dapper", "demeaning", "adaptable", "well-meaning", "lustrous", "tax-free", "ungrateful", "gentlemanly", "missed", "loathsome", "incalculable", "blistering", "amenable", "tremulous", "massed", "nonpartisan", "unsettled", "three-story", "succulent", "trite", "masterful", "reticent", "unsettling", "proverbial", "strapping", "spurious", "invulnerable", "paltry", "embryonic", "repeating", "neural", "sultry", "metaphorical", "foreign-policy", "linked", "pubic", "beaming", "ministerial", "phantom", "quizzical", "hilly", "cold-blooded", "gregarious", "three-piece", "untroubled", "bisexual", "pensive", "unpretentious", "exploratory", "unscathed", "irrepressible", "pelvic", "newfound", "starry", "corned", "overworked", "illogical", "unfaithful", "interrelated", "saintly", "overcast", "connected", "ungainly", "organizing", "carnal", "philosophic", "nationalized", "fickle", "ultraviolet", "crass", "undeveloped", "unprofitable", "sheepish", "archaeological", "out-of-town", "balmy", "spongy", "infallible", "callous", "scathing", "rheumatic", "audacious", "participating", "swarthy", "hand-held", "comatose", "modernist", "stellar", "antinuclear", "delinquent", "time-honored", "presiding", "relaxing", "high-pressure", "impetuous", "hypodermic", "fringed", "favourite", "unscrupulous", "inspirational", "mystified", "wobbly", "intrepid", "deferential", "burdensome", "stored", "supervisory", "seventeenth-century", "six-day", "interdependent", "updated", "all-powerful", "unitary", "stand-up", "laconic", "penniless", "steadfast", "dogged", "scholastic", "convertible", "mingled", "sorrowful", "symptomatic", "stylistic", "well-intentioned", "consuming", "sketchy", "weakening", "generative", "atrocious", "first-quarter", "irrevocable", "charged", "stoned", "dividing", "apathetic", "debatable", "uncomprehending", "overhanging", "galloping", "kinky", "uncritical", "suave", "undisputed", "spiky", "inarticulate", "extracurricular", "guttural", "impressed", "departing", "yellowed", "discontented", "adroit", "high-fiber", "second-hand", "blinking", "formless", "unsavory", "new-found", "withered", "collected", "menial", "unobserved", "flabby", "afterward", "vanquished", "stained-glass", "hour-long", "bittersweet", "invalid", "incriminating", "commensurate", "all-American", "assumed", "tried", "cursory", "absorbing", "clearing", "confirmed", "stressful", "depleted", "eight-year", "participatory", "stripped", "concave", "regrettable", "fortified", "effortless", "regressive", "irreverent", "collegiate", "defunct", "grainy", "inhospitable", "gripping", "grizzly", "restoring", "arterial", "busted", "indomitable", "demure", "rabid", "headlong", "blue-green", "bound", "breezy", "materialistic", "uneducated", "scruffy", "cohesive", "full-blown", "cranky", "motivated", "mauve", "hardworking", "melodic", "genital", "decorous", "comely", "rife", "purported", "hurtful", "six-foot", "macabre", "odious", "convulsive", "well-trained", "heterogeneous", "curled", "pearly", "spindly", "latter-day", "innermost", "clipped", "checked", "masterly", "laughable", "naturalistic", "tinkling", "impudent", "fitful", "illustrated", "speeding", "roasted", "in-depth", "helluva", "vigilant", "empty-handed", "forged", "wrought-iron", "disgraced", "agonized", "infirm", "preserving", "tasteful", "onerous", "shredded", "impregnable", "slanted", "tainted", "opened", "first-time", "machine-gun", "bottled", "seismic", "fetid", "saturated", "insubstantial", "full-page", "aromatic", "stingy", "promiscuous", "unlit", "regimental", "spellbound", "streamlined", "bereaved", "ruffled", "creepy", "treasured", "ensconced", "one-party", "well-educated", "pert", "mercantile", "all-purpose", "voracious", "tortuous", "despised", "unadorned", "offhand", "qualifying", "manipulative", "indelible", "well-established", "revolting", "ethereal", "roasting", "prohibitive", "domed", "whipped", "overstuffed", "garrulous", "skittish", "revived", "heartening", "jumpy", "grilled", "melted", "unfocused", "spectral", "unproductive", "top-level", "life-size", "three-way", "negotiable", "disloyal", "turn-of-the-century", "four-hour", "unopened", "devilish", "amorphous", "antiseptic", "sharpened", "primeval", "unrecognizable", "ineligible", "expendable", "deathly", "auspicious", "insoluble", "inimical", "unquestioned", "far-flung", "medicinal", "deep-seated", "formative", "iridescent", "fragmentary", "distinguishable", "auburn", "closed-circuit", "emeritus", "third-floor", "hazel", "tumbling", "departed", "obstinate", "portentous", "quixotic", "scorched", "adjustable", "winged", "intrusive", "taxing", "high-ceilinged", "barbarous", "decreasing", "sleeveless", "unattended", "tight-lipped", "concluding", "unobtrusive", "starved", "quirky", "big-time", "sooty", "copious", "stalled", "scriptural", "unconvincing", "earthen", "throaty", "august", "extant", "sexist", "exultant", "cancerous", "psychedelic", "yielding", "matched", "chunky", "unfathomable", "concise", "admitting", "knitted", "projective", "euphoric", "garbled", "divisional", "despondent", "recommended", "passable", "vegetarian", "indefatigable", "irreparable", "feisty", "untenable", "contrite", "angelic", "reputed", "untimely", "dejected", "appreciable", "remembered", "hellish", "rear-view", "open-air", "ill-fated", "nonpolitical", "factional", "separatist", "contributing", "post-war", "uneventful", "metaphoric", "unsound", "unwitting", "venomous", "harried", "engraved", "collapsing", "reformist", "thematic", "inclusive", "cheering", "springy", "obliging", "contemplative", "unbridled", "state-run", "reflex", "allegorical", "geopolitical", "disembodied", "issuing", "bountiful", "alright", "overbearing", "muddled", "congenital", "distinguishing", "absorbed", "tart", "french", "autumnal", "verifiable", "grueling", "crackling", "aft", "punishable", "freckled", "indestructible", "imprecise", "hard-nosed", "thoughtless", "through", "proficient", "pent-up", "never-ending", "hunted", "defensible", "arresting", "across-the-board", "spotty", "orchestral", "undefined", "stacked", "implausible", "antitank", "unwary", "inflamed", "sacrificial", "oil-producing", "leaky", "mint", "chronological", "conquering", "jumbo", "three-week", "addictive", "uninhibited", "substandard", "contracting", "degenerative", "triumphal", "flowery", "cardiovascular", "shaken", "undefeated", "unassuming", "luscious", "unperturbed", "gleeful", "sentencing", "brawny", "perfumed", "mild-mannered", "healthful", "left-handed", "rancid", "well-defined", "unmanageable", "drowning", "clinging", "anachronistic", "revered", "enriched", "capitalistic", "good-by", "invigorating", "practicing", "unsold", "long-legged", "unruffled", "aboriginal", "inane", "bedraggled", "early-morning", "run-down", "straight-backed", "reverent", "acquired", "bestselling", "top-secret", "woolly", "foolhardy", "sticking", "blue-black", "impassable", "overcome", "coiled", "front-line", "tinted", "acquisitive", "slatted", "octagonal", "receding", "investing", "doctrinaire", "all-white", "caring", "prejudiced", "slow-moving", "circulating", "science-fiction", "shortsighted", "disaffected", "lawless", "chastened", "lewd", "rubbery", "foaming", "unsympathetic", "ladylike", "betrayed", "neurological", "shouting", "good-sized", "electrostatic", "untoward", "flabbergasted", "citywide", "unanticipated", "knotted", "whitewashed", "year-end", "enticing", "migratory", "multicolored", "hashish", "ascorbic", "topless", "heathen", "spherical", "filmy", "deviant", "centennial", "proportionate", "instructional", "contrived", "savvy", "over-the-counter", "fast-moving", "measuring", "uptown", "compliant", "favourable", "unforgivable", "undamaged", "psychoanalytic", "gebling", "bubbly", "ready-made", "caged", "ostentatious", "superhuman", "busing", "cream-colored", "self-destructive", "ostensible", "cobbled", "whirling", "released", "showy", "baleful", "red-hot", "named", "monogamous", "fallow", "disdainful", "cyclical", "long-running", "pitiless", "diffuse", "omnipresent", "mossy", "cutting", "astounding", "lyric", "dark-blue", "unsophisticated", "indigent", "coincidental", "imperceptible", "veterinary", "coercive", "multilateral", "ageless", "law-abiding", "functioning", "beneficent", "crawling", "overturned", "steamed", "comprehensible", "oil-rich", "undetected", "ribbed", "nautical", "textured", "fast-growing", "nauseous", "vaunted", "paralyzed", "maimed", "short-range", "impure", "unintended", "practicable", "intermediate-range", "unfulfilled", "behind-the-scenes", "backhand", "voluble", "goofy", "apolitical", "contraceptive", "waning", "blasted", "sundry", "profane", "binary", "rock-and-roll", "ruinous", "open-ended", "next-door", "withering", "conical", "flustered", "decided", "able-bodied", "round-trip", "decreased", "half-empty", "sponsored", "riotous", "stereotyped", "five-minute", "irreplaceable", "harrowing", "uninteresting", "salutary", "frugal", "disjointed", "cupped", "freshwater", "shaven", "ravenous", "bulbous", "stepped-up", "swaying", "two-room", "valued", "planted", "bright-eyed", "unreadable", "trucking", "infatuated", "dysfunctional", "pinkish", "futuristic", "airtight", "unseemly", "vaginal", "sizzling", "mercurial", "conic", "unfettered", "undisciplined", "unrecognized", "well-publicized", "income-tax", "self-appointed", "ice-cold", "biochemical", "contemptible", "barefooted", "droll", "mythological", "tree-lined", "rearing", "luxuriant", "heartbreaking", "tufted", "well-organized", "selfless", "world-class", "unwieldy", "contested", "rasping", "downright", "ingratiating", "self-proclaimed", "parasitic", "graying", "reformed", "cautionary", "untested", "beaded", "maniacal", "eucalyptus", "pliable", "air-conditioning", "moot", "traceable", "anti-abortion", "antisocial", "reprehensible", "self-imposed", "yellowing", "teasing", "porous", "ersatz", "unwavering", "untouchable", "underprivileged", "auditory", "escaping", "subservient", "unspoiled", "anterior", "fatuous", "lordly", "infernal", "bouncing", "taboo", "orthopedic", "spiteful", "surging", "nuts", "esteemed", "outlawed", "pushy", "displeased", "self-confident", "attainable", "bowed", "cast-iron", "despicable", "unconvinced", "famished", "coed", "bygone", "nonaligned", "sectional", "typed", "squeaky", "disparaging", "cut-rate", "heart-shaped", "offbeat", "velvety", "well-worn", "upsetting", "leery", "long-lost", "horse-drawn", "puritanical", "payable", "fertilized", "predicted", "allowable", "peaceable", "soundless", "marshy", "discordant", "intoxicating", "concurrent", "uncut", "tantalizing", "shitty", "pedagogical", "accursed", "two-man", "connective", "hawkish", "ripped", "cleared", "double-digit", "unencumbered", "yawning", "manifold", "stopped", "untreated", "subliminal", "grayish", "gory", "upper-middle-class", "avenging", "self-fulfilling", "equatorial", "saucy", "barred", "arch", "midwestern", "blue-gray", "tarnished", "leafless", "incisive", "unearned", "botanical", "feline", "extraneous", "prep", "intransigent", "change-minimizing", "insurgent", "acrimonious", "thermonuclear", "blue-chip", "crummy", "acoustic", "oversize", "fated", "galactic", "cantankerous", "ill-advised", "detectable", "lower-class", "sacrosanct", "palatial", "conditional", "insulated", "step-by-step", "nebulous", "two-dimensional", "well-heeled", "bronchial", "subatomic", "semifinal", "first-year", "dark-eyed", "tinny", "attacking", "indecisive", "anatomical", "brotherly", "blooming", "sinuous", "meditative", "socalled", "rheumatoid", "received", "bleary", "half-naked", "leaded", "woody", "averse", "shuddering", "door-to-door", "heretical", "suspect", "untapped", "ravaged", "decentralized", "rutted", "ineffable", "intolerant", "mechanized", "fortuitous", "equestrian", "seven-year-old", "darting", "consoling", "modern-day", "ground-floor", "emblematic", "lurking", "two-year-old", "purplish", "disorganized", "vaudeville", "circulatory", "eight-hour", "presentable", "anarchic", "unsatisfied", "labored", "maudlin", "trampled", "gibberish", "unaccountable", "sedentary", "heavy-duty", "thrilled", "tutoring", "self-centered", "do-it-yourself", "inquiring", "uncaring", "disillusioned", "bloodstained", "surface-to-air", "consular", "subconscious", "four-year-old", "collaborative", "terraced", "figurative", "sinewy", "horn-rimmed", "impertinent", "hit-and-run", "standby", "medium-size", "peremptory", "incremental", "first-aid", "dyed", "centrifugal", "omnipotent", "lascivious", "two-month", "unionized", "discredited", "mass-produced", "feathery", "self-indulgent", "liturgical", "enviable", "fifteen-year-old", "buxom", "abashed", "urinary", "newsworthy", "flailing", "beastly", "undiscovered", "strong-willed", "prenatal", "brownish", "announced", "flaky", "washed", "nightmarish", "broad-shouldered", "short-sleeved", "two-bit", "self-assured", "whitish", "suffocating", "black-haired", "full-size", "self-help", "created", "uninhabited", "smokeless", "no-fault", "unfashionable", "mushy", "forested", "adhesive", "creased", "insufferable", "down-to-earth", "trifling", "landless", "disreputable", "self-effacing", "sporty", "confined", "adoptive", "monogrammed", "motley", "duplicate", "silver-haired", "rejected", "undifferentiated", "blasphemous", "institutionalized", "blue-and-white", "hip", "winsome", "button-down", "discerning", "abused", "clean-cut", "bracing", "self-supporting", "unsupported", "premarital", "flattered", "studious", "repetitious", "marketable", "anemic", "meaty", "airless", "unhurried", "galvanized", "feal", "peace-keeping", "rapacious", "bulletproof", "well-placed", "helmeted", "packaged", "court-ordered", "aggravated", "gastrointestinal", "hand-to-hand", "sixteen-year-old", "fretful", "fourth-quarter", "conquered", "satiric", "nutty", "befuddled", "humorless", "pitched", "burnished", "mirrored", "fishy", "fluted", "conditioned", "military-industrial", "one-story", "barbarian", "branching", "dynastic", "unthinking", "unconscionable", "hunched", "post-World", "capital", "putative", "incendiary", "shaving", "topical", "self-satisfied", "farcical", "narcissistic", "kneeling", "born-again", "old-line", "amateurish", "ill-fitting", "scaly", "unpainted", "eroding"] \ No newline at end of file diff --git a/data/adverbs.json b/data/adverbs.json new file mode 100644 index 0000000..241afa6 --- /dev/null +++ b/data/adverbs.json @@ -0,0 +1,328 @@ +[ + "abnormally", + "absentmindedly", + "accidentally", + "acidly", + "actually", + "adventurously", + "afterwards", + "almost", + "always", + "angrily", + "annually", + "anxiously", + "arrogantly", + "awkwardly", + "badly", + "bashfully", + "beautifully", + "bitterly", + "bleakly", + "blindly", + "blissfully", + "boastfully", + "boldly", + "bravely", + "briefly", + "brightly", + "briskly", + "broadly", + "busily", + "calmly", + "carefully", + "carelessly", + "cautiously", + "certainly", + "cheerfully", + "clearly", + "cleverly", + "closely", + "coaxingly", + "colorfully", + "commonly", + "continually", + "coolly", + "correctly", + "courageously", + "crossly", + "cruelly", + "curiously", + "daily", + "daintily", + "dearly", + "deceivingly", + "deeply", + "defiantly", + "deliberately", + "delightfully", + "diligently", + "dimly", + "doubtfully", + "dreamily", + "easily", + "elegantly", + "energetically", + "enormously", + "enthusiastically", + "equally", + "especially", + "even", + "evenly", + "eventually", + "exactly", + "excitedly", + "extremely", + "fairly", + "faithfully", + "famously", + "far", + "fast", + "fatally", + "ferociously", + "fervently", + "fiercely", + "fondly", + "foolishly", + "fortunately", + "frankly", + "frantically", + "freely", + "frenetically", + "frightfully", + "fully", + "furiously", + "generally", + "generously", + "gently", + "gladly", + "gleefully", + "gracefully", + "gratefully", + "greatly", + "greedily", + "happily", + "hastily", + "healthily", + "heavily", + "helpfully", + "helplessly", + "highly", + "honestly", + "hopelessly", + "hourly", + "hungrily", + "immediately", + "innocently", + "inquisitively", + "instantly", + "intensely", + "intently", + "interestingly", + "inwardly", + "irritably", + "jaggedly", + "jealously", + "joshingly", + "jovially", + "joyfully", + "joyously", + "jubilantly", + "judgementally", + "justly", + "keenly", + "kiddingly", + "kindheartedly", + "kindly", + "kissingly", + "knavishly", + "knottily", + "knowingly", + "knowledgeably", + "kookily", + "lazily", + "less", + "lightly", + "likely", + "limply", + "lively", + "loftily", + "longingly", + "loosely", + "loudly", + "lovingly", + "loyally", + "madly", + "majestically", + "meaningfully", + "mechanically", + "merrily", + "miserably", + "mockingly", + "monthly", + "more", + "mortally", + "mostly", + "mysteriously", + "naturally", + "nearly", + "neatly", + "needily", + "nervously", + "never", + "nicely", + "noisily", + "not", + "obediently", + "obnoxiously", + "oddly", + "offensively", + "officially", + "often", + "only", + "openly", + "optimistically", + "overconfidently", + "owlishly", + "painfully", + "partially", + "patiently", + "perfectly", + "physically", + "playfully", + "politely", + "poorly", + "positively", + "potentially", + "powerfully", + "promptly", + "properly", + "punctually", + "quaintly", + "quarrelsomely", + "queasily", + "queerly", + "questionably", + "questioningly", + "quicker", + "quickly", + "quietly", + "quirkily", + "quizzically", + "rapidly", + "rarely", + "readily", + "really", + "reassuringly", + "recklessly", + "regularly", + "reluctantly", + "repeatedly", + "reproachfully", + "restfully", + "righteously", + "rightfully", + "rigidly", + "roughly", + "rudely", + "sadly", + "safely", + "scarcely", + "scarily", + "searchingly", + "sedately", + "seemingly", + "seldom", + "selfishly", + "separately", + "seriously", + "shakily", + "sharply", + "sheepishly", + "shrilly", + "shyly", + "silently", + "sleepily", + "slowly", + "smoothly", + "softly", + "solemnly", + "solidly", + "sometimes", + "soon", + "speedily", + "stealthily", + "sternly", + "strictly", + "successfully", + "suddenly", + "surprisingly", + "suspiciously", + "sweetly", + "swiftly", + "sympathetically", + "tenderly", + "tensely", + "terribly", + "thankfully", + "thoroughly", + "thoughtfully", + "tightly", + "tomorrow", + "too", + "tremendously", + "triumphantly", + "truly", + "truthfully", + "ultimately", + "unabashedly", + "unaccountably", + "unbearably", + "unethically", + "unexpectedly", + "unfortunately", + "unimpressively", + "unnaturally", + "unnecessarily", + "upbeat", + "upliftingly", + "upright", + "upside-down", + "upward", + "upwardly", + "urgently", + "usefully", + "uselessly", + "usually", + "utterly", + "vacantly", + "vaguely", + "vainly", + "valiantly", + "vastly", + "verbally", + "very", + "viciously", + "victoriously", + "violently", + "vivaciously", + "voluntarily", + "warmly", + "weakly", + "wearily", + "well", + "wetly", + "wholly", + "wildly", + "willfully", + "wisely", + "woefully", + "wonderfully", + "worriedly", + "wrongly", + "yawningly", + "yearly", + "yearningly", + "yesterday", + "yieldingly", + "youthfully" +] \ No newline at end of file diff --git a/data/colors.json b/data/colors.json new file mode 100644 index 0000000..4ac74f1 --- /dev/null +++ b/data/colors.json @@ -0,0 +1,54 @@ +[ + "amaranth", + "amber", + "amethyst", + "apricot", + "aqua", + "aquamarine", + "azure", + "beige", + "black", + "blue", + "blush", + "bronze", + "brown", + "chocolate", + "coffee", + "copper", + "coral", + "crimson", + "cyan", + "emerald", + "fuchsia", + "gold", + "gray", + "green", + "harlequin", + "indigo", + "ivory", + "jade", + "lavender", + "lime", + "magenta", + "maroon", + "moccasin", + "olive", + "orange", + "peach", + "pink", + "plum", + "purple", + "red", + "rose", + "salmon", + "sapphire", + "scarlet", + "silver", + "tan", + "teal", + "tomato", + "turquoise", + "violet", + "white", + "yellow" +] \ No newline at end of file diff --git a/data/encouraging_words.json b/data/encouraging_words.json new file mode 100644 index 0000000..d76d609 --- /dev/null +++ b/data/encouraging_words.json @@ -0,0 +1,50 @@ +[ + "amazing", + "awesome", + "beautiful", + "bravo", + "brilliant", + "breathtaking", + "congratulations", + "cool", + "dazzling", + "delightful", + "electrifying", + "elegant", + "enchanting", + "excellent", + "exciting", + "fabulous", + "fantastic", + "fun", + "genius", + "groundbreaking", + "heavenly", + "impressive", + "innovative", + "inventive", + "kind", + "legendary", + "lifechanging", + "lovely", + "magical", + "marvelous", + "masterful", + "miraculous", + "original", + "perfect", + "phenomenal", + "powerful", + "remarkable", + "rejuvenating", + "resounding", + "skillful", + "stupendous", + "stunning", + "sweet", + "terrific", + "thoughtful", + "thrilling", + "wonderful", + "wondrous" + ] \ No newline at end of file diff --git a/data/infinite_verbs.json b/data/infinite_verbs.json new file mode 100644 index 0000000..d9e39ff --- /dev/null +++ b/data/infinite_verbs.json @@ -0,0 +1,635 @@ +[ + "accept", + "add", + "admire", + "admit", + "advise", + "afford", + "agree", + "alert", + "allow", + "amuse", + "analyse", + "announce", + "annoy", + "answer", + "apologise", + "appear", + "applaud", + "appreciate", + "approve", + "argue", + "arrange", + "arrest", + "arrive", + "ask", + "attach", + "attack", + "attempt", + "attend", + "attract", + "avoid", + "back", + "bake", + "balance", + "ban", + "bang", + "bare", + "bat", + "bathe", + "battle", + "beam", + "beg", + "behave", + "belong", + "bleach", + "bless", + "blind", + "blink", + "blot", + "blush", + "boast", + "boil", + "bolt", + "bomb", + "book", + "bore", + "borrow", + "bounce", + "bow", + "box", + "brake", + "branch", + "breathe", + "bruise", + "brush", + "bubble", + "bump", + "burn", + "bury", + "buzz", + "calculate", + "call", + "camp", + "care", + "carry", + "carve", + "cause", + "challenge", + "change", + "charge", + "chase", + "cheat", + "check", + "cheer", + "chew", + "choke", + "chop", + "claim", + "clap", + "clean", + "clear", + "clip", + "close", + "coach", + "coil", + "collect", + "colour", + "comb", + "command", + "communicate", + "compare", + "compete", + "complain", + "complete", + "concentrate", + "concern", + "confess", + "confuse", + "connect", + "consider", + "consist", + "contain", + "continue", + "copy", + "correct", + "cough", + "count", + "cover", + "crack", + "crash", + "crawl", + "cross", + "crush", + "cry", + "cure", + "curl", + "curve", + "cycle", + "dam", + "damage", + "dance", + "dare", + "decay", + "deceive", + "decide", + "decorate", + "delay", + "delight", + "deliver", + "depend", + "describe", + "desert", + "deserve", + "destroy", + "detect", + "develop", + "disagree", + "disappear", + "disapprove", + "disarm", + "discover", + "dislike", + "divide", + "double", + "doubt", + "drag", + "drain", + "dream", + "dress", + "drip", + "drop", + "drown", + "drum", + "dry", + "dust", + "earn", + "educate", + "embarrass", + "employ", + "empty", + "encourage", + "end", + "enjoy", + "enter", + "entertain", + "escape", + "examine", + "excite", + "excuse", + "exercise", + "exist", + "expand", + "expect", + "explain", + "explode", + "extend", + "face", + "fade", + "fail", + "fancy", + "fasten", + "fax", + "fear", + "fence", + "fetch", + "file", + "fill", + "film", + "fire", + "fit", + "fix", + "flap", + "flash", + "float", + "flood", + "flow", + "flower", + "fold", + "follow", + "fool", + "force", + "form", + "found", + "frame", + "frighten", + "fry", + "gather", + "gaze", + "glow", + "glue", + "grab", + "grate", + "grease", + "greet", + "grin", + "grip", + "groan", + "guarantee", + "guard", + "guess", + "guide", + "hammer", + "hand", + "handle", + "hang", + "happen", + "harass", + "harm", + "hate", + "haunt", + "head", + "heal", + "heap", + "heat", + "help", + "hook", + "hop", + "hope", + "hover", + "hug", + "hum", + "hunt", + "hurry", + "identify", + "ignore", + "imagine", + "impress", + "improve", + "include", + "increase", + "influence", + "inform", + "inject", + "injure", + "instruct", + "intend", + "interest", + "interfere", + "interrupt", + "introduce", + "invent", + "invite", + "irritate", + "itch", + "jail", + "jam", + "jog", + "join", + "joke", + "judge", + "juggle", + "jump", + "kick", + "kill", + "kiss", + "kneel", + "knit", + "knock", + "knot", + "label", + "land", + "last", + "laugh", + "launch", + "learn", + "level", + "license", + "lick", + "lie", + "lighten", + "like", + "list", + "listen", + "live", + "load", + "lock", + "long", + "look", + "love", + "man", + "manage", + "march", + "mark", + "marry", + "match", + "mate", + "matter", + "measure", + "meddle", + "melt", + "memorise", + "mend", + "mess up", + "milk", + "mine", + "miss", + "mix", + "moan", + "moor", + "mourn", + "move", + "muddle", + "mug", + "multiply", + "murder", + "nail", + "name", + "need", + "nest", + "nod", + "note", + "notice", + "number", + "obey", + "object", + "observe", + "obtain", + "occur", + "offend", + "offer", + "open", + "order", + "overflow", + "owe", + "own", + "pack", + "paddle", + "paint", + "park", + "part", + "pass", + "paste", + "pat", + "pause", + "peck", + "pedal", + "peel", + "peep", + "perform", + "permit", + "phone", + "pick", + "pinch", + "pine", + "place", + "plan", + "plant", + "play", + "please", + "plug", + "point", + "poke", + "polish", + "pop", + "possess", + "post", + "pour", + "practise", + "pray", + "preach", + "precede", + "prefer", + "prepare", + "present", + "preserve", + "press", + "pretend", + "prevent", + "prick", + "print", + "produce", + "program", + "promise", + "protect", + "provide", + "pull", + "pump", + "punch", + "puncture", + "punish", + "push", + "question", + "queue", + "race", + "radiate", + "rain", + "raise", + "reach", + "realise", + "receive", + "recognise", + "record", + "reduce", + "reflect", + "refuse", + "regret", + "reign", + "reject", + "rejoice", + "relax", + "release", + "rely", + "remain", + "remember", + "remind", + "remove", + "repair", + "repeat", + "replace", + "reply", + "report", + "reproduce", + "request", + "rescue", + "retire", + "return", + "rhyme", + "rinse", + "risk", + "rob", + "rock", + "roll", + "rot", + "rub", + "ruin", + "rule", + "rush", + "sack", + "sail", + "satisfy", + "save", + "saw", + "scare", + "scatter", + "scold", + "scorch", + "scrape", + "scratch", + "scream", + "screw", + "scribble", + "scrub", + "seal", + "search", + "separate", + "serve", + "settle", + "shade", + "share", + "shave", + "shelter", + "shiver", + "shock", + "shop", + "shrug", + "sigh", + "sign", + "signal", + "sin", + "sip", + "ski", + "skip", + "slap", + "slip", + "slow", + "smash", + "smell", + "smile", + "smoke", + "snatch", + "sneeze", + "sniff", + "snore", + "snow", + "soak", + "soothe", + "sound", + "spare", + "spark", + "sparkle", + "spell", + "spill", + "spoil", + "spot", + "spray", + "sprout", + "squash", + "squeak", + "squeal", + "squeeze", + "stain", + "stamp", + "stare", + "start", + "stay", + "steer", + "step", + "stir", + "stitch", + "stop", + "store", + "strap", + "strengthen", + "stretch", + "strip", + "stroke", + "stuff", + "subtract", + "succeed", + "suck", + "suffer", + "suggest", + "suit", + "supply", + "support", + "suppose", + "surprise", + "surround", + "suspect", + "suspend", + "switch", + "talk", + "tame", + "tap", + "taste", + "tease", + "telephone", + "tempt", + "terrify", + "test", + "thank", + "thaw", + "tick", + "tickle", + "tie", + "time", + "tip", + "tire", + "touch", + "tour", + "tow", + "trace", + "trade", + "train", + "transport", + "trap", + "travel", + "treat", + "tremble", + "trick", + "trip", + "trot", + "trouble", + "trust", + "try", + "tug", + "tumble", + "turn", + "twist", + "type", + "undress", + "unfasten", + "unite", + "unlock", + "unpack", + "untidy", + "use", + "vanish", + "visit", + "wail", + "wait", + "walk", + "wander", + "want", + "warm", + "warn", + "wash", + "waste", + "watch", + "water", + "wave", + "weigh", + "welcome", + "whine", + "whip", + "whirl", + "whisper", + "whistle", + "wink", + "wipe", + "wish", + "wobble", + "wonder", + "work", + "worry", + "wrap", + "wreck", + "wrestle", + "wriggle", + "x-ray", + "yawn", + "yell", + "zip", + "zoom" +] \ No newline at end of file diff --git a/data/nouns.json b/data/nouns.json new file mode 100644 index 0000000..4a2c421 --- /dev/null +++ b/data/nouns.json @@ -0,0 +1,995 @@ +[ + "Armour", + "Barrymore", + "Cabot", + "Catholicism", + "Chihuahua", + "Christianity", + "Easter", + "Frenchman", + "Lowry", + "Mayer", + "Orientalism", + "Pharaoh", + "Pueblo", + "Pullman", + "Rodeo", + "Saturday", + "Sister", + "Snead", + "Syrah", + "Tuesday", + "Woodward", + "abbey", + "absence", + "absorption", + "abstinence", + "absurdity", + "abundance", + "acceptance", + "accessibility", + "accommodation", + "accomplice", + "accountability", + "accounting", + "accreditation", + "accuracy", + "acquiescence", + "acreage", + "actress", + "actuality", + "adage", + "adaptation", + "adherence", + "adjustment", + "adoption", + "adultery", + "advancement", + "advert", + "advertisement", + "advertising", + "advice", + "aesthetics", + "affinity", + "aggression", + "agriculture", + "aircraft", + "airtime", + "allegation", + "allegiance", + "allegory", + "allergy", + "allies", + "alligator", + "allocation", + "allotment", + "altercation", + "ambulance", + "ammonia", + "anatomy", + "anemia", + "ankle", + "announcement", + "annoyance", + "annuity", + "anomaly", + "anthropology", + "anxiety", + "apartheid", + "apologise", + "apostle", + "apparatus", + "appeasement", + "appellation", + "appendix", + "applause", + "appointment", + "appraisal", + "archery", + "archipelago", + "architecture", + "ardor", + "arrears", + "arrow", + "artisan", + "artistry", + "ascent", + "assembly", + "assignment", + "association", + "asthma", + "atheism", + "attacker", + "attraction", + "attractiveness", + "auspices", + "authority", + "avarice", + "aversion", + "aviation", + "babbling", + "backlash", + "baker", + "ballet", + "balls", + "banjo", + "baron", + "barrier", + "barrister", + "bases", + "basin", + "basis", + "battery", + "battling", + "bedtime", + "beginner", + "begun", + "bending", + "bicycle", + "billing", + "bingo", + "biography", + "biology", + "birthplace", + "blackberry", + "blather", + "blossom", + "boardroom", + "boasting", + "bodyguard", + "boldness", + "bomber", + "bondage", + "bonding", + "bones", + "bonus", + "bookmark", + "boomer", + "booty", + "bounds", + "bowling", + "brainstorming", + "breadth", + "breaker", + "brewer", + "brightness", + "broccoli", + "broth", + "brotherhood", + "browsing", + "brunch", + "brunt", + "building", + "bullion", + "bureaucracy", + "burglary", + "buyout", + "by-election", + "cabal", + "cabbage", + "calamity", + "campaign", + "canonization", + "captaincy", + "carcass", + "carrier", + "cartridge", + "cassette", + "catfish", + "caught", + "celebrity", + "cemetery", + "certainty", + "certification", + "charade", + "chasm", + "check-in", + "cheerleader", + "cheesecake", + "chemotherapy", + "chili", + "china", + "chivalry", + "cholera", + "cilantro", + "circus", + "civilisation", + "civility", + "clearance", + "clearing", + "clerk", + "climber", + "closeness", + "clothing", + "clutches", + "coaster", + "coconut", + "coding", + "collaborator", + "colleague", + "college", + "collision", + "colors", + "combustion", + "comedian", + "comer", + "commander", + "commemoration", + "commenter", + "commissioner", + "commune", + "competition", + "completeness", + "complexity", + "computing", + "comrade", + "concur", + "condominium", + "conduit", + "confidant", + "configuration", + "confiscation", + "conflagration", + "conflict", + "consist", + "consistency", + "consolidation", + "conspiracy", + "constable", + "consul", + "consultancy", + "contentment", + "contents", + "contractor", + "conversation", + "cornerstone", + "corpus", + "correlation", + "councilman", + "counselor", + "countdown", + "countryman", + "coverage", + "covering", + "coyote", + "cracker", + "creator", + "criminality", + "crocodile", + "cropping", + "cross-examination", + "crossover", + "crossroads", + "culprit", + "cumin", + "curator", + "curfew", + "cursor", + "custard", + "cutter", + "cyclist", + "cyclone", + "cylinder", + "cynicism", + "daddy", + "damsel", + "darkness", + "dawning", + "daybreak", + "dealing", + "dedication", + "deduction", + "defection", + "deference", + "deficiency", + "definition", + "deflation", + "degeneration", + "delegation", + "delicacy", + "delirium", + "deliverance", + "demeanor", + "demon", + "demonstration", + "denomination", + "dentist", + "departure", + "depletion", + "depression", + "designation", + "despotism", + "detention", + "developer", + "devolution", + "dexterity", + "diagnosis", + "dialect", + "differentiation", + "digger", + "digress", + "dioxide", + "diploma", + "disability", + "disarmament", + "discord", + "discovery", + "dishonesty", + "dismissal", + "disobedience", + "dispatcher", + "disservice", + "distribution", + "distributor", + "diver", + "diversity", + "docking", + "dollar", + "dominance", + "domination", + "dominion", + "donkey", + "doorstep", + "doorway", + "dossier", + "downside", + "drafting", + "drank", + "drilling", + "driver", + "drumming", + "drunkenness", + "duchess", + "ducking", + "dugout", + "dumps", + "dwelling", + "dynamics", + "eagerness", + "earnestness", + "earnings", + "eater", + "editor", + "effectiveness", + "electricity", + "elements", + "eloquence", + "emancipation", + "embodiment", + "embroidery", + "emperor", + "employment", + "encampment", + "enclosure", + "encouragement", + "endangerment", + "enlightenment", + "enthusiasm", + "environment", + "environs", + "envoy", + "epilepsy", + "equation", + "equator", + "error", + "espionage", + "estimation", + "evacuation", + "exaggeration", + "examination", + "exclamation", + "expediency", + "exploitation", + "extinction", + "eyewitness", + "falls", + "fascism", + "fastball", + "feces", + "feedback", + "ferocity", + "fertilization", + "fetish", + "finale", + "firing", + "fixing", + "flashing", + "flask", + "flora", + "fluke", + "folklore", + "follower", + "foothold", + "footing", + "forefinger", + "forefront", + "forgiveness", + "formality", + "formation", + "formula", + "foyer", + "fragmentation", + "framework", + "fraud", + "freestyle", + "frequency", + "friendliness", + "fries", + "frigate", + "fulfillment", + "function", + "functionality", + "fundraiser", + "fusion", + "futility", + "gallantry", + "gallery", + "genesis", + "genitals", + "girlfriend", + "glamour", + "glitter", + "glucose", + "google", + "grandeur", + "grappling", + "greens", + "gridlock", + "grocer", + "groundwork", + "grouping", + "gunman", + "gusto", + "habitation", + "hacker", + "hallway", + "hamburger", + "hammock", + "handling", + "hands", + "handshake", + "happiness", + "hardship", + "headcount", + "header", + "headquarters", + "heads", + "headset", + "hearth", + "hearts", + "heath", + "hegemony", + "height", + "hello", + "helper", + "helping", + "helplessness", + "hierarchy", + "hoarding", + "hockey", + "homeland", + "homer", + "honesty", + "horror", + "horseman", + "hostility", + "housing", + "humility", + "hurricane", + "iceberg", + "ignition", + "illness", + "illustration", + "illustrator", + "immunity", + "immunization", + "imperialism", + "imprisonment", + "inaccuracy", + "inaction", + "inactivity", + "inauguration", + "indecency", + "indicator", + "inevitability", + "infamy", + "infiltration", + "influx", + "iniquity", + "innocence", + "innovation", + "insanity", + "inspiration", + "instruction", + "instructor", + "insurer", + "interact", + "intercession", + "intercourse", + "intermission", + "interpretation", + "intersection", + "interval", + "intolerance", + "intruder", + "invasion", + "investment", + "involvement", + "irrigation", + "iteration", + "jenny", + "jogging", + "jones", + "joseph", + "juggernaut", + "juncture", + "jurisprudence", + "juror", + "kangaroo", + "kingdom", + "knocking", + "laborer", + "larceny", + "laurels", + "layout", + "leadership", + "leasing", + "legislation", + "leopard", + "liberation", + "licence", + "lifeblood", + "lifeline", + "ligament", + "lighting", + "likeness", + "line-up", + "lineage", + "liner", + "lineup", + "liquidation", + "listener", + "literature", + "litigation", + "litre", + "loathing", + "locality", + "lodging", + "logic", + "longevity", + "lookout", + "lordship", + "lustre", + "ma'am", + "machinery", + "madness", + "magnificence", + "mahogany", + "mailing", + "mainframe", + "maintenance", + "majority", + "manga", + "mango", + "manifesto", + "mantra", + "manufacturer", + "maple", + "martin", + "martyrdom", + "mathematician", + "matrix", + "matron", + "mayhem", + "mayor", + "means", + "meantime", + "measurement", + "mechanics", + "mediator", + "medics", + "melodrama", + "memory", + "mentality", + "metaphysics", + "method", + "metre", + "miner", + "mirth", + "misconception", + "misery", + "mishap", + "misunderstanding", + "mobility", + "molasses", + "momentum", + "monarchy", + "monument", + "morale", + "mortality", + "motto", + "mouthful", + "mouthpiece", + "mover", + "movie", + "mowing", + "murderer", + "musician", + "mutation", + "mythology", + "narration", + "narrator", + "nationality", + "negligence", + "neighborhood", + "neighbour", + "nervousness", + "networking", + "nexus", + "nightmare", + "nobility", + "nobody", + "noodle", + "normalcy", + "notification", + "nourishment", + "novella", + "nucleus", + "nuisance", + "nursery", + "nutrition", + "nylon", + "oasis", + "obscenity", + "obscurity", + "observer", + "offense", + "onslaught", + "operation", + "opportunity", + "opposition", + "oracle", + "orchestra", + "organisation", + "organizer", + "orientation", + "originality", + "ounce", + "outage", + "outcome", + "outdoors", + "outfield", + "outing", + "outpost", + "outset", + "overseer", + "owner", + "oxygen", + "pairing", + "panther", + "paradox", + "parliament", + "parsley", + "parson", + "passenger", + "pasta", + "patchwork", + "pathos", + "patriotism", + "pendulum", + "penguin", + "permission", + "persona", + "perusal", + "pessimism", + "peter", + "philosopher", + "phosphorus", + "phrasing", + "physique", + "piles", + "plateau", + "playing", + "plaza", + "plethora", + "plurality", + "pneumonia", + "pointer", + "poker", + "policeman", + "polling", + "poster", + "posterity", + "posting", + "postponement", + "potassium", + "pottery", + "poultry", + "pounding", + "pragmatism", + "precedence", + "precinct", + "preoccupation", + "pretense", + "priesthood", + "prisoner", + "privacy", + "probation", + "proceeding", + "proceedings", + "processing", + "processor", + "progression", + "projection", + "prominence", + "propensity", + "prophecy", + "prorogation", + "prospectus", + "protein", + "prototype", + "providence", + "provider", + "provocation", + "proximity", + "puberty", + "publicist", + "publicity", + "publisher", + "pundit", + "putting", + "quantity", + "quart", + "quilting", + "quorum", + "racism", + "radiance", + "ralph", + "rancher", + "ranger", + "rapidity", + "rapport", + "ratification", + "rationality", + "reaction", + "reader", + "reassurance", + "rebirth", + "receptor", + "recipe", + "recognition", + "recourse", + "recreation", + "rector", + "recurrence", + "redemption", + "redistribution", + "redundancy", + "refinery", + "reformer", + "refrigerator", + "regularity", + "regulator", + "reinforcement", + "reins", + "reinstatement", + "relativism", + "relaxation", + "rendition", + "repayment", + "repentance", + "repertoire", + "repository", + "republic", + "reputation", + "resentment", + "residency", + "resignation", + "restaurant", + "resurgence", + "retailer", + "retention", + "retirement", + "reviewer", + "riches", + "righteousness", + "roadblock", + "robber", + "rocks", + "rubbing", + "runoff", + "saloon", + "salvation", + "sarcasm", + "saucer", + "savior", + "scarcity", + "scenario", + "scenery", + "schism", + "scholarship", + "schoolboy", + "schooner", + "scissors", + "scolding", + "scooter", + "scouring", + "scrimmage", + "scrum", + "seating", + "sediment", + "seduction", + "seeder", + "seizure", + "self-confidence", + "self-control", + "self-respect", + "semicolon", + "semiconductor", + "semifinal", + "senator", + "sending", + "serenity", + "seriousness", + "servitude", + "sesame", + "setup", + "sewing", + "sharpness", + "shaving", + "shoplifting", + "shopping", + "siding", + "simplicity", + "simulation", + "sinking", + "skate", + "sloth", + "slugger", + "snack", + "snail", + "snapshot", + "snark", + "soccer", + "solemnity", + "solicitation", + "solitude", + "somewhere", + "sophistication", + "sorcery", + "souvenir", + "spaghetti", + "specification", + "specimen", + "specs", + "spectacle", + "spectre", + "speculation", + "sperm", + "spoiler", + "squad", + "squid", + "staging", + "stagnation", + "staircase", + "stairway", + "stamina", + "standpoint", + "standstill", + "stanza", + "statement", + "stillness", + "stimulus", + "stocks", + "stole", + "stoppage", + "storey", + "storyteller", + "stylus", + "subcommittee", + "subscription", + "subsidy", + "suburb", + "success", + "sufferer", + "supposition", + "suspension", + "sweater", + "sweepstakes", + "swimmer", + "syndrome", + "synopsis", + "syntax", + "system", + "tablespoon", + "taker", + "tavern", + "technology", + "telephony", + "template", + "tempo", + "tendency", + "tendon", + "terrier", + "terror", + "terry", + "theater", + "theology", + "therapy", + "thicket", + "thoroughfare", + "threshold", + "thriller", + "thunderstorm", + "ticker", + "tiger", + "tights", + "to-day", + "tossing", + "touchdown", + "tourist", + "tourney", + "toxicity", + "tracing", + "tractor", + "translation", + "transmission", + "transmitter", + "trauma", + "traveler", + "treadmill", + "trilogy", + "trout", + "tuning", + "twenties", + "tycoon", + "tyrant", + "ultimatum", + "underdog", + "underwear", + "unhappiness", + "unification", + "university", + "uprising", + "vaccination", + "validity", + "vampire", + "vanguard", + "variation", + "vegetation", + "verification", + "viability", + "vicinity", + "victory", + "viewpoint", + "villa", + "vindication", + "violation", + "vista", + "vocalist", + "vogue", + "volcano", + "voltage", + "vomiting", + "vulnerability", + "waistcoat", + "waitress", + "wardrobe", + "warmth", + "watchdog", + "wealth", + "weariness", + "whereabouts", + "whisky", + "whiteness", + "widget", + "width", + "windfall", + "wiring", + "witchcraft", + "withholding", + "womanhood", + "words", + "workman", + "youngster" +] \ No newline at end of file diff --git a/data/personal_nouns.json b/data/personal_nouns.json new file mode 100644 index 0000000..5e7a7da --- /dev/null +++ b/data/personal_nouns.json @@ -0,0 +1,9309 @@ +[ + "abator", + "abbreviator", + "abdicator", + "abductor", + "abetter", + "abettor", + "abhorrer", + "abiogenist", + "abjurer", + "abnegator", + "abortionist", + "abridger", + "abrogator", + "absconder", + "absentee", + "absenter", + "absolutist", + "absolver", + "absorber", + "abstainer", + "abstinent", + "abstracter", + "abuser", + "abutter", + "accelerator", + "accentor", + "acceptor", + "accoucheur", + "accountant", + "accumbent", + "accumulator", + "accuser", + "achiever", + "acolyte", + "acrobat", + "actor", + "actress", + "actuator", + "adapter", + "adder", + "address", + "adducer", + "adherent", + "adjudicator", + "adjuster", + "administrator", + "admirer", + "admonisher", + "adopter", + "adorer", + "adult", + "adulterator", + "adulterer", + "adulteress", + "advancer", + "adventurer", + "adventuress", + "adverse", + "advert", + "advertent", + "advertiser", + "advice", + "adviser", + "advowson", + "adz", + "adze", + "affiant", + "affirmer", + "agent", + "agitator", + "agonist", + "air", + "alb", + "albino", + "alchemist", + "alewife", + "alias", + "alienator", + "alienist", + "alienor", + "all", + "allayer", + "allegorizer", + "alleviator", + "alliterator", + "almoner", + "amalgamator", + "amateur", + "amazon", + "american", + "amplifier", + "amputator", + "analogist", + "analyst", + "analyzer", + "anarchist", + "anatomist", + "anchorite", + "anecdotist", + "angler", + "angling", + "animater", + "animator", + "animist", + "annihilator", + "announcer", + "annoyer", + "annuitant", + "annunciator", + "anointer", + "anonym", + "answerer", + "antagonist", + "antecedent", + "anthologist", + "anthropologist", + "anticipator", + "antipope", + "ape", + "aper", + "apiarist", + "apologist", + "apostle", + "apostrophe", + "appeaser", + "appellant", + "applauder", + "applicant", + "appraiser", + "appreciator", + "apprehender", + "apprentice", + "appropriator", + "approver", + "arabist", + "arbiter", + "arbitrator", + "arboriculturist", + "arborist", + "archaist", + "architect", + "arguer", + "aristocrat", + "armor-bearer", + "armorer", + "arranger", + "arrester", + "arriver", + "articulator", + "artificer", + "artilleryman", + "artisan", + "artist", + "ascendant", + "asker", + "aspirant", + "aspirer", + "assailant", + "assault", + "assaulter", + "assayer", + "assembler", + "assenter", + "asserter", + "assessee", + "assessor", + "assets", + "assistant", + "astrologer", + "astronomer", + "atheist", + "athlete", + "atlas", + "atomizer", + "attacker", + "attainder", + "attempter", + "attendant", + "attender", + "attester", + "attestor", + "attracter", + "attractor", + "auditor", + "augur", + "aunt", + "author", + "authorizer", + "autobiographer", + "autochthon", + "autocrat", + "autodidact", + "avenger", + "avoirdupois", + "avower", + "backbiter", + "backer", + "backslider", + "badge", + "badger", + "badgerer", + "bagman", + "bagpiper", + "bailor", + "baker", + "balancer", + "balker", + "banker", + "bankrupt", + "baptist", + "barber", + "bargainer", + "bargeman", + "barkeeper", + "barker", + "barterer", + "base", + "bass", + "basso", + "bat", + "bather", + "batman", + "batsman", + "batter", + "battler", + "bawd", + "bawler", + "beadle", + "bear", + "bearer", + "beater", + "beau", + "bedfellow", + "bedlam", + "beefeater", + "begetter", + "beggar", + "beginner", + "beguiler", + "beholder", + "believe", + "believer", + "belle", + "bellman", + "bellower", + "bender", + "benefactor", + "benefactress", + "berserk", + "berserker", + "besieger", + "betrayer", + "better", + "bettor", + "bibliographer", + "bibliopole", + "bicycler", + "bidder", + "bigamist", + "bilk", + "bill", + "binder", + "biographer", + "biologist", + "bitch", + "bite", + "biter", + "blab", + "black", + "blackguard", + "blackmailer", + "blamer", + "blasphemer", + "blaster", + "blazer", + "bleacher", + "bleeder", + "blender", + "blinder", + "blinker", + "blood", + "bloodsucker", + "bloomer", + "blotter", + "blower", + "blue", + "bluffer", + "blunderer", + "blusterer", + "boarder", + "boaster", + "boatman", + "bobber", + "bodyguard", + "boiler", + "bombardier", + "bondman", + "bondsman", + "bondswoman", + "bondwoman", + "bonesetter", + "bookbinder", + "booker", + "bookkeeper", + "bookmaker", + "bookseller", + "boomer", + "boor", + "boost", + "boot", + "bootblack", + "bootmaker", + "boozer", + "borderer", + "borrower", + "botanist", + "botcher", + "bother", + "botherer", + "bottler", + "bouncer", + "bounder", + "bourbon", + "bourgeois", + "bow", + "bower", + "bowler", + "bowman", + "boxer", + "bragger", + "brakeman", + "branch", + "brand", + "brave", + "bravo", + "breaker", + "breather", + "breeder", + "breton", + "brewer", + "brick", + "bricklayer", + "bride", + "bridegroom", + "broiler", + "broker", + "brood", + "brother", + "bruiser", + "brunette", + "brute", + "bubbler", + "buddhist", + "buffer", + "bufflehead", + "buffoon", + "bugler", + "builder", + "bull", + "bulldozer", + "bungler", + "bunter", + "burgess", + "burlesquer", + "burner", + "bushwhacker", + "bust", + "butcher", + "butter", + "buyer", + "buzzer", + "bystander", + "cabinetmaker", + "cackler", + "cad", + "cadger", + "cahoot", + "caitiff", + "calculator", + "calender", + "calf", + "caller", + "calling", + "calmer", + "campaigner", + "camper", + "canaanite", + "cannoneer", + "canoe", + "canonist", + "canter", + "canvasser", + "capitalist", + "captor", + "caricaturist", + "carouser", + "carper", + "carrier", + "carter", + "cartographer", + "carver", + "cashier", + "cast", + "caster", + "casuist", + "catamaran", + "catcher", + "catechist", + "caterer", + "cateress", + "caveat", + "celebrant", + "celebrator", + "celt", + "censor", + "chaffer", + "chair", + "chairman", + "chaldean", + "challenge", + "challenger", + "changeling", + "changer", + "chanter", + "chap", + "chapman", + "charge", + "charger", + "charioteer", + "charlatan", + "charm", + "charmer", + "charwoman", + "chaser", + "cheat", + "cheater", + "checker", + "cheerer", + "cheesemonger", + "chef", + "chewer", + "chick", + "chiffonier", + "chignon", + "child", + "chiliast", + "chiromancer", + "chiropodist", + "choker", + "chooser", + "chopper", + "choragus", + "chorister", + "chouse", + "churchgoer", + "churl", + "cipher", + "circlet", + "citess", + "claimant", + "clairvoyant", + "classifier", + "cleaner", + "cleanser", + "clearer", + "cleaver", + "clergyman", + "clerk", + "client", + "clientele", + "climb", + "climber", + "clincher", + "clipper", + "clock", + "closer", + "clothier", + "clown", + "co-respondent", + "coach", + "coachman", + "coadjutor", + "coaster", + "coaxer", + "cob", + "codger", + "coiner", + "collector", + "colonizer", + "colorist", + "coma", + "combatant", + "comber", + "comer", + "comforter", + "commander", + "commentator", + "commoner", + "communicant", + "communicator", + "commuter", + "compacter", + "competitor", + "compiler", + "complainant", + "complainer", + "composer", + "compositor", + "compost", + "composure", + "compote", + "compound", + "compounder", + "comprehend", + "compress", + "compressor", + "compromiser", + "compute", + "computer", + "comrade", + "con", + "concave", + "concavo-concave", + "concavo-convex", + "concede", + "conceit", + "conceiver", + "concenter", + "concentre", + "concept", + "concern", + "concert", + "concertina", + "concerto", + "conch", + "concha", + "conchologist", + "concierge", + "conciliator", + "conclave", + "conclude", + "concoct", + "concomitant", + "concord", + "concordant", + "concordat", + "concourse", + "concrete", + "concupiscent", + "concur", + "concurrent", + "concuss", + "condemn", + "condense", + "condenser", + "condescend", + "condign", + "condole", + "condor", + "conduce", + "conduct", + "conductor", + "conductress", + "conduit", + "condylar", + "condyle", + "confab", + "confect", + "confectioner", + "confederater", + "confer", + "conferee", + "conferrer", + "conferva", + "confess", + "confessor", + "confidante", + "confide", + "confident", + "configure", + "confirm", + "confit", + "confiture", + "conger", + "congeries", + "congest", + "congius", + "conglobe", + "congo", + "congou", + "congregationalist", + "congress", + "congressman", + "congruent", + "conics", + "conidium", + "conifer", + "conium", + "conjecture", + "conjoint", + "conjunct", + "conjunctiva", + "conjuncture", + "conjure", + "conjurer", + "conjuror", + "conn", + "connect", + "connector", + "connoisseur", + "connote", + "conodont", + "conquer", + "conqueress", + "conqueror", + "conquest", + "conscript", + "consecrater", + "consensus", + "consent", + "consentient", + "consequent", + "conservatoire", + "conservator", + "conserve", + "consider", + "consign", + "consignee", + "consigner", + "consignor", + "consist", + "consistent", + "console", + "consoling", + "consonant", + "consort", + "conspectus", + "conspirator", + "conspire", + "constant", + "constituent", + "constitute", + "constitutionalist", + "constraint", + "constrict", + "constrictor", + "constringe", + "construct", + "constructor", + "construe", + "consuetude", + "consul", + "consular", + "consult", + "consume", + "consumer", + "contact", + "container", + "contemn", + "contempt", + "contend", + "contender", + "content", + "contents", + "contest", + "contestant", + "context", + "continent", + "contingent", + "continuant", + "continue", + "continuo", + "contort", + "contour", + "contra", + "contraband", + "contrabandist", + "contrabass", + "contract", + "contractile", + "contractor", + "contracture", + "contradict", + "contradictions", + "contralto", + "contrapuntist", + "contraries", + "contrast", + "contretemps", + "contribute", + "contrite", + "contriver", + "controller", + "controversialist", + "controvert", + "contuse", + "conundrum", + "convalesce", + "convalescent", + "convener", + "convenient", + "convent", + "conventicle", + "converge", + "convergent", + "conversant", + "conversationalist", + "conversationist", + "converse", + "converser", + "convert", + "converter", + "convex", + "convexo-concave", + "convexo-convex", + "conveyancer", + "conveyer", + "conveyor", + "convict", + "convince", + "convoke", + "convolute", + "convolve", + "convolvulus", + "convulse", + "coo", + "cook", + "cookbook", + "cookie", + "cooler", + "coolie", + "cooling", + "coon", + "coontie", + "coop", + "cooper", + "coot", + "cooter", + "cop", + "copartner", + "cope", + "copeck", + "copepod", + "copepoda", + "copernican", + "copier", + "copland", + "copper", + "copperhead", + "coppersmith", + "coppice", + "copra", + "coprolite", + "cops", + "copse", + "copts", + "copula", + "copyhold", + "copyholder", + "copyist", + "copyright", + "coquet", + "coquette", + "cora", + "coracle", + "coralwort", + "corbel", + "corbiestep", + "corchorus", + "cord", + "cordierite", + "cordon", + "cordovan", + "core", + "corer", + "coriander", + "corinth", + "corium", + "cork", + "corkscrew", + "corm", + "cormorant", + "corn", + "corncob", + "corncrake", + "corncrib", + "cornea", + "cornel", + "corner", + "cornet", + "cornfield", + "cornflower", + "cornice", + "cornstalk", + "cornstarch", + "cornu", + "corolla", + "corona", + "coronach", + "coroner", + "coronet", + "coronilla", + "corposant", + "corps", + "corpse", + "corpulent", + "corpus", + "corpuscle", + "corpuscular", + "corrade", + "correct", + "corregidor", + "correspond", + "correspondent", + "corridor", + "corrie", + "corrigendum", + "corroborant", + "corrode", + "corrupt", + "corrupter", + "corsair", + "corse", + "corselet", + "corset", + "corslet", + "cortes", + "cortex", + "corundum", + "coruscant", + "corvee", + "corvette", + "corymb", + "coryza", + "coscoroba", + "cosecant", + "cosher", + "cosherer", + "cosier", + "cosmographer", + "cosmologist", + "cosmopolitan", + "cosmopolite", + "cosmos", + "coss", + "cossack", + "cosset", + "cost", + "costa", + "costermonger", + "costume", + "costumer", + "cot", + "cotangent", + "cote", + "cotenant", + "coterie", + "cotinga", + "cotswold", + "cottager", + "cottar", + "cotter", + "cottier", + "cotton", + "cottontail", + "cottonwood", + "cotyledon", + "couch", + "couchant", + "cougar", + "cough", + "coulisse", + "coulomb", + "coulter", + "council", + "councilman", + "counsel", + "counselor", + "count", + "counter", + "counteract", + "counterbore", + "counterchange", + "countercharge", + "countercheck", + "counterclaim", + "countercurrent", + "counterfeit", + "counterfeiter", + "counterfoil", + "counterman", + "countermand", + "countermarch", + "countermove", + "counterpart", + "counterplot", + "counterpoint", + "countersign", + "countersink", + "countersunk", + "countervail", + "countess", + "countryman", + "countryside", + "countrywoman", + "coup", + "couple", + "coupler", + "couplet", + "coupling", + "coupon", + "courbaril", + "courier", + "courlan", + "course", + "courser", + "court", + "courtesan", + "courtier", + "courtyard", + "cousin-german", + "couth", + "couvade", + "covariant", + "cove", + "covenant", + "cover", + "coverlet", + "covert", + "covet", + "cow", + "coward", + "cowardice", + "cowbird", + "cower", + "cowherd", + "cowhide", + "cowl", + "cowlick", + "cowpea", + "cowpox", + "cowrie", + "cowslip", + "cox", + "coxcomb", + "coyote", + "coypu", + "cozier", + "crab", + "crack", + "cracker", + "crackle", + "crackleware", + "crackling", + "cracksman", + "cradle", + "cradling", + "craft", + "craftsman", + "crag", + "cragsman", + "crake", + "cram", + "crambe", + "crammer", + "cramp", + "crampon", + "crampoons", + "cranch", + "craniologist", + "cranium", + "crank", + "crape", + "crappie", + "craps", + "crash", + "crass", + "crassitude", + "crater", + "craunch", + "cravat", + "crave", + "craw", + "crawford", + "crawl", + "crawler", + "crayon", + "craze", + "creak", + "cream", + "crease", + "creature", + "creche", + "credendum", + "credit", + "creditor", + "credo", + "creek", + "creeks", + "creel", + "creep", + "creeper", + "crees", + "creese", + "cremona", + "crenature", + "crenel", + "crenelle", + "creole", + "creosote", + "crept", + "crepuscule", + "crescendo", + "crescent", + "cress", + "crest", + "cretan", + "crete", + "cretonne", + "crevasse", + "crevice", + "crew", + "crewelwork", + "crewet", + "crib", + "crick", + "cricket", + "cricketer", + "crier", + "crime", + "crimp", + "crimper", + "crimson", + "cringe", + "cringle", + "crinkle", + "crinoidea", + "cripple", + "crippling", + "crisp", + "crisper", + "crisscross", + "crith", + "critique", + "croak", + "croaker", + "croat", + "crochet", + "crock", + "crocket", + "crocodile", + "crocus", + "croft", + "crofter", + "cromlech", + "crook", + "crookback", + "croon", + "crop", + "cropper", + "croquet", + "crore", + "crosier", + "cross", + "cross-examiner", + "cross-eye", + "cross-stitch", + "crossbar", + "crossbeam", + "crossbill", + "crossbones", + "crossbow", + "crosscut", + "crosshead", + "crossjack", + "crossopterygii", + "crosspatch", + "crosspiece", + "crossroad", + "crossruff", + "crotalus", + "crotch", + "crotchet", + "croton", + "crottles", + "crouch", + "croup", + "croupier", + "crouse", + "crouton", + "crow", + "crowbar", + "crowd", + "crowfoot", + "crown", + "crownwork", + "crows", + "crozier", + "crucifer", + "crucifix", + "cruciform", + "crud", + "crude", + "cruel", + "cruet", + "cruiser", + "cruller", + "crumb", + "crumble", + "crump", + "crumpet", + "crumple", + "crunch", + "crupper", + "crura", + "crus", + "crusade", + "crusader", + "cruse", + "crush", + "crusher", + "crust", + "crustacea", + "crustacean", + "crutch", + "crux", + "cryolite", + "crypt", + "cryptogam", + "cryptogram", + "cryptograph", + "cryptographer", + "crystallite", + "crystallographer", + "ctenophora", + "ctenophore", + "cub", + "cuban", + "cubbyhole", + "cube", + "cubeb", + "cubicle", + "cubiform", + "cubit", + "cuckold", + "cuckoldom", + "cuckoo", + "cuckooflower", + "cuckoopint", + "cucumber", + "cucumis", + "cud", + "cudbear", + "cuddle", + "cudgel", + "cue", + "cuff", + "cuirass", + "cuirassier", + "cul", + "culex", + "cull", + "cullender", + "culling", + "cullis", + "culls", + "culm", + "culprit", + "cult", + "cultivator", + "culture", + "cultus", + "culvert", + "cumber", + "cumbersome", + "cumulus", + "cuneiform", + "cunner", + "cup", + "cupbearer", + "cupboard", + "cupel", + "cupola", + "cupper", + "cuprite", + "cupule", + "cur", + "curassow", + "curator", + "curb", + "curcuma", + "curd", + "curdle", + "cure", + "curette", + "curfew", + "curio", + "curl", + "curler", + "curlew", + "curling", + "curmudgeon", + "currant", + "current", + "curriculum", + "currier", + "currycomb", + "curse", + "cursor", + "curst", + "curt", + "curtail", + "curvature", + "curve", + "curvet", + "curvilinear", + "cushat", + "cusk", + "cusp", + "cuspidor", + "custard", + "custom", + "customer", + "customhouse", + "cut", + "cutch", + "cute", + "cuticle", + "cuticular", + "cutis", + "cutlass", + "cutler", + "cutlet", + "cutpurse", + "cutter", + "cutthroat", + "cuttle", + "cutwork", + "cutworm", + "cyanide", + "cyanite", + "cycad", + "cycas", + "cycle", + "cycling", + "cyclist", + "cyclopean", + "cyclops", + "cyclorama", + "cyclostomata", + "cyclostyle", + "cyder", + "cygnet", + "cygnus", + "cylinder", + "cyma", + "cymatium", + "cymbalist", + "cyme", + "cymling", + "cymule", + "cynosure", + "cyon", + "cyperus", + "cypher", + "cypres", + "cypress", + "cyprinodont", + "cypriot", + "cypripedium", + "cyprus", + "cyst", + "cystocele", + "cystolith", + "cytoplasm", + "czar", + "czarina", + "czech", + "czechs", + "dabbler", + "dairyman", + "dame", + "damsel", + "dancer", + "danseuse", + "darner", + "darter", + "dastard", + "dauber", + "daughter", + "dawdler", + "dead", + "deadhead", + "deaf-mute", + "dealer", + "dealing", + "debaser", + "debater", + "debauch", + "debauchee", + "debaucher", + "debenture", + "debtor", + "decanter", + "decedent", + "deceiver", + "decent", + "decipherer", + "decipheress", + "decker", + "declarer", + "decorator", + "deerstalker", + "defamer", + "defaulter", + "defendant", + "defender", + "defiler", + "defrauder", + "defunct", + "deist", + "delayer", + "delinquent", + "deliverer", + "dell", + "demagogue", + "demander", + "demerit", + "democrat", + "demoniac", + "demonstrator", + "demurrer", + "denier", + "denominator", + "dentist", + "departer", + "dependent", + "deponent", + "deposer", + "depositor", + "depreciator", + "depressor", + "dermatologist", + "descendant", + "descender", + "descent", + "deserter", + "designer", + "desolater", + "despoiler", + "despot", + "destroyer", + "detector", + "determiner", + "determinist", + "detonator", + "developer", + "devil", + "deviser", + "devisor", + "devotee", + "devourer", + "diarist", + "dictator", + "dieter", + "differentiator", + "diffuser", + "digester", + "digger", + "dilater", + "dilator", + "dilettante", + "diluter", + "diner", + "dipper", + "dipsomaniac", + "directer", + "director", + "diver", + "divider", + "diviner", + "divorce", + "doctor", + "doctrinaire", + "dodger", + "dogmatist", + "donor", + "doorkeeper", + "dotard", + "doubler", + "doubter", + "dower", + "dowser", + "dozer", + "drab", + "drabber", + "dragon", + "draper", + "draughtsman", + "drawer", + "dreader", + "dreadnaught", + "dreamer", + "dredger", + "dresser", + "dribbler", + "drier", + "drinker", + "driver", + "droll", + "dropper", + "drover", + "drudge", + "druggist", + "drummer", + "drunkard", + "dualist", + "duck", + "dueler", + "duelist", + "duenna", + "duffer", + "dullard", + "duller", + "dun", + "dupe", + "duster", + "dyer", + "dynamiter", + "earthworm", + "east", + "eater", + "eavesdropper", + "economist", + "economizer", + "editor", + "educationist", + "educator", + "effecter", + "egger", + "egotist", + "ejector", + "elater", + "elder", + "elector", + "electroplater", + "elevator", + "elf", + "elizabethan", + "elocutionist", + "emancipator", + "embalmer", + "embezzler", + "embonpoint", + "embroiderer", + "emeer", + "emigrant", + "emir", + "employer", + "emptier", + "emulator", + "enchanter", + "enchantress", + "encroacher", + "encyclopedist", + "energizer", + "enforcer", + "engender", + "engineer", + "engraver", + "enhancer", + "enjoyer", + "enlivener", + "entail", + "enterpriser", + "entertainer", + "enthusiast", + "entrant", + "entrepreneur", + "enumerator", + "equalizer", + "equivocator", + "eraser", + "erecter", + "errant", + "escort", + "escrow", + "essayer", + "estimator", + "esurient", + "etcher", + "ethicist", + "ethnographer", + "ethologist", + "etruscan", + "etymologist", + "eulogist", + "evener", + "evolutionist", + "examiner", + "example", + "excavator", + "exchanger", + "excursionist", + "excuser", + "executant", + "executioner", + "executor", + "executrix", + "exerciser", + "exhibitioner", + "exhibitor", + "exile", + "exon", + "expectant", + "experimenter", + "expert", + "explorer", + "exponent", + "exporter", + "expositor", + "expounder", + "expurgator", + "exquisite", + "exterminator", + "extinguisher", + "extoller", + "extractor", + "extravagant", + "extremist", + "fabricator", + "fabulist", + "factor", + "factoress", + "fagot", + "faint", + "fair", + "falconer", + "faller", + "falsifier", + "fan", + "fancier", + "fantast", + "farmer", + "fartherer", + "fastener", + "faster", + "fatalist", + "father", + "favoress", + "favorite", + "fawner", + "feature", + "feeder", + "feel", + "feeler", + "feeling", + "feller", + "fellow", + "felo-de-se", + "fencer", + "fender", + "ferryman", + "fertilizer", + "fetch", + "fibber", + "fiddler", + "fiend", + "fighter", + "figure", + "file", + "filer", + "filler", + "financier", + "finder", + "finer", + "finisher", + "firebrand", + "fireman", + "fisher", + "fisherman", + "fishwife", + "fitter", + "flanker", + "flapper", + "flasher", + "flatter", + "flatterer", + "fleer", + "flesh", + "fletcher", + "flier", + "flippant", + "flirt", + "floater", + "flogger", + "floorwalker", + "florist", + "flouter", + "foe", + "folder", + "follower", + "fomenter", + "fondler", + "fondling", + "footman", + "fop", + "forager", + "forecaster", + "forefather", + "forester", + "forfeiter", + "forger", + "forgiver", + "forlorn", + "former", + "fornicator", + "fornicatress", + "forsooth", + "fortieth", + "forwarder", + "fossil", + "fossilist", + "foster", + "founder", + "foundress", + "four-in-hand", + "fourteenth", + "fourth", + "frame", + "framer", + "frank", + "fratricide", + "free-liver", + "freebooter", + "freedman", + "freeman", + "freer", + "freethinker", + "freezer", + "freighter", + "frequenter", + "friend", + "frier", + "front", + "fruiterer", + "frump", + "fugleman", + "fuller", + "fumbler", + "fumigator", + "furrier", + "fuss", + "futurist", + "gabbier", + "gainer", + "galilean", + "gallant", + "galvanizer", + "gambler", + "gamekeeper", + "gamester", + "ganger", + "garb", + "gardener", + "garnishee", + "garroter", + "gatherer", + "gaul", + "genealogist", + "generator", + "genevan", + "genitor", + "genius", + "genoese", + "gentleman", + "gentlewoman", + "geomancer", + "ghost", + "giant", + "giantess", + "giggler", + "gilder", + "gill", + "girder", + "giver", + "gladder", + "gladiator", + "glazer", + "glazier", + "gleaner", + "glider", + "glutton", + "gnawer", + "goatherd", + "god", + "goddess", + "godfather", + "godmother", + "goer", + "golfer", + "gondolier", + "gossip", + "goth", + "gouge", + "governor", + "gown", + "grabber", + "grader", + "grandee", + "granter", + "graver", + "grazier", + "greaser", + "greenhorn", + "greeter", + "griever", + "grinder", + "grinner", + "groom", + "groover", + "groveler", + "grower", + "growler", + "grumbler", + "grunter", + "guarantee", + "guarantor", + "guard", + "guardsman", + "guerrilla", + "guesser", + "guide", + "guilt", + "gunner", + "gunsmith", + "gusher", + "guzzle", + "gymnast", + "habitue", + "hacker", + "hag", + "haggler", + "hagiologist", + "hairdresser", + "hairsplitter", + "halberdier", + "halfer", + "halter", + "handicapper", + "handicraft", + "hanger", + "hanger-on", + "hangman", + "haranguer", + "harasser", + "harbinger", + "hardwareman", + "harlot", + "harmonizer", + "harpooner", + "harridan", + "harrier", + "harvester", + "harvestman", + "hatchet", + "hater", + "hatrack", + "hatter", + "hauberk", + "haul", + "hauler", + "haulm", + "hauls", + "haunch", + "haunt", + "haustorium", + "hauteur", + "havana", + "have", + "havelock", + "haversack", + "havoc", + "haw", + "haw-haw", + "hawfinch", + "hawk", + "hawkbill", + "hawkbit", + "hawker", + "hawse", + "hawser", + "hawthorn", + "haycock", + "hayfield", + "hayfork", + "hayloft", + "haymaker", + "haymow", + "hayrack", + "hayrick", + "haystack", + "hazard", + "haze", + "hazel", + "hazelnut", + "he", + "head", + "headache", + "headband", + "headdress", + "header", + "headfirst", + "headland", + "headlight", + "headlong", + "headman", + "headpiece", + "headquarters", + "headrace", + "headsail", + "headshake", + "headsman", + "headstall", + "headstock", + "headstrong", + "healing", + "health", + "heap", + "hear", + "heard", + "hearer", + "hearse", + "heart", + "heart-whole", + "heartache", + "heartbreak", + "heartburn", + "heartfelt", + "hearth", + "heartsick", + "heartwood", + "heat", + "heater", + "heath", + "heather", + "heave", + "heavenward", + "heaver", + "heaves", + "hebdomad", + "hebe", + "hebetude", + "hebraist", + "hebrew", + "hebridean", + "hecatomb", + "heckle", + "hectare", + "hectogram", + "hectograph", + "hectolitre", + "hectometre", + "hector", + "hedge", + "hedgehog", + "hedger", + "hedgerow", + "heel", + "heft", + "hegira", + "heifer", + "height", + "heir", + "heiress", + "heirloom", + "hejira", + "held", + "helena", + "heliac", + "helichrysum", + "helicon", + "heliograph", + "heliogravure", + "heliotrope", + "heliotype", + "heliozoa", + "helium", + "helix", + "hell", + "hellbender", + "hellebore", + "hellespont", + "hellhound", + "hello", + "helm", + "helmet", + "helminth", + "helmsman", + "helot", + "help", + "helper", + "helpmeet", + "helter-skelter", + "helve", + "hem", + "hematite", + "hematocele", + "hematoma", + "hemerocallis", + "hemicycle", + "hemimetabola", + "hemipode", + "hemiptera", + "hemipteran", + "hemisphere", + "hemlock", + "hemorrhoids", + "hemp", + "hemstitch", + "henbit", + "henceforth", + "henceforward", + "henchman", + "hencoop", + "hendiadys", + "henhouse", + "henna", + "henroost", + "hep", + "hepatica", + "hepper", + "heptad", + "heptagon", + "herald", + "herb", + "herbalist", + "herbarium", + "herbivore", + "herculean", + "hercules", + "herd", + "herder", + "herdess", + "herdsman", + "here", + "hereabouts", + "hereafter", + "hereford", + "hereinafter", + "hereinbefore", + "hereof", + "hereto", + "heretofore", + "hereupon", + "herewith", + "heritor", + "hermaphrodite", + "hermeneutics", + "hermes", + "hermit", + "hero", + "heron", + "herpes", + "herpetologist", + "herr", + "herschel", + "hesitant", + "hesperides", + "hesperus", + "heterodox", + "heteronym", + "heteroptera", + "heulandite", + "hew", + "hewer", + "hewn", + "hexad", + "hexagon", + "hexahedron", + "hexangular", + "hexapod", + "hexapoda", + "hiatus", + "hibiscus", + "hiccough", + "hiddenite", + "hide", + "hidebound", + "hie", + "hierarch", + "hieroglyph", + "higgle", + "high", + "high-flown", + "high-low", + "high-pressure", + "high-strung", + "high-top", + "highbinder", + "highborn", + "highflier", + "highland", + "highlander", + "highroad", + "highwayman", + "hilar", + "hill", + "hilling", + "hillock", + "hillside", + "hilltop", + "hilt", + "hilum", + "hilus", + "himalayan", + "hind", + "hinder", + "hinderer", + "hinderest", + "hindermost", + "hindgut", + "hindi", + "hindmost", + "hindoo", + "hindu", + "hindustani", + "hinge", + "hint", + "hip", + "hippobosca", + "hippocampus", + "hippocrates", + "hippodrome", + "hippopotamus", + "hire", + "hireling", + "hirer", + "hires", + "hirsute", + "hirudinea", + "hirudo", + "hirundo", + "hiss", + "histologist", + "historiographer", + "hit", + "hitch", + "hither", + "hitherto", + "hitter", + "hives", + "ho", + "hoar", + "hoard", + "hoarder", + "hoarfrost", + "hoarse", + "hoax", + "hoaxer", + "hob", + "hobble", + "hobbler", + "hobbyhorse", + "hobnail", + "hobnob", + "hock", + "hod", + "hodgepodge", + "hodman", + "hoe", + "hoecake", + "hog", + "hogback", + "hogchoker", + "hogget", + "hogshead", + "hogwash", + "hoist", + "hold", + "holder", + "holdfast", + "hole", + "holibut", + "holing", + "holla", + "holland", + "hollander", + "hollands", + "hollo", + "holloa", + "hollow", + "hollyhock", + "holmium", + "holocaust", + "holocephali", + "holograph", + "holometabola", + "holster", + "homarus", + "home", + "homemade", + "homeopath", + "homer", + "homesick", + "homespun", + "homestead", + "homesteader", + "homeward", + "homewards", + "homicide", + "homiletics", + "homograph", + "homonym", + "homoptera", + "homopteran", + "homunculus", + "honest", + "honeybee", + "honeycomb", + "honeydew", + "honeymoon", + "honeysucker", + "honeysuckle", + "honk", + "honor", + "honorarium", + "hood", + "hoodlum", + "hoodoo", + "hoodwink", + "hoof", + "hook", + "hookah", + "hooker", + "hoop", + "hoopoe", + "hoopoo", + "hoosier", + "hoot", + "hop", + "hope", + "hoper", + "hopper", + "hopple", + "hopscotch", + "horde", + "hordeolum", + "horehound", + "horizon", + "horn", + "hornbeam", + "hornbill", + "hornblende", + "hornbook", + "hornet", + "hornpipe", + "hornpout", + "hornwort", + "horologe", + "horologer", + "horologist", + "horror", + "horror-struck", + "horse", + "horseback", + "horseflesh", + "horsehair", + "horsehead", + "horsehide", + "horselaugh", + "horseman", + "horsemint", + "horsepond", + "horseshoe", + "horseshoer", + "horsetail", + "horsewhip", + "horsewoman", + "horticulture", + "horticulturist", + "hosanna", + "hosier", + "hospice", + "host", + "hostel", + "hostess", + "hostile", + "hostler", + "hot", + "hotchpotch", + "hotel", + "hotfoot", + "hothouse", + "hotspur", + "hottentot", + "houdah", + "hound", + "hour", + "hourglass", + "houri", + "hours", + "house", + "housebreaker", + "housebuilder", + "household", + "householder", + "housekeeper", + "houseroom", + "housewife", + "housework", + "houyhnhnm", + "hove", + "hovel", + "hover", + "howdah", + "however", + "howitzer", + "howl", + "howler", + "hub", + "hubble-bubble", + "hubbub", + "huck", + "huckaback", + "huckster", + "hud", + "huddle", + "huddler", + "hue", + "huff", + "hug", + "huge", + "hugger", + "hugger-mugger", + "huguenot", + "hulk", + "hull", + "hullabaloo", + "hullo", + "hum", + "human", + "humanist", + "humankind", + "humble", + "humblebee", + "humbler", + "humbles", + "humbug", + "humdrum", + "humectant", + "humerus", + "hummer", + "hummock", + "humor", + "humorist", + "hump", + "humpback", + "humus", + "hun", + "hunch", + "hunchback", + "hundreder", + "hundredfold", + "hundredth", + "hung", + "hunger", + "hunk", + "hunker", + "hunks", + "hunt", + "hunter", + "huntress", + "huntsman", + "hurdle", + "hurl", + "hurler", + "hurling", + "hurons", + "hurrah", + "hurries", + "hurt", + "hurter", + "hurtle", + "husband", + "husbandman", + "hush", + "husk", + "hussar", + "hussite", + "hustings", + "hustle", + "hut", + "hutch", + "hyacinth", + "hyades", + "hydra", + "hydrangea", + "hydrant", + "hydrargyrum", + "hydraulics", + "hydride", + "hydrocarbon", + "hydrocele", + "hydrocephalus", + "hydrochloride", + "hydrodynamics", + "hydrologist", + "hydromel", + "hydrophyte", + "hydrostatics", + "hydrothorax", + "hydroxide", + "hydrozoa", + "hydrus", + "hyena", + "hygienics", + "hygienist", + "hygrodeik", + "hymenium", + "hymenomycetes", + "hymenopter", + "hymenoptera", + "hymenopteran", + "hymn", + "hyoscyamus", + "hypanthium", + "hyperbaton", + "hyperbola", + "hyperbole", + "hyperborean", + "hypericum", + "hyperotreta", + "hypnotizer", + "hypo", + "hypoblast", + "hypochlorite", + "hypochondriac", + "hypochondrium", + "hypocrite", + "hypoderma", + "hypodermis", + "hypospadias", + "hypotenuse", + "hyracoidea", + "hyrax", + "hyson", + "hyssop", + "hysterics", + "iceman", + "iconoclast", + "idealist", + "ideologist", + "idiot", + "idler", + "idolater", + "idolizer", + "ignitor", + "ignoramus", + "ignorant", + "illustrator", + "imbiber", + "immigrant", + "impairer", + "impatient", + "impeller", + "impenitent", + "imperialist", + "impersonator", + "impertinent", + "importer", + "impostor", + "impotent", + "impressionist", + "improver", + "in", + "inamorata", + "inca", + "inciter", + "income", + "incontinent", + "independent", + "indexer", + "indicator", + "inducer", + "infanticide", + "infidel", + "inflater", + "informant", + "informer", + "inhabitant", + "inhaler", + "inheritor", + "initiator", + "injector", + "inlander", + "inn", + "innocent", + "innovator", + "inoculator", + "inquirer", + "inquisitor", + "insolvent", + "inspector", + "inspirer", + "instigator", + "instructor", + "instructress", + "instrumentalist", + "insulator", + "insurer", + "insurgent", + "insurrectionist", + "intensifier", + "intercessor", + "interlocutor", + "interloper", + "internationalist", + "interpreter", + "interrogator", + "interrupter", + "interviewer", + "intolerant", + "intriguer", + "intruder", + "invader", + "inventor", + "investigator", + "investor", + "iota", + "iowas", + "ipecac", + "iran", + "ire", + "iridescent", + "iridium", + "iris", + "irishman", + "irk", + "irksome", + "iron", + "ironclad", + "ironer", + "ironist", + "ironmonger", + "ironsides", + "ironware", + "ironwood", + "ironwork", + "iroquois", + "irregular", + "irreligionist", + "irresolute", + "irreverent", + "irritant", + "is", + "isabella", + "isatis", + "ischias", + "ischium", + "isinglass", + "islam", + "island", + "islander", + "isle", + "islet", + "ism", + "isobar", + "isomer", + "isopod", + "isopoda", + "isosceles", + "isospondyli", + "isotherm", + "israelite", + "issue", + "issuer", + "isthmus", + "it", + "itch", + "item", + "itinerant", + "its", + "ixodes", + "izzard", + "jabber", + "jack-o-lantern", + "jackpot", + "jackscrew", + "jacksnipe", + "jackstraw", + "jacob", + "jacobite", + "jaconet", + "jacquard", + "jade", + "jadeite", + "jaeger", + "jag", + "jagger", + "jaguar", + "jaguarondi", + "jail", + "jailer", + "jak", + "jakes", + "jalousie", + "jam", + "jamaica", + "jamaican", + "jamb", + "jan", + "jangle", + "jangling", + "janitor", + "jansenist", + "janus", + "japan", + "japanese", + "jape", + "japonica", + "jar", + "jargon", + "jasper", + "jaundice", + "jaunt", + "java", + "javanese", + "jaw", + "jean", + "jeer", + "jeerer", + "jeers", + "jehovah", + "jejune", + "jejunum", + "jell", + "jennet", + "jerboa", + "jeremiad", + "jerk", + "jerker", + "jerry-built", + "jerusalem", + "jest", + "jester", + "jesuit", + "jesus", + "jet", + "jet-black", + "jetsam", + "jettison", + "jew", + "jewbush", + "jewel", + "jeweler", + "jewess", + "jezebel", + "jib", + "jibe", + "jig", + "jigger", + "jiggle", + "jilt", + "jingle", + "jingling", + "jingo", + "jinn", + "jinnee", + "jinrikisha", + "job", + "jobber", + "jocular", + "jocund", + "jog", + "jogger", + "joggle", + "john", + "joiner", + "joint", + "jointer", + "jointure", + "jointuress", + "jointworm", + "joist", + "joke", + "joker", + "jolt", + "jonah", + "jongleur", + "jonquil", + "jordan", + "jorum", + "joseph", + "joss", + "jostle", + "jot", + "jotter", + "joule", + "jounce", + "journalist", + "journeyer", + "journeyman", + "joust", + "jove", + "jowl", + "jubilant", + "jubilee", + "judas", + "judge", + "judicature", + "jug", + "juggernaut", + "juggle", + "juggler", + "juggling", + "juglans", + "jugular", + "juice", + "jujube", + "juke", + "julep", + "julienne", + "jumble", + "jump", + "jumper", + "junco", + "juncture", + "june", + "jungle", + "junior", + "juniper", + "junk", + "junker", + "junket", + "junta", + "junto", + "jupiter", + "jurist", + "juror", + "juryman", + "just", + "justice", + "justiciar", + "justifier", + "jut", + "jute", + "jutes", + "juvenile", + "kayak", + "keeper", + "kerchief", + "kern", + "kicker", + "kidnaper", + "killer", + "kindergartner", + "kinsman", + "kisser", + "kite", + "knacker", + "knave", + "knavess", + "kneeler", + "knell", + "knitter", + "knocker", + "know-all", + "knower", + "kopeck", + "kurd", + "l", + "laborer", + "ladino", + "lag", + "laggard", + "laird", + "lamaist", + "lamb", + "lame", + "lamenter", + "lamplighter", + "lancer", + "lander", + "landlubber", + "landman", + "landsman", + "languisher", + "larcener", + "larcenist", + "lasher", + "lass", + "lates", + "latex", + "lath", + "lathe", + "lather", + "latinist", + "latitude", + "latter", + "lattice", + "latticework", + "laud", + "laudanum", + "laudator", + "lauder", + "laugh", + "laugher", + "laughingstock", + "laughter", + "launce", + "launch", + "launder", + "laundress", + "laundryman", + "laurel", + "laurus", + "lava", + "lave", + "lavender", + "laver", + "lavisher", + "law", + "lawbreaker", + "lawgiver", + "lawmaker", + "lawn", + "lawsuit", + "lawyer", + "lax", + "layer", + "layman", + "lazar", + "lazaret", + "lazaretto", + "laze", + "lazuli", + "lazybones", + "lea", + "leach", + "lead", + "leader", + "leadwort", + "leaf", + "leaflet", + "leafstalk", + "league", + "leak", + "lean", + "lean-to", + "leap", + "leaper", + "leapfrog", + "lear", + "learn", + "learner", + "lease", + "leasehold", + "leaseholder", + "leash", + "least", + "leastways", + "leather", + "leatherback", + "leatherette", + "leatherneck", + "leatherwood", + "leave", + "leaver", + "leaves", + "leavings", + "lech", + "lecher", + "lectern", + "lector", + "lecture", + "lecturer", + "ledge", + "ledger", + "lee", + "leech", + "leek", + "leer", + "lees", + "leeward", + "left", + "left-hand", + "leg", + "legatee", + "legato", + "legend", + "leger", + "leghorn", + "legislator", + "legislature", + "legume", + "leipoa", + "leister", + "leisure", + "leitmotif", + "lemma", + "lemniscus", + "lemon", + "lemonade", + "lemur", + "lemuroidea", + "lena", + "lend", + "lender", + "lendes", + "lends", + "length", + "lengthways", + "lenient", + "lens", + "lent", + "lententide", + "lenticel", + "lenticular", + "lentiform", + "lentigo", + "lentil", + "lentisk", + "lento", + "leo", + "leon", + "leontodon", + "leopard", + "lepas", + "leper", + "lepidolite", + "lepidoptera", + "lepidote", + "les", + "less", + "lessee", + "lesser", + "lesses", + "lesson", + "lessor", + "lest", + "let", + "letch", + "lethe", + "letter", + "letterer", + "letterpress", + "lettuce", + "letup", + "leucadendron", + "leucocyte", + "leucoma", + "levant", + "levanter", + "levator", + "levee", + "level", + "leveler", + "leveling", + "lever", + "leveret", + "leviathan", + "levite", + "leviticus", + "lewd", + "lewis", + "lexicographer", + "lexicologist", + "lexicon", + "li", + "liana", + "liar", + "libel", + "libeler", + "liberalist", + "liberator", + "libra", + "librettist", + "libretto", + "libyan", + "lice", + "license", + "licensee", + "licenser", + "lichi", + "licit", + "lick", + "licorice", + "lie", + "lief", + "liege", + "liegeman", + "lieger", + "lier", + "lieu", + "lieutenant", + "life", + "lifeblood", + "lifeboat", + "lifelong", + "lifetime", + "lift", + "lifter", + "ligan", + "ligature", + "light", + "lighter", + "lighterman", + "lighthouse", + "lights", + "lightsome", + "lightwood", + "lignite", + "ligule", + "like", + "likelihood", + "lilac", + "lilt", + "lima", + "liman", + "limax", + "limb", + "limber", + "limbo", + "limbus", + "lime", + "limekiln", + "limewater", + "limit", + "limiter", + "limn", + "limner", + "limonite", + "limp", + "limper", + "limpet", + "limulus", + "lind", + "linear", + "lineman", + "liner", + "lingam", + "linger", + "lingerer", + "lingo", + "lingua", + "linguist", + "linguistics", + "link", + "linkman", + "linnean", + "linnet", + "linoleum", + "linstock", + "lint", + "lintel", + "lintwhite", + "linum", + "lionet", + "lip", + "lipogram", + "lipoma", + "liquescent", + "liqueur", + "liquidambar", + "liquidator", + "liquor", + "liquorice", + "lira", + "liriodendron", + "lisbon", + "lisle", + "lisp", + "lisper", + "liss", + "lissom", + "lissome", + "list", + "listener", + "lister", + "lit", + "litchi", + "lite", + "liter", + "literati", + "literatim", + "literature", + "lithe", + "lither", + "lithesome", + "lithium", + "lithoglyptics", + "lithograph", + "lithographer", + "lithophyte", + "litigant", + "litigator", + "litmus", + "litotes", + "litre", + "litter", + "litterateur", + "little", + "littorina", + "littress", + "liturgics", + "liturgist", + "live-forever", + "livelihood", + "livelong", + "liver", + "liverleaf", + "liverwort", + "liveryman", + "lives", + "liza", + "lizard", + "llama", + "llano", + "lloyds", + "loach", + "load", + "loader", + "loadstar", + "loaf", + "loafer", + "loam", + "loan", + "loath", + "loathe", + "loather", + "loathsome", + "loaves", + "lob", + "lobar", + "lobbyist", + "lobe", + "lobscouse", + "lobster", + "lobular", + "lobule", + "lobworm", + "locale", + "locator", + "loch", + "lock", + "locker", + "locket", + "lockjaw", + "lockman", + "lockout", + "locksmith", + "lockup", + "loco", + "locomotor", + "locule", + "loculus", + "locus", + "locust", + "locusta", + "lode", + "lodestar", + "lodge", + "lodger", + "loess", + "loft", + "log", + "logan", + "logarithm", + "loge", + "logger", + "loggerhead", + "loggerheads", + "logics", + "logistics", + "logogram", + "logomachist", + "logos", + "logotype", + "logroll", + "logrolling", + "logwood", + "loir", + "loiter", + "loiterer", + "loki", + "loligo", + "loll", + "lollipop", + "lollop", + "lombard", + "london", + "londoner", + "lonesome", + "long", + "longan", + "longboat", + "longbow", + "longer", + "longhand", + "longhorn", + "longicorn", + "longitude", + "longlegs", + "longshoreman", + "longways", + "loo", + "look", + "lookdown", + "looker", + "lookout", + "loom", + "loon", + "loop", + "looper", + "loophole", + "loos", + "loosestrife", + "loot", + "looter", + "lop", + "lope", + "lopper", + "loquat", + "lord", + "lore", + "lorgnette", + "lorica", + "loricata", + "lorikeet", + "loser", + "loss", + "lost", + "lot", + "loth", + "lothario", + "lotto", + "lotus", + "lotus-eater", + "loud", + "lough", + "lounge", + "lounger", + "lour", + "louse", + "lout", + "louver", + "louvre", + "love", + "lovelorn", + "lover", + "lovesome", + "low", + "low-pressure", + "lowborn", + "lower", + "lowermost", + "lowland", + "lowlander", + "loyalist", + "lozenge", + "lu", + "lubber", + "lubricant", + "lubricator", + "luce", + "lucent", + "lucerne", + "lucifer", + "luck", + "lucre", + "luculent", + "luddite", + "lues", + "luff", + "lug", + "lugger", + "lugsail", + "lugworm", + "luke", + "lukewarm", + "lull", + "lumbago", + "lumbar", + "lumber", + "lumberman", + "lummox", + "lump", + "lumper", + "lumpsucker", + "luna", + "lunar", + "lunch", + "luncheon", + "lunette", + "lung", + "lunge", + "lungis", + "lunisolar", + "lunt", + "lunula", + "lunule", + "lupus", + "lurch", + "lurcher", + "lure", + "lurk", + "lurker", + "lush", + "lust", + "luster", + "lustre", + "lustrum", + "lutanist", + "lute", + "lutenist", + "lutheran", + "lutist", + "lux", + "luxe", + "luxuriant", + "lycanthrope", + "lyceum", + "lychee", + "lychnis", + "lycoperdon", + "lycopod", + "lycopodium", + "lye", + "lygodium", + "lymph", + "lymphadenoma", + "lymphoma", + "lynch", + "lynx", + "lyra", + "lyre", + "lyrist", + "lyssa", + "mace", + "macer", + "machete", + "machinator", + "machinist", + "macho", + "macintosh", + "mackerel", + "mackinaw", + "mackintosh", + "mackle", + "macrobiotics", + "macrocosm", + "macron", + "macropus", + "macrosporangium", + "macrospore", + "macula", + "macule", + "mad", + "madam", + "madame", + "madcap", + "madder", + "madderwort", + "made", + "madeira", + "mademoiselle", + "madhouse", + "madman", + "madnep", + "madonna", + "madoqua", + "madrepore", + "madrigalist", + "madwort", + "maelstrom", + "maestro", + "magenta", + "maggot", + "magi", + "magilp", + "magistrature", + "magma", + "magnesite", + "magnesium", + "magnet", + "magnetics", + "magnetite", + "magnetograph", + "magnificat", + "magnificent", + "magnifico", + "magnifier", + "magniloquent", + "magnitude", + "magnum", + "magpie", + "magyar", + "maha", + "mahabharatam", + "maharajah", + "mahdi", + "mahoe", + "mahound", + "mahout", + "mahratta", + "maidenhair", + "maidenhead", + "maidenhood", + "maidhood", + "maidservant", + "maiger", + "maigre", + "mail", + "mailing", + "maim", + "mainland", + "mainmast", + "mains", + "mainsail", + "mainsheet", + "maintainer", + "majolica", + "major", + "major-domo", + "majuscule", + "make", + "make-believe", + "make-peace", + "make-up", + "maker", + "makeshift", + "makeweight", + "malacca", + "malachite", + "malacologist", + "malacopterygii", + "malacostraca", + "maladroit", + "malaga", + "malapropos", + "malar", + "malayalam", + "malayan", + "malcontent", + "male", + "maledict", + "malefactor", + "maleficent", + "maleo", + "malevolent", + "malice", + "malign", + "malignant", + "maligner", + "malinger", + "malingerer", + "mall", + "mallard", + "mallet", + "malleus", + "mallophaga", + "mallotus", + "mallow", + "mallows", + "malodor", + "malpractice", + "malt", + "maltese", + "maltha", + "maltman", + "maltreat", + "maltster", + "mama", + "mamma", + "mammalogist", + "mammee", + "mammilla", + "mammon", + "mammoth", + "man", + "man-eater", + "manacle", + "manager", + "manatee", + "manchu", + "mandamus", + "mandator", + "mandibular", + "mandioc", + "mandioca", + "mandragora", + "mandrake", + "mandrel", + "mandrill", + "manes", + "maneuver", + "maneuverer", + "manganese", + "manganite", + "mange", + "mangel-wurzel", + "manger", + "mangle", + "mangler", + "mango", + "mangonel", + "mangrove", + "manhole", + "manhood", + "maniac", + "manichean", + "manichee", + "manicure", + "manifest", + "manifesto", + "manifold", + "manihot", + "manila", + "manilla", + "manioc", + "manipulator", + "manis", + "mankind", + "manna", + "manner", + "manor", + "manse", + "manservant", + "manslaughter", + "manslayer", + "manta", + "mantel", + "mantelet", + "mantelpiece", + "mantilla", + "mantis", + "mantissa", + "mantle", + "mantlet", + "mantling", + "mantra", + "mantrap", + "mantua", + "manubrium", + "manufacture", + "manufacturer", + "manul", + "manumit", + "manure", + "manus", + "manuscript", + "manx", + "manzanita", + "maori", + "map", + "maple", + "mar", + "mara", + "marabou", + "marabout", + "maranta", + "maraschino", + "marasmus", + "maraud", + "marauder", + "marble", + "marbling", + "marc", + "march", + "marcher", + "mare", + "marge", + "margosa", + "margrave", + "marguerite", + "marigold", + "marimba", + "marinade", + "mariner", + "marionette", + "maritime", + "marjoram", + "mark", + "marker", + "market", + "marketer", + "markhoor", + "marksman", + "marl", + "marlite", + "marmalade", + "marmorean", + "marmoset", + "marmot", + "maroon", + "marque", + "marquee", + "marquess", + "marquis", + "marrow", + "marrubium", + "mars", + "marsala", + "marseilles", + "marsh", + "marshaling", + "marsupium", + "mart", + "martagon", + "martinet", + "martingale", + "martinmas", + "martyr", + "martyrdom", + "marvel", + "mascot", + "maser", + "mash", + "masher", + "mask", + "masker", + "mason", + "masora", + "masorite", + "masque", + "masquerade", + "masquerader", + "mass", + "massacre", + "massasauga", + "masser", + "masseter", + "masseur", + "masseuse", + "massicot", + "mast", + "master", + "masterpiece", + "masterwort", + "masthead", + "mastiff", + "mastodon", + "mat", + "matador", + "match", + "matcher", + "matchlock", + "matchmaker", + "matelote", + "mater", + "materialist", + "math", + "mathematics", + "matriarch", + "matricide", + "matrix", + "matron", + "matt", + "matte", + "matter", + "matter-of-fact", + "mattock", + "mattress", + "mature", + "maturer", + "matzoth", + "maul", + "mauling", + "maund", + "maunder", + "mausoleum", + "mauve", + "maverick", + "mavis", + "maw", + "maxilla", + "maxim", + "maximum", + "maya", + "maybe", + "mayflower", + "mayhap", + "mayhem", + "mayor", + "mayoress", + "maypole", + "maypop", + "mazama", + "maze", + "mazer", + "mazurka", + "me", + "mead", + "meadow", + "meager", + "meagre", + "mealies", + "mealtime", + "mean", + "meander", + "meant", + "meantime", + "meanwhile", + "measles", + "measure", + "measurer", + "meat", + "meatus", + "mechanics", + "mechanist", + "meconium", + "medalist", + "meddle", + "meddler", + "meddlesome", + "meddling", + "mediant", + "mediastinum", + "mediator", + "mediatrix", + "medics", + "mediocre", + "mediterranean", + "medium", + "medlar", + "medulla", + "medusa", + "meek", + "meerkat", + "meerschaum", + "meet", + "meeter", + "meetinghouse", + "megachile", + "megalith", + "megalocyte", + "megalopolis", + "megalosaur", + "megalosaurus", + "megapode", + "megathere", + "megatherium", + "megilp", + "megohm", + "megrim", + "melastoma", + "melchite", + "meleagris", + "melena", + "melilot", + "melissa", + "mellow", + "melodrama", + "melon", + "melt", + "melter", + "member", + "memento", + "memoir", + "memorandum", + "menace", + "menagerie", + "mend", + "mender", + "mendicant", + "mends", + "menhir", + "meninges", + "meniscus", + "mennonite", + "menopause", + "menses", + "menstruum", + "mentha", + "mentor", + "mentum", + "menu", + "meow", + "mercantile", + "mercer", + "merchandiser", + "merchant", + "merchantman", + "mere", + "merganser", + "merge", + "merger", + "mericarp", + "meringue", + "merino", + "meristem", + "merit", + "merl", + "merle", + "merlon", + "merman", + "merostomata", + "merry-go-round", + "merrymaker", + "mesa", + "mesdames", + "mesembryanthemum", + "mesencephalon", + "mesh", + "mesmerist", + "mesmerizer", + "mesoblast", + "mesocarp", + "mesocolon", + "mesoderm", + "mesohippus", + "meson", + "mesothelium", + "mesquit", + "mesquite", + "mess", + "messenger", + "messiah", + "messidor", + "messieurs", + "mest", + "mester", + "mestizo", + "met", + "metabola", + "metabolite", + "metacarpus", + "metallurgist", + "metamere", + "metaphor", + "metaphysics", + "metatarsus", + "metazoa", + "metazoan", + "mete", + "metencephalon", + "meteor", + "meteorite", + "meteorologist", + "meter", + "meth", + "method", + "methodist", + "metre", + "metronome", + "metropolis", + "metropolitan", + "mettle", + "mettlesome", + "mew", + "mewl", + "mews", + "mexican", + "mezereon", + "mezuzoth", + "mezzo", + "mezzo-relievo", + "mezzo-rilievo", + "mezzo-soprano", + "mezzotint", + "mi", + "miamis", + "miasm", + "miaul", + "mica", + "mice", + "michaelmas", + "mickle", + "micmacs", + "microbe", + "micrococcus", + "microcosm", + "microcyte", + "microfarad", + "micron", + "micropyle", + "microscopist", + "microsporangium", + "microspore", + "microvolt", + "midas", + "middle", + "middleman", + "middlemost", + "middler", + "middling", + "middlings", + "midgard", + "midge", + "midget", + "midland", + "midmost", + "midnight", + "midrash", + "midrib", + "midriff", + "midshipman", + "midships", + "midst", + "midsummer", + "midweek", + "midwife", + "midwinter", + "miff", + "might", + "mignonette", + "migrant", + "mikado", + "milanese", + "milch", + "mild", + "mildew", + "mile", + "milepost", + "milfoil", + "militant", + "militarist", + "militiaman", + "milk", + "milker", + "milkman", + "milksop", + "milkwort", + "mill", + "millboard", + "milldam", + "millennium", + "miller", + "millerite", + "millet", + "milliard", + "milligram", + "millilitre", + "millimetre", + "milliner", + "milling", + "millionaire", + "millionairess", + "millionth", + "millwork", + "millwright", + "milt", + "milvus", + "mime", + "mimeograph", + "mimicker", + "mimosa", + "mina", + "minaret", + "mince", + "mincer", + "mind", + "minder", + "miner", + "mineralogist", + "minerva", + "minge", + "mingle", + "mingle-mangle", + "miniature", + "miniaturist", + "minibus", + "minim", + "minimum", + "minimus", + "minister", + "ministrant", + "minium", + "miniver", + "mink", + "minnow", + "minor", + "minos", + "minotaur", + "minster", + "minstrel", + "mint", + "minter", + "minuend", + "minuet", + "minus", + "minuscule", + "minute", + "minuteman", + "minx", + "mirabilis", + "miracle", + "mire", + "mirror", + "mirth", + "mite", + "miter", + "miterwort", + "mithras", + "mitre", + "mitt", + "mix", + "mixer", + "mixture", + "mizzenmast", + "mizzle", + "mnemonics", + "mnemosyne", + "mo", + "moa", + "moan", + "moat", + "mob", + "mobcap", + "mobile", + "mocha", + "mock", + "mocker", + "mode", + "model", + "modeler", + "modeling", + "moder", + "moderato", + "moderator", + "modern", + "modernist", + "modest", + "modicum", + "modifier", + "modiolus", + "modiste", + "modular", + "module", + "modulus", + "mogul", + "mohair", + "mohammedan", + "mohawk", + "mohicans", + "moho", + "moil", + "moire", + "moist", + "moistener", + "moisture", + "moke", + "mola", + "molar", + "molasses", + "mold", + "moldboard", + "molder", + "mole", + "molech", + "molecular", + "molecule", + "molehill", + "molest", + "molester", + "moll", + "mollah", + "molle", + "mollusc", + "mollusca", + "molluscum", + "mollusk", + "moloch", + "molt", + "molto", + "molybdenite", + "molybdenum", + "momentum", + "momot", + "momus", + "mona", + "monad", + "monarch", + "monarchess", + "monarchist", + "monas", + "monera", + "moneran", + "moneron", + "moneyer", + "moneywort", + "monger", + "mongolians", + "mongols", + "mongrel", + "monitor", + "monk", + "monkshood", + "mono", + "monocarp", + "monochrome", + "monocle", + "monocotyledon", + "monogamist", + "monogram", + "monograph", + "monolith", + "monologist", + "monologue", + "monomaniac", + "monophysite", + "monopolist", + "monopolizer", + "monotheist", + "monotremata", + "monotreme", + "monotropa", + "monotype", + "monovalent", + "monoxide", + "monsieur", + "monsoon", + "monster", + "montaigne", + "monte", + "montgolfier", + "month", + "moo", + "mood", + "moolah", + "moon", + "moonbeam", + "moonflower", + "moonie", + "moonlight", + "moonlit", + "moonshiner", + "moonstruck", + "moonwort", + "moor", + "mooress", + "moorland", + "moosewood", + "moot", + "mooter", + "mop", + "mopboard", + "mope", + "moppet", + "moquette", + "morale", + "moraler", + "moralist", + "morass", + "morceau", + "mordant", + "more", + "morel", + "morello", + "moreover", + "moresque", + "morgue", + "moribund", + "mormon", + "morn", + "moro", + "moroccan", + "morocco", + "morpheus", + "morris", + "morrow", + "morse", + "morsel", + "mortar", + "mortgagee", + "mortgager", + "mortgagor", + "morula", + "morus", + "moselle", + "moses", + "moslem", + "mosque", + "mosquito", + "moss", + "moss-grown", + "mossback", + "most", + "mot", + "mote", + "motet", + "moth", + "mother", + "mother-in-law", + "mother-of-pearl", + "motherhood", + "motherland", + "motherwort", + "motif", + "motile", + "motmot", + "motor", + "motorman", + "mottle", + "motto", + "mouflon", + "mould", + "mouldboard", + "moulder", + "moult", + "mound", + "mount", + "mountaineer", + "mountebank", + "mounter", + "mourn", + "mourner", + "mouse", + "mouser", + "moustache", + "mouth", + "mouthpiece", + "move", + "mover", + "mow", + "mower", + "mown", + "moxie", + "much", + "muck", + "muckle", + "mucopurulent", + "mucor", + "mucus", + "mud", + "muddle", + "muff", + "muffle", + "muffler", + "mufti", + "mug", + "mugil", + "mugwort", + "mugwump", + "muhammadan", + "muhammedan", + "muharram", + "mulatto", + "mulch", + "mulct", + "mule", + "muleteer", + "mull", + "mulla", + "mullah", + "muller", + "mullet", + "multicellular", + "multicolor", + "multiform", + "multipartite", + "multiple", + "multiplex", + "multiplicand", + "multiplier", + "multipotent", + "multitude", + "multivalent", + "mum", + "mumble", + "mumbler", + "mumbling", + "mummer", + "mummichog", + "mumps", + "munch", + "muncher", + "mung", + "munificent", + "munjeet", + "muntjac", + "murder", + "murderer", + "murderess", + "murk", + "murmur", + "murmurer", + "murre", + "mus", + "musa", + "musca", + "muscadel", + "muscat", + "muscatel", + "musci", + "muscle", + "muscling", + "muscovite", + "muscular", + "musculature", + "muse", + "muser", + "musette", + "museum", + "mush", + "mushroom", + "musk", + "muskat", + "muskellunge", + "musket", + "musketeer", + "muskmelon", + "muskogees", + "muskrat", + "muskwood", + "muslim", + "musquash", + "muss", + "mussel", + "must", + "mustache", + "mustang", + "mustard", + "muster", + "mute", + "mutilator", + "mutineer", + "mutter", + "mutterer", + "mutton", + "muzzle", + "mya", + "mycelium", + "mycologist", + "myelencephala", + "myelencephalon", + "mylodon", + "myna", + "myocardium", + "myogram", + "myoma", + "myomorpha", + "myope", + "myosotis", + "myriad", + "myriagram", + "myriametre", + "myriapod", + "myriapoda", + "myrica", + "myrmidon", + "myrobalan", + "myroxylon", + "myrrh", + "myrtle", + "myth", + "mythologist", + "mytilus", + "myxoma", + "n", + "nabob", + "nailer", + "name", + "namer", + "narrator", + "narrower", + "nationalist", + "naturalist", + "naturist", + "navigator", + "necromancer", + "needer", + "needlewoman", + "neglecter", + "negotiator", + "negotiatrix", + "negress", + "neighbor", + "neologist", + "neoplatonist", + "nephew", + "nepotist", + "neurologist", + "neuter", + "neutralist", + "newcomer", + "newsman", + "newsmonger", + "nibbler", + "niece", + "niggard", + "niggler", + "nihilist", + "nincompoop", + "nipper", + "no", + "nobleman", + "nominator", + "nominee", + "nonconformist", + "nonmember", + "nonpareil", + "nonresident", + "nonresistant", + "noodle", + "norman", + "northerner", + "noticer", + "novice", + "ns", + "nt", + "nullifier", + "numberer", + "numerator", + "nun", + "nurse", + "nurser", + "nurseryman", + "nursling", + "o", + "oaf", + "oak", + "oakum", + "oar", + "oatcake", + "oath", + "obeah", + "obedient", + "obelisk", + "obese", + "obi", + "obit", + "object", + "objector", + "obligato", + "oblige", + "obliger", + "oblique", + "oblong", + "oboe", + "oboist", + "obolus", + "obscurantist", + "obscure", + "obscurer", + "observant", + "observe", + "observer", + "obsess", + "obsolesce", + "obsolescent", + "obsolete", + "obstacle", + "obstetrics", + "obstruct", + "obstructer", + "obstructionist", + "obstruent", + "obtrude", + "obtund", + "obturator", + "obtuse", + "obverse", + "oca", + "occident", + "occidentals", + "occiput", + "occlude", + "occult", + "occultist", + "occupant", + "occupier", + "occur", + "occurrent", + "ocean", + "oceanus", + "ocellus", + "ocelot", + "ocher", + "ochre", + "octad", + "octagon", + "octahedron", + "octangular", + "octant", + "octave", + "octavo", + "octet", + "october", + "octopod", + "octopoda", + "octopus", + "octoroon", + "octroi", + "octuple", + "ocular", + "oculist", + "oculomotor", + "oculus", + "od", + "odalisque", + "odd", + "odds", + "ode", + "odist", + "odium", + "odonata", + "odor", + "ods", + "off", + "offend", + "offender", + "offense", + "offer", + "offerer", + "offhand", + "office", + "officeholder", + "officer", + "officiant", + "offset", + "offshoot", + "offshore", + "oft", + "oftentimes", + "ofttimes", + "ogdoad", + "ogee", + "ogle", + "ogler", + "ogre", + "ogress", + "oh", + "ohm", + "oil", + "oilbird", + "oilcloth", + "oiler", + "oilman", + "ojibways", + "oker", + "okra", + "old", + "oldster", + "olea", + "oleander", + "oleaster", + "olecranon", + "olibanum", + "oligarch", + "oligoclase", + "olivenite", + "oliver", + "olla", + "olympiad", + "omahas", + "omasum", + "omega", + "omelet", + "omentum", + "omit", + "ommatidium", + "omnibus", + "omnipotent", + "omnipresent", + "omniscient", + "omnium-gatherum", + "omphalocele", + "omphalos", + "on", + "onager", + "once", + "oncidium", + "one", + "one-horse", + "oneidas", + "ones", + "onomasticon", + "onondagas", + "onrush", + "onset", + "onslaught", + "onus", + "onward", + "onwards", + "onychophora", + "onyx", + "oolong", + "ooze", + "opah", + "opalesce", + "opalescent", + "opaque", + "open-air", + "openbill", + "opener", + "openwork", + "opera", + "operand", + "operant", + "operator", + "opercula", + "operculum", + "operetta", + "ophiophagus", + "ophiuchus", + "ophiurida", + "ophiuroidea", + "ophryon", + "ophthalmologist", + "opisthotonos", + "opium", + "opopanax", + "opossum", + "opponent", + "opportune", + "opportunist", + "opposer", + "opposite", + "oppress", + "oppressor", + "opprobrium", + "oppugn", + "optics", + "optimist", + "opulent", + "opus", + "or", + "ora", + "orach", + "orache", + "oracle", + "oracular", + "orang", + "orange", + "orangeade", + "orangeman", + "orator", + "oratorio", + "orb", + "orbicular", + "orbit", + "orchard", + "orchestra", + "orchil", + "orchis", + "ordainer", + "order", + "orderer", + "ordinand", + "ordure", + "ore", + "oread", + "oreide", + "organ", + "organdie", + "organist", + "organizer", + "organon", + "orgasm", + "orgies", + "oriel", + "orient", + "orientalist", + "orifice", + "oriflamme", + "origanum", + "originator", + "oriole", + "orison", + "orleans", + "orlop", + "ormer", + "ormolu", + "ormuzd", + "ornithologist", + "ornithopoda", + "ornithorhynchus", + "oroide", + "orotund", + "orphan", + "orphanhood", + "orpheus", + "orris", + "orthoclase", + "orthodox", + "orthopedist", + "orthoptera", + "orthopteran", + "ortolan", + "ortygan", + "oryx", + "oryza", + "os", + "osages", + "osar", + "oscan", + "oscines", + "oscitant", + "osier", + "osiris", + "osmanli", + "osmium", + "osmund", + "oss", + "ossicle", + "ossiculum", + "ostensorium", + "osteoblast", + "osteoclast", + "osteologer", + "osteologist", + "osteoma", + "osteosarcoma", + "ostiole", + "ostler", + "ostracoda", + "ostracodermi", + "ostrea", + "ostrich", + "ostrogoth", + "other", + "otis", + "otologist", + "ottar", + "ottawas", + "otter", + "ottoman", + "oubliette", + "ounce", + "ouse", + "ousel", + "oust", + "ouster", + "ouzel", + "ova", + "ovenbird", + "oviduct", + "oviform", + "ovipositor", + "ovolo", + "ovular", + "ovule", + "ovum", + "owe", + "owl", + "owlet", + "own", + "owner", + "ox", + "oxalis", + "oxbow", + "oxeye", + "oxford", + "oxheart", + "oxide", + "oxidizer", + "oxime", + "oxlip", + "oxtongue", + "oxymoron", + "oyster", + "ozocerite", + "pack", + "packer", + "packet", + "packman", + "pact", + "pad", + "padder", + "paddle", + "paddock", + "pademelon", + "padlock", + "paducahs", + "pagan", + "pageant", + "pagoda", + "pahlevi", + "pahoehoe", + "paigle", + "pail", + "paillasse", + "pains", + "paint", + "painter", + "pair", + "palace", + "palaver", + "pale", + "paleface", + "paleographer", + "paleographist", + "paleolith", + "paleontologist", + "palestra", + "palette", + "palgrave", + "pali", + "palimpsest", + "palindrome", + "paling", + "palinurus", + "palisade", + "pall", + "pall-mall", + "palladium", + "pallas", + "pallbearer", + "pallet", + "palliasse", + "pallium", + "pallor", + "palm", + "palmar", + "palmer", + "palmetto", + "palmister", + "palmyra", + "palpebra", + "palpitant", + "palsgrave", + "palter", + "pampas", + "pamper", + "pamperer", + "pamphlet", + "pamphleteer", + "pan", + "panacea", + "panache", + "pancake", + "pancreas", + "panda", + "pandanus", + "pandar", + "pandemonium", + "pander", + "pandora", + "panduriform", + "panegyrist", + "panel", + "paneling", + "pang", + "panic-struck", + "panicle", + "panicum", + "pannier", + "panopticon", + "panorama", + "pant", + "pantaloon", + "pantechnicon", + "pantheist", + "pantheon", + "panther", + "pantile", + "pantograph", + "pantomime", + "pantomimist", + "pap", + "papa", + "papaver", + "papaw", + "paper", + "paperweight", + "papilla", + "papilliform", + "papilloma", + "papist", + "pappus", + "papuan", + "papule", + "papyrus", + "par", + "para", + "parabola", + "parachute", + "paraclete", + "parade", + "paradigm", + "paradisiac", + "paradox", + "paragon", + "paragonite", + "paragraph", + "paragrapher", + "paraguayan", + "parakeet", + "paraldehyde", + "paralipomenon", + "parallax", + "parallel", + "parallelogram", + "parallelopipedon", + "paralyse", + "paralyze", + "paramount", + "paramour", + "paramours", + "parapet", + "paraph", + "paraphrase", + "parapodium", + "paraquet", + "parasite", + "parboil", + "parcel", + "parceling", + "parch", + "parchesi", + "pardon", + "pardoner", + "pare", + "parenchyma", + "parent", + "parenthood", + "parer", + "parget", + "pariah", + "paries", + "parietes", + "paris", + "parishioner", + "parisienne", + "park", + "parker", + "parlor", + "parmesan", + "parnassus", + "parodist", + "parole", + "paroquet", + "paroxysm", + "parquet", + "parr", + "parrakeet", + "parricide", + "parrot", + "parse", + "parsee", + "parser", + "parsnip", + "parson", + "part", + "partake", + "partaker", + "parterre", + "parthenon", + "participant", + "participle", + "particle", + "particular", + "partisan", + "partita", + "partner", + "partook", + "partridge", + "parturient", + "parvenu", + "parvis", + "pas", + "pasch", + "pascha", + "pasha", + "pasquinade", + "pass", + "passado", + "passant", + "passementerie", + "passenger", + "passer", + "passeres", + "passiflora", + "passim", + "passover", + "passport", + "password", + "past", + "paste", + "pasteboard", + "pastel", + "paster", + "pastern", + "pastil", + "pastille", + "pastime", + "pastor", + "pastorale", + "pasture", + "pat", + "pataca", + "patas", + "patch", + "patchouli", + "patchwork", + "patella", + "patellar", + "patelliform", + "patent", + "patentee", + "paterfamilias", + "paternoster", + "path", + "pathfinder", + "pathologist", + "pathos", + "patient", + "patina", + "patio", + "patois", + "patriarch", + "patricide", + "patriot", + "patristics", + "patrolman", + "patron", + "patter", + "pattern", + "paul", + "paunch", + "pauper", + "pauropoda", + "pause", + "pavan", + "pave", + "pavior", + "pavo", + "paw", + "pawl", + "pawn", + "pawnbroker", + "pawnee", + "pawnees", + "pawpaw", + "pax", + "payee", + "payer", + "paymaster", + "paynim", + "pea", + "peace", + "peacemaker", + "peach", + "peachick", + "peacock", + "peafowl", + "peak", + "pean", + "peanut", + "pear", + "pearl", + "pearlings", + "pearlite", + "pearlwort", + "peasant", + "pease", + "peat", + "peba", + "pebble", + "pecan", + "peccadillo", + "peccant", + "peck", + "pecker", + "pecopteris", + "pectus", + "peculator", + "peculiar", + "pedagog", + "pedagogics", + "pedagogue", + "pedant", + "peddle", + "peddler", + "peddling", + "pederast", + "pedicel", + "pedicle", + "pediculati", + "pediculus", + "pedigree", + "pedipalpi", + "pedlar", + "peduncle", + "pee", + "peek", + "peekaboo", + "peel", + "peeler", + "peep", + "peeper", + "peephole", + "peer", + "peeress", + "peewit", + "peg", + "pegasus", + "pegmatite", + "pehlevi", + "pekan", + "pekoe", + "pelargonium", + "pelecaniformes", + "pelf", + "pelican", + "pelisse", + "pell-mell", + "pellet", + "pellicle", + "pelt", + "pelter", + "peludo", + "pelvis", + "pemmican", + "pemphigus", + "penchant", + "pencil", + "penciling", + "pendant", + "pendent", + "pendragon", + "pendulum", + "penelope", + "peninsula", + "peninsular", + "penis", + "penitent", + "penknife", + "penman", + "pennant", + "pennatula", + "pennon", + "pennoncel", + "pennoncelle", + "pennyweight", + "pennyworth", + "penologist", + "pens", + "pensioner", + "penstock", + "pent", + "pentacle", + "pentad", + "pentagon", + "pentagram", + "pentahedron", + "pentail", + "pentangle", + "pentangular", + "pentastomida", + "pentateuch", + "pentathlon", + "pentavalent", + "pentecost", + "pentecostals", + "penthouse", + "pentoxide", + "penuchle", + "penult", + "penultima", + "penumbra", + "peon", + "people", + "peorias", + "peplus", + "pepper", + "peppercorn", + "pepperidge", + "peppermint", + "pepperwort", + "peradventure", + "perambulator", + "perca", + "percale", + "perceiver", + "percept", + "perch", + "percher", + "percheron", + "perchloride", + "perciformes", + "percipient", + "percoidea", + "percolator", + "percomorphi", + "percuss", + "perdix", + "perfect", + "perfecter", + "perfectionist", + "perforce", + "perform", + "performer", + "perfume", + "perfumer", + "perfuse", + "perhaps", + "peri", + "perianth", + "pericardiac", + "pericardium", + "pericarp", + "periclase", + "peridium", + "peridot", + "peridotite", + "perigee", + "perigonium", + "peril", + "perilla", + "perilymph", + "perimysium", + "perineum", + "perineurium", + "period", + "periosteum", + "peripatus", + "perisperm", + "perissodactyla", + "peristyle", + "perithecium", + "peritoneum", + "periwig", + "periwinkle", + "perjure", + "perjurer", + "perk", + "permanent", + "permeant", + "permians", + "permit", + "permute", + "pernio", + "peroxide", + "perpendicular", + "perpetrator", + "perplex", + "perquisite", + "persecute", + "persecutor", + "perseus", + "persevere", + "persimmon", + "persist", + "persistent", + "person", + "persona", + "personnel", + "perspire", + "persuade", + "persuader", + "pert", + "pertinent", + "perturb", + "peruke", + "peruse", + "pervade", + "perverse", + "pervert", + "pes", + "peseta", + "peso", + "pessimist", + "pest", + "pester", + "pesterer", + "pesthouse", + "pestilent", + "pestle", + "pet", + "petard", + "peter", + "petiole", + "petiolule", + "petitioner", + "petrel", + "petrogale", + "petrolatum", + "petroleum", + "petticoat", + "pettifog", + "pettifogger", + "petulant", + "pew", + "pewee", + "pewit", + "pewter", + "peziza", + "pfennig", + "phagocyte", + "phalanger", + "phalanges", + "phalangist", + "phalanx", + "phalarope", + "phallus", + "phantasm", + "phantom", + "pharaoh", + "pharisee", + "pharmacist", + "pharmacologist", + "pharos", + "pharynx", + "phase", + "phaseolus", + "pheasant", + "phenomenon", + "philander", + "philanderer", + "philanthropist", + "philatelist", + "philhellenist", + "philip", + "phillipsite", + "phillyrea", + "philologist", + "philologue", + "philomath", + "philosopher", + "philosophizer", + "philter", + "phiz", + "phlebogram", + "phlebotomist", + "phlegm", + "phleum", + "phlogiston", + "phlogopite", + "phlox", + "phoca", + "pholas", + "phonetics", + "phonics", + "phonogram", + "phonograph", + "phonologist", + "phosphor", + "phosphoresce", + "phosphorescent", + "phosphorus", + "photo", + "photograph", + "photographer", + "photogravure", + "photolithograph", + "photomicrograph", + "photosphere", + "phrase", + "phrenologist", + "phyle", + "phyllode", + "phylloxera", + "phylum", + "physa", + "physeter", + "physicist", + "physics", + "physiologist", + "physique", + "phytelephas", + "phytolacca", + "phytologist", + "pi", + "pianissimo", + "pianist", + "piano", + "pianoforte", + "piaster", + "piastre", + "piazza", + "pibroch", + "pica", + "picador", + "picaresque", + "picayune", + "piccalilli", + "piccolo", + "picea", + "pichiciago", + "piciformes", + "pick", + "pickaback", + "pickax", + "pickaxe", + "picker", + "pickerel", + "picket", + "pickle", + "pickpocket", + "picnicker", + "pictograph", + "picture", + "picturesque", + "picul", + "piculet", + "picus", + "piddle", + "piddling", + "piddock", + "pie", + "piebald", + "piece", + "piecework", + "piedmont", + "pieplant", + "pier", + "pierce", + "pig", + "pigeon", + "pigeonhole", + "pignut", + "pigtail", + "pika", + "pike", + "pikestaff", + "pilaster", + "pilau", + "pilchard", + "pile", + "piles", + "pileus", + "pilewort", + "pilfer", + "pilferer", + "pilgrim", + "piling", + "pill", + "pillager", + "pillar", + "pillow", + "pillowcase", + "pillwort", + "pilot", + "pimenta", + "pimento", + "pimlico", + "pimp", + "pimpernel", + "pimple", + "pinafore", + "pince-nez", + "pincers", + "pinch", + "pinchbeck", + "pindar", + "pineapple", + "pinesap", + "pinetum", + "pinfold", + "pinguicula", + "pinite", + "pink", + "pinkroot", + "pinna", + "pinnace", + "pinnacle", + "pinner", + "pinnule", + "pinocle", + "pinole", + "pint", + "pintado", + "pintail", + "pintle", + "pintos", + "pinus", + "pinworm", + "pioneer", + "pip", + "pipa", + "pipe", + "piper", + "pipette", + "pipewort", + "pipistrel", + "pipistrelle", + "pipit", + "pipra", + "pipsissewa", + "piquant", + "pique", + "piquet", + "pirogue", + "pirouette", + "pisces", + "pisiform", + "pismire", + "piss", + "pistachio", + "piste", + "pistil", + "pistoleer", + "piston", + "pit", + "pita", + "pitahaya", + "pitch", + "pitch-black", + "pitch-dark", + "pitchblende", + "pitcher", + "pitchfork", + "pitfall", + "pith", + "pitman", + "pitta", + "pivot", + "pix", + "pixie", + "pizzicato", + "placard", + "place", + "placebo", + "placeman", + "placenta", + "placer", + "placket", + "placoderm", + "placodermi", + "plagiarist", + "plagioclase", + "plague", + "plaice", + "plainsman", + "plaint", + "plaintiff", + "plait", + "plaiter", + "plan", + "planchet", + "planchette", + "planer", + "planet", + "planetarium", + "plangent", + "plank", + "planner", + "plant", + "plantar", + "planter", + "plantigrade", + "plantlet", + "planula", + "plaque", + "plash", + "plasm", + "plasmodium", + "plaster", + "plasterer", + "plasterwork", + "plastron", + "plat", + "platan", + "platanus", + "plateau", + "plater", + "platform", + "platinum", + "platitude", + "platonist", + "platoon", + "plattdeutsch", + "platter", + "platypus", + "plaudit", + "playbill", + "playbook", + "player", + "playfellow", + "playgoer", + "playground", + "playhouse", + "playmaker", + "playtime", + "playwright", + "plaza", + "plea", + "pleach", + "plead", + "pleader", + "pleadings", + "pleasant", + "please", + "pleaser", + "pleasure", + "pleat", + "plebe", + "plebiscite", + "plectognath", + "plectognathi", + "plectrum", + "pledge", + "pledgee", + "pledger", + "pleiades", + "plenitude", + "plenum", + "pleonasm", + "pleonaste", + "pleopod", + "plesiosaur", + "plesiosaurus", + "plethora", + "plethysmograph", + "pleura", + "pleurocarp", + "pleurodont", + "plexus", + "pliant", + "plica", + "pliers", + "plight", + "plinth", + "ploce", + "plod", + "plodder", + "plot", + "plotter", + "plough", + "ploughman", + "ploughshare", + "ploughwright", + "plover", + "plow", + "plower", + "plowland", + "plowman", + "plowshare", + "plowwright", + "pluck", + "plug", + "plugger", + "plum", + "plumb", + "plumbago", + "plumber", + "plume", + "plummet", + "plump", + "plumper", + "plumule", + "plunder", + "plunderer", + "plunge", + "plunger", + "pluperfect", + "pluralist", + "plus", + "plush", + "pluteus", + "pluto", + "plutocrat", + "plyer", + "pneumatics", + "pneumatophore", + "pneumococcus", + "pneumothorax", + "poa", + "poach", + "poacher", + "pochard", + "pock", + "pocket", + "pocketbook", + "pocketknife", + "pockmark", + "pod", + "podetium", + "podiceps", + "podium", + "podocarp", + "podophyllum", + "poe", + "poem", + "poet", + "poetess", + "poetics", + "poi", + "poignant", + "poinciana", + "point", + "point-blank", + "pointel", + "pointer", + "pointrel", + "pointsman", + "poison", + "poisoner", + "poke", + "poker", + "polack", + "polar", + "polaris", + "polder", + "pole", + "poleax", + "poleaxe", + "polecat", + "polemicist", + "polemics", + "polemist", + "polemonium", + "polenta", + "poler", + "polestar", + "police", + "policeman", + "poling", + "polisher", + "polite", + "politesse", + "politics", + "polka", + "poll", + "pollack", + "pollard", + "pollex", + "polling", + "pollinium", + "polliwog", + "pollock", + "pollucite", + "pollute", + "polluter", + "pollux", + "pollywog", + "polo", + "poltroon", + "polyanthus", + "polychrome", + "polygala", + "polygamist", + "polyglot", + "polygon", + "polygonum", + "polygraph", + "polygynist", + "polyhedron", + "polymer", + "polymorph", + "polynesians", + "polyp", + "polypi", + "polyplacophora", + "polypodium", + "polyporus", + "polyptoton", + "polypus", + "polysyndeton", + "polytechnics", + "polytheist", + "polyvalent", + "polyzoa", + "polyzoan", + "pomade", + "pomatum", + "pome", + "pomelo", + "pomfret", + "pommel", + "pomologist", + "pomp", + "pompadour", + "pompano", + "pompon", + "poncho", + "pond", + "ponder", + "ponderer", + "pongee", + "pongo", + "poniard", + "pons", + "pontifex", + "pontiff", + "pontoon", + "pood", + "poodle", + "pooh-pooh", + "pooler", + "pooling", + "poon", + "poop", + "poor", + "poorhouse", + "pop", + "pope", + "popgun", + "poplar", + "popper", + "poppet", + "populace", + "popular", + "popularizer", + "porbeagle", + "porch", + "pore", + "porifera", + "poriferan", + "pork", + "porker", + "porridge", + "porringer", + "port", + "porta", + "portass", + "portcullis", + "porte", + "portent", + "porter", + "porteress", + "porterhouse", + "portfolio", + "porthole", + "portico", + "portmanteau", + "portos", + "portrait", + "portraitist", + "portraiture", + "portrayer", + "portuguese", + "portulaca", + "poser", + "posit", + "positivist", + "poss", + "posse", + "possess", + "possessor", + "posset", + "possum", + "post", + "post-mortem", + "postcava", + "poster", + "posteriors", + "postern", + "postfix", + "posthouse", + "postlude", + "postman", + "postmark", + "postmaster", + "postponer", + "postscript", + "postulant", + "posture", + "posturer", + "pot", + "potash", + "potashes", + "potassium", + "potato", + "potboiler", + "potent", + "pother", + "pothole", + "pothook", + "pothouse", + "potluck", + "potman", + "potoroo", + "potpie", + "potpourri", + "potsherd", + "potter", + "pottle", + "potto", + "pouch", + "poulterer", + "poultice", + "pounce", + "pound", + "pounder", + "pour", + "pout", + "pouter", + "powder", + "power", + "powwow", + "pox", + "poyou", + "practice", + "practitioner", + "pragmatist", + "prairie", + "prakrit", + "pram", + "prancer", + "prank", + "praseodymium", + "prater", + "pratincole", + "prattle", + "prattler", + "prawn", + "praxis", + "prayer", + "preach", + "preacher", + "preamble", + "prearrange", + "precede", + "precedent", + "precentor", + "precept", + "preceptor", + "precinct", + "precipice", + "precipitant", + "precipitator", + "preclude", + "precursor", + "predecease", + "predecessor", + "predict", + "predictor", + "predigest", + "predominant", + "preface", + "prefect", + "prefecture", + "prefer", + "prefigure", + "prefix", + "preform", + "pregnant", + "prehend", + "prehensile", + "prejudge", + "prejudice", + "prelatess", + "prelude", + "premature", + "premier", + "premiss", + "premium", + "premolar", + "prentice", + "prepare", + "preponderant", + "prepossess", + "prepuce", + "prerequisite", + "presbyope", + "presbyter", + "prescribe", + "prescript", + "present", + "presenter", + "preserve", + "preserver", + "preside", + "president", + "presidio", + "press", + "pressman", + "pressor", + "pressure", + "prestidigitator", + "prestige", + "prestissimo", + "presto", + "presume", + "pretend", + "pretender", + "pretense", + "preterist", + "preterit", + "preterite", + "pretermit", + "pretext", + "pretor", + "pretorium", + "pretzel", + "prevail", + "prevailing", + "prevalent", + "prevaricator", + "prevenient", + "prevent", + "price", + "prick", + "pricker", + "pricket", + "prickle", + "prickleback", + "prickling", + "pride", + "priest", + "priestcraft", + "priestess", + "priesthood", + "prig", + "prim", + "primates", + "prime", + "primer", + "primipara", + "primo", + "primogenitor", + "primogeniture", + "primp", + "primula", + "primus", + "prince", + "princedom", + "princeling", + "princess", + "princewood", + "principle", + "prink", + "print", + "printer", + "prior", + "prioress", + "prison", + "prisoner", + "privateer", + "privateersman", + "privet", + "privilege", + "prizer", + "pro", + "probationer", + "probe", + "problem", + "proboscidea", + "proboscidean", + "proboscis", + "procedure", + "proceeds", + "process", + "proclaim", + "proconsul", + "proconsular", + "procrastinator", + "procrustean", + "procrustes", + "proctocele", + "proctor", + "procumbent", + "procurator", + "procure", + "procurer", + "procuress", + "procyon", + "prod", + "prodrome", + "produce", + "producer", + "product", + "profaner", + "profess", + "professor", + "proffer", + "proficient", + "profile", + "profiling", + "profit", + "profound", + "profuse", + "progenitor", + "progne", + "prognosticator", + "program", + "programma", + "programme", + "progress", + "prohibit", + "prohibitionist", + "project", + "projectile", + "projector", + "prolapse", + "prolapsus", + "prolegomenon", + "proletariat", + "prolix", + "prolog", + "prologue", + "prolong", + "prolonge", + "promenade", + "prometheus", + "prominent", + "promisee", + "promiser", + "promisor", + "promote", + "promoter", + "prompt", + "prompter", + "promptitude", + "promulgator", + "pronator", + "prong", + "prongbuck", + "pronghorn", + "pronoun", + "pronounce", + "pronucleus", + "pronunciamento", + "proof", + "prop", + "propaganda", + "propagandist", + "propagator", + "propel", + "propeller", + "proper", + "prophesier", + "prophet", + "prophetess", + "prophylaxis", + "proponent", + "proposer", + "propound", + "proprietor", + "proprietress", + "props", + "prorogue", + "proscenium", + "proscribe", + "prosecute", + "prosecutor", + "proselyte", + "prosencephalon", + "prospect", + "prospector", + "prospectus", + "prosper", + "prostitute", + "prostyle", + "protagonist", + "protean", + "protect", + "protectionist", + "protector", + "proteles", + "protest", + "protestant", + "protester", + "proteus", + "prothalamium", + "prothorax", + "protist", + "protista", + "protohippus", + "protoplasm", + "protoplast", + "prototype", + "protozoa", + "protozoan", + "protract", + "protractile", + "protractor", + "protrude", + "protrusile", + "protuberant", + "proud", + "prove", + "provender", + "proverb", + "provide", + "provident", + "provider", + "province", + "proviso", + "provoke", + "provost", + "prow", + "prowess", + "prowl", + "prowler", + "prowling", + "prox", + "proximo", + "prude", + "prudent", + "prune", + "prunella", + "pruner", + "prunus", + "prurient", + "prurigo", + "pruritus", + "psalm", + "psalmist", + "psalter", + "psalterium", + "pseudocarp", + "pseudonym", + "pseudopod", + "pseudopodium", + "pseudoscorpiones", + "psoas", + "psyche", + "psychics", + "psychologist", + "psychophysics", + "psychopomp", + "psylla", + "ptarmigan", + "pteridologist", + "pteridophyta", + "pterosaur", + "pterygium", + "puberulent", + "pubes", + "pubescent", + "pubis", + "publican", + "publicist", + "publisher", + "puccoon", + "puce", + "puck", + "pucker", + "pud", + "puddle", + "puddler", + "puddling", + "pudenda", + "pudendum", + "pueblo", + "puerile", + "puff", + "puffball", + "puffer", + "pug", + "pugilist", + "puissant", + "puke", + "pulas", + "pulchritude", + "pule", + "pulex", + "puling", + "pull", + "pullback", + "puller", + "pullet", + "pulmonata", + "pulp", + "pulpit", + "pulque", + "pulsatilla", + "pulse", + "puma", + "pumice", + "pummel", + "pump", + "pumpernickel", + "pun", + "punch", + "puncher", + "punctilio", + "punctum", + "puncture", + "pundit", + "pung", + "pungent", + "punk", + "punnet", + "punster", + "punt", + "punter", + "pup", + "pupa", + "pupil", + "puppet", + "purana", + "purblind", + "purchase", + "purchaser", + "purdah", + "pure", + "purge", + "purifier", + "purim", + "purist", + "puritan", + "purl", + "purlieu", + "purling", + "purple", + "purport", + "purpura", + "purr", + "purse", + "purse-proud", + "purser", + "pursuant", + "pursue", + "pursuer", + "pursuit", + "purulent", + "purveyor", + "purview", + "pus", + "push", + "pusher", + "puss", + "pustule", + "put", + "put-up", + "putrescent", + "putter", + "puttyroot", + "puzzle", + "pycnidium", + "pycnogonida", + "pyjama", + "pylon", + "pylorus", + "pyracanth", + "pyre", + "pyrite", + "pyrites", + "pyrolusite", + "pyromorphite", + "pyrope", + "pyrophorus", + "pyrophyllite", + "pyrotechnics", + "pyrrhotite", + "pyrus", + "pythagorean", + "python", + "pyx", + "pyxidium", + "pyxis", + "quack", + "quadroon", + "quaffer", + "quaker", + "quarrel", + "quat", + "quester", + "questioner", + "quibbler", + "quickener", + "quidnunc", + "quieter", + "quitter", + "quiver", + "quiz", + "quizzer", + "quoter", + "race", + "racer", + "racker", + "raftsman", + "ragpicker", + "raider", + "raiser", + "rambler", + "rammer", + "ramp", + "ranger", + "ranker", + "rape", + "rapper", + "rat", + "ratepayer", + "ratifier", + "rationalist", + "ratter", + "rattler", + "raver", + "ravisher", + "rhymer", + "rider", + "ridiculer", + "rigger", + "righter", + "ringer", + "rioter", + "rip", + "ripper", + "riser", + "ritualist", + "river", + "riveter", + "roadster", + "roamer", + "roarer", + "roaster", + "robber", + "rocker", + "rogue", + "roller", + "romancer", + "romanist", + "romanticist", + "roofer", + "rooter", + "ropedancer", + "roper", + "roughrider", + "rounder", + "rouser", + "rover", + "rower", + "royalist", + "rubber", + "ruiner", + "ruler", + "ruling", + "ruminator", + "runner", + "runt", + "ruralist", + "rusher", + "rustler", + "sacrificer", + "saddler", + "sailing", + "sailmaker", + "sailor", + "saint", + "salesman", + "saleswoman", + "salter", + "saluter", + "salver", + "salvor", + "samaritan", + "sampler", + "sapper", + "saree", + "satanist", + "satellite", + "satirist", + "satisfier", + "saunterer", + "savant", + "saver", + "savior", + "savoyard", + "sawyer", + "saxon", + "scab", + "scaler", + "scalper", + "scapegrace", + "scattergood", + "sceneshifter", + "schemer", + "scholar", + "schoolmaster", + "schoolmistress", + "scientist", + "sciolist", + "scoffer", + "scold", + "scolder", + "scorer", + "scorner", + "scot", + "scotchman", + "scoundrel", + "scourer", + "scourger", + "scrag", + "scrambler", + "scraper", + "scratcher", + "scrawler", + "scribbler", + "scribe", + "scrivener", + "scrub", + "scrubber", + "scrutinizer", + "scull", + "sculler", + "sculptor", + "seafarer", + "sealer", + "seaman", + "seamster", + "seamstress", + "searcher", + "seasoner", + "secessionist", + "second", + "seconder", + "secularist", + "securer", + "sedan", + "seducer", + "seductress", + "seeder", + "seedsman", + "seeker", + "seer", + "seizer", + "selector", + "self", + "self-defense", + "self-seeker", + "seller", + "sender", + "senior", + "sensationalist", + "sensualist", + "sentient", + "sentimentalist", + "sentinel", + "separatist", + "separator", + "sequela", + "sequester", + "sermonizer", + "serpent", + "servant", + "server", + "service", + "setter", + "settler", + "settling", + "seventeenth", + "sewer", + "shadow", + "shamer", + "shammer", + "shaper", + "shareholder", + "sharer", + "shark", + "sharper", + "shaver", + "shearer", + "shedder", + "sheller", + "shelter", + "shepherd", + "shepherdess", + "shield", + "shifter", + "shingler", + "shipper", + "shipwright", + "shirk", + "shirker", + "shoeblack", + "shoemaker", + "shooter", + "shopkeeper", + "shoplifter", + "shopper", + "shopwalker", + "shortener", + "shot", + "shouter", + "shoveler", + "shower", + "showman", + "shrimper", + "shuffler", + "shutter", + "shyster", + "siamese", + "sider", + "sifter", + "signalman", + "signature", + "signer", + "silversmith", + "simperer", + "simpler", + "simpleton", + "simulator", + "singer", + "sinker", + "sinner", + "sir", + "sirrah", + "sister", + "sitter", + "six-footer", + "sixteenth", + "skater", + "sketcher", + "skimmer", + "skinflint", + "skinner", + "skipper", + "skirmisher", + "skulk", + "skulker", + "slam", + "slanderer", + "slapper", + "slater", + "slattern", + "slaughterer", + "slave", + "slaveholder", + "slayer", + "sleeper", + "sleepwalker", + "sleepyhead", + "slicer", + "slider", + "slighter", + "slinger", + "slip", + "slipper", + "slobberer", + "slopseller", + "slugger", + "slumberer", + "slur", + "slut", + "slyboots", + "smasher", + "smelling", + "smelter", + "smiler", + "smith", + "smoker", + "smoother", + "smuggler", + "snapper", + "snarer", + "snatcher", + "sneaker", + "sneerer", + "sniveler", + "snob", + "snood", + "snorer", + "snorter", + "snuffbox", + "snuffer", + "snuffler", + "so-so", + "soaker", + "socialist", + "sociologist", + "soft", + "softener", + "sojourner", + "solderer", + "soldier", + "solicitor", + "soloist", + "solver", + "somnambulist", + "somniloquist", + "son", + "son-in-law", + "songster", + "songstress", + "soothsayer", + "soprano", + "sorb", + "sorbefacient", + "sorbent", + "sorbet", + "sorcerer", + "sorceress", + "sore", + "sorehead", + "sorex", + "sorghum", + "sorgo", + "sori", + "sorrel", + "sorrow", + "sort", + "sorter", + "sortes", + "sortie", + "sorus", + "soss", + "sot", + "sou", + "soubrette", + "soubriquet", + "souchong", + "soudan", + "souffle", + "sough", + "sought", + "soul", + "sound", + "sounder", + "soup", + "sour", + "source", + "sours", + "soursop", + "sourwood", + "souse", + "souslik", + "soutache", + "south", + "southeast", + "southeaster", + "southeastern", + "southeastward", + "souther", + "southern", + "southerner", + "southernmost", + "southernwood", + "southmost", + "southward", + "southwards", + "southwest", + "southwester", + "southwestern", + "southwestward", + "souvenir", + "sovereign", + "sow", + "sower", + "sown", + "spa", + "space", + "spade", + "spadefoot", + "spadix", + "spaghetti", + "spall", + "span", + "spandrel", + "spang", + "spangle", + "spaniard", + "spaniel", + "spank", + "spanker", + "spanner", + "spar", + "spare", + "sparer", + "sparerib", + "sparge", + "spark", + "sparker", + "sparkle", + "sparkler", + "sparkling", + "sparling", + "sparrow", + "sparse", + "spartan", + "spasm", + "spat", + "spatchcock", + "spathe", + "spatter", + "spatula", + "spawl", + "spawn", + "spawner", + "speak", + "speaker", + "spear", + "spearhead", + "spearmint", + "specialist", + "specie", + "species", + "speck", + "speckle", + "spectacle", + "spectacular", + "spectator", + "specter", + "spectre", + "spectrum", + "specular", + "speculator", + "speculum", + "speech", + "speechifier", + "speechmaker", + "speeder", + "speedwell", + "speer", + "speke", + "spell", + "spellbound", + "speller", + "spelling", + "spelt", + "spelter", + "spencer", + "spend", + "spender", + "spendthrift", + "spent", + "sperm", + "spermaceti", + "spermatocyte", + "spermophile", + "spew", + "spewer", + "sphacelus", + "sphagnum", + "sphalerite", + "sphenodon", + "sphere", + "spherule", + "sphincter", + "sphinx", + "spica", + "spiccato", + "spice", + "spicebush", + "spicer", + "spick", + "spicula", + "spicule", + "spiculum", + "spider", + "spiderwort", + "spigot", + "spike", + "spikelet", + "spikenard", + "spile", + "spill", + "spiller", + "spilt", + "spinach", + "spindle", + "spindlelegs", + "spindleshanks", + "spinel", + "spinet", + "spinnaker", + "spinner", + "spinster", + "spiracle", + "spirant", + "spire", + "spirillum", + "spirit", + "spiritualist", + "spirograph", + "spirt", + "spirula", + "spit", + "spitball", + "spite", + "spitfire", + "spitter", + "spittle", + "spittoon", + "splash", + "splashboard", + "splasher", + "splatter", + "splayfoot", + "spleenwort", + "splendor", + "splenius", + "splice", + "splint", + "splinter", + "splinterproof", + "split", + "splitter", + "splotch", + "splurge", + "splutter", + "spoil", + "spoiler", + "spoke", + "spokeshave", + "spokesman", + "spondee", + "sponge", + "sponger", + "sponsor", + "spook", + "spoon", + "spoonbill", + "spoondrift", + "spoor", + "sporangiophore", + "sporangium", + "spore", + "sporocarp", + "sporophore", + "sporozoa", + "sporran", + "sport", + "sportsman", + "spot", + "spotter", + "spouse", + "spousess", + "spout", + "spouter", + "sprag", + "sprang", + "sprat", + "sprawl", + "spread", + "spread-eagle", + "spreader", + "spree", + "sprig", + "sprigtail", + "springboard", + "springbok", + "springbuck", + "springer", + "springtail", + "springtide", + "springtime", + "sprinkle", + "sprinkler", + "sprinkling", + "sprint", + "sprinter", + "sprit", + "sprite", + "spritsail", + "sprout", + "spruce", + "sprue", + "sprung", + "spud", + "spue", + "spume", + "spun", + "spunk", + "spur", + "spurge", + "spurn", + "spurner", + "spurt", + "sputter", + "sputum", + "spyglass", + "squab", + "squabble", + "squabbler", + "squad", + "squadron", + "squall", + "squalor", + "squama", + "squamata", + "squamule", + "squander", + "squanderer", + "square", + "squarer", + "squash", + "squat", + "squatter", + "squaw", + "squawk", + "squawroot", + "squeak", + "squeaker", + "squealer", + "squeegee", + "squeeze", + "squeezer", + "squelch", + "squib", + "squiggle", + "squilgee", + "squill", + "squilla", + "squinch", + "squint", + "squint-eye", + "squinter", + "squire", + "squirm", + "squirrel", + "squirt", + "squirter", + "stab", + "stabber", + "stableman", + "stabler", + "stabling", + "staccato", + "stack", + "stacte", + "staddle", + "stadium", + "staff", + "stag", + "stage-struck", + "stagecoach", + "stager", + "stagger", + "staggerbush", + "staghound", + "stagnant", + "stainer", + "stair", + "staircase", + "stairhead", + "stake", + "stakeholder", + "stalactite", + "stalactites", + "stalagmite", + "stale", + "stalk", + "stalker", + "stalking-horse", + "stall", + "stalling", + "stalwart", + "stamina", + "stammel", + "stammer", + "stammerer", + "stamp", + "stampede", + "stamper", + "stanch", + "stand", + "standard", + "stander", + "standpipe", + "standpoint", + "standstill", + "stanhope", + "stank", + "stannite", + "stanza", + "stapes", + "staple", + "stapler", + "star", + "starboard", + "starch", + "stare", + "starer", + "stark", + "starlight", + "starling", + "starlit", + "start", + "starter", + "startle", + "starve", + "starveling", + "starwort", + "statant", + "statecraft", + "statehouse", + "stater", + "stateroom", + "statesman", + "stateswoman", + "statics", + "stationer", + "statistics", + "statue", + "statuesque", + "statuette", + "stature", + "status", + "statute", + "staunch", + "stave", + "staves", + "stayer", + "staysail", + "stead", + "steadfast", + "steak", + "stealer", + "stealing", + "stealth", + "steam", + "steamboat", + "steamer", + "steatite", + "steel", + "steeling", + "steelyard", + "steenbok", + "steep", + "steeper", + "steeple", + "steer", + "steerer", + "steersman", + "stegosaurus", + "stela", + "stele", + "stellar", + "steller", + "stem", + "stem-winder", + "stemma", + "stemmer", + "stench", + "stencil", + "stenograph", + "stenographer", + "stent", + "stentor", + "step", + "stepbrother", + "stepchild", + "stepdaughter", + "stepfather", + "stephanotis", + "stepladder", + "stepmother", + "stepparent", + "steppe", + "stepper", + "stepsister", + "stepson", + "stereotype", + "sterile", + "sterling", + "stern", + "sterner", + "sternpost", + "sternum", + "stet", + "stevedore", + "stew", + "steward", + "stewardess", + "stewpan", + "stibnite", + "stick", + "sticker", + "stickle", + "stickler", + "stiff", + "stiffener", + "stifle", + "stifler", + "stigma", + "stigmata", + "stigmatist", + "stile", + "stiletto", + "still", + "still-hunt", + "stillbirth", + "stillborn", + "stiller", + "stilling", + "stillroom", + "stilt", + "stiltbird", + "stimulant", + "stimulus", + "stinger", + "stink", + "stinker", + "stinkhorn", + "stinkpot", + "stint", + "stinter", + "stipe", + "stipend", + "stipes", + "stipple", + "stippling", + "stipule", + "stir", + "stirk", + "stirrer", + "stirrup", + "stitch", + "stitcher", + "stitchwort", + "stoat", + "stock", + "stock-still", + "stockade", + "stockbroker", + "stocker", + "stockholder", + "stockinet", + "stockjobber", + "stockman", + "stoke", + "stokehole", + "stoker", + "stole", + "stolon", + "stoma", + "stomach", + "stomacher", + "stomatopod", + "stomatopoda", + "stomp", + "stone-blind", + "stone-cold", + "stone-dead", + "stone-deaf", + "stonechat", + "stonecrop", + "stonecutter", + "stonehenge", + "stoner", + "stoneroot", + "stoneware", + "stonework", + "stonewort", + "stood", + "stoop", + "stooper", + "stop", + "stopcock", + "stopper", + "stopple", + "storax", + "store", + "storehouse", + "storekeeper", + "storeroom", + "stork", + "storm", + "storybook", + "stoup", + "stout", + "stove", + "stovepipe", + "stover", + "stow", + "strabismus", + "straddle", + "straddling", + "straggle", + "straggler", + "straggling", + "straight", + "straight-out", + "straightedge", + "straightener", + "straightforward", + "strainer", + "strait", + "strake", + "strand", + "strange", + "stranger", + "strangle", + "strangler", + "strangles", + "strap", + "strappado", + "strapper", + "strata", + "stratagem", + "strategics", + "strategist", + "stratum", + "stratus", + "straw", + "strawboard", + "strawworm", + "strayer", + "streak", + "stream", + "streamer", + "streamlet", + "street", + "streetwalker", + "strength", + "strengthener", + "streptococcus", + "stress", + "stretch", + "stretcher", + "strew", + "strewn", + "striatum", + "strickle", + "strict", + "stricture", + "stride", + "strident", + "stridor", + "strife", + "strike", + "striker", + "stringent", + "stringer", + "strip", + "stripe", + "stripling", + "stripper", + "striver", + "strix", + "strobile", + "strode", + "stroke", + "stroll", + "stroller", + "stroma", + "strombus", + "strong", + "stronghold", + "strontianite", + "strontium", + "strop", + "strophanthus", + "strophe", + "strove", + "struck", + "structure", + "struggle", + "struggler", + "strum", + "struma", + "strumpet", + "strung", + "strut", + "struthio", + "stub", + "stubble", + "stubborn", + "stucco", + "stuck", + "stuck-up", + "stud", + "studbook", + "student", + "studio", + "stuff", + "stuffer", + "stumble", + "stumbler", + "stump", + "stumper", + "stun", + "stung", + "stunk", + "stunner", + "stunt", + "stupa", + "stupe", + "stupor", + "sturgeon", + "stutter", + "stutterer", + "stye", + "style", + "stylet", + "stylist", + "stylite", + "stylopodium", + "stylus", + "styrax", + "styx", + "suave", + "sub", + "subacute", + "subaltern", + "subclass", + "subcommittee", + "subcontract", + "subcontractor", + "subdeacon", + "subdivide", + "subdominant", + "subdue", + "subduer", + "subeditor", + "subgenus", + "subgroup", + "subjacent", + "subject", + "subjectivist", + "subjugator", + "subkingdom", + "sublease", + "sublet", + "sublieutenant", + "sublime", + "sublunar", + "submediant", + "submerge", + "submerse", + "submit", + "submitter", + "subocular", + "suborder", + "suborn", + "suborner", + "subscribe", + "subscriber", + "subscript", + "subsequent", + "subserve", + "subservient", + "subside", + "subsist", + "subsoil", + "subspecies", + "substitute", + "substratum", + "substructure", + "subsume", + "subtend", + "subterfuge", + "subterranean", + "subtle", + "subtract", + "subtracter", + "subtrahend", + "suburb", + "suburban", + "subvert", + "subverter", + "succade", + "succedaneum", + "succeeder", + "success", + "successor", + "succinct", + "succor", + "succorer", + "succotash", + "succuba", + "succubus", + "succulent", + "succumb", + "succus", + "such", + "suck", + "sucker", + "suckle", + "suckling", + "sucre", + "sudatorium", + "sudra", + "suds", + "sue", + "suer", + "suet", + "suffer", + "sufferer", + "suffice", + "sufficient", + "suffix", + "suffragan", + "suffragist", + "suffrutescent", + "suffuse", + "sufi", + "sugar", + "sugarplum", + "suggest", + "suggester", + "suicide", + "suit", + "suite", + "suitor", + "sula", + "sulcus", + "sulk", + "sulks", + "sulphide", + "sulphur", + "sultan", + "sultana", + "sum", + "sumac", + "sumach", + "sumatran", + "summer", + "summerhouse", + "summersault", + "summerset", + "summit", + "summon", + "summons", + "sumner", + "sump", + "sumpter", + "sun", + "sunbeam", + "sunbonnet", + "sunburn", + "sunburst", + "sunder", + "sundew", + "sundog", + "sundown", + "sundries", + "sunflower", + "sung", + "sunglass", + "sunk", + "sunlight", + "sunlit", + "sunna", + "sunnite", + "sunset", + "sunshade", + "sunstroke", + "sunup", + "sup", + "super", + "superabundant", + "superb", + "supercargo", + "supercharge", + "supercilium", + "superficies", + "superhuman", + "superincumbent", + "superintend", + "superintendent", + "superior", + "superjacent", + "superlunar", + "supernatant", + "supernaturalist", + "superorder", + "superoxide", + "superscribe", + "superscript", + "supersede", + "supersedure", + "superstructure", + "supervisor", + "supinator", + "supper", + "supplant", + "supplanter", + "supple", + "suppliant", + "supplicant", + "supplier", + "support", + "supporter", + "suppress", + "suppressor", + "supra", + "supraocular", + "supreme", + "sura", + "surbase", + "surcease", + "surcharge", + "surcoat", + "surd", + "sure", + "surf", + "surface", + "surfacer", + "surfboat", + "surfeit", + "surfer", + "surge", + "surgeon", + "surmount", + "surmounter", + "surmullet", + "surname", + "surpass", + "surplice", + "surplus", + "surpriser", + "surrejoinder", + "surrender", + "surrenderer", + "surround", + "surtax", + "surtout", + "surveyor", + "survivor", + "suslik", + "suspect", + "suspecter", + "suspend", + "suspender", + "suspense", + "suspensor", + "suspire", + "sustainer", + "sustentacular", + "susurrant", + "susurrus", + "sutler", + "sutra", + "suttee", + "suture", + "swab", + "swad", + "swaddle", + "swaddling", + "swag", + "swagger", + "swaggerer", + "swale", + "swallow", + "swallowtail", + "swallowwort", + "swam", + "swamp", + "swan", + "swap", + "sward", + "swarm", + "swart", + "swash", + "swashbuckler", + "swat", + "swatch", + "swath", + "swathe", + "swear", + "swearer", + "sweat", + "sweater", + "swede", + "sweep", + "sweeper", + "sweepings", + "sweepstakes", + "sweet", + "sweetbread", + "sweetbrier", + "sweetener", + "sweetheart", + "sweetmeat", + "swell", + "swelling", + "swelter", + "swept", + "swerve", + "swift", + "swifter", + "swiftlet", + "swig", + "swill", + "swillings", + "swim", + "swimmer", + "swimmeret", + "swindle", + "swindler", + "swineherd", + "swinge", + "swinger", + "swingletree", + "swipe", + "swirl", + "swiss", + "switch", + "switchman", + "swivel", + "swizzle", + "swob", + "swoon", + "swoop", + "swop", + "sword", + "swordsman", + "swordtail", + "swore", + "sworn", + "swum", + "swung", + "sybarite", + "sycamore", + "syconium", + "sycophant", + "syllabub", + "syllabus", + "syllogizer", + "sylph", + "sylva", + "sylvan", + "sylvanite", + "sylvite", + "symbolist", + "symbolizer", + "sympathizer", + "symphonist", + "symphyla", + "symploce", + "symposiarch", + "symposiast", + "symposium", + "symptom", + "synagogue", + "syncarp", + "syncope", + "syncytium", + "syndrome", + "synecdoche", + "synentognathi", + "synergist", + "synod", + "synonym", + "synonymist", + "syntax", + "synthesist", + "syphilis", + "syphon", + "syracuse", + "syringa", + "syringe", + "syrinx", + "syrup", + "system", + "systematist", + "systematizer", + "systemizer", + "systole", + "tableau", + "tablecloth", + "tablespoon", + "tablet", + "tableware", + "tabling", + "taboo", + "tabor", + "taboret", + "tabour", + "tabouret", + "tabu", + "tabular", + "tacamahac", + "tacit", + "taciturn", + "tack", + "tacker", + "tackle", + "tackling", + "tact", + "tactics", + "tactile", + "tadpole", + "tael", + "taffeta", + "taffrail", + "tag", + "tagger", + "taguan", + "tail", + "tailboard", + "tailing", + "tailor", + "tailoress", + "tailpiece", + "tailrace", + "tailstock", + "taint", + "taira", + "take", + "take-up", + "taker", + "talbot", + "talc", + "tale", + "talebearer", + "talent", + "tales", + "taleteller", + "talipes", + "talipot", + "talisman", + "talk", + "talker", + "tall", + "tallow", + "tallyman", + "talmud", + "talon", + "talus", + "tam-tam", + "tamandu", + "tamanoir", + "tamarack", + "tamarind", + "tamarisk", + "tambac", + "tambour", + "tame", + "tamer", + "tamias", + "tamil", + "tammuz", + "tamp", + "tamper", + "tampon", + "tan", + "tanager", + "tandem", + "tang", + "tangent", + "tangle", + "tangram", + "tank", + "tanka", + "tankard", + "tanner", + "tantalite", + "tantalizer", + "tantalum", + "tantalus", + "tantamount", + "tantrum", + "tap", + "tapa", + "tape", + "taper", + "tapeworm", + "taphouse", + "tapioca", + "tapir", + "tapis", + "tapper", + "tappet", + "taproom", + "taproot", + "tapster", + "tar", + "tarantella", + "tarantula", + "tarboosh", + "tardigrada", + "tardigrade", + "tare", + "target", + "tariff", + "tarn", + "taro", + "tarot", + "tarpan", + "tarpon", + "tarragon", + "tarsi", + "tarsier", + "tarsius", + "tarsus", + "tart", + "tartan", + "tartar", + "tartarean", + "tartarus", + "tartlet", + "tartufe", + "tartuffe", + "tas", + "task", + "taskmaster", + "tasse", + "tassel", + "tasset", + "taste", + "taster", + "tat", + "tatou", + "tatter", + "tattle", + "tattler", + "tattling", + "tattoo", + "tatu", + "tau", + "taught", + "taunt", + "taurus", + "taut", + "tautog", + "tavern", + "taw", + "taws", + "tax", + "taxer", + "taxidermist", + "taxis", + "taxonomist", + "taxpayer", + "tayra", + "tea", + "teach", + "teacher", + "teacup", + "teak", + "teakettle", + "team", + "teamster", + "teamwork", + "teapot", + "tear", + "tease", + "teasel", + "teaser", + "teasle", + "teaspoon", + "teat", + "teazel", + "technicals", + "technique", + "technologist", + "tectonics", + "tedium", + "tee", + "teem", + "teens", + "teeter", + "teeth", + "teetotaler", + "teetotum", + "teg", + "tegular", + "telamones", + "telegram", + "telegraph", + "telegrapher", + "telegraphist", + "teleologist", + "teleost", + "teleostei", + "tell", + "teller", + "telling", + "telltale", + "telluride", + "tellurium", + "telpher", + "telugu", + "temper", + "tempera", + "temperature", + "tempest", + "templar", + "temple", + "templet", + "tempo", + "temporizer", + "temps", + "tempt", + "tempter", + "temptress", + "ten-strike", + "tenant", + "tench", + "tend", + "tender", + "tenderfoot", + "tendon", + "tendrac", + "tendril", + "tenesmus", + "tenet", + "tenfold", + "tennis", + "tenon", + "tenor", + "tenpins", + "tenrec", + "tense", + "tensile", + "tensor", + "tent", + "tentacle", + "tentacular", + "tentaculata", + "tenter", + "tenth", + "tentmaker", + "tentorium", + "tenure", + "tepee", + "tequila", + "teratoma", + "terbium", + "terce", + "tercel", + "tercelet", + "tercet", + "terebinth", + "teredo", + "terete", + "tergiversator", + "term", + "termagant", + "termer", + "termes", + "terminator", + "terminus", + "termite", + "tern", + "terpsichore", + "terpsichorean", + "terrace", + "terrier", + "terror", + "terrorist", + "terse", + "terzetto", + "tessera", + "test", + "testa", + "testacea", + "testacean", + "testator", + "testatrix", + "tester", + "testes", + "testicle", + "testicular", + "testifier", + "testis", + "testudinata", + "testudo", + "tetanus", + "tether", + "tethys", + "tetrad", + "tetragon", + "tetragrammaton", + "tetrahedron", + "tetrapod", + "tetraspore", + "tetravalent", + "tetroxide", + "tetterwort", + "teuton", + "texas", + "text", + "textile", + "texture", + "th", + "thalamus", + "thaliacea", + "thallium", + "thallophyte", + "thallus", + "thammuz", + "thank", + "thatch", + "thatcher", + "thaumaturge", + "thaumaturgist", + "thaw", + "thea", + "theater", + "theatre", + "theatricals", + "theban", + "theca", + "thecodont", + "theft", + "theist", + "theme", + "themis", + "thenar", + "thenceforth", + "theobroma", + "theodolite", + "theologist", + "theologizer", + "theorem", + "theorist", + "theorizer", + "theosophist", + "therapeutics", + "there", + "thereabout", + "thereabouts", + "thereafter", + "therefor", + "therefore", + "therefrom", + "thereof", + "thereon", + "thereto", + "theretofore", + "thereunder", + "therewith", + "thermidor", + "thermodynamics", + "thermograph", + "thermometrograph", + "thermopile", + "thermostat", + "theropoda", + "thesaurus", + "theta", + "thick", + "thick-knee", + "thicket", + "thickhead", + "thickset", + "thief", + "thieve", + "thigh", + "thill", + "thimble", + "thimblerig", + "think", + "thinker", + "thinner", + "third", + "thirst", + "thirster", + "thirteenth", + "thirtieth", + "thirty-second", + "thistle", + "thither", + "tho", + "thole", + "thong", + "thor", + "thorax", + "thorite", + "thorium", + "thorn", + "thornbill", + "thorough", + "thoroughfare", + "thoroughwort", + "thorpe", + "thoth", + "thou", + "though", + "thought", + "thousand", + "thousandth", + "thraldom", + "thrall", + "thralldom", + "thrash", + "thrasher", + "thread", + "threadbare", + "threader", + "threadworm", + "threat", + "three", + "three-decker", + "threefold", + "thresh", + "thresher", + "threshold", + "threw", + "thrice", + "thrift", + "thrill", + "thrilling", + "thrips", + "throat", + "throatwort", + "throb", + "throe", + "thrombus", + "throng", + "throstle", + "throttle", + "throttler", + "through", + "throughout", + "throve", + "throw", + "thrower", + "thrown", + "throwster", + "thrum", + "thrush", + "thrust", + "thruster", + "thud", + "thug", + "thuggee", + "thuja", + "thule", + "thulium", + "thumb", + "thumbscrew", + "thump", + "thunder", + "thunderbird", + "thunderbolt", + "thunderclap", + "thundercloud", + "thunderer", + "thunderhead", + "thundershower", + "thunderstorm", + "thus", + "thwack", + "thwart", + "thwarter", + "thyme", + "thymus", + "thyrse", + "thyrsus", + "thysanopter", + "thysanoptera", + "thysanura", + "tiara", + "tick", + "ticker", + "ticket", + "tickle", + "tickler", + "ticktack", + "tidbit", + "tide", + "tidings", + "tidytips", + "tie", + "tier", + "tierce", + "tiercel", + "tiff", + "tiger", + "tight", + "tighter", + "tights", + "tigress", + "tike", + "tilde", + "tile", + "tiler", + "tiling", + "till", + "tiller", + "tilt", + "tilter", + "tilth", + "timber", + "timberman", + "timbre", + "timbrel", + "time", + "timekeeper", + "timepiece", + "timer", + "timeserver", + "tinamou", + "tinct", + "tincture", + "tinder", + "tinea", + "tinge", + "tingle", + "tink", + "tinker", + "tinkle", + "tinkling", + "tinner", + "tinnitus", + "tinsel", + "tinsmith", + "tint", + "tinware", + "tip", + "tip-up", + "tipper", + "tippet", + "tipple", + "tippler", + "tipstaff", + "tiptoe", + "tiptop", + "tirade", + "tire", + "tiresome", + "tiro", + "tissue", + "tit", + "titan", + "titanium", + "titbit", + "tithe", + "tither", + "titi", + "titlark", + "title", + "titling", + "titmouse", + "titter", + "tittle", + "tittle-tattle", + "tittle-tattling", + "titular", + "to-do", + "toad", + "toadflax", + "toast", + "toaster", + "toastmaster", + "tobacco", + "tobacconist", + "tobit", + "toboggan", + "tobogganist", + "toccata", + "tod", + "toddle", + "toddler", + "toe", + "toffee", + "tofus", + "toga", + "together", + "toggle", + "toil", + "toiler", + "toilet", + "toilette", + "toilsome", + "tolbooth", + "told", + "tole", + "toledo", + "tolerant", + "toll", + "tollbooth", + "toller", + "tollhouse", + "tollman", + "toltec", + "tolu", + "tom", + "tom-tom", + "tomahawk", + "tomato", + "tomb", + "tombac", + "tomcat", + "tome", + "tomentum", + "tomorrow", + "tomtit", + "ton", + "tonga", + "tongs", + "tongue", + "tongue-tie", + "tonight", + "tonne", + "tonsil", + "tonsure", + "tonus", + "too", + "took", + "tooling", + "toon", + "toot", + "tooth", + "toothache", + "toothbrush", + "toothpick", + "toothsome", + "toothwort", + "top", + "topaz", + "topcoat", + "tope", + "toper", + "topgallant", + "tophus", + "topknot", + "topmast", + "topmost", + "topple", + "topsail", + "topsoil", + "toque", + "tor", + "torch", + "torchbearer", + "torchlight", + "tore", + "toreador", + "tormenter", + "tormentor", + "torn", + "tornado", + "torpedo", + "torpor", + "torque", + "torques", + "torrent", + "torsk", + "torso", + "tort", + "torticollis", + "tortilla", + "tortrix", + "torture", + "torturer", + "torus", + "tosh", + "toss", + "tosser", + "tot", + "tote", + "totem", + "totemist", + "toter", + "totter", + "totterer", + "toucan", + "touch", + "touch-me-not", + "touchback", + "touchdown", + "touchwood", + "tough", + "tour", + "touraco", + "tourist", + "tourniquet", + "tousle", + "tout", + "touter", + "tow", + "towboat", + "towel", + "toweling", + "tower", + "towhee", + "town", + "townsfolk", + "townsman", + "towpath", + "towrope", + "toxicant", + "toxicologist", + "toxotes", + "toyshop", + "trabecula", + "trabecular", + "trace", + "tracer", + "trachea", + "track", + "tracker", + "tract", + "tractile", + "tractor", + "trad", + "trade", + "trader", + "tradesman", + "tradespeople", + "traditionalist", + "traduce", + "traducer", + "trafficker", + "tragacanth", + "tragopan", + "tragus", + "trail", + "trailer", + "trailing", + "trainband", + "trainbearer", + "trainer", + "traipse", + "trait", + "traitor", + "traitress", + "tram", + "trammel", + "tramp", + "tramper", + "trample", + "trampler", + "tranquil", + "tranquilizer", + "tranquillizer", + "transact", + "transactor", + "transcend", + "transcendent", + "transcendentalist", + "transcriber", + "transcript", + "transept", + "transfer", + "transferee", + "transferrer", + "transfigure", + "transfix", + "transform", + "transformer", + "transfuse", + "transgress", + "transgressor", + "transient", + "transit", + "translator", + "translucent", + "transmit", + "transmitter", + "transmute", + "transom", + "transparent", + "transpire", + "transplant", + "transplanter", + "transport", + "transporter", + "transude", + "transverse", + "trap", + "trapes", + "trapeze", + "trapezium", + "trapezohedron", + "trapper", + "trappings", + "trappist", + "traps", + "trash", + "travail", + "trave", + "travel", + "traveler", + "traverse", + "traverser", + "trawl", + "trawler", + "trays", + "treacle", + "tread", + "treadle", + "treadmill", + "treadwheel", + "treason", + "treasure", + "treasurer", + "treasuress", + "treat", + "treater", + "treble", + "trebuchet", + "trebucket", + "tree", + "treenail", + "trefoil", + "trellis", + "trematode", + "tremble", + "trembler", + "trembling", + "tremella", + "tremolite", + "tremolo", + "tremor", + "trenail", + "trench", + "trenchant", + "trencher", + "trend", + "trepan", + "trepang", + "trespass", + "trespasser", + "tress", + "trestle", + "trestlework", + "trews", + "triad", + "triangle", + "triangular", + "tribe", + "tribune", + "tribute", + "trice", + "triceps", + "trichina", + "trichloride", + "trichomanes", + "trichoptera", + "trichopteran", + "trick", + "tricker", + "trickle", + "trickster", + "triclinium", + "tricolor", + "tricot", + "tricycle", + "tridacna", + "trident", + "tridymite", + "trier", + "trifle", + "trifler", + "trifling", + "trifolium", + "trig", + "trigger", + "triglyceride", + "trigon", + "trigram", + "trill", + "trilling", + "trillium", + "trilobite", + "trim", + "trimester", + "trimmer", + "trimurti", + "tringa", + "trinket", + "trio", + "trionyx", + "trioxide", + "trip", + "tripartite", + "tripe", + "triple", + "triplet", + "tripod", + "tripoli", + "tripos", + "tripper", + "triptych", + "trireme", + "trisect", + "trismus", + "trite", + "tritheist", + "triticum", + "triton", + "triumph", + "triumvir", + "triune", + "trivalent", + "trivet", + "trivium", + "troat", + "trochanter", + "troche", + "trochee", + "trochlear", + "trod", + "troglodyte", + "troglodytes", + "trogon", + "trojan", + "troll", + "troller", + "trollop", + "troop", + "trooper", + "trope", + "trot", + "troth", + "trotter", + "trou-de-loup", + "troubadour", + "trouble", + "troubler", + "troublesome", + "trough", + "trounce", + "troupe", + "trousers", + "trousseau", + "trout", + "trowel", + "truant", + "truce", + "truck", + "trucker", + "truckle", + "truckler", + "truculent", + "trudge", + "true", + "true-blue", + "truelove", + "truffle", + "trump", + "trumpet", + "trumpeter", + "trumpets", + "trumpetwood", + "truncheon", + "trundle", + "trunk", + "trunnel", + "truss", + "trust", + "trustee", + "truster", + "truth", + "tryst", + "tsar", + "tsarina", + "tsaritsa", + "tsetse", + "tub", + "tuba", + "tube", + "tuber", + "tubercle", + "tubercular", + "tubman", + "tubular", + "tubule", + "tuck", + "tuckahoe", + "tucker", + "tucket", + "tudor", + "tufa", + "tuff", + "tuft", + "tug", + "tugboat", + "tugger", + "tulip", + "tulipwood", + "tulle", + "tumble", + "tumble-down", + "tumblebug", + "tumbler", + "tumbling", + "tumbrel", + "tumbril", + "tumor", + "tumult", + "tumulus", + "tun", + "tuna", + "tundra", + "tune", + "tuner", + "tunguses", + "tunicata", + "tunker", + "tunnel", + "tup", + "tupelo", + "turacou", + "turban", + "turbot", + "turbulent", + "turcoman", + "turdus", + "turf", + "turk", + "turkeys", + "turkis", + "turkoman", + "turmoil", + "turn", + "turncoat", + "turner", + "turnip", + "turnix", + "turnover", + "turnpike", + "turnspit", + "turnstile", + "turpitude", + "turret", + "turtle", + "turtledove", + "turtlehead", + "turtler", + "turtling", + "turves", + "tuscan", + "tuscaroras", + "tush", + "tusk", + "tusker", + "tussle", + "tussock", + "tut", + "tutelar", + "tutor", + "tutoress", + "tutsan", + "twaddle", + "twaddler", + "twaddling", + "twang", + "twayblade", + "tweak", + "tweedle", + "tweer", + "tweeze", + "tweezers", + "twelfth", + "twelfthtide", + "twelve", + "twelvemonth", + "twentieth", + "twice", + "twiddle", + "twig", + "twilight", + "twill", + "twiner", + "twinge", + "twinkle", + "twinkler", + "twinkling", + "twirl", + "twist", + "twister", + "twit", + "twitch", + "twitter", + "two", + "twofold", + "tycoon", + "tyke", + "tyler", + "tympan", + "tympanist", + "tympanites", + "tympanum", + "tyne", + "type", + "typesetter", + "typewrite", + "typewriter", + "typhon", + "typhoon", + "typhus", + "typo", + "typographer", + "tyrannicide", + "tyrant", + "tyre", + "tyro", + "tzar", + "tzarina", + "tzetze", + "udder", + "ultra", + "umpire", + "ur", + "uraninite", + "uranium", + "uranus", + "urban", + "urceole", + "urdu", + "urea", + "ureter", + "urethra", + "urge", + "urgent", + "urinator", + "urn", + "urocele", + "urochord", + "urochorda", + "urodele", + "uropygium", + "ursus", + "urtica", + "urus", + "us", + "usbegs", + "usbeks", + "use", + "user", + "usher", + "usnea", + "usufruct", + "usurer", + "usurp", + "usurper", + "ut", + "utas", + "utensil", + "uterus", + "utes", + "utica", + "utile", + "utmost", + "utricle", + "utriculus", + "utter", + "utterer", + "utterest", + "uttermost", + "uvea", + "uvula", + "uvular", + "uxoricide", + "vaccinator", + "vagabond", + "vagrant", + "valet", + "valor", + "valuator", + "valuer", + "vamper", + "vampire", + "vanquisher", + "vaporizer", + "vaquero", + "varnisher", + "vaticinator", + "vaulter", + "vaunter", + "vender", + "venerator", + "venter", + "ventriloquist", + "venturer", + "verger", + "verifier", + "versifier", + "vest", + "veteran", + "vexer", + "victim", + "victor", + "victualer", + "viewer", + "vilifier", + "vindicator", + "vintager", + "vintner", + "violator", + "viper", + "virago", + "virtuoso", + "vis-a-vis", + "visitant", + "visitor", + "vivisectionist", + "vociferator", + "voice", + "voider", + "volunteer", + "voodoo", + "voter", + "voucher", + "vower", + "voyager", + "vulcanizer", + "vulgar", + "waddler", + "wader", + "wag", + "wagerer", + "wagoner", + "wagonwright", + "wailer", + "wait", + "waiter", + "waitress", + "waker", + "walker", + "waller", + "wallet", + "wanderer", + "wanton", + "warbler", + "ward", + "warder", + "warehouseman", + "warmer", + "warmonger", + "warner", + "warrant", + "warranter", + "warrantor", + "warrior", + "washer", + "washerman", + "washerwoman", + "washstand", + "wassailer", + "waster", + "watch", + "watcher", + "watchmaker", + "watchman", + "watchword", + "waterer", + "waterleaf", + "waterman", + "watermark", + "watermelon", + "waterproof", + "waterscape", + "waterspout", + "waterworn", + "watt", + "wattle", + "wattling", + "waul", + "wave", + "wavelet", + "waver", + "waverer", + "wawl", + "wax", + "waxwork", + "waybill", + "wayfarer", + "wayside", + "wayward", + "weak", + "weakener", + "weakling", + "weald", + "wealth", + "wean", + "weapon", + "wear", + "wearer", + "wearisome", + "weasel", + "weather", + "weather-bound", + "weatherboard", + "weathercock", + "weatherglass", + "weatherproof", + "weatherworn", + "weave", + "weaver", + "web", + "weber", + "webfoot", + "webster", + "weder", + "wedge", + "wedlock", + "wee", + "weeder", + "week", + "weep", + "weeper", + "weevil", + "weft", + "weigela", + "weigh", + "weighbridge", + "weigher", + "weight", + "weir", + "weird", + "weka", + "welch", + "welcher", + "welcome", + "welcomer", + "weld", + "welder", + "welfare", + "well", + "well-known", + "well-nigh", + "well-read", + "well-set", + "wellhead", + "wellingtons", + "welsh", + "welsher", + "welshman", + "welt", + "welter", + "wench", + "wencher", + "wend", + "wends", + "went", + "wept", + "were", + "werewolf", + "wesleyan", + "west", + "western", + "westerner", + "westernmost", + "westmost", + "westward", + "westwards", + "wet", + "wether", + "whack", + "whacker", + "whale", + "whaleboat", + "whaler", + "whaling", + "whang", + "whap", + "wharf", + "whatever", + "whatnot", + "whatsoever", + "wheat", + "wheatear", + "wheatworm", + "wheedle", + "wheel", + "wheelbarrow", + "wheeler", + "wheelhouse", + "wheeling", + "wheelwork", + "wheelwright", + "wheeze", + "whelk", + "whelm", + "whelp", + "whereabouts", + "wherefore", + "wheresoever", + "wherever", + "whet", + "whiff", + "whiffletree", + "whig", + "while", + "whiles", + "whim", + "whimper", + "whinchat", + "whiner", + "whip", + "whipcord", + "whiplash", + "whipper", + "whippersnapper", + "whippletree", + "whipsaw", + "whipstitch", + "whir", + "whirl", + "whirler", + "whirligig", + "whirling", + "whirlwind", + "whisk", + "whisker", + "whisper", + "whisperer", + "whist", + "whistle", + "whistler", + "whistling", + "whit", + "white", + "white-hot", + "whitebait", + "whitecap", + "whitehead", + "whitener", + "whites", + "whitester", + "whitetail", + "whitethorn", + "whitethroat", + "whitewash", + "whitewood", + "whitlow", + "whitsun", + "whitsuntide", + "whittle", + "whittlings", + "whiz", + "who", + "whole", + "wholesale", + "wholesome", + "whoop", + "whooper", + "whop", + "whopper", + "whore", + "whoredom", + "whoremonger", + "whoreson", + "whorl", + "wichitas", + "wick", + "wicker", + "wickerwork", + "wicket", + "wide", + "wide-awake", + "widespread", + "widgeon", + "widow", + "widower", + "widowhood", + "width", + "wield", + "wife", + "wig", + "wigeon", + "wiggle", + "wiggler", + "wight", + "wigwag", + "wigwam", + "wild", + "wildebeest", + "wilder", + "wildfire", + "wile", + "will", + "willet", + "willing", + "willow", + "wilt", + "wimble", + "wimple", + "wince", + "winch", + "wind", + "winder", + "windfall", + "windflower", + "windlass", + "windmill", + "window", + "windpipe", + "windsor", + "windstorm", + "windward", + "wineglass", + "winger", + "wink", + "winker", + "winkle", + "winner", + "winnow", + "winsome", + "winter", + "wipe", + "wiper", + "wire", + "wire-puller", + "wirework", + "wireworm", + "wis", + "wisdom", + "wiseacre", + "wish-wash", + "wisp", + "wit", + "witch", + "witchcraft", + "withdraw", + "withdrawer", + "withe", + "wither", + "withers", + "withhold", + "withholder", + "withstand", + "withstander", + "withstood", + "witnesser", + "wivern", + "wives", + "wizard", + "woad", + "wobble", + "woe", + "woke", + "wold", + "wolf", + "wolfram", + "wolframite", + "wollastonite", + "wolves", + "woman", + "womanhood", + "womankind", + "womb", + "wombat", + "won", + "wonder", + "wonderer", + "wonderland", + "wonders", + "wont", + "woo", + "wood", + "woodchuck", + "woodcock", + "woodcraft", + "woodcut", + "woodcutter", + "woodland", + "woodman", + "woodpecker", + "woodruff", + "woodsman", + "woodward", + "woodwork", + "woodworm", + "wooer", + "woof", + "word", + "wordbook", + "wore", + "work", + "workbag", + "workbasket", + "workbench", + "workbox", + "worker", + "workfellow", + "workhouse", + "workingman", + "workman", + "workroom", + "workshop", + "world", + "world-wide", + "worldling", + "worm", + "wormhole", + "wormwood", + "worn", + "worn-out", + "worrier", + "worrisome", + "worse", + "worser", + "worshiper", + "worst", + "wort", + "worth", + "worthwhile", + "would-be", + "wound", + "wounder", + "wove", + "wrack", + "wraith", + "wrangle", + "wrangler", + "wrap", + "wrapper", + "wrasse", + "wrath", + "wrawl", + "wreak", + "wreath", + "wreathe", + "wreck", + "wrecker", + "wrench", + "wrest", + "wrester", + "wrestle", + "wrestler", + "wretch", + "wriggle", + "wriggler", + "wright", + "wringer", + "wrinkle", + "wrist", + "wristband", + "wristlet", + "writ", + "write", + "writer", + "writhe", + "wrong", + "wrongdoer", + "wronger", + "wrote", + "wroth", + "wrought", + "wrung", + "wrymouth", + "wryneck", + "wulfenite", + "wye", + "wys", + "wyvern", + "xenotime", + "xeroderma", + "xiphias", + "xiphosura", + "xylem", + "xylocopa", + "xyris", + "yachtsman", + "yea", + "yeoman", + "yielder", + "youngster", + "younker", + "youth", + "zealot" + ] \ No newline at end of file diff --git a/data/verbs.json b/data/verbs.json new file mode 100644 index 0000000..0ebaaab --- /dev/null +++ b/data/verbs.json @@ -0,0 +1,635 @@ +[ + "accepted", + "added", + "admired", + "admitted", + "advised", + "afforded", + "agreed", + "alerted", + "allowed", + "amused", + "analysed", + "announced", + "annoyed", + "answered", + "apologised", + "appeared", + "applauded", + "appreciated", + "approved", + "argued", + "arranged", + "arrested", + "arrived", + "asked", + "attached", + "attacked", + "attempted", + "attended", + "attracted", + "avoided", + "backed", + "baked", + "balanced", + "banned", + "banged", + "bared", + "batted", + "bathed", + "battled", + "beamed", + "begged", + "behaved", + "belonged", + "bleached", + "blessed", + "blinded", + "blinked", + "blotted", + "blushed", + "boasted", + "boiled", + "bolted", + "bombed", + "booked", + "bored", + "borrowed", + "bounced", + "bowed", + "boxed", + "braked", + "branched", + "breathed", + "bruised", + "brushed", + "bubbled", + "bumped", + "burned", + "buried", + "buzzed", + "calculated", + "called", + "camped", + "cared", + "carried", + "carved", + "caused", + "challenged", + "changed", + "charged", + "chased", + "cheated", + "checked", + "cheered", + "chewed", + "choked", + "chopped", + "claimed", + "clapped", + "cleaned", + "cleared", + "clipped", + "closed", + "coached", + "coiled", + "collected", + "coloured", + "combed", + "commanded", + "communicated", + "compared", + "competed", + "complained", + "completed", + "concentrated", + "concerned", + "confessed", + "confused", + "connected", + "considered", + "consisted", + "contained", + "continued", + "copied", + "corrected", + "coughed", + "counted", + "covered", + "cracked", + "crashed", + "crawled", + "crossed", + "crushed", + "cried", + "cured", + "curled", + "curved", + "cycled", + "dammed", + "damaged", + "danced", + "dared", + "decayed", + "deceived", + "decided", + "decorated", + "delayed", + "delighted", + "delivered", + "depended", + "described", + "deserted", + "deserved", + "destroyed", + "detected", + "developed", + "disagreed", + "disappeared", + "disapproved", + "disarmed", + "discovered", + "disliked", + "divided", + "doubled", + "doubted", + "dragged", + "drained", + "dreamed", + "dressed", + "dripped", + "dropped", + "drowned", + "drummed", + "dried", + "dusted", + "earned", + "educated", + "embarrassed", + "employed", + "emptied", + "encouraged", + "ended", + "enjoyed", + "entered", + "entertained", + "escaped", + "examined", + "excited", + "excused", + "exercised", + "existed", + "expand", + "expected", + "explained", + "exploded", + "extended", + "faced", + "faded", + "failed", + "fancied", + "fastened", + "faxed", + "feared", + "fenced", + "fetched", + "filed", + "filled", + "filmed", + "fired", + "fitted", + "fixed", + "flapped", + "flashed", + "floated", + "flooded", + "flowed", + "flowered", + "folded", + "followed", + "fooled", + "forced", + "formed", + "founded", + "framed", + "frightened", + "fried", + "gathered", + "gazed", + "glowed", + "glued", + "grabbed", + "grated", + "greased", + "greeted", + "grinned", + "gripped", + "groaned", + "guaranteed", + "guarded", + "guessed", + "guided", + "hammered", + "handed", + "handled", + "hung", + "happened", + "harassed", + "harmed", + "hated", + "haunted", + "headed", + "healed", + "heaped", + "heated", + "helped", + "hooked", + "hopped", + "hoped", + "hovered", + "hugged", + "hummed", + "hunted", + "hurried", + "identified", + "ignored", + "imagined", + "impressed", + "improved", + "included", + "increased", + "influenced", + "informed", + "injected", + "injured", + "instructed", + "intended", + "interested", + "interfered", + "interrupted", + "introduced", + "invented", + "invited", + "irritated", + "itched", + "jailed", + "jammed", + "jogged", + "joined", + "joked", + "judged", + "juggled", + "jumped", + "kicked", + "killed", + "kissed", + "knelt", + "knitted", + "knocked", + "knotted", + "labelled", + "landed", + "lasted", + "laughed", + "launched", + "learned", + "levelled", + "licensed", + "licked", + "lied", + "lightened", + "liked", + "listed", + "listened", + "lived", + "loaded", + "locked", + "longed", + "look", + "loved", + "manned", + "managed", + "marched", + "marked", + "married", + "matched", + "mated", + "mattered", + "measured", + "meddled", + "melted", + "memorised", + "mended", + "messed up", + "milked", + "mined", + "missed", + "mixed", + "moaned", + "moored", + "mourned", + "moved", + "muddled", + "mugged", + "multiplied", + "murdered", + "nailed", + "named", + "needed", + "nested", + "nodded", + "noted", + "noticed", + "numbered", + "obeyed", + "objected", + "observed", + "obtained", + "occurred", + "offended", + "offered", + "opened", + "ordered", + "overflowed", + "owed", + "owned", + "packed", + "paddled", + "painted", + "parked", + "parted", + "passed", + "pasted", + "patted", + "paused", + "pecked", + "pedalled", + "peeled", + "peeped", + "performed", + "permitted", + "phoned", + "picked", + "pinched", + "pined", + "placed", + "planned", + "planted", + "played", + "pleased", + "plugged", + "pointed", + "poked", + "polished", + "popped", + "possessed", + "posted", + "poured", + "practised", + "prayed", + "preached", + "preceded", + "preferred", + "prepared", + "presented", + "preserved", + "pressed", + "pretended", + "prevented", + "pricked", + "printed", + "produced", + "programmed", + "promised", + "protected", + "provided", + "pulled", + "pumped", + "punched", + "punctured", + "punished", + "pushed", + "questioned", + "questioned", + "raced", + "radiated", + "rained", + "raised", + "reached", + "realised", + "received", + "recognised", + "recorded", + "reduced", + "reflected", + "refused", + "regretted", + "reigned", + "rejected", + "rejoiced", + "relaxed", + "released", + "relied", + "remained", + "remembered", + "reminded", + "removed", + "repaired", + "repeated", + "replaced", + "replied", + "reported", + "reproduced", + "requested", + "rescued", + "retired", + "returned", + "rhyme", + "rinsed", + "risked", + "robbed", + "rocked", + "rolled", + "rotted", + "rubbed", + "ruined", + "ruled", + "rushed", + "sacked", + "sailed", + "satisfied", + "saved", + "sawed", + "scared", + "scattered", + "scolded", + "scorched", + "scraped", + "scratched", + "screamed", + "screwed", + "scribbled", + "scrubbed", + "sealed", + "searched", + "separate", + "served", + "settled", + "shaded", + "shared", + "shaved", + "sheltered", + "shivered", + "shocked", + "shopped", + "shrugged", + "sighed", + "signed", + "signalled", + "sinned", + "sipped", + "skied", + "skipped", + "slapped", + "slipped", + "slowed", + "smashed", + "smelled", + "smiled", + "smoked", + "snatched", + "sneezed", + "sniffed", + "snored", + "snowed", + "soaked", + "soothed", + "sounded", + "spared", + "sparked", + "sparkled", + "spelled", + "spilled", + "spoiled", + "spotted", + "sprayed", + "sprouted", + "squashed", + "squeaked", + "squealed", + "squeezed", + "stained", + "stamped", + "stared", + "started", + "stayed", + "steered", + "stepped", + "stirred", + "stitched", + "stopped", + "stored", + "strapped", + "strengthened", + "stretched", + "stripped", + "stroked", + "stuffed", + "subtracted", + "succeeded", + "sucked", + "suffered", + "suggested", + "suited", + "supplied", + "supported", + "supposed", + "surprised", + "surrounded", + "suspected", + "suspended", + "switched", + "talked", + "tamed", + "tapped", + "tasted", + "teased", + "telephoned", + "tempted", + "terrified", + "tested", + "thanked", + "thawed", + "ticked", + "tickled", + "tied", + "timed", + "tipped", + "tired", + "touched", + "toured", + "towed", + "traced", + "traded", + "trained", + "transported", + "trapped", + "travelled", + "treated", + "trembled", + "tricked", + "tripped", + "trotted", + "troubled", + "trusted", + "tried", + "tugged", + "tumbled", + "turned", + "twisted", + "typed", + "undressed", + "unfastened", + "united", + "unlocked", + "unpacked", + "untidied", + "used", + "vanished", + "visited", + "wailed", + "waited", + "walked", + "wandered", + "wanted", + "warmed", + "warned", + "washed", + "wasted", + "watched", + "watered", + "waved", + "weighed", + "welcomed", + "whined", + "whipped", + "whirled", + "whispered", + "whistled", + "winked", + "wiped", + "wished", + "wobbled", + "wondered", + "worked", + "worried", + "wrapped", + "wrecked", + "wrestled", + "wriggled", + "x-rayed", + "yawned", + "yelled", + "zipped", + "zoomed" +] \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..e5a1076 --- /dev/null +++ b/index.js @@ -0,0 +1,111 @@ + +/** + * This module provides the main function that outputs a username. + * Copyright 2021 © Joey Malvinni + * @author Joey Malvinni + * + * @license + * Copyright 2021 © Joey Malvinni. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + **/ + +const fs = require('fs'); +const capitalize = require('./src/capitalize') +const CategoryError = require('./src/CategoryError') +const { randomNumber, randomRange } = require('./src/random') +const shuffle = require('./src/shuffle') + +let words = {}; + +let wordCategories = []; + +let wordsFolder; + +wordsFolder = fs.readdirSync(__dirname + '\\data') + +for(let i = 0; i < wordsFolder.length; i++){ + words[wordsFolder[i].slice(0, -5).split('_').join(' ')] = JSON.parse(fs.readFileSync(__dirname + '\\data\\' + wordsFolder[i]).toString()); + wordCategories.push(wordsFolder[i].slice(0, -5).split('_').join(' ')); +}; + +function generateNumber(){ + var number = randomNumber(randomRange(1, 6)); + while(isNaN(number)){ + number = randomNumber(randomRange(1, 6)); + }; + return number; +} + +/** + * Generates a username. + * @function + * @param {object} settings - Advanced options can be set here. + */ + +function generateUsername(settings){ + settings = settings || {}; + + if (typeof(settings.wordFormatter) !== 'function') { + settings.wordFormatter = (word) => word; + }; + + if (typeof(settings.formatter) !== 'function') { + settings.formatter = (word) => word; + }; + + if (typeof(settings.separator) !== 'string') { + settings.separator = ''; + }; + + if (!Array.isArray(settings.order)) { + settings.order = ["adjectives", "nouns", "numbers"]; + }; + + if (!Array.isArray(settings.capitalize)) { + settings.capitalize = wordCategories; + }; + + + var final = ''; + + for (let i = 0; i < settings.order.length; i++){ + if (typeof words[settings.order[i]] !== 'undefined' && wordCategories.indexOf(settings.order[i]) !== -1) { + let index = randomNumber(randomRange(0, words[settings.order[i]].length)); + while(typeof words[settings.order[i]][index] == 'undefined'){ + index = randomNumber(randomRange(0, words[settings.order[i]].length)); + }; + let word = shuffle(words[settings.order[i]])[index].toString(); + if (settings.capitalize.includes(settings.order[i])) { + word = capitalize(word); + } else { + word = word.toLowerCase(); + }; + final += settings.wordFormatter(word); + } else { + if (settings.order[i] === 'numbers') { + final += settings.wordFormatter(generateNumber().toString()); + } else { + if (settings.customWords) { + final += settings.wordFormatter(settings.order[i].toString()); + } else { + throw new CategoryError(settings.order[i]); + }; + }; + }; + if (i !== settings.order.length - 1) final += settings.separator; + }; + return settings.formatter(final.toString()); +}; + +module.exports = generateUsername; \ No newline at end of file diff --git a/logos/RandomUsernamesLogo.png b/logos/RandomUsernamesLogo.png new file mode 100644 index 0000000..26022d8 Binary files /dev/null and b/logos/RandomUsernamesLogo.png differ diff --git a/logos/RandomUsernamesLogo.svg b/logos/RandomUsernamesLogo.svg new file mode 100644 index 0000000..e3b32ab --- /dev/null +++ b/logos/RandomUsernamesLogo.svg @@ -0,0 +1,19 @@ + + + + + + Random Usernames + + diff --git a/logos/RandomUsernamesLogo_v1.png b/logos/RandomUsernamesLogo_v1.png new file mode 100644 index 0000000..a42fc54 Binary files /dev/null and b/logos/RandomUsernamesLogo_v1.png differ diff --git a/logos/RandomUsernamesLogo_v1.svg b/logos/RandomUsernamesLogo_v1.svg new file mode 100644 index 0000000..36c0ce3 --- /dev/null +++ b/logos/RandomUsernamesLogo_v1.svg @@ -0,0 +1,33 @@ + + + + + + + Random Usernames + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a88e78a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1935 @@ +{ + "name": "random-usernames", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "chai": "*", + "mocha": "*" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-MPSLOZwxxnA0DhLE84klnGPojWFK5KuhP7/j5dTsxpr2S3XlkqJP5WbyYl1gCTWvG2Z5N+HD4F472WsbEZL6Pw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.1.tgz", + "integrity": "sha512-5SBMxANWqOv5bw3Hx+HVgaWlcWcFEQDUdaUAr1AUU+qwtx6cowhn7gEDT/DwQP7uYxnvShdUOVLbTYAHOEGfDQ==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chai": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.3.tgz", + "integrity": "sha512-MPSLOZwxxnA0DhLE84klnGPojWFK5KuhP7/j5dTsxpr2S3XlkqJP5WbyYl1gCTWvG2Z5N+HD4F472WsbEZL6Pw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.1.tgz", + "integrity": "sha512-5SBMxANWqOv5bw3Hx+HVgaWlcWcFEQDUdaUAr1AUU+qwtx6cowhn7gEDT/DwQP7uYxnvShdUOVLbTYAHOEGfDQ==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f06083c --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "random-usernames", + "version": "1.0.0", + "description": "An advanced, fast, and customizable username framework for Node.", + "main": "index.js", + "directories": { + "test": "tests" + }, + "scripts": { + "test": "mocha tests/index.test.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/joeymalvinni/random-usernames.git" + }, + "keywords": [ + "username", + "generator", + "username-generator", + "random-usernames", + "usernames", + "advanced", + "usernames" + ], + "author": "Joey Malvinni", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/joeymalvinni/random-usernames/issues" + }, + "homepage": "https://github.com/joeymalvinni/random-usernames#readme", + "devDependencies": { + "chai": "*", + "mocha": "*" + } +} diff --git a/src/CategoryError.js b/src/CategoryError.js new file mode 100644 index 0000000..5540d24 --- /dev/null +++ b/src/CategoryError.js @@ -0,0 +1,9 @@ +class CategoryNotFoundError extends Error { + constructor(category) { + super('The requested category "' + category + '" was not found. If you would like to add "' + category + '" as an absolute string in the username, enable customWords in the settings object.'); + this.name = this.constructor.name; + Error.captureStackTrace(this, this.constructor); + } +} + +module.exports = CategoryNotFoundError; \ No newline at end of file diff --git a/src/capitalize.js b/src/capitalize.js new file mode 100644 index 0000000..e224933 --- /dev/null +++ b/src/capitalize.js @@ -0,0 +1,8 @@ +function capitalize(string){ + if (typeof string !== 'string'){ + return string; + }; + return string.charAt(0).toUpperCase() + string.slice(1); +} + +module.exports = capitalize; \ No newline at end of file diff --git a/src/random.js b/src/random.js new file mode 100644 index 0000000..b21148a --- /dev/null +++ b/src/random.js @@ -0,0 +1,14 @@ +const crypto = require('crypto'); + +function randomNumber(length){ + return parseInt(crypto.randomBytes(length).toString('hex')); +} + +function randomRange(min, max) { + return Math.random() * (max - min) + min; +} + +module.exports = { + randomNumber, + randomRange +} \ No newline at end of file diff --git a/src/readAsArray.js b/src/readAsArray.js new file mode 100644 index 0000000..44c6968 --- /dev/null +++ b/src/readAsArray.js @@ -0,0 +1,16 @@ +var fs = require('fs') + +function read(filePath){ + return new Promise((resolve, reject) => { + fs.readFile(filePath, 'utf8', function(err, array){ + if(err){ + reject(err) + } + array = JSON.parse(array) + array = eval(array) + resolve(array) + }) + }) +} + +module.exports = read; \ No newline at end of file diff --git a/src/shuffle.js b/src/shuffle.js new file mode 100644 index 0000000..3f5e0cd --- /dev/null +++ b/src/shuffle.js @@ -0,0 +1,18 @@ +// Taken from: https://stackoverflow.com/a/2450976 + +function shuffle(array) { + var currentIndex = array.length, temporaryValue, randomIndex; + + while (0 !== currentIndex) { + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; +} + +module.exports = shuffle; \ No newline at end of file diff --git a/src/writeToJSON.js b/src/writeToJSON.js new file mode 100644 index 0000000..956f469 --- /dev/null +++ b/src/writeToJSON.js @@ -0,0 +1,22 @@ +const readArray = require('./readAsArray') + +async function writeToJSON(file, ...data){ + let arr = []; + + if(fs.existsSync(file)){ + let users = await readArray(file) + + users.forEach(object => { + arr.push(object) + }) + arr.push(user) + + fs.writeFileSync(file, JSON.stringify(arr, null, 4)) + } else { + arr.push(user) + fs.writeFileSync(file, JSON.stringify(arr, null, 4)) + } + return; +} + +module.exports = writeToJSON; \ No newline at end of file diff --git a/tests/index.test.js b/tests/index.test.js new file mode 100644 index 0000000..849df47 --- /dev/null +++ b/tests/index.test.js @@ -0,0 +1,95 @@ +let generateUsername = require('../index'); +let CategoryError = require('../src/CategoryError') +let chai = require('chai') +var expect = chai.expect; + +function isCapitalized(word){ + return word.charAt(0) === word.charAt(0).toUpperCase() +} + +chai.Assertion.addProperty('uppercase', function () { + var obj = this._obj; + new chai.Assertion(obj).to.be.a('string'); + + this.assert( + obj === obj.toUpperCase(), + 'expected #{this} to be all uppercase', + 'expected #{this} to not be all uppercase' + ); +}); + +chai.Assertion.addProperty('capitalized', function () { + var obj = this._obj; + new chai.Assertion(obj).to.be.a('string'); + + this.assert( + isCapitalized(obj), + 'expected #{this} to start with an uppercase', + 'expected #{this} to not start with an uppercase' + ); +}); + + +describe('Random Usernames:', function() { + it('Should output three items in an array', function(done){ + expect(generateUsername({ + order: ["adjectives", "nouns"], + separator: '_', + formatter: (str) => str.split('_'), + })).to.have.length(2) + done() + }) + it('Should add custom words when customWords is enabled', function(done){ + let output = generateUsername({ + order: ["customWord", "adjectives", "nouns"], + separator: '_', + formatter: (str) => str.split('_'), + customWords: true + }) + + expect(output).to.have.length(3); + expect(output).to.include('customWord'); + done() + }) + it('Should throw an error when customWords isn\'t enabled and an inputted word is not a category', function(done){ + try { + generateUsername({ + order: ["wordThatWillThrowError"], + customWords: false + }) + } catch (err) { + expect(err.message).to.eql(new CategoryError('wordThatWillThrowError').message) + done() + } + }) + it('Should correctly format words when specifying a custom formatter', function(done){ + let output = generateUsername({ + order: ["adjectives", "nouns"], + formatter: (word) => word.toUpperCase() + }) + + expect(output).to.be.uppercase; + done() + }) + it('Should use a seperator when specified', function(done){ + let output = generateUsername({ + separator: '__' + }) + + expect(output).to.include('__') + done() + }) + it('Should capitalize words when specified', function(done){ + let output = generateUsername({ + order: ['nouns', 'adjectives'], + capitalize: ['nouns', 'adjectives'], + separator: '_', + formatter: (username) => username.split('_') + }) + + expect(output).to.have.length(2) + expect(output[0]).to.be.capitalized + expect(output[1]).to.be.capitalized + done() + }) +}); \ No newline at end of file