<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Amn-common</id>
	<title>Module:mn-common - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Amn-common"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:mn-common&amp;action=history"/>
	<updated>2026-04-07T23:35:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325057&amp;oldid=prev</id>
		<title>Sware at 17:03, 11 September 2023</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325057&amp;oldid=prev"/>
		<updated>2023-09-11T17:03:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:03, 11 September 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local gsub = mw.ustring.gsub&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local gsub = mw.ustring.gsub&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local lower = mw.ustring.lower&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local lower = mw.ustring.lower&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local reverse = require( &quot;Module:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;String&lt;/del&gt;&quot; ).reverse&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local reverse = require( &quot;Module:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;string&lt;/ins&gt;&quot; ).reverse&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;export.FVS1 = char( 0x180B )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;export.FVS1 = char( 0x180B )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325055&amp;oldid=prev</id>
		<title>Sware at 17:02, 11 September 2023</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325055&amp;oldid=prev"/>
		<updated>2023-09-11T17:02:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:02, 11 September 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local gsub = mw.ustring.gsub&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local gsub = mw.ustring.gsub&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local lower = mw.ustring.lower&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local lower = mw.ustring.lower&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local reverse = require( &quot;Module:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;string&lt;/del&gt;&quot; ).reverse&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local reverse = require( &quot;Module:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;String&lt;/ins&gt;&quot; ).reverse&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;export.FVS1 = char( 0x180B )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;export.FVS1 = char( 0x180B )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l270&quot;&gt;Line 270:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 270:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for i,s in ipairs( vh ) do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for i,s in ipairs( vh ) do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local orig = s.substring&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local orig = s.substring&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			s.substring = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;string.&lt;/del&gt;reverse( lower( s.substring ) )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			s.substring = reverse( lower( s.substring ) )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local vowel = match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local vowel = match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			location = (find( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; ))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			location = (find( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; ))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325054&amp;oldid=prev</id>
		<title>Sware at 17:01, 11 September 2023</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325054&amp;oldid=prev"/>
		<updated>2023-09-11T17:01:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:01, 11 September 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l270&quot;&gt;Line 270:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 270:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for i,s in ipairs( vh ) do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		for i,s in ipairs( vh ) do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local orig = s.substring&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local orig = s.substring&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			s.substring = reverse( lower( s.substring ) )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			s.substring = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;string.&lt;/ins&gt;reverse( lower( s.substring ) )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local vowel = match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			local vowel = match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			location = (find( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; ))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			location = (find( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; ))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325033&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {} local lang = require(&quot;Module:languages&quot;).getByCode( &quot;mn&quot; ) local links = require( &quot;Module:links&quot; ) table[&quot;reverse&quot;] = require( &quot;Module:table&quot; ).reverse table[&quot;removeDuplicates&quot;] = require( &quot;Module:table&quot; ).removeDuplicates  local char = mw.ustring.char local find = mw.ustring.find local len = mw.ustring.len local match = mw.ustring.match local gmatch = mw.ustring.gmatch local sub = mw.ustring.sub local gsub = mw.ustring.gsub local lower = mw.ustring.low...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:mn-common&amp;diff=325033&amp;oldid=prev"/>
		<updated>2023-09-11T16:30:33Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {} local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode( &amp;quot;mn&amp;quot; ) local links = require( &amp;quot;Module:links&amp;quot; ) table[&amp;quot;reverse&amp;quot;] = require( &amp;quot;Module:table&amp;quot; ).reverse table[&amp;quot;removeDuplicates&amp;quot;] = require( &amp;quot;Module:table&amp;quot; ).removeDuplicates  local char = mw.ustring.char local find = mw.ustring.find local len = mw.ustring.len local match = mw.ustring.match local gmatch = mw.ustring.gmatch local sub = mw.ustring.sub local gsub = mw.ustring.gsub local lower = mw.ustring.low...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
