Module:User:Santi2222/eu-allocutive

Hello, you have come here looking for the meaning of the word Module:User:Santi2222/eu-allocutive. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:User:Santi2222/eu-allocutive, but we will also tell you about its etymology, its characteristics and you will know how to say Module:User:Santi2222/eu-allocutive in singular and plural. Everything you need to know about the word Module:User:Santi2222/eu-allocutive you have here. The definition of the word Module:User:Santi2222/eu-allocutive will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:User:Santi2222/eu-allocutive, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.


local export = {}
local m_string_utilities = require("Module:string utilities")
local m_table = require("Module:table")
local rsplit = m_string_utilities.split
local rsub = m_string_utilities.gsub
local rfind = m_string_utilities.find
local m_table = require("Module:table")

local valid_words = m_table.listToSet {
"naiz", "da", "gara", "dira", "naizateke", "dateke", "garateke", "dirateke", "nintzen", "zen", "ginen", "ziren", "nintzatekeen", "zatekeen", "ginatekeen", "ziratekeen", "nintzateke",
"litzateke", "ginateke", "lirateke", "natzaio", "natzaie", "zait", "zaio", "zaigu", "zaie", "gatzaizkio", "gatzaizkie", "zaizkit", "zaizkio", "zaizkigu", "zaizkie", "natzaioke", "natzaieke",
"zaidake", "zaioke", "zaiguke", "zaieke", "gatzaizkioke", "gatzaizkieke", "zaizkidake", "zaizkioke", "zaizkiguke", "zaizkieke", "nintzaion", "nintzaien", "zitzaidan", "zitzaion", "zitzaigun", "zitzaien", "gintzaizkion",
"gintzaizkien", "zitzaizkidan", "zitzaizkion", "zitzaizkigun", "zitzaizkien", "nintzaiokeen", "nintzaiekeen", "zitzaidakeen", "zitzaiokeen", "zitzaigukeen", "zitzaiekeen", "gintzaizkiokeen", "gintzaizkiekeen", "zitzaizkidakeen", "zitzaizkiokeen", "zitzaizkigukeen", "zitzaizkiekeen",
"nintzaioke", "nintzaieke", "litzaidake", "litzaioke", "litzaiguke", "litzaieke", "gintzaizkioke", "gintzaizkieke", "litzaizkidake", "litzaizkioke", "litzaizkiguke", "litzaizkieke", "naiteke", "daiteke", "gaitezke", "daitezke", "nintekeen",
"zitekeen", "gintezkeen", "zitezkeen", "ninteke", "liteke", "gintezke", "litezke", "nakioke", "nakieke", "dakidake", "dakioke", "dakiguke", "dakieke", "gakizkioke", "gakizkieke", "dakizkidake", "dakizkioke",
"dakizkiguke", "dakizkieke", "nenkiokeen", "nenkiekeen", "zekidakeen", "zekiokeen", "zekigukeen", "zekiekeen", "genkizkiokeen", "genkizkiekeen", "zekizkidakeen", "zekizkiokeen", "zekizkigukeen", "zekizkiekeen", "nenkioke", "nenkieke", "lekidake",
"lekioke", "lekiguke", "lekieke", "genkizkioke", "genkizkieke", "lekizkidake", "lekizkioke", "lekizkiguke", "lekizkieke", "nau", "naute", "dut", "du", "dugu", "dute", "gaitu", "gaituzte",
"ditut", "ditu", "ditugu", "dituzte", "nauke", "naukete", "duket", "duke", "dukegu", "dukete", "gaituzke", "gaituzkete", "dituzket", "dituzke", "dituzkegu", "dituzkete", "ninduen",
"ninduten", "nuen", "zuen", "genuen", "zuten", "gintuen", "gintuzten", "nituen", "zituen", "genituen", "zituzten", "nindukeen", "ninduketen", "nukeen", "zukeen", "genukeen", "zuketen",
"gintuzkeen", "gintuzketen", "nituzkeen", "zituzkeen", "genituzkeen", "zituzketen", "ninduke", "nindukete", "nuke", "luke", "genuke", "lukete", "gintuzke", "gintuzkete", "nituzke", "lituzke", "genituzke",
"lituzkete", "dit", "dizkit", "didate", "dizkidate", "diot", "dizkiot", "dio", "dizkio", "diogu", "dizkiogu", "diote", "dizkiote", "digu", "dizkigu", "digute", "dizkigute",
"diet", "dizkiet", "die", "dizkie", "diegu", "dizkiegu", "diete", "dizkiete", "didake", "dizkidake", "didakete", "dizkidakete", "dioket", "dizkioket", "dioke", "dizkioke", "diokegu",
"dizkiokegu", "diokete", "dizkiokete", "diguke", "dizkiguke", "digukete", "dizkigukete", "dieket", "dizkieket", "dieke", "dizkieke", "diekegu", "dizkiekegu", "diekete", "dizkiekete", "zidan", "zizkidan",
"zidaten", "zizkidaten", "nion", "nizkion", "zion", "zizkion", "genion", "genizkion", "zioten", "zizkioten", "zigun", "zizkigun", "ziguten", "zizkiguten", "nien", "nizkien", "zien",
"zizkien", "genien", "genizkien", "zieten", "zizkieten", "zidakeen", "zizkidakeen", "zidaketen", "zizkidaketen", "niokeen", "nizkiokeen", "ziokeen", "zizkiokeen", "geniokeen", "genizkiokeen", "zioketen", "zizkioketen",
"zigukeen", "zizkigukeen", "ziguketen", "zizkiguketen", "niekeen", "nizkiekeen", "ziekeen", "zizkiekeen", "geniekeen", "genizkiekeen", "zieketen", "zizkieketen", "lidake", "lizkidake", "lidakete", "lizkidakete", "nioke",
"nizkioke", "lioke", "lizkioke", "genioke", "genizkioke", "liokete", "lizkiokete", "liguke", "lizkiguke", "ligukete", "lizkigukete", "nieke", "nizkieke", "lieke", "lizkieke", "genieke", "genizkieke",
"liekete", "lizkiekete", "nazake", "nazakete", "dezaket", "dezake", "dezakegu", "dezakete", "gaitzake", "gaitzakete", "ditzaket", "ditzake", "ditzakegu", "ditzakete", "nintzakeen", "nintzaketen", "nezakeen",
"zezakeen", "genezakeen", "zezaketen", "gintzakeen", "gintzaketen", "nitzakeen", "zitzakeen", "genitzakeen", "zitzaketen", "nintzake", "nintzakete", "nezake", "lezake", "genezake", "lezakete", "gintzake", "gintzakete",
"nitzake", "litzake", "genitzake", "litzakete", "diezadake", "diezazkidake", "diezadakete", "diezazkidakete", "diezaioket", "diezazkioket", "diezaioke", "diezazkioke", "diezaiokegu", "diezazkiokegu", "diezaiokete", "diezazkiokete", "diezaguke",
"diezazkiguke", "diezagukete", "diezazkigukete", "diezaieket", "diezazkieket", "diezaieke", "diezazkieke", "diezaiekegu", "diezazkiekegu", "diezaiekete", "diezazkiekete", "ziezadakeen", "ziezazkidakeen", "ziezadaketen", "ziezazkidaketen", "niezaiokeen", "niezazkiokeen",
"ziezaiokeen", "ziezazkiokeen", "geniezaiokeen", "geniezazkiokeen", "ziezaioketen", "ziezazkioketen", "ziezagukeen", "ziezazkigukeen", "ziezaguketen", "ziezazkiguketen", "niezaiekeen", "niezazkiekeen", "ziezaiekeen", "ziezazkiekeen", "geniezaiekeen", "geniezazkiekeen", "ziezaieketen",
"ziezazkieketen", "liezadake", "liezazkidake", "liezadakete", "liezazkidakete", "niezaioke", "niezazkioke", "liezaioke", "liezazkioke", "geniezaioke", "geniezazkioke", "liezaiokete", "liezazkiokete", "liezaguke", "liezazkiguke", "liezagukete", "liezazkigukete",
"niezaieke", "niezazkieke", "liezaieke", "liezazkieke", "geniezaieke", "geniezazkieke", "liezaiekete", "liezazkiekete", "dirot", "diro", "dirogu", "dirote", "niroen", "ziroen", "geniroen", "ziroten", "niro",
"liro", "geniro", "lirote", "nago", "dago", "gaude", "daude", "nagoke", "dagoke", "gaudeke", "daudeke", "nengoen", "zegoen", "geunden", "zeuden", "nengokeen", "zegokeen",
"geundekeen", "zeudekeen", "nengoke", "legoke", "geundeke", "leudeke", "nagokio", "nagokie", "dagokit", "dagokio", "dagokigu", "dagokie", "gagozkio", "gagozkie", "dagozkit", "dagozkio", "dagozkigu",
"dagozkie", "nagokioke", "nagokieke", "dagokidake", "dagokioke", "dagokiguke", "dagokieke", "gagozkioke", "gagozkieke", "dagozkidake", "dagozkioke", "dagozkiguke", "dagozkieke", "nengokion", "nengokien", "zegokidan", "zegokion",
"zegokigun", "zegokien", "gengozkion", "gengozkien", "zegozkidan", "zegozkion", "zegozkigun", "zegozkien", "nengokiokeen", "nengokiekeen", "zegokidakeen", "zegokiokeen", "zegokigukeen", "zegokiekeen", "gengozkiokeen", "gengozkiekeen", "zegozkidakeen",
"zegozkiokeen", "zegozkigukeen", "zegozkiekeen", "nengokioke", "nengokieke", "legokidake", "legokioke", "legokiguke", "legokieke", "gengozkioke", "gengozkieke", "legozkidake", "legozkioke", "legozkiguke", "legozkieke", "nator", "dator",
"gatoz", "datoz", "natorke", "datorke", "gatozke", "datozke", "nentorren", "zetorren", "gentozen", "zetozen", "nentorkeen", "zetorkeen", "gentozkeen", "zetozkeen", "nentorke", "letorke", "gentozke",
"letozke", "natorkio", "natorkie", "datorkit", "datorkio", "datorkigu", "datorkie", "gatozkio", "gatozkie", "datozkit", "datozkio", "datozkigu", "datozkie", "natorkioke", "natorkieke", "datorkidake", "datorkioke",
"datorkiguke", "datorkieke", "gatozkioke", "gatozkieke", "datozkidake", "datozkioke", "datozkiguke", "datozkieke", "nentorkion", "nentorkien", "zetorkidan", "zetorkion", "zetorkigun", "zetorkien", "gentozkion", "gentozkien", "zetozkidan",
"zetozkion", "zetozkigun", "zetozkien", "nentorkiokeen", "nentorkiekeen", "zetorkidakeen", "zetorkiokeen", "zetorkigukeen", "zetorkiekeen", "gentozkiokeen", "gentozkiekeen", "zetozkidakeen", "zetozkiokeen", "zetozkigukeen", "zetozkiekeen", "nentorkioke", "nentorkieke",
"letorkidake", "letorkioke", "letorkiguke", "letorkieke", "gentozkioke", "gentozkieke", "letozkidake", "letozkioke", "letozkiguke", "letozkieke", "nabil", "dabil", "gabiltza", "dabiltza", "nabilke", "dabilke", "gabilzke",
"dabilzke", "nenbilen", "zebilen", "genbiltzan", "zebiltzan", "nenbilkeen", "zebilkeen", "genbilzkeen", "zebilzkeen", "nenbilke", "lebilke", "genbilzke", "lebilzke", "nabilkio", "nabilkie", "dabilkit", "dabilkio",
"dabilkigu", "dabilkie", "gabilzkio", "gabilzkie", "dabilzkit", "dabilzkio", "dabilzkigu", "dabilzkie", "nabilkioke", "nabilkieke", "dabilkidake", "dabilkioke", "dabilkiguke", "dabilkieke", "gabilzkioke", "gabilzkieke", "dabilzkidake",
"dabilzkioke", "dabilzkiguke", "dabilzkieke", "nenbilkion", "nenbilkien", "zebilkidan", "zebilkion", "zebilkigun", "zebilkien", "genbilzkion", "genbilzkien", "zebilzkidan", "zebilzkion", "zebilzkigun", "zebilzkien", "nenbilkiokeen", "nenbilkiekeen",
"zebilkidakeen", "zebilkiokeen", "zebilkigukeen", "zebilkiekeen", "genbilzkiokeen", "genbilzkiekeen", "zebilzkidakeen", "zebilzkiokeen", "zebilzkigukeen", "zebilzkiekeen", "nenbilkioke", "nenbilkieke", "lebilkidake", "lebilkioke", "lebilkiguke", "lebilkieke", "genbilzkioke",
"genbilzkieke", "lebilzkidake", "lebilzkioke", "lebilzkiguke", "lebilzkieke", "noa", "doa", "goaz", "doaz", "noake", "doake", "goazke", "doazke", "nindoan", "zihoan", "gindoazen", "zihoazen",
"nindoakeen", "zihoakeen", "gindoazkeen", "zihoazkeen", "nindoake", "lihoake", "gindoazke", "lihoazke", "noakio", "noakie", "doakit", "dihoakit", "doakio", "dihoakio", "doakigu", "dihoakigu", "doakie",
"dihoakie", "goazkio", "goazkie", "doazkit", "dihoazkit", "doazkio", "dihoazkio", "doazkigu", "dihoazkigu", "doazkie", "dihoazkie", "noakioke", "noakieke", "doakidake", "dihoakidake", "doakioke", "dihoakioke",
"doakiguke", "dihoakiguke", "doakieke", "dihoakieke", "goazkioke", "goazkieke", "doazkidake", "dihoazkidake", "doazkioke", "dihoazkioke", "doazkiguke", "dihoazkiguke", "doazkieke", "dihoazkieke", "nindoakion", "nindoakien", "zihoakidan",
"zihoakion", "zihoakigun", "zihoakien", "gindoazkion", "gindoazkien", "zihoazkidan", "zihoazkion", "zihoazkigun", "zihoazkien", "nindoakiokeen", "nindoakiekeen", "zihoakidakeen", "zihoakiokeen", "zihoakigukeen", "zihoakiekeen", "gindoazkiokeen", "gindoazkiekeen",
"zihoazkidakeen", "zihoazkiokeen", "zihoazkigukeen", "zihoazkiekeen", "nindoakioke", "nindoakieke", "lihoakidake", "lihoakioke", "lihoakiguke", "lihoakieke", "gindoazkioke", "gindoazkieke", "lihoazkidake", "lihoazkioke", "lihoazkiguke", "lihoazkieke", "natxekio",
"natxekie", "datxekit", "datxekio", "datxekigu", "datxekie", "gatxezkio", "gatxezkie", "datxezkit", "datxezkio", "datxezkigu", "datxezkie", "nentxekion", "nentxekien", "zetxekidan", "zetxekion", "zetxekigun", "zetxekien",
"gentxezkion", "gentxezkien", "zetxezkidan", "zetxezkion", "zetxezkigun", "zetxezkien", "nentxekioke", "nentxekieke", "letxekidake", "letxekioke", "letxekiguke", "letxekieke", "gentxezkioke", "gentxezkieke", "letxezkidake", "letxezkioke", "letxezkiguke",
"letxezkieke", "narraio", "narraie", "darrait", "darraio", "darraigu", "darraie", "garraizkio", "garraizkie", "darraizkit", "darraizkio", "darraizkigu", "darraizkie", "ninderraion", "ninderraien", "zerraidan", "zerraion",
"zerraigun", "zerraien", "ginderrazkion", "ginderrazkien", "zerraizkidan", "zerraizkion", "zerraizkigun", "zerraizkien", "ninderraioke", "ninderraieke", "lerraidake", "lerraioke", "lerraiguke", "lerraieke", "ginderrazkioke", "ginderraizkieke", "lerraizkidake",
"lerraizkioke", "lerraizkiguke", "lerraizkieke", "nakio", "nakie", "dakio", "dakie", "gakizkio", "gakizkie", "dakizkio", "dakizkie", "nenkion", "nenkien", "zekion", "zekien", "genkizkion", "genkizkien",
"zekizkion", "darit", "dario", "darigu", "darie", "darizkit", "darizkio", "darizkigu",
"darizkie", "zeridan", "zerion", "zerigun", "zerien", "zerizkidan", "zerizkion", "zerizkigun", "zerizkien", "leridake", "lerioke", "leriguke", "lerieke", "lerizkidake", "lerizkioke", "lerizkiguke", "lerizkieke",
"natza", "datza", "gautza", "dautza", "nentzan", "zetzan", "geuntzan", "zeutzan", "nentzake", "letzake", "geuntzake", "leutzake", "nauka", "naukate", "daukat", "dauka", "daukagu",
"daukate", "gauzka", "gauzkate", "dauzkat", "dauzka", "dauzkagu", "dauzkate", "nindukan", "nindukaten", "neukan", "zeukan", "geneukan", "zeukaten", "ginduzkan", "ginduzkaten", "neuzkan", "zeuzkan",
"geneuzkan", "zeuzkaten", "nindukake", "nindukakete", "neukake", "leukake", "geneukake", "leukakete", "ginduzkake", "ginduzkakete", "neuzkake", "leuzkake", "geneuzkake", "leuzkakete", "nakar", "nakarte", "dakart",
"dakar", "dakargu", "dakarte", "gakartza", "gakartzate", "dakartzat", "dakartza", "dakartzagu", "dakartzate", "nindekarren", "nindekarten", "nekarren", "zekarren", "genekarren", "zekarten", "gindekartzan", "gindekartzaten",
"nekartzan", "zekartzan", "genekartzan", "zekartzaten", "dakarkit", "dakarzkit", "dakarkidate", "dakarzkidate", "dakarkiot", "dakarzkiot", "dakarkio", "dakarzkio", "dakarkiogu", "dakarzkiogu", "dakarkiote", "dakarzkiote", "dakarkigu",
"dakarzkigu", "dakarkigute", "dakarzkigute", "dakarkiet", "dakarzkiet", "dakarkie", "dakarzkie", "dakarkiegu", "dakarzkiegu", "dakarkiete", "dakarzkiete", "zekarkidan", "zekarzkidan", "zekarkidaten", "zekarzkidaten", "nekarkion", "nekarzkion",
"zekarkion", "zekarzkion", "genekarkion", "genekarzkion", "zekarkioten", "zekarzkioten", "zekarkigun", "zekarzkigun", "zekarkiguten", "zekarzkiguten", "nekarkien", "nekarzkien", "zekarkien", "zekarzkien", "genekarkien", "genekarzkien", "zekarkieten",
"zekarzkieten", "narama", "naramate", "daramat", "darama", "daramagu", "daramate", "garamatza", "garamatzate", "daramatzat", "daramatza", "daramatzagu", "daramatzate", "ninderaman", "ninderamaten", "neraman", "zeraman",
"generaman", "zeramaten", "ginderamatzan", "ginderamatzaten", "neramatzan", "zeramatzan", "generamatzan", "zeramatzaten", "daramakit", "daramazkit", "daramakidate", "daramazkidate", "daramakiot", "daramazkiot", "daramakio", "daramazkio", "daramakiogu",
"daramazkiogu", "daramakiote", "daramazkiote", "daramakigu", "daramazkigu", "daramakigute", "daramazkigute", "daramakiet", "daramazkiet", "daramakie", "daramazkie", "daramakiegu", "daramazkiegu", "daramakiete", "daramazkiete", "zeramakidan", "zeramazkidan",
"zeramakidaten", "zeramazkidaten", "neramakion", "neramazkion", "zeramakion", "zeramazkion", "generamakion", "generamazkion", "zeramakioten", "zeramazkioten", "zeramakigun", "zeramazkigun", "zeramakiguten", "zeramazkiguten", "neramakien", "neramazkien", "zeramakien",
"zeramazkien", "generamakien", "generamazkien", "zeramakieten", "zeramazkieten", "narabil", "narabilte", "darabilt", "darabil", "darabilgu", "darabilte", "garabiltza", "garabiltzate", "darabiltzat", "darabiltza", "darabiltzagu", "darabiltzate",
"ninderabilen", "ninderabilten", "nerabilen", "zerabilten", "generabilen", "zerabilen", "ginderabiltzan", "ginderabiltzaten", "nerabiltzan", "zerabiltzan", "generabiltzan", "zerabiltzaten", "darabilkit", "darabilzkit", "darabilkidate", "darabilzkidate", "darabilkiot",
"darabilzkiot", "darabilkio", "darabilzkio", "darabilkiogu", "darabilzkiogu", "darabilkiote", "darabilzkiote", "darabilkigu", "darabilzkigu", "darabilkigute", "darabilzkigute", "darabilkiet", "darabilzkiet", "darabilkie", "darabilzkie", "darabilkiegu", "darabilzkiegu",
"darabilkiete", "darabilzkiete", "zerabilkidan", "zerabilzkidan", "zerabilkidaten", "zerabilzkidaten", "nerabilkion", "nerabilzkion", "zerabilkion", "zerabilzkion", "generabilkion", "generabilzkion", "zerabilkioten", "zerabilzkioten", "zerabilkigun", "zerabilzkigun", "zerabilkiguten",
"zerabilzkiguten", "nerabilkien", "nerabilzkien", "zerabilkien", "zerabilzkien", "generabilkien", "generabilzkien", "zerabilkieten", "zerabilzkieten", "nazagu", "nazagute", "dazagut", "dazagu", "dazagugu", "dazagute", "gazaguzki", "gazaguzkite",
"dazaguzkit", "dazaguzki", "dazaguzkigu", "dazaguzkite", "nindezaguen", "nindezaguten", "nezaguen", "zezaguen", "genezaguen", "zezaguten", "gindezaguzkien", "gindezaguzkiten", "nezaguzkien", "zezaguzkien", "genezaguzkien", "zezaguzkiten", "nindezaguke",
"nindezagukete", "nezaguke", "lezaguke", "genezaguke", "lezagukete", "gindezaguzke", "gindezaguzkete", "nezaguzke", "lezaguzke", "genezaguzke", "lezaguzkete", "dagit", "dagi", "dagigu", "dagite", "dagitzat", "dagitza",
"dagitzagu", "dagitzate", "negien", "zegien", "genegien", "zegiten", "negitzan", "zegitzan", "genegitzan", "zegitzaten", "negike", "legike", "genegike", "legikete", "negitzake", "legitzake", "genegitzake",
"legitzakete", "degit", "degizkit", "degidate", "degizkidate", "degiot", "degizkiot", "degio", "degizkio", "degiogu", "degizkiogu", "degiote", "degizkiote", "degigu", "degizkigu", "degigute", "degizkigute",
"degiet", "degizkiet", "degie", "degizkie", "degiegu", "degizkiegu", "degiete", "degizkiete", "zegidan", "zegizkidan", "zegidaten", "zegizkidaten", "negion", "negizkion", "zegion", "zegizkion", "genegion",
"genegizkion", "zegioten", "zegizkioten", "zegigun", "zegizkigun", "zegiguten", "zegizkiguten", "negizkien", "zegizkien", "genegizkien", "zegieten", "zegizkieten", "legidake", "legizkidake",
"legidakete", "legizkidakete", "negioke", "negizkioke", "legioke", "legizkioke", "genegioke", "genegizkioke", "legiokete", "legizkiokete", "legiguke", "legizkiguke", "legigukete", "legizkigukete", "negieke", "negizkieke", "legieke",
"legizkieke", "genegieke", "genegizkieke", "legiekete", "legizkiekete", "dakusat", "dakusa", "dakusagu", "dakusate", "dakuskit", "dakuski", "dakuskigu", "dakuskite", "nekusan", "zekusan", "genekusan", "zekusaten",
"nekuskien", "zekuskien", "genekuskien", "zekuskiten", "nekuske", "lekuske", "genekuske", "lekuskete", "nekusazke", "lekusazke", "genekusazke", "lekusazkete", "dakit", "daki", "dakigu", "dakite", "dakizkit",
"dakizki", "dakizkigu", "dakizkite", "nekien", "genekien", "zekiten", "nekizkien", "zekizkien", "genekizkien", "zekizkiten", "nekike", "lekike", "genekike", "lekikete", "nekizke", "lekizke",
"genekizke", "lekizkete", "dantzut", "dantzu", "dantzugu", "dantzute", "dantzuzkit", "dantzuzki", "dantzuzkigu", "dantzuzkite", "nentzuen", "zentzuen", "genentzuen", "zentzuten", "nentzuzkien", "zentzuzkien", "genentzuzkien",
"zentzuzkiten", "nentzuke", "lentzuke", "genentzuke", "lentzukete", "nentzuzke", "lentzuzke", "genentzuzke", "lentzuzkete", "darakutsat", "darakutsa", "darakutsagu", "darakutsate", "darakuskit", "darakuski", "darakuskigu", "darakuskite",
"nerakutsan", "zerakutsan", "generakutsan", "zerakutsaten", "nerakuskien", "zerakuskien", "generakuskien", "zerakuskiten", "nerakuske", "lerakuske", "generakuske", "lerakuskete", "nerakutsazke", "lerakutsazke", "generakutsazke", "lerakutsazkete", "daroat",
"daroa", "daroagu", "daroate", "daroatzat", "daroatza", "daroatzagu", "daroatzate", "neroan", "zeroan", "generoan", "zeroaten", "neroatzan", "zeroatzan", "generoatzan", "zeroatzaten", "neroake", "leroake",
"generoake", "leroakete", "neroazke", "leroazke", "generoazke", "leroazkete", "dihardut", "dihardu", "dihardugu", "dihardute", "niharduen", "ziharduen", "geniharduen", "ziharduten", "niharduke", "liharduke", "geniharduke",
"lihardukete", "dihardukat", "diharduka", "dihardukagu", "dihardukate", "nihardukan", "zihardukan", "genihardukan", "zihardukaten", "nihardukake", "lihardukake", "genihardukake", "lihardukakete", "derauntso", "derauntsote", "derauntse", "derauntsete",
"zerauntson", "zerauntsoten", "zerauntsen", "zerauntseten", "lerauntsoke", "lerauntsokete", "lerauntseke", "lerauntsekete", "deutso", "deutsote", "deutse", "deutsete", "zeutson", "zeutsoten", "zeutsen", "zeutseten", "leutsoke",
"leutsokete", "leutseke", "leutsekete", "diraut", "dirau", "diraugu", "diraute", "nirauen", "zirauen", "genirauen", "zirauten", "nirauke", "lirauke", "genirauke", "liraukete", "dirudit", "dirudi",
"dirudigu", "dirudite", "nirudien", "zirudien", "genirudien", "ziruditen", "nirudike", "lirudike", "genirudike", "lirudikete", "derizt", "deriztate", "deritzote", "deritzate", "derizku", "derizkute", "deritzet",
"deriztet", "deritze", "derizte", "deritzegu", "deriztegu", "deritzete", "deriztete", "zeriztan", "zeriztaten", "zeritzon", "zeritzan", "generitzon", "generitzan", "zeritzoten", "zeritzaten", "zerizkun", "zerizkuten",
"neritzen", "nerizten", "zeritzen", "zerizten", "generitzen", "generizten", "zeritzeten", "zerizteten", "leriztake", "leriztakete", "neritzoke", "neritzake", "leritzoke", "leritzake", "generitzoke", "generitzake", "leritzokete",
"leritzakete", "lerizkuke", "lerizkukete", "neritzeke", "nerizteke", "leritzeke", "lerizteke", "generitzeke", "generizteke", "leritzekete", "leriztekete", "diodaz", "dioz",
"dioguz", "diotez", "nioen", "zioen", "genioen", "niozen", "ziozen", "geniozen", "ziotezen", "diost", "diostaz", "diostate", "diostatez", "diosku", "dioskuz", "dioskute",
"dioskutez", "diotset", "diotsedaz", "diotse", "diotsez", "diotsegu", "diotseguz", "diotsete", "diotsetez", "ziostan", "ziostazen", "ziostaten", "ziostatezen", "ziotsotezen", "ziotsatezen", "zioskun", "zioskuzen",
"zioskuten", "zioskutezen", "niotsen", "niotsezen", "ziotsen", "ziotsezen", "geniotsen", "geniotsezen", "ziotseten", "ziotsetezen", "nerrake", "lerrake", "generrake", "lerrakete"
}

