Merge mozilla-central to services-central
authorPhilipp von Weitershausen <philipp@weitershausen.de>
Thu, 07 Apr 2011 16:58:43 -0700
changeset 67781 759fca16efef2ce15447109e969f5e997a355791
parent 67780 c1fd47fa86ca66dc2f7652824eefde5710568832 (current diff)
parent 67600 1c1c1a81419ec071451bdb3ff3343e70d86f32f8 (diff)
child 67782 11a1f8c6f684db26e829d1269f2d512771d10301
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone2.2a1pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to services-central
mobile/.hgignore
mobile/.hgtags
--- a/extensions/spellcheck/hunspell/Makefile.in
+++ b/extensions/spellcheck/hunspell/Makefile.in
@@ -32,16 +32,25 @@
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ****** END LICENSE BLOCK ******
 
 DEPTH		= ../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
+relativesrcdir = extensions/spellcheck/hunspell
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= hunspell
-DIRS		= src
+DIRS = src
+
+XPCSHELL_TESTS = tests/unit
+
+libs::
+	$(NSINSTALL) -D $(DEPTH)/_tests/xpcshell/$(relativesrcdir)/tests/unit/data
+	cd $(srcdir)/tests; $(PYTHON) $(topsrcdir)/config/nsinstall.py \
+	  ./ \
+	  $(call core_abspath,$(DEPTH)/_tests/xpcshell/$(relativesrcdir)/tests/unit/data/)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/extensions/spellcheck/hunspell/src/mozHunspell.cpp
+++ b/extensions/spellcheck/hunspell/src/mozHunspell.cpp
@@ -356,38 +356,38 @@ mozHunspell::LoadDictionaryList()
     dictDirs->GetNext(getter_AddRefs(elem));
 
     dictDir = do_QueryInterface(elem);
     if (dictDir)
       LoadDictionariesFromDir(dictDir);
   }
 }
 