local lang = require(&amp;quot;Module:languages&amp;quot;).getByCode( &amp;quot;mn&amp;quot; )&lt;br /&gt;
local links = require( &amp;quot;Module:links&amp;quot; )&lt;br /&gt;
table[&amp;quot;reverse&amp;quot;] = require( &amp;quot;Module:table&amp;quot; ).reverse&lt;br /&gt;
table[&amp;quot;removeDuplicates&amp;quot;] = require( &amp;quot;Module:table&amp;quot; ).removeDuplicates&lt;br /&gt;
&lt;br /&gt;
local char = mw.ustring.char&lt;br /&gt;
local find = mw.ustring.find&lt;br /&gt;
local len = mw.ustring.len&lt;br /&gt;
local match = mw.ustring.match&lt;br /&gt;
local gmatch = mw.ustring.gmatch&lt;br /&gt;
local sub = mw.ustring.sub&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
local lower = mw.ustring.lower&lt;br /&gt;
local reverse = require( &amp;quot;Module:string&amp;quot; ).reverse&lt;br /&gt;
&lt;br /&gt;
export.FVS1 = char( 0x180B )&lt;br /&gt;
export.FVS2 = char( 0x180C )&lt;br /&gt;
export.FVS3 = char( 0x180D )&lt;br /&gt;
export.FVS4 = char( 0x180F )&lt;br /&gt;
export.MVS = char( 0x180E )&lt;br /&gt;
export.NNBSP = char( 0x202F )&lt;br /&gt;
export.stem_barrier = char( 0xF000 )&lt;br /&gt;
&lt;br /&gt;
local function format_Mongolian_text(text) return &amp;quot;&amp;lt;span class=\&amp;quot;Mong\&amp;quot; lang=\&amp;quot;mn\&amp;quot;&amp;gt;&amp;quot; .. text .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
function export.see(frame)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[1] = {},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(frame:getParent().args, params)&lt;br /&gt;
	local title = args[1]&lt;br /&gt;
	local curr_title = mw.title.getCurrentTitle().subpageText&lt;br /&gt;
	local content = mw.title.new(title):getContent()&lt;br /&gt;
	local senses = {}&lt;br /&gt;
	local sense_id = 0&lt;br /&gt;
	local j, pos, s, section&lt;br /&gt;
	&lt;br /&gt;
	if title == curr_title then&lt;br /&gt;
		return error(&amp;quot;The soft-directed item is the same as the page title.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if content then&lt;br /&gt;
		if not match(content, &amp;quot;==Mongolian==&amp;quot;) then&lt;br /&gt;
			categories = categories .. &amp;quot;[[Category:Mongolian redlinks/mn-see]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		_, j, language_name, s = content:find(&amp;quot;%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]&amp;quot;, pos)&lt;br /&gt;
		&lt;br /&gt;
		if j == nil then&lt;br /&gt;
			i, j, language_name, s = content:find(&amp;quot;%f[=]==%s*([^=]+)%s*==(\n.+)&amp;quot;, pos)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if j == nil then&lt;br /&gt;
			break&lt;br /&gt;
		else&lt;br /&gt;
			pos = j - 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if language_name == &amp;quot;Mongolian&amp;quot; then&lt;br /&gt;
			section = s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	if not section then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	section = section:gsub(&amp;quot;\n===+Etymology.-(\n==)&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local text = {}&lt;br /&gt;
	&lt;br /&gt;
	for sense in section:gmatch(&amp;quot;\n# ([^\n]+)&amp;quot;) do&lt;br /&gt;
		if not sense:match(&amp;quot;rfdef&amp;quot;) and not sense:match(&amp;quot;defn&amp;quot;) then&lt;br /&gt;
			sense_id = sense_id + 1&lt;br /&gt;
			table.insert(senses, sense)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(text, table.concat(senses, &amp;quot;\n# &amp;quot;))&lt;br /&gt;
	&lt;br /&gt;
	table.insert(text, &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	return frame:preprocess( table.concat(text) )&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.ipasee(frame)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[1] = {},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(frame:getParent().args, params)&lt;br /&gt;
	local title = args[1]&lt;br /&gt;
	local curr_title = mw.title.getCurrentTitle().subpageText&lt;br /&gt;
	local content = mw.title.new(title):getContent()&lt;br /&gt;
	local senses = {}&lt;br /&gt;
	local sense_id = 0&lt;br /&gt;
	local j, pos, s, section&lt;br /&gt;
	&lt;br /&gt;
	if title == curr_title then&lt;br /&gt;
		return error(&amp;quot;The soft-directed item is the same as the page title.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if content then&lt;br /&gt;
		if not match(content, &amp;quot;==Mongolian==&amp;quot;) then&lt;br /&gt;
			categories = categories .. &amp;quot;[[Category:Mongolian redlinks/mn-IPA-see]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		_, j, language_name, s = content:find(&amp;quot;%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]&amp;quot;, pos)&lt;br /&gt;
		&lt;br /&gt;
		if j == nil then&lt;br /&gt;
			i, j, language_name, s = content:find(&amp;quot;%f[=]==%s*([^=]+)%s*==(\n.+)&amp;quot;, pos)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if j == nil then&lt;br /&gt;
			break&lt;br /&gt;
		else&lt;br /&gt;
			pos = j - 1&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if language_name == &amp;quot;Mongolian&amp;quot; then&lt;br /&gt;
			section = s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	if not section then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	section = section:gsub(&amp;quot;\n===+Etymology.-(\n==)&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local text = {}&lt;br /&gt;
	&lt;br /&gt;
	if section:match(&amp;quot;{{mn-IPA%|([^\n]+)}}&amp;quot;) then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;mn-IPA&amp;quot;, args = { section:match(&amp;quot;{{mn-IPA%|([^\n]+)}}&amp;quot;) } }&lt;br /&gt;
	else&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;mn-IPA&amp;quot;, args = { title } }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Breaks down a string into vowel harmonic segments&lt;br /&gt;
function export.vowelharmony( text, params )&lt;br /&gt;
	&lt;br /&gt;
	if not params then params = {} end&lt;br /&gt;
	&lt;br /&gt;
	local vh = {}&lt;br /&gt;
	local breaks = { 1 }&lt;br /&gt;
	&lt;br /&gt;
	local switchers = { &amp;quot;ау&amp;quot;, &amp;quot;оу&amp;quot;, &amp;quot;уу&amp;quot;, &amp;quot;иу&amp;quot;, &amp;quot;яу&amp;quot;, &amp;quot;ёу&amp;quot;, &amp;quot;еу&amp;quot;, &amp;quot;юу&amp;quot;, &amp;quot;уй&amp;quot;, &amp;quot;эү&amp;quot;, &amp;quot;өү&amp;quot;, &amp;quot;үү&amp;quot;, &amp;quot;иү&amp;quot;, &amp;quot;еү&amp;quot;, &amp;quot;юү&amp;quot;, &amp;quot;үй&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;-&amp;quot; }&lt;br /&gt;
	local switchers2 = { &amp;quot;аа&amp;quot;, &amp;quot;оо&amp;quot;, &amp;quot;өө&amp;quot;, &amp;quot;ээ&amp;quot;, &amp;quot;яа&amp;quot;, &amp;quot;ёо&amp;quot;, &amp;quot;еө&amp;quot;, &amp;quot;еэ&amp;quot;, &amp;quot;Аа&amp;quot;, &amp;quot;Оо&amp;quot;, &amp;quot;Өө&amp;quot;, &amp;quot;Ээ&amp;quot;, &amp;quot;Яа&amp;quot;, &amp;quot;Ёо&amp;quot;, &amp;quot;Еө&amp;quot;, &amp;quot;Еэ&amp;quot; }&lt;br /&gt;
	&lt;br /&gt;
	for _, v in pairs( switchers ) do&lt;br /&gt;
		v = gsub( v, &amp;quot;(.)(.)&amp;quot;, &amp;quot;%1&amp;quot; .. char( 0x301 ) .. &amp;quot;?&amp;quot; .. char( 0x300 ) .. &amp;quot;?%2&amp;quot; )&lt;br /&gt;
		local c = 0&lt;br /&gt;
		while c ~= nil do&lt;br /&gt;
			c = find( lower( text ), v, c + 1 )&lt;br /&gt;
			if c ~= nil and c ~= 1 then&lt;br /&gt;
				table.insert( breaks, c )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if params.bor then&lt;br /&gt;
		for _,v in pairs( switchers2 ) do&lt;br /&gt;
			if match( text, v .. &amp;quot;$&amp;quot; ) then&lt;br /&gt;
				table.insert( breaks, len( text ) - 1 )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort( breaks )&lt;br /&gt;
	&lt;br /&gt;
	for i, b in ipairs( breaks ) do&lt;br /&gt;
		table.insert( vh, { Cyrl = {}, Mong = {} } )&lt;br /&gt;
		if i == #breaks then&lt;br /&gt;
			vh[i].substring = sub( text, b, len( text ) )&lt;br /&gt;
		else&lt;br /&gt;
			vh[i].substring = sub( text, b, breaks[i + 1] - 1 )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if params.bor then&lt;br /&gt;
		for i,s in ipairs( vh ) do&lt;br /&gt;
			vh[i] = { Cyrl = {}, Mong = {} }&lt;br /&gt;
			local orig_text = s.substring&lt;br /&gt;
			s.substring = lower( s.substring )&lt;br /&gt;
			if params.bor == &amp;quot;Russian&amp;quot; then s.substring = gsub( s.substring, &amp;quot;у&amp;quot;, &amp;quot;ү&amp;quot; ) end&lt;br /&gt;
			local substring_nostress = gsub( s.substring, &amp;quot;[&amp;quot; .. char( 0x301 ) .. char( 0x300 ) .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
			if match( s.substring, &amp;quot;кило&amp;quot; .. char( 0x301 ) .. &amp;quot;?$&amp;quot; ) then -- irregular&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].location = find( s.substring, &amp;quot;[эүею]&amp;quot; )&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( substring_nostress, &amp;quot;[аеёиоөуүэюя]у&amp;quot; ) or match( substring_nostress, &amp;quot;уй&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;а&amp;quot;&lt;br /&gt;
				vh[i].location = 1&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( substring_nostress, &amp;quot;[аеёиоөуүэюя]ү&amp;quot; ) or match( substring_nostress, &amp;quot;үй&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].location = 1&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( s.substring, &amp;quot;[ауяᠠᠣᠤ]&amp;quot; .. char( 0x301 ) ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;а&amp;quot;&lt;br /&gt;
				vh[i].location = find( s.substring, char( 0x301 ) ) - 1&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( s.substring, &amp;quot;[оё]&amp;quot; .. char( 0x301 ) ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;о&amp;quot;&lt;br /&gt;
				vh[i].location = find( s.substring, char( 0x301 ) ) - 1&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
			elseif ( match( substring_nostress, &amp;quot;[ауяоё]&amp;quot; ) and ( find( substring_nostress, &amp;quot;[ауяоё]&amp;quot; ) == find( substring_nostress, &amp;quot;[ауя]&amp;quot; ) ) ) or match( substring_nostress, &amp;quot;[ᠠᠣᠤ]&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;а&amp;quot;&lt;br /&gt;
				vh[i].location = find( substring_nostress, &amp;quot;[ауя]&amp;quot; )&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( substring_nostress, &amp;quot;[ауяоё]&amp;quot; ) and find( substring_nostress, &amp;quot;[ауяоё]&amp;quot; ) == find( substring_nostress, &amp;quot;[оё]&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;о&amp;quot;&lt;br /&gt;
				vh[i].location = find( substring_nostress, &amp;quot;[оё]&amp;quot; )&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
			elseif ( match( substring_nostress, &amp;quot;[эүеюө]&amp;quot; ) and find( substring_nostress, &amp;quot;[эүеюө]&amp;quot; ) == find( substring_nostress, &amp;quot;[эүею]&amp;quot; ) ) or match( substring_nostress, &amp;quot;[ᠡᠥᠦᠧ]&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].location = find( substring_nostress, &amp;quot;[эүею]&amp;quot; )&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			elseif match( substring_nostress, &amp;quot;[эүеюө]&amp;quot; ) and find( substring_nostress, &amp;quot;[эүеюө]&amp;quot; ) == find( substring_nostress, &amp;quot;ө&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;ө&amp;quot;&lt;br /&gt;
				vh[i].location = find( substring_nostress, &amp;quot;ө&amp;quot; )&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].location = find( substring_nostress, &amp;quot;и&amp;quot; ) or 1&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if match( vh[i].Cyrl.a, &amp;quot;[ао]&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.ii = &amp;quot;ы&amp;quot;&lt;br /&gt;
				vh[i].Cyrl.u = &amp;quot;у&amp;quot;&lt;br /&gt;
				vh[i].Mong.a = &amp;quot;ᠠ&amp;quot;&lt;br /&gt;
				vh[i].Mong.u = &amp;quot;ᠤ&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				vh[i].Cyrl.ii = &amp;quot;ий&amp;quot;&lt;br /&gt;
				vh[i].Cyrl.u = &amp;quot;ү&amp;quot;&lt;br /&gt;
				vh[i].Mong.a = &amp;quot;ᠡ&amp;quot;&lt;br /&gt;
				vh[i].Mong.u = &amp;quot;ᠦ&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if match( vh[i].Cyrl.a, &amp;quot;ө&amp;quot; ) then -- ө takes the diphthong эй not өй&lt;br /&gt;
				vh[i].Cyrl.ai = &amp;quot;эй&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				vh[i].Cyrl.ai = vh[i].Cyrl.a .. &amp;quot;й&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a&lt;br /&gt;
			vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u&lt;br /&gt;
			vh[i].substring = orig_text&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local location&lt;br /&gt;
		local pattern&lt;br /&gt;
		for i,s in ipairs( vh ) do&lt;br /&gt;
			local orig = s.substring&lt;br /&gt;
			s.substring = reverse( lower( s.substring ) )&lt;br /&gt;
			local vowel = match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; )&lt;br /&gt;
			location = (find( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot; ))&lt;br /&gt;
			if vh[i].Cyrl.a == nil then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
				pattern = &amp;quot;и&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			vh[i].Cyrl.a = lower( vh[i].Cyrl.a )&lt;br /&gt;
			if vowel == &amp;quot;а&amp;quot; or vowel == &amp;quot;у&amp;quot; or vowel == &amp;quot;я&amp;quot; then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;а&amp;quot;&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
				pattern = &amp;quot;[ауюя]&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;[еёоөүэ]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
			elseif vowel == &amp;quot;о&amp;quot; or vowel == &amp;quot;ё&amp;quot; then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;о&amp;quot;&lt;br /&gt;
				vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
				pattern = &amp;quot;[ёо]&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;[аеөуүэюя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
			elseif vowel == &amp;quot;э&amp;quot; then&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				if location and sub( s.substring, location-1, location-1 ) == &amp;quot;й&amp;quot; and match( s.substring, &amp;quot;[аеёоөуүэюя]&amp;quot;, location+1 ) == &amp;quot;ө&amp;quot; then&lt;br /&gt;
						vh[i].Cyrl.a = &amp;quot;ө&amp;quot;&lt;br /&gt;
						vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
						pattern = &amp;quot;[еө]&amp;quot;&lt;br /&gt;
						if match( s.substring, &amp;quot;[аёоуүэюя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				else&lt;br /&gt;
					vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
					vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
					pattern = &amp;quot;[еүэю]&amp;quot;&lt;br /&gt;
					if match( s.substring, &amp;quot;[аёоөуя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				end&lt;br /&gt;
			elseif vowel == &amp;quot;ү&amp;quot; then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
				pattern = &amp;quot;[еүэю]&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;[аёоөуя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
			elseif vowel == &amp;quot;ө&amp;quot; then&lt;br /&gt;
				vh[i].Cyrl.a = &amp;quot;ө&amp;quot;&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
				pattern = &amp;quot;[еө]&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;[аёоуүэюя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
			elseif vowel == &amp;quot;е&amp;quot; then&lt;br /&gt;
				vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;ө&amp;quot;, location+1 ) then&lt;br /&gt;
					vh[i].Cyrl.a = &amp;quot;ө&amp;quot;&lt;br /&gt;
					vh[i].quality = &amp;quot;rounded&amp;quot;&lt;br /&gt;
					pattern = &amp;quot;[еө]&amp;quot;&lt;br /&gt;
					if match( s.substring, &amp;quot;[аёоуүэюя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				else&lt;br /&gt;
					vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
					vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
					pattern = &amp;quot;[еүэю]&amp;quot;&lt;br /&gt;
					if match( s.substring, &amp;quot;[аёоөуя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				end&lt;br /&gt;
			elseif vowel == &amp;quot;ю&amp;quot; then&lt;br /&gt;
				vh[i].quality = &amp;quot;unrounded&amp;quot;&lt;br /&gt;
				if match( s.substring, &amp;quot;[ауя]&amp;quot;, location+1 ) then&lt;br /&gt;
					vh[i].Cyrl.a = &amp;quot;а&amp;quot;&lt;br /&gt;
					vh[i].position = &amp;quot;back&amp;quot;&lt;br /&gt;
					pattern = &amp;quot;[ауюя]&amp;quot;&lt;br /&gt;
					if match( s.substring, &amp;quot;[еёоөүэ]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				else&lt;br /&gt;
					vh[i].Cyrl.a = &amp;quot;э&amp;quot;&lt;br /&gt;
					vh[i].position = &amp;quot;front&amp;quot;&lt;br /&gt;
					pattern = &amp;quot;[еүэю]&amp;quot;&lt;br /&gt;
					if match( s.substring, &amp;quot;[аёоөуя]&amp;quot; ) then vh[i].violation = true else vh[i].violation = false end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			location = 0&lt;br /&gt;
			local function prev_vowel( n ) return match( s.substring, &amp;quot;[аеёиоөуүэюя]&amp;quot;, n+1 ) end&lt;br /&gt;
			local function prev_hvowel( n ) return match( s.substring, pattern, n+1 ) end&lt;br /&gt;
			while prev_vowel( location ) and ( prev_vowel( location ) == prev_hvowel( location ) or prev_vowel( location ) == &amp;quot;и&amp;quot; ) do&lt;br /&gt;
				if prev_vowel( location ) == prev_hvowel( location ) then&lt;br /&gt;
					location = find( s.substring, pattern, location+1 )&lt;br /&gt;
				else -- if и&lt;br /&gt;
					local icheck = location+1&lt;br /&gt;
					while prev_vowel( icheck ) == &amp;quot;и&amp;quot; do&lt;br /&gt;
						icheck = find( s.substring, &amp;quot;и&amp;quot;, icheck+1 )&lt;br /&gt;
					end&lt;br /&gt;
					if prev_vowel( icheck ) and prev_vowel( icheck ) == prev_hvowel( icheck ) then&lt;br /&gt;
						location = icheck&lt;br /&gt;
					elseif not prev_vowel( icheck ) and vowel == &amp;quot;э&amp;quot; then&lt;br /&gt;
						location = icheck&lt;br /&gt;
					elseif vowel == &amp;quot;э&amp;quot; and sub( s.substring, icheck-1, icheck-1 ) == &amp;quot;й&amp;quot; then&lt;br /&gt;
						location = icheck&lt;br /&gt;
					else&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if match( vh[i].Cyrl.a, &amp;quot;[ао]&amp;quot; ) then&lt;br /&gt;
				vh[i].Cyrl.ii = &amp;quot;ы&amp;quot;&lt;br /&gt;
				vh[i].Cyrl.u = &amp;quot;у&amp;quot;&lt;br /&gt;
				vh[i].Mong.a = &amp;quot;ᠠ&amp;quot;&lt;br /&gt;
				vh[i].Mong.u = &amp;quot;ᠤ&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				vh[i].Cyrl.ii = &amp;quot;ий&amp;quot;&lt;br /&gt;
				vh[i].Cyrl.u = &amp;quot;ү&amp;quot;&lt;br /&gt;
				vh[i].Mong.a = &amp;quot;ᠡ&amp;quot;&lt;br /&gt;
				vh[i].Mong.u = &amp;quot;ᠦ&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if match( vh[i].Cyrl.a, &amp;quot;ө&amp;quot; ) then -- ө takes the diphthong эй not өй&lt;br /&gt;
				vh[i].Cyrl.ai = &amp;quot;эй&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				vh[i].Cyrl.ai = vh[i].Cyrl.a .. &amp;quot;й&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a&lt;br /&gt;
			vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u&lt;br /&gt;
			s.substring = orig&lt;br /&gt;
			vh[i].location = len( s.substring ) + breaks[i] - location&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return vh&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Breaks down a string into syllables and returns a table&lt;br /&gt;
function export.syllables( text, params )&lt;br /&gt;
	&lt;br /&gt;
	local consonant = &amp;quot;[БВГДЖЗКЛМНПРСТФХЦЧШЩбвгджзклмнпрстфхцчшщ]&amp;quot;&lt;br /&gt;
	local vowel = &amp;quot;[АОУЭӨҮИЙЫЯЕЁЮаоуэөүийыяеёю]&amp;quot;&lt;br /&gt;
	local sign = &amp;quot;[ЪЬъь]&amp;quot;&lt;br /&gt;
	local iotated = &amp;quot;[ЯЕЁЮяеёю]&amp;quot;&lt;br /&gt;
	local punctuation = &amp;quot;[%s%p]&amp;quot;&lt;br /&gt;
	local final_clusters = require( &amp;quot;Module:mn/data&amp;quot; ).syll_final_cons&lt;br /&gt;
	local stress = char( 0x301 ) .. char( 0x300 )&lt;br /&gt;
	&lt;br /&gt;
	-- Strip diacritics.&lt;br /&gt;
	local chars = {}&lt;br /&gt;
	for v in gmatch( text, &amp;quot;[%w%s%p&amp;quot; .. stress .. export.stem_barrier .. &amp;quot;]&amp;quot; ) do&lt;br /&gt;
		table.insert( chars, v )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local breaks = {}&lt;br /&gt;
	for i, v in pairs( chars ) do&lt;br /&gt;
		-- First letter.&lt;br /&gt;
		if i == 1 or match( chars[i-1], punctuation ) then&lt;br /&gt;
			table.insert( breaks, i )&lt;br /&gt;
		-- Stem barrier is used by the inflection templates.&lt;br /&gt;
		elseif match( chars[i-1], export.stem_barrier ) then&lt;br /&gt;
			table.insert( breaks, i )&lt;br /&gt;
		-- If a vowel preceded by a hard sign or the temporary break character, then must be the break.&lt;br /&gt;
		elseif match( v, vowel ) and match( chars[i-1], &amp;quot;[Ъъ]&amp;quot; ) then&lt;br /&gt;
			table.insert( breaks, i )&lt;br /&gt;
		-- If Е/е preceded by a soft sign, count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then preceding sign must be medial, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. Вьет|нам (&amp;quot;Vietnam&amp;quot;)).&lt;br /&gt;
		elseif match( v, &amp;quot;[Ее]&amp;quot; ) and match( chars[i-1], &amp;quot;[Ьь]&amp;quot; ) then&lt;br /&gt;
			local j = i - 1&lt;br /&gt;
			while j &amp;gt; 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], &amp;quot;[&amp;quot; .. stress .. &amp;quot;]&amp;quot; ) ) do&lt;br /&gt;
				j = j - 1&lt;br /&gt;
				if match( chars[j], vowel ) then&lt;br /&gt;
					-- If break, replaces the consonant preceding the soft sign as the break.&lt;br /&gt;
					if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end&lt;br /&gt;
					table.insert( breaks, i )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		-- If Ю/ю preceded by a soft sign, calculate vowel harmony and iterate through vowel harmonic segments until reaching the one the letter is in; once found, if front harmonic then letter is the break.&lt;br /&gt;
		elseif match( v, &amp;quot;[Юю]&amp;quot; ) and match( chars[i-1], &amp;quot;[Ьь]&amp;quot; ) then&lt;br /&gt;
			vh = export.vowelharmony( text, params )&lt;br /&gt;
			local k = 0&lt;br /&gt;
			for j, substring in ipairs(vh) do&lt;br /&gt;
				local k_increase = mw.ustring.len(gsub(vh[j].substring, &amp;quot;[^%w%s%p&amp;quot; .. stress .. export.stem_barrier .. &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;))&lt;br /&gt;
				if k + k_increase &amp;gt; i then&lt;br /&gt;
					if vh[j].position == &amp;quot;front&amp;quot; then&lt;br /&gt;
						-- If break, replaces the consonant preceding the soft sign as the break.&lt;br /&gt;
						if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end&lt;br /&gt;
						table.insert( breaks, i )&lt;br /&gt;
					end&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				k = k + k_increase&lt;br /&gt;
			end&lt;br /&gt;
		-- If a consonant followed by vowel (i.e. if lone/cluster-final), count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then letter must be medial and lone/cluster-final, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. трол|лей|бус (&amp;quot;trolleybus&amp;quot;)).&lt;br /&gt;
		elseif match( v, consonant ) and chars[i+1] and ( match( chars[i+1], vowel ) or ( match( chars[i+1], &amp;quot;[Ьь]&amp;quot; ) and chars[i+2] and match( chars[i+2], vowel ) ) ) then&lt;br /&gt;
			local j = i&lt;br /&gt;
			while j &amp;gt; 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], &amp;quot;[&amp;quot; .. stress .. &amp;quot;]&amp;quot; ) ) do&lt;br /&gt;
				j = j - 1&lt;br /&gt;
				if match( chars[j], vowel ) then&lt;br /&gt;
					table.insert( breaks, i )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		-- If word-final consonant, count backwards until vowel, checking if each cluster is allowed as a word-final cluster; if it is, increase &amp;quot;stable&amp;quot; (the number of stable consonants (and signs) at the end) by one; if a vowel is found before an unstable cluster, the loop ends with no change; if an unstable cluster is found, &amp;quot;stable&amp;quot; will not iterate which will trigger an additional unvoweled syllable break at that consonant (occurs in loanwords, e.g. буд|ди|зм (&amp;quot;Buddhism&amp;quot;), ал|ге|бр (&amp;quot;algebra&amp;quot;)).&lt;br /&gt;
		elseif ( match( v, consonant ) or match( v, sign ) ) and ( i == #chars or match( chars[i+1], punctuation ) ) then&lt;br /&gt;
			local j = i&lt;br /&gt;
			local check = { chars[j] }&lt;br /&gt;
			local stable = 1&lt;br /&gt;
			while j &amp;gt; 1 and j &amp;gt; i - #final_clusters and stable &amp;gt; i - j and ( match( chars[j-1], consonant ) or match( chars[j-1], sign ) ) do&lt;br /&gt;
				j = j - 1&lt;br /&gt;
				table.insert( check, chars[j] )&lt;br /&gt;
				for k,cluster in ipairs( final_clusters[#check] ) do&lt;br /&gt;
					if match( table.concat( table.reverse( check ) ), cluster ) then&lt;br /&gt;
						stable = stable + 1&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if stable == i - j then&lt;br /&gt;
					table.insert( breaks, j )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		-- Iotated (&amp;quot;ya&amp;quot;-type) vowel after a vowel.&lt;br /&gt;
		elseif match( v, iotated ) and ( match( chars[i-1], vowel ) or ( match( chars[i-1], &amp;quot;[&amp;quot;.. stress .. &amp;quot;]&amp;quot; ) and match( chars[i-2], vowel ) ) ) then&lt;br /&gt;
			table.insert( breaks, i )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Reform text without diacritics.&lt;br /&gt;
	text = table.concat( chars )&lt;br /&gt;
	&lt;br /&gt;
	breaks = table.removeDuplicates( breaks )		&lt;br /&gt;
		&lt;br /&gt;
	local syll = {}&lt;br /&gt;
	for i,v in ipairs( breaks ) do&lt;br /&gt;
		if i == #breaks then&lt;br /&gt;
			table.insert( syll, sub( text, v ) )&lt;br /&gt;
		else&lt;br /&gt;
			table.insert( syll, sub( text, v, breaks[i+1] - 1 ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return syll&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.remove_final_short_vowel( text, params )&lt;br /&gt;
	&lt;br /&gt;
	if not params then params = {} end&lt;br /&gt;
	local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )]&lt;br /&gt;
	local syllables = #export.syllables( text )&lt;br /&gt;
	local reduced = text&lt;br /&gt;
	local no_fv = false&lt;br /&gt;
	if ( syllables &amp;gt; 1 and match( text, &amp;quot;[бвгджзклмнпрстфхцчшщ][аоөэиь]$&amp;quot; ) ) or match( text, &amp;quot;[ьъ]$&amp;quot; ) then&lt;br /&gt;
		&lt;br /&gt;
		local matches = {&lt;br /&gt;
			not params.bor,&lt;br /&gt;
			match( text, &amp;quot;[ьъ]$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[ауя][влмн]ба$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[оё][влмн]бо$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;ө[влмн]бө$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[эүе][влмн]бэ$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[бвглмнр]&amp;quot; .. vh.Cyrl.a .. char( 0x301 ) .. &amp;quot;?&amp;quot; .. char( 0x300 ) .. &amp;quot;?н&amp;quot; .. vh.Cyrl.a .. &amp;quot;$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[ауя]нга$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[оё]нго$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;өнгө$&amp;quot; ),&lt;br /&gt;
			match( text, &amp;quot;[эүе]нгэ$&amp;quot; )&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		for _,v in pairs( matches ) do&lt;br /&gt;
			if v then&lt;br /&gt;
				reduced = sub( text, 1, len( text ) - 1 )&lt;br /&gt;
				no_fv = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return reduced, no_fv&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.remove_penultimate_short_vowel( text, params )&lt;br /&gt;
	&lt;br /&gt;
	if not params then params = {} end&lt;br /&gt;
	local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )]&lt;br /&gt;
	local syllables = table.reverse( export.syllables( text ) )&lt;br /&gt;
	&lt;br /&gt;
	if not params.proper and ( vh.location ~= len( text ) - 1 or vh.violation == false ) and not params.bor then -- exclude proper nouns, loanwords and terms where the deleted vowel determines the vowel harmony&lt;br /&gt;
	&lt;br /&gt;
		local check&lt;br /&gt;
		local syllable_orig&lt;br /&gt;
		for i,syllable in ipairs( syllables ) do&lt;br /&gt;
			if i ~=1 and i ~= #syllables then&lt;br /&gt;
				syllable_orig = syllable&lt;br /&gt;
				if match( syllable, export.stem_barrier ) then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				local prev_syllable = gsub( syllables[i+1], export.stem_barrier, &amp;quot;&amp;quot; )&lt;br /&gt;
				check = ( match( prev_syllable, &amp;quot;[бвгджзклмнпрстфхцчшщь]*$&amp;quot; ) or &amp;quot;&amp;quot; ) .. syllable .. ( match( syllables[i-1], &amp;quot;^[бвгджзклмнпрстфхцчшщь]*&amp;quot; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
				local matches = {&lt;br /&gt;
					-- CVC&lt;br /&gt;
					match( check, &amp;quot;^[влмр]ь?[аиоөэ][вгклмнпр]$&amp;quot; ), -- not [бн]VC&lt;br /&gt;
					match( check, &amp;quot;^гь?[аиоөэ][влмнр]$&amp;quot; ) and vh.position == &amp;quot;front&amp;quot;, -- гV[влмнр] if front vowel only&lt;br /&gt;
					-- CCVC&lt;br /&gt;
					match( check, &amp;quot;^[вглмнр]?ь?[джзкпстхцчшщ]ь?[аиоөэ][вгджзклмнпрстцчшщ]$&amp;quot; ),&lt;br /&gt;
					match( check, &amp;quot;^[вглмнр]?ь?[сх]ь?[тч]ь?[аиоөэ][вглмнр]$&amp;quot; ),&lt;br /&gt;
				}&lt;br /&gt;
				local exclusions = {&lt;br /&gt;
					match( check, &amp;quot;[лм]ь?[аиоөэ]в$&amp;quot; ), -- not [лм]Vв&lt;br /&gt;
					match( check, &amp;quot;[вдзклмпрстхц]ь?и[вгджзлмнпрстцчшщ]$&amp;quot; ), -- only [кжчш]иC&lt;br /&gt;
				}&lt;br /&gt;
				for _,v in pairs( matches ) do&lt;br /&gt;
					if v then&lt;br /&gt;
						syllables[i] = sub( syllable, 1, len( syllable ) - 1 )&lt;br /&gt;
						for _,e in pairs( exclusions ) do&lt;br /&gt;
							if e then syllables[i] = syllable_orig end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if syllables[i] ~= syllable_orig then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( table.reverse( syllables ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.concat_forms_in_slot( forms )&lt;br /&gt;
	if forms then&lt;br /&gt;
		local new_vals = {}&lt;br /&gt;
		for _, v in ipairs( forms ) do&lt;br /&gt;
			local val = gsub( v.form, &amp;quot;|&amp;quot;, &amp;quot;&amp;lt;!&amp;gt;&amp;quot; )&lt;br /&gt;
			table.insert( new_vals, val )&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat( new_vals, &amp;quot;,&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function export.combine_stem_ending( stem, ending )&lt;br /&gt;
	if stem == &amp;quot;?&amp;quot; then&lt;br /&gt;
		return &amp;quot;?&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return stem .. ending&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function export.generate_form( form, footnotes )&lt;br /&gt;
	if type( footnotes ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		footnotes = { footnotes }&lt;br /&gt;
	end&lt;br /&gt;
	if footnotes then&lt;br /&gt;
		return { form = form, footnotes = footnotes }&lt;br /&gt;
	else&lt;br /&gt;
		return form&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>