Josh1147582 9 лет назад
Сommit
aabce17545

BIN
.README.md.un~


+ 58 - 0
README.md

@@ -0,0 +1,58 @@
+# fallout-terminal-clone
+WHAT IS fallout-terminal-clone?
+	
+	fallout-terminal-clone is a modest recreation of the terminal hacking system
+	in Fallout 3 and Fallout: New Vegas developed with curses. It runs directly
+	in your terminal or command prompt. I mostly did this as a fun and 
+	interesting way to explore C.
+	
+INSTRUCTIONS
+
+	Use WASD to move, and ENTER to choose your selected letter. Ctrl-C to quit.
+
+BUILDING
+
+	WINDOWS
+
+		Requirements:
+			- mingw-g++ (C/C++ support for MinGW)
+
+		Once MinGW is installed with support for C/C++ compilation, simply copy
+		everything from src\deps\ into your MinGW folder. This will install the
+		necessary PDcurses libraries.
+		
+		Once this is finished, you can compile by running:
+		gcc FalloutTerminalWin.c -lpdcurses -static -o FalloutTerminal.exe
+
+		The -static flag is optional, but ensures you won't need to bundle
+		libpdcurses.dll with your binary.
+
+	LINUX
+
+		Requirements:
+			- gcc
+			- ncurses
+
+		Once the above dependencies are satisfied, simply run:
+		gcc FalloutTerminalLinux.c -lncurses -o FalloutTerminal
+		
+	OSX
+		
+		I don't have an OSX system to test compilation on. I would 
+		reccommend installing ncurses, then attempting the Linux
+		build instructions.
+
+
+PLANS FOR THE FUTURE
+
+	ADD a config file that allows you to:
+		change difficulty
+		change whether skips/shortcuts are available
+		launch another program after it's done
+	Possible mouse support?
+
+
+
+I DO NOT OWN THE IDEA FOR THIS GAME, NOR DO I CLAIM ANY OWNERSHIP
+OF FALLOUT 3 OR FALLOUT: NEW VEGAS. THOSE COPYRIGHTS ARE THE 
+PROPERTY OF BETHESDA SOFTWORKS.

+ 51 - 0
README.md~

@@ -0,0 +1,51 @@
+# fallout-terminal-clone
+WHAT IS fallout-terminal-clone?
+	
+	fallout-terminal-clone is a modest recreation of the terminal hacking system
+	in Fallout 3 and Fallout: New Vegas developed with curses. It runs directly
+	in your terminal or command prompt. I mostly did this as a fun and 
+	interesting way to explore C.
+	
+INSTRUCTIONS
+
+	Use WASD to move, and ENTER to choose your selected letter. Ctrl-C to quit.
+
+BUILDING
+
+	WINDOWS
+
+		Requirements:
+			- mingw-g++ (C/C++ support for MinGW)
+
+		Once MinGW is installed with support for C/C++ compilation, simply copy
+		everything from src\deps\ into your MinGW folder. This will install the
+		necessary PDcurses libraries.
+		
+		Once this is finished, you can compile by running:
+		gcc FalloutTerminalWin.c -lpdcurses -static -o FalloutTerminal.exe
+
+		The -static flag is optional, but ensures you won't need to bundle
+		libpdcurses.dll with your binary.
+
+	LINUX
+
+		Requirements:
+			- gcc
+			- ncurses
+
+		Once the above dependencies are satisfied, simply run:
+		gcc FalloutTerminalLinux.c -lncurses -o FalloutTerminal
+		
+	OSX
+		
+		I don't have an OSX system to test compilation on. I would 
+		reccommend installing ncurses, then attempting the Linux
+		build instructions.
+
+
+PLANS FOR THE FUTURE
+
+	ADD a config file that allows you to:
+		change difficulty
+		change whether skips/shortcuts are available
+		launch another program after it's done

BIN
bin/linux/FalloutTerminal


BIN
bin/win/FalloutTerminal.exe


+ 1662 - 0
src/FalloutTerminalLinux.c

@@ -0,0 +1,1662 @@
+#include <ncurses.h>
+#include <time.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+// Sleep is in Windows.h, PDCurses is in curses.h.  
+// Win32 PDcurses build MUST use Sleep, not usleep.
+// usleep/1000 = Sleep
+
+// Windows includes booleans in Windows.h.
+// Unix requires stdbool.h, which names them bools.
+
+bool slowPrint(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i,"%c",arr[i]);
+		move(line, i+1);
+		refresh();
+		if(kbhit()){
+			return TRUE;
+		}
+		usleep(20000);
+	}
+	return FALSE;
+}
+
+bool slowType(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i+1,"%c",arr[i]);
+		move(line, i+2);
+		refresh();
+		if(kbhit()){
+			return TRUE;
+		}
+		usleep(70000);
+	}
+	return FALSE;
+}
+
+void passPrint(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i,"%c",arr[i]);
+		move(line, i+1);
+		refresh();
+		usleep(20000);
+	}
+}
+
+int kbhit(){
+    int ch = getch();
+
+    if (ch != ERR) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+void printChoicesLeft(int hex, char arr[], int line){
+	mvprintw(line,0,"0x%X", hex);
+	int i;
+	for(i=0; i<12; i++)
+		mvprintw(line,7+i,"%c",arr[i]);
+	move(line, 20);
+	refresh();
+	usleep(30000);
+}
+
+void printChoicesRight(int hex, char arr[], int line){
+	mvprintw(line,20,"0x%X", hex);
+	int i;
+	for(i=0; i<12; i++)
+		mvprintw(line,27+i,"%c",arr[i]);
+	move(line, 40);
+	refresh();
+	usleep(30000);
+}
+
+int intro(){
+	usleep(250000);
+	char arr[] = "WELCOME TO ROBCO INDUSTRIES (TM) TERMLINK";
+	
+	bool stop = slowPrint(arr,sizeof(arr), 0);
+	if(stop){return;}
+	move(1, 0);
+	refresh();
+	usleep(30000);
+	mvprintw(2,0,"%c", '>');
+	move(2,1);
+	refresh();
+	usleep(1500000);
+
+	char arr2[] = "SET TERMINAL/INQUIRE";
+	stop = slowType(arr2,sizeof(arr2), 2);
+	if(stop){return;}
+	
+
+	char arr3[] = "RIT-V300";
+	stop = slowPrint(arr3,sizeof(arr3), 4);
+	if(stop){return;}
+
+	mvprintw(6,0,"%c", '>');
+	refresh();
+	usleep(1500000);
+	char arr4[] = "SET FILE/PROTECTION=OWNER:RWED ACCOUNTS.F";
+	stop = slowType(arr4,sizeof(arr4),6);
+	if(stop){return;}
+	
+	mvprintw(7,0,"%c", '>');
+	refresh();
+	usleep(1500000);
+	char arr5[] = "SET HALT RESTART/MAINT";
+	stop = slowType(arr5,sizeof(arr5),7);
+	if(stop){return;}
+	
+	char arr6[] = "Initializing Robco Industries(TM) Boot Agent v2.3.0";
+	stop = slowPrint(arr6,sizeof(arr6),9);
+	if(stop){return;}
+
+	char arr7[] = "RBIOS-4.02.08.00 53EE5.E7.E8";
+	stop = slowPrint(arr7,sizeof(arr7),10);
+	if(stop){return;}
+
+	char arr8[] = "Copyright 2201-22-3 Robco Ind.";
+	stop = slowPrint(arr8,sizeof(arr8),11);
+	if(stop){return;}
+
+	char arr9[] = "Uppermem: 64 KB";
+	stop = slowPrint(arr9,sizeof(arr9),12);
+	if(stop){return;}
+
+	char arr10[] = "Root (5A8)";
+	stop = slowPrint(arr10,sizeof(arr10),13);
+	if(stop){return;}
+
+	char arr11[] = "Maintenance Mode";
+	stop = slowPrint(arr11,sizeof(arr11),14);
+	if(stop){return;}
+
+	mvprintw(16,0,"%c",'>');
+	refresh();
+	usleep(1500000);
+	char arr12[] = "RUN DEBUG/ACCOUNTS.F";
+	stop = slowType(arr12,sizeof(arr12),16);
+	if(stop){return;}
+	move(16,0);
+	refresh();
+	usleep(50000);
+}
+
+
+bool currentCharContains(char arr[],char c){
+	int i;
+	for(i=0; i<12; i++)
+		if(arr[i]==c)
+			return TRUE;
+	return FALSE;
+}
+
+
+void pass(){
+	// Start a new screen where nodelay is false
+	endwin();
+	initscr();
+	noecho();
+	refresh();
+	attron(A_BOLD);
+	nodelay(stdscr, FALSE);
+	if(has_colors() == TRUE){
+		// Colors
+		start_color();
+		init_pair(1,COLOR_GREEN,COLOR_BLACK);
+		attron(COLOR_PAIR(1));
+	}
+	
+	// Intro text
+	char prompt[] = "ROBCO INDUSTRIES (TM) TERMLINK PROTOCOL";
+	passPrint(prompt,sizeof(prompt),0);
+	
+	char prompt2[] = "ENTER PASSWORD NOW";
+	passPrint(prompt2, sizeof(prompt2), 1);
+	char prompt3[] = "4 ATTEMPT(S) LEFT: * * * *";
+	passPrint(prompt3, sizeof(prompt3), 3);
+	
+	// Generate the hex values on the left sides
+	int arbHex;
+	arbHex = (rand() % 200) + 63744;
+	
+	// Generate the string to hold the bracket tricks and words
+	char bigString [408];
+	char randValues[] = "!@#$%^*()_-=+\\|/[]{}?\"\':;,.<>";
+	int i;
+	for(i=0; i<408; i++){
+		// Fill bigString with random values
+		bigString[i] = randValues[rand()%29];
+	}
+	
+	// Words from http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt
+		char *wordArr[] = {
+"AAHED", "ABACI", "ABACK", "ABAFT", "ABASE", "ABASH", "ABATE", 
+"ABBES", "ABBEY", "ABBOT", "ABEAM", "ABETS", "ABHOR", "ABIDE", 
+"ABLER", "ABLES", "ABNER", "ABODE", "ABOIL", "ABORT", "ABOUT", 
+"ABOVE", "ABUSE", "ABUTS", "ABUZZ", "ABYES", "ABYSM", "ABYSS", 
+"ACCTS", "ACERB", "ACHED", "ACHES", "ACHOO", "ACIDS", "ACIDY", 
+"ACING", "ACMES", "ACNED", "ACNES", "ACOIN", "ACORN", "ACRED", 
+"ACRES", "ACRID", "ACTED", "ACTIN", "ACTOR", "ACUTE", "ADAGE", 
+"ADAMS", "ADAPT", "ADDAX", "ADDED", "ADDER", "ADDLE", "ADEPT", 
+"ADIEU", "ADIOS", "ADITS", "ADMAN", "ADMEN", "ADMIN", "ADMIT", 
+"ADMIX", "ADOBE", "ADOLF", "ADOPT", "ADORE", "ADORN", "ADOZE", 
+"ADULT", "ADYTA", "ADZES", "AEGIS", "AEONS", "AERIE", "AESOP", 
+"AFARS", "AFFIX", "AFIRE", "AFOOT", "AFORE", "AFOUL", "AFRIT", 
+"AFROS", "AFTER", "AGAIN", "AGAMA", "AGAPE", "AGARS", "AGATE", 
+"AGAVE", "AGAZE", "AGENT", "AGERS", "AGGIE", "AGHAS", "AGILE", 
+"AGING", "AGIST", "AGLEE", "AGLET", "AGLEY", "AGLOW", "AGONE", 
+"AGONS", "AGONY", "AGORA", "AGREE", "AGRIC", "AGUES", "AHEAD", 
+"AHEMS", "AHOLD", "AIDED", "AIDER", "AIDES", "AILED", "AIMED", 
+"AIMER", "AINUS", "AIRED", "AIRER", "AISLE", "AITCH", "AJIVA", 
+"AKRON", "ALACK", "ALAMO", "ALANS", "ALARM", "ALARY", "ALATE", 
+"ALBUM", "ALDER", "ALECS", "ALEFS", "ALEPH", "ALERT", "ALFAS", 
+"ALGAE", "ALGAL", "ALGAS", "ALGID", "ALGIN", "ALIAS", "ALIBI", 
+"ALICE", "ALIEN", "ALIGN", "ALIKE", "ALINE", "ALIVE", "ALKYD", 
+"ALKYL", "ALLAH", "ALLAY", "ALLEN", "ALLER", "ALLEY", "ALLOT", 
+"ALLOW", "ALLOY", "ALOES", "ALOFT", "ALOHA", "ALONE", "ALONG", 
+"ALOOF", "ALOUD", "ALPHA", "ALTAR", "ALTER", "ALTHO", "ALTOS", 
+"ALUMS", "ALWAY", "AMAHS", "AMAIN", "AMASS", "AMAZE", "AMBER", 
+"AMBLE", "AMEBA", "AMEER", "AMEND", "AMENS", "AMENT", "AMIAS", 
+"AMICE", "AMICI", "AMIDE", "AMIDS", "AMIES", "AMIGO", "AMINO", 
+"AMIRE", "AMIRS", "AMISH", "AMISS", "AMITY", "AMMOS", "AMOKS", 
+"AMOLE", "AMONG", "AMORT", "AMOUR", "AMOVE", "AMPLE", "AMPLY", 
+"AMPUL", "AMUCK", "AMUSE", "AMYLS", "ANDES", "ANDRE", "ANEAR", 
+"ANELE", "ANENT", "ANGAS", "ANGEL", "ANGER", "ANGLE", "ANGLO", 
+"ANGRY", "ANGST", "ANGUS", "ANILE", "ANILS", "ANIMA", "ANIMO", 
+"ANION", "ANISE", "ANKHS", "ANKLE", "ANKUS", "ANNAL", "ANNAS", 
+"ANNAT", "ANNEX", "ANNIE", "ANNOY", "ANNUL", "ANNUM", "ANODE", 
+"ANOIA", "ANOLE", "ANOMY", "ANTED", "ANTES", "ANTIC", "ANTIS", 
+"ANTRA", "ANTRE", "ANVIL", "AORTA", "AOUAD", "APACE", "APART", 
+"APEAK", "APEEK", "APERS", "APERY", "APHID", "APHIS", "APIAN", 
+"APING", "APISH", "APIUM", "APNEA", "APORT", "APPAL", "APPLE", 
+"APPLY", "APRES", "APRIL", "APRON", "APSES", "APTER", "APTLY", 
+"AQUAE", "AQUAS", "ARABS", "ARAKS", "ARBOR", "ARCED", "ARCUS", 
+"ARDOR", "AREAL", "AREAS", "ARENA", "ARETE", "ARGAL", "ARGLE", 
+"ARGON", "ARGOT", "ARGUE", "ARGUS", "ARHAT", "ARIAS", "ARIEL", 
+"ARIES", "ARILS", "ARISE", "ARITH", "ARMED", "ARMER", "ARMOR", 
+"AROMA", "AROSE", "ARRAS", "ARRAY", "ARROW", "ARSES", "ARSIS", 
+"ARSON", "ARUMS", "ARYAN", "ARYLS", "ASCII", "ASCOT", "ASHED", 
+"ASHEN", "ASHES", "ASIAN", "ASIDE", "ASKED", "ASKER", "ASKEW", 
+"ASPCA", "ASPEN", "ASPER", "ASPIC", "ASSAM", "ASSAY", "ASSES", 
+"ASSET", "ASSOC", "ASTER", "ASTIR", "ASYLA", "ASYNC", "ATAXY", 
+"ATILT", "ATLAS", "ATMAN", "ATMAS", "ATOLL", "ATOMS", "ATOMY", 
+"ATONE", "ATRIA", "ATRIP", "ATTAR", "ATTIC", "AUDAD", "AUDIO", 
+"AUDIT", "AUGER", "AUGHT", "AUGUR", "AUNTS", "AUNTY", "AURAE", 
+"AURAL", "AURAS", "AURIC", "AURUM", "AUTOS", "AUTRE", "AUXIN", 
+"AVAIL", "AVAST", "AVERS", "AVERT", "AVIAN", "AVION", "AVISO", 
+"AVOID", "AVOWS", "AWACS", "AWAIT", "AWAKE", "AWARD", "AWARE", 
+"AWASH", "AWFUL", "AWING", "AWNED", "AWOKE", "AWOLS", "AXELS", 
+"AXIAL", "AXILS", "AXING", "AXIOM", "AXLED", "AXLES", "AXMAN", 
+"AXMEN", "AXONE", "AXONS", "AYAHS", "AZIDE", "AZIDO", "AZINE", 
+"AZOIC", "AZOLE", "AZONS", "AZOTE", "AZOTH", "AZTEC", "AZURE", 
+"BAAED", "BAALS", "BABAS", "BABEL", "BABES", "BABKA", "BABOO", 
+"BABUL", "BABUS", "BACCA", "BACKS", "BACON", "BADDY", "BADGE", 
+"BADLY", "BAGEL", "BAGGY", "BAHTS", "BAILS", "BAIRN", "BAITS", 
+"BAIZE", "BAKED", "BAKER", "BAKES", "BALDS", "BALED", "BALER", 
+"BALES", "BALKS", "BALKY", "BALLO", "BALLS", "BALLY", "BALMS", 
+"BALMY", "BALSA", "BANAL", "BANCO", "BANDS", "BANDY", "BANED", 
+"BANES", "BANGS", "BANJO", "BANKS", "BANNS", "BANTU", "BARBS", 
+"BARDS", "BARED", "BARER", "BARES", "BARFS", "BARGE", "BARIC", 
+"BARKS", "BARKY", "BARMY", "BARNS", "BARNY", "BARON", "BARRE", 
+"BASAL", "BASED", "BASER", "BASES", "BASIC", "BASIL", "BASIN", 
+"BASIS", "BASKS", "BASSI", "BASSO", "BASSY", "BASTE", "BASTS", 
+"BATCH", "BATED", "BATES", "BATHE", "BATHS", "BATIK", "BATON", 
+"BATTS", "BATTY", "BAUDS", "BAULK", "BAWDS", "BAWDY", "BAWLS", 
+"BAYED", "BAYOU", "BAZAR", "BEACH", "BEADS", "BEADY", "BEAKS", 
+"BEAKY", "BEAMS", "BEAMY", "BEANO", "BEANS", "BEARD", "BEARS", 
+"BEAST", "BEATS", "BEAUS", "BEAUT", "BEAUX", "BEBOP", "BECKS", 
+"BEDEW", "BEDIM", "BEECH", "BEEFS", "BEEFY", "BEEPS", "BEERS", 
+"BEERY", "BEETS", "BEFIT", "BEFOG", "BEGAN", "BEGAT", "BEGET", 
+"BEGIN", "BEGOT", "BEGUM", "BEGUN", "BEIGE", "BEIGY", "BEING", 
+"BELAY", "BELCH", "BELIE", "BELLE", "BELLI", "BELLO", "BELLS", 
+"BELLY", "BELOW", "BELTS", "BEMAS", "BEMIX", "BENCH", "BENDS", 
+"BENDY", "BENES", "BENIN", "BENNY", "BENTS", "BERET", "BERGH", 
+"BERGS", "BERMS", "BERRY", "BERTH", "BERYL", "BESET", "BESOM", 
+"BESOT", "BESTS", "BETAS", "BETEL", "BETES", "BETHS", "BETTA", 
+"BETTY", "BEVEL", "BEWIG", "BEZEL", "BHANG", "BIALY", "BIBBS", 
+"BIBLE", "BIDDY", "BIDED", "BIDER", "BIDES", "BIDET", "BIENS", 
+"BIERS", "BIFFS", "BIFFY", "BIFID", "BIGHT", "BIGLY", "BIGOT", 
+"BIJOU", "BIKED", "BIKER", "BIKES", "BILBO", "BILES", "BILGE", 
+"BILGY", "BILKS", "BILLS", "BILLY", "BIMAH", "BINAL", "BINDS", 
+"BINES", "BINGE", "BINGO", "BINTS", "BIOME", "BIONT", "BIOTA", 
+"BIPED", "BIPOD", "BIRCH", "BIRDS", "BIRTH", "BISON", "BITCH", 
+"BITER", "BITES", "BITSY", "BITTE", "BITTS", "BITTY", "BLABS", 
+"BLACK", "BLADE", "BLAHS", "BLAIN", "BLAME", "BLANC", "BLAND", 
+"BLANK", "BLARE", "BLASE", "BLAST", "BLATS", "BLAZE", "BLEAK", 
+"BLEAR", "BLEAT", "BLEED", "BLEEP", "BLEND", "BLENT", "BLESS", 
+"BLEST", "BLIMP", "BLIMY", "BLIND", "BLINI", "BLINK", "BLIPS", 
+"BLISS", "BLITZ", "BLOAT", "BLOBS", "BLOCK", "BLOCS", "BLOKE", 
+"BLOND", "BLOOD", "BLOOM", "BLOOP", "BLOTS", "BLOWN", "BLOWS", 
+"BLOWY", "BLUED", "BLUER", "BLUES", "BLUET", "BLUEY", "BLUFF", 
+"BLUNT", "BLURB", "BLURS", "BLURT", "BLUSH", "BOARD", "BOARS", 
+"BOAST", "BOATS", "BOBBY", "BOCCE", "BOCCI", "BOCHE", "BOCKS", 
+"BODED", "BODES", "BOERS", "BOFFO", "BOFFS", "BOGEY", "BOGGY", 
+"BOGIE", "BOGLE", "BOGUS", "BOILS", "BOISE", "BOLAS", "BOLES", 
+"BOLLS", "BOLOS", "BOLTS", "BOLUS", "BOMBE", "BOMBS", "BONDS", 
+"BONED", "BONER", "BONES", "BONEY", "BONGO", "BONGS", "BONNY", 
+"BONOS", "BONUM", "BONUS", "BONZE", "BOOBS", "BOOBY", "BOOED", 
+"BOOKS", "BOOMS", "BOOMY", "BOONS", "BOORS", "BOOST", "BOOTH", 
+"BOOTS", "BOOTY", "BOOZE", "BOOZY", "BORAX", "BORED", "BORES", 
+"BORIC", "BORNE", "BORON", "BORTS", "BORTY", "BORTZ", "BOSKS", 
+"BOSKY", "BOSOM", "BOSON", "BOSSA", "BOSSY", "BOSUN", "BOTCH", 
+"BOUGH", "BOULE", "BOUND", "BOURG", "BOURN", "BOUSE", "BOUSY", 
+"BOUTS", "BOVID", "BOWED", "BOWEL", "BOWER", "BOWIE", "BOWLS", 
+"BOWSE", "BOXED", "BOXER", "BOXES", "BOYOS", "BOZOS", "BRACE", 
+"BRACT", "BRADS", "BRAES", "BRAGS", "BRAID", "BRAIL", "BRAIN", 
+"BRAKE", "BRAKY", "BRAND", "BRANS", "BRASH", "BRASS", "BRATS", 
+"BRAVE", "BRAVO", "BRAWL", "BRAWN", "BRAYS", "BRAZE", "BREAD", 
+"BREAK", "BREAM", "BREDE", "BREED", "BRENT", "BREVE", "BREVI", 
+"BREWS", "BRIAN", "BRIAR", "BRIBE", "BRICK", "BRIDE", "BRIEF", 
+"BRIER", "BRIES", "BRIGS", "BRILL", "BRIMS", "BRINE", "BRING", 
+"BRINK", "BRINY", "BRIOS", "BRISK", "BROAD", "BROCK", "BROIL", 
+"BROKE", "BROMO", "BRONC", "BRONX", "BROOD", "BROOK", "BROOM", 
+"BROTH", "BROWN", "BROWS", "BRUCE", "BRUIN", "BRUIT", "BRUNT", 
+"BRUSH", "BRUSK", "BRUTE", "BRYAN", "BUBBY", "BUCHU", "BUCKO", 
+"BUCKS", "BUDDY", "BUDGE", "BUFFO", "BUFFS", "BUFFY", "BUGGY", 
+"BUGLE", "BUICK", "BUILD", "BUILT", "BULBS", "BULGE", "BULGY", 
+"BULKS", "BULKY", "BULLS", "BULLY", "BUMPS", "BUMPY", "BUNCH", 
+"BUNCO", "BUNDS", "BUNGS", "BUNKO", "BUNKS", "BUNNS", "BUNNY", 
+"BUNTS", "BUOYS", "BURGH", "BURGS", "BURIN", "BURKE", "BURLS", 
+"BURLY", "BURMA", "BURNS", "BURNT", "BURPS", "BURRO", "BURRS", 
+"BURRY", "BURSA", "BURSE", "BURST", "BUSBY", "BUSED", "BUSES", 
+"BUSHY", "BUSTS", "BUSTY", "BUTCH", "BUTTE", "BUTTS", "BUTTY", 
+"BUTYL", "BUXOM", "BUYER", "BWANA", "BYLAW", "BYRES", "BYRON", 
+"BYTES", "BYWAY", "CABAL", "CABBY", "CABER", "CABIN", "CABLE", 
+"CABOB", "CABOT", "CACAO", "CACHE", "CACTI", "CADDY", "CADES", 
+"CADET", "CADGE", "CADGY", "CADIS", "CADRE", "CAFES", "CAGED", 
+"CAGER", "CAGES", "CAGEY", "CAINS", "CAIRN", "CAIRO", "CAJON", 
+"CAJUN", "CAKED", "CAKES", "CALFS", "CALIF", "CALIX", "CALKS", 
+"CALLA", "CALLI", "CALLS", "CALMS", "CALOR", "CALVE", "CALYX", 
+"CAMEL", "CAMEO", "CAMPI", "CAMPO", "CAMPS", "CAMPY", "CANAL", 
+"CANDY", "CANED", "CANER", "CANES", "CANNA", "CANNY", "CANOE", 
+"CANON", "CANST", "CANTO", "CANTS", "CANTY", "CAPED", "CAPER", 
+"CAPES", "CAPON", "CAPOS", "CAPPY", "CAPUT", "CARAT", "CARBO", 
+"CARDS", "CARED", "CARER", "CARES", "CARET", "CARGO", "CARLO", 
+"CARNE", "CARNY", "CAROB", "CAROL", "CAROM", "CARPE", "CARPI", 
+"CARPS", "CARRY", "CARTE", "CARTS", "CARVE", "CASAS", "CASED", 
+"CASES", "CASKS", "CASTE", "CASTS", "CASUS", "CATCH", "CATER", 
+"CATES", "CATHY", "CATTY", "CAULK", "CAULS", "CAUSE", "CAVED", 
+"CAVER", "CAVES", "CAVIE", "CAVIL", "CAWED", "CEASE", "CECAL", 
+"CECIL", "CECUM", "CEDAR", "CEDED", "CEDER", "CEDES", "CEILS", 
+"CELEB", "CELLI", "CELLO", "CELLS", "CELTS", "CENSE", "CENTO", 
+"CENTS", "CERED", "CERES", "CERIA", "CHADS", "CHAFE", "CHAFF", 
+"CHAIN", "CHAIR", "CHALK", "CHAMP", "CHAMS", "CHANG", "CHANT", 
+"CHAOS", "CHAPS", "CHAPT", "CHARD", "CHARE", "CHARM", "CHARS", 
+"CHART", "CHARY", "CHASE", "CHASM", "CHATS", "CHAWS", "CHEAP", 
+"CHEAT", "CHECK", "CHEEK", "CHEEP", "CHEER", "CHEFS", "CHELA", 
+"CHERT", "CHESS", "CHEST", "CHEVY", "CHEWS", "CHEWY", "CHIAO", 
+"CHIAS", "CHICK", "CHICO", "CHICS", "CHIDE", "CHIEF", "CHIEL", 
+"CHILD", "CHILE", "CHILI", "CHILL", "CHIME", "CHIMP", "CHINA", 
+"CHINE", "CHINK", "CHINO", "CHINS", "CHIPS", "CHIRK", "CHIRP", 
+"CHITS", "CHIVE", "CHIVY", "CHOCK", "CHOIR", "CHOKE", "CHOKY", 
+"CHOMP", "CHOPS", "CHORD", "CHORE", "CHOSE", "CHOWS", "CHUBS", 
+"CHUCK", "CHUFF", "CHUGS", "CHUMP", "CHUMS", "CHUNK", "CHURL", 
+"CHURN", "CHUTE", "CHYME", "CIDER", "CIGAR", "CILIA", "CINCH", 
+"CINES", "CIONS", "CIRCA", "CIRCE", "CISTS", "CITED", "CITER", 
+"CITES", "CIVET", "CIVIC", "CIVIL", "CIVVY", "CLACK", "CLADS", 
+"CLAGS", "CLAIM", "CLAIR", "CLAMP", "CLAMS", "CLANG", "CLANK", 
+"CLANS", "CLAPS", "CLAPT", "CLARK", "CLASH", "CLASP", "CLASS", 
+"CLAUS", "CLAVE", "CLAWS", "CLAYS", "CLEAN", "CLEAR", "CLEAT", 
+"CLEFS", "CLEFT", "CLEPE", "CLEPT", "CLERK", "CLEWS", "CLICK", 
+"CLIFF", "CLIFT", "CLIMB", "CLIME", "CLINE", "CLING", "CLINK", 
+"CLIPS", "CLIPT", "CLOAK", "CLOCK", "CLODS", "CLOGS", "CLOMB", 
+"CLOMP", "CLONE", "CLONK", "CLOPS", "CLOSE", "CLOTH", "CLOTS", 
+"CLOUD", "CLOUT", "CLOVE", "CLOWN", "CLOYS", "CLUBS", "CLUCK", 
+"CLUED", "CLUES", "CLUMP", "CLUNG", "CLUNK", "COACH", "COACT", 
+"COALS", "COAST", "COATI", "COATS", "COBBY", "COBOL", "COBRA", 
+"COCAS", "COCCI", "COCKS", "COCKY", "COCOA", "COCOS", "CODAL", 
+"CODAS", "CODED", "CODER", "CODES", "CODEX", "CODON", "COEDS", 
+"COFFS", "COHEN", "COHOS", "COIFS", "COIGN", "COILS", "COINS", 
+"COIRS", "COKED", "COKES", "COLAS", "COLDS", "COLES", "COLIC", 
+"COLIN", "COLLY", "COLON", "COLOR", "COLTS", "COMAS", "COMBE", 
+"COMBO", "COMBS", "COMER", "COMES", "COMET", "COMFY", "COMIC", 
+"COMMA", "COMME", "COMMY", "COMPS", "COMPT", "COMTE", "CONCH", 
+"CONDO", "CONED", "CONES", "CONEY", "CONGA", "CONGO", "CONIC", 
+"CONKS", "CONKY", "CONNS", "CONTE", "CONTO", "CONUS", "COOCH", 
+"COOED", "COOEE", "COOER", "COOEY", "COOKS", "COOKY", "COOLS", 
+"COOLY", "COOMB", "COONS", "COOPS", "COOPT", "COOTS", "COPAL", 
+"COPED", "COPER", "COPES", "COPRA", "COPSE", "CORAL", "CORDS", 
+"CORED", "CORER", "CORES", "CORGI", "CORKS", "CORKY", "CORMS", 
+"CORNS", "CORNU", "CORNY", "CORPS", "CORSE", "COSEC", "COSET", 
+"COSEY", "COSIE", "COSMO", "COSTS", "COTAN", "COTED", "COTES", 
+"COTTA", "COUCH", "COUGH", "COULD", "COUNT", "COUPE", "COUPS", 
+"COURT", "COUTH", "COVED", "COVEN", "COVER", "COVES", "COVET", 
+"COVEY", "COWED", "COWER", "COWLS", "COWRY", "COYER", "COYLY", 
+"COYPU", "COZEN", "COZES", "COZEY", "COZIE", "CRAAL", "CRABS", 
+"CRACK", "CRAFT", "CRAGS", "CRAMP", "CRAMS", "CRANE", "CRANK", 
+"CRAPE", "CRAPS", "CRASH", "CRASS", "CRATE", "CRAVE", "CRAWL", 
+"CRAWS", "CRAZE", "CRAZY", "CREAK", "CREAM", "CREDO", "CREED", 
+"CREEK", "CREEL", "CREEP", "CREES", "CREME", "CREPE", "CREPT", 
+"CREPY", "CRESS", "CREST", "CRETE", "CREWS", "CRIBS", "CRICK", 
+"CRIED", "CRIER", "CRIES", "CRIME", "CRIMP", "CRISP", "CROAK", 
+"CROCI", "CROCK", "CROFT", "CRONE", "CRONY", "CROOK", "CROON", 
+"CROPS", "CROSS", "CROUP", "CROWD", "CROWN", "CROWS", "CRUDE", 
+"CRUDS", "CRUEL", "CRUET", "CRUMB", "CRUMP", "CRUSE", "CRUSH", 
+"CRUST", "CRYPT", "CUBAN", "CUBBY", "CUBED", "CUBER", "CUBES", 
+"CUBIC", "CUBIT", "CUDDY", "CUFFS", "CUING", "CUISH", "CUKES", 
+"CULLS", "CULLY", "CULMS", "CULPA", "CULTS", "CUMIN", "CUNNI", 
+"CUNTS", "CUPID", "CUPPA", "CUPPY", "CURBS", "CURDS", "CURDY", 
+"CURED", "CURER", "CURES", "CURIA", "CURIE", "CURIO", "CURLS", 
+"CURLY", "CURRY", "CURSE", "CURST", "CURVE", "CURVY", "CUSHY", 
+"CUSPS", "CUTER", "CUTES", "CUTEY", "CUTIE", "CUTIN", "CUTIS", 
+"CUTTY", "CUTUP", "CYANS", "CYCAD", "CYCLE", "CYCLO", "CYMES", 
+"CYNIC", "CYSTS", "CZARS", "CZECH", "DACES", "DACHA", "DADAS", 
+"DADDY", "DADOS", "DAFFY", "DAGOS", "DAILY", "DAIRY", "DAISY", 
+"DALES", "DALLY", "DAMES", "DAMNS", "DAMPS", "DANCE", "DANDY", 
+"DANES", "DANGS", "DANTE", "DARED", "DARER", "DARES", "DARKS", 
+"DARKY", "DARNS", "DARTS", "DASHY", "DATED", "DATER", "DATES", 
+"DATUM", "DAUBS", "DAUBY", "DAUNT", "DAVID", "DAVIS", "DAVIT", 
+"DAWNS", "DAZED", "DAZES", "DEADS", "DEAIR", "DEALS", "DEALT", 
+"DEANS", "DEARS", "DEARY", "DEASH", "DEATH", "DEBAR", "DEBIT", 
+"DEBTS", "DEBUG", "DEBUT", "DECAL", "DECAY", "DECKS", "DECOR", 
+"DECOY", "DECRY", "DEEDS", "DEEDY", "DEEMS", "DEEPS", "DEERS", 
+"DEFAT", "DEFER", "DEFOG", "DEGAS", "DEGUM", "DEICE", "DEIFY", 
+"DEIGN", "DEISM", "DEIST", "DEITY", "DELAY", "DELED", "DELES", 
+"DELFT", "DELHI", "DELIS", "DELLS", "DELLY", "DELTA", "DELVE", 
+"DEMIT", "DEMOB", "DEMON", "DEMOS", "DEMUR", "DENIM", "DENSE", 
+"DENTS", "DEPOT", "DEPTH", "DERAT", "DERAY", "DERBY", "DERMA", 
+"DERMS", "DESEX", "DESKS", "DETER", "DEUCE", "DEVAS", "DEVIL", 
+"DEVON", "DEWAX", "DEWED", "DEXES", "DHOLE", "DHOTI", "DHOWS", 
+"DIALS", "DIANA", "DIANE", "DIARY", "DIAZO", "DICED", "DICER", 
+"DICES", "DICEY", "DICKS", "DICKY", "DICOT", "DICTA", "DIDOS", 
+"DIDST", "DIETS", "DIGHT", "DIGIT", "DIKED", "DIKER", "DIKES", 
+"DILDO", "DILLS", "DILLY", "DIMER", "DIMES", "DIMLY", "DINAR", 
+"DINED", "DINER", "DINES", "DINGO", "DINGS", "DINGY", "DINKY", 
+"DINTS", "DIODE", "DIPPY", "DIRER", "DIRGE", "DIRKS", "DIRTS", 
+"DIRTY", "DISCO", "DISCS", "DISHY", "DISKS", "DISTR", "DITCH", 
+"DITES", "DITTO", "DITTY", "DIVAN", "DIVAS", "DIVED", "DIVER", 
+"DIVES", "DIVOT", "DIVVY", "DIXIE", "DIXIT", "DIZZY", "DJINN", 
+"DJINS", "DOCKS", "DODGE", "DODGY", "DODOS", "DOERS", "DOEST", 
+"DOETH", "DOFFS", "DOGES", "DOGEY", "DOGGO", "DOGGY", "DOGIE", 
+"DOGMA", "DOILY", "DOING", "DOJOS", "DOLCE", "DOLCI", "DOLED", 
+"DOLES", "DOLLS", "DOLLY", "DOLOR", "DOLTS", "DOMED", "DOMES", 
+"DON'T", "DONEE", "DONGS", "DONNA", "DONNE", "DONOR", "DONUT", 
+"DOOMS", "DOORS", "DOOZY", "DOPED", "DOPER", "DOPES", "DOPEY", 
+"DORIC", "DORIS", "DORMS", "DORMY", "DORSA", "DORSI", "DOSED", 
+"DOSER", "DOSES", "DOTED", "DOTER", "DOTES", "DOTTY", "DOUBT", 
+"DOUCE", "DOUGH", "DOUSE", "DOVER", "DOVES", "DOWDY", "DOWEL", 
+"DOWER", "DOWNS", "DOWNY", "DOWRY", "DOWSE", "DOXIE", "DOYEN", 
+"DOYLY", "DOZED", "DOZEN", "DOZER", "DOZES", "DRABS", "DRAFT", 
+"DRAGS", "DRAIN", "DRAKE", "DRAMA", "DRAMS", "DRANK", "DRAPE", 
+"DRATS", "DRAVE", "DRAWL", "DRAWN", "DRAWS", "DRAYS", "DREAD", 
+"DREAM", "DREAR", "DRECK", "DREGS", "DREKS", "DRESS", "DREST", 
+"DRIBS", "DRIED", "DRIER", "DRIES", "DRIFT", "DRILL", "DRILY", 
+"DRINK", "DRIPS", "DRIPT", "DRIVE", "DROIT", "DROLL", "DRONE", 
+"DROOL", "DROOP", "DROPS", "DROPT", "DROSS", "DROVE", "DROWN", 
+"DRUBS", "DRUGS", "DRUID", "DRUMS", "DRUNK", "DRUPE", "DRYAD", 
+"DRYER", "DRYLY", "DUADS", "DUALS", "DUBIO", "DUCAL", "DUCAT", 
+"DUCES", "DUCHY", "DUCKS", "DUCKY", "DUCTS", "DUDDY", "DUDES", 
+"DUELS", "DUETS", "DUFFS", "DUFFY", "DUKES", "DULLS", "DULLY", 
+"DULSE", "DUMBS", "DUMMY", "DUMPS", "DUMPY", "DUNCE", "DUNES", 
+"DUNGS", "DUNGY", "DUNKS", "DUPED", "DUPER", "DUPES", "DUPLE", 
+"DURAL", "DURNS", "DURRA", "DURRS", "DURST", "DURUM", "DUSKS", 
+"DUSKY", "DUSTS", "DUSTY", "DUTCH", "DWARF", "DWELL", "DWELT", 
+"DYADS", "DYERS", "DYING", "DYKES", "DYNES", "EAGER", "EAGLE", 
+"EARED", "EARLS", "EARLY", "EARNS", "EARTH", "EASED", "EASEL", 
+"EASER", "EASES", "EASTS", "EATEN", "EATER", "EAVED", "EAVES", 
+"EBBED", "EBONS", "EBONY", "ECLAT", "ECOLE", "ECRUS", "EDEMA", 
+"EDGAR", "EDGED", "EDGER", "EDGES", "EDICT", "EDIFY", "EDITH", 
+"EDITS", "EDUCE", "EDUCT", "EERIE", "EGADS", "EGGED", "EGGER", 
+"EGRET", "EGYPT", "EIDER", "EIDOS", "EIGHT", "EIKON", "EJECT", 
+"EKING", "ELAND", "ELANS", "ELATE", "ELBOW", "ELDER", "ELECT", 
+"ELEGY", "ELFIN", "ELIDE", "ELITE", "ELLEN", "ELOPE", "ELSES", 
+"ELUDE", "ELVER", "ELVES", "ELVIS", "EMBAR", "EMBAY", "EMBED", 
+"EMBER", "EMBOW", "EMCEE", "EMEER", "EMEND", "EMERY", "EMILY", 
+"EMIRS", "EMITS", "EMMET", "EMOTE", "EMPTY", "ENACT", "ENATE", 
+"ENDED", "ENDER", "ENDOW", "ENDUE", "ENEMA", "ENEMY", "ENFIN", 
+"ENJOY", "ENNUI", "ENROL", "ENSKY", "ENSUE", "ENTER", "ENTRE", 
+"ENTRY", "ENURE", "ENVOI", "ENVOY", "EPEES", "EPICS", "EPOCH", 
+"EPODE", "EPOXY", "EPSOM", "EQUAL", "EQUIP", "ERASE", "ERECT", 
+"ERGOT", "ERICA", "ERODE", "EROSE", "ERRED", "ERROR", "ERUCT", 
+"ERUPT", "ESSAY", "ESSES", "ESTER", "ESTOP", "ETAPE", "ETHEL", 
+"ETHER", "ETHIC", "ETHOS", "ETHYL", "ETNAS", "ETUDE", "EULER", 
+"EVADE", "EVANS", "EVENS", "EVENT", "EVERT", "EVERY", "EVICT", 
+"EVILS", "EVOKE", "EWERS", "EWING", "EXACT", "EXALT", "EXAMS", 
+"EXCEL", "EXECS", "EXERT", "EXILE", "EXIST", "EXITS", "EXPEL", 
+"EXPOS", "EXPWY", "EXTOL", "EXTRA", "EXUDE", "EXULT", "EXURB", 
+"EXXON", "EYERS", "EYING", "EYRIE", "EYRIR", "FABLE", "FACED", 
+"FACER", "FACES", "FACET", "FACIA", "FACIE", "FACTO", "FACTS", 
+"FADDY", "FADED", "FADER", "FADES", "FAERY", "FAGOT", "FAILS", 
+"FAINT", "FAIRE", "FAIRS", "FAIRY", "FAITH", "FAITS", "FAKED", 
+"FAKER", "FAKES", "FAKIR", "FALLS", "FALSE", "FAMED", "FAMES", 
+"FANCY", "FANES", "FANGS", "FANNY", "FAQIR", "FARAD", "FARCE", 
+"FARCY", "FARDS", "FARED", "FARER", "FARES", "FARMS", "FAROS", 
+"FARTS", "FASTS", "FATAL", "FATED", "FATES", "FATLY", "FATSO", 
+"FATTY", "FAUGH", "FAULT", "FAUNA", "FAUNS", "FAUST", "FAUVE", 
+"FAVOR", "FAWNS", "FAWNY", "FAXED", "FAXES", "FAZED", "FAZES", 
+"FEARS", "FEASE", "FEAST", "FEATS", "FEAZE", "FECAL", "FECES", 
+"FEEDS", "FEELS", "FEIGN", "FEINT", "FEIST", "FELIX", "FELLA", 
+"FELLS", "FELLY", "FELON", "FELTS", "FEMME", "FEMUR", "FENCE", 
+"FENDS", "FENNY", "FEOFF", "FERAL", "FERMI", "FERNS", "FERNY", 
+"FERRY", "FESSE", "FETAL", "FETAS", "FETCH", "FETED", "FETES", 
+"FETID", "FETOR", "FETUS", "FEUDS", "FEVER", "FEWER", "FEYER", 
+"FEZES", "FIATS", "FIBER", "FIBRE", "FICHE", "FICHU", "FIDEL", 
+"FIDES", "FIDOS", "FIEFS", "FIELD", "FIEND", "FIERY", "FIFED", 
+"FIFER", "FIFES", "FIFTH", "FIFTY", "FIGHT", "FILAR", "FILCH", 
+"FILED", "FILER", "FILES", "FILET", "FILII", "FILLE", "FILLS", 
+"FILLY", "FILMS", "FILMY", "FILTH", "FINAL", "FINCH", "FINDS", 
+"FINED", "FINER", "FINES", "FINIS", "FINKS", "FINNS", "FINNY", 
+"FIORD", "FIRED", "FIRER", "FIRES", "FIRMA", "FIRMS", "FIRRY", 
+"FIRST", "FIRTH", "FISHY", "FISTS", "FITLY", "FIVER", "FIVES", 
+"FIXED", "FIXER", "FIXES", "FIXUP", "FIZZY", "FJORD", "FLABS", 
+"FLACK", "FLAGS", "FLAIL", "FLAIR", "FLAKE", "FLAKY", "FLAME", 
+"FLAMS", "FLAMY", "FLANK", "FLANS", "FLAPS", "FLARE", "FLASH", 
+"FLASK", "FLATS", "FLAWS", "FLAWY", "FLAXY", "FLAYS", "FLEAS", 
+"FLECK", "FLEER", "FLEES", "FLEET", "FLESH", "FLEWS", "FLICK", 
+"FLIED", "FLIER", "FLIES", "FLING", "FLINT", "FLIPS", "FLIRT", 
+"FLITE", "FLITS", "FLOAT", "FLOCK", "FLOES", "FLOGS", "FLOOD", 
+"FLOOR", "FLOPS", "FLORA", "FLOSS", "FLOUR", "FLOUT", "FLOWN", 
+"FLOWS", "FLUBS", "FLUED", "FLUES", "FLUFF", "FLUID", "FLUKE", 
+"FLUKY", "FLUME", "FLUMP", "FLUNG", "FLUNK", "FLUOR", "FLUSH", 
+"FLUTE", "FLUTY", "FLYBY", "FLYER", "FOALS", "FOAMS", "FOAMY", 
+"FOCAL", "FOCUS", "FOEHN", "FOETI", "FOGEY", "FOGGY", "FOGIE", 
+"FOILS", "FOINS", "FOIST", "FOLDS", "FOLIA", "FOLIC", "FOLIO", 
+"FOLKS", "FOLLY", "FONDS", "FONDU", "FONTS", "FOODS", "FOOLS", 
+"FOOTS", "FOOTY", "FORAY", "FORCE", "FORDS", "FORES", "FORGE", 
+"FORGO", "FORKS", "FORKY", "FORMA", "FORMS", "FORTE", "FORTH", 
+"FORTS", "FORTY", "FORUM", "FOSSA", "FOSSE", "FOULS", "FOUND", 
+"FOUNT", "FOURS", "FOVEA", "FOWLS", "FOXED", "FOXES", "FOYER", 
+"FRAGS", "FRAIL", "FRAME", "FRANC", "FRANK", "FRANZ", "FRAPS", 
+"FRATS", "FRAUD", "FRAUS", "FRAYS", "FREAK", "FREED", "FREER", 
+"FREES", "FREON", "FRERE", "FRESH", "FRETS", "FREUD", "FRIAR", 
+"FRIED", "FRIER", "FRIES", "FRIGS", "FRILL", "FRISK", "FRIZZ", 
+"FROCK", "FROES", "FROGS", "FROND", "FRONT", "FROSH", "FROST", 
+"FROTH", "FROWN", "FROZE", "FRUGS", "FRUIT", "FRUMP", "FRYER", 
+"FUCKS", "FUDGE", "FUELS", "FUGAL", "FUGGY", "FUGIT", "FUGUE", 
+"FUJIS", "FULLS", "FULLY", "FUMED", "FUMER", "FUMES", "FUMET", 
+"FUNDI", "FUNDS", "FUNGI", "FUNKS", "FUNKY", "FUNNY", "FURLS", 
+"FUROR", "FURRY", "FURZE", "FURZY", "FUSED", "FUSEE", "FUSEL", 
+"FUSES", "FUSIL", "FUSSY", "FUSTY", "FUZED", "FUZEE", "FUZES", 
+"FUZIL", "FUZZY", "GABBY", "GABLE", "GABON", "GAELS", "GAFFE", 
+"GAFFS", "GAGED", "GAGER", "GAGES", "GAILY", "GAINS", "GAITS", 
+"GALAS", "GALAX", "GALES", "GALLS", "GALLY", "GALOP", "GAMBA", 
+"GAMED", "GAMER", "GAMES", "GAMEY", "GAMIC", "GAMIN", "GAMMA", 
+"GAMUT", "GANEF", "GANEV", "GANGS", "GANJA", "GAOLS", "GAPED", 
+"GAPER", "GAPES", "GAPPY", "GARBO", "GARBS", "GARDE", "GARTH", 
+"GASES", "GASPS", "GASSY", "GATED", "GATES", "GATOR", "GAUDS", 
+"GAUDY", "GAUGE", "GAULS", "GAUNT", "GAUSS", "GAUZE", "GAUZY", 
+"GAVEL", "GAVOT", "GAWKS", "GAWKY", "GAYER", "GAYLY", "GAZED", 
+"GAZER", "GAZES", "GEARS", "GECKO", "GECKS", "GEEKS", "GEESE", 
+"GELDS", "GELEE", "GELID", "GELTS", "GEMMY", "GENAL", "GENES", 
+"GENET", "GENIC", "GENIE", "GENII", "GENOA", "GENRE", "GENTS", 
+"GENUS", "GEODE", "GEOID", "GERMS", "GERMY", "GESSO", "GESTE", 
+"GESTS", "GETUP", "GEUMS", "GHANA", "GHAST", "GHATS", "GHEES", 
+"GHOST", "GHOUL", "GIANT", "GIBED", "GIBER", "GIBES", "GIDDY", 
+"GIFTS", "GIGAS", "GIGUE", "GILDS", "GILLS", "GILLY", "GILTS", 
+"GIMEL", "GIMPS", "GIMPY", "GINKS", "GINNY", "GIPSY", "GIRDS", 
+"GIRLS", "GIRLY", "GIRNS", "GIROS", "GIRTH", "GIRTS", "GISMO", 
+"GISTS", "GIVEN", "GIVER", "GIVES", "GIVIN", "GIZMO", "GLACE", 
+"GLADE", "GLADS", "GLADY", "GLAND", "GLANS", "GLARE", "GLARY", 
+"GLASS", "GLAZE", "GLAZY", "GLEAM", "GLEAN", "GLEBA", "GLEBE", 
+"GLEES", "GLENS", "GLIDE", "GLIMS", "GLINT", "GLOAM", "GLOAT", 
+"GLOBE", "GLOBS", "GLOGG", "GLOMS", "GLOOM", "GLOPS", "GLORY", 
+"GLOSS", "GLOVE", "GLOWS", "GLOZE", "GLUED", "GLUER", "GLUES", 
+"GLUEY", "GLUTS", "GLYPH", "GNARL", "GNARS", "GNASH", "GNATS", 
+"GNAWN", "GNAWS", "GNOME", "GOADS", "GOALS", "GOATS", "GOBOS", 
+"GODLY", "GOERS", "GOFER", "GOGOS", "GOING", "GOLDS", "GOLEM", 
+"GOLFS", "GOLLY", "GOMBO", "GONAD", "GONER", "GONGS", "GONIF", 
+"GONOF", "GOODS", "GOODY", "GOOEY", "GOOFS", "GOOFY", "GOOKS", 
+"GOOKY", "GOONS", "GOONY", "GOOPS", "GOOSE", "GOOSY", "GORED", 
+"GORES", "GORGE", "GORKI", "GORSE", "GORSY", "GOTHS", "GOUDA", 
+"GOUGE", "GOURD", "GOUTS", "GOUTY", "GOWNS", "GOYIM", "GRAAL", 
+"GRABS", "GRACE", "GRADE", "GRADS", "GRAFT", "GRAIL", "GRAIN", 
+"GRAMP", "GRAMS", "GRANA", "GRAND", "GRANT", "GRAPE", "GRAPH", 
+"GRAPY", "GRASP", "GRASS", "GRATA", "GRATE", "GRAVE", "GRAVY", 
+"GRAYS", "GRAZE", "GREAT", "GREBE", "GRECO", "GREED", "GREEK", 
+"GREEN", "GREET", "GRETA", "GREYS", "GRIDS", "GRIEF", "GRIFT", 
+"GRIGS", "GRILL", "GRIME", "GRIMM", "GRIMY", "GRIND", "GRINS", 
+"GRIOT", "GRIPE", "GRIPS", "GRIPT", "GRIPY", "GRIST", "GRITS", 
+"GROAN", "GROAT", "GROGS", "GROIN", "GROOM", "GROPE", "GROSS", 
+"GROSZ", "GROTS", "GROUP", "GROUT", "GROVE", "GROWL", "GROWN", 
+"GROWS", "GRUBS", "GRUEL", "GRUFF", "GRUMP", "GRUNT", "GUACO", 
+"GUANO", "GUARD", "GUARS", "GUAVA", "GUCKS", "GUESS", "GUEST", 
+"GUFFS", "GUIDE", "GUILD", "GUILE", "GUILT", "GUIRO", "GUISE", 
+"GULCH", "GULFS", "GULFY", "GULLS", "GULLY", "GULPS", "GULPY", 
+"GUMBO", "GUMMY", "GUNKS", "GUNNY", "GUPPY", "GURUS", "GUSHY", 
+"GUSSY", "GUSTO", "GUSTS", "GUSTY", "GUTSY", "GUTTA", "GUTTY", 
+"GUYED", "GYPSY", "GYRAL", "GYRED", "GYRES", "GYROS", "GYRUS", 
+"GYVED", "GYVES", "HABIT", "HACKS", "HADES", "HADJI", "HADST", 
+"HAETS", "HAFTS", "HAGUE", "HAIKU", "HAILS", "HAIRS", "HAIRY", 
+"HAITI", "HAJIS", "HAJJI", "HAKES", "HALED", "HALER", "HALES", 
+"HALLO", "HALLS", "HALOS", "HALTS", "HALVA", "HALVE", "HAMMY", 
+"HANCE", "HANDS", "HANDY", "HANGS", "HANKS", "HANKY", "HANOI", 
+"HANTS", "HAOLE", "HAPLY", "HAPPY", "HARDS", "HARDY", "HARED", 
+"HAREM", "HARES", "HARKS", "HARMS", "HARPS", "HARPY", "HARRY", 
+"HARSH", "HARTS", "HASID", "HASPS", "HASTA", "HASTE", "HASTY", 
+"HATCH", "HATED", "HATER", "HATES", "HAUGH", "HAULS", "HAUNT", 
+"HAUTE", "HAVEN", "HAVER", "HAVES", "HAVOC", "HAWED", "HAWKS", 
+"HAWSE", "HAYDN", "HAYED", "HAYER", "HAYES", "HAZED", "HAZEL", 
+"HAZER", "HAZES", "HDQRS", "HEADS", "HEADY", "HEALS", "HEAPS", 
+"HEARD", "HEARS", "HEART", "HEATH", "HEATS", "HEAVE", "HEAVY", 
+"HECKS", "HEDGE", "HEDGY", "HEEDS", "HEELS", "HEFTS", "HEFTY", 
+"HEIGH", "HEILS", "HEIRS", "HEIST", "HELEN", "HELIO", "HELIX", 
+"HELLO", "HELLS", "HELMS", "HELOT", "HELPS", "HELVE", "HEMAN", 
+"HEMPS", "HEMPY", "HENCE", "HENNA", "HENRY", "HENTS", "HERBS", 
+"HERBY", "HERDS", "HERES", "HERON", "HEROS", "HERTZ", "HEWED", 
+"HEWER", "HEXAD", "HEXED", "HEXER", "HEXES", "HEXYL", "HICKS", 
+"HIDED", "HIDER", "HIDES", "HIGHS", "HIGHT", "HIKED", "HIKER", 
+"HIKES", "HILLS", "HILLY", "HILTS", "HINDI", "HINDS", "HINDU", 
+"HINGE", "HINNY", "HINTS", "HIPPO", "HIPPY", "HIRED", "HIRER", 
+"HIRES", "HISTS", "HITCH", "HIVED", "HIVES", "HOAGY", "HOARD", 
+"HOARY", "HOBBY", "HOBOS", "HOCKS", "HOCUS", "HODAD", "HOERS", 
+"HOGAN", "HOGGS", "HOISE", "HOIST", "HOKEY", "HOKUM", "HOLDS", 
+"HOLED", "HOLER", "HOLES", "HOLEY", "HOLLO", "HOLLY", "HOLTS", 
+"HOMED", "HOMER", "HOMES", "HOMEY", "HOMOS", "HONAN", "HONDA", 
+"HONED", "HONER", "HONES", "HONEY", "HONKS", "HONKY", "HONOR", 
+"HOOCH", "HOODS", "HOOEY", "HOOFS", "HOOKA", "HOOKS", "HOOKY", 
+"HOOPS", "HOOTS", "HOPED", "HOPER", "HOPES", "HOPIS", "HORAH", 
+"HORAL", "HORAS", "HORDE", "HORNS", "HORNY", "HORSE", "HORST", 
+"HORSY", "HOSED", "HOSES", "HOSTS", "HOTEL", "HOTLY", "HOUND", 
+"HOURI", "HOURS", "HOUSE", "HOVEL", "HOVER", "HOWDY", "HOWES", 
+"HOWLS", "HOYLE", "HUBBY", "HUCKS", "HUFFS", "HUFFY", "HUGER", 
+"HULAS", "HULKS", "HULKY", "HULLO", "HULLS", "HUMAN", "HUMID", 
+"HUMOR", "HUMPH", "HUMPS", "HUMPY", "HUMUS", "HUNCH", "HUNKS", 
+"HUNKY", "HUNTS", "HURLS", "HURLY", "HURON", "HURRY", "HURTS", 
+"HUSKS", "HUSKY", "HUSSY", "HUTCH", "HUZZA", "HYDRA", "HYDRO", 
+"HYENA", "HYING", "HYMEN", "HYMNS", "HYPED", "HYPER", "HYPES", 
+"HYPOS", "HYRAX", "HYSON", "IAMBI", "IAMBS", "ICHOR", "ICIER", 
+"ICILY", "ICING", "ICKER", "ICONS", "ICTUS", "IDAHO", "IDEAL", 
+"IDEAS", "IDIOM", "IDIOT", "IDLED", "IDLER", "IDLES", "IDOLS", 
+"IDYLL", "IDYLS", "IGLOO", "IGNIS", "IKONS", "ILEAL", "ILEUM", 
+"ILIAD", "ILIUM", "ILLER", "IMAGE", "IMAGO", "IMAMS", "IMBED", 
+"IMBUE", "IMMIX", "IMPED", "IMPEL", "IMPER", "IMPLY", "INANE", 
+"INAPT", "INARM", "INCAS", "INCOG", "INCUR", "INCUS", "INDEX", 
+"INDIA", "INDOL", "INDOW", "INDUE", "INEPT", "INERT", "INFER", 
+"INFIX", "INFOS", "INFRA", "INGLE", "INGOT", "INKED", "INKER", 
+"INKLE", "INLAY", "INLET", "INNED", "INNER", "INPUT", "INSET", 
+"INSTR", "INTEL", "INTER", "INTRA", "INTRO", "INURE", "INURN", 
+"IODIN", "IONIC", "IOTAS", "IOWAN", "IRAQI", "IRATE", "IRENE", 
+"IRING", "IRISH", "IRKED", "IRONS", "IRONY", "ISAAC", "ISLAM", 
+"ISLED", "ISLES", "ISLET", "ISSEI", "ISSUE", "ISTLE", "ITALY", 
+"ITCHY", "ITEMS", "IVIED", "IVIES", "IVORY", "IXIAS", "JABOT", 
+"JACAL", "JACKS", "JACKY", "JACOB", "JADED", "JADES", "JAGGS", 
+"JAGGY", "JAILS", "JAKES", "JALAP", "JAMBS", "JAMES", "JANES", 
+"JANET", "JANUS", "JAPAN", "JAPED", "JAPER", "JAPES", "JASON", 
+"JATOS", "JAUNT", "JAVAS", "JAWED", "JAZZY", "JEANS", "JEEPS", 
+"JEERS", "JEFES", "JEHAD", "JEHUS", "JELLS", "JELLY", "JEMMY", 
+"JENNY", "JERKS", "JERKY", "JERRY", "JESSE", "JESTS", "JESUS", 
+"JETTY", "JEWED", "JEWEL", "JEWRY", "JIBED", "JIBER", "JIBES", 
+"JIFFS", "JIFFY", "JIHAD", "JILLS", "JILTS", "JIMMY", "JINGO", 
+"JINNI", "JINNS", "JIVED", "JIVES", "JNANA", "JOCKO", "JOCKS", 
+"JOEYS", "JOHNS", "JOINS", "JOINT", "JOIST", "JOKED", "JOKER", 
+"JOKES", "JOLLY", "JOLTS", "JOLTY", "JONAH", "JONES", "JORAM", 
+"JORUM", "JOTTY", "JOULE", "JOUST", "JOWLS", "JOWLY", "JOYCE", 
+"JOYED", "JUANS", "JUDAS", "JUDGE", "JUDOS", "JUICE", "JUICY", 
+"JUJUS", "JUKED", "JUKES", "JULEP", "JUMBO", "JUMPS", "JUMPY", 
+"JUNCO", "JUNKS", "JUNKY", "JUNTA", "JUNTO", "JUROR", "JUSTS", 
+"JUTES", "JUTTY", "JUXTA", "KABOB", "KADIS", "KAFIR", "KAFKA", 
+"KAIAK", "KAKAS", "KAKIS", "KALES", "KALIF", "KALPA", "KAMES", 
+"KANAS", "KANJI", "KAONS", "KAPOK", "KAPPA", "KAPUT", "KARAT", 
+"KAREN", "KARMA", "KARST", "KARTS", "KASHA", "KATHY", "KAYAK", 
+"KAYOS", "KAZOO", "KEATS", "KEBAB", "KEBOB", "KEDGE", "KEEFS", 
+"KEELS", "KEENS", "KEEPS", "KEFIR", "KELPS", "KELPY", "KELTS", 
+"KEMPT", "KENDO", "KENNY", "KENOS", "KENYA", "KEPIS", "KERBS", 
+"KERFS", "KERNS", "KERRY", "KETCH", "KEYED", "KHAKI", "KHANS", 
+"KHATS", "KICKS", "KICKY", "KIDDO", "KIDDY", "KIEFS", "KIKES", 
+"KILLS", "KILNS", "KILOS", "KILTS", "KILTY", "KINDS", "KINES", 
+"KINGS", "KINKS", "KINKY", "KIOSK", "KIOWA", "KIRKS", "KITED", 
+"KITER", "KITES", "KITHS", "KITTY", "KIVAS", "KIWIS", "KLANS", 
+"KLEIG", "KLIEG", "KLUTZ", "KNACK", "KNAPS", "KNAVE", "KNEAD", 
+"KNEED", "KNEEL", "KNEES", "KNELL", "KNELT", "KNIFE", "KNISH", 
+"KNITS", "KNOBS", "KNOCK", "KNOLL", "KNOTS", "KNOUT", "KNOWN", 
+"KNOWS", "KNURL", "KOALA", "KOANS", "KODAK", "KOHLS", "KOLAS", 
+"KOOKS", "KOOKY", "KOPEK", "KOPHS", "KOPJE", "KORAN", "KOREA", 
+"KOTOS", "KRAAL", "KRAFT", "KRAIT", "KRAUT", "KREBS", "KRILL", 
+"KRONA", "KRONE", "KUDOS", "KUDUS", "KUDZU", "KULAK", "KYATS", 
+"KYOTO", "KYRIE", "LABEL", "LABIA", "LABOR", "LACED", "LACER", 
+"LACES", "LACEY", "LACKS", "LADED", "LADEN", "LADER", "LADES", 
+"LADLE", "LAGER", "LAIRD", "LAIRS", "LAITY", "LAKED", "LAKER", 
+"LAKES", "LAMAS", "LAMBS", "LAMED", "LAMER", "LAMES", "LAMIA", 
+"LAMPS", "LANAI", "LANCE", "LANDS", "LANES", "LANKY", "LAPEL", 
+"LAPIN", "LAPIS", "LAPPS", "LAPSE", "LARCH", "LARDS", "LARDY", 
+"LARES", "LARGE", "LARGO", "LARKS", "LARKY", "LARRY", "LARVA", 
+"LASED", "LASER", "LASES", "LASSO", "LASTS", "LATCH", "LATED", 
+"LATEN", "LATER", "LATEX", "LATHE", "LATHS", "LATHY", "LATIN", 
+"LAUDE", "LAUDS", "LAUGH", "LAURA", "LAVAS", "LAVED", "LAVER", 
+"LAVES", "LAWED", "LAWNS", "LAWNY", "LAXER", "LAXLY", "LAYED", 
+"LAYER", "LAZAR", "LAZED", "LAZES", "LEACH", "LEADS", "LEADY", 
+"LEAFS", "LEAFY", "LEAKS", "LEAKY", "LEANS", "LEANT", "LEAPS", 
+"LEAPT", "LEARN", "LEARY", "LEASE", "LEASH", "LEAST", "LEAVE", 
+"LEDGE", "LEDGY", "LEECH", "LEEDS", "LEEKS", "LEERS", "LEERY", 
+"LEFTS", "LEFTY", "LEGAL", "LEGER", "LEGGY", "LEGIT", "LEMAN", 
+"LEMMA", "LEMON", "LEMUR", "LENDS", "LENIN", "LENSE", "LENTO", 
+"LEONE", "LEPER", "LETCH", "LETHE", "LETUP", "LEVEE", "LEVEL", 
+"LEVER", "LEVIN", "LEVIS", "LEWIS", "LIANA", "LIARS", "LIBEL", 
+"LIBER", "LIBRA", "LIBRE", "LIBYA", "LICHI", "LICHT", "LICIT", 
+"LICKS", "LIDAR", "LIDOS", "LIEGE", "LIENS", "LIERS", "LIEUT", 
+"LIFER", "LIFTS", "LIGER", "LIGHT", "LIKED", "LIKEN", "LIKER", 
+"LIKES", "LILAC", "LILLY", "LILTS", "LIMAS", "LIMBO", "LIMBS", 
+"LIMBY", "LIMED", "LIMES", "LIMEY", "LIMIT", "LIMNS", "LIMOS", 
+"LIMPS", "LINAC", "LINDA", "LINDY", "LINED", "LINEN", "LINER", 
+"LINES", "LINEY", "LINGO", "LINGS", "LINKS", "LINKY", "LINOS", 
+"LINTS", "LINTY", "LINUM", "LIONS", "LIPID", "LIPPY", "LIRAS", 
+"LISLE", "LISPS", "LISTS", "LISZT", "LITER", "LITES", "LITHE", 
+"LITHO", "LITRE", "LIVED", "LIVEN", "LIVER", "LIVES", "LIVID", 
+"LIVRE", "LLAMA", "LLANO", "LOACH", "LOADS", "LOAFS", "LOAMS", 
+"LOAMY", "LOANS", "LOATH", "LOBAR", "LOBBY", "LOBED", "LOBES", 
+"LOBOS", "LOCAL", "LOCHS", "LOCKS", "LOCOS", "LOCUS", "LODEN", 
+"LODES", "LODGE", "LOESS", "LOFTS", "LOFTY", "LOGAN", "LOGES", 
+"LOGGY", "LOGIA", "LOGIC", "LOGOS", "LOINS", "LOLLS", "LOLLY", 
+"LONER", "LONGS", "LOOFA", "LOOFS", "LOOKS", "LOOMS", "LOONS", 
+"LOONY", "LOOPS", "LOOPY", "LOOSE", "LOOTS", "LOPED", "LOPER", 
+"LOPES", "LOPPY", "LORAN", "LORDS", "LORES", "LORIS", "LORRY", 
+"LOSER", "LOSES", "LOSSY", "LOTOS", "LOTTO", "LOTUS", "LOUGH", 
+"LOUIE", "LOUIS", "LOUPE", "LOUPS", "LOURS", "LOURY", "LOUSE", 
+"LOUSY", "LOUTS", "LOVED", "LOVER", "LOVES", "LOWED", "LOWER", 
+"LOWLY", "LOXES", "LOYAL", "LUAUS", "LUBES", "LUCES", "LUCIA", 
+"LUCID", "LUCKS", "LUCKY", "LUCRE", "LUFFS", "LUGES", "LULLS", 
+"LULUS", "LUMEN", "LUMPS", "LUMPY", "LUNAR", "LUNAS", "LUNCH", 
+"LUNES", "LUNET", "LUNGE", "LUNGS", "LUNKS", "LUPIN", "LUPUS", 
+"LURCH", "LURED", "LURER", "LURES", "LURID", "LURKS", "LUSTS", 
+"LUSTY", "LUTED", "LUTES", "LUXES", "LYCEE", "LYING", "LYMPH", 
+"LYNCH", "LYRES", "LYRIC", "LYSED", "LYSES", "LYSIN", "MACAW", 
+"MACED", "MACER", "MACES", "MACHO", "MACHS", "MACKS", "MACLE", 
+"MACRO", "MADAM", "MADLY", "MADRE", "MAFIA", "MAGES", "MAGIC", 
+"MAGMA", "MAGUS", "MAIDS", "MAILS", "MAIMS", "MAINE", "MAINS", 
+"MAIST", "MAIZE", "MAJOR", "MAKER", "MAKES", "MALAY", "MALES", 
+"MALLS", "MALTA", "MALTS", "MALTY", "MAMAS", "MAMBA", "MAMBO", 
+"MAMIE", "MAMMA", "MAMMY", "MANAS", "MANED", "MANES", "MANGE", 
+"MANGO", "MANGY", "MANIA", "MANIC", "MANLY", "MANNA", "MANOR", 
+"MANOS", "MANSE", "MANTA", "MANUS", "MAORI", "MAPLE", "MAQUI", 
+"MARCH", "MARCS", "MARDI", "MARES", "MARGE", "MARIA", "MARIE", 
+"MARKS", "MARRY", "MARSE", "MARSH", "MARTS", "MASER", "MASHY", 
+"MASKS", "MASON", "MASSA", "MASSE", "MASSY", "MASTS", "MATCH", 
+"MATED", "MATER", "MATES", "MATEY", "MATHS", "MATIN", "MATTE", 
+"MATTS", "MATZO", "MAULS", "MAUVE", "MAVEN", "MAVIN", "MAXIM", 
+"MAXIS", "MAYAN", "MAYAS", "MAYBE", "MAYOR", "MAYST", "MAZED", 
+"MAZEL", "MAZER", "MAZES", "MEADS", "MEALS", "MEALY", "MEANS", 
+"MEANT", "MEANY", "MEATS", "MEATY", "MECCA", "MECUM", "MEDAL", 
+"MEDIA", "MEDIC", "MEEDS", "MEETS", "MELBA", "MELDS", "MELEE", 
+"MELON", "MELTS", "MEMOS", "MENDS", "MENUS", "MEOWS", "MERCI", 
+"MERCY", "MERER", "MERES", "MERGE", "MERIT", "MERRY", "MESAS", 
+"MESHY", "MESON", "MESSY", "METAL", "METED", "METER", "METES", 
+"METRE", "METRO", "MEWED", "MEWLS", "MEZZO", "MIAMI", "MIAOU", 
+"MIAOW", "MIASM", "MIAUL", "MICAS", "MICKS", "MICRO", "MIDAS", 
+"MIDDY", "MIDGE", "MIDIS", "MIDST", "MIENS", "MIFFS", "MIFFY", 
+"MIGGS", "MIGHT", "MIKES", "MILAN", "MILCH", "MILER", "MILES", 
+"MILKS", "MILKY", "MILLE", "MILLS", "MILOS", "MIMED", "MIMEO", 
+"MIMER", "MIMES", "MIMIC", "MINCE", "MINCY", "MINDS", "MINED", 
+"MINER", "MINES", "MINGY", "MINIM", "MINIS", "MINKS", "MINNY", 
+"MINOR", "MINTS", "MINTY", "MINUS", "MIRED", "MIRES", "MIRKS", 
+"MIRKY", "MIRTH", "MIRVS", "MISDO", "MISER", "MISOS", "MISSY", 
+"MISTS", "MISTY", "MITER", "MITES", "MITRE", "MITTS", "MIXED", 
+"MIXER", "MIXES", "MIXUP", "MOANS", "MOATS", "MOBIL", "MOCHA", 
+"MOCKS", "MODAL", "MODEL", "MODEM", "MODES", "MODUS", "MOGUL", 
+"MOILS", "MOIRE", "MOIST", "MOLAR", "MOLDS", "MOLDY", "MOLES", 
+"MOLLS", "MOLLY", "MOLTO", "MOLTS", "MOMMA", "MOMMY", "MONAD", 
+"MONDE", "MONDO", "MONEY", "MONKS", "MONOS", "MONTE", "MONTH", 
+"MOOCH", "MOODS", "MOODY", "MOOED", "MOOLA", "MOONS", "MOONY", 
+"MOORE", "MOORS", "MOORY", "MOOSE", "MOOTS", "MOPED", "MOPER", 
+"MOPES", "MOPEY", "MORAL", "MORAY", "MOREL", "MORES", "MORNS", 
+"MORON", "MORPH", "MORSE", "MOSES", "MOSEY", "MOSKS", "MOSSY", 
+"MOSTS", "MOTEL", "MOTES", "MOTET", "MOTEY", "MOTHS", "MOTHY", 
+"MOTIF", "MOTOR", "MOTTO", "MOUES", "MOULD", "MOULT", "MOUND", 
+"MOUNT", "MOURN", "MOUSE", "MOUSY", "MOUTH", "MOVED", "MOVER", 
+"MOVES", "MOVIE", "MOWED", "MOWER", "MOXAS", "MOXIE", "MUCKS", 
+"MUCKY", "MUCUS", "MUDDY", "MUDRA", "MUFFS", "MUFTI", "MUGGS", 
+"MUGGY", "MUJIK", "MULCH", "MULCT", "MULED", "MULES", "MULEY", 
+"MULLA", "MULLS", "MULTI", "MULTO", "MUMBO", "MUMMS", "MUMMY", 
+"MUMPS", "MUNCH", "MUONS", "MURAL", "MUREX", "MURKS", "MURKY", 
+"MUSED", "MUSER", "MUSES", "MUSHY", "MUSIC", "MUSKS", "MUSKY", 
+"MUSSY", "MUSTS", "MUSTY", "MUTED", "MUTER", "MUTES", "MUTTS", 
+"MUZZY", "MYLAR", "MYNAH", "MYNAS", "MYOPE", "MYOPY", "MYRRH", 
+"MYTHS", "NABOB", "NACRE", "NADIR", "NAIAD", "NAIFS", "NAILS", 
+"NAIVE", "NAKED", "NAMED", "NAMER", "NAMES", "NANCE", "NANCY", 
+"NANNY", "NAPES", "NAPPY", "NARCO", "NARCS", "NARES", "NARIS", 
+"NARKS", "NASAL", "NASTY", "NATAL", "NATES", "NATTY", "NAVAL", 
+"NAVEL", "NAVES", "NAVVY", "NAZIS", "NEAPS", "NEARS", "NEATH", 
+"NEATS", "NECKS", "NEEDS", "NEEDY", "NEGRO", "NEGUS", "NEHRU", 
+"NEIGH", "NEONS", "NEPAL", "NERDS", "NERTS", "NERTZ", "NERVE", 
+"NERVY", "NESTS", "NETTY", "NEVER", "NEVUS", "NEWEL", "NEWER", 
+"NEWLY", "NEWSY", "NEWTS", "NEXUS", "NICER", "NICHE", "NICKS", 
+"NIECE", "NIFTY", "NIGHS", "NIGHT", "NIHIL", "NILLS", "NIMBI", 
+"NINES", "NINNY", "NINON", "NINTH", "NIPPY", "NISEI", "NITER", 
+"NITRE", "NITRO", "NITTY", "NIXED", "NIXES", "NIXIE", "NIXON", 
+"NOBBY", "NOBEL", "NOBLE", "NOBLY", "NOCKS", "NODAL", "NODDY", 
+"NODES", "NODUS", "NOELS", "NOGGS", "NOHOW", "NOIRE", "NOISE", 
+"NOISY", "NOLLE", "NOMAD", "NONCE", "NONES", "NOOKS", "NOOKY", 
+"NOONS", "NOOSE", "NORMA", "NORMS", "NORSE", "NORTH", "NOSED", 
+"NOSES", "NOSEY", "NOTAL", "NOTCH", "NOTED", "NOTER", "NOTES", 
+"NOTRE", "NOUNS", "NOVAE", "NOVAS", "NOVEL", "NOWAY", "NUBBY", 
+"NUBIA", "NUDER", "NUDES", "NUDGE", "NUDIE", "NUDUM", "NUKES", 
+"NULLO", "NULLS", "NUMBS", "NURSE", "NUTTY", "NYLON", "NYMPH", 
+"OAKEN", "OAKUM", "OARED", "OASES", "OASIS", "OASTS", "OATEN", 
+"OATER", "OATHS", "OBEAH", "OBELI", "OBESE", "OBEYS", "OBITS", 
+"OBOES", "OBOLS", "OCCUR", "OCEAN", "OCHER", "OCHRE", "OCTAD", 
+"OCTAL", "OCTET", "OCTYL", "OCULI", "ODDER", "ODDLY", "ODEON", 
+"ODIUM", "ODORS", "ODOUR", "OFAYS", "OFFAL", "OFFED", "OFFER", 
+"OFTEN", "OFTER", "OGEES", "OGHAM", "OGIVE", "OGLED", "OGLER", 
+"OGLES", "OGRES", "OHING", "OHMIC", "OILED", "OILER", "OINKS", 
+"OKAPI", "OKAYS", "OKRAS", "OLDEN", "OLDER", "OLDIE", "OLEOS", 
+"OLIOS", "OLIVE", "OLLAS", "OLOGY", "OMAHA", "OMBRE", "OMEGA", 
+"OMENS", "OMITS", "ONCES", "ONERY", "ONION", "ONSET", "OOHED", 
+"OOMPH", "OOZED", "OOZES", "OPALS", "OPENS", "OPERA", "OPINE", 
+"OPIUM", "OPTED", "OPTIC", "ORALS", "ORANG", "ORATE", "ORBED", 
+"ORBIT", "ORCAS", "ORDER", "ORDOS", "OREAD", "ORGAN", "ORGIC", 
+"ORIEL", "ORION", "ORLON", "ORRIS", "ORTHO", "OSAGE", "OSAKA", 
+"OSCAR", "OSIER", "OSMIC", "OSSEA", "OSSIA", "OSTIA", "OTHER", 
+"OTTER", "OUGHT", "OUIJA", "OUNCE", "OUSEL", "OUSTS", "OUTDO", 
+"OUTED", "OUTER", "OUTGO", "OUTRE", "OUZEL", "OUZOS", "OVALS", 
+"OVARY", "OVATE", "OVENS", "OVERS", "OVERT", "OVINE", "OVOID", 
+"OVOLO", "OVULE", "OWING", "OWLET", "OWNED", "OWNER", "OXBOW", 
+"OXEYE", "OXIDE", "OXLIP", "OXTER", "OYERS", "OZONE", "PACED", 
+"PACER", "PACES", "PACKS", "PACTA", "PACTS", "PADDY", "PADRE", 
+"PADRI", "PAEAN", "PAGAN", "PAGED", "PAGES", "PAILS", "PAINE", 
+"PAINS", "PAINT", "PAIRS", "PALED", "PALER", "PALES", "PALLS", 
+"PALLY", "PALMS", "PALMY", "PALPS", "PALSY", "PAMPA", "PANDA", 
+"PANED", "PANEL", "PANES", "PANGA", "PANGS", "PANIC", "PANSY", 
+"PANTS", "PANTY", "PAPAL", "PAPAS", "PAPAW", "PAPER", "PAPPY", 
+"PAPUA", "PARAS", "PARCH", "PARED", "PARER", "PARES", "PARIS", 
+"PARKA", "PARKS", "PARRY", "PARSE", "PARTE", "PARTI", "PARTS", 
+"PARTY", "PARVE", "PASEO", "PASHA", "PASSE", "PASTA", "PASTE", 
+"PASTS", "PASTY", "PATCH", "PATED", "PATEN", "PATER", "PATES", 
+"PATHS", "PATIO", "PATLY", "PATSY", "PATTY", "PAUSE", "PAVAN", 
+"PAVED", "PAVER", "PAVES", "PAWED", "PAWER", "PAWKY", "PAWLS", 
+"PAWNS", "PAXES", "PAYED", "PAYEE", "PAYER", "PEACE", "PEACH", 
+"PEAKS", "PEAKY", "PEALS", "PEARL", "PEARS", "PEART", "PEASE", 
+"PEATS", "PEATY", "PEAVY", "PECAN", "PECKS", "PECKY", "PEDAL", 
+"PEDES", "PEDRO", "PEEKS", "PEELS", "PEENS", "PEEPS", "PEERS", 
+"PEERY", "PEEVE", "PEGGY", "PEINS", "PEKES", "PEKIN", "PEKOE", 
+"PELFS", "PELTS", "PENAL", "PENCE", "PENDS", "PENES", "PENIS", 
+"PENNA", "PENNY", "PENSE", "PEONS", "PEONY", "PEPPY", "PEPSI", 
+"PERCH", "PERDU", "PERDY", "PERES", "PERIL", "PERIS", "PERKS", 
+"PERKY", "PERMS", "PERRY", "PESKY", "PESOS", "PESTS", "PETAL", 
+"PETER", "PETIT", "PETRI", "PETRO", "PETTY", "PEWEE", "PEWIT", 
+"PHAGE", "PHARM", "PHASE", "PHIAL", "PHLOX", "PHONE", "PHONO", 
+"PHONS", "PHONY", "PHOTO", "PHREN", "PHYLA", "PIANO", "PICAS", 
+"PICKS", "PICKY", "PICOT", "PIECE", "PIERS", "PIETA", "PIETY", 
+"PIGGY", "PIGMY", "PIKED", "PIKER", "PIKES", "PILAF", "PILAR", 
+"PILED", "PILES", "PILLS", "PILOT", "PIMAS", "PIMPS", "PINCH", 
+"PINED", "PINES", "PINEY", "PINGS", "PINKO", "PINKS", "PINKY", 
+"PINNA", "PINON", "PINTA", "PINTO", "PINTS", "PINUP", "PIONS", 
+"PIOUS", "PIPED", "PIPER", "PIPES", "PIPET", "PIPIT", "PIQUE", 
+"PIROG", "PITAS", "PITCH", "PITHS", "PITHY", "PITON", "PIVOT", 
+"PIXEL", "PIXES", "PIXIE", "PIZZA", "PLACE", "PLACK", "PLAID", 
+"PLAIN", "PLAIT", "PLANE", "PLANK", "PLANS", "PLANT", "PLASH", 
+"PLASM", "PLATE", "PLATO", "PLATS", "PLATY", "PLAYA", "PLAYS", 
+"PLAZA", "PLEAD", "PLEAS", "PLEAT", "PLEBE", "PLEBS", "PLENA", 
+"PLIED", "PLIER", "PLIES", "PLINK", "PLODS", "PLONK", "PLOPS", 
+"PLOTS", "PLOWS", "PLOYS", "PLUCK", "PLUGS", "PLUMB", "PLUME", 
+"PLUMP", "PLUMS", "PLUMY", "PLUNK", "PLUSH", "PLUTO", "PLYER", 
+"POACH", "POCKS", "POCKY", "PODGY", "PODIA", "POEMS", "POESY", 
+"POETS", "POILU", "POINT", "POISE", "POKED", "POKER", "POKES", 
+"POKEY", "POLAR", "POLED", "POLER", "POLES", "POLIO", "POLIS", 
+"POLIT", "POLKA", "POLLS", "POLYP", "POLYS", "POMES", "POMPS", 
+"PONCE", "PONDS", "PONES", "POOCH", "POOHS", "POOLS", "POOPS", 
+"POPES", "POPPA", "POPPY", "PORCH", "PORED", "PORES", "PORGY", 
+"PORKS", "PORKY", "PORNO", "PORNS", "PORTS", "POSED", "POSER", 
+"POSES", "POSIT", "POSSE", "POSTS", "POTSY", "POTTY", "POUCH", 
+"POUFF", "POUFS", "POULT", "POUND", "POURS", "POUTS", "POUTY", 
+"POWER", "POXED", "POXES", "PRAMS", "PRANA", "PRANK", "PRAOS", 
+"PRATE", "PRATS", "PRAUS", "PRAWN", "PRAYS", "PREEN", "PREPS", 
+"PRESS", "PREST", "PREXY", "PREYS", "PRICE", "PRICK", "PRICY", 
+"PRIDE", "PRIED", "PRIER", "PRIES", "PRIGS", "PRIMA", "PRIME", 
+"PRIMO", "PRIMP", "PRIMS", "PRINK", "PRINT", "PRIOR", "PRISE", 
+"PRISM", "PRISS", "PRIVY", "PRIZE", "PROAS", "PROBE", "PRODS", 
+"PROEM", "PROFS", "PROGS", "PROLE", "PROMS", "PRONE", "PRONG", 
+"PROOF", "PROPS", "PROSE", "PROSY", "PROUD", "PROVE", "PROWL", 
+"PROWS", "PROXY", "PRUDE", "PRUNE", "PRYER", "PSALM", "PSEUD", 
+"PSHAW", "PSYCH", "PUBES", "PUBIC", "PUBIS", "PUCES", "PUCKS", 
+"PUDGY", "PUFFS", "PUFFY", "PUGGY", "PUKED", "PUKES", "PUKKA", 
+"PULED", "PULER", "PULES", "PULLS", "PULPS", "PULPY", "PULSE", 
+"PUMAS", "PUMPS", "PUNCH", "PUNKS", "PUNKY", "PUNNY", "PUNTS", 
+"PUNTY", "PUPAE", "PUPAL", "PUPAS", "PUPIL", "PUPPY", "PUREE", 
+"PURER", "PURGE", "PURIM", "PURLS", "PURRS", "PURSE", "PURSY", 
+"PUSHY", "PUSSY", "PUTON", "PUTTS", "PUTTY", "PYGMY", "PYLON", 
+"PYRES", "PYREX", "PYRIC", "PYXES", "PYXIE", "PYXIS", "QAIDS", 
+"QATAR", "QIANA", "QOPHS", "QUACK", "QUADS", "QUAFF", "QUAGS", 
+"QUAIL", "QUAIS", "QUAKE", "QUAKY", "QUALE", "QUALM", "QUANT", 
+"QUARK", "QUART", "QUASH", "QUASI", "QUAYS", "QUEAN", "QUEEN", 
+"QUEER", "QUELL", "QUERN", "QUERY", "QUEST", "QUEUE", "QUEYS", 
+"QUICK", "QUIDS", "QUIET", "QUILL", "QUILT", "QUINT", "QUIPS", 
+"QUIPU", "QUIRE", "QUIRK", "QUIRT", "QUITE", "QUITO", "QUITS", 
+"QUODS", "QUOIN", "QUOIT", "QUOTA", "QUOTE", "QUOTH", "QURSH", 
+"RABBI", "RABIC", "RABID", "RACED", "RACER", "RACES", "RACKS", 
+"RADAR", "RADII", "RADIO", "RADIX", "RADON", "RAFTS", "RAGAS", 
+"RAGED", "RAGES", "RAGGY", "RAIDS", "RAILS", "RAINS", "RAINY", 
+"RAISE", "RAJAH", "RAJAS", "RAKED", "RAKER", "RAKES", "RALES", 
+"RALLY", "RALPH", "RAMIE", "RAMPS", "RANCH", "RANDS", "RANDY", 
+"RANEE", "RANGE", "RANGY", "RANIS", "RANKS", "RANTS", "RAPED", 
+"RAPER", "RAPES", "RAPID", "RARER", "RASED", "RASER", "RASES", 
+"RASPS", "RASPY", "RATCH", "RATED", "RATER", "RATES", "RATIO", 
+"RATTY", "RAVED", "RAVEL", "RAVEN", "RAVER", "RAVES", "RAWER", 
+"RAWLY", "RAYED", "RAYON", "RAZED", "RAZEE", "RAZER", "RAZES", 
+"RAZOR", "REACH", "REACT", "READD", "READS", "READY", "REALM", 
+"REALS", "REAMS", "REAPS", "REARM", "REARS", "REAVE", "REBBE", 
+"REBEC", "REBEL", "REBID", "REBOP", "REBUS", "REBUT", "RECAP", 
+"RECKS", "RECON", "RECTA", "RECTI", "RECTO", "RECUR", "RECUT", 
+"REDED", "REDES", "REDID", "REDIP", "REDLY", "REDOS", "REDOX", 
+"REDRY", "REDUX", "REDYE", "REEDS", "REEDY", "REEFS", "REEFY", 
+"REEKS", "REEKY", "REELS", "REEVE", "REFED", "REFER", "REFIT", 
+"REFIX", "REFLY", "REFRY", "REGAL", "REGES", "REGIA", "REHEM", 
+"REICH", "REIFY", "REIGN", "REINS", "REKEY", "RELAX", "RELAY", 
+"RELET", "RELIC", "RELIT", "REMAN", "REMAP", "REMET", "REMIT", 
+"REMIX", "RENAL", "RENDS", "RENEW", "RENIG", "RENTS", "REOIL", 
+"REPAY", "REPEL", "REPIN", "REPLY", "REPRO", "RERAN", "RERUN", 
+"RESAW", "RESAY", "RESEE", "RESET", "RESEW", "RESIN", "RESOW", 
+"RESTS", "RETCH", "RETIE", "RETRO", "RETRY", "REUSE", "REVEL", 
+"REVUE", "REWAX", "REWED", "REWIN", "REWON", "REXES", "RHEAS", 
+"RHEUM", "RHINE", "RHINO", "RHOMB", "RHUMB", "RHYME", "RHYTA", 
+"RIALS", "RIBBY", "RICED", "RICER", "RICES", "RICHE", "RICKS", 
+"RIDER", "RIDES", "RIDGE", "RIDGY", "RIELS", "RIFER", "RIFFS", 
+"RIFLE", "RIFTS", "RIGHT", "RIGID", "RIGOR", "RILED", "RILES", 
+"RILLS", "RIMED", "RIMES", "RINDS", "RINGS", "RINKS", "RINSE", 
+"RIOTS", "RIPEN", "RIPER", "RIPES", "RISEN", "RISER", "RISES", 
+"RISHI", "RISKS", "RISKY", "RISUS", "RITES", "RITZY", "RIVAL", 
+"RIVED", "RIVEN", "RIVER", "RIVES", "RIVET", "RIYAL", "ROACH", 
+"ROADS", "ROAMS", "ROANS", "ROARS", "ROAST", "ROBED", "ROBES", 
+"ROBIN", "ROBLE", "ROBOT", "ROCKS", "ROCKY", "RODEO", "ROGER", 
+"ROGUE", "ROILS", "ROILY", "ROLES", "ROLLS", "ROMAN", "ROMEO", 
+"ROMPS", "RONDO", "ROODS", "ROOFS", "ROOKS", "ROOKY", "ROOMS", 
+"ROOMY", "ROOST", "ROOTS", "ROOTY", "ROPED", "ROPER", "ROPES", 
+"ROSED", "ROSES", "ROSHI", "ROSIN", "ROTES", "ROTOR", "ROUES", 
+"ROUGE", "ROUGH", "ROUND", "ROUSE", "ROUST", "ROUTE", "ROUTS", 
+"ROVED", "ROVER", "ROVES", "ROWAN", "ROWDY", "ROWED", "ROWEL", 
+"ROWER", "ROYAL", "RUBES", "RUBLE", "RUCKS", "RUDDY", "RUDER", 
+"RUERS", "RUFFS", "RUGBY", "RUING", "RUINS", "RULED", "RULER", 
+"RULES", "RUMBA", "RUMMY", "RUMOR", "RUMPS", "RUNES", "RUNGS", 
+"RUNIC", "RUNNY", "RUNTS", "RUNTY", "RUPEE", "RURAL", "RUSES", 
+"RUSHY", "RUSKS", "RUSSE", "RUSTS", "RUSTY", "RUTHS", "RUTTY", 
+"SABER", "SABLE", "SABOT", "SABRA", "SACKS", "SACRA", "SADHU", 
+"SADLY", "SAFER", "SAFES", "SAGAS", "SAGER", "SAGES", "SAGGY", 
+"SAGOS", "SAHIB", "SAIDS", "SAILS", "SAINT", "SAITH", "SAKES", 
+"SAKIS", "SALAD", "SALEM", "SALES", "SALLY", "SALON", "SALSA", 
+"SALTS", "SALTY", "SALVE", "SALVO", "SAMBA", "SAMBO", "SAMOA", 
+"SANDS", "SANDY", "SANED", "SANER", "SANES", "SANGA", "SANGH", 
+"SANKA", "SANTA", "SAPID", "SAPOR", "SAPPY", "SARAH", "SARAN", 
+"SAREE", "SARGE", "SARIS", "SAROD", "SASSY", "SATAN", "SATED", 
+"SATES", "SATIN", "SATYR", "SAUCE", "SAUCY", "SAUDI", "SAULS", 
+"SAULT", "SAUNA", "SAUTE", "SAVED", "SAVER", "SAVES", "SAVOR", 
+"SAVOY", "SAVVY", "SAWED", "SAWER", "SAXES", "SAXON", "SAYEE", 
+"SAYER", "SAYST", "SCABS", "SCADS", "SCAGS", "SCALD", "SCALE", 
+"SCALP", "SCALY", "SCAMP", "SCAMS", "SCANS", "SCANT", "SCAPE", 
+"SCARE", "SCARF", "SCARP", "SCARS", "SCARY", "SCATS", "SCENE", 
+"SCENT", "SCHMO", "SCHUL", "SCHWA", "SCION", "SCOFF", "SCOLD", 
+"SCONE", "SCOOP", "SCOOT", "SCOPE", "SCORE", "SCORN", "SCOTS", 
+"SCOTT", "SCOUR", "SCOUT", "SCOWL", "SCOWS", "SCRAG", "SCRAM", 
+"SCRAP", "SCREE", "SCREW", "SCRIM", "SCRIP", "SCROD", "SCRUB", 
+"SCUBA", "SCUDS", "SCUFF", "SCULK", "SCULL", "SCULP", "SCUMS", 
+"SCUPS", "SCURF", "SCUTA", "SCUTE", "SCUTS", "SEALS", "SEAMS", 
+"SEAMY", "SEARS", "SEATS", "SECTS", "SEDAN", "SEDER", "SEDGE", 
+"SEDGY", "SEDUM", "SEEDS", "SEEDY", "SEEKS", "SEELS", "SEEMS", 
+"SEEPS", "SEEPY", "SEERS", "SEGNO", "SEGOS", "SEGUE", "SEIGE", 
+"SEINE", "SEISM", "SEIZE", "SELFS", "SELLS", "SEMEN", "SEMIS", 
+"SENDS", "SENNA", "SENOR", "SENSE", "SENSU", "SENTI", "SEOUL", 
+"SEPAL", "SEPIA", "SEPOY", "SEPTA", "SEPTS", "SERAL", "SERED", 
+"SERER", "SERES", "SERFS", "SERGE", "SERIF", "SERIN", "SEROW", 
+"SERUM", "SERVE", "SERVO", "SETAE", "SETAL", "SETON", "SETUP", 
+"SEVEN", "SEVER", "SEWED", "SEWER", "SEXED", "SEXES", "SEXTO", 
+"SEXTS", "SHACK", "SHADE", "SHADS", "SHADY", "SHAFT", "SHAGS", 
+"SHAHS", "SHAKE", "SHAKO", "SHAKY", "SHALE", "SHALL", "SHALT", 
+"SHALY", "SHAME", "SHAMS", "SHANK", "SHAPE", "SHARD", "SHARE", 
+"SHARK", "SHARP", "SHAVE", "SHAWL", "SHAWM", "SHAWN", "SHAWS", 
+"SHAYS", "SHEAF", "SHEAR", "SHEDS", "SHEEN", "SHEEP", "SHEER", 
+"SHEET", "SHEIK", "SHELF", "SHELL", "SHEOL", "SHERD", "SHEWN", 
+"SHEWS", "SHIED", "SHIER", "SHIES", "SHIFT", "SHILL", "SHILY", 
+"SHIMS", "SHINE", "SHINS", "SHINY", "SHIPS", "SHIPT", "SHIRE", 
+"SHIRK", "SHIRR", "SHIRT", "SHISH", "SHIST", "SHITS", "SHIVA", 
+"SHIVE", "SHIVS", "SHLEP", "SHOAL", "SHOAT", "SHOCK", "SHOED", 
+"SHOER", "SHOES", "SHOJI", "SHONE", "SHOOK", "SHOOS", "SHOOT", 
+"SHOPE", "SHOPS", "SHORE", "SHORN", "SHORT", "SHOTE", "SHOTS", 
+"SHOUT", "SHOVE", "SHOWN", "SHOWS", "SHOWY", "SHRED", "SHREW", 
+"SHRUB", "SHRUG", "SHUCK", "SHULS", "SHUNS", "SHUNT", "SHUSH", 
+"SHUTE", "SHUTS", "SHYER", "SHYLY", "SIBYL", "SICKS", "SIDED", 
+"SIDES", "SIDLE", "SIEGE", "SIEUR", "SIEVE", "SIFTS", "SIGHS", 
+"SIGHT", "SIGIL", "SIGMA", "SIGNS", "SIKHS", "SILEX", "SILKS", 
+"SILKY", "SILLS", "SILLY", "SILOS", "SILTS", "SILTY", "SILVA", 
+"SIMON", "SIMPS", "SINCE", "SINES", "SINEW", "SINGE", "SINGS", 
+"SINHS", "SINKS", "SINUS", "SIOUX", "SIPPY", "SIRED", "SIREE", 
+"SIREN", "SIRES", "SIRUP", "SISAL", "SISSY", "SITAR", "SITED", 
+"SITES", "SITUP", "SITUS", "SIXES", "SIXTE", "SIXTH", "SIXTY", 
+"SIZED", "SIZER", "SIZES", "SKAGS", "SKALD", "SKATE", "SKEAN", 
+"SKEET", "SKEIN", "SKEWS", "SKIDS", "SKIED", "SKIER", "SKIES", 
+"SKIEY", "SKIFF", "SKIIS", "SKILL", "SKIMP", "SKIMS", "SKINK", 
+"SKINS", "SKIPS", "SKIRL", "SKIRT", "SKITS", "SKOAL", "SKUAS", 
+"SKULK", "SKULL", "SKUNK", "SKYED", "SKYEY", "SLABS", "SLACK", 
+"SLAGS", "SLAIN", "SLAKE", "SLAMS", "SLANG", "SLANT", "SLAPS", 
+"SLASH", "SLATE", "SLATS", "SLATY", "SLAVE", "SLAVS", "SLAWS", 
+"SLAYS", "SLEDS", "SLEEK", "SLEEP", "SLEET", "SLEPT", "SLEWS", 
+"SLICE", "SLICK", "SLIDE", "SLIER", "SLILY", "SLIME", "SLIMS", 
+"SLIMY", "SLING", "SLINK", "SLIPS", "SLIPT", "SLITS", "SLOBS", 
+"SLOES", "SLOGS", "SLOOP", "SLOPE", "SLOPS", "SLOSH", "SLOTH", 
+"SLOTS", "SLOWS", "SLUBS", "SLUED", "SLUES", "SLUGS", "SLUMP", 
+"SLUMS", "SLUNG", "SLUNK", "SLURP", "SLURS", "SLUSH", "SLUTS", 
+"SLYER", "SLYLY", "SMACK", "SMALL", "SMART", "SMASH", "SMEAR", 
+"SMELL", "SMELT", "SMILE", "SMIRK", "SMITE", "SMITH", "SMOCK", 
+"SMOKE", "SMOKY", "SMOTE", "SMUTS", "SNACK", "SNAFU", "SNAGS", 
+"SNAIL", "SNAKE", "SNAKY", "SNAPS", "SNARE", "SNARK", "SNARL", 
+"SNEAK", "SNEER", "SNICK", "SNIDE", "SNIFF", "SNIPE", "SNIPS", 
+"SNITS", "SNOBS", "SNOOD", "SNOOP", "SNOOT", "SNORE", "SNORT", 
+"SNOTS", "SNOUT", "SNOWS", "SNOWY", "SNUBS", "SNUCK", "SNUFF", 
+"SNUGS", "SOAKS", "SOAPS", "SOAPY", "SOARS", "SOAVE", "SOBER", 
+"SOCKS", "SODAS", "SODDY", "SODOM", "SOFAR", "SOFAS", "SOFIA", 
+"SOFTS", "SOFTY", "SOGGY", "SOILS", "SOLAR", "SOLED", "SOLES", 
+"SOLID", "SOLOS", "SOLVE", "SOMAS", "SONAR", "SONDE", "SONES", 
+"SONGS", "SONIC", "SONNY", "SOOEY", "SOOTH", "SOOTS", "SOOTY", 
+"SOPHS", "SOPHY", "SOPOR", "SOPPY", "SOREL", "SORER", "SORES", 
+"SORRY", "SORTS", "SOUGH", "SOULS", "SOUND", "SOUPS", "SOUPY", 
+"SOURS", "SOUSE", "SOUTH", "SOWED", "SOWER", "SOYAS", "SPACE", 
+"SPADE", "SPAIN", "SPAKE", "SPALE", "SPANK", "SPANS", "SPARE", 
+"SPARK", "SPARS", "SPASM", "SPATE", "SPATS", "SPAWN", "SPAYS", 
+"SPEAK", "SPEAR", "SPECK", "SPECS", "SPEED", "SPELL", "SPELT", 
+"SPEND", "SPENT", "SPERM", "SPEWS", "SPICA", "SPICE", "SPICK", 
+"SPICS", "SPICY", "SPIED", "SPIEL", "SPIER", "SPIES", "SPIFF", 
+"SPIKE", "SPIKY", "SPILL", "SPILT", "SPINE", "SPINS", "SPINY", 
+"SPIRE", "SPIRY", "SPITE", "SPITS", "SPITZ", "SPLAT", "SPLAY", 
+"SPLIT", "SPOIL", "SPOKE", "SPOOF", "SPOOK", "SPOOL", "SPOON", 
+"SPOOR", "SPORE", "SPORT", "SPOTS", "SPOUT", "SPRAT", "SPRAY", 
+"SPREE", "SPRIG", "SPRIT", "SPUDS", "SPUED", "SPUES", "SPUME", 
+"SPUMY", "SPUNK", "SPURN", "SPURS", "SPURT", "SPUTA", "SQUAB", 
+"SQUAD", "SQUAT", "SQUAW", "SQUIB", "SQUID", "STABS", "STACK", 
+"STAFF", "STAGE", "STAGS", "STAGY", "STAID", "STAIN", "STAIR", 
+"STAKE", "STALE", "STALK", "STALL", "STAMP", "STAND", "STANK", 
+"STAPH", "STARE", "STARK", "STARS", "START", "STASH", "STATE", 
+"STATS", "STAVE", "STAYS", "STEAD", "STEAK", "STEAL", "STEAM", 
+"STEED", "STEEL", "STEEP", "STEER", "STEIN", "STELE", "STEMS", 
+"STENO", "STEPS", "STERE", "STERN", "STETS", "STEVE", "STEWS", 
+"STICK", "STIED", "STIES", "STIFF", "STILE", "STILL", "STILT", 
+"STIMY", "STING", "STINK", "STINT", "STIRS", "STOAS", "STOAT", 
+"STOCK", "STOGY", "STOIC", "STOKE", "STOLE", "STOMP", "STONE", 
+"STONY", "STOOD", "STOOL", "STOOP", "STOPS", "STOPT", "STORE", 
+"STORK", "STORM", "STORY", "STOUP", "STOUT", "STOVE", "STOWS", 
+"STRAP", "STRAW", "STRAY", "STREP", "STREW", "STRIA", "STRIP", 
+"STROP", "STRUM", "STRUT", "STUBS", "STUCK", "STUDS", "STUDY", 
+"STUFF", "STUMP", "STUNG", "STUNK", "STUNS", "STUNT", "STUPA", 
+"STUPE", "STYED", "STYES", "STYLE", "STYLI", "STYMY", "SUAVE", 
+"SUCKS", "SUCRE", "SUDAN", "SUDOR", "SUDSY", "SUEDE", "SUERS", 
+"SUETS", "SUETY", "SUGAR", "SUING", "SUITE", "SUITS", "SULFA", 
+"SULKS", "SULKY", "SULLY", "SUMAC", "SUMMA", "SUMOS", "SUMPS", 
+"SUNNY", "SUNUP", "SUPER", "SUPES", "SUPRA", "SURDS", "SURER", 
+"SURFS", "SURFY", "SURGE", "SURGY", "SURLY", "SUSAN", "SUTRA", 
+"SUTTA", "SWABS", "SWAGE", "SWAIL", "SWAIN", "SWALE", "SWAMI", 
+"SWAMP", "SWANG", "SWANK", "SWANS", "SWAPS", "SWARD", "SWARM", 
+"SWART", "SWASH", "SWATH", "SWATS", "SWAYS", "SWEAR", "SWEAT", 
+"SWEDE", "SWEEP", "SWEET", "SWELL", "SWEPT", "SWIFT", "SWIGS", 
+"SWILL", "SWIMS", "SWINE", "SWING", "SWIPE", "SWIRL", "SWISH", 
+"SWISS", "SWOON", "SWOOP", "SWOPS", "SWORD", "SWORE", "SWORN", 
+"SWUNG", "SYLPH", "SYNCH", "SYNCS", "SYNOD", "SYREN", "SYRIA", 
+"SYRUP", "TABBY", "TABLA", "TABLE", "TABOO", "TABOR", "TACET", 
+"TACHS", "TACIT", "TACKS", "TACKY", "TACOS", "TACTS", "TAELS", 
+"TAFFY", "TAIGA", "TAILS", "TAINT", "TAKEN", "TAKER", "TAKES", 
+"TALCS", "TALER", "TALES", "TALKS", "TALKY", "TALLY", "TALON", 
+"TALUS", "TAMED", "TAMER", "TAMES", "TAMMY", "TAMPA", "TAMPS", 
+"TANGO", "TANGS", "TANGY", "TANKA", "TANKS", "TANSY", "TANTO", 
+"TAPED", "TAPER", "TAPES", "TAPIR", "TARDE", "TARDO", "TARDY", 
+"TARED", "TARES", "TARNS", "TAROS", "TAROT", "TARPS", "TARRY", 
+"TARSI", "TARTS", "TASKS", "TASTE", "TASTY", "TATAR", "TATER", 
+"TATOO", "TATTY", "TAUNT", "TAUPE", "TAUTS", "TAWNY", "TAXED", 
+"TAXER", "TAXES", "TAXIS", "TAZZA", "TAZZE", "TEACH", "TEAKS", 
+"TEALS", "TEAMS", "TEARS", "TEARY", "TEASE", "TEATS", "TECHY", 
+"TECUM", "TEDDY", "TEEMS", "TEENS", "TEENY", "TEETH", "TELEX", 
+"TELLS", "TELLY", "TEMPI", "TEMPO", "TEMPS", "TEMPT", "TENCH", 
+"TENDS", "TENET", "TENON", "TENOR", "TENSE", "TENTH", "TENTS", 
+"TENTY", "TEPEE", "TEPID", "TERCE", "TERMS", "TERNE", "TERNS", 
+"TERRA", "TERRE", "TERRY", "TERSE", "TESLA", "TESTS", "TESTY", 
+"TETRA", "TEXAN", "TEXAS", "TEXTS", "THANE", "THANK", "THATS", 
+"THAWS", "THEFT", "THEIR", "THEME", "THENS", "THERE", "THERM", 
+"THESE", "THETA", "THEWS", "THEWY", "THICK", "THIEF", "THIGH", 
+"THINE", "THING", "THINK", "THINS", "THIRD", "THOLE", "THONG", 
+"THORN", "THORO", "THORP", "THOSE", "THOUS", "THREE", "THREW", 
+"THRIP", "THROB", "THROE", "THROW", "THRUM", "THUDS", "THUGS", 
+"THUMB", "THUMP", "THYME", "THYMI", "THYMY", "TIARA", "TIBER", 
+"TIBET", "TIBIA", "TICKS", "TIDAL", "TIDED", "TIDES", "TIERS", 
+"TIFFS", "TIGER", "TIGHT", "TIKES", "TIKIS", "TILDE", "TILED", 
+"TILER", "TILES", "TILLS", "TILTH", "TILTS", "TIMED", "TIMER", 
+"TIMES", "TIMID", "TINCT", "TINED", "TINES", "TINGE", "TINGS", 
+"TINNY", "TINTS", "TIPIS", "TIPPY", "TIPSY", "TIRED", "TIRES", 
+"TIROS", "TITAN", "TITER", "TITHE", "TITLE", "TITRE", "TITTY", 
+"TIZZY", "TOADS", "TOADY", "TOAST", "TODAY", "TODDY", "TOFFS", 
+"TOFFY", "TOFTS", "TOFUS", "TOGAE", "TOGAS", "TOILS", "TOKAY", 
+"TOKED", "TOKEN", "TOKES", "TOKYO", "TOLLS", "TOMBS", "TOMES", 
+"TOMMY", "TONAL", "TONED", "TONER", "TONES", "TONGS", "TONIC", 
+"TONNE", "TOOLS", "TOOTH", "TOOTS", "TOPAZ", "TOPED", "TOPER", 
+"TOPES", "TOPIC", "TOPOS", "TOQUE", "TORAH", "TORAS", "TORCH", 
+"TORCS", "TORES", "TORII", "TOROS", "TORSI", "TORSO", "TORTE", 
+"TORTS", "TORUS", "TOTAL", "TOTED", "TOTEM", "TOTER", "TOTES", 
+"TOUCH", "TOUGH", "TOURS", "TOUTS", "TOWED", "TOWEL", "TOWER", 
+"TOWNS", "TOWNY", "TOXIC", "TOXIN", "TOYED", "TOYER", "TOYON", 
+"TOYOS", "TRACE", "TRACK", "TRACT", "TRADE", "TRAIL", "TRAIN", 
+"TRAIT", "TRAMP", "TRAMS", "TRAPS", "TRAPT", "TRASH", "TRAVE", 
+"TRAWL", "TRAYS", "TREAD", "TREAT", "TREED", "TREES", "TREKS", 
+"TREND", "TRESS", "TRETS", "TREWS", "TREYS", "TRIAD", "TRIAL", 
+"TRIBE", "TRICE", "TRICK", "TRIED", "TRIER", "TRIES", "TRILL", 
+"TRIMS", "TRINE", "TRIOS", "TRIPE", "TRIPS", "TRITE", "TRODE", 
+"TROIS", "TROLL", "TROMP", "TROOP", "TROPE", "TROTH", "TROTS", 
+"TROUT", "TROVE", "TROWS", "TROYS", "TRUCE", "TRUCK", "TRUED", 
+"TRUER", "TRUES", "TRULL", "TRULY", "TRUMP", "TRUNK", "TRUSS", 
+"TRUST", "TRUTH", "TRYST", "TSARS", "TSKED", "TSUBA", "TUBAL", 
+"TUBAS", "TUBBY", "TUBED", "TUBER", "TUBES", "TUCKS", "TUDOR", 
+"TUFAS", "TUFFS", "TUFTS", "TUFTY", "TULES", "TULIP", "TULLE", 
+"TULSA", "TUMID", "TUMMY", "TUMOR", "TUMPS", "TUNAS", "TUNED", 
+"TUNER", "TUNES", "TUNIC", "TUNIS", "TUNNY", "TUQUE", "TURBO", 
+"TURDS", "TURFS", "TURFY", "TURKS", "TURNS", "TURPS", "TUSKS", 
+"TUTEE", "TUTOR", "TUTTI", "TUTUS", "TUXES", "TWAIN", "TWANG", 
+"TWATS", "TWEAK", "TWEED", "TWEEN", "TWEET", "TWERP", "TWICE", 
+"TWIER", "TWIGS", "TWILL", "TWINE", "TWINS", "TWINY", "TWIRL", 
+"TWIRP", "TWIST", "TWITS", "TWIXT", "TYING", "TYKES", "TYLER", 
+"TYPAL", "TYPED", "TYPES", "TYPIC", "TYPOS", "TYRED", "TYRES", 
+"TYROS", "TZARS", "UDDER", "UGLIS", "UKASE", "ULCER", "ULNAE", 
+"ULNAR", "ULNAS", "ULTRA", "ULVAS", "UMBEL", "UMBER", "UMBRA", 
+"UMIAK", "UMPED", "UNAPT", "UNARM", "UNARY", "UNBAR", "UNBID", 
+"UNBOX", "UNCAP", "UNCLE", "UNCOS", "UNCUT", "UNDER", "UNDID", 
+"UNDUE", "UNFED", "UNFIT", "UNFIX", "UNGOT", "UNHAT", "UNHIP", 
+"UNIFY", "UNION", "UNITE", "UNITS", "UNITY", "UNLAW", "UNLAY", 
+"UNLED", "UNLET", "UNLIT", "UNMAN", "UNMET", "UNPEG", "UNPEN", 
+"UNPIN", "UNRIG", "UNRIP", "UNSAY", "UNSET", "UNSEW", "UNSEX", 
+"UNTIE", "UNTIL", "UNWED", "UNWIT", "UNWON", "UNZIP", "UPEND", 
+"UPPED", "UPPER", "UPSET", "URBAN", "UREAL", "UREAS", "UREIC", 
+"URGED", "URGER", "URGES", "URINE", "URSAE", "USAGE", "USERS", 
+"USHER", "USING", "USUAL", "USURP", "USURY", "UTERI", "UTERO", 
+"UTILE", "UTTER", "UVEAL", "UVEAS", "UVULA", "VACUA", "VACUO", 
+"VADIS", "VAGAL", "VAGUE", "VAGUS", "VALES", "VALET", "VALID", 
+"VALOR", "VALSE", "VALUE", "VALVA", "VALVE", "VAMPS", "VANED", 
+"VANES", "VAPID", "VAPOR", "VASES", "VASTS", "VASTY", "VATIC", 
+"VAULT", "VAUNT", "VEALS", "VEALY", "VEDIC", "VEEPS", "VEERS", 
+"VEERY", "VEGAN", "VEGAS", "VEILS", "VEINS", "VEINY", "VELAR", 
+"VELDS", "VELDT", "VELUM", "VENAL", "VENDS", "VENIN", "VENOM", 
+"VENTS", "VENUE", "VENUS", "VERBS", "VERDE", "VERDI", "VERGE", 
+"VERSA", "VERSE", "VERSO", "VERVE", "VESTS", "VETCH", "VEXED", 
+"VEXER", "VEXES", "VIALS", "VIAND", "VIBES", "VICAR", "VICED", 
+"VICES", "VICHY", "VIDEO", "VIERS", "VIEWS", "VIEWY", "VIGIL", 
+"VIGOR", "VILER", "VILLA", "VILLI", "VINAL", "VINAS", "VINCA", 
+"VINED", "VINES", "VINIC", "VINOS", "VINYL", "VIOLA", "VIOLS", 
+"VIPER", "VIRAL", "VIREO", "VIRGO", "VIRID", "VIRTU", "VIRUS", 
+"VISAS", "VISED", "VISES", "VISIT", "VISOR", "VISTA", "VITAE", 
+"VITAL", "VITRO", "VIVID", "VIVRE", "VIXEN", "VIZIR", "VIZOR", 
+"VOCAL", "VOCES", "VODKA", "VOGUE", "VOICE", "VOIDS", "VOILA", 
+"VOILE", "VOLES", "VOLGA", "VOLTA", "VOLTS", "VOMIT", "VOTED", 
+"VOTER", "VOTES", "VOUCH", "VOWED", "VOWEL", "VOWER", "VROOM", 
+"VROUW", "VROWS", "VUGGS", "VUGGY", "VUGHS", "VULGO", "VULVA", 
+"VYING", "WACKS", "WACKY", "WADDY", "WADED", "WADER", "WADES", 
+"WADIS", "WAFER", "WAFTS", "WAGED", "WAGER", "WAGES", "WAGON", 
+"WAHOO", "WAIFS", "WAILS", "WAINS", "WAIST", "WAITS", "WAIVE", 
+"WAKED", "WAKEN", "WAKER", "WAKES", "WALED", "WALER", "WALES", 
+"WALKS", "WALLA", "WALLS", "WALLY", "WALTZ", "WANDS", "WANED", 
+"WANES", "WANLY", "WANTS", "WARDS", "WARED", "WARES", "WARKS", 
+"WARMS", "WARNS", "WARPS", "WARTS", "WARTY", "WASHY", "WASPS", 
+"WASPY", "WASTE", "WASTS", "WATCH", "WATER", "WATTS", "WAUGH", 
+"WAULS", "WAVED", "WAVER", "WAVES", "WAVEY", "WAWLS", "WAXED", 
+"WAXEN", "WAXER", "WAXES", "WAYNE", "WE'RE", "WE'VE", "WEALD", 
+"WEALS", "WEANS", "WEARS", "WEARY", "WEAVE", "WEBBY", "WEBER", 
+"WEDGE", "WEDGY", "WEEDS", "WEEDY", "WEEKS", "WEENS", "WEENY", 
+"WEEPS", "WEEPY", "WEEST", "WEFTS", "WEIGH", "WEIRD", "WEIRS", 
+"WELCH", "WELDS", "WELLS", "WELSH", "WELTS", "WENCH", "WENDS", 
+"WENNY", "WESTS", "WETLY", "WHACK", "WHALE", "WHAMS", "WHANG", 
+"WHAPS", "WHARF", "WHATS", "WHEAL", "WHEAT", "WHEEL", "WHELK", 
+"WHELM", "WHELP", "WHENS", "WHERE", "WHETS", "WHEWS", "WHEYS", 
+"WHICH", "WHIFF", "WHIGS", "WHILE", "WHIMS", "WHINE", "WHINY", 
+"WHIPS", "WHIPT", "WHIRL", "WHIRR", "WHIRS", "WHISH", "WHISK", 
+"WHIST", "WHITE", "WHITS", "WHITY", "WHIZZ", "WHOLE", "WHOMP", 
+"WHOOP", "WHOPS", "WHORE", "WHORL", "WHOSE", "WHOSO", "WHUMP", 
+"WICKS", "WIDEN", "WIDER", "WIDES", "WIDOW", "WIDTH", "WIELD", 
+"WIERD", "WIFED", "WIFES", "WIGHT", "WILCO", "WILDS", "WILED", 
+"WILES", "WILLS", "WILLY", "WILTS", "WINCE", "WINCH", "WINDS", 
+"WINDY", "WINED", "WINES", "WINEY", "WINGS", "WINGY", "WINKS", 
+"WINOS", "WIPED", "WIPER", "WIPES", "WIRED", "WIRER", "WIRES", 
+"WISED", "WISER", "WISES", "WISHY", "WISPS", "WISPY", "WISTS", 
+"WITCH", "WITHE", "WITHY", "WITTY", "WIVED", "WIVER", "WIVES", 
+"WIZEN", "WIZES", "WOADS", "WOALD", "WOFUL", "WOKEN", "WOLDS", 
+"WOLFS", "WOMAN", "WOMBS", "WOMBY", "WOMEN", "WONKY", "WONTS", 
+"WOODS", "WOODY", "WOOED", "WOOER", "WOOFS", "WOOLS", "WOOLY", 
+"WOOPS", "WOOSH", "WOOZY", "WORDS", "WORDY", "WORKS", "WORLD", 
+"WORMS", "WORMY", "WORRY", "WORSE", "WORST", "WORTH", "WORTS", 
+"WOULD", "WOUND", "WOVEN", "WOWED", "WRACK", "WRANG", "WRAPS", 
+"WRAPT", "WRATH", "WREAK", "WRECK", "WRENS", "WREST", "WRIED", 
+"WRIER", "WRIES", "WRING", "WRIST", "WRITE", "WRITS", "WRONG", 
+"WROTE", "WROTH", "WRUNG", "WRYER", "WRYLY", "WURST", "XEBEC", 
+"XENIA", "XENIC", "XENON", "XERIC", "XEROX", "XVIII", "XXIII", 
+"XYLAN", "XYLEM", "XYSTS", "YACHT", "YACKS", "YAHOO", "YAMEN", 
+"YAMUN", "YANKS", "YARDS", "YARER", "YARNS", "YAWED", "YAWLS", 
+"YAWNS", "YAWPS", "YEARN", "YEARS", "YEAST", "YEGGS", "YELLS", 
+"YELPS", "YEMEN", "YENTA", "YERBA", "YESES", "YETIS", "YIELD", 
+"YIPES", "YODEL", "YODHS", "YODLE", "YOGAS", "YOGEE", "YOGHS", 
+"YOGIC", "YOGIN", "YOGIS", "YOKED", "YOKEL", "YOKES", "YOLKS", 
+"YOLKY", "YONIS", "YORES", "YOU'D", "YOUNG", "YOURN", "YOURS", 
+"YOUSE", "YOUTH", "YOWED", "YOWIE", "YOWLS", "YUCCA", "YUKON", 
+"YULES", "YUMMY", "YURTS", "ZAIRE", "ZARFS", "ZAZEN", "ZEALS", 
+"ZEBRA", "ZEBUS", "ZEINS", "ZEISS", "ZENDO", "ZEROS", "ZESTS", 
+"ZESTY", "ZETAS", "ZILCH", "ZINCS", "ZINCY", "ZINGS", "ZINGY", 
+"ZINKY", "ZIPPY", "ZITIS", "ZLOTY", "ZOEAS", "ZOMBI", "ZONAL", 
+"ZONED", "ZONER", "ZONES", "ZOOID", "ZOOKS", "ZOOMS", "ZOONS", 
+"ZOWIE", "ZULUS", "ZUNIS"
+		};
+		int wordArrLength = 6919; 
+		int wordSize = 5;
+		int total = 15;	
+	
+	// Place a word in the string total times, 
+	// making sure it doesn't overwrite another 
+	// word or get placed right next to it
+	int place;
+	int takenWords[total];
+	bool valid;
+	char word[wordSize];
+	bool pickedWord = FALSE;
+	int left = total;
+	char correctWord[wordSize];
+	while(left>0){
+		valid = TRUE;
+		place = rand()%(408-wordSize);
+		for(i=place-1; i<place+wordSize+1; i++){
+			if(bigString[i] > 64 && bigString[i] < 91){
+				valid = FALSE;
+			}
+		}
+		if(valid){
+			int wordLoc = rand()%wordArrLength;
+			for(i=0;i<=total-left;i++)
+			{
+				if(wordLoc == takenWords[i])
+					valid = FALSE;
+			}
+			if(valid){
+				for(i=0;i<wordSize;i++)
+					word[i] = wordArr[wordLoc][i];
+				for(i=place; i<place+sizeof(word); i++){
+					bigString[i] = word[i-place];
+					// Pick the first word to be correct, then indicate that we picked a word
+					if(!pickedWord)
+						correctWord[i-place] = word[i-place];
+				}
+			pickedWord = TRUE;
+			left--;
+			}
+		}
+	}
+	
+	
+	// Create and fill a boolean array to keep track of which brackets were used
+	bool usedBrackets[408];
+	for(i=0; i<408; i++){
+		usedBrackets[i] = TRUE;
+	}
+	
+	
+	// Print the hex and the filled bigString
+	char temp[12];	
+	int current = 0;
+	for(i=5; i<22; i++){
+		// Print left side
+		int j;
+		for(j=0; j<12; j++){
+			temp[j] = bigString[j+current];
+		}
+		printChoicesLeft(arbHex,temp,i);
+		current = current + 12;
+		arbHex = arbHex + 12;
+	}
+	
+	for(i=5; i<22; i++){
+		// Print right side
+		int j;
+		for(j=0; j<12; j++){
+			temp[j] = bigString[j+current];
+		}
+		printChoicesRight(arbHex,temp,i);
+		current = current + 12;
+		arbHex = arbHex + 12;
+	}
+	
+	
+	mvprintw(21,40,"%c",'>');
+	move(5,7);
+	char currentChar[12]; // Max length chrrentChar could be (total possible length of a bracket trick)
+	currentChar[0] = mvinch(5,7);
+	
+	int y,x,origy,origx,starty,startx;	// values that keep track of current yx locations, and original ones
+	int wordLength;			// How long a word is
+	int charStart;			// where character counting starts for brackets
+	char keyPress;			// key pressed by user
+	int charCounter;		// counts currentChar - used for incrementing currentChar to print or change it
+	int bracketLength;		// length of a bracket trick
+	char endBracket;		// the end bracket that corresponds to currentChar[0];
+	int bracketTricks=0;	// Total number of bracket tricks used
+	bool needsClearing = FALSE;	// Whether or not highlights need to be purged
+	bool needsClearingMultiLine = FALSE; 	// Whether or not a multi line highlight needs to be purged
+	char output[12];		// Used for side terminal output
+	int allowances = 4;
+	
+	while(1){
+		getyx(stdscr,y,x);
+		
+		// Get allowances left
+		mvprintw(1,0,"                              ");
+		mvprintw(3,0,"                              ");
+		switch(allowances){
+			case 1: mvprintw(3,0,"1 ATTEMPT(S) LEFT: *");
+					attron(A_BLINK);
+					mvprintw(1,0,"!!! WARNING: LOCKOUT IMNINENT !!!");
+					attroff(A_BLINK);
+					attron(A_BOLD);
+					break;
+			case 2: mvprintw(3,0,"2 ATTEMPT(S) LEFT: * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 3: mvprintw(3,0,"3 ATTEMPT(S) LEFT: * * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 4: mvprintw(3,0,"4 ATTEMPT(S) LEFT: * * * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 0: clear();
+					mvprintw(10,20,"TERMINAL LOCKED");
+					mvprintw(12,12,"PLEASE CONTACT AN ADMINISTRATOR");
+					refresh();
+					getch();
+					exit(0);
+		}
+		refresh();
+		move(y,x);
+		// Check if highlights need to be purged
+		if(needsClearing){
+			charCounter = 0;
+			while(charCounter!=bracketLength+1){
+				currentChar[charCounter] = mvinch(origy,charStart+charCounter);
+				mvprintw(origy,charStart+charCounter,"%c",(int)currentChar[charCounter]);
+				charCounter++;
+			}
+			mvprintw(21,41,"            ",currentChar[0]);
+			needsClearing = FALSE;
+			move(y,origx);
+		}
+		if(needsClearingMultiLine){
+			charCounter = 0;
+			int timesDown = 0;
+			while(charCounter!=wordLength){
+				currentChar[charCounter] = mvinch(starty,startx);
+				mvprintw(starty,startx,"%c",currentChar[charCounter]);
+				charCounter++;
+				startx++;
+				if(startx==19 || startx==39){
+					startx-=12;
+					starty++;
+				}
+			}
+			mvprintw(21,41,"            ",currentChar[0]);
+			needsClearingMultiLine = FALSE;
+			move(y,x);
+		}
+		// Clear the char array
+		for(i=0;i<12;i++)
+			currentChar[i]=' ';
+		currentChar[0] = mvinch(y,x);
+		// Set the new y and x to origy and origx
+		origy = y;
+		origx = x;
+		// Check for bracket tricks
+		if((currentChar[0]=='(' || currentChar[0]=='<' || currentChar[0]=='[' || currentChar[0]=='{') && usedBrackets[getCharLoc(y,x)] && bracketTricks<total){
+			charStart = x;
+			bracketLength=0;
+			while(x!=18 && x!=38){
+				x++;
+				endBracket = mvinch(y,x);
+				bracketLength++;
+			if((endBracket == ')' && currentChar[0]=='(') || 
+				(endBracket == '>' && currentChar[0]=='<') || 
+				(endBracket == ']' && currentChar[0]=='[') || 
+				(endBracket == '}' && currentChar[0]=='{')){
+					// Reprint the bracket trick with highlight
+					attron(A_STANDOUT);
+					charCounter = 0;
+					while(TRUE){
+						currentChar[charCounter] = mvinch(y,charStart+charCounter);
+						mvprintw(y,charStart+charCounter,"%c",currentChar[charCounter]);
+						if(currentChar[charCounter] == endBracket)
+							break;
+						charCounter++;
+					}
+					attroff(A_STANDOUT);
+					// Print the bracket trick to output
+					attron(A_BOLD);
+					for(i=0;i<=charCounter;i++)
+						mvprintw(21,41+i,"%c",(int)currentChar[i]);
+					// Notify that highlighting will need to be cleared next move
+					needsClearing = TRUE;
+				}
+			}
+			if(!((endBracket == ')' && currentChar[0]=='(') || 
+				(endBracket == '>' && currentChar[0]=='<') || 
+				(endBracket == ']' && currentChar[0]=='[') || 
+				(endBracket == '}' && currentChar[0]=='{'))){
+				mvprintw(21,41,"%c",currentChar[0]);
+			}
+		}
+		// Check for letters
+		else if(currentChar[0]>64 && currentChar[0]<91){
+			// Check for letter behind the current location
+			int tempx = x;
+			int tempy = y;
+			while(bigString[getCharLoc(tempy,tempx)-1]>64 && bigString[getCharLoc(tempy,tempx)-1]<91){
+				currentChar[0] = bigString[getCharLoc(tempy,tempx)];
+				tempx--;
+				if(tempx==6 || tempx==26){
+					tempx+=12;
+					tempy--;
+				}
+			}
+			startx = tempx;
+			starty = tempy;	// We'll need the location of the first char for cleaning
+			// And start there
+			charCounter = 0;
+			while(bigString[getCharLoc(tempy,tempx)+1]>64 && bigString[getCharLoc(tempy,tempx)+1]<91){
+				currentChar[charCounter] = bigString[getCharLoc(tempy,tempx)];
+				charCounter++;
+				tempx++;
+				if(tempx==19 || tempx==39){
+					tempx-=12;
+					tempy++;
+				}
+			}
+			// Now currentChar is the String, and charCounter+1 is the length
+			wordLength = charCounter+1;
+			// Reprint the word with highlight
+			tempx = startx;
+			tempy = starty;
+			attron(A_STANDOUT);
+			charCounter = 0;
+			while(charCounter!=wordLength){
+				currentChar[charCounter] = mvinch(tempy,tempx);
+				mvprintw(tempy,tempx,"%c",currentChar[charCounter]);
+				charCounter++;
+				tempx++;
+				if(tempx==19 || tempx==39){
+					tempx-=12;
+					tempy++;
+				}
+			}
+					attroff(A_STANDOUT);
+					// Print the word to output
+					attron(A_BOLD);
+					for(i=0;i<charCounter;i++)
+						mvprintw(21,41+i,"%c",(int)currentChar[i]);
+					// Notify that highlighting will need to be cleared next move
+					needsClearingMultiLine = TRUE;
+		}
+		// Nothing was found, print current char
+		else
+			mvprintw(21,41,"%c",currentChar[0]);
+		
+		move(origy,origx);
+		refresh();
+		
+		keyPress = getch();
+		getyx(stdscr,y,x);
+		if(keyPress=='w'){
+			if(y>5)
+				move(y-1,x);
+		}
+		if(keyPress=='s'){
+			if(y<21)
+				move(y+1,x);
+		}
+		if(keyPress=='a'){
+			if(x>7){
+				if(x==27)
+					move(y,18);
+				else
+					move(y,x-1);
+			}
+				
+		}
+		if(keyPress=='d'){
+			if(x<38){
+				if(x==18)
+					move(y,27);
+				else
+					move(y,x+1);
+			}
+		}
+		if(keyPress==3)		// Ctrl-C
+			exit(0);
+		if(keyPress=='\n'){	// Enter
+			mvprintw(17,40,"              ");
+			mvprintw(18,40,"              ");
+			mvprintw(19,40,"              ");
+			// If the char is a left bracket
+			if(((currentChar[0]=='(') && currentCharContains(currentChar,')')) || 
+			   (currentChar[0]=='<' && currentCharContains(currentChar,'>')) || 
+			   (currentChar[0]=='[' && currentCharContains(currentChar,']')) || 
+			   (currentChar[0]=='{' && currentCharContains(currentChar,'}'))){
+				// Set the selected bracket as used
+				usedBrackets[getCharLoc(y,x)] = FALSE;
+				// Increment total bracket tricks used
+				bracketTricks++;
+				if(rand()%5==0){
+					// 20% chance of allowance replenish
+					sprintf(output,"Allowance   ");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"replenished.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					allowances = 4;
+				}
+				else{
+					// Remove a dud
+					int tempx,tempy;
+					pickagain:do{
+						if(rand()%2==0)
+						tempx = (rand()%12)+7;
+					else
+						tempx = (rand()%12)+27;
+					tempy = (rand()%17)+5;
+					} while(!(bigString[getCharLoc(tempy,tempx)]>64 && bigString[getCharLoc(tempy,tempx)]<91));
+					while(bigString[getCharLoc(tempy,tempx)-1]>64 && bigString[getCharLoc(tempy,tempx)-1]<91){
+						tempx--;
+						if(tempx==6 || tempx==26){
+							tempx+=12;
+							tempy--;
+						}
+					}
+
+					startx = tempx;
+					starty = tempy;
+					
+					charCounter = 0;
+					while(bigString[getCharLoc(tempy,tempx)+1]>64 && bigString[getCharLoc(tempy,tempx)+1]<91){
+						currentChar[charCounter] = bigString[getCharLoc(tempy,tempx)];
+						charCounter++;
+						tempx++;
+						if(tempx==19 || tempx==39){
+							tempx-=12;
+							tempy++;
+						}
+					}
+					// Check if currentChar = correctWord
+					bool allCorrect=TRUE;
+					for(i=0;i<wordSize;i++){
+						if(currentChar[i]!=correctWord[i])
+							allCorrect = FALSE;
+					}
+					if(allCorrect)
+						goto pickagain;
+					
+					tempx = startx;
+					tempy = starty;
+					while(bigString[getCharLoc(tempy,tempx)]>64 && bigString[getCharLoc(tempy,tempx)]<91){
+						mvprintw(tempy,tempx,"%c",'.');
+						bigString[getCharLoc(tempy,tempx)] = '.';
+						tempx++;
+						if(tempx==19 || tempx==39){
+							tempx-=12;
+							tempy++;
+						}
+					}
+					
+					sprintf(output,"Dud removed.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+			
+				}
+			}
+			// Else compare it to the correct word
+			else{
+				int rightLetters = wordSize;
+				for(i=0;i<wordSize; i++){
+					if(currentChar[i]!=correctWord[i])
+						rightLetters--;
+				}
+				if(rightLetters==wordSize){
+					mvprintw(15,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(15,41+i,"%c",currentChar[i]);
+					}
+					sprintf(output,"Exact match!");
+					mvprintw(16,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(16,41+i,"%c",output[i]);
+					}
+					sprintf(output,"Please wait ");
+					mvprintw(17,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(17,41+i,"%c",output[i]);
+					}
+					sprintf(output,"while system");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"is accessed.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					refresh();
+					usleep(3000000);
+					endwin();
+					exit(0);
+					
+				}
+				else{
+					mvprintw(17,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(17,41+i,"%c",currentChar[i]);
+					}
+					sprintf(output,"Entry denied");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"%d/%d correct.",rightLetters,wordSize);
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					allowances--;
+				}
+			}
+			move(y,x);
+		} 	
+		refresh();
+		
+	}
+
+	endwin();
+}
+
+
+int getCharLoc(int y, int x){
+	// Left side
+	if(x<19)
+		return 12*(y-5)+(x-7);
+	// Right side
+	else
+		return 12*(y-5)+(x-27+204);
+}
+
+int main(){
+
+	srand ( (unsigned)time(NULL) );
+	initscr();
+	noecho();
+	refresh();
+	attron(A_BOLD);
+	nodelay(stdscr, TRUE);
+	if(has_colors() == TRUE){
+		// Colors
+		start_color();
+		init_pair(1,COLOR_GREEN,COLOR_BLACK);
+		attron(COLOR_PAIR(1));
+	}
+
+	intro();
+	pass();
+
+	
+	return 0;
+}

+ 1661 - 0
src/FalloutTerminalWin.c

@@ -0,0 +1,1661 @@
+#include <curses.h>
+#include <Windows.h>
+#include <time.h>
+
+// Sleep is in Windows.h, PDCurses is in curses.h.  
+// Win32 PDcurses build MUST use Sleep, not usleep.
+// usleep/1000 = Sleep
+
+// Windows includes booleans in Windows.h.
+// Unix requires stdbool.h, which names them bools.
+
+boolean slowPrint(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i,"%c",arr[i]);
+		move(line, i+1);
+		refresh();
+		if(kbhit()){
+			return TRUE;
+		}
+		Sleep(20);
+	}
+	return FALSE;
+}
+
+boolean slowType(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i+1,"%c",arr[i]);
+		move(line, i+2);
+		refresh();
+		if(kbhit()){
+			return TRUE;
+		}
+		Sleep(70);
+	}
+	return FALSE;
+}
+
+void passPrint(char arr[], int size, int line){
+	int i;
+	for(i=0; i<size; i++){	
+		mvprintw(line,i,"%c",arr[i]);
+		move(line, i+1);
+		refresh();
+		Sleep(20);
+	}
+}
+
+int kbhit(){
+    int ch = getch();
+
+    if (ch != ERR) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+void printChoicesLeft(int hex, char arr[], int line){
+	mvprintw(line,0,"0x%X", hex);
+	int i;
+	for(i=0; i<12; i++)
+		mvprintw(line,7+i,"%c",arr[i]);
+	move(line, 20);
+	refresh();
+	Sleep(30);
+}
+
+void printChoicesRight(int hex, char arr[], int line){
+	mvprintw(line,20,"0x%X", hex);
+	int i;
+	for(i=0; i<12; i++)
+		mvprintw(line,27+i,"%c",arr[i]);
+	move(line, 40);
+	refresh();
+	Sleep(30);
+}
+
+int intro(){
+	Sleep(250);
+	char arr[] = "WELCOME TO ROBCO INDUSTRIES (TM) TERMLINK";
+	
+	boolean stop = slowPrint(arr,sizeof(arr), 0);
+	if(stop){return;}
+	move(1, 0);
+	refresh();
+	Sleep(30);
+	mvprintw(2,0,"%c", '>');
+	move(2,1);
+	refresh();
+	Sleep(1500);
+
+	char arr2[] = "SET TERMINAL/INQUIRE";
+	stop = slowType(arr2,sizeof(arr2), 2);
+	if(stop){return;}
+	
+
+	char arr3[] = "RIT-V300";
+	stop = slowPrint(arr3,sizeof(arr3), 4);
+	if(stop){return;}
+
+	mvprintw(6,0,"%c", '>');
+	refresh();
+	Sleep(1500);
+	char arr4[] = "SET FILE/PROTECTION=OWNER:RWED ACCOUNTS.F";
+	stop = slowType(arr4,sizeof(arr4),6);
+	if(stop){return;}
+	
+	mvprintw(7,0,"%c", '>');
+	refresh();
+	Sleep(1500);
+	char arr5[] = "SET HALT RESTART/MAINT";
+	stop = slowType(arr5,sizeof(arr5),7);
+	if(stop){return;}
+	
+	char arr6[] = "Initializing Robco Industries(TM) Boot Agent v2.3.0";
+	stop = slowPrint(arr6,sizeof(arr6),9);
+	if(stop){return;}
+
+	char arr7[] = "RBIOS-4.02.08.00 53EE5.E7.E8";
+	stop = slowPrint(arr7,sizeof(arr7),10);
+	if(stop){return;}
+
+	char arr8[] = "Copyright 2201-22-3 Robco Ind.";
+	stop = slowPrint(arr8,sizeof(arr8),11);
+	if(stop){return;}
+
+	char arr9[] = "Uppermem: 64 KB";
+	stop = slowPrint(arr9,sizeof(arr9),12);
+	if(stop){return;}
+
+	char arr10[] = "Root (5A8)";
+	stop = slowPrint(arr10,sizeof(arr10),13);
+	if(stop){return;}
+
+	char arr11[] = "Maintenance Mode";
+	stop = slowPrint(arr11,sizeof(arr11),14);
+	if(stop){return;}
+
+	mvprintw(16,0,"%c",'>');
+	refresh();
+	Sleep(1500);
+	char arr12[] = "RUN DEBUG/ACCOUNTS.F";
+	stop = slowType(arr12,sizeof(arr12),16);
+	if(stop){return;}
+	move(16,0);
+	refresh();
+	Sleep(50);
+}
+
+
+boolean currentCharContains(char arr[],char c){
+	int i;
+	for(i=0; i<12; i++)
+		if(arr[i]==c)
+			return TRUE;
+	return FALSE;
+}
+
+
+void pass(){
+	// Start a new screen where nodelay is false
+	endwin();
+	initscr();
+	noecho();
+	refresh();
+	attron(A_BOLD);
+	nodelay(stdscr, FALSE);
+	if(has_colors() == TRUE){
+		// Colors
+		start_color();
+		init_pair(1,COLOR_GREEN,COLOR_BLACK);
+		attron(COLOR_PAIR(1));
+	}
+	
+	// Intro text
+	char prompt[] = "ROBCO INDUSTRIES (TM) TERMLINK PROTOCOL";
+	passPrint(prompt,sizeof(prompt),0);
+	
+	char prompt2[] = "ENTER PASSWORD NOW";
+	passPrint(prompt2, sizeof(prompt2), 1);
+	char prompt3[] = "4 ATTEMPT(S) LEFT: * * * *";
+	passPrint(prompt3, sizeof(prompt3), 3);
+	
+	// Generate the hex values on the left sides
+	int arbHex;
+	arbHex = (rand() % 200) + 63744;
+	
+	// Generate the string to hold the bracket tricks and words
+	char bigString [408];
+	char randValues[] = "!@#$%^*()_-=+\\|/[]{}?\"\':;,.<>";
+	int i;
+	for(i=0; i<408; i++){
+		// Fill bigString with random values
+		bigString[i] = randValues[rand()%29];
+	}
+	
+	// Words from http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt
+		char *wordArr[] = {
+"AAHED", "ABACI", "ABACK", "ABAFT", "ABASE", "ABASH", "ABATE", 
+"ABBES", "ABBEY", "ABBOT", "ABEAM", "ABETS", "ABHOR", "ABIDE", 
+"ABLER", "ABLES", "ABNER", "ABODE", "ABOIL", "ABORT", "ABOUT", 
+"ABOVE", "ABUSE", "ABUTS", "ABUZZ", "ABYES", "ABYSM", "ABYSS", 
+"ACCTS", "ACERB", "ACHED", "ACHES", "ACHOO", "ACIDS", "ACIDY", 
+"ACING", "ACMES", "ACNED", "ACNES", "ACOIN", "ACORN", "ACRED", 
+"ACRES", "ACRID", "ACTED", "ACTIN", "ACTOR", "ACUTE", "ADAGE", 
+"ADAMS", "ADAPT", "ADDAX", "ADDED", "ADDER", "ADDLE", "ADEPT", 
+"ADIEU", "ADIOS", "ADITS", "ADMAN", "ADMEN", "ADMIN", "ADMIT", 
+"ADMIX", "ADOBE", "ADOLF", "ADOPT", "ADORE", "ADORN", "ADOZE", 
+"ADULT", "ADYTA", "ADZES", "AEGIS", "AEONS", "AERIE", "AESOP", 
+"AFARS", "AFFIX", "AFIRE", "AFOOT", "AFORE", "AFOUL", "AFRIT", 
+"AFROS", "AFTER", "AGAIN", "AGAMA", "AGAPE", "AGARS", "AGATE", 
+"AGAVE", "AGAZE", "AGENT", "AGERS", "AGGIE", "AGHAS", "AGILE", 
+"AGING", "AGIST", "AGLEE", "AGLET", "AGLEY", "AGLOW", "AGONE", 
+"AGONS", "AGONY", "AGORA", "AGREE", "AGRIC", "AGUES", "AHEAD", 
+"AHEMS", "AHOLD", "AIDED", "AIDER", "AIDES", "AILED", "AIMED", 
+"AIMER", "AINUS", "AIRED", "AIRER", "AISLE", "AITCH", "AJIVA", 
+"AKRON", "ALACK", "ALAMO", "ALANS", "ALARM", "ALARY", "ALATE", 
+"ALBUM", "ALDER", "ALECS", "ALEFS", "ALEPH", "ALERT", "ALFAS", 
+"ALGAE", "ALGAL", "ALGAS", "ALGID", "ALGIN", "ALIAS", "ALIBI", 
+"ALICE", "ALIEN", "ALIGN", "ALIKE", "ALINE", "ALIVE", "ALKYD", 
+"ALKYL", "ALLAH", "ALLAY", "ALLEN", "ALLER", "ALLEY", "ALLOT", 
+"ALLOW", "ALLOY", "ALOES", "ALOFT", "ALOHA", "ALONE", "ALONG", 
+"ALOOF", "ALOUD", "ALPHA", "ALTAR", "ALTER", "ALTHO", "ALTOS", 
+"ALUMS", "ALWAY", "AMAHS", "AMAIN", "AMASS", "AMAZE", "AMBER", 
+"AMBLE", "AMEBA", "AMEER", "AMEND", "AMENS", "AMENT", "AMIAS", 
+"AMICE", "AMICI", "AMIDE", "AMIDS", "AMIES", "AMIGO", "AMINO", 
+"AMIRE", "AMIRS", "AMISH", "AMISS", "AMITY", "AMMOS", "AMOKS", 
+"AMOLE", "AMONG", "AMORT", "AMOUR", "AMOVE", "AMPLE", "AMPLY", 
+"AMPUL", "AMUCK", "AMUSE", "AMYLS", "ANDES", "ANDRE", "ANEAR", 
+"ANELE", "ANENT", "ANGAS", "ANGEL", "ANGER", "ANGLE", "ANGLO", 
+"ANGRY", "ANGST", "ANGUS", "ANILE", "ANILS", "ANIMA", "ANIMO", 
+"ANION", "ANISE", "ANKHS", "ANKLE", "ANKUS", "ANNAL", "ANNAS", 
+"ANNAT", "ANNEX", "ANNIE", "ANNOY", "ANNUL", "ANNUM", "ANODE", 
+"ANOIA", "ANOLE", "ANOMY", "ANTED", "ANTES", "ANTIC", "ANTIS", 
+"ANTRA", "ANTRE", "ANVIL", "AORTA", "AOUAD", "APACE", "APART", 
+"APEAK", "APEEK", "APERS", "APERY", "APHID", "APHIS", "APIAN", 
+"APING", "APISH", "APIUM", "APNEA", "APORT", "APPAL", "APPLE", 
+"APPLY", "APRES", "APRIL", "APRON", "APSES", "APTER", "APTLY", 
+"AQUAE", "AQUAS", "ARABS", "ARAKS", "ARBOR", "ARCED", "ARCUS", 
+"ARDOR", "AREAL", "AREAS", "ARENA", "ARETE", "ARGAL", "ARGLE", 
+"ARGON", "ARGOT", "ARGUE", "ARGUS", "ARHAT", "ARIAS", "ARIEL", 
+"ARIES", "ARILS", "ARISE", "ARITH", "ARMED", "ARMER", "ARMOR", 
+"AROMA", "AROSE", "ARRAS", "ARRAY", "ARROW", "ARSES", "ARSIS", 
+"ARSON", "ARUMS", "ARYAN", "ARYLS", "ASCII", "ASCOT", "ASHED", 
+"ASHEN", "ASHES", "ASIAN", "ASIDE", "ASKED", "ASKER", "ASKEW", 
+"ASPCA", "ASPEN", "ASPER", "ASPIC", "ASSAM", "ASSAY", "ASSES", 
+"ASSET", "ASSOC", "ASTER", "ASTIR", "ASYLA", "ASYNC", "ATAXY", 
+"ATILT", "ATLAS", "ATMAN", "ATMAS", "ATOLL", "ATOMS", "ATOMY", 
+"ATONE", "ATRIA", "ATRIP", "ATTAR", "ATTIC", "AUDAD", "AUDIO", 
+"AUDIT", "AUGER", "AUGHT", "AUGUR", "AUNTS", "AUNTY", "AURAE", 
+"AURAL", "AURAS", "AURIC", "AURUM", "AUTOS", "AUTRE", "AUXIN", 
+"AVAIL", "AVAST", "AVERS", "AVERT", "AVIAN", "AVION", "AVISO", 
+"AVOID", "AVOWS", "AWACS", "AWAIT", "AWAKE", "AWARD", "AWARE", 
+"AWASH", "AWFUL", "AWING", "AWNED", "AWOKE", "AWOLS", "AXELS", 
+"AXIAL", "AXILS", "AXING", "AXIOM", "AXLED", "AXLES", "AXMAN", 
+"AXMEN", "AXONE", "AXONS", "AYAHS", "AZIDE", "AZIDO", "AZINE", 
+"AZOIC", "AZOLE", "AZONS", "AZOTE", "AZOTH", "AZTEC", "AZURE", 
+"BAAED", "BAALS", "BABAS", "BABEL", "BABES", "BABKA", "BABOO", 
+"BABUL", "BABUS", "BACCA", "BACKS", "BACON", "BADDY", "BADGE", 
+"BADLY", "BAGEL", "BAGGY", "BAHTS", "BAILS", "BAIRN", "BAITS", 
+"BAIZE", "BAKED", "BAKER", "BAKES", "BALDS", "BALED", "BALER", 
+"BALES", "BALKS", "BALKY", "BALLO", "BALLS", "BALLY", "BALMS", 
+"BALMY", "BALSA", "BANAL", "BANCO", "BANDS", "BANDY", "BANED", 
+"BANES", "BANGS", "BANJO", "BANKS", "BANNS", "BANTU", "BARBS", 
+"BARDS", "BARED", "BARER", "BARES", "BARFS", "BARGE", "BARIC", 
+"BARKS", "BARKY", "BARMY", "BARNS", "BARNY", "BARON", "BARRE", 
+"BASAL", "BASED", "BASER", "BASES", "BASIC", "BASIL", "BASIN", 
+"BASIS", "BASKS", "BASSI", "BASSO", "BASSY", "BASTE", "BASTS", 
+"BATCH", "BATED", "BATES", "BATHE", "BATHS", "BATIK", "BATON", 
+"BATTS", "BATTY", "BAUDS", "BAULK", "BAWDS", "BAWDY", "BAWLS", 
+"BAYED", "BAYOU", "BAZAR", "BEACH", "BEADS", "BEADY", "BEAKS", 
+"BEAKY", "BEAMS", "BEAMY", "BEANO", "BEANS", "BEARD", "BEARS", 
+"BEAST", "BEATS", "BEAUS", "BEAUT", "BEAUX", "BEBOP", "BECKS", 
+"BEDEW", "BEDIM", "BEECH", "BEEFS", "BEEFY", "BEEPS", "BEERS", 
+"BEERY", "BEETS", "BEFIT", "BEFOG", "BEGAN", "BEGAT", "BEGET", 
+"BEGIN", "BEGOT", "BEGUM", "BEGUN", "BEIGE", "BEIGY", "BEING", 
+"BELAY", "BELCH", "BELIE", "BELLE", "BELLI", "BELLO", "BELLS", 
+"BELLY", "BELOW", "BELTS", "BEMAS", "BEMIX", "BENCH", "BENDS", 
+"BENDY", "BENES", "BENIN", "BENNY", "BENTS", "BERET", "BERGH", 
+"BERGS", "BERMS", "BERRY", "BERTH", "BERYL", "BESET", "BESOM", 
+"BESOT", "BESTS", "BETAS", "BETEL", "BETES", "BETHS", "BETTA", 
+"BETTY", "BEVEL", "BEWIG", "BEZEL", "BHANG", "BIALY", "BIBBS", 
+"BIBLE", "BIDDY", "BIDED", "BIDER", "BIDES", "BIDET", "BIENS", 
+"BIERS", "BIFFS", "BIFFY", "BIFID", "BIGHT", "BIGLY", "BIGOT", 
+"BIJOU", "BIKED", "BIKER", "BIKES", "BILBO", "BILES", "BILGE", 
+"BILGY", "BILKS", "BILLS", "BILLY", "BIMAH", "BINAL", "BINDS", 
+"BINES", "BINGE", "BINGO", "BINTS", "BIOME", "BIONT", "BIOTA", 
+"BIPED", "BIPOD", "BIRCH", "BIRDS", "BIRTH", "BISON", "BITCH", 
+"BITER", "BITES", "BITSY", "BITTE", "BITTS", "BITTY", "BLABS", 
+"BLACK", "BLADE", "BLAHS", "BLAIN", "BLAME", "BLANC", "BLAND", 
+"BLANK", "BLARE", "BLASE", "BLAST", "BLATS", "BLAZE", "BLEAK", 
+"BLEAR", "BLEAT", "BLEED", "BLEEP", "BLEND", "BLENT", "BLESS", 
+"BLEST", "BLIMP", "BLIMY", "BLIND", "BLINI", "BLINK", "BLIPS", 
+"BLISS", "BLITZ", "BLOAT", "BLOBS", "BLOCK", "BLOCS", "BLOKE", 
+"BLOND", "BLOOD", "BLOOM", "BLOOP", "BLOTS", "BLOWN", "BLOWS", 
+"BLOWY", "BLUED", "BLUER", "BLUES", "BLUET", "BLUEY", "BLUFF", 
+"BLUNT", "BLURB", "BLURS", "BLURT", "BLUSH", "BOARD", "BOARS", 
+"BOAST", "BOATS", "BOBBY", "BOCCE", "BOCCI", "BOCHE", "BOCKS", 
+"BODED", "BODES", "BOERS", "BOFFO", "BOFFS", "BOGEY", "BOGGY", 
+"BOGIE", "BOGLE", "BOGUS", "BOILS", "BOISE", "BOLAS", "BOLES", 
+"BOLLS", "BOLOS", "BOLTS", "BOLUS", "BOMBE", "BOMBS", "BONDS", 
+"BONED", "BONER", "BONES", "BONEY", "BONGO", "BONGS", "BONNY", 
+"BONOS", "BONUM", "BONUS", "BONZE", "BOOBS", "BOOBY", "BOOED", 
+"BOOKS", "BOOMS", "BOOMY", "BOONS", "BOORS", "BOOST", "BOOTH", 
+"BOOTS", "BOOTY", "BOOZE", "BOOZY", "BORAX", "BORED", "BORES", 
+"BORIC", "BORNE", "BORON", "BORTS", "BORTY", "BORTZ", "BOSKS", 
+"BOSKY", "BOSOM", "BOSON", "BOSSA", "BOSSY", "BOSUN", "BOTCH", 
+"BOUGH", "BOULE", "BOUND", "BOURG", "BOURN", "BOUSE", "BOUSY", 
+"BOUTS", "BOVID", "BOWED", "BOWEL", "BOWER", "BOWIE", "BOWLS", 
+"BOWSE", "BOXED", "BOXER", "BOXES", "BOYOS", "BOZOS", "BRACE", 
+"BRACT", "BRADS", "BRAES", "BRAGS", "BRAID", "BRAIL", "BRAIN", 
+"BRAKE", "BRAKY", "BRAND", "BRANS", "BRASH", "BRASS", "BRATS", 
+"BRAVE", "BRAVO", "BRAWL", "BRAWN", "BRAYS", "BRAZE", "BREAD", 
+"BREAK", "BREAM", "BREDE", "BREED", "BRENT", "BREVE", "BREVI", 
+"BREWS", "BRIAN", "BRIAR", "BRIBE", "BRICK", "BRIDE", "BRIEF", 
+"BRIER", "BRIES", "BRIGS", "BRILL", "BRIMS", "BRINE", "BRING", 
+"BRINK", "BRINY", "BRIOS", "BRISK", "BROAD", "BROCK", "BROIL", 
+"BROKE", "BROMO", "BRONC", "BRONX", "BROOD", "BROOK", "BROOM", 
+"BROTH", "BROWN", "BROWS", "BRUCE", "BRUIN", "BRUIT", "BRUNT", 
+"BRUSH", "BRUSK", "BRUTE", "BRYAN", "BUBBY", "BUCHU", "BUCKO", 
+"BUCKS", "BUDDY", "BUDGE", "BUFFO", "BUFFS", "BUFFY", "BUGGY", 
+"BUGLE", "BUICK", "BUILD", "BUILT", "BULBS", "BULGE", "BULGY", 
+"BULKS", "BULKY", "BULLS", "BULLY", "BUMPS", "BUMPY", "BUNCH", 
+"BUNCO", "BUNDS", "BUNGS", "BUNKO", "BUNKS", "BUNNS", "BUNNY", 
+"BUNTS", "BUOYS", "BURGH", "BURGS", "BURIN", "BURKE", "BURLS", 
+"BURLY", "BURMA", "BURNS", "BURNT", "BURPS", "BURRO", "BURRS", 
+"BURRY", "BURSA", "BURSE", "BURST", "BUSBY", "BUSED", "BUSES", 
+"BUSHY", "BUSTS", "BUSTY", "BUTCH", "BUTTE", "BUTTS", "BUTTY", 
+"BUTYL", "BUXOM", "BUYER", "BWANA", "BYLAW", "BYRES", "BYRON", 
+"BYTES", "BYWAY", "CABAL", "CABBY", "CABER", "CABIN", "CABLE", 
+"CABOB", "CABOT", "CACAO", "CACHE", "CACTI", "CADDY", "CADES", 
+"CADET", "CADGE", "CADGY", "CADIS", "CADRE", "CAFES", "CAGED", 
+"CAGER", "CAGES", "CAGEY", "CAINS", "CAIRN", "CAIRO", "CAJON", 
+"CAJUN", "CAKED", "CAKES", "CALFS", "CALIF", "CALIX", "CALKS", 
+"CALLA", "CALLI", "CALLS", "CALMS", "CALOR", "CALVE", "CALYX", 
+"CAMEL", "CAMEO", "CAMPI", "CAMPO", "CAMPS", "CAMPY", "CANAL", 
+"CANDY", "CANED", "CANER", "CANES", "CANNA", "CANNY", "CANOE", 
+"CANON", "CANST", "CANTO", "CANTS", "CANTY", "CAPED", "CAPER", 
+"CAPES", "CAPON", "CAPOS", "CAPPY", "CAPUT", "CARAT", "CARBO", 
+"CARDS", "CARED", "CARER", "CARES", "CARET", "CARGO", "CARLO", 
+"CARNE", "CARNY", "CAROB", "CAROL", "CAROM", "CARPE", "CARPI", 
+"CARPS", "CARRY", "CARTE", "CARTS", "CARVE", "CASAS", "CASED", 
+"CASES", "CASKS", "CASTE", "CASTS", "CASUS", "CATCH", "CATER", 
+"CATES", "CATHY", "CATTY", "CAULK", "CAULS", "CAUSE", "CAVED", 
+"CAVER", "CAVES", "CAVIE", "CAVIL", "CAWED", "CEASE", "CECAL", 
+"CECIL", "CECUM", "CEDAR", "CEDED", "CEDER", "CEDES", "CEILS", 
+"CELEB", "CELLI", "CELLO", "CELLS", "CELTS", "CENSE", "CENTO", 
+"CENTS", "CERED", "CERES", "CERIA", "CHADS", "CHAFE", "CHAFF", 
+"CHAIN", "CHAIR", "CHALK", "CHAMP", "CHAMS", "CHANG", "CHANT", 
+"CHAOS", "CHAPS", "CHAPT", "CHARD", "CHARE", "CHARM", "CHARS", 
+"CHART", "CHARY", "CHASE", "CHASM", "CHATS", "CHAWS", "CHEAP", 
+"CHEAT", "CHECK", "CHEEK", "CHEEP", "CHEER", "CHEFS", "CHELA", 
+"CHERT", "CHESS", "CHEST", "CHEVY", "CHEWS", "CHEWY", "CHIAO", 
+"CHIAS", "CHICK", "CHICO", "CHICS", "CHIDE", "CHIEF", "CHIEL", 
+"CHILD", "CHILE", "CHILI", "CHILL", "CHIME", "CHIMP", "CHINA", 
+"CHINE", "CHINK", "CHINO", "CHINS", "CHIPS", "CHIRK", "CHIRP", 
+"CHITS", "CHIVE", "CHIVY", "CHOCK", "CHOIR", "CHOKE", "CHOKY", 
+"CHOMP", "CHOPS", "CHORD", "CHORE", "CHOSE", "CHOWS", "CHUBS", 
+"CHUCK", "CHUFF", "CHUGS", "CHUMP", "CHUMS", "CHUNK", "CHURL", 
+"CHURN", "CHUTE", "CHYME", "CIDER", "CIGAR", "CILIA", "CINCH", 
+"CINES", "CIONS", "CIRCA", "CIRCE", "CISTS", "CITED", "CITER", 
+"CITES", "CIVET", "CIVIC", "CIVIL", "CIVVY", "CLACK", "CLADS", 
+"CLAGS", "CLAIM", "CLAIR", "CLAMP", "CLAMS", "CLANG", "CLANK", 
+"CLANS", "CLAPS", "CLAPT", "CLARK", "CLASH", "CLASP", "CLASS", 
+"CLAUS", "CLAVE", "CLAWS", "CLAYS", "CLEAN", "CLEAR", "CLEAT", 
+"CLEFS", "CLEFT", "CLEPE", "CLEPT", "CLERK", "CLEWS", "CLICK", 
+"CLIFF", "CLIFT", "CLIMB", "CLIME", "CLINE", "CLING", "CLINK", 
+"CLIPS", "CLIPT", "CLOAK", "CLOCK", "CLODS", "CLOGS", "CLOMB", 
+"CLOMP", "CLONE", "CLONK", "CLOPS", "CLOSE", "CLOTH", "CLOTS", 
+"CLOUD", "CLOUT", "CLOVE", "CLOWN", "CLOYS", "CLUBS", "CLUCK", 
+"CLUED", "CLUES", "CLUMP", "CLUNG", "CLUNK", "COACH", "COACT", 
+"COALS", "COAST", "COATI", "COATS", "COBBY", "COBOL", "COBRA", 
+"COCAS", "COCCI", "COCKS", "COCKY", "COCOA", "COCOS", "CODAL", 
+"CODAS", "CODED", "CODER", "CODES", "CODEX", "CODON", "COEDS", 
+"COFFS", "COHEN", "COHOS", "COIFS", "COIGN", "COILS", "COINS", 
+"COIRS", "COKED", "COKES", "COLAS", "COLDS", "COLES", "COLIC", 
+"COLIN", "COLLY", "COLON", "COLOR", "COLTS", "COMAS", "COMBE", 
+"COMBO", "COMBS", "COMER", "COMES", "COMET", "COMFY", "COMIC", 
+"COMMA", "COMME", "COMMY", "COMPS", "COMPT", "COMTE", "CONCH", 
+"CONDO", "CONED", "CONES", "CONEY", "CONGA", "CONGO", "CONIC", 
+"CONKS", "CONKY", "CONNS", "CONTE", "CONTO", "CONUS", "COOCH", 
+"COOED", "COOEE", "COOER", "COOEY", "COOKS", "COOKY", "COOLS", 
+"COOLY", "COOMB", "COONS", "COOPS", "COOPT", "COOTS", "COPAL", 
+"COPED", "COPER", "COPES", "COPRA", "COPSE", "CORAL", "CORDS", 
+"CORED", "CORER", "CORES", "CORGI", "CORKS", "CORKY", "CORMS", 
+"CORNS", "CORNU", "CORNY", "CORPS", "CORSE", "COSEC", "COSET", 
+"COSEY", "COSIE", "COSMO", "COSTS", "COTAN", "COTED", "COTES", 
+"COTTA", "COUCH", "COUGH", "COULD", "COUNT", "COUPE", "COUPS", 
+"COURT", "COUTH", "COVED", "COVEN", "COVER", "COVES", "COVET", 
+"COVEY", "COWED", "COWER", "COWLS", "COWRY", "COYER", "COYLY", 
+"COYPU", "COZEN", "COZES", "COZEY", "COZIE", "CRAAL", "CRABS", 
+"CRACK", "CRAFT", "CRAGS", "CRAMP", "CRAMS", "CRANE", "CRANK", 
+"CRAPE", "CRAPS", "CRASH", "CRASS", "CRATE", "CRAVE", "CRAWL", 
+"CRAWS", "CRAZE", "CRAZY", "CREAK", "CREAM", "CREDO", "CREED", 
+"CREEK", "CREEL", "CREEP", "CREES", "CREME", "CREPE", "CREPT", 
+"CREPY", "CRESS", "CREST", "CRETE", "CREWS", "CRIBS", "CRICK", 
+"CRIED", "CRIER", "CRIES", "CRIME", "CRIMP", "CRISP", "CROAK", 
+"CROCI", "CROCK", "CROFT", "CRONE", "CRONY", "CROOK", "CROON", 
+"CROPS", "CROSS", "CROUP", "CROWD", "CROWN", "CROWS", "CRUDE", 
+"CRUDS", "CRUEL", "CRUET", "CRUMB", "CRUMP", "CRUSE", "CRUSH", 
+"CRUST", "CRYPT", "CUBAN", "CUBBY", "CUBED", "CUBER", "CUBES", 
+"CUBIC", "CUBIT", "CUDDY", "CUFFS", "CUING", "CUISH", "CUKES", 
+"CULLS", "CULLY", "CULMS", "CULPA", "CULTS", "CUMIN", "CUNNI", 
+"CUNTS", "CUPID", "CUPPA", "CUPPY", "CURBS", "CURDS", "CURDY", 
+"CURED", "CURER", "CURES", "CURIA", "CURIE", "CURIO", "CURLS", 
+"CURLY", "CURRY", "CURSE", "CURST", "CURVE", "CURVY", "CUSHY", 
+"CUSPS", "CUTER", "CUTES", "CUTEY", "CUTIE", "CUTIN", "CUTIS", 
+"CUTTY", "CUTUP", "CYANS", "CYCAD", "CYCLE", "CYCLO", "CYMES", 
+"CYNIC", "CYSTS", "CZARS", "CZECH", "DACES", "DACHA", "DADAS", 
+"DADDY", "DADOS", "DAFFY", "DAGOS", "DAILY", "DAIRY", "DAISY", 
+"DALES", "DALLY", "DAMES", "DAMNS", "DAMPS", "DANCE", "DANDY", 
+"DANES", "DANGS", "DANTE", "DARED", "DARER", "DARES", "DARKS", 
+"DARKY", "DARNS", "DARTS", "DASHY", "DATED", "DATER", "DATES", 
+"DATUM", "DAUBS", "DAUBY", "DAUNT", "DAVID", "DAVIS", "DAVIT", 
+"DAWNS", "DAZED", "DAZES", "DEADS", "DEAIR", "DEALS", "DEALT", 
+"DEANS", "DEARS", "DEARY", "DEASH", "DEATH", "DEBAR", "DEBIT", 
+"DEBTS", "DEBUG", "DEBUT", "DECAL", "DECAY", "DECKS", "DECOR", 
+"DECOY", "DECRY", "DEEDS", "DEEDY", "DEEMS", "DEEPS", "DEERS", 
+"DEFAT", "DEFER", "DEFOG", "DEGAS", "DEGUM", "DEICE", "DEIFY", 
+"DEIGN", "DEISM", "DEIST", "DEITY", "DELAY", "DELED", "DELES", 
+"DELFT", "DELHI", "DELIS", "DELLS", "DELLY", "DELTA", "DELVE", 
+"DEMIT", "DEMOB", "DEMON", "DEMOS", "DEMUR", "DENIM", "DENSE", 
+"DENTS", "DEPOT", "DEPTH", "DERAT", "DERAY", "DERBY", "DERMA", 
+"DERMS", "DESEX", "DESKS", "DETER", "DEUCE", "DEVAS", "DEVIL", 
+"DEVON", "DEWAX", "DEWED", "DEXES", "DHOLE", "DHOTI", "DHOWS", 
+"DIALS", "DIANA", "DIANE", "DIARY", "DIAZO", "DICED", "DICER", 
+"DICES", "DICEY", "DICKS", "DICKY", "DICOT", "DICTA", "DIDOS", 
+"DIDST", "DIETS", "DIGHT", "DIGIT", "DIKED", "DIKER", "DIKES", 
+"DILDO", "DILLS", "DILLY", "DIMER", "DIMES", "DIMLY", "DINAR", 
+"DINED", "DINER", "DINES", "DINGO", "DINGS", "DINGY", "DINKY", 
+"DINTS", "DIODE", "DIPPY", "DIRER", "DIRGE", "DIRKS", "DIRTS", 
+"DIRTY", "DISCO", "DISCS", "DISHY", "DISKS", "DISTR", "DITCH", 
+"DITES", "DITTO", "DITTY", "DIVAN", "DIVAS", "DIVED", "DIVER", 
+"DIVES", "DIVOT", "DIVVY", "DIXIE", "DIXIT", "DIZZY", "DJINN", 
+"DJINS", "DOCKS", "DODGE", "DODGY", "DODOS", "DOERS", "DOEST", 
+"DOETH", "DOFFS", "DOGES", "DOGEY", "DOGGO", "DOGGY", "DOGIE", 
+"DOGMA", "DOILY", "DOING", "DOJOS", "DOLCE", "DOLCI", "DOLED", 
+"DOLES", "DOLLS", "DOLLY", "DOLOR", "DOLTS", "DOMED", "DOMES", 
+"DON'T", "DONEE", "DONGS", "DONNA", "DONNE", "DONOR", "DONUT", 
+"DOOMS", "DOORS", "DOOZY", "DOPED", "DOPER", "DOPES", "DOPEY", 
+"DORIC", "DORIS", "DORMS", "DORMY", "DORSA", "DORSI", "DOSED", 
+"DOSER", "DOSES", "DOTED", "DOTER", "DOTES", "DOTTY", "DOUBT", 
+"DOUCE", "DOUGH", "DOUSE", "DOVER", "DOVES", "DOWDY", "DOWEL", 
+"DOWER", "DOWNS", "DOWNY", "DOWRY", "DOWSE", "DOXIE", "DOYEN", 
+"DOYLY", "DOZED", "DOZEN", "DOZER", "DOZES", "DRABS", "DRAFT", 
+"DRAGS", "DRAIN", "DRAKE", "DRAMA", "DRAMS", "DRANK", "DRAPE", 
+"DRATS", "DRAVE", "DRAWL", "DRAWN", "DRAWS", "DRAYS", "DREAD", 
+"DREAM", "DREAR", "DRECK", "DREGS", "DREKS", "DRESS", "DREST", 
+"DRIBS", "DRIED", "DRIER", "DRIES", "DRIFT", "DRILL", "DRILY", 
+"DRINK", "DRIPS", "DRIPT", "DRIVE", "DROIT", "DROLL", "DRONE", 
+"DROOL", "DROOP", "DROPS", "DROPT", "DROSS", "DROVE", "DROWN", 
+"DRUBS", "DRUGS", "DRUID", "DRUMS", "DRUNK", "DRUPE", "DRYAD", 
+"DRYER", "DRYLY", "DUADS", "DUALS", "DUBIO", "DUCAL", "DUCAT", 
+"DUCES", "DUCHY", "DUCKS", "DUCKY", "DUCTS", "DUDDY", "DUDES", 
+"DUELS", "DUETS", "DUFFS", "DUFFY", "DUKES", "DULLS", "DULLY", 
+"DULSE", "DUMBS", "DUMMY", "DUMPS", "DUMPY", "DUNCE", "DUNES", 
+"DUNGS", "DUNGY", "DUNKS", "DUPED", "DUPER", "DUPES", "DUPLE", 
+"DURAL", "DURNS", "DURRA", "DURRS", "DURST", "DURUM", "DUSKS", 
+"DUSKY", "DUSTS", "DUSTY", "DUTCH", "DWARF", "DWELL", "DWELT", 
+"DYADS", "DYERS", "DYING", "DYKES", "DYNES", "EAGER", "EAGLE", 
+"EARED", "EARLS", "EARLY", "EARNS", "EARTH", "EASED", "EASEL", 
+"EASER", "EASES", "EASTS", "EATEN", "EATER", "EAVED", "EAVES", 
+"EBBED", "EBONS", "EBONY", "ECLAT", "ECOLE", "ECRUS", "EDEMA", 
+"EDGAR", "EDGED", "EDGER", "EDGES", "EDICT", "EDIFY", "EDITH", 
+"EDITS", "EDUCE", "EDUCT", "EERIE", "EGADS", "EGGED", "EGGER", 
+"EGRET", "EGYPT", "EIDER", "EIDOS", "EIGHT", "EIKON", "EJECT", 
+"EKING", "ELAND", "ELANS", "ELATE", "ELBOW", "ELDER", "ELECT", 
+"ELEGY", "ELFIN", "ELIDE", "ELITE", "ELLEN", "ELOPE", "ELSES", 
+"ELUDE", "ELVER", "ELVES", "ELVIS", "EMBAR", "EMBAY", "EMBED", 
+"EMBER", "EMBOW", "EMCEE", "EMEER", "EMEND", "EMERY", "EMILY", 
+"EMIRS", "EMITS", "EMMET", "EMOTE", "EMPTY", "ENACT", "ENATE", 
+"ENDED", "ENDER", "ENDOW", "ENDUE", "ENEMA", "ENEMY", "ENFIN", 
+"ENJOY", "ENNUI", "ENROL", "ENSKY", "ENSUE", "ENTER", "ENTRE", 
+"ENTRY", "ENURE", "ENVOI", "ENVOY", "EPEES", "EPICS", "EPOCH", 
+"EPODE", "EPOXY", "EPSOM", "EQUAL", "EQUIP", "ERASE", "ERECT", 
+"ERGOT", "ERICA", "ERODE", "EROSE", "ERRED", "ERROR", "ERUCT", 
+"ERUPT", "ESSAY", "ESSES", "ESTER", "ESTOP", "ETAPE", "ETHEL", 
+"ETHER", "ETHIC", "ETHOS", "ETHYL", "ETNAS", "ETUDE", "EULER", 
+"EVADE", "EVANS", "EVENS", "EVENT", "EVERT", "EVERY", "EVICT", 
+"EVILS", "EVOKE", "EWERS", "EWING", "EXACT", "EXALT", "EXAMS", 
+"EXCEL", "EXECS", "EXERT", "EXILE", "EXIST", "EXITS", "EXPEL", 
+"EXPOS", "EXPWY", "EXTOL", "EXTRA", "EXUDE", "EXULT", "EXURB", 
+"EXXON", "EYERS", "EYING", "EYRIE", "EYRIR", "FABLE", "FACED", 
+"FACER", "FACES", "FACET", "FACIA", "FACIE", "FACTO", "FACTS", 
+"FADDY", "FADED", "FADER", "FADES", "FAERY", "FAGOT", "FAILS", 
+"FAINT", "FAIRE", "FAIRS", "FAIRY", "FAITH", "FAITS", "FAKED", 
+"FAKER", "FAKES", "FAKIR", "FALLS", "FALSE", "FAMED", "FAMES", 
+"FANCY", "FANES", "FANGS", "FANNY", "FAQIR", "FARAD", "FARCE", 
+"FARCY", "FARDS", "FARED", "FARER", "FARES", "FARMS", "FAROS", 
+"FARTS", "FASTS", "FATAL", "FATED", "FATES", "FATLY", "FATSO", 
+"FATTY", "FAUGH", "FAULT", "FAUNA", "FAUNS", "FAUST", "FAUVE", 
+"FAVOR", "FAWNS", "FAWNY", "FAXED", "FAXES", "FAZED", "FAZES", 
+"FEARS", "FEASE", "FEAST", "FEATS", "FEAZE", "FECAL", "FECES", 
+"FEEDS", "FEELS", "FEIGN", "FEINT", "FEIST", "FELIX", "FELLA", 
+"FELLS", "FELLY", "FELON", "FELTS", "FEMME", "FEMUR", "FENCE", 
+"FENDS", "FENNY", "FEOFF", "FERAL", "FERMI", "FERNS", "FERNY", 
+"FERRY", "FESSE", "FETAL", "FETAS", "FETCH", "FETED", "FETES", 
+"FETID", "FETOR", "FETUS", "FEUDS", "FEVER", "FEWER", "FEYER", 
+"FEZES", "FIATS", "FIBER", "FIBRE", "FICHE", "FICHU", "FIDEL", 
+"FIDES", "FIDOS", "FIEFS", "FIELD", "FIEND", "FIERY", "FIFED", 
+"FIFER", "FIFES", "FIFTH", "FIFTY", "FIGHT", "FILAR", "FILCH", 
+"FILED", "FILER", "FILES", "FILET", "FILII", "FILLE", "FILLS", 
+"FILLY", "FILMS", "FILMY", "FILTH", "FINAL", "FINCH", "FINDS", 
+"FINED", "FINER", "FINES", "FINIS", "FINKS", "FINNS", "FINNY", 
+"FIORD", "FIRED", "FIRER", "FIRES", "FIRMA", "FIRMS", "FIRRY", 
+"FIRST", "FIRTH", "FISHY", "FISTS", "FITLY", "FIVER", "FIVES", 
+"FIXED", "FIXER", "FIXES", "FIXUP", "FIZZY", "FJORD", "FLABS", 
+"FLACK", "FLAGS", "FLAIL", "FLAIR", "FLAKE", "FLAKY", "FLAME", 
+"FLAMS", "FLAMY", "FLANK", "FLANS", "FLAPS", "FLARE", "FLASH", 
+"FLASK", "FLATS", "FLAWS", "FLAWY", "FLAXY", "FLAYS", "FLEAS", 
+"FLECK", "FLEER", "FLEES", "FLEET", "FLESH", "FLEWS", "FLICK", 
+"FLIED", "FLIER", "FLIES", "FLING", "FLINT", "FLIPS", "FLIRT", 
+"FLITE", "FLITS", "FLOAT", "FLOCK", "FLOES", "FLOGS", "FLOOD", 
+"FLOOR", "FLOPS", "FLORA", "FLOSS", "FLOUR", "FLOUT", "FLOWN", 
+"FLOWS", "FLUBS", "FLUED", "FLUES", "FLUFF", "FLUID", "FLUKE", 
+"FLUKY", "FLUME", "FLUMP", "FLUNG", "FLUNK", "FLUOR", "FLUSH", 
+"FLUTE", "FLUTY", "FLYBY", "FLYER", "FOALS", "FOAMS", "FOAMY", 
+"FOCAL", "FOCUS", "FOEHN", "FOETI", "FOGEY", "FOGGY", "FOGIE", 
+"FOILS", "FOINS", "FOIST", "FOLDS", "FOLIA", "FOLIC", "FOLIO", 
+"FOLKS", "FOLLY", "FONDS", "FONDU", "FONTS", "FOODS", "FOOLS", 
+"FOOTS", "FOOTY", "FORAY", "FORCE", "FORDS", "FORES", "FORGE", 
+"FORGO", "FORKS", "FORKY", "FORMA", "FORMS", "FORTE", "FORTH", 
+"FORTS", "FORTY", "FORUM", "FOSSA", "FOSSE", "FOULS", "FOUND", 
+"FOUNT", "FOURS", "FOVEA", "FOWLS", "FOXED", "FOXES", "FOYER", 
+"FRAGS", "FRAIL", "FRAME", "FRANC", "FRANK", "FRANZ", "FRAPS", 
+"FRATS", "FRAUD", "FRAUS", "FRAYS", "FREAK", "FREED", "FREER", 
+"FREES", "FREON", "FRERE", "FRESH", "FRETS", "FREUD", "FRIAR", 
+"FRIED", "FRIER", "FRIES", "FRIGS", "FRILL", "FRISK", "FRIZZ", 
+"FROCK", "FROES", "FROGS", "FROND", "FRONT", "FROSH", "FROST", 
+"FROTH", "FROWN", "FROZE", "FRUGS", "FRUIT", "FRUMP", "FRYER", 
+"FUCKS", "FUDGE", "FUELS", "FUGAL", "FUGGY", "FUGIT", "FUGUE", 
+"FUJIS", "FULLS", "FULLY", "FUMED", "FUMER", "FUMES", "FUMET", 
+"FUNDI", "FUNDS", "FUNGI", "FUNKS", "FUNKY", "FUNNY", "FURLS", 
+"FUROR", "FURRY", "FURZE", "FURZY", "FUSED", "FUSEE", "FUSEL", 
+"FUSES", "FUSIL", "FUSSY", "FUSTY", "FUZED", "FUZEE", "FUZES", 
+"FUZIL", "FUZZY", "GABBY", "GABLE", "GABON", "GAELS", "GAFFE", 
+"GAFFS", "GAGED", "GAGER", "GAGES", "GAILY", "GAINS", "GAITS", 
+"GALAS", "GALAX", "GALES", "GALLS", "GALLY", "GALOP", "GAMBA", 
+"GAMED", "GAMER", "GAMES", "GAMEY", "GAMIC", "GAMIN", "GAMMA", 
+"GAMUT", "GANEF", "GANEV", "GANGS", "GANJA", "GAOLS", "GAPED", 
+"GAPER", "GAPES", "GAPPY", "GARBO", "GARBS", "GARDE", "GARTH", 
+"GASES", "GASPS", "GASSY", "GATED", "GATES", "GATOR", "GAUDS", 
+"GAUDY", "GAUGE", "GAULS", "GAUNT", "GAUSS", "GAUZE", "GAUZY", 
+"GAVEL", "GAVOT", "GAWKS", "GAWKY", "GAYER", "GAYLY", "GAZED", 
+"GAZER", "GAZES", "GEARS", "GECKO", "GECKS", "GEEKS", "GEESE", 
+"GELDS", "GELEE", "GELID", "GELTS", "GEMMY", "GENAL", "GENES", 
+"GENET", "GENIC", "GENIE", "GENII", "GENOA", "GENRE", "GENTS", 
+"GENUS", "GEODE", "GEOID", "GERMS", "GERMY", "GESSO", "GESTE", 
+"GESTS", "GETUP", "GEUMS", "GHANA", "GHAST", "GHATS", "GHEES", 
+"GHOST", "GHOUL", "GIANT", "GIBED", "GIBER", "GIBES", "GIDDY", 
+"GIFTS", "GIGAS", "GIGUE", "GILDS", "GILLS", "GILLY", "GILTS", 
+"GIMEL", "GIMPS", "GIMPY", "GINKS", "GINNY", "GIPSY", "GIRDS", 
+"GIRLS", "GIRLY", "GIRNS", "GIROS", "GIRTH", "GIRTS", "GISMO", 
+"GISTS", "GIVEN", "GIVER", "GIVES", "GIVIN", "GIZMO", "GLACE", 
+"GLADE", "GLADS", "GLADY", "GLAND", "GLANS", "GLARE", "GLARY", 
+"GLASS", "GLAZE", "GLAZY", "GLEAM", "GLEAN", "GLEBA", "GLEBE", 
+"GLEES", "GLENS", "GLIDE", "GLIMS", "GLINT", "GLOAM", "GLOAT", 
+"GLOBE", "GLOBS", "GLOGG", "GLOMS", "GLOOM", "GLOPS", "GLORY", 
+"GLOSS", "GLOVE", "GLOWS", "GLOZE", "GLUED", "GLUER", "GLUES", 
+"GLUEY", "GLUTS", "GLYPH", "GNARL", "GNARS", "GNASH", "GNATS", 
+"GNAWN", "GNAWS", "GNOME", "GOADS", "GOALS", "GOATS", "GOBOS", 
+"GODLY", "GOERS", "GOFER", "GOGOS", "GOING", "GOLDS", "GOLEM", 
+"GOLFS", "GOLLY", "GOMBO", "GONAD", "GONER", "GONGS", "GONIF", 
+"GONOF", "GOODS", "GOODY", "GOOEY", "GOOFS", "GOOFY", "GOOKS", 
+"GOOKY", "GOONS", "GOONY", "GOOPS", "GOOSE", "GOOSY", "GORED", 
+"GORES", "GORGE", "GORKI", "GORSE", "GORSY", "GOTHS", "GOUDA", 
+"GOUGE", "GOURD", "GOUTS", "GOUTY", "GOWNS", "GOYIM", "GRAAL", 
+"GRABS", "GRACE", "GRADE", "GRADS", "GRAFT", "GRAIL", "GRAIN", 
+"GRAMP", "GRAMS", "GRANA", "GRAND", "GRANT", "GRAPE", "GRAPH", 
+"GRAPY", "GRASP", "GRASS", "GRATA", "GRATE", "GRAVE", "GRAVY", 
+"GRAYS", "GRAZE", "GREAT", "GREBE", "GRECO", "GREED", "GREEK", 
+"GREEN", "GREET", "GRETA", "GREYS", "GRIDS", "GRIEF", "GRIFT", 
+"GRIGS", "GRILL", "GRIME", "GRIMM", "GRIMY", "GRIND", "GRINS", 
+"GRIOT", "GRIPE", "GRIPS", "GRIPT", "GRIPY", "GRIST", "GRITS", 
+"GROAN", "GROAT", "GROGS", "GROIN", "GROOM", "GROPE", "GROSS", 
+"GROSZ", "GROTS", "GROUP", "GROUT", "GROVE", "GROWL", "GROWN", 
+"GROWS", "GRUBS", "GRUEL", "GRUFF", "GRUMP", "GRUNT", "GUACO", 
+"GUANO", "GUARD", "GUARS", "GUAVA", "GUCKS", "GUESS", "GUEST", 
+"GUFFS", "GUIDE", "GUILD", "GUILE", "GUILT", "GUIRO", "GUISE", 
+"GULCH", "GULFS", "GULFY", "GULLS", "GULLY", "GULPS", "GULPY", 
+"GUMBO", "GUMMY", "GUNKS", "GUNNY", "GUPPY", "GURUS", "GUSHY", 
+"GUSSY", "GUSTO", "GUSTS", "GUSTY", "GUTSY", "GUTTA", "GUTTY", 
+"GUYED", "GYPSY", "GYRAL", "GYRED", "GYRES", "GYROS", "GYRUS", 
+"GYVED", "GYVES", "HABIT", "HACKS", "HADES", "HADJI", "HADST", 
+"HAETS", "HAFTS", "HAGUE", "HAIKU", "HAILS", "HAIRS", "HAIRY", 
+"HAITI", "HAJIS", "HAJJI", "HAKES", "HALED", "HALER", "HALES", 
+"HALLO", "HALLS", "HALOS", "HALTS", "HALVA", "HALVE", "HAMMY", 
+"HANCE", "HANDS", "HANDY", "HANGS", "HANKS", "HANKY", "HANOI", 
+"HANTS", "HAOLE", "HAPLY", "HAPPY", "HARDS", "HARDY", "HARED", 
+"HAREM", "HARES", "HARKS", "HARMS", "HARPS", "HARPY", "HARRY", 
+"HARSH", "HARTS", "HASID", "HASPS", "HASTA", "HASTE", "HASTY", 
+"HATCH", "HATED", "HATER", "HATES", "HAUGH", "HAULS", "HAUNT", 
+"HAUTE", "HAVEN", "HAVER", "HAVES", "HAVOC", "HAWED", "HAWKS", 
+"HAWSE", "HAYDN", "HAYED", "HAYER", "HAYES", "HAZED", "HAZEL", 
+"HAZER", "HAZES", "HDQRS", "HEADS", "HEADY", "HEALS", "HEAPS", 
+"HEARD", "HEARS", "HEART", "HEATH", "HEATS", "HEAVE", "HEAVY", 
+"HECKS", "HEDGE", "HEDGY", "HEEDS", "HEELS", "HEFTS", "HEFTY", 
+"HEIGH", "HEILS", "HEIRS", "HEIST", "HELEN", "HELIO", "HELIX", 
+"HELLO", "HELLS", "HELMS", "HELOT", "HELPS", "HELVE", "HEMAN", 
+"HEMPS", "HEMPY", "HENCE", "HENNA", "HENRY", "HENTS", "HERBS", 
+"HERBY", "HERDS", "HERES", "HERON", "HEROS", "HERTZ", "HEWED", 
+"HEWER", "HEXAD", "HEXED", "HEXER", "HEXES", "HEXYL", "HICKS", 
+"HIDED", "HIDER", "HIDES", "HIGHS", "HIGHT", "HIKED", "HIKER", 
+"HIKES", "HILLS", "HILLY", "HILTS", "HINDI", "HINDS", "HINDU", 
+"HINGE", "HINNY", "HINTS", "HIPPO", "HIPPY", "HIRED", "HIRER", 
+"HIRES", "HISTS", "HITCH", "HIVED", "HIVES", "HOAGY", "HOARD", 
+"HOARY", "HOBBY", "HOBOS", "HOCKS", "HOCUS", "HODAD", "HOERS", 
+"HOGAN", "HOGGS", "HOISE", "HOIST", "HOKEY", "HOKUM", "HOLDS", 
+"HOLED", "HOLER", "HOLES", "HOLEY", "HOLLO", "HOLLY", "HOLTS", 
+"HOMED", "HOMER", "HOMES", "HOMEY", "HOMOS", "HONAN", "HONDA", 
+"HONED", "HONER", "HONES", "HONEY", "HONKS", "HONKY", "HONOR", 
+"HOOCH", "HOODS", "HOOEY", "HOOFS", "HOOKA", "HOOKS", "HOOKY", 
+"HOOPS", "HOOTS", "HOPED", "HOPER", "HOPES", "HOPIS", "HORAH", 
+"HORAL", "HORAS", "HORDE", "HORNS", "HORNY", "HORSE", "HORST", 
+"HORSY", "HOSED", "HOSES", "HOSTS", "HOTEL", "HOTLY", "HOUND", 
+"HOURI", "HOURS", "HOUSE", "HOVEL", "HOVER", "HOWDY", "HOWES", 
+"HOWLS", "HOYLE", "HUBBY", "HUCKS", "HUFFS", "HUFFY", "HUGER", 
+"HULAS", "HULKS", "HULKY", "HULLO", "HULLS", "HUMAN", "HUMID", 
+"HUMOR", "HUMPH", "HUMPS", "HUMPY", "HUMUS", "HUNCH", "HUNKS", 
+"HUNKY", "HUNTS", "HURLS", "HURLY", "HURON", "HURRY", "HURTS", 
+"HUSKS", "HUSKY", "HUSSY", "HUTCH", "HUZZA", "HYDRA", "HYDRO", 
+"HYENA", "HYING", "HYMEN", "HYMNS", "HYPED", "HYPER", "HYPES", 
+"HYPOS", "HYRAX", "HYSON", "IAMBI", "IAMBS", "ICHOR", "ICIER", 
+"ICILY", "ICING", "ICKER", "ICONS", "ICTUS", "IDAHO", "IDEAL", 
+"IDEAS", "IDIOM", "IDIOT", "IDLED", "IDLER", "IDLES", "IDOLS", 
+"IDYLL", "IDYLS", "IGLOO", "IGNIS", "IKONS", "ILEAL", "ILEUM", 
+"ILIAD", "ILIUM", "ILLER", "IMAGE", "IMAGO", "IMAMS", "IMBED", 
+"IMBUE", "IMMIX", "IMPED", "IMPEL", "IMPER", "IMPLY", "INANE", 
+"INAPT", "INARM", "INCAS", "INCOG", "INCUR", "INCUS", "INDEX", 
+"INDIA", "INDOL", "INDOW", "INDUE", "INEPT", "INERT", "INFER", 
+"INFIX", "INFOS", "INFRA", "INGLE", "INGOT", "INKED", "INKER", 
+"INKLE", "INLAY", "INLET", "INNED", "INNER", "INPUT", "INSET", 
+"INSTR", "INTEL", "INTER", "INTRA", "INTRO", "INURE", "INURN", 
+"IODIN", "IONIC", "IOTAS", "IOWAN", "IRAQI", "IRATE", "IRENE", 
+"IRING", "IRISH", "IRKED", "IRONS", "IRONY", "ISAAC", "ISLAM", 
+"ISLED", "ISLES", "ISLET", "ISSEI", "ISSUE", "ISTLE", "ITALY", 
+"ITCHY", "ITEMS", "IVIED", "IVIES", "IVORY", "IXIAS", "JABOT", 
+"JACAL", "JACKS", "JACKY", "JACOB", "JADED", "JADES", "JAGGS", 
+"JAGGY", "JAILS", "JAKES", "JALAP", "JAMBS", "JAMES", "JANES", 
+"JANET", "JANUS", "JAPAN", "JAPED", "JAPER", "JAPES", "JASON", 
+"JATOS", "JAUNT", "JAVAS", "JAWED", "JAZZY", "JEANS", "JEEPS", 
+"JEERS", "JEFES", "JEHAD", "JEHUS", "JELLS", "JELLY", "JEMMY", 
+"JENNY", "JERKS", "JERKY", "JERRY", "JESSE", "JESTS", "JESUS", 
+"JETTY", "JEWED", "JEWEL", "JEWRY", "JIBED", "JIBER", "JIBES", 
+"JIFFS", "JIFFY", "JIHAD", "JILLS", "JILTS", "JIMMY", "JINGO", 
+"JINNI", "JINNS", "JIVED", "JIVES", "JNANA", "JOCKO", "JOCKS", 
+"JOEYS", "JOHNS", "JOINS", "JOINT", "JOIST", "JOKED", "JOKER", 
+"JOKES", "JOLLY", "JOLTS", "JOLTY", "JONAH", "JONES", "JORAM", 
+"JORUM", "JOTTY", "JOULE", "JOUST", "JOWLS", "JOWLY", "JOYCE", 
+"JOYED", "JUANS", "JUDAS", "JUDGE", "JUDOS", "JUICE", "JUICY", 
+"JUJUS", "JUKED", "JUKES", "JULEP", "JUMBO", "JUMPS", "JUMPY", 
+"JUNCO", "JUNKS", "JUNKY", "JUNTA", "JUNTO", "JUROR", "JUSTS", 
+"JUTES", "JUTTY", "JUXTA", "KABOB", "KADIS", "KAFIR", "KAFKA", 
+"KAIAK", "KAKAS", "KAKIS", "KALES", "KALIF", "KALPA", "KAMES", 
+"KANAS", "KANJI", "KAONS", "KAPOK", "KAPPA", "KAPUT", "KARAT", 
+"KAREN", "KARMA", "KARST", "KARTS", "KASHA", "KATHY", "KAYAK", 
+"KAYOS", "KAZOO", "KEATS", "KEBAB", "KEBOB", "KEDGE", "KEEFS", 
+"KEELS", "KEENS", "KEEPS", "KEFIR", "KELPS", "KELPY", "KELTS", 
+"KEMPT", "KENDO", "KENNY", "KENOS", "KENYA", "KEPIS", "KERBS", 
+"KERFS", "KERNS", "KERRY", "KETCH", "KEYED", "KHAKI", "KHANS", 
+"KHATS", "KICKS", "KICKY", "KIDDO", "KIDDY", "KIEFS", "KIKES", 
+"KILLS", "KILNS", "KILOS", "KILTS", "KILTY", "KINDS", "KINES", 
+"KINGS", "KINKS", "KINKY", "KIOSK", "KIOWA", "KIRKS", "KITED", 
+"KITER", "KITES", "KITHS", "KITTY", "KIVAS", "KIWIS", "KLANS", 
+"KLEIG", "KLIEG", "KLUTZ", "KNACK", "KNAPS", "KNAVE", "KNEAD", 
+"KNEED", "KNEEL", "KNEES", "KNELL", "KNELT", "KNIFE", "KNISH", 
+"KNITS", "KNOBS", "KNOCK", "KNOLL", "KNOTS", "KNOUT", "KNOWN", 
+"KNOWS", "KNURL", "KOALA", "KOANS", "KODAK", "KOHLS", "KOLAS", 
+"KOOKS", "KOOKY", "KOPEK", "KOPHS", "KOPJE", "KORAN", "KOREA", 
+"KOTOS", "KRAAL", "KRAFT", "KRAIT", "KRAUT", "KREBS", "KRILL", 
+"KRONA", "KRONE", "KUDOS", "KUDUS", "KUDZU", "KULAK", "KYATS", 
+"KYOTO", "KYRIE", "LABEL", "LABIA", "LABOR", "LACED", "LACER", 
+"LACES", "LACEY", "LACKS", "LADED", "LADEN", "LADER", "LADES", 
+"LADLE", "LAGER", "LAIRD", "LAIRS", "LAITY", "LAKED", "LAKER", 
+"LAKES", "LAMAS", "LAMBS", "LAMED", "LAMER", "LAMES", "LAMIA", 
+"LAMPS", "LANAI", "LANCE", "LANDS", "LANES", "LANKY", "LAPEL", 
+"LAPIN", "LAPIS", "LAPPS", "LAPSE", "LARCH", "LARDS", "LARDY", 
+"LARES", "LARGE", "LARGO", "LARKS", "LARKY", "LARRY", "LARVA", 
+"LASED", "LASER", "LASES", "LASSO", "LASTS", "LATCH", "LATED", 
+"LATEN", "LATER", "LATEX", "LATHE", "LATHS", "LATHY", "LATIN", 
+"LAUDE", "LAUDS", "LAUGH", "LAURA", "LAVAS", "LAVED", "LAVER", 
+"LAVES", "LAWED", "LAWNS", "LAWNY", "LAXER", "LAXLY", "LAYED", 
+"LAYER", "LAZAR", "LAZED", "LAZES", "LEACH", "LEADS", "LEADY", 
+"LEAFS", "LEAFY", "LEAKS", "LEAKY", "LEANS", "LEANT", "LEAPS", 
+"LEAPT", "LEARN", "LEARY", "LEASE", "LEASH", "LEAST", "LEAVE", 
+"LEDGE", "LEDGY", "LEECH", "LEEDS", "LEEKS", "LEERS", "LEERY", 
+"LEFTS", "LEFTY", "LEGAL", "LEGER", "LEGGY", "LEGIT", "LEMAN", 
+"LEMMA", "LEMON", "LEMUR", "LENDS", "LENIN", "LENSE", "LENTO", 
+"LEONE", "LEPER", "LETCH", "LETHE", "LETUP", "LEVEE", "LEVEL", 
+"LEVER", "LEVIN", "LEVIS", "LEWIS", "LIANA", "LIARS", "LIBEL", 
+"LIBER", "LIBRA", "LIBRE", "LIBYA", "LICHI", "LICHT", "LICIT", 
+"LICKS", "LIDAR", "LIDOS", "LIEGE", "LIENS", "LIERS", "LIEUT", 
+"LIFER", "LIFTS", "LIGER", "LIGHT", "LIKED", "LIKEN", "LIKER", 
+"LIKES", "LILAC", "LILLY", "LILTS", "LIMAS", "LIMBO", "LIMBS", 
+"LIMBY", "LIMED", "LIMES", "LIMEY", "LIMIT", "LIMNS", "LIMOS", 
+"LIMPS", "LINAC", "LINDA", "LINDY", "LINED", "LINEN", "LINER", 
+"LINES", "LINEY", "LINGO", "LINGS", "LINKS", "LINKY", "LINOS", 
+"LINTS", "LINTY", "LINUM", "LIONS", "LIPID", "LIPPY", "LIRAS", 
+"LISLE", "LISPS", "LISTS", "LISZT", "LITER", "LITES", "LITHE", 
+"LITHO", "LITRE", "LIVED", "LIVEN", "LIVER", "LIVES", "LIVID", 
+"LIVRE", "LLAMA", "LLANO", "LOACH", "LOADS", "LOAFS", "LOAMS", 
+"LOAMY", "LOANS", "LOATH", "LOBAR", "LOBBY", "LOBED", "LOBES", 
+"LOBOS", "LOCAL", "LOCHS", "LOCKS", "LOCOS", "LOCUS", "LODEN", 
+"LODES", "LODGE", "LOESS", "LOFTS", "LOFTY", "LOGAN", "LOGES", 
+"LOGGY", "LOGIA", "LOGIC", "LOGOS", "LOINS", "LOLLS", "LOLLY", 
+"LONER", "LONGS", "LOOFA", "LOOFS", "LOOKS", "LOOMS", "LOONS", 
+"LOONY", "LOOPS", "LOOPY", "LOOSE", "LOOTS", "LOPED", "LOPER", 
+"LOPES", "LOPPY", "LORAN", "LORDS", "LORES", "LORIS", "LORRY", 
+"LOSER", "LOSES", "LOSSY", "LOTOS", "LOTTO", "LOTUS", "LOUGH", 
+"LOUIE", "LOUIS", "LOUPE", "LOUPS", "LOURS", "LOURY", "LOUSE", 
+"LOUSY", "LOUTS", "LOVED", "LOVER", "LOVES", "LOWED", "LOWER", 
+"LOWLY", "LOXES", "LOYAL", "LUAUS", "LUBES", "LUCES", "LUCIA", 
+"LUCID", "LUCKS", "LUCKY", "LUCRE", "LUFFS", "LUGES", "LULLS", 
+"LULUS", "LUMEN", "LUMPS", "LUMPY", "LUNAR", "LUNAS", "LUNCH", 
+"LUNES", "LUNET", "LUNGE", "LUNGS", "LUNKS", "LUPIN", "LUPUS", 
+"LURCH", "LURED", "LURER", "LURES", "LURID", "LURKS", "LUSTS", 
+"LUSTY", "LUTED", "LUTES", "LUXES", "LYCEE", "LYING", "LYMPH", 
+"LYNCH", "LYRES", "LYRIC", "LYSED", "LYSES", "LYSIN", "MACAW", 
+"MACED", "MACER", "MACES", "MACHO", "MACHS", "MACKS", "MACLE", 
+"MACRO", "MADAM", "MADLY", "MADRE", "MAFIA", "MAGES", "MAGIC", 
+"MAGMA", "MAGUS", "MAIDS", "MAILS", "MAIMS", "MAINE", "MAINS", 
+"MAIST", "MAIZE", "MAJOR", "MAKER", "MAKES", "MALAY", "MALES", 
+"MALLS", "MALTA", "MALTS", "MALTY", "MAMAS", "MAMBA", "MAMBO", 
+"MAMIE", "MAMMA", "MAMMY", "MANAS", "MANED", "MANES", "MANGE", 
+"MANGO", "MANGY", "MANIA", "MANIC", "MANLY", "MANNA", "MANOR", 
+"MANOS", "MANSE", "MANTA", "MANUS", "MAORI", "MAPLE", "MAQUI", 
+"MARCH", "MARCS", "MARDI", "MARES", "MARGE", "MARIA", "MARIE", 
+"MARKS", "MARRY", "MARSE", "MARSH", "MARTS", "MASER", "MASHY", 
+"MASKS", "MASON", "MASSA", "MASSE", "MASSY", "MASTS", "MATCH", 
+"MATED", "MATER", "MATES", "MATEY", "MATHS", "MATIN", "MATTE", 
+"MATTS", "MATZO", "MAULS", "MAUVE", "MAVEN", "MAVIN", "MAXIM", 
+"MAXIS", "MAYAN", "MAYAS", "MAYBE", "MAYOR", "MAYST", "MAZED", 
+"MAZEL", "MAZER", "MAZES", "MEADS", "MEALS", "MEALY", "MEANS", 
+"MEANT", "MEANY", "MEATS", "MEATY", "MECCA", "MECUM", "MEDAL", 
+"MEDIA", "MEDIC", "MEEDS", "MEETS", "MELBA", "MELDS", "MELEE", 
+"MELON", "MELTS", "MEMOS", "MENDS", "MENUS", "MEOWS", "MERCI", 
+"MERCY", "MERER", "MERES", "MERGE", "MERIT", "MERRY", "MESAS", 
+"MESHY", "MESON", "MESSY", "METAL", "METED", "METER", "METES", 
+"METRE", "METRO", "MEWED", "MEWLS", "MEZZO", "MIAMI", "MIAOU", 
+"MIAOW", "MIASM", "MIAUL", "MICAS", "MICKS", "MICRO", "MIDAS", 
+"MIDDY", "MIDGE", "MIDIS", "MIDST", "MIENS", "MIFFS", "MIFFY", 
+"MIGGS", "MIGHT", "MIKES", "MILAN", "MILCH", "MILER", "MILES", 
+"MILKS", "MILKY", "MILLE", "MILLS", "MILOS", "MIMED", "MIMEO", 
+"MIMER", "MIMES", "MIMIC", "MINCE", "MINCY", "MINDS", "MINED", 
+"MINER", "MINES", "MINGY", "MINIM", "MINIS", "MINKS", "MINNY", 
+"MINOR", "MINTS", "MINTY", "MINUS", "MIRED", "MIRES", "MIRKS", 
+"MIRKY", "MIRTH", "MIRVS", "MISDO", "MISER", "MISOS", "MISSY", 
+"MISTS", "MISTY", "MITER", "MITES", "MITRE", "MITTS", "MIXED", 
+"MIXER", "MIXES", "MIXUP", "MOANS", "MOATS", "MOBIL", "MOCHA", 
+"MOCKS", "MODAL", "MODEL", "MODEM", "MODES", "MODUS", "MOGUL", 
+"MOILS", "MOIRE", "MOIST", "MOLAR", "MOLDS", "MOLDY", "MOLES", 
+"MOLLS", "MOLLY", "MOLTO", "MOLTS", "MOMMA", "MOMMY", "MONAD", 
+"MONDE", "MONDO", "MONEY", "MONKS", "MONOS", "MONTE", "MONTH", 
+"MOOCH", "MOODS", "MOODY", "MOOED", "MOOLA", "MOONS", "MOONY", 
+"MOORE", "MOORS", "MOORY", "MOOSE", "MOOTS", "MOPED", "MOPER", 
+"MOPES", "MOPEY", "MORAL", "MORAY", "MOREL", "MORES", "MORNS", 
+"MORON", "MORPH", "MORSE", "MOSES", "MOSEY", "MOSKS", "MOSSY", 
+"MOSTS", "MOTEL", "MOTES", "MOTET", "MOTEY", "MOTHS", "MOTHY", 
+"MOTIF", "MOTOR", "MOTTO", "MOUES", "MOULD", "MOULT", "MOUND", 
+"MOUNT", "MOURN", "MOUSE", "MOUSY", "MOUTH", "MOVED", "MOVER", 
+"MOVES", "MOVIE", "MOWED", "MOWER", "MOXAS", "MOXIE", "MUCKS", 
+"MUCKY", "MUCUS", "MUDDY", "MUDRA", "MUFFS", "MUFTI", "MUGGS", 
+"MUGGY", "MUJIK", "MULCH", "MULCT", "MULED", "MULES", "MULEY", 
+"MULLA", "MULLS", "MULTI", "MULTO", "MUMBO", "MUMMS", "MUMMY", 
+"MUMPS", "MUNCH", "MUONS", "MURAL", "MUREX", "MURKS", "MURKY", 
+"MUSED", "MUSER", "MUSES", "MUSHY", "MUSIC", "MUSKS", "MUSKY", 
+"MUSSY", "MUSTS", "MUSTY", "MUTED", "MUTER", "MUTES", "MUTTS", 
+"MUZZY", "MYLAR", "MYNAH", "MYNAS", "MYOPE", "MYOPY", "MYRRH", 
+"MYTHS", "NABOB", "NACRE", "NADIR", "NAIAD", "NAIFS", "NAILS", 
+"NAIVE", "NAKED", "NAMED", "NAMER", "NAMES", "NANCE", "NANCY", 
+"NANNY", "NAPES", "NAPPY", "NARCO", "NARCS", "NARES", "NARIS", 
+"NARKS", "NASAL", "NASTY", "NATAL", "NATES", "NATTY", "NAVAL", 
+"NAVEL", "NAVES", "NAVVY", "NAZIS", "NEAPS", "NEARS", "NEATH", 
+"NEATS", "NECKS", "NEEDS", "NEEDY", "NEGRO", "NEGUS", "NEHRU", 
+"NEIGH", "NEONS", "NEPAL", "NERDS", "NERTS", "NERTZ", "NERVE", 
+"NERVY", "NESTS", "NETTY", "NEVER", "NEVUS", "NEWEL", "NEWER", 
+"NEWLY", "NEWSY", "NEWTS", "NEXUS", "NICER", "NICHE", "NICKS", 
+"NIECE", "NIFTY", "NIGHS", "NIGHT", "NIHIL", "NILLS", "NIMBI", 
+"NINES", "NINNY", "NINON", "NINTH", "NIPPY", "NISEI", "NITER", 
+"NITRE", "NITRO", "NITTY", "NIXED", "NIXES", "NIXIE", "NIXON", 
+"NOBBY", "NOBEL", "NOBLE", "NOBLY", "NOCKS", "NODAL", "NODDY", 
+"NODES", "NODUS", "NOELS", "NOGGS", "NOHOW", "NOIRE", "NOISE", 
+"NOISY", "NOLLE", "NOMAD", "NONCE", "NONES", "NOOKS", "NOOKY", 
+"NOONS", "NOOSE", "NORMA", "NORMS", "NORSE", "NORTH", "NOSED", 
+"NOSES", "NOSEY", "NOTAL", "NOTCH", "NOTED", "NOTER", "NOTES", 
+"NOTRE", "NOUNS", "NOVAE", "NOVAS", "NOVEL", "NOWAY", "NUBBY", 
+"NUBIA", "NUDER", "NUDES", "NUDGE", "NUDIE", "NUDUM", "NUKES", 
+"NULLO", "NULLS", "NUMBS", "NURSE", "NUTTY", "NYLON", "NYMPH", 
+"OAKEN", "OAKUM", "OARED", "OASES", "OASIS", "OASTS", "OATEN", 
+"OATER", "OATHS", "OBEAH", "OBELI", "OBESE", "OBEYS", "OBITS", 
+"OBOES", "OBOLS", "OCCUR", "OCEAN", "OCHER", "OCHRE", "OCTAD", 
+"OCTAL", "OCTET", "OCTYL", "OCULI", "ODDER", "ODDLY", "ODEON", 
+"ODIUM", "ODORS", "ODOUR", "OFAYS", "OFFAL", "OFFED", "OFFER", 
+"OFTEN", "OFTER", "OGEES", "OGHAM", "OGIVE", "OGLED", "OGLER", 
+"OGLES", "OGRES", "OHING", "OHMIC", "OILED", "OILER", "OINKS", 
+"OKAPI", "OKAYS", "OKRAS", "OLDEN", "OLDER", "OLDIE", "OLEOS", 
+"OLIOS", "OLIVE", "OLLAS", "OLOGY", "OMAHA", "OMBRE", "OMEGA", 
+"OMENS", "OMITS", "ONCES", "ONERY", "ONION", "ONSET", "OOHED", 
+"OOMPH", "OOZED", "OOZES", "OPALS", "OPENS", "OPERA", "OPINE", 
+"OPIUM", "OPTED", "OPTIC", "ORALS", "ORANG", "ORATE", "ORBED", 
+"ORBIT", "ORCAS", "ORDER", "ORDOS", "OREAD", "ORGAN", "ORGIC", 
+"ORIEL", "ORION", "ORLON", "ORRIS", "ORTHO", "OSAGE", "OSAKA", 
+"OSCAR", "OSIER", "OSMIC", "OSSEA", "OSSIA", "OSTIA", "OTHER", 
+"OTTER", "OUGHT", "OUIJA", "OUNCE", "OUSEL", "OUSTS", "OUTDO", 
+"OUTED", "OUTER", "OUTGO", "OUTRE", "OUZEL", "OUZOS", "OVALS", 
+"OVARY", "OVATE", "OVENS", "OVERS", "OVERT", "OVINE", "OVOID", 
+"OVOLO", "OVULE", "OWING", "OWLET", "OWNED", "OWNER", "OXBOW", 
+"OXEYE", "OXIDE", "OXLIP", "OXTER", "OYERS", "OZONE", "PACED", 
+"PACER", "PACES", "PACKS", "PACTA", "PACTS", "PADDY", "PADRE", 
+"PADRI", "PAEAN", "PAGAN", "PAGED", "PAGES", "PAILS", "PAINE", 
+"PAINS", "PAINT", "PAIRS", "PALED", "PALER", "PALES", "PALLS", 
+"PALLY", "PALMS", "PALMY", "PALPS", "PALSY", "PAMPA", "PANDA", 
+"PANED", "PANEL", "PANES", "PANGA", "PANGS", "PANIC", "PANSY", 
+"PANTS", "PANTY", "PAPAL", "PAPAS", "PAPAW", "PAPER", "PAPPY", 
+"PAPUA", "PARAS", "PARCH", "PARED", "PARER", "PARES", "PARIS", 
+"PARKA", "PARKS", "PARRY", "PARSE", "PARTE", "PARTI", "PARTS", 
+"PARTY", "PARVE", "PASEO", "PASHA", "PASSE", "PASTA", "PASTE", 
+"PASTS", "PASTY", "PATCH", "PATED", "PATEN", "PATER", "PATES", 
+"PATHS", "PATIO", "PATLY", "PATSY", "PATTY", "PAUSE", "PAVAN", 
+"PAVED", "PAVER", "PAVES", "PAWED", "PAWER", "PAWKY", "PAWLS", 
+"PAWNS", "PAXES", "PAYED", "PAYEE", "PAYER", "PEACE", "PEACH", 
+"PEAKS", "PEAKY", "PEALS", "PEARL", "PEARS", "PEART", "PEASE", 
+"PEATS", "PEATY", "PEAVY", "PECAN", "PECKS", "PECKY", "PEDAL", 
+"PEDES", "PEDRO", "PEEKS", "PEELS", "PEENS", "PEEPS", "PEERS", 
+"PEERY", "PEEVE", "PEGGY", "PEINS", "PEKES", "PEKIN", "PEKOE", 
+"PELFS", "PELTS", "PENAL", "PENCE", "PENDS", "PENES", "PENIS", 
+"PENNA", "PENNY", "PENSE", "PEONS", "PEONY", "PEPPY", "PEPSI", 
+"PERCH", "PERDU", "PERDY", "PERES", "PERIL", "PERIS", "PERKS", 
+"PERKY", "PERMS", "PERRY", "PESKY", "PESOS", "PESTS", "PETAL", 
+"PETER", "PETIT", "PETRI", "PETRO", "PETTY", "PEWEE", "PEWIT", 
+"PHAGE", "PHARM", "PHASE", "PHIAL", "PHLOX", "PHONE", "PHONO", 
+"PHONS", "PHONY", "PHOTO", "PHREN", "PHYLA", "PIANO", "PICAS", 
+"PICKS", "PICKY", "PICOT", "PIECE", "PIERS", "PIETA", "PIETY", 
+"PIGGY", "PIGMY", "PIKED", "PIKER", "PIKES", "PILAF", "PILAR", 
+"PILED", "PILES", "PILLS", "PILOT", "PIMAS", "PIMPS", "PINCH", 
+"PINED", "PINES", "PINEY", "PINGS", "PINKO", "PINKS", "PINKY", 
+"PINNA", "PINON", "PINTA", "PINTO", "PINTS", "PINUP", "PIONS", 
+"PIOUS", "PIPED", "PIPER", "PIPES", "PIPET", "PIPIT", "PIQUE", 
+"PIROG", "PITAS", "PITCH", "PITHS", "PITHY", "PITON", "PIVOT", 
+"PIXEL", "PIXES", "PIXIE", "PIZZA", "PLACE", "PLACK", "PLAID", 
+"PLAIN", "PLAIT", "PLANE", "PLANK", "PLANS", "PLANT", "PLASH", 
+"PLASM", "PLATE", "PLATO", "PLATS", "PLATY", "PLAYA", "PLAYS", 
+"PLAZA", "PLEAD", "PLEAS", "PLEAT", "PLEBE", "PLEBS", "PLENA", 
+"PLIED", "PLIER", "PLIES", "PLINK", "PLODS", "PLONK", "PLOPS", 
+"PLOTS", "PLOWS", "PLOYS", "PLUCK", "PLUGS", "PLUMB", "PLUME", 
+"PLUMP", "PLUMS", "PLUMY", "PLUNK", "PLUSH", "PLUTO", "PLYER", 
+"POACH", "POCKS", "POCKY", "PODGY", "PODIA", "POEMS", "POESY", 
+"POETS", "POILU", "POINT", "POISE", "POKED", "POKER", "POKES", 
+"POKEY", "POLAR", "POLED", "POLER", "POLES", "POLIO", "POLIS", 
+"POLIT", "POLKA", "POLLS", "POLYP", "POLYS", "POMES", "POMPS", 
+"PONCE", "PONDS", "PONES", "POOCH", "POOHS", "POOLS", "POOPS", 
+"POPES", "POPPA", "POPPY", "PORCH", "PORED", "PORES", "PORGY", 
+"PORKS", "PORKY", "PORNO", "PORNS", "PORTS", "POSED", "POSER", 
+"POSES", "POSIT", "POSSE", "POSTS", "POTSY", "POTTY", "POUCH", 
+"POUFF", "POUFS", "POULT", "POUND", "POURS", "POUTS", "POUTY", 
+"POWER", "POXED", "POXES", "PRAMS", "PRANA", "PRANK", "PRAOS", 
+"PRATE", "PRATS", "PRAUS", "PRAWN", "PRAYS", "PREEN", "PREPS", 
+"PRESS", "PREST", "PREXY", "PREYS", "PRICE", "PRICK", "PRICY", 
+"PRIDE", "PRIED", "PRIER", "PRIES", "PRIGS", "PRIMA", "PRIME", 
+"PRIMO", "PRIMP", "PRIMS", "PRINK", "PRINT", "PRIOR", "PRISE", 
+"PRISM", "PRISS", "PRIVY", "PRIZE", "PROAS", "PROBE", "PRODS", 
+"PROEM", "PROFS", "PROGS", "PROLE", "PROMS", "PRONE", "PRONG", 
+"PROOF", "PROPS", "PROSE", "PROSY", "PROUD", "PROVE", "PROWL", 
+"PROWS", "PROXY", "PRUDE", "PRUNE", "PRYER", "PSALM", "PSEUD", 
+"PSHAW", "PSYCH", "PUBES", "PUBIC", "PUBIS", "PUCES", "PUCKS", 
+"PUDGY", "PUFFS", "PUFFY", "PUGGY", "PUKED", "PUKES", "PUKKA", 
+"PULED", "PULER", "PULES", "PULLS", "PULPS", "PULPY", "PULSE", 
+"PUMAS", "PUMPS", "PUNCH", "PUNKS", "PUNKY", "PUNNY", "PUNTS", 
+"PUNTY", "PUPAE", "PUPAL", "PUPAS", "PUPIL", "PUPPY", "PUREE", 
+"PURER", "PURGE", "PURIM", "PURLS", "PURRS", "PURSE", "PURSY", 
+"PUSHY", "PUSSY", "PUTON", "PUTTS", "PUTTY", "PYGMY", "PYLON", 
+"PYRES", "PYREX", "PYRIC", "PYXES", "PYXIE", "PYXIS", "QAIDS", 
+"QATAR", "QIANA", "QOPHS", "QUACK", "QUADS", "QUAFF", "QUAGS", 
+"QUAIL", "QUAIS", "QUAKE", "QUAKY", "QUALE", "QUALM", "QUANT", 
+"QUARK", "QUART", "QUASH", "QUASI", "QUAYS", "QUEAN", "QUEEN", 
+"QUEER", "QUELL", "QUERN", "QUERY", "QUEST", "QUEUE", "QUEYS", 
+"QUICK", "QUIDS", "QUIET", "QUILL", "QUILT", "QUINT", "QUIPS", 
+"QUIPU", "QUIRE", "QUIRK", "QUIRT", "QUITE", "QUITO", "QUITS", 
+"QUODS", "QUOIN", "QUOIT", "QUOTA", "QUOTE", "QUOTH", "QURSH", 
+"RABBI", "RABIC", "RABID", "RACED", "RACER", "RACES", "RACKS", 
+"RADAR", "RADII", "RADIO", "RADIX", "RADON", "RAFTS", "RAGAS", 
+"RAGED", "RAGES", "RAGGY", "RAIDS", "RAILS", "RAINS", "RAINY", 
+"RAISE", "RAJAH", "RAJAS", "RAKED", "RAKER", "RAKES", "RALES", 
+"RALLY", "RALPH", "RAMIE", "RAMPS", "RANCH", "RANDS", "RANDY", 
+"RANEE", "RANGE", "RANGY", "RANIS", "RANKS", "RANTS", "RAPED", 
+"RAPER", "RAPES", "RAPID", "RARER", "RASED", "RASER", "RASES", 
+"RASPS", "RASPY", "RATCH", "RATED", "RATER", "RATES", "RATIO", 
+"RATTY", "RAVED", "RAVEL", "RAVEN", "RAVER", "RAVES", "RAWER", 
+"RAWLY", "RAYED", "RAYON", "RAZED", "RAZEE", "RAZER", "RAZES", 
+"RAZOR", "REACH", "REACT", "READD", "READS", "READY", "REALM", 
+"REALS", "REAMS", "REAPS", "REARM", "REARS", "REAVE", "REBBE", 
+"REBEC", "REBEL", "REBID", "REBOP", "REBUS", "REBUT", "RECAP", 
+"RECKS", "RECON", "RECTA", "RECTI", "RECTO", "RECUR", "RECUT", 
+"REDED", "REDES", "REDID", "REDIP", "REDLY", "REDOS", "REDOX", 
+"REDRY", "REDUX", "REDYE", "REEDS", "REEDY", "REEFS", "REEFY", 
+"REEKS", "REEKY", "REELS", "REEVE", "REFED", "REFER", "REFIT", 
+"REFIX", "REFLY", "REFRY", "REGAL", "REGES", "REGIA", "REHEM", 
+"REICH", "REIFY", "REIGN", "REINS", "REKEY", "RELAX", "RELAY", 
+"RELET", "RELIC", "RELIT", "REMAN", "REMAP", "REMET", "REMIT", 
+"REMIX", "RENAL", "RENDS", "RENEW", "RENIG", "RENTS", "REOIL", 
+"REPAY", "REPEL", "REPIN", "REPLY", "REPRO", "RERAN", "RERUN", 
+"RESAW", "RESAY", "RESEE", "RESET", "RESEW", "RESIN", "RESOW", 
+"RESTS", "RETCH", "RETIE", "RETRO", "RETRY", "REUSE", "REVEL", 
+"REVUE", "REWAX", "REWED", "REWIN", "REWON", "REXES", "RHEAS", 
+"RHEUM", "RHINE", "RHINO", "RHOMB", "RHUMB", "RHYME", "RHYTA", 
+"RIALS", "RIBBY", "RICED", "RICER", "RICES", "RICHE", "RICKS", 
+"RIDER", "RIDES", "RIDGE", "RIDGY", "RIELS", "RIFER", "RIFFS", 
+"RIFLE", "RIFTS", "RIGHT", "RIGID", "RIGOR", "RILED", "RILES", 
+"RILLS", "RIMED", "RIMES", "RINDS", "RINGS", "RINKS", "RINSE", 
+"RIOTS", "RIPEN", "RIPER", "RIPES", "RISEN", "RISER", "RISES", 
+"RISHI", "RISKS", "RISKY", "RISUS", "RITES", "RITZY", "RIVAL", 
+"RIVED", "RIVEN", "RIVER", "RIVES", "RIVET", "RIYAL", "ROACH", 
+"ROADS", "ROAMS", "ROANS", "ROARS", "ROAST", "ROBED", "ROBES", 
+"ROBIN", "ROBLE", "ROBOT", "ROCKS", "ROCKY", "RODEO", "ROGER", 
+"ROGUE", "ROILS", "ROILY", "ROLES", "ROLLS", "ROMAN", "ROMEO", 
+"ROMPS", "RONDO", "ROODS", "ROOFS", "ROOKS", "ROOKY", "ROOMS", 
+"ROOMY", "ROOST", "ROOTS", "ROOTY", "ROPED", "ROPER", "ROPES", 
+"ROSED", "ROSES", "ROSHI", "ROSIN", "ROTES", "ROTOR", "ROUES", 
+"ROUGE", "ROUGH", "ROUND", "ROUSE", "ROUST", "ROUTE", "ROUTS", 
+"ROVED", "ROVER", "ROVES", "ROWAN", "ROWDY", "ROWED", "ROWEL", 
+"ROWER", "ROYAL", "RUBES", "RUBLE", "RUCKS", "RUDDY", "RUDER", 
+"RUERS", "RUFFS", "RUGBY", "RUING", "RUINS", "RULED", "RULER", 
+"RULES", "RUMBA", "RUMMY", "RUMOR", "RUMPS", "RUNES", "RUNGS", 
+"RUNIC", "RUNNY", "RUNTS", "RUNTY", "RUPEE", "RURAL", "RUSES", 
+"RUSHY", "RUSKS", "RUSSE", "RUSTS", "RUSTY", "RUTHS", "RUTTY", 
+"SABER", "SABLE", "SABOT", "SABRA", "SACKS", "SACRA", "SADHU", 
+"SADLY", "SAFER", "SAFES", "SAGAS", "SAGER", "SAGES", "SAGGY", 
+"SAGOS", "SAHIB", "SAIDS", "SAILS", "SAINT", "SAITH", "SAKES", 
+"SAKIS", "SALAD", "SALEM", "SALES", "SALLY", "SALON", "SALSA", 
+"SALTS", "SALTY", "SALVE", "SALVO", "SAMBA", "SAMBO", "SAMOA", 
+"SANDS", "SANDY", "SANED", "SANER", "SANES", "SANGA", "SANGH", 
+"SANKA", "SANTA", "SAPID", "SAPOR", "SAPPY", "SARAH", "SARAN", 
+"SAREE", "SARGE", "SARIS", "SAROD", "SASSY", "SATAN", "SATED", 
+"SATES", "SATIN", "SATYR", "SAUCE", "SAUCY", "SAUDI", "SAULS", 
+"SAULT", "SAUNA", "SAUTE", "SAVED", "SAVER", "SAVES", "SAVOR", 
+"SAVOY", "SAVVY", "SAWED", "SAWER", "SAXES", "SAXON", "SAYEE", 
+"SAYER", "SAYST", "SCABS", "SCADS", "SCAGS", "SCALD", "SCALE", 
+"SCALP", "SCALY", "SCAMP", "SCAMS", "SCANS", "SCANT", "SCAPE", 
+"SCARE", "SCARF", "SCARP", "SCARS", "SCARY", "SCATS", "SCENE", 
+"SCENT", "SCHMO", "SCHUL", "SCHWA", "SCION", "SCOFF", "SCOLD", 
+"SCONE", "SCOOP", "SCOOT", "SCOPE", "SCORE", "SCORN", "SCOTS", 
+"SCOTT", "SCOUR", "SCOUT", "SCOWL", "SCOWS", "SCRAG", "SCRAM", 
+"SCRAP", "SCREE", "SCREW", "SCRIM", "SCRIP", "SCROD", "SCRUB", 
+"SCUBA", "SCUDS", "SCUFF", "SCULK", "SCULL", "SCULP", "SCUMS", 
+"SCUPS", "SCURF", "SCUTA", "SCUTE", "SCUTS", "SEALS", "SEAMS", 
+"SEAMY", "SEARS", "SEATS", "SECTS", "SEDAN", "SEDER", "SEDGE", 
+"SEDGY", "SEDUM", "SEEDS", "SEEDY", "SEEKS", "SEELS", "SEEMS", 
+"SEEPS", "SEEPY", "SEERS", "SEGNO", "SEGOS", "SEGUE", "SEIGE", 
+"SEINE", "SEISM", "SEIZE", "SELFS", "SELLS", "SEMEN", "SEMIS", 
+"SENDS", "SENNA", "SENOR", "SENSE", "SENSU", "SENTI", "SEOUL", 
+"SEPAL", "SEPIA", "SEPOY", "SEPTA", "SEPTS", "SERAL", "SERED", 
+"SERER", "SERES", "SERFS", "SERGE", "SERIF", "SERIN", "SEROW", 
+"SERUM", "SERVE", "SERVO", "SETAE", "SETAL", "SETON", "SETUP", 
+"SEVEN", "SEVER", "SEWED", "SEWER", "SEXED", "SEXES", "SEXTO", 
+"SEXTS", "SHACK", "SHADE", "SHADS", "SHADY", "SHAFT", "SHAGS", 
+"SHAHS", "SHAKE", "SHAKO", "SHAKY", "SHALE", "SHALL", "SHALT", 
+"SHALY", "SHAME", "SHAMS", "SHANK", "SHAPE", "SHARD", "SHARE", 
+"SHARK", "SHARP", "SHAVE", "SHAWL", "SHAWM", "SHAWN", "SHAWS", 
+"SHAYS", "SHEAF", "SHEAR", "SHEDS", "SHEEN", "SHEEP", "SHEER", 
+"SHEET", "SHEIK", "SHELF", "SHELL", "SHEOL", "SHERD", "SHEWN", 
+"SHEWS", "SHIED", "SHIER", "SHIES", "SHIFT", "SHILL", "SHILY", 
+"SHIMS", "SHINE", "SHINS", "SHINY", "SHIPS", "SHIPT", "SHIRE", 
+"SHIRK", "SHIRR", "SHIRT", "SHISH", "SHIST", "SHITS", "SHIVA", 
+"SHIVE", "SHIVS", "SHLEP", "SHOAL", "SHOAT", "SHOCK", "SHOED", 
+"SHOER", "SHOES", "SHOJI", "SHONE", "SHOOK", "SHOOS", "SHOOT", 
+"SHOPE", "SHOPS", "SHORE", "SHORN", "SHORT", "SHOTE", "SHOTS", 
+"SHOUT", "SHOVE", "SHOWN", "SHOWS", "SHOWY", "SHRED", "SHREW", 
+"SHRUB", "SHRUG", "SHUCK", "SHULS", "SHUNS", "SHUNT", "SHUSH", 
+"SHUTE", "SHUTS", "SHYER", "SHYLY", "SIBYL", "SICKS", "SIDED", 
+"SIDES", "SIDLE", "SIEGE", "SIEUR", "SIEVE", "SIFTS", "SIGHS", 
+"SIGHT", "SIGIL", "SIGMA", "SIGNS", "SIKHS", "SILEX", "SILKS", 
+"SILKY", "SILLS", "SILLY", "SILOS", "SILTS", "SILTY", "SILVA", 
+"SIMON", "SIMPS", "SINCE", "SINES", "SINEW", "SINGE", "SINGS", 
+"SINHS", "SINKS", "SINUS", "SIOUX", "SIPPY", "SIRED", "SIREE", 
+"SIREN", "SIRES", "SIRUP", "SISAL", "SISSY", "SITAR", "SITED", 
+"SITES", "SITUP", "SITUS", "SIXES", "SIXTE", "SIXTH", "SIXTY", 
+"SIZED", "SIZER", "SIZES", "SKAGS", "SKALD", "SKATE", "SKEAN", 
+"SKEET", "SKEIN", "SKEWS", "SKIDS", "SKIED", "SKIER", "SKIES", 
+"SKIEY", "SKIFF", "SKIIS", "SKILL", "SKIMP", "SKIMS", "SKINK", 
+"SKINS", "SKIPS", "SKIRL", "SKIRT", "SKITS", "SKOAL", "SKUAS", 
+"SKULK", "SKULL", "SKUNK", "SKYED", "SKYEY", "SLABS", "SLACK", 
+"SLAGS", "SLAIN", "SLAKE", "SLAMS", "SLANG", "SLANT", "SLAPS", 
+"SLASH", "SLATE", "SLATS", "SLATY", "SLAVE", "SLAVS", "SLAWS", 
+"SLAYS", "SLEDS", "SLEEK", "SLEEP", "SLEET", "SLEPT", "SLEWS", 
+"SLICE", "SLICK", "SLIDE", "SLIER", "SLILY", "SLIME", "SLIMS", 
+"SLIMY", "SLING", "SLINK", "SLIPS", "SLIPT", "SLITS", "SLOBS", 
+"SLOES", "SLOGS", "SLOOP", "SLOPE", "SLOPS", "SLOSH", "SLOTH", 
+"SLOTS", "SLOWS", "SLUBS", "SLUED", "SLUES", "SLUGS", "SLUMP", 
+"SLUMS", "SLUNG", "SLUNK", "SLURP", "SLURS", "SLUSH", "SLUTS", 
+"SLYER", "SLYLY", "SMACK", "SMALL", "SMART", "SMASH", "SMEAR", 
+"SMELL", "SMELT", "SMILE", "SMIRK", "SMITE", "SMITH", "SMOCK", 
+"SMOKE", "SMOKY", "SMOTE", "SMUTS", "SNACK", "SNAFU", "SNAGS", 
+"SNAIL", "SNAKE", "SNAKY", "SNAPS", "SNARE", "SNARK", "SNARL", 
+"SNEAK", "SNEER", "SNICK", "SNIDE", "SNIFF", "SNIPE", "SNIPS", 
+"SNITS", "SNOBS", "SNOOD", "SNOOP", "SNOOT", "SNORE", "SNORT", 
+"SNOTS", "SNOUT", "SNOWS", "SNOWY", "SNUBS", "SNUCK", "SNUFF", 
+"SNUGS", "SOAKS", "SOAPS", "SOAPY", "SOARS", "SOAVE", "SOBER", 
+"SOCKS", "SODAS", "SODDY", "SODOM", "SOFAR", "SOFAS", "SOFIA", 
+"SOFTS", "SOFTY", "SOGGY", "SOILS", "SOLAR", "SOLED", "SOLES", 
+"SOLID", "SOLOS", "SOLVE", "SOMAS", "SONAR", "SONDE", "SONES", 
+"SONGS", "SONIC", "SONNY", "SOOEY", "SOOTH", "SOOTS", "SOOTY", 
+"SOPHS", "SOPHY", "SOPOR", "SOPPY", "SOREL", "SORER", "SORES", 
+"SORRY", "SORTS", "SOUGH", "SOULS", "SOUND", "SOUPS", "SOUPY", 
+"SOURS", "SOUSE", "SOUTH", "SOWED", "SOWER", "SOYAS", "SPACE", 
+"SPADE", "SPAIN", "SPAKE", "SPALE", "SPANK", "SPANS", "SPARE", 
+"SPARK", "SPARS", "SPASM", "SPATE", "SPATS", "SPAWN", "SPAYS", 
+"SPEAK", "SPEAR", "SPECK", "SPECS", "SPEED", "SPELL", "SPELT", 
+"SPEND", "SPENT", "SPERM", "SPEWS", "SPICA", "SPICE", "SPICK", 
+"SPICS", "SPICY", "SPIED", "SPIEL", "SPIER", "SPIES", "SPIFF", 
+"SPIKE", "SPIKY", "SPILL", "SPILT", "SPINE", "SPINS", "SPINY", 
+"SPIRE", "SPIRY", "SPITE", "SPITS", "SPITZ", "SPLAT", "SPLAY", 
+"SPLIT", "SPOIL", "SPOKE", "SPOOF", "SPOOK", "SPOOL", "SPOON", 
+"SPOOR", "SPORE", "SPORT", "SPOTS", "SPOUT", "SPRAT", "SPRAY", 
+"SPREE", "SPRIG", "SPRIT", "SPUDS", "SPUED", "SPUES", "SPUME", 
+"SPUMY", "SPUNK", "SPURN", "SPURS", "SPURT", "SPUTA", "SQUAB", 
+"SQUAD", "SQUAT", "SQUAW", "SQUIB", "SQUID", "STABS", "STACK", 
+"STAFF", "STAGE", "STAGS", "STAGY", "STAID", "STAIN", "STAIR", 
+"STAKE", "STALE", "STALK", "STALL", "STAMP", "STAND", "STANK", 
+"STAPH", "STARE", "STARK", "STARS", "START", "STASH", "STATE", 
+"STATS", "STAVE", "STAYS", "STEAD", "STEAK", "STEAL", "STEAM", 
+"STEED", "STEEL", "STEEP", "STEER", "STEIN", "STELE", "STEMS", 
+"STENO", "STEPS", "STERE", "STERN", "STETS", "STEVE", "STEWS", 
+"STICK", "STIED", "STIES", "STIFF", "STILE", "STILL", "STILT", 
+"STIMY", "STING", "STINK", "STINT", "STIRS", "STOAS", "STOAT", 
+"STOCK", "STOGY", "STOIC", "STOKE", "STOLE", "STOMP", "STONE", 
+"STONY", "STOOD", "STOOL", "STOOP", "STOPS", "STOPT", "STORE", 
+"STORK", "STORM", "STORY", "STOUP", "STOUT", "STOVE", "STOWS", 
+"STRAP", "STRAW", "STRAY", "STREP", "STREW", "STRIA", "STRIP", 
+"STROP", "STRUM", "STRUT", "STUBS", "STUCK", "STUDS", "STUDY", 
+"STUFF", "STUMP", "STUNG", "STUNK", "STUNS", "STUNT", "STUPA", 
+"STUPE", "STYED", "STYES", "STYLE", "STYLI", "STYMY", "SUAVE", 
+"SUCKS", "SUCRE", "SUDAN", "SUDOR", "SUDSY", "SUEDE", "SUERS", 
+"SUETS", "SUETY", "SUGAR", "SUING", "SUITE", "SUITS", "SULFA", 
+"SULKS", "SULKY", "SULLY", "SUMAC", "SUMMA", "SUMOS", "SUMPS", 
+"SUNNY", "SUNUP", "SUPER", "SUPES", "SUPRA", "SURDS", "SURER", 
+"SURFS", "SURFY", "SURGE", "SURGY", "SURLY", "SUSAN", "SUTRA", 
+"SUTTA", "SWABS", "SWAGE", "SWAIL", "SWAIN", "SWALE", "SWAMI", 
+"SWAMP", "SWANG", "SWANK", "SWANS", "SWAPS", "SWARD", "SWARM", 
+"SWART", "SWASH", "SWATH", "SWATS", "SWAYS", "SWEAR", "SWEAT", 
+"SWEDE", "SWEEP", "SWEET", "SWELL", "SWEPT", "SWIFT", "SWIGS", 
+"SWILL", "SWIMS", "SWINE", "SWING", "SWIPE", "SWIRL", "SWISH", 
+"SWISS", "SWOON", "SWOOP", "SWOPS", "SWORD", "SWORE", "SWORN", 
+"SWUNG", "SYLPH", "SYNCH", "SYNCS", "SYNOD", "SYREN", "SYRIA", 
+"SYRUP", "TABBY", "TABLA", "TABLE", "TABOO", "TABOR", "TACET", 
+"TACHS", "TACIT", "TACKS", "TACKY", "TACOS", "TACTS", "TAELS", 
+"TAFFY", "TAIGA", "TAILS", "TAINT", "TAKEN", "TAKER", "TAKES", 
+"TALCS", "TALER", "TALES", "TALKS", "TALKY", "TALLY", "TALON", 
+"TALUS", "TAMED", "TAMER", "TAMES", "TAMMY", "TAMPA", "TAMPS", 
+"TANGO", "TANGS", "TANGY", "TANKA", "TANKS", "TANSY", "TANTO", 
+"TAPED", "TAPER", "TAPES", "TAPIR", "TARDE", "TARDO", "TARDY", 
+"TARED", "TARES", "TARNS", "TAROS", "TAROT", "TARPS", "TARRY", 
+"TARSI", "TARTS", "TASKS", "TASTE", "TASTY", "TATAR", "TATER", 
+"TATOO", "TATTY", "TAUNT", "TAUPE", "TAUTS", "TAWNY", "TAXED", 
+"TAXER", "TAXES", "TAXIS", "TAZZA", "TAZZE", "TEACH", "TEAKS", 
+"TEALS", "TEAMS", "TEARS", "TEARY", "TEASE", "TEATS", "TECHY", 
+"TECUM", "TEDDY", "TEEMS", "TEENS", "TEENY", "TEETH", "TELEX", 
+"TELLS", "TELLY", "TEMPI", "TEMPO", "TEMPS", "TEMPT", "TENCH", 
+"TENDS", "TENET", "TENON", "TENOR", "TENSE", "TENTH", "TENTS", 
+"TENTY", "TEPEE", "TEPID", "TERCE", "TERMS", "TERNE", "TERNS", 
+"TERRA", "TERRE", "TERRY", "TERSE", "TESLA", "TESTS", "TESTY", 
+"TETRA", "TEXAN", "TEXAS", "TEXTS", "THANE", "THANK", "THATS", 
+"THAWS", "THEFT", "THEIR", "THEME", "THENS", "THERE", "THERM", 
+"THESE", "THETA", "THEWS", "THEWY", "THICK", "THIEF", "THIGH", 
+"THINE", "THING", "THINK", "THINS", "THIRD", "THOLE", "THONG", 
+"THORN", "THORO", "THORP", "THOSE", "THOUS", "THREE", "THREW", 
+"THRIP", "THROB", "THROE", "THROW", "THRUM", "THUDS", "THUGS", 
+"THUMB", "THUMP", "THYME", "THYMI", "THYMY", "TIARA", "TIBER", 
+"TIBET", "TIBIA", "TICKS", "TIDAL", "TIDED", "TIDES", "TIERS", 
+"TIFFS", "TIGER", "TIGHT", "TIKES", "TIKIS", "TILDE", "TILED", 
+"TILER", "TILES", "TILLS", "TILTH", "TILTS", "TIMED", "TIMER", 
+"TIMES", "TIMID", "TINCT", "TINED", "TINES", "TINGE", "TINGS", 
+"TINNY", "TINTS", "TIPIS", "TIPPY", "TIPSY", "TIRED", "TIRES", 
+"TIROS", "TITAN", "TITER", "TITHE", "TITLE", "TITRE", "TITTY", 
+"TIZZY", "TOADS", "TOADY", "TOAST", "TODAY", "TODDY", "TOFFS", 
+"TOFFY", "TOFTS", "TOFUS", "TOGAE", "TOGAS", "TOILS", "TOKAY", 
+"TOKED", "TOKEN", "TOKES", "TOKYO", "TOLLS", "TOMBS", "TOMES", 
+"TOMMY", "TONAL", "TONED", "TONER", "TONES", "TONGS", "TONIC", 
+"TONNE", "TOOLS", "TOOTH", "TOOTS", "TOPAZ", "TOPED", "TOPER", 
+"TOPES", "TOPIC", "TOPOS", "TOQUE", "TORAH", "TORAS", "TORCH", 
+"TORCS", "TORES", "TORII", "TOROS", "TORSI", "TORSO", "TORTE", 
+"TORTS", "TORUS", "TOTAL", "TOTED", "TOTEM", "TOTER", "TOTES", 
+"TOUCH", "TOUGH", "TOURS", "TOUTS", "TOWED", "TOWEL", "TOWER", 
+"TOWNS", "TOWNY", "TOXIC", "TOXIN", "TOYED", "TOYER", "TOYON", 
+"TOYOS", "TRACE", "TRACK", "TRACT", "TRADE", "TRAIL", "TRAIN", 
+"TRAIT", "TRAMP", "TRAMS", "TRAPS", "TRAPT", "TRASH", "TRAVE", 
+"TRAWL", "TRAYS", "TREAD", "TREAT", "TREED", "TREES", "TREKS", 
+"TREND", "TRESS", "TRETS", "TREWS", "TREYS", "TRIAD", "TRIAL", 
+"TRIBE", "TRICE", "TRICK", "TRIED", "TRIER", "TRIES", "TRILL", 
+"TRIMS", "TRINE", "TRIOS", "TRIPE", "TRIPS", "TRITE", "TRODE", 
+"TROIS", "TROLL", "TROMP", "TROOP", "TROPE", "TROTH", "TROTS", 
+"TROUT", "TROVE", "TROWS", "TROYS", "TRUCE", "TRUCK", "TRUED", 
+"TRUER", "TRUES", "TRULL", "TRULY", "TRUMP", "TRUNK", "TRUSS", 
+"TRUST", "TRUTH", "TRYST", "TSARS", "TSKED", "TSUBA", "TUBAL", 
+"TUBAS", "TUBBY", "TUBED", "TUBER", "TUBES", "TUCKS", "TUDOR", 
+"TUFAS", "TUFFS", "TUFTS", "TUFTY", "TULES", "TULIP", "TULLE", 
+"TULSA", "TUMID", "TUMMY", "TUMOR", "TUMPS", "TUNAS", "TUNED", 
+"TUNER", "TUNES", "TUNIC", "TUNIS", "TUNNY", "TUQUE", "TURBO", 
+"TURDS", "TURFS", "TURFY", "TURKS", "TURNS", "TURPS", "TUSKS", 
+"TUTEE", "TUTOR", "TUTTI", "TUTUS", "TUXES", "TWAIN", "TWANG", 
+"TWATS", "TWEAK", "TWEED", "TWEEN", "TWEET", "TWERP", "TWICE", 
+"TWIER", "TWIGS", "TWILL", "TWINE", "TWINS", "TWINY", "TWIRL", 
+"TWIRP", "TWIST", "TWITS", "TWIXT", "TYING", "TYKES", "TYLER", 
+"TYPAL", "TYPED", "TYPES", "TYPIC", "TYPOS", "TYRED", "TYRES", 
+"TYROS", "TZARS", "UDDER", "UGLIS", "UKASE", "ULCER", "ULNAE", 
+"ULNAR", "ULNAS", "ULTRA", "ULVAS", "UMBEL", "UMBER", "UMBRA", 
+"UMIAK", "UMPED", "UNAPT", "UNARM", "UNARY", "UNBAR", "UNBID", 
+"UNBOX", "UNCAP", "UNCLE", "UNCOS", "UNCUT", "UNDER", "UNDID", 
+"UNDUE", "UNFED", "UNFIT", "UNFIX", "UNGOT", "UNHAT", "UNHIP", 
+"UNIFY", "UNION", "UNITE", "UNITS", "UNITY", "UNLAW", "UNLAY", 
+"UNLED", "UNLET", "UNLIT", "UNMAN", "UNMET", "UNPEG", "UNPEN", 
+"UNPIN", "UNRIG", "UNRIP", "UNSAY", "UNSET", "UNSEW", "UNSEX", 
+"UNTIE", "UNTIL", "UNWED", "UNWIT", "UNWON", "UNZIP", "UPEND", 
+"UPPED", "UPPER", "UPSET", "URBAN", "UREAL", "UREAS", "UREIC", 
+"URGED", "URGER", "URGES", "URINE", "URSAE", "USAGE", "USERS", 
+"USHER", "USING", "USUAL", "USURP", "USURY", "UTERI", "UTERO", 
+"UTILE", "UTTER", "UVEAL", "UVEAS", "UVULA", "VACUA", "VACUO", 
+"VADIS", "VAGAL", "VAGUE", "VAGUS", "VALES", "VALET", "VALID", 
+"VALOR", "VALSE", "VALUE", "VALVA", "VALVE", "VAMPS", "VANED", 
+"VANES", "VAPID", "VAPOR", "VASES", "VASTS", "VASTY", "VATIC", 
+"VAULT", "VAUNT", "VEALS", "VEALY", "VEDIC", "VEEPS", "VEERS", 
+"VEERY", "VEGAN", "VEGAS", "VEILS", "VEINS", "VEINY", "VELAR", 
+"VELDS", "VELDT", "VELUM", "VENAL", "VENDS", "VENIN", "VENOM", 
+"VENTS", "VENUE", "VENUS", "VERBS", "VERDE", "VERDI", "VERGE", 
+"VERSA", "VERSE", "VERSO", "VERVE", "VESTS", "VETCH", "VEXED", 
+"VEXER", "VEXES", "VIALS", "VIAND", "VIBES", "VICAR", "VICED", 
+"VICES", "VICHY", "VIDEO", "VIERS", "VIEWS", "VIEWY", "VIGIL", 
+"VIGOR", "VILER", "VILLA", "VILLI", "VINAL", "VINAS", "VINCA", 
+"VINED", "VINES", "VINIC", "VINOS", "VINYL", "VIOLA", "VIOLS", 
+"VIPER", "VIRAL", "VIREO", "VIRGO", "VIRID", "VIRTU", "VIRUS", 
+"VISAS", "VISED", "VISES", "VISIT", "VISOR", "VISTA", "VITAE", 
+"VITAL", "VITRO", "VIVID", "VIVRE", "VIXEN", "VIZIR", "VIZOR", 
+"VOCAL", "VOCES", "VODKA", "VOGUE", "VOICE", "VOIDS", "VOILA", 
+"VOILE", "VOLES", "VOLGA", "VOLTA", "VOLTS", "VOMIT", "VOTED", 
+"VOTER", "VOTES", "VOUCH", "VOWED", "VOWEL", "VOWER", "VROOM", 
+"VROUW", "VROWS", "VUGGS", "VUGGY", "VUGHS", "VULGO", "VULVA", 
+"VYING", "WACKS", "WACKY", "WADDY", "WADED", "WADER", "WADES", 
+"WADIS", "WAFER", "WAFTS", "WAGED", "WAGER", "WAGES", "WAGON", 
+"WAHOO", "WAIFS", "WAILS", "WAINS", "WAIST", "WAITS", "WAIVE", 
+"WAKED", "WAKEN", "WAKER", "WAKES", "WALED", "WALER", "WALES", 
+"WALKS", "WALLA", "WALLS", "WALLY", "WALTZ", "WANDS", "WANED", 
+"WANES", "WANLY", "WANTS", "WARDS", "WARED", "WARES", "WARKS", 
+"WARMS", "WARNS", "WARPS", "WARTS", "WARTY", "WASHY", "WASPS", 
+"WASPY", "WASTE", "WASTS", "WATCH", "WATER", "WATTS", "WAUGH", 
+"WAULS", "WAVED", "WAVER", "WAVES", "WAVEY", "WAWLS", "WAXED", 
+"WAXEN", "WAXER", "WAXES", "WAYNE", "WE'RE", "WE'VE", "WEALD", 
+"WEALS", "WEANS", "WEARS", "WEARY", "WEAVE", "WEBBY", "WEBER", 
+"WEDGE", "WEDGY", "WEEDS", "WEEDY", "WEEKS", "WEENS", "WEENY", 
+"WEEPS", "WEEPY", "WEEST", "WEFTS", "WEIGH", "WEIRD", "WEIRS", 
+"WELCH", "WELDS", "WELLS", "WELSH", "WELTS", "WENCH", "WENDS", 
+"WENNY", "WESTS", "WETLY", "WHACK", "WHALE", "WHAMS", "WHANG", 
+"WHAPS", "WHARF", "WHATS", "WHEAL", "WHEAT", "WHEEL", "WHELK", 
+"WHELM", "WHELP", "WHENS", "WHERE", "WHETS", "WHEWS", "WHEYS", 
+"WHICH", "WHIFF", "WHIGS", "WHILE", "WHIMS", "WHINE", "WHINY", 
+"WHIPS", "WHIPT", "WHIRL", "WHIRR", "WHIRS", "WHISH", "WHISK", 
+"WHIST", "WHITE", "WHITS", "WHITY", "WHIZZ", "WHOLE", "WHOMP", 
+"WHOOP", "WHOPS", "WHORE", "WHORL", "WHOSE", "WHOSO", "WHUMP", 
+"WICKS", "WIDEN", "WIDER", "WIDES", "WIDOW", "WIDTH", "WIELD", 
+"WIERD", "WIFED", "WIFES", "WIGHT", "WILCO", "WILDS", "WILED", 
+"WILES", "WILLS", "WILLY", "WILTS", "WINCE", "WINCH", "WINDS", 
+"WINDY", "WINED", "WINES", "WINEY", "WINGS", "WINGY", "WINKS", 
+"WINOS", "WIPED", "WIPER", "WIPES", "WIRED", "WIRER", "WIRES", 
+"WISED", "WISER", "WISES", "WISHY", "WISPS", "WISPY", "WISTS", 
+"WITCH", "WITHE", "WITHY", "WITTY", "WIVED", "WIVER", "WIVES", 
+"WIZEN", "WIZES", "WOADS", "WOALD", "WOFUL", "WOKEN", "WOLDS", 
+"WOLFS", "WOMAN", "WOMBS", "WOMBY", "WOMEN", "WONKY", "WONTS", 
+"WOODS", "WOODY", "WOOED", "WOOER", "WOOFS", "WOOLS", "WOOLY", 
+"WOOPS", "WOOSH", "WOOZY", "WORDS", "WORDY", "WORKS", "WORLD", 
+"WORMS", "WORMY", "WORRY", "WORSE", "WORST", "WORTH", "WORTS", 
+"WOULD", "WOUND", "WOVEN", "WOWED", "WRACK", "WRANG", "WRAPS", 
+"WRAPT", "WRATH", "WREAK", "WRECK", "WRENS", "WREST", "WRIED", 
+"WRIER", "WRIES", "WRING", "WRIST", "WRITE", "WRITS", "WRONG", 
+"WROTE", "WROTH", "WRUNG", "WRYER", "WRYLY", "WURST", "XEBEC", 
+"XENIA", "XENIC", "XENON", "XERIC", "XEROX", "XVIII", "XXIII", 
+"XYLAN", "XYLEM", "XYSTS", "YACHT", "YACKS", "YAHOO", "YAMEN", 
+"YAMUN", "YANKS", "YARDS", "YARER", "YARNS", "YAWED", "YAWLS", 
+"YAWNS", "YAWPS", "YEARN", "YEARS", "YEAST", "YEGGS", "YELLS", 
+"YELPS", "YEMEN", "YENTA", "YERBA", "YESES", "YETIS", "YIELD", 
+"YIPES", "YODEL", "YODHS", "YODLE", "YOGAS", "YOGEE", "YOGHS", 
+"YOGIC", "YOGIN", "YOGIS", "YOKED", "YOKEL", "YOKES", "YOLKS", 
+"YOLKY", "YONIS", "YORES", "YOU'D", "YOUNG", "YOURN", "YOURS", 
+"YOUSE", "YOUTH", "YOWED", "YOWIE", "YOWLS", "YUCCA", "YUKON", 
+"YULES", "YUMMY", "YURTS", "ZAIRE", "ZARFS", "ZAZEN", "ZEALS", 
+"ZEBRA", "ZEBUS", "ZEINS", "ZEISS", "ZENDO", "ZEROS", "ZESTS", 
+"ZESTY", "ZETAS", "ZILCH", "ZINCS", "ZINCY", "ZINGS", "ZINGY", 
+"ZINKY", "ZIPPY", "ZITIS", "ZLOTY", "ZOEAS", "ZOMBI", "ZONAL", 
+"ZONED", "ZONER", "ZONES", "ZOOID", "ZOOKS", "ZOOMS", "ZOONS", 
+"ZOWIE", "ZULUS", "ZUNIS"
+		};
+		int wordArrLength = 6919; 
+		int wordSize = 5;
+		int total = 15;	
+	
+	// Place a word in the string total times, 
+	// making sure it doesn't overwrite another 
+	// word or get placed right next to it
+	int place;
+	int takenWords[total];
+	boolean valid;
+	char word[wordSize];
+	boolean pickedWord = FALSE;
+	int left = total;
+	char correctWord[wordSize];
+	while(left>0){
+		valid = TRUE;
+		place = rand()%(408-wordSize);
+		for(i=place-1; i<place+wordSize+1; i++){
+			if(bigString[i] > 64 && bigString[i] < 91){
+				valid = FALSE;
+			}
+		}
+		if(valid){
+			int wordLoc = rand()%wordArrLength;
+			for(i=0;i<=total-left;i++)
+			{
+				if(wordLoc == takenWords[i])
+					valid = FALSE;
+			}
+			if(valid){
+				for(i=0;i<wordSize;i++)
+					word[i] = wordArr[wordLoc][i];
+				for(i=place; i<place+sizeof(word); i++){
+					bigString[i] = word[i-place];
+					// Pick the first word to be correct, then indicate that we picked a word
+					if(!pickedWord)
+						correctWord[i-place] = word[i-place];
+				}
+			pickedWord = TRUE;
+			left--;
+			}
+		}
+	}
+	
+	
+	// Create and fill a boolean array to keep track of which brackets were used
+	boolean usedBrackets[408];
+	for(i=0; i<408; i++){
+		usedBrackets[i] = TRUE;
+	}
+	
+	
+	// Print the hex and the filled bigString
+	char temp[12];	
+	int current = 0;
+	for(i=5; i<22; i++){
+		// Print left side
+		int j;
+		for(j=0; j<12; j++){
+			temp[j] = bigString[j+current];
+		}
+		printChoicesLeft(arbHex,temp,i);
+		current = current + 12;
+		arbHex = arbHex + 12;
+	}
+	
+	for(i=5; i<22; i++){
+		// Print right side
+		int j;
+		for(j=0; j<12; j++){
+			temp[j] = bigString[j+current];
+		}
+		printChoicesRight(arbHex,temp,i);
+		current = current + 12;
+		arbHex = arbHex + 12;
+	}
+	
+	
+	mvprintw(21,40,"%c",'>');
+	move(5,7);
+	char currentChar[12]; // Max length chrrentChar could be (total possible length of a bracket trick)
+	currentChar[0] = mvinch(5,7);
+	
+	int y,x,origy,origx,starty,startx;	// values that keep track of current yx locations, and original ones
+	int wordLength;			// How long a word is
+	int charStart;			// where character counting starts for brackets
+	char keyPress;			// key pressed by user
+	int charCounter;		// counts currentChar - used for incrementing currentChar to print or change it
+	int bracketLength;		// length of a bracket trick
+	char endBracket;		// the end bracket that corresponds to currentChar[0];
+	int bracketTricks=0;	// Total number of bracket tricks used
+	boolean needsClearing = FALSE;	// Whether or not highlights need to be purged
+	boolean needsClearingMultiLine = FALSE; 	// Whether or not a multi line highlight needs to be purged
+	char output[12];		// Used for side terminal output
+	int allowances = 4;
+	
+	while(1){
+		getyx(stdscr,y,x);
+		
+		// Get allowances left
+		mvprintw(1,0,"                              ");
+		mvprintw(3,0,"                              ");
+		switch(allowances){
+			case 1: mvprintw(3,0,"1 ATTEMPT(S) LEFT: *");
+					attron(A_BLINK);
+					mvprintw(1,0,"!!! WARNING: LOCKOUT IMNINENT !!!");
+					attroff(A_BLINK);
+					attron(A_BOLD);
+					break;
+			case 2: mvprintw(3,0,"2 ATTEMPT(S) LEFT: * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 3: mvprintw(3,0,"3 ATTEMPT(S) LEFT: * * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 4: mvprintw(3,0,"4 ATTEMPT(S) LEFT: * * * *");
+					mvprintw(1,0,"ENTER PASSWORD NOW");
+					break;
+			case 0: clear();
+					mvprintw(10,20,"TERMINAL LOCKED");
+					mvprintw(12,12,"PLEASE CONTACT AN ADMINISTRATOR");
+					refresh();
+					getch();
+					exit(0);
+		}
+		refresh();
+		move(y,x);
+		// Check if highlights need to be purged
+		if(needsClearing){
+			charCounter = 0;
+			while(charCounter!=bracketLength+1){
+				currentChar[charCounter] = mvinch(origy,charStart+charCounter);
+				mvprintw(origy,charStart+charCounter,"%c",(int)currentChar[charCounter]);
+				charCounter++;
+			}
+			mvprintw(21,41,"            ",currentChar[0]);
+			needsClearing = FALSE;
+			move(y,origx);
+		}
+		if(needsClearingMultiLine){
+			charCounter = 0;
+			int timesDown = 0;
+			while(charCounter!=wordLength){
+				currentChar[charCounter] = mvinch(starty,startx);
+				mvprintw(starty,startx,"%c",currentChar[charCounter]);
+				charCounter++;
+				startx++;
+				if(startx==19 || startx==39){
+					startx-=12;
+					starty++;
+				}
+			}
+			mvprintw(21,41,"            ",currentChar[0]);
+			needsClearingMultiLine = FALSE;
+			move(y,x);
+		}
+		// Clear the char array
+		for(i=0;i<12;i++)
+			currentChar[i]=' ';
+		currentChar[0] = mvinch(y,x);
+		// Set the new y and x to origy and origx
+		origy = y;
+		origx = x;
+		// Check for bracket tricks
+		if((currentChar[0]=='(' || currentChar[0]=='<' || currentChar[0]=='[' || currentChar[0]=='{') && usedBrackets[getCharLoc(y,x)] && bracketTricks<total){
+			charStart = x;
+			bracketLength=0;
+			while(x!=18 && x!=38){
+				x++;
+				endBracket = mvinch(y,x);
+				bracketLength++;
+			if((endBracket == ')' && currentChar[0]=='(') || 
+				(endBracket == '>' && currentChar[0]=='<') || 
+				(endBracket == ']' && currentChar[0]=='[') || 
+				(endBracket == '}' && currentChar[0]=='{')){
+					// Reprint the bracket trick with highlight
+					attron(A_STANDOUT);
+					charCounter = 0;
+					while(TRUE){
+						currentChar[charCounter] = mvinch(y,charStart+charCounter);
+						mvprintw(y,charStart+charCounter,"%c",currentChar[charCounter]);
+						if(currentChar[charCounter] == endBracket)
+							break;
+						charCounter++;
+					}
+					attroff(A_STANDOUT);
+					// Print the bracket trick to output
+					attron(A_BOLD);
+					for(i=0;i<=charCounter;i++)
+						mvprintw(21,41+i,"%c",(int)currentChar[i]);
+					// Notify that highlighting will need to be cleared next move
+					needsClearing = TRUE;
+				}
+			}
+			if(!((endBracket == ')' && currentChar[0]=='(') || 
+				(endBracket == '>' && currentChar[0]=='<') || 
+				(endBracket == ']' && currentChar[0]=='[') || 
+				(endBracket == '}' && currentChar[0]=='{'))){
+				mvprintw(21,41,"%c",currentChar[0]);
+			}
+		}
+		// Check for letters
+		else if(currentChar[0]>64 && currentChar[0]<91){
+			// Check for letter behind the current location
+			int tempx = x;
+			int tempy = y;
+			while(bigString[getCharLoc(tempy,tempx)-1]>64 && bigString[getCharLoc(tempy,tempx)-1]<91){
+				currentChar[0] = bigString[getCharLoc(tempy,tempx)];
+				tempx--;
+				if(tempx==6 || tempx==26){
+					tempx+=12;
+					tempy--;
+				}
+			}
+			startx = tempx;
+			starty = tempy;	// We'll need the location of the first char for cleaning
+			// And start there
+			charCounter = 0;
+			while(bigString[getCharLoc(tempy,tempx)+1]>64 && bigString[getCharLoc(tempy,tempx)+1]<91){
+				currentChar[charCounter] = bigString[getCharLoc(tempy,tempx)];
+				charCounter++;
+				tempx++;
+				if(tempx==19 || tempx==39){
+					tempx-=12;
+					tempy++;
+				}
+			}
+			// Now currentChar is the String, and charCounter+1 is the length
+			wordLength = charCounter+1;
+			// Reprint the word with highlight
+			tempx = startx;
+			tempy = starty;
+			attron(A_STANDOUT);
+			charCounter = 0;
+			while(charCounter!=wordLength){
+				currentChar[charCounter] = mvinch(tempy,tempx);
+				mvprintw(tempy,tempx,"%c",currentChar[charCounter]);
+				charCounter++;
+				tempx++;
+				if(tempx==19 || tempx==39){
+					tempx-=12;
+					tempy++;
+				}
+			}
+					attroff(A_STANDOUT);
+					// Print the word to output
+					attron(A_BOLD);
+					for(i=0;i<charCounter;i++)
+						mvprintw(21,41+i,"%c",(int)currentChar[i]);
+					// Notify that highlighting will need to be cleared next move
+					needsClearingMultiLine = TRUE;
+		}
+		// Nothing was found, print current char
+		else
+			mvprintw(21,41,"%c",currentChar[0]);
+		
+		move(origy,origx);
+		refresh();
+		
+		keyPress = getch();
+		getyx(stdscr,y,x);
+		if(keyPress=='w'){
+			if(y>5)
+				move(y-1,x);
+		}
+		if(keyPress=='s'){
+			if(y<21)
+				move(y+1,x);
+		}
+		if(keyPress=='a'){
+			if(x>7){
+				if(x==27)
+					move(y,18);
+				else
+					move(y,x-1);
+			}
+				
+		}
+		if(keyPress=='d'){
+			if(x<38){
+				if(x==18)
+					move(y,27);
+				else
+					move(y,x+1);
+			}
+		}
+		if(keyPress==3)		// Ctrl-C
+			exit(0);
+		if(keyPress=='\n'){	// Enter
+			mvprintw(17,40,"              ");
+			mvprintw(18,40,"              ");
+			mvprintw(19,40,"              ");
+			// If the char is a left bracket
+			if(((currentChar[0]=='(') && currentCharContains(currentChar,')')) || 
+			   (currentChar[0]=='<' && currentCharContains(currentChar,'>')) || 
+			   (currentChar[0]=='[' && currentCharContains(currentChar,']')) || 
+			   (currentChar[0]=='{' && currentCharContains(currentChar,'}'))){
+				// Set the selected bracket as used
+				usedBrackets[getCharLoc(y,x)] = FALSE;
+				// Increment total bracket tricks used
+				bracketTricks++;
+				if(rand()%5==0){
+					// 20% chance of allowance replenish
+					sprintf(output,"Allowance   ");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"replenished.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					allowances = 4;
+				}
+				else{
+					// Remove a dud
+					int tempx,tempy;
+					pickagain:do{
+						if(rand()%2==0)
+						tempx = (rand()%12)+7;
+					else
+						tempx = (rand()%12)+27;
+					tempy = (rand()%17)+5;
+					} while(!(bigString[getCharLoc(tempy,tempx)]>64 && bigString[getCharLoc(tempy,tempx)]<91));
+					while(bigString[getCharLoc(tempy,tempx)-1]>64 && bigString[getCharLoc(tempy,tempx)-1]<91){
+						tempx--;
+						if(tempx==6 || tempx==26){
+							tempx+=12;
+							tempy--;
+						}
+					}
+
+					startx = tempx;
+					starty = tempy;
+					
+					charCounter = 0;
+					while(bigString[getCharLoc(tempy,tempx)+1]>64 && bigString[getCharLoc(tempy,tempx)+1]<91){
+						currentChar[charCounter] = bigString[getCharLoc(tempy,tempx)];
+						charCounter++;
+						tempx++;
+						if(tempx==19 || tempx==39){
+							tempx-=12;
+							tempy++;
+						}
+					}
+					// Check if currentChar = correctWord
+					boolean allCorrect=TRUE;
+					for(i=0;i<wordSize;i++){
+						if(currentChar[i]!=correctWord[i])
+							allCorrect = FALSE;
+					}
+					if(allCorrect)
+						goto pickagain;
+					
+					tempx = startx;
+					tempy = starty;
+					while(bigString[getCharLoc(tempy,tempx)]>64 && bigString[getCharLoc(tempy,tempx)]<91){
+						mvprintw(tempy,tempx,"%c",'.');
+						bigString[getCharLoc(tempy,tempx)] = '.';
+						tempx++;
+						if(tempx==19 || tempx==39){
+							tempx-=12;
+							tempy++;
+						}
+					}
+					
+					sprintf(output,"Dud removed.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+			
+				}
+			}
+			// Else compare it to the correct word
+			else{
+				int rightLetters = wordSize;
+				for(i=0;i<wordSize; i++){
+					if(currentChar[i]!=correctWord[i])
+						rightLetters--;
+				}
+				if(rightLetters==wordSize){
+					mvprintw(15,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(15,41+i,"%c",currentChar[i]);
+					}
+					sprintf(output,"Exact match!");
+					mvprintw(16,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(16,41+i,"%c",output[i]);
+					}
+					sprintf(output,"Please wait ");
+					mvprintw(17,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(17,41+i,"%c",output[i]);
+					}
+					sprintf(output,"while system");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"is accessed.");
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					refresh();
+					Sleep(3000);
+					endwin();
+					exit(0);
+					
+				}
+				else{
+					mvprintw(17,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(17,41+i,"%c",currentChar[i]);
+					}
+					sprintf(output,"Entry denied");
+					mvprintw(18,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(18,41+i,"%c",output[i]);
+					}
+					sprintf(output,"%d/%d correct.",rightLetters,wordSize);
+					mvprintw(19,40,">");
+					for(i=0;i<12;i++){
+						mvprintw(19,41+i,"%c",output[i]);
+					}
+					allowances--;
+				}
+			}
+			move(y,x);
+		} 	
+		refresh();
+		
+	}
+
+	endwin();
+}
+
+
+int getCharLoc(int y, int x){
+	// Left side
+	if(x<19)
+		return 12*(y-5)+(x-7);
+	// Right side
+	else
+		return 12*(y-5)+(x-27+204);
+}
+
+int main(){
+
+	srand ( (unsigned)time(NULL) );
+	initscr();
+	noecho();
+	refresh();
+	attron(A_BOLD);
+	nodelay(stdscr, TRUE);
+	if(has_colors() == TRUE){
+		// Colors
+		start_color();
+		init_pair(1,COLOR_GREEN,COLOR_BLACK);
+		attron(COLOR_PAIR(1));
+	}
+
+	intro();
+	pass();
+
+	
+	return 0;
+}

BIN
src/dep/bin/pdcurses.dll


+ 1384 - 0
src/dep/include/curses.h

@@ -0,0 +1,1384 @@
+#ifndef PDC_DLL_BUILD
+# define PDC_DLL_BUILD
+#endif
+#ifndef PDC_WIDE
+# define PDC_WIDE
+#endif
+
+/* Public Domain Curses */
+
+/* $Id: curses.h,v 1.295 2008/07/15 17:13:25 wmcbrine Exp $ */
+
+/*----------------------------------------------------------------------*
+ *                              PDCurses                                *
+ *----------------------------------------------------------------------*/
+
+#ifndef __PDCURSES__
+#define __PDCURSES__ 1
+
+/*man-start**************************************************************
+
+PDCurses definitions list:  (Only define those needed)
+
+    XCURSES         True if compiling for X11.
+    PDC_RGB         True if you want to use RGB color definitions
+                    (Red = 1, Green = 2, Blue = 4) instead of BGR.
+    PDC_WIDE        True if building wide-character support.
+    PDC_DLL_BUILD   True if building a Win32 DLL.
+    NCURSES_MOUSE_VERSION   Use the ncurses mouse API instead
+                            of PDCurses' traditional mouse API.
+
+PDCurses portable platform definitions list:
+
+    PDC_BUILD       Defines API build version.
+    PDCURSES        Enables access to PDCurses-only routines.
+    XOPEN           Always true.
+    SYSVcurses      True if you are compiling for SYSV portability.
+    BSDcurses       True if you are compiling for BSD portability.
+
+**man-end****************************************************************/
+
+#define PDC_BUILD 3401
+#define PDCURSES        1      /* PDCurses-only routines */
+#define XOPEN           1      /* X/Open Curses routines */
+#define SYSVcurses      1      /* System V Curses routines */
+#define BSDcurses       1      /* BSD Curses routines */
+#define CHTYPE_LONG     1      /* size of chtype; long */
+
+/*----------------------------------------------------------------------*/
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>             /* Required by X/Open usage below */
+
+#ifdef PDC_WIDE
+# include <wchar.h>
+#endif
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+# define bool _bool
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses Manifest Constants
+ *
+ */
+
+#ifndef FALSE
+# define FALSE 0
+#endif
+#ifndef TRUE
+# define TRUE 1
+#endif
+#ifndef NULL
+# define NULL (void *)0
+#endif
+#ifndef ERR
+# define ERR (-1)
+#endif
+#ifndef OK
+# define OK 0
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses Type Declarations
+ *
+ */
+
+typedef unsigned char bool;    /* PDCurses Boolean type */
+
+#ifdef CHTYPE_LONG
+# if _LP64
+typedef unsigned int chtype;
+# else
+typedef unsigned long chtype;  /* 16-bit attr + 16-bit char */
+# endif
+#else
+typedef unsigned short chtype; /* 8-bit attr + 8-bit char */
+#endif
+
+#ifdef PDC_WIDE
+typedef chtype cchar_t;
+#endif
+
+typedef chtype attr_t;
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses Mouse Interface -- SYSVR4, with extensions
+ *
+ */
+
+typedef struct
+{
+    int x;           /* absolute column, 0 based, measured in characters */
+    int y;           /* absolute row, 0 based, measured in characters */
+    short button[3]; /* state of each button */
+    int changes;     /* flags indicating what has changed with the mouse */
+} MOUSE_STATUS;
+
+#define BUTTON_RELEASED         0x0000
+#define BUTTON_PRESSED          0x0001
+#define BUTTON_CLICKED          0x0002
+#define BUTTON_DOUBLE_CLICKED   0x0003
+#define BUTTON_TRIPLE_CLICKED   0x0004
+#define BUTTON_MOVED            0x0005  /* PDCurses */
+#define WHEEL_SCROLLED          0x0006  /* PDCurses */
+#define BUTTON_ACTION_MASK      0x0007  /* PDCurses */
+
+#define PDC_BUTTON_SHIFT        0x0008  /* PDCurses */
+#define PDC_BUTTON_CONTROL      0x0010  /* PDCurses */
+#define PDC_BUTTON_ALT          0x0020  /* PDCurses */
+#define BUTTON_MODIFIER_MASK    0x0038  /* PDCurses */
+
+#define MOUSE_X_POS             (Mouse_status.x)
+#define MOUSE_Y_POS             (Mouse_status.y)
+
+/*
+ * Bits associated with the .changes field:
+ *   3         2         1         0
+ * 210987654321098765432109876543210
+ *                                 1 <- button 1 has changed
+ *                                10 <- button 2 has changed
+ *                               100 <- button 3 has changed
+ *                              1000 <- mouse has moved
+ *                             10000 <- mouse position report
+ *                            100000 <- mouse wheel up
+ *                           1000000 <- mouse wheel down
+ */
+
+#define PDC_MOUSE_MOVED         0x0008
+#define PDC_MOUSE_POSITION      0x0010
+#define PDC_MOUSE_WHEEL_UP      0x0020
+#define PDC_MOUSE_WHEEL_DOWN    0x0040
+
+#define A_BUTTON_CHANGED        (Mouse_status.changes & 7)
+#define MOUSE_MOVED             (Mouse_status.changes & PDC_MOUSE_MOVED)
+#define MOUSE_POS_REPORT        (Mouse_status.changes & PDC_MOUSE_POSITION)
+#define BUTTON_CHANGED(x)       (Mouse_status.changes & (1 << ((x) - 1)))
+#define BUTTON_STATUS(x)        (Mouse_status.button[(x) - 1])
+#define MOUSE_WHEEL_UP          (Mouse_status.changes & PDC_MOUSE_WHEEL_UP)
+#define MOUSE_WHEEL_DOWN        (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN)
+
+/* mouse bit-masks */
+
+#define BUTTON1_RELEASED        0x00000001L
+#define BUTTON1_PRESSED         0x00000002L
+#define BUTTON1_CLICKED         0x00000004L
+#define BUTTON1_DOUBLE_CLICKED  0x00000008L
+#define BUTTON1_TRIPLE_CLICKED  0x00000010L
+#define BUTTON1_MOVED           0x00000010L /* PDCurses */
+
+#define BUTTON2_RELEASED        0x00000020L
+#define BUTTON2_PRESSED         0x00000040L
+#define BUTTON2_CLICKED         0x00000080L
+#define BUTTON2_DOUBLE_CLICKED  0x00000100L
+#define BUTTON2_TRIPLE_CLICKED  0x00000200L
+#define BUTTON2_MOVED           0x00000200L /* PDCurses */
+
+#define BUTTON3_RELEASED        0x00000400L
+#define BUTTON3_PRESSED         0x00000800L
+#define BUTTON3_CLICKED         0x00001000L
+#define BUTTON3_DOUBLE_CLICKED  0x00002000L
+#define BUTTON3_TRIPLE_CLICKED  0x00004000L
+#define BUTTON3_MOVED           0x00004000L /* PDCurses */
+
+/* For the ncurses-compatible functions only, BUTTON4_PRESSED and 
+   BUTTON5_PRESSED are returned for mouse scroll wheel up and down; 
+   otherwise PDCurses doesn't support buttons 4 and 5 */
+
+#define BUTTON4_RELEASED        0x00008000L
+#define BUTTON4_PRESSED         0x00010000L
+#define BUTTON4_CLICKED         0x00020000L
+#define BUTTON4_DOUBLE_CLICKED  0x00040000L
+#define BUTTON4_TRIPLE_CLICKED  0x00080000L
+
+#define BUTTON5_RELEASED        0x00100000L
+#define BUTTON5_PRESSED         0x00200000L
+#define BUTTON5_CLICKED         0x00400000L
+#define BUTTON5_DOUBLE_CLICKED  0x00800000L
+#define BUTTON5_TRIPLE_CLICKED  0x01000000L
+
+#define MOUSE_WHEEL_SCROLL      0x02000000L /* PDCurses */
+#define BUTTON_MODIFIER_SHIFT   0x04000000L /* PDCurses */
+#define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */
+#define BUTTON_MODIFIER_ALT     0x10000000L /* PDCurses */
+
+#define ALL_MOUSE_EVENTS        0x1fffffffL
+#define REPORT_MOUSE_POSITION   0x20000000L
+
+/* ncurses mouse interface */
+
+typedef unsigned long mmask_t;
+
+typedef struct
+{
+        short id;       /* unused, always 0 */
+        int x, y, z;    /* x, y same as MOUSE_STATUS; z unused */
+        mmask_t bstate; /* equivalent to changes + button[], but
+                           in the same format as used for mousemask() */
+} MEVENT;
+
+#ifdef NCURSES_MOUSE_VERSION
+# define BUTTON_SHIFT   BUTTON_MODIFIER_SHIFT
+# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL
+# define BUTTON_CTRL    BUTTON_MODIFIER_CONTROL
+# define BUTTON_ALT     BUTTON_MODIFIER_ALT
+#else
+# define BUTTON_SHIFT   PDC_BUTTON_SHIFT
+# define BUTTON_CONTROL PDC_BUTTON_CONTROL
+# define BUTTON_ALT     PDC_BUTTON_ALT
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses Structure Definitions
+ *
+ */
+
+typedef struct _win       /* definition of a window */
+{
+    int   _cury;          /* current pseudo-cursor */
+    int   _curx;
+    int   _maxy;          /* max window coordinates */
+    int   _maxx;
+    int   _begy;          /* origin on screen */
+    int   _begx;
+    int   _flags;         /* window properties */
+    chtype _attrs;        /* standard attributes and colors */
+    chtype _bkgd;         /* background, normally blank */
+    bool  _clear;         /* causes clear at next refresh */
+    bool  _leaveit;       /* leaves cursor where it is */
+    bool  _scroll;        /* allows window scrolling */
+    bool  _nodelay;       /* input character wait flag */
+    bool  _immed;         /* immediate update flag */
+    bool  _sync;          /* synchronise window ancestors */
+    bool  _use_keypad;    /* flags keypad key mode active */
+    chtype **_y;          /* pointer to line pointer array */
+    int   *_firstch;      /* first changed character in line */
+    int   *_lastch;       /* last changed character in line */
+    int   _tmarg;         /* top of scrolling region */
+    int   _bmarg;         /* bottom of scrolling region */
+    int   _delayms;       /* milliseconds of delay for getch() */
+    int   _parx, _pary;   /* coords relative to parent (0,0) */
+    struct _win *_parent; /* subwin's pointer to parent win */
+} WINDOW;
+
+/* Avoid using the SCREEN struct directly -- use the corresponding 
+   functions if possible. This struct may eventually be made private. */
+
+typedef struct
+{
+    bool  alive;          /* if initscr() called, and not endwin() */
+    bool  autocr;         /* if cr -> lf */
+    bool  cbreak;         /* if terminal unbuffered */
+    bool  echo;           /* if terminal echo */
+    bool  raw_inp;        /* raw input mode (v. cooked input) */
+    bool  raw_out;        /* raw output mode (7 v. 8 bits) */
+    bool  audible;        /* FALSE if the bell is visual */
+    bool  mono;           /* TRUE if current screen is mono */
+    bool  resized;        /* TRUE if TERM has been resized */
+    bool  orig_attr;      /* TRUE if we have the original colors */
+    short orig_fore;      /* original screen foreground color */
+    short orig_back;      /* original screen foreground color */
+    int   cursrow;        /* position of physical cursor */
+    int   curscol;        /* position of physical cursor */
+    int   visibility;     /* visibility of cursor */
+    int   orig_cursor;    /* original cursor size */
+    int   lines;          /* new value for LINES */
+    int   cols;           /* new value for COLS */
+    unsigned long _trap_mbe;       /* trap these mouse button events */
+    unsigned long _map_mbe_to_key; /* map mouse buttons to slk */
+    int   mouse_wait;              /* time to wait (in ms) for a
+                                      button release after a press, in 
+                                      order to count it as a click */
+    int   slklines;                /* lines in use by slk_init() */
+    WINDOW *slk_winptr;            /* window for slk */
+    int   linesrippedoff;          /* lines ripped off via ripoffline() */
+    int   linesrippedoffontop;     /* lines ripped off on 
+                                      top via ripoffline() */
+    int   delaytenths;             /* 1/10ths second to wait block
+                                      getch() for */
+    bool  _preserve;               /* TRUE if screen background
+                                      to be preserved */
+    int   _restore;                /* specifies if screen background
+                                      to be restored, and how */
+    bool  save_key_modifiers;      /* TRUE if each key modifiers saved
+                                      with each key press */
+    bool  return_key_modifiers;    /* TRUE if modifier keys are
+                                      returned as "real" keys */
+    bool  key_code;                /* TRUE if last key is a special key;
+                                      used internally by get_wch() */
+#ifdef XCURSES
+    int   XcurscrSize;    /* size of Xcurscr shared memory block */
+    bool  sb_on;
+    int   sb_viewport_y;
+    int   sb_viewport_x;
+    int   sb_total_y;
+    int   sb_total_x;
+    int   sb_cur_y;
+    int   sb_cur_x;
+#endif
+    short line_color;     /* color of line attributes - default -1 */
+} SCREEN;
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses External Variables
+ *
+ */
+
+#ifdef PDC_DLL_BUILD
+# ifdef CURSES_LIBRARY
+#  define PDCEX __declspec(dllexport) extern
+# else
+#  define PDCEX __declspec(dllimport)
+# endif
+#else
+# define PDCEX extern
+#endif
+
+PDCEX  int          LINES;        /* terminal height */
+PDCEX  int          COLS;         /* terminal width */
+PDCEX  WINDOW       *stdscr;      /* the default screen window */
+PDCEX  WINDOW       *curscr;      /* the current screen image */
+PDCEX  SCREEN       *SP;          /* curses variables */
+PDCEX  MOUSE_STATUS Mouse_status;
+PDCEX  int          COLORS;
+PDCEX  int          COLOR_PAIRS;
+PDCEX  int          TABSIZE;
+PDCEX  chtype       acs_map[];    /* alternate character set map */
+PDCEX  char         ttytype[];    /* terminal name/description */
+
+/*man-start**************************************************************
+
+PDCurses Text Attributes
+========================
+
+Originally, PDCurses used a short (16 bits) for its chtype. To include 
+color, a number of things had to be sacrificed from the strict Unix and 
+System V support. The main problem was fitting all character attributes 
+and color into an unsigned char (all 8 bits!).
+
+Today, PDCurses by default uses a long (32 bits) for its chtype, as in 
+System V. The short chtype is still available, by undefining CHTYPE_LONG 
+and rebuilding the library.
+
+The following is the structure of a win->_attrs chtype:
+
+short form:
+
+-------------------------------------------------
+|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
+-------------------------------------------------
+  color number |  attrs |   character eg 'a'
+
+The available non-color attributes are bold, reverse and blink. Others 
+have no effect. The high order char is an index into an array of 
+physical colors (defined in color.c) -- 32 foreground/background color 
+pairs (5 bits) plus 3 bits for other attributes.
+
+long form:
+
+----------------------------------------------------------------------------
+|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|..| 3| 2| 1| 0|
+----------------------------------------------------------------------------
+      color number      |     modifiers         |      character eg 'a'
+
+The available non-color attributes are bold, underline, invisible, 
+right-line, left-line, protect, reverse and blink. 256 color pairs (8 
+bits), 8 bits for other attributes, and 16 bits for character data.
+
+**man-end****************************************************************/
+
+/*** Video attribute macros ***/
+
+#define A_NORMAL      (chtype)0
+
+#ifdef CHTYPE_LONG
+# define A_ALTCHARSET (chtype)0x00010000
+# define A_RIGHTLINE  (chtype)0x00020000
+# define A_LEFTLINE   (chtype)0x00040000
+# define A_INVIS      (chtype)0x00080000
+# define A_UNDERLINE  (chtype)0x00100000
+# define A_REVERSE    (chtype)0x00200000
+# define A_BLINK      (chtype)0x00400000
+# define A_BOLD       (chtype)0x00800000
+
+# define A_ATTRIBUTES (chtype)0xffff0000
+# define A_CHARTEXT   (chtype)0x0000ffff
+# define A_COLOR      (chtype)0xff000000
+
+# define A_ITALIC     A_INVIS
+# define A_PROTECT    (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE)
+
+# define PDC_ATTR_SHIFT  19
+# define PDC_COLOR_SHIFT 24
+#else
+# define A_BOLD       (chtype)0x0100  /* X/Open */
+# define A_REVERSE    (chtype)0x0200  /* X/Open */
+# define A_BLINK      (chtype)0x0400  /* X/Open */
+
+# define A_ATTRIBUTES (chtype)0xff00  /* X/Open */
+# define A_CHARTEXT   (chtype)0x00ff  /* X/Open */
+# define A_COLOR      (chtype)0xf800  /* System V */
+
+# define A_ALTCHARSET A_NORMAL        /* X/Open */
+# define A_PROTECT    A_NORMAL        /* X/Open */
+# define A_UNDERLINE  A_NORMAL        /* X/Open */
+
+# define A_LEFTLINE   A_NORMAL
+# define A_RIGHTLINE  A_NORMAL
+# define A_ITALIC     A_NORMAL
+# define A_INVIS      A_NORMAL
+
+# define PDC_ATTR_SHIFT   8
+# define PDC_COLOR_SHIFT 11
+#endif
+
+#define A_STANDOUT    (A_REVERSE | A_BOLD) /* X/Open */
+#define A_DIM         A_NORMAL
+
+#define CHR_MSK       A_CHARTEXT           /* Obsolete */
+#define ATR_MSK       A_ATTRIBUTES         /* Obsolete */
+#define ATR_NRM       A_NORMAL             /* Obsolete */
+
+/* For use with attr_t -- X/Open says, "these shall be distinct", so 
+   this is a non-conforming implementation. */
+
+#define WA_ALTCHARSET A_ALTCHARSET
+#define WA_BLINK      A_BLINK
+#define WA_BOLD       A_BOLD
+#define WA_DIM        A_DIM
+#define WA_INVIS      A_INVIS
+#define WA_LEFT       A_LEFTLINE
+#define WA_PROTECT    A_PROTECT
+#define WA_REVERSE    A_REVERSE
+#define WA_RIGHT      A_RIGHTLINE
+#define WA_STANDOUT   A_STANDOUT
+#define WA_UNDERLINE  A_UNDERLINE
+
+#define WA_HORIZONTAL A_NORMAL
+#define WA_LOW        A_NORMAL
+#define WA_TOP        A_NORMAL
+#define WA_VERTICAL   A_NORMAL
+
+/*** Alternate character set macros ***/
+
+/* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET
+   'n' = 16-bit chtype; it gets the fallback set because no bit is 
+         available for A_ALTCHARSET */
+
+#ifdef CHTYPE_LONG
+# define ACS_PICK(w, n) ((chtype)w | A_ALTCHARSET)
+#else
+# define ACS_PICK(w, n) ((chtype)n)
+#endif
+
+/* VT100-compatible symbols -- box chars */
+
+#define ACS_ULCORNER  ACS_PICK('l', '+')
+#define ACS_LLCORNER  ACS_PICK('m', '+')
+#define ACS_URCORNER  ACS_PICK('k', '+')
+#define ACS_LRCORNER  ACS_PICK('j', '+')
+#define ACS_RTEE      ACS_PICK('u', '+')
+#define ACS_LTEE      ACS_PICK('t', '+')
+#define ACS_BTEE      ACS_PICK('v', '+')
+#define ACS_TTEE      ACS_PICK('w', '+')
+#define ACS_HLINE     ACS_PICK('q', '-')
+#define ACS_VLINE     ACS_PICK('x', '|')
+#define ACS_PLUS      ACS_PICK('n', '+')
+
+/* VT100-compatible symbols -- other */
+
+#define ACS_S1        ACS_PICK('o', '-')
+#define ACS_S9        ACS_PICK('s', '_')
+#define ACS_DIAMOND   ACS_PICK('`', '+')
+#define ACS_CKBOARD   ACS_PICK('a', ':')
+#define ACS_DEGREE    ACS_PICK('f', '\'')
+#define ACS_PLMINUS   ACS_PICK('g', '#')
+#define ACS_BULLET    ACS_PICK('~', 'o')
+
+/* Teletype 5410v1 symbols -- these are defined in SysV curses, but
+   are not well-supported by most terminals. Stick to VT100 characters
+   for optimum portability. */
+
+#define ACS_LARROW    ACS_PICK(',', '<')
+#define ACS_RARROW    ACS_PICK('+', '>')
+#define ACS_DARROW    ACS_PICK('.', 'v')
+#define ACS_UARROW    ACS_PICK('-', '^')
+#define ACS_BOARD     ACS_PICK('h', '#')
+#define ACS_LANTERN   ACS_PICK('i', '*')
+#define ACS_BLOCK     ACS_PICK('0', '#')
+
+/* That goes double for these -- undocumented SysV symbols. Don't use
+   them. */
+
+#define ACS_S3        ACS_PICK('p', '-')
+#define ACS_S7        ACS_PICK('r', '-')
+#define ACS_LEQUAL    ACS_PICK('y', '<')
+#define ACS_GEQUAL    ACS_PICK('z', '>')
+#define ACS_PI        ACS_PICK('{', 'n')
+#define ACS_NEQUAL    ACS_PICK('|', '+')
+#define ACS_STERLING  ACS_PICK('}', 'L')
+
+/* Box char aliases */
+
+#define ACS_BSSB      ACS_ULCORNER
+#define ACS_SSBB      ACS_LLCORNER
+#define ACS_BBSS      ACS_URCORNER
+#define ACS_SBBS      ACS_LRCORNER
+#define ACS_SBSS      ACS_RTEE
+#define ACS_SSSB      ACS_LTEE
+#define ACS_SSBS      ACS_BTEE
+#define ACS_BSSS      ACS_TTEE
+#define ACS_BSBS      ACS_HLINE
+#define ACS_SBSB      ACS_VLINE
+#define ACS_SSSS      ACS_PLUS
+
+/* cchar_t aliases */
+
+#ifdef PDC_WIDE
+# define WACS_ULCORNER (&(acs_map['l']))
+# define WACS_LLCORNER (&(acs_map['m']))
+# define WACS_URCORNER (&(acs_map['k']))
+# define WACS_LRCORNER (&(acs_map['j']))
+# define WACS_RTEE     (&(acs_map['u']))
+# define WACS_LTEE     (&(acs_map['t']))
+# define WACS_BTEE     (&(acs_map['v']))
+# define WACS_TTEE     (&(acs_map['w']))
+# define WACS_HLINE    (&(acs_map['q']))
+# define WACS_VLINE    (&(acs_map['x']))
+# define WACS_PLUS     (&(acs_map['n']))
+
+# define WACS_S1       (&(acs_map['o']))
+# define WACS_S9       (&(acs_map['s']))
+# define WACS_DIAMOND  (&(acs_map['`']))
+# define WACS_CKBOARD  (&(acs_map['a']))
+# define WACS_DEGREE   (&(acs_map['f']))
+# define WACS_PLMINUS  (&(acs_map['g']))
+# define WACS_BULLET   (&(acs_map['~']))
+
+# define WACS_LARROW   (&(acs_map[',']))
+# define WACS_RARROW   (&(acs_map['+']))
+# define WACS_DARROW   (&(acs_map['.']))
+# define WACS_UARROW   (&(acs_map['-']))
+# define WACS_BOARD    (&(acs_map['h']))
+# define WACS_LANTERN  (&(acs_map['i']))
+# define WACS_BLOCK    (&(acs_map['0']))
+
+# define WACS_S3       (&(acs_map['p']))
+# define WACS_S7       (&(acs_map['r']))
+# define WACS_LEQUAL   (&(acs_map['y']))
+# define WACS_GEQUAL   (&(acs_map['z']))
+# define WACS_PI       (&(acs_map['{']))
+# define WACS_NEQUAL   (&(acs_map['|']))
+# define WACS_STERLING (&(acs_map['}']))
+
+# define WACS_BSSB     WACS_ULCORNER
+# define WACS_SSBB     WACS_LLCORNER
+# define WACS_BBSS     WACS_URCORNER
+# define WACS_SBBS     WACS_LRCORNER
+# define WACS_SBSS     WACS_RTEE
+# define WACS_SSSB     WACS_LTEE
+# define WACS_SSBS     WACS_BTEE
+# define WACS_BSSS     WACS_TTEE
+# define WACS_BSBS     WACS_HLINE
+# define WACS_SBSB     WACS_VLINE
+# define WACS_SSSS     WACS_PLUS
+#endif
+
+/*** Color macros ***/
+
+#define COLOR_BLACK   0
+
+#ifdef PDC_RGB        /* RGB */
+# define COLOR_RED    1
+# define COLOR_GREEN  2
+# define COLOR_BLUE   4
+#else                 /* BGR */
+# define COLOR_BLUE   1
+# define COLOR_GREEN  2
+# define COLOR_RED    4
+#endif
+
+#define COLOR_CYAN    (COLOR_BLUE | COLOR_GREEN)
+#define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE)
+#define COLOR_YELLOW  (COLOR_RED | COLOR_GREEN)
+
+#define COLOR_WHITE   7
+
+/*----------------------------------------------------------------------
+ *
+ *  Function and Keypad Key Definitions.
+ *  Many are just for compatibility.
+ *
+ */
+
+#define KEY_CODE_YES  0x100  /* If get_wch() gives a key code */
+
+#define KEY_BREAK     0x101  /* Not on PC KBD */
+#define KEY_DOWN      0x102  /* Down arrow key */
+#define KEY_UP        0x103  /* Up arrow key */
+#define KEY_LEFT      0x104  /* Left arrow key */
+#define KEY_RIGHT     0x105  /* Right arrow key */
+#define KEY_HOME      0x106  /* home key */
+#define KEY_BACKSPACE 0x107  /* not on pc */
+#define KEY_F0        0x108  /* function keys; 64 reserved */
+
+#define KEY_DL        0x148  /* delete line */
+#define KEY_IL        0x149  /* insert line */
+#define KEY_DC        0x14a  /* delete character */
+#define KEY_IC        0x14b  /* insert char or enter ins mode */
+#define KEY_EIC       0x14c  /* exit insert char mode */
+#define KEY_CLEAR     0x14d  /* clear screen */
+#define KEY_EOS       0x14e  /* clear to end of screen */
+#define KEY_EOL       0x14f  /* clear to end of line */
+#define KEY_SF        0x150  /* scroll 1 line forward */
+#define KEY_SR        0x151  /* scroll 1 line back (reverse) */
+#define KEY_NPAGE     0x152  /* next page */
+#define KEY_PPAGE     0x153  /* previous page */
+#define KEY_STAB      0x154  /* set tab */
+#define KEY_CTAB      0x155  /* clear tab */
+#define KEY_CATAB     0x156  /* clear all tabs */
+#define KEY_ENTER     0x157  /* enter or send (unreliable) */
+#define KEY_SRESET    0x158  /* soft/reset (partial/unreliable) */
+#define KEY_RESET     0x159  /* reset/hard reset (unreliable) */
+#define KEY_PRINT     0x15a  /* print/copy */
+#define KEY_LL        0x15b  /* home down/bottom (lower left) */
+#define KEY_ABORT     0x15c  /* abort/terminate key (any) */
+#define KEY_SHELP     0x15d  /* short help */
+#define KEY_LHELP     0x15e  /* long help */
+#define KEY_BTAB      0x15f  /* Back tab key */
+#define KEY_BEG       0x160  /* beg(inning) key */
+#define KEY_CANCEL    0x161  /* cancel key */
+#define KEY_CLOSE     0x162  /* close key */
+#define KEY_COMMAND   0x163  /* cmd (command) key */
+#define KEY_COPY      0x164  /* copy key */
+#define KEY_CREATE    0x165  /* create key */
+#define KEY_END       0x166  /* end key */
+#define KEY_EXIT      0x167  /* exit key */
+#define KEY_FIND      0x168  /* find key */
+#define KEY_HELP      0x169  /* help key */
+#define KEY_MARK      0x16a  /* mark key */
+#define KEY_MESSAGE   0x16b  /* message key */
+#define KEY_MOVE      0x16c  /* move key */
+#define KEY_NEXT      0x16d  /* next object key */
+#define KEY_OPEN      0x16e  /* open key */
+#define KEY_OPTIONS   0x16f  /* options key */
+#define KEY_PREVIOUS  0x170  /* previous object key */
+#define KEY_REDO      0x171  /* redo key */
+#define KEY_REFERENCE 0x172  /* ref(erence) key */
+#define KEY_REFRESH   0x173  /* refresh key */
+#define KEY_REPLACE   0x174  /* replace key */
+#define KEY_RESTART   0x175  /* restart key */
+#define KEY_RESUME    0x176  /* resume key */
+#define KEY_SAVE      0x177  /* save key */
+#define KEY_SBEG      0x178  /* shifted beginning key */
+#define KEY_SCANCEL   0x179  /* shifted cancel key */
+#define KEY_SCOMMAND  0x17a  /* shifted command key */
+#define KEY_SCOPY     0x17b  /* shifted copy key */
+#define KEY_SCREATE   0x17c  /* shifted create key */
+#define KEY_SDC       0x17d  /* shifted delete char key */
+#define KEY_SDL       0x17e  /* shifted delete line key */
+#define KEY_SELECT    0x17f  /* select key */
+#define KEY_SEND      0x180  /* shifted end key */
+#define KEY_SEOL      0x181  /* shifted clear line key */
+#define KEY_SEXIT     0x182  /* shifted exit key */
+#define KEY_SFIND     0x183  /* shifted find key */
+#define KEY_SHOME     0x184  /* shifted home key */
+#define KEY_SIC       0x185  /* shifted input key */
+
+#define KEY_SLEFT     0x187  /* shifted left arrow key */
+#define KEY_SMESSAGE  0x188  /* shifted message key */
+#define KEY_SMOVE     0x189  /* shifted move key */
+#define KEY_SNEXT     0x18a  /* shifted next key */
+#define KEY_SOPTIONS  0x18b  /* shifted options key */
+#define KEY_SPREVIOUS 0x18c  /* shifted prev key */
+#define KEY_SPRINT    0x18d  /* shifted print key */
+#define KEY_SREDO     0x18e  /* shifted redo key */
+#define KEY_SREPLACE  0x18f  /* shifted replace key */
+#define KEY_SRIGHT    0x190  /* shifted right arrow */
+#define KEY_SRSUME    0x191  /* shifted resume key */
+#define KEY_SSAVE     0x192  /* shifted save key */
+#define KEY_SSUSPEND  0x193  /* shifted suspend key */
+#define KEY_SUNDO     0x194  /* shifted undo key */
+#define KEY_SUSPEND   0x195  /* suspend key */
+#define KEY_UNDO      0x196  /* undo key */
+
+/* PDCurses-specific key definitions -- PC only */
+
+#define ALT_0         0x197
+#define ALT_1         0x198
+#define ALT_2         0x199
+#define ALT_3         0x19a
+#define ALT_4         0x19b
+#define ALT_5         0x19c
+#define ALT_6         0x19d
+#define ALT_7         0x19e
+#define ALT_8         0x19f
+#define ALT_9         0x1a0
+#define ALT_A         0x1a1
+#define ALT_B         0x1a2
+#define ALT_C         0x1a3
+#define ALT_D         0x1a4
+#define ALT_E         0x1a5
+#define ALT_F         0x1a6
+#define ALT_G         0x1a7
+#define ALT_H         0x1a8
+#define ALT_I         0x1a9
+#define ALT_J         0x1aa
+#define ALT_K         0x1ab
+#define ALT_L         0x1ac
+#define ALT_M         0x1ad
+#define ALT_N         0x1ae
+#define ALT_O         0x1af
+#define ALT_P         0x1b0
+#define ALT_Q         0x1b1
+#define ALT_R         0x1b2
+#define ALT_S         0x1b3
+#define ALT_T         0x1b4
+#define ALT_U         0x1b5
+#define ALT_V         0x1b6
+#define ALT_W         0x1b7
+#define ALT_X         0x1b8
+#define ALT_Y         0x1b9
+#define ALT_Z         0x1ba
+
+#define CTL_LEFT      0x1bb  /* Control-Left-Arrow */
+#define CTL_RIGHT     0x1bc
+#define CTL_PGUP      0x1bd
+#define CTL_PGDN      0x1be
+#define CTL_HOME      0x1bf
+#define CTL_END       0x1c0
+
+#define KEY_A1        0x1c1  /* upper left on Virtual keypad */
+#define KEY_A2        0x1c2  /* upper middle on Virt. keypad */
+#define KEY_A3        0x1c3  /* upper right on Vir. keypad */
+#define KEY_B1        0x1c4  /* middle left on Virt. keypad */
+#define KEY_B2        0x1c5  /* center on Virt. keypad */
+#define KEY_B3        0x1c6  /* middle right on Vir. keypad */
+#define KEY_C1        0x1c7  /* lower left on Virt. keypad */
+#define KEY_C2        0x1c8  /* lower middle on Virt. keypad */
+#define KEY_C3        0x1c9  /* lower right on Vir. keypad */
+
+#define PADSLASH      0x1ca  /* slash on keypad */
+#define PADENTER      0x1cb  /* enter on keypad */
+#define CTL_PADENTER  0x1cc  /* ctl-enter on keypad */
+#define ALT_PADENTER  0x1cd  /* alt-enter on keypad */
+#define PADSTOP       0x1ce  /* stop on keypad */
+#define PADSTAR       0x1cf  /* star on keypad */
+#define PADMINUS      0x1d0  /* minus on keypad */
+#define PADPLUS       0x1d1  /* plus on keypad */
+#define CTL_PADSTOP   0x1d2  /* ctl-stop on keypad */
+#define CTL_PADCENTER 0x1d3  /* ctl-enter on keypad */
+#define CTL_PADPLUS   0x1d4  /* ctl-plus on keypad */
+#define CTL_PADMINUS  0x1d5  /* ctl-minus on keypad */
+#define CTL_PADSLASH  0x1d6  /* ctl-slash on keypad */
+#define CTL_PADSTAR   0x1d7  /* ctl-star on keypad */
+#define ALT_PADPLUS   0x1d8  /* alt-plus on keypad */
+#define ALT_PADMINUS  0x1d9  /* alt-minus on keypad */
+#define ALT_PADSLASH  0x1da  /* alt-slash on keypad */
+#define ALT_PADSTAR   0x1db  /* alt-star on keypad */
+#define ALT_PADSTOP   0x1dc  /* alt-stop on keypad */
+#define CTL_INS       0x1dd  /* ctl-insert */
+#define ALT_DEL       0x1de  /* alt-delete */
+#define ALT_INS       0x1df  /* alt-insert */
+#define CTL_UP        0x1e0  /* ctl-up arrow */
+#define CTL_DOWN      0x1e1  /* ctl-down arrow */
+#define CTL_TAB       0x1e2  /* ctl-tab */
+#define ALT_TAB       0x1e3
+#define ALT_MINUS     0x1e4
+#define ALT_EQUAL     0x1e5
+#define ALT_HOME      0x1e6
+#define ALT_PGUP      0x1e7
+#define ALT_PGDN      0x1e8
+#define ALT_END       0x1e9
+#define ALT_UP        0x1ea  /* alt-up arrow */
+#define ALT_DOWN      0x1eb  /* alt-down arrow */
+#define ALT_RIGHT     0x1ec  /* alt-right arrow */
+#define ALT_LEFT      0x1ed  /* alt-left arrow */
+#define ALT_ENTER     0x1ee  /* alt-enter */
+#define ALT_ESC       0x1ef  /* alt-escape */
+#define ALT_BQUOTE    0x1f0  /* alt-back quote */
+#define ALT_LBRACKET  0x1f1  /* alt-left bracket */
+#define ALT_RBRACKET  0x1f2  /* alt-right bracket */
+#define ALT_SEMICOLON 0x1f3  /* alt-semi-colon */
+#define ALT_FQUOTE    0x1f4  /* alt-forward quote */
+#define ALT_COMMA     0x1f5  /* alt-comma */
+#define ALT_STOP      0x1f6  /* alt-stop */
+#define ALT_FSLASH    0x1f7  /* alt-forward slash */
+#define ALT_BKSP      0x1f8  /* alt-backspace */
+#define CTL_BKSP      0x1f9  /* ctl-backspace */
+#define PAD0          0x1fa  /* keypad 0 */
+
+#define CTL_PAD0      0x1fb  /* ctl-keypad 0 */
+#define CTL_PAD1      0x1fc
+#define CTL_PAD2      0x1fd
+#define CTL_PAD3      0x1fe
+#define CTL_PAD4      0x1ff
+#define CTL_PAD5      0x200
+#define CTL_PAD6      0x201
+#define CTL_PAD7      0x202
+#define CTL_PAD8      0x203
+#define CTL_PAD9      0x204
+
+#define ALT_PAD0      0x205  /* alt-keypad 0 */
+#define ALT_PAD1      0x206
+#define ALT_PAD2      0x207
+#define ALT_PAD3      0x208
+#define ALT_PAD4      0x209
+#define ALT_PAD5      0x20a
+#define ALT_PAD6      0x20b
+#define ALT_PAD7      0x20c
+#define ALT_PAD8      0x20d
+#define ALT_PAD9      0x20e
+
+#define CTL_DEL       0x20f  /* clt-delete */
+#define ALT_BSLASH    0x210  /* alt-back slash */
+#define CTL_ENTER     0x211  /* ctl-enter */
+
+#define SHF_PADENTER  0x212  /* shift-enter on keypad */
+#define SHF_PADSLASH  0x213  /* shift-slash on keypad */
+#define SHF_PADSTAR   0x214  /* shift-star  on keypad */
+#define SHF_PADPLUS   0x215  /* shift-plus  on keypad */
+#define SHF_PADMINUS  0x216  /* shift-minus on keypad */
+#define SHF_UP        0x217  /* shift-up on keypad */
+#define SHF_DOWN      0x218  /* shift-down on keypad */
+#define SHF_IC        0x219  /* shift-insert on keypad */
+#define SHF_DC        0x21a  /* shift-delete on keypad */
+
+#define KEY_MOUSE     0x21b  /* "mouse" key */
+#define KEY_SHIFT_L   0x21c  /* Left-shift */
+#define KEY_SHIFT_R   0x21d  /* Right-shift */
+#define KEY_CONTROL_L 0x21e  /* Left-control */
+#define KEY_CONTROL_R 0x21f  /* Right-control */
+#define KEY_ALT_L     0x220  /* Left-alt */
+#define KEY_ALT_R     0x221  /* Right-alt */
+#define KEY_RESIZE    0x222  /* Window resize */
+#define KEY_SUP       0x223  /* Shifted up arrow */
+#define KEY_SDOWN     0x224  /* Shifted down arrow */
+
+#define KEY_MIN       KEY_BREAK      /* Minimum curses key value */
+#define KEY_MAX       KEY_SDOWN      /* Maximum curses key */
+
+#define KEY_F(n)      (KEY_F0 + (n))
+
+/*----------------------------------------------------------------------
+ *
+ *  PDCurses Function Declarations
+ *
+ */
+
+/* Standard */
+
+int     addch(const chtype);
+int     addchnstr(const chtype *, int);
+int     addchstr(const chtype *);
+int     addnstr(const char *, int);
+int     addstr(const char *);
+int     attroff(chtype);
+int     attron(chtype);
+int     attrset(chtype);
+int     attr_get(attr_t *, short *, void *);
+int     attr_off(attr_t, void *);
+int     attr_on(attr_t, void *);
+int     attr_set(attr_t, short, void *);
+int     baudrate(void);
+int     beep(void);
+int     bkgd(chtype);
+void    bkgdset(chtype);
+int     border(chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype);
+int     box(WINDOW *, chtype, chtype);
+bool    can_change_color(void);
+int     cbreak(void); 
+int     chgat(int, attr_t, short, const void *);
+int     clearok(WINDOW *, bool);
+int     clear(void);
+int     clrtobot(void);
+int     clrtoeol(void);
+int     color_content(short, short *, short *, short *);
+int     color_set(short, void *);
+int     copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
+int     curs_set(int);
+int     def_prog_mode(void);
+int     def_shell_mode(void);
+int     delay_output(int);
+int     delch(void);
+int     deleteln(void);
+void    delscreen(SCREEN *); 
+int     delwin(WINDOW *);
+WINDOW *derwin(WINDOW *, int, int, int, int);
+int     doupdate(void);
+WINDOW *dupwin(WINDOW *);
+int     echochar(const chtype);
+int     echo(void);
+int     endwin(void);
+char    erasechar(void);
+int     erase(void);
+void    filter(void);
+int     flash(void);
+int     flushinp(void);
+chtype  getbkgd(WINDOW *);
+int     getnstr(char *, int);
+int     getstr(char *);
+WINDOW *getwin(FILE *);
+int     halfdelay(int);
+bool    has_colors(void);
+bool    has_ic(void);
+bool    has_il(void);
+int     hline(chtype, int);
+void    idcok(WINDOW *, bool);
+int     idlok(WINDOW *, bool);
+void    immedok(WINDOW *, bool);
+int     inchnstr(chtype *, int);
+int     inchstr(chtype *);
+chtype  inch(void);
+int     init_color(short, short, short, short);
+int     init_pair(short, short, short);
+WINDOW *initscr(void);
+int     innstr(char *, int);
+int     insch(chtype);
+int     insdelln(int);
+int     insertln(void);
+int     insnstr(const char *, int);
+int     insstr(const char *);
+int     instr(char *);
+int     intrflush(WINDOW *, bool);
+bool    isendwin(void);
+bool    is_linetouched(WINDOW *, int);
+bool    is_wintouched(WINDOW *);
+char   *keyname(int);
+int     keypad(WINDOW *, bool);
+char    killchar(void);
+int     leaveok(WINDOW *, bool);
+char   *longname(void);
+int     meta(WINDOW *, bool);
+int     move(int, int);
+int     mvaddch(int, int, const chtype);
+int     mvaddchnstr(int, int, const chtype *, int);
+int     mvaddchstr(int, int, const chtype *);
+int     mvaddnstr(int, int, const char *, int);
+int     mvaddstr(int, int, const char *);
+int     mvchgat(int, int, int, attr_t, short, const void *);
+int     mvcur(int, int, int, int);
+int     mvdelch(int, int);
+int     mvderwin(WINDOW *, int, int);
+int     mvgetch(int, int);
+int     mvgetnstr(int, int, char *, int);
+int     mvgetstr(int, int, char *);
+int     mvhline(int, int, chtype, int);
+chtype  mvinch(int, int);
+int     mvinchnstr(int, int, chtype *, int);
+int     mvinchstr(int, int, chtype *);
+int     mvinnstr(int, int, char *, int);
+int     mvinsch(int, int, chtype);
+int     mvinsnstr(int, int, const char *, int);
+int     mvinsstr(int, int, const char *);
+int     mvinstr(int, int, char *);
+int     mvprintw(int, int, const char *, ...);
+int     mvscanw(int, int, const char *, ...);
+int     mvvline(int, int, chtype, int);
+int     mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
+int     mvwaddchstr(WINDOW *, int, int, const chtype *);
+int     mvwaddch(WINDOW *, int, int, const chtype);
+int     mvwaddnstr(WINDOW *, int, int, const char *, int);
+int     mvwaddstr(WINDOW *, int, int, const char *);
+int     mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
+int     mvwdelch(WINDOW *, int, int);
+int     mvwgetch(WINDOW *, int, int);
+int     mvwgetnstr(WINDOW *, int, int, char *, int);
+int     mvwgetstr(WINDOW *, int, int, char *);
+int     mvwhline(WINDOW *, int, int, chtype, int);
+int     mvwinchnstr(WINDOW *, int, int, chtype *, int);
+int     mvwinchstr(WINDOW *, int, int, chtype *);
+chtype  mvwinch(WINDOW *, int, int);
+int     mvwinnstr(WINDOW *, int, int, char *, int);
+int     mvwinsch(WINDOW *, int, int, chtype);
+int     mvwinsnstr(WINDOW *, int, int, const char *, int);
+int     mvwinsstr(WINDOW *, int, int, const char *);
+int     mvwinstr(WINDOW *, int, int, char *);
+int     mvwin(WINDOW *, int, int);
+int     mvwprintw(WINDOW *, int, int, const char *, ...);
+int     mvwscanw(WINDOW *, int, int, const char *, ...);
+int     mvwvline(WINDOW *, int, int, chtype, int);
+int     napms(int);
+WINDOW *newpad(int, int);
+SCREEN *newterm(const char *, FILE *, FILE *);
+WINDOW *newwin(int, int, int, int);
+int     nl(void);
+int     nocbreak(void);
+int     nodelay(WINDOW *, bool);
+int     noecho(void);
+int     nonl(void);
+void    noqiflush(void);
+int     noraw(void);
+int     notimeout(WINDOW *, bool);
+int     overlay(const WINDOW *, WINDOW *);
+int     overwrite(const WINDOW *, WINDOW *);
+int     pair_content(short, short *, short *);
+int     pechochar(WINDOW *, chtype);
+int     pnoutrefresh(WINDOW *, int, int, int, int, int, int);
+int     prefresh(WINDOW *, int, int, int, int, int, int);
+int     printw(const char *, ...);
+int     putwin(WINDOW *, FILE *);
+void    qiflush(void);
+int     raw(void);
+int     redrawwin(WINDOW *);
+int     refresh(void);
+int     reset_prog_mode(void);
+int     reset_shell_mode(void);
+int     resetty(void);
+int     ripoffline(int, int (*)(WINDOW *, int));
+int     savetty(void);
+int     scanw(const char *, ...);
+int     scr_dump(const char *);
+int     scr_init(const char *);
+int     scr_restore(const char *);
+int     scr_set(const char *);
+int     scrl(int);
+int     scroll(WINDOW *);
+int     scrollok(WINDOW *, bool);
+SCREEN *set_term(SCREEN *);
+int     setscrreg(int, int);
+int     slk_attroff(const chtype);
+int     slk_attr_off(const attr_t, void *);
+int     slk_attron(const chtype);
+int     slk_attr_on(const attr_t, void *);
+int     slk_attrset(const chtype);
+int     slk_attr_set(const attr_t, short, void *);
+int     slk_clear(void);
+int     slk_color(short);
+int     slk_init(int);
+char   *slk_label(int);
+int     slk_noutrefresh(void);
+int     slk_refresh(void);
+int     slk_restore(void);
+int     slk_set(int, const char *, int);
+int     slk_touch(void);
+int     standend(void);
+int     standout(void);
+int     start_color(void);
+WINDOW *subpad(WINDOW *, int, int, int, int);
+WINDOW *subwin(WINDOW *, int, int, int, int);
+int     syncok(WINDOW *, bool);
+chtype  termattrs(void);
+attr_t  term_attrs(void);
+char   *termname(void);
+void    timeout(int);
+int     touchline(WINDOW *, int, int);
+int     touchwin(WINDOW *);
+int     typeahead(int);
+int     untouchwin(WINDOW *);
+void    use_env(bool);
+int     vidattr(chtype);
+int     vid_attr(attr_t, short, void *);
+int     vidputs(chtype, int (*)(int));
+int     vid_puts(attr_t, short, void *, int (*)(int));
+int     vline(chtype, int);
+int     vw_printw(WINDOW *, const char *, va_list);
+int     vwprintw(WINDOW *, const char *, va_list);
+int     vw_scanw(WINDOW *, const char *, va_list);
+int     vwscanw(WINDOW *, const char *, va_list);
+int     waddchnstr(WINDOW *, const chtype *, int);
+int     waddchstr(WINDOW *, const chtype *);
+int     waddch(WINDOW *, const chtype);
+int     waddnstr(WINDOW *, const char *, int);
+int     waddstr(WINDOW *, const char *);
+int     wattroff(WINDOW *, chtype);
+int     wattron(WINDOW *, chtype);
+int     wattrset(WINDOW *, chtype);
+int     wattr_get(WINDOW *, attr_t *, short *, void *);
+int     wattr_off(WINDOW *, attr_t, void *);
+int     wattr_on(WINDOW *, attr_t, void *);
+int     wattr_set(WINDOW *, attr_t, short, void *);
+void    wbkgdset(WINDOW *, chtype);
+int     wbkgd(WINDOW *, chtype);
+int     wborder(WINDOW *, chtype, chtype, chtype, chtype,
+                chtype, chtype, chtype, chtype);
+int     wchgat(WINDOW *, int, attr_t, short, const void *);
+int     wclear(WINDOW *);
+int     wclrtobot(WINDOW *);
+int     wclrtoeol(WINDOW *);
+int     wcolor_set(WINDOW *, short, void *);
+void    wcursyncup(WINDOW *);
+int     wdelch(WINDOW *);
+int     wdeleteln(WINDOW *);
+int     wechochar(WINDOW *, const chtype);
+int     werase(WINDOW *);
+int     wgetch(WINDOW *);
+int     wgetnstr(WINDOW *, char *, int);
+int     wgetstr(WINDOW *, char *);
+int     whline(WINDOW *, chtype, int);
+int     winchnstr(WINDOW *, chtype *, int);
+int     winchstr(WINDOW *, chtype *);
+chtype  winch(WINDOW *);
+int     winnstr(WINDOW *, char *, int);
+int     winsch(WINDOW *, chtype);
+int     winsdelln(WINDOW *, int);
+int     winsertln(WINDOW *);
+int     winsnstr(WINDOW *, const char *, int);
+int     winsstr(WINDOW *, const char *);
+int     winstr(WINDOW *, char *);
+int     wmove(WINDOW *, int, int);
+int     wnoutrefresh(WINDOW *);
+int     wprintw(WINDOW *, const char *, ...);
+int     wredrawln(WINDOW *, int, int);
+int     wrefresh(WINDOW *);
+int     wscanw(WINDOW *, const char *, ...);
+int     wscrl(WINDOW *, int);
+int     wsetscrreg(WINDOW *, int, int);
+int     wstandend(WINDOW *);
+int     wstandout(WINDOW *);
+void    wsyncdown(WINDOW *);
+void    wsyncup(WINDOW *);
+void    wtimeout(WINDOW *, int);
+int     wtouchln(WINDOW *, int, int, int);
+int     wvline(WINDOW *, chtype, int);
+
+/* Wide-character functions */
+
+#ifdef PDC_WIDE
+int     addnwstr(const wchar_t *, int);
+int     addwstr(const wchar_t *);
+int     add_wch(const cchar_t *);
+int     add_wchnstr(const cchar_t *, int);
+int     add_wchstr(const cchar_t *);
+int     border_set(const cchar_t *, const cchar_t *, const cchar_t *, 
+                   const cchar_t *, const cchar_t *, const cchar_t *, 
+                   const cchar_t *, const cchar_t *);
+int     box_set(WINDOW *, const cchar_t *, const cchar_t *);
+int     echo_wchar(const cchar_t *);
+int     erasewchar(wchar_t *);
+int     getbkgrnd(cchar_t *);
+int     getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
+int     getn_wstr(wint_t *, int);
+int     get_wch(wint_t *);
+int     get_wstr(wint_t *);
+int     hline_set(const cchar_t *, int);
+int     innwstr(wchar_t *, int);
+int     ins_nwstr(const wchar_t *, int);
+int     ins_wch(const cchar_t *);
+int     ins_wstr(const wchar_t *);
+int     inwstr(wchar_t *);
+int     in_wch(cchar_t *);
+int     in_wchnstr(cchar_t *, int);
+int     in_wchstr(cchar_t *);
+char   *key_name(wchar_t);
+int     killwchar(wchar_t *);
+int     mvaddnwstr(int, int, const wchar_t *, int);
+int     mvaddwstr(int, int, const wchar_t *);
+int     mvadd_wch(int, int, const cchar_t *);
+int     mvadd_wchnstr(int, int, const cchar_t *, int);
+int     mvadd_wchstr(int, int, const cchar_t *);
+int     mvgetn_wstr(int, int, wint_t *, int);
+int     mvget_wch(int, int, wint_t *);
+int     mvget_wstr(int, int, wint_t *);
+int     mvhline_set(int, int, const cchar_t *, int);
+int     mvinnwstr(int, int, wchar_t *, int);
+int     mvins_nwstr(int, int, const wchar_t *, int);
+int     mvins_wch(int, int, const cchar_t *);
+int     mvins_wstr(int, int, const wchar_t *);
+int     mvinwstr(int, int, wchar_t *);
+int     mvin_wch(int, int, cchar_t *);
+int     mvin_wchnstr(int, int, cchar_t *, int);
+int     mvin_wchstr(int, int, cchar_t *);
+int     mvvline_set(int, int, const cchar_t *, int);
+int     mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
+int     mvwaddwstr(WINDOW *, int, int, const wchar_t *);
+int     mvwadd_wch(WINDOW *, int, int, const cchar_t *);
+int     mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
+int     mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
+int     mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);
+int     mvwget_wch(WINDOW *, int, int, wint_t *);
+int     mvwget_wstr(WINDOW *, int, int, wint_t *);
+int     mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
+int     mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
+int     mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
+int     mvwins_wch(WINDOW *, int, int, const cchar_t *);
+int     mvwins_wstr(WINDOW *, int, int, const wchar_t *);
+int     mvwin_wch(WINDOW *, int, int, cchar_t *);
+int     mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
+int     mvwin_wchstr(WINDOW *, int, int, cchar_t *);
+int     mvwinwstr(WINDOW *, int, int, wchar_t *);
+int     mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
+int     pecho_wchar(WINDOW *, const cchar_t*);
+int     setcchar(cchar_t*, const wchar_t*, const attr_t, short, const void*);
+int     slk_wset(int, const wchar_t *, int);
+int     unget_wch(const wchar_t);
+int     vline_set(const cchar_t *, int);
+int     waddnwstr(WINDOW *, const wchar_t *, int);
+int     waddwstr(WINDOW *, const wchar_t *);
+int     wadd_wch(WINDOW *, const cchar_t *);
+int     wadd_wchnstr(WINDOW *, const cchar_t *, int);
+int     wadd_wchstr(WINDOW *, const cchar_t *);
+int     wbkgrnd(WINDOW *, const cchar_t *);
+void    wbkgrndset(WINDOW *, const cchar_t *);
+int     wborder_set(WINDOW *, const cchar_t *, const cchar_t *,
+                    const cchar_t *, const cchar_t *, const cchar_t *, 
+                    const cchar_t *, const cchar_t *, const cchar_t *);
+int     wecho_wchar(WINDOW *, const cchar_t *);
+int     wgetbkgrnd(WINDOW *, cchar_t *);
+int     wgetn_wstr(WINDOW *, wint_t *, int);
+int     wget_wch(WINDOW *, wint_t *);
+int     wget_wstr(WINDOW *, wint_t *);
+int     whline_set(WINDOW *, const cchar_t *, int);
+int     winnwstr(WINDOW *, wchar_t *, int);
+int     wins_nwstr(WINDOW *, const wchar_t *, int);
+int     wins_wch(WINDOW *, const cchar_t *);
+int     wins_wstr(WINDOW *, const wchar_t *);
+int     winwstr(WINDOW *, wchar_t *);
+int     win_wch(WINDOW *, cchar_t *);
+int     win_wchnstr(WINDOW *, cchar_t *, int);
+int     win_wchstr(WINDOW *, cchar_t *);
+wchar_t *wunctrl(cchar_t *);
+int     wvline_set(WINDOW *, const cchar_t *, int);
+#endif
+
+/* Quasi-standard */
+
+chtype  getattrs(WINDOW *);
+int     getbegx(WINDOW *);
+int     getbegy(WINDOW *);
+int     getmaxx(WINDOW *);
+int     getmaxy(WINDOW *);
+int     getparx(WINDOW *);
+int     getpary(WINDOW *);
+int     getcurx(WINDOW *);
+int     getcury(WINDOW *);
+void    traceoff(void);
+void    traceon(void);
+char   *unctrl(chtype);
+
+int     crmode(void);
+int     nocrmode(void);
+int     draino(int);
+int     resetterm(void);
+int     fixterm(void);
+int     saveterm(void);
+int     setsyx(int, int);
+
+int     mouse_set(unsigned long);
+int     mouse_on(unsigned long);
+int     mouse_off(unsigned long);
+int     request_mouse_pos(void);
+int     map_button(unsigned long);
+void    wmouse_position(WINDOW *, int *, int *);
+unsigned long getmouse(void);
+unsigned long getbmap(void);
+
+/* ncurses */
+
+int     assume_default_colors(int, int);
+const char *curses_version(void);
+bool    has_key(int);
+int     use_default_colors(void);
+int     wresize(WINDOW *, int, int);
+
+int     mouseinterval(int);
+mmask_t mousemask(mmask_t, mmask_t *);
+bool    mouse_trafo(int *, int *, bool);
+int     nc_getmouse(MEVENT *);
+int     ungetmouse(MEVENT *);
+bool    wenclose(const WINDOW *, int, int);
+bool    wmouse_trafo(const WINDOW *, int *, int *, bool);
+
+/* PDCurses */
+
+int     addrawch(chtype);
+int     insrawch(chtype);
+bool    is_termresized(void);
+int     mvaddrawch(int, int, chtype);
+int     mvdeleteln(int, int);
+int     mvinsertln(int, int);
+int     mvinsrawch(int, int, chtype);
+int     mvwaddrawch(WINDOW *, int, int, chtype);
+int     mvwdeleteln(WINDOW *, int, int);
+int     mvwinsertln(WINDOW *, int, int);
+int     mvwinsrawch(WINDOW *, int, int, chtype);
+int     raw_output(bool);
+int     resize_term(int, int);
+WINDOW *resize_window(WINDOW *, int, int);
+int     waddrawch(WINDOW *, chtype);
+int     winsrawch(WINDOW *, chtype);
+char    wordchar(void);
+
+#ifdef PDC_WIDE
+wchar_t *slk_wlabel(int);
+#endif
+
+void    PDC_debug(const char *, ...);
+int     PDC_ungetch(int);
+int     PDC_set_blink(bool);
+int     PDC_set_line_color(short);
+void    PDC_set_title(const char *);
+
+int     PDC_clearclipboard(void);
+int     PDC_freeclipboard(char *);
+int     PDC_getclipboard(char **, long *);
+int     PDC_setclipboard(const char *, long);
+
+unsigned long PDC_get_input_fd(void);
+unsigned long PDC_get_key_modifiers(void);
+int     PDC_return_key_modifiers(bool);
+int     PDC_save_key_modifiers(bool);
+
+#ifdef XCURSES
+WINDOW *Xinitscr(int, char **);
+void    XCursesExit(void);
+int     sb_init(void);
+int     sb_set_horz(int, int, int);
+int     sb_set_vert(int, int, int);
+int     sb_get_horz(int *, int *, int *);
+int     sb_get_vert(int *, int *, int *);
+int     sb_refresh(void);
+#endif
+
+/*** Functions defined as macros ***/
+
+/* getch() and ungetch() conflict with some DOS libraries */
+
+#define getch()            wgetch(stdscr)
+#define ungetch(ch)        PDC_ungetch(ch)
+
+#define COLOR_PAIR(n)      (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR)
+#define PAIR_NUMBER(n)     (((n) & A_COLOR) >> PDC_COLOR_SHIFT)
+
+/* These will _only_ work as macros */
+
+#define getbegyx(w, y, x)  (y = getbegy(w), x = getbegx(w))
+#define getmaxyx(w, y, x)  (y = getmaxy(w), x = getmaxx(w))
+#define getparyx(w, y, x)  (y = getpary(w), x = getparx(w))
+#define getyx(w, y, x)     (y = getcury(w), x = getcurx(w))
+
+#define getsyx(y, x)       { if (curscr->_leaveit) (y)=(x)=-1; \
+                             else getyx(curscr,(y),(x)); }
+
+#ifdef NCURSES_MOUSE_VERSION
+# define getmouse(x) nc_getmouse(x)
+#endif
+
+/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */
+
+#define PDC_CLIP_SUCCESS         0
+#define PDC_CLIP_ACCESS_ERROR    1
+#define PDC_CLIP_EMPTY           2
+#define PDC_CLIP_MEMORY_ERROR    3
+
+/* PDCurses key modifier masks */
+
+#define PDC_KEY_MODIFIER_SHIFT   1
+#define PDC_KEY_MODIFIER_CONTROL 2
+#define PDC_KEY_MODIFIER_ALT     4
+#define PDC_KEY_MODIFIER_NUMLOCK 8
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+# undef bool
+}
+#endif
+
+#endif  /* __PDCURSES__ */

+ 142 - 0
src/dep/include/curspriv.h

@@ -0,0 +1,142 @@
+/* Public Domain Curses */
+
+/* $Id: curspriv.h,v 1.158 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/* Private definitions and declarations for use within PDCurses.
+   These should generally not be referenced by applications. */
+
+#ifndef __CURSES_INTERNALS__
+#define __CURSES_INTERNALS__ 1
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define CURSES_LIBRARY
+#include <curses.h>
+
+#if defined(__TURBOC__) || defined(__EMX__) || defined(__DJGPP__) || \
+    defined(__CYGWIN32__) || defined(__MINGW32__) || \
+    defined(__WATCOMC__) || defined(__PACIFIC__)
+# ifndef HAVE_VSSCANF
+#  define HAVE_VSSCANF       /* have vsscanf() */
+# endif
+#endif
+
+#if defined(__CYGWIN32__) || defined(__MINGW32__) || \
+    defined(__LCC__) || defined(__WATCOMC__)
+# ifndef HAVE_VSNPRINTF
+#  define HAVE_VSNPRINTF     /* have vsnprintf() */
+# endif
+#endif
+
+#if defined(_MSC_VER) && defined(_WIN32) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE 1   /* kill nonsense warnings */
+#endif
+
+/*----------------------------------------------------------------------*/
+
+typedef struct           /* structure for ripped off lines */
+{
+    int line;
+    int (*init)(WINDOW *, int);
+} RIPPEDOFFLINE;
+
+/* Window properties */
+
+#define _SUBWIN    0x01  /* window is a subwindow */
+#define _PAD       0x10  /* X/Open Pad. */
+#define _SUBPAD    0x20  /* X/Open subpad. */
+
+/* Miscellaneous */
+
+#define _NO_CHANGE -1    /* flags line edge unchanged */
+
+#define _ECHAR     0x08  /* Erase char       (^H) */
+#define _DWCHAR    0x17  /* Delete Word char (^W) */
+#define _DLCHAR    0x15  /* Delete Line char (^U) */
+
+extern WINDOW *pdc_lastscr;
+extern bool pdc_trace_on;   /* tracing flag */
+extern bool pdc_color_started;
+extern unsigned long pdc_key_modifiers;
+extern MOUSE_STATUS pdc_mouse_status;
+
+/*----------------------------------------------------------------------*/
+
+/* Platform implementation functions */
+
+void    PDC_beep(void);
+bool    PDC_can_change_color(void);
+int     PDC_color_content(short, short *, short *, short *);
+bool    PDC_check_key(void);
+int     PDC_curs_set(int);
+void    PDC_flushinp(void);
+int     PDC_get_columns(void);
+int     PDC_get_cursor_mode(void);
+int     PDC_get_key(void);
+int     PDC_get_rows(void);
+void    PDC_gotoyx(int, int);
+int     PDC_init_color(short, short, short, short);
+void    PDC_init_pair(short, short, short);
+int     PDC_modifiers_set(void);
+int     PDC_mouse_set(void);
+void    PDC_napms(int);
+int     PDC_pair_content(short, short *, short *);
+void    PDC_reset_prog_mode(void);
+void    PDC_reset_shell_mode(void);
+int     PDC_resize_screen(int, int);
+void    PDC_restore_screen_mode(int);
+void    PDC_save_screen_mode(int);
+void    PDC_scr_close(void);
+void    PDC_scr_free(void);
+int     PDC_scr_open(int, char **);
+void    PDC_set_keyboard_binary(bool);
+void    PDC_transform_line(int, int, int, const chtype *);
+const char *PDC_sysname(void);
+
+/* Internal cross-module functions */
+
+void    PDC_init_atrtab(void);
+WINDOW *PDC_makelines(WINDOW *);
+WINDOW *PDC_makenew(int, int, int, int);
+int     PDC_mouse_in_slk(int, int);
+void    PDC_slk_free(void);
+void    PDC_slk_initialize(void);
+void    PDC_sync(WINDOW *);
+
+#ifdef PDC_WIDE
+int     PDC_mbtowc(wchar_t *, const char *, size_t);
+size_t  PDC_mbstowcs(wchar_t *, const char *, size_t);
+size_t  PDC_wcstombs(char *, const wchar_t *, size_t);
+#endif
+
+#ifdef PDCDEBUG
+# define PDC_LOG(x) if (pdc_trace_on) PDC_debug x
+# define RCSID(x) static const char *rcsid = x;
+#else
+# define PDC_LOG(x)
+# define RCSID(x)
+#endif
+
+/* Internal macros for attributes */
+
+#ifdef CHTYPE_LONG
+# define PDC_COLOR_PAIRS 256
+#else
+# define PDC_COLOR_PAIRS  32
+#endif
+
+#ifndef max
+# define max(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef min
+# define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#define DIVROUND(num, divisor) ((num) + ((divisor) >> 1)) / (divisor)
+
+#define PDC_CLICK_PERIOD 150  /* time to wait for a click, if
+                                 not set by mouseinterval() */
+
+#endif /* __CURSES_INTERNALS__*/

+ 58 - 0
src/dep/include/panel.h

@@ -0,0 +1,58 @@
+/* Public Domain Curses */
+
+/* $Id: panel.h,v 1.19 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/*----------------------------------------------------------------------*
+ *                         Panels for PDCurses                          *
+ *----------------------------------------------------------------------*/
+
+#ifndef __PDCURSES_PANEL_H__
+#define __PDCURSES_PANEL_H__ 1
+
+#include <curses.h>
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+#endif
+
+typedef struct panelobs
+{
+    struct panelobs *above;
+    struct panel *pan;
+} PANELOBS;
+
+typedef struct panel
+{
+    WINDOW *win;
+    int wstarty;
+    int wendy;
+    int wstartx;
+    int wendx;
+    struct panel *below;
+    struct panel *above;
+    const void *user;
+    struct panelobs *obscure;
+} PANEL;
+
+int     bottom_panel(PANEL *pan);
+int     del_panel(PANEL *pan);
+int     hide_panel(PANEL *pan);
+int     move_panel(PANEL *pan, int starty, int startx);
+PANEL  *new_panel(WINDOW *win);
+PANEL  *panel_above(const PANEL *pan);
+PANEL  *panel_below(const PANEL *pan);
+int     panel_hidden(const PANEL *pan);
+const void *panel_userptr(const PANEL *pan);
+WINDOW *panel_window(const PANEL *pan);
+int     replace_panel(PANEL *pan, WINDOW *win);
+int     set_panel_userptr(PANEL *pan, const void *uptr);
+int     show_panel(PANEL *pan);
+int     top_panel(PANEL *pan);
+void    update_panels(void);
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+}
+#endif
+
+#endif /* __PDCURSES_PANEL_H__ */

+ 57 - 0
src/dep/include/term.h

@@ -0,0 +1,57 @@
+/* Public Domain Curses */
+
+/* $Id: term.h,v 1.16 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/* PDCurses doesn't operate with terminfo, but we need these functions for 
+   compatibility, to allow some things (notably, interface libraries for 
+   other languages) to be compiled. Anyone who tries to actually _use_ 
+   them will be disappointed, since they only return ERR. */
+
+#ifndef __PDCURSES_TERM_H__
+#define __PDCURSES_TERM_H__ 1
+
+#include <curses.h>
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+#endif
+
+typedef struct
+{
+    const char *_termname;
+} TERMINAL;
+
+#ifdef PDC_DLL_BUILD
+# ifndef CURSES_LIBRARY
+__declspec(dllimport)  TERMINAL *cur_term;
+# else
+__declspec(dllexport) extern TERMINAL *cur_term;
+# endif
+#else
+extern TERMINAL *cur_term;
+#endif
+
+int     del_curterm(TERMINAL *);
+int     putp(const char *);
+int     restartterm(const char *, int, int *);
+TERMINAL *set_curterm(TERMINAL *);
+int     setterm(const char *);
+int     setupterm(const char *, int, int *);
+int     tgetent(char *, const char *);
+int     tgetflag(const char *);
+int     tgetnum(const char *);
+char   *tgetstr(const char *, char **);
+char   *tgoto(const char *, int, int);
+int     tigetflag(const char *);
+int     tigetnum(const char *);
+char   *tigetstr(const char *);
+char   *tparm(const char *, long, long, long, long, long, 
+              long, long, long, long);
+int     tputs(const char *, int, int (*)(int));
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+}
+#endif
+
+#endif /* __PDCURSES_TERM_H__ */

BIN
src/dep/lib/pdcurses.lib