-void
+NS_IMETHODIMP
 mozHunspell::LoadDictionariesFromDir(nsIFile* aDir)
 {
   nsresult rv;
 
   PRBool check = PR_FALSE;
   rv = aDir->Exists(&check);
   if (NS_FAILED(rv) || !check)
-    return;
+    return NS_ERROR_UNEXPECTED;
 
   rv = aDir->IsDirectory(&check);
   if (NS_FAILED(rv) || !check)
-    return;
+    return NS_ERROR_UNEXPECTED;
 
   nsCOMPtr<nsISimpleEnumerator> e;
   rv = aDir->GetDirectoryEntries(getter_AddRefs(e));
   if (NS_FAILED(rv))
-    return;
+    return NS_ERROR_UNEXPECTED;
 
   nsCOMPtr<nsIDirectoryEnumerator> files(do_QueryInterface(e));
   if (!files)
-    return;
+    return NS_ERROR_UNEXPECTED;
 
   nsCOMPtr<nsIFile> file;
   while (NS_SUCCEEDED(files->GetNextFile(getter_AddRefs(file))) && file) {
     nsAutoString leafName;
     file->GetLeafName(leafName);
     if (!StringEndsWith(leafName, NS_LITERAL_STRING(".dic")))
       continue;
 
@@ -403,16 +403,18 @@ mozHunspell::LoadDictionariesFromDir(nsI
       continue;
 
 #ifdef DEBUG_bsmedberg
     printf("Adding dictionary: %s\n", NS_ConvertUTF16toUTF8(dict).get());
 #endif
 
     mDictionaries.Put(dict, file);
   }
+
+  return NS_OK;
 }
 
 nsresult mozHunspell::ConvertCharset(const PRUnichar* aStr, char ** aDst)
 {
   NS_ENSURE_ARG_POINTER(aDst);
   NS_ENSURE_TRUE(mEncoder, NS_ERROR_NULL_POINTER);
 
   PRInt32 outLength;
--- a/extensions/spellcheck/hunspell/src/mozHunspell.h
+++ b/extensions/spellcheck/hunspell/src/mozHunspell.h
@@ -88,17 +88,16 @@ public:
   NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(mozHunspell, mozISpellCheckingEngine)
 
   mozHunspell() : mHunspell(nsnull) { }
   virtual ~mozHunspell();
 
   nsresult Init();
 
   void LoadDictionaryList();
-  void LoadDictionariesFromDir(nsIFile* aDir);
 
   // helper method for converting a word to the charset of the dictionary
   nsresult ConvertCharset(const PRUnichar* aStr, char ** aDst);
 
 protected:
  
   nsCOMPtr<mozIPersonalDictionary> mPersonalDictionary;
   nsCOMPtr<nsIUnicodeEncoder>      mEncoder; 
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589.aff
@@ -0,0 +1,3 @@
+# capitalized ngram suggestion test data for
+# Sf.net Bug ID 1463589, reported by Frederik Fouvry.
+MAXNGRAMSUGS 1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589.dic
@@ -0,0 +1,2 @@
+1
+Khlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589.sug
@@ -0,0 +1,5 @@
+Khlschrank
+Khlschrank
+Khlschrank
+Khlschrank
+Khlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589.wrong
@@ -0,0 +1,5 @@
+kuhlschrank
+kuehlschrank
+khlschrank
+Kuhlschrank
+Kuehlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589_utf.aff
@@ -0,0 +1,4 @@
+# capitalized ngram suggestion test data (Unicode version) for
+# Sf.net Bug ID 1463589, reported by Frederik Fouvry.
+SET UTF-8
+MAXNGRAMSUGS 1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589_utf.dic
@@ -0,0 +1,2 @@
+1
+Kühlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589_utf.sug
@@ -0,0 +1,5 @@
+Kühlschrank
+Kühlschrank
+Kühlschrank
+Kühlschrank
+Kühlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589_utf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1463589_utf.wrong
@@ -0,0 +1,5 @@
+kuhlschrank
+kuehlschrank
+kühlschrank
+Kuhlschrank
+Kuehlschrank
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1592880.aff
@@ -0,0 +1,20 @@
+# fix homonym handling for German dictionary project,
+# reported by Björn Jacke (sf.net Bug ID 1592880).
+SET ISO8859-1
+
+SFX N Y 1
+SFX N 0 n .
+
+SFX S Y 1
+SFX S 0 s .
+
+SFX P Y 1
+SFX P 0 en .
+
+SFX Q Y 2
+SFX Q 0 e .
+SFX Q 0 en .
+
+COMPOUNDEND z
+COMPOUNDPERMITFLAG c
+ONLYINCOMPOUND o
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1592880.dic
@@ -0,0 +1,4 @@
+3
+weg/Qoz
+weg/P
+wege
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1592880.good
@@ -0,0 +1,3 @@
+weg
+wege
+wegen
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1592880.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1695964.aff
@@ -0,0 +1,10 @@
+# fix NEEDAFFIX homonym suggestion.
+# Sf.net Bug ID 1695964, reported by Björn Jacke.
+TRY esianrtolcdugmphbyfvkwESIANRTOLCDUGMPHBYFVKW
+MAXNGRAMSUGS 0
+NEEDAFFIX h
+SFX S Y 1
+SFX S 0 s .
+
+SFX e Y 1
+SFX e 0 e .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1695964.dic
@@ -0,0 +1,3 @@
+2
+Mull/he
+Mull/S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1695964.sug
@@ -0,0 +1,3 @@
+Mull
+Mulle
+Mulls
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1695964.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1695964.wrong
@@ -0,0 +1,3 @@
+Mall
+Malle
+Malls
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1706659.aff
@@ -0,0 +1,13 @@
+# test COMPOUNDRULE bug reported by Björn Jacke
+SET ISO8859-1
+TRY esijanrtolcdugmphbyfvkwqxz
+
+SFX A Y 5
+SFX A 0 e .
+SFX A 0 er .
+SFX A 0 en .
+SFX A 0 em .
+SFX A 0 es .
+
+COMPOUNDRULE 1
+COMPOUNDRULE vw
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1706659.dic
@@ -0,0 +1,4 @@
+3
+arbeits/v
+scheu/Aw
+farbig/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1706659.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1706659.wrong
@@ -0,0 +1,3 @@
+arbeitsfarbig
+arbeitsfarbige
+arbeitsfarbiger
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1975530.aff
@@ -0,0 +1,6 @@
+SET	UTF-8
+IGNORE ٌٍَُِّْـ
+
+PFX x N 1
+PFX x	أ	ت	أ[^ي]
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1975530.dic
@@ -0,0 +1,3 @@
+2
+أرى/x
+أيار/x
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1975530.good
@@ -0,0 +1,3 @@
+أرى
+أيار
+ترى
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1975530.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/1975530.wrong
@@ -0,0 +1,1 @@
+تيار
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970240.aff
@@ -0,0 +1,5 @@
+# test words with three parts
+CHECKCOMPOUNDPATTERN 1
+CHECKCOMPOUNDPATTERN le fi
+COMPOUNDFLAG c
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970240.dic
@@ -0,0 +1,4 @@
+3
+first/c
+middle/c
+last/c
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970240.good
@@ -0,0 +1,1 @@
+firstmiddlelast
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970240.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970240.wrong
@@ -0,0 +1,1 @@
+lastmiddlefirst
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970242.aff
@@ -0,0 +1,4 @@
+CHECKCOMPOUNDPATTERN 1
+CHECKCOMPOUNDPATTERN /a /b
+COMPOUNDFLAG c
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970242.dic
@@ -0,0 +1,4 @@
+3
+foo/ac
+bar/c
+baz/bc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970242.good
@@ -0,0 +1,5 @@
+foobar
+barfoo
+bazfoo
+barbaz
+bazbar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970242.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2970242.wrong
@@ -0,0 +1,1 @@
+foobaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2999225.aff
@@ -0,0 +1,6 @@
+COMPOUNDRULE 1
+COMPOUNDRULE ab
+
+COMPOUNDBEGIN A
+COMPOUNDEND B
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2999225.dic
@@ -0,0 +1,4 @@
+3
+foo/aA
+bar/b
+baz/B
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2999225.good
@@ -0,0 +1,2 @@
+foobar
+foobaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/2999225.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.aff
@@ -0,0 +1,8 @@
+# check bad capitalisation of Dutch letter IJ.
+TRY i
+FORBIDDENWORD *
+PFX i N 1
+PFX i ij IJ ij
+
+REP 1
+REP ij IJ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.dic
@@ -0,0 +1,3 @@
+1
+ijs/i
+Ijs/*
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.good
@@ -0,0 +1,2 @@
+ijs
+IJs
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.sug
@@ -0,0 +1,1 @@
+IJs, ijs
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/IJ.wrong
@@ -0,0 +1,1 @@
+Ijs
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/Makefile.am
@@ -0,0 +1,693 @@
+## Process this file with automake to create Makefile.in
+
+SUBDIRS = suggestiontest
+
+XFAIL_TESTS = @XFAILED@
+
+TESTS =	\
+affixes.test \
+condition.test \
+condition_utf.test \
+base.test \
+base_utf.test \
+allcaps.test \
+allcaps_utf.test \
+allcaps2.test \
+allcaps3.test \
+keepcase.test \
+i58202.test \
+map.test \
+rep.test \
+sug.test \
+sugutf.test \
+phone.test \
+flag.test \
+flaglong.test \
+flagnum.test \
+flagutf8.test \
+slash.test \
+forbiddenword.test \
+nosuggest.test \
+alias.test \
+alias2.test \
+alias3.test \
+breakdefault.test \
+break.test \
+needaffix.test \
+needaffix2.test \
+needaffix3.test \
+needaffix4.test \
+needaffix5.test \
+circumfix.test \
+fogemorpheme.test \
+onlyincompound.test \
+complexprefixes.test \
+complexprefixes2.test \
+complexprefixesutf.test \
+conditionalprefix.test \
+zeroaffix.test \
+utf8.test \
+utf8_bom.test \
+utf8_bom2.test \
+utf8_nonbmp.test \
+compoundflag.test \
+compoundrule.test \
+compoundrule2.test \
+compoundrule3.test \
+compoundrule4.test \
+compoundrule5.test \
+compoundrule6.test \
+compoundrule7.test \
+compoundrule8.test \
+compoundaffix.test \
+compoundaffix2.test \
+compoundaffix3.test \
+checkcompounddup.test \
+checkcompoundtriple.test \
+simplifiedtriple.test \
+checkcompoundrep.test \
+checkcompoundcase2.test \
+checkcompoundcaseutf.test \
+checkcompoundpattern.test \
+checkcompoundpattern2.test \
+checkcompoundpattern3.test \
+checkcompoundpattern4.test \
+utfcompound.test \
+checksharps.test \
+checksharpsutf.test \
+germancompounding.test \
+germancompoundingold.test \
+i35725.test \
+i53643.test \
+i54633.test \
+i54980.test \
+maputf.test \
+reputf.test \
+ignore.test \
+ignoreutf.test \
+1592880.test \
+1695964.test \
+1463589.test \
+1463589_utf.test \
+IJ.test \
+i68568.test \
+i68568utf.test \
+1706659.test \
+digits_in_words.test \
+colons_in_words.test \
+ngram_utf_fix.test \
+morph.test \
+1975530.test \
+fullstrip.test \
+iconv.test \
+oconv.test \
+encoding.test \
+korean.test \
+opentaal_forbiddenword1.test \
+opentaal_forbiddenword2.test \
+opentaal_keepcase.test \
+arabic.test \
+2970240.test \
+2970242.test \
+breakoff.test \
+opentaal_cpdpat.test \
+opentaal_cpdpat2.test \
+2999225.test \
+onlyincompound2.test \
+forceucase.test \
+warn.test
+
+# infixes.test
+
+distclean-local:
+	-rm -rf testSubDir
+        
+EXTRA_DIST = \
+test.sh \
+affixes.aff \
+affixes.dic \
+affixes.good \
+affixes.test \
+condition.aff \
+condition.dic \
+condition.good \
+condition.test \
+condition.wrong \
+condition_utf.aff \
+condition_utf.dic \
+condition_utf.good \
+condition_utf.test \
+condition_utf.wrong \
+base.aff \
+base.dic \
+base.good \
+base.sug \
+base.test \
+base.wrong \
+base_utf.aff \
+base_utf.dic \
+base_utf.good \
+base_utf.sug \
+base_utf.test \
+base_utf.wrong \
+allcaps.aff \
+allcaps.dic \
+allcaps.good \
+allcaps.sug \
+allcaps.test \
+allcaps.wrong \
+allcaps2.aff \
+allcaps2.dic \
+allcaps2.good \
+allcaps2.sug \
+allcaps2.test \
+allcaps2.wrong \
+allcaps3.aff \
+allcaps3.dic \
+allcaps3.good \
+allcaps3.test \
+allcaps3.wrong \
+allcaps_utf.aff \
+allcaps_utf.dic \
+allcaps_utf.good \
+allcaps_utf.sug \
+allcaps_utf.test \
+allcaps_utf.wrong \
+keepcase.aff \
+keepcase.dic \
+keepcase.good \
+keepcase.sug \
+keepcase.test \
+keepcase.wrong \
+map.aff \
+map.dic \
+map.sug \
+map.test \
+map.wrong \
+rep.aff \
+rep.dic \
+rep.sug \
+rep.test \
+rep.wrong \
+sug.aff \
+sug.dic \
+sug.sug \
+sug.test \
+sug.wrong \
+sugutf.aff \
+sugutf.dic \
+sugutf.sug \
+sugutf.test \
+sugutf.wrong \
+phone.aff \
+phone.dic \
+phone.sug \
+phone.test \
+phone.wrong \
+alias.aff \
+alias.dic \
+alias.good \
+alias.test \
+alias2.aff \
+alias2.dic \
+alias2.good \
+alias2.morph \
+alias2.test \
+alias3.aff \
+alias3.dic \
+alias3.good \
+alias3.morph \
+alias3.test \
+break.aff \
+break.dic \
+break.good \
+break.test \
+break.wrong \
+breakdefault.aff \
+breakdefault.dic \
+breakdefault.good \
+breakdefault.sug \
+breakdefault.test \
+breakdefault.wrong \
+circumfix.aff \
+circumfix.dic \
+circumfix.good \
+circumfix.morph \
+circumfix.test \
+circumfix.wrong \
+fogemorpheme.aff \
+fogemorpheme.dic \
+fogemorpheme.good \
+fogemorpheme.test \
+fogemorpheme.wrong \
+onlyincompound.aff \
+onlyincompound.dic \
+onlyincompound.good \
+onlyincompound.sug \
+onlyincompound.test \
+onlyincompound.wrong \
+forbiddenword.aff \
+forbiddenword.dic \
+forbiddenword.good \
+forbiddenword.test \
+forbiddenword.wrong \
+nosuggest.aff \
+nosuggest.dic \
+nosuggest.good \
+nosuggest.sug \
+nosuggest.test \
+nosuggest.wrong \
+germancompounding.aff \
+germancompounding.dic \
+germancompounding.good \
+germancompounding.test \
+germancompounding.wrong \
+germancompoundingold.aff \
+germancompoundingold.dic \
+germancompoundingold.good \
+germancompoundingold.test \
+germancompoundingold.wrong \
+needaffix2.aff \
+needaffix2.dic \
+needaffix2.good \
+needaffix2.morph \
+needaffix2.test \
+needaffix3.aff \
+needaffix3.dic \
+needaffix3.good \
+needaffix3.test \
+needaffix3.wrong \
+needaffix4.aff \
+needaffix4.dic \
+needaffix4.good \
+needaffix4.test \
+needaffix5.aff \
+needaffix5.dic \
+needaffix5.good \
+needaffix5.test \
+needaffix5.wrong \
+needaffix.aff \
+needaffix.dic \
+needaffix.good \
+needaffix.test \
+needaffix.wrong \
+zeroaffix.aff \
+zeroaffix.dic \
+zeroaffix.good \
+zeroaffix.morph \
+zeroaffix.test \
+utf8.aff \
+utf8.dic \
+utf8.good \
+utf8.test \
+utf8_bom.aff \
+utf8_bom.dic \
+utf8_bom.good \
+utf8_bom.test \
+utf8_bom2.aff \
+utf8_bom2.dic \
+utf8_bom2.good \
+utf8_bom2.test \
+utf8_nonbmp.aff \
+utf8_nonbmp.dic \
+utf8_nonbmp.good \
+utf8_nonbmp.sug \
+utf8_nonbmp.test \
+utf8_nonbmp.wrong \
+utfcompound.aff \
+utfcompound.dic \
+utfcompound.good \
+utfcompound.test \
+utfcompound.wrong \
+compoundflag.aff \
+compoundflag.dic \
+compoundflag.good \
+compoundflag.test \
+compoundflag.wrong \
+compoundrule.aff \
+compoundrule.dic \
+compoundrule.good \
+compoundrule.test \
+compoundrule.wrong \
+compoundrule2.aff \
+compoundrule2.dic \
+compoundrule2.good \
+compoundrule2.test \
+compoundrule2.wrong \
+compoundrule3.aff \
+compoundrule3.dic \
+compoundrule3.good \
+compoundrule3.test \
+compoundrule3.wrong \
+compoundrule4.aff \
+compoundrule4.dic \
+compoundrule4.good \
+compoundrule4.test \
+compoundrule4.wrong \
+compoundrule5.aff \
+compoundrule5.dic \
+compoundrule5.good \
+compoundrule5.morph \
+compoundrule5.test \
+compoundrule5.wrong \
+compoundrule6.aff \
+compoundrule6.dic \
+compoundrule6.good \
+compoundrule6.test \
+compoundrule6.wrong \
+compoundrule7.aff \
+compoundrule7.dic \
+compoundrule7.good \
+compoundrule7.test \
+compoundrule7.wrong \
+compoundrule8.aff \
+compoundrule8.dic \
+compoundrule8.good \
+compoundrule8.test \
+compoundrule8.wrong \
+compoundaffix.aff \
+compoundaffix.dic \
+compoundaffix.good \
+compoundaffix.test \
+compoundaffix.wrong \
+compoundaffix2.aff \
+compoundaffix2.dic \
+compoundaffix2.good \
+compoundaffix2.test \
+compoundaffix3.aff \
+compoundaffix3.dic \
+compoundaffix3.good \
+compoundaffix3.test \
+compoundaffix3.wrong \
+checkcompounddup.aff \
+checkcompounddup.dic \
+checkcompounddup.good \
+checkcompounddup.test \
+checkcompounddup.wrong \
+checkcompoundcase.aff \
+checkcompoundcase.dic \
+checkcompoundcase.good \
+checkcompoundcase.test \
+checkcompoundcase.wrong \
+checkcompoundcase2.aff \
+checkcompoundcase2.dic \
+checkcompoundcase2.good \
+checkcompoundcase2.test \
+checkcompoundcase2.wrong \
+checkcompoundcaseutf.aff \
+checkcompoundcaseutf.dic \
+checkcompoundcaseutf.good \
+checkcompoundcaseutf.test \
+checkcompoundcaseutf.wrong \
+checkcompoundrep.aff \
+checkcompoundrep.dic \
+checkcompoundrep.good \
+checkcompoundrep.test \
+checkcompoundrep.wrong \
+checkcompoundtriple.aff \
+checkcompoundtriple.dic \
+checkcompoundtriple.good \
+checkcompoundtriple.test \
+checkcompoundtriple.wrong \
+simplifiedtriple.aff \
+simplifiedtriple.dic \
+simplifiedtriple.good \
+simplifiedtriple.test \
+simplifiedtriple.wrong \
+checkcompoundpattern.aff \
+checkcompoundpattern.dic \
+checkcompoundpattern.good \
+checkcompoundpattern.test \
+checkcompoundpattern.wrong \
+checkcompoundpattern2.aff \
+checkcompoundpattern2.dic \
+checkcompoundpattern2.good \
+checkcompoundpattern2.test \
+checkcompoundpattern2.wrong \
+checkcompoundpattern3.aff \
+checkcompoundpattern3.dic \
+checkcompoundpattern3.good \
+checkcompoundpattern3.test \
+checkcompoundpattern3.wrong \
+checkcompoundpattern4.aff \
+checkcompoundpattern4.dic \
+checkcompoundpattern4.good \
+checkcompoundpattern4.test \
+checkcompoundpattern4.wrong \
+checksharps.aff \
+checksharps.dic \
+checksharps.good \
+checksharps.sug \
+checksharps.test \
+checksharps.wrong \
+checksharpsutf.aff \
+checksharpsutf.dic \
+checksharpsutf.good \
+checksharpsutf.sug \
+checksharpsutf.test \
+checksharpsutf.wrong \
+conditionalprefix.aff \
+conditionalprefix.dic \
+conditionalprefix.good \
+conditionalprefix.morph \
+conditionalprefix.test \
+conditionalprefix.wrong \
+flaglong.aff \
+flaglong.dic \
+flaglong.good \
+flaglong.test \
+flagnum.aff \
+flagnum.dic \
+flagnum.good \
+flagnum.test \
+flag.aff \
+flag.dic \
+flag.good \
+flag.test \
+flagutf8.aff \
+flagutf8.dic \
+flagutf8.good \
+flagutf8.test \
+complexprefixes.aff \
+complexprefixes.dic \
+complexprefixes.good \
+complexprefixes.wrong \
+complexprefixes.test \
+complexprefixes2.aff \
+complexprefixes2.dic \
+complexprefixes2.good \
+complexprefixes2.test \
+complexprefixesutf.aff \
+complexprefixesutf.dic \
+complexprefixesutf.good \
+complexprefixesutf.wrong \
+complexprefixesutf.test \
+i35725.aff \
+i35725.dic \
+i35725.good \
+i35725.sug \
+i35725.test \
+i35725.wrong \
+i53643.aff \
+i53643.dic \
+i53643.good \
+i53643.test \
+i53643.wrong \
+i54633.aff \
+i54633.dic \
+i54633.good \
+i54633.sug \
+i54633.test \
+i54633.wrong \
+i54980.aff \
+i54980.dic \
+i54980.good \
+i54980.test \
+i58202.aff \
+i58202.dic \
+i58202.good \
+i58202.sug \
+i58202.test \
+i58202.wrong \
+maputf.aff \
+maputf.dic \
+maputf.sug \
+maputf.wrong \
+maputf.test \
+reputf.aff \
+reputf.dic \
+reputf.sug \
+reputf.wrong \
+reputf.test \
+slash.aff \
+slash.dic \
+slash.good \
+slash.test \
+ignore.aff \
+ignore.dic \
+ignore.good \
+ignore.test \
+ignoreutf.aff \
+ignoreutf.dic \
+ignoreutf.good \
+ignoreutf.test \
+1592880.aff \
+1592880.dic \
+1592880.good \
+1592880.test \
+1695964.aff \
+1695964.dic \
+1695964.sug \
+1695964.test \
+1695964.wrong \
+1463589.aff \
+1463589.dic \
+1463589.sug \
+1463589.test \
+1463589.wrong \
+1463589_utf.aff \
+1463589_utf.dic \
+1463589_utf.sug \
+1463589_utf.test \
+1463589_utf.wrong \
+IJ.aff \
+IJ.dic \
+IJ.good \
+IJ.sug \
+IJ.test \
+IJ.wrong \
+i68568.aff \
+i68568.dic \
+i68568.test \
+i68568.wrong \
+i68568utf.aff \
+i68568utf.dic \
+i68568utf.test \
+i68568utf.wrong \
+1706659.aff \
+1706659.dic \
+1706659.test \
+1706659.wrong \
+digits_in_words.aff \
+digits_in_words.dic \
+digits_in_words.test \
+digits_in_words.wrong \
+colons_in_words.aff \
+colons_in_words.dic \
+colons_in_words.test \
+ngram_utf_fix.aff \
+ngram_utf_fix.dic \
+ngram_utf_fix.good \
+ngram_utf_fix.sug \
+ngram_utf_fix.test \
+ngram_utf_fix.wrong \
+morph.aff \
+morph.dic \
+morph.good \
+morph.morph \
+morph.test \
+1975530.aff \
+1975530.dic \
+1975530.good \
+1975530.test \
+1975530.wrong \
+fullstrip.aff \
+fullstrip.dic \
+fullstrip.good \
+fullstrip.test \
+iconv.aff \
+iconv.dic \
+iconv.good \
+iconv.test \
+oconv.aff \
+oconv.dic \
+oconv.good \
+oconv.sug \
+oconv.test \
+oconv.wrong \
+encoding.aff \
+encoding.dic \
+encoding.good \
+encoding.test \
+opentaal_forbiddenword1.aff \
+opentaal_forbiddenword1.dic \
+opentaal_forbiddenword1.good \
+opentaal_forbiddenword1.sug \
+opentaal_forbiddenword1.test \
+opentaal_forbiddenword1.wrong \
+opentaal_forbiddenword2.aff \
+opentaal_forbiddenword2.dic \
+opentaal_forbiddenword2.good \
+opentaal_forbiddenword2.sug \
+opentaal_forbiddenword2.test \
+opentaal_forbiddenword2.wrong \
+opentaal_forbiddenword2.aff \
+opentaal_forbiddenword2.dic \
+opentaal_forbiddenword2.good \
+opentaal_forbiddenword2.sug \
+opentaal_forbiddenword2.test \
+opentaal_forbiddenword2.wrong \
+opentaal_keepcase.aff \
+opentaal_keepcase.dic \
+opentaal_keepcase.good \
+opentaal_keepcase.sug \
+opentaal_keepcase.test \
+opentaal_keepcase.wrong \
+arabic.aff \
+arabic.dic \
+arabic.wrong \
+arabic.test \
+2970240.aff \
+2970240.dic \
+2970240.good \
+2970240.wrong \
+2970240.test \
+2970242.aff \
+2970242.dic \
+2970242.good \
+2970242.wrong \
+2970242.test \
+breakoff.aff \
+breakoff.dic \
+breakoff.good \
+breakoff.wrong \
+breakoff.test \
+opentaal_cpdpat.aff \
+opentaal_cpdpat.dic \
+opentaal_cpdpat.good \
+opentaal_cpdpat.wrong \
+opentaal_cpdpat.test \
+opentaal_cpdpat2.aff \
+opentaal_cpdpat2.dic \
+opentaal_cpdpat2.good \
+opentaal_cpdpat2.wrong \
+opentaal_cpdpat2.test \
+2999225.aff \
+2999225.dic \
+2999225.good \
+2999225.test \
+korean.aff \
+korean.dic \
+korean.good \
+korean.wrong \
+korean.test \
+onlyincompound2.aff \
+onlyincompound2.dic \
+onlyincompound2.good \
+onlyincompound2.test \
+onlyincompound2.wrong \
+forceucase.aff \
+forceucase.dic \
+forceucase.good \
+forceucase.sug \
+forceucase.wrong \
+forceucase.test \
+warn.aff \
+warn.dic \
+warn.good \
+warn.test
+
+# infixes.aff
+# infixes.dic
+# infixes.good
+# infixes.test
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/Makefile.in
@@ -0,0 +1,1416 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \
+	$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \
+	$(top_srcdir)/m4/inttypes-pri.m4 \
+	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
+	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
+	$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \
+	$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/visibility.m4 \
+	$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+	$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSESLIB = @CURSESLIB@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GENCAT = @GENCAT@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GLIBC2 = @GLIBC2@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+HAVE_ASPRINTF = @HAVE_ASPRINTF@
+HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
+HAVE_SNPRINTF = @HAVE_SNPRINTF@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WPRINTF = @HAVE_WPRINTF@
+HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@
+HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLBISON = @INTLBISON@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMULTITHREAD = @LIBMULTITHREAD@
+LIBOBJS = @LIBOBJS@
+LIBPTH = @LIBPTH@
+LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBS = @LIBS@
+LIBTHREAD = @LIBTHREAD@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBC = @LTLIBC@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
+LTLIBOBJS = @LTLIBOBJS@
+LTLIBPTH = @LTLIBPTH@
+LTLIBTHREAD = @LTLIBTHREAD@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POSUB = @POSUB@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+RANLIB = @RANLIB@
+READLINELIB = @READLINELIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WINDRES = @WINDRES@
+WOE32 = @WOE32@
+WOE32DLL = @WOE32DLL@
+XFAILED = @XFAILED@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = suggestiontest
+XFAIL_TESTS = @XFAILED@
+TESTS = \
+affixes.test \
+condition.test \
+condition_utf.test \
+base.test \
+base_utf.test \
+allcaps.test \
+allcaps_utf.test \
+allcaps2.test \
+allcaps3.test \
+keepcase.test \
+i58202.test \
+map.test \
+rep.test \
+sug.test \
+sugutf.test \
+phone.test \
+flag.test \
+flaglong.test \
+flagnum.test \
+flagutf8.test \
+slash.test \
+forbiddenword.test \
+nosuggest.test \
+alias.test \
+alias2.test \
+alias3.test \
+breakdefault.test \
+break.test \
+needaffix.test \
+needaffix2.test \
+needaffix3.test \
+needaffix4.test \
+needaffix5.test \
+circumfix.test \
+fogemorpheme.test \
+onlyincompound.test \
+complexprefixes.test \
+complexprefixes2.test \
+complexprefixesutf.test \
+conditionalprefix.test \
+zeroaffix.test \
+utf8.test \
+utf8_bom.test \
+utf8_bom2.test \
+utf8_nonbmp.test \
+compoundflag.test \
+compoundrule.test \
+compoundrule2.test \
+compoundrule3.test \
+compoundrule4.test \
+compoundrule5.test \
+compoundrule6.test \
+compoundrule7.test \
+compoundrule8.test \
+compoundaffix.test \
+compoundaffix2.test \
+compoundaffix3.test \
+checkcompounddup.test \
+checkcompoundtriple.test \
+simplifiedtriple.test \
+checkcompoundrep.test \
+checkcompoundcase2.test \
+checkcompoundcaseutf.test \
+checkcompoundpattern.test \
+checkcompoundpattern2.test \
+checkcompoundpattern3.test \
+checkcompoundpattern4.test \
+utfcompound.test \
+checksharps.test \
+checksharpsutf.test \
+germancompounding.test \
+germancompoundingold.test \
+i35725.test \
+i53643.test \
+i54633.test \
+i54980.test \
+maputf.test \
+reputf.test \
+ignore.test \
+ignoreutf.test \
+1592880.test \
+1695964.test \
+1463589.test \
+1463589_utf.test \
+IJ.test \
+i68568.test \
+i68568utf.test \
+1706659.test \
+digits_in_words.test \
+colons_in_words.test \
+ngram_utf_fix.test \
+morph.test \
+1975530.test \
+fullstrip.test \
+iconv.test \
+oconv.test \
+encoding.test \
+korean.test \
+opentaal_forbiddenword1.test \
+opentaal_forbiddenword2.test \
+opentaal_keepcase.test \
+arabic.test \
+2970240.test \
+2970242.test \
+breakoff.test \
+opentaal_cpdpat.test \
+opentaal_cpdpat2.test \
+2999225.test \
+onlyincompound2.test \
+forceucase.test \
+warn.test
+
+EXTRA_DIST = \
+test.sh \
+affixes.aff \
+affixes.dic \
+affixes.good \
+affixes.test \
+condition.aff \
+condition.dic \
+condition.good \
+condition.test \
+condition.wrong \
+condition_utf.aff \
+condition_utf.dic \
+condition_utf.good \
+condition_utf.test \
+condition_utf.wrong \
+base.aff \
+base.dic \
+base.good \
+base.sug \
+base.test \
+base.wrong \
+base_utf.aff \
+base_utf.dic \
+base_utf.good \
+base_utf.sug \
+base_utf.test \
+base_utf.wrong \
+allcaps.aff \
+allcaps.dic \
+allcaps.good \
+allcaps.sug \
+allcaps.test \
+allcaps.wrong \
+allcaps2.aff \
+allcaps2.dic \
+allcaps2.good \
+allcaps2.sug \
+allcaps2.test \
+allcaps2.wrong \
+allcaps3.aff \
+allcaps3.dic \
+allcaps3.good \
+allcaps3.test \
+allcaps3.wrong \
+allcaps_utf.aff \
+allcaps_utf.dic \
+allcaps_utf.good \
+allcaps_utf.sug \
+allcaps_utf.test \
+allcaps_utf.wrong \
+keepcase.aff \
+keepcase.dic \
+keepcase.good \
+keepcase.sug \
+keepcase.test \
+keepcase.wrong \
+map.aff \
+map.dic \
+map.sug \
+map.test \
+map.wrong \
+rep.aff \
+rep.dic \
+rep.sug \
+rep.test \
+rep.wrong \
+sug.aff \
+sug.dic \
+sug.sug \
+sug.test \
+sug.wrong \
+sugutf.aff \
+sugutf.dic \
+sugutf.sug \
+sugutf.test \
+sugutf.wrong \
+phone.aff \
+phone.dic \
+phone.sug \
+phone.test \
+phone.wrong \
+alias.aff \
+alias.dic \
+alias.good \
+alias.test \
+alias2.aff \
+alias2.dic \
+alias2.good \
+alias2.morph \
+alias2.test \
+alias3.aff \
+alias3.dic \
+alias3.good \
+alias3.morph \
+alias3.test \
+break.aff \
+break.dic \
+break.good \
+break.test \
+break.wrong \
+breakdefault.aff \
+breakdefault.dic \
+breakdefault.good \
+breakdefault.sug \
+breakdefault.test \
+breakdefault.wrong \
+circumfix.aff \
+circumfix.dic \
+circumfix.good \
+circumfix.morph \
+circumfix.test \
+circumfix.wrong \
+fogemorpheme.aff \
+fogemorpheme.dic \
+fogemorpheme.good \
+fogemorpheme.test \
+fogemorpheme.wrong \
+onlyincompound.aff \
+onlyincompound.dic \
+onlyincompound.good \
+onlyincompound.sug \
+onlyincompound.test \
+onlyincompound.wrong \
+forbiddenword.aff \
+forbiddenword.dic \
+forbiddenword.good \
+forbiddenword.test \
+forbiddenword.wrong \
+nosuggest.aff \
+nosuggest.dic \
+nosuggest.good \
+nosuggest.sug \
+nosuggest.test \
+nosuggest.wrong \
+germancompounding.aff \
+germancompounding.dic \
+germancompounding.good \
+germancompounding.test \
+germancompounding.wrong \
+germancompoundingold.aff \
+germancompoundingold.dic \
+germancompoundingold.good \
+germancompoundingold.test \
+germancompoundingold.wrong \
+needaffix2.aff \
+needaffix2.dic \
+needaffix2.good \
+needaffix2.morph \
+needaffix2.test \
+needaffix3.aff \
+needaffix3.dic \
+needaffix3.good \
+needaffix3.test \
+needaffix3.wrong \
+needaffix4.aff \
+needaffix4.dic \
+needaffix4.good \
+needaffix4.test \
+needaffix5.aff \
+needaffix5.dic \
+needaffix5.good \
+needaffix5.test \
+needaffix5.wrong \
+needaffix.aff \
+needaffix.dic \
+needaffix.good \
+needaffix.test \
+needaffix.wrong \
+zeroaffix.aff \
+zeroaffix.dic \
+zeroaffix.good \
+zeroaffix.morph \
+zeroaffix.test \
+utf8.aff \
+utf8.dic \
+utf8.good \
+utf8.test \
+utf8_bom.aff \
+utf8_bom.dic \
+utf8_bom.good \
+utf8_bom.test \
+utf8_bom2.aff \
+utf8_bom2.dic \
+utf8_bom2.good \
+utf8_bom2.test \
+utf8_nonbmp.aff \
+utf8_nonbmp.dic \
+utf8_nonbmp.good \
+utf8_nonbmp.sug \
+utf8_nonbmp.test \
+utf8_nonbmp.wrong \
+utfcompound.aff \
+utfcompound.dic \
+utfcompound.good \
+utfcompound.test \
+utfcompound.wrong \
+compoundflag.aff \
+compoundflag.dic \
+compoundflag.good \
+compoundflag.test \
+compoundflag.wrong \
+compoundrule.aff \
+compoundrule.dic \
+compoundrule.good \
+compoundrule.test \
+compoundrule.wrong \
+compoundrule2.aff \
+compoundrule2.dic \
+compoundrule2.good \
+compoundrule2.test \
+compoundrule2.wrong \
+compoundrule3.aff \
+compoundrule3.dic \
+compoundrule3.good \
+compoundrule3.test \
+compoundrule3.wrong \
+compoundrule4.aff \
+compoundrule4.dic \
+compoundrule4.good \
+compoundrule4.test \
+compoundrule4.wrong \
+compoundrule5.aff \
+compoundrule5.dic \
+compoundrule5.good \
+compoundrule5.morph \
+compoundrule5.test \
+compoundrule5.wrong \
+compoundrule6.aff \
+compoundrule6.dic \
+compoundrule6.good \
+compoundrule6.test \
+compoundrule6.wrong \
+compoundrule7.aff \
+compoundrule7.dic \
+compoundrule7.good \
+compoundrule7.test \
+compoundrule7.wrong \
+compoundrule8.aff \
+compoundrule8.dic \
+compoundrule8.good \
+compoundrule8.test \
+compoundrule8.wrong \
+compoundaffix.aff \
+compoundaffix.dic \
+compoundaffix.good \
+compoundaffix.test \
+compoundaffix.wrong \
+compoundaffix2.aff \
+compoundaffix2.dic \
+compoundaffix2.good \
+compoundaffix2.test \
+compoundaffix3.aff \
+compoundaffix3.dic \
+compoundaffix3.good \
+compoundaffix3.test \
+compoundaffix3.wrong \
+checkcompounddup.aff \
+checkcompounddup.dic \
+checkcompounddup.good \
+checkcompounddup.test \
+checkcompounddup.wrong \
+checkcompoundcase.aff \
+checkcompoundcase.dic \
+checkcompoundcase.good \
+checkcompoundcase.test \
+checkcompoundcase.wrong \
+checkcompoundcase2.aff \
+checkcompoundcase2.dic \
+checkcompoundcase2.good \
+checkcompoundcase2.test \
+checkcompoundcase2.wrong \
+checkcompoundcaseutf.aff \
+checkcompoundcaseutf.dic \
+checkcompoundcaseutf.good \
+checkcompoundcaseutf.test \
+checkcompoundcaseutf.wrong \
+checkcompoundrep.aff \
+checkcompoundrep.dic \
+checkcompoundrep.good \
+checkcompoundrep.test \
+checkcompoundrep.wrong \
+checkcompoundtriple.aff \
+checkcompoundtriple.dic \
+checkcompoundtriple.good \
+checkcompoundtriple.test \
+checkcompoundtriple.wrong \
+simplifiedtriple.aff \
+simplifiedtriple.dic \
+simplifiedtriple.good \
+simplifiedtriple.test \
+simplifiedtriple.wrong \
+checkcompoundpattern.aff \
+checkcompoundpattern.dic \
+checkcompoundpattern.good \
+checkcompoundpattern.test \
+checkcompoundpattern.wrong \
+checkcompoundpattern2.aff \
+checkcompoundpattern2.dic \
+checkcompoundpattern2.good \
+checkcompoundpattern2.test \
+checkcompoundpattern2.wrong \
+checkcompoundpattern3.aff \
+checkcompoundpattern3.dic \
+checkcompoundpattern3.good \
+checkcompoundpattern3.test \
+checkcompoundpattern3.wrong \
+checkcompoundpattern4.aff \
+checkcompoundpattern4.dic \
+checkcompoundpattern4.good \
+checkcompoundpattern4.test \
+checkcompoundpattern4.wrong \
+checksharps.aff \
+checksharps.dic \
+checksharps.good \
+checksharps.sug \
+checksharps.test \
+checksharps.wrong \
+checksharpsutf.aff \
+checksharpsutf.dic \
+checksharpsutf.good \
+checksharpsutf.sug \
+checksharpsutf.test \
+checksharpsutf.wrong \
+conditionalprefix.aff \
+conditionalprefix.dic \
+conditionalprefix.good \
+conditionalprefix.morph \
+conditionalprefix.test \
+conditionalprefix.wrong \
+flaglong.aff \
+flaglong.dic \
+flaglong.good \
+flaglong.test \
+flagnum.aff \
+flagnum.dic \
+flagnum.good \
+flagnum.test \
+flag.aff \
+flag.dic \
+flag.good \
+flag.test \
+flagutf8.aff \
+flagutf8.dic \
+flagutf8.good \
+flagutf8.test \
+complexprefixes.aff \
+complexprefixes.dic \
+complexprefixes.good \
+complexprefixes.wrong \
+complexprefixes.test \
+complexprefixes2.aff \
+complexprefixes2.dic \
+complexprefixes2.good \
+complexprefixes2.test \
+complexprefixesutf.aff \
+complexprefixesutf.dic \
+complexprefixesutf.good \
+complexprefixesutf.wrong \
+complexprefixesutf.test \
+i35725.aff \
+i35725.dic \
+i35725.good \
+i35725.sug \
+i35725.test \
+i35725.wrong \
+i53643.aff \
+i53643.dic \
+i53643.good \
+i53643.test \
+i53643.wrong \
+i54633.aff \
+i54633.dic \
+i54633.good \
+i54633.sug \
+i54633.test \
+i54633.wrong \
+i54980.aff \
+i54980.dic \
+i54980.good \
+i54980.test \
+i58202.aff \
+i58202.dic \
+i58202.good \
+i58202.sug \
+i58202.test \
+i58202.wrong \
+maputf.aff \
+maputf.dic \
+maputf.sug \
+maputf.wrong \
+maputf.test \
+reputf.aff \
+reputf.dic \
+reputf.sug \
+reputf.wrong \
+reputf.test \
+slash.aff \
+slash.dic \
+slash.good \
+slash.test \
+ignore.aff \
+ignore.dic \
+ignore.good \
+ignore.test \
+ignoreutf.aff \
+ignoreutf.dic \
+ignoreutf.good \
+ignoreutf.test \
+1592880.aff \
+1592880.dic \
+1592880.good \
+1592880.test \
+1695964.aff \
+1695964.dic \
+1695964.sug \
+1695964.test \
+1695964.wrong \
+1463589.aff \
+1463589.dic \
+1463589.sug \
+1463589.test \
+1463589.wrong \
+1463589_utf.aff \
+1463589_utf.dic \
+1463589_utf.sug \
+1463589_utf.test \
+1463589_utf.wrong \
+IJ.aff \
+IJ.dic \
+IJ.good \
+IJ.sug \
+IJ.test \
+IJ.wrong \
+i68568.aff \
+i68568.dic \
+i68568.test \
+i68568.wrong \
+i68568utf.aff \
+i68568utf.dic \
+i68568utf.test \
+i68568utf.wrong \
+1706659.aff \
+1706659.dic \
+1706659.test \
+1706659.wrong \
+digits_in_words.aff \
+digits_in_words.dic \
+digits_in_words.test \
+digits_in_words.wrong \
+colons_in_words.aff \
+colons_in_words.dic \
+colons_in_words.test \
+ngram_utf_fix.aff \
+ngram_utf_fix.dic \
+ngram_utf_fix.good \
+ngram_utf_fix.sug \
+ngram_utf_fix.test \
+ngram_utf_fix.wrong \
+morph.aff \
+morph.dic \
+morph.good \
+morph.morph \
+morph.test \
+1975530.aff \
+1975530.dic \
+1975530.good \
+1975530.test \
+1975530.wrong \
+fullstrip.aff \
+fullstrip.dic \
+fullstrip.good \
+fullstrip.test \
+iconv.aff \
+iconv.dic \
+iconv.good \
+iconv.test \
+oconv.aff \
+oconv.dic \
+oconv.good \
+oconv.sug \
+oconv.test \
+oconv.wrong \
+encoding.aff \
+encoding.dic \
+encoding.good \
+encoding.test \
+opentaal_forbiddenword1.aff \
+opentaal_forbiddenword1.dic \
+opentaal_forbiddenword1.good \
+opentaal_forbiddenword1.sug \
+opentaal_forbiddenword1.test \
+opentaal_forbiddenword1.wrong \
+opentaal_forbiddenword2.aff \
+opentaal_forbiddenword2.dic \
+opentaal_forbiddenword2.good \
+opentaal_forbiddenword2.sug \
+opentaal_forbiddenword2.test \
+opentaal_forbiddenword2.wrong \
+opentaal_forbiddenword2.aff \
+opentaal_forbiddenword2.dic \
+opentaal_forbiddenword2.good \
+opentaal_forbiddenword2.sug \
+opentaal_forbiddenword2.test \
+opentaal_forbiddenword2.wrong \
+opentaal_keepcase.aff \
+opentaal_keepcase.dic \
+opentaal_keepcase.good \
+opentaal_keepcase.sug \
+opentaal_keepcase.test \
+opentaal_keepcase.wrong \
+arabic.aff \
+arabic.dic \
+arabic.wrong \
+arabic.test \
+2970240.aff \
+2970240.dic \
+2970240.good \
+2970240.wrong \
+2970240.test \
+2970242.aff \
+2970242.dic \
+2970242.good \
+2970242.wrong \
+2970242.test \
+breakoff.aff \
+breakoff.dic \
+breakoff.good \
+breakoff.wrong \
+breakoff.test \
+opentaal_cpdpat.aff \
+opentaal_cpdpat.dic \
+opentaal_cpdpat.good \
+opentaal_cpdpat.wrong \
+opentaal_cpdpat.test \
+opentaal_cpdpat2.aff \
+opentaal_cpdpat2.dic \
+opentaal_cpdpat2.good \
+opentaal_cpdpat2.wrong \
+opentaal_cpdpat2.test \
+2999225.aff \
+2999225.dic \
+2999225.good \
+2999225.test \
+korean.aff \
+korean.dic \
+korean.good \
+korean.wrong \
+korean.test \
+onlyincompound2.aff \
+onlyincompound2.dic \
+onlyincompound2.good \
+onlyincompound2.test \
+onlyincompound2.wrong \
+forceucase.aff \
+forceucase.dic \
+forceucase.good \
+forceucase.sug \
+forceucase.wrong \
+forceucase.test \
+warn.aff \
+warn.dic \
+warn.good \
+warn.test
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list=' $(TESTS) '; \
+	$(am__tty_colors); \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		col=$$red; res=XPASS; \
+	      ;; \
+	      *) \
+		col=$$grn; res=PASS; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xfail=`expr $$xfail + 1`; \
+		col=$$lgn; res=XFAIL; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		col=$$red; res=FAIL; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      col=$$blu; res=SKIP; \
+	    fi; \
+	    echo "$${col}$$res$${std}: $$tst"; \
+	  done; \
+	  if test "$$all" -eq 1; then \
+	    tests="test"; \
+	    All=""; \
+	  else \
+	    tests="tests"; \
+	    All="All "; \
+	  fi; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="$$All$$all $$tests passed"; \
+	    else \
+	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all $$tests failed"; \
+	    else \
+	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    if test "$$skip" -eq 1; then \
+	      skipped="($$skip test was not run)"; \
+	    else \
+	      skipped="($$skip tests were not run)"; \
+	    fi; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  if test "$$failed" -eq 0; then \
+	    echo "$$grn$$dashes"; \
+	  else \
+	    echo "$$red$$dashes"; \
+	  fi; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes$$std"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
+	ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-TESTS check-am clean clean-generic \
+	clean-libtool ctags ctags-recursive distclean \
+	distclean-generic distclean-libtool distclean-local \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# infixes.test
+
+distclean-local:
+	-rm -rf testSubDir
+
+# infixes.aff
+# infixes.dic
+# infixes.good
+# infixes.test
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/affixes.aff
@@ -0,0 +1,7 @@
+# simple example for affix compression (see Hunspell(4))
+PFX A Y 1
+PFX A 0 re .
+
+SFX B Y 2
+SFX B 0 ed [^y]
+SFX B y ied y
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/affixes.dic
@@ -0,0 +1,4 @@
+3
+hello
+try/B
+work/AB
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/affixes.good
@@ -0,0 +1,7 @@
+hello
+try
+tried
+work
+worked
+rework
+reworked
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/affixes.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias.aff
@@ -0,0 +1,12 @@
+# aliases for flag vectors (AF)
+# AB -> 1
+# A -> 2
+AF 2
+AF AB
+AF A
+
+SFX A Y 1
+SFX A 0 x .
+
+SFX B Y 1
+SFX B 0 y/2 .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias.dic
@@ -0,0 +1,2 @@
+1
+foo/1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias.good
@@ -0,0 +1,4 @@
+foo
+foox
+fooy
+fooyx
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias2.aff
@@ -0,0 +1,17 @@
+# aliases for flag vectors (AF) and morphological descriptions (AM)
+# AB -> 1
+# A -> 2
+AF 2
+AF AB
+AF A
+
+AM 3
+AM is:affix_x
+AM ds:affix_y
+AM po:noun xx:other_data
+
+SFX A Y 1
+SFX A 0 x . 1
+
+SFX B Y 1
+SFX B 0 y/2 . 2
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias2.dic
@@ -0,0 +1,2 @@
+1
+foo/1	3
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias2.good
@@ -0,0 +1,4 @@
+foo
+foox
+fooy
+fooyx
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias2.morph
@@ -0,0 +1,12 @@
+> foo
+analyze(foo) =  st:foo po:noun xx:other_data
+stem(foo) = foo
+> foox
+analyze(foox) =  st:foo po:noun xx:other_data is:affix_x
+stem(foox) = foo
+> fooy
+analyze(fooy) =  st:foo po:noun xx:other_data ds:affix_y
+stem(fooy) = fooy
+> fooyx
+analyze(fooyx) =  st:foo po:noun xx:other_data ds:affix_y is:affix_x
+stem(fooyx) = fooy
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias3.aff
@@ -0,0 +1,18 @@
+# morph. aliases with complex prefixes
+COMPLEXPREFIXES
+WORDCHARS _
+
+AM 4
+AM affix_1/
+AM affix_2/
+AM /suffix_1
+AM [stem_1]
+
+PFX A Y 1
+PFX A 0 tek . 1
+
+PFX B Y 1
+PFX B 0 met/A . 2
+
+SFX C Y 1
+SFX C 0 _test_ . 3
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias3.dic
@@ -0,0 +1,2 @@
+1
+ouro/BC	4
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias3.good
@@ -0,0 +1,4 @@
+ouro
+metouro
+tekmetouro
+ouro_test_
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias3.morph
@@ -0,0 +1,8 @@
+> ouro
+analyze(ouro) = [stem_1] ouro:ts 
+> metouro
+analyze(metouro) = affix_2/ ouro:ts [stem_1]
+> tekmetouro
+analyze(tekmetouro) = affix_1/ affix_2/ ouro:ts [stem_1]
+> ouro_test_
+analyze(ouro_test_) = [stem_1] ouro:ts /suffix_1 
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/alias3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.aff
@@ -0,0 +1,5 @@
+# check uppercase forms of allcaps word + affix and words with mixed casing
+WORDCHARS '.
+
+SFX S N 1
+SFX S   0     's      .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.dic
@@ -0,0 +1,3 @@
+2
+OpenOffice.org
+UNICEF/S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.good
@@ -0,0 +1,4 @@
+OpenOffice.org
+OPENOFFICE.ORG
+UNICEF's
+UNICEF'S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.sug
@@ -0,0 +1,3 @@
+OpenOffice.org
+UNICEF
+UNICEF's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps.wrong
@@ -0,0 +1,3 @@
+Openoffice.org
+Unicef
+Unicef's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.aff
@@ -0,0 +1,6 @@
+# forbidden all caps words are case sensitive
+# iPod -> ipodos ("iPodic" in Hungarian)
+FORBIDDENWORD *
+SFX s N 1
+SFX s 0 os .
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.dic
@@ -0,0 +1,4 @@
+3
+iPod/s
+iPodos/*
+ipodos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.good
@@ -0,0 +1,4 @@
+iPod
+IPOD
+ipodos
+IPODOS
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.sug
@@ -0,0 +1,2 @@
+iPod
+ipodos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps2.wrong
@@ -0,0 +1,2 @@
+ipod
+iPodos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps3.aff
@@ -0,0 +1,10 @@
+# homonym support
+WORDCHARS '
+
+SFX s N 1
+SFX s 0 s .
+
+SFX S N 1
+SFX S 0 's .
+
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps3.dic
@@ -0,0 +1,7 @@
+4
+UNESCO/S
+Unesco/S
+Nasa/S
+NASA/S
+ACTS
+act/s
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps3.good
@@ -0,0 +1,13 @@
+UNESCO
+Unesco
+UNESCO's
+Unesco's
+UNESCO'S
+NASA
+Nasa
+NASA's
+Nasa's
+NASA'S
+ACTS
+acts
+Acts
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps3.wrong
@@ -0,0 +1,4 @@
+unesco
+unesco's
+nasa
+nasa's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.aff
@@ -0,0 +1,6 @@
+SET UTF-8
+WORDCHARS '.
+
+SFX S N 1
+SFX S 0 's .
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.dic
@@ -0,0 +1,3 @@
+2
+OpenOffice.org
+UNICEF/S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.good
@@ -0,0 +1,4 @@
+OpenOffice.org
+OPENOFFICE.ORG
+UNICEF's
+UNICEF'S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.sug
@@ -0,0 +1,3 @@
+OpenOffice.org
+UNICEF
+UNICEF's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/allcaps_utf.wrong
@@ -0,0 +1,3 @@
+Openoffice.org
+Unicef
+Unicef's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/arabic.aff
@@ -0,0 +1,6 @@
+SET UTF-8
+TRY أ
+IGNORE ٌٍَُِّْ
+
+PFX	Aa	Y	1
+PFX	Aa	0	0/X0	أ[^ي]
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/arabic.dic
@@ -0,0 +1,2 @@
+1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/arabic.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/arabic.wrong
@@ -0,0 +1,1 @@
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.aff
@@ -0,0 +1,192 @@
+# OpenOffice.org's en_US.aff file
+
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwz'
+
+WORDCHARS .'
+
+PFX A Y 1
+PFX A   0     re         .
+
+PFX I Y 1
+PFX I   0     in         .
+
+PFX U Y 1
+PFX U   0     un         .
+
+PFX C Y 1
+PFX C   0     de          .
+
+PFX E Y 1
+PFX E   0     dis         .
+
+PFX F Y 1
+PFX F   0     con         .
+
+PFX K Y 1
+PFX K   0     pro         .
+
+SFX V N 2
+SFX V   e     ive        e
+SFX V   0     ive        [^e]
+
+SFX N Y 3
+SFX N   e     ion        e
+SFX N   y     ication    y 
+SFX N   0     en         [^ey] 
+
+SFX X Y 3
+SFX X   e     ions       e
+SFX X   y     ications   y
+SFX X   0     ens        [^ey]
+
+SFX H N 2
+SFX H   y     ieth       y
+SFX H   0     th         [^y] 
+
+SFX Y Y 1
+SFX Y   0     ly         .
+
+SFX G Y 2
+SFX G   e     ing        e
+SFX G   0     ing        [^e] 
+
+SFX J Y 2
+SFX J   e     ings       e
+SFX J   0     ings       [^e]
+
+SFX D Y 4
+SFX D   0     d          e
+SFX D   y     ied        [^aeiou]y
+SFX D   0     ed         [^ey]
+SFX D   0     ed         [aeiou]y
+
+SFX T N 4
+SFX T   0     st         e
+SFX T   y     iest       [^aeiou]y
+SFX T   0     est        [aeiou]y
+SFX T   0     est        [^ey]
+
+SFX R Y 4
+SFX R   0     r          e
+SFX R   y     ier        [^aeiou]y
+SFX R   0     er         [aeiou]y
+SFX R   0     er         [^ey]
+
+SFX Z Y 4
+SFX Z   0     rs         e
+SFX Z   y     iers       [^aeiou]y
+SFX Z   0     ers        [aeiou]y
+SFX Z   0     ers        [^ey]
+
+SFX S Y 4
+SFX S   y     ies        [^aeiou]y
+SFX S   0     s          [aeiou]y
+SFX S   0     es         [sxzh]
+SFX S   0     s          [^sxzhy]
+
+SFX P Y 3
+SFX P   y     iness      [^aeiou]y
+SFX P   0     ness       [aeiou]y
+SFX P   0     ness       [^y]
+
+SFX M Y 1
+SFX M   0     's         .
+
+SFX B Y 3
+SFX B   0     able       [^aeiou]
+SFX B   0     able       ee
+SFX B   e     able       [^aeiou]e
+
+SFX L Y 1
+SFX L   0     ment       .
+
+REP 88
+REP a ei
+REP ei a
+REP a ey
+REP ey a
+REP ai ie
+REP ie ai
+REP are air
+REP are ear
+REP are eir
+REP air are
+REP air ere
+REP ere air
+REP ere ear
+REP ere eir
+REP ear are
+REP ear air
+REP ear ere
+REP eir are
+REP eir ere
+REP ch te
+REP te ch
+REP ch ti
+REP ti ch
+REP ch tu
+REP tu ch
+REP ch s
+REP s ch
+REP ch k
+REP k ch
+REP f ph
+REP ph f
+REP gh f
+REP f gh
+REP i igh
+REP igh i
+REP i uy
+REP uy i
+REP i ee
+REP ee i
+REP j di
+REP di j
+REP j gg
+REP gg j
+REP j ge
+REP ge j
+REP s ti
+REP ti s
+REP s ci
+REP ci s
+REP k cc
+REP cc k
+REP k qu
+REP qu k
+REP kw qu
+REP o eau
+REP eau o
+REP o ew
+REP ew o
+REP oo ew
+REP ew oo
+REP ew ui
+REP ui ew
+REP oo ui
+REP ui oo
+REP ew u
+REP u ew
+REP oo u
+REP u oo
+REP u oe
+REP oe u
+REP u ieu
+REP ieu u
+REP ue ew
+REP ew ue
+REP uff ough
+REP oo ieu
+REP ieu oo
+REP ier ear
+REP ear ier
+REP ear air
+REP air ear
+REP w qu
+REP qu w
+REP z ss
+REP ss z
+REP shun tion
+REP shun sion
+REP shun cion
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.dic
@@ -0,0 +1,29 @@
+28
+created/U
+create/XKVNGADS
+imply/GNSDX
+natural/PUY
+like/USPBY
+convey/BDGS
+look/GZRDS
+text
+hello
+said
+sawyer
+NASA
+rotten
+day
+tomorrow
+seven
+FAQ/SM
+can't
+doesn't
+etc
+won't
+lip
+text
+horrifying
+speech
+suggest
+uncreate/V
+Hunspell
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.good
@@ -0,0 +1,27 @@
+created
+uncreate
+uncreated
+imply
+implied
+unnatural
+conveyed
+sawyer
+NASA
+FAQs
+can't
+doesn't
+won't
+Created
+Hello
+HELLO
+NASA
+etc.
+etc
+HELLO
+lip.
+text.
+NASA.
+Text.
+TEXT.
+Hunspell.
+HUNSPELL.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.sug
@@ -0,0 +1,11 @@
+looked, look
+text
+hello
+said
+rotten day, rotten-day, rotten
+tomorrow
+seven
+NASA
+horrifying
+speech
+suggest
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base.wrong
@@ -0,0 +1,11 @@
+loooked
+texxt
+hlelo
+seid
+rottenday
+tomorow
+seeeven
+Nasa
+horrorfying
+peech
+sugesst
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.aff
@@ -0,0 +1,198 @@
+# OpenOffice.org’s en_US.aff file
+# with Unicode apostrophe: ’
+
+SET UTF-8
+TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ'
+
+MAXNGRAMSUGS 1
+WORDCHARS .'’
+
+PFX A Y 1
+PFX A   0     re         .
+
+PFX I Y 1
+PFX I   0     in         .
+
+PFX U Y 1
+PFX U   0     un         .
+
+PFX C Y 1
+PFX C   0     de          .
+
+PFX E Y 1
+PFX E   0     dis         .
+
+PFX F Y 1
+PFX F   0     con         .
+
+PFX K Y 1
+PFX K   0     pro         .
+
+SFX V N 2
+SFX V   e     ive        e
+SFX V   0     ive        [^e]
+
+SFX N Y 3
+SFX N   e     ion        e
+SFX N   y     ication    y 
+SFX N   0     en         [^ey] 
+
+SFX X Y 3
+SFX X   e     ions       e
+SFX X   y     ications   y
+SFX X   0     ens        [^ey]
+
+SFX H N 2
+SFX H   y     ieth       y
+SFX H   0     th         [^y] 
+
+SFX Y Y 1
+SFX Y   0     ly         .
+
+SFX G Y 2
+SFX G   e     ing        e
+SFX G   0     ing        [^e] 
+
+SFX J Y 2
+SFX J   e     ings       e
+SFX J   0     ings       [^e]
+
+SFX D Y 4
+SFX D   0     d          e
+SFX D   y     ied        [^aeiou]y
+SFX D   0     ed         [^ey]
+SFX D   0     ed         [aeiou]y
+
+SFX T N 4
+SFX T   0     st         e
+SFX T   y     iest       [^aeiou]y
+SFX T   0     est        [aeiou]y
+SFX T   0     est        [^ey]
+
+SFX R Y 4
+SFX R   0     r          e
+SFX R   y     ier        [^aeiou]y
+SFX R   0     er         [aeiou]y
+SFX R   0     er         [^ey]
+
+SFX Z Y 4
+SFX Z   0     rs         e
+SFX Z   y     iers       [^aeiou]y
+SFX Z   0     ers        [aeiou]y
+SFX Z   0     ers        [^ey]
+
+SFX S Y 4
+SFX S   y     ies        [^aeiou]y
+SFX S   0     s          [aeiou]y
+SFX S   0     es         [sxzh]
+SFX S   0     s          [^sxzhy]
+
+SFX P Y 3
+SFX P   y     iness      [^aeiou]y
+SFX P   0     ness       [aeiou]y
+SFX P   0     ness       [^y]
+
+SFX M Y 1
+SFX M   0     's         .
+
+SFX B Y 3
+SFX B   0     able       [^aeiou]
+SFX B   0     able       ee
+SFX B   e     able       [^aeiou]e
+
+SFX L Y 1
+SFX L   0     ment       .
+
+REP 88
+REP a ei
+REP ei a
+REP a ey
+REP ey a
+REP ai ie
+REP ie ai
+REP are air
+REP are ear
+REP are eir
+REP air are
+REP air ere
+REP ere air
+REP ere ear
+REP ere eir
+REP ear are
+REP ear air
+REP ear ere
+REP eir are
+REP eir ere
+REP ch te
+REP te ch
+REP ch ti
+REP ti ch
+REP ch tu
+REP tu ch
+REP ch s
+REP s ch
+REP ch k
+REP k ch
+REP f ph
+REP ph f
+REP gh f
+REP f gh
+REP i igh
+REP igh i
+REP i uy
+REP uy i
+REP i ee
+REP ee i
+REP j di
+REP di j
+REP j gg
+REP gg j
+REP j ge
+REP ge j
+REP s ti
+REP ti s
+REP s ci
+REP ci s
+REP k cc
+REP cc k
+REP k qu
+REP qu k
+REP kw qu
+REP o eau
+REP eau o
+REP o ew
+REP ew o
+REP oo ew
+REP ew oo
+REP ew ui
+REP ui ew
+REP oo ui
+REP ui oo
+REP ew u
+REP u ew
+REP oo u
+REP u oo
+REP u oe
+REP oe u
+REP u ieu
+REP ieu u
+REP ue ew
+REP ew ue
+REP uff ough
+REP oo ieu
+REP ieu oo
+REP ier ear
+REP ear ier
+REP ear air
+REP air ear
+REP w qu
+REP qu w
+REP z ss
+REP ss z
+REP shun tion
+REP shun sion
+REP shun cion
+McDonalds’sá/w
+McDonald’sszá/g3)	st:McDonald’s	po:noun_prs	is:TRANS
+McDonald’sszal/g4)	st:McDonald’s	po:noun_prs	is:INSTR
+McDonald’ssal/w
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.dic
@@ -0,0 +1,29 @@
+28
+created/U
+create/XKVNGADS
+imply/GNSDX
+natural/PUY
+like/USPBY
+convey/BDGS
+look/GZRDS
+text
+hello
+said
+sawyer
+NASA
+rotten
+day
+tomorrow
+seven
+FAQ/SM
+can’t
+doesn’t
+etc
+won’t
+lip
+text
+horrifying
+speech
+suggest
+uncreate/V
+Hunspell
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.good
@@ -0,0 +1,27 @@
+created
+uncreate
+uncreated
+imply
+implied
+unnatural
+conveyed
+sawyer
+NASA
+FAQs
+can’t
+doesn’t
+won’t
+Created
+Hello
+HELLO
+NASA
+etc.
+etc
+HELLO
+lip.
+text.
+NASA.
+Text.
+TEXT.
+Hunspell.
+HUNSPELL.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.sug
@@ -0,0 +1,11 @@
+looked, look
+text, create
+hello
+said
+rotten day, rotten-day, rotten
+tomorrow, rotten
+seven
+NASA
+horrifying
+speech, Hunspell
+suggest
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/base_utf.wrong
@@ -0,0 +1,11 @@
+loooked
+texxt
+hlelo
+seid
+rottenday
+tomorow
+seeeven
+Nasa
+horrorfying
+peech
+sugesst
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/break.aff
@@ -0,0 +1,8 @@
+# word break points test, recursive break at dash and n-dash
+SET UTF-8
+
+BREAK 2
+BREAK -
+BREAK –
+
+WORDCHARS -–
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/break.dic
@@ -0,0 +1,4 @@
+3
+foo
+bar
+fox-bax
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/break.good
@@ -0,0 +1,7 @@
+foo
+bar
+fox-bax
+foo-bar
+foo–bar
+foo-bar-foo-bar
+foo-bar–foo-bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/break.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/break.wrong
@@ -0,0 +1,12 @@
+fox
+bax
+-foo
+bar-
+fox-bar
+foo-bax
+foo–bax
+fox–bar
+foo-bar-fox-bar
+foo-bax-foo-bar
+foo-bar–fox-bar
+foo-bax–foo-bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.aff
@@ -0,0 +1,6 @@
+# default word break at hyphens and n-dashes
+
+SET UTF-8
+MAXNGRAMSUGS 0
+WORDCHARS -
+TRY ot
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.dic
@@ -0,0 +1,6 @@
+3
+foo
+bar
+free
+scott
+scot-free
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.good
@@ -0,0 +1,7 @@
+foo
+bar
+foo-
+-foo
+scot-free
+foo-bar
+foo-bar-foo-bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.sug
@@ -0,0 +1,3 @@
+scott
+scot-free
+foo-bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakdefault.wrong
@@ -0,0 +1,3 @@
+scot
+sco-free
+fo-bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakoff.aff
@@ -0,0 +1,7 @@
+# switch off default word break at hyphens and n-dashes by BREAK 0
+SET UTF-8
+MAXNGRAMSUGS 0
+WORDCHARS -
+TRY ot
+
+BREAK 0
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakoff.dic
@@ -0,0 +1,6 @@
+3
+foo
+bar
+free
+scott
+scot-free
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakoff.good
@@ -0,0 +1,3 @@
+foo
+bar
+scot-free
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakoff.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/breakoff.wrong
@@ -0,0 +1,5 @@
+foo-
+-foo
+foo-bar
+foo-bar-foo-bar
+scot
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase.aff
@@ -0,0 +1,3 @@
+# forbid upper case letters at word bounds in compounding
+CHECKCOMPOUNDCASE
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase.dic
@@ -0,0 +1,5 @@
+4
+foo/A
+Bar/A
+BAZ/A
+-/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase.good
@@ -0,0 +1,5 @@
+Barfoo
+foo-Bar
+foo-BAZ
+BAZ-foo
+BAZ-Bar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase.wrong
@@ -0,0 +1,3 @@
+fooBar
+BAZBar
+BAZfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase2.aff
@@ -0,0 +1,3 @@
+# check extended ascii
+CHECKCOMPOUNDCASE
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase2.dic
@@ -0,0 +1,3 @@
+2
+o/A
+o/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase2.good
@@ -0,0 +1,2 @@
+oo
+oo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcase2.wrong
@@ -0,0 +1,1 @@
+oo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcaseutf.aff
@@ -0,0 +1,3 @@
+SET UTF-8
+CHECKCOMPOUNDCASE
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcaseutf.dic
@@ -0,0 +1,3 @@
+2
+áoó/A
+Óoá/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcaseutf.good
@@ -0,0 +1,2 @@
+áoóáoó
+Óoááoó
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcaseutf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundcaseutf.wrong
@@ -0,0 +1,1 @@
+áoóÓoá
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompounddup.aff
@@ -0,0 +1,3 @@
+# Forbid compound word with triple letters
+CHECKCOMPOUNDDUP
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompounddup.dic
@@ -0,0 +1,3 @@
+2
+foo/A
+bar/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompounddup.good
@@ -0,0 +1,5 @@
+barfoo
+foobar
+foofoobar
+foobarfoo
+barfoobarfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompounddup.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompounddup.wrong
@@ -0,0 +1,3 @@
+foofoo
+foofoofoo
+foobarbar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern.aff
@@ -0,0 +1,5 @@
+# forbid compounds with spec. pattern at word bounds
+COMPOUNDFLAG A
+CHECKCOMPOUNDPATTERN 2
+CHECKCOMPOUNDPATTERN nny ny
+CHECKCOMPOUNDPATTERN ssz sz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern.dic
@@ -0,0 +1,5 @@
+4
+knny/A
+nyels/A
+hossz/A
+szmts/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern.good
@@ -0,0 +1,2 @@
+knnyszmts
+hossznyels
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern.wrong
@@ -0,0 +1,4 @@
+knnynyels
+hosszszmts
+hosszknnynyels
+knnynyelshossz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern2.aff
@@ -0,0 +1,7 @@
+# forbid compounds with spec. pattern at word bound and allow modificated form
+# (for German and Indian languages)
+COMPOUNDFLAG A
+CHECKCOMPOUNDPATTERN 2
+CHECKCOMPOUNDPATTERN o b z
+CHECKCOMPOUNDPATTERN oo ba u
+COMPOUNDMIN 1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern2.dic
@@ -0,0 +1,3 @@
+2
+foo/A
+bar/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern2.good
@@ -0,0 +1,3 @@
+barfoo
+fozar
+fur
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern2.wrong
@@ -0,0 +1,1 @@
+foobar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern3.aff
@@ -0,0 +1,6 @@
+# forbid compounds with spec. pattern at word bound and allow modificated form
+# (for Indian languages)
+COMPOUNDFLAG A
+CHECKCOMPOUNDPATTERN 1
+CHECKCOMPOUNDPATTERN o/X b/Y z
+COMPOUNDMIN 1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern3.dic
@@ -0,0 +1,5 @@
+4
+foo/A
+boo/AX
+bar/A
+ban/AY
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern3.good
@@ -0,0 +1,9 @@
+bozan
+barfoo
+banfoo
+banbar
+foobar
+fooban
+foobanbar
+boobar
+boobarfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern3.wrong
@@ -0,0 +1,8 @@
+booban
+boobanfoo
+fozar
+fozarfoo
+fozan
+fozanfoo
+bozar
+bozarfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern4.aff
@@ -0,0 +1,8 @@
+# sandhi in Telugu writing system, based on the Kiran Chittella's example
+
+COMPOUNDFLAG x
+COMPOUNDMIN 1
+CHECKCOMPOUNDPATTERN 2
+CHECKCOMPOUNDPATTERN a/A u/A O
+CHECKCOMPOUNDPATTERN u/B u/B u
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern4.dic
@@ -0,0 +1,6 @@
+4
+sUrya/Ax
+udayaM/Ax
+pEru/Bx
+unna/Bx
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern4.good
@@ -0,0 +1,2 @@
+sUryOdayaM
+pErunna
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern4.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundpattern4.wrong
@@ -0,0 +1,2 @@
+sUryaudayaM
+pEruunna
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundrep.aff
@@ -0,0 +1,8 @@
+// forbid compound word, if it is also a non compound word with a REP fault
+// In example: Hungarian `szervz' (szer+vz) compound word is forbidden, because 
+// this word is also a dictionary word (szerviz) with typical fault (i->)
+CHECKCOMPOUNDREP
+COMPOUNDFLAG A
+
+REP 1
+REP  i
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundrep.dic
@@ -0,0 +1,5 @@
+3
+szer/A
+vz/A
+szerviz
+kocsi/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundrep.good
@@ -0,0 +1,2 @@
+vzszer
+szerkocsi
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundrep.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundrep.wrong
@@ -0,0 +1,3 @@
+szervz
+szervzkocsi
+kocsiszervz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundtriple.aff
@@ -0,0 +1,3 @@
+# Forbid compound word with triple letters
+CHECKCOMPOUNDTRIPLE
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundtriple.dic
@@ -0,0 +1,5 @@
+4
+foo/A
+opera/A
+eel/A
+bare/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundtriple.good
@@ -0,0 +1,6 @@
+operafoo
+operaeel
+operabare
+eelbare
+eelfoo
+eelopera
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundtriple.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checkcompoundtriple.wrong
@@ -0,0 +1,2 @@
+fooopera
+bareeel
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.aff
@@ -0,0 +1,4 @@
+# test  - SS special capitalizing
+CHECKSHARPS
+WORDCHARS .
+KEEPCASE k
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.dic
@@ -0,0 +1,7 @@
+6
+mig/k
+Aussto
+Absto.
+Auenabmessung
+Prozessionsstrae
+Auenmae
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.good
@@ -0,0 +1,13 @@
+mig
+Mig
+MSSIG
+Aussto
+Absto.
+Auenabmessung
+Prozessionsstrae
+Auenmae
+AUSSTOSS
+ABSTOSS.
+AUSSENABMESSUNG
+PROZESSIONSSTRASSE
+AUSSENMASSE
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.sug
@@ -0,0 +1,1 @@
+MSSIG, mig
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharps.wrong
@@ -0,0 +1,1 @@
+MIG
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.aff
@@ -0,0 +1,5 @@
+# test  - SS special capitalizing in UTF-8
+SET UTF-8
+CHECKSHARPS
+WORDCHARS ß.
+KEEPCASE k
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.dic
@@ -0,0 +1,7 @@
+6
+müßig/k
+Ausstoß
+Abstoß.
+Außenabmessung
+Prozessionsstraße
+Außenmaße
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.good
@@ -0,0 +1,13 @@
+müßig
+Müßig
+MÜSSIG
+Ausstoß
+Abstoß.
+Außenabmessung
+Prozessionsstraße
+Außenmaße
+AUSSTOSS
+ABSTOSS.
+AUSSENABMESSUNG
+PROZESSIONSSTRASSE
+AUSSENMASSE
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.sug
@@ -0,0 +1,1 @@
+MÜSSIG, müßig
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/checksharpsutf.wrong
@@ -0,0 +1,1 @@
+MÜßIG
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.aff
@@ -0,0 +1,16 @@
+# circumfixes: ~ obligate prefix/suffix combinations
+# superlative in Hungarian: leg- (prefix) AND -bb (suffix)
+
+CIRCUMFIX X
+
+PFX A Y 1
+PFX A 0 leg/X .
+
+PFX B Y 1
+PFX B 0 legesleg/X .
+
+SFX C Y 3
+SFX C 0 obb . is:COMPARATIVE
+SFX C 0 obb/AX . is:SUPERLATIVE
+SFX C 0 obb/BX . is:SUPERSUPERLATIVE
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.dic
@@ -0,0 +1,2 @@
+1
+nagy/C	po:adj
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.good
@@ -0,0 +1,4 @@
+nagy
+nagyobb
+legnagyobb
+legeslegnagyobb
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.morph
@@ -0,0 +1,12 @@
+> nagy
+analyze(nagy) =  st:nagy po:adj
+stem(nagy) = nagy
+> nagyobb
+analyze(nagyobb) =  st:nagy po:adj is:COMPARATIVE
+stem(nagyobb) = nagy
+> legnagyobb
+analyze(legnagyobb) =  fl:A st:nagy po:adj is:SUPERLATIVE
+stem(legnagyobb) = nagy
+> legeslegnagyobb
+analyze(legeslegnagyobb) =  fl:B st:nagy po:adj is:SUPERSUPERLATIVE
+stem(legeslegnagyobb) = nagy
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/circumfix.wrong
@@ -0,0 +1,2 @@
+legnagy
+legeslegnagy
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/colons_in_words.aff
@@ -0,0 +1,3 @@
+# Colons in Finnish and Swedish words. Problem reported by Lars Aronsson.
+# Parsing test (src/parsers)
+WORDCHARS :
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/colons_in_words.dic
@@ -0,0 +1,4 @@
+2
+c:a
+S:t
+foo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/colons_in_words.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes.aff
@@ -0,0 +1,9 @@
+# set twofold prefix stripping
+# Coptic example by Moheb Mekhaiel
+COMPLEXPREFIXES
+
+PFX A Y 1
+PFX A 0 tek .
+
+PFX B Y 1
+PFX B 0 met/A .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes.dic
@@ -0,0 +1,3 @@
+1
+ouro/B
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes.good
@@ -0,0 +1,3 @@
+ouro
+metouro
+tekmetouro
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes.wrong
@@ -0,0 +1,2 @@
+tekouro
+mettekouro
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes2.aff
@@ -0,0 +1,12 @@
+# complex prefixes with morphological analysis
+COMPLEXPREFIXES
+WORDCHARS _
+
+PFX A Y 1
+PFX A 0 tek . affix_1/
+
+PFX B Y 1
+PFX B 0 met/A . affix_2/
+
+SFX C Y 1
+SFX C 0 _test_ . /suffix_1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes2.dic
@@ -0,0 +1,3 @@
+1
+ouro/BC	[stem_1]
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes2.good
@@ -0,0 +1,4 @@
+ouro
+metouro
+tekmetouro
+ouro_test_
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixes2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixesutf.aff
@@ -0,0 +1,12 @@
+# Coptic example by Moheb Mekhaiel
+# Encoded with the new Coptic character encoding of Unicode 4.1
+SET UTF-8
+
+# set twofold prefix stripping
+COMPLEXPREFIXES
+
+PFX A Y 1
+PFX A 0 ⲧⲉⲕ .
+
+PFX B Y 1
+PFX B 0 ⲙⲉⲧ/A .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixesutf.dic
@@ -0,0 +1,2 @@
+1
+ⲟⲩⲣⲟ/B
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixesutf.good
@@ -0,0 +1,3 @@
+ⲟⲩⲣⲟ
+ⲙⲉⲧⲟⲩⲣⲟ
+ⲧⲉⲕⲙⲉⲧⲟⲩⲣⲟ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixesutf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/complexprefixesutf.wrong
@@ -0,0 +1,2 @@
+ⲧⲉⲕⲟⲩⲣⲟ
+ⲙⲉⲧⲧⲉⲕⲟⲩⲣⲟ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix.aff
@@ -0,0 +1,7 @@
+COMPOUNDFLAG X
+
+PFX P Y 1
+PFX P   0     pre         .
+
+SFX S Y 1
+SFX S   0     suf         .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix.dic
@@ -0,0 +1,3 @@
+2
+foo/XPS
+bar/XPS
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix.good
@@ -0,0 +1,6 @@
+foo
+foofoo
+prefoo
+foosuf
+prefoosuf
+prefoobarsuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix.wrong
@@ -0,0 +1,3 @@
+foosufbar
+fooprebarsuf
+prefooprebarsuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix2.aff
@@ -0,0 +1,8 @@
+COMPOUNDFLAG X
+COMPOUNDPERMITFLAG Y
+
+PFX P Y 1
+PFX P   0     pre/Y         .
+
+SFX S Y 1
+SFX S   0     suf/Y         .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix2.dic
@@ -0,0 +1,3 @@
+2
+foo/XPS
+bar/XPS
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix2.good
@@ -0,0 +1,8 @@
+foo
+prefoo
+foosuf
+prefoosuf
+prefoobarsuf
+foosufbar
+fooprebarsuf
+prefooprebarsuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix3.aff
@@ -0,0 +1,8 @@
+COMPOUNDFLAG X
+COMPOUNDFORBIDFLAG Z
+
+PFX P Y 1
+PFX P   0     pre/Z         .
+
+SFX S Y 1
+SFX S   0     suf/Z         .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix3.dic
@@ -0,0 +1,3 @@
+2
+foo/XPS
+bar/XPS
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix3.good
@@ -0,0 +1,5 @@
+foo
+foofoo
+prefoo
+foosuf
+prefoosuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundaffix3.wrong
@@ -0,0 +1,6 @@
+prefoobarsuf
+foosufbar
+fooprebar
+foosufprebar
+fooprebarsuf
+prefooprebarsuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundflag.aff
@@ -0,0 +1,3 @@
+COMPOUNDMIN 3
+COMPOUNDFLAG A
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundflag.dic
@@ -0,0 +1,5 @@
+4
+foo/A
+bar/A
+xy/A
+yz/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundflag.good
@@ -0,0 +1,3 @@
+foobar
+barfoo
+foobarfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundflag.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundflag.wrong
@@ -0,0 +1,4 @@
+xyyz
+fooxy
+xyfoo
+fooxybar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule.aff
@@ -0,0 +1,3 @@
+COMPOUNDMIN 1
+COMPOUNDRULE 1
+COMPOUNDRULE ABC
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule.dic
@@ -0,0 +1,5 @@
+3
+a/A
+b/B
+c/BC
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule.good
@@ -0,0 +1,2 @@
+abc
+acc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule.wrong
@@ -0,0 +1,39 @@
+ba
+aaabaaa
+bbaaa
+aaaaba
+bbbbbaa
+aa
+aaa
+aaaa
+ab
+aab
+aaab
+aaaab
+abb
+aabb
+aaabbb
+bb
+bbb
+bbbb
+aaab
+abcc
+abbc
+abbcc
+aabc
+aabcc
+aabbc
+aabbcc
+aaabbbccc
+ac
+aac
+aacc
+aaaccc
+bc
+bcc
+bbc
+bbcc
+bbbccc
+cc
+ccc
+cccccc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule2.aff
@@ -0,0 +1,3 @@
+COMPOUNDMIN 1
+COMPOUNDRULE 1
+COMPOUNDRULE A*B*C*
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule2.dic
@@ -0,0 +1,5 @@
+3
+a/A
+b/B
+c/C
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule2.good
@@ -0,0 +1,37 @@
+aa
+aaa
+aaaa
+ab
+aab
+aaab
+aaaab
+abb
+aabb
+aaabbb
+bb
+bbb
+bbbb
+aaab
+abc
+abcc
+abbc
+abbcc
+aabc
+aabcc
+aabbc
+aabbcc
+aaabbbccc
+ac
+acc
+aac
+aacc
+aaaccc
+bc
+bcc
+bbc
+bbcc
+bbbccc
+cc
+ccc
+cccccc
+abcc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule2.wrong
@@ -0,0 +1,8 @@
+ba
+aaabaaa
+bbaaa
+aaaaba
+bbbbbaa
+cba
+cab
+acb
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule3.aff
@@ -0,0 +1,3 @@
+COMPOUNDMIN 1
+COMPOUNDRULE 1
+COMPOUNDRULE A?B?C?
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule3.dic
@@ -0,0 +1,5 @@
+3
+a/A
+b/B
+c/C
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule3.good
@@ -0,0 +1,7 @@
+a
+b
+c
+ab
+abc
+ac
+bc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule3.wrong
@@ -0,0 +1,41 @@
+aa
+aaa
+aaaa
+aab
+aaab
+aaaab
+abb
+aabb
+aaabbb
+bb
+bbb
+bbbb
+aaab
+abcc
+abbc
+abbcc
+aabc
+aabcc
+aabbc
+aabbcc
+aaabbbccc
+acc
+aac
+aacc
+aaaccc
+bcc
+bbc
+bbcc
+bbbccc
+cc
+ccc
+cccccc
+abcc
+ba
+aaabaaa
+bbaaa
+aaaaba
+bbbbbaa
+cba
+cab
+acb
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule4.aff
@@ -0,0 +1,7 @@
+# English ordinal numbers
+WORDCHARS 0123456789
+COMPOUNDMIN 1
+ONLYINCOMPOUND c
+COMPOUNDRULE 2
+COMPOUNDRULE n*1t
+COMPOUNDRULE n*mp
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule4.dic
@@ -0,0 +1,24 @@
+22
+0/nm
+1/n1
+2/nm
+3/nm
+4/nm
+5/nm
+6/nm
+7/nm
+8/nm
+9/nm
+0th/pt
+1st/p
+1th/tc
+2nd/p
+2th/tc
+3rd/p
+3th/tc
+4th/pt
+5th/pt
+6th/pt
+7th/pt
+8th/pt
+9th/pt
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule4.good
@@ -0,0 +1,29 @@
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+10th
+11th
+12th
+13th
+14th
+15th
+16th
+17th
+18th
+19th
+20th
+21st
+22nd
+23rd
+24th
+25th
+100th
+1000th
+10001st
+10011th
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule4.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
+
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule4.wrong
@@ -0,0 +1,5 @@
+1th
+2th
+3th
+10001th
+10011st
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.aff
@@ -0,0 +1,7 @@
+# number + percent
+SET UTF-8
+COMPOUNDMIN 1
+COMPOUNDRULE 2
+COMPOUNDRULE N*%?
+COMPOUNDRULE NN*.NN*%?
+WORDCHARS 0123456789‰.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.dic
@@ -0,0 +1,14 @@
+13
+0/N	po:num
+1/N	po:num
+2/N	po:num
+3/N	po:num
+4/N	po:num
+5/N	po:num
+6/N	po:num
+7/N	po:num
+8/N	po:num
+9/N	po:num
+./.	po:sign_dot
+%/%	po:sign_percent
+‰/%	po:sign_per_mille
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.good
@@ -0,0 +1,7 @@
+10%
+0.2%
+0.20%
+123.4561‰
+10
+0000
+10.25
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.morph
@@ -0,0 +1,21 @@
+> 10%
+analyze(10%) =  pa:1 st:1 po:num pa:0 st:0 po:num pa:% st:% po:sign_percent
+stem(10%) = 10%
+> 0.2%
+analyze(0.2%) =  pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:% st:% po:sign_percent
+stem(0.2%) = 0.2%
+> 0.20%
+analyze(0.20%) =  pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:0 st:0 po:num pa:% st:% po:sign_percent
+stem(0.20%) = 0.20%
+> 123.4561‰
+analyze(123.4561‰) =  pa:1 st:1 po:num pa:2 st:2 po:num pa:3 st:3 po:num pa:. st:. po:sign_dot pa:4 st:4 po:num pa:5 st:5 po:num pa:6 st:6 po:num pa:1 st:1 po:num pa:‰ st:‰ po:sign_per_mille
+stem(123.4561‰) = 123.4561‰
+> 10
+analyze(10) =  pa:1 st:1 po:num pa:0 st:0 po:num
+stem(10) = 10
+> 0000
+analyze(0000) =  pa:0 st:0 po:num pa:0 st:0 po:num pa:0 st:0 po:num pa:0 st:0 po:num
+stem(0000) = 0000
+> 10.25
+analyze(10.25) =  pa:1 st:1 po:num pa:0 st:0 po:num pa:. st:. po:sign_dot pa:2 st:2 po:num pa:5 st:5 po:num
+stem(10.25) = 10.25
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule5.wrong
@@ -0,0 +1,1 @@
+.25
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule6.aff
@@ -0,0 +1,4 @@
+COMPOUNDMIN 1
+COMPOUNDRULE 2
+COMPOUNDRULE A*A
+COMPOUNDRULE A*AAB*BBBC*C
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule6.dic
@@ -0,0 +1,5 @@
+3
+a/A
+b/B
+c/C
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule6.good
@@ -0,0 +1,4 @@
+aa
+aaaaaa
+aabbbc
+aaaaabbbbbbcccccc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule6.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule6.wrong
@@ -0,0 +1,4 @@
+abc
+abbbbbccccccc
+aabbccccccc
+aabbbbbbb
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule7.aff
@@ -0,0 +1,8 @@
+# English ordinal numbers (parenthesized long flags)
+FLAG long
+WORDCHARS 0123456789
+COMPOUNDMIN 1
+ONLYINCOMPOUND cc
+COMPOUNDRULE 2
+COMPOUNDRULE (nn)*(11)(tt)
+COMPOUNDRULE (nn)*(mm)(pp)
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule7.dic
@@ -0,0 +1,24 @@
+22
+0/nnmm
+1/nn11
+2/nnmm
+3/nnmm
+4/nnmm
+5/nnmm
+6/nnmm
+7/nnmm
+8/nnmm
+9/nnmm
+0th/pptt
+1st/pp
+1th/ttcc
+2nd/pp
+2th/ttcc
+3rd/pp
+3th/ttcc
+4th/pptt
+5th/pptt
+6th/pptt
+7th/pptt
+8th/pptt
+9th/pptt
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule7.good
@@ -0,0 +1,29 @@
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+10th
+11th
+12th
+13th
+14th
+15th
+16th
+17th
+18th
+19th
+20th
+21st
+22nd
+23rd
+24th
+25th
+100th
+1000th
+10001st
+10011th
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule7.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
+
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule7.wrong
@@ -0,0 +1,5 @@
+1th
+2th
+3th
+10001th
+10011st
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule8.aff
@@ -0,0 +1,8 @@
+# English ordinal numbers (parenthesized numerical flags)
+FLAG num
+WORDCHARS 0123456789
+COMPOUNDMIN 1
+ONLYINCOMPOUND 1000
+COMPOUNDRULE 2
+COMPOUNDRULE (1001)*(1002)(2001)
+COMPOUNDRULE (1001)*(2002)(2000)
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule8.dic
@@ -0,0 +1,24 @@
+22
+0/1001,2002
+1/1001,1002
+2/1001,2002
+3/1001,2002
+4/1001,2002
+5/1001,2002
+6/1001,2002
+7/1001,2002
+8/1001,2002
+9/1001,2002
+0th/2000,2001
+1st/2000
+1th/2001,1000
+2nd/2000
+2th/2001,1000
+3rd/2000
+3th/2001,1000
+4th/2000,2001
+5th/2000,2001
+6th/2000,2001
+7th/2000,2001
+8th/2000,2001
+9th/2000,2001
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule8.good
@@ -0,0 +1,29 @@
+1st
+2nd
+3rd
+4th
+5th
+6th
+7th
+8th
+9th
+10th
+11th
+12th
+13th
+14th
+15th
+16th
+17th
+18th
+19th
+20th
+21st
+22nd
+23rd
+24th
+25th
+100th
+1000th
+10001st
+10011th
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule8.test
@@ -0,0 +1,6 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
+
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/compoundrule8.wrong
@@ -0,0 +1,5 @@
+1th
+2th
+3th
+10001th
+10011st
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition.aff
@@ -0,0 +1,62 @@
+SET ISO8859-2
+WORDCHARS 0123456789
+
+SFX S N 18
+SFX S   0 suf1 .
+SFX S   0 suf2  o
+SFX S   0 suf3  [aeou]
+SFX S   0 suf4  [^o]
+SFX S   0 suf5  [^aeou]
+SFX S   0 suf6  fo
+SFX S   0 suf7  f[aeou]
+SFX S   0 suf8  f[^o]
+SFX S   0 suf9  f[^aeou]
+SFX S   0 suf10 [aefu]o
+SFX S   0 suf11 [^f]o
+SFX S   0 suf12 [^aefu]o
+SFX S   0 suf13 [aefu][^aefu]
+SFX S   0 suf14 [^aeou][aeou]
+SFX S   0 suf15 [aeou][^aefu]
+SFX S   0 suf16 [^aeou][^aefu]
+SFX S   0 suf17 [aeou][bcdfgkmnoprstvz]
+SFX S   0 suf18 [aeou]o
+
+SFX Q N 2
+SFX Q   0 ning  [^aeio][aeiou]n 
+SFX Q   0 ing   [aeio][aeiou][bcdfgkmnprstvz]
+
+SFX T N 1
+SFX T   y ies   .[^aeiou]y
+
+PFX U N 1
+PFX U 0 un wr.
+
+SFX Z Y 3
+SFX Z   0           ch         [].a
+SFX Z   0           m          [].a
+SFX Z   a           0          [].a
+
+PFX P N 18
+PFX P   0 pre1 .
+PFX P   0 pre2  o
+PFX P   0 pre3  [aeou]
+PFX P   0 pre4  [^o]
+PFX P   0 pre5  [^aeou]
+PFX P   0 pre6  of
+PFX P   0 pre7  o[aefou]
+PFX P   0 pre8  o[^f]
+PFX P   0 pre9  o[^aefu]
+PFX P   0 pre10 [aefu]o
+PFX P   0 pre11 [^f]o
+PFX P   0 pre12 [^aefou]o
+PFX P   0 pre13 [aeou][aefu]
+PFX P   0 pre14 [aeou][^aeou]
+PFX P   0 pre15 [aeou][^aefu]
+PFX P   0 pre16 [^aefu][^aeou]
+PFX P   0 pre17 [bcdfgkmnoprstvz][aeou]
+PFX P   0 pre18 o[aeou]
+
+
+PFX R N 2
+PFX R   0 gnin  n[aeiou][^aeio]
+PFX R   0 gni   [bcdfgkmnprstvz][aeiou][aeio]
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition.dic
@@ -0,0 +1,6 @@
+5
+ofo/SP
+entertain/Q
+nianretne/R
+ra/Z
+wry/TU
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition.good
@@ -0,0 +1,26 @@
+ofo
+ofosuf1
+pre1ofo
+ofosuf2
+pre2ofo
+ofosuf3
+pre3ofo
+ofosuf6
+pre6ofo
+ofosuf7
+pre7ofo
+ofosuf10
+ofosuf13
+pre13ofo
+ofosuf14
+pre14ofo
+ofosuf16
+pre16ofo
+entertain
+entertaining
+gninianretne
+r
+ram
+rach
+wries
+unwry
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-2
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition.wrong
@@ -0,0 +1,21 @@
+ofosuf4
+pre4ofo
+ofosuf5
+pre5ofo
+ofosuf8
+pre8ofo
+ofosuf9
+pre9ofo
+ofosuf11
+pre10ofo
+pre11ofo
+ofosuf12
+pre12ofo
+ofosuf15
+pre15ofo
+ofosuf17
+pre17ofo
+ofosuf18
+pre18ofo
+entertainning
+gninnianretne
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition_utf.aff
@@ -0,0 +1,42 @@
+SET UTF-8
+WORDCHARS 0123456789
+
+SFX S N 18
+SFX S   0 suf1 .
+SFX S   0 suf2  ó
+SFX S   0 suf3  [áéóú]
+SFX S   0 suf4  [^ó]
+SFX S   0 suf5  [^áéóú]
+SFX S   0 suf6  őó
+SFX S   0 suf7  ő[áéóú]
+SFX S   0 suf8  ő[^ó]
+SFX S   0 suf9  ő[^áéóú]
+SFX S   0 suf10 [áéóőú]ó
+SFX S   0 suf11 [^ő]ó
+SFX S   0 suf12 [^áéóőú]ó
+SFX S   0 suf13 [áéőú][^ú]
+SFX S   0 suf14 [^ú][áéóú]
+SFX S   0 suf15 [áéóú][^áéőú]
+SFX S   0 suf16 [^áéóú][^áéőú]
+SFX S   0 suf17 [áéóú][bcdfgkmnóprstvz]
+SFX S   0 suf18 [áéóú]ó
+
+PFX P N 18
+PFX P   0 pre1 .
+PFX P   0 pre2  ó
+PFX P   0 pre3  [áéóú]
+PFX P   0 pre4  [^ó]
+PFX P   0 pre5  [^áéóú]
+PFX P   0 pre6  óő
+PFX P   0 pre7  ó[áéőú]
+PFX P   0 pre8  ó[^ő]
+PFX P   0 pre9  ó[^áéóőú]
+PFX P   0 pre10 [áéóőú]ő
+PFX P   0 pre11 [^ó]ő
+PFX P   0 pre12 [^áéóőú]ő
+PFX P   0 pre13 [áéóú][áéőú]
+PFX P   0 pre14 [áéóú][^áéóú]
+PFX P   0 pre15 [áéóú][^áéőú]
+PFX P   0 pre16 [^áéőú][^áéóú]
+PFX P   0 pre17 [bcdfgkmnóprstvz][áéóú]
+PFX P   0 pre18 ó[áéóú]
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition_utf.dic
@@ -0,0 +1,2 @@
+1
+óőó/SP
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition_utf.good
@@ -0,0 +1,19 @@
+óőó
+óőósuf1
+pre1óőó
+óőósuf2
+pre2óőó
+óőósuf3
+pre3óőó
+óőósuf6
+pre6óőó
+óőósuf7
+pre7óőó
+óőósuf10
+pre10óőó
+óőósuf13
+pre13óőó
+óőósuf14
+pre14óőó
+óőósuf16
+pre16óőó
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition_utf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/condition_utf.wrong
@@ -0,0 +1,18 @@
+óőósuf4
+pre4óőó
+óőósuf5
+pre5óőó
+óőósuf8
+pre8óőó
+óőósuf9
+pre9óőó
+óőósuf11
+pre11óőó
+óőósuf12
+pre12óőó
+óőósuf15
+pre15óőó
+óőósuf17
+óőósuf18
+pre17óőó
+pre18óőó
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.aff
@@ -0,0 +1,11 @@
+PFX P Y 1
+PFX P   0 un . ip:un
+
+SFX S Y 1
+SFX S   0 s . is:PL
+
+SFX Q Y 1
+SFX Q   0 s . is:3SGV
+
+SFX R Y 1
+SFX R   0 able/PS . ds:DER_V_ADJ_ABLE
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.dic
@@ -0,0 +1,3 @@
+2
+drink/RQ	po:verb
+drink/S	po:noun
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.good
@@ -0,0 +1,6 @@
+drink
+drinks
+drinkable
+drinkables
+undrinkable
+undrinkables
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.morph
@@ -0,0 +1,20 @@
+> drink
+analyze(drink) =  st:drink po:verb
+analyze(drink) =  st:drink po:noun
+stem(drink) = drink
+> drinks
+analyze(drinks) =  st:drink po:verb is:3SGV
+analyze(drinks) =  st:drink po:noun is:PL
+stem(drinks) = drink
+> drinkable
+analyze(drinkable) =  st:drink po:verb ds:DER_V_ADJ_ABLE
+stem(drinkable) = drinkable
+> drinkables
+analyze(drinkables) =  st:drink po:verb ds:DER_V_ADJ_ABLE is:PL
+stem(drinkables) = drinkable
+> undrinkable
+analyze(undrinkable) = ip:un  st:drink po:verb ds:DER_V_ADJ_ABLE
+stem(undrinkable) = drinkable
+> undrinkables
+analyze(undrinkables) = ip:un  st:drink po:verb ds:DER_V_ADJ_ABLE is:PL
+stem(undrinkables) = drinkable
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/conditionalprefix.wrong
@@ -0,0 +1,2 @@
+undrink
+undrinks
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/digits_in_words.aff
@@ -0,0 +1,9 @@
+# Digits in words, handled by COMPOUNDRULE.
+# 1-jährig, 2-jährig, 100-jährig etc.
+SET UTF-8
+COMPOUNDMIN 1
+# recognize ab, aab, aaab etc. compounds (a=digits, b=-jährig, see dic file)
+COMPOUNDRULE 1
+COMPOUNDRULE a*b
+ONLYINCOMPOUND c
+WORDCHARS 0123456789-
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/digits_in_words.dic
@@ -0,0 +1,12 @@
+11
+0/a
+1/a
+2/a
+3/a
+4/a
+5/a
+6/a
+7/a
+8/a
+9/a
+-jährig/bc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/digits_in_words.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/digits_in_words.wrong
@@ -0,0 +1,1 @@
+-jährig
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/encoding.aff
@@ -0,0 +1,1 @@
+SET ISO-8859-15
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/encoding.dic
@@ -0,0 +1,3 @@
+2
+cur
+uvre
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/encoding.good
@@ -0,0 +1,4 @@
+cur
+uvre
+CUR
+UVRE
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/encoding.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-15
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flag.aff
@@ -0,0 +1,13 @@
+# base 1-character flags
+
+SFX A Y 1
+SFX A 0 s/123 .
+
+SFX 1 Y 1
+SFX 1 0 bar .
+
+SFX 2 Y 1
+SFX 2 0 baz .
+
+PFX 3 Y 1
+PFX 3 0 un .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flag.dic
@@ -0,0 +1,2 @@
+1
+foo/A3
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flag.good
@@ -0,0 +1,8 @@
+foo
+foos
+foosbar
+foosbaz
+unfoo
+unfoos
+unfoosbar
+unfoosbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flag.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flaglong.aff
@@ -0,0 +1,14 @@
+# 2-character flags
+FLAG long
+
+SFX zx Y 1
+SFX zx 0 s/g?1G09 .
+
+SFX g? Y 1
+SFX g? 0 bar .
+
+SFX 1G Y 1
+SFX 1G 0 baz .
+
+PFX 09 Y 1
+PFX 09 0 un .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flaglong.dic
@@ -0,0 +1,2 @@
+1
+foo/zx09
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flaglong.good
@@ -0,0 +1,8 @@
+foo
+foos
+foosbar
+foosbaz
+unfoo
+unfoos
+unfoosbar
+unfoosbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flaglong.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagnum.aff
@@ -0,0 +1,14 @@
+# numerical flags
+FLAG num
+
+SFX 999 Y 1
+SFX 999 0 s/214,216,54321 .
+
+SFX 214 Y 1
+SFX 214 0 bar .
+
+SFX 216 Y 1
+SFX 216 0 baz .
+
+PFX 54321 Y 1
+PFX 54321 0 un .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagnum.dic
@@ -0,0 +1,2 @@
+1
+foo/999,54321
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagnum.good
@@ -0,0 +1,8 @@
+foo
+foos
+foosbar
+foosbaz
+unfoo
+unfoos
+unfoosbar
+unfoosbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagnum.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagutf8.aff
@@ -0,0 +1,15 @@
+# UTF-8 flags
+FLAG UTF-8
+
+SFX A Y 1
+SFX A 0 s/ÖüÜ .
+#SFX A 0 s/ÖüÖÜ .
+
+SFX Ö Y 1
+SFX Ö 0 bar .
+
+SFX ü Y 1
+SFX ü 0 baz .
+
+PFX Ü Y 1
+PFX Ü 0 un .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagutf8.dic
@@ -0,0 +1,2 @@
+1
+foo/AÜ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagutf8.good
@@ -0,0 +1,8 @@
+foo
+foos
+foosbar
+foosbaz
+unfoo
+unfoos
+unfoosbar
+unfoosbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/flagutf8.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fogemorpheme.aff
@@ -0,0 +1,12 @@
+# fogemorphemes: special morphemes in compounds
+#
+# Swedish example:
+# gata + kontoret = gatukontoret
+
+COMPOUNDFLAG X
+COMPOUNDBEGIN Y
+ONLYINCOMPOUND Z
+COMPOUNDPERMITFLAG P
+
+SFX A Y 1
+SFX A a u/YPZ .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fogemorpheme.dic
@@ -0,0 +1,3 @@
+2
+gata/A
+kontoret/X
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fogemorpheme.good
@@ -0,0 +1,3 @@
+gata
+kontoret
+gatukontoret
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fogemorpheme.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fogemorpheme.wrong
@@ -0,0 +1,3 @@
+gatu
+gatakontoret
+kontoretgatu
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forbiddenword.aff
@@ -0,0 +1,11 @@
+# FORBIDDENWORD flag
+# The signed word, and its suffixed forms are all forbidden,
+# excepts with root homonyms.
+# Useful for forbidding bad suffixed forms or compounds.
+
+
+FORBIDDENWORD X
+COMPOUNDFLAG Y
+
+SFX A Y 1
+SFX A 0 s .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forbiddenword.dic
@@ -0,0 +1,8 @@
+5
+foo/S	[1]
+foo/YX	[2]
+foo/Y	[3]
+foo/S	[4]
+bar/YS	[5]
+bars/X
+foos/X
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forbiddenword.good
@@ -0,0 +1,3 @@
+foo
+bar
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forbiddenword.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forbiddenword.wrong
@@ -0,0 +1,4 @@
+bars
+foos
+foobar
+barfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.aff
@@ -0,0 +1,4 @@
+# force capitalized compound
+TRY F
+FORCEUCASE A
+COMPOUNDFLAG C
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.dic
@@ -0,0 +1,4 @@
+3
+foo/C
+bar/C
+baz/CA
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.good
@@ -0,0 +1,7 @@
+foo
+bar
+baz
+foobar
+Foobaz
+foobazbar
+Foobarbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.sug
@@ -0,0 +1,2 @@
+Foobaz
+Foobarbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/forceucase.wrong
@@ -0,0 +1,2 @@
+foobaz
+foobarbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fullstrip.aff
@@ -0,0 +1,15 @@
+# FULLSTRIP option: Hunspell can strip full words by affix rules
+# see OpenOffice.org Issue #80145
+# test data from Davide Prina
+
+FULLSTRIP
+
+SET ISO8859-15
+TRY aioertnsclmdpgubzfvhàq'ACMSkBGPLxEyRTVòIODNwFéùèìjUZKHWJYQX
+
+SFX A Y 3 # verbo andare (verb to go)
+SFX A andare vado andare # io vado (I go)
+SFX A andare va andare # tu vai (you go)
+SFX A are iamo andare # noi andiamo (we go)
+
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fullstrip.dic
@@ -0,0 +1,4 @@
+2
+andare/A
+riandare/A
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fullstrip.good
@@ -0,0 +1,9 @@
+andare
+vado
+va
+andiamo
+riandare
+rivado
+riva
+riandiamo
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/fullstrip.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompounding.aff
@@ -0,0 +1,91 @@
+# German compounding
+
+# handle special casing of German sharp s
+
+CHECKSHARPS
+
+# compound flags
+
+COMPOUNDBEGIN U
+COMPOUNDMIDDLE V
+COMPOUNDEND W
+
+# Prefixes are allowed at the beginning of compounds,
+# suffixes are allowed at the end of compounds by default:
+# (prefix)?(root)+(affix)?
+# Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
+COMPOUNDPERMITFLAG P
+
+# for German fogemorphemes (Fuge-element)
+# Hint: ONLYINCOMPOUND is not required everywhere, but the
+# checking will be a little faster with it.
+
+ONLYINCOMPOUND X
+
+# forbid uppercase characters at compound word bounds
+CHECKCOMPOUNDCASE
+
+# for handling Fuge-elements with dashes (Arbeits-) 
+# dash will be a special word
+
+COMPOUNDMIN 1
+WORDCHARS -
+
+# compound settings and fogemorpheme for `Arbeit'
+
+SFX A Y 3
+SFX A 0 s/UPX .
+SFX A 0 s/VPDX .
+SFX A 0 0/WXD .
+
+SFX B Y 2
+SFX B 0 0/UPX .
+SFX B 0 0/VWXDP .
+
+# a suffix for `Computer'
+
+SFX C Y 1
+SFX C 0 n/WD .
+
+# for forbid exceptions (*Arbeitsnehmer)
+
+FORBIDDENWORD Z
+
+# dash prefix for compounds with dash (Arbeits-Computer)
+
+PFX - Y 1
+PFX - 0 -/P .
+
+# decapitalizing prefix
+# circumfix for positioning in compounds
+
+PFX D Y 29
+PFX D A a/PX A
+PFX D  /PX 
+PFX D B b/PX B
+PFX D C c/PX C
+PFX D D d/PX D
+PFX D E e/PX E
+PFX D F f/PX F
+PFX D G g/PX G
+PFX D H h/PX H
+PFX D I i/PX I
+PFX D J j/PX J
+PFX D K k/PX K
+PFX D L l/PX L
+PFX D M m/PX M
+PFX D N n/PX N
+PFX D O o/PX O
+PFX D  /PX 
+PFX D P p/PX P
+PFX D Q q/PX Q
+PFX D R r/PX R
+PFX D S s/PX S
+PFX D T t/PX T
+PFX D U u/PX U
+PFX D  /PX 
+PFX D V v/PX V
+PFX D W w/PX W
+PFX D X x/PX X
+PFX D Y y/PX Y
+PFX D Z z/PX Z
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompounding.dic
@@ -0,0 +1,5 @@
+4
+Arbeit/A-
+Computer/BC-
+-/W
+Arbeitsnehmer/Z
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompounding.good
@@ -0,0 +1,20 @@
+Computer
+Computern
+Arbeit
+Arbeits-
+Computerarbeit
+Computerarbeits-
+Arbeitscomputer
+Computercomputer
+Computercomputern
+Arbeitscomputern
+Computerarbeitscomputer
+Computerarbeitscomputern
+Arbeitscomputercomputer
+Computercomputerarbeit
+Arbeitscomputerarbeit
+Arbeitsarbeitsarbeit
+Computerarbeitsarbeit
+Computerarbeits-Computer
+Computerarbeits-Computern
+Computer-Arbeit
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompounding.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompounding.wrong
@@ -0,0 +1,50 @@
+computer
+computern
+arbeit
+Arbeits
+arbeits
+ComputerArbeit
+ComputernArbeit
+Computernarbeit
+ComputerArbeits
+Arbeitcomputer
+Arbeitcomputern
+ArbeitsComputer
+ArbeitsComputern
+Computerarbeitcomputer
+ComputerArbeitcomputer
+ComputerArbeitscomputer
+Computerarbeitcomputern
+ComputerArbeitcomputern
+ComputerArbeitscomputern
+Arbeitscomputerarbeits
+Arbeitscomputernarbeits
+Computerarbeits-computer
+Arbeitsnehmer
+computers
+computern
+computernarbeit
+computernArbeit
+computerArbeit
+computerArbeits
+arbeitcomputer
+arbeitsComputer
+computerarbeitcomputer
+computerArbeitcomputer
+computerArbeitscomputer
+arbeitscomputerarbeits
+computerarbeits-computer
+arbeitsnehmer
+computernarbeit
+computernArbeit
+arbeits-
+computerarbeit
+computerarbeits-
+arbeitscomputer
+arbeitscomputern
+computerarbeitscomputer
+computerarbeitscomputern
+computerarbeitscomputers
+arbeitscomputerarbeit
+computerarbeits-Computer
+computerarbeits-Computern
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompoundingold.aff
@@ -0,0 +1,96 @@
+# German compounding
+
+# handle special casing of German sharp s
+
+CHECKSHARPS
+
+# compound flags
+
+COMPOUNDBEGIN U
+COMPOUNDMIDDLE V
+COMPOUNDEND W
+
+# Prefixes are allowed at the beginning of compounds,
+# suffixes are allowed at the end of compounds by default:
+# (prefix)?(root)+(affix)?
+# Affixes with COMPOUNDPERMITFLAG may be inside of compounds.
+COMPOUNDPERMITFLAG P
+
+# for German fogemorphemes (Fuge-element)
+# Hint: ONLYINCOMPOUND is not required everywhere, but the
+# checking will be a little faster with it.
+
+ONLYINCOMPOUND X
+
+# for decapitalizing nouns with fogemorphemes
+
+CIRCUMFIX Y
+
+# for handling Fuge-elements with dashes (Arbeits-) 
+# dash will be a special word
+
+COMPOUNDMIN 1
+WORDCHARS -
+
+# compound settings and fogemorpheme for `Arbeit'
+
+SFX A Y 3
+SFX A 0 s/UPX .
+SFX A 0 s/VPXDY .
+SFX A 0 0/WXDY .
+
+# compound settings for `Computer'
+
+SFX B Y 2
+SFX B 0 0/UPX .
+SFX B 0 0/VWPXDY .
+
+# a suffix for `Computer'
+
+SFX C Y 2
+SFX C 0 n .
+SFX C 0 n/WXDY .
+
+# for forbid exceptions (*Arbeitsnehmer)
+
+FORBIDDENWORD Z
+
+# dash prefix for compounds with dash (Arbeits-Computer)
+
+PFX - Y 2
+PFX - 0 -/PUVW .
+PFX - 0 -/PY .
+
+# decapitalizing prefix
+# circumfix for positioning in compounds
+
+PFX D Y 29
+PFX D A a/PXY A
+PFX D  /PXY 
+PFX D B b/PXY B
+PFX D C c/PXY C
+PFX D D d/PXY D
+PFX D E e/PXY E
+PFX D F f/PXY F
+PFX D G g/PXY G
+PFX D H h/PXY H
+PFX D I i/PXY I
+PFX D J j/PXY J
+PFX D K k/PXY K
+PFX D L l/PXY L
+PFX D M m/PXY M
+PFX D N n/PXY N
+PFX D O o/PXY O
+PFX D  /PXY 
+PFX D P p/PXY P
+PFX D Q q/PXY Q
+PFX D R r/PXY R
+PFX D S s/PXY S
+PFX D T t/PXY T
+PFX D U u/PXY U
+PFX D  /PXY 
+PFX D V v/PXY V
+PFX D W w/PXY W
+PFX D X x/PXY X
+PFX D Y y/PXY Y
+PFX D Z z/PXY Z
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompoundingold.dic
@@ -0,0 +1,5 @@
+4
+Arbeit/A-
+Computer/BC-
+-/W
+Arbeitsnehmer/Z
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompoundingold.good
@@ -0,0 +1,14 @@
+Computer
+Computern
+Arbeit
+Arbeits-
+Computerarbeit
+Computerarbeits-
+Arbeitscomputer
+Arbeitscomputern
+Computerarbeitscomputer
+Computerarbeitscomputern
+Arbeitscomputerarbeit
+Computerarbeits-Computer
+Computerarbeits-Computern
+Computer-Arbeit
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompoundingold.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/germancompoundingold.wrong
@@ -0,0 +1,50 @@
+computer
+computern
+arbeit
+Arbeits
+arbeits
+ComputerArbeit
+ComputernArbeit
+Computernarbeit
+ComputerArbeits
+Arbeitcomputer
+Arbeitcomputern
+ArbeitsComputer
+ArbeitsComputern
+Computerarbeitcomputer
+ComputerArbeitcomputer
+ComputerArbeitscomputer
+Computerarbeitcomputern
+ComputerArbeitcomputern
+ComputerArbeitscomputern
+Arbeitscomputerarbeits
+Arbeitscomputernarbeits
+Computerarbeits-computer
+Arbeitsnehmer
+computers
+computern
+computernarbeit
+computernArbeit
+computerArbeit
+computerArbeits
+arbeitcomputer
+arbeitsComputer
+computerarbeitcomputer
+computerArbeitcomputer
+computerArbeitscomputer
+arbeitscomputerarbeits
+computerarbeits-computer
+arbeitsnehmer
+computernarbeit
+computernArbeit
+arbeits-
+computerarbeit
+computerarbeits-
+arbeitscomputer
+arbeitscomputern
+computerarbeitscomputer
+computerarbeitscomputern
+computerarbeitscomputers
+arbeitscomputerarbeit
+computerarbeits-Computer
+computerarbeits-Computern
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.aff
@@ -0,0 +1,203 @@
+# Ngram suggestions
+# - fix case problem
+# - detect character swapping (keep only these suggestions)
+# - lesser suggestions
+# - weight with common subsequence algorithm
+# - suggest uppercased words
+
+# 2007-02-05: 
+# now not neighbour character replacements and character movings are
+# detected by not ngram suggestions, too.
+
+# OpenOffice.org's en_US.aff file
+
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ'
+
+WORDCHARS '
+
+PFX A Y 1
+PFX A   0     re         .
+
+PFX I Y 1
+PFX I   0     in         .
+
+PFX U Y 1
+PFX U   0     un         .
+
+PFX C Y 1
+PFX C   0     de          .
+
+PFX E Y 1
+PFX E   0     dis         .
+
+PFX F Y 1
+PFX F   0     con         .
+
+PFX K Y 1
+PFX K   0     pro         .
+
+SFX V N 2
+SFX V   e     ive        e
+SFX V   0     ive        [^e]
+
+SFX N Y 3
+SFX N   e     ion        e
+SFX N   y     ication    y 
+SFX N   0     en         [^ey] 
+
+SFX X Y 3
+SFX X   e     ions       e
+SFX X   y     ications   y
+SFX X   0     ens        [^ey]
+
+SFX H N 2
+SFX H   y     ieth       y
+SFX H   0     th         [^y] 
+
+SFX Y Y 1
+SFX Y   0     ly         .
+
+SFX G Y 2
+SFX G   e     ing        e
+SFX G   0     ing        [^e] 
+
+SFX J Y 2
+SFX J   e     ings       e
+SFX J   0     ings       [^e]
+
+SFX D Y 4
+SFX D   0     d          e
+SFX D   y     ied        [^aeiou]y
+SFX D   0     ed         [^ey]
+SFX D   0     ed         [aeiou]y
+
+SFX T N 4
+SFX T   0     st         e
+SFX T   y     iest       [^aeiou]y
+SFX T   0     est        [aeiou]y
+SFX T   0     est        [^ey]
+
+SFX R Y 4
+SFX R   0     r          e
+SFX R   y     ier        [^aeiou]y
+SFX R   0     er         [aeiou]y
+SFX R   0     er         [^ey]
+
+SFX Z Y 4
+SFX Z   0     rs         e
+SFX Z   y     iers       [^aeiou]y
+SFX Z   0     ers        [aeiou]y
+SFX Z   0     ers        [^ey]
+
+SFX S Y 4
+SFX S   y     ies        [^aeiou]y
+SFX S   0     s          [aeiou]y
+SFX S   0     es         [sxzh]
+SFX S   0     s          [^sxzhy]
+
+SFX P Y 3
+SFX P   y     iness      [^aeiou]y
+SFX P   0     ness       [aeiou]y
+SFX P   0     ness       [^y]
+
+SFX M Y 1
+SFX M   0     's         .
+
+SFX B Y 3
+SFX B   0     able       [^aeiou]
+SFX B   0     able       ee
+SFX B   e     able       [^aeiou]e
+
+SFX L Y 1
+SFX L   0     ment       .
+
+REP 88
+REP a ei
+REP ei a
+REP a ey
+REP ey a
+REP ai ie
+REP ie ai
+REP are air
+REP are ear
+REP are eir
+REP air are
+REP air ere
+REP ere air
+REP ere ear
+REP ere eir
+REP ear are
+REP ear air
+REP ear ere
+REP eir are
+REP eir ere
+REP ch te
+REP te ch
+REP ch ti
+REP ti ch
+REP ch tu
+REP tu ch
+REP ch s
+REP s ch
+REP ch k
+REP k ch
+REP f ph
+REP ph f
+REP gh f
+REP f gh
+REP i igh
+REP igh i
+REP i uy
+REP uy i
+REP i ee
+REP ee i
+REP j di
+REP di j
+REP j gg
+REP gg j
+REP j ge
+REP ge j
+REP s ti
+REP ti s
+REP s ci
+REP ci s
+REP k cc
+REP cc k
+REP k qu
+REP qu k
+REP kw qu
+REP o eau
+REP eau o
+REP o ew
+REP ew o
+REP oo ew
+REP ew oo
+REP ew ui
+REP ui ew
+REP oo ui
+REP ui oo
+REP ew u
+REP u ew
+REP oo u
+REP u oo
+REP u oe
+REP oe u
+REP u ieu
+REP ieu u
+REP ue ew
+REP ew ue
+REP uff ough
+REP oo ieu
+REP ieu oo
+REP ier ear
+REP ear ier
+REP ear air
+REP air ear
+REP w qu
+REP qu w
+REP z ss
+REP ss z
+REP shun tion
+REP shun sion
+REP shun cion
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.dic
@@ -0,0 +1,15 @@
+15
+endangerment/SM
+ferment/FSCM
+preferment/SM
+impermanent/Y
+permanent/YSP
+semipermanent/Y
+empowerment/MS
+supermen
+tournament/MS
+ornamental/SY
+ornament/GSDM
+supernatant
+pimpernel
+UNESCO/M
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.good
@@ -0,0 +1,1 @@
+permanent
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.sug
@@ -0,0 +1,10 @@
+permanent, preferment
+permanent, ornament
+permanent
+Permanent, Preferment
+Permanent, Ornament
+Permanent
+UNESCO
+UNESCO
+UNESCO's
+UNESCO's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i35725.wrong
@@ -0,0 +1,10 @@
+permenant
+pernament
+pernemant
+Permenant
+Pernament
+Pernemant
+unesco
+Unesco
+unesco's
+Unesco's
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i53643.aff
@@ -0,0 +1,2 @@
+# check numbers with separators
+WORDCHARS 0123456789.-,
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i53643.dic
@@ -0,0 +1,2 @@
+1
+foo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i53643.good
@@ -0,0 +1,19 @@
+1
+12
+123
+1234
+12345
+123456
+1234567
+1.1
+1.12
+1.123
+1.1234
+1.12345
+1.123456
+12.1
+123.12
+1234.123
+12345.1234
+123456.12345
+1234567.123456
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i53643.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i53643.wrong
@@ -0,0 +1,4 @@
+1..2
+1,,2
+1.,2
+1,.2
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.aff
@@ -0,0 +1,2 @@
+# Missing capitalized suggestion for capitalized bad words
+SET ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.dic
@@ -0,0 +1,2 @@
+1
+diter
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.good
@@ -0,0 +1,2 @@
+diter
+diter
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.sug
@@ -0,0 +1,2 @@
+diter
+diter
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54633.wrong
@@ -0,0 +1,2 @@
+editer
+Editer
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54980.aff
@@ -0,0 +1,2 @@
+# ISO-8859-15 (extended latin-1) support for French, Finnish and EURO symbol
+SET ISO8859-15
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54980.dic
@@ -0,0 +1,3 @@
+2
+cur
+uvre
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54980.good
@@ -0,0 +1,4 @@
+cur
+uvre
+CUR
+UVRE
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i54980.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-15
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.aff
@@ -0,0 +1,4 @@
+# case suggestions
+MAXNGRAMSUGS 0
+# capitalise baz->Baz
+TRY B
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.dic
@@ -0,0 +1,5 @@
+4
+foo
+bar
+Baz
+Boo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.good
@@ -0,0 +1,10 @@
+foo
+bar
+Foo
+Bar
+Baz
+Boo
+FOO
+BAR
+BAZ
+BOO
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.sug
@@ -0,0 +1,13 @@
+foo, Boo
+Bar
+Baz
+Boo
+foo bar
+foo Bar
+Foo bar
+Foo Bar
+foo Baz
+Foo Baz
+Baz foo
+Baz Foo
+Baz Boo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i58202.wrong
@@ -0,0 +1,13 @@
+fOO
+BAr
+baz
+BOo
+foobar
+fooBar
+Foobar
+FooBar
+fooBaz
+FooBaz
+Bazfoo
+BazFoo
+BazBoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568.aff
@@ -0,0 +1,7 @@
+# Sant'Elia -> SANT'ELIA (Italian)
+# OpenOffice.org Issue 68658
+
+PFX a Y 1
+PFX a 0 Sant' E
+
+WORDCHARS '
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568.dic
@@ -0,0 +1,2 @@
+1
+Elia/a
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568.wrong
@@ -0,0 +1,5 @@
+sant'elia
+sant'Elia
+Sant'elia
+Sant'
+SANT'
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568utf.aff
@@ -0,0 +1,8 @@
+# Sant'Elia -> SANT'ELIA (Italian)
+# OpenOffice.org Issue 68658
+SET UTF-8
+
+PFX a Y 1
+PFX a 0 Foó' B
+
+WORDCHARS '
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568utf.dic
@@ -0,0 +1,2 @@
+1
+Bár/a
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568utf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/i68568utf.wrong
@@ -0,0 +1,5 @@
+foó'bár
+foó'Bár
+Foó'bár
+foó'
+FOÓ'
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/iconv.aff
@@ -0,0 +1,10 @@
+# input conversion (accept comma acuted letters also with cedilla,
+# as de facto replacement of the Romanian standard)
+SET UTF-8
+
+ICONV 4
+ICONV ş ș
+ICONV ţ ț
+ICONV Ş Ș
+ICONV Ţ Ț
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/iconv.dic
@@ -0,0 +1,5 @@
+4
+Chișinău
+Țepes

new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/iconv.good
@@ -0,0 +1,6 @@
+Chișinău
+Chişinău
+Țepes
+Ţepes

new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/iconv.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignore.aff
@@ -0,0 +1,5 @@
+# ignore characters in words (for Arabic Harakat or Hebrew niqqud)
+IGNORE aeiou
+
+PFX A Y 1
+PFX A 0 re .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignore.dic
@@ -0,0 +1,3 @@
+2
+xmpl
+expression/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignore.good
@@ -0,0 +1,6 @@
+example
+expression
+xmpl
+xprssn
+reexpression
+rxprssn
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignore.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignoreutf.aff
@@ -0,0 +1,6 @@
+# Arabic test for feature ignoring diacritics
+SET UTF-8
+# Arabic diacritics (harakat):
+# sukun, shadda, kasra, damma, fatha, kasratan, dammantan, fathatan (left to right)
+IGNORE ًٌٍَُِّْ
+WORDCHARS ًٌٍَُِّْ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignoreutf.dic
@@ -0,0 +1,10 @@
+9
+طِير
+فَتحة
+ضُمة
+كِسرة
+فتحًتان
+ضمتانٌ
+كسرتاٍن
+شدّة
+سكوْن
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignoreutf.good
@@ -0,0 +1,9 @@
+طير	
+فتحة	
+ضمة	
+كسرة	
+فتحتان	
+ضمتان	
+كسرتان	
+شدة	
+سكون	
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ignoreutf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.aff
@@ -0,0 +1,3 @@
+# keep case in signed words
+KEEPCASE A
+WORDCHARS .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.dic
@@ -0,0 +1,5 @@
+4
+foo/A
+Bar/A
+baz./A
+Quux./A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.good
@@ -0,0 +1,4 @@
+foo
+Bar
+baz.
+Quux.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.sug
@@ -0,0 +1,8 @@
+foo
+foo
+Bar
+Bar
+baz.
+baz.
+Quux.
+Quux.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/keepcase.wrong
@@ -0,0 +1,8 @@
+Foo
+FOO
+BAR
+bar
+Baz.
+BAZ.
+quux.
+QUUX.
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/korean.aff
@@ -0,0 +1,1 @@
+SET UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/korean.dic
@@ -0,0 +1,3 @@
+2
+들어오세요
+안녕하세요
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/korean.good
@@ -0,0 +1,2 @@
+들어오세요
+안녕하세요
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/korean.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i UTF-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/korean.wrong
@@ -0,0 +1,1 @@
+들어오세
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/map.aff
@@ -0,0 +1,9 @@
+# With MAP suggestion, Hunspell can add missing accents to a word.
+
+# switch off ngram suggestion for testing
+MAXNGRAMSUGS 0
+
+MAP 3
+MAP u
+MAP o
+MAP (ss)
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/map.dic
@@ -0,0 +1,4 @@
+3
+Frhstck
+tkrfr
+gro
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/map.sug
@@ -0,0 +1,3 @@
+Frhstck
+tkrfr
+gro
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/map.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/map.wrong
@@ -0,0 +1,3 @@
+Fruhstuck
+tukorfuro
+gross
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/maputf.aff
@@ -0,0 +1,11 @@
+# With MAP suggestion, Hunspell can add missing accents to a word.
+
+SET UTF-8
+
+# switch off ngram suggestion for testing
+MAXNGRAMSUGS 0
+
+MAP 3
+MAP uúü
+MAP öóo
+MAP ß(ss)
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/maputf.dic
@@ -0,0 +1,4 @@
+3
+Frühstück
+tükörfúró
+groß
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/maputf.sug
@@ -0,0 +1,3 @@
+Frühstück
+tükörfúró
+groß
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/maputf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/maputf.wrong
@@ -0,0 +1,3 @@
+Fruhstuck
+tukorfuro
+gross
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/morph.aff
@@ -0,0 +1,12 @@
+# example for morphological analysis, stemming and generation
+PFX P Y 1
+PFX P   0 un . dp:pfx_un sp:un
+
+SFX S Y 1
+SFX S   0 s . is:plur
+
+SFX Q Y 1
+SFX Q   0 s . is:sg_3
+
+SFX R Y 1
+SFX R   0 able/PS . ds:der_able
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/morph.dic
@@ -0,0 +1,10 @@
+9
+drink/S	po:noun
+drink/RQ	po:verb	al:drank	al:drunk	ts:present
+drank	po:verb	st:drink	is:past_1
+drunk	po:verb	st:drink	is:past_2
+eat/RQ	po:verb	al:ate	al:eaten	ts:present
+ate	po:verb	st:eat	is:past_1
+eaten	po:verb	st:eat	is:past_2
+phenomenon	po:noun	al:phenomena
+phenomena	po:noun st:phenomenon	is:plur
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/morph.good
@@ -0,0 +1,26 @@
+drink
+drinks
+drinkable
+drinkables
+undrinkable
+undrinkables
+drank
+drunk
+phenomenon
+phenomena
+drink eat
+drink eats
+drink ate
+drink eaten
+drink eatable
+drink eatables
+drink phenomena
+drinks eat
+drinks eats
+drinks ate
+drinks eaten
+drinks eatable
+drinks eatables
+drinks phenomena
+undrinkable phenomena
+phenomenon drinks
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/morph.morph
@@ -0,0 +1,48 @@
+> drink
+analyze(drink) =  st:drink po:noun
+analyze(drink) =  st:drink po:verb	al:drank	al:drunk	ts:present
+stem(drink) = drink
+> drinks
+analyze(drinks) =  st:drink po:verb	al:drank	al:drunk	ts:present is:sg_3
+analyze(drinks) =  st:drink po:noun is:plur
+stem(drinks) = drink
+> drinkable
+analyze(drinkable) =  st:drink po:verb	al:drank	al:drunk	ts:present ds:der_able
+stem(drinkable) = drinkable
+> drinkables
+analyze(drinkables) =  st:drink po:verb	al:drank	al:drunk	ts:present ds:der_able is:plur
+stem(drinkables) = drinkable
+> undrinkable
+analyze(undrinkable) = dp:pfx_un sp:un  st:drink po:verb	al:drank	al:drunk	ts:present ds:der_able
+stem(undrinkable) = undrinkable
+> undrinkables
+analyze(undrinkables) = dp:pfx_un sp:un  st:drink po:verb	al:drank	al:drunk	ts:present ds:der_able is:plur
+stem(undrinkables) = undrinkable
+> drank
+analyze(drank) =  po:verb	st:drink	is:past_1
+stem(drank) = drink
+> drunk
+analyze(drunk) =  po:verb	st:drink	is:past_2
+stem(drunk) = drink
+> phenomenon
+analyze(phenomenon) =  st:phenomenon po:noun	al:phenomena
+stem(phenomenon) = phenomenon
+> phenomena
+analyze(phenomena) =  po:noun st:phenomenon	is:plur
+stem(phenomena) = phenomenon
+generate(drink, eat) = drink
+generate(drink, eats) = drinks
+generate(drink, ate) = drank
+generate(drink, eaten) = drunk
+generate(drink, eatable) = drinkable
+generate(drink, eatables) = drinkables
+generate(drink, phenomena) = drinks
+generate(drinks, eat) = drink
+generate(drinks, eats) = drinks
+generate(drinks, ate) = drank
+generate(drinks, eaten) = drunk
+generate(drinks, eatable) = drinkable
+generate(drinks, eatables) = drinkables
+generate(drinks, phenomena) = drinks
+generate(undrinkable, phenomena) = undrinkables
+generate(phenomenon, drinks) = phenomena
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/morph.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix.aff
@@ -0,0 +1,5 @@
+NEEDAFFIX X
+COMPOUNDFLAG Y
+
+SFX A Y 1
+SFX A 0 s/Y .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix.dic
@@ -0,0 +1,3 @@
+2
+foo/YXA
+bar/Y
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix.good
@@ -0,0 +1,3 @@
+bar
+foos
+barfoos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix.wrong
@@ -0,0 +1,1 @@
+foo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix2.aff
@@ -0,0 +1,2 @@
+NEEDAFFIX X
+COMPOUNDFLAG Y
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix2.dic
@@ -0,0 +1,5 @@
+4
+foo	st:foo id:1
+foo/YX	st:foo id:2
+foo/Y	st:foo id:3
+bar/Y
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix2.good
@@ -0,0 +1,5 @@
+foo
+bar
+foobar
+barfoo
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix2.morph
@@ -0,0 +1,13 @@
+> foo
+analyze(foo) =  st:foo id:1
+analyze(foo) =  st:foo id:3
+stem(foo) = foo
+> bar
+analyze(bar) =  st:bar
+stem(bar) = bar
+> foobar
+analyze(foobar) =  pa:foo st:foo id:3 pa:bar
+stem(foobar) = foo
+> barfoo
+analyze(barfoo) =  pa:bar st:bar pa:foo st:foo id:3
+stem(barfoo) = barfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix3.aff
@@ -0,0 +1,8 @@
+# neeadaffix on affixes
+NEEDAFFIX X
+
+SFX A Y 1
+SFX A 0 s/XB .
+
+SFX B Y 1
+SFX B 0 baz .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix3.dic
@@ -0,0 +1,2 @@
+2
+foo/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix3.good
@@ -0,0 +1,2 @@
+foo
+foosbaz
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix3.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix3.wrong
@@ -0,0 +1,1 @@
+foos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix4.aff
@@ -0,0 +1,2 @@
+NEEDAFFIX X
+COMPOUNDFLAG Y
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix4.dic
@@ -0,0 +1,5 @@
+4
+foo/X	[1]
+foo/Y	[2]
+foo/YX	[3]
+bar/Y	[4]
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix4.good
@@ -0,0 +1,5 @@
+foo
+bar
+foobar
+barfoo
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix4.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix5.aff
@@ -0,0 +1,13 @@
+# on affixes
+NEEDAFFIX X
+
+SFX A Y 2
+SFX A 0 suf/B .
+SFX A 0 pseudosuf/XB .
+
+SFX B Y 1
+SFX B 0 bar .
+
+PFX C Y 2
+PFX C 0 pre .
+PFX C 0 pseudopre/X .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix5.dic
@@ -0,0 +1,2 @@
+1
+foo/AC
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix5.good
@@ -0,0 +1,11 @@
+foo
+prefoo
+foosuf
+prefoosuf
+foosufbar
+prefoosufbar
+pseudoprefoosuf
+pseudoprefoosufbar
+pseudoprefoopseudosufbar
+prefoopseudosuf
+prefoopseudosufbar
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix5.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/needaffix5.wrong
@@ -0,0 +1,3 @@
+pseudoprefoo
+foopseudosuf
+pseudoprefoopseudosuf
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.aff
@@ -0,0 +1,21 @@
+# Test fix of suffixed ngram suggestions with UTF-8 encoding and long flags.
+# Based on Vitaly Piryatinsky's bug report and example.
+SET UTF-8
+FLAG num
+
+PFX 101 Y 1
+PFX 101 0 пред .
+
+SFX 1381 Y 1
+SFX 1381 0 о .
+
+SFX 2000 Y 3
+SFX 2000 0 ам .
+SFX 2000 0 ами .
+SFX 2000 0 ах .
+
+SFX 2022 Y 4
+SFX 2022 0 а .
+SFX 2022 0 у .
+SFX 2022 0 ом .
+SFX 2022 0 е .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.dic
@@ -0,0 +1,2 @@
+1
+человек/2022,2000,101
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.good
@@ -0,0 +1,1 @@
+человек
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.sug
@@ -0,0 +1,2 @@
+человек
+человек
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/ngram_utf_fix.wrong
@@ -0,0 +1,2 @@
+времячко
+человеко
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/nosuggest.aff
@@ -0,0 +1,5 @@
+# don't suggest word with NOSUGGEST flag (for example vulgar or obscene words)
+# See OpenOffice.org Issue #55498
+# (nosuggest.sug is an empty file)
+NOSUGGEST A
+COMPOUNDFLAG B
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/nosuggest.dic
@@ -0,0 +1,3 @@
+1
+foo/AB
+bar/B
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/nosuggest.good
@@ -0,0 +1,3 @@
+foo
+foobar
+barfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/nosuggest.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/nosuggest.wrong
@@ -0,0 +1,3 @@
+foox
+foobarx
+barfoox
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.aff
@@ -0,0 +1,12 @@
+# output conversion 
+SET UTF-8
+
+OCONV 7
+OCONV a A
+OCONV á Á
+OCONV b B
+OCONV c C
+OCONV d D
+OCONV e E
+OCONV é É
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.dic
@@ -0,0 +1,4 @@
+3
+bébé
+dádá
+aábcdeé
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.good
@@ -0,0 +1,2 @@
+bébé
+dádá
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.sug
@@ -0,0 +1,3 @@
+BÉBÉ
+DÁDÁ
+AÁBCDEÉ
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/oconv.wrong
@@ -0,0 +1,3 @@
+béb
+dád
+aábcde
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound.aff
@@ -0,0 +1,5 @@
+# words only in compounds (see also fogemorpheme example)
+ONLYINCOMPOUND O
+COMPOUNDFLAG A
+SFX B Y 1
+SFX B 0 s .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound.dic
@@ -0,0 +1,3 @@
+2
+foo/A
+pseudo/OAB
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound.good
@@ -0,0 +1,4 @@
+foo
+pseudofoo
+foopseudo
+foopseudos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound.wrong
@@ -0,0 +1,2 @@
+pseudo
+pseudos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound2.aff
@@ -0,0 +1,12 @@
+# affixes only in compounds (see also fogemorpheme example)
+ONLYINCOMPOUND O
+COMPOUNDFLAG A
+COMPOUNDPERMITFLAG P
+
+SFX B Y 1
+SFX B 0 s/OP .
+
+# obligate fogemorpheme by forbidding the stem (0) in compounds
+
+CHECKCOMPOUNDPATTERN 1
+CHECKCOMPOUNDPATTERN 0/B /A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound2.dic
@@ -0,0 +1,3 @@
+2
+foo/A
+pseudo/AB
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound2.good
@@ -0,0 +1,3 @@
+foo
+foopseudo
+pseudosfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/onlyincompound2.wrong
@@ -0,0 +1,3 @@
+pseudos
+foopseudos
+pseudofoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat.aff
@@ -0,0 +1,13 @@
+FLAG long
+COMPOUNDBEGIN Ca
+COMPOUNDMIDDLE Cb
+COMPOUNDEND Cc
+COMPOUNDPERMITFLAG Cp
+ONLYINCOMPOUND Cx
+
+CHECKCOMPOUNDPATTERN 1
+CHECKCOMPOUNDPATTERN /Ch /Xs
+
+SFX Ch Y 2
+SFX Ch 0 s/CaCbCxCp .
+SFX Ch 0 s-/CaCbCcCp .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat.dic
@@ -0,0 +1,4 @@
+3
+schoonheid/Ch
+port/CcXs
+sport/Cc
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat.good
@@ -0,0 +1,1 @@
+schoonheidssport
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat.wrong
@@ -0,0 +1,1 @@
+schoonheidsport
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat2.aff
@@ -0,0 +1,27 @@
+# Test file based on OpenTaal's Dutch dictionary, coded by Ruud Baars
+
+WORDCHARS -
+NOSPLITSUGS
+FLAG long
+
+COMPOUNDBEGIN Ca
+COMPOUNDMIDDLE Cb
+COMPOUNDEND Cc
+COMPOUNDPERMITFLAG Cp
+ONLYINCOMPOUND Cx
+
+CHECKCOMPOUNDPATTERN 2
+CHECKCOMPOUNDPATTERN 0/Ch /Xs
+CHECKCOMPOUNDPATTERN 0/Xm /Xm
+
+SFX CA Y 2
+SFX CA 0 /CaCp .
+SFX CA 0 -/CaCp	.
+
+SFX CB Y 2
+SFX CB 0 /CbCp .
+SFX CB 0 -/CbCp	.
+
+SFX Ch Y 2
+SFX Ch 0 s/CaCbCxCp .
+SFX Ch 0 s-/CaCbCcCp .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat2.dic
@@ -0,0 +1,4 @@
+100
+test/CACBCc
+zout/CACBXm
+suiker/CACBXm
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat2.good
@@ -0,0 +1,1 @@
+zout-suikertest
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_cpdpat2.wrong
@@ -0,0 +1,1 @@
+zoutsuikertest
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.aff
@@ -0,0 +1,9 @@
+TRY r
+
+FORBIDDENWORD F
+COMPOUNDRULE 2
+COMPOUNDRULE WW
+COMPOUNDRULE WWW
+
+SFX S Y 1
+SFX S 0 s .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.dic
@@ -0,0 +1,5 @@
+4
+foo/W
+word/W
+bar/WS
+foowordbar/FS
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.good
@@ -0,0 +1,3 @@
+fooword
+wordbar
+barwordfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.sug
@@ -0,0 +1,1 @@
+barwordfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword1.wrong
@@ -0,0 +1,5 @@
+foowordbar
+foowordbars
+foowordba
+foowordbas
+barwodfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.aff
@@ -0,0 +1,7 @@
+TRY r
+
+FORBIDDENWORD F
+COMPOUNDFLAG W
+
+SFX S Y 1
+SFX S 0 s .
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.dic
@@ -0,0 +1,5 @@
+3
+foo/WS
+word/W
+bar/WS
+foowordbar/FS
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.good
@@ -0,0 +1,4 @@
+fooword
+wordbar
+barwordfoo
+barwordfoos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.sug
@@ -0,0 +1,1 @@
+barwordfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_forbiddenword2.wrong
@@ -0,0 +1,5 @@
+foowordbar
+foowordbars
+foowordba
+foowordbas
+barwodfoo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.aff
@@ -0,0 +1,8 @@
+KEEPCASE K
+COMPOUNDBEGIN B
+COMPOUNDEND E
+COMPOUNDFLAG C
+COMPOUNDMIN 1
+WORDCHARS -
+BREAK 1
+BREAK #
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.dic
@@ -0,0 +1,7 @@
+5
+tv-/KB
+-tv/KE
+word/C
+NATO-/B
+-NATO/E
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.good
@@ -0,0 +1,4 @@
+tv-word
+word-tv
+NATO-word
+word-NATO
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.sug
@@ -0,0 +1,8 @@
+Tv-word, Tv- word, Word
+Tv- word, Word
+word -tv, word-tv, word
+word -tv, word-tv, word
+wordword-tv, word
+Tv-word-tv
+NATO-
+-NATO
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/opentaal_keepcase.wrong
@@ -0,0 +1,8 @@
+TV-word
+Tv-word
+word-TV
+word-Tv
+wordword-TV
+TV-word-TV
+Nato-word
+word-nato
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/phone.aff
@@ -0,0 +1,255 @@
+# phonetic suggestions by PHONE and optional ph field of dictionary words
+# Documentationo of PHONE: http://aspell.net/man-html/Phonetic-Code.html
+
+#   phonetic_english.h - phonetic transformation rules for use with phonetic.c
+#   Copyright (C) 2000 Björn Jacke
+#
+#   This rule set is based on Lawrence Phillips original metaphone 
+#   algorithm with modifications made by Michael Kuhn in his
+#   C implantation, more modifications by Björn Jacke when
+#   converting the algorithm to a rule set and minor 
+#   touch ups by Kevin Atkinson
+#
+#   This library is free software; you can redistribute it and/or
+#   modify it under the terms of the GNU Lesser General Public
+#   License version 2.1 as published by the Free Software Foundation;
+#
+#   This library is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#   Lesser General Public License for more details.
+#
+#   You should have received a copy of the GNU Lesser General Public
+#   License along with this library; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#   Björn Jacke may be reached by email at bjoern.jacke@gmx.de
+#
+#   Changelog:
+#
+#   2000-01-05  Björn Jacke <bjoern.jacke@gmx.de>
+#               - first version with translation rules derived from
+#                 metaphone.cc distributed with aspell 0.28.3
+#               - "TH" is now representated as "@" because "0" is a
+#                 meta character
+#               - removed TH(!vowel) --> T; always use TH --> # instead
+#               - dropped "^AE" -> "E" (redundant)
+#               - "ing" is transformed to "N", not "NK"
+#               - "SCH(EO)" transforms to "SK" now
+#               - added R --> SILENT if (after a vowel) and no (vowel or
+#                 "y" follows) like in "Marcy" or "abort"
+#               - H is SILENT in RH at beginning of words
+#               - H is SILENT if vowel leads and "Y" follows
+#               - some ".OUGH.."  --> ...F exceptions added
+#               - "^V" transforms to "W"
+#   2000-01-07  Kevin Atkinson <kevinatk@home.com>
+#               Converted from header to data file.
+#
+#   2007-08-23  László Németh <nemeth AT OOo>
+#               Add PHONE header and PHONE keywords
+#
+# version 1.1
+
+PHONE 105
+PHONE AH(AEIOUY)-^         *H
+PHONE AR(AEIOUY)-^         *R
+PHONE A(HR)^               *
+PHONE A^                   *
+PHONE AH(AEIOUY)-          H
+PHONE AR(AEIOUY)-          R
+PHONE A(HR)                _
+PHONE BB-                  _
+PHONE B                    B
+PHONE CQ-                  _
+PHONE CIA                  X
+PHONE CH                   X
+PHONE C(EIY)-              S
+PHONE CK                   K
+PHONE COUGH^               KF
+PHONE CC<                  C
+PHONE C                    K
+PHONE DG(EIY)              K
+PHONE DD-                  _
+PHONE D                    T
+PHONE <                   E
+PHONE EH(AEIOUY)-^         *H
+PHONE ER(AEIOUY)-^         *R
+PHONE E(HR)^               *
+PHONE ENOUGH^$             *NF
+PHONE E^                   *
+PHONE EH(AEIOUY)-          H
+PHONE ER(AEIOUY)-          R
+PHONE E(HR)                _
+PHONE FF-                  _
+PHONE F                    F
+PHONE GN^                  N
+PHONE GN$                  N
+PHONE GNS$                 NS
+PHONE GNED$                N
+PHONE GH(AEIOUY)-          K
+PHONE GH                   _
+PHONE GG9                  K
+PHONE G                    K
+PHONE H                    H
+PHONE IH(AEIOUY)-^         *H
+PHONE IR(AEIOUY)-^         *R
+PHONE I(HR)^               *
+PHONE I^                   *
+PHONE ING6                 N
+PHONE IH(AEIOUY)-          H
+PHONE IR(AEIOUY)-          R
+PHONE I(HR)                _
+PHONE J                    K
+PHONE KN^                  N
+PHONE KK-                  _
+PHONE K                    K
+PHONE LAUGH^               LF
+PHONE LL-                  _
+PHONE L                    L
+PHONE MB$                  M
+PHONE MM                   M
+PHONE M                    M
+PHONE NN-                  _
+PHONE N                    N
+PHONE OH(AEIOUY)-^         *H
+PHONE OR(AEIOUY)-^         *R
+PHONE O(HR)^               *
+PHONE O^                   *
+PHONE OH(AEIOUY)-          H
+PHONE OR(AEIOUY)-          R
+PHONE O(HR)                _
+PHONE PH                   F
+PHONE PN^                  N
+PHONE PP-                  _
+PHONE P                    P
+PHONE Q                    K
+PHONE RH^                  R
+PHONE ROUGH^               RF
+PHONE RR-                  _
+PHONE R                    R
+PHONE SCH(EOU)-            SK
+PHONE SC(IEY)-             S
+PHONE SH                   X
+PHONE SI(AO)-              X
+PHONE SS-                  _
+PHONE S                    S
+PHONE TI(AO)-              X
+PHONE TH                   @
+PHONE TCH--                _
+PHONE TOUGH^               TF
+PHONE TT-                  _
+PHONE T                    T
+PHONE UH(AEIOUY)-^         *H
+PHONE UR(AEIOUY)-^         *R
+PHONE U(HR)^               *
+PHONE U^                   *
+PHONE UH(AEIOUY)-          H
+PHONE UR(AEIOUY)-          R
+PHONE U(HR)                _
+PHONE V^                   W
+PHONE V                    F
+PHONE WR^                  R
+PHONE WH^                  W
+PHONE W(AEIOU)-            W
+PHONE X^                   S
+PHONE X                    KS
+PHONE Y(AEIOU)-            Y
+PHONE ZZ-                  _
+PHONE Z                    S
+
+#The rules in a different view:
+#
+# Exceptions:
+#
+#  Beginning of word: "gn", "kn-", "pn-", "wr-"  ----> drop first letter
+#                     "Aebersold", "Gnagy", "Knuth", "Pniewski", "Wright"
+#
+#  Beginning of word: "x"                                ----> change to "s"
+#                                     as in "Deng Xiaopeng"
+#
+#  Beginning of word: "wh-"                              ----> change to "w"
+#                                     as in "Whalen"
+#  Beginning of word: leading vowels are transformed to "*"
+#
+#  "[crt]ough" and "enough" are handled separately because of "F" sound
+#
+#
+#  A --> A      at beginning
+#          _      otherwise
+#
+#  B --> B      unless at the end of word after "m", as in "dumb", "McComb"
+#
+#  C --> X      (sh) if "-cia-" or "-ch-"
+#          S      if "-ci-", "-ce-", or "-cy-"
+#                 SILENT if "-sci-", "-sce-", or "-scy-", or "-cq-"
+#          K      otherwise, including in "-sch-"
+#
+#  D --> K      if in "-dge-", "-dgy-", or "-dgi-"
+#          T      otherwise
+#
+#  E --> A      at beginnig
+#          _      SILENT otherwise
+#  
+#  F --> F
+#
+#  G -->        SILENT if in "-gh-" and not at end or before a vowel
+#                            in "-gn" or "-gned" or "-gns"
+#                           in "-dge-" etc., as in above rule
+#          K      if before "i", or "e", or "y" if not double "gg"
+#
+#          K      otherwise (incl. "GG"!)
+#
+#  H -->        SILENT if after vowel and no vowel or "Y" follows
+#                        or after "-ch-", "-sh-", "-ph-", "-th-", "-gh-"
+#                        or after "rh-" at beginning
+#          H      otherwise
+#
+#  I --> A      at beginning
+#          _      SILENT otherwise
+#
+#  J --> K
+#
+#  K -->        SILENT if after "c"
+#          K      otherwise
+#
+#  L --> L
+#
+#  M --> M
+#  
+#  N --> N
+#
+#  O --> A      at beginning
+#          _      SILENT otherwise
+#
+#  P --> F      if before "h"
+#          P      otherwise
+#
+#  Q --> K
+#
+#  R -->        SILENT if after vowel and no vowel or "Y" follows
+#          R      otherwise
+#
+#  S --> X      (sh) if before "h" or in "-sio-" or "-sia-"
+#          SK     if followed by "ch(eo)" (SCH(EO))
+#          S      otherwise
+#
+#  T --> X      (sh) if "-tia-" or "-tio-"
+#          0      (th) if before "h"
+#                 silent if in "-tch-"
+#          T      otherwise
+#
+#  U --> A      at beginning
+#          _      SILENT otherwise
+#
+#  V --> V      if first letter of word
+#          F      otherwise
+#
+#  W -->        SILENT if not followed by a vowel
+#          W      if followed by a vowel
+#
+#  X --> KS
+#
+#  Y -->        SILENT if not followed by a vowel
+#          Y      if followed by a vowel
+# 
+#  Z --> S
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/phone.dic
@@ -0,0 +1,11 @@
+10
+Brasilia
+brassily
+Brazilian
+brilliance
+brilliancy
+brilliant
+brain
+brass
+Churchillian
+xxxxxxxxxx	ph:Brasilia
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/phone.sug
@@ -0,0 +1,1 @@
+Brasilia, Xxxxxxxxxx, Brilliant, Brazilian, Brassily, Brilliance
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/phone.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/phone.wrong
@@ -0,0 +1,1 @@
+Brasillian
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/rep.aff
@@ -0,0 +1,21 @@
+# With REP suggestions, we can fix typical language specific misspellings.
+
+# switch off ngram suggestion for testing
+MAXNGRAMSUGS 0
+
+REP 8
+REP f ph
+REP ph f
+REP shun$ tion
+REP ^alot$ a_lot  # add the highest priority for "a lot" suggestion to "alot"
+REP ^foo$ bar
+REP ' _    # "un'alunno" -> "un alunno"
+REP ^vinten$ vinte_e_un
+REP s 's
+
+
+SFX A Y 1
+SFX A 0 's .
+
+
+WORDCHARS '
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/rep.dic
@@ -0,0 +1,15 @@
+10
+form
+phantom
+vacation
+vacations
+a
+lot
+un
+alunno
+bar
+barbars
+vinte
+e
+un
+auto/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/rep.sug
@@ -0,0 +1,8 @@
+form
+phantom
+vacation
+a lot, lot
+un alunno
+bar
+vinte e un
+auto's, auto
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/rep.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i ISO8859-1
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/rep.wrong
@@ -0,0 +1,11 @@
+phorm
+fantom
+vacashun
+vacashuns
+alot
+un'alunno
+foo
+foobars
+barfoos
+vinten
+autos
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/reputf.aff
@@ -0,0 +1,9 @@
+# With REP suggestions, we can fix typical language specific misspellings.
+
+SET UTF-8
+
+# switch off ngram suggestion for testing
+MAXNGRAMSUGS 0
+
+REP 1
+REP oo őő
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/reputf.dic
@@ -0,0 +1,2 @@
+1
+főő
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/reputf.sug
@@ -0,0 +1,1 @@
+főő
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/reputf.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME -i utf-8
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/reputf.wrong
@@ -0,0 +1,1 @@
+foo
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/simplifiedtriple.aff
@@ -0,0 +1,8 @@
+# Forbid compound word with triple letters
+CHECKCOMPOUNDTRIPLE
+# Allow simplified forms
+SIMPLIFIEDTRIPLE
+
+COMPOUNDMIN 2
+
+COMPOUNDFLAG A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/simplifiedtriple.dic
@@ -0,0 +1,3 @@
+2
+glass/A
+sko/A
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/simplifiedtriple.good
@@ -0,0 +1,3 @@
+glass
+sko
+glassko
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/simplifiedtriple.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/simplifiedtriple.wrong
@@ -0,0 +1,1 @@
+glasssko
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/slash.aff
@@ -0,0 +1,4 @@
+# slashes in words (\/)
+
+# (only for tokenization)
+WORDCHARS /:
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/slash.dic
@@ -0,0 +1,5 @@
+4
+/
+1\/2
+http:\/\/
+\/usr\/share\/myspell\/
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/slash.good
@@ -0,0 +1,4 @@
+/
+1/2
+http://
+/usr/share/myspell/
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/slash.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/sug.aff
@@ -0,0 +1,15 @@
+# new suggestion methods of Hunspell 1.5:
+# capitalization: nasa -> NASA
+# long swap: permenant -> permanent
+# long mov: Ghandi -> Gandhi
+# double two characters: vacacation -> vacation
+# space with REP: "alot" -> "a lot" ("a lot" need to be in the dic file.)
+
+# switch off ngram suggestion for testing
+MAXNGRAMSUGS 0
+REP 1
+REP alot a_lot
+KEY qwertzuiop|asdfghjkl|yxcvbnm|aq
+WORDCHARS .
+FORBIDDENWORD ?
+
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/sug.dic
@@ -0,0 +1,11 @@
+1
+NASA
+Gandhi
+grateful
+permanent
+vacation
+a
+lot
+have
+which
+McDonald
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/sug.sug
@@ -0,0 +1,12 @@
+NASA
+Gandhi
+grateful
+permanent
+vacation
+a lot, lot
+permanent. Vacation
+have
+which
+Gandhi
+McDonald
+permanent
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/sug.test
@@ -0,0 +1,4 @@
+#!/bin/sh
+DIR="`dirname $0`"
+NAME="`basename $0 .test`"
+$DIR/test.sh $NAME
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/sug.wrong
@@ -0,0 +1,12 @@
+nasa
+Ghandi
+greatful
+permenant
+vacacation
+alot
+permanent.Vacation
+ahev
+hwihc
+GAndhi
+Mcdonald
+permqnent
new file mode 100644
--- /dev/null
+++ b/extensions/spellcheck/hunspell/tests/suggestiontest/List_of_common_misspellings.txt
@@ -0,0 +1,4020 @@
+# source: http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
+abandonned	abandoned
+aberation	aberration
+abilties	abilities
+abilty	ability
+abondon	abandon
+abondoned	abandoned
+abondoning	abandoning
+abondons	abandons
+aborigene	aborigine
+abortificant	abortifacient
+abreviated	abbreviated
+abreviation	abbreviation
+abritrary	arbitrary
+absense	absence
+absolutly	absolutely
+absorbsion	absorption
+absorbtion	absorption
+abundacies	abundances
+abundancies	abundances
+abundunt	abundant
+abutts	abuts
+acadamy	academy
+acadmic	academic
+accademic	academic
+accademy	academy
+acccused	accused
+accelleration	acceleration
+accension	accession, ascension
+acceptence	acceptance
+acceptible	acceptable
+accessable	accessible
+accidentaly	accidentally
+accidently	accidentally
+acclimitization	acclimatization
+acommodate	accommodate
+accomadate	accommodate
+accomadated	accommodated
+accomadates	accommodates
+accomadating	accommodating
+accomadation	accommodation
+accomadations	accommodations
+accomdate	accommodate
+accomodate	accommodate
+accomodated	accommodated
+accomodates	accommodates
+accomodating	accommodating
+accomodation	accommodation
+accomodations	accommodations
+accompanyed	accompanied
+accordeon	accordion
+accordian	accordion
+accoring	according
+accoustic	acoustic
+accquainted	acquainted
+accross	across
+accussed	accused
+acedemic	academic
+acheive	achieve
+acheived	achieved
+acheivement	achievement
+acheivements	achievements
+acheives	achieves
+acheiving	achieving
+acheivment	achievement
+acheivments	achievements
+achievment	achievement
+achievments	achievements
+achive	achieve, archive
+achived	achieved, archived
+achivement	achievement
+achivements	achievements
+acknowldeged	acknowledged
+acknowledgeing	acknowledging
+ackward	awkward, backward
+acomplish	accomplish
+acomplished	accomplished
+acomplishment	accomplishment
+acomplishments	accomplishments
+acording	according
+acordingly	accordingly
+acquaintence	acquaintance
+acquaintences	acquaintances
+acquiantence	acquaintance
+acquiantences	acquaintances
+acquited	acquitted
+activites	activities
+activly	actively
+actualy	actually
+acuracy	accuracy
+acused	accused
+acustom	accustom
+acustommed	accustomed
+adavanced	advanced
+adbandon	abandon
+additinally	additionally
+additionaly	additionally
+addmission	admission
+addopt	adopt
+addopted	adopted
+addoptive	adoptive
+addres	address, adders
+addresable	addressable
+addresed	addressed
+addresing	addressing
+addressess	addresses
+addtion	addition
+addtional	additional
+adecuate	adequate
+adhearing	adhering
+adherance	adherence
+admendment	amendment
+admininistrative	administrative
+adminstered	administered
+adminstrate	administrate
+adminstration	administration
+adminstrative	administrative
+adminstrator	administrator
+admissability	admissibility
+admissable	admissible
+admited	admitted
+admitedly	admittedly
+adn	and
+adolecent	adolescent
+adquire	acquire
+adquired	acquired
+adquires	acquires
+adquiring	acquiring
+adres	address
+adresable	addressable
+adresing	addressing
+adress	address
+adressable	addressable
+adressed	addressed
+adressing	addressing, dressing
+adventrous	adventurous
+advertisment	advertisement
+advertisments	advertisements
+advesary	adversary
+adviced	advised
+aeriel	aerial
+aeriels	aerials
+afair	affair
+afficianados	aficionados
+afficionado	aficionado
+afficionados	aficionados
+affilate	affiliate
+affilliate	affiliate
+affort	afford, effort
+aforememtioned	aforementioned
+againnst	against
+agains	against
+agaisnt	against
+aganist	against
+aggaravates	aggravates
+aggreed	agreed
+aggreement	agreement
+aggregious	egregious
+aggresive	aggressive
+agian	again
+agianst	against
+agin	again
+agina	again, angina
+aginst	against
+agravate	aggravate
+agre	agree
+agred	agreed
+agreeement	agreement
+agreemnt	agreement
+agregate	aggregate
+agregates	aggregates
+agreing	agreeing
+agression	aggression
+agressive	aggressive
+agressively	aggressively
+agressor	aggressor
+agricuture	agriculture
+agrieved	aggrieved
+ahev	have
+ahppen	happen
+ahve	have
+aicraft	aircraft
+aiport	airport
+airbourne	airborne
+aircaft	aircraft
+aircrafts	aircraft
+airporta	airports
+airrcraft	aircraft
+aisian	asian
+albiet	albeit
+alchohol	alcohol
+alchoholic	alcoholic
+alchol	alcohol
+alcholic	alcoholic
+alcohal	alcohol
+alcoholical	alcoholic
+aledge	allege
+aledged	alleged
+aledges	alleges
+alege	allege
+aleged	alleged
+alegience	allegiance
+algebraical	algebraic
+algorhitms	algorithms
+algoritm	algorithm
+algoritms	algorithms
+alientating	alienating
+alledge	allege
+alledged	alleged
+alledgedly	allegedly
+alledges	alleges
+allegedely	allegedly
+allegedy	allegedly
+allegely	allegedly
+allegence	allegiance
+allegience	allegiance
+allign	align
+alligned	aligned
+alliviate	alleviate
+allopone	allophone
+allopones	allophones
+allready	already
+allthough	although
+alltime	all-time
+alltogether	altogether
+almsot	almost
+alochol	alcohol
+alomst	almost
+alot	a lot, allot
+alotted	allotted
+alowed	allowed
+alowing	allowing
+alreayd	already
+alse	else
+alsot	also
+alternitives	alternatives
+altho	although
+althought	although
+altough	although
+alusion	allusion, illusion
+alwasy	always
+alwyas	always
+amalgomated	amalgamated
+amatuer	amateur
+amature	armature, amateur
+amendmant	amendment
+amerliorate	ameliorate
+amke	make
+amking	making
+ammend	amend
+ammended	amended
+ammendment	amendment
+ammendments	amendments
+ammount	amount
+ammused	amused
+amoung	among
+amoungst	amongst
+amung	among
+analagous	analogous
+analitic	analytic
+analogeous	analogous
+anarchim	anarchism
+anarchistm	anarchism
+anbd	and
+ancestory	ancestry
+ancilliary	ancillary
+androgenous	androgynous
+androgeny	androgyny
+anihilation	annihilation
+aniversary	anniversary
+annoint	anoint
+annointed	anointed
+annointing	anointing
+annoints	anoints
+annouced	announced
+annualy	annually
+annuled	annulled
+anohter	another
+anomolies	anomalies
+anomolous	anomalous
+anomoly	anomaly
+anonimity	anonymity
+anounced	announced
+ansalisation	nasalisation
+ansalization	nasalization
+ansestors	ancestors
+antartic	antarctic
+anthromorphization	anthropomorphization
+anual	annual, anal
+anulled	annulled
+anwsered	answered
+anyhwere	anywhere
+anyother	any other
+anytying	anything
+aparent	apparent
+aparment	apartment
+apenines	apennines, Apennines
+aplication	application
+aplied	applied
+apolegetics	apologetics
+apon	upon, apron
+apparant	apparent
+apparantly	apparently
+appart	apart
+appartment	apartment
+appartments	apartments
+appealling	appealing, appalling
+appeareance	appearance
+appearence	appearance
+appearences	appearances
+appenines	apennines, Apennines
+apperance	appearance
+apperances	appearances
+applicaiton	application
+applicaitons	applications
+appologies	apologies
+appology	apology
+apprearance	appearance
+apprieciate	appreciate
+approachs	approaches
+appropiate	appropriate
+appropraite	appropriate
+appropropiate	appropriate
+approproximate	approximate
+approxamately	approximately
+approxiately	approximately
+approximitely	approximately
+aprehensive	apprehensive
+apropriate	appropriate
+aproximate	approximate
+aproximately	approximately
+aquaintance	acquaintance
+aquainted	acquainted
+aquiantance	acquaintance
+aquire	acquire
+aquired	acquired
+aquiring	acquiring
+aquisition	acquisition
+aquitted	acquitted
+aranged	arranged
+arangement	arrangement
+arbitarily	arbitrarily
+arbitary	arbitrary
+archaelogists	archaeologists
+archaelogy	archaeology
+archaoelogy	archeology, archaeology
+archaology	archeology, archaeology
+archeaologist	archeologist, archaeologist
+archeaologists	archeologists, archaeologists
+archetect	architect
+archetects	architects
+archetectural	architectural
+archetecturally	architecturally
+archetecture	architecture
+archiac	archaic
+archictect	architect
+archimedian	archimedean
+architechturally	architecturally
+architechture	architecture
+architechtures	architectures
+architectual	architectural
+archtype	archetype
+archtypes	archetypes
+aready	already
+areodynamics	aerodynamics
+argubly	arguably
+arguement	argument
+arguements	arguments
+arised	arose
+arival	arrival
+armamant	armament
+armistace	armistice
+aroud	around
+arrangment	arrangement
+arrangments	arrangements
+arround	around
+artical	article
+artice	article
+articel	article
+artifical	artificial
+artifically	artificially
+artillary	artillery
+arund	around
+asetic	ascetic
+asign	assign
+aslo	also
+asociated	associated
+asorbed	absorbed
+asphyxation	asphyxiation
+assasin	assassin
+assasinate	assassinate
+assasinated	assassinated
+assasinates	assassinates
+assasination	assassination
+assasinations	assassinations
+assasined	assassinated
+assasins	assassins
+assassintation	assassination
+assemple	assemble
+assertation	assertion
+asside	aside
+assisnate	assassinate
+assit	assist
+assitant	assistant
+assocation	association
+assoicate	associate
+assoicated	associated
+assoicates	associates
+assosication	assassination
+asssassans	assassins
+assualt	assault
+assualted	assaulted
+assymetric	asymmetric
+assymetrical	asymmetrical
+asteriod	asteroid
+asthetic	aesthetic
+asthetical	aesthetical
+asthetically	aesthetically
+asume	assume
+aswell	as well
+atain	attain
+atempting	attempting
+atheistical	atheistic
+athenean	athenian
+atheneans	athenians
+athiesm	atheism
+athiest	atheist
+atorney	attorney
+atribute	attribute
+atributed	attributed
+atributes	attributes
+attaindre	attainder, attained
+attemp	attempt
+attemped	attempted
+attemt	attempt
+attemted	attempted
+attemting	attempting
+attemts	attempts
+attendence	attendance
+attendent	attendant
+attendents	attendants
+attened	attended
+attension	attention
+attitide	attitude
+attributred	attributed
+attrocities	atrocities
+audeince	audience
+auromated	automated
+austrailia	Australia
+austrailian	Australian
+auther	author
+authobiographic	autobiographic
+authobiography	autobiography
+authorative	authoritative
+authorites	authorities
+authorithy	authority
+authoritiers	authorities
+authoritive	authoritative
+authrorities	authorities
+autochtonous	autochthonous
+autoctonous	autochthonous
+automaticly	automatically
+automibile	automobile
+automonomous	autonomous
+autor	author
+autority	authority
+auxilary	auxiliary
+auxillaries	auxiliaries
+auxillary	auxiliary
+auxilliaries	auxiliaries
+auxilliary	auxiliary
+availablity	availability
+availaible	available
+availble	available
+availiable	available
+availible	available
+avalable	available
+avalance	avalanche
+avaliable	available
+avation	aviation
+avengence	a vengeance
+averageed	averaged
+avilable	available
+awared	awarded
+awya	away
+baceause	because
+backgorund	background
+backrounds	backgrounds
+bakc	back
+banannas	bananas
+bandwith	bandwidth
+bankrupcy	bankruptcy
+banruptcy	bankruptcy
+baout	about, bout
+basicaly	basically
+basicly	basically
+bcak	back
+beachead	beachhead
+beacuse	because
+beastiality	bestiality
+beatiful	beautiful
+beaurocracy	bureaucracy
+beaurocratic	bureaucratic
+beautyfull	beautiful
+becamae	became
+becasue	because
+beccause	because
+becomeing	becoming
+becomming	becoming
+becouse	because
+becuase	because
+bedore	before
+befoer	before
+beggin	begin, begging
+begginer	beginner
+begginers	beginners
+beggining	beginning
+begginings	beginnings
+beggins	begins
+begining	beginning
+beginnig	beginning
+behavour	behavior, behaviour
+beleagured	beleaguered
+beleif	belief
+beleive	believe
+beleived	believed
+beleives	believes
+beleiving	believing
+beligum	belgium
+belive	believe
+belived	believed
+belives	believes, beliefs
+belligerant	belligerent
+bellweather	bellwether
+bemusemnt	bemusement
+beneficary	beneficiary
+beng	being
+benificial	beneficial
+benifit	benefit
+benifits	benefits
+bergamont	bergamot
+Bernouilli	Bernoulli
+beseige	besiege
+beseiged	besieged
+beseiging	besieging
+betwen	between
+beween	between
+bewteen	between
+bilateraly	bilaterally
+billingualism	bilingualism
+binominal	binomial
+bizzare	bizarre
+blaim	blame
+blaimed	blamed
+blessure	blessing
+Blitzkreig	Blitzkrieg
+boaut	bout, boat, about
+bodydbuilder	bodybuilder
+bombardement	bombardment
+bombarment	bombardment
+bondary	boundary
+Bonnano	Bonanno
+borke	broke
+boundry	boundary
+bouyancy	buoyancy
+bouyant	buoyant
+boyant	buoyant
+Brasillian	Brazilian
+breakthough	breakthrough
+breakthroughts	breakthroughs
+breif	brief
+breifly	briefly
+brethen	brethren
+bretheren	brethren
+briliant	brilliant
+brillant	brilliant
+brimestone	brimstone
+Britian	Britain
+Brittish	British
+broacasted	broadcast
+broadacasting	broadcasting
+broady	broadly
+Buddah	Buddha
+buisness	business
+buisnessman	businessman
+buoancy	buoyancy
+buring	burying, burning, burin, during
+burried	buried
+busineses	business, businesses
+busness	business
+bussiness	business
+cacuses	caucuses
+cahracters	characters
+calaber	caliber
+calander	calendar, calender, colander
+calculs	calculus
+calenders	calendars
+caligraphy	calligraphy
+caluclate	calculate
+caluclated	calculated
+caluculate	calculate
+caluculated	calculated
+calulate	calculate
+calulated	calculated
+Cambrige	Cambridge
+camoflage	camouflage
+campain	campaign
+campains	campaigns
+candadate	candidate
+candiate	candidate
+candidiate	candidate
+cannister	canister
+cannisters	canisters
+cannnot	cannot
+cannonical	canonical
+cannotation	connotation
+cannotations	connotations
+cant	cannot, can not, can't
+caost	coast
+caperbility	capability
+Capetown	Cape Town
+capible	capable
+captial	capital
+captued	captured
+capturd	captured
+carachter	character
+caracterized	characterized
+carcas	carcass, Caracas
+carefull	careful
+careing	caring
+carismatic	charismatic
+Carmalite	Carmelite
+carmel	caramel, carmel-by-the-sea
+carniverous	carnivorous
+carreer	career
+carrers	careers
+Carribbean	Caribbean
+Carribean	Caribbean
+cartdridge	cartridge
+Carthagian	Carthaginian
+carthographer	cartographer
+cartilege	cartilage
+cartilidge	cartilage
+cartrige	cartridge
+casette	cassette
+casion	caisson
+cassawory	cassowary
+cassowarry	cassowary
+casulaties	casualties
+casulaty	casualty
+catagories	categories
+catagorized	categorized
+catagory	category
+catergorize	categorize
+catergorized	categorized
+Cataline	Catiline, Catalina
+cathlic	catholic
+catholocism	catholicism
+catterpilar	caterpillar
+catterpilars	caterpillars
+cattleship	battleship
+causalities	casualties
+Ceasar	Caesar
+Celcius	Celsius
+cellpading	cellpadding
+cementary	cemetery
+cemetarey	cemetery
+cemetaries	cemeteries
+cemetary	cemetery
+cencus	census
+censur	censor, censure
+cententenial	centennial
+centruies	centuries
+centruy	century
+ceratin	certain, keratin
+cerimonial	ceremonial
+cerimonies	ceremonies
+cerimonious	ceremonious
+cerimony	ceremony
+ceromony	ceremony
+certainity	certainty
+certian	certain
+cervial	cervical, servile, serval
+chalenging	challenging
+challange	challenge
+challanged	challenged
+challege	challenge
+Champange	Champagne
+changable	changeable
+charachter	character
+charactor	character 
+charachters	characters
+charactersistic	characteristic
+charactors	characters
+charasmatic	charismatic
+charaterized	characterized
+chariman	chairman
+charistics	characteristics
+chasr	chaser, chase
+cheif	chief
+chemcial	chemical
+chemcially	chemically
+chemestry	chemistry
+chemicaly	chemically
+childbird	childbirth
+childen	children
+choosen	chosen
+chracter	character
+chuch	church
+churchs	churches
+Cincinatti	Cincinnati
+Cincinnatti	Cincinnati
+circulaton	circulation
+circumsicion	circumcision
+circut	circuit
+ciricuit	circuit
+ciriculum	curriculum
+civillian	civilian
+claer	clear
+claerer	clearer
+claerly	clearly
+claimes	claims
+clas	class
+clasic	classic
+clasical	classical
+clasically	classically
+cleareance	clearance
+clera	clear, sclera
+clincial	clinical
+clinicaly	clinically
+cmo	com
+cmoputer	computer
+co-incided	coincided
+coctail	cocktail
+coform	conform
+cognizent	cognizant
+coincedentally	coincidentally
+colaborations	collaborations
+colateral	collateral
+colelctive	collective
+collaberative	collaborative
+collecton	collection
+collegue	colleague
+collegues	colleagues
+collonade	colonnade
+collonies	colonies
+collony	colony
+collosal	colossal
+colonizators	colonizers
+comander	commander, commandeer
+comando	commando
+comandos	commandos
+comany	company
+comapany	company
+comback	comeback
+combanations	combinations
+combinatins	combinations
+combusion	combustion
+comdemnation	condemnation
+comemmorates	commemorates
+comemoretion	commemoration
+comision	commission
+comisioned	commissioned
+comisioner	commissioner
+comisioning	commissioning
+comisions	commissions
+comission	commission
+comissioned	commissioned
+comissioner	commissioner
+comissioning	commissioning
+comissions	commissions
+comited	committed
+comiting	committing
+comitted	committed
+comittee	committee
+comitting	committing
+commandoes	commandos
+commedic	comedic
+commemerative	commemorative
+commemmorate	commemorate
+commemmorating	commemorating
+commerical	commercial
+commerically	commercially
+commericial	commercial
+commericially	commercially
+commerorative	commemorative
+comming	coming
+comminication	communication
+commision	commission
+commisioned	commissioned
+commisioner	commissioner
+commisioning	commissioning
+commisions	commissions
+commited	committed
+commitee	committee
+commiting	committing
+committe	committee
+committment	commitment
+committments	commitments
+commmemorated	commemorated
+commongly	commonly
+commonweath	commonwealth
+commuications	communications
+commuinications	communications
+communciation	communication
+communiation	communication
+communites	communities
+compability	compatibility
+comparision	comparison
+comparisions	comparisons
+comparitive	comparative
+comparitively	comparatively
+compatabilities	compatibilities
+compatability	compatibility
+compatable	compatible
+compatablities	compatibilities
+compatablity	compatibility
+compatiable	compatible
+compatiblities	compatibilities
+compatiblity	compatibility
+compeitions	competitions
+compensantion	compensation
+competance	competence
+competant	competent
+competative	competitive
+competion	competition, completion
+competitiion	competition
+competive	competitive
+competiveness	competitiveness
+comphrehensive	comprehensive
+compitent	competent
+completedthe	completed the
+completelyl	completely
+completetion	completion
+complier	compiler
+componant	component
+comprable	comparable
+comprimise	compromise
+compulsary	compulsory
+compulsery	compulsory
+computarized	computerized
+concensus	consensus
+concider	consider
+concidered	considered
+concidering	considering
+conciders	considers
+concieted	conceited
+concieved	conceived
+concious	conscious
+conciously	consciously
+conciousness	consciousness
+condamned	condemned
+condemmed	condemned
+condidtion	condition
+condidtions	conditions
+conditionsof	conditions of
+conected	connected
+conection	connection
+conesencus	consensus
+confidental	confidential
+confidentally	confidentially
+confids	confides
+configureable	configurable
+confortable	comfortable
+congradulations	congratulations
+congresional	congressional
+conived	connived
+conjecutre	conjecture
+conjuction	conjunction
+Conneticut	Connecticut
+conotations	connotations
+conquerd	conquered
+conquerer	conqueror
+conquerers	conquerors
+conqured	conquered
+conscent	consent
+consciouness	consciousness
+consdider	consider
+consdidered	considered
+consdiered	considered
+consectutive	consecutive
+consenquently	consequently
+consentrate	concentrate
+consentrated	concentrated
+consentrates	concentrates
+consept	concept
+consequentually	consequently
+consequeseces	consequences
+consern	concern
+conserned	concerned
+conserning	concerning
+conservitive	conservative
+consiciousness	consciousness
+consicousness	consciousness
+considerd	considered
+consideres	considered
+consious	conscious
+consistant	consistent
+consistantly	consistently
+consituencies	constituencies
+consituency	constituency
+consituted	constituted
+consitution	constitution
+consitutional	constitutional
+consolodate	consolidate
+consolodated	consolidated
+consonent	consonant
+consonents	consonants
+consorcium	consortium
+conspiracys	conspiracies
+conspiriator	conspirator
+constaints	constraints
+constanly	constantly
+constarnation	consternation
+constatn	constant
+constinually	continually
+constituant	constituent
+constituants	constituents
+constituion	constitution
+constituional	constitutional
+consttruction	construction
+constuction	construction
+consulant	consultant
+consumate	consummate
+consumated	consummated
+contaiminate	contaminate
+containes	contains
+contamporaries	contemporaries
+contamporary	contemporary
+contempoary	contemporary
+contemporaneus	contemporaneous
+contempory	contemporary
+contendor	contender
+contined	continued
+continous	continuous
+continously	continuously
+continueing	continuing
+contravercial	controversial
+contraversy	controversy
+contributer	contributor
+contributers	contributors
+contritutions	contributions
+controled	controlled
+controling	controlling
+controll	control
+controlls	controls
+controvercial	controversial
+controvercy	controversy
+controveries	controversies
+controversal	controversial
+controversey	controversy
+controvertial	controversial
+controvery	controversy
+contruction	construction
+conveinent	convenient
+convenant	covenant
+convential	conventional
+convertables	convertibles
+convertion	conversion
+conveyer	conveyor
+conviced	convinced
+convienient	convenient
+coordiantion	coordination
+coorperation	cooperation, corporation
+coorperations	corporations
+copmetitors	competitors
+coputer	computer
+copywrite	copyright
+coridal	cordial
+cornmitted	committed
+corosion	corrosion
+corparate	corporate
+corperations	corporations
+correcters	correctors
+correponding	corresponding
+correposding	corresponding
+correspondant	correspondent
+correspondants	correspondents
+corridoors	corridors
+corrispond	correspond
+corrispondant	correspondent
+corrispondants	correspondents
+corrisponded	corresponded
+corrisponding	corresponding
+corrisponds	corresponds
+costitution	constitution
+coucil	council
+coudl	could, cloud
+councellor	councillor, counselor, councilor
+councellors	councillors, counselors, councilors
+counries	countries
+countains	contains
+countires	countries
+coururier	courier, couturier
+coverted	converted, covered, coveted
+cpoy	coy, copy
+creaeted	created
+creedence	credence
+critereon	criterion
+criterias	criteria
+criticists	critics
+critising	criticising, criticizing
+critisising	criticising
+critisism	criticism
+critisisms	criticisms
+critisize	criticise, criticize
+critisized	criticised, criticized
+critisizes	criticises, criticizes
+critisizing	criticising, criticizing
+critized	criticized
+critizing	criticizing
+crockodiles	crocodiles
+crowm	crown
+crtical	critical
+crticised	criticised
+crucifiction	crucifixion
+crusies	cruises
+crystalisation	crystallisation
+culiminating	culminating
+cumulatative	cumulative
+curch	church
+curcuit	circuit
+currenly	currently
+curriculem	curriculum
+cxan	cyan
+cyclinder	cylinder
+dael	deal, dial, dahl
+dalmation	dalmatian
+damenor	demeanor
+Dardenelles	Dardanelles
+dacquiri	daiquiri
+debateable	debatable
+decendant	descendant
+decendants	descendants
+decendent	descendant
+decendents	descendants
+decideable	decidable
+decidely	decidedly
+decieved	deceived
+decison	decision
+decomissioned	decommissioned
+decomposit	decompose
+decomposited	decomposed
+decompositing	decomposing
+decomposits	decomposes
+decress	decrees
+decribe	describe
+decribed	described
+decribes	describes
+decribing	describing
+dectect	detect
+defendent	defendant
+defendents	defendants
+deffensively	defensively
+deffine	define
+deffined	defined
+definance	defiance
+definate	definite
+definately	definitely
+definatly	definitely
+definetly	definitely
+definining	defining
+definit	definite
+definitly	definitely
+definiton	definition
+defintion	definition
+degrate	degrade
+delagates	delegates
+delapidated	dilapidated
+delerious	delirious
+delevopment	development
+deliberatly	deliberately
+delusionally	delusively
+demenor	demeanor
+demographical	demographic
+demolision	demolition
+demorcracy	democracy
+demostration	demonstration
+denegrating	denigrating
+densly	densely
+deparment	department
+deparments	departments
+deparmental	departmental
+dependance	dependence
+dependancy	dependency
+dependant	dependent
+deram	dram, dream
+deriviated	derived
+derivitive	derivative
+derogitory	derogatory
+descendands	descendants
+descibed	described
+descision	decision
+descisions	decisions
+descriibes	describes
+descripters	descriptors
+descripton	description
+desctruction	destruction
+descuss	discuss
+desgined	designed
+deside	decide
+desigining	designing
+desinations	destinations
+desintegrated	disintegrated
+desintegration	disintegration
+desireable	desirable
+desitned	destined
+desktiop	desktop
+desorder	disorder
+desoriented	disoriented
+desparate	desperate, disparate
+despatched	dispatched
+despict	depict
+despiration	desperation
+dessicated	desiccated
+dessigned	designed
+destablized	destabilized
+destory	destroy
+detailled	detailed
+detatched	detached
+deteoriated	deteriorated
+deteriate	deteriorate
+deterioriating	deteriorating
+determinining	determining
+detremental	detrimental
+devasted	devastated
+develope	develop
+developement	development
+developped	developed
+develpment	development
+devels	delves
+devestated	devastated
+devestating	devastating
+devide	divide
+devided	divided
+devistating	devastating
+devolopement	development
+diablical	diabolical
+diamons	diamonds
+diaster	disaster
+dichtomy	dichotomy
+diconnects	disconnects
+dicover	discover
+dicovered	discovered
+dicovering	discovering
+dicovers	discovers
+dicovery	discovery
+dicussed	discussed
+didnt	didn't
+diea	idea, die
+dieing	dying, dyeing
+dieties	deities
+diety	deity
+diferent	different
+diferrent	different
+differentiatiations	differentiations
+differnt	different
+difficulity	difficulty
+diffrent	different
+dificulties	difficulties
+dificulty	difficulty
+dimenions	dimensions
+dimention	dimension
+dimentional	dimensional
+dimentions	dimensions
+dimesnional	dimensional
+diminuitive	diminutive
+diosese	diocese
+diphtong	diphthong
+diphtongs	diphthongs
+diplomancy	diplomacy
+dipthong	diphthong
+dipthongs	diphthongs
+dirived	derived
+disagreeed	disagreed
+disapeared	disappeared
+disapointing	disappointing
+disappearred	disappeared
+disaproval	disapproval
+disasterous	disastrous
+disatisfaction	dissatisfaction
+disatisfied	dissatisfied
+disatrous	disastrous
+discontentment	discontent
+discribe	describe
+discribed	described
+discribes	describes
+discribing	describing
+disctinction	distinction
+disctinctive	distinctive
+disemination	dissemination
+disenchanged	disenchanted
+disiplined	disciplined
+disobediance	disobedience
+disobediant	disobedient
+disolved	dissolved
+disover	discover
+dispair	despair
+disparingly	disparagingly
+dispence	dispense
+dispenced	dispensed
+dispencing	dispensing
+dispicable	despicable
+dispite	despite
+dispostion	disposition
+disproportiate	disproportionate
+disputandem	disputandum
+disricts	districts
+dissagreement	disagreement
+dissapear	disappear
+dissapearance	disappearance
+dissapeared	disappeared
+dissapearing	disappearing
+dissapears	disappears
+dissappear	disappear
+dissappears	disappears
+dissappointed	disappointed
+dissarray	disarray
+dissobediance	disobedience
+dissobediant	disobedient
+dissobedience	disobedience
+dissobedient	disobedient
+distiction	distinction
+distingish	distinguish
+distingished	distinguished
+distingishes	distinguishes
+distingishing	distinguishing
+distingquished	distinguished
+distrubution	distribution
+distruction	destruction
+distructive	destructive
+ditributed	distributed
+diversed	diverse, diverged
+divice	device
+divison	division
+divisons	divisions
+doccument	document
+doccumented	documented
+doccuments	documents
+docrines	doctrines
+doctines	doctrines
+documenatry	documentary
+doens	does
+doesnt	doesn't
+doign	doing
+dominaton	domination
+dominent	dominant
+dominiant	dominant
+donig	doing
+dosen't	doesn't
+doub	doubt, daub
+doulbe	double
+dowloads	downloads
+dramtic	dramatic
+draughtman	draughtsman
+Dravadian	Dravidian
+dreasm	dreams
+driectly	directly
+drnik	drink
+druming	drumming
+drummless	drumless
+dupicate	duplicate
+durig	during
+durring	during
+duting	during
+dyas	dryas
+eahc	each
+ealier	earlier
+earlies	earliest
+earnt	earned
+ecclectic	eclectic
+eceonomy	economy
+ecidious	deciduous
+eclispe	eclipse
+ecomonic	economic
+ect	etc
+eearly	early
+efel	evil
+effeciency	efficiency
+effecient	efficient
+effeciently	efficiently
+efficency	efficiency
+efficent	efficient
+efficently	efficiently
+efford	effort, afford
+effords	efforts, affords
+effulence	effluence
+eigth	eighth, eight
+eiter	either
+elction	election
+electic	eclectic, electric
+electon	election, electron
+electrial	electrical
+electricly	electrically
+electricty	electricity
+elementay	elementary
+eleminated	eliminated
+eleminating	eliminating
+eles	eels
+eletricity	electricity
+elicided	elicited
+eligable	eligible
+elimentary	elementary
+ellected	elected
+elphant	elephant
+embarass	embarrass
+embarassed	embarrassed
+embarassing	embarrassing
+embarassment	embarrassment
+embargos	embargoes
+embarras	embarrass
+embarrased	embarrassed
+embarrasing	embarrassing
+embarrasment	embarrassment
+embezelled	embezzled
+emblamatic	emblematic
+eminate	emanate
+eminated	emanated
+emision	emission
+emited	emitted
+emiting	emitting
+emition	emission, emotion
+emmediately	immediately
+emmigrated	emigrated
+emminent	eminent, imminent
+emminently	eminently
+emmisaries	emissaries
+emmisarries	emissaries
+emmisarry	emissary
+emmisary	emissary
+emmision	emission
+emmisions	emissions
+emmited	emitted
+emmiting	emitting
+emmitted	emitted
+emmitting	emitting
+emnity	enmity
+emperical	empirical
+emphaised	emphasised
+emphsis	emphasis
+emphysyma	emphysema
+empirial	empirical, imperial
+emprisoned	imprisoned
+enameld	enameled
+enchancement	enhancement
+encouraing	encouraging
+encryptiion	encryption
+encylopedia	encyclopedia
+endevors	endeavors
+endevour	endeavour
+endig	ending
+endolithes	endoliths
+enduce	induce
+ened	need
+enflamed	inflamed
+enforceing	enforcing
+engagment	engagement
+engeneer	engineer
+engeneering	engineering
+engieneer	engineer
+engieneers	engineers
+enlargment	enlargement
+enlargments	enlargements
+Enlish	English, enlist
+enourmous	enormous
+enourmously	enormously
+ensconsed	ensconced
+entaglements	entanglements
+enteratinment	entertainment
+entitity	entity
+entitlied	entitled
+entrepeneur	entrepreneur
+entrepeneurs	entrepreneurs
+enviorment	environment
+enviormental	environmental
+enviormentally	environmentally
+enviorments	environments
+enviornment	environment
+enviornmental	environmental
+enviornmentalist	environmentalist
+enviornmentally	environmentally
+enviornments	environments
+enviroment	environment
+enviromental	environmental
+enviromentalist	environmentalist
+enviromentally	environmentally
+enviroments	environments
+envolutionary	evolutionary
+envrionments	environments
+enxt	next
+epidsodes	episodes
+epsiode	episode
+equialent	equivalent
+equilibium	equilibrium
+equilibrum	equilibrium
+equiped	equipped
+equippment	equipment
+equitorial	equatorial
+equivelant	equivalent
+equivelent	equivalent
+equivilant	equivalent
+equivilent	equivalent
+equivlalent	equivalent
+erally	orally, really
+eratic	erratic
+eratically	erratically
+eraticly	erratically
+erested	arrested, erected
+errupted	erupted
+esential	essential
+esitmated	estimated
+esle	else
+especialy	especially
+essencial	essential
+essense	essence
+essentail	essential
+essentialy	essentially
+essentual	essential
+essesital	essential
+estabishes	establishes
+establising	establishing
+ethnocentricm	ethnocentrism
+ethose	those, ethos
+Europian	European
+Europians	Europeans
+Eurpean	European
+Eurpoean	European
+evenhtually	eventually
+eventally	eventually
+eventially	eventually
+eventualy	eventually
+everthing	everything
+everytime	every time
+everyting	everything
+eveyr	every
+evidentally	evidently
+exagerate	exaggerate
+exagerated	exaggerated
+exagerates	exaggerates
+exagerating	exaggerating
+exagerrate	exaggerate
+exagerrated	exaggerated
+exagerrates	exaggerates
+exagerrating	exaggerating
+examinated	examined
+exampt	exempt
+exapansion	expansion
+excact	exact
+excange	exchange
+excecute	execute
+excecuted	executed
+excecutes	executes
+excecuting	executing
+excecution	execution
+excedded	exceeded
+excelent	excellent
+excell	excel
+excellance	excellence
+excellant	excellent
+excells	excels
+excercise	exercise
+exchanching	exchanging
+excisted	existed
+exculsivly	exclusively
+execising	exercising
+exection	execution
+exectued	executed
+exeedingly	exceedingly
+exelent	excellent
+exellent	excellent
+exemple	example
+exept	except
+exeptional	exceptional
+exerbate	exacerbate
+exerbated	exacerbated
+exerciese	exercises
+exerpt	excerpt
+exerpts	excerpts
+exersize	exercise
+exerternal	external
+exhalted	exalted
+exhibtion	exhibition
+exibition	exhibition
+exibitions	exhibitions
+exicting	exciting
+exinct	extinct
+existance	existence
+existant	existent
+existince	existence
+exliled	exiled
+exludes	excludes
+exmaple	example
+exonorate	exonerate
+exoskelaton	exoskeleton
+expalin	explain
+expeced	expected
+expecially	especially
+expeditonary	expeditionary
+expeiments	experiments
+expell	expel
+expells	expels
+experiance	experience
+experianced	experienced
+expiditions	expeditions
+expierence	experience
+explaination	explanation
+explaning	explaining
+explictly	explicitly
+exploititive	exploitative
+explotation	exploitation
+expropiated	expropriated
+expropiation	expropriation
+exressed	expressed
+extemely	extremely
+extention	extension
+extentions	extensions
+extered	exerted
+extermist	extremist
+extint	extinct, extant
+extradiction	extradition
+extraterrestial	extraterrestrial
+extraterrestials	extraterrestrials
+extravagent	extravagant
+extrememly	extremely
+extremeophile	extremophile
+extremly	extremely
+extrordinarily	extraordinarily
+extrordinary	extraordinary
+eyar	year, eyas
+eyars	years, eyas
+eyasr	years, eyas
+faciliate	facilitate
+faciliated	facilitated
+faciliates	facilitates
+facilites	facilities
+facillitate	facilitate
+facinated	fascinated
+facist	fascist
+familes	families
+familliar	familiar
+famoust	famous
+fanatism	fanaticism
+Farenheit	Fahrenheit
+fatc	fact
+faught	fought
+favoutrable	favourable
+feasable	feasible
+Febuary	February
+fedreally	federally
+feromone	pheromone
+fertily	fertility
+fianite	finite
+fianlly	finally
+ficticious	fictitious
+fictious	fictitious
+fidn	find
+fiel	feel, field, file, phial
+fiels	feels, fields, files, phials
+fiercly	fiercely
+fightings	fighting
+filiament	filament
+fimilies	families
+finacial	financial
+finaly	finally
+financialy	financially
+firends	friends
+firts	flirts, first
+fisionable	fissionable
+flamable	flammable
+flawess	flawless
+fleed	fled, freed
+Flemmish	Flemish
+florescent	fluorescent
+flourescent	fluorescent
+fluorish	flourish
+follwoing	following
+folowing	following
+fomed	formed
+fomr	from, form
+fonetic	phonetic
+fontrier	fontier
+foootball	football
+forbad	forbade
+forbiden	forbidden
+foreward	foreword
+forfiet	forfeit
+forhead	forehead
+foriegn	foreign
+Formalhaut	Fomalhaut
+formallize	formalize
+formallized	formalized
+formaly	formally
+formelly	formerly
+formidible	formidable
+formost	foremost
+forsaw	foresaw
+forseeable	foreseeable
+fortelling	foretelling
+forunner	forerunner
+foucs	focus
+foudn	found
+fougth	fought
+foundaries	foundries
+foundary	foundry
+Foundland	Newfoundland
+fourties	forties
+fourty	forty
+fouth	fourth
+foward	forward
+fucntion	function
+fucntioning	functioning
+Fransiscan	Franciscan
+Fransiscans	Franciscans
+freind	friend
+freindly	friendly
+frequentily	frequently
+frome	from
+fromed	formed
+froniter	frontier
+fufill	fulfill
+fufilled	fulfilled
+fulfiled	fulfilled
+fundametal	fundamental
+fundametals	fundamentals
+funguses	fungi
+funtion	function
+furuther	further
+futher	further
+futhermore	furthermore
+futhroc	futhark, futhorc
+gae	game, Gael, gale
+galatic	galactic
+Galations	Galatians
+gallaxies	galaxies
+galvinized	galvanized
+Gameboy	Game Boy
+ganerate	generate
+ganes	games
+ganster	gangster
+garantee	guarantee
+garanteed	guaranteed
+garantees	guarantees
+garnison	garrison
+gauarana	guaraná
+gaurantee	guarantee
+gauranteed	guaranteed
+gaurantees	guarantees
+gaurd	guard, gourd
+gaurentee	guarantee
+gaurenteed	guaranteed
+gaurentees	guarantees
+geneological	genealogical
+geneologies	genealogies
+geneology	genealogy
+generaly	generally
+generatting	generating
+genialia	genitalia
+geographicial	geographical
+geometrician	geometer
+geometricians	geometers
+gerat	great
+Ghandi	Gandhi
+glight	flight
+gnawwed	gnawed
+godess	goddess
+godesses	goddesses
+Godounov	Godunov
+gogin	going, Gauguin
+goign	going
+gonig	going
+Gothenberg	Gothenburg
+Gottleib	Gottlieb
+gouvener	governor
+govement	government
+govenment	government
+govenrment	government
+goverance	governance
+goverment	government
+govermental	governmental
+governer	governor
+governmnet	government
+govorment	government
+govormental	governmental
+govornment	government
+gracefull	graceful
+graet	great
+grafitti	graffiti
+gramatically	grammatically
+grammaticaly	grammatically
+grammer	grammar
+grat	great
+gratuitious	gratuitous
+greatful	grateful
+greatfully	gratefully
+greif	grief
+gridles	griddles
+gropu	group
+grwo	grow
+Guaduloupe	Guadalupe, Guadeloupe
+Guadulupe	Guadalupe, Guadeloupe
+guage	gauge
+guarentee	guarantee
+guarenteed	guaranteed
+guarentees	guarantees
+Guatamala	Guatemala
+Guatamalan	Guatemalan
+guerilla	guerrilla
+guerillas	guerrillas
+guerrila	guerrilla
+guerrilas	guerrillas
+guidence	guidance
+Guilia	Giulia
+Guilio	Giulio
+Guiness	Guinness
+Guiseppe	Giuseppe
+gunanine	guanine
+gurantee	guarantee
+guranteed	guaranteed
+gurantees	guarantees
+guttaral	guttural
+gutteral	guttural
+habaeus	habeas
+habeus	habeas
+Habsbourg	Habsburg
+haemorrage	haemorrhage
+haev	have, heave
+Hallowean	Hallowe'en, Halloween
+halp	help
+hapen	happen
+hapened	happened
+hapening	happening
+happend	happened
+happended	happened
+happenned	happened
+harased	harassed
+harases	harasses
+harasment	harassment
+harasments	harassments
+harassement	harassment
+harras	harass
+harrased	harassed
+harrases	harasses
+harrasing	harassing
+harrasment	harassment
+harrasments	harassments
+harrassed	harassed
+harrasses	harassed
+harrassing	harassing
+harrassment	harassment
+harrassments	harassments
+hasnt	hasn't
+haviest	heaviest
+headquater	headquarter
+headquarer	headquarter
+headquatered	headquartered
+headquaters	headquarters
+healthercare	healthcare
+heared	heard
+heathy	healthy
+Heidelburg	Heidelberg
+heigher	higher
+heirarchy	hierarchy
+heiroglyphics	hieroglyphics
+helment	helmet
+helpfull	helpful
+helpped	helped
+hemmorhage	hemorrhage
+herad	heard, Hera
+heridity	heredity
+heroe	hero
+heros	heroes
+hertzs	hertz
+hesistant	hesitant
+heterogenous	heterogeneous
+hieght	height
+hierachical	hierarchical
+hierachies	hierarchies
+hierachy	hierarchy
+hierarcical	hierarchical
+hierarcy	hierarchy
+hieroglph	hieroglyph
+hieroglphs	hieroglyphs
+higer	higher
+higest	highest
+higway	highway
+hillarious	hilarious
+himselv	himself
+hinderance	hindrance
+hinderence	hindrance
+hindrence	hindrance
+hipopotamus	hippopotamus
+hismelf	himself
+histocompatability	histocompatibility
+historicians	historians
+hitsingles	hit singles
+holliday	holiday
+homestate	home state
+homogeneize	homogenize
+homogeneized	homogenized
+honory	honorary
+horrifing	horrifying
+hosited	hoisted
+hospitible	hospitable
+hounour	honour
+housr	hours, house
+howver	however
+hsitorians	historians
+hstory	history
+hten	then, hen, the
+htere	there, here
+htey	they
+htikn	think
+hting	thing
+htink	think
+htis	this
+humer	humor, humour
+humerous	humorous, humerus
+huminoid	humanoid
+humoural	humoral
+humurous	humorous
+husban	husband
+hvae	have
+hvaing	having
+hvea	have, heave
+hwihc	which
+hwile	while
+hwole	whole
+hydogen	hydrogen
+hydropile	hydrophile
+hydropilic	hydrophilic
+hydropobe	hydrophobe
+hydropobic	hydrophobic
+hygeine	hygiene
+hypocracy	hypocrisy
+hypocrasy	hypocrisy
+hypocricy	hypocrisy
+hypocrit	hypocrite
+hypocrits	hypocrites
+iconclastic	iconoclastic
+idaeidae	idea
+idaes	ideas
+idealogies	ideologies
+idealogy	ideology
+identicial	identical
+identifers	identifiers
+ideosyncratic	idiosyncratic
+idesa	ideas, ides
+idiosyncracy	idiosyncrasy
+Ihaca	Ithaca
+illegimacy	illegitimacy
+illegitmate	illegitimate
+illess	illness
+illiegal	illegal
+illution	illusion
+ilness	illness
+ilogical	illogical
+imagenary	imaginary
+imagin	imagine
+imaginery	imaginary, imagery
+imanent	eminent, imminent
+imcomplete	incomplete
+imediately	immediately
+imense	immense
+imigrant	emigrant, immigrant
+imigrated	emigrated, immigrated
+imigration	emigration, immigration
+iminent	eminent, imminent, immanent
+immediatley	immediately
+immediatly	immediately
+immidately	immediately
+immidiately	immediately
+immitate	imitate
+immitated	imitated
+immitating	imitating
+immitator	imitator
+immunosupressant	immunosuppressant
+impecabbly	impeccably
+impedence	impedance
+implamenting	implementing
+impliment	implement
+implimented	implemented
+imploys	employs
+importamt	important
+imprioned	imprisoned
+imprisonned	imprisoned
+improvision	improvisation
+improvments	improvements
+inablility	inability
+inaccessable	inaccessible
+inadiquate	inadequate
+inadquate	inadequate
+inadvertant	inadvertent
+inadvertantly	inadvertently
+inagurated	inaugurated
+inaguration	inauguration
+inappropiate	inappropriate
+inaugures	inaugurates
+inbalance	imbalance
+inbalanced	imbalanced
+inbetween	between
+incarcirated	incarcerated
+incidentially	incidentally
+incidently	incidentally
+inclreased	increased
+includ	include
+includng	including
+incompatabilities	incompatibilities
+incompatability	incompatibility
+incompatable	incompatible
+incompatablities	incompatibilities
+incompatablity	incompatibility
+incompatiblities	incompatibilities
+incompatiblity	incompatibility
+incompetance	incompetence
+incompetant	incompetent
+incomptable	incompatible
+incomptetent	incompetent
+inconsistant	inconsistent
+incorperation	incorporation
+incorportaed	incorporated
+incorprates	incorporates
+incorruptable	incorruptible
+incramentally	incrementally
+increadible	incredible
+incredable	incredible
+inctroduce	introduce
+inctroduced	introduced
+incuding	including
+incunabla	incunabula
+indefinately	indefinitely
+indefineable	undefinable
+indefinitly	indefinitely
+indentical	identical
+indepedantly	independently
+indepedence	independence
+independance	independence
+independant	independent
+independantly	independently
+independece	independence
+independendet	independent
+indictement	indictment
+indigineous	indigenous
+indipendence	independence
+indipendent	independent
+indipendently	independently
+indespensible	indispensable
+indespensable	indispensable
+indispensible	indispensable
+indisputible	indisputable
+indisputibly	indisputably
+indite	indict
+individualy	individually
+indpendent	independent
+indpendently	independently
+indulgue	indulge
+indutrial	industrial
+indviduals	individuals
+inefficienty	inefficiently
+inevatible	inevitable
+inevitible	inevitable
+inevititably	inevitably
+infalability	infallibility
+infallable	infallible
+infectuous	infectious
+infered	inferred
+infilitrate	infiltrate
+infilitrated	infiltrated
+infilitration	infiltration
+infinit	infinite
+inflamation	inflammation
+influencial	influential
+influented	influenced
+infomation	information
+informtion	information
+infrantryman	infantryman
+infrigement	infringement
+ingenius	ingenious
+ingreediants	ingredients
+inhabitans	inhabitants
+inherantly	inherently
+inheritage	heritage, inheritance
+inheritence	inheritance
+inital	initial
+initally	initially
+initation	initiation
+initiaitive	initiative
+inlcuding	including
+inmigrant	immigrant
+inmigrants	immigrants
+innoculated	inoculated
+inocence	innocence
+inofficial	unofficial
+inot	into
+inpeach	impeach
+inpolite	impolite
+inprisonment	imprisonment
+inproving	improving
+insectiverous	insectivorous
+insensative	insensitive
+inseperable	inseparable
+insistance	insistence
+insitution	institution
+insitutions	institutions
+inspite	in spite, inspire
+instade	instead
+instatance	instance
+institue	institute
+instuction	instruction
+instuments	instruments
+instutionalized	institutionalized
+instutions	intuitions
+insurence	insurance
+intelectual	intellectual
+inteligence	intelligence
+inteligent	intelligent
+intenational	international
+intepretation	interpretation
+intepretator	interpretor
+interational	international
+interbread	interbreed, interbred
+interchangable	interchangeable
+interchangably	interchangeably
+intercontinetal	intercontinental
+intered	interred, interned
+interelated	interrelated
+interferance	interference
+interfereing	interfering
+intergrated	integrated
+intergration	integration
+interm	interim
+internation	international
+interpet	interpret
+interrim	interim
+interrugum	interregnum
+intertaining	entertaining
+interupt	interrupt
+intervines	intervenes
+intevene	intervene
+intial	initial
+intially	initially
+intrduced	introduced
+intrest	interest
+introdued	introduced
+intruduced	introduced
+intrusted	entrusted
+intutive	intuitive
+intutively	intuitively
+inudstry	industry
+inumerable	enumerable, innumerable
+inventer	inventor
+invertibrates	invertebrates
+investingate	investigate
+involvment	involvement
+irelevent	irrelevant
+iresistable	irresistible
+iresistably	irresistibly
+iresistible	irresistible
+iresistibly	irresistibly
+iritable	irritable
+iritated	irritated
+ironicly	ironically
+irregardless	regardless
+irrelevent	irrelevant
+irreplacable	irreplaceable
+irresistable	irresistible
+irresistably	irresistibly
+isnt	isn't
+Israelies	Israelis
+issueing	issuing
+itnroduced	introduced
+iunior	junior
+iwll	will
+iwth	with
+Japanes	Japanese
+jaques	jacques
+jeapardy	jeopardy
+jewllery	jewellery
+Johanine	Johannine
+Jospeh	Joseph
+jouney	journey
+journied	journeyed
+journies	journeys
+jstu	just
+jsut	just
+Juadaism	Judaism
+Juadism	Judaism
+judical	judicial
+judisuary	judiciary
+juducial	judicial
+juristiction	jurisdiction
+juristictions	jurisdictions
+kindergarden	kindergarten
+klenex	kleenex
+knifes	knives
+knive	knife
+knowlege	knowledge
+knowlegeable	knowledgeable
+knwo	know
+knwos	knows
+konw	know
+konws	knows
+kwno	know
+labatory	lavatory, laboratory
+labled	labelled, labeled
+labratory	laboratory
+laguage	language
+laguages	languages
+larg	large
+largst	largest
+larrry	larry
+lastr	last
+lattitude	latitude
+launchs	launch
+launhed	launched
+lavae	larvae
+layed	laid
+lazyness	laziness
+leaded	led
+leage	league
+leanr	lean, learn, leaner
+leathal	lethal
+lefted	left
+legitamate	legitimate
+legitmate	legitimate
+leibnitz	leibniz
+lenght	length
+leran	learn
+lerans	learns
+lieuenant	lieutenant
+leutenant	lieutenant
+levetate	levitate
+levetated	levitated
+levetates	levitates
+levetating	levitating
+levle	level
+liasion	liaison
+liason	liaison
+liasons	liaisons
+libary	library
+libell	libel
+libguistic	linguistic
+libguistics	linguistics
+libitarianisn	libertarianism
+lible	libel, liable
+lieing	lying
+liek	like
+liekd	liked
+liesure	leisure
+lieved	lived
+liftime	lifetime
+lightyear	light year
+lightyears	light years
+likelyhood	likelihood
+linnaena	linnaean
+lippizaner	lipizzaner
+liquify	liquefy
+liscense	license, licence
+lisence	license, licence
+lisense	license, licence
+listners	listeners
+litature	literature
+literture	literature
+littel	little
+litterally	literally
+liuke	like
+livley	lively
+lmits	limits
+loev	love
+lonelyness	loneliness
+longitudonal	longitudinal
+lonley	lonely
+lonly	lonely, only
+loosing	losing
+lotharingen	lothringen
+lsat	last
+lukid	likud
+lveo	love
+lvoe	love
+Lybia	Libya
+mackeral	mackerel
+magasine	magazine
+magincian	magician
+magnificient	magnificent
+magolia	magnolia
+mailny	mainly
+maintainance	maintenance
+maintainence	maintenance
+maintance	maintenance
+maintenence	maintenance
+maintinaing	maintaining
+maintioned	mentioned
+majoroty	majority
+maked	marked, made
+makse	makes
+Malcom	Malcolm
+maltesian	Maltese
+mamal	mammal
+mamalian	mammalian
+managable	manageable, manageably
+managment	management
+manisfestations	manifestations
+manoeuverability	maneuverability
+manouver	maneuver, manoeuvre
+manouverability	maneuverability, manoeuvrability, manoeuverability
+manouverable	maneuverable, manoeuvrable
+manouvers	maneuvers, manoeuvres
+mantained	maintained
+manuever	maneuver, manoeuvre
+manuevers	maneuvers, manoeuvres
+manufacturedd	manufactured
+manufature	manufacture
+manufatured	manufactured
+manufaturing	manufacturing
+manuver	maneuver
+mariage	marriage
+marjority	majority
+markes	marks
+marketting	marketing
+marmelade	marmalade
+marrage	marriage
+marraige	marriage
+marrtyred	martyred
+marryied	married
+Massachussets	Massachusetts
+Massachussetts	Massachusetts
+massmedia	mass media
+masterbation	masturbation
+mataphysical	metaphysical
+materalists	materialist
+mathamatics	mathematics
+mathematican	mathematician
+mathematicas	mathematics
+matheticians	mathematicians
+mathmatically	mathematically
+mathmatician	mathematician
+mathmaticians	mathematicians
+mccarthyst	mccarthyist
+mchanics	mechanics
+meaninng	meaning
+mear	wear, mere, mare
+mechandise	merchandise
+medacine	medicine
+medeival	medieval
+medevial	medieval
+mediciney	mediciny
+medievel	medieval
+mediterainnean	mediterranean
+Mediteranean	Mediterranean
+meerkrat	meerkat
+melieux	milieux
+membranaphone	membranophone
+memeber	member
+menally	mentally
+meranda	veranda, Miranda
+mercentile	mercantile
+messanger	messenger
+messenging	messaging
+metalic	metallic
+metalurgic	metallurgic
+metalurgical	metallurgical
+metalurgy	metallurgy
+metamorphysis	metamorphosis
+metaphoricial	metaphorical
+meterologist	meteorologist
+meterology	meteorology
+methaphor	metaphor
+methaphors	metaphors
+Michagan	Michigan
+micoscopy	microscopy
+midwifes	midwives
+mileau	milieu
+milennia	millennia
+milennium	millennium
+mileu	milieu
+miliary	military
+milion	million
+miliraty	military
+millenia	millennia
+millenial	millennial
+millenialism	millennialism
+millenium	millennium
+millepede	millipede
+millioniare	millionaire
+millitary	military
+millon	million
+miltary	military
+minature	miniature
+minerial	mineral
+miniscule	minuscule
+ministery	ministry
+minstries	ministries
+minstry	ministry
+minumum	minimum
+mirrorred	mirrored
+miscelaneous	miscellaneous
+miscellanious	miscellaneous
+miscellanous	miscellaneous
+mischeivous	mischievous
+mischevious	mischievous
+mischievious	mischievous
+misdameanor	misdemeanor
+misdameanors	misdemeanors
+misdemenor	misdemeanor
+misdemenors	misdemeanors
+misfourtunes	misfortunes
+misile	missile
+Misouri	Missouri
+mispell	misspell
+mispelled	misspelled
+mispelling	misspelling
+missen	mizzen
+Missisipi	Mississippi
+Missisippi	Mississippi
+missle	missile
+missonary	missionary
+misterious	mysterious
+mistery	mystery
+misteryous	mysterious
+mkae	make
+mkaes	makes
+mkaing	making
+mkea	make
+moderm	modem
+modle	model
+moent	moment
+moeny	money
+mohammedans	muslims
+moil	mohel
+moleclues	molecules
+momento	memento
+monestaries	monasteries
+monestary	monastery, monetary
+monickers	monikers
+monolite	monolithic
+Monserrat	Montserrat
+montains	mountains
+montanous	mountainous
+monts	months
+montypic	monotypic
+moreso	more, more so
+morgage	mortgage
+Morisette	Morissette
+Morrisette	Morissette
+morroccan	moroccan
+morrocco	morocco
+morroco	morocco
+mosture	moisture
+motiviated	motivated
+mounth	month
+movei	movie
+movment	movement
+mroe	more
+mucuous	mucous
+muder	murder
+mudering	murdering
+muhammadan	muslim
+multicultralism	multiculturalism
+multipled	multiplied
+multiplers	multipliers
+munbers	numbers
+muncipalities	municipalities
+muncipality	municipality
+munnicipality	municipality
+muscels	mussels, muscles
+muscial	musical
+muscician	musician
+muscicians	musicians
+mutiliated	mutilated
+myraid	myriad
+mysef	myself
+mysogynist	misogynist
+mysogyny	misogyny
+mysterous	mysterious
+Mythraic	Mithraic
+naieve	naive
+Napoleonian	Napoleonic
+naturaly	naturally
+naturely	naturally
+naturual	natural
+naturually	naturally
+Nazereth	Nazareth
+neccesarily	necessarily
+neccesary	necessary
+neccessarily	necessarily
+neccessary	necessary
+neccessities	necessities
+necesarily	necessarily
+necesary	necessary
+necessiate	necessitate
+neglible	negligible
+negligable	negligible
+negociate	negotiate
+negociation	negotiation
+negociations	negotiations
+negotation	negotiation
+neice	niece, nice
+neigborhood	neighborhood
+neigbour	neighbour, neighbor
+neigbourhood	neighbourhood
+neigbouring	neighbouring, neighboring
+neigbours	neighbours, neighbors
+neolitic	neolithic
+nessasarily	necessarily
+nessecary	necessary
+nestin	nesting
+neverthless	nevertheless
+newletters	newsletters
+Newyorker	New Yorker
+nickle	nickel
+nightfa;;	nightfall
+nightime	nighttime
+nineth	ninth
+ninteenth	nineteenth
+ninties	1990s
+ninty	ninety
+nkow	know
+nkwo	know
+nmae	name
+noncombatents	noncombatants
+nonsence	nonsense
+nontheless	nonetheless
+noone	no one
+norhern	northern
+northen	northern
+northereastern	northeastern
+notabley	notably
+noteable	notable
+noteably	notably
+noteriety	notoriety
+noth	north
+nothern	northern
+noticable	noticeable
+noticably	noticeably
+noticeing	noticing
+noticible	noticeable
+notwhithstanding	notwithstanding
+noveau	nouveau
+nowdays	nowadays
+nowe	now
+nto	not
+nucular	nuclear
+nuculear	nuclear
+nuisanse	nuisance
+Nullabour	Nullarbor
+numberous	numerous
+Nuremburg	Nuremberg
+nusance	nuisance
+nutritent	nutrient
+nutritents	nutrients
+nuturing	nurturing
+obediance	obedience
+obediant	obedient
+obession	obsession
+obssessed	obsessed
+obstacal	obstacle
+obstancles	obstacles
+obstruced	obstructed
+ocasion	occasion
+ocasional	occasional
+ocasionally	occasionally
+ocasionaly	occasionally
+ocasioned	occasioned
+ocasions	occasions
+ocassion	occasion
+ocassional	occasional
+ocassionally	occasionally
+ocassionaly	occasionally
+ocassioned	occasioned
+ocassions	occasions
+occaison	occasion
+occassion	occasion
+occassional	occasional
+occassionally	occasionally
+occassionaly	occasionally
+occassioned	occasioned
+occassions	occasions
+occationally	occasionally
+occour	occur
+occurance	occurrence
+occurances	occurrences
+occured	occurred
+occurence	occurrence
+occurences	occurrences
+occuring	occurring
+occurr	occur
+occurrance	occurrence
+occurrances	occurrences
+octohedra	octahedra
+octohedral	octahedral
+octohedron	octahedron
+ocuntries	countries
+ocuntry	country
+ocurr	occur
+ocurrance	occurrence
+ocurred	occurred
+ocurrence	occurrence
+offcers	officers
+offcially	officially
+offereings	offerings
+offical	official
+officals	officials
+offically	officially
+officaly	officially
+officialy	officially
+offred	offered
+oftenly	often
+oging	going, ogling
+omision	omission
+omited	omitted
+omiting	omitting
+omlette	omelette
+ommision	omission
+ommited	omitted