local manual = {naizateke = {"naukek", "nauken"}, dateke = {"dukek", "duken"}, garateke = {"gaituzkek", "gaituzken"}, dirateke = {"dituzkek", "dituzken"}, 
	nintzen = {"ninduan", "nindunan"}, zen = {"zuan", "zunan"}, ginen = {"gintuan", "gintunan"}, ziren = {"zituan", "zitunan"},
	nintzatekeen = {"nindukean", "nindukenan"}, zatekeen = {"zukean", "zukenan"}, ginatekeen = {"gintuzkean", "gintuzkenan"}, ziratekeen = {"zituzkean", "zituzkenan"},
	nintzateke = {"nindukek", "ninduken"}, litzateke = {"lukek", "luken"}, ginateke = {"gintuzkek", "gintuzken"}, lirateke = {"lituzkek", "lituzken"},
	ditut = {"ditiat", "ditinat"}, ditu = {"ditik", "ditin"}, ditugu = {"ditiagu", "ditinagu"},
	genukeen = {"genikean", "genikenan"}, zuketen = {"ziketean", "ziketenan"}, zuten = {"zitean", "zitenan"}, zukeen = {"zikean", "zikenan"},
	naiz = {"nauk", "naun"}, da = {"duk", "dun"}, gara = {"gaituk", "gaitun"}, dira = {"dituk", "ditun"},
	nau = {"naik", "nain"}, naute = {"naitek", "naiten"}, dut = {"diat", "dinat"}, du = {"dik", "din"}, 
	dugu = {"diagu", "dinagu"}, dute = {"ditek", "diten"}, gaitu = {"gaitik", "gaitin"}, gaituzte = {"gaitiztek", "gaitizten"}
}

