<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.allocosm.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vaxjedi</id>
	<title>Allocosm - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.allocosm.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vaxjedi"/>
	<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/page/Special:Contributions/Vaxjedi"/>
	<updated>2026-05-15T23:39:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Template:Interlinear/styles.css&amp;diff=334</id>
		<title>Template:Interlinear/styles.css</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Template:Interlinear/styles.css&amp;diff=334"/>
		<updated>2024-04-07T03:03:38Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;/* {{pp-template}} ------------------------------------------ 	-- use in the &amp;#039;classN&amp;#039; parameter 	------------------------------------------ */ .interlinear .bold { 	font-weight: bold; }  /* &amp;quot;font-variant:small-caps;&amp;quot; ignores oddball letters (such as ḥ)    &amp;quot;text-transform: uppercase;&amp;quot; handles them */ .interlinear .smallcaps { 	text-transform: uppercase; 	font-size: smaller; }&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template}}&lt;br /&gt;
------------------------------------------&lt;br /&gt;
	-- use in the &#039;classN&#039; parameter&lt;br /&gt;
	------------------------------------------ */&lt;br /&gt;
.interlinear .bold {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;font-variant:small-caps;&amp;quot; ignores oddball letters (such as ḥ)&lt;br /&gt;
   &amp;quot;text-transform: uppercase;&amp;quot; handles them */&lt;br /&gt;
.interlinear .smallcaps {&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: smaller;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Test/Interlinear/styles.css&amp;diff=333</id>
		<title>Test/Interlinear/styles.css</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Test/Interlinear/styles.css&amp;diff=333"/>
		<updated>2024-04-05T21:23:06Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;/* {{pp-template}} ------------------------------------------ 	-- use in the &amp;#039;classN&amp;#039; parameter 	------------------------------------------ */ .interlinear .bold { 	font-weight: bold; }  /* &amp;quot;font-variant:small-caps;&amp;quot; ignores oddball letters (such as ḥ)    &amp;quot;text-transform: uppercase;&amp;quot; handles them */ .interlinear .smallcaps { 	text-transform: uppercase; 	font-size: smaller; }&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template}}&lt;br /&gt;
------------------------------------------&lt;br /&gt;
	-- use in the &#039;classN&#039; parameter&lt;br /&gt;
	------------------------------------------ */&lt;br /&gt;
.interlinear .bold {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;quot;font-variant:small-caps;&amp;quot; ignores oddball letters (such as ḥ)&lt;br /&gt;
   &amp;quot;text-transform: uppercase;&amp;quot; handles them */&lt;br /&gt;
.interlinear .smallcaps {&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: smaller;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Test&amp;diff=332</id>
		<title>Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Test&amp;diff=332"/>
		<updated>2024-04-05T21:21:57Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{interlinear&lt;br /&gt;
|Nginda-rni ngaja-mi jurliji-rdarra diyim ka-rdu&lt;br /&gt;
|DEM(M)-FOC see-IRR bird-PL fly 3SG-go&lt;br /&gt;
|&#039;Look at all the birds flying!&#039;}}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Interlinear&amp;diff=331</id>
		<title>Module:Interlinear</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Interlinear&amp;diff=331"/>
		<updated>2024-04-05T21:21:10Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local data = mw.loadData( &#039;Module:Interlinear/data&#039; )&lt;br /&gt;
local gloss_override = {} -- for custom gloss abbreviations&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
--local lang_data = mw.loadData( &#039;Module:Lang/data&#039; )&lt;br /&gt;
&lt;br /&gt;
--------------------------&lt;br /&gt;
-- Almost-global variables&lt;br /&gt;
--------------------------&lt;br /&gt;
local glossing_type, displaying_messages, free_translation, msg, buffer&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
-- General settings&lt;br /&gt;
-------------------&lt;br /&gt;
local conf = { --settings&lt;br /&gt;
	WordSeparator = &amp;quot; \n\r\t&amp;quot;, -- Don&#039;t replace with %s as this would include non-breaking spaces&lt;br /&gt;
	GlossAbbrPattern = &amp;quot;^([Ø0-9A-Z]+)$&amp;quot;, -- this isn&#039;t a full regex, but a Lua pattern&lt;br /&gt;
	-- NOTE: The following characters must be formatted for use in a pattern set.&lt;br /&gt;
	GlossAbbrBoundary = &amp;quot;-.,;:&amp;lt;&amp;gt;‹›/\\~+=%?%s%[%]()%_\127&#039;&amp;quot;,&lt;br /&gt;
	GlossExcludeTable = {I = true,}, --strings not be treated as glossing abbreviations&lt;br /&gt;
	GlossExcludePattern = &#039;^[0-9][0-9]+$&#039;, -- excludes strings consisting entirely of digits&lt;br /&gt;
	GlossSmallCapsExclude = &amp;quot;^[AOPS]$&amp;quot;, -- glossing abbreviations matching this pattern will not be rendered in small caps&lt;br /&gt;
	GlossingType = &amp;quot;label&amp;quot;, -- if set to &amp;quot;label&amp;quot; gloss abbreviations are formatted as an &amp;lt;abbr&amp;gt; with the &amp;quot;label&amp;quot; appearing in a tooltip&lt;br /&gt;
						-- if set to &amp;quot;wikilink&amp;quot; the abbreviation is formatted as a wikilink to the relevant wikipedia article&lt;br /&gt;
						-- if set to &amp;quot;none&amp;quot; abbreviations aren&#039;t formatted at all&lt;br /&gt;
	ErrorCategory = &amp;quot;[[Category:Pages with errors in interlinear text]]&amp;quot;,&lt;br /&gt;
	AmbiguousGlossCategory = &amp;quot;[[Category:Articles with ambiguous glossing abbreviations]]&amp;quot;,&lt;br /&gt;
	MessageGlossingError = &amp;quot;Error(s) in interlinear glossing&amp;quot;,&lt;br /&gt;
	combining_gender_numbers = &amp;quot;[0-9][0-9]?$&amp;quot;, --e.g. G4 &#039;4th gender&#039; or CL7 &#039;class 7&#039;&lt;br /&gt;
	combining_gender_prefixes = {G = &amp;quot;gender&amp;quot;, CL = &amp;quot;class&amp;quot;},&lt;br /&gt;
	combining_person = {[&amp;quot;1&amp;quot;] = &amp;quot;first person&amp;quot;, [&amp;quot;2&amp;quot;] = &amp;quot;second person&amp;quot;, [&amp;quot;3&amp;quot;] = &amp;quot;third person&amp;quot;},&lt;br /&gt;
	combining_number = {S = &amp;quot;singular&amp;quot;, SG = &amp;quot;singular&amp;quot;, P = &amp;quot;plural&amp;quot;, PL = &amp;quot;plural&amp;quot;, D = &amp;quot;dual&amp;quot;, DU = &amp;quot;dual&amp;quot;, TRI = &amp;quot;trial&amp;quot;},&lt;br /&gt;
	combining_gender = {F = &amp;quot;feminine&amp;quot;, M = &amp;quot;masculine&amp;quot;, N = &amp;quot;neuter&amp;quot;},&lt;br /&gt;
	LowerCaseGlosses = {[&amp;quot;1sg&amp;quot;] = true, [&amp;quot;2sg&amp;quot;] = true, [&amp;quot;3sg&amp;quot;] = true, [&amp;quot;1du&amp;quot;] = true, [&amp;quot;2du&amp;quot;] = true, [&amp;quot;3du&amp;quot;] = true, [&amp;quot;1pl&amp;quot;] = true, [&amp;quot;2pl&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;3pl&amp;quot;] = true, [&amp;quot;Fsg&amp;quot;] = true, [&amp;quot;Fpl&amp;quot;] = true, [&amp;quot;Msg&amp;quot;] = true, [&amp;quot;Mpl&amp;quot;] = true,}, -- these are the non-all-upper-case strings that will be recognised as glossing abbreviations&lt;br /&gt;
	ErrorHelpLocation = &amp;quot;Template:Interlinear&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- CSS styles and classes&lt;br /&gt;
---------------------&lt;br /&gt;
conf.style = { --CSS styles&lt;br /&gt;
	WordDiv = &amp;quot;float: left; margin-bottom: 0.3em;&amp;quot;,&lt;br /&gt;
	WordMargin = &amp;quot;margin-right: 1em;&amp;quot;,&lt;br /&gt;
	WordP = &amp;quot;margin: 0px;&amp;quot;, -- the style for the word &amp;lt;p&amp;gt; elements&lt;br /&gt;
	GlossAbbr = &amp;quot;font-variant: small-caps; font-variant-numeric: oldstyle-nums; text-transform: lowercase; &amp;quot;, -- won&#039;t be applied to gloss abbreviations containing lower-case characters&lt;br /&gt;
	HiddenText = &amp;quot;display: none;&amp;quot;,&lt;br /&gt;
	EndDiv = &amp;quot;clear: left; display: block;&amp;quot;, -- style of the &amp;lt;div&amp;gt; element at the end of the interlinear display&lt;br /&gt;
	ErrorMessage = &amp;quot;font-size: inherit&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
conf.class = { --CSS classes&lt;br /&gt;
	Interlinear = &amp;quot;interlinear&amp;quot;,&lt;br /&gt;
	GlossAbbr  = &amp;quot;gloss-abbr&amp;quot;,&lt;br /&gt;
	GlossAbbrAmb = &amp;quot;gloss-abbr-ambiguous&amp;quot;,&lt;br /&gt;
	GlossAbbrError = &amp;quot;gloss-abbr-error&amp;quot;,&lt;br /&gt;
	ErrorMessage = &amp;quot;error&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
---------------------&lt;br /&gt;
-- Section transclusion&lt;br /&gt;
---------------------&lt;br /&gt;
local page_content = nil -- lazy initilization&lt;br /&gt;
local function get_section(frame, section_name)&lt;br /&gt;
	if page_content == nil then&lt;br /&gt;
		local current_title = mw.title.getCurrentTitle()&lt;br /&gt;
		page_content = current_title:getContent()&lt;br /&gt;
	end&lt;br /&gt;
	if page_content then&lt;br /&gt;
		if mw.ustring.find(page_content, section_name, 1, true) then&lt;br /&gt;
			return frame:preprocess(&#039;{{#section:{{FULLPAGENAME}}|&#039; .. section_name .. &#039;}}&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
---------------------&lt;br /&gt;
-- Sundry small functions&lt;br /&gt;
---------------------&lt;br /&gt;
local function normalise(str)&lt;br /&gt;
	return mw.ustring.gsub(str,&amp;quot;[&amp;quot; .. conf.WordSeparator .. &amp;quot;]+&amp;quot;,&amp;quot; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyCss(str)&lt;br /&gt;
	str = mw.ustring.gsub(str, &#039;^[\&amp;quot;\&#039;]*(.-)[\&amp;quot;\&#039;]*$&#039;, &amp;quot;%1&amp;quot;) -- trims quotation marks&lt;br /&gt;
	if mw.ustring.sub(str, -1) ~= &amp;quot;;&amp;quot; then str = str .. &amp;quot;;&amp;quot; end -- appends &amp;quot;;&amp;quot; if missing&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlight(text)&lt;br /&gt;
	if text then&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;color:#C00;font-weight:bold;&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	else return &amp;quot;&amp;quot; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tone_sup(str)&lt;br /&gt;
	return mw.ustring.gsub(str, &amp;quot;([^%p%s0-9])([0-9]+)&amp;quot;, &amp;quot;%1&amp;lt;sup&amp;gt;%2&amp;lt;/sup&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function is_empty(str) -- returns &amp;quot;false&amp;quot; if its argument is a string containing chars other than spaces &amp;amp;c.&lt;br /&gt;
	if not str then return true end&lt;br /&gt;
	if mw.ustring.find(str, &amp;quot;[^&amp;quot; .. conf.WordSeparator .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		then return false&lt;br /&gt;
	else return true end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function help_link (anchor)&lt;br /&gt;
	if anchor then&lt;br /&gt;
		return &amp;quot; ([[&amp;quot; .. conf.ErrorHelpLocation .. &amp;quot;#&amp;quot; .. anchor .. &amp;quot;|help]])&amp;quot;&lt;br /&gt;
	else return &amp;quot;&amp;quot; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- the following is part of a trial implementation of automatic transliteration:&lt;br /&gt;
local function transliterate (str, lang_from, lang_to,  scheme)&lt;br /&gt;
	local lookup = {grc = {module = &#039;Module:Ancient Greek&#039;, funct = &amp;quot;transliterate&amp;quot;, } }&lt;br /&gt;
	if not lang_from then&lt;br /&gt;
		msg:add(&amp;quot;error&amp;quot;, &amp;quot;Source language for transliteration is not set&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local t = lookup[lang_from]&lt;br /&gt;
		if t then&lt;br /&gt;
			local module = require(t.module)&lt;br /&gt;
			return module[t.funct](str)&lt;br /&gt;
		else msg:add(&amp;quot;error&amp;quot;, &amp;quot;Can&#039;t find transliterator for language &#039;&amp;quot; .. lang_from .. &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end -- end of trial block&lt;br /&gt;
&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following two functions update the glossing settings based on the received&lt;br /&gt;
-- template arguments. set_global_glossing_settings() updates the global settings&lt;br /&gt;
-- that are valid for all gloss abbreviations. set_glossing_type()&lt;br /&gt;
-- returns the glossing type, which can vary between the different lines.&lt;br /&gt;
--------------------&lt;br /&gt;
local function set_global_glossing_settings(a)&lt;br /&gt;
	local style = &amp;quot;&amp;quot;&lt;br /&gt;
	if a.style then style = tidyCss(a.style) end&lt;br /&gt;
	if a.underline == &amp;quot;no&amp;quot; then&lt;br /&gt;
		style = style .. &amp;quot;text-decoration: none;&amp;quot; end&lt;br /&gt;
	if a.small_caps == &amp;quot;no&amp;quot; then&lt;br /&gt;
		style = style .. &amp;quot;font-variant:normal; text-transform: none;&amp;quot; end&lt;br /&gt;
	if style ~= &amp;quot;&amp;quot; then conf.style.GlossAbbr = conf.style.GlossAbbr .. style end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function set_glossing_type(glossing)&lt;br /&gt;
	if glossing then&lt;br /&gt;
		local GlossingType&lt;br /&gt;
		glossing = mw.ustring.lower(mw.text.trim(glossing))&lt;br /&gt;
		if mw.ustring.find(glossing, &#039;link&#039;) then&lt;br /&gt;
			GlossingType = &amp;quot;wikilink&amp;quot;&lt;br /&gt;
		elseif mw.ustring.find(glossing, &#039;label&#039;)&lt;br /&gt;
			or  mw.ustring.find(glossing, &#039;no link&#039;) then&lt;br /&gt;
			GlossingType = &#039;label&#039;&lt;br /&gt;
		elseif mw.ustring.find(glossing, &#039;no abbr&#039;) then&lt;br /&gt;
			GlossingType = &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		elseif yesno(glossing) == false then&lt;br /&gt;
			GlossingType = nil&lt;br /&gt;
		elseif yesno(glossing) then&lt;br /&gt;
			GlossingType = conf.GlossingType&lt;br /&gt;
		else&lt;br /&gt;
			msg:add(&#039;error&#039;, &#039;Glossing type &amp;quot;&#039; .. glossing .. &#039;&amp;quot; not recognised&#039;) end&lt;br /&gt;
		return GlossingType&lt;br /&gt;
	else error(&amp;quot;set_glossing_type: &#039;glossing&#039; is nil or false&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function set_custom_glosses(list)&lt;br /&gt;
	local abbs = mw.text.split(list, &#039;[;\n\t]&#039;)&lt;br /&gt;
	for _,v in pairs(abbs) do&lt;br /&gt;
		local gloss = mw.text.split(v, &#039;:&#039;)&lt;br /&gt;
		local a = mw.text.trim(gloss[1])&lt;br /&gt;
		if a and a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			gloss_override[a] = {}&lt;br /&gt;
			gloss_override[a].expansion = gloss[2]&lt;br /&gt;
			gloss_override[a].wikipage = gloss[3]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- The UserMessages object contains and processes error messages and warnings&lt;br /&gt;
---------------------&lt;br /&gt;
local UserMessages = {errors = {}, warnings = {}, gloss_messages = {}}&lt;br /&gt;
function UserMessages:add(msgtype, text, gloss)&lt;br /&gt;
	if msgtype == &amp;quot;gloss_message&amp;quot; then&lt;br /&gt;
		self.gloss_messages[gloss] = text&lt;br /&gt;
	elseif msgtype == &amp;quot;warning&amp;quot; then&lt;br /&gt;
		table.insert(self.warnings, text)&lt;br /&gt;
	elseif msgtype == &amp;quot;non-repeating error&amp;quot; then&lt;br /&gt;
		self.errors.nre = text&lt;br /&gt;
	elseif msgtype == &amp;quot;ambiguous gloss&amp;quot; then&lt;br /&gt;
		self.if_ambiguous_glosses = true&lt;br /&gt;
	elseif msgtype == &amp;quot;error&amp;quot; then&lt;br /&gt;
		table.insert(self.errors, text)&lt;br /&gt;
	else return error(&amp;quot;UserMessages:add(): unknown message type&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
function UserMessages:print_errors()&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	if next(self.errors) or self.warnings[1] then&lt;br /&gt;
		local err_span = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
		err_span:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
		err_span:addClass(conf.class.ErrorMessage)&lt;br /&gt;
		for _,v in pairs(self.errors) do&lt;br /&gt;
			err_span:wikitext(&amp;quot; &amp;quot; .. v .. &amp;quot;;&amp;quot;) end&lt;br /&gt;
		if namespace % 2 == 0 and namespace ~= 2 -- non-talk namespaces, excluding user pages; if modifying please update the description on the category page&lt;br /&gt;
			then err_span:wikitext(conf.ErrorCategory)&lt;br /&gt;
		end&lt;br /&gt;
		out = tostring(err_span)&lt;br /&gt;
		mw.addWarning(conf.MessageGlossingError)&lt;br /&gt;
	end&lt;br /&gt;
	if self.if_ambiguous_glosses then&lt;br /&gt;
		if namespace == 0 -- article namespace&lt;br /&gt;
			then out = out .. conf.AmbiguousGlossCategory -- this category will only track articles&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
function UserMessages:print_warnings()&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	-- Messages and warnings get displayed only if the page is being viewed in &amp;quot;preview&amp;quot; mode:&lt;br /&gt;
	if displaying_messages and (next(self.gloss_messages) or next(self.warnings)) then&lt;br /&gt;
		local div = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
		div:addClass(&amp;quot;interlinear-preview-warning&amp;quot;)&lt;br /&gt;
			:cssText(&#039;border: 1px solid #a2a9b1; background-color: #f8f9fa; width: 80%; padding: 0.2em;&#039;)&lt;br /&gt;
			:wikitext(&amp;quot;&amp;lt;i&amp;gt;This message box is shown only in preview:&amp;lt;/i&amp;gt;&amp;quot;)&lt;br /&gt;
			:newline()&lt;br /&gt;
		for _,v in ipairs(self.warnings) do&lt;br /&gt;
			local p = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
			p:addClass(conf.class.ErrorMessage)&lt;br /&gt;
			p:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
			p:wikitext(v)&lt;br /&gt;
		end&lt;br /&gt;
		if self.gloss_messages then&lt;br /&gt;
			div:wikitext(&amp;quot;&amp;lt;p&amp;gt;  To change any of the following default expansions, see [[Template:Interlinear/doc#Custom abbreviations|the template&#039;s documentation]]:&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		for _,v in pairs(self.gloss_messages) do&lt;br /&gt;
			div:wikitext(&amp;quot;&amp;lt;p&amp;gt;&amp;quot; .. v .. &amp;quot;&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;\n\n&amp;quot; .. tostring(div)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- gloss_lookup() receives a gloss abbreviation and tries to uncover its meaning.&lt;br /&gt;
---------------------&lt;br /&gt;
local function gloss_lookup(a, label, wikilink)&lt;br /&gt;
	local _label, _wikilink, _lookup, source = nil, nil, nil, nil&lt;br /&gt;
	if gloss_override[a] then&lt;br /&gt;
		_lookup = gloss_override[a]&lt;br /&gt;
		source = &amp;quot;local&amp;quot;&lt;br /&gt;
	elseif data.abbreviations[a] then _lookup = data.abbreviations[a] end&lt;br /&gt;
	if _lookup and _lookup.expansion ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		_label, _wikilink = _lookup.expansion, _lookup.wikipage&lt;br /&gt;
	else&lt;br /&gt;
		local prefix = mw.ustring.sub(a,1,1)&lt;br /&gt;
		local suffix = mw.ustring.sub(a,2)&lt;br /&gt;
		if conf.combining_person[prefix] then -- is it of the form 1PL or 3FS?&lt;br /&gt;
			_label = conf.combining_person[prefix]&lt;br /&gt;
		local _suffix = conf.combining_number[suffix] or conf.combining_gender[suffix]&lt;br /&gt;
			if _suffix then&lt;br /&gt;
				_label = _label .. &amp;quot;, &amp;quot; .. _suffix&lt;br /&gt;
			else&lt;br /&gt;
				local suffix1 = mw.ustring.sub(suffix,1,1)&lt;br /&gt;
				local suffix2 = mw.ustring.sub(suffix,2)&lt;br /&gt;
					if conf.combining_gender[suffix1]&lt;br /&gt;
					and  conf.combining_number[suffix2] then&lt;br /&gt;
						_label = _label .. &amp;quot;, &amp;quot; .. conf.combining_gender[suffix1] .. &amp;quot;, &amp;quot; .. conf.combining_number[suffix2]&lt;br /&gt;
					else _label = nil end&lt;br /&gt;
			end&lt;br /&gt;
	elseif mw.ustring.match(suffix,conf.combining_gender_numbers) then -- cases like G4 = gender 4&lt;br /&gt;
		local _i,_j = mw.ustring.find(a, conf.combining_gender_numbers)&lt;br /&gt;
		local _pre = mw.ustring.sub(a, 1, _i - 1)&lt;br /&gt;
		local _suff = mw.ustring.sub(a, _i)&lt;br /&gt;
		if conf.combining_gender_prefixes[_pre] then&lt;br /&gt;
			_label = conf.combining_gender_prefixes[_pre] .. &amp;quot; &amp;quot; .. _suff&lt;br /&gt;
		end&lt;br /&gt;
	elseif prefix == &amp;quot;N&amp;quot; then -- dealing with cases like NPST = non-past&lt;br /&gt;
		local s = gloss_override[suffix] or data.abbreviations[suffix]&lt;br /&gt;
			if s ~= nil and not s.ExcludeNegation then&lt;br /&gt;
				_label = &amp;quot;non-&amp;quot; .. s.expansion&lt;br /&gt;
				_wikilink = s.wikipage&lt;br /&gt;
			end&lt;br /&gt;
			s = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if _label == &amp;quot;&amp;quot; then _label = nil end&lt;br /&gt;
	if _wikilink == &amp;quot;&amp;quot; then _wikilink = nil end&lt;br /&gt;
	if not label then label = _label end&lt;br /&gt;
	if not wikilink then wikilink = _wikilink end&lt;br /&gt;
	return label, wikilink, source&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- format_gloss() calls gloss_lookup() to find the meaning of a gloss&lt;br /&gt;
-- abbreviation, which it then proceeds to format&lt;br /&gt;
---------------------&lt;br /&gt;
local function format_gloss(gloss, label, wikilink)&lt;br /&gt;
	if string.sub(gloss,1,3) == &amp;quot;000&amp;quot; then -- checks for a common component of exposed strip markers (see [[:mw:Strip marker]])&lt;br /&gt;
		return gloss&lt;br /&gt;
	end&lt;br /&gt;
	local gloss2 = mw.ustring.gsub(gloss,&amp;quot;&amp;lt;.-&amp;gt;&amp;quot;,&amp;quot;&amp;quot;) -- remove any html fluff&lt;br /&gt;
	gloss2 = mw.ustring.gsub(gloss2, &amp;quot;%&#039;%&#039;+&amp;quot;, &amp;quot;&amp;quot;) -- remove wiki bold/italic formatting&lt;br /&gt;
	gloss2 = mw.text.trim(mw.ustring.upper(gloss2))&lt;br /&gt;
	if not (label or wikilink)&lt;br /&gt;
		or (not label and glossing_type == &amp;quot;label&amp;quot;)&lt;br /&gt;
		or (not wikilink  and glossing_type == &amp;quot;wikilink&amp;quot;)&lt;br /&gt;
		then&lt;br /&gt;
			if glossing_type ~= &amp;quot;no abbr&amp;quot;&lt;br /&gt;
				then label, wikilink, source = gloss_lookup(gloss2, label, wikilink)&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	local gloss_node&lt;br /&gt;
	if glossing_type == &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		then gloss_node = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	else gloss_node = mw.html.create(&amp;quot;abbr&amp;quot;) end&lt;br /&gt;
	gloss_node:addClass(conf.class.GlossAbbr)&lt;br /&gt;
	if label or wikilink then&lt;br /&gt;
		if not mw.ustring.match(gloss, &amp;quot;%l&amp;quot;) -- excluding glosses that contain lower-case characters&lt;br /&gt;
			and not mw.ustring.match(gloss,conf.GlossSmallCapsExclude) -- and also excluding A, O etc. from rendering in small caps&lt;br /&gt;
			then gloss_node:attr(&amp;quot;style&amp;quot;, conf.style.GlossAbbr)&lt;br /&gt;
		end&lt;br /&gt;
		local abbr_label&lt;br /&gt;
		if label then abbr_label = label&lt;br /&gt;
			else abbr_label = wikilink end&lt;br /&gt;
		gloss_node:attr(&amp;quot;title&amp;quot;, abbr_label)&lt;br /&gt;
		if source ~= &amp;quot;local&amp;quot; and data.abbreviations[gloss2] then&lt;br /&gt;
			if data.abbreviations[gloss2].ambiguous then&lt;br /&gt;
				gloss_node:addClass(conf.class.GlossAbbrAmb)&lt;br /&gt;
					msg:add(&amp;quot;ambiguous gloss&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
		end&lt;br /&gt;
		if glossing_type == &amp;quot;wikilink&amp;quot; and wikilink&lt;br /&gt;
			then gloss_node:wikitext(&amp;quot;[[&amp;quot;, wikilink, &amp;quot;|&amp;quot; , gloss, &amp;quot;]]&amp;quot;)&lt;br /&gt;
			else gloss_node:wikitext(gloss) end&lt;br /&gt;
		if source ~= &amp;quot;local&amp;quot; and displaying_messages then -- logging gloss lookups:&lt;br /&gt;
			local message = &amp;quot;&amp;quot;&lt;br /&gt;
			if label then&lt;br /&gt;
				message = &amp;quot;assuming &amp;quot; .. gloss2 .. &amp;quot; means \&amp;quot;&amp;quot; .. abbr_label .. &amp;quot;\&amp;quot;;&amp;quot; end&lt;br /&gt;
			if glossing_type == &amp;quot;wikilink&amp;quot; and wikilink then&lt;br /&gt;
				message = message .. &amp;quot; linking to [[&amp;quot; .. wikilink .. &amp;quot;]];&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			msg:add(&amp;quot;gloss_message&amp;quot;, message, gloss)&lt;br /&gt;
		end&lt;br /&gt;
	elseif glossing_type == &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		then gloss_node&lt;br /&gt;
				:attr(&amp;quot;style&amp;quot;, conf.style.GlossAbbr)&lt;br /&gt;
				:wikitext(gloss)&lt;br /&gt;
	else&lt;br /&gt;
		if displaying_messages then&lt;br /&gt;
			msg:add(&amp;quot;warning&amp;quot;, &amp;quot;Gloss abbreviation &amp;quot; .. highlight(gloss2) .. &amp;quot;  not recognised&amp;quot; .. help_link(&amp;quot;gloss abbr&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		msg:add(&amp;quot;non-repeating error&amp;quot;, &amp;quot;Unknown glossing abbreviation(s)&amp;quot; .. help_link(&amp;quot;gloss abbr&amp;quot;))&lt;br /&gt;
		gloss_node&lt;br /&gt;
			:addClass(conf.class.GlossAbbrError)&lt;br /&gt;
			:addClass(&amp;quot;error&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;font-size&amp;quot;, &amp;quot;100%&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;title&amp;quot;, gloss2 .. &amp;quot;: glossing abbreviation not found&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
			:wikitext(gloss)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(gloss_node)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- find_gloss() parses a word into morphemes, and it calls format_gloss()&lt;br /&gt;
-- for anything that looks like a glossing abbreviation.&lt;br /&gt;
---------------------&lt;br /&gt;
local function find_gloss(word)&lt;br /&gt;
	local function scan_gloss(boundary, gloss_abbr) -- checks a morpheme if it is a gloss abbreviation&lt;br /&gt;
		if (mw.ustring.match(gloss_abbr, conf.GlossAbbrPattern)&lt;br /&gt;
			or conf.LowerCaseGlosses[gloss_abbr])&lt;br /&gt;
			and not (conf.GlossExcludeTable[gloss_abbr]&lt;br /&gt;
				or mw.ustring.match(gloss_abbr, conf.GlossExcludePattern))&lt;br /&gt;
			then gloss_abbr = format_gloss(gloss_abbr)&lt;br /&gt;
		end&lt;br /&gt;
		return boundary .. gloss_abbr&lt;br /&gt;
	end&lt;br /&gt;
	local word = mw.text.decode(word, true)&lt;br /&gt;
	if word == &amp;quot;I&amp;quot; -- for the case of the English word &amp;quot;I&amp;quot;, the 1SG pronoun&lt;br /&gt;
		then return word end&lt;br /&gt;
	local pattern = &amp;quot;([&amp;quot; .. conf.GlossAbbrBoundary .. &amp;quot;]?)([^&amp;quot; .. conf.GlossAbbrBoundary .. &amp;quot;]+)&amp;quot;&lt;br /&gt;
	word = mw.ustring.gsub(word, pattern, scan_gloss) -- splits into morphemes&lt;br /&gt;
	return word&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- The main purpose of the bletcherous parse() is to split a line into words and and then for each eligible word&lt;br /&gt;
-- to call find_gloss(). The parser outputs the individual words (with any gloss abbreviation formatting applied).&lt;br /&gt;
-- The simple job of splitting at whitespaces has been made complicated by a) the fact that the input can contain&lt;br /&gt;
-- whitespaces inside the various html elements that are the result of the application of various formatting templates;&lt;br /&gt;
-- and b) the need to be able to recognise the output of the template that formats custom gloss abbreviations&lt;br /&gt;
-- (and hence skip passing it on to find_gloss). See talk for a suggestion about its future.&lt;br /&gt;
---------------------&lt;br /&gt;
local function parse(cline, i, tags_found,ifglossing)&lt;br /&gt;
&lt;br /&gt;
	local function issue_error(message, culprit)&lt;br /&gt;
		UserMessages:add(&amp;quot;error&amp;quot;,  message .. &amp;quot;: &#039;&#039;&amp;quot; .. mw.ustring.sub(cline.whole, 1, i-1) .. &amp;quot;&#039;&#039;&#039;&amp;quot; .. culprit  .. &amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if i &amp;gt; cline.length then return i end --this will only be triggered if the current line has less words than line 1&lt;br /&gt;
	local next_step, j, _, chunk&lt;br /&gt;
	local probe = mw.ustring.sub(cline.whole,i,i)&lt;br /&gt;
	if mw.ustring.match(probe,&amp;quot;[&amp;quot; .. conf.WordSeparator .. &amp;quot;]&amp;quot;) and tags_found == 0&lt;br /&gt;
		then next_step =  i-1&lt;br /&gt;
	elseif probe == &amp;quot;[&amp;quot; then --Wikilink?&lt;br /&gt;
		if mw.ustring.sub(cline.whole,i+1,i+1) == &amp;quot;[&amp;quot; then&lt;br /&gt;
			_,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(%[%[.-%]%])&amp;quot;, i)&lt;br /&gt;
		else chunk = &amp;quot;[&amp;quot;; j = i end --not a wikilink then&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step =  parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	elseif probe == &amp;quot;{&amp;quot;  and tags_found == 0 then --curly brackets enclose a sequence of words to be treated as a single unit&lt;br /&gt;
		_,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(.-)(})&amp;quot;, i+1)&lt;br /&gt;
		if not chunk then&lt;br /&gt;
			issue_error(&amp;quot;Unclosed curly bracket&amp;quot;, &amp;quot;{&amp;quot;)&lt;br /&gt;
			chunk = highlight(&amp;quot;{&amp;quot;); j = i&lt;br /&gt;
		elseif ifglossing==true then&lt;br /&gt;
			chunk = find_gloss(chunk)&lt;br /&gt;
		else&lt;br /&gt;
			if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
		end&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step =  parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	elseif probe == &amp;quot;&amp;lt;&amp;quot; then -- We&#039;ve encountered an HTML tag. What do we do now?&lt;br /&gt;
		local _,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(&amp;lt;.-&amp;gt;)&amp;quot;,i)&lt;br /&gt;
		if not chunk then&lt;br /&gt;
			issue_error(&amp;quot;Unclosed angle bracket&amp;quot;, &amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
			chunk = highlight(&amp;quot;&amp;lt;&amp;quot;); j = i&lt;br /&gt;
		elseif mw.ustring.sub(cline.whole,i,i+1) == &amp;quot;&amp;lt;/&amp;quot; then -- It&#039;s a CLOSING tag&lt;br /&gt;
			if cline.glossing&lt;br /&gt;
				and ifglossing==false&lt;br /&gt;
				and mw.ustring.match(chunk,&amp;quot;&amp;lt;/abbr&amp;gt;&amp;quot;)&lt;br /&gt;
				then ifglossing=true end&lt;br /&gt;
			tags_found = tags_found - 1&lt;br /&gt;
		elseif not mw.ustring.match(chunk, &amp;quot;/&amp;gt;$&amp;quot;) -- It&#039;s an OPENING tag, unless it opens a self-closing element (in which case the element is ignored)&lt;br /&gt;
			then if ifglossing == true -- the following checks for the output of {{ggl}}:&lt;br /&gt;
					and mw.ustring.find(chunk, conf.class.GlossAbbr, 1, true) -- it&#039;s important that the &amp;quot;find&amp;quot; function uses literal strings and not patterns&lt;br /&gt;
						then ifglossing = false end&lt;br /&gt;
			tags_found = tags_found + 1&lt;br /&gt;
		end&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step = parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	else -- No HTML tags, so we only need to find where the word ends&lt;br /&gt;
		local _,k,chunk = mw.ustring.find(cline.whole,&amp;quot;(..-)([ &amp;lt;[])&amp;quot;,i)&lt;br /&gt;
		if k then --ordinary text&lt;br /&gt;
			if ifglossing==true then&lt;br /&gt;
				buffer = buffer .. find_gloss(chunk)&lt;br /&gt;
			else&lt;br /&gt;
				if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
				buffer = buffer .. chunk&lt;br /&gt;
			end&lt;br /&gt;
			next_step = parse(cline, k, tags_found, ifglossing)&lt;br /&gt;
		else -- reached end of string&lt;br /&gt;
			if ifglossing == true then&lt;br /&gt;
				chunk = find_gloss(mw.ustring.sub(cline.whole,i))&lt;br /&gt;
			else&lt;br /&gt;
				chunk = mw.ustring.sub(cline.whole,i)&lt;br /&gt;
				if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
			end&lt;br /&gt;
			buffer = buffer .. chunk&lt;br /&gt;
			next_step = cline.length&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return next_step&lt;br /&gt;
end&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following function is called by Template:gcl and is used for formatting an individual glossing abbreviation&lt;br /&gt;
--------------------&lt;br /&gt;
function p.gcl(frame)&lt;br /&gt;
	local args = getArgs(frame,{&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		parentOnly = true,&lt;br /&gt;
		wrappers = {&#039;Template:Gcl&#039;},&lt;br /&gt;
	})&lt;br /&gt;
	msg = UserMessages&lt;br /&gt;
	set_global_glossing_settings{style = args.style, underline = args.underline, small_caps = args[&#039;small-caps&#039;]}&lt;br /&gt;
	if not args.glossing then&lt;br /&gt;
		glossing_type = conf.GlossingType -- a global variable&lt;br /&gt;
	else glossing_type = set_glossing_type(args.glossing)&lt;br /&gt;
	end&lt;br /&gt;
	local gloss, label, wikilink = args[1], args[2], args[3]&lt;br /&gt;
	if not gloss then UserMessages:add(&amp;quot;error&amp;quot;, &amp;quot;No gloss supplied&amp;quot;)&lt;br /&gt;
		return UserMessages:print() end&lt;br /&gt;
	if wikilink and not args.glossing then -- if a wikilink is supplied and glossing isn&#039;t set to &#039;label&#039;...&lt;br /&gt;
		glossing_type = &#039;wikilink&#039; end --     .. then the wikilink will be formatted as such&lt;br /&gt;
	if label == &amp;quot;&amp;quot; then label = nil end&lt;br /&gt;
	if wikilink == &amp;quot;&amp;quot; then wikilink = nil end&lt;br /&gt;
	local result = format_gloss(gloss, label, wikilink)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following is the function called by Template:Interlinear.&lt;br /&gt;
-- It processes the template arguments, then calls parse() to split the input lines into words&lt;br /&gt;
-- and it then builds the output html.&lt;br /&gt;
--------------------&lt;br /&gt;
function p.interlinearise(frame)&lt;br /&gt;
---------------------&lt;br /&gt;
-- Prepare arguments&lt;br /&gt;
---------------------&lt;br /&gt;
	local if_auto_translit = false&lt;br /&gt;
	local args = getArgs(frame, { -- configuration for Module:Arguments&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		parentFirst = true,&lt;br /&gt;
		wrappers = {&#039;Template:Interlinear&#039;, &#039;Template:Fs interlinear&#039;},&lt;br /&gt;
	})&lt;br /&gt;
	local template_name = frame:getParent():getTitle()&lt;br /&gt;
	if template_name == &#039;Template:Fs interlinear&#039; then&lt;br /&gt;
		args.italics1 = args.italics1 or &amp;quot;no&amp;quot;&lt;br /&gt;
		args.italics2 = args.italics2 or &amp;quot;yes&amp;quot;&lt;br /&gt;
		args.glossing3 = args.glossing3 or &amp;quot;yes&amp;quot;&lt;br /&gt;
		if args.lang and not args.lang2 then args.lang2 = args.lang ..&amp;quot;-Latn&amp;quot; end&lt;br /&gt;
		if args.transl and not args.transl2 then args.transl2 = args.transl end&lt;br /&gt;
		if_auto_translit = true&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
	local revid = frame:preprocess( &amp;quot;{{REVISIONID}}&amp;quot; )&lt;br /&gt;
	if  revid == &amp;quot;&amp;quot; then&lt;br /&gt;
		if not args[&#039;display-messages&#039;] or yesno(args[&#039;display-messages&#039;]) then&lt;br /&gt;
		displaying_messages = true end-- messages will be displayed only in preview mode&lt;br /&gt;
	end&lt;br /&gt;
	msg = UserMessages&lt;br /&gt;
	local line = {}&lt;br /&gt;
&lt;br /&gt;
	local function set_italics(n)&lt;br /&gt;
		line[n].attr.style = line[n].attr.style .. &amp;quot;font-style: italic;&amp;quot;&lt;br /&gt;
		line[n].tone_sup = true -- single digits are assumed to be tone markers and will hence be superscripted&lt;br /&gt;
		if args[&#039;tone-superscripting&#039;] and not yesno(args[&#039;tone-superscripting&#039;])&lt;br /&gt;
			then line[n].tone_sup = false end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.glossing then -- the glossing= parameter sets the default glossing type&lt;br /&gt;
		local _gl = set_glossing_type(args.glossing)&lt;br /&gt;
		if _gl then conf.GlossingType = _gl end&lt;br /&gt;
	end&lt;br /&gt;
	--this looks for a list of glossing abbreviations on the page that transcludes the template:&lt;br /&gt;
	local _ablist_section = get_section(frame, &#039;list-of-glossing-abbreviations&#039;)&lt;br /&gt;
	if _ablist_section and _ablist_section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local _a = mw.ustring.gsub(_ablist_section, &#039;&amp;lt;/?div [^\n]*&amp;gt;&#039;, &#039;&#039;) -- strips off the div tags&lt;br /&gt;
		set_custom_glosses(_a)&lt;br /&gt;
	end&lt;br /&gt;
	--and this looks looks for a list of abbreviations set within the template:&lt;br /&gt;
	local _ablist = args.abbreviations&lt;br /&gt;
	if _ablist and _ablist ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then set_custom_glosses(_ablist) end&lt;br /&gt;
	local _ablist = args.ablist&lt;br /&gt;
	if _ablist and _ablist ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then set_custom_glosses(_ablist) end&lt;br /&gt;
&lt;br /&gt;
	local _spacing = tonumber(args.spacing)&lt;br /&gt;
	if _spacing and _spacing &amp;lt;= 20&lt;br /&gt;
		then conf.style.WordDiv = conf.style.WordDiv .. &#039;margin-right: &#039; .. _spacing .. &#039;em;&#039;&lt;br /&gt;
	else conf.style.WordDiv = conf.style.WordDiv .. conf.style.WordMargin&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local offset, last_line = 0, 0&lt;br /&gt;
	for j,v in ipairs(args) do -- iterates over the unnamed parameters from the template&lt;br /&gt;
		last_line = last_line +1&lt;br /&gt;
		if is_empty(v)&lt;br /&gt;
			then offset = offset + 1&lt;br /&gt;
		else&lt;br /&gt;
		local i = j - offset&lt;br /&gt;
		line[i] = {}&lt;br /&gt;
		v = normalise(v)&lt;br /&gt;
&lt;br /&gt;
		-- the following is part of a trial implementation of automatic transliteration:&lt;br /&gt;
		if if_auto_translit and v == &amp;quot;auto&amp;quot; and i &amp;gt; 1 then&lt;br /&gt;
			local source_line = line[i-1]&lt;br /&gt;
			local src_lang = source_line.lang&lt;br /&gt;
			if not src_lang then src_lang = args.lang end&lt;br /&gt;
			if src_lang then&lt;br /&gt;
					v = transliterate(source_line.whole, src_lang)&lt;br /&gt;
			else v = &amp;quot;&amp;quot;; msg:add(&amp;quot;error&amp;quot;, &amp;quot;No language specified for automatic transliteration&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end  -- end of trial block&lt;br /&gt;
&lt;br /&gt;
		line[i].whole = v&lt;br /&gt;
		line[i].length = mw.ustring.len(v)&lt;br /&gt;
&lt;br /&gt;
		local _c = args[&amp;quot;c&amp;quot; .. i]&lt;br /&gt;
		if _c and _c ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			line.hasComments = true&lt;br /&gt;
			line[i].c = _c&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		---prepare style arguments----&lt;br /&gt;
		line[i].class = &amp;quot;&amp;quot;&lt;br /&gt;
		local _style = args[&amp;quot;style&amp;quot; .. i]&lt;br /&gt;
		if not _style then _style = &amp;quot;&amp;quot;&lt;br /&gt;
		else _style = tidyCss(_style) end&lt;br /&gt;
		--line[i].attr holds the attributes for the &amp;lt;p&amp;gt; elements that enclose the words in line i&lt;br /&gt;
		line[i].attr = {style = conf.style.WordP .. _style}&lt;br /&gt;
&lt;br /&gt;
		local _lang = args[&amp;quot;lang&amp;quot; .. i]&lt;br /&gt;
		if _lang and #_lang &amp;gt; 1 then&lt;br /&gt;
			line[i].lang = _lang&lt;br /&gt;
		else _lang = args.lang&lt;br /&gt;
			if _lang and #_lang &amp;gt; 1 and i == 1 then -- if a lang= parameter is supplied, it&#039;s assumed to apply to line 1&lt;br /&gt;
				line[i].lang = _lang&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		line[i].attr.lang = line[i].lang&lt;br /&gt;
		--the following emulates the behaviour of {{Bo-textonly}} (see Template talk:Fs interlinear#Tibetan):&lt;br /&gt;
		if template_name == &#039;Template:Fs interlinear&#039; then&lt;br /&gt;
			if _lang == &amp;quot;bo&amp;quot; and i == 1 then&lt;br /&gt;
				line[1].class = line[1].class .. &amp;quot; uchen&amp;quot;&lt;br /&gt;
				line[1].attr.style = line[1].attr.style .. &amp;quot;font-size:1.25em; word-wrap:break-word;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		--the following emulates the behaviour of {{Spell-nv}}:&lt;br /&gt;
		if template_name == &#039;Template:Interlinear&#039; then&lt;br /&gt;
			if _lang == &amp;quot;nv&amp;quot; and i == 1 then&lt;br /&gt;
				line[1].attr.style = line[1].attr.style .. &amp;quot;font-family: Aboriginal Sans, DejaVu Sans, Calibri, Arial Unicode MS, sans-serif;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if yesno(args[&amp;quot;italics&amp;quot; .. i]) then&lt;br /&gt;
			set_italics(i)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _transl = args[&amp;quot;transl&amp;quot; .. i]&lt;br /&gt;
		if _transl and #_transl &amp;gt; 1 then&lt;br /&gt;
			_transl = mw.ustring.lower(_transl)&lt;br /&gt;
			local _lookup = lang_data.translit_title_table[_transl]&lt;br /&gt;
			if _lookup then&lt;br /&gt;
				if _lang and  _lookup[_lang] then&lt;br /&gt;
					_transl = _lookup[_lang]&lt;br /&gt;
				else _transl = _lookup.default&lt;br /&gt;
				end&lt;br /&gt;
				if _transl then&lt;br /&gt;
					line[i].attr.title = _transl&lt;br /&gt;
				end&lt;br /&gt;
			else  msg:add(&amp;quot;error&amp;quot;, &amp;quot;Transliteration scheme &#039;&amp;quot; .. _transl .. &amp;quot;&#039; not recognised&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _glossing = args[&amp;quot;glossing&amp;quot; .. i]&lt;br /&gt;
		if _glossing then&lt;br /&gt;
			line[i].glossing = set_glossing_type(_glossing)&lt;br /&gt;
			-- Do not treat default glossing settings as custom.&lt;br /&gt;
			if not ((i == 1 and not yesno(_glossing)) or (i == 2 and yesno(_glossing))) then&lt;br /&gt;
				line.HasCustomGlossing = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _ipa = args[&#039;ipa&#039; .. i]&lt;br /&gt;
		if yesno(_ipa) then&lt;br /&gt;
			line[i].class = &amp;quot;IPA&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _class = args[&#039;class&#039; .. i]&lt;br /&gt;
		if _class then&lt;br /&gt;
			line[i].class = line[i].class .. &amp;quot; &amp;quot; .. _class&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if line[i].class == &amp;quot;&amp;quot;&lt;br /&gt;
			then line[i].class = nil end&lt;br /&gt;
		end -- ends the first if-statement in the loop&lt;br /&gt;
	end -- ends the FOR cycle&lt;br /&gt;
&lt;br /&gt;
	local line_count = #line&lt;br /&gt;
	if line_count == 0 then&lt;br /&gt;
		msg:add(&amp;quot;error&amp;quot;, template_name .. &amp;quot;: no lines supplied.&amp;quot;)&lt;br /&gt;
		return msg:print_errors()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if line_count &amp;gt; 1 then&lt;br /&gt;
		local _italics = args.italics&lt;br /&gt;
		local n = tonumber(_italics)&lt;br /&gt;
		if n and n &amp;gt; 0 then&lt;br /&gt;
			set_italics(n)&lt;br /&gt;
		elseif not (_italics and not yesno(_italics)) and not (args[&amp;quot;italics1&amp;quot;] and not yesno(args[&amp;quot;italics1&amp;quot;])) then&lt;br /&gt;
			set_italics(1) -- by default, the first line will get italicised, unless italics=no or italics1=no&lt;br /&gt;
		end&lt;br /&gt;
		-- the last unnamed parameter is assumed to be the free translation:&lt;br /&gt;
		free_translation = args[last_line]&lt;br /&gt;
		if not is_empty(free_translation) then&lt;br /&gt;
			line [line_count] = nil   end  --... and is thus excluded from interlinearising&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- If glossing isn&#039;t specified for any line, then it&#039;s chosen by default to occur&lt;br /&gt;
-- in the second line, unless only a single line has been supplied, in which case&lt;br /&gt;
-- the assumption is that it is the one containing grammatical glosses&lt;br /&gt;
	if yesno(args.glossing) == false then&lt;br /&gt;
		line.HasCustomGlossing = true&lt;br /&gt;
	end&lt;br /&gt;
	if not line.HasCustomGlossing then&lt;br /&gt;
		if line_count == 1 then&lt;br /&gt;
			line[1].glossing = conf.GlossingType&lt;br /&gt;
		elseif line[2] then&lt;br /&gt;
			line[2].glossing = conf.GlossingType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	set_global_glossing_settings{style = args[&#039;glossing-style&#039;], underline = args.underline, small_caps = args[&#039;small-caps&#039;]}&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- Segment lines into words&lt;br /&gt;
---------------------&lt;br /&gt;
	for i,v in ipairs(line) do&lt;br /&gt;
		local ifglossing = false&lt;br /&gt;
		if line[i].glossing then&lt;br /&gt;
			ifglossing = true -- if true the parser will attempt to format gloss abbreviations in the current line&lt;br /&gt;
			glossing_type = line[i].glossing -- neccessarily a global variable&lt;br /&gt;
		end&lt;br /&gt;
		local wc, n = 1, 1&lt;br /&gt;
		line[i].words = {}&lt;br /&gt;
		while n &amp;lt;= line[i].length do&lt;br /&gt;
			buffer = &amp;quot;&amp;quot;&lt;br /&gt;
			n = parse(line[i], n, 0, ifglossing)+2&lt;br /&gt;
			line[i].words[wc] = buffer&lt;br /&gt;
			wc = wc + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----Check for mismatches in number of words across lines----&lt;br /&gt;
	local number_of_words, mismatch_found = 0, false&lt;br /&gt;
	for i,v in ipairs(line) do -- find the maximum number of words in any line&lt;br /&gt;
		local wc = #line[i].words&lt;br /&gt;
		if wc ~= number_of_words then&lt;br /&gt;
			if i ~= 1 and wc ~= 0 then&lt;br /&gt;
				mismatch_found = true&lt;br /&gt;
			end&lt;br /&gt;
			if wc &amp;gt; number_of_words then&lt;br /&gt;
				number_of_words = wc&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	----Deal with mismatches---&lt;br /&gt;
	if mismatch_found then&lt;br /&gt;
		local error_text = &amp;quot;Mismatch in the number of words between lines: &amp;quot;&lt;br /&gt;
		for i,v in ipairs(line) do&lt;br /&gt;
			local wc = #line[i].words&lt;br /&gt;
			error_text = error_text .. wc .. &amp;quot; word(s) in line &amp;quot; .. i .. &amp;quot;, &amp;quot;&lt;br /&gt;
			if wc ~= number_of_words then&lt;br /&gt;
				for current_word = wc+1, number_of_words do&lt;br /&gt;
					line[i].words[current_word] = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if string.sub(error_text, -2) == &amp;quot;, &amp;quot;&lt;br /&gt;
			then error_text = string.sub(error_text, 1, #error_text - 2) .. &amp;quot; &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		error_text = error_text .. help_link(&amp;quot;mismatch&amp;quot;)&lt;br /&gt;
		UserMessages:add(&amp;quot;error&amp;quot;, error_text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- Build the HTML&lt;br /&gt;
---------------------&lt;br /&gt;
	---- If just a single line was supplied, format it as inline text&lt;br /&gt;
	if line_count == 1 then&lt;br /&gt;
		local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		span:attr(line[1].attr)&lt;br /&gt;
		for wi = 1, number_of_words do&lt;br /&gt;
			local space&lt;br /&gt;
			if wi &amp;lt; number_of_words then space = &amp;quot; &amp;quot; else space = &amp;quot;&amp;quot; end&lt;br /&gt;
			span:wikitext(line[1].words[wi] .. space)&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(span)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	---- More than one line supplied, so we&#039;ll produce interlinear display&lt;br /&gt;
	local div = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
	div:addClass(conf.class.Interlinear)&lt;br /&gt;
&lt;br /&gt;
	-- For stuff to be displayed in the left margin, like example numbering&lt;br /&gt;
	local number, indent = nil, nil&lt;br /&gt;
	if args.number and args.number ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then number = args.number end&lt;br /&gt;
	if args.indent and args.indent ~=&amp;quot;&amp;quot;&lt;br /&gt;
		then indent = args.indent end&lt;br /&gt;
	if indent or number then&lt;br /&gt;
		if not indent then indent = &amp;quot;4&amp;quot; end --default value&lt;br /&gt;
		div:css(&amp;quot;margin-left&amp;quot;, indent .. &#039;em&#039;)&lt;br /&gt;
		if number then&lt;br /&gt;
			div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;position&amp;quot;, &amp;quot;absolute&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;left&amp;quot;, &amp;quot;1em&amp;quot;)&lt;br /&gt;
				:wikitext(args.number)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.box and args.box ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		div:css(&amp;quot;background-color&amp;quot;, &amp;quot;#f8f9fa&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;border&amp;quot;, &amp;quot;1px solid #eaecf0&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;padding&amp;quot;, &amp;quot;1em&amp;quot;) end&lt;br /&gt;
	if args.top and args.top ~= &amp;quot;&amp;quot; then --lines to display above the interlinear block&lt;br /&gt;
		div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:wikitext(args.top)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Producing the interlinear block&lt;br /&gt;
	for wi = 1, number_of_words do&lt;br /&gt;
		local div2 = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:attr(&amp;quot;style&amp;quot;, conf.style.WordDiv)&lt;br /&gt;
		for i,_ in ipairs (line) do&lt;br /&gt;
			if line[i].whole ~= &amp;quot;&amp;quot; then -- skipping empty lines&lt;br /&gt;
				local p = div2:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
				p:attr(line[i].attr)&lt;br /&gt;
				if line[i].class then&lt;br /&gt;
					p:addClass(line[i].class)&lt;br /&gt;
				end&lt;br /&gt;
				local _text = line[i].words[wi]&lt;br /&gt;
				if _text == &amp;quot;&amp;quot; or _text == &amp;quot; &amp;quot;&lt;br /&gt;
					then _text = &amp;quot;&amp;amp;nbsp;&amp;quot; end -- &amp;lt;p&amp;gt; elements without content mess up the interlinear display&lt;br /&gt;
				p:wikitext(_text)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- If any &amp;quot;comments&amp;quot; have been specified, add them at the end of each line&lt;br /&gt;
	if line.hasComments then&lt;br /&gt;
		local divc = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:attr(&amp;quot;style&amp;quot;, conf.style.WordDiv)&lt;br /&gt;
		for i,_ in ipairs (line) do&lt;br /&gt;
			local p = divc:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
			p:attr(&amp;quot;style&amp;quot;, conf.style.WordP)&lt;br /&gt;
			if line[i].c then&lt;br /&gt;
				p:wikitext(line[i].c)&lt;br /&gt;
			else p:wikitext(&amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--Add hidden lines containing the content of each line of interlinear text: this is for accessibility&lt;br /&gt;
	for i,v in ipairs(line) do&lt;br /&gt;
		local hidden_line = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
		hidden_line:attr(&amp;quot;style&amp;quot;, conf.style.HiddenText)&lt;br /&gt;
					:wikitext(v.whole)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Format the free translation&lt;br /&gt;
	local ft_line = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
	if free_translation and free_translation ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		ft_line:attr(&amp;quot;style&amp;quot;, &amp;quot;clear: left;&amp;quot;)&lt;br /&gt;
		ft_line:wikitext(free_translation)&lt;br /&gt;
	end&lt;br /&gt;
	if args.bottom and args.bottom ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then local bottom = div:tag(&#039;p&#039;)&lt;br /&gt;
		bottom:css(&#039;margin-top&#039;, &#039;0&#039;)&lt;br /&gt;
		bottom:wikitext(args.bottom)&lt;br /&gt;
	end&lt;br /&gt;
	ft_line:node(msg:print_errors()) -- for error messages&lt;br /&gt;
&lt;br /&gt;
	local end_div = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
		end_div:attr(&amp;quot;style&amp;quot;, conf.style.EndDiv)&lt;br /&gt;
	div:newline()&lt;br /&gt;
	local temp_track = &amp;quot;&amp;quot;&lt;br /&gt;
	if last_line == 2&lt;br /&gt;
		then temp_track = &amp;quot;[[Category:Pages with interlinear glosses using two unnamed parameters]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if last_line &amp;gt; 3 and template_name ~= &#039;Template:Fs interlinear&#039;&lt;br /&gt;
		then  temp_track = &amp;quot;[[Category:Pages with interlinear glosses using more than three unnamed parameters]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(div) .. temp_track .. msg:print_warnings()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Lang/data&amp;diff=330</id>
		<title>Module:Lang/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Lang/data&amp;diff=330"/>
		<updated>2024-04-05T21:19:45Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code;										-- get this wiki&amp;#039;s language tag   --[[--------------------------&amp;lt; L A N G _ N A M E _ T A B L E &amp;gt;------------------------------------------------  primary table of tables that decode: 	lang -&amp;gt; language tags and names 	script -&amp;gt; ISO 15924 script tags 	region -&amp;gt; ISO 3166 region tags 	variant -&amp;gt; iana registered variant tags 	suppressed -&amp;gt; map of scripts tags and their assoc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local lang_obj = mw.language.getContentLanguage();&lt;br /&gt;
local this_wiki_lang_tag = lang_obj.code;										-- get this wiki&#039;s language tag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ N A M E _ T A B L E &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
primary table of tables that decode:&lt;br /&gt;
	lang -&amp;gt; language tags and names&lt;br /&gt;
	script -&amp;gt; ISO 15924 script tags&lt;br /&gt;
	region -&amp;gt; ISO 3166 region tags&lt;br /&gt;
	variant -&amp;gt; iana registered variant tags&lt;br /&gt;
	suppressed -&amp;gt; map of scripts tags and their associated language tags&lt;br /&gt;
	&lt;br /&gt;
all of these data come from separate modules that are derived from the IANA language-subtag-registry file&lt;br /&gt;
&lt;br /&gt;
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes&lt;br /&gt;
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches&lt;br /&gt;
the first name.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function key_to_lower (module, src_type)&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local source = ((&#039;var_sup&#039; == src_type) and require (module)) or mw.loadData (module);		-- fetch data from this module; require() avoids metatable trap for variant data&lt;br /&gt;
	if &#039;var_sup&#039; == src_type then&lt;br /&gt;
		for k, v in pairs (source) do&lt;br /&gt;
			out[k:lower()] = v;													-- for variant and suppressed everything is needed&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang&#039; == src_type and source.active then							-- for ~/iana_languages (active)&lt;br /&gt;
		for k, v in pairs (source.active) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang_dep&#039; == src_type and source.deprecated then					-- for ~/iana_languages (deprecated)&lt;br /&gt;
		for k, v in pairs (source.deprecated) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- here for all other sources&lt;br /&gt;
		for k, v in pairs (source) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lang_name_table_t = {&lt;br /&gt;
	lang = key_to_lower (&#039;Module:Language/data/iana languages&#039;, &#039;lang&#039;),&lt;br /&gt;
	lang_dep = key_to_lower (&#039;Module:Language/data/iana languages&#039;, &#039;lang_dep&#039;),&lt;br /&gt;
	script = key_to_lower (&#039;Module:Language/data/iana scripts&#039;),				-- script keys are capitalized; set to lower&lt;br /&gt;
	region = key_to_lower (&#039;Module:Language/data/iana regions&#039;),				-- region keys are uppercase; set to lower&lt;br /&gt;
	variant = key_to_lower (&#039;Module:Language/data/iana variants&#039;, &#039;var_sup&#039;),&lt;br /&gt;
	suppressed = key_to_lower (&#039;Module:Language/data/iana suppressed scripts&#039;, &#039;var_sup&#039;),	-- script keys are capitalized; set to lower&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I 1 8 N   M E D I A W I K I   O V E R R I D E &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
For internationalization; not used at en.wiki&lt;br /&gt;
&lt;br /&gt;
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.&lt;br /&gt;
Translating ~8,000 language names is also not ideal.  MediaWiki maintains (much) shorter lists of language names&lt;br /&gt;
in most languages for which there is a Wikipedia edition.  When desired, Module:Lang can use the MediaWiki &lt;br /&gt;
language list for the local language.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.&lt;br /&gt;
When incomplete, MediaWiki&#039;s list will &#039;fall back&#039; to another language (typically English).  When that happens&lt;br /&gt;
add an appropriate entry to the override table below.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be correct.  At en.wiki, the&lt;br /&gt;
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags.  Often it is simply&lt;br /&gt;
spelling differences:&lt;br /&gt;
	bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho&lt;br /&gt;
	bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym&lt;br /&gt;
	dv: IANA: Dhivehi MW: Divehi&lt;br /&gt;
	el: IANA: Modern Greek MW: Greek&lt;br /&gt;
	ht: IANA: Haitian MW: Haitian Creole&lt;br /&gt;
	ky: IANA: Kirghiz MW: Kyrgyz&lt;br /&gt;
	li: IANA: Limburgan MW: Limburgish&lt;br /&gt;
	or: IANA: Oriya MW: Odia&lt;br /&gt;
	os: IANA: Ossetian MW: Ossetic&lt;br /&gt;
	&amp;quot;pa: IANA: Panjabi MW: Punjabi&lt;br /&gt;
	&amp;quot;ps: IANA: Pushto MW: Pashto&lt;br /&gt;
	&amp;quot;to: IANA: Tonga MW: Tongan&lt;br /&gt;
	&amp;quot;ug: IANA: Uighur MW: Uyghur&lt;br /&gt;
use the override table to override language names that are incorrect for your project&lt;br /&gt;
&lt;br /&gt;
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:&lt;br /&gt;
	=mw.dumpObject (mw.language.fetchLanguageNames (&#039;&amp;lt;tag&amp;gt;&#039;, &#039;all&#039;))&lt;br /&gt;
(replacing &amp;lt;tag&amp;gt; with the language tag for your language)&lt;br /&gt;
&lt;br /&gt;
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local media_wiki_override_enable = false;										-- set to true to override IANA names with MediaWiki names; always false at en.wiki&lt;br /&gt;
																				-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all&lt;br /&gt;
	if true == media_wiki_override_enable then&lt;br /&gt;
		local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, &#039;all&#039;);	-- get a table of language tag/name pairs known to MediaWiki&lt;br /&gt;
		for tag, name in pairs (mw_languages_by_tag_t) do						-- loop through each tag/name pair in the MediaWiki list&lt;br /&gt;
			if lang_name_table_t.lang[tag] then									-- if the tag is in the main list&lt;br /&gt;
				lang_name_table_t.lang[tag] = name;								-- overwrite exisiting name with the name from MediaWiki&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; O V E R R I D E &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Language codes and names in this table override the BCP47 names in lang_name_table.&lt;br /&gt;
&lt;br /&gt;
indexes in this table shall always be lower case&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local override = {&lt;br /&gt;
------------------------------&amp;lt; I S O _ 6 3 9 - 1 &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;ab&amp;quot;] = &amp;quot;Abkhaz&amp;quot;,                                                          -- to match en.wiki article name&lt;br /&gt;
	[&amp;quot;ca-valencia&amp;quot;] = &amp;quot;Valencian&amp;quot;,&lt;br /&gt;
	[&amp;quot;cu&amp;quot;] = &amp;quot;Church Slavonic&amp;quot;,													-- 2nd IANA name;&lt;br /&gt;
	[&amp;quot;de-at&amp;quot;] = &amp;quot;Austrian German&amp;quot;,												-- these code-region and code-variant tags to match en.wiki article names&lt;br /&gt;
	[&amp;quot;de-ch&amp;quot;] = &amp;quot;Swiss Standard German&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-au&amp;quot;] = &amp;quot;Australian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ca&amp;quot;] = &amp;quot;Canadian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-emodeng&amp;quot;] = &amp;quot;Early Modern English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-gb&amp;quot;] = &amp;quot;British English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ie&amp;quot;] = &amp;quot;Irish English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-in&amp;quot;] = &amp;quot;Indian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-nz&amp;quot;] = &amp;quot;New Zealand English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-us&amp;quot;] = &amp;quot;American English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-za&amp;quot;] = &amp;quot;South African English&amp;quot;,&lt;br /&gt;
	[&amp;quot;fy&amp;quot;] = &amp;quot;West Frisian&amp;quot;,													-- Western Frisian&lt;br /&gt;
	[&amp;quot;mo&amp;quot;] = &amp;quot;Moldovan&amp;quot;,														-- Moldavian (deprecated code); to match en.wiki article title&lt;br /&gt;
	[&amp;quot;nl-be&amp;quot;] = &amp;quot;Flemish&amp;quot;,														-- match MediaWiki&lt;br /&gt;
	[&amp;quot;oc-provenc&amp;quot;] = &amp;quot;Provençal&amp;quot;,&lt;br /&gt;
	[&amp;quot;ps&amp;quot;] = &amp;quot;Pashto&amp;quot;,															-- Pushto&lt;br /&gt;
	[&amp;quot;pt-br&amp;quot;] = &amp;quot;Brazilian Portuguese&amp;quot;,											-- match MediaWiki&lt;br /&gt;
	[&amp;quot;tw-asante&amp;quot;] = &amp;quot;Asante Twi&amp;quot;,&lt;br /&gt;
	[&amp;quot;ug&amp;quot;] = &amp;quot;Uyghur&amp;quot;,															-- 2nd IANA name; to match en.wiki article name&lt;br /&gt;
&lt;br /&gt;
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages (since deleted)&lt;br /&gt;
--&amp;lt;begin do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
		[&amp;quot;av&amp;quot;] = &amp;quot;Avar&amp;quot;,														-- Avaric&lt;br /&gt;
		[&amp;quot;bo&amp;quot;] = &amp;quot;Standard Tibetan&amp;quot;,											-- Tibetan&lt;br /&gt;
		[&amp;quot;el&amp;quot;] = &amp;quot;Greek&amp;quot;,														-- Modern Greek&lt;br /&gt;
--		[&amp;quot;en-SA&amp;quot;] = &amp;quot;South African English&amp;quot;,									-- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa&lt;br /&gt;
		[&amp;quot;ff&amp;quot;] = &amp;quot;Fula&amp;quot;,														-- Fulah&lt;br /&gt;
		[&amp;quot;ht&amp;quot;] = &amp;quot;Haitian Creole&amp;quot;,												-- Haitian&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;Otjiherero&amp;quot;,													-- Herero&lt;br /&gt;
		[&amp;quot;ii&amp;quot;] = &amp;quot;Yi&amp;quot;,															-- Sichuan Yi&lt;br /&gt;
		[&amp;quot;ki&amp;quot;] = &amp;quot;Gikuyu&amp;quot;,														-- Kikuyu&lt;br /&gt;
		[&amp;quot;kl&amp;quot;] = &amp;quot;Greenlandic&amp;quot;,													-- Kalaallisut&lt;br /&gt;
		[&amp;quot;ky&amp;quot;] = &amp;quot;Kyrgyz&amp;quot;,														-- Kirghiz&lt;br /&gt;
		[&amp;quot;lg&amp;quot;] = &amp;quot;Luganda&amp;quot;,														-- Ganda&lt;br /&gt;
		[&amp;quot;li&amp;quot;] = &amp;quot;Limburgish&amp;quot;,													-- Limburgan&lt;br /&gt;
		[&amp;quot;mi&amp;quot;] = &amp;quot;Māori&amp;quot;,														-- Maori&lt;br /&gt;
		[&amp;quot;na&amp;quot;] = &amp;quot;Nauruan&amp;quot;,														-- Nauru&lt;br /&gt;
		[&amp;quot;nb&amp;quot;] = &amp;quot;Bokmål&amp;quot;,														-- Norwegian Bokmål&lt;br /&gt;
		[&amp;quot;nd&amp;quot;] = &amp;quot;Northern Ndebele&amp;quot;,											-- North Ndebele&lt;br /&gt;
		[&amp;quot;nn&amp;quot;] = &amp;quot;Nynorsk&amp;quot;,														-- Norwegian Nynorsk&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;Southern Ndebele&amp;quot;,											-- South Ndebele&lt;br /&gt;
		[&amp;quot;ny&amp;quot;] = &amp;quot;Chichewa&amp;quot;,													-- Nyanja&lt;br /&gt;
		[&amp;quot;oj&amp;quot;] = &amp;quot;Ojibwe&amp;quot;,														-- Ojibwa&lt;br /&gt;
		[&amp;quot;or&amp;quot;] = &amp;quot;Odia&amp;quot;,														-- Oriya&lt;br /&gt;
		[&amp;quot;pa&amp;quot;] = &amp;quot;Punjabi&amp;quot;,														-- Panjabi&lt;br /&gt;
		[&amp;quot;rn&amp;quot;] = &amp;quot;Kirundi&amp;quot;,														-- Rundi&lt;br /&gt;
		[&amp;quot;sl&amp;quot;] = &amp;quot;Slovene&amp;quot;,														-- Slovenian&lt;br /&gt;
		[&amp;quot;ss&amp;quot;] = &amp;quot;Swazi&amp;quot;,														-- Swati&lt;br /&gt;
		[&amp;quot;st&amp;quot;] = &amp;quot;Sotho&amp;quot;,														-- Southern Sotho&lt;br /&gt;
		[&amp;quot;to&amp;quot;] = &amp;quot;Tongan&amp;quot;,														-- Tonga&lt;br /&gt;
--&amp;lt;end do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------&amp;lt; I S O _ 6 3 9 - 2,   - 3,   - 5 &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;alv&amp;quot;] = &amp;quot;Atlantic–Congo languages&amp;quot;,										-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;arc&amp;quot;] = &amp;quot;Imperial Aramaic (700-300 BCE)&amp;quot;,									-- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 &#039;preferred&#039; name&lt;br /&gt;
	[&amp;quot;art&amp;quot;] = &amp;quot;constructed&amp;quot;,													-- to match en.wiki article; lowercase for category name&lt;br /&gt;
	[&amp;quot;bhd&amp;quot;] = &amp;quot;Bhadarwahi&amp;quot;,														-- Bhadrawahi; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;bla&amp;quot;] = &amp;quot;Blackfoot&amp;quot;,														-- Siksika; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;bua&amp;quot;] = &amp;quot;Buryat&amp;quot;,															-- Buriat; this is a macro language; these four use wp preferred transliteration;&lt;br /&gt;
	[&amp;quot;bxm&amp;quot;] = &amp;quot;Mongolian Buryat&amp;quot;,												-- Mongolia Buriat; these three all redirect to Buryat&lt;br /&gt;
	[&amp;quot;bxr&amp;quot;] = &amp;quot;Russian Buryat&amp;quot;,													-- Russia Buriat;&lt;br /&gt;
	[&amp;quot;bxu&amp;quot;] = &amp;quot;Chinese Buryat&amp;quot;,													-- China Buriat;&lt;br /&gt;
	[&amp;quot;byr&amp;quot;] = &amp;quot;Yipma&amp;quot;,															-- Baruya, Yipma&lt;br /&gt;
	[&amp;quot;egy&amp;quot;] = &amp;quot;Ancient Egyptian&amp;quot;,												-- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic &lt;br /&gt;
	[&amp;quot;ems&amp;quot;] = &amp;quot;Alutiiq&amp;quot;,														-- Pacific Gulf Yupik; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;esx&amp;quot;] = &amp;quot;Eskimo–Aleut languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;frr&amp;quot;] = &amp;quot;North Frisian&amp;quot;,													-- Northern Frisian&lt;br /&gt;
	[&amp;quot;frs&amp;quot;] = &amp;quot;East Frisian Low Saxon&amp;quot;,											-- Eastern Frisian&lt;br /&gt;
	[&amp;quot;gsw-fr&amp;quot;] = &amp;quot;Alsatian&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;haa&amp;quot;] = &amp;quot;Hän&amp;quot;,															-- Han; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;hmx&amp;quot;] = &amp;quot;Hmong–Mien languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;ilo&amp;quot;] = &amp;quot;Ilocano&amp;quot;,														-- Iloko; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;jam&amp;quot;] = &amp;quot;Jamaican Patois&amp;quot;,												-- Jamaican Creole English&lt;br /&gt;
	[&amp;quot;lij-mc&amp;quot;] = &amp;quot;Monégasque&amp;quot;,													-- Ligurian as spoken in Monaco&lt;br /&gt;
	[&amp;quot;luo&amp;quot;] = &amp;quot;Dholuo&amp;quot;,															-- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo&lt;br /&gt;
	[&amp;quot;mhr&amp;quot;] = &amp;quot;Meadow Mari&amp;quot;,													-- Eastern Mari&lt;br /&gt;
	[&amp;quot;mid&amp;quot;] = &amp;quot;Modern Mandaic&amp;quot;,													-- Mandaic&lt;br /&gt;
	[&#039;mis&#039;] = &amp;quot;uncoded&amp;quot;,														-- Uncoded languages; capitalization; special scope, not collective scope;&lt;br /&gt;
	[&amp;quot;mkh&amp;quot;] = &amp;quot;Mon–Khmer languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;mla&amp;quot;] = &amp;quot;Tamambo&amp;quot;,														-- Malo&lt;br /&gt;
	[&#039;mte&#039;] = &amp;quot;Mono-Alu&amp;quot;,														-- Mono (Solomon Islands)&lt;br /&gt;
	[&#039;mul&#039;] = &amp;quot;multiple&amp;quot;,														-- Multiple languages; capitalization; special scope, not collective scope;&lt;br /&gt;
	[&amp;quot;nan-tw&amp;quot;] = &amp;quot;Taiwanese Hokkien&amp;quot;,											-- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title&lt;br /&gt;
	[&amp;quot;new&amp;quot;] = &amp;quot;Newar&amp;quot;,															-- Newari, Nepal Bhasa; to match en,wiki article title&lt;br /&gt;
	[&amp;quot;ngf&amp;quot;] = &amp;quot;Trans–New Guinea languages&amp;quot;,										-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;nic&amp;quot;] = &amp;quot;Niger–Congo languages&amp;quot;,											-- Niger-Kordofanian languages; to match en,wiki article title&lt;br /&gt;
	[&amp;quot;nrf&amp;quot;] = &amp;quot;Norman&amp;quot;,															-- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text&lt;br /&gt;
	[&amp;quot;nrf-gg&amp;quot;] = &amp;quot;Guernésiais&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;nrf-je&amp;quot;] = &amp;quot;Jèrriais&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;nzi&amp;quot;] = &amp;quot;Nzema&amp;quot;,															-- Nzima; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;oma&amp;quot;] = &amp;quot;Omaha–Ponca&amp;quot;,													-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;orv&amp;quot;] = &amp;quot;Old East Slavic&amp;quot;,												-- Old Russian&lt;br /&gt;
	[&amp;quot;pfl&amp;quot;] = &amp;quot;Palatine German&amp;quot;,												-- Pfaelzisch; to match en.wiki article&lt;br /&gt;
	[&amp;quot;pie&amp;quot;] = &amp;quot;Piro Pueblo&amp;quot;,													-- Piro; to match en.wiki article&lt;br /&gt;
	[&amp;quot;pms&amp;quot;] = &amp;quot;Piedmontese&amp;quot;,													-- Piemontese; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;pnb&amp;quot;] = &amp;quot;Punjabi (Western)&amp;quot;,												-- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()&lt;br /&gt;
	[&amp;quot;rop&amp;quot;] = &amp;quot;Australian Kriol&amp;quot;,												-- Kriol; en.wiki article is a dab; point to correct en.wiki article&lt;br /&gt;
	[&amp;quot;sdo&amp;quot;] = &amp;quot;Bukar–Sadong&amp;quot;,													-- Bukar-Sadung Bidayuh; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;smp&amp;quot;] = &amp;quot;Samaritan Hebrew&amp;quot;,												-- to match en.wiki article title&lt;br /&gt;
	[&amp;quot;stq&amp;quot;] = &amp;quot;Saterland Frisian&amp;quot;,												-- Saterfriesisch&lt;br /&gt;
	[&amp;quot;und&amp;quot;] = &amp;quot;undetermined&amp;quot;,													-- capitalization to match existing category&lt;br /&gt;
	[&amp;quot;wrg&amp;quot;] = &amp;quot;Warrongo&amp;quot;,														-- Warungu&lt;br /&gt;
	[&amp;quot;xal-ru&amp;quot;] = &amp;quot;Kalmyk&amp;quot;,														-- to match en.wiki article title&lt;br /&gt;
	[&amp;quot;xgf&amp;quot;] = &amp;quot;Tongva&amp;quot;,															-- ISO 639-3 is Gabrielino-Fernandeño&lt;br /&gt;
	[&amp;quot;yuf&amp;quot;] = &amp;quot;Havasupai–Hualapai&amp;quot;,												-- Havasupai-Walapai-Yavapai; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;zxx&amp;quot;] = &amp;quot;no linguistic content&amp;quot;,											-- capitalization&lt;br /&gt;
&lt;br /&gt;
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages (since deleted)&lt;br /&gt;
--&amp;lt;begin do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
		[&amp;quot;ace&amp;quot;] = &amp;quot;Acehnese&amp;quot;,													-- Achinese&lt;br /&gt;
		[&amp;quot;aec&amp;quot;] = &amp;quot;Sa&#039;idi Arabic&amp;quot;,												-- Saidi Arabic&lt;br /&gt;
		[&amp;quot;akl&amp;quot;] = &amp;quot;Aklan&amp;quot;,														-- Aklanon&lt;br /&gt;
		[&amp;quot;alt&amp;quot;] = &amp;quot;Altay&amp;quot;,														-- Southern Altai&lt;br /&gt;
		[&amp;quot;apm&amp;quot;] = &amp;quot;Mescalero-Chiricahua&amp;quot;,										-- Mescalero-Chiricahua Apache&lt;br /&gt;
		[&amp;quot;bal&amp;quot;] = &amp;quot;Balochi&amp;quot;,													-- Baluchi&lt;br /&gt;
--		[&amp;quot;bcl&amp;quot;] = &amp;quot;Central Bicolano&amp;quot;,											-- Central Bikol&lt;br /&gt;
		[&amp;quot;bin&amp;quot;] = &amp;quot;Edo&amp;quot;,														-- Bini&lt;br /&gt;
		[&amp;quot;bpy&amp;quot;] = &amp;quot;Bishnupriya Manipuri&amp;quot;,										-- Bishnupriya&lt;br /&gt;
		[&amp;quot;chg&amp;quot;] = &amp;quot;Chagatay&amp;quot;,													-- Chagatai&lt;br /&gt;
		[&amp;quot;ckb&amp;quot;] = &amp;quot;Sorani Kurdish&amp;quot;,												-- Central Kurdish&lt;br /&gt;
		[&amp;quot;cnu&amp;quot;] = &amp;quot;Shenwa&amp;quot;,														-- Chenoua&lt;br /&gt;
		[&amp;quot;coc&amp;quot;] = &amp;quot;Cocopah&amp;quot;,													-- Cocopa&lt;br /&gt;
		[&amp;quot;diq&amp;quot;] = &amp;quot;Zazaki&amp;quot;,														-- Dimli&lt;br /&gt;
		[&amp;quot;fit&amp;quot;] = &amp;quot;Meänkieli&amp;quot;,													-- Tornedalen Finnish&lt;br /&gt;
		[&amp;quot;fkv&amp;quot;] = &amp;quot;Kven&amp;quot;,														-- Kven Finnish&lt;br /&gt;
		[&amp;quot;frk&amp;quot;] = &amp;quot;Old Frankish&amp;quot;,												-- Frankish&lt;br /&gt;
		[&amp;quot;gez&amp;quot;] = &amp;quot;Ge&#039;ez&amp;quot;,														-- Geez&lt;br /&gt;
		[&amp;quot;gju&amp;quot;] = &amp;quot;Gujari&amp;quot;,														-- Gujari&lt;br /&gt;
		[&amp;quot;gsw&amp;quot;] = &amp;quot;Alemannic German&amp;quot;,											-- Swiss German&lt;br /&gt;
		[&amp;quot;gul&amp;quot;] = &amp;quot;Gullah&amp;quot;,														-- Sea Island Creole English&lt;br /&gt;
		[&amp;quot;hak&amp;quot;] = &amp;quot;Hakka&amp;quot;,														-- Hakka Chinese&lt;br /&gt;
		[&amp;quot;hbo&amp;quot;] = &amp;quot;Biblical Hebrew&amp;quot;,											-- Ancient Hebrew&lt;br /&gt;
		[&amp;quot;hnd&amp;quot;] = &amp;quot;Hindko&amp;quot;,														-- Southern Hindko&lt;br /&gt;
--		[&amp;quot;ikt&amp;quot;] = &amp;quot;Inuvialuk&amp;quot;,													-- Inuinnaqtun&lt;br /&gt;
		[&amp;quot;kaa&amp;quot;] = &amp;quot;Karakalpak&amp;quot;,													-- Kara-Kalpak&lt;br /&gt;
		[&amp;quot;khb&amp;quot;] = &amp;quot;Tai Lü&amp;quot;,														-- Lü&lt;br /&gt;
		[&amp;quot;kmr&amp;quot;] = &amp;quot;Kurmanji Kurdish&amp;quot;,											-- Northern Kurdish&lt;br /&gt;
		[&amp;quot;kpo&amp;quot;] = &amp;quot;Kposo&amp;quot;,														-- Ikposo&lt;br /&gt;
		[&amp;quot;krj&amp;quot;] = &amp;quot;Kinaray-a&amp;quot;,													-- Kinaray-A&lt;br /&gt;
--		[&amp;quot;ktz&amp;quot;] = &amp;quot;Juǀ&#039;hoan&amp;quot;,													-- Juǀʼhoan&lt;br /&gt;
		[&amp;quot;lez&amp;quot;] = &amp;quot;Lezgian&amp;quot;,													-- Lezghian&lt;br /&gt;
		[&amp;quot;liv&amp;quot;] = &amp;quot;Livonian&amp;quot;,													-- Liv&lt;br /&gt;
		[&amp;quot;lng&amp;quot;] = &amp;quot;Lombardic&amp;quot;,													-- Langobardic&lt;br /&gt;
		[&amp;quot;mia&amp;quot;] = &amp;quot;Miami-Illinois&amp;quot;,												-- Miami&lt;br /&gt;
		[&amp;quot;miq&amp;quot;] = &amp;quot;Miskito&amp;quot;,													-- Mískito&lt;br /&gt;
		[&amp;quot;mix&amp;quot;] = &amp;quot;Mixtec&amp;quot;,														-- Mixtepec Mixtec&lt;br /&gt;
		[&amp;quot;mni&amp;quot;] = &amp;quot;Meitei&amp;quot;,														-- Manipuri&lt;br /&gt;
		[&amp;quot;mrj&amp;quot;] = &amp;quot;Hill Mari&amp;quot;,													-- Western Mari&lt;br /&gt;
		[&amp;quot;mww&amp;quot;] = &amp;quot;White Hmong&amp;quot;,												-- Hmong Daw&lt;br /&gt;
		[&amp;quot;nds-nl&amp;quot;] = &amp;quot;Dutch Low Saxon&amp;quot;,											-- Low German&lt;br /&gt;
--		[&amp;quot;new&amp;quot;] = &amp;quot;Nepal Bhasa&amp;quot;,												-- Newari&lt;br /&gt;
		[&amp;quot;nso&amp;quot;] = &amp;quot;Northern Sotho&amp;quot;,												-- Pedi&lt;br /&gt;
--		[&amp;quot;nwc&amp;quot;] = &amp;quot;Classical Nepal Bhasa&amp;quot;,										-- Classical Newari, Classical Nepal Bhasa, Old Newari&lt;br /&gt;
		[&amp;quot;ood&amp;quot;] = &amp;quot;O&#039;odham&amp;quot;,													-- Tohono O&#039;odham&lt;br /&gt;
		[&amp;quot;otk&amp;quot;] = &amp;quot;Old Turkic&amp;quot;,													-- Old Turkish&lt;br /&gt;
		[&amp;quot;pal&amp;quot;] = &amp;quot;Middle Persian&amp;quot;,												-- Pahlavi&lt;br /&gt;
		[&amp;quot;pam&amp;quot;] = &amp;quot;Kapampangan&amp;quot;,												-- Pampanga&lt;br /&gt;
		[&amp;quot;phr&amp;quot;] = &amp;quot;Potwari&amp;quot;,													-- Pahari-Potwari&lt;br /&gt;
		[&amp;quot;pka&amp;quot;] = &amp;quot;Jain Prakrit&amp;quot;,												-- Ardhamāgadhī Prākrit&lt;br /&gt;
--		[&amp;quot;pnb&amp;quot;] = &amp;quot;Punjabi&amp;quot;,													-- Western Panjabi&lt;br /&gt;
		[&amp;quot;psu&amp;quot;] = &amp;quot;Shauraseni&amp;quot;,													-- Sauraseni Prākrit&lt;br /&gt;
		[&amp;quot;rap&amp;quot;] = &amp;quot;Rapa Nui&amp;quot;,													-- Rapanui&lt;br /&gt;
		[&amp;quot;rar&amp;quot;] = &amp;quot;Cook Islands Māori&amp;quot;,											-- Rarotongan&lt;br /&gt;
		[&amp;quot;rmu&amp;quot;] = &amp;quot;Scandoromani&amp;quot;,												-- Tavringer Romani&lt;br /&gt;
		[&amp;quot;rom&amp;quot;] = &amp;quot;Romani&amp;quot;,														-- Romany&lt;br /&gt;
		[&amp;quot;rup&amp;quot;] = &amp;quot;Aromanian&amp;quot;,													-- Macedo-Romanian&lt;br /&gt;
		[&amp;quot;ryu&amp;quot;] = &amp;quot;Okinawan&amp;quot;,													-- Central Okinawan&lt;br /&gt;
		[&amp;quot;sdc&amp;quot;] = &amp;quot;Sassarese&amp;quot;,													-- Sassarese Sardinian&lt;br /&gt;
		[&amp;quot;sdn&amp;quot;] = &amp;quot;Gallurese&amp;quot;,													-- Gallurese Sardinian&lt;br /&gt;
		[&amp;quot;shp&amp;quot;] = &amp;quot;Shipibo&amp;quot;,													-- Shipibo-Conibo&lt;br /&gt;
		[&amp;quot;src&amp;quot;] = &amp;quot;Logudorese&amp;quot;,													-- Logudorese Sardinian&lt;br /&gt;
		[&amp;quot;sro&amp;quot;] = &amp;quot;Campidanese&amp;quot;,												-- Campidanese Sardinian&lt;br /&gt;
		[&amp;quot;tkl&amp;quot;] = &amp;quot;Tokelauan&amp;quot;,													-- Tokelau&lt;br /&gt;
		[&amp;quot;tvl&amp;quot;] = &amp;quot;Tuvaluan&amp;quot;,													-- Tuvalu&lt;br /&gt;
		[&amp;quot;tyv&amp;quot;] = &amp;quot;Tuvan&amp;quot;,														-- Tuvinian&lt;br /&gt;
		[&amp;quot;vls&amp;quot;] = &amp;quot;West Flemish&amp;quot;,												-- Vlaams&lt;br /&gt;
		[&amp;quot;wep&amp;quot;] = &amp;quot;Westphalian&amp;quot;,												-- Westphalien&lt;br /&gt;
		[&amp;quot;xal&amp;quot;] = &amp;quot;Oirat&amp;quot;,														-- Kalmyk&lt;br /&gt;
		[&amp;quot;xcl&amp;quot;] = &amp;quot;Old Armenian&amp;quot;,												-- Classical Armenian&lt;br /&gt;
		[&amp;quot;yua&amp;quot;] = &amp;quot;Yucatec Maya&amp;quot;,												-- Yucateco&lt;br /&gt;
--&amp;lt;end do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------&amp;lt; P R I V A T E _ U S E _ T A G S &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;akk-x-latbabyl&amp;quot;] = &amp;quot;Late Babylonian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-midassyr&amp;quot;] = &amp;quot;Middle Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-midbabyl&amp;quot;] = &amp;quot;Middle Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-neoassyr&amp;quot;] = &amp;quot;Neo-Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-neobabyl&amp;quot;] = &amp;quot;Neo-Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-old&amp;quot;] = &amp;quot;Old Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-oldassyr&amp;quot;] = &amp;quot;Old Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-oldbabyl&amp;quot;] = &amp;quot;Old Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;alg-x-proto&amp;quot;] = &amp;quot;Proto-Algonquian&amp;quot;,										-- alg in IANA is Algonquian languages&lt;br /&gt;
	[&amp;quot;ca-x-old&amp;quot;] = &amp;quot;Old Catalan&amp;quot;,&lt;br /&gt;
	[&amp;quot;cel-x-combrit&amp;quot;] = &amp;quot;Common Brittonic&amp;quot;,										-- cel in IANA is Celtic languages&lt;br /&gt;
	[&amp;quot;cel-x-proto&amp;quot;] = &amp;quot;Proto-Celtic&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-demotic&amp;quot;] = &amp;quot;Demotic Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-late&amp;quot;] = &amp;quot;Late Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-middle&amp;quot;] = &amp;quot;Middle Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-old&amp;quot;] = &amp;quot;Old Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;gem-x-proto&amp;quot;] = &amp;quot;Proto-Germanic&amp;quot;,											-- gem in IANA is Germanic languages&lt;br /&gt;
	[&amp;quot;gmw-x-ecg&amp;quot;] = &amp;quot;East Central German&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-aeolic&amp;quot;] = &amp;quot;Aeolic Greek&amp;quot;,											-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre&lt;br /&gt;
	[&amp;quot;grc-x-attic&amp;quot;] = &amp;quot;Attic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-biblical&amp;quot;] = &amp;quot;Biblical Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-byzant&amp;quot;] = &amp;quot;Byzantine Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-classic&amp;quot;] = &amp;quot;Classical Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-doric&amp;quot;] = &amp;quot;Doric Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-hellen&amp;quot;] = &amp;quot;Hellenistic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-ionic&amp;quot;] = &amp;quot;Ionic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-koine&amp;quot;] = &amp;quot;Koinē Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-medieval&amp;quot;] = &amp;quot;Medieval Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-patris&amp;quot;] = &amp;quot;Patristic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grk-x-proto&amp;quot;] = &amp;quot;Proto-Greek&amp;quot;,											-- grk in IANA is Greek languages&lt;br /&gt;
	[&amp;quot;iir-x-proto&amp;quot;] = &amp;quot;Proto-Indo-Iranian&amp;quot;,										-- iir in IANA is Indo-Iranian Languages&lt;br /&gt;
	[&amp;quot;inc-x-mitanni&amp;quot;] = &amp;quot;Mitanni-Aryan&amp;quot;,										-- inc in IANA is Indic languages&lt;br /&gt;
	[&amp;quot;inc-x-proto&amp;quot;] = &amp;quot;Proto-Indo-Aryan&amp;quot;,&lt;br /&gt;
	[&amp;quot;ine-x-proto&amp;quot;] = &amp;quot;Proto-Indo-European&amp;quot;,&lt;br /&gt;
	[&amp;quot;ira-x-proto&amp;quot;] = &amp;quot;Proto-Iranian&amp;quot;,											-- ira in IANA is Iranian languages&lt;br /&gt;
	[&amp;quot;itc-x-proto&amp;quot;] = &amp;quot;Proto-Italic&amp;quot;,											-- itc in IANA is Italic languages&lt;br /&gt;
	[&amp;quot;ksh-x-colog&amp;quot;] = &amp;quot;Colognian&amp;quot;,												-- en.wiki article is Colognian; ksh (Kölsch) redirects there&lt;br /&gt;
	[&amp;quot;la-x-medieval&amp;quot;] = &amp;quot;Medieval Latin&amp;quot;,&lt;br /&gt;
	[&amp;quot;la-x-new&amp;quot;] = &amp;quot;New Latin&amp;quot;,&lt;br /&gt;
	[&amp;quot;lmo-x-milanese&amp;quot;] = &amp;quot;Milanese&amp;quot;,											-- lmo in IANA is Lombard; Milanese is a dialect&lt;br /&gt;
	[&amp;quot;mis-x-ripuar&amp;quot;] = &amp;quot;Ripuarian&amp;quot;,												-- replaces improper use of ksh in wp_languages&lt;br /&gt;
	[&amp;quot;prg-x-old&amp;quot;] = &amp;quot;Old Prussian&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-ammonite&amp;quot;] = &amp;quot;Ammonite&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-aramaic&amp;quot;] = &amp;quot;Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-canaan&amp;quot;] = &amp;quot;Canaanite languages&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-dumaitic&amp;quot;] = &amp;quot;Dumaitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-egurage&amp;quot;] = &amp;quot;Eastern Gurage&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-hatran&amp;quot;] = &amp;quot;Hatran Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-oldsoara&amp;quot;] = &amp;quot;Old South Arabian&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-palmyren&amp;quot;] = &amp;quot;Palmyrene Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-proto&amp;quot;] = &amp;quot;Proto-Semitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-taymanit&amp;quot;] = &amp;quot;Taymanitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sla-x-proto&amp;quot;] = &amp;quot;Proto-Slavic&amp;quot;,											-- sla in IANA is Slavic languages&lt;br /&gt;
	[&amp;quot;yuf-x-hav&amp;quot;] = &amp;quot;Havasupai&amp;quot;,												-- IANA name for these three is Havasupai-Walapai-Yavapai&lt;br /&gt;
	[&amp;quot;yuf-x-wal&amp;quot;] = &amp;quot;Walapai&amp;quot;,&lt;br /&gt;
	[&amp;quot;yuf-x-yav&amp;quot;] = &amp;quot;Yavapai&amp;quot;,&lt;br /&gt;
	[&amp;quot;xsc-x-pontic&amp;quot;] = &amp;quot;Pontic Scythian&amp;quot;,										-- xsc in IANA is Scythian&lt;br /&gt;
	[&amp;quot;xsc-x-saka&amp;quot;] = &amp;quot;Saka&amp;quot;,&lt;br /&gt;
	[&amp;quot;xsc-x-sarmat&amp;quot;] = &amp;quot;Sarmatian&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R T I C L E _ L I N K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for those rare occasions when article titles don&#039;t fit with the normal &#039;&amp;lt;language name&amp;gt;-language&#039;, this table&lt;br /&gt;
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as&lt;br /&gt;
that is the long-standing method of handling article names that don&#039;t fit with the normal pattern&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local article_name = {&lt;br /&gt;
	[&#039;kue&#039;] = &amp;quot;Kuman language (New Guinea)&amp;quot;,									-- Kuman (Papua New Guinea); to avoid Kuman dab page&lt;br /&gt;
	[&amp;quot;lij&amp;quot;] = &amp;quot;Ligurian (Romance language)&amp;quot;,									-- Ligurian; see Template_talk:Lang#Ligurian_dab&lt;br /&gt;
	[&#039;mbo&#039;] = &amp;quot;Mbo language (Cameroon)&amp;quot;,										-- Mbo (Cameroon)&lt;br /&gt;
	[&#039;mnh&#039;] = &amp;quot;Mono language (Congo)&amp;quot;,											-- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages&lt;br /&gt;
	[&#039;mnr&#039;] = &amp;quot;Mono language (California)&amp;quot;,										-- Mono (USA)&lt;br /&gt;
	[&#039;mru&#039;] = &amp;quot;Mono language (Cameroon)&amp;quot;,										-- Mono (Cameroon)&lt;br /&gt;
	[&#039;qwm&#039;] = &amp;quot;Kuman (Russia)&amp;quot;,													-- Kuman (Russia); to avoid Kuman dab page&lt;br /&gt;
	[&amp;quot;snq&amp;quot;] = &amp;quot;Sangu language (Gabon)&amp;quot;,											-- Sangu (Gabon)&lt;br /&gt;
	[&amp;quot;toi&amp;quot;] = &amp;quot;Tonga language (Zambia and Zimbabwe)&amp;quot;,                           -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page&lt;br /&gt;
	[&amp;quot;vwa&amp;quot;] = &amp;quot;Awa language (China)&amp;quot;,											-- Awa (China); to avoid Awa dab page&lt;br /&gt;
	[&amp;quot;xlg&amp;quot;] = &amp;quot;Ligurian (ancient language)&amp;quot;,									-- see Template_talk:Lang#Ligurian_dab&lt;br /&gt;
	[&amp;quot;zmw&amp;quot;] = &amp;quot;Mbo language (Congo)&amp;quot;,											-- Mbo (Democratic Republic of Congo)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; R T L _ S C R I P T S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]&lt;br /&gt;
&lt;br /&gt;
last update to this list: 2017-12-24&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local rtl_scripts = {&lt;br /&gt;
	&#039;adlm&#039;, &#039;arab&#039;, &#039;aran&#039;, &#039;armi&#039;, &#039;avst&#039;, &#039;cprt&#039;, &#039;egyd&#039;, &#039;egyh&#039;, &#039;hatr&#039;, &#039;hebr&#039;,&lt;br /&gt;
	&#039;hung&#039;, &#039;inds&#039;, &#039;khar&#039;, &#039;lydi&#039;, &#039;mand&#039;, &#039;mani&#039;, &#039;mend&#039;, &#039;merc&#039;, &#039;mero&#039;, &#039;narb&#039;,&lt;br /&gt;
	&#039;nbat&#039;, &#039;nkoo&#039;, &#039;orkh&#039;, &#039;palm&#039;, &#039;phli&#039;, &#039;phlp&#039;, &#039;phlv&#039;, &#039;phnx&#039;, &#039;prti&#039;, &#039;rohg&#039;,&lt;br /&gt;
	&#039;samr&#039;, &#039;sarb&#039;, &#039;sogd&#039;, &#039;sogo&#039;, &#039;syrc&#039;, &#039;syre&#039;, &#039;syrj&#039;, &#039;syrn&#039;, &#039;thaa&#039;, &#039;wole&#039;,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L I T _ T I T L E S &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is a table of tables of transliteration standards and the language codes or language scripts that apply to&lt;br /&gt;
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed&lt;br /&gt;
by some of the {{lang-??}} templates.&lt;br /&gt;
&lt;br /&gt;
These tables are more-or-less copied directly from {{transl}}. The standard &#039;NO_STD&#039; is a construct to allow for&lt;br /&gt;
the cases when no |std= parameter value is provided.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local translit_title_table = {&lt;br /&gt;
	[&#039;ahl&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Academy of the Hebrew Language transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala-lc&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;batr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Bikdash Arabic Transliteration Rules&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;bgn/pcgn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Board on Geographic Names / Permanent Committee on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;din&#039;] = {&lt;br /&gt;
		[&#039;ar&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;fa&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;DIN transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;eae&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Encyclopaedia Aethiopica transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hepburn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hepburn transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hunterian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hunterian transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iast&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;International Alphabet of Sanskrit transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iso&#039;] = {																	-- when a transliteration standard is supplied&lt;br /&gt;
		[&#039;ab&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ba&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;be&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;kk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ky&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;mn&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ru&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;uk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bua&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;sah&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tut&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;xal&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;cyrl&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ar&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;he&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;yi&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;hebr&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;el&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
		[&#039;grc&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ja&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hira&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hrkt&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;jpan&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;kana&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;zh&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;chi&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;cmn&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;zho&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
--		[&#039;han&#039;] = &#039;ISO 7098 Chinese&#039;,											-- unicode alias of Hani? doesn&#039;t belong here? should be Hani?&lt;br /&gt;
		[&#039;hans&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;hant&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ka&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
		[&#039;kat&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;arm&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
		[&#039;hy&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;th&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
		[&#039;tha&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ko&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
		[&#039;kor&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;awa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bho&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;doi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;dra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gon&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hno&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;inc&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kok&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ks&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mag&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mai&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ne&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;new&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;or&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pnb&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;raj&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sat&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sd&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;si&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;skr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ta&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;tcy&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;te&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;beng&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;brah&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;deva&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gujr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;guru&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;knda&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mlym&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;orya&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sinh&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;taml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;telu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;ISO transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;jyutping&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Jyutping transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mlcts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Myanmar Language Commission Transcription System&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;McCune–Reischauer transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;nihon-shiki&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Nihon-shiki transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;no_std&#039;] = {																-- when no transliteration standard is supplied&lt;br /&gt;
		[&#039;akk&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;sem&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;phnx&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;xsux&#039;] = &#039;Cuneiform transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;pinyin&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Pinyin transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Revised Romanization of Korean transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rtgs&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Royal Thai General System of Transcription&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;satts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Standard Arabic Technical Transliteration System transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;scientific&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;scientific transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ukrainian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Ukrainian National system of romanization&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ungegn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;United Nations Group of Experts on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wadegile&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Wade–Giles transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wehr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hans Wehr transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
	{&lt;br /&gt;
	this_wiki_lang_tag = this_wiki_lang_tag,&lt;br /&gt;
	this_wiki_lang_dir = lang_obj:getDir(),										-- wiki&#039;s language direction&lt;br /&gt;
	&lt;br /&gt;
	article_name = article_name,&lt;br /&gt;
	lang_name_table = lang_name_table_t,&lt;br /&gt;
	override = override,&lt;br /&gt;
	rtl_scripts = rtl_scripts,&lt;br /&gt;
	special_tags_table = special_tags_table,&lt;br /&gt;
	translit_title_table = translit_title_table,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=329</id>
		<title>Template:Interlinear</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=329"/>
		<updated>2024-04-05T21:17:31Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Interlinear/styles.css&amp;quot; /&amp;gt;{{#invoke:Interlinear|interlinearise}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
If you came here looking for a way to change one of the links produced by this template, then all you need to know is in the &amp;quot;Glossing abbreviations&amp;quot; section of the documentation. Though probably you&#039;re better off simply asking for help on the talk page.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic usage ==&lt;br /&gt;
This template formats a linguistic [[Interlinear gloss|interlinear glossed text]]:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear&lt;br /&gt;
|Nginda-rni ngaja-mi jurliji-rdarra diyim ka-rdu&lt;br /&gt;
|DEM(M)-FOC see-IRR bird-PL fly 3SG-go&lt;br /&gt;
|&#039;Look at all the birds flying!&#039;}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{red|Important}}: On lines to be interlinearised, any [[Help:Wiki markup|wiki markup]] or [[Help:Template|templates]] should never span word boundaries.  Мarkup or templates that apply to a sequence of words must be repeated for each word: (It is also possible to apply formatting to an entire line, see [[#Line formatting|below]])&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear&lt;br /&gt;
|Te ni-ke&#039;&#039;&#039;koo&#039;&#039;&#039; &#039;&#039;&#039;te̱e&#039;&#039;&#039; &#039;&#039;&#039;ún&#039;&#039;&#039;&lt;br /&gt;
|And past-arrived.PL man he&lt;br /&gt;
|&amp;quot;The men arrived&amp;quot;}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The characters {{code|&amp;lt;}}, {{code|&amp;gt;}} and {{code|{{=}}}} should not be used directly. They can be substituted as follows:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Character&lt;br /&gt;
! Substitute&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;&lt;br /&gt;
| &amp;amp;amp;lt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;&lt;br /&gt;
| &amp;amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| =&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;{{=}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To let a multi-word expression be treated as a single word, surround it in {curly brackets}. Similarly, use {{code|{} }} for an empty word:&amp;lt;ref&amp;gt;An alternative in each case is to use a [[Template:nbsp|non-breaking space]]: the example sentence would then be: &#039;&#039;This is a little&amp;amp;amp;nbsp;example in &amp;amp;amp;nbsp; Dutch.&#039;&#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear&lt;br /&gt;
|Dit is een voorbeeldje in het Nederlands&lt;br /&gt;
|This is a {little example} in {} Dutch.|}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The template can be invoked with any number of unnamed parameters, which are interpreted as lines of text. If there is only one unnamed parameter, then it will be rendered in-line and treated as a gloss line: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{interlinear|house-ATTR master-ABS}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; gives: {{interlinear|house-ATTR master-ABS}}. If there are more than one, then all will be interlinearised except the last one, which is assumed to be the free translation. To force the interlinearisation of &#039;&#039;all&#039;&#039; lines, supply an empty last unnamed parameter:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear&lt;br /&gt;
|Ù-dììny 	Juáàny 	bèʔcw.&lt;br /&gt;
|COMPL-hit 	Juan 	dog|}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
A line of text to be displayed &#039;&#039;&#039;above&#039;&#039;&#039; the interlinear block is given using {{para|top}}, one to be displayed immediately &#039;&#039;&#039;below&#039;&#039;&#039; the free translation is set using {{para|bottom}}. If any of these need to contain more than a singe line, then line breaks can be introduced using {{tl|br}}.&lt;br /&gt;
&#039;&#039;&#039;Example numbering&#039;&#039;&#039; can be set using {{para|number}}. The parameter consists of one or more characters to be displayed in the left margin.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear|number=(15a)|top=Potential mood: {{br}} &#039;&#039;Kʼetʼuq ɣˤay ħaƛułxo.&#039;&#039;&lt;br /&gt;
|kʼetʼu-q ɣˤay ħaƛu-&#039;&#039;&#039;ł&#039;&#039;&#039;-xo&lt;br /&gt;
|cat-POSS:ESS milk:ABS drink-&#039;&#039;&#039;POT&#039;&#039;&#039;-PRS&lt;br /&gt;
|&amp;quot;The cat can drink milk.&amp;quot;}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;indentation&#039;&#039;&#039; of the interlinear block (measured in [[Em (CSS)|ems]]) can be modified using {{para|indent}}.&lt;br /&gt;
Currently, the default value is 3 if {{para|number}} is set, and 0 otherwise. This behaviour is set to change: the next version of the template will apply indentation by default.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;spacing&#039;&#039;&#039; between consecutive word stacks can be adjusted using {{para|spacing}}; it is measured in [[Em (CSS)|ems]] and its default value is &#039;&#039;1&#039;&#039;.&lt;br /&gt;
To &#039;&#039;&#039;visually set off&#039;&#039;&#039; the interlinear display from surrounding text, the {{para|box|yes}} parameter can be used. It surrounds the whole interlinear text in a box with a wikitable-like background colour.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear|lang=jig|spacing = 3| box = yes&lt;br /&gt;
|Nyama-baji imimikin-bili-rni-rni ardalakbi-wurru-ju&lt;br /&gt;
|DEM-PL old.woman-ANIM.DU-F-ERG hot-3PL-do&lt;br /&gt;
|&#039;The two old women feel hot.&#039;}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To add a comment after a given line, use {{para|c&#039;&#039;N&#039;&#039;}} (where &#039;&#039;N&#039;&#039; is the sequence of the line: the content of {{para|c1}} will be appended at the end of first line, {{para|c2}} – at the end of the second line etc.):&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear&lt;br /&gt;
|Shte da e vidiyal&lt;br /&gt;
|FUT COMPL AUX see.PTC.M.SG&lt;br /&gt;
|&#039;He must have seen it.&#039;&lt;br /&gt;
|c1 = (rare in spoken usage)}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span id=&amp;quot;Line formatting&amp;quot;&amp;gt;Line formatting&amp;lt;/span&amp;gt; ==&lt;br /&gt;
Formatting can be set for an entire line using the {{para|style&#039;&#039;N&#039;&#039;}} parameter, which applies CSS style properties&amp;lt;ref name=&amp;quot;CSSnote&amp;quot;/&amp;gt; to line &#039;&#039;N&#039;&#039; ({{para|style1}} for the first line, {{para|style2}} for the second one, etc):&amp;lt;!--better use character-spacing?--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear|style1 = font-size:120%|style2 = color:DarkMagenta;&lt;br /&gt;
|Įxę̀ę eya ı̨-lè&lt;br /&gt;
|yesterday sick/painful PFV.3.SBJ-COP.PFV&lt;br /&gt;
|&#039;Yesterday he was sick.&#039;}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, CSS &#039;&#039;&#039;classes&#039;&#039;&#039;&amp;lt;ref&amp;gt;See [[WP:CLASS]] for a list of available classes.  See also [[Help:User style]] for setting up customised display of classes.&amp;lt;/ref&amp;gt; can be specified for line &#039;&#039;N&#039;&#039; using {{para|class&#039;&#039;N&#039;&#039;}}. Classes should be given &#039;&#039;without&#039;&#039; any quotation marks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Italics&#039;&#039;&#039; are by default applied to the first line, unless disabled by {{para|italics1|no}}. Any line can be italicised using {{para|italics&#039;&#039;N&#039;&#039;|yes}} (where &#039;&#039;N&#039;&#039; is the number of the line). On italicised lines, &#039;&#039;&#039;tone numbers&#039;&#039;&#039;&amp;lt;ref&amp;gt;Any single digit following an alphabetical character is treated as a tone number.&amp;lt;/ref&amp;gt; will be formatted as superscripts, unless {{para|tone-superscripting}} is set to {{code|no}}. To turn off italics for a particular word within an italicised line, use {{tl|noitalic}}.&lt;br /&gt;
&lt;br /&gt;
To specify the &#039;&#039;&#039;language&#039;&#039;&#039; of a given line, you can use {{para|lang&#039;&#039;N&#039;&#039;}} (with &#039;&#039;N&#039;&#039; being &#039;&#039;1&#039;&#039; for the first line, &#039;&#039;2&#039;&#039; for the second one etc.).&amp;lt;ref&amp;gt;At this stage, the resulting behaviour does not necessarily match that of the {{tl|lang}} template/s.&amp;lt;/ref&amp;gt; The parameter should be the ISO code of the language, as in the familiar [[Template:Lang]]. If the unnumbered {{para|lang}} is given, then it is applied to the first line. If line &#039;&#039;N&#039;&#039; employs &#039;&#039;&#039;IPA&#039;&#039;&#039;, then the effect of [[Template:IPA]] can be mimicked by setting {{para|ipa&#039;&#039;N&#039;&#039;|yes}}.&amp;lt;ref&amp;gt;This only applies the IPA CSS class.&amp;lt;/ref&amp;gt; If transliteration has been used, then the transliteration scheme can be specified with the {{para|transl&#039;&#039;N&#039;&#039;}} parameter (similarly to [[Template:Transl]]).&lt;br /&gt;
&lt;br /&gt;
== Glossing abbreviations ==&lt;br /&gt;
Linguistic glosses typically abbreviate grammatical category labels, like this: {{gcl|ACC}}, instead of the full name &#039;accusative&#039;. The line containing such glosses is specified using {{para|glossing&#039;&#039;N&#039;&#039;|yes}} (where &#039;&#039;N&#039;&#039; is the number of the line within the interlinear text). If no line is specified, then it is assumed such glosses are found in the second line (this can be bypassed with {{para|glossing2|no}}). Within the lines so specified, any sequence of upper case letters will be interpreted as a grammar gloss and formatted in {{small caps|small caps}}.&lt;br /&gt;
&lt;br /&gt;
Additionally, the template will attempt to recognise the meaning of each abbreviation by looking it up in several places (more details [[#Custom abbreviations|below]]), and if the abbreviation is found, it will be formatted with a dotted underline and the &amp;quot;label&amp;quot; of this abbreviation will be displayed in a tooltip, like this: {{gcl|DAT}}. Alternatively, the abbreviation can be turned into a link to the wikipedia article about the corresponding grammatical category, like this: {{gcl|DAT|glossing=link}}. To choose the latter behvaiour, use the following parameter: {{para|glossing|link}}. It is possible for separate lines to employ different styles, in this case the parameters used will be {{para|glossing2}}, {{para|glossing3}}, etc.&lt;br /&gt;
&lt;br /&gt;
{{anchor|gcl}}&lt;br /&gt;
If a particular glossing abbreviation is to be treated differently from the rest, then {{tl|gcl}} can be used:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{interlinear|ngagun-yi nga-nanda-yi nung&lt;br /&gt;
|{{gcl|1sg}}.NOM-{{gcl|ERG||}} {{gcl|1sgA|1st-person singular &amp;quot;agent&amp;quot;}}.3sgO-see-{{gcl|&#039;&#039;&#039;P&#039;&#039;&#039;ST}} {{gcl|3sg}}.ACC&lt;br /&gt;
|&#039;I saw him/her.&#039;}}&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{interlinear|ngagun-yi nga-nanda-yi nung&lt;br /&gt;
|1sg.NOM-{{gcl|ERG||}} {{gcl|1sgA|1st-person singular &amp;quot;agent&amp;quot;}}.3sgO-see-{{gcl|&#039;&#039;&#039;P&#039;&#039;&#039;ST}} {{gcl|3sg}}.{{gcl|acc}}&lt;br /&gt;
|&#039;I saw him/her.&#039;}}&lt;br /&gt;
In this example, {{tlc|gcl|acc}} marks up &#039;&#039;acc&#039;&#039; as a glossing abbreviation (it wouldn&#039;t have otherwise been interpreted as such because it is lower-case). {{tlc|gcl|1sgA|1st-person singular &amp;quot;agent&amp;quot;}} is used to define the meaning of the unusual abbreviation &#039;&#039;1sgA&#039;&#039;, which wouldn&#039;t be recognised even in upper case. {{tlc|gcl|ERG||}} displays the abbreviation as a link to the Wikipedia article. {{tlc|gcl|&amp;lt;nowiki&amp;gt;&#039;&#039;&#039;P&#039;&#039;&#039;ST&amp;lt;/nowiki&amp;gt;}} applies formatting to a part of a glossing abbreviation; if {{tlc|gcl}} weren&#039;t used here then the wikimarkup would have forced &#039;&#039;P&#039;&#039; to be treated as a separate abbreviation from &#039;&#039;ST&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the grammatical category labels are not abbreviated but written out in full (like that: {{gcl|ACCUSATIVE|glossing=no abbr}}) then {{para|glossing}} should be set to {{code|no abbr}}, which will only apply small-caps formatting:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear|glossing=no abbr&lt;br /&gt;
|wǒ yǐjing jiàn-guò {Zhāng Sān} le.&lt;br /&gt;
|I already see-EXPERIENTIAL {Zhang San} RESULTATIVE.|}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional style&amp;lt;ref name=&amp;quot;CSSnote&amp;quot;&amp;gt;See https://www.w3schools.com/html/html_styles.asp, with the caveat that not all html features are available in wikitext, see [[Help:HTML in wikitext]].&amp;lt;/ref&amp;gt; parameters can be applied to all gloss abbreviations using {{para|glossing-style}}. The default formatting using small caps can be disabled with {{para|small-caps|no}}, and the default underlining can be turned off using {{para|underline|no}}. To exempt a particular abbreviation from being treated as a grammatical gloss, use {{tl|no gloss}}.&lt;br /&gt;
&lt;br /&gt;
The pesky boxes with glossing messages that are shown in preview mode can be turned off with {{para|display-messages|no}}.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Custom abbreviations&amp;quot;&amp;gt;Custom abbreviations&amp;lt;/span&amp;gt; ===&lt;br /&gt;
The template recognises some of the most commonly used abbreviations. However, it is recommended to always specify the meaning of each abbreviation used. There are several ways to do that:&lt;br /&gt;
*Defining &#039;&#039;&#039;at the article level&#039;&#039;&#039;. If an article uses a number of interlinearised examples and they share a set of abbreviations, then these can be defined once for the whole article using the following format:&lt;br /&gt;
*&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;section begin=&amp;quot;list-of-glossing-abbreviations&amp;quot;/&amp;gt;&amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt;&lt;br /&gt;
ABBR1:meaning1&lt;br /&gt;
ABBR2:meaning2&amp;lt;/div&amp;gt;&amp;lt;section end=&amp;quot;list-of-glossing-abbreviations&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The list can contain any number of abbreviations; if a wikipedia article needs to be specified, it is added after a colon, for example: {{code|NEG:negator:Negation (linguistics)}}. This whole code can be placed anywhere in the article, but it is customary to put it at the end, after the references but before any categories. It is visible only in edit mode, it is not displayed in the article.&lt;br /&gt;
*Defining &#039;&#039;&#039;at the level of a single instance of the template&#039;&#039;&#039;. This is done using {{para|abbreviations}} (or {{para|ablist}}). The list of custom abbreviations takes the same format as above: {{code|ABBREVIATION1:meaning1:wikipedia_article1; ABBREVIATION2:meaning2:wikipedia_article2}}... (specifying a Wikipedia article is optional and has no effect unless {{para|glossing|link}}):&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
{{demo|br=0|&amp;lt;nowiki&amp;gt;{{interlinear|abbreviations=RES:resultative; EXP:experiential aspect&lt;br /&gt;
|wǒ yǐjing jiàn-guò {Zhāng Sān} le.&lt;br /&gt;
|I already see-EXP {Zhang San} RES.|}}&amp;lt;/nowiki&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
*Defining &#039;&#039;&#039;a single instance of an abbreviation&#039;&#039;&#039;. This is done using {{tl|gcl}}, as seen [[#gcl|above]]&lt;br /&gt;
*Defining an abbreviation &#039;&#039;&#039;globally&#039;&#039;&#039;. This is done by the addition of an entry to [[Module:Interlinear/data|the module&#039;s data page]]. The abbreviation will be recognised by any use of the templates, anywhere on the English wikipedia. This should be done only for completely unambiguous abbreviations.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
This is a list of problems that are likely to be encountered:&lt;br /&gt;
* One of the lines went missing.&lt;br /&gt;
*:Does this line contain anywhere an equals sign? If yes, then all instances of the equals sign should be replaced with {{tlx|1==}}.&lt;br /&gt;
&lt;br /&gt;
*I&#039;ve applied bolding/italics to a phrase and now the formatting is all over the place.&lt;br /&gt;
*:Any formatting should be applied separately to each word.&lt;br /&gt;
&lt;br /&gt;
* {{anchor|mismatch}} I receive the error &amp;quot;Mismatch in the number of words&amp;quot;.&lt;br /&gt;
*:Interlinearised lines don&#039;t contain the same number of words. If this is intended, then consider filling the empty slots with {{code|{} }}. If this is not intended, then the following points might help track down the cause:&lt;br /&gt;
*:*if formatting or a template is applied to a piece of text then this text is treated as a single word:&lt;br /&gt;
*:*non-breaking spaces are not treated as word separators;&lt;br /&gt;
*:*if a sequence of words is enclosed in {curly brackets} then it&#039;s treated as a single word.&lt;br /&gt;
&lt;br /&gt;
* {{anchor|gloss abbr}} I receive the error &amp;quot;Unknown glossing abbreviation(s)&amp;quot;.&lt;br /&gt;
*:See [[#Glossing abbreviations|above]] for details, but in short:&lt;br /&gt;
*:*If this was not intended as a glossing abbreviation, enclose it in {{tl|no gloss}}.&lt;br /&gt;
*:*To set the meaning of one instance of a glossing abbreviation, format that instance with {{tl|gcl}}, for example {{tlc|gcl|PF|perfective aspect}}.&lt;br /&gt;
*:*If the abbreviation occurs several times within the same example then it might be easier to use the {{para|abbreviations}} parameter, for example: {{para|abbreviations|PF:perfective aspect}}.&lt;br /&gt;
&lt;br /&gt;
==Tracking categories==&lt;br /&gt;
*{{clc|Pages using interlinear with unknown parameters}}&lt;br /&gt;
*{{clc|Pages with interlinear glosses using two unnamed parameters}}&lt;br /&gt;
*{{clc|Pages with interlinear glosses using more than three unnamed parameters}}&lt;br /&gt;
*{{clc|Pages with errors in interlinear text}}&lt;br /&gt;
*{{clc|Articles with ambiguous glossing abbreviations}}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* {{tl|fs interlinear}}, a version of this template which makes it easier to set up glosses with separate lines for a &#039;&#039;&#039;f&#039;&#039;&#039;oreign-&#039;&#039;&#039;s&#039;&#039;&#039;cript text and a transliteration&lt;br /&gt;
* {{tl|gcl}}, for formatting individual glossing abbreviations&lt;br /&gt;
&lt;br /&gt;
==TemplateData==&lt;br /&gt;
{{Format TemplateData|1=&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;First line of interlinear text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;It is italicised by default (unless the parameter \&amp;quot;italics1\&amp;quot; is set to \&amp;quot;no\&amp;quot;).&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Second line of interlinear text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;By default, this is expected to contain the glosses. If there are any glossing abbreviations, they will be expanded (unless the parameter \&amp;quot;glossing2\&amp;quot; is set to \&amp;quot;no\&amp;quot;).&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Third line of text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If it is the last line, it is assumed to be the translation and so will not be interlinearised. To force the last line to be interlinearised, then add a new, empty, line after it.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;4&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Fourth line of text.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;5&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Fifth line of text&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lang&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Language of the text&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;ISO 639 code of the language.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;indent&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Indentation amount, in units of em.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;italics1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether to italicize |1=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Italicize line 1&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;italics2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether to italicize |2=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Italicize line 2&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;italics3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether to italicize |3=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Italicize line 3&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;class1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CSS class for |1=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;class2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CSS class for |2=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;class3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CSS class for |3=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lang1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Language code for |1=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lang2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Language code for |2=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;lang3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Language code for |3=&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ipa1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |1= is IPA&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 1 is IPA&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ipa2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |2= is IPA&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 2 is IPA&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ipa3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |3= is IPA&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 3 is IPA&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;transl1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |1= is transliteration&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 1 is transliteration&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;transl2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |2= is transliteration&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 2 is transliteration&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;transl3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |3= is transliteration&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 3 is transliteration&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;glossing1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |1= is gloss&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 1 is glossing&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;glossing2&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |2= is gloss&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 2 is glossing&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;glossing3&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether |3= is gloss&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Line 3 is glossing&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;glossing-style&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CSS style for glossing abbreviations&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;top&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Text to place on top&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;bottom&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Text to place on bottom&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;number&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Example number&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;(1)&amp;quot;,&lt;br /&gt;
				&amp;quot;(21a)&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;spacing&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;spacing between consecutive word stacks, set in em&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;number&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;box&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether to add a box border&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;c1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Comment after line 1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;c2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Comment after line 2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;c3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Comment after line 3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;tone-superscripting&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Tone superscripting&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Whether to format tone numbers as superscripts on italicized lines&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;glossing&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Glossing display behavior&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Glossing behavior. \&amp;quot;link\&amp;quot; to create links to articles. \&amp;quot;no abbr\&amp;quot; to turn off attempts at translating of abbreviations. These parameters can also apply individually in glossing1/2/3.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;link&amp;quot;,&lt;br /&gt;
				&amp;quot;no abbr&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;small-caps&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Use small capitals for glossing abbreviations&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;underline&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Underline glossing abbreviations&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;display-messages&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Display glossing-related messages in preview&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;abbreviations&amp;quot;: {&lt;br /&gt;
			&amp;quot;aliases&amp;quot;: [&lt;br /&gt;
				&amp;quot;ablist&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Custom abbreviations&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template formats interlinear glossed text.\nOnly a few of the capabilities of this template are documented here. For all options, see its documentation. Alignment is automatic, so there is no need to add padding either inside or around the template.&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;3&amp;quot;,&lt;br /&gt;
		&amp;quot;4&amp;quot;,&lt;br /&gt;
		&amp;quot;5&amp;quot;,&lt;br /&gt;
		&amp;quot;lang&amp;quot;,&lt;br /&gt;
		&amp;quot;top&amp;quot;,&lt;br /&gt;
		&amp;quot;number&amp;quot;,&lt;br /&gt;
		&amp;quot;indent&amp;quot;,&lt;br /&gt;
		&amp;quot;bottom&amp;quot;,&lt;br /&gt;
		&amp;quot;spacing&amp;quot;,&lt;br /&gt;
		&amp;quot;glossing-style&amp;quot;,&lt;br /&gt;
		&amp;quot;box&amp;quot;,&lt;br /&gt;
		&amp;quot;lang1&amp;quot;,&lt;br /&gt;
		&amp;quot;lang2&amp;quot;,&lt;br /&gt;
		&amp;quot;lang3&amp;quot;,&lt;br /&gt;
		&amp;quot;italics1&amp;quot;,&lt;br /&gt;
		&amp;quot;italics2&amp;quot;,&lt;br /&gt;
		&amp;quot;italics3&amp;quot;,&lt;br /&gt;
		&amp;quot;class1&amp;quot;,&lt;br /&gt;
		&amp;quot;class2&amp;quot;,&lt;br /&gt;
		&amp;quot;class3&amp;quot;,&lt;br /&gt;
		&amp;quot;ipa1&amp;quot;,&lt;br /&gt;
		&amp;quot;ipa2&amp;quot;,&lt;br /&gt;
		&amp;quot;ipa3&amp;quot;,&lt;br /&gt;
		&amp;quot;transl1&amp;quot;,&lt;br /&gt;
		&amp;quot;transl2&amp;quot;,&lt;br /&gt;
		&amp;quot;transl3&amp;quot;,&lt;br /&gt;
		&amp;quot;glossing1&amp;quot;,&lt;br /&gt;
		&amp;quot;glossing2&amp;quot;,&lt;br /&gt;
		&amp;quot;glossing3&amp;quot;,&lt;br /&gt;
		&amp;quot;c1&amp;quot;,&lt;br /&gt;
		&amp;quot;c2&amp;quot;,&lt;br /&gt;
		&amp;quot;c3&amp;quot;,&lt;br /&gt;
		&amp;quot;tone-superscripting&amp;quot;,&lt;br /&gt;
		&amp;quot;glossing&amp;quot;,&lt;br /&gt;
		&amp;quot;small-caps&amp;quot;,&lt;br /&gt;
		&amp;quot;underline&amp;quot;,&lt;br /&gt;
		&amp;quot;display-messages&amp;quot;,&lt;br /&gt;
		&amp;quot;abbreviations&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
[[Category:Linguistics templates]]&lt;br /&gt;
[[Category:Language formatting and function templates]]&lt;br /&gt;
[[Category:Layout templates]]&lt;br /&gt;
[[Category:Translation templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=328</id>
		<title>Template:Interlinear</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=328"/>
		<updated>2024-04-05T21:16:19Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Interlinear/styles.css&amp;quot; /&amp;gt;{{#invoke:Interlinear|interlinearise}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
If you came here looking for a way to change one of the links produced by this template, then all you need to know is in the &amp;quot;Glossing abbreviations&amp;quot; section of the documentation. Though probably you&#039;re better off simply asking for help on the talk page.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=327</id>
		<title>Template:Interlinear</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Template:Interlinear&amp;diff=327"/>
		<updated>2024-04-05T21:15:08Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Interlinear/styles.css&amp;quot; /&amp;gt;{{#invoke:Interlinear|interlinearise}}&amp;lt;/includeonly&amp;gt;{{#invoke:Check for unknown parameters|check|unknown={{main other|_VALUE_{{PAGENAME}}}}|preview=Page using Template:Interlinear with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y|&amp;lt;!--all supported parameters should be listed here: --&amp;gt; 1 | 2 | 3 | 4 | 5 | abbreviations | bottom | box | c1 | c2 | c3 | c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;templatestyles src=&amp;quot;Interlinear/styles.css&amp;quot; /&amp;gt;{{#invoke:Interlinear|interlinearise}}&amp;lt;/includeonly&amp;gt;{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using interlinear with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Interlinear]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y|&amp;lt;!--all supported parameters should be listed here: --&amp;gt; 1 | 2 | 3 | 4 | 5 | abbreviations | bottom | box | c1 | c2 | c3 | c4 | c5 | class1 | class2 | class3 | class4 | class5 | display-messages | glossing-style | glossing | glossing1 | glossing2 | glossing3 | glossing4 | glossing5 | indent | ipa1 | ipa2 | ipa3 | italics1 | italics2 | italics3 | italics4 | italics5 | lang | lang1 | lang2 | lang3 | number | small-caps | spacing | style1 | style2 | style3 | tone-superscripting | top | transl1 | transl2 | transl3 | underline }}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
If you came here looking for a way to change one of the links produced by this template, then all you need to know is in the &amp;quot;Glossing abbreviations&amp;quot; section of the documentation. Though probably you&#039;re better off simply asking for help on the talk page.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Interlinear/doc&amp;diff=326</id>
		<title>Module:Interlinear/doc</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Interlinear/doc&amp;diff=326"/>
		<updated>2024-04-05T21:14:04Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot; {{Lua|Module:Interlinear/data|Module:Ancient Greek|Module:Lang/data|Module:Yesno|Module:Arguments}} This is the module for Template:Interlinear and Template:gcl. The function invoked by the first one is {{code|p.interlinearise}} and the one invoked by the latter is {{code|p.gcl}}. See those templates&amp;#039; documentation for usage instructions.  Most of the glossing abbreviations are loaded from the data subpage.  &amp;lt;includeonly&amp;gt;{{#ifeq:{{SUB...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Lua|Module:Interlinear/data|Module:Ancient Greek|Module:Lang/data|Module:Yesno|Module:Arguments}}&lt;br /&gt;
This is the module for [[Template:Interlinear]] and [[Template:gcl]]. The function invoked by the first one is {{code|p.interlinearise}} and the one invoked by the latter is {{code|p.gcl}}. See those templates&#039; documentation for usage instructions.&lt;br /&gt;
&lt;br /&gt;
Most of the glossing abbreviations are loaded from [[Module:Interlinear/data|the data subpage]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox | |&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Language-related modules]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Arguments/doc&amp;diff=325</id>
		<title>Module:Arguments/doc</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Arguments/doc&amp;diff=325"/>
		<updated>2024-04-05T21:13:08Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;  This module provides easy processing of arguments passed from &amp;lt;code&amp;gt;#invoke&amp;lt;/code&amp;gt;. It is a meta-module, meant for use by other modules, and should not be called from &amp;lt;code&amp;gt;#invoke&amp;lt;/code&amp;gt; directly (for a module directly invocable by templates you might want to have a look at {{ml|params|}}). Its features include: * Easy trimming of arguments and removal of blank arguments. * Arguments can be passed by both the current frame and by the parent frame at the same time. (Mo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
This module provides easy processing of arguments passed from &amp;lt;code&amp;gt;#invoke&amp;lt;/code&amp;gt;. It is a meta-module, meant for use by other modules, and should not be called from &amp;lt;code&amp;gt;#invoke&amp;lt;/code&amp;gt; directly (for a module directly invocable by templates you might want to have a look at {{ml|params|}}). Its features include:&lt;br /&gt;
* Easy trimming of arguments and removal of blank arguments.&lt;br /&gt;
* Arguments can be passed by both the current frame and by the parent frame at the same time. (More details below.)&lt;br /&gt;
* Arguments can be passed in directly from another Lua module or from the debug console.&lt;br /&gt;
* Most features can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic use ==&lt;br /&gt;
&lt;br /&gt;
First, you need to load the module. It contains one function, named &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the most basic scenario, you can use getArgs inside your main function. The variable &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; is a table containing the arguments from #invoke. (See below for details.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	-- Main module code goes here.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Recommended practice ===&lt;br /&gt;
However, the recommended practice is to use a function just for processing arguments from #invoke. This means that if someone calls your module from another Lua module you don&#039;t have to have a frame object available, which improves performance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Main module code goes here.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way this is called from a template is &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Example|main}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (optionally with some parameters like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Example|main|arg1=value1|arg2=value2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), and the way this is called from a module is &amp;lt;syntaxhighlight lang=lua inline&amp;gt;require(&#039;Module:Example&#039;)._main({arg1 = &#039;value1&#039;, arg2 = value2, &#039;spaced arg3&#039; = &#039;value3&#039;})&amp;lt;/syntaxhighlight&amp;gt;. What this second one does is construct a table with the arguments in it, then gives that table to the p._main(args) function, which uses it natively.&lt;br /&gt;
&lt;br /&gt;
=== Multiple functions ===&lt;br /&gt;
If you want multiple functions to use the arguments, and you also want them to be accessible from #invoke, you can use a wrapper function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame)&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func1 = makeInvokeFunc(&#039;_func1&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func1(args)&lt;br /&gt;
	-- Code for the first function goes here.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.func2 = makeInvokeFunc(&#039;_func2&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._func2(args)&lt;br /&gt;
	-- Code for the second function goes here.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
&lt;br /&gt;
The following options are available. They are explained in the sections below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false,&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		-- Code for processing one argument&lt;br /&gt;
	end,&lt;br /&gt;
	frameOnly = true,&lt;br /&gt;
	parentOnly = true,&lt;br /&gt;
	parentFirst = true,&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&#039;Template:A wrapper template&#039;,&lt;br /&gt;
		&#039;Template:Another wrapper template&#039;&lt;br /&gt;
	},&lt;br /&gt;
	readOnly = true,&lt;br /&gt;
	noOverwrite = true&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trimming and removing blanks ===&lt;br /&gt;
&lt;br /&gt;
Blank arguments often trip up coders new to converting MediaWiki templates to Lua. In template syntax, blank strings and strings consisting only of whitespace are considered false. However, in Lua, blank strings and strings consisting of whitespace are considered true. This means that if you don&#039;t pay attention to such arguments when you write your Lua modules, you might treat something as true that should actually be treated as false. To avoid this, by default this module removes all blank arguments.&lt;br /&gt;
&lt;br /&gt;
Similarly, whitespace can cause problems when dealing with positional arguments. Although whitespace is trimmed for named arguments coming from #invoke, it is preserved for positional arguments. Most of the time this additional whitespace is not desired, so this module trims it off by default.&lt;br /&gt;
&lt;br /&gt;
However, sometimes you want to use blank arguments as input, and sometimes you want to keep additional whitespace. This can be necessary to convert some templates exactly as they were written. If you want to do this, you can set the &amp;lt;code&amp;gt;trim&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;removeBlanks&amp;lt;/code&amp;gt; arguments to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	trim = false,&lt;br /&gt;
	removeBlanks = false&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom formatting of arguments ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you want to remove some blank arguments but not others, or perhaps you might want to put all of the positional arguments in lower case. To do things like this you can use the &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt; option. The input to this option must be a function that takes two parameters, &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, and returns a single value. This value is what you will get when you access the field &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; table.&lt;br /&gt;
&lt;br /&gt;
Example 1: this function preserves whitespace for the first positional argument&#039;s value, but trims all other arguments&#039; value and removes all other blank arguments.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif value then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &#039;&#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: this function removes blank arguments and converts all argument values to lower case, but doesn&#039;t trim whitespace from positional parameters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if not value then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		value = mw.ustring.lower(value)&lt;br /&gt;
		if mw.ustring.find(value, &#039;%S&#039;) then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the above functions will fail if passed input that is not of type &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. This might be the case if you use the &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt; function in the main function of your module, and that function is called by another Lua module. In this case, you will need to check the type of your input. This is not a problem if you are using a function specially for arguments from #invoke (i.e. you have &amp;lt;code&amp;gt;p.main&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p._main&amp;lt;/code&amp;gt; functions, or something similar).&lt;br /&gt;
&lt;br /&gt;
{{cot|Examples 1 and 2 with type checking}}&lt;br /&gt;
Example 1:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if key == 1 then&lt;br /&gt;
			return value&lt;br /&gt;
		elseif type(value) == &#039;string&#039; then&lt;br /&gt;
			value = mw.text.trim(value)&lt;br /&gt;
			if value ~= &#039;&#039; then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	valueFunc = function (key, value)&lt;br /&gt;
		if type(value) == &#039;string&#039; then&lt;br /&gt;
			value = mw.ustring.lower(value)&lt;br /&gt;
			if mw.ustring.find(value, &#039;%S&#039;) then&lt;br /&gt;
				return value&lt;br /&gt;
			else&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{cob}}&lt;br /&gt;
&lt;br /&gt;
Also, please note that the &amp;lt;code&amp;gt;valueFunc&amp;lt;/code&amp;gt; function is called more or less every time an argument is requested from the &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; table, so if you care about performance you should make sure you aren&#039;t doing anything inefficient with your code.&lt;br /&gt;
&lt;br /&gt;
=== Frames and parent frames ===&lt;br /&gt;
&lt;br /&gt;
Arguments in the &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; table can be passed from the current frame or from its parent frame at the same time. To understand what this means, it is easiest to give an example. Let&#039;s say that we have a module called &amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt;. This module prints the first two positional arguments that it is passed.&lt;br /&gt;
&lt;br /&gt;
{{cot|Module:ExampleArgs code}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local first = args[1] or &#039;&#039;&lt;br /&gt;
	local second = args[2] or &#039;&#039;&lt;br /&gt;
	return first .. &#039; &#039; .. second&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{cob}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Module:ExampleArgs&amp;lt;/code&amp;gt; is then called by &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;, which contains the code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:ExampleArgs|main|firstInvokeArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. This produces the result &amp;quot;firstInvokeArg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now if we were to call &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;, the following would happen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; | Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; | Result&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg secondTemplateArg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are three options you can set to change this behaviour: &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt;. If you set &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; then only arguments passed from the current frame will be accepted; if you set &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; then only arguments passed from the parent frame will be accepted; and if you set &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt; then arguments will be passed from both the current and parent frames, but the parent frame will have priority over the current frame. Here are the results in terms of &amp;lt;code&amp;gt;Template:ExampleArgs&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
; frameOnly&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; | Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; | Result&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
; parentOnly&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; | Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; | Result&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstTemplateArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstTemplateArg secondTemplateArg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
; parentFirst&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50em; max-width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 60%;&amp;quot; | Code&lt;br /&gt;
! style=&amp;quot;width: 40%;&amp;quot; | Result&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstInvokeArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstTemplateArg&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ExampleArgs|firstTemplateArg|secondTemplateArg}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| firstTemplateArg secondTemplateArg&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
# If you set both the &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parentOnly&amp;lt;/code&amp;gt; options, the module won&#039;t fetch any arguments at all from #invoke. This is probably not what you want.&lt;br /&gt;
# In some situations a parent frame may not be available, e.g. if getArgs is passed the parent frame rather than the current frame. In this case, only the frame arguments will be used (unless parentOnly is set, in which case no arguments will be used) and the &amp;lt;code&amp;gt;parentFirst&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frameOnly&amp;lt;/code&amp;gt; options will have no effect.&lt;br /&gt;
&lt;br /&gt;
=== Wrappers ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;wrappers&#039;&#039; option is used to specify a limited number of templates as &#039;&#039;wrapper templates&#039;&#039;, that is, templates whose only purpose is to call a module. If the module detects that it is being called from a wrapper template, it will only check for arguments in the parent frame; otherwise it will only check for arguments in the frame passed to getArgs. This allows modules to be called by either #invoke or through a wrapper template without the loss of performance associated with having to check both the frame and the parent frame for each argument lookup.&lt;br /&gt;
&lt;br /&gt;
For example, the only content of [[Template:Side box]] (excluding content in {{tag|noinclude}} tags) is &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Side box|main}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. There is no point in checking the arguments passed directly to the #invoke statement for this template, as no arguments will ever be specified there. We can avoid checking arguments passed to #invoke by using the &#039;&#039;parentOnly&#039;&#039; option, but if we do this then #invoke will not work from other pages either. If this were the case, the {{para|text|Some text}} in the code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Side box|main|text=Some text}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would be ignored completely, no matter what page it was used from. By using the &amp;lt;code&amp;gt;wrappers&amp;lt;/code&amp;gt; option to specify &#039;Template:Side box&#039; as a wrapper, we can make &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Side box|main|text=Some text}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; work from most pages, while still not requiring that the module check for arguments on the [[Template:Side box]] page itself.&lt;br /&gt;
&lt;br /&gt;
Wrappers can be specified either as a string, or as an array of strings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = &#039;Template:Wrapper template&#039;&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local args = getArgs(frame, {&lt;br /&gt;
	wrappers = {&lt;br /&gt;
		&#039;Template:Wrapper 1&#039;,&lt;br /&gt;
		&#039;Template:Wrapper 2&#039;,&lt;br /&gt;
		-- Any number of wrapper templates can be added here.&lt;br /&gt;
	}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
# The module will automatically detect if it is being called from a wrapper template&#039;s /sandbox subpage, so there is no need to specify sandbox pages explicitly.&lt;br /&gt;
# The &#039;&#039;wrappers&#039;&#039; option effectively changes the default of the &#039;&#039;frameOnly&#039;&#039; and &#039;&#039;parentOnly&#039;&#039; options. If, for example, &#039;&#039;parentOnly&#039;&#039; were explicitly set to 0 with &#039;&#039;wrappers&#039;&#039; set, calls via wrapper templates would result in both frame and parent arguments being loaded, though calls not via wrapper templates would result in only frame arguments being loaded.&lt;br /&gt;
# If the &#039;&#039;wrappers&#039;&#039; option is set and no parent frame is available, the module will always get the arguments from the frame passed to &amp;lt;code&amp;gt;getArgs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Writing to the args table ===&lt;br /&gt;
&lt;br /&gt;
Sometimes it can be useful to write new values to the args table. This is possible with the default settings of this module. (However, bear in mind that it is usually better coding style to create a new table with your new values and copy arguments from the args table as needed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
args.foo = &#039;some value&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to alter this behaviour with the &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt; options. If &amp;lt;code&amp;gt;readOnly&amp;lt;/code&amp;gt; is set then it is not possible to write any values to the args table at all. If &amp;lt;code&amp;gt;noOverwrite&amp;lt;/code&amp;gt; is set, then it is possible to add new values to the table, but it is not possible to add a value if it would overwrite any arguments that are passed from #invoke.&lt;br /&gt;
&lt;br /&gt;
=== Ref tags ===&lt;br /&gt;
&lt;br /&gt;
This module uses [[mw:Extension:Scribunto/Lua reference manual#Metatables|metatables]] to fetch arguments from #invoke. This allows access to both the frame arguments and the parent frame arguments without using the &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt; function. This can help if your module might be passed {{tag|ref}} tags as input.&lt;br /&gt;
&lt;br /&gt;
As soon as {{tag|ref}} tags are accessed from Lua, they are processed by the MediaWiki software and the reference will appear in the reference list at the bottom of the article. If your module proceeds to omit the reference tag from the output, you will end up with a phantom reference – a reference that appears in the reference list but without any number linking to it. This has been a problem with modules that use &amp;lt;code&amp;gt;pairs()&amp;lt;/code&amp;gt; to detect whether to use the arguments from the frame or the parent frame, as those modules automatically process every available argument.&lt;br /&gt;
&lt;br /&gt;
This module solves this problem by allowing access to both frame and parent frame arguments, while still only fetching those arguments when it is necessary. The problem will still occur if you use &amp;lt;code&amp;gt;pairs(args)&amp;lt;/code&amp;gt; elsewhere in your module, however.&lt;br /&gt;
&lt;br /&gt;
=== Known limitations ===&lt;br /&gt;
&lt;br /&gt;
The use of metatables also has its downsides. Most of the normal Lua table tools won&#039;t work properly on the args table, including the &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; operator, the &amp;lt;code&amp;gt;next()&amp;lt;/code&amp;gt; function, and the functions in the table library. If using these is important for your module, you should use your own argument processing function instead of this module.&amp;lt;includeonly&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox||&lt;br /&gt;
[[Category:Lua metamodules]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Module:Params]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Wikipedia utility modules]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Arguments&amp;diff=324</id>
		<title>Module:Arguments</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Arguments&amp;diff=324"/>
		<updated>2024-04-05T21:12:23Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly.  local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType  local arguments = {}  -- Generate four different tidyVal functions, so that we don&amp;#039;t have to check the -- options every time we call it.  local function tidyValDefault(key, val) 	if type(val) == &amp;#039;string&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Yesno/doc&amp;diff=323</id>
		<title>Module:Yesno/doc</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Yesno/doc&amp;diff=323"/>
		<updated>2024-04-05T21:11:31Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot; This module provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; boolean values, wikicode templates can only express boolean values through strings such as &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values as &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;, to allow for distinctions between &amp;lt;code&amp;gt;nil&amp;lt;/...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This module provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; boolean values, wikicode templates can only express boolean values through strings such as &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values as &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;, to allow for distinctions between &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions. If it is passed input that it does not recognise as boolean or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;, it is possible to specify a default value to return.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;yesno(value, default)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is the value to be tested. Boolean input or boolean-style input (see below) always evaluates to either &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; always evaluates to &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Other values evaluate to &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages. For normal wiki pages you can use {{tl|yesno}} instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some input values always return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, and some always return &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values always return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- These always return true:&lt;br /&gt;
yesno(&#039;yes&#039;)&lt;br /&gt;
yesno(&#039;y&#039;)&lt;br /&gt;
yesno(&#039;true&#039;)&lt;br /&gt;
yesno(&#039;t&#039;)&lt;br /&gt;
yesno(&#039;on&#039;)&lt;br /&gt;
yesno(&#039;1&#039;)&lt;br /&gt;
yesno(1)&lt;br /&gt;
yesno(true)&lt;br /&gt;
&lt;br /&gt;
-- These always return false:&lt;br /&gt;
yesno(&#039;no&#039;)&lt;br /&gt;
yesno(&#039;n&#039;)&lt;br /&gt;
yesno(&#039;false&#039;)&lt;br /&gt;
yesno(&#039;f&#039;)&lt;br /&gt;
yesno(&#039;off&#039;)&lt;br /&gt;
yesno(&#039;0&#039;)&lt;br /&gt;
yesno(0)&lt;br /&gt;
yesno(false)&lt;br /&gt;
&lt;br /&gt;
-- A nil value always returns nil:&lt;br /&gt;
yesno(nil)&lt;br /&gt;
yesno()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String values are converted to lower case before they are matched:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- These always return true:&lt;br /&gt;
yesno(&#039;Yes&#039;)&lt;br /&gt;
yesno(&#039;YES&#039;)&lt;br /&gt;
yesno(&#039;yEs&#039;)&lt;br /&gt;
yesno(&#039;Y&#039;)&lt;br /&gt;
yesno(&#039;tRuE&#039;)&lt;br /&gt;
&lt;br /&gt;
-- These always return false:&lt;br /&gt;
yesno(&#039;No&#039;)&lt;br /&gt;
yesno(&#039;NO&#039;)&lt;br /&gt;
yesno(&#039;nO&#039;)&lt;br /&gt;
yesno(&#039;N&#039;)&lt;br /&gt;
yesno(&#039;fALsE&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undefined input (&#039;foo&#039;)===&lt;br /&gt;
You can specify a default value if yesno receives input other than that listed above. If you don&#039;t supply a default, the module will return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; for these inputs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- These return nil:&lt;br /&gt;
yesno(nil)&lt;br /&gt;
yesno(&#039;foo&#039;)&lt;br /&gt;
yesno({})&lt;br /&gt;
yesno(5)&lt;br /&gt;
yesno(&#039;&#039;)&lt;br /&gt;
yesno(function() return &#039;This is a function.&#039; end)&lt;br /&gt;
yesno(nil, true)&lt;br /&gt;
yesno(nil, &#039;bar&#039;)&lt;br /&gt;
&lt;br /&gt;
-- These return true:&lt;br /&gt;
yesno(&#039;foo&#039;, true)&lt;br /&gt;
yesno({}, true)&lt;br /&gt;
yesno(5, true)&lt;br /&gt;
yesno(&#039;&#039;, true)&lt;br /&gt;
yesno(function() return &#039;This is a function.&#039; end, true)&lt;br /&gt;
&lt;br /&gt;
-- These return &amp;quot;bar&amp;quot;:&lt;br /&gt;
yesno(&#039;foo&#039;, &#039;bar&#039;)&lt;br /&gt;
yesno({}, &#039;bar&#039;)&lt;br /&gt;
yesno(5, &#039;bar&#039;)&lt;br /&gt;
yesno(&#039;&#039;, &#039;bar&#039;)&lt;br /&gt;
yesno(function() return &#039;This is a function.&#039; end, &#039;bar&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the empty string usually evaluates to false in wikitext, it evaluates to true in Lua. This module prefers the Lua behaviour over the wikitext behaviour. If treating the empty string as false is important for your module, you will need to convert empty strings to a value that evaluates to false before passing them to this module. In the case of arguments received from wikitext, this can be done by using [[Module:Arguments]].&lt;br /&gt;
&lt;br /&gt;
===Handling nil results===&lt;br /&gt;
By definition:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
yesno(nil)         -- Returns nil.&lt;br /&gt;
yesno(&#039;foo&#039;)       -- Returns nil.&lt;br /&gt;
yesno(nil, true)   -- Returns nil.&lt;br /&gt;
yesno(nil, false)  -- Returns nil.&lt;br /&gt;
yesno(&#039;foo&#039;, true) -- Returns true.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the binary &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot; inline&amp;gt;true/false&amp;lt;/syntaxhighlight&amp;gt;-only values, use code like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
myvariable = yesno(value or false) -- When value is nil, result is false.&lt;br /&gt;
myvariable = yesno(value or true)  -- When value is nil, result is true.&lt;br /&gt;
myvariable = yesno(&#039;foo&#039;) or false  -- Unknown string returns nil, result is false.&lt;br /&gt;
myvariable = yesno(&#039;foo&#039;, true) or false  -- Default value (here: true) applies, result is true.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;{{sandbox other||&lt;br /&gt;
[[Category:Lua metamodules]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Yesno&amp;diff=322</id>
		<title>Module:Yesno</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Yesno&amp;diff=322"/>
		<updated>2024-04-05T21:11:00Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}.  return function (val, default) 	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you 	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the 	-- following line. 	val = type(val) == &amp;#039;string&amp;#039; and val:lower() or val 	if val == nil then 		return nil 	elseif val == true  		or val == &amp;#039;yes&amp;#039; 		or val == &amp;#039;y&amp;#039; 		or val =...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == &#039;string&#039; and val:lower() or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == &#039;yes&#039;&lt;br /&gt;
		or val == &#039;y&#039;&lt;br /&gt;
		or val == &#039;true&#039;&lt;br /&gt;
		or val == &#039;t&#039;&lt;br /&gt;
		or val == &#039;on&#039;&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == &#039;no&#039;&lt;br /&gt;
		or val == &#039;n&#039;&lt;br /&gt;
		or val == &#039;false&#039;&lt;br /&gt;
		or val == &#039;f&#039;&lt;br /&gt;
		or val == &#039;off&#039;&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Interlinear/data&amp;diff=321</id>
		<title>Module:Interlinear/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Interlinear/data&amp;diff=321"/>
		<updated>2024-04-05T21:10:24Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;--The table here is traversed by the function that expands glossing abbreviations. If the abbreviation isn&amp;#039;t found in this list and it begins with an &amp;quot;N&amp;quot; then the function will discard the &amp;quot;N&amp;quot; and search again, returning the result prefixed with &amp;quot;non-&amp;quot; (ex. &amp;quot;NFUT&amp;quot; is not found, so it will search for &amp;quot;FUT&amp;quot; and return &amp;quot;non-future&amp;quot;). A few abbreviations are exempt from this behaviour and they&amp;#039;re marked by the ExcludeNegation key.-- local abbreviations = { [&amp;quot;0&amp;quot;] = {expan...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[The table here is traversed by the function that expands glossing abbreviations.&lt;br /&gt;
If the abbreviation isn&#039;t found in this list and it begins with an &amp;quot;N&amp;quot; then the function&lt;br /&gt;
will discard the &amp;quot;N&amp;quot; and search again, returning the result prefixed with &amp;quot;non-&amp;quot; (ex. &amp;quot;NFUT&amp;quot;&lt;br /&gt;
is not found, so it will search for &amp;quot;FUT&amp;quot; and return &amp;quot;non-future&amp;quot;). A few abbreviations&lt;br /&gt;
are exempt from this behaviour and they&#039;re marked by the ExcludeNegation key.]]--&lt;br /&gt;
local abbreviations = {&lt;br /&gt;
[&amp;quot;0&amp;quot;] = {expansion = &amp;quot;&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;1&amp;quot;] = {expansion = &amp;quot;first person&amp;quot;, wikipage = &amp;quot;Grammatical person&amp;quot;},&lt;br /&gt;
[&amp;quot;2&amp;quot;] = {expansion = &amp;quot;second person&amp;quot;, wikipage = &amp;quot;Grammatical person&amp;quot;},&lt;br /&gt;
[&amp;quot;3&amp;quot;] = {expansion = &amp;quot;third person&amp;quot;, wikipage = &amp;quot;grammatical person&amp;quot;},&lt;br /&gt;
[&amp;quot;3OBV&amp;quot;] = {expansion = &amp;quot;third person obviative&amp;quot;, wikipage = &amp;quot;Obviative&amp;quot;},&lt;br /&gt;
[&amp;quot;A&amp;quot;] = {expansion = &amp;quot;agent-like argument of canonical transitive verb&amp;quot;, wikipage = &amp;quot;A (glossing abbreviation)&amp;quot;,  ExcludeNegation = true},&lt;br /&gt;
[&amp;quot;ABE&amp;quot;] = {expansion = &amp;quot;abessive case (&#039;without&#039;)&amp;quot;, wikipage = &amp;quot;abessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;ABL&amp;quot;] = {expansion = &amp;quot;ablative case&amp;quot;, wikipage = &amp;quot;ablative case&amp;quot;},&lt;br /&gt;
[&amp;quot;ABS&amp;quot;] = {expansion = &amp;quot;absolutive case&amp;quot;, wikipage = &amp;quot;absolutive case&amp;quot;},&lt;br /&gt;
[&amp;quot;ACC&amp;quot;] = {expansion = &amp;quot;accusative case&amp;quot;, wikipage = &amp;quot;accusative case&amp;quot;},&lt;br /&gt;
[&amp;quot;ACCOM&amp;quot;] = {expansion = &amp;quot;accompanier&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;ACT&amp;quot;] = {expansion = &amp;quot;active/actor&amp;quot;, wikipage = &amp;quot;active voice&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;ADJ&amp;quot;] = {expansion = &amp;quot;adjective&amp;quot;, wikipage = &amp;quot;adjective&amp;quot;},&lt;br /&gt;
[&amp;quot;ADE&amp;quot;] = {expansion = &amp;quot;adessive case&amp;quot;, wikipage = &amp;quot;adessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;ADM&amp;quot;] = {expansion = &amp;quot;admonitive mood (warning)&amp;quot;, wikipage = &amp;quot;admonitive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;ADV&amp;quot;] = {expansion = &amp;quot;adverb(ial)&amp;quot;, wikipage = &amp;quot;adverbial&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;AFF&amp;quot;] = {expansion = &amp;quot;affirmative&amp;quot;, wikipage = &amp;quot;affirmative (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;AG&amp;quot;] = {expansion = &amp;quot;agentive case&amp;quot;, wikipage = &amp;quot;agent (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;AGT&amp;quot;] = {expansion = &amp;quot;agentive case&amp;quot;, wikipage = &amp;quot;agentive case&amp;quot;},&lt;br /&gt;
[&amp;quot;AGR&amp;quot;] = {expansion = &amp;quot;agreement&amp;quot;, wikipage = &amp;quot;agreement (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;ALL&amp;quot;] = {expansion = &amp;quot;allative case (&#039;to&#039;)&amp;quot;, wikipage = &amp;quot;allative case&amp;quot;},&lt;br /&gt;
[&amp;quot;AL&amp;quot;] = {expansion = &amp;quot;allocutive agreement&amp;quot;, wikipage = &amp;quot;allocutive agreement&amp;quot;},&lt;br /&gt;
[&amp;quot;ALLOC&amp;quot;] = {expansion = &amp;quot;allocutive agreement&amp;quot;, wikipage = &amp;quot;allocutive agreement&amp;quot;},&lt;br /&gt;
[&amp;quot;ALIEN&amp;quot;] = {expansion = &amp;quot;alienable possession&amp;quot;, wikipage = &amp;quot;alienable possession&amp;quot;},&lt;br /&gt;
[&amp;quot;AN&amp;quot;] = {expansion = &amp;quot;animate&amp;quot;, wikipage = &amp;quot;animacy&amp;quot;},&lt;br /&gt;
[&amp;quot;ANAPH&amp;quot;] = {expansion = &amp;quot;anaphora/anaphoric&amp;quot;, wikipage = &amp;quot;Anaphora (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;AND&amp;quot;] = {expansion = &amp;quot;andative (&#039;going towards&#039;)&amp;quot;, wikipage = &amp;quot;andative&amp;quot;},&lt;br /&gt;
[&amp;quot;ANIM&amp;quot;] = {expansion = &amp;quot;animate&amp;quot;, wikipage = &amp;quot;animacy&amp;quot;},&lt;br /&gt;
[&amp;quot;ANT&amp;quot;] = {expansion = &amp;quot;anterior tense&amp;quot;, wikipage = &amp;quot;anterior tense&amp;quot;},&lt;br /&gt;
[&amp;quot;ANTE&amp;quot;] = {expansion = &amp;quot;antessive case (&#039;before&#039;)&amp;quot;, wikipage = &amp;quot;antessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;ANTIC&amp;quot;] = {expansion = &amp;quot;anticausative&amp;quot;, wikipage = &amp;quot;anticausative&amp;quot;},&lt;br /&gt;
[&amp;quot;ANTIP&amp;quot;] = {expansion = &amp;quot;antipassive voice&amp;quot;, wikipage = &amp;quot;antipassive voice&amp;quot;},&lt;br /&gt;
[&amp;quot;AP&amp;quot;] = {expansion = &amp;quot;antipassive voice&amp;quot;, wikipage = &amp;quot;antipassive voice&amp;quot;},&lt;br /&gt;
[&amp;quot;AOR&amp;quot;] = {expansion = &amp;quot;aorist&amp;quot;, wikipage = &amp;quot;aorist&amp;quot;},&lt;br /&gt;
[&amp;quot;APP&amp;quot;] = {expansion = &amp;quot;apposition&amp;quot;, wikipage = &amp;quot;apposition&amp;quot;},&lt;br /&gt;
[&amp;quot;APL&amp;quot;] = {expansion = &amp;quot;applicative voice&amp;quot;, wikipage = &amp;quot;applicative voice&amp;quot;},&lt;br /&gt;
[&amp;quot;APPL&amp;quot;] = {expansion = &amp;quot;applicative voice&amp;quot;, wikipage = &amp;quot;applicative voice&amp;quot;},&lt;br /&gt;
[&amp;quot;APPR&amp;quot;] = {expansion = &amp;quot;apprehensive mood&amp;quot;, wikipage = &amp;quot;apprehensive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;APRX&amp;quot;] = {expansion = &amp;quot;approximative&amp;quot;, wikipage = &amp;quot;approximative&amp;quot;},&lt;br /&gt;
[&amp;quot;ART&amp;quot;] = {expansion = &amp;quot;article&amp;quot;, wikipage = &amp;quot;article (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;ASP&amp;quot;] = {expansion = &amp;quot;aspect&amp;quot;, wikipage = &amp;quot;aspect (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;ASS&amp;quot;] = {expansion = &amp;quot;associative case&amp;quot;, wikipage = &amp;quot;associative case&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;AT&amp;quot;] = {expansion = &amp;quot;agent trigger&amp;quot;, wikipage = &amp;quot;austronesian alignment&amp;quot;},&lt;br /&gt;
[&amp;quot;ATTR&amp;quot;] = {expansion = &amp;quot;attributive&amp;quot;, wikipage = &amp;quot;Attributive&amp;quot;},&lt;br /&gt;
[&amp;quot;ATT&amp;quot;] = {expansion = &amp;quot;attenuative&amp;quot;, wikipage = &amp;quot;attenuative&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;AUD&amp;quot;] = {expansion = &amp;quot;auditory evidential&amp;quot;, wikipage = &amp;quot;evidentiality&amp;quot;},&lt;br /&gt;
[&amp;quot;AUG&amp;quot;] = {expansion = &amp;quot;augmentative&amp;quot;, wikipage = &amp;quot;augmentative&amp;quot;},&lt;br /&gt;
[&amp;quot;AUX&amp;quot;] = {expansion = &amp;quot;auxiliary verb&amp;quot;, wikipage = &amp;quot;auxiliary verb&amp;quot;},&lt;br /&gt;
[&amp;quot;AV&amp;quot;] = {expansion = &amp;quot;agent voice&amp;quot;, wikipage = &amp;quot;agent voice&amp;quot;},&lt;br /&gt;
[&amp;quot;B&amp;quot;] = {expansion = &amp;quot;core benefactive&amp;quot;, wikipage = &amp;quot;benefactive case&amp;quot;},&lt;br /&gt;
[&amp;quot;BE&amp;quot;] = {expansion = &amp;quot;&#039;be&#039; verb&amp;quot;, wikipage = &amp;quot;be verb&amp;quot;},&lt;br /&gt;
[&amp;quot;BEN&amp;quot;] = {expansion = &amp;quot;benefactive case (&#039;for&#039;)&amp;quot;, wikipage = &amp;quot;benefactive case&amp;quot;},&lt;br /&gt;
[&amp;quot;C&amp;quot;] = {expansion = &amp;quot;common gender&amp;quot;, wikipage = &amp;quot;common gender&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;CAP&amp;quot;] = {expansion = &amp;quot;capability&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;CAU&amp;quot;] = {expansion = &amp;quot;causative&amp;quot;, wikipage = &amp;quot;causative&amp;quot;},&lt;br /&gt;
[&amp;quot;CAUS&amp;quot;] = {expansion = &amp;quot;causative&amp;quot;, wikipage = &amp;quot;causative&amp;quot;},&lt;br /&gt;
[&amp;quot;CENT&amp;quot;] = {expansion = &amp;quot;centric case&amp;quot;, wikipage = &amp;quot;centric case&amp;quot;},&lt;br /&gt;
[&amp;quot;CF&amp;quot;] = {expansion = &amp;quot;counterfactual conditional&amp;quot;, wikipage = &amp;quot;counterfactual conditional&amp;quot;},&lt;br /&gt;
[&amp;quot;CIRC&amp;quot;] = {expansion = &amp;quot;circumfix&amp;quot;, wikipage = &amp;quot;circumfix&amp;quot;},&lt;br /&gt;
[&amp;quot;CIT&amp;quot;] = {expansion = &amp;quot;citation form&amp;quot;, wikipage = &amp;quot;citation form&amp;quot;},&lt;br /&gt;
[&amp;quot;CL&amp;quot;] = {expansion = &amp;quot;classifier&amp;quot;, wikipage = &amp;quot;classifier (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;CLF&amp;quot;] = {expansion = &amp;quot;classifier&amp;quot;, wikipage = &amp;quot;classifier (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;CNJ&amp;quot;] = {expansion = &amp;quot;conjunction&amp;quot;, wikipage = &amp;quot;conjunction (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;CNSQ&amp;quot;] = {expansion = &amp;quot;consequential mood&amp;quot;, wikipage = &amp;quot;consequential mood&amp;quot;},&lt;br /&gt;
[&amp;quot;COL&amp;quot;] = {expansion = &amp;quot;collective number&amp;quot;, wikipage = &amp;quot;collective number&amp;quot;},&lt;br /&gt;
[&amp;quot;COM&amp;quot;] = {expansion = &amp;quot;comitative case (&#039;together with&#039;)&amp;quot;, wikipage = &amp;quot;comitative case&amp;quot;},&lt;br /&gt;
[&amp;quot;COMP&amp;quot;] = {expansion = &amp;quot;comparative&amp;quot;, wikipage = &amp;quot;comparative&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;COMPL&amp;quot;] = {expansion = &amp;quot;completive aspect&amp;quot;, wikipage = &amp;quot;completive aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;CPL&amp;quot;] = {expansion = &amp;quot;completive aspect&amp;quot;, wikipage = &amp;quot;completive aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;CONC&amp;quot;] = {expansion = &amp;quot;concessive&amp;quot;, wikipage = &amp;quot;concessive&amp;quot;},&lt;br /&gt;
[&amp;quot;COND&amp;quot;] = {expansion = &amp;quot;conditional mood&amp;quot;, wikipage = &amp;quot;conditional mood&amp;quot;},&lt;br /&gt;
[&amp;quot;CONJ&amp;quot;] = {expansion = &amp;quot;conjunction&amp;quot;, wikipage = &amp;quot;conjunction (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;CONN&amp;quot;] = {expansion = &amp;quot;connective&amp;quot;, wikipage = &amp;quot;connective particle&amp;quot;},&lt;br /&gt;
[&amp;quot;CONT&amp;quot;] = {expansion = &amp;quot;continuous aspect&amp;quot;, wikipage = &amp;quot;continuous aspect&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;CTN&amp;quot;] = {expansion = &amp;quot;continuous aspect&amp;quot;, wikipage = &amp;quot;continuous aspect&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;CNTR&amp;quot;] = {expansion = &amp;quot;contrastive&amp;quot;, wikipage = &amp;quot;contrast (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;COP&amp;quot;] = {expansion = &amp;quot;copula&amp;quot;, wikipage = &amp;quot;copula (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;COR&amp;quot;] = {expansion = &amp;quot;coreference&amp;quot;, wikipage = &amp;quot;coreference&amp;quot;},&lt;br /&gt;
[&amp;quot;CRAS&amp;quot;] = {expansion = &amp;quot;crastinal tense (&#039;tomorrow&#039;)&amp;quot;, wikipage = &amp;quot;crastinal tense&amp;quot;},&lt;br /&gt;
[&amp;quot;CRS&amp;quot;] = {expansion = &amp;quot;current relevance marker&amp;quot;, wikipage = &amp;quot;current relevance (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;CVB&amp;quot;] = {expansion = &amp;quot;converb&amp;quot;, wikipage = &amp;quot;converb&amp;quot;},&lt;br /&gt;
[&amp;quot;D&amp;quot;] = {expansion = &amp;quot;core dative case&amp;quot;, wikipage = &amp;quot;dative case&amp;quot;},&lt;br /&gt;
[&amp;quot;DAT&amp;quot;] = {expansion = &amp;quot;dative case&amp;quot;, wikipage = &amp;quot;dative case&amp;quot;},&lt;br /&gt;
[&amp;quot;DE&amp;quot;] = {expansion = &amp;quot;different event&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;DEC&amp;quot;] = {expansion = &amp;quot;declarative mood&amp;quot;, wikipage = &amp;quot;declarative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DECL&amp;quot;] = {expansion = &amp;quot;declarative mood&amp;quot;, wikipage = &amp;quot;declarative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DEF&amp;quot;] = {expansion = &amp;quot;definite&amp;quot;, wikipage = &amp;quot;definite&amp;quot;},&lt;br /&gt;
[&amp;quot;DEI&amp;quot;] = {expansion = &amp;quot;deictic&amp;quot;, wikipage = &amp;quot;deictic&amp;quot;},&lt;br /&gt;
[&amp;quot;DEIX&amp;quot;] = {expansion = &amp;quot;deictic&amp;quot;, wikipage = &amp;quot;deictic&amp;quot;},&lt;br /&gt;
[&amp;quot;DEL&amp;quot;] = {expansion = &amp;quot;delative case (&#039;off of&#039;)&amp;quot;, wikipage = &amp;quot;delative case&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;DEM&amp;quot;] = {expansion = &amp;quot;demonstrative&amp;quot;, wikipage = &amp;quot;demonstrative&amp;quot;},&lt;br /&gt;
[&amp;quot;DEO&amp;quot;] = {expansion = &amp;quot;deontic mood&amp;quot;, wikipage = &amp;quot;deontic mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DEP&amp;quot;] = {expansion = &amp;quot;dependent&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;DES&amp;quot;] = {expansion = &amp;quot;desiderative mood&amp;quot;, wikipage = &amp;quot;desiderative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DESI&amp;quot;] = {expansion = &amp;quot;desiderative mood&amp;quot;, wikipage = &amp;quot;desiderative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DEST&amp;quot;] = {expansion = &amp;quot;destinative aspect&amp;quot;, wikipage = &amp;quot;destinative aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;DET&amp;quot;] = {expansion = &amp;quot;determiner&amp;quot;, wikipage = &amp;quot;determiner&amp;quot;},&lt;br /&gt;
[&amp;quot;DETR&amp;quot;] = {expansion = &amp;quot;detransitive&amp;quot;, wikipage = &amp;quot;detransitive&amp;quot;},&lt;br /&gt;
[&amp;quot;DH&amp;quot;] = {expansion = &amp;quot;motion downhill, seaward&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;DIM&amp;quot;] = {expansion = &amp;quot;diminutive&amp;quot;, wikipage = &amp;quot;diminutive&amp;quot;},&lt;br /&gt;
[&amp;quot;DIR&amp;quot;] = { ambiguous = true}, --direct case? direct speech? directional?&lt;br /&gt;
[&amp;quot;DISJ&amp;quot;] = {expansion = &amp;quot;disjunction&amp;quot;, wikipage = &amp;quot;disjunction&amp;quot;},&lt;br /&gt;
[&amp;quot;DIST&amp;quot;] = {expansion = &amp;quot;distal&amp;quot;, wikipage = &amp;quot;distal demonstrative&amp;quot;},&lt;br /&gt;
[&amp;quot;DISTR&amp;quot;] = {expansion = &amp;quot;distributive case&amp;quot;, wikipage = &amp;quot;distributive case&amp;quot;},&lt;br /&gt;
[&amp;quot;DITR&amp;quot;] = {expansion = &amp;quot;ditransitive&amp;quot;, wikipage = &amp;quot;ditransitive&amp;quot;},&lt;br /&gt;
[&amp;quot;DLM&amp;quot;] = {expansion = &amp;quot;delimited&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;DM&amp;quot;] = {expansion = &amp;quot;discourse marker&amp;quot;, wikipage = &amp;quot;discourse marker&amp;quot;},&lt;br /&gt;
[&amp;quot;DO&amp;quot;] = {expansion = &amp;quot;direct object&amp;quot;, wikipage = &amp;quot;direct object&amp;quot;},&lt;br /&gt;
[&amp;quot;DR&amp;quot;] = {expansion = &amp;quot;motion downriver&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;DS&amp;quot;] = {expansion = &amp;quot;different-subject&amp;quot;, wikipage = &amp;quot;switch-reference&amp;quot;},&lt;br /&gt;
[&amp;quot;DU&amp;quot;] = {expansion = &amp;quot;dual number&amp;quot;, wikipage = &amp;quot;Dual (grammatical number)&amp;quot;},&lt;br /&gt;
[&amp;quot;DUB&amp;quot;] = {expansion = &amp;quot;dubitative mood&amp;quot;, wikipage = &amp;quot;dubitative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;DUR&amp;quot;] = {expansion = &amp;quot;durative aspect&amp;quot;, wikipage = &amp;quot;durative aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;DY&amp;quot;] = {expansion = &amp;quot;dyadic&amp;quot;, wikipage = &amp;quot;dyadic kinship term&amp;quot;},&lt;br /&gt;
[&amp;quot;DYAD&amp;quot;] = {expansion = &amp;quot;dyadic&amp;quot;, wikipage = &amp;quot;dyadic kinship term&amp;quot;},&lt;br /&gt;
[&amp;quot;DYN&amp;quot;] = {expansion = &amp;quot;dynamic aspect&amp;quot;, wikipage = &amp;quot;dynamic aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;E&amp;quot;] = {expansion = &amp;quot;epenthetic morpheme&amp;quot;, wikipage = &amp;quot;epenthesis&amp;quot;},&lt;br /&gt;
[&amp;quot;ELA&amp;quot;] = {expansion = &amp;quot;elative case (&#039;out of&#039;)&amp;quot;, wikipage = &amp;quot;elative case&amp;quot;},&lt;br /&gt;
[&amp;quot;EMP&amp;quot;] = {expansion = &amp;quot;emphatic&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;EMPH&amp;quot;] = {expansion = &amp;quot;emphatic&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;EPIS&amp;quot;] = {expansion = &amp;quot;epistemic mood/modality&amp;quot;, wikipage = &amp;quot;epistemic modality&amp;quot;},&lt;br /&gt;
[&amp;quot;ERG&amp;quot;] = {expansion = &amp;quot;ergative case&amp;quot;, wikipage = &amp;quot;ergative case&amp;quot;},&lt;br /&gt;
[&amp;quot;ESS&amp;quot;] = {expansion = &amp;quot;essive case&amp;quot;, wikipage = &amp;quot;essive case&amp;quot;},&lt;br /&gt;
[&amp;quot;EV&amp;quot;] = {expansion = &amp;quot;evidential&amp;quot;, wikipage = &amp;quot;evidential&amp;quot;},&lt;br /&gt;
[&amp;quot;EVID&amp;quot;] = {expansion = &amp;quot;evidential&amp;quot;, wikipage = &amp;quot;evidential&amp;quot;},&lt;br /&gt;
[&amp;quot;EVIT&amp;quot;] = {expansion = &amp;quot;evitative case&amp;quot;, wikipage = &amp;quot;evitative case&amp;quot;},&lt;br /&gt;
[&amp;quot;EX&amp;quot;] = {expansion = &amp;quot;exclusive person&amp;quot;, wikipage = &amp;quot;clusivity&amp;quot;},&lt;br /&gt;
[&amp;quot;EXCL&amp;quot;] = {expansion = &amp;quot;exclusive person&amp;quot;, wikipage = &amp;quot;clusivity&amp;quot;},&lt;br /&gt;
[&amp;quot;EXCLAM&amp;quot;] = {expansion = &amp;quot;exclamative&amp;quot;, wikipage = &amp;quot;exclamative&amp;quot;},&lt;br /&gt;
[&amp;quot;EXESS&amp;quot;] = {expansion = &amp;quot;exessive case&amp;quot;, wikipage = &amp;quot;exessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;EXH&amp;quot;] = {expansion = &amp;quot;exhortative&amp;quot;, wikipage = &amp;quot;exhortative&amp;quot;},&lt;br /&gt;
[&amp;quot;EXIST&amp;quot;] = {expansion = &amp;quot;existential (&#039;there is&#039;)&amp;quot;, wikipage = &amp;quot;existential clause&amp;quot;},&lt;br /&gt;
[&amp;quot;EXO&amp;quot;] = {expansion = &amp;quot;exocentric&amp;quot;, wikipage = &amp;quot;exocentric case&amp;quot;},&lt;br /&gt;
[&amp;quot;EXP&amp;quot;] = {expansion = &amp;quot;experiential, or experiencer&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true}, --experiental evidential, experiential aspect, experiencer&lt;br /&gt;
--[&amp;quot;EXPER&amp;quot;] = {expansion = &amp;quot;experiential evidential&amp;quot;, wikipage = &amp;quot;evidentiality&amp;quot;},&lt;br /&gt;
[&amp;quot;EXPL&amp;quot;] = {expansion = &amp;quot;expletive/dummy&amp;quot;, wikipage = &amp;quot;Syntactic expletive&amp;quot;},&lt;br /&gt;
[&amp;quot;F&amp;quot;] = {expansion = &amp;quot;feminine gender&amp;quot;, wikipage = &amp;quot;feminine gender&amp;quot;},&lt;br /&gt;
[&amp;quot;FEM&amp;quot;] = {expansion = &amp;quot;feminine gender&amp;quot;, wikipage = &amp;quot;feminine gender&amp;quot;},&lt;br /&gt;
[&amp;quot;FACT&amp;quot;] = {expansion = &amp;quot;factive evidential&amp;quot;, wikipage = &amp;quot;evidentiality&amp;quot;},&lt;br /&gt;
[&amp;quot;FAM&amp;quot;] = {expansion = &amp;quot;familiar register&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FIN&amp;quot;] = {expansion = &amp;quot;finite&amp;quot;, wikipage = &amp;quot;finite verb&amp;quot;},&lt;br /&gt;
[&amp;quot;FOC&amp;quot;] = {expansion = &amp;quot;focus&amp;quot;, wikipage = &amp;quot;focus (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;FORM&amp;quot;] = {expansion = &amp;quot;formal register&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FP&amp;quot;] = {expansion = &amp;quot;final particle&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FR&amp;quot;] = {expansion = &amp;quot;frequentative&amp;quot;, wikipage = &amp;quot;frequentative&amp;quot;},&lt;br /&gt;
[&amp;quot;FREQ&amp;quot;] = {expansion = &amp;quot;frequentative&amp;quot;, wikipage = &amp;quot;frequentative&amp;quot;},&lt;br /&gt;
[&amp;quot;FMR&amp;quot;] = {expansion = &amp;quot;former, deceased&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FPL&amp;quot;] = {expansion = &amp;quot;feminine plural&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FSG&amp;quot;] = {expansion = &amp;quot;feminine singular&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;FUT&amp;quot;] = {expansion = &amp;quot;future tense&amp;quot;, wikipage = &amp;quot;future tense&amp;quot;},&lt;br /&gt;
[&amp;quot;GEN&amp;quot;] = {expansion = &amp;quot;genitive case&amp;quot;, wikipage = &amp;quot;genitive case&amp;quot;},&lt;br /&gt;
[&amp;quot;GER&amp;quot;] = {expansion = &amp;quot;gerund&amp;quot;, wikipage = &amp;quot;gerund&amp;quot;},&lt;br /&gt;
[&amp;quot;GNO&amp;quot;] = {expansion = &amp;quot;gnomic&amp;quot;, wikipage = &amp;quot;Gnomic aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;GT&amp;quot;] = {expansion = &amp;quot;goal trigger&amp;quot;, wikipage = &amp;quot;austronesian alignment&amp;quot;},&lt;br /&gt;
[&amp;quot;HAB&amp;quot;] = {expansion = &amp;quot;habitual aspect&amp;quot;, wikipage = &amp;quot;habitual aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;HBL&amp;quot;] = {expansion = &amp;quot;humble register&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;HEST&amp;quot;] = {expansion = &amp;quot;hesternal tense (&#039;yesterday&#039;)&amp;quot;, wikipage = &amp;quot;hesternal tense&amp;quot;},&lt;br /&gt;
[&amp;quot;HIST&amp;quot;] = {expansion = &amp;quot;hitorical&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;HOD&amp;quot;] = {expansion = &amp;quot;hodiernal tense (&#039;today&#039;)&amp;quot;, wikipage = &amp;quot;hodiernal tense&amp;quot;},&lt;br /&gt;
[&amp;quot;HON&amp;quot;] = {expansion = &amp;quot;honorific&amp;quot;, wikipage = &amp;quot;honorifics (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;HORT&amp;quot;] = {expansion = &amp;quot;hortative&amp;quot;, wikipage = &amp;quot;hortative&amp;quot;},&lt;br /&gt;
[&amp;quot;HSY&amp;quot;] = {expansion = &amp;quot;hearsay&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;HUM&amp;quot;] = {expansion = &amp;quot;human/anthropic gender&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;HYP&amp;quot;] = {expansion = &amp;quot;hypothetical mood&amp;quot;, wikipage = &amp;quot;hypothetical mood&amp;quot;},&lt;br /&gt;
[&amp;quot;I&amp;quot;] = {expansion = &amp;quot;&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true}, -- &amp;quot;inflected&amp;quot; or &amp;quot;class I&amp;quot;?&lt;br /&gt;
[&amp;quot;ID&amp;quot;] = {expansion = &amp;quot;identical&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;IDENTIF&amp;quot;] = {expansion = &amp;quot;identifiable&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;IDEO&amp;quot;] = {expansion = &amp;quot;ideophone&amp;quot;, wikipage = &amp;quot;ideophone&amp;quot;},&lt;br /&gt;
[&amp;quot;IGNOR&amp;quot;] = {expansion = &amp;quot;ignorative&amp;quot;, wikipage = &amp;quot;ignorative&amp;quot;},&lt;br /&gt;
[&amp;quot;II&amp;quot;] = {expansion = &amp;quot;class II&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;III&amp;quot;] = {expansion = &amp;quot;class III&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;ILL&amp;quot;] = {expansion = &amp;quot;illative case (&#039;into&#039;)&amp;quot;, wikipage = &amp;quot;illative case&amp;quot;},&lt;br /&gt;
[&amp;quot;IMM&amp;quot;] = {expansion = &amp;quot;immediate&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;IMP&amp;quot;] = {expansion = &amp;quot;imperative mood&amp;quot;, wikipage = &amp;quot;imperative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;IMPERF&amp;quot;] = {expansion = &amp;quot;imperfect&amp;quot;, wikipage = &amp;quot;imperfect&amp;quot;},&lt;br /&gt;
[&amp;quot;IMPR&amp;quot;] = {expansion = &amp;quot;imprecative mood&amp;quot;, wikipage = &amp;quot;imprecative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;IMPREC&amp;quot;] = {expansion = &amp;quot;imprecative mood&amp;quot;, wikipage = &amp;quot;imprecative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;IMPRS&amp;quot;] = {expansion = &amp;quot;impersonal&amp;quot;, wikipage = &amp;quot;impersonal&amp;quot;},&lt;br /&gt;
[&amp;quot;IN&amp;quot;] = {expansion = &amp;quot;inclusive person&amp;quot;, wikipage = &amp;quot;clusivity&amp;quot;},&lt;br /&gt;
[&amp;quot;INCL&amp;quot;] = {expansion = &amp;quot;inclusive person&amp;quot;, wikipage = &amp;quot;clusivity&amp;quot;},&lt;br /&gt;
[&amp;quot;INAL&amp;quot;] = {expansion = &amp;quot;inalienable possession&amp;quot;, wikipage = &amp;quot;inalienable possession&amp;quot;},&lt;br /&gt;
[&amp;quot;INAN&amp;quot;] = {expansion = &amp;quot;inanimate gender&amp;quot;, wikipage = &amp;quot;inanimate gender&amp;quot;},&lt;br /&gt;
[&amp;quot;INCH&amp;quot;] = {expansion = &amp;quot;inchoative aspect&amp;quot;, wikipage = &amp;quot;inchoative aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;INCHO&amp;quot;] = {expansion = &amp;quot;inchoative aspect&amp;quot;, wikipage = &amp;quot;inchoative aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;INCEP&amp;quot;] = {expansion = &amp;quot;inceptive aspect&amp;quot;, wikipage = &amp;quot;inceptive aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;INCL&amp;quot;] = {expansion = &amp;quot;inclusive person&amp;quot;, wikipage = &amp;quot;clusivity&amp;quot;},&lt;br /&gt;
[&amp;quot;IND&amp;quot;] = {expansion = &amp;quot;indicative mood&amp;quot;, wikipage = &amp;quot;indicative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;INDF&amp;quot;] = {expansion = &amp;quot;indefinite&amp;quot;, wikipage = &amp;quot;definiteness&amp;quot;},&lt;br /&gt;
[&amp;quot;INDEF&amp;quot;] = {expansion = &amp;quot;indefinite&amp;quot;, wikipage = &amp;quot;definiteness&amp;quot;},&lt;br /&gt;
[&amp;quot;INE&amp;quot;] = {expansion = &amp;quot;inessive case (&#039;in&#039;)&amp;quot;, wikipage = &amp;quot;inessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;INF&amp;quot;] = {expansion = &amp;quot;infinitive&amp;quot;, wikipage = &amp;quot;infinitive&amp;quot;},&lt;br /&gt;
[&amp;quot;INFER&amp;quot;] = {expansion = &amp;quot;inferential&amp;quot;, wikipage = &amp;quot;inferential mood&amp;quot;},&lt;br /&gt;
[&amp;quot;INFR&amp;quot;] = {expansion = &amp;quot;inferential&amp;quot;, wikipage = &amp;quot;inferential mood&amp;quot;},&lt;br /&gt;
[&amp;quot;INEL&amp;quot;] = {expansion = &amp;quot;inelative case (&#039;from within&#039;)&amp;quot;, wikipage = &amp;quot;inelative case&amp;quot;},&lt;br /&gt;
[&amp;quot;INS&amp;quot;] = {expansion = &amp;quot;instrument(al)&amp;quot;, wikipage = &amp;quot;&amp;quot;}, --instrument, instrumental case, instrumental marking on verb?&lt;br /&gt;
[&amp;quot;INST&amp;quot;] = {expansion = &amp;quot;instrument(al)&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;INSTR&amp;quot;] = {expansion = &amp;quot;instrument(al)&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;INT&amp;quot;] = {expansion = &amp;quot;intensifier&amp;quot;, wikipage = &amp;quot;intensifier&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;INTEN&amp;quot;] = {expansion = &amp;quot;intentional&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;INTERR&amp;quot;] = {expansion = &amp;quot;interrogative&amp;quot;, wikipage = &amp;quot;interrogative&amp;quot;},&lt;br /&gt;
[&amp;quot;INTR&amp;quot;] = {expansion = &amp;quot;intransitive&amp;quot;, wikipage = &amp;quot;intransitive&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;NTR&amp;quot;] = {expansion = &amp;quot;intransitive&amp;quot;, wikipage = &amp;quot;intransitive&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;INV&amp;quot;] = {expansion = &amp;quot;inverse&amp;quot;, wikipage = &amp;quot;inversion (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;IO&amp;quot;] = {expansion = &amp;quot;indirect object&amp;quot;, wikipage = &amp;quot;indirect object&amp;quot;},&lt;br /&gt;
[&amp;quot;IPFV&amp;quot;] = {expansion = &amp;quot;imperfective aspect&amp;quot;, wikipage = &amp;quot;imperfective aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;IRR&amp;quot;] = {expansion = &amp;quot;irrealis mood&amp;quot;, wikipage = &amp;quot;irrealis mood&amp;quot;},&lt;br /&gt;
[&amp;quot;IS&amp;quot;] = {expansion = &amp;quot;indirect speech&amp;quot;, wikipage = &amp;quot;indirect speech&amp;quot;},&lt;br /&gt;
[&amp;quot;IT&amp;quot;] = {expansion = &amp;quot;instrument trigger&amp;quot;, wikipage = &amp;quot;Austronesian alignment&amp;quot;},&lt;br /&gt;
[&amp;quot;ITER&amp;quot;] = {expansion = &amp;quot;iterative aspect&amp;quot;, wikipage = &amp;quot;iterative aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;IV&amp;quot;] = {expansion = &amp;quot;class IV&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;IX&amp;quot;] = {expansion = &amp;quot;class IX&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;JUS&amp;quot;] = {expansion = &amp;quot;jussive mood&amp;quot;, wikipage = &amp;quot;jussive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;L2&amp;quot;] = {expansion = &amp;quot;second language&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;LAT&amp;quot;] = {expansion = &amp;quot;lative case&amp;quot;, wikipage = &amp;quot;lative case&amp;quot;},&lt;br /&gt;
[&amp;quot;LD&amp;quot;] = {expansion = &amp;quot;locative case + directional&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;LK&amp;quot;] = {expansion = &amp;quot;linker&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;LOC&amp;quot;] = {expansion = &amp;quot;locative case&amp;quot;, wikipage = &amp;quot;locative case&amp;quot;},&lt;br /&gt;
[&amp;quot;LOG&amp;quot;] = {expansion = &amp;quot;logophoric&amp;quot;, wikipage = &amp;quot;logophoric&amp;quot;},&lt;br /&gt;
[&amp;quot;LT&amp;quot;] = {expansion = &amp;quot;locative trigger&amp;quot;, wikipage = &amp;quot;Austronesian alignment&amp;quot;},&lt;br /&gt;
[&amp;quot;M&amp;quot;] = {expansion = &amp;quot;masculine gender&amp;quot;, wikipage = &amp;quot;masculine gender&amp;quot;},&lt;br /&gt;
[&amp;quot;MASC&amp;quot;] = {expansion = &amp;quot;masculine gender&amp;quot;, wikipage = &amp;quot;masculine gender&amp;quot;},&lt;br /&gt;
[&amp;quot;MAN&amp;quot;] = {expansion = &amp;quot;manner&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MID&amp;quot;] = {expansion = &amp;quot;middle voice&amp;quot;, wikipage = &amp;quot;middle voice&amp;quot;},&lt;br /&gt;
[&amp;quot;MIM&amp;quot;] = {expansion = &amp;quot;mimetic&amp;quot;, wikipage = &amp;quot;Linguistic mimesis&amp;quot;},&lt;br /&gt;
[&amp;quot;MIR&amp;quot;] = {expansion = &amp;quot;mirative&amp;quot;, wikipage = &amp;quot;mirative&amp;quot;},&lt;br /&gt;
[&amp;quot;MLT&amp;quot;] = {expansion = &amp;quot;multiplicative case&amp;quot;, wikipage = &amp;quot;multiplicative case&amp;quot;},&lt;br /&gt;
[&amp;quot;MLTP&amp;quot;] = {expansion = &amp;quot;multiplicative case&amp;quot;, wikipage = &amp;quot;multiplicative case&amp;quot;},&lt;br /&gt;
[&amp;quot;MOD&amp;quot;] = {expansion = &amp;quot;mood/modal(ity)&amp;quot;, wikipage = &amp;quot;Linguistic modality&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;MOM&amp;quot;] = {expansion = &amp;quot;single action verb&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MPL&amp;quot;] = {expansion = &amp;quot;masculine plural&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MSG&amp;quot;] = {expansion = &amp;quot;masculine singular&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MVMT&amp;quot;] = {expansion = &amp;quot;movement&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MVT&amp;quot;] = {expansion = &amp;quot;movement&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;MW&amp;quot;] = {expansion = &amp;quot;measure word&amp;quot;, wikipage = &amp;quot;Measure word&amp;quot;},&lt;br /&gt;
[&amp;quot;N&amp;quot;] = {expansion = &amp;quot;neuter gender&amp;quot;, wikipage = &amp;quot;neuter gender&amp;quot;},&lt;br /&gt;
[&amp;quot;NARR&amp;quot;] = {expansion = &amp;quot;narrative tense&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;NEUT&amp;quot;] = {expansion = &amp;quot;neuter gender&amp;quot;, wikipage = &amp;quot;neuter gender&amp;quot;},&lt;br /&gt;
[&amp;quot;NEG&amp;quot;] = {expansion = &amp;quot;negation/negative&amp;quot;, wikipage = &amp;quot;Negative (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;NF&amp;quot;] = {expansion = &amp;quot;non-finite&amp;quot;, wikipage = &amp;quot;nonfinite verb&amp;quot;},&lt;br /&gt;
[&amp;quot;NH&amp;quot;] = {expansion = &amp;quot;non-human&amp;quot;, wikipage = &amp;quot;grammatical gender&amp;quot;},&lt;br /&gt;
[&amp;quot;NMLZ&amp;quot;] = {expansion = &amp;quot;nominalizer/nominalization&amp;quot;, wikipage = &amp;quot;nominalization&amp;quot;},&lt;br /&gt;
[&amp;quot;NMZ&amp;quot;] = {expansion = &amp;quot;nominalizer/nominalization&amp;quot;, wikipage = &amp;quot;nominalization&amp;quot;},&lt;br /&gt;
[&amp;quot;NZ&amp;quot;] = {expansion = &amp;quot;nominalizer/nominalization&amp;quot;, wikipage = &amp;quot;nominalization&amp;quot;},&lt;br /&gt;
[&amp;quot;NOMI&amp;quot;] = {expansion = &amp;quot;nominalizer/nominalization&amp;quot;, wikipage = &amp;quot;nominalization&amp;quot;},&lt;br /&gt;
[&amp;quot;NOM&amp;quot;] = {expansion = &amp;quot;nominative case&amp;quot;, wikipage = &amp;quot;nominative case&amp;quot;},&lt;br /&gt;
[&amp;quot;NS&amp;quot;] = {expansion = &amp;quot;non-subject&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true}, --can also mean &amp;quot;neuter, singular&amp;quot;&lt;br /&gt;
[&amp;quot;NTR&amp;quot;] = {expansion = &amp;quot;intransitive&amp;quot;, wikipage = &amp;quot;intransitive (disambiguation)&amp;quot;},&lt;br /&gt;
[&amp;quot;INTR&amp;quot;] = {expansion = &amp;quot;intransitive&amp;quot;, wikipage = &amp;quot;intransitive (disambiguation)&amp;quot;},&lt;br /&gt;
[&amp;quot;NUM&amp;quot;] = {expansion = &amp;quot;numeral&amp;quot;, wikipage = &amp;quot;numeral (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;O&amp;quot;] = {expansion = &amp;quot;patient-like argument (object) of canonical transitive verb&amp;quot;, wikipage = &amp;quot;O (grammar)&amp;quot;, ExcludeNegation = true},&lt;br /&gt;
[&amp;quot;OBJ&amp;quot;] = {expansion = &amp;quot;object(ive)&amp;quot;, wikipage = &amp;quot;object (grammar)&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;OB&amp;quot;] = {expansion = &amp;quot;object(ive)&amp;quot;, wikipage = &amp;quot;object (grammar)&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;OBL&amp;quot;] = {expansion = &amp;quot;oblique case&amp;quot;, wikipage = &amp;quot;oblique case&amp;quot;},&lt;br /&gt;
[&amp;quot;OBV&amp;quot;] = {expansion = &amp;quot;obviative&amp;quot;, wikipage = &amp;quot;obviative&amp;quot;},&lt;br /&gt;
[&amp;quot;OPT&amp;quot;] = {expansion = &amp;quot;optative mood&amp;quot;, wikipage = &amp;quot;optative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;P&amp;quot;] = {expansion = &amp;quot;patient-like argument of canonical transitive verb&amp;quot;, wikipage = &amp;quot;P (grammar)&amp;quot;,  ExcludeNegation = true},&lt;br /&gt;
[&amp;quot;PAS&amp;quot;] = {expansion = &amp;quot;passive voice&amp;quot;, wikipage = &amp;quot;passive voice&amp;quot;},&lt;br /&gt;
[&amp;quot;PASS&amp;quot;] = {expansion = &amp;quot;passive voice&amp;quot;, wikipage = &amp;quot;passive voice&amp;quot;},&lt;br /&gt;
[&amp;quot;PAST&amp;quot;] = {expansion = &amp;quot;past tense&amp;quot;, wikipage = &amp;quot;past tense&amp;quot;},&lt;br /&gt;
[&amp;quot;PAT&amp;quot;] = {expansion = &amp;quot;patient(ive)&amp;quot;, wikipage = &amp;quot;Patient (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PA&amp;quot;] = {expansion = &amp;quot;paucal number&amp;quot;, wikipage = &amp;quot;paucal number&amp;quot;},&lt;br /&gt;
[&amp;quot;PAU&amp;quot;] = {expansion = &amp;quot;paucal number&amp;quot;, wikipage = &amp;quot;paucal number&amp;quot;},&lt;br /&gt;
[&amp;quot;PEG&amp;quot;] = {expansion = &amp;quot;pegative case&amp;quot;, wikipage = &amp;quot;pegative case&amp;quot;},&lt;br /&gt;
[&amp;quot;PER&amp;quot;] = {expansion = &amp;quot;perlative case (&#039;per&#039;, &#039;using&#039;)&amp;quot;, wikipage = &amp;quot;perlative case&amp;quot;},&lt;br /&gt;
[&amp;quot;PERF&amp;quot;] = {expansion = &amp;quot;perfect&amp;quot;, wikipage = &amp;quot;perfect (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PRF&amp;quot;] = {expansion = &amp;quot;perfect&amp;quot;, wikipage = &amp;quot;perfect (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PERS&amp;quot;] = {expansion = &amp;quot;personal&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;PFV&amp;quot;] = {expansion = &amp;quot;perfective aspect&amp;quot;, wikipage = &amp;quot;perfective aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;PL&amp;quot;] = {expansion = &amp;quot;plural number&amp;quot;, wikipage = &amp;quot;plural number&amp;quot;},&lt;br /&gt;
[&amp;quot;PN&amp;quot;] = {expansion = &amp;quot;pronoun&amp;quot;, wikipage = &amp;quot;pronoun&amp;quot;},&lt;br /&gt;
[&amp;quot;PRO&amp;quot;] = {expansion = &amp;quot;pronoun&amp;quot;, wikipage = &amp;quot;pronoun&amp;quot;},&lt;br /&gt;
[&amp;quot;PO&amp;quot;] = {expansion = &amp;quot;primary object&amp;quot;, wikipage = &amp;quot;primary object&amp;quot;},&lt;br /&gt;
[&amp;quot;POL&amp;quot;] = {expansion = &amp;quot;polite register&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;POS&amp;quot;] = {expansion = &amp;quot;possessive marker&amp;quot;, wikipage = &amp;quot;possessive&amp;quot;},&lt;br /&gt;
[&amp;quot;POSS&amp;quot;] = {expansion = &amp;quot;possessive marker&amp;quot;, wikipage = &amp;quot;possessive&amp;quot;},&lt;br /&gt;
[&amp;quot;POST&amp;quot;] = {expansion = &amp;quot;postposition, postpositional case&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;POSTE&amp;quot;] = {expansion = &amp;quot;postessive case (&#039;after&#039;)&amp;quot;, wikipage = &amp;quot;postessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;POT&amp;quot;] = {expansion = &amp;quot;potential mood&amp;quot;, wikipage = &amp;quot;potential mood&amp;quot;},&lt;br /&gt;
[&amp;quot;PP&amp;quot;] = {expansion = &amp;quot;past/passive participle&amp;quot;, wikipage = &amp;quot;participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PPP&amp;quot;] = {expansion = &amp;quot;past passive participle&amp;quot;, wikipage = &amp;quot;past passive participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PPFV&amp;quot;] = {expansion = &amp;quot;past perfective&amp;quot;, wikipage = &amp;quot;past perfective&amp;quot;},&lt;br /&gt;
[&amp;quot;PR&amp;quot;] = {expansion = &amp;quot;proper noun&amp;quot;, wikipage = &amp;quot;proper noun&amp;quot;},&lt;br /&gt;
[&amp;quot;PRED&amp;quot;] = {expansion = &amp;quot;predicate/predicative&amp;quot;, wikipage = &amp;quot;predicate (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PREC&amp;quot;] = {expansion = &amp;quot;precative mood&amp;quot;, wikipage = &amp;quot;precative mood&amp;quot;},&lt;br /&gt;
[&amp;quot;PREP&amp;quot;] = {expansion = &amp;quot;preposition, prepositional case&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;PRESP&amp;quot;] = {expansion = &amp;quot;present participle&amp;quot;, wikipage = &amp;quot;present participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PRET&amp;quot;] = {expansion = &amp;quot;preterite&amp;quot;, wikipage = &amp;quot;preterite&amp;quot;},&lt;br /&gt;
[&amp;quot;PRT&amp;quot;] = {expansion = &amp;quot;preterite&amp;quot;, wikipage = &amp;quot;preterite&amp;quot;},&lt;br /&gt;
[&amp;quot;PRIV&amp;quot;] = {expansion = &amp;quot;privative case&amp;quot;, wikipage = &amp;quot;privative case&amp;quot;},&lt;br /&gt;
[&amp;quot;PRS&amp;quot;] = {expansion = &amp;quot;present tense&amp;quot;, wikipage = &amp;quot;present tense&amp;quot;},&lt;br /&gt;
[&amp;quot;PRES&amp;quot;] = {expansion = &amp;quot;present tense&amp;quot;, wikipage = &amp;quot;present tense&amp;quot;},&lt;br /&gt;
[&amp;quot;PROB&amp;quot;] = {expansion = &amp;quot;probability&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;PROG&amp;quot;] = {expansion = &amp;quot;progressive aspect&amp;quot;, wikipage = &amp;quot;progressive aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;PROH&amp;quot;] = {expansion = &amp;quot;prohibitive mood&amp;quot;, wikipage = &amp;quot;prohibitive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;PROL&amp;quot;] = {expansion = &amp;quot;prolative case (&#039;via&#039;)&amp;quot;, wikipage = &amp;quot;prolative case&amp;quot;},&lt;br /&gt;
[&amp;quot;PROP&amp;quot;] = {expansion = &amp;quot;propositive mood&amp;quot;, wikipage = &amp;quot;propositive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;PROS&amp;quot;] = {expansion = &amp;quot;prosecutive case&amp;quot;, wikipage = &amp;quot;prosecutive case&amp;quot;},&lt;br /&gt;
[&amp;quot;PROSP&amp;quot;] = {expansion = &amp;quot;prospective aspect&amp;quot;, wikipage = &amp;quot;prospective aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;PRSP&amp;quot;] = {expansion = &amp;quot;prospective aspect&amp;quot;, wikipage = &amp;quot;prospective aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;PROT&amp;quot;] = {expansion = &amp;quot;protasis&amp;quot;, wikipage = &amp;quot;protasis (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;PROX&amp;quot;] = {expansion = &amp;quot;&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true}, --proximal or proximative?&lt;br /&gt;
[&amp;quot;PST&amp;quot;] = {expansion = &amp;quot;past tense&amp;quot;, wikipage = &amp;quot;past tense&amp;quot;},&lt;br /&gt;
[&amp;quot;PT&amp;quot;] = {expansion = &amp;quot;patient trigger&amp;quot;, wikipage = &amp;quot;Austronesian alignment&amp;quot;},&lt;br /&gt;
[&amp;quot;PTCL&amp;quot;] = {expansion = &amp;quot;particle&amp;quot;, wikipage = &amp;quot;particle (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PTC&amp;quot;] = {expansion = &amp;quot;particle&amp;quot;, wikipage = &amp;quot;particle (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;PTCP&amp;quot;] = {expansion = &amp;quot;participle&amp;quot;, wikipage = &amp;quot;participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PCP&amp;quot;] = {expansion = &amp;quot;participle&amp;quot;, wikipage = &amp;quot;participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PRTC&amp;quot;] = {expansion = &amp;quot;participle&amp;quot;, wikipage = &amp;quot;participle&amp;quot;},&lt;br /&gt;
[&amp;quot;PTV&amp;quot;] = {expansion = &amp;quot;partitive case (&#039;some of&#039;)&amp;quot;, wikipage = &amp;quot;partitive case&amp;quot;},&lt;br /&gt;
[&amp;quot;PURP&amp;quot;] = {expansion = &amp;quot;purposive&amp;quot;, wikipage = &amp;quot;Purposive case&amp;quot;},&lt;br /&gt;
[&amp;quot;PV&amp;quot;] = {expansion = &amp;quot;patient voice&amp;quot;, wikipage = &amp;quot;Patient voice&amp;quot;},&lt;br /&gt;
[&amp;quot;Q&amp;quot;] = {expansion = &amp;quot;question word&amp;quot;, wikipage = &amp;quot;question word&amp;quot;},&lt;br /&gt;
[&amp;quot;QUOT&amp;quot;] = {expansion = &amp;quot;quotative&amp;quot;, wikipage = &amp;quot;quotative&amp;quot;},&lt;br /&gt;
[&amp;quot;R&amp;quot;] = {expansion = &amp;quot;&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;REAL&amp;quot;] = {expansion = &amp;quot;realis mood&amp;quot;, wikipage = &amp;quot;realis mood&amp;quot;},&lt;br /&gt;
[&amp;quot;REC&amp;quot;] = {expansion = &amp;quot;recent past tense&amp;quot;, wikipage = &amp;quot;recent past tense&amp;quot;},&lt;br /&gt;
[&amp;quot;RECP&amp;quot;] = {expansion = &amp;quot;reciprocal voice&amp;quot;, wikipage = &amp;quot;reciprocal voice&amp;quot;},&lt;br /&gt;
[&amp;quot;REDUP&amp;quot;] = {expansion = &amp;quot;reduplication&amp;quot;, wikipage = &amp;quot;Reduplication&amp;quot;},&lt;br /&gt;
[&amp;quot;REF&amp;quot;] = {expansion = &amp;quot;referential&amp;quot;, wikipage = &amp;quot;referential&amp;quot;},&lt;br /&gt;
[&amp;quot;REFL&amp;quot;] = {expansion = &amp;quot;reflexive&amp;quot;, wikipage = &amp;quot;reflexive pronoun&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;REL&amp;quot;] = {expansion = &amp;quot;relative(izer)&amp;quot;, wikipage = &amp;quot;relativizer&amp;quot;},&lt;br /&gt;
[&amp;quot;REM&amp;quot;] = {expansion = &amp;quot;remote past tense&amp;quot;, wikipage = &amp;quot;remote past tense&amp;quot;},&lt;br /&gt;
[&amp;quot;RES&amp;quot;] = {expansion = &amp;quot;&amp;quot;, wikipage = &amp;quot;&amp;quot;, ambiguous = true}, -- resultative. resumptive&lt;br /&gt;
[&amp;quot;RET&amp;quot;] = {expansion = &amp;quot;retrospective&amp;quot;, wikipage = &amp;quot;Retrospective (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;RFR&amp;quot;] = {expansion = &amp;quot;referential&amp;quot;, wikipage = &amp;quot;referential&amp;quot;},&lt;br /&gt;
[&amp;quot;S&amp;quot;] = {expansion = &amp;quot;single argument of canonical intransitive verb&amp;quot;, wikipage = &amp;quot;S (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;SBJ&amp;quot;] = {expansion = &amp;quot;subject&amp;quot;, wikipage = &amp;quot;subject (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;SUB&amp;quot;] = {expansion = &amp;quot;subject&amp;quot;, wikipage = &amp;quot;subject (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;SU&amp;quot;] = {expansion = &amp;quot;subject&amp;quot;, wikipage = &amp;quot;subject (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;SBJV&amp;quot;] = {expansion = &amp;quot;subjunctive mood&amp;quot;, wikipage = &amp;quot;subjunctive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;SUBJ&amp;quot;] = {expansion = &amp;quot;subject&amp;quot;, wikipage = &amp;quot;subject (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;SJV&amp;quot;] = {expansion = &amp;quot;subjunctive mood&amp;quot;, wikipage = &amp;quot;subjunctive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;SE&amp;quot;] = {expansion = &amp;quot;same event&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;SEM&amp;quot;] = {expansion = &amp;quot;semelfactive aspect (&#039;once&#039;)&amp;quot;, wikipage = &amp;quot;semelfactive aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;SENS&amp;quot;] = {expansion = &amp;quot;sensory evidential&amp;quot;, wikipage = &amp;quot;Sensory evidential&amp;quot;},&lt;br /&gt;
[&amp;quot;SEQ&amp;quot;] = {expansion = &amp;quot;sequential&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;SG&amp;quot;] = {expansion = &amp;quot;singular number&amp;quot;, wikipage = &amp;quot;Singular number&amp;quot;,  ExcludeNegation = true},&lt;br /&gt;
[&amp;quot;SGV&amp;quot;] = {expansion = &amp;quot;singulative number&amp;quot;, wikipage = &amp;quot;singulative number&amp;quot;},&lt;br /&gt;
[&amp;quot;SS&amp;quot;] = {expansion = &amp;quot;same subject&amp;quot;, wikipage = &amp;quot;Switch-reference&amp;quot;},&lt;br /&gt;
[&amp;quot;STAT&amp;quot;] = {expansion = &amp;quot;stative&amp;quot;, wikipage = &amp;quot;stative&amp;quot;},&lt;br /&gt;
[&amp;quot;STV&amp;quot;] = {expansion = &amp;quot;stative&amp;quot;, wikipage = &amp;quot;stative&amp;quot;},&lt;br /&gt;
[&amp;quot;SUBR&amp;quot;] = {expansion = &amp;quot;subordinator&amp;quot;, wikipage = &amp;quot;subordination (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;SUBORD&amp;quot;] = {expansion = &amp;quot;subordinator&amp;quot;, wikipage = &amp;quot;subordination (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;SBRD&amp;quot;] = {expansion = &amp;quot;subordinator&amp;quot;, wikipage = &amp;quot;subordination (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;SR&amp;quot;] = {ambiguous = true}, -- ambiguous between &amp;quot;subordinator&amp;quot; and &amp;quot;switch reference&amp;quot;&lt;br /&gt;
[&amp;quot;SUBE&amp;quot;] = {expansion = &amp;quot;subessive case (&#039;under&#039;)&amp;quot;, wikipage = &amp;quot;subessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;SUBL&amp;quot;] = {expansion = &amp;quot;sublative case (&#039;onto&#039;, &#039;down onto&#039;)&amp;quot;, wikipage = &amp;quot;sublative case&amp;quot;},&lt;br /&gt;
[&amp;quot;SUC&amp;quot;] = {expansion = &amp;quot;successive&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;SUPE&amp;quot;] = {expansion = &amp;quot;superessive case (&#039;on&#039;)&amp;quot;, wikipage = &amp;quot;superessive case&amp;quot;},&lt;br /&gt;
[&amp;quot;TAM&amp;quot;] = {expansion = &amp;quot;tense, aspect, or mood&amp;quot;, wikipage = &amp;quot;tense–aspect–mood&amp;quot;},&lt;br /&gt;
[&amp;quot;TEL&amp;quot;] = {expansion = &amp;quot;telic aspect&amp;quot;, wikipage = &amp;quot;telic aspect&amp;quot;},&lt;br /&gt;
[&amp;quot;TEMP&amp;quot;] = {expansion = &amp;quot;temporal case&amp;quot;, wikipage = &amp;quot;temporal case&amp;quot;},&lt;br /&gt;
[&amp;quot;TERM&amp;quot;] = {expansion = &amp;quot;terminative case&amp;quot;, wikipage = &amp;quot;terminative case&amp;quot;},&lt;br /&gt;
[&amp;quot;TNS&amp;quot;] = {expansion = &amp;quot;tense&amp;quot;, wikipage = &amp;quot;Grammatical tense&amp;quot;},&lt;br /&gt;
[&amp;quot;TOP&amp;quot;] = {expansion = &amp;quot;topic&amp;quot;, wikipage = &amp;quot;topic (linguistics)&amp;quot;},&lt;br /&gt;
[&amp;quot;TOT&amp;quot;] = {expansion = &amp;quot;totalitive&amp;quot;, wikipage = &amp;quot;totalitive&amp;quot;},&lt;br /&gt;
[&amp;quot;TR&amp;quot;] = {expansion = &amp;quot;transitive&amp;quot;, wikipage = &amp;quot;Transitivity (grammar)&amp;quot;},&lt;br /&gt;
[&amp;quot;TRANSL&amp;quot;] = {expansion = &amp;quot;translative case (&#039;becoming&#039;)&amp;quot;, wikipage = &amp;quot;translative case&amp;quot;},&lt;br /&gt;
[&amp;quot;TRI&amp;quot;] = {expansion = &amp;quot;trial number&amp;quot;, wikipage = &amp;quot;trial number&amp;quot;},&lt;br /&gt;
[&amp;quot;TRN&amp;quot;] = {expansion = &amp;quot;transnumeral&amp;quot;, wikipage = &amp;quot;transnumeral&amp;quot;},&lt;br /&gt;
[&amp;quot;TVF&amp;quot;] = {expansion = &amp;quot;truth-value focus&amp;quot;, wikipage = &amp;quot;truth-value focus&amp;quot;},&lt;br /&gt;
[&amp;quot;U&amp;quot;] = {ambiguous = true}, -- uninflected, unmarked, undergoer, etc.&lt;br /&gt;
[&amp;quot;UH&amp;quot;] = {expansion = &amp;quot;motion uphill, inland &amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;UND&amp;quot;] = {expansion = &amp;quot;undergoer&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;UR&amp;quot;] = {expansion = &amp;quot;motion upriver&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;USIT&amp;quot;] = {expansion = &amp;quot;usitative (for usual or typical events)&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;V&amp;quot;] = {expansion = &amp;quot;verb(al)&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;VB&amp;quot;] = {expansion = &amp;quot;verb(al)&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;VBZ&amp;quot;] = {expansion = &amp;quot;verbalizer&amp;quot;, wikipage = &amp;quot;verbalizer&amp;quot;},&lt;br /&gt;
[&amp;quot;VBLZ&amp;quot;] = {expansion = &amp;quot;verbalizer&amp;quot;, wikipage = &amp;quot;verbalizer&amp;quot;},&lt;br /&gt;
[&amp;quot;VD&amp;quot;] = {expansion = &amp;quot;verb, ditransitive&amp;quot;, wikipage = &amp;quot;ditransitive verb&amp;quot;},&lt;br /&gt;
[&amp;quot;VEN&amp;quot;] = {expansion = &amp;quot;venitive (coming towards)&amp;quot;, wikipage = &amp;quot;andative and venitive&amp;quot;},&lt;br /&gt;
[&amp;quot;VER&amp;quot;] = {expansion = &amp;quot;veridical&amp;quot;, wikipage = &amp;quot;veridical&amp;quot;, ambiguous = true},&lt;br /&gt;
[&amp;quot;VIA&amp;quot;] = {expansion = &amp;quot;vialis case&amp;quot;, wikipage = &amp;quot;vialis case&amp;quot;},&lt;br /&gt;
[&amp;quot;VIS&amp;quot;] = {expansion = &amp;quot;visible, visual&amp;quot;, wikipage = &amp;quot;&amp;quot;},&lt;br /&gt;
[&amp;quot;VI&amp;quot;] = {expansion = &amp;quot;verb, intransitive&amp;quot;, wikipage = &amp;quot;intransitive verb&amp;quot;},&lt;br /&gt;
[&amp;quot;VII&amp;quot;] = {expansion = &amp;quot;class VII&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;VIII&amp;quot;] = {expansion = &amp;quot;class VIII&amp;quot;, wikipage = &amp;quot;Noun class&amp;quot;},&lt;br /&gt;
[&amp;quot;VN&amp;quot;] = {expansion = &amp;quot;verbal noun&amp;quot;, wikipage = &amp;quot;verbal noun&amp;quot;},&lt;br /&gt;
[&amp;quot;VOC&amp;quot;] = {expansion = &amp;quot;vocative case&amp;quot;, wikipage = &amp;quot;vocative case&amp;quot;},&lt;br /&gt;
[&amp;quot;VOL&amp;quot;] = {expansion = &amp;quot;volitive mood&amp;quot;, wikipage = &amp;quot;volitive mood&amp;quot;},&lt;br /&gt;
[&amp;quot;VT&amp;quot;] = {expansion = &amp;quot;verb, transitive&amp;quot;, wikipage = &amp;quot;transitive verb&amp;quot;},&lt;br /&gt;
[&amp;quot;WH.Q&amp;quot;] = {expansion = &amp;quot;wh-question&amp;quot;, wikipage = &amp;quot;wh-question&amp;quot;},&lt;br /&gt;
[&amp;quot;WH&amp;quot;] = {expansion = &amp;quot;wh-question&amp;quot;, wikipage = &amp;quot;wh-question&amp;quot;},&lt;br /&gt;
[&amp;quot;ZO&amp;quot;] = {expansion = &amp;quot;zoic gender&amp;quot;, wikipage = &amp;quot;zoic gender&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
return {abbreviations = abbreviations}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Interlinear&amp;diff=320</id>
		<title>Module:Interlinear</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Interlinear&amp;diff=320"/>
		<updated>2024-04-05T21:09:41Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;local p = {} local data = mw.loadData( &amp;#039;Module:Interlinear/data&amp;#039; ) local gloss_override = {} -- for custom gloss abbreviations local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local lang_data = mw.loadData( &amp;#039;Module:Lang/data&amp;#039; )  -------------------------- -- Almost-global variables -------------------------- local glossing_type, displaying_messages, free_translation, msg, buffer  ------------------- -- General settings -----------...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local data = mw.loadData( &#039;Module:Interlinear/data&#039; )&lt;br /&gt;
local gloss_override = {} -- for custom gloss abbreviations&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local lang_data = mw.loadData( &#039;Module:Lang/data&#039; )&lt;br /&gt;
&lt;br /&gt;
--------------------------&lt;br /&gt;
-- Almost-global variables&lt;br /&gt;
--------------------------&lt;br /&gt;
local glossing_type, displaying_messages, free_translation, msg, buffer&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
-- General settings&lt;br /&gt;
-------------------&lt;br /&gt;
local conf = { --settings&lt;br /&gt;
	WordSeparator = &amp;quot; \n\r\t&amp;quot;, -- Don&#039;t replace with %s as this would include non-breaking spaces&lt;br /&gt;
	GlossAbbrPattern = &amp;quot;^([Ø0-9A-Z]+)$&amp;quot;, -- this isn&#039;t a full regex, but a Lua pattern&lt;br /&gt;
	-- NOTE: The following characters must be formatted for use in a pattern set.&lt;br /&gt;
	GlossAbbrBoundary = &amp;quot;-.,;:&amp;lt;&amp;gt;‹›/\\~+=%?%s%[%]()%_\127&#039;&amp;quot;,&lt;br /&gt;
	GlossExcludeTable = {I = true,}, --strings not be treated as glossing abbreviations&lt;br /&gt;
	GlossExcludePattern = &#039;^[0-9][0-9]+$&#039;, -- excludes strings consisting entirely of digits&lt;br /&gt;
	GlossSmallCapsExclude = &amp;quot;^[AOPS]$&amp;quot;, -- glossing abbreviations matching this pattern will not be rendered in small caps&lt;br /&gt;
	GlossingType = &amp;quot;label&amp;quot;, -- if set to &amp;quot;label&amp;quot; gloss abbreviations are formatted as an &amp;lt;abbr&amp;gt; with the &amp;quot;label&amp;quot; appearing in a tooltip&lt;br /&gt;
						-- if set to &amp;quot;wikilink&amp;quot; the abbreviation is formatted as a wikilink to the relevant wikipedia article&lt;br /&gt;
						-- if set to &amp;quot;none&amp;quot; abbreviations aren&#039;t formatted at all&lt;br /&gt;
	ErrorCategory = &amp;quot;[[Category:Pages with errors in interlinear text]]&amp;quot;,&lt;br /&gt;
	AmbiguousGlossCategory = &amp;quot;[[Category:Articles with ambiguous glossing abbreviations]]&amp;quot;,&lt;br /&gt;
	MessageGlossingError = &amp;quot;Error(s) in interlinear glossing&amp;quot;,&lt;br /&gt;
	combining_gender_numbers = &amp;quot;[0-9][0-9]?$&amp;quot;, --e.g. G4 &#039;4th gender&#039; or CL7 &#039;class 7&#039;&lt;br /&gt;
	combining_gender_prefixes = {G = &amp;quot;gender&amp;quot;, CL = &amp;quot;class&amp;quot;},&lt;br /&gt;
	combining_person = {[&amp;quot;1&amp;quot;] = &amp;quot;first person&amp;quot;, [&amp;quot;2&amp;quot;] = &amp;quot;second person&amp;quot;, [&amp;quot;3&amp;quot;] = &amp;quot;third person&amp;quot;},&lt;br /&gt;
	combining_number = {S = &amp;quot;singular&amp;quot;, SG = &amp;quot;singular&amp;quot;, P = &amp;quot;plural&amp;quot;, PL = &amp;quot;plural&amp;quot;, D = &amp;quot;dual&amp;quot;, DU = &amp;quot;dual&amp;quot;, TRI = &amp;quot;trial&amp;quot;},&lt;br /&gt;
	combining_gender = {F = &amp;quot;feminine&amp;quot;, M = &amp;quot;masculine&amp;quot;, N = &amp;quot;neuter&amp;quot;},&lt;br /&gt;
	LowerCaseGlosses = {[&amp;quot;1sg&amp;quot;] = true, [&amp;quot;2sg&amp;quot;] = true, [&amp;quot;3sg&amp;quot;] = true, [&amp;quot;1du&amp;quot;] = true, [&amp;quot;2du&amp;quot;] = true, [&amp;quot;3du&amp;quot;] = true, [&amp;quot;1pl&amp;quot;] = true, [&amp;quot;2pl&amp;quot;] = true,&lt;br /&gt;
		[&amp;quot;3pl&amp;quot;] = true, [&amp;quot;Fsg&amp;quot;] = true, [&amp;quot;Fpl&amp;quot;] = true, [&amp;quot;Msg&amp;quot;] = true, [&amp;quot;Mpl&amp;quot;] = true,}, -- these are the non-all-upper-case strings that will be recognised as glossing abbreviations&lt;br /&gt;
	ErrorHelpLocation = &amp;quot;Template:Interlinear&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- CSS styles and classes&lt;br /&gt;
---------------------&lt;br /&gt;
conf.style = { --CSS styles&lt;br /&gt;
	WordDiv = &amp;quot;float: left; margin-bottom: 0.3em;&amp;quot;,&lt;br /&gt;
	WordMargin = &amp;quot;margin-right: 1em;&amp;quot;,&lt;br /&gt;
	WordP = &amp;quot;margin: 0px;&amp;quot;, -- the style for the word &amp;lt;p&amp;gt; elements&lt;br /&gt;
	GlossAbbr = &amp;quot;font-variant: small-caps; font-variant-numeric: oldstyle-nums; text-transform: lowercase; &amp;quot;, -- won&#039;t be applied to gloss abbreviations containing lower-case characters&lt;br /&gt;
	HiddenText = &amp;quot;display: none;&amp;quot;,&lt;br /&gt;
	EndDiv = &amp;quot;clear: left; display: block;&amp;quot;, -- style of the &amp;lt;div&amp;gt; element at the end of the interlinear display&lt;br /&gt;
	ErrorMessage = &amp;quot;font-size: inherit&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
conf.class = { --CSS classes&lt;br /&gt;
	Interlinear = &amp;quot;interlinear&amp;quot;,&lt;br /&gt;
	GlossAbbr  = &amp;quot;gloss-abbr&amp;quot;,&lt;br /&gt;
	GlossAbbrAmb = &amp;quot;gloss-abbr-ambiguous&amp;quot;,&lt;br /&gt;
	GlossAbbrError = &amp;quot;gloss-abbr-error&amp;quot;,&lt;br /&gt;
	ErrorMessage = &amp;quot;error&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
---------------------&lt;br /&gt;
-- Section transclusion&lt;br /&gt;
---------------------&lt;br /&gt;
local page_content = nil -- lazy initilization&lt;br /&gt;
local function get_section(frame, section_name)&lt;br /&gt;
	if page_content == nil then&lt;br /&gt;
		local current_title = mw.title.getCurrentTitle()&lt;br /&gt;
		page_content = current_title:getContent()&lt;br /&gt;
	end&lt;br /&gt;
	if page_content then&lt;br /&gt;
		if mw.ustring.find(page_content, section_name, 1, true) then&lt;br /&gt;
			return frame:preprocess(&#039;{{#section:{{FULLPAGENAME}}|&#039; .. section_name .. &#039;}}&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
---------------------&lt;br /&gt;
-- Sundry small functions&lt;br /&gt;
---------------------&lt;br /&gt;
local function normalise(str)&lt;br /&gt;
	return mw.ustring.gsub(str,&amp;quot;[&amp;quot; .. conf.WordSeparator .. &amp;quot;]+&amp;quot;,&amp;quot; &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyCss(str)&lt;br /&gt;
	str = mw.ustring.gsub(str, &#039;^[\&amp;quot;\&#039;]*(.-)[\&amp;quot;\&#039;]*$&#039;, &amp;quot;%1&amp;quot;) -- trims quotation marks&lt;br /&gt;
	if mw.ustring.sub(str, -1) ~= &amp;quot;;&amp;quot; then str = str .. &amp;quot;;&amp;quot; end -- appends &amp;quot;;&amp;quot; if missing&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function highlight(text)&lt;br /&gt;
	if text then&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;color:#C00;font-weight:bold;&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	else return &amp;quot;&amp;quot; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tone_sup(str)&lt;br /&gt;
	return mw.ustring.gsub(str, &amp;quot;([^%p%s0-9])([0-9]+)&amp;quot;, &amp;quot;%1&amp;lt;sup&amp;gt;%2&amp;lt;/sup&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function is_empty(str) -- returns &amp;quot;false&amp;quot; if its argument is a string containing chars other than spaces &amp;amp;c.&lt;br /&gt;
	if not str then return true end&lt;br /&gt;
	if mw.ustring.find(str, &amp;quot;[^&amp;quot; .. conf.WordSeparator .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		then return false&lt;br /&gt;
	else return true end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function help_link (anchor)&lt;br /&gt;
	if anchor then&lt;br /&gt;
		return &amp;quot; ([[&amp;quot; .. conf.ErrorHelpLocation .. &amp;quot;#&amp;quot; .. anchor .. &amp;quot;|help]])&amp;quot;&lt;br /&gt;
	else return &amp;quot;&amp;quot; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- the following is part of a trial implementation of automatic transliteration:&lt;br /&gt;
local function transliterate (str, lang_from, lang_to,  scheme)&lt;br /&gt;
	local lookup = {grc = {module = &#039;Module:Ancient Greek&#039;, funct = &amp;quot;transliterate&amp;quot;, } }&lt;br /&gt;
	if not lang_from then&lt;br /&gt;
		msg:add(&amp;quot;error&amp;quot;, &amp;quot;Source language for transliteration is not set&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local t = lookup[lang_from]&lt;br /&gt;
		if t then&lt;br /&gt;
			local module = require(t.module)&lt;br /&gt;
			return module[t.funct](str)&lt;br /&gt;
		else msg:add(&amp;quot;error&amp;quot;, &amp;quot;Can&#039;t find transliterator for language &#039;&amp;quot; .. lang_from .. &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end -- end of trial block&lt;br /&gt;
&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following two functions update the glossing settings based on the received&lt;br /&gt;
-- template arguments. set_global_glossing_settings() updates the global settings&lt;br /&gt;
-- that are valid for all gloss abbreviations. set_glossing_type()&lt;br /&gt;
-- returns the glossing type, which can vary between the different lines.&lt;br /&gt;
--------------------&lt;br /&gt;
local function set_global_glossing_settings(a)&lt;br /&gt;
	local style = &amp;quot;&amp;quot;&lt;br /&gt;
	if a.style then style = tidyCss(a.style) end&lt;br /&gt;
	if a.underline == &amp;quot;no&amp;quot; then&lt;br /&gt;
		style = style .. &amp;quot;text-decoration: none;&amp;quot; end&lt;br /&gt;
	if a.small_caps == &amp;quot;no&amp;quot; then&lt;br /&gt;
		style = style .. &amp;quot;font-variant:normal; text-transform: none;&amp;quot; end&lt;br /&gt;
	if style ~= &amp;quot;&amp;quot; then conf.style.GlossAbbr = conf.style.GlossAbbr .. style end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function set_glossing_type(glossing)&lt;br /&gt;
	if glossing then&lt;br /&gt;
		local GlossingType&lt;br /&gt;
		glossing = mw.ustring.lower(mw.text.trim(glossing))&lt;br /&gt;
		if mw.ustring.find(glossing, &#039;link&#039;) then&lt;br /&gt;
			GlossingType = &amp;quot;wikilink&amp;quot;&lt;br /&gt;
		elseif mw.ustring.find(glossing, &#039;label&#039;)&lt;br /&gt;
			or  mw.ustring.find(glossing, &#039;no link&#039;) then&lt;br /&gt;
			GlossingType = &#039;label&#039;&lt;br /&gt;
		elseif mw.ustring.find(glossing, &#039;no abbr&#039;) then&lt;br /&gt;
			GlossingType = &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		elseif yesno(glossing) == false then&lt;br /&gt;
			GlossingType = nil&lt;br /&gt;
		elseif yesno(glossing) then&lt;br /&gt;
			GlossingType = conf.GlossingType&lt;br /&gt;
		else&lt;br /&gt;
			msg:add(&#039;error&#039;, &#039;Glossing type &amp;quot;&#039; .. glossing .. &#039;&amp;quot; not recognised&#039;) end&lt;br /&gt;
		return GlossingType&lt;br /&gt;
	else error(&amp;quot;set_glossing_type: &#039;glossing&#039; is nil or false&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function set_custom_glosses(list)&lt;br /&gt;
	local abbs = mw.text.split(list, &#039;[;\n\t]&#039;)&lt;br /&gt;
	for _,v in pairs(abbs) do&lt;br /&gt;
		local gloss = mw.text.split(v, &#039;:&#039;)&lt;br /&gt;
		local a = mw.text.trim(gloss[1])&lt;br /&gt;
		if a and a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			gloss_override[a] = {}&lt;br /&gt;
			gloss_override[a].expansion = gloss[2]&lt;br /&gt;
			gloss_override[a].wikipage = gloss[3]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- The UserMessages object contains and processes error messages and warnings&lt;br /&gt;
---------------------&lt;br /&gt;
local UserMessages = {errors = {}, warnings = {}, gloss_messages = {}}&lt;br /&gt;
function UserMessages:add(msgtype, text, gloss)&lt;br /&gt;
	if msgtype == &amp;quot;gloss_message&amp;quot; then&lt;br /&gt;
		self.gloss_messages[gloss] = text&lt;br /&gt;
	elseif msgtype == &amp;quot;warning&amp;quot; then&lt;br /&gt;
		table.insert(self.warnings, text)&lt;br /&gt;
	elseif msgtype == &amp;quot;non-repeating error&amp;quot; then&lt;br /&gt;
		self.errors.nre = text&lt;br /&gt;
	elseif msgtype == &amp;quot;ambiguous gloss&amp;quot; then&lt;br /&gt;
		self.if_ambiguous_glosses = true&lt;br /&gt;
	elseif msgtype == &amp;quot;error&amp;quot; then&lt;br /&gt;
		table.insert(self.errors, text)&lt;br /&gt;
	else return error(&amp;quot;UserMessages:add(): unknown message type&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
function UserMessages:print_errors()&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	if next(self.errors) or self.warnings[1] then&lt;br /&gt;
		local err_span = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
		err_span:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
		err_span:addClass(conf.class.ErrorMessage)&lt;br /&gt;
		for _,v in pairs(self.errors) do&lt;br /&gt;
			err_span:wikitext(&amp;quot; &amp;quot; .. v .. &amp;quot;;&amp;quot;) end&lt;br /&gt;
		if namespace % 2 == 0 and namespace ~= 2 -- non-talk namespaces, excluding user pages; if modifying please update the description on the category page&lt;br /&gt;
			then err_span:wikitext(conf.ErrorCategory)&lt;br /&gt;
		end&lt;br /&gt;
		out = tostring(err_span)&lt;br /&gt;
		mw.addWarning(conf.MessageGlossingError)&lt;br /&gt;
	end&lt;br /&gt;
	if self.if_ambiguous_glosses then&lt;br /&gt;
		if namespace == 0 -- article namespace&lt;br /&gt;
			then out = out .. conf.AmbiguousGlossCategory -- this category will only track articles&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
function UserMessages:print_warnings()&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	-- Messages and warnings get displayed only if the page is being viewed in &amp;quot;preview&amp;quot; mode:&lt;br /&gt;
	if displaying_messages and (next(self.gloss_messages) or next(self.warnings)) then&lt;br /&gt;
		local div = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
		div:addClass(&amp;quot;interlinear-preview-warning&amp;quot;)&lt;br /&gt;
			:cssText(&#039;border: 1px solid #a2a9b1; background-color: #f8f9fa; width: 80%; padding: 0.2em;&#039;)&lt;br /&gt;
			:wikitext(&amp;quot;&amp;lt;i&amp;gt;This message box is shown only in preview:&amp;lt;/i&amp;gt;&amp;quot;)&lt;br /&gt;
			:newline()&lt;br /&gt;
		for _,v in ipairs(self.warnings) do&lt;br /&gt;
			local p = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
			p:addClass(conf.class.ErrorMessage)&lt;br /&gt;
			p:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
			p:wikitext(v)&lt;br /&gt;
		end&lt;br /&gt;
		if self.gloss_messages then&lt;br /&gt;
			div:wikitext(&amp;quot;&amp;lt;p&amp;gt;  To change any of the following default expansions, see [[Template:Interlinear/doc#Custom abbreviations|the template&#039;s documentation]]:&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		for _,v in pairs(self.gloss_messages) do&lt;br /&gt;
			div:wikitext(&amp;quot;&amp;lt;p&amp;gt;&amp;quot; .. v .. &amp;quot;&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;\n\n&amp;quot; .. tostring(div)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- gloss_lookup() receives a gloss abbreviation and tries to uncover its meaning.&lt;br /&gt;
---------------------&lt;br /&gt;
local function gloss_lookup(a, label, wikilink)&lt;br /&gt;
	local _label, _wikilink, _lookup, source = nil, nil, nil, nil&lt;br /&gt;
	if gloss_override[a] then&lt;br /&gt;
		_lookup = gloss_override[a]&lt;br /&gt;
		source = &amp;quot;local&amp;quot;&lt;br /&gt;
	elseif data.abbreviations[a] then _lookup = data.abbreviations[a] end&lt;br /&gt;
	if _lookup and _lookup.expansion ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		_label, _wikilink = _lookup.expansion, _lookup.wikipage&lt;br /&gt;
	else&lt;br /&gt;
		local prefix = mw.ustring.sub(a,1,1)&lt;br /&gt;
		local suffix = mw.ustring.sub(a,2)&lt;br /&gt;
		if conf.combining_person[prefix] then -- is it of the form 1PL or 3FS?&lt;br /&gt;
			_label = conf.combining_person[prefix]&lt;br /&gt;
		local _suffix = conf.combining_number[suffix] or conf.combining_gender[suffix]&lt;br /&gt;
			if _suffix then&lt;br /&gt;
				_label = _label .. &amp;quot;, &amp;quot; .. _suffix&lt;br /&gt;
			else&lt;br /&gt;
				local suffix1 = mw.ustring.sub(suffix,1,1)&lt;br /&gt;
				local suffix2 = mw.ustring.sub(suffix,2)&lt;br /&gt;
					if conf.combining_gender[suffix1]&lt;br /&gt;
					and  conf.combining_number[suffix2] then&lt;br /&gt;
						_label = _label .. &amp;quot;, &amp;quot; .. conf.combining_gender[suffix1] .. &amp;quot;, &amp;quot; .. conf.combining_number[suffix2]&lt;br /&gt;
					else _label = nil end&lt;br /&gt;
			end&lt;br /&gt;
	elseif mw.ustring.match(suffix,conf.combining_gender_numbers) then -- cases like G4 = gender 4&lt;br /&gt;
		local _i,_j = mw.ustring.find(a, conf.combining_gender_numbers)&lt;br /&gt;
		local _pre = mw.ustring.sub(a, 1, _i - 1)&lt;br /&gt;
		local _suff = mw.ustring.sub(a, _i)&lt;br /&gt;
		if conf.combining_gender_prefixes[_pre] then&lt;br /&gt;
			_label = conf.combining_gender_prefixes[_pre] .. &amp;quot; &amp;quot; .. _suff&lt;br /&gt;
		end&lt;br /&gt;
	elseif prefix == &amp;quot;N&amp;quot; then -- dealing with cases like NPST = non-past&lt;br /&gt;
		local s = gloss_override[suffix] or data.abbreviations[suffix]&lt;br /&gt;
			if s ~= nil and not s.ExcludeNegation then&lt;br /&gt;
				_label = &amp;quot;non-&amp;quot; .. s.expansion&lt;br /&gt;
				_wikilink = s.wikipage&lt;br /&gt;
			end&lt;br /&gt;
			s = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if _label == &amp;quot;&amp;quot; then _label = nil end&lt;br /&gt;
	if _wikilink == &amp;quot;&amp;quot; then _wikilink = nil end&lt;br /&gt;
	if not label then label = _label end&lt;br /&gt;
	if not wikilink then wikilink = _wikilink end&lt;br /&gt;
	return label, wikilink, source&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- format_gloss() calls gloss_lookup() to find the meaning of a gloss&lt;br /&gt;
-- abbreviation, which it then proceeds to format&lt;br /&gt;
---------------------&lt;br /&gt;
local function format_gloss(gloss, label, wikilink)&lt;br /&gt;
	if string.sub(gloss,1,3) == &amp;quot;000&amp;quot; then -- checks for a common component of exposed strip markers (see [[:mw:Strip marker]])&lt;br /&gt;
		return gloss&lt;br /&gt;
	end&lt;br /&gt;
	local gloss2 = mw.ustring.gsub(gloss,&amp;quot;&amp;lt;.-&amp;gt;&amp;quot;,&amp;quot;&amp;quot;) -- remove any html fluff&lt;br /&gt;
	gloss2 = mw.ustring.gsub(gloss2, &amp;quot;%&#039;%&#039;+&amp;quot;, &amp;quot;&amp;quot;) -- remove wiki bold/italic formatting&lt;br /&gt;
	gloss2 = mw.text.trim(mw.ustring.upper(gloss2))&lt;br /&gt;
	if not (label or wikilink)&lt;br /&gt;
		or (not label and glossing_type == &amp;quot;label&amp;quot;)&lt;br /&gt;
		or (not wikilink  and glossing_type == &amp;quot;wikilink&amp;quot;)&lt;br /&gt;
		then&lt;br /&gt;
			if glossing_type ~= &amp;quot;no abbr&amp;quot;&lt;br /&gt;
				then label, wikilink, source = gloss_lookup(gloss2, label, wikilink)&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	local gloss_node&lt;br /&gt;
	if glossing_type == &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		then gloss_node = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	else gloss_node = mw.html.create(&amp;quot;abbr&amp;quot;) end&lt;br /&gt;
	gloss_node:addClass(conf.class.GlossAbbr)&lt;br /&gt;
	if label or wikilink then&lt;br /&gt;
		if not mw.ustring.match(gloss, &amp;quot;%l&amp;quot;) -- excluding glosses that contain lower-case characters&lt;br /&gt;
			and not mw.ustring.match(gloss,conf.GlossSmallCapsExclude) -- and also excluding A, O etc. from rendering in small caps&lt;br /&gt;
			then gloss_node:attr(&amp;quot;style&amp;quot;, conf.style.GlossAbbr)&lt;br /&gt;
		end&lt;br /&gt;
		local abbr_label&lt;br /&gt;
		if label then abbr_label = label&lt;br /&gt;
			else abbr_label = wikilink end&lt;br /&gt;
		gloss_node:attr(&amp;quot;title&amp;quot;, abbr_label)&lt;br /&gt;
		if source ~= &amp;quot;local&amp;quot; and data.abbreviations[gloss2] then&lt;br /&gt;
			if data.abbreviations[gloss2].ambiguous then&lt;br /&gt;
				gloss_node:addClass(conf.class.GlossAbbrAmb)&lt;br /&gt;
					msg:add(&amp;quot;ambiguous gloss&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
		end&lt;br /&gt;
		if glossing_type == &amp;quot;wikilink&amp;quot; and wikilink&lt;br /&gt;
			then gloss_node:wikitext(&amp;quot;[[&amp;quot;, wikilink, &amp;quot;|&amp;quot; , gloss, &amp;quot;]]&amp;quot;)&lt;br /&gt;
			else gloss_node:wikitext(gloss) end&lt;br /&gt;
		if source ~= &amp;quot;local&amp;quot; and displaying_messages then -- logging gloss lookups:&lt;br /&gt;
			local message = &amp;quot;&amp;quot;&lt;br /&gt;
			if label then&lt;br /&gt;
				message = &amp;quot;assuming &amp;quot; .. gloss2 .. &amp;quot; means \&amp;quot;&amp;quot; .. abbr_label .. &amp;quot;\&amp;quot;;&amp;quot; end&lt;br /&gt;
			if glossing_type == &amp;quot;wikilink&amp;quot; and wikilink then&lt;br /&gt;
				message = message .. &amp;quot; linking to [[&amp;quot; .. wikilink .. &amp;quot;]];&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			msg:add(&amp;quot;gloss_message&amp;quot;, message, gloss)&lt;br /&gt;
		end&lt;br /&gt;
	elseif glossing_type == &amp;quot;no abbr&amp;quot;&lt;br /&gt;
		then gloss_node&lt;br /&gt;
				:attr(&amp;quot;style&amp;quot;, conf.style.GlossAbbr)&lt;br /&gt;
				:wikitext(gloss)&lt;br /&gt;
	else&lt;br /&gt;
		if displaying_messages then&lt;br /&gt;
			msg:add(&amp;quot;warning&amp;quot;, &amp;quot;Gloss abbreviation &amp;quot; .. highlight(gloss2) .. &amp;quot;  not recognised&amp;quot; .. help_link(&amp;quot;gloss abbr&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		msg:add(&amp;quot;non-repeating error&amp;quot;, &amp;quot;Unknown glossing abbreviation(s)&amp;quot; .. help_link(&amp;quot;gloss abbr&amp;quot;))&lt;br /&gt;
		gloss_node&lt;br /&gt;
			:addClass(conf.class.GlossAbbrError)&lt;br /&gt;
			:addClass(&amp;quot;error&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;font-size&amp;quot;, &amp;quot;100%&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;title&amp;quot;, gloss2 .. &amp;quot;: glossing abbreviation not found&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;style&amp;quot;, conf.style.ErrorMessage)&lt;br /&gt;
			:wikitext(gloss)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(gloss_node)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- find_gloss() parses a word into morphemes, and it calls format_gloss()&lt;br /&gt;
-- for anything that looks like a glossing abbreviation.&lt;br /&gt;
---------------------&lt;br /&gt;
local function find_gloss(word)&lt;br /&gt;
	local function scan_gloss(boundary, gloss_abbr) -- checks a morpheme if it is a gloss abbreviation&lt;br /&gt;
		if (mw.ustring.match(gloss_abbr, conf.GlossAbbrPattern)&lt;br /&gt;
			or conf.LowerCaseGlosses[gloss_abbr])&lt;br /&gt;
			and not (conf.GlossExcludeTable[gloss_abbr]&lt;br /&gt;
				or mw.ustring.match(gloss_abbr, conf.GlossExcludePattern))&lt;br /&gt;
			then gloss_abbr = format_gloss(gloss_abbr)&lt;br /&gt;
		end&lt;br /&gt;
		return boundary .. gloss_abbr&lt;br /&gt;
	end&lt;br /&gt;
	local word = mw.text.decode(word, true)&lt;br /&gt;
	if word == &amp;quot;I&amp;quot; -- for the case of the English word &amp;quot;I&amp;quot;, the 1SG pronoun&lt;br /&gt;
		then return word end&lt;br /&gt;
	local pattern = &amp;quot;([&amp;quot; .. conf.GlossAbbrBoundary .. &amp;quot;]?)([^&amp;quot; .. conf.GlossAbbrBoundary .. &amp;quot;]+)&amp;quot;&lt;br /&gt;
	word = mw.ustring.gsub(word, pattern, scan_gloss) -- splits into morphemes&lt;br /&gt;
	return word&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- The main purpose of the bletcherous parse() is to split a line into words and and then for each eligible word&lt;br /&gt;
-- to call find_gloss(). The parser outputs the individual words (with any gloss abbreviation formatting applied).&lt;br /&gt;
-- The simple job of splitting at whitespaces has been made complicated by a) the fact that the input can contain&lt;br /&gt;
-- whitespaces inside the various html elements that are the result of the application of various formatting templates;&lt;br /&gt;
-- and b) the need to be able to recognise the output of the template that formats custom gloss abbreviations&lt;br /&gt;
-- (and hence skip passing it on to find_gloss). See talk for a suggestion about its future.&lt;br /&gt;
---------------------&lt;br /&gt;
local function parse(cline, i, tags_found,ifglossing)&lt;br /&gt;
&lt;br /&gt;
	local function issue_error(message, culprit)&lt;br /&gt;
		UserMessages:add(&amp;quot;error&amp;quot;,  message .. &amp;quot;: &#039;&#039;&amp;quot; .. mw.ustring.sub(cline.whole, 1, i-1) .. &amp;quot;&#039;&#039;&#039;&amp;quot; .. culprit  .. &amp;quot;&#039;&#039;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if i &amp;gt; cline.length then return i end --this will only be triggered if the current line has less words than line 1&lt;br /&gt;
	local next_step, j, _, chunk&lt;br /&gt;
	local probe = mw.ustring.sub(cline.whole,i,i)&lt;br /&gt;
	if mw.ustring.match(probe,&amp;quot;[&amp;quot; .. conf.WordSeparator .. &amp;quot;]&amp;quot;) and tags_found == 0&lt;br /&gt;
		then next_step =  i-1&lt;br /&gt;
	elseif probe == &amp;quot;[&amp;quot; then --Wikilink?&lt;br /&gt;
		if mw.ustring.sub(cline.whole,i+1,i+1) == &amp;quot;[&amp;quot; then&lt;br /&gt;
			_,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(%[%[.-%]%])&amp;quot;, i)&lt;br /&gt;
		else chunk = &amp;quot;[&amp;quot;; j = i end --not a wikilink then&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step =  parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	elseif probe == &amp;quot;{&amp;quot;  and tags_found == 0 then --curly brackets enclose a sequence of words to be treated as a single unit&lt;br /&gt;
		_,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(.-)(})&amp;quot;, i+1)&lt;br /&gt;
		if not chunk then&lt;br /&gt;
			issue_error(&amp;quot;Unclosed curly bracket&amp;quot;, &amp;quot;{&amp;quot;)&lt;br /&gt;
			chunk = highlight(&amp;quot;{&amp;quot;); j = i&lt;br /&gt;
		elseif ifglossing==true then&lt;br /&gt;
			chunk = find_gloss(chunk)&lt;br /&gt;
		else&lt;br /&gt;
			if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
		end&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step =  parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	elseif probe == &amp;quot;&amp;lt;&amp;quot; then -- We&#039;ve encountered an HTML tag. What do we do now?&lt;br /&gt;
		local _,j,chunk = mw.ustring.find(cline.whole,&amp;quot;(&amp;lt;.-&amp;gt;)&amp;quot;,i)&lt;br /&gt;
		if not chunk then&lt;br /&gt;
			issue_error(&amp;quot;Unclosed angle bracket&amp;quot;, &amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
			chunk = highlight(&amp;quot;&amp;lt;&amp;quot;); j = i&lt;br /&gt;
		elseif mw.ustring.sub(cline.whole,i,i+1) == &amp;quot;&amp;lt;/&amp;quot; then -- It&#039;s a CLOSING tag&lt;br /&gt;
			if cline.glossing&lt;br /&gt;
				and ifglossing==false&lt;br /&gt;
				and mw.ustring.match(chunk,&amp;quot;&amp;lt;/abbr&amp;gt;&amp;quot;)&lt;br /&gt;
				then ifglossing=true end&lt;br /&gt;
			tags_found = tags_found - 1&lt;br /&gt;
		elseif not mw.ustring.match(chunk, &amp;quot;/&amp;gt;$&amp;quot;) -- It&#039;s an OPENING tag, unless it opens a self-closing element (in which case the element is ignored)&lt;br /&gt;
			then if ifglossing == true -- the following checks for the output of {{ggl}}:&lt;br /&gt;
					and mw.ustring.find(chunk, conf.class.GlossAbbr, 1, true) -- it&#039;s important that the &amp;quot;find&amp;quot; function uses literal strings and not patterns&lt;br /&gt;
						then ifglossing = false end&lt;br /&gt;
			tags_found = tags_found + 1&lt;br /&gt;
		end&lt;br /&gt;
		buffer = buffer .. chunk&lt;br /&gt;
		next_step = parse(cline, j+1,tags_found,ifglossing)&lt;br /&gt;
	else -- No HTML tags, so we only need to find where the word ends&lt;br /&gt;
		local _,k,chunk = mw.ustring.find(cline.whole,&amp;quot;(..-)([ &amp;lt;[])&amp;quot;,i)&lt;br /&gt;
		if k then --ordinary text&lt;br /&gt;
			if ifglossing==true then&lt;br /&gt;
				buffer = buffer .. find_gloss(chunk)&lt;br /&gt;
			else&lt;br /&gt;
				if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
				buffer = buffer .. chunk&lt;br /&gt;
			end&lt;br /&gt;
			next_step = parse(cline, k, tags_found, ifglossing)&lt;br /&gt;
		else -- reached end of string&lt;br /&gt;
			if ifglossing == true then&lt;br /&gt;
				chunk = find_gloss(mw.ustring.sub(cline.whole,i))&lt;br /&gt;
			else&lt;br /&gt;
				chunk = mw.ustring.sub(cline.whole,i)&lt;br /&gt;
				if cline.tone_sup then chunk = tone_sup(chunk) end&lt;br /&gt;
			end&lt;br /&gt;
			buffer = buffer .. chunk&lt;br /&gt;
			next_step = cline.length&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return next_step&lt;br /&gt;
end&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following function is called by Template:gcl and is used for formatting an individual glossing abbreviation&lt;br /&gt;
--------------------&lt;br /&gt;
function p.gcl(frame)&lt;br /&gt;
	local args = getArgs(frame,{&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		parentOnly = true,&lt;br /&gt;
		wrappers = {&#039;Template:Gcl&#039;},&lt;br /&gt;
	})&lt;br /&gt;
	msg = UserMessages&lt;br /&gt;
	set_global_glossing_settings{style = args.style, underline = args.underline, small_caps = args[&#039;small-caps&#039;]}&lt;br /&gt;
	if not args.glossing then&lt;br /&gt;
		glossing_type = conf.GlossingType -- a global variable&lt;br /&gt;
	else glossing_type = set_glossing_type(args.glossing)&lt;br /&gt;
	end&lt;br /&gt;
	local gloss, label, wikilink = args[1], args[2], args[3]&lt;br /&gt;
	if not gloss then UserMessages:add(&amp;quot;error&amp;quot;, &amp;quot;No gloss supplied&amp;quot;)&lt;br /&gt;
		return UserMessages:print() end&lt;br /&gt;
	if wikilink and not args.glossing then -- if a wikilink is supplied and glossing isn&#039;t set to &#039;label&#039;...&lt;br /&gt;
		glossing_type = &#039;wikilink&#039; end --     .. then the wikilink will be formatted as such&lt;br /&gt;
	if label == &amp;quot;&amp;quot; then label = nil end&lt;br /&gt;
	if wikilink == &amp;quot;&amp;quot; then wikilink = nil end&lt;br /&gt;
	local result = format_gloss(gloss, label, wikilink)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------&lt;br /&gt;
-- The following is the function called by Template:Interlinear.&lt;br /&gt;
-- It processes the template arguments, then calls parse() to split the input lines into words&lt;br /&gt;
-- and it then builds the output html.&lt;br /&gt;
--------------------&lt;br /&gt;
function p.interlinearise(frame)&lt;br /&gt;
---------------------&lt;br /&gt;
-- Prepare arguments&lt;br /&gt;
---------------------&lt;br /&gt;
	local if_auto_translit = false&lt;br /&gt;
	local args = getArgs(frame, { -- configuration for Module:Arguments&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		parentFirst = true,&lt;br /&gt;
		wrappers = {&#039;Template:Interlinear&#039;, &#039;Template:Fs interlinear&#039;},&lt;br /&gt;
	})&lt;br /&gt;
	local template_name = frame:getParent():getTitle()&lt;br /&gt;
	if template_name == &#039;Template:Fs interlinear&#039; then&lt;br /&gt;
		args.italics1 = args.italics1 or &amp;quot;no&amp;quot;&lt;br /&gt;
		args.italics2 = args.italics2 or &amp;quot;yes&amp;quot;&lt;br /&gt;
		args.glossing3 = args.glossing3 or &amp;quot;yes&amp;quot;&lt;br /&gt;
		if args.lang and not args.lang2 then args.lang2 = args.lang ..&amp;quot;-Latn&amp;quot; end&lt;br /&gt;
		if args.transl and not args.transl2 then args.transl2 = args.transl end&lt;br /&gt;
		if_auto_translit = true&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
	local revid = frame:preprocess( &amp;quot;{{REVISIONID}}&amp;quot; )&lt;br /&gt;
	if  revid == &amp;quot;&amp;quot; then&lt;br /&gt;
		if not args[&#039;display-messages&#039;] or yesno(args[&#039;display-messages&#039;]) then&lt;br /&gt;
		displaying_messages = true end-- messages will be displayed only in preview mode&lt;br /&gt;
	end&lt;br /&gt;
	msg = UserMessages&lt;br /&gt;
	local line = {}&lt;br /&gt;
&lt;br /&gt;
	local function set_italics(n)&lt;br /&gt;
		line[n].attr.style = line[n].attr.style .. &amp;quot;font-style: italic;&amp;quot;&lt;br /&gt;
		line[n].tone_sup = true -- single digits are assumed to be tone markers and will hence be superscripted&lt;br /&gt;
		if args[&#039;tone-superscripting&#039;] and not yesno(args[&#039;tone-superscripting&#039;])&lt;br /&gt;
			then line[n].tone_sup = false end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.glossing then -- the glossing= parameter sets the default glossing type&lt;br /&gt;
		local _gl = set_glossing_type(args.glossing)&lt;br /&gt;
		if _gl then conf.GlossingType = _gl end&lt;br /&gt;
	end&lt;br /&gt;
	--this looks for a list of glossing abbreviations on the page that transcludes the template:&lt;br /&gt;
	local _ablist_section = get_section(frame, &#039;list-of-glossing-abbreviations&#039;)&lt;br /&gt;
	if _ablist_section and _ablist_section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local _a = mw.ustring.gsub(_ablist_section, &#039;&amp;lt;/?div [^\n]*&amp;gt;&#039;, &#039;&#039;) -- strips off the div tags&lt;br /&gt;
		set_custom_glosses(_a)&lt;br /&gt;
	end&lt;br /&gt;
	--and this looks looks for a list of abbreviations set within the template:&lt;br /&gt;
	local _ablist = args.abbreviations&lt;br /&gt;
	if _ablist and _ablist ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then set_custom_glosses(_ablist) end&lt;br /&gt;
	local _ablist = args.ablist&lt;br /&gt;
	if _ablist and _ablist ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then set_custom_glosses(_ablist) end&lt;br /&gt;
&lt;br /&gt;
	local _spacing = tonumber(args.spacing)&lt;br /&gt;
	if _spacing and _spacing &amp;lt;= 20&lt;br /&gt;
		then conf.style.WordDiv = conf.style.WordDiv .. &#039;margin-right: &#039; .. _spacing .. &#039;em;&#039;&lt;br /&gt;
	else conf.style.WordDiv = conf.style.WordDiv .. conf.style.WordMargin&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local offset, last_line = 0, 0&lt;br /&gt;
	for j,v in ipairs(args) do -- iterates over the unnamed parameters from the template&lt;br /&gt;
		last_line = last_line +1&lt;br /&gt;
		if is_empty(v)&lt;br /&gt;
			then offset = offset + 1&lt;br /&gt;
		else&lt;br /&gt;
		local i = j - offset&lt;br /&gt;
		line[i] = {}&lt;br /&gt;
		v = normalise(v)&lt;br /&gt;
&lt;br /&gt;
		-- the following is part of a trial implementation of automatic transliteration:&lt;br /&gt;
		if if_auto_translit and v == &amp;quot;auto&amp;quot; and i &amp;gt; 1 then&lt;br /&gt;
			local source_line = line[i-1]&lt;br /&gt;
			local src_lang = source_line.lang&lt;br /&gt;
			if not src_lang then src_lang = args.lang end&lt;br /&gt;
			if src_lang then&lt;br /&gt;
					v = transliterate(source_line.whole, src_lang)&lt;br /&gt;
			else v = &amp;quot;&amp;quot;; msg:add(&amp;quot;error&amp;quot;, &amp;quot;No language specified for automatic transliteration&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end  -- end of trial block&lt;br /&gt;
&lt;br /&gt;
		line[i].whole = v&lt;br /&gt;
		line[i].length = mw.ustring.len(v)&lt;br /&gt;
&lt;br /&gt;
		local _c = args[&amp;quot;c&amp;quot; .. i]&lt;br /&gt;
		if _c and _c ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			line.hasComments = true&lt;br /&gt;
			line[i].c = _c&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		---prepare style arguments----&lt;br /&gt;
		line[i].class = &amp;quot;&amp;quot;&lt;br /&gt;
		local _style = args[&amp;quot;style&amp;quot; .. i]&lt;br /&gt;
		if not _style then _style = &amp;quot;&amp;quot;&lt;br /&gt;
		else _style = tidyCss(_style) end&lt;br /&gt;
		--line[i].attr holds the attributes for the &amp;lt;p&amp;gt; elements that enclose the words in line i&lt;br /&gt;
		line[i].attr = {style = conf.style.WordP .. _style}&lt;br /&gt;
&lt;br /&gt;
		local _lang = args[&amp;quot;lang&amp;quot; .. i]&lt;br /&gt;
		if _lang and #_lang &amp;gt; 1 then&lt;br /&gt;
			line[i].lang = _lang&lt;br /&gt;
		else _lang = args.lang&lt;br /&gt;
			if _lang and #_lang &amp;gt; 1 and i == 1 then -- if a lang= parameter is supplied, it&#039;s assumed to apply to line 1&lt;br /&gt;
				line[i].lang = _lang&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		line[i].attr.lang = line[i].lang&lt;br /&gt;
		--the following emulates the behaviour of {{Bo-textonly}} (see Template talk:Fs interlinear#Tibetan):&lt;br /&gt;
		if template_name == &#039;Template:Fs interlinear&#039; then&lt;br /&gt;
			if _lang == &amp;quot;bo&amp;quot; and i == 1 then&lt;br /&gt;
				line[1].class = line[1].class .. &amp;quot; uchen&amp;quot;&lt;br /&gt;
				line[1].attr.style = line[1].attr.style .. &amp;quot;font-size:1.25em; word-wrap:break-word;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		--the following emulates the behaviour of {{Spell-nv}}:&lt;br /&gt;
		if template_name == &#039;Template:Interlinear&#039; then&lt;br /&gt;
			if _lang == &amp;quot;nv&amp;quot; and i == 1 then&lt;br /&gt;
				line[1].attr.style = line[1].attr.style .. &amp;quot;font-family: Aboriginal Sans, DejaVu Sans, Calibri, Arial Unicode MS, sans-serif;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if yesno(args[&amp;quot;italics&amp;quot; .. i]) then&lt;br /&gt;
			set_italics(i)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _transl = args[&amp;quot;transl&amp;quot; .. i]&lt;br /&gt;
		if _transl and #_transl &amp;gt; 1 then&lt;br /&gt;
			_transl = mw.ustring.lower(_transl)&lt;br /&gt;
			local _lookup = lang_data.translit_title_table[_transl]&lt;br /&gt;
			if _lookup then&lt;br /&gt;
				if _lang and  _lookup[_lang] then&lt;br /&gt;
					_transl = _lookup[_lang]&lt;br /&gt;
				else _transl = _lookup.default&lt;br /&gt;
				end&lt;br /&gt;
				if _transl then&lt;br /&gt;
					line[i].attr.title = _transl&lt;br /&gt;
				end&lt;br /&gt;
			else  msg:add(&amp;quot;error&amp;quot;, &amp;quot;Transliteration scheme &#039;&amp;quot; .. _transl .. &amp;quot;&#039; not recognised&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _glossing = args[&amp;quot;glossing&amp;quot; .. i]&lt;br /&gt;
		if _glossing then&lt;br /&gt;
			line[i].glossing = set_glossing_type(_glossing)&lt;br /&gt;
			-- Do not treat default glossing settings as custom.&lt;br /&gt;
			if not ((i == 1 and not yesno(_glossing)) or (i == 2 and yesno(_glossing))) then&lt;br /&gt;
				line.HasCustomGlossing = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _ipa = args[&#039;ipa&#039; .. i]&lt;br /&gt;
		if yesno(_ipa) then&lt;br /&gt;
			line[i].class = &amp;quot;IPA&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local _class = args[&#039;class&#039; .. i]&lt;br /&gt;
		if _class then&lt;br /&gt;
			line[i].class = line[i].class .. &amp;quot; &amp;quot; .. _class&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if line[i].class == &amp;quot;&amp;quot;&lt;br /&gt;
			then line[i].class = nil end&lt;br /&gt;
		end -- ends the first if-statement in the loop&lt;br /&gt;
	end -- ends the FOR cycle&lt;br /&gt;
&lt;br /&gt;
	local line_count = #line&lt;br /&gt;
	if line_count == 0 then&lt;br /&gt;
		msg:add(&amp;quot;error&amp;quot;, template_name .. &amp;quot;: no lines supplied.&amp;quot;)&lt;br /&gt;
		return msg:print_errors()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if line_count &amp;gt; 1 then&lt;br /&gt;
		local _italics = args.italics&lt;br /&gt;
		local n = tonumber(_italics)&lt;br /&gt;
		if n and n &amp;gt; 0 then&lt;br /&gt;
			set_italics(n)&lt;br /&gt;
		elseif not (_italics and not yesno(_italics)) and not (args[&amp;quot;italics1&amp;quot;] and not yesno(args[&amp;quot;italics1&amp;quot;])) then&lt;br /&gt;
			set_italics(1) -- by default, the first line will get italicised, unless italics=no or italics1=no&lt;br /&gt;
		end&lt;br /&gt;
		-- the last unnamed parameter is assumed to be the free translation:&lt;br /&gt;
		free_translation = args[last_line]&lt;br /&gt;
		if not is_empty(free_translation) then&lt;br /&gt;
			line [line_count] = nil   end  --... and is thus excluded from interlinearising&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- If glossing isn&#039;t specified for any line, then it&#039;s chosen by default to occur&lt;br /&gt;
-- in the second line, unless only a single line has been supplied, in which case&lt;br /&gt;
-- the assumption is that it is the one containing grammatical glosses&lt;br /&gt;
	if yesno(args.glossing) == false then&lt;br /&gt;
		line.HasCustomGlossing = true&lt;br /&gt;
	end&lt;br /&gt;
	if not line.HasCustomGlossing then&lt;br /&gt;
		if line_count == 1 then&lt;br /&gt;
			line[1].glossing = conf.GlossingType&lt;br /&gt;
		elseif line[2] then&lt;br /&gt;
			line[2].glossing = conf.GlossingType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	set_global_glossing_settings{style = args[&#039;glossing-style&#039;], underline = args.underline, small_caps = args[&#039;small-caps&#039;]}&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- Segment lines into words&lt;br /&gt;
---------------------&lt;br /&gt;
	for i,v in ipairs(line) do&lt;br /&gt;
		local ifglossing = false&lt;br /&gt;
		if line[i].glossing then&lt;br /&gt;
			ifglossing = true -- if true the parser will attempt to format gloss abbreviations in the current line&lt;br /&gt;
			glossing_type = line[i].glossing -- neccessarily a global variable&lt;br /&gt;
		end&lt;br /&gt;
		local wc, n = 1, 1&lt;br /&gt;
		line[i].words = {}&lt;br /&gt;
		while n &amp;lt;= line[i].length do&lt;br /&gt;
			buffer = &amp;quot;&amp;quot;&lt;br /&gt;
			n = parse(line[i], n, 0, ifglossing)+2&lt;br /&gt;
			line[i].words[wc] = buffer&lt;br /&gt;
			wc = wc + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----Check for mismatches in number of words across lines----&lt;br /&gt;
	local number_of_words, mismatch_found = 0, false&lt;br /&gt;
	for i,v in ipairs(line) do -- find the maximum number of words in any line&lt;br /&gt;
		local wc = #line[i].words&lt;br /&gt;
		if wc ~= number_of_words then&lt;br /&gt;
			if i ~= 1 and wc ~= 0 then&lt;br /&gt;
				mismatch_found = true&lt;br /&gt;
			end&lt;br /&gt;
			if wc &amp;gt; number_of_words then&lt;br /&gt;
				number_of_words = wc&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	----Deal with mismatches---&lt;br /&gt;
	if mismatch_found then&lt;br /&gt;
		local error_text = &amp;quot;Mismatch in the number of words between lines: &amp;quot;&lt;br /&gt;
		for i,v in ipairs(line) do&lt;br /&gt;
			local wc = #line[i].words&lt;br /&gt;
			error_text = error_text .. wc .. &amp;quot; word(s) in line &amp;quot; .. i .. &amp;quot;, &amp;quot;&lt;br /&gt;
			if wc ~= number_of_words then&lt;br /&gt;
				for current_word = wc+1, number_of_words do&lt;br /&gt;
					line[i].words[current_word] = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if string.sub(error_text, -2) == &amp;quot;, &amp;quot;&lt;br /&gt;
			then error_text = string.sub(error_text, 1, #error_text - 2) .. &amp;quot; &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		error_text = error_text .. help_link(&amp;quot;mismatch&amp;quot;)&lt;br /&gt;
		UserMessages:add(&amp;quot;error&amp;quot;, error_text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
---------------------&lt;br /&gt;
-- Build the HTML&lt;br /&gt;
---------------------&lt;br /&gt;
	---- If just a single line was supplied, format it as inline text&lt;br /&gt;
	if line_count == 1 then&lt;br /&gt;
		local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		span:attr(line[1].attr)&lt;br /&gt;
		for wi = 1, number_of_words do&lt;br /&gt;
			local space&lt;br /&gt;
			if wi &amp;lt; number_of_words then space = &amp;quot; &amp;quot; else space = &amp;quot;&amp;quot; end&lt;br /&gt;
			span:wikitext(line[1].words[wi] .. space)&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(span)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	---- More than one line supplied, so we&#039;ll produce interlinear display&lt;br /&gt;
	local div = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
	div:addClass(conf.class.Interlinear)&lt;br /&gt;
&lt;br /&gt;
	-- For stuff to be displayed in the left margin, like example numbering&lt;br /&gt;
	local number, indent = nil, nil&lt;br /&gt;
	if args.number and args.number ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then number = args.number end&lt;br /&gt;
	if args.indent and args.indent ~=&amp;quot;&amp;quot;&lt;br /&gt;
		then indent = args.indent end&lt;br /&gt;
	if indent or number then&lt;br /&gt;
		if not indent then indent = &amp;quot;4&amp;quot; end --default value&lt;br /&gt;
		div:css(&amp;quot;margin-left&amp;quot;, indent .. &#039;em&#039;)&lt;br /&gt;
		if number then&lt;br /&gt;
			div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;position&amp;quot;, &amp;quot;absolute&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;left&amp;quot;, &amp;quot;1em&amp;quot;)&lt;br /&gt;
				:wikitext(args.number)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.box and args.box ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		div:css(&amp;quot;background-color&amp;quot;, &amp;quot;#f8f9fa&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;border&amp;quot;, &amp;quot;1px solid #eaecf0&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;padding&amp;quot;, &amp;quot;1em&amp;quot;) end&lt;br /&gt;
	if args.top and args.top ~= &amp;quot;&amp;quot; then --lines to display above the interlinear block&lt;br /&gt;
		div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:wikitext(args.top)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Producing the interlinear block&lt;br /&gt;
	for wi = 1, number_of_words do&lt;br /&gt;
		local div2 = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:attr(&amp;quot;style&amp;quot;, conf.style.WordDiv)&lt;br /&gt;
		for i,_ in ipairs (line) do&lt;br /&gt;
			if line[i].whole ~= &amp;quot;&amp;quot; then -- skipping empty lines&lt;br /&gt;
				local p = div2:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
				p:attr(line[i].attr)&lt;br /&gt;
				if line[i].class then&lt;br /&gt;
					p:addClass(line[i].class)&lt;br /&gt;
				end&lt;br /&gt;
				local _text = line[i].words[wi]&lt;br /&gt;
				if _text == &amp;quot;&amp;quot; or _text == &amp;quot; &amp;quot;&lt;br /&gt;
					then _text = &amp;quot;&amp;amp;nbsp;&amp;quot; end -- &amp;lt;p&amp;gt; elements without content mess up the interlinear display&lt;br /&gt;
				p:wikitext(_text)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--- If any &amp;quot;comments&amp;quot; have been specified, add them at the end of each line&lt;br /&gt;
	if line.hasComments then&lt;br /&gt;
		local divc = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:attr(&amp;quot;style&amp;quot;, conf.style.WordDiv)&lt;br /&gt;
		for i,_ in ipairs (line) do&lt;br /&gt;
			local p = divc:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
			p:attr(&amp;quot;style&amp;quot;, conf.style.WordP)&lt;br /&gt;
			if line[i].c then&lt;br /&gt;
				p:wikitext(line[i].c)&lt;br /&gt;
			else p:wikitext(&amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--Add hidden lines containing the content of each line of interlinear text: this is for accessibility&lt;br /&gt;
	for i,v in ipairs(line) do&lt;br /&gt;
		local hidden_line = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
		hidden_line:attr(&amp;quot;style&amp;quot;, conf.style.HiddenText)&lt;br /&gt;
					:wikitext(v.whole)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Format the free translation&lt;br /&gt;
	local ft_line = div:tag(&amp;quot;p&amp;quot;)&lt;br /&gt;
	if free_translation and free_translation ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		ft_line:attr(&amp;quot;style&amp;quot;, &amp;quot;clear: left;&amp;quot;)&lt;br /&gt;
		ft_line:wikitext(free_translation)&lt;br /&gt;
	end&lt;br /&gt;
	if args.bottom and args.bottom ~= &amp;quot;&amp;quot;&lt;br /&gt;
		then local bottom = div:tag(&#039;p&#039;)&lt;br /&gt;
		bottom:css(&#039;margin-top&#039;, &#039;0&#039;)&lt;br /&gt;
		bottom:wikitext(args.bottom)&lt;br /&gt;
	end&lt;br /&gt;
	ft_line:node(msg:print_errors()) -- for error messages&lt;br /&gt;
&lt;br /&gt;
	local end_div = div:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
		end_div:attr(&amp;quot;style&amp;quot;, conf.style.EndDiv)&lt;br /&gt;
	div:newline()&lt;br /&gt;
	local temp_track = &amp;quot;&amp;quot;&lt;br /&gt;
	if last_line == 2&lt;br /&gt;
		then temp_track = &amp;quot;[[Category:Pages with interlinear glosses using two unnamed parameters]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if last_line &amp;gt; 3 and template_name ~= &#039;Template:Fs interlinear&#039;&lt;br /&gt;
		then  temp_track = &amp;quot;[[Category:Pages with interlinear glosses using more than three unnamed parameters]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(div) .. temp_track .. msg:print_warnings()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=319</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=319"/>
		<updated>2024-03-17T21:12:35Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-o&amp;quot;] = {&lt;br /&gt;
		{[&amp;quot;h&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;o1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-a&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;a1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-u&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;aw&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;u1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ia&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ix&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;ya&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;vini-blank&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;y&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;w&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;ini-prei&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;l&amp;quot;] = &amp;quot;d&amp;quot;,&lt;br /&gt;
		[&amp;quot;r&amp;quot;] = &amp;quot;d&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;w&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;j&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=318</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=318"/>
		<updated>2024-03-17T21:10:10Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-o&amp;quot;] = {&lt;br /&gt;
		{[&amp;quot;h&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;o1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-a&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;a1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-u&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;aw&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;u1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ia&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ix&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;ya&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;vini-blank&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;y&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;w&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;1&amp;quot;},&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=317</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=317"/>
		<updated>2024-03-17T21:08:16Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-o&amp;quot;] = {&lt;br /&gt;
		{[&amp;quot;h&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;o1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-a&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;a1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-u&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;aw&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;u1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ia&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-ix&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;ya&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;yu&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=316</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=316"/>
		<updated>2024-03-17T21:02:37Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-o&amp;quot;] = {&lt;br /&gt;
		{[&amp;quot;h&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;o1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-a&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;a&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;a1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-u&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a&amp;quot;] = &amp;quot;aw&amp;quot;,&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;n&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;u&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;i&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;wi&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;u1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=315</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=315"/>
		<updated>2024-03-17T20:56:00Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(&amp;quot;fin-basic&amp;quot;,str1,str2) end },&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-o&amp;quot;] = {&lt;br /&gt;
		{[&amp;quot;h&amp;quot;] = &amp;quot;o&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;] = &amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;] = &amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;o1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=314</id>
		<title>Module:Sond-roots</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=314"/>
		<updated>2024-03-17T20:55:21Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;export = {}&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;Module:sond-roots/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
function export.replace(oper, str1, str2) &lt;br /&gt;
	str1 = str1 or &#039;&#039;&lt;br /&gt;
	str2 = str2 or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local rules = {}&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
	local orig_oper = opers[oper]&lt;br /&gt;
	local orig_rules = orig_oper[1]&lt;br /&gt;
	local default = orig_oper[2]&lt;br /&gt;
&lt;br /&gt;
	for k,v in pairs(orig_rules) do&lt;br /&gt;
		rules[string.gsub(k,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})] = string.gsub(v,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(default) == &#039;string&#039; then &lt;br /&gt;
		default = string.gsub(default,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	elseif type(default) == &#039;function&#039; then&lt;br /&gt;
		default = default(str1,str2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output = rules[str1..str2] or default&lt;br /&gt;
&lt;br /&gt;
	return output&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=313</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=313"/>
		<updated>2024-03-17T20:48:33Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(str1,str2,&amp;quot;fin-basic&amp;quot;) end },&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-12&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;a2&amp;quot;] = &amp;quot;a2&amp;quot;,&lt;br /&gt;
		[&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(str1,str2,&amp;quot;fin-basic&amp;quot;) end },&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
} --end&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=312</id>
		<title>Module:Sond-roots</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=312"/>
		<updated>2024-03-17T18:30:18Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;export = {}&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;Module:sond-roots/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
function export.replace(str1, str2, oper) &lt;br /&gt;
	str1 = str1 or &#039;&#039;&lt;br /&gt;
	str2 = str2 or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local rules = {}&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
	local orig_oper = opers[oper]&lt;br /&gt;
	local orig_rules = orig_oper[1]&lt;br /&gt;
	local default = orig_oper[2]&lt;br /&gt;
&lt;br /&gt;
	for k,v in pairs(orig_rules) do&lt;br /&gt;
		rules[string.gsub(k,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})] = string.gsub(v,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(default) == &#039;string&#039; then &lt;br /&gt;
		default = string.gsub(default,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	elseif type(default) == &#039;function&#039; then&lt;br /&gt;
		default = default(str1,str2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output = rules[str1..str2] or default&lt;br /&gt;
&lt;br /&gt;
	return output&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=311</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=311"/>
		<updated>2024-03-17T18:22:42Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-n&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;im&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;ym&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;yn&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;iz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;yz&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
		[&amp;quot;i2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;y2&amp;quot;] = &amp;quot;i2&amp;quot;,&lt;br /&gt;
		[&amp;quot;um&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;un&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wm&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;wn&amp;quot;] = &amp;quot;on&amp;quot;,&lt;br /&gt;
		[&amp;quot;uz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;wz&amp;quot;] = &amp;quot;us&amp;quot;,&lt;br /&gt;
		[&amp;quot;u2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		[&amp;quot;w2&amp;quot;] = &amp;quot;u2&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	function (str1,str2) return &amp;quot;e&amp;quot;..export.replace(str1,str2,&amp;quot;fin-basic&amp;quot;) end },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=310</id>
		<title>Module:Sond-roots</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=310"/>
		<updated>2024-03-17T18:10:07Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;export = {}&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;Module:sond-roots/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
function export.replace(str1, str2, oper) &lt;br /&gt;
	str1 = str1 or &#039;&#039;&lt;br /&gt;
	str2 = str2 or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local rules = {}&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
	local orig_oper = opers[oper]&lt;br /&gt;
	local orig_rules = orig_oper[1]&lt;br /&gt;
	local default = orig_oper[2]&lt;br /&gt;
&lt;br /&gt;
	for k,v in pairs(orig_rules) do&lt;br /&gt;
		rules[k] = string.gsub(v,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(default) == &#039;string&#039; then &lt;br /&gt;
		default = string.gsub(default,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	elseif type(default) == &#039;function&#039; then&lt;br /&gt;
		default = default(str1,str2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output = rules[str1..str2] or default&lt;br /&gt;
&lt;br /&gt;
	return output&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=309</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=309"/>
		<updated>2024-03-17T17:53:17Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-1&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=308</id>
		<title>Module:Sond-roots/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots/data&amp;diff=308"/>
		<updated>2024-03-17T17:51:27Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;opers = { 	[&amp;quot;ini-basic&amp;quot;] = { 		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;, 		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;, 		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;, 		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;, 		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;, 		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;, 		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;, 		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;, 		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;, 		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;, 		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;, 		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;, 		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;, 		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;, 		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;, 		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;, 		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;, 		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;, 		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;, 		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;, 		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;, 		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;, 		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;, 		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;, 		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;, 		}, 		&amp;quot;12&amp;quot;}, 	 	[&amp;quot;fin-basic&amp;quot;]...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opers = {&lt;br /&gt;
	[&amp;quot;ini-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-basic&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;bh&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;bs&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
		[&amp;quot;dh&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;ds&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;gh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;gs&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
		[&amp;quot;hb&amp;quot;] = &amp;quot;hp&amp;quot;,&lt;br /&gt;
		[&amp;quot;hd&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
		[&amp;quot;hg&amp;quot;] = &amp;quot;hk&amp;quot;,&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;hs&amp;quot;,&lt;br /&gt;
		[&amp;quot;kh&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
		[&amp;quot;lh&amp;quot;] = &amp;quot;l&amp;quot;,&lt;br /&gt;
		[&amp;quot;mv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nv&amp;quot;] = &amp;quot;mb&amp;quot;,&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nl&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ns&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;nz&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[&amp;quot;ph&amp;quot;] = &amp;quot;p&amp;quot;,&lt;br /&gt;
		[&amp;quot;rh&amp;quot;] = &amp;quot;r&amp;quot;,&lt;br /&gt;
		[&amp;quot;rz&amp;quot;] = &amp;quot;rs&amp;quot;,&lt;br /&gt;
		[&amp;quot;sh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		[&amp;quot;th&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
		[&amp;quot;tz&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
		[&amp;quot;vh&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
		[&amp;quot;zh&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;12&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;fin-e-23&amp;quot;] = {&lt;br /&gt;
		{ [&amp;quot;h&amp;quot;]=&amp;quot;e&amp;quot;,&lt;br /&gt;
		[&amp;quot;m&amp;quot;]=&amp;quot;en&amp;quot;,&lt;br /&gt;
		[&amp;quot;w&amp;quot;]=&amp;quot;u&amp;quot;,&lt;br /&gt;
		[&amp;quot;y&amp;quot;]=&amp;quot;i&amp;quot;,&lt;br /&gt;
		[&amp;quot;z&amp;quot;]=&amp;quot;es&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&amp;quot;e1&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return opers&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=307</id>
		<title>Module:Sond-roots</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Sond-roots&amp;diff=307"/>
		<updated>2024-03-17T17:40:11Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;export = {}  require(&amp;quot;Module:sond-roots/data&amp;quot;)  function export.replace(str1, str2, oper)  	 	local rules = {} 	local output = &amp;quot;&amp;quot; 	local orig_oper = opers[oper] 	local orig_rules = orig_oper[1] 	local default = orig_oper[2]  	for k,v in pairs(orig_rules) do 		rules[k] = string.gsub(v,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2}) 	end 	default = string.gsub(default,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})  	output = rules[str1..str2] or default  	return output  end           return ex...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;export = {}&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;Module:sond-roots/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
function export.replace(str1, str2, oper) &lt;br /&gt;
	&lt;br /&gt;
	local rules = {}&lt;br /&gt;
	local output = &amp;quot;&amp;quot;&lt;br /&gt;
	local orig_oper = opers[oper]&lt;br /&gt;
	local orig_rules = orig_oper[1]&lt;br /&gt;
	local default = orig_oper[2]&lt;br /&gt;
&lt;br /&gt;
	for k,v in pairs(orig_rules) do&lt;br /&gt;
		rules[k] = string.gsub(v,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
	end&lt;br /&gt;
	default = string.gsub(default,&amp;quot;[12]&amp;quot;,{[&amp;quot;1&amp;quot;] = str1, [&amp;quot;2&amp;quot;] = str2})&lt;br /&gt;
&lt;br /&gt;
	output = rules[str1..str2] or default&lt;br /&gt;
&lt;br /&gt;
	return output&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Template:Test/sond-roots&amp;diff=306</id>
		<title>Template:Test/sond-roots</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Template:Test/sond-roots&amp;diff=306"/>
		<updated>2024-03-17T16:30:11Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;{{#vardefine:ini12basic|{{#switch: {{{1}}}{{{2}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | sh=s | th=t | tz=ts | vh=f | zh=s | {{{1}}}{{{2}}} }} }} {{#vardefine:fin23basic|{{#switch: {{{2}}}{{{3}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | rz=rs | sh=s | th=t | tz=ts | vh...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:ini12basic|{{#switch: {{{1}}}{{{2}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | sh=s | th=t | tz=ts | vh=f | zh=s | {{{1}}}{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:fin23basic|{{#switch: {{{2}}}{{{3}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | rz=rs | sh=s | th=t | tz=ts | vh=f | zh=s | {{{2}}}{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:fin12basic|{{#switch: {{{1}}}{{{2}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | rz=rs | sh=s | th=t | tz=ts | vh=f | zh=s | {{{1}}}{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:fine3|{{#switch: {{{3}}} | h=e | m=en | w=u | y=i | z=es | e{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:fine2|{{#switch: {{{2}}} | h=e | m=en | w=u | y=i | z=es | e{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:fine1|{{#switch: {{{1}}} | m=en | w=u | y=i | e{{{1}}} }} }}&lt;br /&gt;
{{#vardefine:fine23|{{#switch: {{{2}}}{{{3}}} | im | in | ym | yn=en | iz | yz=is | i{{{3}}} | y{{{3}}}=i{{{3}}} | um | un | wm | wn=on | uz | wz=us | u{{{3}}} | w{{{3}}}=u{{{3}}} | e{{#var:fin23basic}} }} }}&lt;br /&gt;
{{#vardefine:fine12|{{#switch: {{{1}}}{{{2}}} | a{{{2}}}=a{{{2}}} | im | in | ym | yn=en | iz | yz=is | i{{{2}}} | y{{{2}}}=i{{{2}}} | um | un | wm | wn=on | uz | wz=us | u{{{2}}} | w{{{2}}}=u{{{2}}} | e{{#var:fin12basic}} }} }}&lt;br /&gt;
{{#vardefine:fino3|{{#switch: {{{3}}} | h=o | m=on | w=u | y=e | z=os | o{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:fino2|{{#switch: {{{2}}} | h=o | m=on | w=u | y=e | z=os | o{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:fina3|{{#switch: {{{3}}} | a | h=a | m=an | u | w=o | i | y=e | z=as | a{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:fina2|{{#switch: {{{2}}} | a | h=a | m=an | u | w=o | i | y=e | z=as | a{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:finu3|{{#switch: {{{3}}} | a=wa | h=u | m | n=on | u | w=u | i | y=wi | z=us | u{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:finu2|{{#switch: {{{2}}} | a=wa | h=u | m | n=on | u | w=u | i | y=wi | z=us | u{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:fini3|{{#ifeq: {{{2}}}|a|{{#switch: {{{3}}} | a=a | h=e | m | n=en | u | w=u | i | y=i | z=es | e{{{3}}} }}|{{#switch: {{{3}}} | a=ya | h=i | m | n=en | u | w=yu | i | y=i | z=is | i{{{3}}} }} }} }}&lt;br /&gt;
{{#vardefine:fini2|{{#ifeq: {{{1}}}|a|{{#switch: {{{2}}} | a=a | h=e | m | n=en | u | w=u | i | y=i | z=es | e{{{2}}} }}|{{#switch: {{{2}}} | a=ya | h=i | m | n=en | u | w=yu | i | y=i | z=is | i{{{2}}} }} }} }}&lt;br /&gt;
{{#vardefine:viniablank|{{#switch: {{{1}}} | a= | i=y | u=w | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:iniprei|{{#switch: {{{1}}} | a= | i= | l | r=d | u=w | y=j | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:med23basic|{{#switch: {{{2}}}{{{3}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kb=gb | kd=gd | kg=gg | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | sh=s | th=t | tz=ts | vh=f | zh=s | {{{2}}}{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:med12basic|{{#switch: {{{1}}}{{{2}}} | bh=p | bs=ps | dh=t | ds=ts | gh=k | gs=ks | hb=hp | hd=ht | hg=hk | hz=hs | kb=gb | kd=gd | kg=gg | kh=k | lh=l | mv | nv=mb | nr | nl | ns | nz=nd | ph=p | rh=r | sh=s | th=t | tz=ts | vh=f | zh=s | {{{1}}}{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:med12prei|{{#switch: {{{1}}}{{{2}}} | {{{1}}}l | {{{1}}}r={{{1}}}d | {{{1}}}i | {{{1}}}y={{{1}}}j | {{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:medo12prei|{{#switch: {{{1}}}{{{2}}} | {{{1}}}l | {{{1}}}r={{{1}}}d | {{{1}}}i | {{{1}}}y={{{1}}}j | o{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:med23preu|{{#switch: {{{2}}}{{{3}}} | {{{2}}}l | {{{2}}}r={{{2}}}d | {{{2}}}u | {{{2}}}w={{{2}}}v | {{#var:med23basic}} }} }}&lt;br /&gt;
{{#vardefine:med12preu|{{#switch: {{{1}}}{{{2}}} | {{{1}}}l | {{{1}}}r={{{1}}}d | {{{1}}}u | {{{1}}}w={{{1}}}v | e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:meda23preu|{{#switch: {{{2}}} | a{{{3}}} | h=a{{{3}}} | u | w=o{{{3}}} | i | y=e{{{3}}} | a{{#var:med23preu}} }} }}&lt;br /&gt;
{{#vardefine:medglide1|{{#switch: {{{1}}} | i=y | a=h | u=w | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:medglide2|{{#switch: {{{2}}} | i=y | a=h | u=w | {{{2}}} }} }}&lt;br /&gt;
{{#vardefine:medprei3|{{#switch: {{{3}}} | a=h | h= | i=j | l | r=d | u=w | y=j | {{{3}}} }} }}&lt;br /&gt;
{{#vardefine:medprei2|{{#switch: {{{2}}} | a=h | h= | i=j | l | r=d | u=w | y=j | {{{2}}} }} }}&lt;br /&gt;
{{#vardefine:medprei1|{{#switch: {{{1}}} | a=h | h= | i=j | l | r=d | u=w | y=j | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:medpreu3|{{#switch: {{{3}}} | a=h | i=y | l | r=d | u=v | w=v | {{{3}}} }} }}&lt;br /&gt;
{{#vardefine:medpreu2|{{#switch: {{{2}}} | a=h | i=y | l | r=d | u=v | w=v | {{{2}}} }} }}&lt;br /&gt;
{{#vardefine:medpreu1|{{#switch: {{{1}}} | a=h | i=y | l | r=d | u=v | w=v | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:ciniw|{{#switch: {{{1}}} | y=iw | w=v | {{{1}}}w }} }}&lt;br /&gt;
{{#vardefine:ciniy|{{#switch: {{{1}}} | w=uy | y=j | {{{1}}}y }} }}&lt;br /&gt;
{{#vardefine:med3basic|{{#switch: {{{3}}} | a=h | i=y | u=w | {{{3}}} }} }}&lt;br /&gt;
{{#vardefine:med2basic|{{#switch: {{{2}}} | a=h | i=y | u=w | {{{2}}} }} }}&lt;br /&gt;
{{#vardefine:med1basic|{{#switch: {{{1}}} | a=h | i=y | u=w | {{{1}}} }} }}&lt;br /&gt;
{{#vardefine:medcode3|{{#switch: {{{3}}} | a=a | b=p | d=t | g=k | v=f | u | w=u | i | y=i | z=es | e{{{3}}} }} }}&lt;br /&gt;
{{#vardefine:medcode2|{{#switch: {{{2}}} | a=a | b=p | d=t | g=k | v=f | u | w=u | i | y=i | z=es | e{{{2}}} }} }}&lt;br /&gt;
{{#vardefine:be3|b{{#switch: {{{1}}}| a=a{{{2}}} | i | y=i{{{2}}} | u | w=u{{{2}}} |e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:be2|b{{#switch: {{{1}}}{{{2}}}| al | ar=ad | ai | ay=aj | a{{{2}}}=a{{{2}}} | il | ir | yl | yr=id | iy=ij | i{{{2}}} | y{{{2}}}=i{{{2}}} | ul | ur | wl | wr=ud | u{{{2}}} | w{{{2}}}=u{{{2}}} | {{{1}}}l | {{{1}}}r=e{{{1}}}d |e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:be3preu|b{{#switch: {{{1}}}| a=a{{{2}}} | i | y=i{{{2}}} | u | w=u{{{2}}} |e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:be2preu|b{{#switch: {{{1}}}{{{2}}}| al | ar=ad | ai | aw=av | a{{{2}}}=a{{{2}}} | il | ir | yl | yr=id | iw=iv | i{{{2}}} | y{{{2}}}=i{{{2}}} | ul | ur | wl | wr=ud | u{{{2}}} | w{{{2}}}=u{{{2}}} | {{{1}}}l | {{{1}}}r=e{{{1}}}d |e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:o3preu|{{#switch: {{{1}}}| a=a{{{2}}} | i | y=i{{{2}}} | u | w=u{{{2}}} |o{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:o2preu|{{#switch: {{{1}}}{{{2}}}| a{{{2}}}=a{{{2}}} | i{{{2}}} | y{{{2}}}=e{{{2}}} | u{{{2}}} | w{{{2}}}=u{{{2}}} |o{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:o2prei|{{#switch: {{{1}}}{{{2}}}| al | ar=ad | ay=aj | a{{{2}}}=a{{{2}}} | ir | il | yr | yl=ed | iy | yy=ej | i{{{2}}} | y{{{2}}}=e{{{2}}} | ur | ul | wr | wl=ud | uy | wy=uj | u{{{2}}} | w{{{2}}}=u{{{2}}} |o{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:a3|{{#switch: {{{1}}}| a=a{{{2}}} | i | y=i{{{2}}} | u | w=u{{{2}}} |a{{#var:med12prei}} }} }}&lt;br /&gt;
{{#vardefine:e3|{{#switch: {{{1}}}| a=a{{{2}}} | i | y=i{{{2}}} | u | w=u{{{2}}} |e{{#var:med12prei}} }} }}&lt;br /&gt;
{{#vardefine:e2|{{#switch: {{{1}}}{{{2}}}| al | ar=ad | ai | ay=aj | a{{{2}}}=a{{{2}}} | il | ir | yl | yr=id | iy=ij | i{{{2}}} | y{{{2}}}=i{{{2}}} | ul | ur | wl | wr=ud | u{{{2}}} | w{{{2}}}=u{{{2}}} | {{{1}}}l | {{{1}}}r=e{{{1}}}d |e{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:i2basic|{{#switch: {{{1}}}{{{2}}}| ai=yay | au=yaw | a{{{2}}}=ya{{{2}}} | iu | iw=iw | iy=iy | i{{{2}}} | y{{{2}}}=i{{{2}}} | wi=yuy | uw=yuw | ww=iv | u{{{2}}} | w{{{2}}}=yu{{{2}}} |i{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:i2prei|{{#switch: {{{1}}}{{{2}}}| al | ar=yad | ai | ay=yaj | au | aw=yaw | a{{{2}}}=ya{{{2}}} | il | ir | yl | yr=id | iu | iw=iw | iy=iy | i{{{2}}} | y{{{2}}}=i{{{2}}} | ul | ur | wl | wr=ud | wi=yuj | uw=yuw | ww=iv | u{{{2}}} | w{{{2}}}=yu{{{2}}} | {{{1}}}l | {{{1}}}r=i{{{1}}}d | {{{1}}}i | {{{1}}}y={{{1}}}j |i{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:i2preu|{{#switch: {{{1}}}{{{2}}}| al | ar=yad | ai | ay=yay | au | aw=yav | a{{{2}}}=ya{{{2}}} | il | ir | yl | yr=id | iu | iw=iv | iy=iy | i{{{2}}} | y{{{2}}}=i{{{2}}} | ul | ur | wl | wr=ud | wi=yuy | uw=yuv | ww=iv | u{{{2}}} | w{{{2}}}=yu{{{2}}} | {{{1}}}l | {{{1}}}r=i{{{1}}}d | {{{1}}}u | {{{1}}}w={{{1}}}v |i{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:u2basic|{{#switch: {{{1}}}{{{2}}}| ai=way | au=waw | a{{{2}}}=wa{{{2}}} | iu | iw=wiw | iy=wiy | i{{{2}}} | y{{{2}}}=wi{{{2}}} | wi=vy | uw=uv | ww=uv | u{{{2}}} | w{{{2}}}=u{{{2}}} |u{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:u2prei|{{#switch: {{{1}}}{{{2}}}| al | ar=wad | ai | ay=waj | au | aw=waw | a{{{2}}}=wa{{{2}}} | il | ir | yl | yr=wid | iu | iw=wiw | iy=wiy | i{{{2}}} | y{{{2}}}=wi{{{2}}} | ul | ur | wl | wr=ud | wi=uj | uw=uv | ww=uv | u{{{2}}} | w{{{2}}}=u{{{2}}} | {{{1}}}l | {{{1}}}r=u{{{1}}}d | {{{1}}}i | {{{1}}}y={{{1}}}j |u{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:u3preu|{{#switch: {{{1}}}| a=wa{{{2}}} | i | y=wi{{{2}}} | u | w=u{{{2}}} |u{{#var:med12basic}} }} }}&lt;br /&gt;
{{#vardefine:u2preu|{{#switch: {{{1}}}{{{2}}}| a{{{2}}}=wa{{{2}}} | i{{{2}}} | y{{{2}}}=wi{{{2}}} | u{{{2}}} | w{{{2}}}=u{{{2}}} |u{{#var:med12basic}} }} }}&lt;br /&gt;
Please note that many of these forms are entirely hypothetical; not all of them actually exist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common Noun A&#039;&#039;&#039;: [[{{#if: {{{3|}}}| {{#var:ini12basic}}{{#var:fine3}} | {{#var:viniablank}}{{#var:fine2}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}=//{{{2}}}{{{3}}}}}|{{sond-orth-regular|form={{{1}}}=/{{{2}}}}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common Noun B&#039;&#039;&#039;: [[{{#if: {{{3|}}}| {{#var:ini12basic}}{{#var:fino3}} | {{#var:viniablank}}{{#var:fino2}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}{{{3}}}==}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diminutive A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ini12basic}}e{{#var:medprei3}}is|{{#ifeq: {{{2}}}|y|{{{1}}}j|{{#ifeq: {{{2}}}|r|{{{1}}}d|{{#ifeq: {{{2}}}|l|{{{1}}}d|{{#var:ini12basic}} }} }} }}is}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}=&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;{{{2}}}{{{3}}}s}}|{{sond-orth-regular|form={{{1}}}=/{{{2}}}s}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diminutive B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ini12basic}}o{{#var:medpreu3}}us|{{#ifeq: {{{2}}}|w|{{{1}}}v|{{#ifeq: {{{2}}}|r|{{{1}}}d|{{#ifeq: {{{2}}}|l|{{{1}}}d|{{#var:ini12basic}} }} }} }}us}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}{{{3}}}==s}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=s}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Locative A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:be3}}{{#var:fine3}}|be{{#var:medglide1}}{{#var:fine2}}}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=b{{{1}}}=//{{{2}}}{{{3}}}}}|{{sond-orth-regular|form=b{{{1}}}=/{{{2}}}}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Locative B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:be3preu}}u{{#var:medpreu3}}on|{{#var:be2preu}}on}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=b{{{1}}}{{{2}}}{{{3}}}==m}}|{{sond-orth-regular|form=b{{{1}}}{{{2}}}=m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Locative C&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:e3}}i{{#var:med3basic}}a|e{{#var:medprei1}}i{{#var:med2basic}}a}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}&amp;lt;nowiki&amp;gt;=[[&amp;lt;/nowiki&amp;gt;{{{3}}}&amp;amp;zwnj;h}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}&amp;amp;zwnj;h}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diminutive Locative&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:be3}}e{{#var:medprei3}}is|{{#var:be2}}is}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=b{{{1}}}=//{{{2}}}{{{3}}}s}}|{{sond-orth-regular|form=b{{{1}}}=/{{{2}}}s}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Augmentative A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ciniw}}a{{#var:medglide2}}{{#var:fina3}} |{{#var:ciniw}}{{#var:fina2}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}=//{{{2}}}{{{3}}}==}}|{{sond-orth-regular|form={{{1}}}=/{{{2}}}=}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Augmentative B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#ifeq: {{{2}}}|w|{{{1}}}v|{{#ifeq: {{{2}}}|r|{{{1}}}d|{{#ifeq: {{{2}}}|l|{{{1}}}d|{{#var:ini12basic}} }} }} }}u{{#var:medpreu3}}u|{{#ifeq: {{{2}}}|w|{{{1}}}v|{{#ifeq: {{{2}}}|r|{{{1}}}d|{{#ifeq: {{{2}}}|l|{{{1}}}d|{{#var:ini12basic}} }} }} }}u}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}{{{3}}}==w}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=w}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common Implement&#039;&#039;&#039;: [[{{#if: {{{3|}}}|e{{#var:med1basic}}{{#var:fine23}}|{{#var:fine12}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}&amp;lt;nowiki&amp;gt;=[[&amp;lt;/nowiki&amp;gt;{{{3}}}}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Augmentative Implement&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ciniw}}{{#var:meda23preu}}on |{{#var:ciniw}}a{{#var:medpreu2}}on}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}=//{{{2}}}{{{3}}}==m}}|{{sond-orth-regular|form={{{1}}}=/{{{2}}}=m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verbal Noun A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:i2preu}}{{#var:finu3}}|i{{#var:medpreu1}}{{#var:finu2}}}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=i{{{1}}}{{{2}}}{{{3}}}==}}|{{sond-orth-regular|form=i{{{1}}}{{{2}}}=}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verbal Noun B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|s{{#var:o3preu}}u{{#var:medprei3}}iv|s{{#var:o2prei}}iv}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=s{{{1}}}{{{2}}}{{{3}}}==v}}|{{sond-orth-regular|form=s{{{1}}}{{{2}}}=v}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instance of Action&#039;&#039;&#039;: [[{{#if: {{{3|}}}|s{{#var:o3preu}}{{#var:finu3}}|so{{#var:medpreu1}}{{#var:finu2}}}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=s{{{1}}}{{{2}}}{{{3}}}==}}|{{sond-orth-regular|form=s{{{1}}}{{{2}}}=}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absolute Noun&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:o3preu}}u{{#var:medpreu3}}on|{{#var:o2preu}}on}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}{{{3}}}=]]m}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=]m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animate A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:i2basic}}e{{#var:medprei3}}en|{{#var:i2prei}}en}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=i{{{1}}}=//{{{2}}}{{{3}}}m}}|{{sond-orth-regular|form=i{{{1}}}=/{{{2}}}m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animate B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ini12basic}}{{#var:fina3}}|{{#var:viniablank}}{{#var:fina2}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}{{{3}}}=]]}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=]}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animate C&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ciniy}}a{{#var:medglide2}}a{{#var:medprei3}}en |{{#var:ciniy}}a{{#var:medprei2}}en }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=y{{{1}}}=//{{{2}}}{{{3}}}=]]m}}|{{sond-orth-regular|form=y{{{1}}}=/{{{2}}}=]m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animate D&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ciniw}}a{{#var:medglide2}}a{{#var:medprei3}}en |{{#var:ciniw}}a{{#var:medprei2}}en }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=w{{{1}}}=//{{{2}}}{{{3}}}=]]m}}|{{sond-orth-regular|form=w{{{1}}}=/{{{2}}}=]m}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Temporal&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:a3}}i{{#var:med3basic}}as|{{#var:e2}}as }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}&amp;lt;nowiki&amp;gt;=[[&amp;lt;/nowiki&amp;gt;{{{3}}}s}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}s}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Collective Noun&#039;&#039;&#039;: [[{{#if: {{{3|}}}|h{{#var:u3preu}}u{{#var:medpreu3}}u|h{{#var:u2preu}}u}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=h{{{1}}}{{{2}}}{{{3}}}==w}}|{{sond-orth-regular|form=h{{{1}}}{{{2}}}=w}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Individual Noun&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:u2basic}}e{{#var:medprei3}}is|{{#var:u2prei}}is}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=u{{{1}}}=//{{{2}}}{{{3}}}s}}|{{sond-orth-regular|form=u{{{1}}}=/{{{2}}}s}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Natural Noun&#039;&#039;&#039;: [[{{#if: {{{3|}}}| {{#var:ini12basic}}ov{{#var:fino3}} | {{#var:viniablank}}ov{{#var:fino2}} }}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=&amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;{{{3}}}=&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt;}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}=]}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proper Noun (Male) A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:viniablank}}a{{#var:medglide2}}{{#var:fina3}}|{{#var:viniablank}}{{#var:fina2}}}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=*{{{1}}}{{{2}}}=]{{{3}}}}}|{{sond-orth-regular|form=*{{{1}}}{{{2}}}=]}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proper Noun (Male) B&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:ini12basic}}{{#var:medcode3}}|{{#var:viniablank}}{{#var:medcode2}} }}tur]] {{#if: {{{3|}}}|{{sond-orth-regular|form=*{{{1}}}&amp;lt;nowiki&amp;gt;=//&amp;lt;/nowiki&amp;gt;{{{2}}}{{{3}}}twr}}|{{sond-orth-regular|form=*{{{1}}}&amp;lt;nowiki&amp;gt;=/&amp;lt;/nowiki&amp;gt;{{{2}}}twr}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proper Noun (Female) A&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:viniablank}}a{{#var:med2basic}}o{{#var:med3basic}}a|{{#var:viniablank}}o{{#var:med2basic}}a}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form=*{{{1}}}{{{2}}}{{{3}}}=h}}|{{sond-orth-regular|form=*{{{1}}}{{{2}}}=h}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adjective&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:viniablank}}e{{#var:medpreu2}}{{#var:finu3}}|{{#var:viniablank}}e{{#var:medpreu2}}u}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}&amp;lt;nowiki&amp;gt;=[[&amp;lt;/nowiki&amp;gt;{{{3}}}==}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}=}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adverb&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#var:viniablank}}e{{#var:medpreu2}}u{{#var:medpreu3}}ur|{{#var:viniablank}}e{{#var:medpreu2}}ur}}]] {{#if: {{{3|}}}|{{sond-orth-regular|form={{{1}}}{{{2}}}=&amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;{{{3}}}==r}}|{{sond-orth-regular|form={{{1}}}=[{{{2}}}=r}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Determiner&#039;&#039;&#039;: [[{{#if: {{{3|}}}|{{#ifeq: {{{2}}}|y|{{{1}}}j|{{#ifeq: {{{2}}}|r|{{{1}}}d|{{#ifeq: {{{2}}}|l|{{{1}}}d|{{#var:ini12basic}} }} }} }}{{#var:fini3}}|{{#var:iniprei}}{{#var:fini2}} }}]] {{sond-orth-regular|form={{{1}}}{{{2}}}{{{3|}}}}}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=305</id>
		<title>Module:Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=305"/>
		<updated>2024-03-06T04:47:00Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
export = {}&lt;br /&gt;
&lt;br /&gt;
VOWELS = &amp;quot;aeiouw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEVOICED = &amp;quot;ktfsθʧqʃ&amp;quot;&lt;br /&gt;
VOICED = &amp;quot;gdvzðʤ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SIBILANTS = &amp;quot;zsʃʒ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEVOICING = {&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;v&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;z&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ð&amp;quot;] = &amp;quot;θ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ʤ&amp;quot;] = &amp;quot;ʧ&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
H_DEVOICING = {&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;v&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;z&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;ð&amp;quot;] = &amp;quot;θ&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
VvC = {&lt;br /&gt;
	[&amp;quot;a&amp;quot;] = &amp;quot;au&amp;quot;,&lt;br /&gt;
	[&amp;quot;e&amp;quot;] = &amp;quot;ef&amp;quot;,&lt;br /&gt;
	[&amp;quot;i&amp;quot;] = &amp;quot;if&amp;quot;,&lt;br /&gt;
	[&amp;quot;o&amp;quot;] = &amp;quot;uu&amp;quot;,&lt;br /&gt;
	[&amp;quot;u&amp;quot;] = &amp;quot;uu&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.compress_consonants(str)&lt;br /&gt;
	&lt;br /&gt;
	str = str or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	replace = {{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;&#039;&amp;quot;,&amp;quot;&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[1],v[2])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.expand_consonants(str)&lt;br /&gt;
	replace = {&lt;br /&gt;
				{&amp;quot;s&#039;h&amp;quot;,&amp;quot;sh&amp;quot;},&lt;br /&gt;
				{&amp;quot;s&#039;sh&amp;quot;,&amp;quot;sʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;h&amp;quot;,&amp;quot;dh&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;dh&amp;quot;,&amp;quot;dð&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;h&amp;quot;,&amp;quot;th&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;th&amp;quot;,&amp;quot;tθ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[2],v[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.assimilate(str)&lt;br /&gt;
&lt;br /&gt;
	output = export.compress_consonants(str)&lt;br /&gt;
&lt;br /&gt;
	if str and str ~= &#039;&#039; then&lt;br /&gt;
			--Find and record location of hyphen, if any&lt;br /&gt;
			hyphen = mw.ustring.find(output,&amp;quot;-&amp;quot;,1,true) or 0&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--VvC assimilition FIXME - should not happen if v is geminate. Disabling for now.&lt;br /&gt;
			-- output = string.gsub(output,&amp;quot;([&amp;quot;..VOWELS..&amp;quot;])v([^&amp;quot;..VOWELS..&amp;quot;])&amp;quot;,&amp;quot;%1~v%2&amp;quot;):gsub(&amp;quot;(.)~v&amp;quot;,{VvC)&lt;br /&gt;
			--Sibilant Assimilation&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..SIBILANTS..&amp;quot;])([&amp;quot;..SIBILANTS..&amp;quot;])&amp;quot;,&amp;quot;%2%2&amp;quot;)&lt;br /&gt;
			--Nasal Assimilation&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;m([tdszkgθðl])&amp;quot;,&amp;quot;n%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;n([bfv])&amp;quot;,&amp;quot;m%1&amp;quot;)&lt;br /&gt;
			--General Devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..DEVOICED..&amp;quot;])([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;%1~%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])([&amp;quot;..DEVOICED..&amp;quot;])&amp;quot;,&amp;quot;~%1%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			--H devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;h([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;h~%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])h&amp;quot;,&amp;quot;~%1h&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)	&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;hj&amp;quot;,&amp;quot;hʧ&amp;quot;)	&lt;br /&gt;
			--Misc&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;qk&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;kq&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ao&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ae&amp;quot;,&amp;quot;ai&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;aw&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ua&amp;quot;,&amp;quot;wa&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
			--Add hyphen, if any&lt;br /&gt;
			if hyphen &amp;gt; 0 then&lt;br /&gt;
				output = mw.ustring.sub(output,1,hyphen-1)..&#039;-&#039;..mw.ustring.sub(output,hyphen)	&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return export.expand_consonants(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=304</id>
		<title>Module:Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=304"/>
		<updated>2024-03-06T03:51:57Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
export = {}&lt;br /&gt;
&lt;br /&gt;
VOWELS = &amp;quot;aeiouw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEVOICED = &amp;quot;ktfsθʧqʃ&amp;quot;&lt;br /&gt;
VOICED = &amp;quot;gdvzðʤ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEVOICING = {&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;v&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;z&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ð&amp;quot;] = &amp;quot;θ&amp;quot;,&lt;br /&gt;
	[&amp;quot;ʤ&amp;quot;] = &amp;quot;ʧ&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
H_DEVOICING = {&lt;br /&gt;
	[&amp;quot;g&amp;quot;] = &amp;quot;k&amp;quot;,&lt;br /&gt;
	[&amp;quot;d&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;v&amp;quot;] = &amp;quot;f&amp;quot;,&lt;br /&gt;
	[&amp;quot;z&amp;quot;] = &amp;quot;z&amp;quot;,&lt;br /&gt;
	[&amp;quot;ð&amp;quot;] = &amp;quot;θ&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
VvC = {&lt;br /&gt;
	[&amp;quot;a&amp;quot;] = &amp;quot;au&amp;quot;,&lt;br /&gt;
	[&amp;quot;e&amp;quot;] = &amp;quot;ef&amp;quot;,&lt;br /&gt;
	[&amp;quot;i&amp;quot;] = &amp;quot;if&amp;quot;,&lt;br /&gt;
	[&amp;quot;o&amp;quot;] = &amp;quot;uu&amp;quot;,&lt;br /&gt;
	[&amp;quot;u&amp;quot;] = &amp;quot;uu&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.compress_consonants(str)&lt;br /&gt;
	&lt;br /&gt;
	str = str or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	replace = {{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;&#039;&amp;quot;,&amp;quot;&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[1],v[2])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.expand_consonants(str)&lt;br /&gt;
	replace = {&lt;br /&gt;
				{&amp;quot;s&#039;h&amp;quot;,&amp;quot;sh&amp;quot;},&lt;br /&gt;
				{&amp;quot;s&#039;sh&amp;quot;,&amp;quot;sʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;h&amp;quot;,&amp;quot;dh&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;dh&amp;quot;,&amp;quot;dð&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;h&amp;quot;,&amp;quot;th&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;th&amp;quot;,&amp;quot;tθ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[2],v[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.assimilate(str)&lt;br /&gt;
&lt;br /&gt;
	output = export.compress_consonants(str)&lt;br /&gt;
&lt;br /&gt;
	if str and str ~= &#039;&#039; then&lt;br /&gt;
			--VvC assimilition FIXME - should not happen if v is geminate. Disabling for now.&lt;br /&gt;
			-- output = string.gsub(output,&amp;quot;([&amp;quot;..VOWELS..&amp;quot;])v([^&amp;quot;..VOWELS..&amp;quot;])&amp;quot;,&amp;quot;%1~v%2&amp;quot;):gsub(&amp;quot;(.)~v&amp;quot;,{VvC)&lt;br /&gt;
			--Nasal Assimilation&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;m([tdszkgθðl])&amp;quot;,&amp;quot;n%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;n([bfv])&amp;quot;,&amp;quot;m%1&amp;quot;)&lt;br /&gt;
			--General Devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..DEVOICED..&amp;quot;])([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;%1~%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])([&amp;quot;..DEVOICED..&amp;quot;])&amp;quot;,&amp;quot;~%1%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			--H devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;h([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;h~%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])h&amp;quot;,&amp;quot;~%1h&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)	&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;hj&amp;quot;,&amp;quot;hʧ&amp;quot;)	&lt;br /&gt;
			--Misc&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;qk&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;kq&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ao&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ae&amp;quot;,&amp;quot;ai&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;aw&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ua&amp;quot;,&amp;quot;wa&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
			&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return export.expand_consonants(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=303</id>
		<title>Module:Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=303"/>
		<updated>2024-03-06T03:51:28Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
export = {}&lt;br /&gt;
&lt;br /&gt;
function export.compress_consonants(str)&lt;br /&gt;
	&lt;br /&gt;
	str = str or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	replace = {{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;&#039;&amp;quot;,&amp;quot;&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[1],v[2])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.expand_consonants(str)&lt;br /&gt;
	replace = {&lt;br /&gt;
				{&amp;quot;s&#039;h&amp;quot;,&amp;quot;sh&amp;quot;},&lt;br /&gt;
				{&amp;quot;s&#039;sh&amp;quot;,&amp;quot;sʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;h&amp;quot;,&amp;quot;dh&amp;quot;},&lt;br /&gt;
				{&amp;quot;d&#039;dh&amp;quot;,&amp;quot;dð&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;h&amp;quot;,&amp;quot;th&amp;quot;},&lt;br /&gt;
				{&amp;quot;t&#039;th&amp;quot;,&amp;quot;tθ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ssh&amp;quot;,&amp;quot;ʃʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ddh&amp;quot;,&amp;quot;ðð&amp;quot;},&lt;br /&gt;
				{&amp;quot;tth&amp;quot;,&amp;quot;θθ&amp;quot;}, &lt;br /&gt;
				{&amp;quot;cch&amp;quot;,&amp;quot;ʧʧ&amp;quot;},&lt;br /&gt;
				{&amp;quot;sh&amp;quot;,&amp;quot;ʃ&amp;quot;},&lt;br /&gt;
				{&amp;quot;dh&amp;quot;,&amp;quot;ð&amp;quot;},&lt;br /&gt;
				{&amp;quot;th&amp;quot;,&amp;quot;θ&amp;quot;},&lt;br /&gt;
				{&amp;quot;j&amp;quot;,&amp;quot;ʤ&amp;quot;},&lt;br /&gt;
				{&amp;quot;ch&amp;quot;,&amp;quot;ʧ&amp;quot;},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for _,v in ipairs(replace) do&lt;br /&gt;
		str = mw.ustring.gsub(str,v[2],v[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.assimilate(str)&lt;br /&gt;
&lt;br /&gt;
	output = export.compress_consonants(str)&lt;br /&gt;
&lt;br /&gt;
	if str and str ~= &#039;&#039; then&lt;br /&gt;
			--VvC assimilition FIXME - should not happen if v is geminate. Disabling for now.&lt;br /&gt;
			-- output = string.gsub(output,&amp;quot;([&amp;quot;..VOWELS..&amp;quot;])v([^&amp;quot;..VOWELS..&amp;quot;])&amp;quot;,&amp;quot;%1~v%2&amp;quot;):gsub(&amp;quot;(.)~v&amp;quot;,{VvC)&lt;br /&gt;
			--Nasal Assimilation&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;m([tdszkgθðl])&amp;quot;,&amp;quot;n%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;n([bfv])&amp;quot;,&amp;quot;m%1&amp;quot;)&lt;br /&gt;
			--General Devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..DEVOICED..&amp;quot;])([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;%1~%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])([&amp;quot;..DEVOICED..&amp;quot;])&amp;quot;,&amp;quot;~%1%2&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,DEVOICING)&lt;br /&gt;
			--H devoicing&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;h([&amp;quot;..VOICED..&amp;quot;])&amp;quot;,&amp;quot;h~%1&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;([&amp;quot;..VOICED..&amp;quot;])h&amp;quot;,&amp;quot;~%1h&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;~(.)&amp;quot;,H_DEVOICING)	&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;hj&amp;quot;,&amp;quot;hʧ&amp;quot;)	&lt;br /&gt;
			--Misc&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;qk&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;kq&amp;quot;,&amp;quot;kk&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ao&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ae&amp;quot;,&amp;quot;ai&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;aw&amp;quot;,&amp;quot;au&amp;quot;)&lt;br /&gt;
			output = mw.ustring.gsub(output,&amp;quot;ua&amp;quot;,&amp;quot;wa&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
			&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return export.expand_consonants(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=302</id>
		<title>Module:Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=302"/>
		<updated>2024-02-11T10:56:28Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
require(&#039;Module:Test/data&#039;)&lt;br /&gt;
&lt;br /&gt;
export = {}&lt;br /&gt;
&lt;br /&gt;
function export.get_forms(root,mod,manual)&lt;br /&gt;
	mod = mod or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	local forms = {}&lt;br /&gt;
	local patterns = {}&lt;br /&gt;
	&lt;br /&gt;
	local head = &amp;quot;&amp;quot;&lt;br /&gt;
	local vowel = &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	local root = m_cu.parse_root(root..mod,true)&lt;br /&gt;
	&lt;br /&gt;
	local tail =  mw.text.split(root[#root],&amp;quot;-&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if #root == 1 then&lt;br /&gt;
		--TBD&lt;br /&gt;
	elseif #root == 2 then&lt;br /&gt;
		vowel = root[1]&lt;br /&gt;
	else&lt;br /&gt;
		table.remove(root,#root)&lt;br /&gt;
		vowel = root[#root]&lt;br /&gt;
		table.remove(root,#root)&lt;br /&gt;
		head = table.concat(root)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #tail == 1 then&lt;br /&gt;
		patterns = NOMOD_PATTERNS&lt;br /&gt;
	elseif #tail == 2 then&lt;br /&gt;
		patterns = ONEMOD_PATTERNS&lt;br /&gt;
	elseif #tail == 3 then&lt;br /&gt;
		patterns = TWOMOD_PATTERNS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(patterns) do&lt;br /&gt;
		forms[k] = string.gsub(v,&amp;quot;C&amp;quot;,head)&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;V&amp;quot;,vowel)&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;1&amp;quot;,tail[1])&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;2&amp;quot;,tail[2] or &#039;&#039;)&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;3&amp;quot;,tail[3] or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k,v in pairs(forms) do&lt;br /&gt;
		forms[k] = m_cu.assimilate(v)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(manual) do&lt;br /&gt;
		forms[k] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	mw.logObject(forms)&lt;br /&gt;
	return forms&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=301</id>
		<title>Module:Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test&amp;diff=301"/>
		<updated>2024-02-11T10:34:31Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot; require(&amp;#039;Module:Test/data&amp;#039;)  export = {}  function export.get_forms(head,vowel,tail_str)  --	if root_str == nil then --		error(&amp;quot;Root is required&amp;quot;) --	end 	 	local forms = {} 	local tail = {} 	local patterns = {} 	 --	root_str = string.gsub(root_str,&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)  --	local root = m_cu.parse_root(root_str,true) 	 	tail =  mw.text.split(tail_str,&amp;quot;-&amp;quot;) 	 	if #tail == 1 then 		patterns = NOMOD_PATTERNS 	elseif #tail == 2 then 		patterns = ONEMOD_PATTERNS 	elseif #tail == 3 then 		p...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
require(&#039;Module:Test/data&#039;)&lt;br /&gt;
&lt;br /&gt;
export = {}&lt;br /&gt;
&lt;br /&gt;
function export.get_forms(head,vowel,tail_str)&lt;br /&gt;
&lt;br /&gt;
--	if root_str == nil then&lt;br /&gt;
--		error(&amp;quot;Root is required&amp;quot;)&lt;br /&gt;
--	end&lt;br /&gt;
	&lt;br /&gt;
	local forms = {}&lt;br /&gt;
	local tail = {}&lt;br /&gt;
	local patterns = {}&lt;br /&gt;
	&lt;br /&gt;
--	root_str = string.gsub(root_str,&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
--	local root = m_cu.parse_root(root_str,true)&lt;br /&gt;
	&lt;br /&gt;
	tail =  mw.text.split(tail_str,&amp;quot;-&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if #tail == 1 then&lt;br /&gt;
		patterns = NOMOD_PATTERNS&lt;br /&gt;
	elseif #tail == 2 then&lt;br /&gt;
		patterns = ONEMOD_PATTERNS&lt;br /&gt;
	elseif #tail == 3 then&lt;br /&gt;
		patterns = TWOMOD_PATTERNS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(NOMOD_PATTERNS) do&lt;br /&gt;
		forms[k] = string.gsub(v,&amp;quot;C&amp;quot;,head)&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;V&amp;quot;,vowel)&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;1&amp;quot;,tail[1])&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;2&amp;quot;,tail[2])&lt;br /&gt;
		forms[k] = string.gsub(forms[k],&amp;quot;3&amp;quot;,tail[3])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	mw.logObject(forms)&lt;br /&gt;
	return forms&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=300</id>
		<title>Module:Test/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=300"/>
		<updated>2024-02-11T10:12:47Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
NOMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV1aash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV1aaha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV1iim&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV1aak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV1aabit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV1aabet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV11ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV11asha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV11imi&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV11aka&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV11abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV11abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uuyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uush&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uuha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uum&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uuk&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11uyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11ushu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11uha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11umu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11uku&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11ubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11ubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11uvu&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV1aasii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV1aasash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV1aas&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV1aasim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV1aasak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV1aasabit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV1aasabet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV11asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV11asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV11as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV11asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV11asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV11asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV11asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV11asa&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ONEMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1aa2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV1aa2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV1aa2aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV1aa2im&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV1aa2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV1aa2abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV1aa2abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a2a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV12a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV12ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV12asha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV12aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV12imi&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV12aka&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV12abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV12abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV12aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uu2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uu2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uu2aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uu2im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uu2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uu2abit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uu2abet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11uu2&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u2&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11u2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11u2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11u2ha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11u2im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11u2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11u2bit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11u2bet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11u2u&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV1aa2asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV1aa2asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV1aa2as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV1aa2asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV1aa2asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV1aa2asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV1aa2asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1a2as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV12as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV12asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV12asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV12as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV12asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV12asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV12asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV12asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV12asa&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
TWOMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV12aa3ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV12aa3ash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV12aa3aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV12aa3im&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV12aa3ak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV12aa3abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV12aa3abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a2a3&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV12a3&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV12a3ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV12a3ash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV12a3ha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV12a3im&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV12a3ak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV12a3bit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV12a3bet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV12a3a&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uu2u3ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uu2u3ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uu2u3ha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uu2u3im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uu2u3ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uu2u3bit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uu2u3bet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11uu2u3&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u2u3&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11u23ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11u23ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11u23aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11u23im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11u23ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11u23ubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11u23ubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11u23u&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV12aa3asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV12aa3asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV12aa3as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV12aa3asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV12aa3asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV12aa3asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV12aa3asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1a2a3as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV12a3as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV12a3sii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV12a3sash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV12a3saha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV12a3sim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV12a3sak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV12a3sabit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV12a3sabat&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV12a3sa&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return NOMOD_PATTERNS, ONEMOD_PATTERNS, TWOMOD_PATTERNS&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=299</id>
		<title>Module:Test/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=299"/>
		<updated>2024-02-11T10:10:22Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
NOMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV1aash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV1aaha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV1iim&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV1aak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV1aabit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV1aabet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV11ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV11asha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV11imi&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV11aka&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV11abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV11abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uuyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uush&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uuha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uum&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uuk&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11uyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11ushu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11uha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11umu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11uku&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11ubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11ubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11uvu&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV1aasii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV1aasash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV1aas&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV1aasim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV1aasak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV1aasabit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV1aasabet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV11asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV11asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV11as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV11asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV11asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV11asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV11asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV11asa&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ONEMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1aa2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV1aa2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV1aa2aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV1aa2im&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV1aa2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV1aa2abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV1aa2abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a2a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV12a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV12ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV12asha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV12aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV12imi&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV12aka&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV12abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV12abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV12aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uu2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uu2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uu2aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uu2im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uu2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uu2abit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uu2abet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11uu2&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u2&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11u2ii&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11u2ash&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11u2ha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11u2im&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11u2ak&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11u2bit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11u2bet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11u2u&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV1aa2asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV1aa2asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV1aa2as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV1aa2asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV1aa2asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV1aa2asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV1aa2asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1a2as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV12as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV12asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV12asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV12as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV12asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV12asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV12asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV12asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV12asa&amp;quot;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=298</id>
		<title>Module:Test/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=298"/>
		<updated>2024-02-11T10:07:50Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
NOMOD_PATTERNS = {&lt;br /&gt;
[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2sg&amp;quot;] = &amp;quot;CV1aash&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.3sg&amp;quot;] = &amp;quot;CV1aaha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.1pl&amp;quot;] = &amp;quot;CV1iim&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.2/3pl&amp;quot;] = &amp;quot;CV1aak&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relsg&amp;quot;] = &amp;quot;CV1aabit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.relpl&amp;quot;] = &amp;quot;CV1aabet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.impf.inf&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.imp&amp;quot;] = &amp;quot;CV1a&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1sg&amp;quot;] = &amp;quot;CV11ii&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2sg&amp;quot;] = &amp;quot;CV11asha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.3sg&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.1pl&amp;quot;] = &amp;quot;CV11imi&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.2/3pl&amp;quot;] = &amp;quot;CV11aka&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relsg&amp;quot;] = &amp;quot;CV11abit&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.relpl&amp;quot;] = &amp;quot;CV11abet&amp;quot;,&lt;br /&gt;
[&amp;quot;std.perf.inf&amp;quot;] = &amp;quot;CV11aha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1sg&amp;quot;] = &amp;quot;CV11uuyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2sg&amp;quot;] = &amp;quot;CV11uush&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.3sg&amp;quot;] = &amp;quot;CV11uuha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.1pl&amp;quot;] = &amp;quot;CV11uum&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.2/3pl&amp;quot;] = &amp;quot;CV11uuk&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relsg&amp;quot;] = &amp;quot;CV11uubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.relpl&amp;quot;] = &amp;quot;CV11uubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.impf.inf&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.imp&amp;quot;] = &amp;quot;CV11u&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1sg&amp;quot;] = &amp;quot;CV11uyi&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2sg&amp;quot;] = &amp;quot;CV11ushu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.3sg&amp;quot;] = &amp;quot;CV11uha&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.1pl&amp;quot;] = &amp;quot;CV11umu&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.2/3pl&amp;quot;] = &amp;quot;CV11uku&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relsg&amp;quot;] = &amp;quot;CV11ubit&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.relpl&amp;quot;] = &amp;quot;CV11ubet&amp;quot;,&lt;br /&gt;
[&amp;quot;caus.perf.inf&amp;quot;] = &amp;quot;CV11uvu&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1sg&amp;quot;] = &amp;quot;CV1aasii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2sg&amp;quot;] = &amp;quot;CV1aasash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.3sg&amp;quot;] = &amp;quot;CV1aas&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.1pl&amp;quot;] = &amp;quot;CV1aasim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.2/3pl&amp;quot;] = &amp;quot;CV1aasak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relsg&amp;quot;] = &amp;quot;CV1aasabit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.relpl&amp;quot;] = &amp;quot;CV1aasabet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.impf.inf&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.imp&amp;quot;] = &amp;quot;CV1as&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1sg&amp;quot;] = &amp;quot;CV11asii&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2sg&amp;quot;] = &amp;quot;CV11asash&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.3sg&amp;quot;] = &amp;quot;CV11as&#039;ha&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.1pl&amp;quot;] = &amp;quot;CV11asim&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.2/3pl&amp;quot;] = &amp;quot;CV11asak&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relsg&amp;quot;] = &amp;quot;CV11asbit&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.relpl&amp;quot;] = &amp;quot;CV11asbet&amp;quot;,&lt;br /&gt;
[&amp;quot;pass.perf.inf&amp;quot;] = &amp;quot;CV11asa&amp;quot;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=297</id>
		<title>Module:Test/data</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Module:Test/data&amp;diff=297"/>
		<updated>2024-02-11T10:03:48Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot; NOMOD_PATTERNS = { 	[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1ii&amp;quot; }&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
NOMOD_PATTERNS = {&lt;br /&gt;
	[&amp;quot;std.impf.1sg&amp;quot;] = &amp;quot;CV1ii&amp;quot;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Ilathid%27hi&amp;diff=296</id>
		<title>Ilathid&#039;hi</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Ilathid%27hi&amp;diff=296"/>
		<updated>2024-02-03T20:08:47Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Ilathid&#039;hi&#039;&#039;&#039;&#039;&#039; was created for &#039;&#039;Ages of Ilathid&#039;&#039;, a fan-produced game based in the Myst franchise of video games. The language is the language of the people of the same name (which translates into &amp;quot;children of Ilathid&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ilathid&#039;hi is intended to have vague hints of the D&#039;ni language from Myst series, so it has the same characteristic use of the apostrophe. Some of the grammar is inspired by D&#039;ni as well. D&#039;ni writing conventions require that punctuation be marked at the beginning &lt;br /&gt;
&lt;br /&gt;
Ilathid&#039;hi is one of my earliest conlangs, and thus is the result of a lower level of linguistic savvy and less sophisticated sensibilities in terms of conlanging. A number of the names (like the name of the language) were created by those behind the project, so they were not created with linguistic insight. Neither was the language made with an eye towards naturalism. Keep that in mind as you explore what is here.&lt;br /&gt;
&lt;br /&gt;
For this project, I created a rudimentary grammar, and some lexicon. The orthography was created by someone else, but I created a font for it.&lt;br /&gt;
&lt;br /&gt;
* [[/Phonology/]]&lt;br /&gt;
* [[/Grammar/]]&lt;br /&gt;
* [[/WordList/]]&lt;br /&gt;
&lt;br /&gt;
Corpus:&lt;br /&gt;
* [[/Tower Journal/]] (also [[:File:Ilathidhi towerjournal.png|in Ilathid&#039;hi ortography]])&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Genesis&amp;diff=295</id>
		<title>Scribbles:Genesis</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Genesis&amp;diff=295"/>
		<updated>2024-02-03T18:58:49Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;The Makers were Three, but they were of one heart. Each looked upon the other and knew love. They sang, and they danced, and they laid beside one another. And they knew total peace, for there was nothing in the cosmos but the three Makers, and their shared heart.  They looked upon one another, and each knew that they wanted to delight one another. And so, they each stepped away into their minds, and brought forth the first new things into creation. They presented them as...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Makers were Three, but they were of one heart. Each looked upon the other and knew love. They sang, and they danced, and they laid beside one another. And they knew total peace, for there was nothing in the cosmos but the three Makers, and their shared heart.&lt;br /&gt;
&lt;br /&gt;
They looked upon one another, and each knew that they wanted to delight one another. And so, they each stepped away into their minds, and brought forth the first new things into creation. They presented them as gifts to one another, as testaments of their shared love.&lt;br /&gt;
&lt;br /&gt;
For the Second, the First created Day, which was like the warmth of their embrace and breath. For Third, the First created Night, which felt like the coolness of the Third&#039;s soft skin, in which rest and succor were found.&lt;br /&gt;
&lt;br /&gt;
For the First, the Second created the Air, which moved like the breeze of the First&#039;s mind across the skin of their beloved. For the Third, the Second created the Ground, solid and firm like the Third standing beside them.&lt;br /&gt;
&lt;br /&gt;
And the Third, they created Movement in all its variety and possibilities for the Second, to match the many ways that the Second was a delight. For the First, they created Stillness, for the clarity that was the First&#039;s presence.&lt;br /&gt;
&lt;br /&gt;
And the Three were content, for they had given forms to their shared heart, and had made it myriad. They doted upon their gifts. They combined their gifts individually, and eventually they began to mix their gifts with those of the others. They planned and designed. They explored and discovered. And thus did they create the never-ending diversity of the cosmos, both things subtle and things manifest.&lt;br /&gt;
&lt;br /&gt;
However, they did not realize that in creating the Numberless that filled the void, that they had created that which was not as well. In their innocence, they had created that which is not love, that which is not joy, that which is not creation.&lt;br /&gt;
&lt;br /&gt;
They came together and said to one another: &amp;quot;We have made mistakes, and it is our duty to fix them.&amp;quot; And so they reached into their gifts and pulled forth the ruin therein. From Night, Terror was pulled. From Day, the Burning Pain. From the Air was drawn Vanity, and from the Ground, Apathy. From Movement was Confusion pulled, and from Stillness, Despair. And the Three cast these into the void, to not be seen again. And then they settled into each other&#039;s arms in contentment.&lt;br /&gt;
&lt;br /&gt;
But they still did not understand the work of their hands, for once a void is created, it cannot be uncreated. And that which was not called forth to the exiled, collected them together and gave them names, and their union was called Scourge. And in turn, they named the voice Vile.&lt;br /&gt;
&lt;br /&gt;
Thus, armed with the power of names and the unrelenting nature of the void, did Scourge and Vile seep into the cracks of the cosmos, and begin to change the Numberless and infect it with dark reflections.&lt;br /&gt;
&lt;br /&gt;
The Three discovered the sickness in their midst and were wroth. They gathered their anger into their hands and thus formed Rage, that which rends asunder. And they struck at Scourge and Vile. Their fury forced open the cracks in the cosmos. Scourge howled and cursed. Vile taunted and mocked. And the Three struck again, plunging Rage into the very seams of the universe.&lt;br /&gt;
&lt;br /&gt;
And the cosmos was rent asunder. It shattered and it tore. The Numberless tumbled into the now numberless shreds of the universe, scattered across the endless devastation.&lt;br /&gt;
&lt;br /&gt;
And the Three knew shame, for they had created Catastrophe.&lt;br /&gt;
&lt;br /&gt;
They said unto one another that just as they loved each other, so did they love the Numberless they created. But they now knew that the Numberless were fragile, and that their hands were powerful and could crush too easily. And they said, &amp;quot;We will step back from the Numberless, for if we do not, we will destroy them.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
But the Three loved the Numberless. They gave their gifts unto them, so that they may have the tools so that they could share in the delights that the Three had. They set Day and Night together, chasing one another, so that there would be Time, for growth and experience. They set the Ground down to stand upon and the Air on top of it for them to breathe, creating the Horizon to be yearned for, and the Sky to looked up into. They imbued the Numberless with Movement, giving them endless Actions and Potentials. They imbued the Numberless with Stillness, so that there would be Wisdom.&lt;br /&gt;
&lt;br /&gt;
They said unto the fractured lands and the Numberless that stood upon them. &amp;quot;We go now to contend with Scourge and Vile, that they will not surge into the cosmos and overwhelm you. And we give you our gifts, so that you may be shaped by your own hands.&amp;quot; And to each, they gave a kiss and said, &amp;quot;May you become greater than we.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And with that, the Three left the Numberless.&lt;br /&gt;
&lt;br /&gt;
In the Time afterward, the Numberless endured and built. They created and they destroyed. And they resisted and contended. They contended with the hands of the Vile and the Scourge that reached through the shielding arms of the Three. They contended with each other. And they contended with the things wrought by their own hands.&lt;br /&gt;
&lt;br /&gt;
And thus we contend to this day. We Numberless scattered across the Fractured Lands, these worlds of unending variety that float in the void. We fight, and we succeed. We fight, and we fail. And we continue with uncertainty, in the face of the Scourge and the Vile, and in the face of our own frailties.&lt;br /&gt;
&lt;br /&gt;
But know this. What came first was love. What came first was a shared heart. All else, even the Scourge and the Vile, are but pale shadows, simply chaff. We are bound together by our shared heart, across the Fractures and across the Void. The shared heart is the strongest force in the cosmos. And with it, we shall become greater than those who created us.&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Old_K%27veer_Home&amp;diff=294</id>
		<title>Scribbles:Old K&#039;veer Home</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Old_K%27veer_Home&amp;diff=294"/>
		<updated>2024-02-03T18:56:04Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;Old K’veer home (to the tune of Old Town Road, by Nas X with Billy Ray Cyrus)  Yeah, I&amp;#039;m gonna sit myself in my K&amp;#039;veer home I&amp;#039;m gonna write &amp;#039;til I can&amp;#039;t no more I&amp;#039;m gonna sit myself in my K&amp;#039;veer home I&amp;#039;m gonna write &amp;#039;til I can&amp;#039;t no more  Explorin&amp;#039; with some swag Got my gear all packed I don&amp;#039;t like to brag Got some flashlights in my bag Linkin&amp;#039; with book, ha You been ditched and left I been in the Zero You ain&amp;#039;t even past the Cleft, now  The ending has not been written...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Old K’veer home&lt;br /&gt;
(to the tune of Old Town Road, by Nas X with Billy Ray Cyrus)&lt;br /&gt;
&lt;br /&gt;
Yeah, I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
&lt;br /&gt;
Explorin&#039; with some swag&lt;br /&gt;
Got my gear all packed&lt;br /&gt;
I don&#039;t like to brag&lt;br /&gt;
Got some flashlights in my bag&lt;br /&gt;
Linkin&#039; with book, ha&lt;br /&gt;
You been ditched and left&lt;br /&gt;
I been in the Zero&lt;br /&gt;
You ain&#039;t even past the Cleft, now&lt;br /&gt;
&lt;br /&gt;
The ending has not been written&lt;br /&gt;
It has not been written&lt;br /&gt;
The ending has not been written&lt;br /&gt;
It has not been written&lt;br /&gt;
&lt;br /&gt;
Found her in a desert&lt;br /&gt;
Lookin&#039; for some answers&lt;br /&gt;
Got a quest from Yeesha&lt;br /&gt;
You can go an&#039; ask her&lt;br /&gt;
Fight the pride of D&#039;ni&lt;br /&gt;
Freein&#039; souls of the least&lt;br /&gt;
Followin&#039; a Journey&lt;br /&gt;
Relto on my booty&lt;br /&gt;
&lt;br /&gt;
The ending has not been written&lt;br /&gt;
It has not been written&lt;br /&gt;
The ending has not been written&lt;br /&gt;
It has not been written&lt;br /&gt;
&lt;br /&gt;
Yeah, I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
&lt;br /&gt;
Kirel, Bevin, Playin&#039; Jalak Dador&lt;br /&gt;
Yeesha keeps us off the evil Bahro radar&lt;br /&gt;
Spirals in Tsogal, fireflies in Eder Gira&lt;br /&gt;
Rollin&#039; through Direbo in my Deritheni armor&lt;br /&gt;
Got my KI, and a new dip pen&lt;br /&gt;
Explorers rock D&#039;ni &#039;til it breathes again&lt;br /&gt;
I have to roll on back to my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
&lt;br /&gt;
Yeah, I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;br /&gt;
I&#039;m gonna sit myself in my K&#039;veer home&lt;br /&gt;
I&#039;m gonna write &#039;til I can&#039;t no more&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:On_Cognate_Elements&amp;diff=293</id>
		<title>Scribbles:On Cognate Elements</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:On_Cognate_Elements&amp;diff=293"/>
		<updated>2024-02-03T18:54:59Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Created page with &amp;quot;Recent advances in both general thaumology and elemental studies have revealed unexpected nuances to the nature of elemental reality in the form of what have come to be known as cognate elements. While these cognate elements are associated with the traditional Aristotelian elements (i.e. the canonical elements of earth, air, fire, and water), experiments have shown that they exhibit characteristics normally associated with the &amp;#039;quintessential&amp;#039; elements. This makes them f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Recent advances in both general thaumology and elemental studies have revealed unexpected nuances to the nature of elemental reality in the form of what have come to be known as cognate elements. While these cognate elements are associated with the traditional Aristotelian elements (i.e. the canonical elements of earth, air, fire, and water), experiments have shown that they exhibit characteristics normally associated with the &#039;quintessential&#039; elements. This makes them fundamentally different from derivative elements such as para- and quasi-elemental materials.&lt;br /&gt;
&lt;br /&gt;
Current theory on elemental nature provides two key tests to confirm the elemental nature of a material: the indivisibility of a &#039;pure&#039; example, and the evocation of elementals.&lt;br /&gt;
&lt;br /&gt;
A true element is indivisible in its fundamental manifestation, that is, it cannot be reduced and separated into constituent elements. Alchemical processes of separation fail to have any effect on true elements (Descartes 1649). Additionally, quintessential samples of a true element are completely resistant to thaumaturgical separation spells, such as Distill Substance and Sunder Amalgam (Gundersen 1923, Nyugen 1985). This first criteria is what delineates para- and quasi-elements from true elements, as they can be easily rendered down to their constituents.&lt;br /&gt;
&lt;br /&gt;
The ability to evoke an elemental creature is another of the metaphysical aspects of an element. Many different forms of elemental have been recorded, but all exhibit rudimentary levels of sapience and/or sentience and zoological characteristics. However, scrying experiments have determined that elementals do not have the ephemeral aspects associated with animals such as spirit or totemic associations (Galaviz 2001). Rather, they are composed only of the element itself; their animal characteristics are the function of some expression of the element which is not currently understood. (Note that &#039;Greater Elementals&#039; such as djinn do exhibit spiritual aspects - as would be expected in regards to fully sapient and sentient entities such as they are. Daher 2009)&lt;br /&gt;
&lt;br /&gt;
The basics of elemental evocation rites have been well-established since the time of Solomon. The use of these standardized formulae to evoke an elemental of a particular composition is considered adequate proof of an elemental source, or sources in the case of para- and quasi-elementals (Jalal et.al. 2005).&lt;br /&gt;
&lt;br /&gt;
In 2019, experiments at the School of Thaumics at M.I.T. have produced the aforementioned cognate elements from a number of modern objects through the use of advanced alchemical processes. The resulting materials showed detectable resonance with one (but not more than one) of the canonical elements. Specifically, cognates of earth as well as cognates of fire. However, banishing spells for that canonical element were unsuccessful at first, requiring an increase of mana infusion by an order of magnitude in order to banish the material as expected. However, modified elemental banishment spells tuned to the unique harmonies of the cognate substance required the standard levels of mana to succeed. The researchers concluded that these substances were related to the canonical element, but were not a simple expression of it - hence the term &#039;cognate element&#039;. These experiments have been reproduced by the Fangshi Institute earlier this year.&lt;br /&gt;
&lt;br /&gt;
Further exploration of these elements at M.I.T (in conjunction with Carnegie Mellon University) found them as resistant to separation processes as canonical elements, even at high levels of mana infusion. (Testing included up to multiple orders of magnitude of mana. More energetic testing was deemed too dangerous, though computer modeling done by researchers at Leibniz University Hannover suggest higher levels would also have been unsuccessful.) The conclusion was that cognate elements were indivisible as canonical elements are.&lt;br /&gt;
&lt;br /&gt;
Finally, thaumaturges at the University of KwaZulu Natal&#039;s College of Parapsychology have been able to adapt Solomonic formulae to manifest elementals of cognate elements. Kirlian photography confirmed no spiritual aspects to the manifestations, suggesting that they were, in fact, true elementals and thus confirming cognate elements as true elements.&lt;br /&gt;
&lt;br /&gt;
What has been even more potentially groundbreaking is their experiments in gathering and distilling more cognate elements of a more intangible nature, such as from sound energy, EM radiation, and even psionic resonances. While these experiments have yet to be reproduced, the researchers&#039; papers on the subject have been well-received in several peer-reviewed journals. As all of these elements have been gathered from cities and seem to be attached to human activity, they have been named the &#039;urban&#039; elements. Debate on whether this connection to civilization is a necessary attribute of cognate elements is underway.&lt;br /&gt;
&lt;br /&gt;
Up to this point, a total of 13 cognate elements have been identified, though two are controversial by other researchers.&lt;br /&gt;
&lt;br /&gt;
Earth:&lt;br /&gt;
* Metal&lt;br /&gt;
* Glass&lt;br /&gt;
* Plastic&lt;br /&gt;
* Concrete&lt;br /&gt;
&lt;br /&gt;
Water:&lt;br /&gt;
* Traffic&lt;br /&gt;
* Capital&lt;br /&gt;
* Sewage (controversial)&lt;br /&gt;
&lt;br /&gt;
Air:&lt;br /&gt;
* Noise&lt;br /&gt;
* Signal&lt;br /&gt;
* Illumination&lt;br /&gt;
&lt;br /&gt;
Fire:&lt;br /&gt;
* Electricity&lt;br /&gt;
* Fuel (originally Petrol)&lt;br /&gt;
* Outrage (controversial)&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Main_Page&amp;diff=292</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Main_Page&amp;diff=292"/>
		<updated>2024-01-17T19:56:15Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: /* Other Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki is a workspace and portfolio for Allocosm - the web space of Veronica Hamilton. You&#039;ll find many of my projects here, past and present. Some of the information here are just blurbs, while others go into various levels of detail. Some are Works In Progress™.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
==Conlang Projects==&lt;br /&gt;
* [[Arete glyphs]]&lt;br /&gt;
* [[Brooding]]&lt;br /&gt;
* [[Ilathid&#039;hi]]&lt;br /&gt;
* [[Tej]]&lt;br /&gt;
* [[Temetar]]&lt;br /&gt;
* [[Sinnish]]&lt;br /&gt;
* [[Unstränng]]&lt;br /&gt;
* [[NewLang]] (yet unnamed)&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==Writing Projects==&lt;br /&gt;
* [[Unwritten|Unwritten: Adventures Across the Ages of MYST and Beyond]]&lt;br /&gt;
* [[Scribbles:Main_page|Random scribbles and writings]]&lt;br /&gt;
* More to come!&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==Other Projects==&lt;br /&gt;
&#039;&#039;&#039;Other Wikis&#039;&#039;&#039;&lt;br /&gt;
* [https://wiki.languageinvention.com/ The Languages of David J. Peterson], wiki dev, Chakobsa curator, contributor for Trigedasleng&lt;br /&gt;
* Guild of Archivist&#039;s [https://archive.guildofarchivists.org/wiki/Dictionary:Main_Page D&#039;ni Dictionary]&lt;br /&gt;
* More to come!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Main_Page&amp;diff=291</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Main_Page&amp;diff=291"/>
		<updated>2024-01-17T19:35:28Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: /* Other Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki is a workspace and portfolio for Allocosm - the web space of Veronica Hamilton. You&#039;ll find many of my projects here, past and present. Some of the information here are just blurbs, while others go into various levels of detail. Some are Works In Progress™.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
==Conlang Projects==&lt;br /&gt;
* [[Arete glyphs]]&lt;br /&gt;
* [[Brooding]]&lt;br /&gt;
* [[Ilathid&#039;hi]]&lt;br /&gt;
* [[Tej]]&lt;br /&gt;
* [[Temetar]]&lt;br /&gt;
* [[Sinnish]]&lt;br /&gt;
* [[Unstränng]]&lt;br /&gt;
* [[NewLang]] (yet unnamed)&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==Writing Projects==&lt;br /&gt;
* [[Unwritten|Unwritten: Adventures Across the Ages of MYST and Beyond]]&lt;br /&gt;
* [[Scribbles:Main_page|Random scribbles and writings]]&lt;br /&gt;
* More to come!&lt;br /&gt;
| style=&amp;quot;width: 33%; vertical-align: top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==Other Projects==&lt;br /&gt;
&#039;&#039;&#039;Other Wikis&#039;&#039;&#039;&lt;br /&gt;
* [http://wiki.languageinvention.com/wiki The Languages of David J. Peterson], wiki dev, Chakobsa curator, contributor for Trigedasleng&lt;br /&gt;
* Guild of Archivist&#039;s [https://archive.guildofarchivists.org/wiki/Dictionary:Main_Page D&#039;ni Dictionary]&lt;br /&gt;
* More to come!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Meditations_Between_Student_and_Master&amp;diff=290</id>
		<title>Scribbles:Meditations Between Student and Master</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Meditations_Between_Student_and_Master&amp;diff=290"/>
		<updated>2023-01-24T05:05:43Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;poem&amp;gt;&lt;br /&gt;
The student approached the Master...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Does God speak to us?&amp;quot;&lt;br /&gt;
&amp;quot;Yes.&amp;quot;&lt;br /&gt;
&amp;quot;What does God tell us?&amp;quot;&lt;br /&gt;
&amp;quot;God says one thing to one person, and a different thing to another.&amp;quot;&lt;br /&gt;
&amp;quot;Which is right?&amp;quot;&lt;br /&gt;
&amp;quot;It is enough that God speaks.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;What is truth?&amp;quot;&lt;br /&gt;
&amp;quot;Truth is far less than one would expect.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;Master, is God a healer?&amp;quot;&lt;br /&gt;
&amp;quot;When we succor, God is a healer. When we build, God is a carpenter. When we strike, God is a warrior. When we oppress, God is a terrorist. Which God would you prefer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;Does God hate those who do not believe?&amp;quot;&lt;br /&gt;
&amp;quot;God&#039;s relationship with one is between they and they alone.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;Is there life after death, Master?&amp;quot;&lt;br /&gt;
&amp;quot;We cannot know until we are masters of life before death.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;Master, am I my brother&#039;s keeper?&amp;quot;&lt;br /&gt;
&amp;quot;We must keep our brethren. But we must not hoard them.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The Student approached the Master.&lt;br /&gt;
&amp;quot;Master, is there such a thing as a just war?&amp;quot;&lt;br /&gt;
&amp;quot;Yes&amp;quot;, the master said, &amp;quot;there is just war.&amp;quot;&lt;br /&gt;
&amp;quot;Is there such a thing as a righteous war?&amp;quot;&lt;br /&gt;
&amp;quot;No. There is no righteous war.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Does God hear my prayers?&amp;quot;&lt;br /&gt;
&amp;quot;Only when you understand your prayers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;quot;How do we plant the seeds of righteousness in others?&amp;quot;&lt;br /&gt;
&amp;quot;Seeds are planted in the ground. It is to others to gather their fruit.&amp;quot;&lt;br /&gt;
&amp;lt;/poem&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Ilathid%27hi/Grammar&amp;diff=289</id>
		<title>Ilathid&#039;hi/Grammar</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Ilathid%27hi/Grammar&amp;diff=289"/>
		<updated>2023-01-22T06:31:54Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Overall Word Order==&lt;br /&gt;
Simple word order is Verb Subject Object. However, if there is an auxiliary verb in use, the Auxiliary verb is at the beginning of the sentence, followed by the Subject, then the verb and object, in that order.&lt;br /&gt;
&lt;br /&gt;
==Verbs==&lt;br /&gt;
&lt;br /&gt;
===Simple verb conjugations===&lt;br /&gt;
Verbs take a suffix for simple tense conjugations. If the verb ends in a vowel, that vowel is replaced with the suffix vowel. &lt;br /&gt;
&lt;br /&gt;
====Simple tenses====&lt;br /&gt;
* present - root verb&lt;br /&gt;
* past - &#039;&#039;-or&#039;&#039;&lt;br /&gt;
* future - &#039;&#039;-og&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Complex tenses====&lt;br /&gt;
* gnomic - &#039;&#039;ee&#039;&#039;&lt;br /&gt;
* present progressive - &#039;&#039;odo&#039;&#039;&lt;br /&gt;
* present perfect - &#039;&#039;ele&#039;&#039;&lt;br /&gt;
* present perf. prog. - &#039;&#039;ede&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| present			&lt;br /&gt;
| &#039;&#039;b&#039;lah ehn&#039;&#039; 	&lt;br /&gt;
| I write (right now)&lt;br /&gt;
|-&lt;br /&gt;
| past 			&lt;br /&gt;
| &#039;&#039;b&#039;lor ehn&#039;&#039; 	&lt;br /&gt;
| I wrote&lt;br /&gt;
|-&lt;br /&gt;
| future 			&lt;br /&gt;
| &#039;&#039;b&#039;log ehn&#039;&#039; 	&lt;br /&gt;
| I will write&lt;br /&gt;
|-&lt;br /&gt;
| present progressive&lt;br /&gt;
| &#039;&#039;b&#039;lodo ehn&#039;&#039; &lt;br /&gt;
| I am writing&lt;br /&gt;
|-&lt;br /&gt;
| present perfect 	&lt;br /&gt;
| &#039;&#039;b&#039;lehleh ehn&#039;&#039; 	&lt;br /&gt;
| I have written&lt;br /&gt;
|-&lt;br /&gt;
| present perf. prog. 	&lt;br /&gt;
| &#039;&#039;b&#039;lehdeh ehn&#039;&#039; 	&lt;br /&gt;
| I have been writing&lt;br /&gt;
|-&lt;br /&gt;
| gnomic 			&lt;br /&gt;
| &#039;&#039;b&#039;lee ehn&#039;&#039; 	&lt;br /&gt;
| I write (in general)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Auxiliary verbs===&lt;br /&gt;
The auxiliary verb can serve a number of functions. In many cases, it provides an additional frame of reference, like have/had in English. In these cases, it uses a set of tensed forms to indicate the time of the reference point. When a present form is combined with one of these tensed auxiliaries changes it to a past form. For example, the past auxilary with the present progressive changes it to a past progressive.&lt;br /&gt;
&lt;br /&gt;
Additionally, if an auxiliary verb is already modified somehow, &#039;&#039;ko&#039;&#039; and &#039;&#039;bo&#039;&#039; are used as a separate auxiliary (see question words below for an example).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;ko&#039;&#039; - past&lt;br /&gt;
* &#039;&#039;bo&#039;&#039; - future&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ko ehn b&#039;lodo&#039;&#039; 	&lt;br /&gt;
| I was writing&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ko ehn b&#039;lele&#039;&#039; 	&lt;br /&gt;
| I had written&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ko ehn b&#039;lede&#039;&#039; 	&lt;br /&gt;
| I had been writing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Questions Auxiliaries===&lt;br /&gt;
The Auxiliary verb can also be used for a few different functions. There is a question auxiliary verb, which has a few tensed forms. &lt;br /&gt;
&lt;br /&gt;
These are used like the regular tensed auxilaries, except there is an present form.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;quee&#039;&#039; - present interrogative&lt;br /&gt;
* &#039;&#039;koquee&#039;&#039; - past interrogative&lt;br /&gt;
* &#039;&#039;boquee&#039;&#039; - future interrogative&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;.b&#039;lah ehn&#039;&#039; 		&lt;br /&gt;
| I write.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?quee ehn b&#039;lah&#039;&#039; 	&lt;br /&gt;
| Do I write?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?quee ehn b&#039;lodo&#039;&#039;	&lt;br /&gt;
| Am I writing?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?koquee ehn b&#039;lah&#039;&#039; 	&lt;br /&gt;
| Did I write?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?boquee ehn b&#039;lah&#039;&#039; 	&lt;br /&gt;
| Will I write?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?boquee ehn b&#039;lehleh&#039;&#039; 	&lt;br /&gt;
| Will I have written?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that to say &amp;quot;Did I write?&amp;quot; you say &#039;&#039;?koquee ehn b&#039;lah&#039;&#039; and not &#039;&#039;?quee ehm b&#039;lor&#039;&#039;. For simple tenses, you tense the question auxiliary.&lt;br /&gt;
&lt;br /&gt;
Question words can also be as auxiliary verbs, though how they are used depends on the question word being used.&lt;br /&gt;
&lt;br /&gt;
* who = &#039;&#039;pahg&#039;&#039;&lt;br /&gt;
* what = &#039;&#039;pug&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Who and what are used like a noun when used as a subject:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?b&#039;lah pahg&#039;&#039;		&lt;br /&gt;
| Who writes?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;?kaplo pug&#039;&#039;		&lt;br /&gt;
| What invades?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
However, they become an auxiliary when referring to an object:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?pahg ehn kaplo&#039;&#039;		&lt;br /&gt;
| Who do I invade?&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?pug ehn b&#039;lah&#039;&#039;		&lt;br /&gt;
| What do I write?		&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* when = &#039;&#039;pog&#039;&#039;&lt;br /&gt;
* where = &#039;&#039;peeg&#039;&#039;&lt;br /&gt;
* why = &#039;&#039;peig&#039;&#039;&lt;br /&gt;
* how = &#039;&#039;p&#039;gi&#039;&#039;&lt;br /&gt;
* how many/much = &#039;&#039;ipahg&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
These are always auxiliary verbs, as there always is another subject.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?ipahg calei kahr&#039;&#039;	&lt;br /&gt;
| How many trees are there?&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?peig enei kahree&#039;&#039;	&lt;br /&gt;
| Why do we exist? &amp;lt;br/&amp;gt;(note the aorist tense on the verb - this is a general question)&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?peeg ehn kahr&#039;&#039;		&lt;br /&gt;
| Where am I?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Question words can also take the &#039;ko&#039; and &#039;bo&#039; tense prefixes like &#039;&#039;quee&#039;&#039; can to give a reference point.&lt;br /&gt;
Examples:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?pog ehn b&#039;lah&#039;&#039;		&lt;br /&gt;
| When do I write?&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?bopog ehn b&#039;lah&#039;&#039;	&lt;br /&gt;
| When will I write?&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?kopog ehn b&#039;lodo&#039;&#039;	&lt;br /&gt;
| When was I writing?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, they can take prefixes to indicate oblique references:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?hugpahg eem kahr&#039;&#039;	&lt;br /&gt;
| With whom are you?/Who are you with?&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?quotpeeg emei kaplo&#039;&#039;	&lt;br /&gt;
| From where do they invade?&lt;br /&gt;
|}&lt;br /&gt;
For the more complex constructions, the auxiliaries can get involved, as &#039;&#039;ko&#039;&#039; and &#039;&#039;bo&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?ko quotpeeg emei kaplo&#039;&#039;		&lt;br /&gt;
| From where did they invade? &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?bo hugpahg eem kahrehleh&#039;&#039;	&lt;br /&gt;
| With whom will you have been?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Command Auxiliaries===&lt;br /&gt;
&lt;br /&gt;
Also, an auxiliary verb &#039;&#039;ah&#039;&#039; can be used to make an imperative. You can leave out the subject for a generic &#039;you&#039; of indeterminate number. Or you can add it for emphasis. Generally you use the present tense for this, but you can use other simple tenses to add some variation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;!ah b&#039;lah&#039;&#039; 	&lt;br /&gt;
| Write!&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;!ah b&#039;log&#039;&#039; 	&lt;br /&gt;
| Write (in the future)!&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;!ah b&#039;lodo&#039;&#039; 	&lt;br /&gt;
| Be writing!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Negating Verbs===&lt;br /&gt;
To negate a verb, add the &#039;&#039;v&#039;le-&#039;&#039; prefix to it. Even if there is an auxiliary verb, the negating prefix goes on the main noun.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;.v&#039;leb&#039;lor ehn&#039;&#039;		&lt;br /&gt;
| I did not write.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;!ah v&#039;leblah&#039;&#039;		&lt;br /&gt;
| Do not write!&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;?koquee v&#039;leblah&#039;&#039; 	&lt;br /&gt;
| Did I not write?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Nouns==&lt;br /&gt;
Nouns change only in reference to number. There are three numbers: singular, plural and dual. Dual is a special number, referring to a pair of things treated as a whole or with a close relationship, like a pair of socks, or a couple of lovers.&lt;br /&gt;
&lt;br /&gt;
If the nouns ends in a consonant, we simply add a suffix to indicate number. If it ends in a vowel, the final vowel is removed an the ending is added.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;cal&#039;&#039; - tree&lt;br /&gt;
* &#039;&#039;calei&#039;&#039; - trees&lt;br /&gt;
* &#039;&#039;calan&#039;&#039; - pair of trees&lt;br /&gt;
&lt;br /&gt;
===Specifiers===&lt;br /&gt;
&lt;br /&gt;
Specifiers are special words that specify the nature of the noun. They appear before the noun they modify. These include articles, demonstratives, quantifiers and numbers.&lt;br /&gt;
&lt;br /&gt;
There is only one article. There is no indefinite article (no &#039;a&#039; or &#039;an&#039;)&lt;br /&gt;
* &#039;&#039;hu&#039;&#039; = the&lt;br /&gt;
&lt;br /&gt;
Demonstratives must agree with the noun they modify (this could also be used as pronouns themselves):&lt;br /&gt;
* &#039;&#039;hee&#039;&#039; = this&lt;br /&gt;
* &#039;&#039;hei&#039;&#039; = these&lt;br /&gt;
* &#039;&#039;han&#039;&#039; = this pair&lt;br /&gt;
* &#039;&#039;heeb&#039;&#039; = that&lt;br /&gt;
* &#039;&#039;heebei&#039;&#039; = those&lt;br /&gt;
* &#039;&#039;heeban&#039;&#039; = that pair&lt;br /&gt;
&lt;br /&gt;
Quantifiers indicate a number of some sort or portion of a whole. (Ex. &#039;&#039;gox&#039;&#039; = all) &lt;br /&gt;
&lt;br /&gt;
You can stack many specifiers together as well to say things like &#039;all of these five trees&#039;. The order is article/demonstrative quantifier then number:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;hei gox kli calei&#039;&#039; 	&lt;br /&gt;
| (lit. these all five trees)&lt;br /&gt;
|}&lt;br /&gt;
Note that you cannot have an article and a demonstrative modify the same noun.&lt;br /&gt;
&lt;br /&gt;
===Possession===&lt;br /&gt;
Possession can be shown buy adding making a &#039;possessive adjective&#039; out of a noun by adding the &#039;&#039;d&#039; &#039;&#039; prefix. Like all adjectives, it follows the noun it modifies. However, it does not change to agree with the number of the noun.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;sevei d&#039;ilathid&#039;&#039;		&lt;br /&gt;
| the ages of the world, the world&#039;s ages&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;cal d&#039;Klahs&#039;tre&#039;&#039;		&lt;br /&gt;
| Klahs&#039;tre&#039;s tree&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Possessive pronouns are added as suffixes to the noun.&lt;br /&gt;
* my = &#039;&#039; &#039;ent&#039;&#039;&lt;br /&gt;
* our = &#039;&#039; &#039;eneit&#039;&#039;&lt;br /&gt;
* your = &#039;&#039; &#039;eemt&#039;&#039;&lt;br /&gt;
* you all&#039;s = &#039;&#039; &#039;eemeit&#039;&#039;&lt;br /&gt;
* his/hers/its = &#039;&#039; &#039;emt&#039;&#039;&lt;br /&gt;
* their = &#039;&#039; &#039;emeit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;cal&#039;ent&#039;&#039; 	&lt;br /&gt;
| my tree&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;calei&#039;ent&#039;&#039;	&lt;br /&gt;
| my trees&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;unaht&#039;eneit&#039;&#039;	&lt;br /&gt;
| our war&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Pronouns==&lt;br /&gt;
&lt;br /&gt;
Here are the pronouns. Note that as an object, they have the same form as a subject:&lt;br /&gt;
* I = &#039;&#039;en&#039;&#039;&lt;br /&gt;
* he/she/it = &#039;&#039;em&#039;&#039;&lt;br /&gt;
* you = &#039;&#039;eem&#039;&#039; &lt;br /&gt;
* they = &#039;&#039;emei&#039;&#039;&lt;br /&gt;
* you all = &#039;&#039;eemei&#039;&#039;&lt;br /&gt;
* we = &#039;&#039;enei&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is also a set of &#039;generic&#039; pronouns.&lt;br /&gt;
* someone - &#039;&#039;umah&#039;&#039;&lt;br /&gt;
* something - &#039;&#039;unt&#039;&#039; &lt;br /&gt;
* someones - &#039;&#039;umei&#039;&#039;&lt;br /&gt;
* somethings - &#039;&#039;untei&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You use these generic pronouns to simulate the passive voice.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;kolupor umah hu huyuto.&#039;&#039;&lt;br /&gt;
| The harbor was destroyed &amp;lt;br /&amp;gt;(lit. Someone destroyed the harbor)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adjectives==&lt;br /&gt;
Adjectives appear directly after the nouns they modify. They need to agree with the noun they modify, thus taken the same ending.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cal geene&#039;&#039; 	&lt;br /&gt;
| tall tree&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;calei geenei&#039;&#039; 	&lt;br /&gt;
| tall trees&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;calan geenan&#039;&#039; 	&lt;br /&gt;
| pair of tall trees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Relative Clauses==&lt;br /&gt;
Relative clauses are embedded sentences that modify nouns. In English, these are signalled with &#039;that&#039; - i.e. The man that attacked me.&lt;br /&gt;
&lt;br /&gt;
Relative clauses come after the noun they modify, following any adjectives that modify that noun and begin with a relative pronoun. The relative pronoun has to agree in number with the noun it modifies, like adjectives do.&lt;br /&gt;
&lt;br /&gt;
If the subject of the embedded sentence is the noun being modfied, then the subject in the embedded sentence can be left out. If it is the object of the embedded sentence, a pronoun for the object need to be in the sentence.&lt;br /&gt;
&lt;br /&gt;
The rest of the sentence is constructed as per a normal sentence&lt;br /&gt;
&lt;br /&gt;
* singular - &#039;&#039;sah&#039;&#039;&lt;br /&gt;
* plural - &#039;&#039;sei&#039;&#039;&lt;br /&gt;
* dual - &#039;&#039;san&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;hu tahm sah onehg&#039;&#039;		&lt;br /&gt;
| the place that suffers&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;hu tahmei sei kaplo em emei&#039;&#039;	&lt;br /&gt;
| the places that he invades &amp;lt;br /&amp;gt;(lit. the places that he invades them)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Prepositions can be added to the relative pronoun to indicate that the noun modified is an oblique object. For example:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;hu tahm quasah kahr em&#039;&#039;		&lt;br /&gt;
| the place in which he is&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Unfinished Notes==&lt;br /&gt;
Do to:&lt;br /&gt;
* adverbs, adverbial phrases&lt;br /&gt;
* affixes (derivational, convertors)&lt;br /&gt;
* conjunctions&lt;br /&gt;
* reflexives&lt;br /&gt;
* comparatives and superlatives&lt;br /&gt;
* numbers&lt;br /&gt;
* existance marker?&lt;br /&gt;
* modals?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verb suffixes===&lt;br /&gt;
* &#039;&#039;-ahneh&#039;&#039; = verb to noun&lt;br /&gt;
* &#039;&#039;-ovahn&#039;&#039; = verb to actor&lt;br /&gt;
* &#039;&#039;-opah&#039;&#039; = verb to active adjective (-ing)&lt;br /&gt;
* &#039;&#039;-okhah&#039;&#039; = verb to passive adjective (-ed)&lt;br /&gt;
&lt;br /&gt;
===Noun Suffixes===&lt;br /&gt;
* &#039;&#039;-onah&#039;&#039; = to change a noun to an adjective&lt;br /&gt;
&lt;br /&gt;
===Prepositions===&lt;br /&gt;
* &#039;&#039;wi-&#039;&#039; = to/at when indicating a noun (I&#039;m going to the store, I&#039;m looking at you)&lt;br /&gt;
* &#039;&#039;yah-&#039;&#039; = in order to&lt;br /&gt;
* &#039;&#039;qua-&#039;&#039; = in location (we are in the house, I live in California), also from (suffered from the war, got sick from eating too many cookies)&lt;br /&gt;
* &#039;&#039;hug-&#039;&#039; = with&lt;br /&gt;
* &#039;&#039;kom-&#039;&#039; = and&lt;br /&gt;
* &#039;&#039;quot-&#039;&#039; = from (location)&lt;br /&gt;
* &#039;&#039;hiwi-&#039;&#039; - among, amongst&lt;br /&gt;
* &#039;&#039;dhee-&#039;&#039; - for&lt;br /&gt;
&lt;br /&gt;
===Possession===&lt;br /&gt;
* &#039;&#039;d&#039;hi&#039;&#039; (suffix) = &amp;quot;children of&amp;quot; or &amp;quot;people of&amp;quot; meaning member of a group usually country/culture/or ethnicity (the people of D&#039;ni: &#039;&#039;dunee&#039;hi&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Negative===&lt;br /&gt;
&#039;&#039;v&#039;leh&#039;&#039; - prefix goes before whatever it is modifying &lt;br /&gt;
&lt;br /&gt;
===Adverbs===&lt;br /&gt;
* &#039;&#039;-nu&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Desiderata&amp;diff=288</id>
		<title>Scribbles:Desiderata</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Desiderata&amp;diff=288"/>
		<updated>2023-01-22T06:00:17Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===A 21st Century Parent&#039;s Desiderata===&lt;br /&gt;
&lt;br /&gt;
Go placidly amid the hype and spam, and remember what peace is in the block and /ignore commands. As far as possible without surrender make only meaningful comments on blog and video postings.&lt;br /&gt;
&lt;br /&gt;
Speak your truth clearly, but check your privilege; and before you argue about what that means, listen to others and think on what they say. And then think on it a few more times. Do this before every time you hit send or submit or open your mouth.&lt;br /&gt;
&lt;br /&gt;
Avoid feeding the trolls, for they are vexations to the spirit. If you share a factoid or provocative article, read it first and check other references to make sure it is correct. Life, like Wikipedia, requires citations.&lt;br /&gt;
&lt;br /&gt;
Enjoy your unlocked achievements no matter where they occur; they can never be taken from you. Remember that your worth is not based off of those achievements. Nor is the worth of others. &lt;br /&gt;
&lt;br /&gt;
Trust not anything that can be loaded into Photoshop.&lt;br /&gt;
&lt;br /&gt;
Exercise caution in who you pwn; for the world is full of petty people with too much time on their hands. But let not the urge to pwn blind you to your potential to be awesome to others; make room in your life for small acts of heroism.&lt;br /&gt;
&lt;br /&gt;
Be yourself, but remember that everything you do may be posted on YouTube. Learn when best to not let that stop you, when to choose prudence versus living without shame. And remember to check your privacy settings on a regular basis.&lt;br /&gt;
&lt;br /&gt;
Take kindly the counsel of the years, for when you combine that with your own creativity in equal measure, your kung fu will be strong. Respect your elders, when they deserve respect. Question authority, but do it intelligently. &lt;br /&gt;
&lt;br /&gt;
You are not your job. Do not suffer for it unduly; they don&#039;t pay you enough for that.&lt;br /&gt;
&lt;br /&gt;
Nurture a thick skin to deal with the opinionated, but do not succumb to the belief that people are bad. Most problems are born of pain, not malice. Compassion should be your well-worn tool.&lt;br /&gt;
&lt;br /&gt;
Be gentle with yourself. You are a child of the universe, no less than the trees and the stars. So is every other person you meet. Each and every one of us has a right to be here. Learn to share. And no matter what suffering and indignities you must endure, it will get better. Pain is not infinite, and you can survive to see better days. Don&#039;t give up.&lt;br /&gt;
 &lt;br /&gt;
Therefore, go into the world and be awesome. Accept that there will be mindless busy work, that there will be tragedy and there will be times when you fail. But get up and try again. With all its sham, drudgery, and broken dreams, it is still a beautiful world. And you are a part of it. Be excellent to one another. And party on, dude.﻿&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Sidewalk_Shaman&amp;diff=287</id>
		<title>Scribbles:Sidewalk Shaman</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Sidewalk_Shaman&amp;diff=287"/>
		<updated>2023-01-22T05:42:18Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Three AM is best, when the streets are as bare as they are going to be. After the drunks have gone home, before the earliest of early risers are getting ready for work. The streets are bare and silent under the streetlights. But you can feel it - the streets are still moving. &lt;br /&gt;
&lt;br /&gt;
The trails of countless metal beasts still linger in each lane. Juggernauts of motion, fueled by crucibles of fire and air in their bellies with one purpose: they exist to move. And after the exhaust has dissipated into the airand the minute droplets of oil have soaked into the road, their purpose, the destiny of motion, remains. It builds, layer on layer. Roads are rivers of intent. They are man-made ley lines. Ribbons of black and gray impulse with yellow lines down the middle that pulse like the veins and arteries of the living city. &lt;br /&gt;
&lt;br /&gt;
Most people just ride those waves, off to their day-to-day dramas. John Q Public unknowingly jumps onto those currents, gets washed away in them and feeds them, until the arrive at their destination. &#039;Driving&#039; is a bubble of metal and fiberglass on a deluge of energy that is neither here not there, but on the way. Commuting is Limbo with talk radio and cup holders.&lt;br /&gt;
&lt;br /&gt;
The sidewalk is the boundary between the road and the parcel. It is the threshold between the purgatory of motion and the churches, the businesses, the plazas and the fields in which living exists. The in-between of the in-between, it is the most liminal of all places in the modern age. For those who know the way, the sidewalk is the bridge between all worlds.&lt;br /&gt;
&lt;br /&gt;
I walk the sidewalks. I step from one street to the next. New York, Babylon, Agartha, Iram, Atlantis, Dylath-Leen - I&#039;ve been to them all. There is no road I cannot reach.&lt;br /&gt;
&lt;br /&gt;
The city is full of those that fall between the cracks. The homeless guy who everyone thinks is crazy because they can&#039;t see the spirits he is talking to. The ghosts of the jumpers who realized, the moment before they hit the ground, that they wanted to live. The troll villages living underneath the largest bridges. The chick who saw God at a rave, only to discover she&#039;d been claimed by one no one has ever heard of. The totems of Gridlock, of Hardcore, and of ROI that are trying to reach out to the people who feed their existence everyday. My job is to be there for them. These are my people.&lt;br /&gt;
&lt;br /&gt;
I am a brother in the Pact of Asphalt and Wire. I am a disciple of the mysteries of Rebar, Cell Phone, Traffic and Power Grid. I am a sidewalk shaman. My world exists next to your own. My job is to make sure we all stay good neighbors.&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Scribbles:Parable_of_the_Baroness&amp;diff=286</id>
		<title>Scribbles:Parable of the Baroness</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Scribbles:Parable_of_the_Baroness&amp;diff=286"/>
		<updated>2023-01-22T05:33:40Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The Parable of the Baroness of the Emerald Reign==&lt;br /&gt;
&lt;br /&gt;
The Emerald Reign covered the land like the drizzle of a gray day. The clouds were dark, as always, and the days were cold, as always. But hearths were warm and local trods were shielded both from cold winds and cold hearts. Thus was the legacy of the Baroness.&lt;br /&gt;
&lt;br /&gt;
But it was not always thus. She who would become the Baroness, a noble sidhe of house unknown, found a city of flotsam fates and driftwood dreams. The dreams of the elements themselves washed this way and that, roared in storm and blew away just as quickly. The spirits of the dead raged silently behind their hidden walls. Thunderbirds hatched and roared into the sky, leaving destruction in their wake. Faceless terrors stalked through alley and wharf.&lt;br /&gt;
&lt;br /&gt;
She beheld the sound and the fury, and she wept. She cried out to the winds, but they did not listen. She commanded the creatures in the sky to yield, but they paid no heed. She stamped on the graves of the fallen to force them to turn, but they cared not for the wrath of one of the quick.&lt;br /&gt;
&lt;br /&gt;
She fell to her knees in the mud, exhausted and defeated, and she knew she was bereft. In desperation, she drew up the mud around her and formed it into a mound. And on the mound she drew a face, so that she would not be alone. And she cried to it, &#039;The world here eats itself, and soon there will be nothing left. Why will no one listen to me?&#039;&lt;br /&gt;
&lt;br /&gt;
And the mound said to her &#039;Though you are of noble blood, you do not rule here. The dreams are not your subjects. The wind and storm and waters do not bend knee to you. If you wish to command them, you must prove right of sovereignty.&#039;&lt;br /&gt;
&lt;br /&gt;
But she was not a warrior. She had no army. She said to her friend &#039;I cannot conquer the horrors in the streets. I cannot force the wind and the storm and the waters to submit.&#039;&lt;br /&gt;
&lt;br /&gt;
And the mound replied, &#039;I am but a mound of wet earth, but I do know that a sovereign does not rule alone. The crown is only as strong as the swords and hammers that are sworn to it.&#039;&lt;br /&gt;
&lt;br /&gt;
She smiled and said, &#039;You are wise, my muddy friend. You speak with the heart of a troll.&#039; And with deft hands, she shaped the mound into a troll warrior. &#039;My hands are the hands of a sculptor,&#039; she said. &#039;My gift is to give form where none was before. I shall carve and cast this place into a court of glory and renown, and my chisels shall be oath and fealty.&#039; And her friend, now a troll, fell to one knee and swore his loyalty to her and her cause.&lt;br /&gt;
&lt;br /&gt;
And thus was her path cut through the wilderness. She treated with the elements, and they joined her court. She spoke to the faceless horrors, and carved them faces in exchange for their hearts. The savage beasts, the thunderbirds, manticores, and the leviathans - those she won with perseverance and respect, until they too chose to bow before her.&lt;br /&gt;
&lt;br /&gt;
With the land tamed, the kith came and found its undisputed liege, the Baroness, welcoming them to her realm. And in turn, they each bent their knee and swore loyalty to her and her crest upon which were etched the words &amp;quot;Fortitudo gladiis malleisque iuratis&amp;quot;, which means &#039;Strength from sworn swords and hammers&#039;.&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
	<entry>
		<id>http://www.allocosm.net/wiki/index.php?title=Test&amp;diff=285</id>
		<title>Test</title>
		<link rel="alternate" type="text/html" href="http://www.allocosm.net/wiki/index.php?title=Test&amp;diff=285"/>
		<updated>2022-10-25T02:42:51Z</updated>

		<summary type="html">&lt;p&gt;Vaxjedi: Replaced content with &amp;quot;{{#vardefine:fnord|dronf}} {{#var:fnord}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:fnord|dronf}}&lt;br /&gt;
{{#var:fnord}}&lt;/div&gt;</summary>
		<author><name>Vaxjedi</name></author>
	</entry>
</feed>