-- The following forms have the same allocutive forms, even when they belong to different verbs:
-- nenkioke, nenkieke, lekioke, lekieke, genkizkioke, genkizkieke, lekizkioke, lekizkieke 
-- diot, diogu, diote, zioten

local duplicate_verbs = { 
	negien = { = {"negian", "neginan"},  = {"negiean", "negienan"}},
	zegien = { = {"zegian", "zeginan"},  = {"zegiean", "zegienan"}},
	genegien = { = {"genegian", "geneginan"},  = {"genegiean", "genegienan"}},
	zekizkien = {jakin = {"zekizkian", "zekizkinan"}, ekin = {"zekizkiean", "zekizkienan"}},
	zekien = {jakin = {"zekian", "zekinan"}, ekin = {"zekiean", "zekienan"}},
	dio = {esan = {"ziok", "ziona"}, aux = {"ziok", "zion"}},
}

-- match multiple patterns
local function find_list(word, list)
	for _, pat in ipairs(list) do
		if rfind(word, pat) then
			return true
		end
	end
	return false
end

--verb forms
function export.generate_allocutive(word, verb)
	--duplicate forms
	if duplicate_verbs then
		if not verb then
			error("The verb form '" .. word  .. "' is ambiguous, please supply the lemma form.")
		elseif duplicate_verbs then
			return {duplicate_verbs}, {duplicate_verbs}
		else
			error("The list of valid verbs does not contain '" .. verb .. "'.")
		end
	end
	
	---- other manual forms
	if manual then
		return {manual}, {manual}
	end

	local m_all, f_all = nil, nil
	if valid_words then
		if rfind(word, "ke$") or rfind(word, "kete$") then
			m_all, f_all = word .. "k", word .. "n"
		elseif rfind(word, "ket$") then
			m_all, f_all = rsub(word, "ket$", "keat"), rsub(word, "ket$", "kenat")
		elseif rfind(word, "kegu$") then
			m_all, f_all = rsub(word, "kegu$", "keagu"), rsub(word, "kegu$", "kenagu")
		elseif rfind(word, "keen$") then
			m_all, f_all = rsub(word, "keen$", "kean"), rsub(word, "keen$", "kenan")
		elseif rfind(word, "tzen$") then
			m_all, f_all = rsub(word, "en$", "ean"), word .. "an"
		elseif rfind(word, "zen$") then
			m_all, f_all = rsub(word, "zen$", "zaan"), rsub(word, "zen$", "zanan")
		elseif rfind(word, "txekien$") then --atxeki
			m_all, f_all = rsub(word, "en$", "ean"), word .. "an"
		elseif find_list(word, {"dien$", "oen$", "kuskien$", "auen$", "entzuen$", "entzuzkien$", "iharduen$", "ekien$", "ekizkien$", "ezaguzkien$", "ezaguen$"}) then
			m_all, f_all = rsub(word, "en$", "an"), rsub(word, "en$", "nan")
		elseif rfind(word, "uen$") and not (find_list(word, {"irauen$", "iharduen$", "entzuen$", "ezaguen$"})) then --we have to exclude forms of iraun/ihardun/entzun/ezagutu ending in -auen
			m_all, f_all = rsub(word, "uen$", "ian"), rsub(word, "uen$", "inan")
		elseif rfind(word, "en$") then
			m_all, f_all = rsub(word, "en$", "ean"), word .. "an"
		elseif rfind(word, "n$") then
			m_all, f_all = rsub(word, "n$", "an"), word .. "an"
		-- esan
		elseif find_list(word, {"^dios", "^diots", "^diodaz$", "^dioz$", "^dioguz$", "^diotez$"}) then
			if rfind(word, "et$") then
				m_all, f_all = rsub(word, "et$", "eat"), rsub(word, "et$", "enat")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "ak", word .. "an"
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- egin (NOR-NORK), erakutsi, ikusi
		elseif find_list(word, {"^dagi", "^daraku", "^dakus"}) then
			if rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			else
				m_all, f_all = nil, nil
			end
		-- egin (NOR-NORI-NORK)
		elseif rfind(word, "^degi") then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "dak"), rsub(word, "t$", "dan")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- iritzi, iro-
		elseif find_list(word, {"^derit?z", "^iro", "^geniro$"}) then
			if rfind(word, "zt$") then
				m_all, f_all = word .. "ak", word .. "an"
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- eutsi, erauntsi and ekin
		elseif find_list(word, {"^deuts", "^deraunts", "^ak.*i$"}) then
			if rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- irudi, jakin
		elseif find_list(word, {"^dirud", "^daki"}) then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			else
				m_all, f_all = nil, nil
			end
		-- iraun
		elseif rfind(word, "^dirau") then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- iharduki, ihardun
		elseif rfind(word, "^dihardu") then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- ezagutu
		elseif rfind(word, "^azagu") or rfind(word, "^antzu") then
			if rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			else
				m_all, f_all = nil, nil
			end
		-- eraman, eduki, etzan, eroan, erabili
		elseif find_list(word, {"^arama", "^auz?k", "^au?tz", "^daroa", "^arabil"}) then
			if rfind(word, "lt$") then
				m_all, f_all = rsub(word, "lt$", "leat"), rsub(word, "lt$", "lenat")
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "l$") then
				m_all, f_all = word .. "ek", word .. "en"
			elseif rfind(word, "lgu$") then
				m_all, f_all = rsub(word, "lgu$", "leagu"), rsub(word, "lgu$", "lenagu")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		
		-- ibili, egon, etorri, jario, jarraiki, atxeki, joan, nor-nori pres.
		elseif find_list(word, {
			"^abil", "^agoz?ki", "^ago$", "aude$", "^atoki", "^ator$", "atoz$", "^dari", "^arrai", "^atxez?ki", 
			"^oaz?ki", "^oa$", "oaz$", "^dihoaz?ki", "^zai"
		}) then
			if rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "dak"), rsub(word, "t$", "dan")
			elseif rfind(word, "l$") then --only used in ibili
				m_all, f_all = word .. "ek", word .. "en"
			elseif rfind(word, "z$") then
				m_all, f_all = word .. "ak", word .. "an"
			elseif rfind(word, "r$") then
				m_all, f_all = word .. "rek", word .. "ren"
			else
				m_all, f_all = nil, nil
			end
		-- iraun
		elseif rfind(word, "^dirau") then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- nor-nori-nork auxiliary, ekarri nor-nori-nork
		elseif find_list(word, {"^di", "^akarz?k"}) then
			if rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "dak"), rsub(word, "t$", "dan")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		-- ekarri (NOR NORK)
		elseif rfind(word, "^akar") then
			if rfind(word, "r$") then
				m_all, f_all = word .. "rek", word .. "ren"
			elseif rfind(word, "rgu$") then
				m_all, f_all = rsub(word, "rgu$", "rreagu"), rsub(word, "rgu$", "rrenagu")
			elseif rfind(word, "gu$") then
				m_all, f_all = rsub(word, "gu$", "agu"), rsub(word, "gu$", "nagu")
			elseif rfind(word, "rt$") then
				m_all, f_all = rsub(word, "rt$", "rreat"), rsub(word, "rt$", "rrenat")
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "at"), rsub(word, "t$", "nat")
			elseif rfind(word, "t$") then
				m_all, f_all = rsub(word, "t$", "dak"), rsub(word, "t$", "dan")
			elseif rfind(word, "$") then
				m_all, f_all = word .. "k", word .. "n"
			else
				m_all, f_all = nil, nil
			end
		end 
	end	
	
	-- ituz -> itiz
	if m_all and rfind(word, "in?tuz") then
		m_all = rsub(m_all, "i(n?)tuz", "i%1tiz")
		f_all = rsub(f_all, "i(n?)tuz", "i%1tiz")
	end
	
	-- nindu -> nindi (not in ninduka-)
	if m_all and rfind(word, "^nindu?e") then
		m_all = rsub(m_all, "^nindu(?)e", "nindi%1e")
		f_all = rsub(f_all, "^nindu(?)e", "nindi%1e")
	elseif m_all and rfind(word, "^duke") then
		m_all = rsub(m_all, "^duke", "dike")
		f_all = rsub(f_all, "^duke", "dike")
	elseif m_all and rfind(word, "^nauke") then
		m_all = rsub(m_all, "^nauke", "naike")
		f_all = rsub(f_all, "^nauke", "naike")
	elseif m_all and rfind(word, "^ukee") then
		m_all = rsub(m_all, "^()u", "ni")
		f_all = rsub(f_all, "^()u", "ni")
	elseif m_all and find_list(word, {"^uke$", "^genuke$", "^lukete$"}) then
		m_all = rsub(m_all, "u", "i")
		f_all = rsub(f_all, "u", "i")		
	end

	--forms in which d- -> d- (they don't change to z-)
	local d_patterns = {"^ditzk", "^ditu", "^du", "^daki.*ke$", "^d.*tez?ke$", "^da$", "^dira$"}
	if m_all and (find_list(word, d_patterns) == false) then
		m_all = rsub(m_all, "^d", "z")
		f_all = rsub(f_all, "^d", "z")
	end
	
	--alternative forms with ze-
	local patterns = {
	    "^zabil", "^zago", "^zaud", "^zato", "^zari", "^zarrai", "^zatxez?ki", -- ibili, egon, etorri, jario, jarraiki, atxeki
	    "^zagi", "^zaraku", "^zakus", --egin, erakutsi, ikusi
	    "^zazagu",
	    "^zarama", "^zauz?ka", "^zau?tza", "zaroa",	"^zarabil", --verb eraman, eduki, etzan, eroan, erabili
	    "^zakar",
	    "^zantzu",
	    "^zak" --ekin, jakin
	}

	if m_all and find_list(m_all, patterns) then
	    local m_za = m_all
		local m_ze = rsub(m_all, "^za", "ze")
		local f_za = f_all
		local f_ze = rsub(f_all, "^za", "ze")
		m_all = {m_za, m_ze}
		f_all = {f_za, f_ze}
	end
	
	--turn the results into arrays (if they aren't arrays already)
	if m_all and type(m_all) ~= "table" then
		m_all = {m_all}
		f_all = {f_all}
	end
	
	return m_all, f_all
end

return export